diff --git a/dist/CookieWarning/CookieWarning.js b/dist/CookieWarning/CookieWarning.js index c8d0142d5..d7ca041fc 100644 --- a/dist/CookieWarning/CookieWarning.js +++ b/dist/CookieWarning/CookieWarning.js @@ -273,4 +273,4 @@ var RootElement = ({ /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2Jyb2FkY2FzdGNoYW5uZWwtcG9seWZpbGxAMS4wLjEvbm9kZV9tb2R1bGVzL2Jyb2FkY2FzdGNoYW5uZWwtcG9seWZpbGwvaW5kZXguanMiLCAic3JjL0Nvb2tpZVdhcm5pbmcvb3B0aW9ucy5qc29uIiwgInNyYy9Db29raWVXYXJuaW5nL2NvbXBvbmVudHMvQWdyZWVCdXR0b24udHN4IiwgInNyYy9Db29raWVXYXJuaW5nL21vZHVsZXMvaTE4bi50cyIsICJzcmMvQ29va2llV2FybmluZy9jb21wb25lbnRzL0NvbnNlbnROb3RpY2UudHN4IiwgInNyYy9Db29raWVXYXJuaW5nL2NvbXBvbmVudHMvUm9vdEVsZW1lbnQudHN4IiwgInNyYy9Db29raWVXYXJuaW5nL2NvbXBvbmVudHMvQ29va2llV2FybmluZy5tb2R1bGUubGVzcyIsICJzcmMvQ29va2llV2FybmluZy9Db29raWVXYXJuaW5nLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gICAgdmFyIGNoYW5uZWxzID0gW107XG5cbiAgICBmdW5jdGlvbiBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWwpIHtcbiAgICAgICAgdmFyICR0aGlzID0gdGhpcztcbiAgICAgICAgY2hhbm5lbCA9IFN0cmluZyhjaGFubmVsKTtcblxuICAgICAgICB2YXIgaWQgPSAnJEJyb2FkY2FzdENoYW5uZWwkJyArIGNoYW5uZWwgKyAnJCc7XG5cbiAgICAgICAgY2hhbm5lbHNbaWRdID0gY2hhbm5lbHNbaWRdIHx8IFtdO1xuICAgICAgICBjaGFubmVsc1tpZF0ucHVzaCh0aGlzKTtcblxuICAgICAgICB0aGlzLl9uYW1lID0gY2hhbm5lbDtcbiAgICAgICAgdGhpcy5faWQgPSBpZDtcbiAgICAgICAgdGhpcy5fY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX21jID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgICAgIHRoaXMuX21jLnBvcnQxLnN0YXJ0KCk7XG4gICAgICAgIHRoaXMuX21jLnBvcnQyLnN0YXJ0KCk7XG5cbiAgICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBpZiAoZS5zdG9yYWdlQXJlYSAhPT0gZ2xvYmFsLmxvY2FsU3RvcmFnZSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGUubmV3VmFsdWUgPT0gbnVsbCB8fCBlLm5ld1ZhbHVlID09PSAnJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGUua2V5LnN1YnN0cmluZygwLCBpZC5sZW5ndGgpICE9PSBpZCkgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGUubmV3VmFsdWUpO1xuICAgICAgICAgICAgJHRoaXMuX21jLnBvcnQyLnBvc3RNZXNzYWdlKGRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBCcm9hZGNhc3RDaGFubmVsLnByb3RvdHlwZSA9IHtcbiAgICAgICAgLy8gQnJvYWRjYXN0Q2hhbm5lbCBBUElcbiAgICAgICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICBpZiAodGhpcy5fY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBlLm5hbWUgPSAnSW52YWxpZFN0YXRlRXJyb3InO1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShtZXNzYWdlKTtcblxuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG90aGVyIGNvbnRleHRzIHZpYSBzdG9yYWdlIGV2ZW50cy4uLlxuICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2lkICsgU3RyaW5nKERhdGUubm93KCkpICsgJyQnICsgU3RyaW5nKE1hdGgucmFuZG9tKCkpO1xuICAgICAgICAgICAgZ2xvYmFsLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBnbG9iYWwubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG5cbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBjdXJyZW50IGNvbnRleHQgdmlhIHBvcnRzXG4gICAgICAgICAgICBjaGFubmVsc1t0aGlzLl9pZF0uZm9yRWFjaChmdW5jdGlvbihiYykge1xuICAgICAgICAgICAgICAgIGlmIChiYyA9PT0gJHRoaXMpIHJldHVybjtcbiAgICAgICAgICAgICAgICBiYy5fbWMucG9ydDIucG9zdE1lc3NhZ2UoSlNPTi5wYXJzZSh2YWx1ZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jbG9zZWQpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9tYy5wb3J0MS5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5fbWMucG9ydDIuY2xvc2UoKTtcblxuICAgICAgICAgICAgdmFyIGluZGV4ID0gY2hhbm5lbHNbdGhpcy5faWRdLmluZGV4T2YodGhpcyk7XG4gICAgICAgICAgICBjaGFubmVsc1t0aGlzLl9pZF0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBFdmVudFRhcmdldCBBUElcbiAgICAgICAgZ2V0IG9ubWVzc2FnZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYy5wb3J0MS5vbm1lc3NhZ2U7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCBvbm1lc3NhZ2UodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX21jLnBvcnQxLm9ubWVzc2FnZSA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbigvKnR5cGUsIGxpc3RlbmVyICwgdXNlQ2FwdHVyZSovKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWMucG9ydDEuYWRkRXZlbnRMaXN0ZW5lci5hcHBseSh0aGlzLl9tYy5wb3J0MSwgYXJndW1lbnRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oLyp0eXBlLCBsaXN0ZW5lciAsIHVzZUNhcHR1cmUqLykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21jLnBvcnQxLnJlbW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkodGhpcy5fbWMucG9ydDEsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uKC8qZXZlbnQqLykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21jLnBvcnQxLmRpc3BhdGNoRXZlbnQuYXBwbHkodGhpcy5fbWMucG9ydDEsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGdsb2JhbC5Ccm9hZGNhc3RDaGFubmVsID0gZ2xvYmFsLkJyb2FkY2FzdENoYW5uZWwgfHwgQnJvYWRjYXN0Q2hhbm5lbDtcbn0pKHNlbGYpO1xuIiwgIntcblx0XCJzdG9yYWdlS2V5XCI6IFwiZXh0LmdhZGdldC5Db29raWVXYXJuaW5nX2Nvb2tpZUNvbnNlbnRcIixcblx0XCJyZWFkaW5nUElQUEtleVwiOiBcImNvbnNlbnRSZWFkXCJcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAnZXh0LmdhZGdldC5SZWFjdCc7XG5pbXBvcnQge2dldE1lc3NhZ2V9IGZyb20gJy4uL21vZHVsZXMvaTE4bic7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdG9uQ2xpY2soKTogdm9pZDtcbn1cblxuY29uc3QgQWdyZWVCdXR0b24gPSAoe29uQ2xpY2t9OiBQcm9wcykgPT4gKFxuXHQ8YnV0dG9uXG5cdFx0Y2xhc3NOYW1lPXtbJ2NkeC1idXR0b24nLCAnY2R4LWJ1dHRvbi0tYWN0aW9uLXByb2dyZXNzaXZlJywgJ2NkeC1idXR0b24tLXdlaWdodC1wcmltYXJ5J119XG5cdFx0b25DbGljaz17b25DbGlja31cblx0PlxuXHRcdHtnZXRNZXNzYWdlKCdBZ3JlZScpfVxuXHQ8L2J1dHRvbj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IEFncmVlQnV0dG9uO1xuIiwgImltcG9ydCAqIGFzIE9QVElPTlMgZnJvbSAnLi4vb3B0aW9ucy5qc29uJztcbmltcG9ydCB7bG9jYWxpemV9IGZyb20gJ2V4dC5nYWRnZXQuaTE4bic7XG5cbmNvbnN0IGdldEkxOG5NZXNzYWdlcyA9ICgpID0+IHtcblx0cmV0dXJuIHtcblx0XHRBZ3JlZTogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdJIGFncmVlJyxcblx0XHRcdGphOiAn44GZ44G544Gm6Kix5Y+v44GZ44KLJyxcblx0XHRcdHpoOiAn5ZCM5oSPJyxcblx0XHR9KSxcblx0XHRDb29raWVOb3RpY2U6IGxvY2FsaXplKHtcblx0XHRcdGVuOiBgVG8gcHJvdmlkZSBiZXR0ZXIgZXhwZXJpZW5jZSwgd2UgdXRpbGl6ZSBjb29raWVzIGFuZCBvdGhlciB0ZWNobm9sb2dpZXMgdG8gcHJvdmlkZSBzZXJ2aWNlcy4gWW91IGNhbiByZWZlciB0byBvdXIgPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6UElQUD8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIlBlcnNvbmFsIEluZm9ybWF0aW9uIFByb3RlY3Rpb24gUG9saWN5XCI+PGVtPlBlcnNvbmFsIEluZm9ybWF0aW9uIFByb3RlY3Rpb24gUG9saWN5PC9lbT48L2E+IHRvIGxlYXJuIGhvdyB3ZSBoYW5kbGUgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbi5gLFxuXHRcdFx0amE6IGDjgojjgoroia/jgYTjgrXjg7zjg5PjgrnjgpLmj5DkvpvjgZnjgovjgZ/jgoHjgavjgIHjgq/jg4Pjgq3jg7zjgoTjgZ3jga7ku5bjga7mioDooZPjgpLliKnnlKjjgZfjgabjgYTjgb7jgZnjgILlgIvkurrmg4XloLHjga7lj5bjgormibHjgYTmlrnms5XjgavjgaTjgYTjgabjga/jgIE8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpQSVBQPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi5YCL5Lq65oOF5aCx5L+d6K235pa56YedXCI+5YCL5Lq65oOF5aCx5L+d6K235pa56YedPC9hPuOCkuOBlOWPgueFp+OBj+OBoOOBleOBhOOAgmAsXG5cdFx0XHQnemgtaGFucyc6IGDkuLrkuobmj5DkvpvmnIDkvbPkvZPpqozvvIzmiJHku6zliKnnlKhDb29raWXlj4rlhbbku5bmioDmnK/mj5DkvpvmnI3liqHvvJvmgqjlj6/ku6Xmn6XpmIXmiJHku6znmoQ8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpQSVBQPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi5Liq5Lq65L+h5oGv5L+d5oqk5pa56ZKIXCI+5Liq5Lq65L+h5oGv5L+d5oqk5pa56ZKIPC9hPu+8jOS6huino+aIkeS7rOWmguS9leWkhOeQhuaCqOeahOS4quS6uuS/oeaBr+OAgmAsXG5cdFx0XHQnemgtaGFudCc6IGDngrrkuobmj5DkvpvmnIDkvbPpq5TpqZfvvIzmiJHku6zliKnnlKhDb29raWXlj4rlhbbku5bmioDooZPmj5DkvpvmnI3li5nvvJvmgqjlj6/ku6Xmn6XplrHmiJHlgJHnmoQ8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpQSVBQPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi5YCL5Lq65L+h5oGv5L+d6K235pa56YedXCI+5YCL5Lq65L+h5oGv5L+d6K235pa56YedPC9hPu+8jOS6huino+aIkeWAkeWmguS9leiZleeQhuaCqOeahOWAi+S6uuS/oeaBr2AsXG5cdFx0fSksXG5cdFx0VE9TTm90aWNlOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogYEJ5IHVzaW5nIHRoaXMgc2l0ZSwgeW91IGFncmVlIHRvIG91ciA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpUT1M/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCJUZXJtcyBvZiBVc2VcIj48ZW0+VGVybXMgb2YgVXNlPC9lbT48L2E+LCA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpQSVBQPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwiUGVyc29uYWwgSW5mb3JtYXRpb24gUHJvdGVjdGlvbiBQb2xpY3lcIj48ZW0+UGVyc29uYWwgSW5mb3JtYXRpb24gUHJvdGVjdGlvbiBQb2xpY3k8L2VtPjwvYT4sIGFuZCBvdGhlciA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpMQVc/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCJMZWdhbCBwb2xpY2llc1wiPmxlZ2FsIHBvbGljaWVzPC9hPi5gLFxuXHRcdFx0amE6IGDjgZPjga7jgrXjgqTjg4jjgpLliKnnlKjjgZnjgovjgZPjgajjgafjgIE8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpUT1M/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCLliKnnlKjopo/ntIRcIj7liKnnlKjopo/ntIQ8L2E+44CBPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6UElQUD8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIuWAi+S6uuaDheWgseS/neitt+aWuemHnVwiPuWAi+S6uuaDheWgseS/neitt+aWuemHnTwvYT7jgIHjgZ3jga7ku5bjga48YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpMQVc/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCLms5XnmoTjg53jg6rjgrfjg7xcIj7ms5XnmoTjg53jg6rjgrfjg7w8L2E+44Gr44Gk44GE44Gm5Y2B5YiG44Gr55CG6Kej44GX44CB6YG15a6I44GZ44KL44GT44Go44Gr5ZCM5oSP44GX44Gf44KC44Gu44Go44G/44Gq44GV44KM44G+44GZ44CCYCxcblx0XHRcdCd6aC1oYW5zJzogYOiuv+mXruacrOe9keerme+8jOaIluS7peS7u+S9leaWueW8j+S9v+eUqOacrOe9keerme+8jOWdh+S7o+ihqOaCqOW3suS7lOe7humYheivu+OAgeWFheWIhuS6huino+W5tuWQjOaEj+mBteWuiOacrOe9keermeeahDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL1FXOlRPUz8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIueUqOaIt+WNj+iurlwiPueUqOaIt+WNj+iurjwvYT7jgIE8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpQSVBQPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi5Liq5Lq65L+h5oGv5L+d5oqk5pa56ZKIXCI+5Liq5Lq65L+h5oGv5L+d5oqk5pa56ZKIPC9hPuWPiuWFtuS7luWQhOmhuTxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL1FXOkxBVz8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIuazleW+i+aWuemSiFwiPuazleW+i+aWuemSiDwvYT7nmoTop4TlrprjgIJgLFxuXHRcdFx0J3poLWhhbnQnOiBg5a2Y5Y+W5pys57ay56uZ77yM5oiW5Lul5Lu75L2V5pa55byP5L2/55So5pys57ay56uZ77yM5Z2H5Luj6KGo5oKo5bey5LuU57Sw6Zax6K6A44CB5YWF5YiG5LqG6Kej5Lim5ZCM5oSP6YG15a6I5pys57ay56uZ55qEPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6VE9TPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi55So5oi25Y2U6K2wXCI+55So5oi25Y2U6K2wPC9hPuOAgTxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL1FXOlBJUFA/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCLlgIvkurrkv6Hmga/kv53orbfmlrnph51cIj7lgIvkurrkv6Hmga/kv53orbfmlrnph508L2E+5Y+K5YW25LuW5ZCE6aCFPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6TEFXPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi5rOV5b6L5pa56YedXCI+5rOV5b6L5pa56YedPC9hPueahOimj+WumuOAgmAsXG5cdFx0fSksXG5cdH07XG59O1xuY29uc3QgaTE4bk1lc3NhZ2VzID0gZ2V0STE4bk1lc3NhZ2VzKCk7XG5cbmNvbnN0IGdldE1lc3NhZ2U6IEdldE1lc3NhZ2VzPHR5cGVvZiBpMThuTWVzc2FnZXM+ID0gKGtleSkgPT4ge1xuXHRyZXR1cm4gaTE4bk1lc3NhZ2VzW2tleV0gfHwga2V5O1xufTtcblxuZXhwb3J0IHtnZXRNZXNzYWdlfTtcbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAnZXh0LmdhZGdldC5SZWFjdCc7XG5pbXBvcnQge2dldE1lc3NhZ2V9IGZyb20gJy4uL21vZHVsZXMvaTE4bic7XG5cbmNvbnN0IENvbnNlbnROb3RpY2UgPSAoKSA9PiAoXG5cdDw+XG5cdFx0PHAgaW5uZXJIVE1MPXtnZXRNZXNzYWdlKCdUT1NOb3RpY2UnKX0gLz5cblx0XHQ8cCBpbm5lckhUTUw9e2dldE1lc3NhZ2UoJ0Nvb2tpZU5vdGljZScpfSAvPlxuXHQ8Lz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IENvbnNlbnROb3RpY2U7XG4iLCAiaW1wb3J0IEFncmVlQnV0dG9uIGZyb20gJy4vQWdyZWVCdXR0b24nO1xuaW1wb3J0IENvbnNlbnROb3RpY2UgZnJvbSAnLi9Db25zZW50Tm90aWNlJztcbmltcG9ydCBSZWFjdCBmcm9tICdleHQuZ2FkZ2V0LlJlYWN0JztcbmltcG9ydCB7d2FybmluZ30gZnJvbSAnLi9Db29raWVXYXJuaW5nLm1vZHVsZS5sZXNzJztcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0YWdyZWVCdXR0b25PbkNsaWNrOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBSb290RWxlbWVudCA9ICh7YWdyZWVCdXR0b25PbkNsaWNrfTogUHJvcHMpID0+IChcblx0PGRpdiBjbGFzc05hbWU9e1t3YXJuaW5nLCAnbm9wcmludCddfT5cblx0XHQ8Q29uc2VudE5vdGljZSAvPlxuXHRcdDxBZ3JlZUJ1dHRvbiBvbkNsaWNrPXthZ3JlZUJ1dHRvbk9uQ2xpY2t9IC8+XG5cdDwvZGl2PlxuKTtcblxuZXhwb3J0IHtSb290RWxlbWVudH07XG4iLCAiaW1wb3J0IFwiZXNidWlsZC1jc3MtbW9kdWxlcy1wbHVnaW4tbnMtY3NzOnNyYy9Db29raWVXYXJuaW5nL2NvbXBvbmVudHMvQ29va2llV2FybmluZy5tb2R1bGUubGVzc1wiO1xuZXhwb3J0IGNvbnN0IHdhcm5pbmcgPSBcIkNvb2tpZVdhcm5pbmctbW9kdWxlX193YXJuaW5nX3VrdmZ5R1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFwid2FybmluZ1wiOiB3YXJuaW5nXG59O1xuICAgICAgIiwgImltcG9ydCAqIGFzIE9QVElPTlMgZnJvbSAnLi9vcHRpb25zLmpzb24nO1xuaW1wb3J0IHtSb290RWxlbWVudH0gZnJvbSAnLi9jb21wb25lbnRzL1Jvb3RFbGVtZW50JztcblxuKGZ1bmN0aW9uIGNvb2tpZVdhcm5pbmcoKTogdm9pZCB7XG5cdGNvbnN0IHt3Z1VzZXJOYW1lfSA9IG13LmNvbmZpZy5nZXQoKTtcblx0Y29uc3QgbGFzdFN0b3JhZ2VWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG13LnN0b3JhZ2UuZ2V0KE9QVElPTlMuc3RvcmFnZUtleSkgYXMgc3RyaW5nIHwgbnVsbDtcblx0Y29uc3QgdXJsQ29uc2VudFJlYWQ6IHN0cmluZyB8IG51bGwgPSBtdy51dGlsLmdldFBhcmFtVmFsdWUoT1BUSU9OUy5yZWFkaW5nUElQUEtleSk7XG5cblx0aWYgKHdnVXNlck5hbWUgfHwgbGFzdFN0b3JhZ2VWYWx1ZSA9PT0gJzEnIHx8IHVybENvbnNlbnRSZWFkKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgY2xvc2VXYXJuaW5nID0gKCk6IHZvaWQgPT4ge1xuXHRcdGJyb2FkY2FzdENoYW5uZWwucG9zdE1lc3NhZ2UoJ2Nsb3NlJyk7XG5cdFx0YnJvYWRjYXN0Q2hhbm5lbC5jbG9zZSgpO1xuXHRcdHJvb3RFbGVtZW50LnJlbW92ZSgpO1xuXHRcdG13LnN0b3JhZ2Uuc2V0KE9QVElPTlMuc3RvcmFnZUtleSwgJzEnLCA2MCAqIDYwICogMTAwMCAqIDI0ICogMzApO1xuXHR9O1xuXG5cdGNvbnN0IGJyb2FkY2FzdENoYW5uZWw6IEJyb2FkY2FzdENoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChPUFRJT05TLnN0b3JhZ2VLZXkpO1xuXHRicm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBjbG9zZVdhcm5pbmcpO1xuXG5cdGNvbnN0IHJvb3RFbGVtZW50ID0gUm9vdEVsZW1lbnQoe2FncmVlQnV0dG9uT25DbGljazogY2xvc2VXYXJuaW5nfSk7XG5cblx0ZG9jdW1l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QU9DLElBQUk7QUFDbkMsUUFBTUMsbUJBQWtDSCxHQUFHSSxRQUFRRixJQUFZckMsVUFBVTtBQUN6RSxRQUFNd0MsaUJBQWdDTCxHQUFHTSxLQUFLQyxjQUFzQnpDLGNBQWM7QUFFbEYsTUFBSWlDLGNBQWNJLHFCQUFxQixPQUFPRSxnQkFBZ0I7QUFDN0Q7RUFDRDtBQUVBLFFBQU1HLGVBQWVBLE1BQVk7QUFDaENDLHFCQUFpQkMsWUFBWSxPQUFPO0FBQ3BDRCxxQkFBaUJFLE1BQU07QUFDdkJDLGdCQUFZQyxPQUFPO0FBQ25CYixPQUFHSSxRQUFRVSxJQUFZakQsWUFBWSxLQUFLLEtBQUssS0FBSyxNQUFPLEtBQUssRUFBRTtFQUNqRTtBQUVBLFFBQU00QyxtQkFBcUMsSUFBSU0saUJBQXlCbEQsVUFBVTtBQUNsRjRDLG1CQUFpQk8saUJBQWlCLFdBQVdSLFlBQVk7QUFFekQsUUFBTUksY0FBY2hCLFlBQVk7SUFBQ0Msb0JBQW9CVztFQUFZLENBQUM7QUFFbEVTLFdBQVNDLEtBQUtDLE9BQU9QLFdBQVc7QUFDakMsR0FBRzsiLAogICJuYW1lcyI6IFsiQnJvYWRjYXN0Q2hhbm5lbCIsICJzdG9yYWdlS2V5IiwgInJlYWRpbmdQSVBQS2V5IiwgImltcG9ydF9leHRfZ2FkZ2V0MiIsICJfX3RvRVNNIiwgInJlcXVpcmUiLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAiZ2V0STE4bk1lc3NhZ2VzIiwgIkFncmVlIiwgImxvY2FsaXplIiwgImVuIiwgImphIiwgInpoIiwgIkNvb2tpZU5vdGljZSIsICJjb25jYXQiLCAiVE9TTm90aWNlIiwgImkxOG5NZXNzYWdlcyIsICJnZXRNZXNzYWdlIiwgImtleSIsICJBZ3JlZUJ1dHRvbiIsICJvbkNsaWNrIiwgImRlZmF1bHQiLCAiY3JlYXRlRWxlbWVudCIsICJjbGFzc05hbWUiLCAiQWdyZWVCdXR0b25fZGVmYXVsdCIsICJpbXBvcnRfZXh0X2dhZGdldDMiLCAiQ29uc2VudE5vdGljZSIsICJGcmFnbWVudCIsICJpbm5lckhUTUwiLCAiQ29uc2VudE5vdGljZV9kZWZhdWx0IiwgImltcG9ydF9leHRfZ2FkZ2V0NCIsICJ3YXJuaW5nIiwgIlJvb3RFbGVtZW50IiwgImFncmVlQnV0dG9uT25DbGljayIsICJjb29raWVXYXJuaW5nIiwgIndnVXNlck5hbWUiLCAibXciLCAiY29uZmlnIiwgImdldCIsICJsYXN0U3RvcmFnZVZhbHVlIiwgInN0b3JhZ2UiLCAidXJsQ29uc2VudFJlYWQiLCAidXRpbCIsICJnZXRQYXJhbVZhbHVlIiwgImNsb3NlV2FybmluZyIsICJicm9hZGNhc3RDaGFubmVsIiwgInBvc3RNZXNzYWdlIiwgImNsb3NlIiwgInJvb3RFbGVtZW50IiwgInJlbW92ZSIsICJzZXQiLCAiQnJvYWRjYXN0Q2hhbm5lbCIsICJhZGRFdmVudExpc3RlbmVyIiwgImRvY3VtZW50IiwgImJvZHkiLCAiYXBwZW5kIl0KfQo= +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2Jyb2FkY2FzdGNoYW5uZWwtcG9seWZpbGxAMS4wLjEvbm9kZV9tb2R1bGVzL2Jyb2FkY2FzdGNoYW5uZWwtcG9seWZpbGwvaW5kZXguanMiLCAic3JjL0Nvb2tpZVdhcm5pbmcvb3B0aW9ucy5qc29uIiwgInNyYy9Db29raWVXYXJuaW5nL2NvbXBvbmVudHMvQWdyZWVCdXR0b24udHN4IiwgInNyYy9Db29raWVXYXJuaW5nL21vZHVsZXMvaTE4bi50cyIsICJzcmMvQ29va2llV2FybmluZy9jb21wb25lbnRzL0NvbnNlbnROb3RpY2UudHN4IiwgInNyYy9Db29raWVXYXJuaW5nL2NvbXBvbmVudHMvUm9vdEVsZW1lbnQudHN4IiwgInNyYy9Db29raWVXYXJuaW5nL2NvbXBvbmVudHMvQ29va2llV2FybmluZy5tb2R1bGUubGVzcyIsICJzcmMvQ29va2llV2FybmluZy9Db29raWVXYXJuaW5nLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gICAgdmFyIGNoYW5uZWxzID0gW107XG5cbiAgICBmdW5jdGlvbiBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWwpIHtcbiAgICAgICAgdmFyICR0aGlzID0gdGhpcztcbiAgICAgICAgY2hhbm5lbCA9IFN0cmluZyhjaGFubmVsKTtcblxuICAgICAgICB2YXIgaWQgPSAnJEJyb2FkY2FzdENoYW5uZWwkJyArIGNoYW5uZWwgKyAnJCc7XG5cbiAgICAgICAgY2hhbm5lbHNbaWRdID0gY2hhbm5lbHNbaWRdIHx8IFtdO1xuICAgICAgICBjaGFubmVsc1tpZF0ucHVzaCh0aGlzKTtcblxuICAgICAgICB0aGlzLl9uYW1lID0gY2hhbm5lbDtcbiAgICAgICAgdGhpcy5faWQgPSBpZDtcbiAgICAgICAgdGhpcy5fY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX21jID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgICAgIHRoaXMuX21jLnBvcnQxLnN0YXJ0KCk7XG4gICAgICAgIHRoaXMuX21jLnBvcnQyLnN0YXJ0KCk7XG5cbiAgICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBpZiAoZS5zdG9yYWdlQXJlYSAhPT0gZ2xvYmFsLmxvY2FsU3RvcmFnZSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGUubmV3VmFsdWUgPT0gbnVsbCB8fCBlLm5ld1ZhbHVlID09PSAnJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGUua2V5LnN1YnN0cmluZygwLCBpZC5sZW5ndGgpICE9PSBpZCkgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGUubmV3VmFsdWUpO1xuICAgICAgICAgICAgJHRoaXMuX21jLnBvcnQyLnBvc3RNZXNzYWdlKGRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBCcm9hZGNhc3RDaGFubmVsLnByb3RvdHlwZSA9IHtcbiAgICAgICAgLy8gQnJvYWRjYXN0Q2hhbm5lbCBBUElcbiAgICAgICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHZhciAkdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICBpZiAodGhpcy5fY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBlLm5hbWUgPSAnSW52YWxpZFN0YXRlRXJyb3InO1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShtZXNzYWdlKTtcblxuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG90aGVyIGNvbnRleHRzIHZpYSBzdG9yYWdlIGV2ZW50cy4uLlxuICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2lkICsgU3RyaW5nKERhdGUubm93KCkpICsgJyQnICsgU3RyaW5nKE1hdGgucmFuZG9tKCkpO1xuICAgICAgICAgICAgZ2xvYmFsLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBnbG9iYWwubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG5cbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBjdXJyZW50IGNvbnRleHQgdmlhIHBvcnRzXG4gICAgICAgICAgICBjaGFubmVsc1t0aGlzLl9pZF0uZm9yRWFjaChmdW5jdGlvbihiYykge1xuICAgICAgICAgICAgICAgIGlmIChiYyA9PT0gJHRoaXMpIHJldHVybjtcbiAgICAgICAgICAgICAgICBiYy5fbWMucG9ydDIucG9zdE1lc3NhZ2UoSlNPTi5wYXJzZSh2YWx1ZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jbG9zZWQpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9tYy5wb3J0MS5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5fbWMucG9ydDIuY2xvc2UoKTtcblxuICAgICAgICAgICAgdmFyIGluZGV4ID0gY2hhbm5lbHNbdGhpcy5faWRdLmluZGV4T2YodGhpcyk7XG4gICAgICAgICAgICBjaGFubmVsc1t0aGlzLl9pZF0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBFdmVudFRhcmdldCBBUElcbiAgICAgICAgZ2V0IG9ubWVzc2FnZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYy5wb3J0MS5vbm1lc3NhZ2U7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCBvbm1lc3NhZ2UodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX21jLnBvcnQxLm9ubWVzc2FnZSA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbigvKnR5cGUsIGxpc3RlbmVyICwgdXNlQ2FwdHVyZSovKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWMucG9ydDEuYWRkRXZlbnRMaXN0ZW5lci5hcHBseSh0aGlzLl9tYy5wb3J0MSwgYXJndW1lbnRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oLyp0eXBlLCBsaXN0ZW5lciAsIHVzZUNhcHR1cmUqLykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21jLnBvcnQxLnJlbW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkodGhpcy5fbWMucG9ydDEsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0aW9uKC8qZXZlbnQqLykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21jLnBvcnQxLmRpc3BhdGNoRXZlbnQuYXBwbHkodGhpcy5fbWMucG9ydDEsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGdsb2JhbC5Ccm9hZGNhc3RDaGFubmVsID0gZ2xvYmFsLkJyb2FkY2FzdENoYW5uZWwgfHwgQnJvYWRjYXN0Q2hhbm5lbDtcbn0pKHNlbGYpO1xuIiwgIntcblx0XCJzdG9yYWdlS2V5XCI6IFwiZXh0LmdhZGdldC5Db29raWVXYXJuaW5nX2Nvb2tpZUNvbnNlbnRcIixcblx0XCJyZWFkaW5nUElQUEtleVwiOiBcImNvbnNlbnRSZWFkXCJcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAnZXh0LmdhZGdldC5SZWFjdCc7XG5pbXBvcnQge2dldE1lc3NhZ2V9IGZyb20gJy4uL21vZHVsZXMvaTE4bic7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IEFncmVlQnV0dG9uID0gKHtvbkNsaWNrfTogUHJvcHMpID0+IChcblx0PGJ1dHRvblxuXHRcdGNsYXNzTmFtZT17WydjZHgtYnV0dG9uJywgJ2NkeC1idXR0b24tLWFjdGlvbi1wcm9ncmVzc2l2ZScsICdjZHgtYnV0dG9uLS13ZWlnaHQtcHJpbWFyeSddfVxuXHRcdG9uQ2xpY2s9e29uQ2xpY2t9XG5cdD5cblx0XHR7Z2V0TWVzc2FnZSgnQWdyZWUnKX1cblx0PC9idXR0b24+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBBZ3JlZUJ1dHRvbjtcbiIsICJpbXBvcnQgKiBhcyBPUFRJT05TIGZyb20gJy4uL29wdGlvbnMuanNvbic7XG5pbXBvcnQge2xvY2FsaXplfSBmcm9tICdleHQuZ2FkZ2V0LmkxOG4nO1xuXG5jb25zdCBnZXRJMThuTWVzc2FnZXMgPSAoKSA9PiB7XG5cdHJldHVybiB7XG5cdFx0QWdyZWU6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnSSBhZ3JlZScsXG5cdFx0XHRqYTogJ+OBmeOBueOBpuioseWPr+OBmeOCiycsXG5cdFx0XHR6aDogJ+WQjOaEjycsXG5cdFx0fSksXG5cdFx0Q29va2llTm90aWNlOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogYFRvIHByb3ZpZGUgYmV0dGVyIGV4cGVyaWVuY2UsIHdlIHV0aWxpemUgY29va2llcyBhbmQgb3RoZXIgdGVjaG5vbG9naWVzIHRvIHByb3ZpZGUgc2VydmljZXMuIFlvdSBjYW4gcmVmZXIgdG8gb3VyIDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL1FXOlBJUFA/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCJQZXJzb25hbCBJbmZvcm1hdGlvbiBQcm90ZWN0aW9uIFBvbGljeVwiPjxlbT5QZXJzb25hbCBJbmZvcm1hdGlvbiBQcm90ZWN0aW9uIFBvbGljeTwvZW0+PC9hPiB0byBsZWFybiBob3cgd2UgaGFuZGxlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24uYCxcblx0XHRcdGphOiBg44KI44KK6Imv44GE44K144O844OT44K544KS5o+Q5L6b44GZ44KL44Gf44KB44Gr44CB44Kv44OD44Kt44O844KE44Gd44Gu5LuW44Gu5oqA6KGT44KS5Yip55So44GX44Gm44GE44G+44GZ44CC5YCL5Lq65oOF5aCx44Gu5Y+W44KK5omx44GE5pa55rOV44Gr44Gk44GE44Gm44Gv44CBPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6UElQUD8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIuWAi+S6uuaDheWgseS/neitt+aWuemHnVwiPuWAi+S6uuaDheWgseS/neitt+aWuemHnTwvYT7jgpLjgZTlj4LnhafjgY/jgaDjgZXjgYTjgIJgLFxuXHRcdFx0J3poLWhhbnMnOiBg5Li65LqG5o+Q5L6b5pyA5L2z5L2T6aqM77yM5oiR5Lus5Yip55SoQ29va2ll5Y+K5YW25LuW5oqA5pyv5o+Q5L6b5pyN5Yqh77yb5oKo5Y+v5Lul5p+l6ZiF5oiR5Lus55qEPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6UElQUD8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIuS4quS6uuS/oeaBr+S/neaKpOaWuemSiFwiPuS4quS6uuS/oeaBr+S/neaKpOaWuemSiDwvYT7vvIzkuobop6PmiJHku6zlpoLkvZXlpITnkIbmgqjnmoTkuKrkurrkv6Hmga/jgIJgLFxuXHRcdFx0J3poLWhhbnQnOiBg54K65LqG5o+Q5L6b5pyA5L2z6auU6amX77yM5oiR5Lus5Yip55SoQ29va2ll5Y+K5YW25LuW5oqA6KGT5o+Q5L6b5pyN5YuZ77yb5oKo5Y+v5Lul5p+l6Zax5oiR5YCR55qEPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6UElQUD8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIuWAi+S6uuS/oeaBr+S/neitt+aWuemHnVwiPuWAi+S6uuS/oeaBr+S/neitt+aWuemHnTwvYT7vvIzkuobop6PmiJHlgJHlpoLkvZXomZXnkIbmgqjnmoTlgIvkurrkv6Hmga9gLFxuXHRcdH0pLFxuXHRcdFRPU05vdGljZTogbG9jYWxpemUoe1xuXHRcdFx0ZW46IGBCeSB1c2luZyB0aGlzIHNpdGUsIHlvdSBhZ3JlZSB0byBvdXIgPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6VE9TPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwiVGVybXMgb2YgVXNlXCI+PGVtPlRlcm1zIG9mIFVzZTwvZW0+PC9hPiwgPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6UElQUD8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIlBlcnNvbmFsIEluZm9ybWF0aW9uIFByb3RlY3Rpb24gUG9saWN5XCI+PGVtPlBlcnNvbmFsIEluZm9ybWF0aW9uIFByb3RlY3Rpb24gUG9saWN5PC9lbT48L2E+LCBhbmQgb3RoZXIgPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6TEFXPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwiTGVnYWwgcG9saWNpZXNcIj5sZWdhbCBwb2xpY2llczwvYT4uYCxcblx0XHRcdGphOiBg44GT44Gu44K144Kk44OI44KS5Yip55So44GZ44KL44GT44Go44Gn44CBPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6VE9TPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi5Yip55So6KaP57SEXCI+5Yip55So6KaP57SEPC9hPuOAgTxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL1FXOlBJUFA/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCLlgIvkurrmg4XloLHkv53orbfmlrnph51cIj7lgIvkurrmg4XloLHkv53orbfmlrnph508L2E+44CB44Gd44Gu5LuW44GuPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6TEFXPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi5rOV55qE44Od44Oq44K344O8XCI+5rOV55qE44Od44Oq44K344O8PC9hPuOBq+OBpOOBhOOBpuWNgeWIhuOBq+eQhuino+OBl+OAgemBteWuiOOBmeOCi+OBk+OBqOOBq+WQjOaEj+OBl+OBn+OCguOBruOBqOOBv+OBquOBleOCjOOBvuOBmeOAgmAsXG5cdFx0XHQnemgtaGFucyc6IGDorr/pl67mnKznvZHnq5nvvIzmiJbku6Xku7vkvZXmlrnlvI/kvb/nlKjmnKznvZHnq5nvvIzlnYfku6Pooajmgqjlt7Lku5Tnu4bpmIXor7vjgIHlhYXliIbkuobop6PlubblkIzmhI/pgbXlrojmnKznvZHnq5nnmoQ8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpUT1M/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCLnlKjmiLfljY/orq5cIj7nlKjmiLfljY/orq48L2E+44CBPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6UElQUD8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIuS4quS6uuS/oeaBr+S/neaKpOaWuemSiFwiPuS4quS6uuS/oeaBr+S/neaKpOaWuemSiDwvYT7lj4rlhbbku5blkITpobk8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpMQVc/JHtPUFRJT05TLnJlYWRpbmdQSVBQS2V5fT0xXCIgdGl0bGU9XCLms5XlvovmlrnpkohcIj7ms5Xlvovmlrnpkog8L2E+55qE6KeE5a6a44CCYCxcblx0XHRcdCd6aC1oYW50JzogYOWtmOWPluacrOe2suerme+8jOaIluS7peS7u+S9leaWueW8j+S9v+eUqOacrOe2suerme+8jOWdh+S7o+ihqOaCqOW3suS7lOe0sOmWseiugOOAgeWFheWIhuS6huino+S4puWQjOaEj+mBteWuiOacrOe2suermeeahDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL1FXOlRPUz8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIueUqOaItuWNlOitsFwiPueUqOaItuWNlOitsDwvYT7jgIE8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpQSVBQPyR7T1BUSU9OUy5yZWFkaW5nUElQUEtleX09MVwiIHRpdGxlPVwi5YCL5Lq65L+h5oGv5L+d6K235pa56YedXCI+5YCL5Lq65L+h5oGv5L+d6K235pa56YedPC9hPuWPiuWFtuS7luWQhOmghTxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIi93aWtpL1FXOkxBVz8ke09QVElPTlMucmVhZGluZ1BJUFBLZXl9PTFcIiB0aXRsZT1cIuazleW+i+aWuemHnVwiPuazleW+i+aWuemHnTwvYT7nmoTopo/lrprjgIJgLFxuXHRcdH0pLFxuXHR9O1xufTtcbmNvbnN0IGkxOG5NZXNzYWdlcyA9IGdldEkxOG5NZXNzYWdlcygpO1xuXG5jb25zdCBnZXRNZXNzYWdlOiBHZXRNZXNzYWdlczx0eXBlb2YgaTE4bk1lc3NhZ2VzPiA9IChrZXkpID0+IHtcblx0cmV0dXJuIGkxOG5NZXNzYWdlc1trZXldIHx8IGtleTtcbn07XG5cbmV4cG9ydCB7Z2V0TWVzc2FnZX07XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ2V4dC5nYWRnZXQuUmVhY3QnO1xuaW1wb3J0IHtnZXRNZXNzYWdlfSBmcm9tICcuLi9tb2R1bGVzL2kxOG4nO1xuXG5jb25zdCBDb25zZW50Tm90aWNlID0gKCkgPT4gKFxuXHQ8PlxuXHRcdDxwIGlubmVySFRNTD17Z2V0TWVzc2FnZSgnVE9TTm90aWNlJyl9IC8+XG5cdFx0PHAgaW5uZXJIVE1MPXtnZXRNZXNzYWdlKCdDb29raWVOb3RpY2UnKX0gLz5cblx0PC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBDb25zZW50Tm90aWNlO1xuIiwgImltcG9ydCBBZ3JlZUJ1dHRvbiBmcm9tICcuL0FncmVlQnV0dG9uJztcbmltcG9ydCBDb25zZW50Tm90aWNlIGZyb20gJy4vQ29uc2VudE5vdGljZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAnZXh0LmdhZGdldC5SZWFjdCc7XG5pbXBvcnQge3dhcm5pbmd9IGZyb20gJy4vQ29va2llV2FybmluZy5tb2R1bGUubGVzcyc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdGFncmVlQnV0dG9uT25DbGljazogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgUm9vdEVsZW1lbnQgPSAoe2FncmVlQnV0dG9uT25DbGlja306IFByb3BzKSA9PiAoXG5cdDxkaXYgY2xhc3NOYW1lPXtbd2FybmluZywgJ25vcHJpbnQnXX0+XG5cdFx0PENvbnNlbnROb3RpY2UgLz5cblx0XHQ8QWdyZWVCdXR0b24gb25DbGljaz17YWdyZWVCdXR0b25PbkNsaWNrfSAvPlxuXHQ8L2Rpdj5cbik7XG5cbmV4cG9ydCB7Um9vdEVsZW1lbnR9O1xuIiwgImltcG9ydCBcImVzYnVpbGQtY3NzLW1vZHVsZXMtcGx1Z2luLW5zLWNzczpzcmMvQ29va2llV2FybmluZy9jb21wb25lbnRzL0Nvb2tpZVdhcm5pbmcubW9kdWxlLmxlc3NcIjtcbmV4cG9ydCBjb25zdCB3YXJuaW5nID0gXCJDb29raWVXYXJuaW5nLW1vZHVsZV9fd2FybmluZ191a3ZmeUdcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBcIndhcm5pbmdcIjogd2FybmluZ1xufTtcbiAgICAgICIsICJpbXBvcnQgKiBhcyBPUFRJT05TIGZyb20gJy4vb3B0aW9ucy5qc29uJztcbmltcG9ydCB7Um9vdEVsZW1lbnR9IGZyb20gJy4vY29tcG9uZW50cy9Sb290RWxlbWVudCc7XG5cbihmdW5jdGlvbiBjb29raWVXYXJuaW5nKCk6IHZvaWQge1xuXHRjb25zdCB7d2dVc2VyTmFtZX0gPSBtdy5jb25maWcuZ2V0KCk7XG5cdGNvbnN0IGxhc3RTdG9yYWdlVmFsdWU6IHN0cmluZyB8IG51bGwgPSBtdy5zdG9yYWdlLmdldChPUFRJT05TLnN0b3JhZ2VLZXkpIGFzIHN0cmluZyB8IG51bGw7XG5cdGNvbnN0IHVybENvbnNlbnRSZWFkOiBzdHJpbmcgfCBudWxsID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKE9QVElPTlMucmVhZGluZ1BJUFBLZXkpO1xuXG5cdGlmICh3Z1VzZXJOYW1lIHx8IGxhc3RTdG9yYWdlVmFsdWUgPT09ICcxJyB8fCB1cmxDb25zZW50UmVhZCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGNsb3NlV2FybmluZyA9ICgpOiB2b2lkID0+IHtcblx0XHRicm9hZGNhc3RDaGFubmVsLnBvc3RNZXNzYWdlKCdjbG9zZScpO1xuXHRcdGJyb2FkY2FzdENoYW5uZWwuY2xvc2UoKTtcblx0XHRyb290RWxlbWVudC5yZW1vdmUoKTtcblx0XHRtdy5zdG9yYWdlLnNldChPUFRJT05TLnN0b3JhZ2VLZXksICcxJywgNjAgKiA2MCAqIDEwMDAgKiAyNCAqIDMwKTtcblx0fTtcblxuXHRjb25zdCBicm9hZGNhc3RDaGFubmVsOiBCcm9hZGNhc3RDaGFubmVsID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoT1BUSU9OUy5zdG9yYWdlS2V5KTtcblx0YnJvYWRjYXN0Q2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgY2xvc2VXYXJuaW5nKTtcblxuXHRjb25zdCByb290RWxlbWVudCA9IFJvb3RFbGVtZW50KHthZ3JlZUJ1dHRvbk9uQ2xpY2s6IGNsb3NlV2FybmluZ30pO1xuXG5cdGRv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QyxPQUFPQyxJQUFJO0FBQ25DLFFBQU1DLG1CQUFrQ0gsR0FBR0ksUUFBUUYsSUFBWXJDLFVBQVU7QUFDekUsUUFBTXdDLGlCQUFnQ0wsR0FBR00sS0FBS0MsY0FBc0J6QyxjQUFjO0FBRWxGLE1BQUlpQyxjQUFjSSxxQkFBcUIsT0FBT0UsZ0JBQWdCO0FBQzdEO0VBQ0Q7QUFFQSxRQUFNRyxlQUFlQSxNQUFZO0FBQ2hDQyxxQkFBaUJDLFlBQVksT0FBTztBQUNwQ0QscUJBQWlCRSxNQUFNO0FBQ3ZCQyxnQkFBWUMsT0FBTztBQUNuQmIsT0FBR0ksUUFBUVUsSUFBWWpELFlBQVksS0FBSyxLQUFLLEtBQUssTUFBTyxLQUFLLEVBQUU7RUFDakU7QUFFQSxRQUFNNEMsbUJBQXFDLElBQUlNLGlCQUF5QmxELFVBQVU7QUFDbEY0QyxtQkFBaUJPLGlCQUFpQixXQUFXUixZQUFZO0FBRXpELFFBQU1JLGNBQWNoQixZQUFZO0lBQUNDLG9CQUFvQlc7RUFBWSxDQUFDO0FBRWxFUyxXQUFTQyxLQUFLQyxPQUFPUCxXQUFXO0FBQ2pDLEdBQUc7IiwKICAibmFtZXMiOiBbIkJyb2FkY2FzdENoYW5uZWwiLCAic3RvcmFnZUtleSIsICJyZWFkaW5nUElQUEtleSIsICJpbXBvcnRfZXh0X2dhZGdldDIiLCAiX190b0VTTSIsICJyZXF1aXJlIiwgImltcG9ydF9leHRfZ2FkZ2V0IiwgImdldEkxOG5NZXNzYWdlcyIsICJBZ3JlZSIsICJsb2NhbGl6ZSIsICJlbiIsICJqYSIsICJ6aCIsICJDb29raWVOb3RpY2UiLCAiY29uY2F0IiwgIlRPU05vdGljZSIsICJpMThuTWVzc2FnZXMiLCAiZ2V0TWVzc2FnZSIsICJrZXkiLCAiQWdyZWVCdXR0b24iLCAib25DbGljayIsICJkZWZhdWx0IiwgImNyZWF0ZUVsZW1lbnQiLCAiY2xhc3NOYW1lIiwgIkFncmVlQnV0dG9uX2RlZmF1bHQiLCAiaW1wb3J0X2V4dF9nYWRnZXQzIiwgIkNvbnNlbnROb3RpY2UiLCAiRnJhZ21lbnQiLCAiaW5uZXJIVE1MIiwgIkNvbnNlbnROb3RpY2VfZGVmYXVsdCIsICJpbXBvcnRfZXh0X2dhZGdldDQiLCAid2FybmluZyIsICJSb290RWxlbWVudCIsICJhZ3JlZUJ1dHRvbk9uQ2xpY2siLCAiY29va2llV2FybmluZyIsICJ3Z1VzZXJOYW1lIiwgIm13IiwgImNvbmZpZyIsICJnZXQiLCAibGFzdFN0b3JhZ2VWYWx1ZSIsICJzdG9yYWdlIiwgInVybENvbnNlbnRSZWFkIiwgInV0aWwiLCAiZ2V0UGFyYW1WYWx1ZSIsICJjbG9zZVdhcm5pbmciLCAiYnJvYWRjYXN0Q2hhbm5lbCIsICJwb3N0TWVzc2FnZSIsICJjbG9zZSIsICJyb290RWxlbWVudCIsICJyZW1vdmUiLCAic2V0IiwgIkJyb2FkY2FzdENoYW5uZWwiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJkb2N1bWVudCIsICJib2R5IiwgImFwcGVuZCJdCn0K diff --git a/dist/RRD/RRD.js b/dist/RRD/RRD.js index 138e04ba2..24c024237 100644 --- a/dist/RRD/RRD.js +++ b/dist/RRD/RRD.js @@ -520,4 +520,4 @@ void (0, import_ext_gadget5.getBody)().then(function rrd($body) { /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL1JSRC9vcHRpb25zLmpzb24iLCAic3JjL1JSRC9jb21wb25lbnRzL1JlcG9ydEJ1dHRvbi50c3giLCAic3JjL1JSRC9tb2R1bGVzL2kxOG4udHMiLCAic3JjL1JSRC9tb2R1bGVzL2lzU3BlY2lhbExvZy50cyIsICJzcmMvUlJEL1JSRC50cyIsICJzcmMvUlJEL21vZHVsZXMvcnJkQ29uZmlnLnRzIiwgInNyYy9SUkQvY29tcG9uZW50cy9EaWFsb2dJbm5lci50c3giLCAic3JjL1JSRC9tb2R1bGVzL2xvYWRJZHMudHMiLCAic3JjL1JSRC9tb2R1bGVzL2FwaS50cyIsICJzcmMvUlJEL21vZHVsZXMvc3VibWl0LnRzIiwgInNyYy9SUkQvbW9kdWxlcy9zaG93RGlhbG9nLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ7XG5cdFwicnJkUGFnZVwiOiBcIlFpdXdlbl90YWxrOueJiOacrOWIoOmZpOaPkOaKpVwiLFxuXHRcInZlcnNpb25cIjogXCIyLjBcIlxufVxuIiwgImltcG9ydCAqIGFzIE9QVElPTlMgZnJvbSAnLi4vb3B0aW9ucy5qc29uJztcbmltcG9ydCBSZWFjdCBmcm9tICdleHQuZ2FkZ2V0LlJlYWN0JztcbmltcG9ydCB7Z2V0TWVzc2FnZX0gZnJvbSAnLi4vbW9kdWxlcy9pMThuJztcbmltcG9ydCB7aXNTcGVjaWFsTG9nfSBmcm9tICcuLi9tb2R1bGVzL2lzU3BlY2lhbExvZyc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdG9uQ2xpY2soKTogdm9pZDtcbn1cblxuY29uc3QgUmVwb3J0QnV0dG9uID0gKHtvbkNsaWNrfTogUHJvcHMpID0+IChcblx0PGJ1dHRvblxuXHRcdHR5cGU9eydidXR0b24nfVxuXHRcdGNsYXNzTmFtZT17WydyZXBvcnRycmQnLCAnY2R4LWJ1dHRvbicsICdjZHgtYnV0dG9uLS13ZWlnaHQtcHJpbWFyeSddfVxuXHRcdHRpdGxlPXtnZXRNZXNzYWdlKCdyZXBvcnRCdXR0b25UaXRsZScpICsgT1BUSU9OUy5ycmRQYWdlfVxuXHRcdG9uQ2xpY2s9e29uQ2xpY2t9XG5cdD5cblx0XHR7aXNTcGVjaWFsTG9nKCkgPyBnZXRNZXNzYWdlKCdyZXBvcnRCdXR0b25Mb2dUZXh0JykgOiBnZXRNZXNzYWdlKCdyZXBvcnRCdXR0b25UZXh0Jyl9XG5cdDwvYnV0dG9uPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgUmVwb3J0QnV0dG9uO1xuIiwgImNvbnN0IGdldEkxOG5NZXNzYWdlcyA9ICgpID0+IHtcblx0Y29uc3Qge3dnVUxTfSA9IHdpbmRvdztcblx0cmV0dXJuIHtcblx0XHRlZGl0U3VtbWFyeTogd2dVTFMoXG5cdFx0XHQnW1tNZWRpYVdpa2k6R2FkZ2V0LVJSRC5qc3zljYroh6rliqjmj5DmiqVdXeS/ruiuoueJiOacrOWIoOmZpCcsXG5cdFx0XHQnW1tNZWRpYVdpa2k6R2FkZ2V0LVJSRC5qc3zljYroh6rli5Xmj5DloLFdXeS/ruiogueJiOacrOWIqumZpCdcblx0XHQpLFxuXHRcdGVyck5vUmV2aXNpb25Qcm92aWRlZDogd2dVTFMoJ+aCqOayoeaciemAieaLqemcgOmakOiXj+eahOeJiOacrO+8gScsICfmgqjmspLmnInpgbjmk4fpnIDpmrHol4/nmoTniYjmnKzvvIEnKSxcblx0XHRlcnJOb0l0ZW1Qcm92aWRlZDogd2dVTFMoJ+aCqOayoeaciemAieaLqemcgOmakOiXj+eahOmhueebru+8gScsICfmgqjmspLmnInpgbjmk4fpnIDpmrHol4/nmoTpoIXnm67vvIEnKSxcblx0XHR3YXJuTm9SZWFzb25Qcm92aWRlZDogd2dVTFMoJ+aCqOayoeaciei+k+WFpeS7u+S9leeQhueUse+8geehruWumuimgee7p+e7reWQl++8nycsICfmgqjmspLmnInovLjlhaXku7vkvZXnkIbnlLHvvIHnorrlrpropoHnubznuozll47vvJ8nKSxcblx0XHRoaWRlSXRlbXM6IHdnVUxTKCfpnIDpmpDol4/nmoTpobnnm67vvJonLCAn6ZyA6Zqx6JeP55qE6aCF55uu77yaJyksXG5cdFx0aGlkZUNvbnRlbnQ6IHdnVUxTKCfnvJbovpHlhoXlrrknLCAn57eo6Lyv5YWn5a65JyksXG5cdFx0aGlkZUxvZzogd2dVTFMoJ+aXpeW/l+ebruagh+S4juWPguaVsCcsICfml6Xoqoznm67mqJnoiIflj4PmlbgnKSxcblx0XHRoaWRlVXNlcm5hbWU6IHdnVUxTKCfnvJbovpHogIXnlKjmiLflkI0vSVDlnLDlnYAnLCAn57eo6Lyv6ICF55So5oi25ZCNL0lQ5L2N5Z2AJyksXG5cdFx0aGlkZVN1bW1hcnk6IHdnVUxTKCfnvJbovpHmkZjopoEnLCAn57eo6Lyv5pGY6KaBJyksXG5cdFx0aGlkZVJlYXNvbjogd2dVTFMoJ+eQhuaNru+8micsICfnkIbmk5rvvJonKSxcblx0XHRoaWRlUmVhc29uUkQxOiB3Z1VMUygnUkQx77ya5p2h55uu5Lit5piO5pi+5L6154qv6JGX5L2c5p2D55qE5YaF5a65JywgJ1JEMe+8muaineebruS4reaYjumhr+S+teeKr+iRl+S9nOasiueahOWFp+WuuScpLFxuXHRcdGhpZGVSZWFzb25SRDI6IHdnVUxTKCdSRDLvvJrkuKXph43kvq7ovrHjgIHotKzkvY7miJbmlLvlh7vmgKfmlofmnKwnLCAnUkQy77ya5Zq06YeN5L6u6L6x44CB6LK25L2O5oiW5pS75pOK5oCn5paH5pysJyksXG5cdFx0aGlkZVJlYXNvblJEMzogd2dVTFMoJ1JEM++8mue6r+eyueaJsOS5seaAp+WGheWuuScsICfntJTnsrnmk77kuoLmgKflhaflrrknKSxcblx0XHRoaWRlUmVhc29uUkQ0OiB3Z1VMUygnUkQ077ya5piO5pi+6L+d5Y+N5rOV5b6L5rOV6KeE5oiW6L+d6IOM5YWs5bqP6Imv5L+X55qE5YaF5a65JywgJ1JENO+8muaYjumhr+mBleWPjeazleW+i+azleimj+aIlumBleiDjOWFrOW6j+iJr+S/l+eahOWFp+WuuScpLFxuXHRcdGhpZGVSZWFzb25SRDU6IHdnVUxTKCdSRDXvvJrlhbbku5bkuI3lrpzlhazlvIDnmoTniYjmnKzlhoXlrrknLCAnUkQ177ya5YW25LuW5LiN5a6c5YWs6ZaL55qE54mI5pys5YWn5a65JyksXG5cdFx0aGlkZVJlYXNvbk90aGVyOiB3Z1VMUygn5LuF5L2/55So5LiL5pa555qE6ZmE5Yqg55CG55SxJywgJ+WDheS9v+eUqOS4i+aWueeahOmZhOWKoOeQhueUsScpLFxuXHRcdG90aGVyUmVhc29uczogd2dVTFMoJ+mZhOWKoOeQhueUse+8iOWPr+mAie+8jOS4jeeUqOetvuWQje+8iScsICfpmYTliqDnkIbnlLHvvIjlj6/pgbjvvIzkuI3nlKjnsL3lkI3vvIknKSxcblx0XHRkaWFsb2dUaXRsZTogd2dVTFMoJ+aPkOaKpeS/ruiuoueJiOacrOWIoOmZpCcsICfmj5DloLHkv67oqILniYjmnKzliKrpmaQnKSxcblx0XHRkaWFsb2dCdXR0b25TdWJtaXQ6IHdnVUxTKCfmj5DmiqUnLCAn5o+Q5aCxJyksXG5cdFx0ZGlhbG9nQnV0dG9uQ2FuY2VsOiB3Z1VMUygn5Y+W5raIJywgJ+WPlua2iCcpLFxuXHRcdHJlcG9ydEJ1dHRvblRpdGxlOiB3Z1VMUygn5bCG6YCJ5Lit55qE54mI5pys5o+Q5oql5YiwJywgJ+Wwh+mBuOS4reeahOeJiOacrOaPkOWgseWIsCcpLFxuXHRcdHJlcG9ydEJ1dHRvblRleHQ6IHdnVUxTKCfor7fmsYLliKDpmaTooqvpgInniYjmnKwnLCAn6KuL5rGC5Yiq6Zmk6KKr6YG454mI5pysJyksXG5cdFx0cmVwb3J0QnV0dG9uTG9nVGV4dDogd2dVTFMoJ+ivt+axguWIoOmZpOiiq+mAieaXpeW/lycsICfoq4vmsYLliKrpmaTooqvpgbjml6XoqownKSxcblx0fTtcbn07XG5cbmNvbnN0IGkxOG5NZXNzYWdlcyA9IGdldEkxOG5NZXNzYWdlcygpO1xuXG5jb25zdCBnZXRNZXNzYWdlOiBHZXRNZXNzYWdlczx0eXBlb2YgaTE4bk1lc3NhZ2VzPiA9IChrZXkpID0+IHtcblx0cmV0dXJuIGkxOG5NZXNzYWdlc1trZXldIHx8IGtleTtcbn07XG5cbmV4cG9ydCB7Z2V0TWVzc2FnZX07XG4iLCAiY29uc3QgaXNTcGVjaWFsTG9nID0gKCkgPT4ge1xuXHRjb25zdCB7d2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWV9ID0gbXcuY29uZmlnLmdldCgpO1xuXHRyZXR1cm4gd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUgPT09ICdMb2cnO1xufTtcblxuZXhwb3J0IHtpc1NwZWNpYWxMb2d9O1xuIiwgImltcG9ydCBSZXBvcnRCdXR0b24gZnJvbSAnLi9jb21wb25lbnRzL1JlcG9ydEJ1dHRvbic7XG5pbXBvcnQge2dldEJvZHl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5pbXBvcnQge3Nob3dEaWFsb2d9IGZyb20gJy4vbW9kdWxlcy9zaG93RGlhbG9nJztcblxudm9pZCBnZXRCb2R5KCkudGhlbihmdW5jdGlvbiBycmQoJGJvZHk6IEpRdWVyeTxIVE1MQm9keUVsZW1lbnQ+KTogdm9pZCB7XG5cdGNvbnN0IHt3Z0FjdGlvbiwgd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWV9ID0gbXcuY29uZmlnLmdldCgpO1xuXG5cdGlmICh3Z0FjdGlvbiA9PT0gJ2hpc3RvcnknIHx8IHdnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lID09PSAnTG9nJykge1xuXHRcdGZvciAoY29uc3QgZWxlbWVudCBvZiAkYm9keS5maW5kKFxuXHRcdFx0W1xuXHRcdFx0XHQnLmhpc3RvcnlzdWJtaXQubXctaGlzdG9yeS1jb21wYXJlc2VsZWN0ZWR2ZXJzaW9ucy1idXR0b24nLFxuXHRcdFx0XHQnLmVkaXRjaGFuZ2V0YWdzLWxvZy1zdWJtaXQubXctbG9nLWVkaXRjaGFuZ2V0YWdzLWJ1dHRvbicsXG5cdFx0XHRdLmpvaW4oJywnKVxuXHRcdCkpIHtcblx0XHRcdGVsZW1lbnQuYWZ0ZXIoXG5cdFx0XHRcdFJlcG9ydEJ1dHRvbih7XG5cdFx0XHRcdFx0b25DbGljazogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0c2hvd0RpYWxvZygkYm9keSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG59KTtcbiIsICJpbXBvcnQgdHlwZSB7UnJkQ29uZmlnfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgY29uZmlnOiBScmRDb25maWcgPSB7XG5cdGNoZWNrYm94ZXM6IHt9LFxuXHRvdGhlcnM6IHt9LFxufTtcblxuY29uc3QgdXBkYXRlQ29uZmlnID0gKCk6IHZvaWQgPT4ge1xuXHRjb25zdCBjaGVja0JveGVzOiBScmRDb25maWdbJ2NoZWNrYm94ZXMnXSA9IHt9O1xuXG5cdGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxJbnB1dEVsZW1lbnQ+KCcjcnJkX19oaWRlLWNvbnRlbnQnKT8uY2hlY2tlZCkge1xuXHRcdGNoZWNrQm94ZXMucnJkSGlkZUNvbnRlbnQgPSB0cnVlO1xuXHR9XG5cdGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxJbnB1dEVsZW1lbnQ+KCcjcnJkX19oaWRlLXVzZXJuYW1lJyk/LmNoZWNrZWQpIHtcblx0XHRjaGVja0JveGVzLnJyZEhpZGVVc2VybmFtZSA9IHRydWU7XG5cdH1cblx0aWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTElucHV0RWxlbWVudD4oJyNycmRfX2hpZGUtc3VtbWFyeScpPy5jaGVja2VkKSB7XG5cdFx0Y2hlY2tCb3hlcy5ycmRIaWRlU3VtbWFyeSA9IHRydWU7XG5cdH1cblxuXHRjb25maWcuY2hlY2tib3hlcyA9IGNoZWNrQm94ZXM7XG5cblx0Y29uc3Qgb3RoZXJzOiBScmRDb25maWdbJ290aGVycyddID0ge307XG5cblx0Y29uc3QgcmVhc29uSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignI3JyZF9fcmVhc29uJyk7XG5cdGNvbnN0IG90aGVyUmVhc29uc0lucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTElucHV0RWxlbWVudD4oJyNycmRfX290aGVyLXJlYXNvbnMnKTtcblx0aWYgKHJlYXNvbklucHV0KSB7XG5cdFx0b3RoZXJzLnJyZFJlYXNvbiA9IHJlYXNvbklucHV0LnZhbHVlO1xuXHR9XG5cdGlmIChvdGhlclJlYXNvbnNJbnB1dCkge1xuXHRcdG90aGVycy5ycmRPdGhlclJlYXNvbnMgPSBvdGhlclJlYXNvbnNJbnB1dC52YWx1ZTtcblx0fVxuXG5cdGNvbmZpZy5vdGhlcnMgPSBvdGhlcnM7XG59O1xuXG5leHBvcnQge2NvbmZpZywgdXBkYXRlQ29uZmlnfTtcbiIsICJpbXBvcnQgJy4vRGlhbG9nSW5uZXIubGVzcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAnZXh0LmdhZGdldC5SZWFjdCc7XG5pbXBvcnQge2dldE1lc3NhZ2V9IGZyb20gJy4uL21vZHVsZXMvaTE4bic7XG5pbXBvcnQge2lzU3BlY2lhbExvZ30gZnJvbSAnLi4vbW9kdWxlcy9pc1NwZWNpYWxMb2cnO1xuXG5jb25zdCBEaWFsb2dJbm5lciA9ICgpID0+IChcblx0PGRpdiBpZD1cInJyZF9fY29uZmlnXCI+XG5cdFx0e2dldE1lc3NhZ2UoJ2hpZGVJdGVtcycpfVxuXHRcdDxiciAvPlxuXHRcdDxkaXYgY2xhc3NOYW1lPVwicnJkX19jb250ZW50LXdyYXBwZXJcIj5cblx0XHRcdDxpbnB1dCBuYW1lPVwiY29udGVudFwiIGlkPVwicnJkX19oaWRlLWNvbnRlbnRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cImNvbnRlbnRcIiBjaGVja2VkIC8+XG5cdFx0XHQ8bGFiZWwgaHRtbEZvcj1cInJyZF9faGlkZS1jb250ZW50XCIgaWQ9XCJycmQtY29udGVudFwiPlxuXHRcdFx0XHR7aXNTcGVjaWFsTG9nKCkgPyBnZXRNZXNzYWdlKCdoaWRlTG9nJykgOiBnZXRNZXNzYWdlKCdoaWRlQ29udGVudCcpfVxuXHRcdFx0PC9sYWJlbD5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzTmFtZT1cInJyZF9fY29udGVudC13cmFwcGVyXCI+XG5cdFx0XHQ8aW5wdXQgbmFtZT1cInVzZXJuYW1lXCIgaWQ9XCJycmRfX2hpZGUtdXNlcm5hbWVcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cInVzZXJuYW1lXCIgLz5cblx0XHRcdDxsYWJlbCBodG1sRm9yPVwicnJkX19oaWRlLXVzZXJuYW1lXCIgaWQ9XCJycmQtdXNlcm5hbWVcIj5cblx0XHRcdFx0e2dldE1lc3NhZ2UoJ2hpZGVVc2VybmFtZScpfVxuXHRcdFx0PC9sYWJlbD5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzTmFtZT1cInJyZF9fY29udGVudC13cmFwcGVyXCI+XG5cdFx0XHQ8aW5wdXQgbmFtZT1cInN1bW1hcnlcIiBpZD1cInJyZF9faGlkZS1zdW1tYXJ5XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJzdW1tYXJ5XCIgLz5cblx0XHRcdDxsYWJlbCBodG1sRm9yPVwicnJkX19oaWRlLXN1bW1hcnlcIiBpZD1cInJyZC1zdW1tYXJ5XCI+XG5cdFx0XHRcdHtnZXRNZXNzYWdlKCdoaWRlU3VtbWFyeScpfVxuXHRcdFx0PC9sYWJlbD5cblx0XHQ8L2Rpdj5cblx0XHQ8YnIgLz5cblx0XHQ8YnIgLz5cblx0XHR7Z2V0TWVzc2FnZSgnaGlkZVJlYXNvbicpfVxuXHRcdDxiciAvPlxuXHRcdDxzZWxlY3QgbmFtZT1cInJyZF9fcmVhc29uXCIgaWQ9XCJycmRfX3JlYXNvblwiPlxuXHRcdFx0PG9wdGlvbiB2YWx1ZT17Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJEMScpfT57Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJEMScpfTwvb3B0aW9uPlxuXHRcdFx0PG9wdGlvbiB2YWx1ZT17Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJEMicpfT57Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJEMicpfTwvb3B0aW9uPlxuXHRcdFx0PG9wdGlvbiB2YWx1ZT17Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJEMycpfT57Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJEMycpfTwvb3B0aW9uPlxuXHRcdFx0PG9wdGlvbiB2YWx1ZT17Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJENCcpfT57Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJENCcpfTwvb3B0aW9uPlxuXHRcdFx0PG9wdGlvbiB2YWx1ZT17Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJENScpfT57Z2V0TWVzc2FnZSgnaGlkZVJlYXNvblJENScpfTwvb3B0aW9uPlxuXHRcdFx0PG9wdGlvbiB2YWx1ZT1cIlwiPntnZXRNZXNzYWdlKCdoaWRlUmVhc29uT3RoZXInKX08L29wdGlvbj5cblx0XHQ8L3NlbGVjdD5cblx0XHQ8YnIgLz5cblx0XHQ8YnIgLz5cblx0XHR7Z2V0TWVzc2FnZSgnb3RoZXJSZWFzb25zJyl9XG5cdFx0PGJyIC8+XG5cdFx0PHRleHRhcmVhIG5hbWU9XCJvdGhlclJlYXNvbnNcIiBpZD1cInJyZF9fb3RoZXItcmVhc29uc1wiIHJvd3M9ezR9PjwvdGV4dGFyZWE+XG5cdDwvZGl2PlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgRGlhbG9nSW5uZXI7XG4iLCAiY29uc3QgbG9hZElkcyA9ICgkYm9keTogSlF1ZXJ5PEhUTUxCb2R5RWxlbWVudD4pOiBzdHJpbmdbXSA9PiB7XG5cdGNvbnN0IGlkczogc3RyaW5nW10gPSBbXTtcblxuXHRjb25zdCBib3hlczogSlF1ZXJ5PEhUTUxJbnB1dEVsZW1lbnQ+ID0gJGJvZHkuZmluZCgnaW5wdXQnKTtcblx0Zm9yIChjb25zdCBib3ggb2YgYm94ZXMpIHtcblx0XHRjb25zdCB7Y2hlY2tlZCwgbmFtZSwgdHlwZX0gPSBib3g7XG5cblx0XHRpZiAodHlwZSAhPT0gJ2NoZWNrYm94JyB8fCAhY2hlY2tlZCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaWRSZWdleDogUmVnRXhwID0gL2lkc1xcWyhcXGQrKV0vO1xuXHRcdGNvbnN0IGlkQXJyYXk6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBpZFJlZ2V4LmV4ZWMobmFtZSk7XG5cdFx0aWYgKGlkQXJyYXk/LlsxXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRbLCBpZHNbaWRzLmxlbmd0aF1dID0gaWRBcnJheTtcblx0fVxuXG5cdHJldHVybiBpZHM7XG59O1xuXG5leHBvcnQge2xvYWRJZHN9O1xuIiwgImltcG9ydCAqIGFzIE9QVElPTlMgZnJvbSAnLi4vb3B0aW9ucy5qc29uJztcbmltcG9ydCB7aW5pdE13QXBpfSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG5jb25zdCBhcGk6IG13LkFwaSA9IGluaXRNd0FwaShgUlJELyR7T1BUSU9OUy52ZXJzaW9ufWApO1xuXG5leHBvcnQge2FwaX07XG4iLCAiaW1wb3J0ICogYXMgT1BUSU9OUyBmcm9tICcuLi9vcHRpb25zLmpzb24nO1xuaW1wb3J0IHthcGl9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7Z2V0TWVzc2FnZX0gZnJvbSAnLi9pMThuJztcbmltcG9ydCB7dW5pcXVlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbmNvbnN0IHF1ZXJ5UmV2aXNpb25zID0gYXN5bmMgKHRpdGxlczogc3RyaW5nIHwgc3RyaW5nW10pID0+IHtcblx0Y29uc3QgcGFyYW1zOiBBcGlRdWVyeVJldmlzaW9uc1BhcmFtcyA9IHtcblx0XHR0aXRsZXMsXG5cdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdGZvcm1hdHZlcnNpb246ICcyJyxcblx0XHRwcm9wOiAncmV2aXNpb25zJyxcblx0XHRydnByb3A6ICdjb250ZW50Jyxcblx0fTtcblx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkuZ2V0KHBhcmFtcyk7XG5cblx0cmV0dXJuIHJlc3BvbnNlO1xufTtcblxuY29uc3QgZWRpdCA9IGFzeW5jICh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIHN1bW1hcnk/OiBzdHJpbmcpID0+IHtcblx0Y29uc3QgcGFyYW1zOiBBcGlFZGl0UGFnZVBhcmFtcyA9IHtcblx0XHR0aXRsZSxcblx0XHR0ZXh0LFxuXHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdGZvcm1hdHZlcnNpb246ICcyJyxcblx0fTtcblx0aWYgKHN1bW1hcnkpIHtcblx0XHRwYXJhbXMuc3VtbWFyeSA9IHN1bW1hcnk7XG5cdH1cblx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkucG9zdFdpdGhFZGl0VG9rZW4ocGFyYW1zKTtcblxuXHRyZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5jb25zdCBzdWJtaXQgPSBhc3luYyAoaWRzOiBzdHJpbmdbXSwgdG9IaWRlOiBzdHJpbmcsIHJlYXNvbjogc3RyaW5nLCBvdGhlclJlYXNvbnM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRjb25zdCB7d2dQYWdlTmFtZX0gPSBtdy5jb25maWcuZ2V0KCk7XG5cblx0Y29uc3QgcnJkQXJyOiBzdHJpbmdbXSA9IFtcblx0XHQne3tSZXZkZWwnLFxuXHRcdCd8c3RhdHVzID0gJyxcblx0XHRgfGFydGljbGUgPSAke3dnUGFnZU5hbWV9YCxcblx0XHRgfHNldCA9ICR7dG9IaWRlfWAsXG5cdFx0YHxyZWFzb24gPSAke3JlYXNvbn0ke290aGVyUmVhc29uc31gLFxuXHRdO1xuXG5cdGZvciAoY29uc3QgW2luZGV4LCBpZF0gb2YgdW5pcXVlQXJyYXkoaWRzKS5lbnRyaWVzKCkpIHtcblx0XHQvLyBSZXBsYWNlIGBbLi4ubmV3IFNldCgpXWAgdG8gYXZvaWQgcG9seWZpbGxpbmcgY29yZS1qc1xuXHRcdHJyZEFycltycmRBcnIubGVuZ3RoXSA9IGB8aWQke2luZGV4ICsgMX0gPSAke2lkfWA7XG5cdH1cblx0cnJkQXJyW3JyZEFyci5sZW5ndGhdID0gJ319XFxuLS1+ficuY29uY2F0KCd+ficpO1xuXG5cdHRyeSB7XG5cdFx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBxdWVyeVJldmlzaW9ucyhPUFRJT05TLnJyZFBhZ2UpO1xuXG5cdFx0bGV0IGNvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRpZiAocmVzcG9uc2VbJ3F1ZXJ5J10/LnBhZ2VzKSB7XG5cdFx0XHRjb250ZW50ID0gcmVzcG9uc2VbJ3F1ZXJ5J10ucGFnZXNbMF0ucmV2aXNpb25zWzBdLmNvbnRlbnQgYXMgc3RyaW5nO1xuXHRcdH1cblxuXHRcdGlmIChjb250ZW50ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KGBFcnJvciB3aGVuIGxvYWRpbmcgcGFnZSAke09QVElPTlMucnJkUGFnZX06IG1pc3NpbmdgLCB7XG5cdFx0XHRcdHRhZzogJ1JSRCcsXG5cdFx0XHRcdHR5cGU6ICdlcnJvcicsXG5cdFx0XHR9KTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBhd2FpdCBlZGl0KE9QVElPTlMucnJkUGFnZSwgYCR7Y29udGVudH1cXG5cXG4ke3JyZEFyci5qb2luKCdcXG4nKX1gLCBnZXRNZXNzYWdlKCdlZGl0U3VtbWFyeScpKTtcblxuXHRcdFx0aWYgKHJlc3VsdFsnZWRpdCddPy5yZXN1bHQgPT09ICdTdWNjZXNzJykge1xuXHRcdFx0XHRsb2NhdGlvbi5yZXBsYWNlKG13LnV0aWwuZ2V0VXJsKE9QVElPTlMucnJkUGFnZSkpO1xuXHRcdFx0fSBlbHNlIGlmIChyZXN1bHRbJ2Vycm9yJ10/LmNvZGUpIHtcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoYFNvbWUgZXJyb3JzIG9jY3VyZWQgd2hpbGUgc2F2aW5nIHBhZ2U6ICR7cmVzdWx0WydlcnJvciddLmNvZGV9YCwge1xuXHRcdFx0XHRcdHRhZzogJ1JSRCcsXG5cdFx0XHRcdFx0dHlwZTogJ2Vycm9yJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSgnU29tZSBlcnJvcnMgb2NjdXJlZCB3aGlsZSBzYXZpbmcgcGFnZTogdW5rbm93bicsIHtcblx0XHRcdFx0XHR0YWc6ICdSUkQnLFxuXHRcdFx0XHRcdHR5cGU6ICdlcnJvcicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2gge1xuXHRcdFx0dm9pZCBtdy5ub3RpZnkoYEVycm9yIHdoZW4gZWRpdGluZyBwYWdlICR7T1BUSU9OUy5ycmRQYWdlfWAsIHt0YWc6ICdSUkQnLCB0eXBlOiAnZXJyb3InfSk7XG5cdFx0fVxuXHR9IGNhdGNoIHtcblx0XHR2b2lkIG13Lm5vdGlmeShgRXJyb3Igd2hlbiBsb2FkaW5nIHBhZ2UgJHtPUFRJT05TLnJyZFBhZ2V9YCwge3RhZzogJ1JSRCcsIHR5cGU6ICdlcnJvcid9KTtcblx0fVxufTtcblxuZXhwb3J0IHtzdWJtaXR9O1xuIiwgImltcG9ydCB7Y29uZmlnLCB1cGRhdGVDb25maWd9IGZyb20gJy4vcnJkQ29uZmlnJztcbmltcG9ydCBEaWFsb2dJbm5lciBmcm9tICcuLi9jb21wb25lbnRzL0RpYWxvZ0lubmVyJztcbmltcG9ydCBSZWFjdCBmcm9tICdleHQuZ2FkZ2V0LlJlYWN0JztcbmltcG9ydCB7Z2V0TWVzc2FnZX0gZnJvbSAnLi9pMThuJztcbmltcG9ydCB7aXNTcGVjaWFsTG9nfSBmcm9tICcuL2lzU3BlY2lhbExvZyc7XG5pbXBvcnQge2xvYWRJZHN9IGZyb20gJy4vbG9hZElkcyc7XG5pbXBvcnQge3N1Ym1pdH0gZnJvbSAnLi9zdWJtaXQnO1xuXG5sZXQgJGRpYWxvZzogSlF1ZXJ5IHwgdW5kZWZpbmVkO1xuXG5jb25zdCBzaG93RGlhbG9nID0gKCRib2R5OiBKUXVlcnk8SFRNTEJvZHlFbGVtZW50Pik6IHZvaWQgPT4ge1xuXHRjb25zdCBpZHM6IHN0cmluZ1tdID0gbG9hZElkcygkYm9keSk7XG5cdGlmICghaWRzLmxlbmd0aCkge1xuXHRcdHZvaWQgbXcubm90aWZ5KGdldE1lc3NhZ2UoJ2Vyck5vUmV2aXNpb25Qcm92aWRlZCcpLCB7XG5cdFx0XHR0YWc6ICdSUkQnLFxuXHRcdFx0dHlwZTogJ2Vycm9yJyxcblx0XHR9KTtcblxuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGRpYWxvZzogUmVhY3QuUmVhY3RFbGVtZW50ID0gRGlhbG9nSW5uZXIoKTtcblx0aWYgKCRkaWFsb2cpIHtcblx0XHQkZGlhbG9nLmh0bWwoZGlhbG9nKS5kaWFsb2coJ29wZW4nKTtcblxuXHRcdGZvciAoY29uc3QgW2lkLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnLm90aGVycykpIHtcblx0XHRcdCRib2R5LmZpbmQoYCMke2lkfWApLnZhbCh2YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IFtpZCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jaGVja2JveGVzKSkge1xuXHRcdFx0aWYgKHZhbHVlID09PSB0cnVlKSB7XG5cdFx0XHRcdCRib2R5LmZpbmQoYCMke2lkfWApLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm47XG5cdH1cblxuXHQkZGlhbG9nID0gJChkaWFsb2cpLmRpYWxvZyh7XG5cdFx0dGl0bGU6IGdldE1lc3NhZ2UoJ2RpYWxvZ1RpdGxlJyksXG5cdFx0bWluV2lkdGg6IDUxNSxcblx0XHRtaW5IZWlnaHQ6IDE1MCxcblx0XHRjbG9zZTogdXBkYXRlQ29uZmlnLFxuXHRcdGJ1dHRvbnM6IFtcblx0XHRcdHtcblx0XHRcdFx0dGV4dDogZ2V0TWVzc2FnZSgnZGlhbG9nQnV0dG9uU3VibWl0JyksXG5cdFx0XHRcdGNsaWNrKCk6IHZvaWQge1xuXHRcdFx0XHRcdCQodGhpcykuZGlhbG9nKCdjbG9zZScpO1xuXG5cdFx0XHRcdFx0Y29uc3Qge1xuXHRcdFx0XHRcdFx0Y2hlY2tib3hlczoge3JyZEhpZGVDb250ZW50LCBycmRIaWRlVXNlcm5hbWUsIHJyZEhpZGVTdW1tYXJ5fSxcblx0XHRcdFx0XHRcdG90aGVyczoge3JyZFJlYXNvbn0sXG5cdFx0XHRcdFx0fSA9IGNvbmZpZztcblxuXHRcdFx0XHRcdGxldCB7cnJkT3RoZXJSZWFzb25zfSA9IGNvbmZpZy5vdGhlcnM7XG5cdFx0XHRcdFx0aWYgKHJyZE90aGVyUmVhc29ucyAmJiBycmRSZWFzb24pIHtcblx0XHRcdFx0XHRcdHJyZE90aGVyUmVhc29ucyA9IGDvvIwke3JyZE90aGVyUmVhc29uc31gO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHRvSGlkZTogc3RyaW5nW10gPSBbXTtcblx0XHRcdFx0XHRpZiAocnJkSGlkZUNvbnRlbnQpIHtcblx0XHRcdFx0XHRcdHRvSGlkZVt0b0hpZGUubGVuZ3RoXSA9IGlzU3BlY2lhbExvZygpID8gZ2V0TWVzc2FnZSgnaGlkZUxvZycpIDogZ2V0TWVzc2FnZSgnaGlkZUNvbnRlbnQnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHJyZEhpZGVVc2VybmFtZSkge1xuXHRcdFx0XHRcdFx0dG9IaWRlW3RvSGlkZS5sZW5ndGhdID0gZ2V0TWVzc2FnZSgnaGlkZVVzZXJuYW1lJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChycmRIaWRlU3VtbWFyeSkge1xuXHRcdFx0XHRcdFx0dG9IaWRlW3RvSGlkZS5sZW5ndGhdID0gZ2V0TWVzc2FnZSgnaGlkZVN1bW1hcnknKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoIXRvSGlkZS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KGdldE1lc3NhZ2UoJ2Vyck5vSXRlbVByb3ZpZGVkJyksIHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnUlJEJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2Vycm9yJyxcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bGV0IGNvbnQ6IGJvb2xlYW4gPSB0cnVlO1xuXHRcdFx0XHRcdGlmICghcnJkUmVhc29uICYmICFycmRPdGhlclJlYXNvbnMpIHtcblx0XHRcdFx0XHRcdGNvbnQgPSBjb25maXJtKGdldE1lc3NhZ2UoJ3dhcm5Ob1JlYXNvblByb3ZpZGVkJykpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChjb250KSB7XG5cdFx0XHRcdFx0XHR2b2lkIHN1Ym1pdChpZHMsIHRvSGlkZS5qb2luKCfjgIEnKSwgcnJkUmVhc29uID8/ICcnLCBycmRPdGhlclJlYXNvbnMgPz8gJycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdHRleHQ6IGdldE1lc3NhZ2UoJ2RpYWxvZ0J1dHRvbkNhbmNlbCcpLFxuXHRcdFx0XHRjbGljaygpOiB2b2lkIHtcblx0XHRcdFx0XHQkKHRoaXMpLmRpYWxvZygnY2xvc2UnKTtcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XSxcblx0fSk7XG59O1xuXG5leHBvcnQge3Nob3dEaWFsb2d9O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0MsSUFBQUEsVUFBVztBQUNYLElBQUFDLFVBQVc7O0FDRFosSUFBQUMsb0JBQWtCQyxRQUFBQyxRQUFBLGtCQUFBLEdBQUEsQ0FBQTs7QUNEbEIsSUFBTUMsa0JBQWtCQSxNQUFNO0FBQzdCLFFBQU07SUFBQ0M7RUFBSyxJQUFJQztBQUNoQixTQUFPO0lBQ05DLGFBQWFGLE1BQ1osMkNBQ0EseUNBQ0Q7SUFDQUcsdUJBQXVCSCxNQUFNLGdCQUFnQixjQUFjO0lBQzNESSxtQkFBbUJKLE1BQU0sZ0JBQWdCLGNBQWM7SUFDdkRLLHNCQUFzQkwsTUFBTSxxQkFBcUIsbUJBQW1CO0lBQ3BFTSxXQUFXTixNQUFNLFdBQVcsU0FBUztJQUNyQ08sYUFBYVAsTUFBTSxRQUFRLE1BQU07SUFDakNRLFNBQVNSLE1BQU0sV0FBVyxTQUFTO0lBQ25DUyxjQUFjVCxNQUFNLGVBQWUsYUFBYTtJQUNoRFUsYUFBYVYsTUFBTSxRQUFRLE1BQU07SUFDakNXLFlBQVlYLE1BQU0sT0FBTyxLQUFLO0lBQzlCWSxlQUFlWixNQUFNLHFCQUFxQixtQkFBbUI7SUFDN0RhLGVBQWViLE1BQU0scUJBQXFCLG1CQUFtQjtJQUM3RGMsZUFBZWQsTUFB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QTtNQUNDdEQsTUFBTWpGLFdBQVcsb0JBQW9CO01BQ3JDb0ksUUFBYztBQUNiTCxVQUFFLElBQUksRUFBRVIsT0FBTyxPQUFPO01BQ3ZCO0lBQ0QsQ0FBQTtFQUVGLENBQUM7QUFDRjs7QU41RkEsTUFBQSxHQUFLeEcsbUJBQUF5SCxTQUFRLEVBQUVDLEtBQUssU0FBU0MsSUFBSWhHLE9BQXNDO0FBQ3RFLFFBQU07SUFBQ2lHO0lBQVV4STtFQUEwQixJQUFJQyxHQUFHQyxPQUFPQyxJQUFJO0FBRTdELE1BQUlxSSxhQUFhLGFBQWF4SSwrQkFBK0IsT0FBTztBQUFBLFFBQUF5SSxhQUFBN0YsMkJBQzdDTCxNQUFNRyxLQUMzQixDQUNDLDREQUNBLHlEQUFBLEVBQ0M4RCxLQUFLLEdBQUcsQ0FDWCxDQUFBLEdBQUFrQztBQUFBLFFBQUE7QUFMQSxXQUFBRCxXQUFBM0YsRUFBQSxHQUFBLEVBQUE0RixTQUFBRCxXQUFBMUYsRUFBQSxHQUFBQyxRQUtHO0FBQUEsY0FMUTJGLFVBQUFELE9BQUE3RztBQU1WOEcsZ0JBQVFDLE1BQ1BqSSxxQkFBYTtVQUNaTixTQUFTQSxNQUFZO0FBQ3BCOEcsdUJBQVc1RSxLQUFLO1VBQ2pCO1FBQ0QsQ0FBQyxDQUNGO01BQ0Q7SUFBQSxTQUFBZSxLQUFBO0FBQUFtRixpQkFBQWxGLEVBQUFELEdBQUE7SUFBQSxVQUFBO0FBQUFtRixpQkFBQWpGLEVBQUE7SUFBQTtFQUNEO0FBQ0QsQ0FBQzsiLAogICJuYW1lcyI6IFsicnJkUGFnZSIsICJ2ZXJzaW9uIiwgImltcG9ydF9leHRfZ2FkZ2V0IiwgIl9fdG9FU00iLCAicmVxdWlyZSIsICJnZXRJMThuTWVzc2FnZXMiLCAid2dVTFMiLCAid2luZG93IiwgImVkaXRTdW1tYXJ5IiwgImVyck5vUmV2aXNpb25Qcm92aWRlZCIsICJlcnJOb0l0ZW1Qcm92aWRlZCIsICJ3YXJuTm9SZWFzb25Qcm92aWRlZCIsICJoaWRlSXRlbXMiLCAiaGlkZUNvbnRlbnQiLCAiaGlkZUxvZyIsICJoaWRlVXNlcm5hbWUiLCAiaGlkZVN1bW1hcnkiLCAiaGlkZVJlYXNvbiIsICJoaWRlUmVhc29uUkQxIiwgImhpZGVSZWFzb25SRDIiLCAiaGlkZVJlYXNvblJEMyIsICJoaWRlUmVhc29uUkQ0IiwgImhpZGVSZWFzb25SRDUiLCAiaGlkZVJlYXNvbk90aGVyIiwgIm90aGVyUmVhc29ucyIsICJkaWFsb2dUaXRsZSIsICJkaWFsb2dCdXR0b25TdWJtaXQiLCAiZGlhbG9nQnV0dG9uQ2FuY2VsIiwgInJlcG9ydEJ1dHRvblRpdGxlIiwgInJlcG9ydEJ1dHRvblRleHQiLCAicmVwb3J0QnV0dG9uTG9nVGV4dCIsICJpMThuTWVzc2FnZXMiLCAiZ2V0TWVzc2FnZSIsICJrZXkiLCAiaXNTcGVjaWFsTG9nIiwgIndnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lIiwgIm13IiwgImNvbmZpZyIsICJnZXQiLCAiUmVwb3J0QnV0dG9uIiwgIm9uQ2xpY2siLCAiZGVmYXVsdCIsICJjcmVhdGVFbGVtZW50IiwgInR5cGUiLCAiY2xhc3NOYW1lIiwgInRpdGxlIiwgIlJlcG9ydEJ1dHRvbl9kZWZhdWx0IiwgImltcG9ydF9leHRfZ2FkZ2V0NSIsICJjaGVja2JveGVzIiwgIm90aGVycyIsICJ1cGRhdGVDb25maWciLCAiX2RvY3VtZW50JHF1ZXJ5U2VsZWN0IiwgIl9kb2N1bWVudCRxdWVyeVNlbGVjdDIiLCAiX2RvY3VtZW50JHF1ZXJ5U2VsZWN0MyIsICJjaGVja0JveGVzIiwgImRvY3VtZW50IiwgInF1ZXJ5U2VsZWN0b3IiLCAiY2hlY2tlZCIsICJycmRIaWRlQ29udGVudCIsICJycmRIaWRlVXNlcm5hbWUiLCAicnJkSGlkZVN1bW1hcnkiLCAicmVhc29uSW5wdXQiLCAib3RoZXJSZWFzb25zSW5wdXQiLCAicnJkUmVhc29uIiwgInZhbHVlIiwgInJyZE90aGVyUmVhc29ucyIsICJpbXBvcnRfZXh0X2dhZGdldDIiLCAiRGlhbG9nSW5uZXIiLCAiaWQiLCAibmFtZSIsICJodG1sRm9yIiwgInJvd3MiLCAiRGlhbG9nSW5uZXJfZGVmYXVsdCIsICJsb2FkSWRzIiwgIiRib2R5IiwgImlkcyIsICJib3hlcyIsICJmaW5kIiwgIl9pdGVyYXRvcjIiLCAiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCAiX3N0ZXAyIiwgInMiLCAibiIsICJkb25lIiwgImJveCIsICJpZFJlZ2V4IiwgImlkQXJyYXkiLCAiZXhlYyIsICJsZW5ndGgiLCAiZXJyIiwgImUiLCAiZiIsICJpbXBvcnRfZXh0X2dhZGdldDMiLCAiYXBpIiwgImluaXRNd0FwaSIsICJjb25jYXQiLCAiaW1wb3J0X2V4dF9nYWRnZXQ0IiwgInF1ZXJ5UmV2aXNpb25zIiwgIl9yZWYiLCAiX2FzeW5jVG9HZW5lcmF0b3IiLCAidGl0bGVzIiwgInBhcmFtcyIsICJhY3Rpb24iLCAiZm9ybWF0IiwgImZvcm1hdHZlcnNpb24iLCAicHJvcCIsICJydnByb3AiLCAicmVzcG9uc2UiLCAiX3giLCAiYXBwbHkiLCAiYXJndW1lbnRzIiwgImVkaXQiLCAiX3JlZjIiLCAidGV4dCIsICJzdW1tYXJ5IiwgInBvc3RXaXRoRWRpdFRva2VuIiwgIl94MiIsICJfeDMiLCAiX3g0IiwgInN1Ym1pdCIsICJfcmVmMyIsICJ0b0hpZGUiLCAicmVhc29uIiwgIndnUGFnZU5hbWUiLCAicnJkQXJyIiwgIl9pdGVyYXRvcjMiLCAidW5pcXVlQXJyYXkiLCAiZW50cmllcyIsICJfc3RlcDMiLCAiaW5kZXgiLCAiX3Jlc3BvbnNlJHF1ZXJ5IiwgImNvbnRlbnQiLCAicGFnZXMiLCAicmV2aXNpb25zIiwgIm5vdGlmeSIsICJ0YWciLCAiX3Jlc3VsdCRlZGl0IiwgIl9yZXN1bHQkZXJyb3IiLCAicmVzdWx0IiwgImpvaW4iLCAibG9jYXRpb24iLCAicmVwbGFjZSIsICJ1dGlsIiwgImdldFVybCIsICJjb2RlIiwgIl94NSIsICJfeDYiLCAiX3g3IiwgIl94OCIsICIkZGlhbG9nIiwgInNob3dEaWFsb2ciLCAiZGlhbG9nIiwgImh0bWwiLCAiX2kiLCAiX09iamVjdCRlbnRyaWVzIiwgIk9iamVjdCIsICJ2YWwiLCAiX2kyIiwgIl9PYmplY3QkZW50cmllczIiLCAiJCIsICJtaW5XaWR0aCIsICJtaW5IZWlnaHQiLCAiY2xvc2UiLCAiYnV0dG9ucyIsICJjbGljayIsICJjb250IiwgImNvbmZpcm0iLCAiX3JyZE90aGVyUmVhc29ucyIsICJnZXRCb2R5IiwgInRoZW4iLCAicnJkIiwgIndnQWN0aW9uIiwgIl9pdGVyYXRvcjQiLCAiX3N0ZXA0IiwgImVsZW1lbnQiLCAiYWZ0ZXIiXQp9Cg== +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL1JSRC9vcHRpb25zLmpzb24iLCAic3JjL1JSRC9jb21wb25lbnRzL1JlcG9ydEJ1dHRvbi50c3giLCAic3JjL1JSRC9tb2R1bGVzL2kxOG4udHMiLCAic3JjL1JSRC9tb2R1bGVzL2lzU3BlY2lhbExvZy50cyIsICJzcmMvUlJEL1JSRC50cyIsICJzcmMvUlJEL21vZHVsZXMvcnJkQ29uZmlnLnRzIiwgInNyYy9SUkQvY29tcG9uZW50cy9EaWFsb2dJbm5lci50c3giLCAic3JjL1JSRC9tb2R1bGVzL2xvYWRJZHMudHMiLCAic3JjL1JSRC9tb2R1bGVzL2FwaS50cyIsICJzcmMvUlJEL21vZHVsZXMvc3VibWl0LnRzIiwgInNyYy9SUkQvbW9kdWxlcy9zaG93RGlhbG9nLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ7XG5cdFwicnJkUGFnZVwiOiBcIlFpdXdlbl90YWxrOueJiOacrOWIoOmZpOaPkOaKpVwiLFxuXHRcInZlcnNpb25cIjogXCIyLjBcIlxufVxuIiwgImltcG9ydCAqIGFzIE9QVElPTlMgZnJvbSAnLi4vb3B0aW9ucy5qc29uJztcbmltcG9ydCBSZWFjdCBmcm9tICdleHQuZ2FkZ2V0LlJlYWN0JztcbmltcG9ydCB7Z2V0TWVzc2FnZX0gZnJvbSAnLi4vbW9kdWxlcy9pMThuJztcbmltcG9ydCB7aXNTcGVjaWFsTG9nfSBmcm9tICcuLi9tb2R1bGVzL2lzU3BlY2lhbExvZyc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFJlcG9ydEJ1dHRvbiA9ICh7b25DbGlja306IFByb3BzKSA9PiAoXG5cdDxidXR0b25cblx0XHR0eXBlPXsnYnV0dG9uJ31cblx0XHRjbGFzc05hbWU9e1sncmVwb3J0cnJkJywgJ2NkeC1idXR0b24nLCAnY2R4LWJ1dHRvbi0td2VpZ2h0LXByaW1hcnknXX1cblx0XHR0aXRsZT17Z2V0TWVzc2FnZSgncmVwb3J0QnV0dG9uVGl0bGUnKSArIE9QVElPTlMucnJkUGFnZX1cblx0XHRvbkNsaWNrPXtvbkNsaWNrfVxuXHQ+XG5cdFx0e2lzU3BlY2lhbExvZygpID8gZ2V0TWVzc2FnZSgncmVwb3J0QnV0dG9uTG9nVGV4dCcpIDogZ2V0TWVzc2FnZSgncmVwb3J0QnV0dG9uVGV4dCcpfVxuXHQ8L2J1dHRvbj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcG9ydEJ1dHRvbjtcbiIsICJjb25zdCBnZXRJMThuTWVzc2FnZXMgPSAoKSA9PiB7XG5cdGNvbnN0IHt3Z1VMU30gPSB3aW5kb3c7XG5cdHJldHVybiB7XG5cdFx0ZWRpdFN1bW1hcnk6IHdnVUxTKFxuXHRcdFx0J1tbTWVkaWFXaWtpOkdhZGdldC1SUkQuanN85Y2K6Ieq5Yqo5o+Q5oqlXV3kv67orqLniYjmnKzliKDpmaQnLFxuXHRcdFx0J1tbTWVkaWFXaWtpOkdhZGdldC1SUkQuanN85Y2K6Ieq5YuV5o+Q5aCxXV3kv67oqILniYjmnKzliKrpmaQnXG5cdFx0KSxcblx0XHRlcnJOb1JldmlzaW9uUHJvdmlkZWQ6IHdnVUxTKCfmgqjmsqHmnInpgInmi6npnIDpmpDol4/nmoTniYjmnKzvvIEnLCAn5oKo5rKS5pyJ6YG45pOH6ZyA6Zqx6JeP55qE54mI5pys77yBJyksXG5cdFx0ZXJyTm9JdGVtUHJvdmlkZWQ6IHdnVUxTKCfmgqjmsqHmnInpgInmi6npnIDpmpDol4/nmoTpobnnm67vvIEnLCAn5oKo5rKS5pyJ6YG45pOH6ZyA6Zqx6JeP55qE6aCF55uu77yBJyksXG5cdFx0d2Fybk5vUmVhc29uUHJvdmlkZWQ6IHdnVUxTKCfmgqjmsqHmnInovpPlhaXku7vkvZXnkIbnlLHvvIHnoa7lrpropoHnu6fnu63lkJfvvJ8nLCAn5oKo5rKS5pyJ6Ly45YWl5Lu75L2V55CG55Sx77yB56K65a6a6KaB57m857qM5ZeO77yfJyksXG5cdFx0aGlkZUl0ZW1zOiB3Z1VMUygn6ZyA6ZqQ6JeP55qE6aG555uu77yaJywgJ+mcgOmaseiXj+eahOmgheebru+8micpLFxuXHRcdGhpZGVDb250ZW50OiB3Z1VMUygn57yW6L6R5YaF5a65JywgJ+e3qOi8r+WFp+WuuScpLFxuXHRcdGhpZGVMb2c6IHdnVUxTKCfml6Xlv5fnm67moIfkuI7lj4LmlbAnLCAn5pel6KqM55uu5qiZ6IiH5Y+D5pW4JyksXG5cdFx0aGlkZVVzZXJuYW1lOiB3Z1VMUygn57yW6L6R6ICF55So5oi35ZCNL0lQ5Zyw5Z2AJywgJ+e3qOi8r+iAheeUqOaItuWQjS9JUOS9jeWdgCcpLFxuXHRcdGhpZGVTdW1tYXJ5OiB3Z1VMUygn57yW6L6R5pGY6KaBJywgJ+e3qOi8r+aRmOimgScpLFxuXHRcdGhpZGVSZWFzb246IHdnVUxTKCfnkIbmja7vvJonLCAn55CG5pOa77yaJyksXG5cdFx0aGlkZVJlYXNvblJEMTogd2dVTFMoJ1JEMe+8muadoeebruS4reaYjuaYvuS+teeKr+iRl+S9nOadg+eahOWGheWuuScsICdSRDHvvJrmop3nm67kuK3mmI7poa/kvrXniq/okZfkvZzmrIrnmoTlhaflrrknKSxcblx0XHRoaWRlUmVhc29uUkQyOiB3Z1VMUygnUkQy77ya5Lil6YeN5L6u6L6x44CB6LSs5L2O5oiW5pS75Ye75oCn5paH5pysJywgJ1JEMu+8muWatOmHjeS+rui+seOAgeiytuS9juaIluaUu+aTiuaAp+aWh+acrCcpLFxuXHRcdGhpZGVSZWFzb25SRDM6IHdnVUxTKCdSRDPvvJrnuq/nsrnmibDkubHmgKflhoXlrrknLCAn57SU57K55pO+5LqC5oCn5YWn5a65JyksXG5cdFx0aGlkZVJlYXNvblJENDogd2dVTFMoJ1JENO+8muaYjuaYvui/neWPjeazleW+i+azleinhOaIlui/neiDjOWFrOW6j+iJr+S/l+eahOWGheWuuScsICdSRDTvvJrmmI7poa/pgZXlj43ms5Xlvovms5Xopo/miJbpgZXog4zlhazluo/oia/kv5fnmoTlhaflrrknKSxcblx0XHRoaWRlUmVhc29uUkQ1OiB3Z1VMUygnUkQ177ya5YW25LuW5LiN5a6c5YWs5byA55qE54mI5pys5YaF5a65JywgJ1JENe+8muWFtuS7luS4jeWunOWFrOmWi+eahOeJiOacrOWFp+WuuScpLFxuXHRcdGhpZGVSZWFzb25PdGhlcjogd2dVTFMoJ+S7heS9v+eUqOS4i+aWueeahOmZhOWKoOeQhueUsScsICflg4Xkvb/nlKjkuIvmlrnnmoTpmYTliqDnkIbnlLEnKSxcblx0XHRvdGhlclJlYXNvbnM6IHdnVUxTKCfpmYTliqDnkIbnlLHvvIjlj6/pgInvvIzkuI3nlKjnrb7lkI3vvIknLCAn6ZmE5Yqg55CG55Sx77yI5Y+v6YG477yM5LiN55So57C95ZCN77yJJyksXG5cdFx0ZGlhbG9nVGl0bGU6IHdnVUxTKCfmj5DmiqXkv67orqLniYjmnKzliKDpmaQnLCAn5o+Q5aCx5L+u6KiC54mI5pys5Yiq6ZmkJyksXG5cdFx0ZGlhbG9nQnV0dG9uU3VibWl0OiB3Z1VMUygn5o+Q5oqlJywgJ+aPkOWgsScpLFxuXHRcdGRpYWxvZ0J1dHRvbkNhbmNlbDogd2dVTFMoJ+WPlua2iCcsICflj5bmtognKSxcblx0XHRyZXBvcnRCdXR0b25UaXRsZTogd2dVTFMoJ+WwhumAieS4reeahOeJiOacrOaPkOaKpeWIsCcsICflsIfpgbjkuK3nmoTniYjmnKzmj5DloLHliLAnKSxcblx0XHRyZXBvcnRCdXR0b25UZXh0OiB3Z1VMUygn6K+35rGC5Yig6Zmk6KKr6YCJ54mI5pysJywgJ+iri+axguWIqumZpOiiq+mBuOeJiOacrCcpLFxuXHRcdHJlcG9ydEJ1dHRvbkxvZ1RleHQ6IHdnVUxTKCfor7fmsYLliKDpmaTooqvpgInml6Xlv5cnLCAn6KuL5rGC5Yiq6Zmk6KKr6YG45pel6KqMJyksXG5cdH07XG59O1xuXG5jb25zdCBpMThuTWVzc2FnZXMgPSBnZXRJMThuTWVzc2FnZXMoKTtcblxuY29uc3QgZ2V0TWVzc2FnZTogR2V0TWVzc2FnZXM8dHlwZW9mIGkxOG5NZXNzYWdlcz4gPSAoa2V5KSA9PiB7XG5cdHJldHVybiBpMThuTWVzc2FnZXNba2V5XSB8fCBrZXk7XG59O1xuXG5leHBvcnQge2dldE1lc3NhZ2V9O1xuIiwgImNvbnN0IGlzU3BlY2lhbExvZyA9ICgpID0+IHtcblx0Y29uc3Qge3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lfSA9IG13LmNvbmZpZy5nZXQoKTtcblx0cmV0dXJuIHdnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lID09PSAnTG9nJztcbn07XG5cbmV4cG9ydCB7aXNTcGVjaWFsTG9nfTtcbiIsICJpbXBvcnQgUmVwb3J0QnV0dG9uIGZyb20gJy4vY29tcG9uZW50cy9SZXBvcnRCdXR0b24nO1xuaW1wb3J0IHtnZXRCb2R5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuaW1wb3J0IHtzaG93RGlhbG9nfSBmcm9tICcuL21vZHVsZXMvc2hvd0RpYWxvZyc7XG5cbnZvaWQgZ2V0Qm9keSgpLnRoZW4oZnVuY3Rpb24gcnJkKCRib2R5OiBKUXVlcnk8SFRNTEJvZHlFbGVtZW50Pik6IHZvaWQge1xuXHRjb25zdCB7d2dBY3Rpb24sIHdnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lfSA9IG13LmNvbmZpZy5nZXQoKTtcblxuXHRpZiAod2dBY3Rpb24gPT09ICdoaXN0b3J5JyB8fCB3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZSA9PT0gJ0xvZycpIHtcblx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgJGJvZHkuZmluZChcblx0XHRcdFtcblx0XHRcdFx0Jy5oaXN0b3J5c3VibWl0Lm13LWhpc3RvcnktY29tcGFyZXNlbGVjdGVkdmVyc2lvbnMtYnV0dG9uJyxcblx0XHRcdFx0Jy5lZGl0Y2hhbmdldGFncy1sb2ctc3VibWl0Lm13LWxvZy1lZGl0Y2hhbmdldGFncy1idXR0b24nLFxuXHRcdFx0XS5qb2luKCcsJylcblx0XHQpKSB7XG5cdFx0XHRlbGVtZW50LmFmdGVyKFxuXHRcdFx0XHRSZXBvcnRCdXR0b24oe1xuXHRcdFx0XHRcdG9uQ2xpY2s6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHNob3dEaWFsb2coJGJvZHkpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxufSk7XG4iLCAiaW1wb3J0IHR5cGUge1JyZENvbmZpZ30gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGNvbmZpZzogUnJkQ29uZmlnID0ge1xuXHRjaGVja2JveGVzOiB7fSxcblx0b3RoZXJzOiB7fSxcbn07XG5cbmNvbnN0IHVwZGF0ZUNvbmZpZyA9ICgpOiB2b2lkID0+IHtcblx0Y29uc3QgY2hlY2tCb3hlczogUnJkQ29uZmlnWydjaGVja2JveGVzJ10gPSB7fTtcblxuXHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignI3JyZF9faGlkZS1jb250ZW50Jyk/LmNoZWNrZWQpIHtcblx0XHRjaGVja0JveGVzLnJyZEhpZGVDb250ZW50ID0gdHJ1ZTtcblx0fVxuXHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignI3JyZF9faGlkZS11c2VybmFtZScpPy5jaGVja2VkKSB7XG5cdFx0Y2hlY2tCb3hlcy5ycmRIaWRlVXNlcm5hbWUgPSB0cnVlO1xuXHR9XG5cdGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxJbnB1dEVsZW1lbnQ+KCcjcnJkX19oaWRlLXN1bW1hcnknKT8uY2hlY2tlZCkge1xuXHRcdGNoZWNrQm94ZXMucnJkSGlkZVN1bW1hcnkgPSB0cnVlO1xuXHR9XG5cblx0Y29uZmlnLmNoZWNrYm94ZXMgPSBjaGVja0JveGVzO1xuXG5cdGNvbnN0IG90aGVyczogUnJkQ29uZmlnWydvdGhlcnMnXSA9IHt9O1xuXG5cdGNvbnN0IHJlYXNvbklucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTElucHV0RWxlbWVudD4oJyNycmRfX3JlYXNvbicpO1xuXHRjb25zdCBvdGhlclJlYXNvbnNJbnB1dDogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxJbnB1dEVsZW1lbnQ+KCcjcnJkX19vdGhlci1yZWFzb25zJyk7XG5cdGlmIChyZWFzb25JbnB1dCkge1xuXHRcdG90aGVycy5ycmRSZWFzb24gPSByZWFzb25JbnB1dC52YWx1ZTtcblx0fVxuXHRpZiAob3RoZXJSZWFzb25zSW5wdXQpIHtcblx0XHRvdGhlcnMucnJkT3RoZXJSZWFzb25zID0gb3RoZXJSZWFzb25zSW5wdXQudmFsdWU7XG5cdH1cblxuXHRjb25maWcub3RoZXJzID0gb3RoZXJzO1xufTtcblxuZXhwb3J0IHtjb25maWcsIHVwZGF0ZUNvbmZpZ307XG4iLCAiaW1wb3J0ICcuL0RpYWxvZ0lubmVyLmxlc3MnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ2V4dC5nYWRnZXQuUmVhY3QnO1xuaW1wb3J0IHtnZXRNZXNzYWdlfSBmcm9tICcuLi9tb2R1bGVzL2kxOG4nO1xuaW1wb3J0IHtpc1NwZWNpYWxMb2d9IGZyb20gJy4uL21vZHVsZXMvaXNTcGVjaWFsTG9nJztcblxuY29uc3QgRGlhbG9nSW5uZXIgPSAoKSA9PiAoXG5cdDxkaXYgaWQ9XCJycmRfX2NvbmZpZ1wiPlxuXHRcdHtnZXRNZXNzYWdlKCdoaWRlSXRlbXMnKX1cblx0XHQ8YnIgLz5cblx0XHQ8ZGl2IGNsYXNzTmFtZT1cInJyZF9fY29udGVudC13cmFwcGVyXCI+XG5cdFx0XHQ8aW5wdXQgbmFtZT1cImNvbnRlbnRcIiBpZD1cInJyZF9faGlkZS1jb250ZW50XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJjb250ZW50XCIgY2hlY2tlZCAvPlxuXHRcdFx0PGxhYmVsIGh0bWxGb3I9XCJycmRfX2hpZGUtY29udGVudFwiIGlkPVwicnJkLWNvbnRlbnRcIj5cblx0XHRcdFx0e2lzU3BlY2lhbExvZygpID8gZ2V0TWVzc2FnZSgnaGlkZUxvZycpIDogZ2V0TWVzc2FnZSgnaGlkZUNvbnRlbnQnKX1cblx0XHRcdDwvbGFiZWw+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzc05hbWU9XCJycmRfX2NvbnRlbnQtd3JhcHBlclwiPlxuXHRcdFx0PGlucHV0IG5hbWU9XCJ1c2VybmFtZVwiIGlkPVwicnJkX19oaWRlLXVzZXJuYW1lXCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ1c2VybmFtZVwiIC8+XG5cdFx0XHQ8bGFiZWwgaHRtbEZvcj1cInJyZF9faGlkZS11c2VybmFtZVwiIGlkPVwicnJkLXVzZXJuYW1lXCI+XG5cdFx0XHRcdHtnZXRNZXNzYWdlKCdoaWRlVXNlcm5hbWUnKX1cblx0XHRcdDwvbGFiZWw+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzc05hbWU9XCJycmRfX2NvbnRlbnQtd3JhcHBlclwiPlxuXHRcdFx0PGlucHV0IG5hbWU9XCJzdW1tYXJ5XCIgaWQ9XCJycmRfX2hpZGUtc3VtbWFyeVwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwic3VtbWFyeVwiIC8+XG5cdFx0XHQ8bGFiZWwgaHRtbEZvcj1cInJyZF9faGlkZS1zdW1tYXJ5XCIgaWQ9XCJycmQtc3VtbWFyeVwiPlxuXHRcdFx0XHR7Z2V0TWVzc2FnZSgnaGlkZVN1bW1hcnknKX1cblx0XHRcdDwvbGFiZWw+XG5cdFx0PC9kaXY+XG5cdFx0PGJyIC8+XG5cdFx0PGJyIC8+XG5cdFx0e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb24nKX1cblx0XHQ8YnIgLz5cblx0XHQ8c2VsZWN0IG5hbWU9XCJycmRfX3JlYXNvblwiIGlkPVwicnJkX19yZWFzb25cIj5cblx0XHRcdDxvcHRpb24gdmFsdWU9e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDEnKX0+e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDEnKX08L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDInKX0+e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDInKX08L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDMnKX0+e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDMnKX08L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDQnKX0+e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDQnKX08L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDUnKX0+e2dldE1lc3NhZ2UoJ2hpZGVSZWFzb25SRDUnKX08L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9XCJcIj57Z2V0TWVzc2FnZSgnaGlkZVJlYXNvbk90aGVyJyl9PC9vcHRpb24+XG5cdFx0PC9zZWxlY3Q+XG5cdFx0PGJyIC8+XG5cdFx0PGJyIC8+XG5cdFx0e2dldE1lc3NhZ2UoJ290aGVyUmVhc29ucycpfVxuXHRcdDxiciAvPlxuXHRcdDx0ZXh0YXJlYSBuYW1lPVwib3RoZXJSZWFzb25zXCIgaWQ9XCJycmRfX290aGVyLXJlYXNvbnNcIiByb3dzPXs0fT48L3RleHRhcmVhPlxuXHQ8L2Rpdj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IERpYWxvZ0lubmVyO1xuIiwgImNvbnN0IGxvYWRJZHMgPSAoJGJvZHk6IEpRdWVyeTxIVE1MQm9keUVsZW1lbnQ+KTogc3RyaW5nW10gPT4ge1xuXHRjb25zdCBpZHM6IHN0cmluZ1tdID0gW107XG5cblx0Y29uc3QgYm94ZXM6IEpRdWVyeTxIVE1MSW5wdXRFbGVtZW50PiA9ICRib2R5LmZpbmQoJ2lucHV0Jyk7XG5cdGZvciAoY29uc3QgYm94IG9mIGJveGVzKSB7XG5cdFx0Y29uc3Qge2NoZWNrZWQsIG5hbWUsIHR5cGV9ID0gYm94O1xuXG5cdFx0aWYgKHR5cGUgIT09ICdjaGVja2JveCcgfHwgIWNoZWNrZWQpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGlkUmVnZXg6IFJlZ0V4cCA9IC9pZHNcXFsoXFxkKyldLztcblx0XHRjb25zdCBpZEFycmF5OiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gaWRSZWdleC5leGVjKG5hbWUpO1xuXHRcdGlmIChpZEFycmF5Py5bMV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0WywgaWRzW2lkcy5sZW5ndGhdXSA9IGlkQXJyYXk7XG5cdH1cblxuXHRyZXR1cm4gaWRzO1xufTtcblxuZXhwb3J0IHtsb2FkSWRzfTtcbiIsICJpbXBvcnQgKiBhcyBPUFRJT05TIGZyb20gJy4uL29wdGlvbnMuanNvbic7XG5pbXBvcnQge2luaXRNd0FwaX0gZnJvbSAnZXh0LmdhZGdldC5VdGlsJztcblxuY29uc3QgYXBpOiBtdy5BcGkgPSBpbml0TXdBcGkoYFJSRC8ke09QVElPTlMudmVyc2lvbn1gKTtcblxuZXhwb3J0IHthcGl9O1xuIiwgImltcG9ydCAqIGFzIE9QVElPTlMgZnJvbSAnLi4vb3B0aW9ucy5qc29uJztcbmltcG9ydCB7YXBpfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge2dldE1lc3NhZ2V9IGZyb20gJy4vaTE4bic7XG5pbXBvcnQge3VuaXF1ZUFycmF5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG5jb25zdCBxdWVyeVJldmlzaW9ucyA9IGFzeW5jICh0aXRsZXM6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB7XG5cdGNvbnN0IHBhcmFtczogQXBpUXVlcnlSZXZpc2lvbnNQYXJhbXMgPSB7XG5cdFx0dGl0bGVzLFxuXHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRmb3JtYXR2ZXJzaW9uOiAnMicsXG5cdFx0cHJvcDogJ3JldmlzaW9ucycsXG5cdFx0cnZwcm9wOiAnY29udGVudCcsXG5cdH07XG5cdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLmdldChwYXJhbXMpO1xuXG5cdHJldHVybiByZXNwb25zZTtcbn07XG5cbmNvbnN0IGVkaXQgPSBhc3luYyAodGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nLCBzdW1tYXJ5Pzogc3RyaW5nKSA9PiB7XG5cdGNvbnN0IHBhcmFtczogQXBpRWRpdFBhZ2VQYXJhbXMgPSB7XG5cdFx0dGl0bGUsXG5cdFx0dGV4dCxcblx0XHRhY3Rpb246ICdlZGl0Jyxcblx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRmb3JtYXR2ZXJzaW9uOiAnMicsXG5cdH07XG5cdGlmIChzdW1tYXJ5KSB7XG5cdFx0cGFyYW1zLnN1bW1hcnkgPSBzdW1tYXJ5O1xuXHR9XG5cdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLnBvc3RXaXRoRWRpdFRva2VuKHBhcmFtcyk7XG5cblx0cmV0dXJuIHJlc3BvbnNlO1xufTtcblxuY29uc3Qgc3VibWl0ID0gYXN5bmMgKGlkczogc3RyaW5nW10sIHRvSGlkZTogc3RyaW5nLCByZWFzb246IHN0cmluZywgb3RoZXJSZWFzb25zOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0Y29uc3Qge3dnUGFnZU5hbWV9ID0gbXcuY29uZmlnLmdldCgpO1xuXG5cdGNvbnN0IHJyZEFycjogc3RyaW5nW10gPSBbXG5cdFx0J3t7UmV2ZGVsJyxcblx0XHQnfHN0YXR1cyA9ICcsXG5cdFx0YHxhcnRpY2xlID0gJHt3Z1BhZ2VOYW1lfWAsXG5cdFx0YHxzZXQgPSAke3RvSGlkZX1gLFxuXHRcdGB8cmVhc29uID0gJHtyZWFzb259JHtvdGhlclJlYXNvbnN9YCxcblx0XTtcblxuXHRmb3IgKGNvbnN0IFtpbmRleCwgaWRdIG9mIHVuaXF1ZUFycmF5KGlkcykuZW50cmllcygpKSB7XG5cdFx0Ly8gUmVwbGFjZSBgWy4uLm5ldyBTZXQoKV1gIHRvIGF2b2lkIHBvbHlmaWxsaW5nIGNvcmUtanNcblx0XHRycmRBcnJbcnJkQXJyLmxlbmd0aF0gPSBgfGlkJHtpbmRleCArIDF9ID0gJHtpZH1gO1xuXHR9XG5cdHJyZEFycltycmRBcnIubGVuZ3RoXSA9ICd9fVxcbi0tfn4nLmNvbmNhdCgnfn4nKTtcblxuXHR0cnkge1xuXHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcXVlcnlSZXZpc2lvbnMoT1BUSU9OUy5ycmRQYWdlKTtcblxuXHRcdGxldCBjb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHJlc3BvbnNlWydxdWVyeSddPy5wYWdlcykge1xuXHRcdFx0Y29udGVudCA9IHJlc3BvbnNlWydxdWVyeSddLnBhZ2VzWzBdLnJldmlzaW9uc1swXS5jb250ZW50IGFzIHN0cmluZztcblx0XHR9XG5cblx0XHRpZiAoY29udGVudCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeShgRXJyb3Igd2hlbiBsb2FkaW5nIHBhZ2UgJHtPUFRJT05TLnJyZFBhZ2V9OiBtaXNzaW5nYCwge1xuXHRcdFx0XHR0YWc6ICdSUkQnLFxuXHRcdFx0XHR0eXBlOiAnZXJyb3InLFxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgZWRpdChPUFRJT05TLnJyZFBhZ2UsIGAke2NvbnRlbnR9XFxuXFxuJHtycmRBcnIuam9pbignXFxuJyl9YCwgZ2V0TWVzc2FnZSgnZWRpdFN1bW1hcnknKSk7XG5cblx0XHRcdGlmIChyZXN1bHRbJ2VkaXQnXT8ucmVzdWx0ID09PSAnU3VjY2VzcycpIHtcblx0XHRcdFx0bG9jYXRpb24ucmVwbGFjZShtdy51dGlsLmdldFVybChPUFRJT05TLnJyZFBhZ2UpKTtcblx0XHRcdH0gZWxzZSBpZiAocmVzdWx0WydlcnJvciddPy5jb2RlKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBTb21lIGVycm9ycyBvY2N1cmVkIHdoaWxlIHNhdmluZyBwYWdlOiAke3Jlc3VsdFsnZXJyb3InXS5jb2RlfWAsIHtcblx0XHRcdFx0XHR0YWc6ICdSUkQnLFxuXHRcdFx0XHRcdHR5cGU6ICdlcnJvcicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoJ1NvbWUgZXJyb3JzIG9jY3VyZWQgd2hpbGUgc2F2aW5nIHBhZ2U6IHVua25vd24nLCB7XG5cdFx0XHRcdFx0dGFnOiAnUlJEJyxcblx0XHRcdFx0XHR0eXBlOiAnZXJyb3InLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KGBFcnJvciB3aGVuIGVkaXRpbmcgcGFnZSAke09QVElPTlMucnJkUGFnZX1gLCB7dGFnOiAnUlJEJywgdHlwZTogJ2Vycm9yJ30pO1xuXHRcdH1cblx0fSBjYXRjaCB7XG5cdFx0dm9pZCBtdy5ub3RpZnkoYEVycm9yIHdoZW4gbG9hZGluZyBwYWdlICR7T1BUSU9OUy5ycmRQYWdlfWAsIHt0YWc6ICdSUkQnLCB0eXBlOiAnZXJyb3InfSk7XG5cdH1cbn07XG5cbmV4cG9ydCB7c3VibWl0fTtcbiIsICJpbXBvcnQge2NvbmZpZywgdXBkYXRlQ29uZmlnfSBmcm9tICcuL3JyZENvbmZpZyc7XG5pbXBvcnQgRGlhbG9nSW5uZXIgZnJvbSAnLi4vY29tcG9uZW50cy9EaWFsb2dJbm5lcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAnZXh0LmdhZGdldC5SZWFjdCc7XG5pbXBvcnQge2dldE1lc3NhZ2V9IGZyb20gJy4vaTE4bic7XG5pbXBvcnQge2lzU3BlY2lhbExvZ30gZnJvbSAnLi9pc1NwZWNpYWxMb2cnO1xuaW1wb3J0IHtsb2FkSWRzfSBmcm9tICcuL2xvYWRJZHMnO1xuaW1wb3J0IHtzdWJtaXR9IGZyb20gJy4vc3VibWl0JztcblxubGV0ICRkaWFsb2c6IEpRdWVyeSB8IHVuZGVmaW5lZDtcblxuY29uc3Qgc2hvd0RpYWxvZyA9ICgkYm9keTogSlF1ZXJ5PEhUTUxCb2R5RWxlbWVudD4pOiB2b2lkID0+IHtcblx0Y29uc3QgaWRzOiBzdHJpbmdbXSA9IGxvYWRJZHMoJGJvZHkpO1xuXHRpZiAoIWlkcy5sZW5ndGgpIHtcblx0XHR2b2lkIG13Lm5vdGlmeShnZXRNZXNzYWdlKCdlcnJOb1JldmlzaW9uUHJvdmlkZWQnKSwge1xuXHRcdFx0dGFnOiAnUlJEJyxcblx0XHRcdHR5cGU6ICdlcnJvcicsXG5cdFx0fSk7XG5cblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBkaWFsb2c6IFJlYWN0LlJlYWN0RWxlbWVudCA9IERpYWxvZ0lubmVyKCk7XG5cdGlmICgkZGlhbG9nKSB7XG5cdFx0JGRpYWxvZy5odG1sKGRpYWxvZykuZGlhbG9nKCdvcGVuJyk7XG5cblx0XHRmb3IgKGNvbnN0IFtpZCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5vdGhlcnMpKSB7XG5cdFx0XHQkYm9keS5maW5kKGAjJHtpZH1gKS52YWwodmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBbaWQsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb25maWcuY2hlY2tib3hlcykpIHtcblx0XHRcdGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHQkYm9keS5maW5kKGAjJHtpZH1gKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0JGRpYWxvZyA9ICQoZGlhbG9nKS5kaWFsb2coe1xuXHRcdHRpdGxlOiBnZXRNZXNzYWdlKCdkaWFsb2dUaXRsZScpLFxuXHRcdG1pbldpZHRoOiA1MTUsXG5cdFx0bWluSGVpZ2h0OiAxNTAsXG5cdFx0Y2xvc2U6IHVwZGF0ZUNvbmZpZyxcblx0XHRidXR0b25zOiBbXG5cdFx0XHR7XG5cdFx0XHRcdHRleHQ6IGdldE1lc3NhZ2UoJ2RpYWxvZ0J1dHRvblN1Ym1pdCcpLFxuXHRcdFx0XHRjbGljaygpOiB2b2lkIHtcblx0XHRcdFx0XHQkKHRoaXMpLmRpYWxvZygnY2xvc2UnKTtcblxuXHRcdFx0XHRcdGNvbnN0IHtcblx0XHRcdFx0XHRcdGNoZWNrYm94ZXM6IHtycmRIaWRlQ29udGVudCwgcnJkSGlkZVVzZXJuYW1lLCBycmRIaWRlU3VtbWFyeX0sXG5cdFx0XHRcdFx0XHRvdGhlcnM6IHtycmRSZWFzb259LFxuXHRcdFx0XHRcdH0gPSBjb25maWc7XG5cblx0XHRcdFx0XHRsZXQge3JyZE90aGVyUmVhc29uc30gPSBjb25maWcub3RoZXJzO1xuXHRcdFx0XHRcdGlmIChycmRPdGhlclJlYXNvbnMgJiYgcnJkUmVhc29uKSB7XG5cdFx0XHRcdFx0XHRycmRPdGhlclJlYXNvbnMgPSBg77yMJHtycmRPdGhlclJlYXNvbnN9YDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB0b0hpZGU6IHN0cmluZ1tdID0gW107XG5cdFx0XHRcdFx0aWYgKHJyZEhpZGVDb250ZW50KSB7XG5cdFx0XHRcdFx0XHR0b0hpZGVbdG9IaWRlLmxlbmd0aF0gPSBpc1NwZWNpYWxMb2coKSA/IGdldE1lc3NhZ2UoJ2hpZGVMb2cnKSA6IGdldE1lc3NhZ2UoJ2hpZGVDb250ZW50Jyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChycmRIaWRlVXNlcm5hbWUpIHtcblx0XHRcdFx0XHRcdHRvSGlkZVt0b0hpZGUubGVuZ3RoXSA9IGdldE1lc3NhZ2UoJ2hpZGVVc2VybmFtZScpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocnJkSGlkZVN1bW1hcnkpIHtcblx0XHRcdFx0XHRcdHRvSGlkZVt0b0hpZGUubGVuZ3RoXSA9IGdldE1lc3NhZ2UoJ2hpZGVTdW1tYXJ5Jyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCF0b0hpZGUubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeShnZXRNZXNzYWdlKCdlcnJOb0l0ZW1Qcm92aWRlZCcpLCB7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1JSRCcsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdlcnJvcicsXG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGxldCBjb250OiBib29sZWFuID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAoIXJyZFJlYXNvbiAmJiAhcnJkT3RoZXJSZWFzb25zKSB7XG5cdFx0XHRcdFx0XHRjb250ID0gY29uZmlybShnZXRNZXNzYWdlKCd3YXJuTm9SZWFzb25Qcm92aWRlZCcpKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoY29udCkge1xuXHRcdFx0XHRcdFx0dm9pZCBzdWJtaXQoaWRzLCB0b0hpZGUuam9pbign44CBJyksIHJyZFJlYXNvbiA/PyAnJywgcnJkT3RoZXJSZWFzb25zID8/ICcnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHR0ZXh0OiBnZXRNZXNzYWdlKCdkaWFsb2dCdXR0b25DYW5jZWwnKSxcblx0XHRcdFx0Y2xpY2soKTogdm9pZCB7XG5cdFx0XHRcdFx0JCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH0pO1xufTtcblxuZXhwb3J0IHtzaG93RGlhbG9nfTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNDLElBQUFBLFVBQVc7QUFDWCxJQUFBQyxVQUFXOztBQ0RaLElBQUFDLG9CQUFrQkMsUUFBQUMsUUFBQSxrQkFBQSxHQUFBLENBQUE7O0FDRGxCLElBQU1DLGtCQUFrQkEsTUFBTTtBQUM3QixRQUFNO0lBQUNDO0VBQUssSUFBSUM7QUFDaEIsU0FBTztJQUNOQyxhQUFhRixNQUNaLDJDQUNBLHlDQUNEO0lBQ0FHLHVCQUF1QkgsTUFBTSxnQkFBZ0IsY0FBYztJQUMzREksbUJBQW1CSixNQUFNLGdCQUFnQixjQUFjO0lBQ3ZESyxzQkFBc0JMLE1BQU0scUJBQXFCLG1CQUFtQjtJQUNwRU0sV0FBV04sTUFBTSxXQUFXLFNBQVM7SUFDckNPLGFBQWFQLE1BQU0sUUFBUSxNQUFNO0lBQ2pDUSxTQUFTUixNQUFNLFdBQVcsU0FBUztJQUNuQ1MsY0FBY1QsTUFBTSxlQUFlLGFBQWE7SUFDaERVLGFBQWFWLE1BQU0sUUFBUSxNQUFNO0lBQ2pDVyxZQUFZWCxNQUFNLE9BQU8sS0FBSztJQUM5QlksZUFBZVosTUFBTSxxQkFBcUIsbUJBQW1CO0lBQzdEYSxlQUFlYixNQUFNLHFCQUFxQixtQkFBbUI7SUFDN0RjLGVBQWVk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LEdBQ0E7TUFDQ3RELE1BQU1qRixXQUFXLG9CQUFvQjtNQUNyQ29JLFFBQWM7QUFDYkwsVUFBRSxJQUFJLEVBQUVSLE9BQU8sT0FBTztNQUN2QjtJQUNELENBQUE7RUFFRixDQUFDO0FBQ0Y7O0FONUZBLE1BQUEsR0FBS3hHLG1CQUFBeUgsU0FBUSxFQUFFQyxLQUFLLFNBQVNDLElBQUloRyxPQUFzQztBQUN0RSxRQUFNO0lBQUNpRztJQUFVeEk7RUFBMEIsSUFBSUMsR0FBR0MsT0FBT0MsSUFBSTtBQUU3RCxNQUFJcUksYUFBYSxhQUFheEksK0JBQStCLE9BQU87QUFBQSxRQUFBeUksYUFBQTdGLDJCQUM3Q0wsTUFBTUcsS0FDM0IsQ0FDQyw0REFDQSx5REFBQSxFQUNDOEQsS0FBSyxHQUFHLENBQ1gsQ0FBQSxHQUFBa0M7QUFBQSxRQUFBO0FBTEEsV0FBQUQsV0FBQTNGLEVBQUEsR0FBQSxFQUFBNEYsU0FBQUQsV0FBQTFGLEVBQUEsR0FBQUMsUUFLRztBQUFBLGNBTFEyRixVQUFBRCxPQUFBN0c7QUFNVjhHLGdCQUFRQyxNQUNQakkscUJBQWE7VUFDWk4sU0FBU0EsTUFBWTtBQUNwQjhHLHVCQUFXNUUsS0FBSztVQUNqQjtRQUNELENBQUMsQ0FDRjtNQUNEO0lBQUEsU0FBQWUsS0FBQTtBQUFBbUYsaUJBQUFsRixFQUFBRCxHQUFBO0lBQUEsVUFBQTtBQUFBbUYsaUJBQUFqRixFQUFBO0lBQUE7RUFDRDtBQUNELENBQUM7IiwKICAibmFtZXMiOiBbInJyZFBhZ2UiLCAidmVyc2lvbiIsICJpbXBvcnRfZXh0X2dhZGdldCIsICJfX3RvRVNNIiwgInJlcXVpcmUiLCAiZ2V0STE4bk1lc3NhZ2VzIiwgIndnVUxTIiwgIndpbmRvdyIsICJlZGl0U3VtbWFyeSIsICJlcnJOb1JldmlzaW9uUHJvdmlkZWQiLCAiZXJyTm9JdGVtUHJvdmlkZWQiLCAid2Fybk5vUmVhc29uUHJvdmlkZWQiLCAiaGlkZUl0ZW1zIiwgImhpZGVDb250ZW50IiwgImhpZGVMb2ciLCAiaGlkZVVzZXJuYW1lIiwgImhpZGVTdW1tYXJ5IiwgImhpZGVSZWFzb24iLCAiaGlkZVJlYXNvblJEMSIsICJoaWRlUmVhc29uUkQyIiwgImhpZGVSZWFzb25SRDMiLCAiaGlkZVJlYXNvblJENCIsICJoaWRlUmVhc29uUkQ1IiwgImhpZGVSZWFzb25PdGhlciIsICJvdGhlclJlYXNvbnMiLCAiZGlhbG9nVGl0bGUiLCAiZGlhbG9nQnV0dG9uU3VibWl0IiwgImRpYWxvZ0J1dHRvbkNhbmNlbCIsICJyZXBvcnRCdXR0b25UaXRsZSIsICJyZXBvcnRCdXR0b25UZXh0IiwgInJlcG9ydEJ1dHRvbkxvZ1RleHQiLCAiaTE4bk1lc3NhZ2VzIiwgImdldE1lc3NhZ2UiLCAia2V5IiwgImlzU3BlY2lhbExvZyIsICJ3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZSIsICJtdyIsICJjb25maWciLCAiZ2V0IiwgIlJlcG9ydEJ1dHRvbiIsICJvbkNsaWNrIiwgImRlZmF1bHQiLCAiY3JlYXRlRWxlbWVudCIsICJ0eXBlIiwgImNsYXNzTmFtZSIsICJ0aXRsZSIsICJSZXBvcnRCdXR0b25fZGVmYXVsdCIsICJpbXBvcnRfZXh0X2dhZGdldDUiLCAiY2hlY2tib3hlcyIsICJvdGhlcnMiLCAidXBkYXRlQ29uZmlnIiwgIl9kb2N1bWVudCRxdWVyeVNlbGVjdCIsICJfZG9jdW1lbnQkcXVlcnlTZWxlY3QyIiwgIl9kb2N1bWVudCRxdWVyeVNlbGVjdDMiLCAiY2hlY2tCb3hlcyIsICJkb2N1bWVudCIsICJxdWVyeVNlbGVjdG9yIiwgImNoZWNrZWQiLCAicnJkSGlkZUNvbnRlbnQiLCAicnJkSGlkZVVzZXJuYW1lIiwgInJyZEhpZGVTdW1tYXJ5IiwgInJlYXNvbklucHV0IiwgIm90aGVyUmVhc29uc0lucHV0IiwgInJyZFJlYXNvbiIsICJ2YWx1ZSIsICJycmRPdGhlclJlYXNvbnMiLCAiaW1wb3J0X2V4dF9nYWRnZXQyIiwgIkRpYWxvZ0lubmVyIiwgImlkIiwgIm5hbWUiLCAiaHRtbEZvciIsICJyb3dzIiwgIkRpYWxvZ0lubmVyX2RlZmF1bHQiLCAibG9hZElkcyIsICIkYm9keSIsICJpZHMiLCAiYm94ZXMiLCAiZmluZCIsICJfaXRlcmF0b3IyIiwgIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwgIl9zdGVwMiIsICJzIiwgIm4iLCAiZG9uZSIsICJib3giLCAiaWRSZWdleCIsICJpZEFycmF5IiwgImV4ZWMiLCAibGVuZ3RoIiwgImVyciIsICJlIiwgImYiLCAiaW1wb3J0X2V4dF9nYWRnZXQzIiwgImFwaSIsICJpbml0TXdBcGkiLCAiY29uY2F0IiwgImltcG9ydF9leHRfZ2FkZ2V0NCIsICJxdWVyeVJldmlzaW9ucyIsICJfcmVmIiwgIl9hc3luY1RvR2VuZXJhdG9yIiwgInRpdGxlcyIsICJwYXJhbXMiLCAiYWN0aW9uIiwgImZvcm1hdCIsICJmb3JtYXR2ZXJzaW9uIiwgInByb3AiLCAicnZwcm9wIiwgInJlc3BvbnNlIiwgIl94IiwgImFwcGx5IiwgImFyZ3VtZW50cyIsICJlZGl0IiwgIl9yZWYyIiwgInRleHQiLCAic3VtbWFyeSIsICJwb3N0V2l0aEVkaXRUb2tlbiIsICJfeDIiLCAiX3gzIiwgIl94NCIsICJzdWJtaXQiLCAiX3JlZjMiLCAidG9IaWRlIiwgInJlYXNvbiIsICJ3Z1BhZ2VOYW1lIiwgInJyZEFyciIsICJfaXRlcmF0b3IzIiwgInVuaXF1ZUFycmF5IiwgImVudHJpZXMiLCAiX3N0ZXAzIiwgImluZGV4IiwgIl9yZXNwb25zZSRxdWVyeSIsICJjb250ZW50IiwgInBhZ2VzIiwgInJldmlzaW9ucyIsICJub3RpZnkiLCAidGFnIiwgIl9yZXN1bHQkZWRpdCIsICJfcmVzdWx0JGVycm9yIiwgInJlc3VsdCIsICJqb2luIiwgImxvY2F0aW9uIiwgInJlcGxhY2UiLCAidXRpbCIsICJnZXRVcmwiLCAiY29kZSIsICJfeDUiLCAiX3g2IiwgIl94NyIsICJfeDgiLCAiJGRpYWxvZyIsICJzaG93RGlhbG9nIiwgImRpYWxvZyIsICJodG1sIiwgIl9pIiwgIl9PYmplY3QkZW50cmllcyIsICJPYmplY3QiLCAidmFsIiwgIl9pMiIsICJfT2JqZWN0JGVudHJpZXMyIiwgIiQiLCAibWluV2lkdGgiLCAibWluSGVpZ2h0IiwgImNsb3NlIiwgImJ1dHRvbnMiLCAiY2xpY2siLCAiY29udCIsICJjb25maXJtIiwgIl9ycmRPdGhlclJlYXNvbnMiLCAiZ2V0Qm9keSIsICJ0aGVuIiwgInJyZCIsICJ3Z0FjdGlvbiIsICJfaXRlcmF0b3I0IiwgIl9zdGVwNCIsICJlbGVtZW50IiwgImFmdGVyIl0KfQo= diff --git a/dist/Tippy/Tippy.js b/dist/Tippy/Tippy.js index d86d17a5f..a104d1b18 100644 --- a/dist/Tippy/Tippy.js +++ b/dist/Tippy/Tippy.js @@ -50,9 +50,9 @@ var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/global.js -var require_global = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/global.js"(exports2, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/global-this.js +var require_global_this = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/global-this.js"(exports2, module2) { "use strict"; var check = function(it) { return it && it.Math === Math && it; @@ -66,9 +66,9 @@ var require_global = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/fails.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/fails.js var require_fails = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/fails.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/fails.js"(exports2, module2) { "use strict"; module2.exports = function(exec) { try { @@ -80,9 +80,9 @@ var require_fails = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/descriptors.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/descriptors.js var require_descriptors = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/descriptors.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/descriptors.js"(exports2, module2) { "use strict"; var fails = require_fails(); module2.exports = !fails(function() { @@ -93,9 +93,9 @@ var require_descriptors = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-bind-native.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-bind-native.js var require_function_bind_native = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-bind-native.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-bind-native.js"(exports2, module2) { "use strict"; var fails = require_fails(); module2.exports = !fails(function() { @@ -106,9 +106,9 @@ var require_function_bind_native = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-call.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-call.js var require_function_call = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-call.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-call.js"(exports2, module2) { "use strict"; var NATIVE_BIND = require_function_bind_native(); var call = Function.prototype.call; @@ -118,9 +118,9 @@ var require_function_call = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-property-is-enumerable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-property-is-enumerable.js var require_object_property_is_enumerable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-property-is-enumerable.js"(exports2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-property-is-enumerable.js"(exports2) { "use strict"; var $propertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; @@ -132,9 +132,9 @@ var require_object_property_is_enumerable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-property-descriptor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-property-descriptor.js var require_create_property_descriptor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-property-descriptor.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-property-descriptor.js"(exports2, module2) { "use strict"; module2.exports = function(bitmap, value) { return { @@ -147,9 +147,9 @@ var require_create_property_descriptor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this.js var require_function_uncurry_this = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this.js"(exports2, module2) { "use strict"; var NATIVE_BIND = require_function_bind_native(); var FunctionPrototype = Function.prototype; @@ -163,9 +163,9 @@ var require_function_uncurry_this = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof-raw.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof-raw.js var require_classof_raw = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof-raw.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof-raw.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var toString = uncurryThis({}.toString); @@ -176,9 +176,9 @@ var require_classof_raw = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/indexed-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/indexed-object.js var require_indexed_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/indexed-object.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/indexed-object.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var fails = require_fails(); @@ -193,9 +193,9 @@ var require_indexed_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-null-or-undefined.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-null-or-undefined.js var require_is_null_or_undefined = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-null-or-undefined.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-null-or-undefined.js"(exports2, module2) { "use strict"; module2.exports = function(it) { return it === null || it === void 0; @@ -203,9 +203,9 @@ var require_is_null_or_undefined = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/require-object-coercible.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/require-object-coercible.js var require_require_object_coercible = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/require-object-coercible.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/require-object-coercible.js"(exports2, module2) { "use strict"; var isNullOrUndefined = require_is_null_or_undefined(); var $TypeError = TypeError; @@ -216,9 +216,9 @@ var require_require_object_coercible = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-indexed-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-indexed-object.js var require_to_indexed_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-indexed-object.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-indexed-object.js"(exports2, module2) { "use strict"; var IndexedObject = require_indexed_object(); var requireObjectCoercible = require_require_object_coercible(); @@ -228,9 +228,9 @@ var require_to_indexed_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-callable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-callable.js var require_is_callable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-callable.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-callable.js"(exports2, module2) { "use strict"; var documentAll = typeof document == "object" && document.all; module2.exports = typeof documentAll == "undefined" && documentAll !== void 0 ? function(argument) { @@ -241,9 +241,9 @@ var require_is_callable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-object.js var require_is_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-object.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-object.js"(exports2, module2) { "use strict"; var isCallable = require_is_callable(); module2.exports = function(it) { @@ -252,46 +252,49 @@ var require_is_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in.js var require_get_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-built-in.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isCallable = require_is_callable(); var aFunction = function(argument) { return isCallable(argument) ? argument : void 0; }; module2.exports = function(namespace, method) { - return arguments.length < 2 ? aFunction(global2[namespace]) : global2[namespace] && global2[namespace][method]; + return arguments.length < 2 ? aFunction(globalThis2[namespace]) : globalThis2[namespace] && globalThis2[namespace][method]; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-is-prototype-of.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-is-prototype-of.js var require_object_is_prototype_of = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-is-prototype-of.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-is-prototype-of.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); module2.exports = uncurryThis({}.isPrototypeOf); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-user-agent.js -var require_engine_user_agent = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-user-agent.js"(exports2, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-user-agent.js +var require_environment_user_agent = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-user-agent.js"(exports2, module2) { "use strict"; - module2.exports = typeof navigator != "undefined" && String(navigator.userAgent) || ""; + var globalThis2 = require_global_this(); + var navigator2 = globalThis2.navigator; + var userAgent = navigator2 && navigator2.userAgent; + module2.exports = userAgent ? String(userAgent) : ""; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-v8-version.js -var require_engine_v8_version = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-v8-version.js"(exports2, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-v8-version.js +var require_environment_v8_version = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-v8-version.js"(exports2, module2) { "use strict"; - var global2 = require_global(); - var userAgent = require_engine_user_agent(); - var process = global2.process; - var Deno = global2.Deno; + var globalThis2 = require_global_this(); + var userAgent = require_environment_user_agent(); + var process = globalThis2.process; + var Deno = globalThis2.Deno; var versions = process && process.versions || Deno && Deno.version; var v8 = versions && versions.v8; var match; @@ -311,14 +314,14 @@ var require_engine_v8_version = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/symbol-constructor-detection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/symbol-constructor-detection.js var require_symbol_constructor_detection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/symbol-constructor-detection.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/symbol-constructor-detection.js"(exports2, module2) { "use strict"; - var V8_VERSION = require_engine_v8_version(); + var V8_VERSION = require_environment_v8_version(); var fails = require_fails(); - var global2 = require_global(); - var $String = global2.String; + var globalThis2 = require_global_this(); + var $String = globalThis2.String; module2.exports = !!Object.getOwnPropertySymbols && !fails(function() { var symbol = Symbol("symbol detection"); return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances @@ -327,18 +330,18 @@ var require_symbol_constructor_detection = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/use-symbol-as-uid.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/use-symbol-as-uid.js var require_use_symbol_as_uid = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/use-symbol-as-uid.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/use-symbol-as-uid.js"(exports2, module2) { "use strict"; var NATIVE_SYMBOL = require_symbol_constructor_detection(); module2.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol"; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-symbol.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-symbol.js var require_is_symbol = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-symbol.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-symbol.js"(exports2, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var isCallable = require_is_callable(); @@ -354,9 +357,9 @@ var require_is_symbol = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-to-string.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/try-to-string.js var require_try_to_string = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-to-string.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/try-to-string.js"(exports2, module2) { "use strict"; var $String = String; module2.exports = function(argument) { @@ -369,9 +372,9 @@ var require_try_to_string = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-callable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-callable.js var require_a_callable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-callable.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-callable.js"(exports2, module2) { "use strict"; var isCallable = require_is_callable(); var tryToString = require_try_to_string(); @@ -383,9 +386,9 @@ var require_a_callable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-method.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-method.js var require_get_method = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-method.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-method.js"(exports2, module2) { "use strict"; var aCallable = require_a_callable(); var isNullOrUndefined = require_is_null_or_undefined(); @@ -396,9 +399,9 @@ var require_get_method = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ordinary-to-primitive.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ordinary-to-primitive.js var require_ordinary_to_primitive = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ordinary-to-primitive.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ordinary-to-primitive.js"(exports2, module2) { "use strict"; var call = require_function_call(); var isCallable = require_is_callable(); @@ -414,53 +417,53 @@ var require_ordinary_to_primitive = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-pure.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-pure.js var require_is_pure = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-pure.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-pure.js"(exports2, module2) { "use strict"; module2.exports = false; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-global-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-global-property.js var require_define_global_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-global-property.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-global-property.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var defineProperty = Object.defineProperty; module2.exports = function(key, value) { try { - defineProperty(global2, key, { value, configurable: true, writable: true }); + defineProperty(globalThis2, key, { value, configurable: true, writable: true }); } catch (error) { - global2[key] = value; + globalThis2[key] = value; } return value; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-store.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-store.js var require_shared_store = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-store.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-store.js"(exports2, module2) { "use strict"; var IS_PURE = require_is_pure(); - var globalThis2 = require_global(); + var globalThis2 = require_global_this(); var defineGlobalProperty = require_define_global_property(); var SHARED = "__core-js_shared__"; var store = module2.exports = globalThis2[SHARED] || defineGlobalProperty(SHARED, {}); (store.versions || (store.versions = [])).push({ - version: "3.37.1", + version: "3.38.0", mode: IS_PURE ? "pure" : "global", copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)", - license: "https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE", + license: "https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE", source: "https://github.com/zloirock/core-js" }); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared.js var require_shared = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared.js"(exports2, module2) { "use strict"; var store = require_shared_store(); module2.exports = function(key, value) { @@ -469,9 +472,9 @@ var require_shared = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-object.js var require_to_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-object.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-object.js"(exports2, module2) { "use strict"; var requireObjectCoercible = require_require_object_coercible(); var $Object = Object; @@ -481,9 +484,9 @@ var require_to_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/has-own-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/has-own-property.js var require_has_own_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/has-own-property.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/has-own-property.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var toObject = require_to_object(); @@ -494,9 +497,9 @@ var require_has_own_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/uid.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/uid.js var require_uid = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/uid.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/uid.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var id = 0; @@ -508,17 +511,17 @@ var require_uid = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/well-known-symbol.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/well-known-symbol.js var require_well_known_symbol = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/well-known-symbol.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/well-known-symbol.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var shared = require_shared(); var hasOwn = require_has_own_property(); var uid = require_uid(); var NATIVE_SYMBOL = require_symbol_constructor_detection(); var USE_SYMBOL_AS_UID = require_use_symbol_as_uid(); - var Symbol2 = global2.Symbol; + var Symbol2 = globalThis2.Symbol; var WellKnownSymbolsStore = shared("wks"); var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2["for"] || Symbol2 : Symbol2 && Symbol2.withoutSetter || uid; module2.exports = function(name) { @@ -530,9 +533,9 @@ var require_well_known_symbol = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-primitive.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-primitive.js var require_to_primitive = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-primitive.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-primitive.js"(exports2, module2) { "use strict"; var call = require_function_call(); var isObject = require_is_object(); @@ -558,9 +561,9 @@ var require_to_primitive = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-property-key.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-property-key.js var require_to_property_key = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-property-key.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-property-key.js"(exports2, module2) { "use strict"; var toPrimitive = require_to_primitive(); var isSymbol = require_is_symbol(); @@ -571,13 +574,13 @@ var require_to_property_key = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/document-create-element.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/document-create-element.js var require_document_create_element = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/document-create-element.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/document-create-element.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isObject = require_is_object(); - var document2 = global2.document; + var document2 = globalThis2.document; var EXISTS = isObject(document2) && isObject(document2.createElement); module2.exports = function(it) { return EXISTS ? document2.createElement(it) : {}; @@ -585,9 +588,9 @@ var require_document_create_element = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ie8-dom-define.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ie8-dom-define.js var require_ie8_dom_define = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ie8-dom-define.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ie8-dom-define.js"(exports2, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var fails = require_fails(); @@ -602,9 +605,9 @@ var require_ie8_dom_define = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-descriptor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-descriptor.js var require_object_get_own_property_descriptor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports2) { "use strict"; var DESCRIPTORS = require_descriptors(); var call = require_function_call(); @@ -627,9 +630,9 @@ var require_object_get_own_property_descriptor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/v8-prototype-define-bug.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/v8-prototype-define-bug.js var require_v8_prototype_define_bug = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports2, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var fails = require_fails(); @@ -643,9 +646,9 @@ var require_v8_prototype_define_bug = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/an-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/an-object.js var require_an_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/an-object.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/an-object.js"(exports2, module2) { "use strict"; var isObject = require_is_object(); var $String = String; @@ -657,9 +660,9 @@ var require_an_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-define-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-define-property.js var require_object_define_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-define-property.js"(exports2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-define-property.js"(exports2) { "use strict"; var DESCRIPTORS = require_descriptors(); var IE8_DOM_DEFINE = require_ie8_dom_define(); @@ -703,9 +706,9 @@ var require_object_define_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-non-enumerable-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-non-enumerable-property.js var require_create_non_enumerable_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-non-enumerable-property.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-non-enumerable-property.js"(exports2, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var definePropertyModule = require_object_define_property(); @@ -719,9 +722,9 @@ var require_create_non_enumerable_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-name.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-name.js var require_function_name = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-name.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-name.js"(exports2, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var hasOwn = require_has_own_property(); @@ -739,9 +742,9 @@ var require_function_name = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/inspect-source.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/inspect-source.js var require_inspect_source = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/inspect-source.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/inspect-source.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var isCallable = require_is_callable(); @@ -756,20 +759,20 @@ var require_inspect_source = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/weak-map-basic-detection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/weak-map-basic-detection.js var require_weak_map_basic_detection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/weak-map-basic-detection.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/weak-map-basic-detection.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isCallable = require_is_callable(); - var WeakMap = global2.WeakMap; + var WeakMap = globalThis2.WeakMap; module2.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-key.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-key.js var require_shared_key = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-key.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-key.js"(exports2, module2) { "use strict"; var shared = require_shared(); var uid = require_uid(); @@ -780,20 +783,20 @@ var require_shared_key = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/hidden-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/hidden-keys.js var require_hidden_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/hidden-keys.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/hidden-keys.js"(exports2, module2) { "use strict"; module2.exports = {}; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/internal-state.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/internal-state.js var require_internal_state = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/internal-state.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/internal-state.js"(exports2, module2) { "use strict"; var NATIVE_WEAK_MAP = require_weak_map_basic_detection(); - var global2 = require_global(); + var globalThis2 = require_global_this(); var isObject = require_is_object(); var createNonEnumerableProperty = require_create_non_enumerable_property(); var hasOwn = require_has_own_property(); @@ -801,8 +804,8 @@ var require_internal_state = __commonJS({ var sharedKey = require_shared_key(); var hiddenKeys = require_hidden_keys(); var OBJECT_ALREADY_INITIALIZED = "Object already initialized"; - var TypeError2 = global2.TypeError; - var WeakMap = global2.WeakMap; + var TypeError2 = globalThis2.TypeError; + var WeakMap = globalThis2.WeakMap; var set; var get; var has; @@ -863,9 +866,9 @@ var require_internal_state = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/make-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/make-built-in.js var require_make_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/make-built-in.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/make-built-in.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var fails = require_fails(); @@ -918,9 +921,9 @@ var require_make_built_in = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in.js var require_define_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in.js"(exports2, module2) { "use strict"; var isCallable = require_is_callable(); var definePropertyModule = require_object_define_property(); @@ -953,9 +956,9 @@ var require_define_built_in = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/math-trunc.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/math-trunc.js var require_math_trunc = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/math-trunc.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/math-trunc.js"(exports2, module2) { "use strict"; var ceil = Math.ceil; var floor = Math.floor; @@ -966,9 +969,9 @@ var require_math_trunc = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-integer-or-infinity.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-integer-or-infinity.js var require_to_integer_or_infinity = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-integer-or-infinity.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-integer-or-infinity.js"(exports2, module2) { "use strict"; var trunc = require_math_trunc(); module2.exports = function(argument) { @@ -978,9 +981,9 @@ var require_to_integer_or_infinity = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-absolute-index.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-absolute-index.js var require_to_absolute_index = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-absolute-index.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-absolute-index.js"(exports2, module2) { "use strict"; var toIntegerOrInfinity = require_to_integer_or_infinity(); var max2 = Math.max; @@ -992,9 +995,9 @@ var require_to_absolute_index = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-length.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-length.js var require_to_length = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-length.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-length.js"(exports2, module2) { "use strict"; var toIntegerOrInfinity = require_to_integer_or_infinity(); var min2 = Math.min; @@ -1005,9 +1008,9 @@ var require_to_length = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/length-of-array-like.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/length-of-array-like.js var require_length_of_array_like = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/length-of-array-like.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/length-of-array-like.js"(exports2, module2) { "use strict"; var toLength = require_to_length(); module2.exports = function(obj) { @@ -1016,9 +1019,9 @@ var require_length_of_array_like = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-includes.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-includes.js var require_array_includes = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-includes.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-includes.js"(exports2, module2) { "use strict"; var toIndexedObject = require_to_indexed_object(); var toAbsoluteIndex = require_to_absolute_index(); @@ -1051,9 +1054,9 @@ var require_array_includes = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-keys-internal.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-keys-internal.js var require_object_keys_internal = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-keys-internal.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-keys-internal.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var hasOwn = require_has_own_property(); @@ -1075,9 +1078,9 @@ var require_object_keys_internal = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/enum-bug-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/enum-bug-keys.js var require_enum_bug_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/enum-bug-keys.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/enum-bug-keys.js"(exports2, module2) { "use strict"; module2.exports = [ "constructor", @@ -1091,9 +1094,9 @@ var require_enum_bug_keys = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-names.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-names.js var require_object_get_own_property_names = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-names.js"(exports2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-names.js"(exports2) { "use strict"; var internalObjectKeys = require_object_keys_internal(); var enumBugKeys = require_enum_bug_keys(); @@ -1104,17 +1107,17 @@ var require_object_get_own_property_names = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-symbols.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-symbols.js var require_object_get_own_property_symbols = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-symbols.js"(exports2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-symbols.js"(exports2) { "use strict"; exports2.f = Object.getOwnPropertySymbols; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/own-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/own-keys.js var require_own_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/own-keys.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/own-keys.js"(exports2, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var uncurryThis = require_function_uncurry_this(); @@ -1130,9 +1133,9 @@ var require_own_keys = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/copy-constructor-properties.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/copy-constructor-properties.js var require_copy_constructor_properties = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/copy-constructor-properties.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/copy-constructor-properties.js"(exports2, module2) { "use strict"; var hasOwn = require_has_own_property(); var ownKeys = require_own_keys(); @@ -1152,9 +1155,9 @@ var require_copy_constructor_properties = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-forced.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-forced.js var require_is_forced = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-forced.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-forced.js"(exports2, module2) { "use strict"; var fails = require_fails(); var isCallable = require_is_callable(); @@ -1173,11 +1176,11 @@ var require_is_forced = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/export.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/export.js var require_export = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/export.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/export.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f; var createNonEnumerableProperty = require_create_non_enumerable_property(); var defineBuiltIn = require_define_built_in(); @@ -1190,11 +1193,11 @@ var require_export = __commonJS({ var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { - target = global2; + target = globalThis2; } else if (STATIC) { - target = global2[TARGET] || defineGlobalProperty(TARGET, {}); + target = globalThis2[TARGET] || defineGlobalProperty(TARGET, {}); } else { - target = global2[TARGET] && global2[TARGET].prototype; + target = globalThis2[TARGET] && globalThis2[TARGET].prototype; } if (target) for (key in source) { sourceProperty = source[key]; @@ -1216,9 +1219,9 @@ var require_export = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-helpers.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-helpers.js var require_set_helpers = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-helpers.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-helpers.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var SetPrototype = Set.prototype; @@ -1233,9 +1236,9 @@ var require_set_helpers = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-set.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-set.js var require_a_set = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-set.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-set.js"(exports2, module2) { "use strict"; var has = require_set_helpers().has; module2.exports = function(it) { @@ -1245,9 +1248,9 @@ var require_a_set = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/iterate-simple.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/iterate-simple.js var require_iterate_simple = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/iterate-simple.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/iterate-simple.js"(exports2, module2) { "use strict"; var call = require_function_call(); module2.exports = function(record, fn2, ITERATOR_INSTEAD_OF_RECORD) { @@ -1262,9 +1265,9 @@ var require_iterate_simple = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-iterate.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-iterate.js var require_set_iterate = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-iterate.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-iterate.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var iterateSimple = require_iterate_simple(); @@ -1280,9 +1283,9 @@ var require_set_iterate = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-clone.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-clone.js var require_set_clone = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-clone.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-clone.js"(exports2, module2) { "use strict"; var SetHelpers = require_set_helpers(); var iterate = require_set_iterate(); @@ -1298,9 +1301,9 @@ var require_set_clone = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this-accessor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this-accessor.js var require_function_uncurry_this_accessor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this-accessor.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this-accessor.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var aCallable = require_a_callable(); @@ -1313,9 +1316,9 @@ var require_function_uncurry_this_accessor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-size.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-size.js var require_set_size = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-size.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-size.js"(exports2, module2) { "use strict"; var uncurryThisAccessor = require_function_uncurry_this_accessor(); var SetHelpers = require_set_helpers(); @@ -1325,9 +1328,9 @@ var require_set_size = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-iterator-direct.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-iterator-direct.js var require_get_iterator_direct = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-iterator-direct.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-iterator-direct.js"(exports2, module2) { "use strict"; module2.exports = function(obj) { return { @@ -1339,9 +1342,9 @@ var require_get_iterator_direct = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-set-record.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-set-record.js var require_get_set_record = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-set-record.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-set-record.js"(exports2, module2) { "use strict"; var aCallable = require_a_callable(); var anObject = require_an_object(); @@ -1377,9 +1380,9 @@ var require_get_set_record = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-difference.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-difference.js var require_set_difference = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-difference.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-difference.js"(exports2, module2) { "use strict"; var aSet = require_a_set(); var SetHelpers = require_set_helpers(); @@ -1405,9 +1408,9 @@ var require_set_difference = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-method-accept-set-like.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-method-accept-set-like.js var require_set_method_accept_set_like = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-method-accept-set-like.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-method-accept-set-like.js"(exports2, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var createSetLike = function(size) { @@ -1442,9 +1445,9 @@ var require_set_method_accept_set_like = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.difference.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.difference.v2.js var require_es_set_difference_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.difference.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.difference.v2.js"() { "use strict"; var $ = require_export(); var difference = require_set_difference(); @@ -1455,17 +1458,9 @@ var require_es_set_difference_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.difference.v2.js -var require_esnext_set_difference_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.difference.v2.js"() { - "use strict"; - require_es_set_difference_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-intersection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-intersection.js var require_set_intersection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-intersection.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-intersection.js"(exports2, module2) { "use strict"; var aSet = require_a_set(); var SetHelpers = require_set_helpers(); @@ -1494,9 +1489,9 @@ var require_set_intersection = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.intersection.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.intersection.v2.js var require_es_set_intersection_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.intersection.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.intersection.v2.js"() { "use strict"; var $ = require_export(); var fails = require_fails(); @@ -1511,17 +1506,9 @@ var require_es_set_intersection_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.intersection.v2.js -var require_esnext_set_intersection_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.intersection.v2.js"() { - "use strict"; - require_es_set_intersection_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/iterator-close.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/iterator-close.js var require_iterator_close = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/iterator-close.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/iterator-close.js"(exports2, module2) { "use strict"; var call = require_function_call(); var anObject = require_an_object(); @@ -1548,9 +1535,9 @@ var require_iterator_close = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-disjoint-from.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-disjoint-from.js var require_set_is_disjoint_from = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-disjoint-from.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-disjoint-from.js"(exports2, module2) { "use strict"; var aSet = require_a_set(); var has = require_set_helpers().has; @@ -1573,9 +1560,9 @@ var require_set_is_disjoint_from = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js var require_es_set_is_disjoint_from_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js"() { "use strict"; var $ = require_export(); var isDisjointFrom = require_set_is_disjoint_from(); @@ -1586,17 +1573,9 @@ var require_es_set_is_disjoint_from_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js -var require_esnext_set_is_disjoint_from_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js"() { - "use strict"; - require_es_set_is_disjoint_from_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-subset-of.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-subset-of.js var require_set_is_subset_of = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-subset-of.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-subset-of.js"(exports2, module2) { "use strict"; var aSet = require_a_set(); var size = require_set_size(); @@ -1613,9 +1592,9 @@ var require_set_is_subset_of = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-subset-of.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-subset-of.v2.js var require_es_set_is_subset_of_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-subset-of.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-subset-of.v2.js"() { "use strict"; var $ = require_export(); var isSubsetOf = require_set_is_subset_of(); @@ -1626,17 +1605,9 @@ var require_es_set_is_subset_of_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js -var require_esnext_set_is_subset_of_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js"() { - "use strict"; - require_es_set_is_subset_of_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-superset-of.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-superset-of.js var require_set_is_superset_of = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-superset-of.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-superset-of.js"(exports2, module2) { "use strict"; var aSet = require_a_set(); var has = require_set_helpers().has; @@ -1656,9 +1627,9 @@ var require_set_is_superset_of = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-superset-of.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-superset-of.v2.js var require_es_set_is_superset_of_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-superset-of.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-superset-of.v2.js"() { "use strict"; var $ = require_export(); var isSupersetOf = require_set_is_superset_of(); @@ -1669,17 +1640,9 @@ var require_es_set_is_superset_of_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js -var require_esnext_set_is_superset_of_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js"() { - "use strict"; - require_es_set_is_superset_of_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-symmetric-difference.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-symmetric-difference.js var require_set_symmetric_difference = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-symmetric-difference.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-symmetric-difference.js"(exports2, module2) { "use strict"; var aSet = require_a_set(); var SetHelpers = require_set_helpers(); @@ -1702,9 +1665,9 @@ var require_set_symmetric_difference = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.symmetric-difference.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.symmetric-difference.v2.js var require_es_set_symmetric_difference_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.symmetric-difference.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.symmetric-difference.v2.js"() { "use strict"; var $ = require_export(); var symmetricDifference = require_set_symmetric_difference(); @@ -1715,17 +1678,9 @@ var require_es_set_symmetric_difference_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js -var require_esnext_set_symmetric_difference_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js"() { - "use strict"; - require_es_set_symmetric_difference_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-union.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-union.js var require_set_union = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-union.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-union.js"(exports2, module2) { "use strict"; var aSet = require_a_set(); var add = require_set_helpers().add; @@ -1744,9 +1699,9 @@ var require_set_union = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.union.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.union.v2.js var require_es_set_union_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.union.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.union.v2.js"() { "use strict"; var $ = require_export(); var union = require_set_union(); @@ -1757,22 +1712,14 @@ var require_es_set_union_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.union.v2.js -var require_esnext_set_union_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.union.v2.js"() { - "use strict"; - require_es_set_union_v2(); - } -}); - // dist/Tippy/Tippy.js -require_esnext_set_difference_v2(); -require_esnext_set_intersection_v2(); -require_esnext_set_is_disjoint_from_v2(); -require_esnext_set_is_subset_of_v2(); -require_esnext_set_is_superset_of_v2(); -require_esnext_set_symmetric_difference_v2(); -require_esnext_set_union_v2(); +require_es_set_difference_v2(); +require_es_set_intersection_v2(); +require_es_set_is_disjoint_from_v2(); +require_es_set_is_subset_of_v2(); +require_es_set_is_superset_of_v2(); +require_es_set_symmetric_difference_v2(); +require_es_set_union_v2(); function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { @@ -4411,4 +4358,4 @@ var tippy_esm_default = tippy; /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWhlbHBlcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXNldC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtY2xvbmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc2l6ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1kaXJlY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc2V0LXJlY29yZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1kaWZmZXJlbmNlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LmRpZmZlcmVuY2UudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5kaWZmZXJlbmNlLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWludGVyc2VjdGlvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuaW50ZXJzZWN0aW9uLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuaW50ZXJzZWN0aW9uLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaXMtZGlzam9pbnQtZnJvbS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtZGlzam9pbnQtZnJvbS52Mi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmlzLWRpc2pvaW50LWZyb20udjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaXMtc3Vic2V0LW9mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pcy1zdWJzZXQtb2YudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5pcy1zdWJzZXQtb2YudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaXMtc3VwZXJzZXQtb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LmlzLXN1cGVyc2V0LW9mLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuaXMtc3VwZXJzZXQtb2YudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3ltbWV0cmljLWRpZmZlcmVuY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LnN5bW1ldHJpYy1kaWZmZXJlbmNlLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdW5pb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LnVuaW9uLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQudW5pb24udjIuanMiLCAic3JjL1RpcHB5L1RpcHB5LnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91c2VyQWdlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc0xheW91dFZpZXdwb3J0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy93aXRoaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VCeU5hbWUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvc3JjL2NvbnN0YW50cy50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy91dGlscy50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9kb20tdXRpbHMudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvYmluZEdsb2JhbEV2ZW50TGlzdGVuZXJzLnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvc3JjL2Jyb3dzZXIudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvdmFsaWRhdGlvbi50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9wcm9wcy50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy90ZW1wbGF0ZS50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9jcmVhdGVUaXBweS50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9pbmRleC50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9hZGRvbnMvY3JlYXRlU2luZ2xldG9uLnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvc3JjL2FkZG9ucy9kZWxlZ2F0ZS50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9wbHVnaW5zL2FuaW1hdGVGaWxsLnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvc3JjL3BsdWdpbnMvZm9sbG93Q3Vyc29yLnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvc3JjL3BsdWdpbnMvaW5saW5lUG9zaXRpb25pbmcudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvcGx1Z2lucy9zdGlja3kudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9idWlsZC9iYXNlLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIndXNlIHN0cmljdCc7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZ2xvYmFsLXRoaXMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKSB8fFxuICBjaGVjayh0eXBlb2YgdGhpcyA9PSAnb2JqZWN0JyAmJiB0aGlzKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9PSA3O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgISRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyh7fS50b1N0cmluZyk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBzdHJpbmdTbGljZSh0b1N0cmluZyhpdCksIDgsIC0xKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gISRPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PT0gJ1N0cmluZycgPyBzcGxpdChpdCwgJycpIDogJE9iamVjdChpdCk7XG59IDogJE9iamVjdDtcbiIsICIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXQpKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdFxudmFyIGRvY3VtZW50QWxsID0gdHlwZW9mIGRvY3VtZW50ID09ICdvYmplY3QnICYmIGRvY3VtZW50LmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKSA6IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbC5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxudmFyICRTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnc3ltYm9sIGRldGVjdGlvbicpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIC8vIG5iOiBEbyBub3QgY2FsbCBgU3RyaW5nYCBkaXJlY3RseSB0byBhdm9pZCB0aGlzIGJlaW5nIG9wdGltaXplZCBvdXQgdG8gYHN5bWJvbCsnJ2Agd2hpY2ggd2lsbCxcbiAgLy8gb2YgY291cnNlLCBmYWlsLlxuICByZXR1cm4gISRTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdPYmplY3QnO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQoZnVuYykgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgT3JkaW5hcnlUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAocHJlZiA9PT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpc1tTSEFSRURdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFNIQVJFRCwge30pO1xuXG4oc3RvcmUudmVyc2lvbnMgfHwgKHN0b3JlLnZlcnNpb25zID0gW10pKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMzcuMScsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJyxcbiAgbGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzcuMS9MSUNFTlNFJyxcbiAgc291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiAkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbFsnZm9yJ10gfHwgU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpKSB7XG4gICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKVxuICAgICAgPyBTeW1ib2xbbmFtZV1cbiAgICAgIDogY3JlYXRlV2VsbEtub3duU3ltYm9sKCdTeW1ib2wuJyArIG5hbWUpO1xuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIG9yZGluYXJ5VG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xudmFyIFRPX1BSSU1JVElWRSA9IHdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcblxuLy8gYFRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIGlmICghaXNPYmplY3QoaW5wdXQpIHx8IGlzU3ltYm9sKGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZXhvdGljVG9QcmltID0gZ2V0TWV0aG9kKGlucHV0LCBUT19QUklNSVRJVkUpO1xuICB2YXIgcmVzdWx0O1xuICBpZiAoZXhvdGljVG9QcmltKSB7XG4gICAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdkZWZhdWx0JztcbiAgICByZXN1bHQgPSBjYWxsKGV4b3RpY1RvUHJpbSwgaW5wdXQsIHByZWYpO1xuICAgIGlmICghaXNPYmplY3QocmVzdWx0KSB8fCBpc1N5bWJvbChyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICB9XG4gIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnbnVtYmVyJztcbiAgcmV0dXJuIG9yZGluYXJ5VG9QcmltaXRpdmUoaW5wdXQsIHByZWYpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFua3MgdG8gSUU4IGZvciBpdHMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT09IDc7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzT3duKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYsIE8sIFApLCBPW1BdKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVjggfiBDaHJvbWUgMzYtXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMzM0XG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ3Byb3RvdHlwZScsIHtcbiAgICB2YWx1ZTogNDIsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pLnByb3RvdHlwZSAhPT0gNDI7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IFR5cGUoYXJndW1lbnQpIGlzIE9iamVjdGBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc09iamVjdChhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJFN0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXREZXNjcmlwdG9yID0gREVTQ1JJUFRPUlMgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxudmFyIEVYSVNUUyA9IGhhc093bihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKTtcbi8vIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBmcm9tIG1pbmlmaWVkIC8gbWFuZ2xlZCAvIGRyb3BwZWQgZnVuY3Rpb24gbmFtZXNcbnZhciBQUk9QRVIgPSBFWElTVFMgJiYgKGZ1bmN0aW9uIHNvbWV0aGluZygpIHsgLyogZW1wdHkgKi8gfSkubmFtZSA9PT0gJ3NvbWV0aGluZyc7XG52YXIgQ09ORklHVVJBQkxFID0gRVhJU1RTICYmICghREVTQ1JJUFRPUlMgfHwgKERFU0NSSVBUT1JTICYmIGdldERlc2NyaXB0b3IoRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJykuY29uZmlndXJhYmxlKSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBFWElTVFM6IEVYSVNUUyxcbiAgUFJPUEVSOiBQUk9QRVIsXG4gIENPTkZJR1VSQUJMRTogQ09ORklHVVJBQkxFXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0ge307XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc3RvcmUuZ2V0ID0gc3RvcmUuZ2V0O1xuICBzdG9yZS5oYXMgPSBzdG9yZS5oYXM7XG4gIHN0b3JlLnNldCA9IHN0b3JlLnNldDtcbiAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoc3RvcmUuaGFzKGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgc3RvcmUuc2V0KGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuZ2V0KGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmhhcyhpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXNPd24oaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkNPTkZJR1VSQUJMRTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG52YXIgQ09ORklHVVJBQkxFX0xFTkdUSCA9IERFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdsZW5ndGgnLCB7IHZhbHVlOiA4IH0pLmxlbmd0aCAhPT0gODtcbn0pO1xuXG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbnZhciBtYWtlQnVpbHRJbiA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBuYW1lLCBvcHRpb25zKSB7XG4gIGlmIChzdHJpbmdTbGljZSgkU3RyaW5nKG5hbWUpLCAwLCA3KSA9PT0gJ1N5bWJvbCgnKSB7XG4gICAgbmFtZSA9ICdbJyArIHJlcGxhY2UoJFN0cmluZyhuYW1lKSwgL15TeW1ib2xcXCgoW14pXSopXFwpLiokLywgJyQxJykgKyAnXSc7XG4gIH1cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5nZXR0ZXIpIG5hbWUgPSAnZ2V0ICcgKyBuYW1lO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNldHRlcikgbmFtZSA9ICdzZXQgJyArIG5hbWU7XG4gIGlmICghaGFzT3duKHZhbHVlLCAnbmFtZScpIHx8IChDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSAmJiB2YWx1ZS5uYW1lICE9PSBuYW1lKSkge1xuICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIGVsc2UgdmFsdWUubmFtZSA9IG5hbWU7XG4gIH1cbiAgaWYgKENPTkZJR1VSQUJMRV9MRU5HVEggJiYgb3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2FyaXR5JykgJiYgdmFsdWUubGVuZ3RoICE9PSBvcHRpb25zLmFyaXR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkodmFsdWUsICdsZW5ndGgnLCB7IHZhbHVlOiBvcHRpb25zLmFyaXR5IH0pO1xuICB9XG4gIHRyeSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdjb25zdHJ1Y3RvcicpICYmIG9wdGlvbnMuY29uc3RydWN0b3IpIHtcbiAgICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICdwcm90b3R5cGUnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTtcbiAgICAvLyBpbiBWOCB+IENocm9tZSA1MywgcHJvdG90eXBlcyBvZiBzb21lIG1ldGhvZHMsIGxpa2UgYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgLCBhcmUgbm9uLXdyaXRhYmxlXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5wcm90b3R5cGUpIHZhbHVlLnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICB2YXIgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gIGlmICghaGFzT3duKHN0YXRlLCAnc291cmNlJykpIHtcbiAgICBzdGF0ZS5zb3VyY2UgPSBqb2luKFRFTVBMQVRFLCB0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyA/IG5hbWUgOiAnJyk7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5kLW5hdGl2ZSAtLSByZXF1aXJlZFxuRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gbWFrZUJ1aWx0SW4oZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG59LCAndG9TdHJpbmcnKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucy5lbnVtZXJhYmxlO1xuICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uYW1lIDoga2V5O1xuICBpZiAoaXNDYWxsYWJsZSh2YWx1ZSkpIG1ha2VCdWlsdEluKHZhbHVlLCBuYW1lLCBvcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMuZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBkZWZpbmVHbG9iYWxQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFvcHRpb25zLnVuc2FmZSkgZGVsZXRlIE9ba2V5XTtcbiAgICAgIGVsc2UgaWYgKE9ba2V5XSkgc2ltcGxlID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6ICFvcHRpb25zLm5vbkNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiAhb3B0aW9ucy5ub25Xcml0YWJsZVxuICAgIH0pO1xuICB9IHJldHVybiBPO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBNYXRoLnRydW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50cnVuY1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtdHJ1bmMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnRydW5jIHx8IGZ1bmN0aW9uIHRydW5jKHgpIHtcbiAgdmFyIG4gPSAreDtcbiAgcmV0dXJuIChuID4gMCA/IGZsb29yIDogY2VpbCkobik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0cnVuYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXRydW5jJyk7XG5cbi8vIGBUb0ludGVnZXJPckluZmluaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIG51bWJlciA9ICthcmd1bWVudDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiB0cnVuYyhudW1iZXIpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbGVuZ3RoXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbGVuID0gdG9JbnRlZ2VyT3JJbmZpbml0eShhcmd1bWVudCk7XG4gIHJldHVybiBsZW4gPiAwID8gbWluKGxlbiwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcblxuLy8gYExlbmd0aE9mQXJyYXlMaWtlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbGVuZ3Rob2ZhcnJheWxpa2Vcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdG9MZW5ndGgob2JqLmxlbmd0aCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXNPd24oaGlkZGVuS2V5cywga2V5KSAmJiBoYXNPd24oTywga2V5KSAmJiBwdXNoKHJlc3VsdCwga2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhc093bihPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCBwdXNoKHJlc3VsdCwga2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG52YXIgaGlkZGVuS2V5cyA9IGVudW1CdWdLZXlzLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ293bktleXMnKSB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChrZXlzLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIG93bktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3duLWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UsIGV4Y2VwdGlvbnMpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpICYmICEoZXhjZXB0aW9ucyAmJiBoYXNPd24oZXhjZXB0aW9ucywga2V5KSkpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICB9XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuXG52YXIgaXNGb3JjZWQgPSBmdW5jdGlvbiAoZmVhdHVyZSwgZGV0ZWN0aW9uKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGFbbm9ybWFsaXplKGZlYXR1cmUpXTtcbiAgcmV0dXJuIHZhbHVlID09PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogaXNDYWxsYWJsZShkZXRlY3Rpb24pID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAgICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMuZG9udENhbGxHZXRTZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4gIG9wdGlvbnMubmFtZSAgICAgICAgICAgLSB0aGUgLm5hbWUgb2YgdGhlIGZ1bmN0aW9uIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBrZXlcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWw7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsW1RBUkdFVF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsW1RBUkdFVF0gJiYgZ2xvYmFsW1RBUkdFVF0ucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMuZG9udENhbGxHZXRTZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgZGVmaW5lQnVpbHRJbih0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXNldCAtLSBzYWZlXG52YXIgU2V0UHJvdG90eXBlID0gU2V0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zZXQgLS0gc2FmZVxuICBTZXQ6IFNldCxcbiAgYWRkOiB1bmN1cnJ5VGhpcyhTZXRQcm90b3R5cGUuYWRkKSxcbiAgaGFzOiB1bmN1cnJ5VGhpcyhTZXRQcm90b3R5cGUuaGFzKSxcbiAgcmVtb3ZlOiB1bmN1cnJ5VGhpcyhTZXRQcm90b3R5cGVbJ2RlbGV0ZSddKSxcbiAgcHJvdG86IFNldFByb3RvdHlwZVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJykuaGFzO1xuXG4vLyBQZXJmb3JtID8gUmVxdWlyZUludGVybmFsU2xvdChNLCBbW1NldERhdGFdXSlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGhhcyhpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyZWNvcmQsIGZuLCBJVEVSQVRPUl9JTlNURUFEX09GX1JFQ09SRCkge1xuICB2YXIgaXRlcmF0b3IgPSBJVEVSQVRPUl9JTlNURUFEX09GX1JFQ09SRCA/IHJlY29yZCA6IHJlY29yZC5pdGVyYXRvcjtcbiAgdmFyIG5leHQgPSByZWNvcmQubmV4dDtcbiAgdmFyIHN0ZXAsIHJlc3VsdDtcbiAgd2hpbGUgKCEoc3RlcCA9IGNhbGwobmV4dCwgaXRlcmF0b3IpKS5kb25lKSB7XG4gICAgcmVzdWx0ID0gZm4oc3RlcC52YWx1ZSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG52YXIgU2V0SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpO1xuXG52YXIgU2V0ID0gU2V0SGVscGVycy5TZXQ7XG52YXIgU2V0UHJvdG90eXBlID0gU2V0SGVscGVycy5wcm90bztcbnZhciBmb3JFYWNoID0gdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlLmZvckVhY2gpO1xudmFyIGtleXMgPSB1bmN1cnJ5VGhpcyhTZXRQcm90b3R5cGUua2V5cyk7XG52YXIgbmV4dCA9IGtleXMobmV3IFNldCgpKS5uZXh0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzZXQsIGZuLCBpbnRlcnJ1cHRpYmxlKSB7XG4gIHJldHVybiBpbnRlcnJ1cHRpYmxlID8gaXRlcmF0ZVNpbXBsZSh7IGl0ZXJhdG9yOiBrZXlzKHNldCksIG5leHQ6IG5leHQgfSwgZm4pIDogZm9yRWFjaChzZXQsIGZuKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIFNldEhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pdGVyYXRlJyk7XG5cbnZhciBTZXQgPSBTZXRIZWxwZXJzLlNldDtcbnZhciBhZGQgPSBTZXRIZWxwZXJzLmFkZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2V0KSB7XG4gIHZhciByZXN1bHQgPSBuZXcgU2V0KCk7XG4gIGl0ZXJhdGUoc2V0LCBmdW5jdGlvbiAoaXQpIHtcbiAgICBhZGQocmVzdWx0LCBpdCk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIG1ldGhvZCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICByZXR1cm4gdW5jdXJyeVRoaXMoYUNhbGxhYmxlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpW21ldGhvZF0pKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXNBY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3InKTtcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXNBY2Nlc3NvcihTZXRIZWxwZXJzLnByb3RvLCAnc2l6ZScsICdnZXQnKSB8fCBmdW5jdGlvbiAoc2V0KSB7XG4gIHJldHVybiBzZXQuc2l6ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gYEdldEl0ZXJhdG9yRGlyZWN0KG9iailgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnMvI3NlYy1nZXRpdGVyYXRvcmRpcmVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB7XG4gICAgaXRlcmF0b3I6IG9iaixcbiAgICBuZXh0OiBvYmoubmV4dCxcbiAgICBkb25lOiBmYWxzZVxuICB9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciBnZXRJdGVyYXRvckRpcmVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItZGlyZWN0Jyk7XG5cbnZhciBJTlZBTElEX1NJWkUgPSAnSW52YWxpZCBzaXplJztcbnZhciAkUmFuZ2VFcnJvciA9IFJhbmdlRXJyb3I7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBtYXggPSBNYXRoLm1heDtcblxudmFyIFNldFJlY29yZCA9IGZ1bmN0aW9uIChzZXQsIGludFNpemUpIHtcbiAgdGhpcy5zZXQgPSBzZXQ7XG4gIHRoaXMuc2l6ZSA9IG1heChpbnRTaXplLCAwKTtcbiAgdGhpcy5oYXMgPSBhQ2FsbGFibGUoc2V0Lmhhcyk7XG4gIHRoaXMua2V5cyA9IGFDYWxsYWJsZShzZXQua2V5cyk7XG59O1xuXG5TZXRSZWNvcmQucHJvdG90eXBlID0ge1xuICBnZXRJdGVyYXRvcjogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRJdGVyYXRvckRpcmVjdChhbk9iamVjdChjYWxsKHRoaXMua2V5cywgdGhpcy5zZXQpKSk7XG4gIH0sXG4gIGluY2x1ZGVzOiBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gY2FsbCh0aGlzLmhhcywgdGhpcy5zZXQsIGl0KTtcbiAgfVxufTtcblxuLy8gYEdldFNldFJlY29yZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtc2V0LW1ldGhvZHMvI3NlYy1nZXRzZXRyZWNvcmRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICBhbk9iamVjdChvYmopO1xuICB2YXIgbnVtU2l6ZSA9ICtvYmouc2l6ZTtcbiAgLy8gTk9URTogSWYgc2l6ZSBpcyB1bmRlZmluZWQsIHRoZW4gbnVtU2l6ZSB3aWxsIGJlIE5hTlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICBpZiAobnVtU2l6ZSAhPT0gbnVtU2l6ZSkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoSU5WQUxJRF9TSVpFKTtcbiAgdmFyIGludFNpemUgPSB0b0ludGVnZXJPckluZmluaXR5KG51bVNpemUpO1xuICBpZiAoaW50U2l6ZSA8IDApIHRocm93IG5ldyAkUmFuZ2VFcnJvcihJTlZBTElEX1NJWkUpO1xuICByZXR1cm4gbmV3IFNldFJlY29yZChvYmosIGludFNpemUpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXNldCcpO1xudmFyIFNldEhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKTtcbnZhciBjbG9uZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtY2xvbmUnKTtcbnZhciBzaXplID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zaXplJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG52YXIgaXRlcmF0ZVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXRlcmF0ZScpO1xudmFyIGl0ZXJhdGVTaW1wbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZS1zaW1wbGUnKTtcblxudmFyIGhhcyA9IFNldEhlbHBlcnMuaGFzO1xudmFyIHJlbW92ZSA9IFNldEhlbHBlcnMucmVtb3ZlO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5kaWZmZXJlbmNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRpZmZlcmVuY2Uob3RoZXIpIHtcbiAgdmFyIE8gPSBhU2V0KHRoaXMpO1xuICB2YXIgb3RoZXJSZWMgPSBnZXRTZXRSZWNvcmQob3RoZXIpO1xuICB2YXIgcmVzdWx0ID0gY2xvbmUoTyk7XG4gIGlmIChzaXplKE8pIDw9IG90aGVyUmVjLnNpemUpIGl0ZXJhdGVTZXQoTywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAob3RoZXJSZWMuaW5jbHVkZXMoZSkpIHJlbW92ZShyZXN1bHQsIGUpO1xuICB9KTtcbiAgZWxzZSBpdGVyYXRlU2ltcGxlKG90aGVyUmVjLmdldEl0ZXJhdG9yKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGhhcyhPLCBlKSkgcmVtb3ZlKHJlc3VsdCwgZSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxudmFyIGNyZWF0ZVNldExpa2UgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4ge1xuICAgIHNpemU6IHNpemUsXG4gICAgaGFzOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBrZXlzOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgdmFyIFNldCA9IGdldEJ1aWx0SW4oJ1NldCcpO1xuICB0cnkge1xuICAgIG5ldyBTZXQoKVtuYW1lXShjcmVhdGVTZXRMaWtlKDApKTtcbiAgICB0cnkge1xuICAgICAgLy8gbGF0ZSBzcGVjIGNoYW5nZSwgZWFybHkgV2ViS2l0IH4gU2FmYXJpIDE3LjAgYmV0YSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBwYXNzIGl0XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kcy9wdWxsLzg4XG4gICAgICBuZXcgU2V0KClbbmFtZV0oY3JlYXRlU2V0TGlrZSgtMSkpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gY2F0Y2ggKGVycm9yMikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBkaWZmZXJlbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1kaWZmZXJlbmNlJyk7XG52YXIgc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtbWV0aG9kLWFjY2VwdC1zZXQtbGlrZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5kaWZmZXJlbmNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ2RpZmZlcmVuY2UnKSB9LCB7XG4gIGRpZmZlcmVuY2U6IGRpZmZlcmVuY2Vcbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnNldC5kaWZmZXJlbmNlLnYyJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG5cbnZhciBTZXQgPSBTZXRIZWxwZXJzLlNldDtcbnZhciBhZGQgPSBTZXRIZWxwZXJzLmFkZDtcbnZhciBoYXMgPSBTZXRIZWxwZXJzLmhhcztcblxuLy8gYFNldC5wcm90b3R5cGUuaW50ZXJzZWN0aW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGludGVyc2VjdGlvbihvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBvdGhlclJlYyA9IGdldFNldFJlY29yZChvdGhlcik7XG4gIHZhciByZXN1bHQgPSBuZXcgU2V0KCk7XG5cbiAgaWYgKHNpemUoTykgPiBvdGhlclJlYy5zaXplKSB7XG4gICAgaXRlcmF0ZVNpbXBsZShvdGhlclJlYy5nZXRJdGVyYXRvcigpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKGhhcyhPLCBlKSkgYWRkKHJlc3VsdCwgZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaXRlcmF0ZVNldChPLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKG90aGVyUmVjLmluY2x1ZGVzKGUpKSBhZGQocmVzdWx0LCBlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaW50ZXJzZWN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pbnRlcnNlY3Rpb24nKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbnZhciBJTkNPUlJFQ1QgPSAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnaW50ZXJzZWN0aW9uJykgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktZnJvbSwgZXMvbm8tc2V0IC0tIHRlc3RpbmdcbiAgcmV0dXJuIFN0cmluZyhBcnJheS5mcm9tKG5ldyBTZXQoWzEsIDIsIDNdKS5pbnRlcnNlY3Rpb24obmV3IFNldChbMywgMl0pKSkpICE9PSAnMywyJztcbn0pO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pbnRlcnNlY3Rpb25gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJTkNPUlJFQ1QgfSwge1xuICBpbnRlcnNlY3Rpb246IGludGVyc2VjdGlvblxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc2V0LmludGVyc2VjdGlvbi52MicpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwga2luZCwgdmFsdWUpIHtcbiAgdmFyIGlubmVyUmVzdWx0LCBpbm5lckVycm9yO1xuICBhbk9iamVjdChpdGVyYXRvcik7XG4gIHRyeSB7XG4gICAgaW5uZXJSZXN1bHQgPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICBpZiAoIWlubmVyUmVzdWx0KSB7XG4gICAgICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlubmVyUmVzdWx0ID0gY2FsbChpbm5lclJlc3VsdCwgaXRlcmF0b3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlubmVyRXJyb3IgPSB0cnVlO1xuICAgIGlubmVyUmVzdWx0ID0gZXJyb3I7XG4gIH1cbiAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICBpZiAoaW5uZXJFcnJvcikgdGhyb3cgaW5uZXJSZXN1bHQ7XG4gIGFuT2JqZWN0KGlubmVyUmVzdWx0KTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXNldCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpLmhhcztcbnZhciBzaXplID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zaXplJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG52YXIgaXRlcmF0ZVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXRlcmF0ZScpO1xudmFyIGl0ZXJhdGVTaW1wbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZS1zaW1wbGUnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmlzRGlzam9pbnRGcm9tYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0LW1ldGhvZHMvI1NldC5wcm90b3R5cGUuaXNEaXNqb2ludEZyb21cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNEaXNqb2ludEZyb20ob3RoZXIpIHtcbiAgdmFyIE8gPSBhU2V0KHRoaXMpO1xuICB2YXIgb3RoZXJSZWMgPSBnZXRTZXRSZWNvcmQob3RoZXIpO1xuICBpZiAoc2l6ZShPKSA8PSBvdGhlclJlYy5zaXplKSByZXR1cm4gaXRlcmF0ZVNldChPLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChvdGhlclJlYy5pbmNsdWRlcyhlKSkgcmV0dXJuIGZhbHNlO1xuICB9LCB0cnVlKSAhPT0gZmFsc2U7XG4gIHZhciBpdGVyYXRvciA9IG90aGVyUmVjLmdldEl0ZXJhdG9yKCk7XG4gIHJldHVybiBpdGVyYXRlU2ltcGxlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChoYXMoTywgZSkpIHJldHVybiBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAnbm9ybWFsJywgZmFsc2UpO1xuICB9KSAhPT0gZmFsc2U7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzRGlzam9pbnRGcm9tID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pcy1kaXNqb2ludC1mcm9tJyk7XG52YXIgc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtbWV0aG9kLWFjY2VwdC1zZXQtbGlrZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc0Rpc2pvaW50RnJvbWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6ICFzZXRNZXRob2RBY2NlcHRTZXRMaWtlKCdpc0Rpc2pvaW50RnJvbScpIH0sIHtcbiAgaXNEaXNqb2ludEZyb206IGlzRGlzam9pbnRGcm9tXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5zZXQuaXMtZGlzam9pbnQtZnJvbS52MicpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcbnZhciBnZXRTZXRSZWNvcmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1yZWNvcmQnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNTdWJzZXRPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNTZXQucHJvdG90eXBlLmlzU3Vic2V0T2Zcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNTdWJzZXRPZihvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBvdGhlclJlYyA9IGdldFNldFJlY29yZChvdGhlcik7XG4gIGlmIChzaXplKE8pID4gb3RoZXJSZWMuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gaXRlcmF0ZShPLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmICghb3RoZXJSZWMuaW5jbHVkZXMoZSkpIHJldHVybiBmYWxzZTtcbiAgfSwgdHJ1ZSkgIT09IGZhbHNlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc1N1YnNldE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pcy1zdWJzZXQtb2YnKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmlzU3Vic2V0T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnaXNTdWJzZXRPZicpIH0sIHtcbiAgaXNTdWJzZXRPZjogaXNTdWJzZXRPZlxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc2V0LmlzLXN1YnNldC1vZi52MicpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJykuaGFzO1xudmFyIHNpemUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNpemUnKTtcbnZhciBnZXRTZXRSZWNvcmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1yZWNvcmQnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc1N1cGVyc2V0T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXQtbWV0aG9kcy8jU2V0LnByb3RvdHlwZS5pc1N1cGVyc2V0T2Zcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNTdXBlcnNldE9mKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIG90aGVyUmVjID0gZ2V0U2V0UmVjb3JkKG90aGVyKTtcbiAgaWYgKHNpemUoTykgPCBvdGhlclJlYy5zaXplKSByZXR1cm4gZmFsc2U7XG4gIHZhciBpdGVyYXRvciA9IG90aGVyUmVjLmdldEl0ZXJhdG9yKCk7XG4gIHJldHVybiBpdGVyYXRlU2ltcGxlKGl0ZXJhdG9yLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmICghaGFzKE8sIGUpKSByZXR1cm4gaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ25vcm1hbCcsIGZhbHNlKTtcbiAgfSkgIT09IGZhbHNlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc1N1cGVyc2V0T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWlzLXN1cGVyc2V0LW9mJyk7XG52YXIgc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtbWV0aG9kLWFjY2VwdC1zZXQtbGlrZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc1N1cGVyc2V0T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnaXNTdXBlcnNldE9mJykgfSwge1xuICBpc1N1cGVyc2V0T2Y6IGlzU3VwZXJzZXRPZlxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc2V0LmlzLXN1cGVyc2V0LW9mLnYyJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG52YXIgY2xvbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWNsb25lJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xuXG52YXIgYWRkID0gU2V0SGVscGVycy5hZGQ7XG52YXIgaGFzID0gU2V0SGVscGVycy5oYXM7XG52YXIgcmVtb3ZlID0gU2V0SGVscGVycy5yZW1vdmU7XG5cbi8vIGBTZXQucHJvdG90eXBlLnN5bW1ldHJpY0RpZmZlcmVuY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ltbWV0cmljRGlmZmVyZW5jZShvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBrZXlzSXRlciA9IGdldFNldFJlY29yZChvdGhlcikuZ2V0SXRlcmF0b3IoKTtcbiAgdmFyIHJlc3VsdCA9IGNsb25lKE8pO1xuICBpdGVyYXRlU2ltcGxlKGtleXNJdGVyLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChoYXMoTywgZSkpIHJlbW92ZShyZXN1bHQsIGUpO1xuICAgIGVsc2UgYWRkKHJlc3VsdCwgZSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBzeW1tZXRyaWNEaWZmZXJlbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zeW1tZXRyaWMtZGlmZmVyZW5jZScpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuc3ltbWV0cmljRGlmZmVyZW5jZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6ICFzZXRNZXRob2RBY2NlcHRTZXRMaWtlKCdzeW1tZXRyaWNEaWZmZXJlbmNlJykgfSwge1xuICBzeW1tZXRyaWNEaWZmZXJlbmNlOiBzeW1tZXRyaWNEaWZmZXJlbmNlXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UudjInKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXNldCcpO1xudmFyIGFkZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpLmFkZDtcbnZhciBjbG9uZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtY2xvbmUnKTtcbnZhciBnZXRTZXRSZWNvcmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1yZWNvcmQnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnVuaW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHVuaW9uKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIGtleXNJdGVyID0gZ2V0U2V0UmVjb3JkKG90aGVyKS5nZXRJdGVyYXRvcigpO1xuICB2YXIgcmVzdWx0ID0gY2xvbmUoTyk7XG4gIGl0ZXJhdGVTaW1wbGUoa2V5c0l0ZXIsIGZ1bmN0aW9uIChpdCkge1xuICAgIGFkZChyZXN1bHQsIGl0KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHVuaW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC11bmlvbicpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUudW5pb25gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgndW5pb24nKSB9LCB7XG4gIHVuaW9uOiB1bmlvblxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc2V0LnVuaW9uLnYyJyk7XG4iLCAiaW1wb3J0ICd0aXBweS5qcy9kaXN0L3RpcHB5LmNzcyc7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyB0aXBweX0gZnJvbSAndGlwcHkuanMnO1xuIiwgImV4cG9ydCB2YXIgdG9wID0gJ3RvcCc7XG5leHBvcnQgdmFyIGJvdHRvbSA9ICdib3R0b20nO1xuZXhwb3J0IHZhciByaWdodCA9ICdyaWdodCc7XG5leHBvcnQgdmFyIGxlZnQgPSAnbGVmdCc7XG5leHBvcnQgdmFyIGF1dG8gPSAnYXV0byc7XG5leHBvcnQgdmFyIGJhc2VQbGFjZW1lbnRzID0gW3RvcCwgYm90dG9tLCByaWdodCwgbGVmdF07XG5leHBvcnQgdmFyIHN0YXJ0ID0gJ3N0YXJ0JztcbmV4cG9ydCB2YXIgZW5kID0gJ2VuZCc7XG5leHBvcnQgdmFyIGNsaXBwaW5nUGFyZW50cyA9ICdjbGlwcGluZ1BhcmVudHMnO1xuZXhwb3J0IHZhciB2aWV3cG9ydCA9ICd2aWV3cG9ydCc7XG5leHBvcnQgdmFyIHBvcHBlciA9ICdwb3BwZXInO1xuZXhwb3J0IHZhciByZWZlcmVuY2UgPSAncmVmZXJlbmNlJztcbmV4cG9ydCB2YXIgdmFyaWF0aW9uUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9iYXNlUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pO1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL1tdLmNvbmNhdChiYXNlUGxhY2VtZW50cywgW2F1dG9dKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQsIHBsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7IC8vIG1vZGlmaWVycyB0aGF0IG5lZWQgdG8gcmVhZCB0aGUgRE9NXG5cbmV4cG9ydCB2YXIgYmVmb3JlUmVhZCA9ICdiZWZvcmVSZWFkJztcbmV4cG9ydCB2YXIgcmVhZCA9ICdyZWFkJztcbmV4cG9ydCB2YXIgYWZ0ZXJSZWFkID0gJ2FmdGVyUmVhZCc7IC8vIHB1cmUtbG9naWMgbW9kaWZpZXJzXG5cbmV4cG9ydCB2YXIgYmVmb3JlTWFpbiA9ICdiZWZvcmVNYWluJztcbmV4cG9ydCB2YXIgbWFpbiA9ICdtYWluJztcbmV4cG9ydCB2YXIgYWZ0ZXJNYWluID0gJ2FmdGVyTWFpbic7IC8vIG1vZGlmaWVyIHdpdGggdGhlIHB1cnBvc2UgdG8gd3JpdGUgdG8gdGhlIERPTSAob3Igd3JpdGUgaW50byBhIGZyYW1ld29yayBzdGF0ZSlcblxuZXhwb3J0IHZhciBiZWZvcmVXcml0ZSA9ICdiZWZvcmVXcml0ZSc7XG5leHBvcnQgdmFyIHdyaXRlID0gJ3dyaXRlJztcbmV4cG9ydCB2YXIgYWZ0ZXJXcml0ZSA9ICdhZnRlcldyaXRlJztcbmV4cG9ydCB2YXIgbW9kaWZpZXJQaGFzZXMgPSBbYmVmb3JlUmVhZCwgcmVhZCwgYWZ0ZXJSZWFkLCBiZWZvcmVNYWluLCBtYWluLCBhZnRlck1haW4sIGJlZm9yZVdyaXRlLCB3cml0ZSwgYWZ0ZXJXcml0ZV07IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59IiwgImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudChub2RlKSB7XG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLkVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudChub2RlKSB7XG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLkhUTUxFbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3Qobm9kZSkge1xuICAvLyBJRSAxMSBoYXMgbm8gU2hhZG93Um9vdFxuICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuU2hhZG93Um9vdDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBTaGFkb3dSb290O1xufVxuXG5leHBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9OyIsICJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBUaGlzIG1vZGlmaWVyIHRha2VzIHRoZSBzdHlsZXMgcHJlcGFyZWQgYnkgdGhlIGBjb21wdXRlU3R5bGVzYCBtb2RpZmllclxuLy8gYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgSFRNTEVsZW1lbnRzIHN1Y2ggYXMgcG9wcGVyIGFuZCBhcnJvd1xuXG5mdW5jdGlvbiBhcHBseVN0eWxlcyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGU7XG4gIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHN0eWxlID0gc3RhdGUuc3R5bGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEZsb3cgZG9lc24ndCBzdXBwb3J0IHRvIGV4dGVuZCB0aGlzIHByb3BlcnR5LCBidXQgaXQncyB0aGUgbW9zdFxuICAgIC8vIGVmZmVjdGl2ZSB3YXkgdG8gYXBwbHkgc3R5bGVzIHRvIGFuIEhUTUxFbGVtZW50XG4gICAgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdXG5cblxuICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlO1xuICB2YXIgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICBwb3BwZXI6IHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH0sXG4gICAgYXJyb3c6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHt9XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLCBpbml0aWFsU3R5bGVzLnBvcHBlcik7XG4gIHN0YXRlLnN0eWxlcyA9IGluaXRpYWxTdHlsZXM7XG5cbiAgaWYgKHN0YXRlLmVsZW1lbnRzLmFycm93KSB7XG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5hcnJvdy5zdHlsZSwgaW5pdGlhbFN0eWxlcy5hcnJvdyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdO1xuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgICAgdmFyIHN0eWxlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHN0YXRlLnN0eWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHN0YXRlLnN0eWxlc1tuYW1lXSA6IGluaXRpYWxTdHlsZXNbbmFtZV0pOyAvLyBTZXQgYWxsIHZhbHVlcyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gdW5zZXQgdGhlbVxuXG4gICAgICB2YXIgc3R5bGUgPSBzdHlsZVByb3BlcnRpZXMucmVkdWNlKGZ1bmN0aW9uIChzdHlsZSwgcHJvcGVydHkpIHtcbiAgICAgICAgc3R5bGVbcHJvcGVydHldID0gJyc7XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0sIHt9KTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogYXBwbHlTdHlsZXMsXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ11cbn07IiwgImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCAiZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbmV4cG9ydCB2YXIgbWluID0gTWF0aC5taW47XG5leHBvcnQgdmFyIHJvdW5kID0gTWF0aC5yb3VuZDsiLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VUFTdHJpbmcoKSB7XG4gIHZhciB1YURhdGEgPSBuYXZpZ2F0b3IudXNlckFnZW50RGF0YTtcblxuICBpZiAodWFEYXRhICE9IG51bGwgJiYgdWFEYXRhLmJyYW5kcyAmJiBBcnJheS5pc0FycmF5KHVhRGF0YS5icmFuZHMpKSB7XG4gICAgcmV0dXJuIHVhRGF0YS5icmFuZHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5icmFuZCArIFwiL1wiICsgaXRlbS52ZXJzaW9uO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufSIsICJpbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNMYXlvdXRWaWV3cG9ydCgpIHtcbiAgcmV0dXJuICEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xufSIsICJpbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cblxuICB2YXIgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaW5jbHVkZVNjYWxlICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBzY2FsZVggPSBlbGVtZW50Lm9mZnNldFdpZHRoID4gMCA/IHJvdW5kKGNsaWVudFJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxIDogMTtcbiAgICBzY2FsZVkgPSBlbGVtZW50Lm9mZnNldEhlaWdodCA+IDAgPyByb3VuZChjbGllbnRSZWN0LmhlaWdodCkgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxIDogMTtcbiAgfVxuXG4gIHZhciBfcmVmID0gaXNFbGVtZW50KGVsZW1lbnQpID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93LFxuICAgICAgdmlzdWFsVmlld3BvcnQgPSBfcmVmLnZpc3VhbFZpZXdwb3J0O1xuXG4gIHZhciBhZGRWaXN1YWxPZmZzZXRzID0gIWlzTGF5b3V0Vmlld3BvcnQoKSAmJiBpc0ZpeGVkU3RyYXRlZ3k7XG4gIHZhciB4ID0gKGNsaWVudFJlY3QubGVmdCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCA6IDApKSAvIHNjYWxlWDtcbiAgdmFyIHkgPSAoY2xpZW50UmVjdC50b3AgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcCA6IDApKSAvIHNjYWxlWTtcbiAgdmFyIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlWDtcbiAgdmFyIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGVZO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgbGVmdDogeCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCAiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjsgLy8gUmV0dXJucyB0aGUgbGF5b3V0IHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LiBMYXlvdXRcbi8vIG1lYW5zIGl0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdHJhbnNmb3Jtcy5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TGF5b3V0UmVjdChlbGVtZW50KSB7XG4gIHZhciBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpOyAvLyBVc2UgdGhlIGNsaWVudFJlY3Qgc2l6ZXMgaWYgaXQncyBub3QgYmVlbiB0cmFuc2Zvcm1lZC5cbiAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMjIzXG5cbiAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LndpZHRoIC0gd2lkdGgpIDw9IDEpIHtcbiAgICB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC5oZWlnaHQgLSBoZWlnaHQpIDw9IDEpIHtcbiAgICBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogZWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgIHk6IGVsZW1lbnQub2Zmc2V0VG9wLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufSIsICJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsICJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCAiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCAiaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59IiwgImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuICgvLyB0aGlzIGlzIGEgcXVpY2tlciAoYnV0IGxlc3MgdHlwZSBzYWZlKSB3YXkgdG8gc2F2ZSBxdWl0ZSBzb21lIGJ5dGVzIGZyb20gdGhlIGJ1bmRsZVxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICBlbGVtZW50LmFzc2lnbmVkU2xvdCB8fCAvLyBzdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZVxuICAgIGVsZW1lbnQucGFyZW50Tm9kZSB8fCAoIC8vIERPTSBFbGVtZW50IGRldGVjdGVkXG4gICAgaXNTaGFkb3dSb290KGVsZW1lbnQpID8gZWxlbWVudC5ob3N0IDogbnVsbCkgfHwgLy8gU2hhZG93Um9vdCBkZXRlY3RlZFxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBIVE1MRWxlbWVudCBpcyBhIE5vZGVcbiAgICBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgLy8gZmFsbGJhY2tcblxuICApO1xufSIsICJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy84MzdcbiAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufSAvLyBgLm9mZnNldFBhcmVudGAgcmVwb3J0cyBgbnVsbGAgZm9yIGZpeGVkIGVsZW1lbnRzLCB3aGlsZSBhYnNvbHV0ZSBlbGVtZW50c1xuLy8gcmV0dXJuIHRoZSBjb250YWluaW5nIGJsb2NrXG5cblxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgdmFyIGlzRmlyZWZveCA9IC9maXJlZm94L2kudGVzdChnZXRVQVN0cmluZygpKTtcbiAgdmFyIGlzSUUgPSAvVHJpZGVudC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICBpZiAoaXNTaGFkb3dSb290KGN1cnJlbnROb2RlKSkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuaG9zdDtcbiAgfVxuXG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiBbJ2h0bWwnLCAnYm9keSddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoY3VycmVudE5vZGUpKSA8IDApIHtcbiAgICB2YXIgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7IC8vIFRoaXMgaXMgbm9uLWV4aGF1c3RpdmUgYnV0IGNvdmVycyB0aGUgbW9zdCBjb21tb24gQ1NTIHByb3BlcnRpZXMgdGhhdFxuICAgIC8vIGNyZWF0ZSBhIGNvbnRhaW5pbmcgYmxvY2suXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcblxuICAgIGlmIChjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgY3NzLmNvbnRhaW4gPT09ICdwYWludCcgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnXS5pbmRleE9mKGNzcy53aWxsQ2hhbmdlKSAhPT0gLTEgfHwgaXNGaXJlZm94ICYmIGNzcy53aWxsQ2hhbmdlID09PSAnZmlsdGVyJyB8fCBpc0ZpcmVmb3ggJiYgY3NzLmZpbHRlciAmJiBjc3MuZmlsdGVyICE9PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSAvLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQpO1xuICB9XG5cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsICJpbXBvcnQgeyBtYXggYXMgbWF0aE1heCwgbWluIGFzIG1hdGhNaW4gfSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluKG1pbiwgdmFsdWUsIG1heCkge1xuICByZXR1cm4gbWF0aE1heChtaW4sIG1hdGhNaW4odmFsdWUsIG1heCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbk1heENsYW1wKG1pbiwgdmFsdWUsIG1heCkge1xuICB2YXIgdiA9IHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpO1xuICByZXR1cm4gdiA+IG1heCA/IG1heCA6IHY7XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZyZXNoU2lkZU9iamVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDBcbiAgfTtcbn0iLCAiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4cGFuZFRvSGFzaE1hcCh2YWx1ZSwga2V5cykge1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoZnVuY3Rpb24gKGhhc2hNYXAsIGtleSkge1xuICAgIGhhc2hNYXBba2V5XSA9IHZhbHVlO1xuICAgIHJldHVybiBoYXNoTWFwO1xuICB9LCB7fSk7XG59IiwgImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRlLmVsZW1lbnRzLmFycm93ID0gYXJyb3dFbGVtZW50O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXJyb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogYXJyb3csXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J11cbn07IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsICJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmLCB3aW4pIHtcbiAgdmFyIHggPSBfcmVmLngsXG4gICAgICB5ID0gX3JlZi55O1xuICB2YXIgZHByID0gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgcmV0dXJuIHtcbiAgICB4OiByb3VuZCh4ICogZHByKSAvIGRwciB8fCAwLFxuICAgIHk6IHJvdW5kKHkgKiBkcHIpIC8gZHByIHx8IDBcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvU3R5bGVzKF9yZWYyKSB7XG4gIHZhciBfT2JqZWN0JGFzc2lnbjI7XG5cbiAgdmFyIHBvcHBlciA9IF9yZWYyLnBvcHBlcixcbiAgICAgIHBvcHBlclJlY3QgPSBfcmVmMi5wb3BwZXJSZWN0LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgICAgdmFyaWF0aW9uID0gX3JlZjIudmFyaWF0aW9uLFxuICAgICAgb2Zmc2V0cyA9IF9yZWYyLm9mZnNldHMsXG4gICAgICBwb3NpdGlvbiA9IF9yZWYyLnBvc2l0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX3JlZjIuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgYWRhcHRpdmUgPSBfcmVmMi5hZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9yZWYyLnJvdW5kT2Zmc2V0cyxcbiAgICAgIGlzRml4ZWQgPSBfcmVmMi5pc0ZpeGVkO1xuICB2YXIgX29mZnNldHMkeCA9IG9mZnNldHMueCxcbiAgICAgIHggPSBfb2Zmc2V0cyR4ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeCxcbiAgICAgIF9vZmZzZXRzJHkgPSBvZmZzZXRzLnksXG4gICAgICB5ID0gX29mZnNldHMkeSA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHk7XG5cbiAgdmFyIF9yZWYzID0gdHlwZW9mIHJvdW5kT2Zmc2V0cyA9PT0gJ2Z1bmN0aW9uJyA/IHJvdW5kT2Zmc2V0cyh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmMy54O1xuICB5ID0gX3JlZjMueTtcbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnICYmIHBvc2l0aW9uID09PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3AgfHwgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCBwbGFjZW1lbnQgPT09IHJpZ2h0KSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVkgPSBib3R0b207XG4gICAgICB2YXIgb2Zmc2V0WSA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LmhlaWdodCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W2hlaWdodFByb3BdO1xuICAgICAgeSAtPSBvZmZzZXRZIC0gcG9wcGVyUmVjdC5oZWlnaHQ7XG4gICAgICB5ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSBsZWZ0IHx8IChwbGFjZW1lbnQgPT09IHRvcCB8fCBwbGFjZW1lbnQgPT09IGJvdHRvbSkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7XG4gICAgICB2YXIgb2Zmc2V0WCA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbd2lkdGhQcm9wXTtcbiAgICAgIHggLT0gb2Zmc2V0WCAtIHBvcHBlclJlY3Qud2lkdGg7XG4gICAgICB4ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcG9zaXRpb246IHBvc2l0aW9uXG4gIH0sIGFkYXB0aXZlICYmIHVuc2V0U2lkZXMpO1xuXG4gIHZhciBfcmVmNCA9IHJvdW5kT2Zmc2V0cyA9PT0gdHJ1ZSA/IHJvdW5kT2Zmc2V0c0J5RFBSKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSwgZ2V0V2luZG93KHBvcHBlcikpIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwgImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyIsICJ2YXIgaGFzaCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCAidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsICJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsICJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgLy8gUG9wcGVyIDEgaXMgYnJva2VuIGluIHRoaXMgY2FzZSBhbmQgbmV2ZXIgaGFkIGEgYnVnIHJlcG9ydCBzbyBsZXQncyBhc3N1bWVcbiAgLy8gaXQncyBub3QgYW4gaXNzdWUuIEkgZG9uJ3QgdGhpbmsgYW55b25lIGV2ZXIgc3BlY2lmaWVzIHdpZHRoIG9uIDxodG1sPlxuICAvLyBhbnl3YXkuXG4gIC8vIEJyb3dzZXJzIHdoZXJlIHRoZSBsZWZ0IHNjcm9sbGJhciBkb2Vzbid0IGNhdXNlIGFuIGlzc3VlIHJlcG9ydCBgMGAgZm9yXG4gIC8vIHRoaXMgKGUuZy4gRWRnZSAyMDE5LCBJRTExLCBTYWZhcmkpXG4gIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59IiwgImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCAiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCAiaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICAvLyBGaXJlZm94IHdhbnRzIHVzIHRvIGNoZWNrIGAteGAgYW5kIGAteWAgdmFyaWF0aW9ucyBhcyB3ZWxsXG4gIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCksXG4gICAgICBvdmVyZmxvdyA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93LFxuICAgICAgb3ZlcmZsb3dYID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dYLFxuICAgICAgb3ZlcmZsb3dZID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dZO1xuXG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW4vLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpO1xufSIsICJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsICJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufSIsICJpbXBvcnQgeyB2aWV3cG9ydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZpZXdwb3J0UmVjdCBmcm9tIFwiLi9nZXRWaWV3cG9ydFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudFJlY3QgZnJvbSBcIi4vZ2V0RG9jdW1lbnRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vbGlzdFNjcm9sbFBhcmVudHMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4vZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgcmVjdFRvQ2xpZW50UmVjdCBmcm9tIFwiLi4vdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgbWF4LCBtaW4gfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBmYWxzZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICByZWN0LnRvcCA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIHJlY3QubGVmdCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgcmVjdC5ib3R0b20gPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnJpZ2h0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC53aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3QuaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QueCA9IHJlY3QubGVmdDtcbiAgcmVjdC55ID0gcmVjdC50b3A7XG4gIHJldHVybiByZWN0O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIHtcbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50ID09PSB2aWV3cG9ydCA/IHJlY3RUb0NsaWVudFJlY3QoZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSkgOiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpID8gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSA6IHJlY3RUb0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkpO1xufSAvLyBBIFwiY2xpcHBpbmcgcGFyZW50XCIgaXMgYW4gb3ZlcmZsb3dhYmxlIGNvbnRhaW5lciB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgb3ZlcmZsb3dpbmcgZWxlbWVudHMgd2l0aCBhIHBvc2l0aW9uIGRpZmZlcmVudCBmcm9tXG4vLyBgaW5pdGlhbGBcblxuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkge1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gbGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZShlbGVtZW50KSk7XG4gIHZhciBjYW5Fc2NhcGVDbGlwcGluZyA9IFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24pID49IDA7XG4gIHZhciBjbGlwcGVyRWxlbWVudCA9IGNhbkVzY2FwZUNsaXBwaW5nICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIGlmICghaXNFbGVtZW50KGNsaXBwZXJFbGVtZW50KSkge1xuICAgIHJldHVybiBbXTtcbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMTQxNFxuXG5cbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50cy5maWx0ZXIoZnVuY3Rpb24gKGNsaXBwaW5nUGFyZW50KSB7XG4gICAgcmV0dXJuIGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgJiYgY29udGFpbnMoY2xpcHBpbmdQYXJlbnQsIGNsaXBwZXJFbGVtZW50KSAmJiBnZXROb2RlTmFtZShjbGlwcGluZ1BhcmVudCkgIT09ICdib2R5JztcbiAgfSk7XG59IC8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIHBhcmVudHNcblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoZWxlbWVudCwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSwgc3RyYXRlZ3kpIHtcbiAgdmFyIG1haW5DbGlwcGluZ1BhcmVudHMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nUGFyZW50cycgPyBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gW10uY29uY2F0KG1haW5DbGlwcGluZ1BhcmVudHMsIFtyb290Qm91bmRhcnldKTtcbiAgdmFyIGZpcnN0Q2xpcHBpbmdQYXJlbnQgPSBjbGlwcGluZ1BhcmVudHNbMF07XG4gIHZhciBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ1BhcmVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2NSZWN0LCBjbGlwcGluZ1BhcmVudCkge1xuICAgIHZhciByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBmaXJzdENsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkpO1xuICBjbGlwcGluZ1JlY3Qud2lkdGggPSBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LmhlaWdodCA9IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wO1xuICBjbGlwcGluZ1JlY3QueCA9IGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QueSA9IGNsaXBwaW5nUmVjdC50b3A7XG4gIHJldHVybiBjbGlwcGluZ1JlY3Q7XG59IiwgImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsICJpbXBvcnQgZ2V0Q2xpcHBpbmdSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4vY29tcHV0ZU9mZnNldHMuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IGNsaXBwaW5nUGFyZW50cywgcmVmZXJlbmNlLCBwb3BwZXIsIGJvdHRvbSwgdG9wLCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4vbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuL2V4cGFuZFRvSGFzaE1hcC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgX29wdGlvbnMkcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMkcGxhY2VtZW50ID09PSB2b2lkIDAgPyBzdGF0ZS5wbGFjZW1lbnQgOiBfb3B0aW9ucyRwbGFjZW1lbnQsXG4gICAgICBfb3B0aW9ucyRzdHJhdGVneSA9IF9vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgc3RyYXRlZ3kgPSBfb3B0aW9ucyRzdHJhdGVneSA9PT0gdm9pZCAwID8gc3RhdGUuc3RyYXRlZ3kgOiBfb3B0aW9ucyRzdHJhdGVneSxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSk7XG4gIHZhciByZWZlcmVuY2VDbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHN0YXRlLmVsZW1lbnRzLnJlZmVyZW5jZSk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlQ2xpZW50UmVjdCxcbiAgICBlbGVtZW50OiBwb3BwZXJSZWN0LFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pO1xuICB2YXIgcG9wcGVyQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoT2JqZWN0LmFzc2lnbih7fSwgcG9wcGVyUmVjdCwgcG9wcGVyT2Zmc2V0cykpO1xuICB2YXIgZWxlbWVudENsaWVudFJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcG9wcGVyQ2xpZW50UmVjdCA6IHJlZmVyZW5jZUNsaWVudFJlY3Q7IC8vIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIHJlY3RcbiAgLy8gMCBvciBuZWdhdGl2ZSA9IHdpdGhpbiB0aGUgY2xpcHBpbmcgcmVjdFxuXG4gIHZhciBvdmVyZmxvd09mZnNldHMgPSB7XG4gICAgdG9wOiBjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3AsXG4gICAgYm90dG9tOiBlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20sXG4gICAgbGVmdDogY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0LFxuICAgIHJpZ2h0OiBlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHRcbiAgfTtcbiAgdmFyIG9mZnNldERhdGEgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldDsgLy8gT2Zmc2V0cyBjYW4gYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBwb3BwZXIgZWxlbWVudFxuXG4gIGlmIChlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyICYmIG9mZnNldERhdGEpIHtcbiAgICB2YXIgb2Zmc2V0ID0gb2Zmc2V0RGF0YVtwbGFjZW1lbnRdO1xuICAgIE9iamVjdC5rZXlzKG92ZXJmbG93T2Zmc2V0cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgbXVsdGlwbHkgPSBbcmlnaHQsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAxIDogLTE7XG4gICAgICB2YXIgYXhpcyA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAneScgOiAneCc7XG4gICAgICBvdmVyZmxvd09mZnNldHNba2V5XSArPSBvZmZzZXRbYXhpc10gKiBtdWx0aXBseTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBvdmVyZmxvd09mZnNldHM7XG59IiwgImltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyB2YXJpYXRpb25QbGFjZW1lbnRzLCBiYXNlUGxhY2VtZW50cywgcGxhY2VtZW50cyBhcyBhbGxQbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9IF9vcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9PT0gdm9pZCAwID8gYWxsUGxhY2VtZW50cyA6IF9vcHRpb25zJGFsbG93ZWRBdXRvUDtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpO1xuICB2YXIgcGxhY2VtZW50cyA9IHZhcmlhdGlvbiA/IGZsaXBWYXJpYXRpb25zID8gdmFyaWF0aW9uUGxhY2VtZW50cyA6IHZhcmlhdGlvblBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHZhcmlhdGlvbjtcbiAgfSkgOiBiYXNlUGxhY2VtZW50cztcbiAgdmFyIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhbGxvd2VkQXV0b1BsYWNlbWVudHMuaW5kZXhPZihwbGFjZW1lbnQpID49IDA7XG4gIH0pO1xuXG4gIGlmIChhbGxvd2VkUGxhY2VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHM7XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV06IEZsb3cgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHR3byBhcnJheSB1bmlvbnMuLi5cblxuXG4gIHZhciBvdmVyZmxvd3MgPSBhbGxvd2VkUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KVtnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCldO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG92ZXJmbG93cykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBvdmVyZmxvd3NbYV0gLSBvdmVyZmxvd3NbYl07XG4gIH0pO1xufSIsICJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwgImltcG9ydCB7IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCwgcHJldmVudGVkT2Zmc2V0cykge1xuICBpZiAocHJldmVudGVkT2Zmc2V0cyA9PT0gdm9pZCAwKSB7XG4gICAgcHJldmVudGVkT2Zmc2V0cyA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCAtIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoICsgcHJldmVudGVkT2Zmc2V0cy54LFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQgKyBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGggLSBwcmV2ZW50ZWRPZmZzZXRzLnhcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBbdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0XS5zb21lKGZ1bmN0aW9uIChzaWRlKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93W3NpZGVdID49IDA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoaWRlKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHByZXZlbnRlZE9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnByZXZlbnRPdmVyZmxvdztcbiAgdmFyIHJlZmVyZW5jZU92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgfSk7XG4gIHZhciBwb3BwZXJBbHRPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgfSk7XG4gIHZhciByZWZlcmVuY2VDbGlwcGluZ09mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhyZWZlcmVuY2VPdmVyZmxvdywgcmVmZXJlbmNlUmVjdCk7XG4gIHZhciBwb3BwZXJFc2NhcGVPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocG9wcGVyQWx0T3ZlcmZsb3csIHBvcHBlclJlY3QsIHByZXZlbnRlZE9mZnNldHMpO1xuICB2YXIgaXNSZWZlcmVuY2VIaWRkZW4gPSBpc0FueVNpZGVGdWxseUNsaXBwZWQocmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzKTtcbiAgdmFyIGhhc1BvcHBlckVzY2FwZWQgPSBpc0FueVNpZGVGdWxseUNsaXBwZWQocG9wcGVyRXNjYXBlT2Zmc2V0cyk7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSB7XG4gICAgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzOiByZWZlcmVuY2VDbGlwcGluZ09mZnNldHMsXG4gICAgcG9wcGVyRXNjYXBlT2Zmc2V0czogcG9wcGVyRXNjYXBlT2Zmc2V0cyxcbiAgICBpc1JlZmVyZW5jZUhpZGRlbjogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgaGFzUG9wcGVyRXNjYXBlZDogaGFzUG9wcGVyRXNjYXBlZFxuICB9O1xuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXJlZmVyZW5jZS1oaWRkZW4nOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICAnZGF0YS1wb3BwZXItZXNjYXBlZCc6IGhhc1BvcHBlckVzY2FwZWRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdoaWRlJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXSxcbiAgZm46IGhpZGVcbn07IiwgImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBwbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgcmVjdHMsIG9mZnNldCkge1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgdmFyIGludmVydERpc3RhbmNlID0gW2xlZnQsIHRvcF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwID8gLTEgOiAxO1xuXG4gIHZhciBfcmVmID0gdHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IG9mZnNldChPYmplY3QuYXNzaWduKHt9LCByZWN0cywge1xuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pKSA6IG9mZnNldCxcbiAgICAgIHNraWRkaW5nID0gX3JlZlswXSxcbiAgICAgIGRpc3RhbmNlID0gX3JlZlsxXTtcblxuICBza2lkZGluZyA9IHNraWRkaW5nIHx8IDA7XG4gIGRpc3RhbmNlID0gKGRpc3RhbmNlIHx8IDApICogaW52ZXJ0RGlzdGFuY2U7XG4gIHJldHVybiBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IHtcbiAgICB4OiBkaXN0YW5jZSxcbiAgICB5OiBza2lkZGluZ1xuICB9IDoge1xuICAgIHg6IHNraWRkaW5nLFxuICAgIHk6IGRpc3RhbmNlXG4gIH07XG59XG5cbmZ1bmN0aW9uIG9mZnNldChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYyLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRvZmZzZXQgPSBvcHRpb25zLm9mZnNldCxcbiAgICAgIG9mZnNldCA9IF9vcHRpb25zJG9mZnNldCA9PT0gdm9pZCAwID8gWzAsIDBdIDogX29wdGlvbnMkb2Zmc2V0O1xuICB2YXIgZGF0YSA9IHBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkocGxhY2VtZW50LCBzdGF0ZS5yZWN0cywgb2Zmc2V0KTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHZhciBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQgPSBkYXRhW3N0YXRlLnBsYWNlbWVudF0sXG4gICAgICB4ID0gX2RhdGEkc3RhdGUkcGxhY2VtZW50LngsXG4gICAgICB5ID0gX2RhdGEkc3RhdGUkcGxhY2VtZW50Lnk7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnggKz0geDtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueSArPSB5O1xuICB9XG5cbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGRhdGE7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdvZmZzZXQnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIGZuOiBvZmZzZXRcbn07IiwgImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn0iLCAiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBzdGFydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldEFsdEF4aXMgZnJvbSBcIi4uL3V0aWxzL2dldEFsdEF4aXMuanNcIjtcbmltcG9ydCB7IHdpdGhpbiwgd2l0aGluTWF4Q2xhbXAgfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi4vdXRpbHMvZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5pbXBvcnQgeyBtaW4gYXMgbWF0aE1pbiwgbWF4IGFzIG1hdGhNYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBwcmV2ZW50T3ZlcmZsb3coX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXIgPSBvcHRpb25zLnRldGhlcixcbiAgICAgIHRldGhlciA9IF9vcHRpb25zJHRldGhlciA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHRldGhlcixcbiAgICAgIF9vcHRpb25zJHRldGhlck9mZnNldCA9IG9wdGlvbnMudGV0aGVyT2Zmc2V0LFxuICAgICAgdGV0aGVyT2Zmc2V0ID0gX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkdGV0aGVyT2Zmc2V0O1xuICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeVxuICB9KTtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9ICF2YXJpYXRpb247XG4gIHZhciBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGFsdEF4aXMgPSBnZXRBbHRBeGlzKG1haW5BeGlzKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IHRldGhlck9mZnNldChPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHRldGhlck9mZnNldDtcbiAgdmFyIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXRWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHRldGhlck9mZnNldFZhbHVlLFxuICAgIGFsdEF4aXM6IHRldGhlck9mZnNldFZhbHVlXG4gIH0gOiBPYmplY3QuYXNzaWduKHtcbiAgICBtYWluQXhpczogMCxcbiAgICBhbHRBeGlzOiAwXG4gIH0sIHRldGhlck9mZnNldFZhbHVlKTtcbiAgdmFyIG9mZnNldE1vZGlmaWVyU3RhdGUgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldCA/IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0W3N0YXRlLnBsYWNlbWVudF0gOiBudWxsO1xuICB2YXIgZGF0YSA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICBpZiAoIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQ7XG5cbiAgICB2YXIgbWFpblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgICB2YXIgYWx0U2lkZSA9IG1haW5BeGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICB2YXIgb2Zmc2V0ID0gcG9wcGVyT2Zmc2V0c1ttYWluQXhpc107XG4gICAgdmFyIG1pbiA9IG9mZnNldCArIG92ZXJmbG93W21haW5TaWRlXTtcbiAgICB2YXIgbWF4ID0gb2Zmc2V0IC0gb3ZlcmZsb3dbYWx0U2lkZV07XG4gICAgdmFyIGFkZGl0aXZlID0gdGV0aGVyID8gLXBvcHBlclJlY3RbbGVuXSAvIDIgOiAwO1xuICAgIHZhciBtaW5MZW4gPSB2YXJpYXRpb24gPT09IHN0YXJ0ID8gcmVmZXJlbmNlUmVjdFtsZW5dIDogcG9wcGVyUmVjdFtsZW5dO1xuICAgIHZhciBtYXhMZW4gPSB2YXJpYXRpb24gPT09IHN0YXJ0ID8gLXBvcHBlclJlY3RbbGVuXSA6IC1yZWZlcmVuY2VSZWN0W2xlbl07IC8vIFdlIG5lZWQgdG8gaW5jbHVkZSB0aGUgYXJyb3cgaW4gdGhlIGNhbGN1bGF0aW9uIHNvIHRoZSBhcnJvdyBkb2Vzbid0IGdvXG4gICAgLy8gb3V0c2lkZSB0aGUgcmVmZXJlbmNlIGJvdW5kc1xuXG4gICAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICAgIHZhciBhcnJvd1JlY3QgPSB0ZXRoZXIgJiYgYXJyb3dFbGVtZW50ID8gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpIDoge1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICAgIHZhciBhcnJvd1BhZGRpbmdPYmplY3QgPSBzdGF0ZS5tb2RpZmllcnNEYXRhWydhcnJvdyNwZXJzaXN0ZW50J10gPyBzdGF0ZS5tb2RpZmllcnNEYXRhWydhcnJvdyNwZXJzaXN0ZW50J10ucGFkZGluZyA6IGdldEZyZXNoU2lkZU9iamVjdCgpO1xuICAgIHZhciBhcnJvd1BhZGRpbmdNaW4gPSBhcnJvd1BhZGRpbmdPYmplY3RbbWFpblNpZGVdO1xuICAgIHZhciBhcnJvd1BhZGRpbmdNYXggPSBhcnJvd1BhZGRpbmdPYmplY3RbYWx0U2lkZV07IC8vIElmIHRoZSByZWZlcmVuY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiB0aGUgYXJyb3cgbGVuZ3RoLCB3ZSBkb24ndCB3YW50XG4gICAgLy8gdG8gaW5jbHVkZSBpdHMgZnVsbCBzaXplIGluIHRoZSBjYWxjdWxhdGlvbi4gSWYgdGhlIHJlZmVyZW5jZSBpcyBzbWFsbFxuICAgIC8vIGFuZCBuZWFyIHRoZSBlZGdlIG9mIGEgYm91bmRhcnksIHRoZSBwb3BwZXIgY2FuIG92ZXJmbG93IGV2ZW4gaWYgdGhlXG4gICAgLy8gcmVmZXJlbmNlIGlzIG5vdCBvdmVyZmxvd2luZyBhcyB3ZWxsIChlLmcuIHZpcnR1YWwgZWxlbWVudHMgd2l0aCBub1xuICAgIC8vIHdpZHRoIG9yIGhlaWdodClcblxuICAgIHZhciBhcnJvd0xlbiA9IHdpdGhpbigwLCByZWZlcmVuY2VSZWN0W2xlbl0sIGFycm93UmVjdFtsZW5dKTtcbiAgICB2YXIgbWluT2Zmc2V0ID0gaXNCYXNlUGxhY2VtZW50ID8gcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiAtIGFkZGl0aXZlIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtaW5MZW4gLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgbWF4T2Zmc2V0ID0gaXNCYXNlUGxhY2VtZW50ID8gLXJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgKyBhZGRpdGl2ZSArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWF4TGVuICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3cgJiYgZ2V0T2Zmc2V0UGFyZW50KHN0YXRlLmVsZW1lbnRzLmFycm93KTtcbiAgICB2YXIgY2xpZW50T2Zmc2V0ID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBtYWluQXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50VG9wIHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRMZWZ0IHx8IDAgOiAwO1xuICAgIHZhciBvZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJCA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbbWFpbkF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkIDogMDtcbiAgICB2YXIgdGV0aGVyTWluID0gb2Zmc2V0ICsgbWluT2Zmc2V0IC0gb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIGNsaWVudE9mZnNldDtcbiAgICB2YXIgdGV0aGVyTWF4ID0gb2Zmc2V0ICsgbWF4T2Zmc2V0IC0gb2Zmc2V0TW9kaWZpZXJWYWx1ZTtcbiAgICB2YXIgcHJldmVudGVkT2Zmc2V0ID0gd2l0aGluKHRldGhlciA/IG1hdGhNaW4obWluLCB0ZXRoZXJNaW4pIDogbWluLCBvZmZzZXQsIHRldGhlciA/IG1hdGhNYXgobWF4LCB0ZXRoZXJNYXgpIDogbWF4KTtcbiAgICBwb3BwZXJPZmZzZXRzW21haW5BeGlzXSA9IHByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW21haW5BeGlzXSA9IHByZXZlbnRlZE9mZnNldCAtIG9mZnNldDtcbiAgfVxuXG4gIGlmIChjaGVja0FsdEF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkMjtcblxuICAgIHZhciBfbWFpblNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gdG9wIDogbGVmdDtcblxuICAgIHZhciBfYWx0U2lkZSA9IG1haW5BeGlzID09PSAneCcgPyBib3R0b20gOiByaWdodDtcblxuICAgIHZhciBfb2Zmc2V0ID0gcG9wcGVyT2Zmc2V0c1thbHRBeGlzXTtcblxuICAgIHZhciBfbGVuID0gYWx0QXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgdmFyIF9taW4gPSBfb2Zmc2V0ICsgb3ZlcmZsb3dbX21haW5TaWRlXTtcblxuICAgIHZhciBfbWF4ID0gX29mZnNldCAtIG92ZXJmbG93W19hbHRTaWRlXTtcblxuICAgIHZhciBpc09yaWdpblNpZGUgPSBbdG9wLCBsZWZ0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpICE9PSAtMTtcblxuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVthbHRBeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJDIgOiAwO1xuXG4gICAgdmFyIF90ZXRoZXJNaW4gPSBpc09yaWdpblNpZGUgPyBfbWluIDogX29mZnNldCAtIHJlZmVyZW5jZVJlY3RbX2xlbl0gLSBwb3BwZXJSZWN0W19sZW5dIC0gX29mZnNldE1vZGlmaWVyVmFsdWUgKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUuYWx0QXhpcztcblxuICAgIHZhciBfdGV0aGVyTWF4ID0gaXNPcmlnaW5TaWRlID8gX29mZnNldCArIHJlZmVyZW5jZVJlY3RbX2xlbl0gKyBwb3BwZXJSZWN0W19sZW5dIC0gX29mZnNldE1vZGlmaWVyVmFsdWUgLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUuYWx0QXhpcyA6IF9tYXg7XG5cbiAgICB2YXIgX3ByZXZlbnRlZE9mZnNldCA9IHRldGhlciAmJiBpc09yaWdpblNpZGUgPyB3aXRoaW5NYXhDbGFtcChfdGV0aGVyTWluLCBfb2Zmc2V0LCBfdGV0aGVyTWF4KSA6IHdpdGhpbih0ZXRoZXIgPyBfdGV0aGVyTWluIDogX21pbiwgX29mZnNldCwgdGV0aGVyID8gX3RldGhlck1heCA6IF9tYXgpO1xuXG4gICAgcG9wcGVyT2Zmc2V0c1thbHRBeGlzXSA9IF9wcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVthbHRBeGlzXSA9IF9wcmV2ZW50ZWRPZmZzZXQgLSBfb2Zmc2V0O1xuICB9XG5cbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGRhdGE7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogcHJldmVudE92ZXJmbG93LFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddXG59OyIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCAiaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldEhUTUxFbGVtZW50U2Nyb2xsIGZyb20gXCIuL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlU2Nyb2xsKG5vZGUpIHtcbiAgaWYgKG5vZGUgPT09IGdldFdpbmRvdyhub2RlKSB8fCAhaXNIVE1MRWxlbWVudChub2RlKSkge1xuICAgIHJldHVybiBnZXRXaW5kb3dTY3JvbGwobm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdldEhUTUxFbGVtZW50U2Nyb2xsKG5vZGUpO1xuICB9XG59IiwgImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZVNjcm9sbCBmcm9tIFwiLi9nZXROb2RlU2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFNjYWxlZChlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IHJvdW5kKHJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxO1xuICB2YXIgc2NhbGVZID0gcm91bmQocmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMTtcbiAgcmV0dXJuIHNjYWxlWCAhPT0gMSB8fCBzY2FsZVkgIT09IDE7XG59IC8vIFJldHVybnMgdGhlIGNvbXBvc2l0ZSByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC5cbi8vIENvbXBvc2l0ZSBtZWFucyBpdCB0YWtlcyBpbnRvIGFjY291bnQgdHJhbnNmb3JtcyBhcyB3ZWxsIGFzIGxheW91dC5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wb3NpdGVSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnQsIGlzRml4ZWQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudElzU2NhbGVkID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzRWxlbWVudFNjYWxlZChvZmZzZXRQYXJlbnQpO1xuICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnRJc1NjYWxlZCwgaXNGaXhlZCk7XG4gIHZhciBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgdmFyIG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMDc4XG4gICAgaXNTY3JvbGxQYXJlbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cblxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIG9mZnNldHMgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlKTtcbiAgICAgIG9mZnNldHMueCArPSBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSArPSBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufSIsICJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZuKSB7XG4gIHZhciBwZW5kaW5nO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShmbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGVuZGluZztcbiAgfTtcbn0iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59IiwgImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IG1lcmdlQnlOYW1lIGZyb20gXCIuL3V0aWxzL21lcmdlQnlOYW1lLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGlmIChzdGF0ZS5yZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX3N0YXRlJG9yZGVyZWRNb2RpZmllID0gc3RhdGUub3JkZXJlZE1vZGlmaWVyc1tpbmRleF0sXG4gICAgICAgICAgICAgIGZuID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLmZuLFxuICAgICAgICAgICAgICBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm9wdGlvbnMsXG4gICAgICAgICAgICAgIF9vcHRpb25zID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9PT0gdm9pZCAwID8ge30gOiBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyLFxuICAgICAgICAgICAgICBuYW1lID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm5hbWU7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGZuKHtcbiAgICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfb3B0aW9ucyxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlXG4gICAgICAgICAgICB9KSB8fCBzdGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBBc3luYyBhbmQgb3B0aW1pc3RpY2FsbHkgb3B0aW1pemVkIHVwZGF0ZSDigJMgaXQgd2lsbCBub3QgYmUgZXhlY3V0ZWQgaWZcbiAgICAgIC8vIG5vdCBuZWNlc3NhcnkgKGRlYm91bmNlZCB0byBydW4gYXQgbW9zdCBvbmNlLXBlci10aWNrKVxuICAgICAgdXBkYXRlOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgIGluc3RhbmNlLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgcmVzb2x2ZShzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIGlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgICAgX3JlZiRvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYkb3B0aW9ucyA9PT0gdm9pZCAwID8ge30gOiBfcmVmJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsICJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbmltcG9ydCBvZmZzZXQgZnJvbSBcIi4vbW9kaWZpZXJzL29mZnNldC5qc1wiO1xuaW1wb3J0IGZsaXAgZnJvbSBcIi4vbW9kaWZpZXJzL2ZsaXAuanNcIjtcbmltcG9ydCBwcmV2ZW50T3ZlcmZsb3cgZnJvbSBcIi4vbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGFycm93IGZyb20gXCIuL21vZGlmaWVycy9hcnJvdy5qc1wiO1xuaW1wb3J0IGhpZGUgZnJvbSBcIi4vbW9kaWZpZXJzL2hpZGUuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlcywgb2Zmc2V0LCBmbGlwLCBwcmV2ZW50T3ZlcmZsb3csIGFycm93LCBoaWRlXTtcbnZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKHtcbiAgZGVmYXVsdE1vZGlmaWVyczogZGVmYXVsdE1vZGlmaWVyc1xufSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyLCBwb3BwZXJHZW5lcmF0b3IsIGRlZmF1bHRNb2RpZmllcnMsIGRldGVjdE92ZXJmbG93IH07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckxpdGUgfSBmcm9tIFwiLi9wb3BwZXItbGl0ZS5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCAqIGZyb20gXCIuL21vZGlmaWVycy9pbmRleC5qc1wiOyIsICJleHBvcnQgY29uc3QgUk9VTkRfQVJST1cgPVxuICAnPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiNlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTAgNnMxLjc5Ni0uMDEzIDQuNjctMy42MTVDNS44NTEuOSA2LjkzLjAwNiA4IDBjMS4wNy0uMDA2IDIuMTQ4Ljg4NyAzLjM0MyAyLjM4NUMxNC4yMzMgNi4wMDUgMTYgNiAxNiA2SDB6XCI+PC9zdmc+JztcblxuZXhwb3J0IGNvbnN0IEJPWF9DTEFTUyA9IGBfX05BTUVTUEFDRV9QUkVGSVhfXy1ib3hgO1xuZXhwb3J0IGNvbnN0IENPTlRFTlRfQ0xBU1MgPSBgX19OQU1FU1BBQ0VfUFJFRklYX18tY29udGVudGA7XG5leHBvcnQgY29uc3QgQkFDS0RST1BfQ0xBU1MgPSBgX19OQU1FU1BBQ0VfUFJFRklYX18tYmFja2Ryb3BgO1xuZXhwb3J0IGNvbnN0IEFSUk9XX0NMQVNTID0gYF9fTkFNRVNQQUNFX1BSRUZJWF9fLWFycm93YDtcbmV4cG9ydCBjb25zdCBTVkdfQVJST1dfQ0xBU1MgPSBgX19OQU1FU1BBQ0VfUFJFRklYX18tc3ZnLWFycm93YDtcblxuZXhwb3J0IGNvbnN0IFRPVUNIX09QVElPTlMgPSB7cGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogdHJ1ZX07XG5cbmV4cG9ydCBjb25zdCBUSVBQWV9ERUZBVUxUX0FQUEVORF9UTyA9ICgpID0+IGRvY3VtZW50LmJvZHk7XG4iLCAiaW1wb3J0IHtCYXNlUGxhY2VtZW50LCBQbGFjZW1lbnR9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHkoXG4gIG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGtleTogc3RyaW5nXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHt9Lmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVBdEluZGV4T3JSZXR1cm48VD4oXG4gIHZhbHVlOiBUIHwgW1QgfCBudWxsLCBUIHwgbnVsbF0sXG4gIGluZGV4OiBudW1iZXIsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IFtULCBUXVxuKTogVCB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGNvbnN0IHYgPSB2YWx1ZVtpbmRleF07XG4gICAgcmV0dXJuIHYgPT0gbnVsbFxuICAgICAgPyBBcnJheS5pc0FycmF5KGRlZmF1bHRWYWx1ZSlcbiAgICAgICAgPyBkZWZhdWx0VmFsdWVbaW5kZXhdXG4gICAgICAgIDogZGVmYXVsdFZhbHVlXG4gICAgICA6IHY7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGUodmFsdWU6IGFueSwgdHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0ciA9IHt9LnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICByZXR1cm4gc3RyLmluZGV4T2YoJ1tvYmplY3QnKSA9PT0gMCAmJiBzdHIuaW5kZXhPZihgJHt0eXBlfV1gKSA+IC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlV2l0aEFyZ3NPclJldHVybih2YWx1ZTogYW55LCBhcmdzOiBhbnlbXSk6IGFueSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZSguLi5hcmdzKSA6IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2U8VD4oXG4gIGZuOiAoYXJnOiBUKSA9PiB2b2lkLFxuICBtczogbnVtYmVyXG4pOiAoYXJnOiBUKSA9PiB2b2lkIHtcbiAgLy8gQXZvaWQgd3JhcHBpbmcgaW4gYHNldFRpbWVvdXRgIGlmIG1zIGlzIDAgYW55d2F5XG4gIGlmIChtcyA9PT0gMCkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIGxldCB0aW1lb3V0OiBhbnk7XG5cbiAgcmV0dXJuIChhcmcpOiB2b2lkID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZm4oYXJnKTtcbiAgICB9LCBtcyk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQcm9wZXJ0aWVzPFQ+KG9iajogVCwga2V5czogc3RyaW5nW10pOiBQYXJ0aWFsPFQ+IHtcbiAgY29uc3QgY2xvbmUgPSB7Li4ub2JqfTtcbiAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBkZWxldGUgKGNsb25lIGFzIGFueSlba2V5XTtcbiAgfSk7XG4gIHJldHVybiBjbG9uZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0QnlTcGFjZXModmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHZhbHVlLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVG9BcnJheTxUPih2YWx1ZTogVCB8IFRbXSk6IFRbXSB7XG4gIHJldHVybiAoW10gYXMgVFtdKS5jb25jYXQodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVzaElmVW5pcXVlPFQ+KGFycjogVFtdLCB2YWx1ZTogVCk6IHZvaWQge1xuICBpZiAoYXJyLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgIGFyci5wdXNoKHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kUHhJZk51bWJlcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyBgJHt2YWx1ZX1weGAgOiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZTxUPihhcnI6IFRbXSk6IFRbXSB7XG4gIHJldHVybiBhcnIuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gYXJyLmluZGV4T2YoaXRlbSkgPT09IGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE51bWJlcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IHBhcnNlRmxvYXQodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQ6IFBsYWNlbWVudCk6IEJhc2VQbGFjZW1lbnQge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF0gYXMgQmFzZVBsYWNlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5RnJvbSh2YWx1ZTogQXJyYXlMaWtlPGFueT4pOiBhbnlbXSB7XG4gIHJldHVybiBbXS5zbGljZS5jYWxsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BzKFxuICBvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4pOiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICBpZiAob2JqW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgKGFjYyBhcyBhbnkpW2tleV0gPSBvYmpba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG4iLCAiaW1wb3J0IHtSZWZlcmVuY2VFbGVtZW50LCBUYXJnZXRzfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7UG9wcGVyVHJlZURhdGF9IGZyb20gJy4vdHlwZXMtaW50ZXJuYWwnO1xuaW1wb3J0IHthcnJheUZyb20sIGlzVHlwZSwgbm9ybWFsaXplVG9BcnJheSwgZ2V0QmFzZVBsYWNlbWVudH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXYoKTogSFRNTERpdkVsZW1lbnQge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VsZW1lbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCB7XG4gIHJldHVybiBbJ0VsZW1lbnQnLCAnRnJhZ21lbnQnXS5zb21lKCh0eXBlKSA9PiBpc1R5cGUodmFsdWUsIHR5cGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUxpc3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBOb2RlTGlzdCB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdOb2RlTGlzdCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNb3VzZUV2ZW50KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgTW91c2VFdmVudCB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdNb3VzZUV2ZW50Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZUVsZW1lbnQodmFsdWU6IGFueSk6IHZhbHVlIGlzIFJlZmVyZW5jZUVsZW1lbnQge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX3RpcHB5ICYmIHZhbHVlLl90aXBweS5yZWZlcmVuY2UgPT09IHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFycmF5T2ZFbGVtZW50cyh2YWx1ZTogVGFyZ2V0cyk6IEVsZW1lbnRbXSB7XG4gIGlmIChpc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgcmV0dXJuIFt2YWx1ZV07XG4gIH1cblxuICBpZiAoaXNOb2RlTGlzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYXJyYXlGcm9tKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheUZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh2YWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VHJhbnNpdGlvbkR1cmF0aW9uKFxuICBlbHM6IChIVE1MRGl2RWxlbWVudCB8IG51bGwpW10sXG4gIHZhbHVlOiBudW1iZXJcbik6IHZvaWQge1xuICBlbHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke3ZhbHVlfW1zYDtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VmlzaWJpbGl0eVN0YXRlKFxuICBlbHM6IChIVE1MRGl2RWxlbWVudCB8IG51bGwpW10sXG4gIHN0YXRlOiAndmlzaWJsZScgfCAnaGlkZGVuJ1xuKTogdm9pZCB7XG4gIGVscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgIGlmIChlbCkge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLXN0YXRlJywgc3RhdGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPd25lckRvY3VtZW50KFxuICBlbGVtZW50T3JFbGVtZW50czogRWxlbWVudCB8IEVsZW1lbnRbXVxuKTogRG9jdW1lbnQge1xuICBjb25zdCBbZWxlbWVudF0gPSBub3JtYWxpemVUb0FycmF5KGVsZW1lbnRPckVsZW1lbnRzKTtcblxuICAvLyBFbGVtZW50cyBjcmVhdGVkIHZpYSBhIDx0ZW1wbGF0ZT4gaGF2ZSBhbiBvd25lckRvY3VtZW50IHdpdGggbm8gcmVmZXJlbmNlIHRvIHRoZSBib2R5XG4gIHJldHVybiBlbGVtZW50Py5vd25lckRvY3VtZW50Py5ib2R5ID8gZWxlbWVudC5vd25lckRvY3VtZW50IDogZG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0N1cnNvck91dHNpZGVJbnRlcmFjdGl2ZUJvcmRlcihcbiAgcG9wcGVyVHJlZURhdGE6IFBvcHBlclRyZWVEYXRhW10sXG4gIGV2ZW50OiBNb3VzZUV2ZW50XG4pOiBib29sZWFuIHtcbiAgY29uc3Qge2NsaWVudFgsIGNsaWVudFl9ID0gZXZlbnQ7XG5cbiAgcmV0dXJuIHBvcHBlclRyZWVEYXRhLmV2ZXJ5KCh7cG9wcGVyUmVjdCwgcG9wcGVyU3RhdGUsIHByb3BzfSkgPT4ge1xuICAgIGNvbnN0IHtpbnRlcmFjdGl2ZUJvcmRlcn0gPSBwcm9wcztcbiAgICBjb25zdCBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwb3BwZXJTdGF0ZS5wbGFjZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldERhdGEgPSBwb3BwZXJTdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldDtcblxuICAgIGlmICghb2Zmc2V0RGF0YSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgdG9wRGlzdGFuY2UgPSBiYXNlUGxhY2VtZW50ID09PSAnYm90dG9tJyA/IG9mZnNldERhdGEudG9wIS55IDogMDtcbiAgICBjb25zdCBib3R0b21EaXN0YW5jZSA9IGJhc2VQbGFjZW1lbnQgPT09ICd0b3AnID8gb2Zmc2V0RGF0YS5ib3R0b20hLnkgOiAwO1xuICAgIGNvbnN0IGxlZnREaXN0YW5jZSA9IGJhc2VQbGFjZW1lbnQgPT09ICdyaWdodCcgPyBvZmZzZXREYXRhLmxlZnQhLnggOiAwO1xuICAgIGNvbnN0IHJpZ2h0RGlzdGFuY2UgPSBiYXNlUGxhY2VtZW50ID09PSAnbGVmdCcgPyBvZmZzZXREYXRhLnJpZ2h0IS54IDogMDtcblxuICAgIGNvbnN0IGV4Y2VlZHNUb3AgPVxuICAgICAgcG9wcGVyUmVjdC50b3AgLSBjbGllbnRZICsgdG9wRGlzdGFuY2UgPiBpbnRlcmFjdGl2ZUJvcmRlcjtcbiAgICBjb25zdCBleGNlZWRzQm90dG9tID1cbiAgICAgIGNsaWVudFkgLSBwb3BwZXJSZWN0LmJvdHRvbSAtIGJvdHRvbURpc3RhbmNlID4gaW50ZXJhY3RpdmVCb3JkZXI7XG4gICAgY29uc3QgZXhjZWVkc0xlZnQgPVxuICAgICAgcG9wcGVyUmVjdC5sZWZ0IC0gY2xpZW50WCArIGxlZnREaXN0YW5jZSA+IGludGVyYWN0aXZlQm9yZGVyO1xuICAgIGNvbnN0IGV4Y2VlZHNSaWdodCA9XG4gICAgICBjbGllbnRYIC0gcG9wcGVyUmVjdC5yaWdodCAtIHJpZ2h0RGlzdGFuY2UgPiBpbnRlcmFjdGl2ZUJvcmRlcjtcblxuICAgIHJldHVybiBleGNlZWRzVG9wIHx8IGV4Y2VlZHNCb3R0b20gfHwgZXhjZWVkc0xlZnQgfHwgZXhjZWVkc1JpZ2h0O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVRyYW5zaXRpb25FbmRMaXN0ZW5lcihcbiAgYm94OiBIVE1MRGl2RWxlbWVudCxcbiAgYWN0aW9uOiAnYWRkJyB8ICdyZW1vdmUnLFxuICBsaXN0ZW5lcjogKGV2ZW50OiBUcmFuc2l0aW9uRXZlbnQpID0+IHZvaWRcbik6IHZvaWQge1xuICBjb25zdCBtZXRob2QgPSBgJHthY3Rpb259RXZlbnRMaXN0ZW5lcmAgYXNcbiAgICB8ICdhZGRFdmVudExpc3RlbmVyJ1xuICAgIHwgJ3JlbW92ZUV2ZW50TGlzdGVuZXInO1xuXG4gIC8vIHNvbWUgYnJvd3NlcnMgYXBwYXJlbnRseSBzdXBwb3J0IGB0cmFuc2l0aW9uYCAodW5wcmVmaXhlZCkgYnV0IG9ubHkgZmlyZVxuICAvLyBgd2Via2l0VHJhbnNpdGlvbkVuZGAuLi5cbiAgWyd0cmFuc2l0aW9uZW5kJywgJ3dlYmtpdFRyYW5zaXRpb25FbmQnXS5mb3JFYWNoKChldmVudCkgPT4ge1xuICAgIGJveFttZXRob2RdKGV2ZW50LCBsaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29tcGFyZWQgdG8geHh4LmNvbnRhaW5zLCB0aGlzIGZ1bmN0aW9uIHdvcmtzIGZvciBkb20gc3RydWN0dXJlcyB3aXRoIHNoYWRvd1xuICogZG9tXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3R1YWxDb250YWlucyhwYXJlbnQ6IEVsZW1lbnQsIGNoaWxkOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGxldCB0YXJnZXQgPSBjaGlsZDtcbiAgd2hpbGUgKHRhcmdldCkge1xuICAgIGlmIChwYXJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHRhcmdldCA9ICh0YXJnZXQuZ2V0Um9vdE5vZGU/LigpIGFzIGFueSk/Lmhvc3Q7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIiwgImltcG9ydCB7VE9VQ0hfT1BUSU9OU30gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtpc1JlZmVyZW5jZUVsZW1lbnR9IGZyb20gJy4vZG9tLXV0aWxzJztcblxuZXhwb3J0IGNvbnN0IGN1cnJlbnRJbnB1dCA9IHtpc1RvdWNoOiBmYWxzZX07XG5sZXQgbGFzdE1vdXNlTW92ZVRpbWUgPSAwO1xuXG4vKipcbiAqIFdoZW4gYSBgdG91Y2hzdGFydGAgZXZlbnQgaXMgZmlyZWQsIGl0J3MgYXNzdW1lZCB0aGUgdXNlciBpcyB1c2luZyB0b3VjaFxuICogaW5wdXQuIFdlJ2xsIGJpbmQgYSBgbW91c2Vtb3ZlYCBldmVudCBsaXN0ZW5lciB0byBsaXN0ZW4gZm9yIG1vdXNlIGlucHV0IGluXG4gKiB0aGUgZnV0dXJlLiBUaGlzIHdheSwgdGhlIGBpc1RvdWNoYCBwcm9wZXJ0eSBpcyBmdWxseSBkeW5hbWljIGFuZCB3aWxsIGhhbmRsZVxuICogaHlicmlkIGRldmljZXMgdGhhdCB1c2UgYSBtaXggb2YgdG91Y2ggKyBtb3VzZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uRG9jdW1lbnRUb3VjaFN0YXJ0KCk6IHZvaWQge1xuICBpZiAoY3VycmVudElucHV0LmlzVG91Y2gpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjdXJyZW50SW5wdXQuaXNUb3VjaCA9IHRydWU7XG5cbiAgaWYgKHdpbmRvdy5wZXJmb3JtYW5jZSkge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpO1xuICB9XG59XG5cbi8qKlxuICogV2hlbiB0d28gYG1vdXNlbW92ZWAgZXZlbnQgYXJlIGZpcmVkIGNvbnNlY3V0aXZlbHkgd2l0aGluIDIwbXMsIGl0J3MgYXNzdW1lZFxuICogdGhlIHVzZXIgaXMgdXNpbmcgbW91c2UgaW5wdXQgYWdhaW4uIGBtb3VzZW1vdmVgIGNhbiBmaXJlIG9uIHRvdWNoIGRldmljZXMgYXNcbiAqIHdlbGwsIGJ1dCB2ZXJ5IHJhcmVseSB0aGF0IHF1aWNrbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkRvY3VtZW50TW91c2VNb3ZlKCk6IHZvaWQge1xuICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICBpZiAobm93IC0gbGFzdE1vdXNlTW92ZVRpbWUgPCAyMCkge1xuICAgIGN1cnJlbnRJbnB1dC5pc1RvdWNoID0gZmFsc2U7XG5cbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbkRvY3VtZW50TW91c2VNb3ZlKTtcbiAgfVxuXG4gIGxhc3RNb3VzZU1vdmVUaW1lID0gbm93O1xufVxuXG4vKipcbiAqIFdoZW4gYW4gZWxlbWVudCBpcyBpbiBmb2N1cyBhbmQgaGFzIGEgdGlwcHksIGxlYXZpbmcgdGhlIHRhYi93aW5kb3cgYW5kXG4gKiByZXR1cm5pbmcgY2F1c2VzIGl0IHRvIHNob3cgYWdhaW4uIEZvciBtb3VzZSB1c2VycyB0aGlzIGlzIHVuZXhwZWN0ZWQsIGJ1dFxuICogZm9yIGtleWJvYXJkIHVzZSBpdCBtYWtlcyBzZW5zZS5cbiAqIFRPRE86IGZpbmQgYSBiZXR0ZXIgdGVjaG5pcXVlIHRvIHNvbHZlIHRoaXMgcHJvYmxlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gb25XaW5kb3dCbHVyKCk6IHZvaWQge1xuICBjb25zdCBhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgaWYgKGlzUmVmZXJlbmNlRWxlbWVudChhY3RpdmVFbGVtZW50KSkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gYWN0aXZlRWxlbWVudC5fdGlwcHkhO1xuXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQuYmx1ciAmJiAhaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlKSB7XG4gICAgICBhY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYmluZEdsb2JhbEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Eb2N1bWVudFRvdWNoU3RhcnQsIFRPVUNIX09QVElPTlMpO1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uV2luZG93Qmx1cik7XG59XG4iLCAiZXhwb3J0IGNvbnN0IGlzQnJvd3NlciA9XG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XG5cbmV4cG9ydCBjb25zdCBpc0lFMTEgPSBpc0Jyb3dzZXJcbiAgPyAvLyBAdHMtaWdub3JlXG4gICAgISF3aW5kb3cubXNDcnlwdG9cbiAgOiBmYWxzZTtcbiIsICJpbXBvcnQge1RhcmdldHN9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVtb3J5TGVha1dhcm5pbmcobWV0aG9kOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB0eHQgPSBtZXRob2QgPT09ICdkZXN0cm95JyA/ICduIGFscmVhZHktJyA6ICcgJztcblxuICByZXR1cm4gW1xuICAgIGAke21ldGhvZH0oKSB3YXMgY2FsbGVkIG9uIGEke3R4dH1kZXN0cm95ZWQgaW5zdGFuY2UuIFRoaXMgaXMgYSBuby1vcCBidXRgLFxuICAgICdpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsuJyxcbiAgXS5qb2luKCcgJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3BhY2VzQW5kVGFicyA9IC9bIFxcdF17Mix9L2c7XG4gIGNvbnN0IGxpbmVTdGFydFdpdGhTcGFjZXMgPSAvXlsgXFx0XSovZ207XG5cbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2Uoc3BhY2VzQW5kVGFicywgJyAnKVxuICAgIC5yZXBsYWNlKGxpbmVTdGFydFdpdGhTcGFjZXMsICcnKVxuICAgIC50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldERldk1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNsZWFuKGBcbiAgJWN0aXBweS5qc1xuXG4gICVjJHtjbGVhbihtZXNzYWdlKX1cblxuICAlY/CfkbfigI0gVGhpcyBpcyBhIGRldmVsb3BtZW50LW9ubHkgbWVzc2FnZS4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHByb2R1Y3Rpb24uXG4gIGApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbXG4gICAgZ2V0RGV2TWVzc2FnZShtZXNzYWdlKSxcbiAgICAvLyB0aXRsZVxuICAgICdjb2xvcjogIzAwQzU4NDsgZm9udC1zaXplOiAxLjNlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7JyxcbiAgICAvLyBtZXNzYWdlXG4gICAgJ2xpbmUtaGVpZ2h0OiAxLjUnLFxuICAgIC8vIGZvb3RlclxuICAgICdjb2xvcjogI2E2YTA5NTsnLFxuICBdO1xufVxuXG4vLyBBc3N1bWUgd2FybmluZ3MgYW5kIGVycm9ycyBuZXZlciBoYXZlIHRoZSBzYW1lIG1lc3NhZ2VcbmxldCB2aXNpdGVkTWVzc2FnZXM6IFNldDxzdHJpbmc+O1xuaWYgKF9fREVWX18pIHtcbiAgcmVzZXRWaXNpdGVkTWVzc2FnZXMoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0VmlzaXRlZE1lc3NhZ2VzKCk6IHZvaWQge1xuICB2aXNpdGVkTWVzc2FnZXMgPSBuZXcgU2V0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXJuV2hlbihjb25kaXRpb246IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoY29uZGl0aW9uICYmICF2aXNpdGVkTWVzc2FnZXMuaGFzKG1lc3NhZ2UpKSB7XG4gICAgdmlzaXRlZE1lc3NhZ2VzLmFkZChtZXNzYWdlKTtcbiAgICBjb25zb2xlLndhcm4oLi4uZ2V0Rm9ybWF0dGVkTWVzc2FnZShtZXNzYWdlKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVycm9yV2hlbihjb25kaXRpb246IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoY29uZGl0aW9uICYmICF2aXNpdGVkTWVzc2FnZXMuaGFzKG1lc3NhZ2UpKSB7XG4gICAgdmlzaXRlZE1lc3NhZ2VzLmFkZChtZXNzYWdlKTtcbiAgICBjb25zb2xlLmVycm9yKC4uLmdldEZvcm1hdHRlZE1lc3NhZ2UobWVzc2FnZSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhcmdldHModGFyZ2V0czogVGFyZ2V0cyk6IHZvaWQge1xuICBjb25zdCBkaWRQYXNzRmFsc3lWYWx1ZSA9ICF0YXJnZXRzO1xuICBjb25zdCBkaWRQYXNzUGxhaW5PYmplY3QgPVxuICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0YXJnZXRzKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgJiZcbiAgICAhKHRhcmdldHMgYXMgYW55KS5hZGRFdmVudExpc3RlbmVyO1xuXG4gIGVycm9yV2hlbihcbiAgICBkaWRQYXNzRmFsc3lWYWx1ZSxcbiAgICBbXG4gICAgICAndGlwcHkoKSB3YXMgcGFzc2VkJyxcbiAgICAgICdgJyArIFN0cmluZyh0YXJnZXRzKSArICdgJyxcbiAgICAgICdhcyBpdHMgdGFyZ2V0cyAoZmlyc3QpIGFyZ3VtZW50LiBWYWxpZCB0eXBlcyBhcmU6IFN0cmluZywgRWxlbWVudCwnLFxuICAgICAgJ0VsZW1lbnRbXSwgb3IgTm9kZUxpc3QuJyxcbiAgICBdLmpvaW4oJyAnKVxuICApO1xuXG4gIGVycm9yV2hlbihcbiAgICBkaWRQYXNzUGxhaW5PYmplY3QsXG4gICAgW1xuICAgICAgJ3RpcHB5KCkgd2FzIHBhc3NlZCBhIHBsYWluIG9iamVjdCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGFzIGFuIGFyZ3VtZW50JyxcbiAgICAgICdmb3IgdmlydHVhbCBwb3NpdGlvbmluZy4gVXNlIHByb3BzLmdldFJlZmVyZW5jZUNsaWVudFJlY3QgaW5zdGVhZC4nLFxuICAgIF0uam9pbignICcpXG4gICk7XG59XG4iLCAiaW1wb3J0IHtEZWZhdWx0UHJvcHMsIFBsdWdpbiwgUHJvcHMsIFJlZmVyZW5jZUVsZW1lbnQsIFRpcHB5fSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIGhhc093blByb3BlcnR5LFxuICByZW1vdmVQcm9wZXJ0aWVzLFxuICBpbnZva2VXaXRoQXJnc09yUmV0dXJuLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7d2FybldoZW59IGZyb20gJy4vdmFsaWRhdGlvbic7XG5pbXBvcnQge1RJUFBZX0RFRkFVTFRfQVBQRU5EX1RPfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IHBsdWdpblByb3BzID0ge1xuICBhbmltYXRlRmlsbDogZmFsc2UsXG4gIGZvbGxvd0N1cnNvcjogZmFsc2UsXG4gIGlubGluZVBvc2l0aW9uaW5nOiBmYWxzZSxcbiAgc3RpY2t5OiBmYWxzZSxcbn07XG5cbmNvbnN0IHJlbmRlclByb3BzID0ge1xuICBhbGxvd0hUTUw6IGZhbHNlLFxuICBhbmltYXRpb246ICdmYWRlJyxcbiAgYXJyb3c6IHRydWUsXG4gIGNvbnRlbnQ6ICcnLFxuICBpbmVydGlhOiBmYWxzZSxcbiAgbWF4V2lkdGg6IDM1MCxcbiAgcm9sZTogJ3Rvb2x0aXAnLFxuICB0aGVtZTogJycsXG4gIHpJbmRleDogOTk5OSxcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UHJvcHM6IERlZmF1bHRQcm9wcyA9IHtcbiAgYXBwZW5kVG86IFRJUFBZX0RFRkFVTFRfQVBQRU5EX1RPLFxuICBhcmlhOiB7XG4gICAgY29udGVudDogJ2F1dG8nLFxuICAgIGV4cGFuZGVkOiAnYXV0bycsXG4gIH0sXG4gIGRlbGF5OiAwLFxuICBkdXJhdGlvbjogWzMwMCwgMjUwXSxcbiAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdDogbnVsbCxcbiAgaGlkZU9uQ2xpY2s6IHRydWUsXG4gIGlnbm9yZUF0dHJpYnV0ZXM6IGZhbHNlLFxuICBpbnRlcmFjdGl2ZTogZmFsc2UsXG4gIGludGVyYWN0aXZlQm9yZGVyOiAyLFxuICBpbnRlcmFjdGl2ZURlYm91bmNlOiAwLFxuICBtb3ZlVHJhbnNpdGlvbjogJycsXG4gIG9mZnNldDogWzAsIDEwXSxcbiAgb25BZnRlclVwZGF0ZSgpIHt9LFxuICBvbkJlZm9yZVVwZGF0ZSgpIHt9LFxuICBvbkNyZWF0ZSgpIHt9LFxuICBvbkRlc3Ryb3koKSB7fSxcbiAgb25IaWRkZW4oKSB7fSxcbiAgb25IaWRlKCkge30sXG4gIG9uTW91bnQoKSB7fSxcbiAgb25TaG93KCkge30sXG4gIG9uU2hvd24oKSB7fSxcbiAgb25UcmlnZ2VyKCkge30sXG4gIG9uVW50cmlnZ2VyKCkge30sXG4gIG9uQ2xpY2tPdXRzaWRlKCkge30sXG4gIHBsYWNlbWVudDogJ3RvcCcsXG4gIHBsdWdpbnM6IFtdLFxuICBwb3BwZXJPcHRpb25zOiB7fSxcbiAgcmVuZGVyOiBudWxsLFxuICBzaG93T25DcmVhdGU6IGZhbHNlLFxuICB0b3VjaDogdHJ1ZSxcbiAgdHJpZ2dlcjogJ21vdXNlZW50ZXIgZm9jdXMnLFxuICB0cmlnZ2VyVGFyZ2V0OiBudWxsLFxuICAuLi5wbHVnaW5Qcm9wcyxcbiAgLi4ucmVuZGVyUHJvcHMsXG59O1xuXG5jb25zdCBkZWZhdWx0S2V5cyA9IE9iamVjdC5rZXlzKGRlZmF1bHRQcm9wcyk7XG5cbmV4cG9ydCBjb25zdCBzZXREZWZhdWx0UHJvcHM6IFRpcHB5WydzZXREZWZhdWx0UHJvcHMnXSA9IChwYXJ0aWFsUHJvcHMpID0+IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKF9fREVWX18pIHtcbiAgICB2YWxpZGF0ZVByb3BzKHBhcnRpYWxQcm9wcywgW10pO1xuICB9XG5cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHBhcnRpYWxQcm9wcykgYXMgQXJyYXk8a2V5b2YgRGVmYXVsdFByb3BzPjtcbiAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAoZGVmYXVsdFByb3BzIGFzIGFueSlba2V5XSA9IHBhcnRpYWxQcm9wc1trZXldO1xuICB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbmRlZFBhc3NlZFByb3BzKFxuICBwYXNzZWRQcm9wczogUGFydGlhbDxQcm9wcz4gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogUGFydGlhbDxQcm9wcz4ge1xuICBjb25zdCBwbHVnaW5zID0gcGFzc2VkUHJvcHMucGx1Z2lucyB8fCBbXTtcbiAgY29uc3QgcGx1Z2luUHJvcHMgPSBwbHVnaW5zLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKGFjYywgcGx1Z2luKSA9PiB7XG4gICAgY29uc3Qge25hbWUsIGRlZmF1bHRWYWx1ZX0gPSBwbHVnaW47XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgYWNjW25hbWVdID1cbiAgICAgICAgcGFzc2VkUHJvcHNbbmFtZV0gIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gcGFzc2VkUHJvcHNbbmFtZV1cbiAgICAgICAgICA6IChkZWZhdWx0UHJvcHMgYXMgYW55KVtuYW1lXSA/PyBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucGFzc2VkUHJvcHMsXG4gICAgLi4ucGx1Z2luUHJvcHMsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhQXR0cmlidXRlUHJvcHMoXG4gIHJlZmVyZW5jZTogUmVmZXJlbmNlRWxlbWVudCxcbiAgcGx1Z2luczogUGx1Z2luW11cbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgcHJvcEtleXMgPSBwbHVnaW5zXG4gICAgPyBPYmplY3Qua2V5cyhnZXRFeHRlbmRlZFBhc3NlZFByb3BzKHsuLi5kZWZhdWx0UHJvcHMsIHBsdWdpbnN9KSlcbiAgICA6IGRlZmF1bHRLZXlzO1xuXG4gIGNvbnN0IHByb3BzID0gcHJvcEtleXMucmVkdWNlKFxuICAgIChhY2M6IFBhcnRpYWw8UHJvcHM+ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWVBc1N0cmluZyA9IChcbiAgICAgICAgcmVmZXJlbmNlLmdldEF0dHJpYnV0ZShgZGF0YS10aXBweS0ke2tleX1gKSB8fCAnJ1xuICAgICAgKS50cmltKCk7XG5cbiAgICAgIGlmICghdmFsdWVBc1N0cmluZykge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2V5ID09PSAnY29udGVudCcpIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZUFzU3RyaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhY2Nba2V5XSA9IEpTT04ucGFyc2UodmFsdWVBc1N0cmluZyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlQXNTdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9XG4gICk7XG5cbiAgcmV0dXJuIHByb3BzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZhbHVhdGVQcm9wcyhcbiAgcmVmZXJlbmNlOiBSZWZlcmVuY2VFbGVtZW50LFxuICBwcm9wczogUHJvcHNcbik6IFByb3BzIHtcbiAgY29uc3Qgb3V0ID0ge1xuICAgIC4uLnByb3BzLFxuICAgIGNvbnRlbnQ6IGludm9rZVdpdGhBcmdzT3JSZXR1cm4ocHJvcHMuY29udGVudCwgW3JlZmVyZW5jZV0pLFxuICAgIC4uLihwcm9wcy5pZ25vcmVBdHRyaWJ1dGVzXG4gICAgICA/IHt9XG4gICAgICA6IGdldERhdGFBdHRyaWJ1dGVQcm9wcyhyZWZlcmVuY2UsIHByb3BzLnBsdWdpbnMpKSxcbiAgfTtcblxuICBvdXQuYXJpYSA9IHtcbiAgICAuLi5kZWZhdWx0UHJvcHMuYXJpYSxcbiAgICAuLi5vdXQuYXJpYSxcbiAgfTtcblxuICBvdXQuYXJpYSA9IHtcbiAgICBleHBhbmRlZDpcbiAgICAgIG91dC5hcmlhLmV4cGFuZGVkID09PSAnYXV0bycgPyBwcm9wcy5pbnRlcmFjdGl2ZSA6IG91dC5hcmlhLmV4cGFuZGVkLFxuICAgIGNvbnRlbnQ6XG4gICAgICBvdXQuYXJpYS5jb250ZW50ID09PSAnYXV0bydcbiAgICAgICAgPyBwcm9wcy5pbnRlcmFjdGl2ZVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogJ2Rlc2NyaWJlZGJ5J1xuICAgICAgICA6IG91dC5hcmlhLmNvbnRlbnQsXG4gIH07XG5cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcHMoXG4gIHBhcnRpYWxQcm9wczogUGFydGlhbDxQcm9wcz4gPSB7fSxcbiAgcGx1Z2luczogUGx1Z2luW10gPSBbXVxuKTogdm9pZCB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwYXJ0aWFsUHJvcHMpIGFzIEFycmF5PGtleW9mIFByb3BzPjtcbiAga2V5cy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgY29uc3Qgbm9uUGx1Z2luUHJvcHMgPSByZW1vdmVQcm9wZXJ0aWVzKFxuICAgICAgZGVmYXVsdFByb3BzLFxuICAgICAgT2JqZWN0LmtleXMocGx1Z2luUHJvcHMpXG4gICAgKTtcblxuICAgIGxldCBkaWRQYXNzVW5rbm93blByb3AgPSAhaGFzT3duUHJvcGVydHkobm9uUGx1Z2luUHJvcHMsIHByb3ApO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHByb3AgZXhpc3RzIGluIGBwbHVnaW5zYFxuICAgIGlmIChkaWRQYXNzVW5rbm93blByb3ApIHtcbiAgICAgIGRpZFBhc3NVbmtub3duUHJvcCA9XG4gICAgICAgIHBsdWdpbnMuZmlsdGVyKChwbHVnaW4pID0+IHBsdWdpbi5uYW1lID09PSBwcm9wKS5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgd2FybldoZW4oXG4gICAgICBkaWRQYXNzVW5rbm93blByb3AsXG4gICAgICBbXG4gICAgICAgIGBcXGAke3Byb3B9XFxgYCxcbiAgICAgICAgXCJpcyBub3QgYSB2YWxpZCBwcm9wLiBZb3UgbWF5IGhhdmUgc3BlbGxlZCBpdCBpbmNvcnJlY3RseSwgb3IgaWYgaXQnc1wiLFxuICAgICAgICAnYSBwbHVnaW4sIGZvcmdvdCB0byBwYXNzIGl0IGluIGFuIGFycmF5IGFzIHByb3BzLnBsdWdpbnMuJyxcbiAgICAgICAgJ1xcblxcbicsXG4gICAgICAgICdBbGwgcHJvcHM6IGh0dHBzOi8vYXRvbWlrcy5naXRodWIuaW8vdGlwcHlqcy92Ni9hbGwtcHJvcHMvXFxuJyxcbiAgICAgICAgJ1BsdWdpbnM6IGh0dHBzOi8vYXRvbWlrcy5naXRodWIuaW8vdGlwcHlqcy92Ni9wbHVnaW5zLycsXG4gICAgICBdLmpvaW4oJyAnKVxuICAgICk7XG4gIH0pO1xufVxuIiwgImltcG9ydCB7XG4gIEFSUk9XX0NMQVNTLFxuICBCQUNLRFJPUF9DTEFTUyxcbiAgQk9YX0NMQVNTLFxuICBDT05URU5UX0NMQVNTLFxuICBTVkdfQVJST1dfQ0xBU1MsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7ZGl2LCBpc0VsZW1lbnR9IGZyb20gJy4vZG9tLXV0aWxzJztcbmltcG9ydCB7SW5zdGFuY2UsIFBvcHBlckVsZW1lbnQsIFByb3BzfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7UG9wcGVyQ2hpbGRyZW59IGZyb20gJy4vdHlwZXMtaW50ZXJuYWwnO1xuaW1wb3J0IHthcnJheUZyb219IGZyb20gJy4vdXRpbHMnO1xuXG4vLyBGaXJlZm94IGV4dGVuc2lvbnMgZG9uJ3QgYWxsb3cgLmlubmVySFRNTCA9IFwiLi4uXCIgcHJvcGVydHkuIFRoaXMgdHJpY2tzIGl0LlxuY29uc3QgaW5uZXJIVE1MID0gKCk6ICdpbm5lckhUTUwnID0+ICdpbm5lckhUTUwnO1xuXG5mdW5jdGlvbiBkYW5nZXJvdXNseVNldElubmVySFRNTChlbGVtZW50OiBFbGVtZW50LCBodG1sOiBzdHJpbmcpOiB2b2lkIHtcbiAgZWxlbWVudFtpbm5lckhUTUwoKV0gPSBodG1sO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBcnJvd0VsZW1lbnQodmFsdWU6IFByb3BzWydhcnJvdyddKTogSFRNTERpdkVsZW1lbnQge1xuICBjb25zdCBhcnJvdyA9IGRpdigpO1xuXG4gIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgIGFycm93LmNsYXNzTmFtZSA9IEFSUk9XX0NMQVNTO1xuICB9IGVsc2Uge1xuICAgIGFycm93LmNsYXNzTmFtZSA9IFNWR19BUlJPV19DTEFTUztcblxuICAgIGlmIChpc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICBhcnJvdy5hcHBlbmRDaGlsZCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKGFycm93LCB2YWx1ZSBhcyBzdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcnJvdztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENvbnRlbnQoY29udGVudDogSFRNTERpdkVsZW1lbnQsIHByb3BzOiBQcm9wcyk6IHZvaWQge1xuICBpZiAoaXNFbGVtZW50KHByb3BzLmNvbnRlbnQpKSB7XG4gICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwoY29udGVudCwgJycpO1xuICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQocHJvcHMuY29udGVudCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLmNvbnRlbnQgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJvcHMuYWxsb3dIVE1MKSB7XG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTChjb250ZW50LCBwcm9wcy5jb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudC50ZXh0Q29udGVudCA9IHByb3BzLmNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGlsZHJlbihwb3BwZXI6IFBvcHBlckVsZW1lbnQpOiBQb3BwZXJDaGlsZHJlbiB7XG4gIGNvbnN0IGJveCA9IHBvcHBlci5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgY29uc3QgYm94Q2hpbGRyZW4gPSBhcnJheUZyb20oYm94LmNoaWxkcmVuKTtcblxuICByZXR1cm4ge1xuICAgIGJveCxcbiAgICBjb250ZW50OiBib3hDaGlsZHJlbi5maW5kKChub2RlKSA9PiBub2RlLmNsYXNzTGlzdC5jb250YWlucyhDT05URU5UX0NMQVNTKSksXG4gICAgYXJyb3c6IGJveENoaWxkcmVuLmZpbmQoXG4gICAgICAobm9kZSkgPT5cbiAgICAgICAgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoQVJST1dfQ0xBU1MpIHx8XG4gICAgICAgIG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKFNWR19BUlJPV19DTEFTUylcbiAgICApLFxuICAgIGJhY2tkcm9wOiBib3hDaGlsZHJlbi5maW5kKChub2RlKSA9PlxuICAgICAgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoQkFDS0RST1BfQ0xBU1MpXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcihcbiAgaW5zdGFuY2U6IEluc3RhbmNlXG4pOiB7XG4gIHBvcHBlcjogUG9wcGVyRWxlbWVudDtcbiAgb25VcGRhdGU/OiAocHJldlByb3BzOiBQcm9wcywgbmV4dFByb3BzOiBQcm9wcykgPT4gdm9pZDtcbn0ge1xuICBjb25zdCBwb3BwZXIgPSBkaXYoKTtcblxuICBjb25zdCBib3ggPSBkaXYoKTtcbiAgYm94LmNsYXNzTmFtZSA9IEJPWF9DTEFTUztcbiAgYm94LnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsICdoaWRkZW4nKTtcbiAgYm94LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcblxuICBjb25zdCBjb250ZW50ID0gZGl2KCk7XG4gIGNvbnRlbnQuY2xhc3NOYW1lID0gQ09OVEVOVF9DTEFTUztcbiAgY29udGVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCAnaGlkZGVuJyk7XG5cbiAgc2V0Q29udGVudChjb250ZW50LCBpbnN0YW5jZS5wcm9wcyk7XG5cbiAgcG9wcGVyLmFwcGVuZENoaWxkKGJveCk7XG4gIGJveC5hcHBlbmRDaGlsZChjb250ZW50KTtcblxuICBvblVwZGF0ZShpbnN0YW5jZS5wcm9wcywgaW5zdGFuY2UucHJvcHMpO1xuXG4gIGZ1bmN0aW9uIG9uVXBkYXRlKHByZXZQcm9wczogUHJvcHMsIG5leHRQcm9wczogUHJvcHMpOiB2b2lkIHtcbiAgICBjb25zdCB7Ym94LCBjb250ZW50LCBhcnJvd30gPSBnZXRDaGlsZHJlbihwb3BwZXIpO1xuXG4gICAgaWYgKG5leHRQcm9wcy50aGVtZSkge1xuICAgICAgYm94LnNldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsIG5leHRQcm9wcy50aGVtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJveC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5leHRQcm9wcy5hbmltYXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBib3guc2V0QXR0cmlidXRlKCdkYXRhLWFuaW1hdGlvbicsIG5leHRQcm9wcy5hbmltYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3gucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWFuaW1hdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChuZXh0UHJvcHMuaW5lcnRpYSkge1xuICAgICAgYm94LnNldEF0dHJpYnV0ZSgnZGF0YS1pbmVydGlhJywgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3gucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWluZXJ0aWEnKTtcbiAgICB9XG5cbiAgICBib3guc3R5bGUubWF4V2lkdGggPVxuICAgICAgdHlwZW9mIG5leHRQcm9wcy5tYXhXaWR0aCA9PT0gJ251bWJlcidcbiAgICAgICAgPyBgJHtuZXh0UHJvcHMubWF4V2lkdGh9cHhgXG4gICAgICAgIDogbmV4dFByb3BzLm1heFdpZHRoO1xuXG4gICAgaWYgKG5leHRQcm9wcy5yb2xlKSB7XG4gICAgICBib3guc2V0QXR0cmlidXRlKCdyb2xlJywgbmV4dFByb3BzLnJvbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3gucmVtb3ZlQXR0cmlidXRlKCdyb2xlJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJldlByb3BzLmNvbnRlbnQgIT09IG5leHRQcm9wcy5jb250ZW50IHx8XG4gICAgICBwcmV2UHJvcHMuYWxsb3dIVE1MICE9PSBuZXh0UHJvcHMuYWxsb3dIVE1MXG4gICAgKSB7XG4gICAgICBzZXRDb250ZW50KGNvbnRlbnQsIGluc3RhbmNlLnByb3BzKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFByb3BzLmFycm93KSB7XG4gICAgICBpZiAoIWFycm93KSB7XG4gICAgICAgIGJveC5hcHBlbmRDaGlsZChjcmVhdGVBcnJvd0VsZW1lbnQobmV4dFByb3BzLmFycm93KSk7XG4gICAgICB9IGVsc2UgaWYgKHByZXZQcm9wcy5hcnJvdyAhPT0gbmV4dFByb3BzLmFycm93KSB7XG4gICAgICAgIGJveC5yZW1vdmVDaGlsZChhcnJvdyk7XG4gICAgICAgIGJveC5hcHBlbmRDaGlsZChjcmVhdGVBcnJvd0VsZW1lbnQobmV4dFByb3BzLmFycm93KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcnJvdykge1xuICAgICAgYm94LnJlbW92ZUNoaWxkKGFycm93ISk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwb3BwZXIsXG4gICAgb25VcGRhdGUsXG4gIH07XG59XG5cbi8vIFJ1bnRpbWUgY2hlY2sgdG8gaWRlbnRpZnkgaWYgdGhlIHJlbmRlciBmdW5jdGlvbiBpcyB0aGUgZGVmYXVsdCBvbmU7IHRoaXNcbi8vIHdheSB3ZSBjYW4gYXBwbHkgZGVmYXVsdCBDU1MgdHJhbnNpdGlvbnMgbG9naWMgYW5kIGl0IGNhbiBiZSB0cmVlLXNoYWtlbiBhd2F5XG5yZW5kZXIuJCR0aXBweSA9IHRydWU7XG4iLCAiaW1wb3J0IHtjcmVhdGVQb3BwZXIsIFN0cmljdE1vZGlmaWVycywgTW9kaWZpZXJ9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlJztcbmltcG9ydCB7Y3VycmVudElucHV0fSBmcm9tICcuL2JpbmRHbG9iYWxFdmVudExpc3RlbmVycyc7XG5pbXBvcnQge2lzSUUxMX0gZnJvbSAnLi9icm93c2VyJztcbmltcG9ydCB7VElQUFlfREVGQVVMVF9BUFBFTkRfVE8sIFRPVUNIX09QVElPTlN9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGFjdHVhbENvbnRhaW5zLFxuICBkaXYsXG4gIGdldE93bmVyRG9jdW1lbnQsXG4gIGlzQ3Vyc29yT3V0c2lkZUludGVyYWN0aXZlQm9yZGVyLFxuICBpc01vdXNlRXZlbnQsXG4gIHNldFRyYW5zaXRpb25EdXJhdGlvbixcbiAgc2V0VmlzaWJpbGl0eVN0YXRlLFxuICB1cGRhdGVUcmFuc2l0aW9uRW5kTGlzdGVuZXIsXG59IGZyb20gJy4vZG9tLXV0aWxzJztcbmltcG9ydCB7ZGVmYXVsdFByb3BzLCBldmFsdWF0ZVByb3BzLCBnZXRFeHRlbmRlZFBhc3NlZFByb3BzfSBmcm9tICcuL3Byb3BzJztcbmltcG9ydCB7Z2V0Q2hpbGRyZW59IGZyb20gJy4vdGVtcGxhdGUnO1xuaW1wb3J0IHtcbiAgQ29udGVudCxcbiAgSW5zdGFuY2UsXG4gIExpZmVjeWNsZUhvb2tzLFxuICBQb3BwZXJFbGVtZW50LFxuICBQcm9wcyxcbiAgUmVmZXJlbmNlRWxlbWVudCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge0xpc3RlbmVyT2JqZWN0LCBQb3BwZXJUcmVlRGF0YSwgUG9wcGVyQ2hpbGRyZW59IGZyb20gJy4vdHlwZXMtaW50ZXJuYWwnO1xuaW1wb3J0IHtcbiAgYXJyYXlGcm9tLFxuICBkZWJvdW5jZSxcbiAgZ2V0VmFsdWVBdEluZGV4T3JSZXR1cm4sXG4gIGludm9rZVdpdGhBcmdzT3JSZXR1cm4sXG4gIG5vcm1hbGl6ZVRvQXJyYXksXG4gIHB1c2hJZlVuaXF1ZSxcbiAgc3BsaXRCeVNwYWNlcyxcbiAgdW5pcXVlLFxuICByZW1vdmVVbmRlZmluZWRQcm9wcyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge2NyZWF0ZU1lbW9yeUxlYWtXYXJuaW5nLCBlcnJvcldoZW4sIHdhcm5XaGVufSBmcm9tICcuL3ZhbGlkYXRpb24nO1xuXG5sZXQgaWRDb3VudGVyID0gMTtcbmxldCBtb3VzZU1vdmVMaXN0ZW5lcnM6ICgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQpW10gPSBbXTtcblxuLy8gVXNlZCBieSBgaGlkZUFsbCgpYFxuZXhwb3J0IGxldCBtb3VudGVkSW5zdGFuY2VzOiBJbnN0YW5jZVtdID0gW107XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVRpcHB5KFxuICByZWZlcmVuY2U6IFJlZmVyZW5jZUVsZW1lbnQsXG4gIHBhc3NlZFByb3BzOiBQYXJ0aWFsPFByb3BzPlxuKTogSW5zdGFuY2Uge1xuICBjb25zdCBwcm9wcyA9IGV2YWx1YXRlUHJvcHMocmVmZXJlbmNlLCB7XG4gICAgLi4uZGVmYXVsdFByb3BzLFxuICAgIC4uLmdldEV4dGVuZGVkUGFzc2VkUHJvcHMocmVtb3ZlVW5kZWZpbmVkUHJvcHMocGFzc2VkUHJvcHMpKSxcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIPCflJIgUHJpdmF0ZSBtZW1iZXJzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBsZXQgc2hvd1RpbWVvdXQ6IGFueTtcbiAgbGV0IGhpZGVUaW1lb3V0OiBhbnk7XG4gIGxldCBzY2hlZHVsZUhpZGVBbmltYXRpb25GcmFtZTogbnVtYmVyO1xuICBsZXQgaXNWaXNpYmxlRnJvbUNsaWNrID0gZmFsc2U7XG4gIGxldCBkaWRIaWRlRHVlVG9Eb2N1bWVudE1vdXNlRG93biA9IGZhbHNlO1xuICBsZXQgZGlkVG91Y2hNb3ZlID0gZmFsc2U7XG4gIGxldCBpZ25vcmVPbkZpcnN0VXBkYXRlID0gZmFsc2U7XG4gIGxldCBsYXN0VHJpZ2dlckV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZDtcbiAgbGV0IGN1cnJlbnRUcmFuc2l0aW9uRW5kTGlzdGVuZXI6IChldmVudDogVHJhbnNpdGlvbkV2ZW50KSA9PiB2b2lkO1xuICBsZXQgb25GaXJzdFVwZGF0ZTogKCkgPT4gdm9pZDtcbiAgbGV0IGxpc3RlbmVyczogTGlzdGVuZXJPYmplY3RbXSA9IFtdO1xuICBsZXQgZGVib3VuY2VkT25Nb3VzZU1vdmUgPSBkZWJvdW5jZShvbk1vdXNlTW92ZSwgcHJvcHMuaW50ZXJhY3RpdmVEZWJvdW5jZSk7XG4gIGxldCBjdXJyZW50VGFyZ2V0OiBFbGVtZW50O1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyDwn5SRIFB1YmxpYyBtZW1iZXJzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBjb25zdCBpZCA9IGlkQ291bnRlcisrO1xuICBjb25zdCBwb3BwZXJJbnN0YW5jZSA9IG51bGw7XG4gIGNvbnN0IHBsdWdpbnMgPSB1bmlxdWUocHJvcHMucGx1Z2lucyk7XG5cbiAgY29uc3Qgc3RhdGUgPSB7XG4gICAgLy8gSXMgdGhlIGluc3RhbmNlIGN1cnJlbnRseSBlbmFibGVkP1xuICAgIGlzRW5hYmxlZDogdHJ1ZSxcbiAgICAvLyBJcyB0aGUgdGlwcHkgY3VycmVudGx5IHNob3dpbmcgYW5kIG5vdCB0cmFuc2l0aW9uaW5nIG91dD9cbiAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgIC8vIEhhcyB0aGUgaW5zdGFuY2UgYmVlbiBkZXN0cm95ZWQ/XG4gICAgaXNEZXN0cm95ZWQ6IGZhbHNlLFxuICAgIC8vIElzIHRoZSB0aXBweSBjdXJyZW50bHkgbW91bnRlZCB0byB0aGUgRE9NP1xuICAgIGlzTW91bnRlZDogZmFsc2UsXG4gICAgLy8gSGFzIHRoZSB0aXBweSBmaW5pc2hlZCB0cmFuc2l0aW9uaW5nIGluP1xuICAgIGlzU2hvd246IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0IGluc3RhbmNlOiBJbnN0YW5jZSA9IHtcbiAgICAvLyBwcm9wZXJ0aWVzXG4gICAgaWQsXG4gICAgcmVmZXJlbmNlLFxuICAgIHBvcHBlcjogZGl2KCksXG4gICAgcG9wcGVySW5zdGFuY2UsXG4gICAgcHJvcHMsXG4gICAgc3RhdGUsXG4gICAgcGx1Z2lucyxcbiAgICAvLyBtZXRob2RzXG4gICAgY2xlYXJEZWxheVRpbWVvdXRzLFxuICAgIHNldFByb3BzLFxuICAgIHNldENvbnRlbnQsXG4gICAgc2hvdyxcbiAgICBoaWRlLFxuICAgIGhpZGVXaXRoSW50ZXJhY3Rpdml0eSxcbiAgICBlbmFibGUsXG4gICAgZGlzYWJsZSxcbiAgICB1bm1vdW50LFxuICAgIGRlc3Ryb3ksXG4gIH07XG5cbiAgLy8gVE9ETzogSW52ZXN0aWdhdGUgd2h5IHRoaXMgZWFybHkgcmV0dXJuIGNhdXNlcyBhIFREWiBlcnJvciBpbiB0aGUgdGVzdHMg4oCUXG4gIC8vIGl0IGRvZXNuJ3Qgc2VlbSB0byBoYXBwZW4gaW4gdGhlIGJyb3dzZXJcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghcHJvcHMucmVuZGVyKSB7XG4gICAgaWYgKF9fREVWX18pIHtcbiAgICAgIGVycm9yV2hlbih0cnVlLCAncmVuZGVyKCkgZnVuY3Rpb24gaGFzIG5vdCBiZWVuIHN1cHBsaWVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJbml0aWFsIG11dGF0aW9uc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgY29uc3Qge3BvcHBlciwgb25VcGRhdGV9ID0gcHJvcHMucmVuZGVyKGluc3RhbmNlKTtcblxuICBwb3BwZXIuc2V0QXR0cmlidXRlKCdkYXRhLV9fTkFNRVNQQUNFX1BSRUZJWF9fLXJvb3QnLCAnJyk7XG4gIHBvcHBlci5pZCA9IGBfX05BTUVTUEFDRV9QUkVGSVhfXy0ke2luc3RhbmNlLmlkfWA7XG5cbiAgaW5zdGFuY2UucG9wcGVyID0gcG9wcGVyO1xuICByZWZlcmVuY2UuX3RpcHB5ID0gaW5zdGFuY2U7XG4gIHBvcHBlci5fdGlwcHkgPSBpbnN0YW5jZTtcblxuICBjb25zdCBwbHVnaW5zSG9va3MgPSBwbHVnaW5zLm1hcCgocGx1Z2luKSA9PiBwbHVnaW4uZm4oaW5zdGFuY2UpKTtcbiAgY29uc3QgaGFzQXJpYUV4cGFuZGVkID0gcmVmZXJlbmNlLmhhc0F0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpO1xuXG4gIGFkZExpc3RlbmVycygpO1xuICBoYW5kbGVBcmlhRXhwYW5kZWRBdHRyaWJ1dGUoKTtcbiAgaGFuZGxlU3R5bGVzKCk7XG5cbiAgaW52b2tlSG9vaygnb25DcmVhdGUnLCBbaW5zdGFuY2VdKTtcblxuICBpZiAocHJvcHMuc2hvd09uQ3JlYXRlKSB7XG4gICAgc2NoZWR1bGVTaG93KCk7XG4gIH1cblxuICAvLyBQcmV2ZW50IGEgdGlwcHkgd2l0aCBhIGRlbGF5IGZyb20gaGlkaW5nIGlmIHRoZSBjdXJzb3IgbGVmdCB0aGVuIHJldHVybmVkXG4gIC8vIGJlZm9yZSBpdCBzdGFydGVkIGhpZGluZ1xuICBwb3BwZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHtcbiAgICBpZiAoaW5zdGFuY2UucHJvcHMuaW50ZXJhY3RpdmUgJiYgaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlKSB7XG4gICAgICBpbnN0YW5jZS5jbGVhckRlbGF5VGltZW91dHMoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHBvcHBlci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIGluc3RhbmNlLnByb3BzLmludGVyYWN0aXZlICYmXG4gICAgICBpbnN0YW5jZS5wcm9wcy50cmlnZ2VyLmluZGV4T2YoJ21vdXNlZW50ZXInKSA+PSAwXG4gICAgKSB7XG4gICAgICBnZXREb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGRlYm91bmNlZE9uTW91c2VNb3ZlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbnN0YW5jZTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8g8J+UkiBQcml2YXRlIG1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGZ1bmN0aW9uIGdldE5vcm1hbGl6ZWRUb3VjaFNldHRpbmdzKCk6IFtzdHJpbmcgfCBib29sZWFuLCBudW1iZXJdIHtcbiAgICBjb25zdCB7dG91Y2h9ID0gaW5zdGFuY2UucHJvcHM7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodG91Y2gpID8gdG91Y2ggOiBbdG91Y2gsIDBdO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0SXNDdXN0b21Ub3VjaEJlaGF2aW9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBnZXROb3JtYWxpemVkVG91Y2hTZXR0aW5ncygpWzBdID09PSAnaG9sZCc7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRJc0RlZmF1bHRSZW5kZXJGbigpOiBib29sZWFuIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuICEhaW5zdGFuY2UucHJvcHMucmVuZGVyPy4kJHRpcHB5O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q3VycmVudFRhcmdldCgpOiBFbGVtZW50IHtcbiAgICByZXR1cm4gY3VycmVudFRhcmdldCB8fCByZWZlcmVuY2U7XG4gIH1cblxuICBmdW5jdGlvbiBnZXREb2N1bWVudCgpOiBEb2N1bWVudCB7XG4gICAgY29uc3QgcGFyZW50ID0gZ2V0Q3VycmVudFRhcmdldCgpLnBhcmVudE5vZGUgYXMgRWxlbWVudDtcbiAgICByZXR1cm4gcGFyZW50ID8gZ2V0T3duZXJEb2N1bWVudChwYXJlbnQpIDogZG9jdW1lbnQ7XG4gIH1cblxuICBmdW5jdGlvbiBnZXREZWZhdWx0VGVtcGxhdGVDaGlsZHJlbigpOiBQb3BwZXJDaGlsZHJlbiB7XG4gICAgcmV0dXJuIGdldENoaWxkcmVuKHBvcHBlcik7XG4gIH1cblxuICBmdW5jdGlvbiBnZXREZWxheShpc1Nob3c6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIC8vIEZvciB0b3VjaCBvciBrZXlib2FyZCBpbnB1dCwgZm9yY2UgYDBgIGRlbGF5IGZvciBVWCByZWFzb25zXG4gICAgLy8gQWxzbyBpZiB0aGUgaW5zdGFuY2UgaXMgbW91bnRlZCBidXQgbm90IHZpc2libGUgKHRyYW5zaXRpb25pbmcgb3V0KSxcbiAgICAvLyBpZ25vcmUgZGVsYXlcbiAgICBpZiAoXG4gICAgICAoaW5zdGFuY2Uuc3RhdGUuaXNNb3VudGVkICYmICFpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGUpIHx8XG4gICAgICBjdXJyZW50SW5wdXQuaXNUb3VjaCB8fFxuICAgICAgKGxhc3RUcmlnZ2VyRXZlbnQgJiYgbGFzdFRyaWdnZXJFdmVudC50eXBlID09PSAnZm9jdXMnKVxuICAgICkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFZhbHVlQXRJbmRleE9yUmV0dXJuKFxuICAgICAgaW5zdGFuY2UucHJvcHMuZGVsYXksXG4gICAgICBpc1Nob3cgPyAwIDogMSxcbiAgICAgIGRlZmF1bHRQcm9wcy5kZWxheVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTdHlsZXMoZnJvbUhpZGUgPSBmYWxzZSk6IHZvaWQge1xuICAgIHBvcHBlci5zdHlsZS5wb2ludGVyRXZlbnRzID1cbiAgICAgIGluc3RhbmNlLnByb3BzLmludGVyYWN0aXZlICYmICFmcm9tSGlkZSA/ICcnIDogJ25vbmUnO1xuICAgIHBvcHBlci5zdHlsZS56SW5kZXggPSBgJHtpbnN0YW5jZS5wcm9wcy56SW5kZXh9YDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUhvb2soXG4gICAgaG9vazoga2V5b2YgTGlmZWN5Y2xlSG9va3MsXG4gICAgYXJnczogW0luc3RhbmNlLCBhbnk/XSxcbiAgICBzaG91bGRJbnZva2VQcm9wc0hvb2sgPSB0cnVlXG4gICk6IHZvaWQge1xuICAgIHBsdWdpbnNIb29rcy5mb3JFYWNoKChwbHVnaW5Ib29rcykgPT4ge1xuICAgICAgaWYgKHBsdWdpbkhvb2tzW2hvb2tdKSB7XG4gICAgICAgIHBsdWdpbkhvb2tzW2hvb2tdISguLi5hcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzaG91bGRJbnZva2VQcm9wc0hvb2spIHtcbiAgICAgIGluc3RhbmNlLnByb3BzW2hvb2tdKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUFyaWFDb250ZW50QXR0cmlidXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHthcmlhfSA9IGluc3RhbmNlLnByb3BzO1xuXG4gICAgaWYgKCFhcmlhLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyID0gYGFyaWEtJHthcmlhLmNvbnRlbnR9YDtcbiAgICBjb25zdCBpZCA9IHBvcHBlci5pZDtcbiAgICBjb25zdCBub2RlcyA9IG5vcm1hbGl6ZVRvQXJyYXkoaW5zdGFuY2UucHJvcHMudHJpZ2dlclRhcmdldCB8fCByZWZlcmVuY2UpO1xuXG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gbm9kZS5nZXRBdHRyaWJ1dGUoYXR0cik7XG5cbiAgICAgIGlmIChpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGUpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ciwgY3VycmVudFZhbHVlID8gYCR7Y3VycmVudFZhbHVlfSAke2lkfWAgOiBpZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSBjdXJyZW50VmFsdWUgJiYgY3VycmVudFZhbHVlLnJlcGxhY2UoaWQsICcnKS50cmltKCk7XG5cbiAgICAgICAgaWYgKG5leHRWYWx1ZSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIG5leHRWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUFyaWFFeHBhbmRlZEF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICBpZiAoaGFzQXJpYUV4cGFuZGVkIHx8ICFpbnN0YW5jZS5wcm9wcy5hcmlhLmV4cGFuZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZXMgPSBub3JtYWxpemVUb0FycmF5KGluc3RhbmNlLnByb3BzLnRyaWdnZXJUYXJnZXQgfHwgcmVmZXJlbmNlKTtcblxuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGlmIChpbnN0YW5jZS5wcm9wcy5pbnRlcmFjdGl2ZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAnYXJpYS1leHBhbmRlZCcsXG4gICAgICAgICAgaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlICYmIG5vZGUgPT09IGdldEN1cnJlbnRUYXJnZXQoKVxuICAgICAgICAgICAgPyAndHJ1ZSdcbiAgICAgICAgICAgIDogJ2ZhbHNlJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFudXBJbnRlcmFjdGl2ZU1vdXNlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGdldERvY3VtZW50KCkucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZGVib3VuY2VkT25Nb3VzZU1vdmUpO1xuICAgIG1vdXNlTW92ZUxpc3RlbmVycyA9IG1vdXNlTW92ZUxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAobGlzdGVuZXIpID0+IGxpc3RlbmVyICE9PSBkZWJvdW5jZWRPbk1vdXNlTW92ZVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkRvY3VtZW50UHJlc3MoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgLy8gTW92ZWQgZmluZ2VyIHRvIHNjcm9sbCBpbnN0ZWFkIG9mIGFuIGludGVudGlvbmFsIHRhcCBvdXRzaWRlXG4gICAgaWYgKGN1cnJlbnRJbnB1dC5pc1RvdWNoKSB7XG4gICAgICBpZiAoZGlkVG91Y2hNb3ZlIHx8IGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhY3R1YWxUYXJnZXQgPVxuICAgICAgKGV2ZW50LmNvbXBvc2VkUGF0aCAmJiBldmVudC5jb21wb3NlZFBhdGgoKVswXSkgfHwgZXZlbnQudGFyZ2V0O1xuXG4gICAgLy8gQ2xpY2tlZCBvbiBpbnRlcmFjdGl2ZSBwb3BwZXJcbiAgICBpZiAoXG4gICAgICBpbnN0YW5jZS5wcm9wcy5pbnRlcmFjdGl2ZSAmJlxuICAgICAgYWN0dWFsQ29udGFpbnMocG9wcGVyLCBhY3R1YWxUYXJnZXQgYXMgRWxlbWVudClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDbGlja2VkIG9uIHRoZSBldmVudCBsaXN0ZW5lcnMgdGFyZ2V0XG4gICAgaWYgKFxuICAgICAgbm9ybWFsaXplVG9BcnJheShpbnN0YW5jZS5wcm9wcy50cmlnZ2VyVGFyZ2V0IHx8IHJlZmVyZW5jZSkuc29tZSgoZWwpID0+XG4gICAgICAgIGFjdHVhbENvbnRhaW5zKGVsLCBhY3R1YWxUYXJnZXQgYXMgRWxlbWVudClcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGlmIChjdXJyZW50SW5wdXQuaXNUb3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlICYmXG4gICAgICAgIGluc3RhbmNlLnByb3BzLnRyaWdnZXIuaW5kZXhPZignY2xpY2snKSA+PSAwXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbnZva2VIb29rKCdvbkNsaWNrT3V0c2lkZScsIFtpbnN0YW5jZSwgZXZlbnRdKTtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UucHJvcHMuaGlkZU9uQ2xpY2sgPT09IHRydWUpIHtcbiAgICAgIGluc3RhbmNlLmNsZWFyRGVsYXlUaW1lb3V0cygpO1xuICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuXG4gICAgICAvLyBgbW91c2Vkb3duYCBldmVudCBpcyBmaXJlZCByaWdodCBiZWZvcmUgYGZvY3VzYCBpZiBwcmVzc2luZyB0aGVcbiAgICAgIC8vIGN1cnJlbnRUYXJnZXQuIFRoaXMgbGV0cyBhIHRpcHB5IHdpdGggYGZvY3VzYCB0cmlnZ2VyIGtub3cgdGhhdCBpdFxuICAgICAgLy8gc2hvdWxkIG5vdCBzaG93XG4gICAgICBkaWRIaWRlRHVlVG9Eb2N1bWVudE1vdXNlRG93biA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZGlkSGlkZUR1ZVRvRG9jdW1lbnRNb3VzZURvd24gPSBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUaGUgbGlzdGVuZXIgZ2V0cyBhZGRlZCBpbiBgc2NoZWR1bGVTaG93KClgLCBidXQgdGhpcyBtYXkgYmUgaGlkaW5nIGl0XG4gICAgICAvLyBiZWZvcmUgaXQgc2hvd3MsIGFuZCBoaWRlKCkncyBlYXJseSBiYWlsLW91dCBiZWhhdmlvciBjYW4gcHJldmVudCBpdFxuICAgICAgLy8gZnJvbSBiZWluZyBjbGVhbmVkIHVwXG4gICAgICBpZiAoIWluc3RhbmNlLnN0YXRlLmlzTW91bnRlZCkge1xuICAgICAgICByZW1vdmVEb2N1bWVudFByZXNzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25Ub3VjaE1vdmUoKTogdm9pZCB7XG4gICAgZGlkVG91Y2hNb3ZlID0gdHJ1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uVG91Y2hTdGFydCgpOiB2b2lkIHtcbiAgICBkaWRUb3VjaE1vdmUgPSBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZERvY3VtZW50UHJlc3MoKTogdm9pZCB7XG4gICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoKTtcbiAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Eb2N1bWVudFByZXNzLCB0cnVlKTtcbiAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBvbkRvY3VtZW50UHJlc3MsIFRPVUNIX09QVElPTlMpO1xuICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBUT1VDSF9PUFRJT05TKTtcbiAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIFRPVUNIX09QVElPTlMpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlRG9jdW1lbnRQcmVzcygpOiB2b2lkIHtcbiAgICBjb25zdCBkb2MgPSBnZXREb2N1bWVudCgpO1xuICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRvY3VtZW50UHJlc3MsIHRydWUpO1xuICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIG9uRG9jdW1lbnRQcmVzcywgVE9VQ0hfT1BUSU9OUyk7XG4gICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIFRPVUNIX09QVElPTlMpO1xuICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgVE9VQ0hfT1BUSU9OUyk7XG4gIH1cblxuICBmdW5jdGlvbiBvblRyYW5zaXRpb25lZE91dChkdXJhdGlvbjogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIG9uVHJhbnNpdGlvbkVuZChkdXJhdGlvbiwgKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlICYmXG4gICAgICAgIHBvcHBlci5wYXJlbnROb2RlICYmXG4gICAgICAgIHBvcHBlci5wYXJlbnROb2RlLmNvbnRhaW5zKHBvcHBlcilcbiAgICAgICkge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gb25UcmFuc2l0aW9uZWRJbihkdXJhdGlvbjogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIG9uVHJhbnNpdGlvbkVuZChkdXJhdGlvbiwgY2FsbGJhY2spO1xuICB9XG5cbiAgZnVuY3Rpb24gb25UcmFuc2l0aW9uRW5kKGR1cmF0aW9uOiBudW1iZXIsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgYm94ID0gZ2V0RGVmYXVsdFRlbXBsYXRlQ2hpbGRyZW4oKS5ib3g7XG5cbiAgICBmdW5jdGlvbiBsaXN0ZW5lcihldmVudDogVHJhbnNpdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBib3gpIHtcbiAgICAgICAgdXBkYXRlVHJhbnNpdGlvbkVuZExpc3RlbmVyKGJveCwgJ3JlbW92ZScsIGxpc3RlbmVyKTtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIGNhbGxiYWNrIHN5bmNocm9ub3VzIGlmIGR1cmF0aW9uIGlzIDBcbiAgICAvLyBgdHJhbnNpdGlvbmVuZGAgd29uJ3QgZmlyZSBvdGhlcndpc2VcbiAgICBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHVwZGF0ZVRyYW5zaXRpb25FbmRMaXN0ZW5lcihib3gsICdyZW1vdmUnLCBjdXJyZW50VHJhbnNpdGlvbkVuZExpc3RlbmVyKTtcbiAgICB1cGRhdGVUcmFuc2l0aW9uRW5kTGlzdGVuZXIoYm94LCAnYWRkJywgbGlzdGVuZXIpO1xuXG4gICAgY3VycmVudFRyYW5zaXRpb25FbmRMaXN0ZW5lciA9IGxpc3RlbmVyO1xuICB9XG5cbiAgZnVuY3Rpb24gb24oXG4gICAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogRXZlbnRMaXN0ZW5lcixcbiAgICBvcHRpb25zOiBib29sZWFuIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBub2RlcyA9IG5vcm1hbGl6ZVRvQXJyYXkoaW5zdGFuY2UucHJvcHMudHJpZ2dlclRhcmdldCB8fCByZWZlcmVuY2UpO1xuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICAgICAgbGlzdGVuZXJzLnB1c2goe25vZGUsIGV2ZW50VHlwZSwgaGFuZGxlciwgb3B0aW9uc30pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGlmIChnZXRJc0N1c3RvbVRvdWNoQmVoYXZpb3IoKSkge1xuICAgICAgb24oJ3RvdWNoc3RhcnQnLCBvblRyaWdnZXIsIHtwYXNzaXZlOiB0cnVlfSk7XG4gICAgICBvbigndG91Y2hlbmQnLCBvbk1vdXNlTGVhdmUgYXMgRXZlbnRMaXN0ZW5lciwge3Bhc3NpdmU6IHRydWV9KTtcbiAgICB9XG5cbiAgICBzcGxpdEJ5U3BhY2VzKGluc3RhbmNlLnByb3BzLnRyaWdnZXIpLmZvckVhY2goKGV2ZW50VHlwZSkgPT4ge1xuICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ21hbnVhbCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBvbihldmVudFR5cGUsIG9uVHJpZ2dlcik7XG5cbiAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ21vdXNlZW50ZXInOlxuICAgICAgICAgIG9uKCdtb3VzZWxlYXZlJywgb25Nb3VzZUxlYXZlIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmb2N1cyc6XG4gICAgICAgICAgb24oaXNJRTExID8gJ2ZvY3Vzb3V0JyA6ICdibHVyJywgb25CbHVyT3JGb2N1c091dCBhcyBFdmVudExpc3RlbmVyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZm9jdXNpbic6XG4gICAgICAgICAgb24oJ2ZvY3Vzb3V0Jywgb25CbHVyT3JGb2N1c091dCBhcyBFdmVudExpc3RlbmVyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoe25vZGUsIGV2ZW50VHlwZSwgaGFuZGxlciwgb3B0aW9uc306IExpc3RlbmVyT2JqZWN0KSA9PiB7XG4gICAgICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICB9KTtcbiAgICBsaXN0ZW5lcnMgPSBbXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uVHJpZ2dlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgc2hvdWxkU2NoZWR1bGVDbGlja0hpZGUgPSBmYWxzZTtcblxuICAgIGlmIChcbiAgICAgICFpbnN0YW5jZS5zdGF0ZS5pc0VuYWJsZWQgfHxcbiAgICAgIGlzRXZlbnRMaXN0ZW5lclN0b3BwZWQoZXZlbnQpIHx8XG4gICAgICBkaWRIaWRlRHVlVG9Eb2N1bWVudE1vdXNlRG93blxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHdhc0ZvY3VzZWQgPSBsYXN0VHJpZ2dlckV2ZW50Py50eXBlID09PSAnZm9jdXMnO1xuXG4gICAgbGFzdFRyaWdnZXJFdmVudCA9IGV2ZW50O1xuICAgIGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEVsZW1lbnQ7XG5cbiAgICBoYW5kbGVBcmlhRXhwYW5kZWRBdHRyaWJ1dGUoKTtcblxuICAgIGlmICghaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlICYmIGlzTW91c2VFdmVudChldmVudCkpIHtcbiAgICAgIC8vIElmIHNjcm9sbGluZywgYG1vdXNlZW50ZXJgIGV2ZW50cyBjYW4gYmUgZmlyZWQgaWYgdGhlIGN1cnNvciBsYW5kc1xuICAgICAgLy8gb3ZlciBhIG5ldyB0YXJnZXQsIGJ1dCBgbW91c2Vtb3ZlYCBldmVudHMgZG9uJ3QgZ2V0IGZpcmVkLiBUaGlzXG4gICAgICAvLyBjYXVzZXMgaW50ZXJhY3RpdmUgdG9vbHRpcHMgdG8gZ2V0IHN0dWNrIG9wZW4gdW50aWwgdGhlIGN1cnNvciBpc1xuICAgICAgLy8gbW92ZWRcbiAgICAgIG1vdXNlTW92ZUxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoZXZlbnQpKTtcbiAgICB9XG5cbiAgICAvLyBUb2dnbGUgc2hvdy9oaWRlIHdoZW4gY2xpY2tpbmcgY2xpY2stdHJpZ2dlcmVkIHRvb2x0aXBzXG4gICAgaWYgKFxuICAgICAgZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJlxuICAgICAgKGluc3RhbmNlLnByb3BzLnRyaWdnZXIuaW5kZXhPZignbW91c2VlbnRlcicpIDwgMCB8fFxuICAgICAgICBpc1Zpc2libGVGcm9tQ2xpY2spICYmXG4gICAgICBpbnN0YW5jZS5wcm9wcy5oaWRlT25DbGljayAhPT0gZmFsc2UgJiZcbiAgICAgIGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZVxuICAgICkge1xuICAgICAgc2hvdWxkU2NoZWR1bGVDbGlja0hpZGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzY2hlZHVsZVNob3coZXZlbnQpO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAnY2xpY2snKSB7XG4gICAgICBpc1Zpc2libGVGcm9tQ2xpY2sgPSAhc2hvdWxkU2NoZWR1bGVDbGlja0hpZGU7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFNjaGVkdWxlQ2xpY2tIaWRlICYmICF3YXNGb2N1c2VkKSB7XG4gICAgICBzY2hlZHVsZUhpZGUoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIE5vZGU7XG4gICAgY29uc3QgaXNDdXJzb3JPdmVyUmVmZXJlbmNlT3JQb3BwZXIgPVxuICAgICAgZ2V0Q3VycmVudFRhcmdldCgpLmNvbnRhaW5zKHRhcmdldCkgfHwgcG9wcGVyLmNvbnRhaW5zKHRhcmdldCk7XG5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlbW92ZScgJiYgaXNDdXJzb3JPdmVyUmVmZXJlbmNlT3JQb3BwZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwb3BwZXJUcmVlRGF0YSA9IGdldE5lc3RlZFBvcHBlclRyZWUoKVxuICAgICAgLmNvbmNhdChwb3BwZXIpXG4gICAgICAubWFwKChwb3BwZXIpID0+IHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBwb3BwZXIuX3RpcHB5ITtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBpbnN0YW5jZS5wb3BwZXJJbnN0YW5jZT8uc3RhdGU7XG5cbiAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBvcHBlclJlY3Q6IHBvcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICAgIHBvcHBlclN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFBvcHBlclRyZWVEYXRhW107XG5cbiAgICBpZiAoaXNDdXJzb3JPdXRzaWRlSW50ZXJhY3RpdmVCb3JkZXIocG9wcGVyVHJlZURhdGEsIGV2ZW50KSkge1xuICAgICAgY2xlYW51cEludGVyYWN0aXZlTW91c2VMaXN0ZW5lcnMoKTtcbiAgICAgIHNjaGVkdWxlSGlkZShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25Nb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2hvdWxkQmFpbCA9XG4gICAgICBpc0V2ZW50TGlzdGVuZXJTdG9wcGVkKGV2ZW50KSB8fFxuICAgICAgKGluc3RhbmNlLnByb3BzLnRyaWdnZXIuaW5kZXhPZignY2xpY2snKSA+PSAwICYmIGlzVmlzaWJsZUZyb21DbGljayk7XG5cbiAgICBpZiAoc2hvdWxkQmFpbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5wcm9wcy5pbnRlcmFjdGl2ZSkge1xuICAgICAgaW5zdGFuY2UuaGlkZVdpdGhJbnRlcmFjdGl2aXR5KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzY2hlZHVsZUhpZGUoZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25CbHVyT3JGb2N1c091dChldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGluc3RhbmNlLnByb3BzLnRyaWdnZXIuaW5kZXhPZignZm9jdXNpbicpIDwgMCAmJlxuICAgICAgZXZlbnQudGFyZ2V0ICE9PSBnZXRDdXJyZW50VGFyZ2V0KClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBmb2N1cyB3YXMgbW92ZWQgdG8gd2l0aGluIHRoZSBwb3BwZXJcbiAgICBpZiAoXG4gICAgICBpbnN0YW5jZS5wcm9wcy5pbnRlcmFjdGl2ZSAmJlxuICAgICAgZXZlbnQucmVsYXRlZFRhcmdldCAmJlxuICAgICAgcG9wcGVyLmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgRWxlbWVudClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzY2hlZHVsZUhpZGUoZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNFdmVudExpc3RlbmVyU3RvcHBlZChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY3VycmVudElucHV0LmlzVG91Y2hcbiAgICAgID8gZ2V0SXNDdXN0b21Ub3VjaEJlaGF2aW9yKCkgIT09IGV2ZW50LnR5cGUuaW5kZXhPZigndG91Y2gnKSA+PSAwXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUG9wcGVySW5zdGFuY2UoKTogdm9pZCB7XG4gICAgZGVzdHJveVBvcHBlckluc3RhbmNlKCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBwb3BwZXJPcHRpb25zLFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgb2Zmc2V0LFxuICAgICAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdCxcbiAgICAgIG1vdmVUcmFuc2l0aW9uLFxuICAgIH0gPSBpbnN0YW5jZS5wcm9wcztcblxuICAgIGNvbnN0IGFycm93ID0gZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKSA/IGdldENoaWxkcmVuKHBvcHBlcikuYXJyb3cgOiBudWxsO1xuXG4gICAgY29uc3QgY29tcHV0ZWRSZWZlcmVuY2UgPSBnZXRSZWZlcmVuY2VDbGllbnRSZWN0XG4gICAgICA/IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3Q6IGdldFJlZmVyZW5jZUNsaWVudFJlY3QsXG4gICAgICAgICAgY29udGV4dEVsZW1lbnQ6XG4gICAgICAgICAgICBnZXRSZWZlcmVuY2VDbGllbnRSZWN0LmNvbnRleHRFbGVtZW50IHx8IGdldEN1cnJlbnRUYXJnZXQoKSxcbiAgICAgICAgfVxuICAgICAgOiByZWZlcmVuY2U7XG5cbiAgICBjb25zdCB0aXBweU1vZGlmaWVyOiBNb2RpZmllcjwnJCR0aXBweScsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IHtcbiAgICAgIG5hbWU6ICckJHRpcHB5JyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgICAgIHJlcXVpcmVzOiBbJ2NvbXB1dGVTdHlsZXMnXSxcbiAgICAgIGZuKHtzdGF0ZX0pIHtcbiAgICAgICAgaWYgKGdldElzRGVmYXVsdFJlbmRlckZuKCkpIHtcbiAgICAgICAgICBjb25zdCB7Ym94fSA9IGdldERlZmF1bHRUZW1wbGF0ZUNoaWxkcmVuKCk7XG5cbiAgICAgICAgICBbJ3BsYWNlbWVudCcsICdyZWZlcmVuY2UtaGlkZGVuJywgJ2VzY2FwZWQnXS5mb3JFYWNoKChhdHRyKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3BsYWNlbWVudCcpIHtcbiAgICAgICAgICAgICAgYm94LnNldEF0dHJpYnV0ZSgnZGF0YS1wbGFjZW1lbnQnLCBzdGF0ZS5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyW2BkYXRhLXBvcHBlci0ke2F0dHJ9YF0pIHtcbiAgICAgICAgICAgICAgICBib3guc2V0QXR0cmlidXRlKGBkYXRhLSR7YXR0cn1gLCAnJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYm94LnJlbW92ZUF0dHJpYnV0ZShgZGF0YS0ke2F0dHJ9YCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0ge307XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHR5cGUgVGlwcHlNb2RpZmllciA9IE1vZGlmaWVyPCckJHRpcHB5JywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICAgIHR5cGUgRXh0ZW5kZWRNb2RpZmllcnMgPSBTdHJpY3RNb2RpZmllcnMgfCBQYXJ0aWFsPFRpcHB5TW9kaWZpZXI+O1xuXG4gICAgY29uc3QgbW9kaWZpZXJzOiBBcnJheTxFeHRlbmRlZE1vZGlmaWVycz4gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgb2Zmc2V0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB0b3A6IDIsXG4gICAgICAgICAgICBib3R0b206IDIsXG4gICAgICAgICAgICBsZWZ0OiA1LFxuICAgICAgICAgICAgcmlnaHQ6IDUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdmbGlwJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHBhZGRpbmc6IDUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBhZGFwdGl2ZTogIW1vdmVUcmFuc2l0aW9uLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRpcHB5TW9kaWZpZXIsXG4gICAgXTtcblxuICAgIGlmIChnZXRJc0RlZmF1bHRSZW5kZXJGbigpICYmIGFycm93KSB7XG4gICAgICBtb2RpZmllcnMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdhcnJvdycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBlbGVtZW50OiBhcnJvdyxcbiAgICAgICAgICBwYWRkaW5nOiAzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbW9kaWZpZXJzLnB1c2goLi4uKHBvcHBlck9wdGlvbnM/Lm1vZGlmaWVycyB8fCBbXSkpO1xuXG4gICAgaW5zdGFuY2UucG9wcGVySW5zdGFuY2UgPSBjcmVhdGVQb3BwZXI8RXh0ZW5kZWRNb2RpZmllcnM+KFxuICAgICAgY29tcHV0ZWRSZWZlcmVuY2UsXG4gICAgICBwb3BwZXIsXG4gICAgICB7XG4gICAgICAgIC4uLnBvcHBlck9wdGlvbnMsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb25GaXJzdFVwZGF0ZSxcbiAgICAgICAgbW9kaWZpZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95UG9wcGVySW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKGluc3RhbmNlLnBvcHBlckluc3RhbmNlKSB7XG4gICAgICBpbnN0YW5jZS5wb3BwZXJJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICBpbnN0YW5jZS5wb3BwZXJJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbW91bnQoKTogdm9pZCB7XG4gICAgY29uc3Qge2FwcGVuZFRvfSA9IGluc3RhbmNlLnByb3BzO1xuXG4gICAgbGV0IHBhcmVudE5vZGU6IGFueTtcblxuICAgIC8vIEJ5IGRlZmF1bHQsIHdlJ2xsIGFwcGVuZCB0aGUgcG9wcGVyIHRvIHRoZSB0cmlnZ2VyVGFyZ2V0cydzIHBhcmVudE5vZGUgc29cbiAgICAvLyBpdCdzIGRpcmVjdGx5IGFmdGVyIHRoZSByZWZlcmVuY2UgZWxlbWVudCBzbyB0aGUgZWxlbWVudHMgaW5zaWRlIHRoZVxuICAgIC8vIHRpcHB5IGNhbiBiZSB0YWJiZWQgdG9cbiAgICAvLyBJZiB0aGVyZSBhcmUgY2xpcHBpbmcgaXNzdWVzLCB0aGUgdXNlciBjYW4gc3BlY2lmeSBhIGRpZmZlcmVudCBhcHBlbmRUb1xuICAgIC8vIGFuZCBlbnN1cmUgZm9jdXMgbWFuYWdlbWVudCBpcyBoYW5kbGVkIGNvcnJlY3RseSBtYW51YWxseVxuICAgIGNvbnN0IG5vZGUgPSBnZXRDdXJyZW50VGFyZ2V0KCk7XG5cbiAgICBpZiAoXG4gICAgICAoaW5zdGFuY2UucHJvcHMuaW50ZXJhY3RpdmUgJiYgYXBwZW5kVG8gPT09IFRJUFBZX0RFRkFVTFRfQVBQRU5EX1RPKSB8fFxuICAgICAgYXBwZW5kVG8gPT09ICdwYXJlbnQnXG4gICAgKSB7XG4gICAgICBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnROb2RlID0gaW52b2tlV2l0aEFyZ3NPclJldHVybihhcHBlbmRUbywgW25vZGVdKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgcG9wcGVyIGVsZW1lbnQgbmVlZHMgdG8gZXhpc3Qgb24gdGhlIERPTSBiZWZvcmUgaXRzIHBvc2l0aW9uIGNhbiBiZVxuICAgIC8vIHVwZGF0ZWQgYXMgUG9wcGVyIG5lZWRzIHRvIHJlYWQgaXRzIGRpbWVuc2lvbnNcbiAgICBpZiAoIXBhcmVudE5vZGUuY29udGFpbnMocG9wcGVyKSkge1xuICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChwb3BwZXIpO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnN0YXRlLmlzTW91bnRlZCA9IHRydWU7XG5cbiAgICBjcmVhdGVQb3BwZXJJbnN0YW5jZSgpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoX19ERVZfXykge1xuICAgICAgLy8gQWNjZXNzaWJpbGl0eSBjaGVja1xuICAgICAgd2FybldoZW4oXG4gICAgICAgIGluc3RhbmNlLnByb3BzLmludGVyYWN0aXZlICYmXG4gICAgICAgICAgYXBwZW5kVG8gPT09IGRlZmF1bHRQcm9wcy5hcHBlbmRUbyAmJlxuICAgICAgICAgIG5vZGUubmV4dEVsZW1lbnRTaWJsaW5nICE9PSBwb3BwZXIsXG4gICAgICAgIFtcbiAgICAgICAgICAnSW50ZXJhY3RpdmUgdGlwcHkgZWxlbWVudCBtYXkgbm90IGJlIGFjY2Vzc2libGUgdmlhIGtleWJvYXJkJyxcbiAgICAgICAgICAnbmF2aWdhdGlvbiBiZWNhdXNlIGl0IGlzIG5vdCBkaXJlY3RseSBhZnRlciB0aGUgcmVmZXJlbmNlIGVsZW1lbnQnLFxuICAgICAgICAgICdpbiB0aGUgRE9NIHNvdXJjZSBvcmRlci4nLFxuICAgICAgICAgICdcXG5cXG4nLFxuICAgICAgICAgICdVc2luZyBhIHdyYXBwZXIgPGRpdj4gb3IgPHNwYW4+IHRhZyBhcm91bmQgdGhlIHJlZmVyZW5jZSBlbGVtZW50JyxcbiAgICAgICAgICAnc29sdmVzIHRoaXMgYnkgY3JlYXRpbmcgYSBuZXcgcGFyZW50Tm9kZSBjb250ZXh0LicsXG4gICAgICAgICAgJ1xcblxcbicsXG4gICAgICAgICAgJ1NwZWNpZnlpbmcgYGFwcGVuZFRvOiBkb2N1bWVudC5ib2R5YCBzaWxlbmNlcyB0aGlzIHdhcm5pbmcsIGJ1dCBpdCcsXG4gICAgICAgICAgJ2Fzc3VtZXMgeW91IGFyZSB1c2luZyBhIGZvY3VzIG1hbmFnZW1lbnQgc29sdXRpb24gdG8gaGFuZGxlJyxcbiAgICAgICAgICAna2V5Ym9hcmQgbmF2aWdhdGlvbi4nLFxuICAgICAgICAgICdcXG5cXG4nLFxuICAgICAgICAgICdTZWU6IGh0dHBzOi8vYXRvbWlrcy5naXRodWIuaW8vdGlwcHlqcy92Ni9hY2Nlc3NpYmlsaXR5LyNpbnRlcmFjdGl2aXR5JyxcbiAgICAgICAgXS5qb2luKCcgJylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmVzdGVkUG9wcGVyVHJlZSgpOiBQb3BwZXJFbGVtZW50W10ge1xuICAgIHJldHVybiBhcnJheUZyb20oXG4gICAgICBwb3BwZXIucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtX19OQU1FU1BBQ0VfUFJFRklYX18tcm9vdF0nKVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBzY2hlZHVsZVNob3coZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGluc3RhbmNlLmNsZWFyRGVsYXlUaW1lb3V0cygpO1xuXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBpbnZva2VIb29rKCdvblRyaWdnZXInLCBbaW5zdGFuY2UsIGV2ZW50XSk7XG4gICAgfVxuXG4gICAgYWRkRG9jdW1lbnRQcmVzcygpO1xuXG4gICAgbGV0IGRlbGF5ID0gZ2V0RGVsYXkodHJ1ZSk7XG4gICAgY29uc3QgW3RvdWNoVmFsdWUsIHRvdWNoRGVsYXldID0gZ2V0Tm9ybWFsaXplZFRvdWNoU2V0dGluZ3MoKTtcblxuICAgIGlmIChjdXJyZW50SW5wdXQuaXNUb3VjaCAmJiB0b3VjaFZhbHVlID09PSAnaG9sZCcgJiYgdG91Y2hEZWxheSkge1xuICAgICAgZGVsYXkgPSB0b3VjaERlbGF5O1xuICAgIH1cblxuICAgIGlmIChkZWxheSkge1xuICAgICAgc2hvd1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaW5zdGFuY2Uuc2hvdygpO1xuICAgICAgfSwgZGVsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2NoZWR1bGVIaWRlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGluc3RhbmNlLmNsZWFyRGVsYXlUaW1lb3V0cygpO1xuXG4gICAgaW52b2tlSG9vaygnb25VbnRyaWdnZXInLCBbaW5zdGFuY2UsIGV2ZW50XSk7XG5cbiAgICBpZiAoIWluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSkge1xuICAgICAgcmVtb3ZlRG9jdW1lbnRQcmVzcygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRm9yIGludGVyYWN0aXZlIHRpcHBpZXMsIHNjaGVkdWxlSGlkZSBpcyBhZGRlZCB0byBhIGRvY3VtZW50LmJvZHkgaGFuZGxlclxuICAgIC8vIGZyb20gb25Nb3VzZUxlYXZlIHNvIG11c3QgaW50ZXJjZXB0IHNjaGVkdWxlZCBoaWRlcyBmcm9tIG1vdXNlbW92ZS9sZWF2ZVxuICAgIC8vIGV2ZW50cyB3aGVuIHRyaWdnZXIgY29udGFpbnMgbW91c2VlbnRlciBhbmQgY2xpY2ssIGFuZCB0aGUgdGlwIGlzXG4gICAgLy8gY3VycmVudGx5IHNob3duIGFzIGEgcmVzdWx0IG9mIGEgY2xpY2suXG4gICAgaWYgKFxuICAgICAgaW5zdGFuY2UucHJvcHMudHJpZ2dlci5pbmRleE9mKCdtb3VzZWVudGVyJykgPj0gMCAmJlxuICAgICAgaW5zdGFuY2UucHJvcHMudHJpZ2dlci5pbmRleE9mKCdjbGljaycpID49IDAgJiZcbiAgICAgIFsnbW91c2VsZWF2ZScsICdtb3VzZW1vdmUnXS5pbmRleE9mKGV2ZW50LnR5cGUpID49IDAgJiZcbiAgICAgIGlzVmlzaWJsZUZyb21DbGlja1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbGF5ID0gZ2V0RGVsYXkoZmFsc2UpO1xuXG4gICAgaWYgKGRlbGF5KSB7XG4gICAgICBoaWRlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgICB9XG4gICAgICB9LCBkZWxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZpeGVzIGEgYHRyYW5zaXRpb25lbmRgIHByb2JsZW0gd2hlbiBpdCBmaXJlcyAxIGZyYW1lIHRvb1xuICAgICAgLy8gbGF0ZSBzb21ldGltZXMsIHdlIGRvbid0IHdhbnQgaGlkZSgpIHRvIGJlIGNhbGxlZC5cbiAgICAgIHNjaGVkdWxlSGlkZUFuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIPCflJEgUHVibGljIG1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGZ1bmN0aW9uIGVuYWJsZSgpOiB2b2lkIHtcbiAgICBpbnN0YW5jZS5zdGF0ZS5pc0VuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzYWJsZSgpOiB2b2lkIHtcbiAgICAvLyBEaXNhYmxpbmcgdGhlIGluc3RhbmNlIHNob3VsZCBhbHNvIGhpZGUgaXRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXRvbWlrcy90aXBweS5qcy1yZWFjdC9pc3N1ZXMvMTA2XG4gICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgIGluc3RhbmNlLnN0YXRlLmlzRW5hYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJEZWxheVRpbWVvdXRzKCk6IHZvaWQge1xuICAgIGNsZWFyVGltZW91dChzaG93VGltZW91dCk7XG4gICAgY2xlYXJUaW1lb3V0KGhpZGVUaW1lb3V0KTtcbiAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY2hlZHVsZUhpZGVBbmltYXRpb25GcmFtZSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRQcm9wcyhwYXJ0aWFsUHJvcHM6IFBhcnRpYWw8UHJvcHM+KTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoX19ERVZfXykge1xuICAgICAgd2FybldoZW4oaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQsIGNyZWF0ZU1lbW9yeUxlYWtXYXJuaW5nKCdzZXRQcm9wcycpKTtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbnZva2VIb29rKCdvbkJlZm9yZVVwZGF0ZScsIFtpbnN0YW5jZSwgcGFydGlhbFByb3BzXSk7XG5cbiAgICByZW1vdmVMaXN0ZW5lcnMoKTtcblxuICAgIGNvbnN0IHByZXZQcm9wcyA9IGluc3RhbmNlLnByb3BzO1xuICAgIGNvbnN0IG5leHRQcm9wcyA9IGV2YWx1YXRlUHJvcHMocmVmZXJlbmNlLCB7XG4gICAgICAuLi5wcmV2UHJvcHMsXG4gICAgICAuLi5yZW1vdmVVbmRlZmluZWRQcm9wcyhwYXJ0aWFsUHJvcHMpLFxuICAgICAgaWdub3JlQXR0cmlidXRlczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGluc3RhbmNlLnByb3BzID0gbmV4dFByb3BzO1xuXG4gICAgYWRkTGlzdGVuZXJzKCk7XG5cbiAgICBpZiAocHJldlByb3BzLmludGVyYWN0aXZlRGVib3VuY2UgIT09IG5leHRQcm9wcy5pbnRlcmFjdGl2ZURlYm91bmNlKSB7XG4gICAgICBjbGVhbnVwSW50ZXJhY3RpdmVNb3VzZUxpc3RlbmVycygpO1xuICAgICAgZGVib3VuY2VkT25Nb3VzZU1vdmUgPSBkZWJvdW5jZShcbiAgICAgICAgb25Nb3VzZU1vdmUsXG4gICAgICAgIG5leHRQcm9wcy5pbnRlcmFjdGl2ZURlYm91bmNlXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBzdGFsZSBhcmlhLWV4cGFuZGVkIGF0dHJpYnV0ZXMgYXJlIHJlbW92ZWRcbiAgICBpZiAocHJldlByb3BzLnRyaWdnZXJUYXJnZXQgJiYgIW5leHRQcm9wcy50cmlnZ2VyVGFyZ2V0KSB7XG4gICAgICBub3JtYWxpemVUb0FycmF5KHByZXZQcm9wcy50cmlnZ2VyVGFyZ2V0KS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKG5leHRQcm9wcy50cmlnZ2VyVGFyZ2V0KSB7XG4gICAgICByZWZlcmVuY2UucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJyk7XG4gICAgfVxuXG4gICAgaGFuZGxlQXJpYUV4cGFuZGVkQXR0cmlidXRlKCk7XG4gICAgaGFuZGxlU3R5bGVzKCk7XG5cbiAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgIG9uVXBkYXRlKHByZXZQcm9wcywgbmV4dFByb3BzKTtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UucG9wcGVySW5zdGFuY2UpIHtcbiAgICAgIGNyZWF0ZVBvcHBlckluc3RhbmNlKCk7XG5cbiAgICAgIC8vIEZpeGVzIGFuIGlzc3VlIHdpdGggbmVzdGVkIHRpcHBpZXMgaWYgdGhleSBhcmUgYWxsIGdldHRpbmcgcmUtcmVuZGVyZWQsXG4gICAgICAvLyBhbmQgdGhlIG5lc3RlZCBvbmVzIGdldCByZS1yZW5kZXJlZCBmaXJzdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hdG9taWtzL3RpcHB5anMtcmVhY3QvaXNzdWVzLzE3N1xuICAgICAgLy8gVE9ETzogZmluZCBhIGNsZWFuZXIgLyBtb3JlIGVmZmljaWVudCBzb2x1dGlvbighKVxuICAgICAgZ2V0TmVzdGVkUG9wcGVyVHJlZSgpLmZvckVhY2goKG5lc3RlZFBvcHBlcikgPT4ge1xuICAgICAgICAvLyBSZWFjdCAoYW5kIG90aGVyIFVJIGxpYnMgbGlrZWx5KSByZXF1aXJlcyBhIHJBRiB3cmFwcGVyIGFzIGl0IGZsdXNoZXNcbiAgICAgICAgLy8gaXRzIHdvcmsgaW4gb25lXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShuZXN0ZWRQb3BwZXIuX3RpcHB5IS5wb3BwZXJJbnN0YW5jZSEuZm9yY2VVcGRhdGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW52b2tlSG9vaygnb25BZnRlclVwZGF0ZScsIFtpbnN0YW5jZSwgcGFydGlhbFByb3BzXSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRDb250ZW50KGNvbnRlbnQ6IENvbnRlbnQpOiB2b2lkIHtcbiAgICBpbnN0YW5jZS5zZXRQcm9wcyh7Y29udGVudH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICB3YXJuV2hlbihpbnN0YW5jZS5zdGF0ZS5pc0Rlc3Ryb3llZCwgY3JlYXRlTWVtb3J5TGVha1dhcm5pbmcoJ3Nob3cnKSk7XG4gICAgfVxuXG4gICAgLy8gRWFybHkgYmFpbC1vdXRcbiAgICBjb25zdCBpc0FscmVhZHlWaXNpYmxlID0gaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlO1xuICAgIGNvbnN0IGlzRGVzdHJveWVkID0gaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQ7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9ICFpbnN0YW5jZS5zdGF0ZS5pc0VuYWJsZWQ7XG4gICAgY29uc3QgaXNUb3VjaEFuZFRvdWNoRGlzYWJsZWQgPVxuICAgICAgY3VycmVudElucHV0LmlzVG91Y2ggJiYgIWluc3RhbmNlLnByb3BzLnRvdWNoO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gZ2V0VmFsdWVBdEluZGV4T3JSZXR1cm4oXG4gICAgICBpbnN0YW5jZS5wcm9wcy5kdXJhdGlvbixcbiAgICAgIDAsXG4gICAgICBkZWZhdWx0UHJvcHMuZHVyYXRpb25cbiAgICApO1xuXG4gICAgaWYgKFxuICAgICAgaXNBbHJlYWR5VmlzaWJsZSB8fFxuICAgICAgaXNEZXN0cm95ZWQgfHxcbiAgICAgIGlzRGlzYWJsZWQgfHxcbiAgICAgIGlzVG91Y2hBbmRUb3VjaERpc2FibGVkXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTm9ybWFsaXplIGBkaXNhYmxlZGAgYmVoYXZpb3IgYWNyb3NzIGJyb3dzZXJzLlxuICAgIC8vIEZpcmVmb3ggYWxsb3dzIGV2ZW50cyBvbiBkaXNhYmxlZCBlbGVtZW50cywgYnV0IENocm9tZSBkb2Vzbid0LlxuICAgIC8vIFVzaW5nIGEgd3JhcHBlciBlbGVtZW50IChpLmUuIDxzcGFuPikgaXMgcmVjb21tZW5kZWQuXG4gICAgaWYgKGdldEN1cnJlbnRUYXJnZXQoKS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbnZva2VIb29rKCdvblNob3cnLCBbaW5zdGFuY2VdLCBmYWxzZSk7XG4gICAgaWYgKGluc3RhbmNlLnByb3BzLm9uU2hvdyhpbnN0YW5jZSkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgIGlmIChnZXRJc0RlZmF1bHRSZW5kZXJGbigpKSB7XG4gICAgICBwb3BwZXIuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICB9XG5cbiAgICBoYW5kbGVTdHlsZXMoKTtcbiAgICBhZGREb2N1bWVudFByZXNzKCk7XG5cbiAgICBpZiAoIWluc3RhbmNlLnN0YXRlLmlzTW91bnRlZCkge1xuICAgICAgcG9wcGVyLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgLy8gSWYgZmxpcHBpbmcgdG8gdGhlIG9wcG9zaXRlIHNpZGUgYWZ0ZXIgaGlkaW5nIGF0IGxlYXN0IG9uY2UsIHRoZVxuICAgIC8vIGFuaW1hdGlvbiB3aWxsIHVzZSB0aGUgd3JvbmcgcGxhY2VtZW50IHdpdGhvdXQgcmVzZXR0aW5nIHRoZSBkdXJhdGlvblxuICAgIGlmIChnZXRJc0RlZmF1bHRSZW5kZXJGbigpKSB7XG4gICAgICBjb25zdCB7Ym94LCBjb250ZW50fSA9IGdldERlZmF1bHRUZW1wbGF0ZUNoaWxkcmVuKCk7XG4gICAgICBzZXRUcmFuc2l0aW9uRHVyYXRpb24oW2JveCwgY29udGVudF0sIDApO1xuICAgIH1cblxuICAgIG9uRmlyc3RVcGRhdGUgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAoIWluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSB8fCBpZ25vcmVPbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWdub3JlT25GaXJzdFVwZGF0ZSA9IHRydWU7XG5cbiAgICAgIC8vIHJlZmxvd1xuICAgICAgdm9pZCBwb3BwZXIub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICBwb3BwZXIuc3R5bGUudHJhbnNpdGlvbiA9IGluc3RhbmNlLnByb3BzLm1vdmVUcmFuc2l0aW9uO1xuXG4gICAgICBpZiAoZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKSAmJiBpbnN0YW5jZS5wcm9wcy5hbmltYXRpb24pIHtcbiAgICAgICAgY29uc3Qge2JveCwgY29udGVudH0gPSBnZXREZWZhdWx0VGVtcGxhdGVDaGlsZHJlbigpO1xuICAgICAgICBzZXRUcmFuc2l0aW9uRHVyYXRpb24oW2JveCwgY29udGVudF0sIGR1cmF0aW9uKTtcbiAgICAgICAgc2V0VmlzaWJpbGl0eVN0YXRlKFtib3gsIGNvbnRlbnRdLCAndmlzaWJsZScpO1xuICAgICAgfVxuXG4gICAgICBoYW5kbGVBcmlhQ29udGVudEF0dHJpYnV0ZSgpO1xuICAgICAgaGFuZGxlQXJpYUV4cGFuZGVkQXR0cmlidXRlKCk7XG5cbiAgICAgIHB1c2hJZlVuaXF1ZShtb3VudGVkSW5zdGFuY2VzLCBpbnN0YW5jZSk7XG5cbiAgICAgIC8vIGNlcnRhaW4gbW9kaWZpZXJzIChlLmcuIGBtYXhTaXplYCkgcmVxdWlyZSBhIHNlY29uZCB1cGRhdGUgYWZ0ZXIgdGhlXG4gICAgICAvLyBwb3BwZXIgaGFzIGJlZW4gcG9zaXRpb25lZCBmb3IgdGhlIGZpcnN0IHRpbWVcbiAgICAgIGluc3RhbmNlLnBvcHBlckluc3RhbmNlPy5mb3JjZVVwZGF0ZSgpO1xuXG4gICAgICBpbnZva2VIb29rKCdvbk1vdW50JywgW2luc3RhbmNlXSk7XG5cbiAgICAgIGlmIChpbnN0YW5jZS5wcm9wcy5hbmltYXRpb24gJiYgZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKSkge1xuICAgICAgICBvblRyYW5zaXRpb25lZEluKGR1cmF0aW9uLCAoKSA9PiB7XG4gICAgICAgICAgaW5zdGFuY2Uuc3RhdGUuaXNTaG93biA9IHRydWU7XG4gICAgICAgICAgaW52b2tlSG9vaygnb25TaG93bicsIFtpbnN0YW5jZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbW91bnQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhpZGUoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoX19ERVZfXykge1xuICAgICAgd2FybldoZW4oaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQsIGNyZWF0ZU1lbW9yeUxlYWtXYXJuaW5nKCdoaWRlJykpO1xuICAgIH1cblxuICAgIC8vIEVhcmx5IGJhaWwtb3V0XG4gICAgY29uc3QgaXNBbHJlYWR5SGlkZGVuID0gIWluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZTtcbiAgICBjb25zdCBpc0Rlc3Ryb3llZCA9IGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaW5zdGFuY2Uuc3RhdGUuaXNFbmFibGVkO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gZ2V0VmFsdWVBdEluZGV4T3JSZXR1cm4oXG4gICAgICBpbnN0YW5jZS5wcm9wcy5kdXJhdGlvbixcbiAgICAgIDEsXG4gICAgICBkZWZhdWx0UHJvcHMuZHVyYXRpb25cbiAgICApO1xuXG4gICAgaWYgKGlzQWxyZWFkeUhpZGRlbiB8fCBpc0Rlc3Ryb3llZCB8fCBpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW52b2tlSG9vaygnb25IaWRlJywgW2luc3RhbmNlXSwgZmFsc2UpO1xuICAgIGlmIChpbnN0YW5jZS5wcm9wcy5vbkhpZGUoaW5zdGFuY2UpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIGluc3RhbmNlLnN0YXRlLmlzU2hvd24gPSBmYWxzZTtcbiAgICBpZ25vcmVPbkZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgaXNWaXNpYmxlRnJvbUNsaWNrID0gZmFsc2U7XG5cbiAgICBpZiAoZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKSkge1xuICAgICAgcG9wcGVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICB9XG5cbiAgICBjbGVhbnVwSW50ZXJhY3RpdmVNb3VzZUxpc3RlbmVycygpO1xuICAgIHJlbW92ZURvY3VtZW50UHJlc3MoKTtcbiAgICBoYW5kbGVTdHlsZXModHJ1ZSk7XG5cbiAgICBpZiAoZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKSkge1xuICAgICAgY29uc3Qge2JveCwgY29udGVudH0gPSBnZXREZWZhdWx0VGVtcGxhdGVDaGlsZHJlbigpO1xuXG4gICAgICBpZiAoaW5zdGFuY2UucHJvcHMuYW5pbWF0aW9uKSB7XG4gICAgICAgIHNldFRyYW5zaXRpb25EdXJhdGlvbihbYm94LCBjb250ZW50XSwgZHVyYXRpb24pO1xuICAgICAgICBzZXRWaXNpYmlsaXR5U3RhdGUoW2JveCwgY29udGVudF0sICdoaWRkZW4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVBcmlhQ29udGVudEF0dHJpYnV0ZSgpO1xuICAgIGhhbmRsZUFyaWFFeHBhbmRlZEF0dHJpYnV0ZSgpO1xuXG4gICAgaWYgKGluc3RhbmNlLnByb3BzLmFuaW1hdGlvbikge1xuICAgICAgaWYgKGdldElzRGVmYXVsdFJlbmRlckZuKCkpIHtcbiAgICAgICAgb25UcmFuc2l0aW9uZWRPdXQoZHVyYXRpb24sIGluc3RhbmNlLnVubW91bnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS51bm1vdW50KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGlkZVdpdGhJbnRlcmFjdGl2aXR5KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoX19ERVZfXykge1xuICAgICAgd2FybldoZW4oXG4gICAgICAgIGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkLFxuICAgICAgICBjcmVhdGVNZW1vcnlMZWFrV2FybmluZygnaGlkZVdpdGhJbnRlcmFjdGl2aXR5JylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0RG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBkZWJvdW5jZWRPbk1vdXNlTW92ZSk7XG4gICAgcHVzaElmVW5pcXVlKG1vdXNlTW92ZUxpc3RlbmVycywgZGVib3VuY2VkT25Nb3VzZU1vdmUpO1xuICAgIGRlYm91bmNlZE9uTW91c2VNb3ZlKGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVubW91bnQoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoX19ERVZfXykge1xuICAgICAgd2FybldoZW4oaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQsIGNyZWF0ZU1lbW9yeUxlYWtXYXJuaW5nKCd1bm1vdW50JykpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGUpIHtcbiAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG5cbiAgICBpZiAoIWluc3RhbmNlLnN0YXRlLmlzTW91bnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlc3Ryb3lQb3BwZXJJbnN0YW5jZSgpO1xuXG4gICAgLy8gSWYgYSBwb3BwZXIgaXMgbm90IGludGVyYWN0aXZlLCBpdCB3aWxsIGJlIGFwcGVuZGVkIG91dHNpZGUgdGhlIHBvcHBlclxuICAgIC8vIHRyZWUgYnkgZGVmYXVsdC4gVGhpcyBzZWVtcyBtYWlubHkgZm9yIGludGVyYWN0aXZlIHRpcHBpZXMsIGJ1dCB3ZSBzaG91bGRcbiAgICAvLyBmaW5kIGEgd29ya2Fyb3VuZCBpZiBwb3NzaWJsZVxuICAgIGdldE5lc3RlZFBvcHBlclRyZWUoKS5mb3JFYWNoKChuZXN0ZWRQb3BwZXIpID0+IHtcbiAgICAgIG5lc3RlZFBvcHBlci5fdGlwcHkhLnVubW91bnQoKTtcbiAgICB9KTtcblxuICAgIGlmIChwb3BwZXIucGFyZW50Tm9kZSkge1xuICAgICAgcG9wcGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocG9wcGVyKTtcbiAgICB9XG5cbiAgICBtb3VudGVkSW5zdGFuY2VzID0gbW91bnRlZEluc3RhbmNlcy5maWx0ZXIoKGkpID0+IGkgIT09IGluc3RhbmNlKTtcblxuICAgIGluc3RhbmNlLnN0YXRlLmlzTW91bnRlZCA9IGZhbHNlO1xuICAgIGludm9rZUhvb2soJ29uSGlkZGVuJywgW2luc3RhbmNlXSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKF9fREVWX18pIHtcbiAgICAgIHdhcm5XaGVuKGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkLCBjcmVhdGVNZW1vcnlMZWFrV2FybmluZygnZGVzdHJveScpKTtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5jbGVhckRlbGF5VGltZW91dHMoKTtcbiAgICBpbnN0YW5jZS51bm1vdW50KCk7XG5cbiAgICByZW1vdmVMaXN0ZW5lcnMoKTtcblxuICAgIGRlbGV0ZSByZWZlcmVuY2UuX3RpcHB5O1xuXG4gICAgaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgaW52b2tlSG9vaygnb25EZXN0cm95JywgW2luc3RhbmNlXSk7XG4gIH1cbn1cbiIsICJpbXBvcnQgYmluZEdsb2JhbEV2ZW50TGlzdGVuZXJzLCB7XG4gIGN1cnJlbnRJbnB1dCxcbn0gZnJvbSAnLi9iaW5kR2xvYmFsRXZlbnRMaXN0ZW5lcnMnO1xuaW1wb3J0IGNyZWF0ZVRpcHB5LCB7bW91bnRlZEluc3RhbmNlc30gZnJvbSAnLi9jcmVhdGVUaXBweSc7XG5pbXBvcnQge2dldEFycmF5T2ZFbGVtZW50cywgaXNFbGVtZW50LCBpc1JlZmVyZW5jZUVsZW1lbnR9IGZyb20gJy4vZG9tLXV0aWxzJztcbmltcG9ydCB7ZGVmYXVsdFByb3BzLCBzZXREZWZhdWx0UHJvcHMsIHZhbGlkYXRlUHJvcHN9IGZyb20gJy4vcHJvcHMnO1xuaW1wb3J0IHtIaWRlQWxsLCBIaWRlQWxsT3B0aW9ucywgSW5zdGFuY2UsIFByb3BzLCBUYXJnZXRzfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7dmFsaWRhdGVUYXJnZXRzLCB3YXJuV2hlbn0gZnJvbSAnLi92YWxpZGF0aW9uJztcblxuZnVuY3Rpb24gdGlwcHkoXG4gIHRhcmdldHM6IFRhcmdldHMsXG4gIG9wdGlvbmFsUHJvcHM6IFBhcnRpYWw8UHJvcHM+ID0ge31cbik6IEluc3RhbmNlIHwgSW5zdGFuY2VbXSB7XG4gIGNvbnN0IHBsdWdpbnMgPSBkZWZhdWx0UHJvcHMucGx1Z2lucy5jb25jYXQob3B0aW9uYWxQcm9wcy5wbHVnaW5zIHx8IFtdKTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoX19ERVZfXykge1xuICAgIHZhbGlkYXRlVGFyZ2V0cyh0YXJnZXRzKTtcbiAgICB2YWxpZGF0ZVByb3BzKG9wdGlvbmFsUHJvcHMsIHBsdWdpbnMpO1xuICB9XG5cbiAgYmluZEdsb2JhbEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgY29uc3QgcGFzc2VkUHJvcHM6IFBhcnRpYWw8UHJvcHM+ID0gey4uLm9wdGlvbmFsUHJvcHMsIHBsdWdpbnN9O1xuXG4gIGNvbnN0IGVsZW1lbnRzID0gZ2V0QXJyYXlPZkVsZW1lbnRzKHRhcmdldHMpO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChfX0RFVl9fKSB7XG4gICAgY29uc3QgaXNTaW5nbGVDb250ZW50RWxlbWVudCA9IGlzRWxlbWVudChwYXNzZWRQcm9wcy5jb250ZW50KTtcbiAgICBjb25zdCBpc01vcmVUaGFuT25lUmVmZXJlbmNlRWxlbWVudCA9IGVsZW1lbnRzLmxlbmd0aCA+IDE7XG4gICAgd2FybldoZW4oXG4gICAgICBpc1NpbmdsZUNvbnRlbnRFbGVtZW50ICYmIGlzTW9yZVRoYW5PbmVSZWZlcmVuY2VFbGVtZW50LFxuICAgICAgW1xuICAgICAgICAndGlwcHkoKSB3YXMgcGFzc2VkIGFuIEVsZW1lbnQgYXMgdGhlIGBjb250ZW50YCBwcm9wLCBidXQgbW9yZSB0aGFuJyxcbiAgICAgICAgJ29uZSB0aXBweSBpbnN0YW5jZSB3YXMgY3JlYXRlZCBieSB0aGlzIGludm9jYXRpb24uIFRoaXMgbWVhbnMgdGhlJyxcbiAgICAgICAgJ2NvbnRlbnQgZWxlbWVudCB3aWxsIG9ubHkgYmUgYXBwZW5kZWQgdG8gdGhlIGxhc3QgdGlwcHkgaW5zdGFuY2UuJyxcbiAgICAgICAgJ1xcblxcbicsXG4gICAgICAgICdJbnN0ZWFkLCBwYXNzIHRoZSAuaW5uZXJIVE1MIG9mIHRoZSBlbGVtZW50LCBvciB1c2UgYSBmdW5jdGlvbiB0aGF0JyxcbiAgICAgICAgJ3JldHVybnMgYSBjbG9uZWQgdmVyc2lvbiBvZiB0aGUgZWxlbWVudCBpbnN0ZWFkLicsXG4gICAgICAgICdcXG5cXG4nLFxuICAgICAgICAnMSkgY29udGVudDogZWxlbWVudC5pbm5lckhUTUxcXG4nLFxuICAgICAgICAnMikgY29udGVudDogKCkgPT4gZWxlbWVudC5jbG9uZU5vZGUodHJ1ZSknLFxuICAgICAgXS5qb2luKCcgJylcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5zdGFuY2VzID0gZWxlbWVudHMucmVkdWNlPEluc3RhbmNlW10+KFxuICAgIChhY2MsIHJlZmVyZW5jZSk6IEluc3RhbmNlW10gPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSByZWZlcmVuY2UgJiYgY3JlYXRlVGlwcHkocmVmZXJlbmNlLCBwYXNzZWRQcm9wcyk7XG5cbiAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICBhY2MucHVzaChpbnN0YW5jZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICBbXVxuICApO1xuXG4gIHJldHVybiBpc0VsZW1lbnQodGFyZ2V0cykgPyBpbnN0YW5jZXNbMF0gOiBpbnN0YW5jZXM7XG59XG5cbnRpcHB5LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbnRpcHB5LnNldERlZmF1bHRQcm9wcyA9IHNldERlZmF1bHRQcm9wcztcbnRpcHB5LmN1cnJlbnRJbnB1dCA9IGN1cnJlbnRJbnB1dDtcblxuZXhwb3J0IGRlZmF1bHQgdGlwcHk7XG5cbmV4cG9ydCBjb25zdCBoaWRlQWxsOiBIaWRlQWxsID0gKHtcbiAgZXhjbHVkZTogZXhjbHVkZWRSZWZlcmVuY2VPckluc3RhbmNlLFxuICBkdXJhdGlvbixcbn06IEhpZGVBbGxPcHRpb25zID0ge30pID0+IHtcbiAgbW91bnRlZEluc3RhbmNlcy5mb3JFYWNoKChpbnN0YW5jZSkgPT4ge1xuICAgIGxldCBpc0V4Y2x1ZGVkID0gZmFsc2U7XG5cbiAgICBpZiAoZXhjbHVkZWRSZWZlcmVuY2VPckluc3RhbmNlKSB7XG4gICAgICBpc0V4Y2x1ZGVkID0gaXNSZWZlcmVuY2VFbGVtZW50KGV4Y2x1ZGVkUmVmZXJlbmNlT3JJbnN0YW5jZSlcbiAgICAgICAgPyBpbnN0YW5jZS5yZWZlcmVuY2UgPT09IGV4Y2x1ZGVkUmVmZXJlbmNlT3JJbnN0YW5jZVxuICAgICAgICA6IGluc3RhbmNlLnBvcHBlciA9PT0gKGV4Y2x1ZGVkUmVmZXJlbmNlT3JJbnN0YW5jZSBhcyBJbnN0YW5jZSkucG9wcGVyO1xuICAgIH1cblxuICAgIGlmICghaXNFeGNsdWRlZCkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxEdXJhdGlvbiA9IGluc3RhbmNlLnByb3BzLmR1cmF0aW9uO1xuXG4gICAgICBpbnN0YW5jZS5zZXRQcm9wcyh7ZHVyYXRpb259KTtcbiAgICAgIGluc3RhbmNlLmhpZGUoKTtcblxuICAgICAgaWYgKCFpbnN0YW5jZS5zdGF0ZS5pc0Rlc3Ryb3llZCkge1xuICAgICAgICBpbnN0YW5jZS5zZXRQcm9wcyh7ZHVyYXRpb246IG9yaWdpbmFsRHVyYXRpb259KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcbiIsICJpbXBvcnQgdGlwcHkgZnJvbSAnLi4nO1xuaW1wb3J0IHtkaXZ9IGZyb20gJy4uL2RvbS11dGlscyc7XG5pbXBvcnQge1xuICBDcmVhdGVTaW5nbGV0b24sXG4gIFBsdWdpbixcbiAgQ3JlYXRlU2luZ2xldG9uUHJvcHMsXG4gIFJlZmVyZW5jZUVsZW1lbnQsXG4gIENyZWF0ZVNpbmdsZXRvbkluc3RhbmNlLFxuICBJbnN0YW5jZSxcbiAgUHJvcHMsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7bm9ybWFsaXplVG9BcnJheSwgcmVtb3ZlUHJvcGVydGllc30gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtlcnJvcldoZW59IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHthcHBseVN0eWxlcywgTW9kaWZpZXJ9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlJztcblxuLy8gVGhlIGRlZmF1bHQgYGFwcGx5U3R5bGVzYCBtb2RpZmllciBoYXMgYSBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWRcbi8vIGV2ZXJ5IHRpbWUgdGhlIHBvcHBlciBpcyBkZXN0cm95ZWQgKGkuZS4gYSBuZXcgdGFyZ2V0KSwgcmVtb3ZpbmcgdGhlIHN0eWxlc1xuLy8gYW5kIGNhdXNpbmcgdHJhbnNpdGlvbnMgdG8gYnJlYWsgZm9yIHNpbmdsZXRvbnMgd2hlbiB0aGUgY29uc29sZSBpcyBvcGVuLCBidXRcbi8vIG1vc3Qgbm90YWJseSBmb3Igbm9uLXRyYW5zZm9ybSBzdHlsZXMgYmVpbmcgdXNlZCwgYGdwdUFjY2VsZXJhdGlvbjogZmFsc2VgLlxuY29uc3QgYXBwbHlTdHlsZXNNb2RpZmllcjogTW9kaWZpZXI8J2FwcGx5U3R5bGVzJywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0ge1xuICAuLi5hcHBseVN0eWxlcyxcbiAgZWZmZWN0KHtzdGF0ZX0pIHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9wcGVyOiB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgICBsZWZ0OiAnMCcsXG4gICAgICAgIHRvcDogJzAnLFxuICAgICAgICBtYXJnaW46ICcwJyxcbiAgICAgIH0sXG4gICAgICBhcnJvdzoge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIH0sXG4gICAgICByZWZlcmVuY2U6IHt9LFxuICAgIH07XG5cbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICAgIHN0YXRlLnN0eWxlcyA9IGluaXRpYWxTdHlsZXM7XG5cbiAgICBpZiAoc3RhdGUuZWxlbWVudHMuYXJyb3cpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICAgIH1cblxuICAgIC8vIGludGVudGlvbmFsbHkgcmV0dXJuIG5vIGNsZWFudXAgZnVuY3Rpb25cbiAgICAvLyByZXR1cm4gKCkgPT4geyAuLi4gfVxuICB9LFxufTtcblxuY29uc3QgY3JlYXRlU2luZ2xldG9uOiBDcmVhdGVTaW5nbGV0b24gPSAoXG4gIHRpcHB5SW5zdGFuY2VzLFxuICBvcHRpb25hbFByb3BzID0ge31cbikgPT4ge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoX19ERVZfXykge1xuICAgIGVycm9yV2hlbihcbiAgICAgICFBcnJheS5pc0FycmF5KHRpcHB5SW5zdGFuY2VzKSxcbiAgICAgIFtcbiAgICAgICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlU2luZ2xldG9uKCkgbXVzdCBiZSBhbiBhcnJheSBvZicsXG4gICAgICAgICd0aXBweSBpbnN0YW5jZXMuIFRoZSBwYXNzZWQgdmFsdWUgd2FzJyxcbiAgICAgICAgU3RyaW5nKHRpcHB5SW5zdGFuY2VzKSxcbiAgICAgIF0uam9pbignICcpXG4gICAgKTtcbiAgfVxuXG4gIGxldCBpbmRpdmlkdWFsSW5zdGFuY2VzID0gdGlwcHlJbnN0YW5jZXM7XG4gIGxldCByZWZlcmVuY2VzOiBBcnJheTxSZWZlcmVuY2VFbGVtZW50PiA9IFtdO1xuICBsZXQgdHJpZ2dlclRhcmdldHM6IEFycmF5PEVsZW1lbnQ+ID0gW107XG4gIGxldCBjdXJyZW50VGFyZ2V0OiBFbGVtZW50IHwgbnVsbDtcbiAgbGV0IG92ZXJyaWRlcyA9IG9wdGlvbmFsUHJvcHMub3ZlcnJpZGVzO1xuICBsZXQgaW50ZXJjZXB0U2V0UHJvcHNDbGVhbnVwczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcbiAgbGV0IHNob3duT25DcmVhdGUgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBzZXRUcmlnZ2VyVGFyZ2V0cygpOiB2b2lkIHtcbiAgICB0cmlnZ2VyVGFyZ2V0cyA9IGluZGl2aWR1YWxJbnN0YW5jZXNcbiAgICAgIC5tYXAoKGluc3RhbmNlKSA9PlxuICAgICAgICBub3JtYWxpemVUb0FycmF5KGluc3RhbmNlLnByb3BzLnRyaWdnZXJUYXJnZXQgfHwgaW5zdGFuY2UucmVmZXJlbmNlKVxuICAgICAgKVxuICAgICAgLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MuY29uY2F0KGl0ZW0pLCBbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRSZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgIHJlZmVyZW5jZXMgPSBpbmRpdmlkdWFsSW5zdGFuY2VzLm1hcCgoaW5zdGFuY2UpID0+IGluc3RhbmNlLnJlZmVyZW5jZSk7XG4gIH1cblxuICBmdW5jdGlvbiBlbmFibGVJbnN0YW5jZXMoaXNFbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaW5kaXZpZHVhbEluc3RhbmNlcy5mb3JFYWNoKChpbnN0YW5jZSkgPT4ge1xuICAgICAgaWYgKGlzRW5hYmxlZCkge1xuICAgICAgICBpbnN0YW5jZS5lbmFibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3RhbmNlLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGludGVyY2VwdFNldFByb3BzKHNpbmdsZXRvbjogSW5zdGFuY2UpOiBBcnJheTwoKSA9PiB2b2lkPiB7XG4gICAgcmV0dXJuIGluZGl2aWR1YWxJbnN0YW5jZXMubWFwKChpbnN0YW5jZSkgPT4ge1xuICAgICAgY29uc3Qgb3JpZ2luYWxTZXRQcm9wcyA9IGluc3RhbmNlLnNldFByb3BzO1xuXG4gICAgICBpbnN0YW5jZS5zZXRQcm9wcyA9IChwcm9wcyk6IHZvaWQgPT4ge1xuICAgICAgICBvcmlnaW5hbFNldFByb3BzKHByb3BzKTtcblxuICAgICAgICBpZiAoaW5zdGFuY2UucmVmZXJlbmNlID09PSBjdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgICAgc2luZ2xldG9uLnNldFByb3BzKHByb3BzKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuICgpOiB2b2lkID0+IHtcbiAgICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMgPSBvcmlnaW5hbFNldFByb3BzO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGhhdmUgdG8gcGFzcyBzaW5nbGV0b24sIGFzIGl0IG1heWJlIHVuZGVmaW5lZCBvbiBmaXJzdCBjYWxsXG4gIGZ1bmN0aW9uIHByZXBhcmVJbnN0YW5jZShcbiAgICBzaW5nbGV0b246IEluc3RhbmNlLFxuICAgIHRhcmdldDogUmVmZXJlbmNlRWxlbWVudFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRyaWdnZXJUYXJnZXRzLmluZGV4T2YodGFyZ2V0KTtcblxuICAgIC8vIGJhaWwtb3V0XG4gICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGN1cnJlbnRUYXJnZXQgPSB0YXJnZXQ7XG5cbiAgICBjb25zdCBvdmVycmlkZVByb3BzOiBQYXJ0aWFsPFByb3BzPiA9IChvdmVycmlkZXMgfHwgW10pXG4gICAgICAuY29uY2F0KCdjb250ZW50JylcbiAgICAgIC5yZWR1Y2UoKGFjYywgcHJvcCkgPT4ge1xuICAgICAgICAoYWNjIGFzIGFueSlbcHJvcF0gPSBpbmRpdmlkdWFsSW5zdGFuY2VzW2luZGV4XS5wcm9wc1twcm9wXTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcblxuICAgIHNpbmdsZXRvbi5zZXRQcm9wcyh7XG4gICAgICAuLi5vdmVycmlkZVByb3BzLFxuICAgICAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdDpcbiAgICAgICAgdHlwZW9mIG92ZXJyaWRlUHJvcHMuZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gb3ZlcnJpZGVQcm9wcy5nZXRSZWZlcmVuY2VDbGllbnRSZWN0XG4gICAgICAgICAgOiAoKTogQ2xpZW50UmVjdCA9PiByZWZlcmVuY2VzW2luZGV4XT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgfSk7XG4gIH1cblxuICBlbmFibGVJbnN0YW5jZXMoZmFsc2UpO1xuICBzZXRSZWZlcmVuY2VzKCk7XG4gIHNldFRyaWdnZXJUYXJnZXRzKCk7XG5cbiAgY29uc3QgcGx1Z2luOiBQbHVnaW4gPSB7XG4gICAgZm4oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgICAgZW5hYmxlSW5zdGFuY2VzKHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBvbkhpZGRlbigpOiB2b2lkIHtcbiAgICAgICAgICBjdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgb25DbGlja091dHNpZGUoaW5zdGFuY2UpOiB2b2lkIHtcbiAgICAgICAgICBpZiAoaW5zdGFuY2UucHJvcHMuc2hvd09uQ3JlYXRlICYmICFzaG93bk9uQ3JlYXRlKSB7XG4gICAgICAgICAgICBzaG93bk9uQ3JlYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25TaG93KGluc3RhbmNlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGluc3RhbmNlLnByb3BzLnNob3dPbkNyZWF0ZSAmJiAhc2hvd25PbkNyZWF0ZSkge1xuICAgICAgICAgICAgc2hvd25PbkNyZWF0ZSA9IHRydWU7XG4gICAgICAgICAgICBwcmVwYXJlSW5zdGFuY2UoaW5zdGFuY2UsIHJlZmVyZW5jZXNbMF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25UcmlnZ2VyKGluc3RhbmNlLCBldmVudCk6IHZvaWQge1xuICAgICAgICAgIHByZXBhcmVJbnN0YW5jZShpbnN0YW5jZSwgZXZlbnQuY3VycmVudFRhcmdldCBhcyBFbGVtZW50KTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBzaW5nbGV0b24gPSB0aXBweShkaXYoKSwge1xuICAgIC4uLnJlbW92ZVByb3BlcnRpZXMob3B0aW9uYWxQcm9wcywgWydvdmVycmlkZXMnXSksXG4gICAgcGx1Z2luczogW3BsdWdpbiwgLi4uKG9wdGlvbmFsUHJvcHMucGx1Z2lucyB8fCBbXSldLFxuICAgIHRyaWdnZXJUYXJnZXQ6IHRyaWdnZXJUYXJnZXRzLFxuICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgIC4uLm9wdGlvbmFsUHJvcHMucG9wcGVyT3B0aW9ucyxcbiAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAuLi4ob3B0aW9uYWxQcm9wcy5wb3BwZXJPcHRpb25zPy5tb2RpZmllcnMgfHwgW10pLFxuICAgICAgICBhcHBseVN0eWxlc01vZGlmaWVyLFxuICAgICAgXSxcbiAgICB9LFxuICB9KSBhcyBDcmVhdGVTaW5nbGV0b25JbnN0YW5jZTxDcmVhdGVTaW5nbGV0b25Qcm9wcz47XG5cbiAgY29uc3Qgb3JpZ2luYWxTaG93ID0gc2luZ2xldG9uLnNob3c7XG5cbiAgc2luZ2xldG9uLnNob3cgPSAodGFyZ2V0PzogUmVmZXJlbmNlRWxlbWVudCB8IEluc3RhbmNlIHwgbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgb3JpZ2luYWxTaG93KCk7XG5cbiAgICAvLyBmaXJzdCB0aW1lLCBzaG93T25DcmVhdGUgb3IgcHJvZ3JhbW1hdGljIGNhbGwgd2l0aCBubyBwYXJhbXNcbiAgICAvLyBkZWZhdWx0IHRvIHNob3dpbmcgZmlyc3QgaW5zdGFuY2VcbiAgICBpZiAoIWN1cnJlbnRUYXJnZXQgJiYgdGFyZ2V0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBwcmVwYXJlSW5zdGFuY2Uoc2luZ2xldG9uLCByZWZlcmVuY2VzWzBdKTtcbiAgICB9XG5cbiAgICAvLyB0cmlnZ2VyZWQgZnJvbSBldmVudCAoZG8gbm90aGluZyBhcyBwcmVwYXJlSW5zdGFuY2UgYWxyZWFkeSBjYWxsZWQgYnkgb25UcmlnZ2VyKVxuICAgIC8vIHByb2dyYW1tYXRpYyBjYWxsIHdpdGggbm8gcGFyYW1zIHdoZW4gYWxyZWFkeSB2aXNpYmxlIChkbyBub3RoaW5nIGFnYWluKVxuICAgIGlmIChjdXJyZW50VGFyZ2V0ICYmIHRhcmdldCA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gdGFyZ2V0IGlzIGluZGV4IG9mIGluc3RhbmNlXG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICByZWZlcmVuY2VzW3RhcmdldF0gJiYgcHJlcGFyZUluc3RhbmNlKHNpbmdsZXRvbiwgcmVmZXJlbmNlc1t0YXJnZXRdKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyB0YXJnZXQgaXMgYSBjaGlsZCB0aXBweSBpbnN0YW5jZVxuICAgIGlmIChpbmRpdmlkdWFsSW5zdGFuY2VzLmluZGV4T2YodGFyZ2V0IGFzIEluc3RhbmNlKSA+PSAwKSB7XG4gICAgICBjb25zdCByZWYgPSAodGFyZ2V0IGFzIEluc3RhbmNlKS5yZWZlcmVuY2U7XG4gICAgICByZXR1cm4gcHJlcGFyZUluc3RhbmNlKHNpbmdsZXRvbiwgcmVmKTtcbiAgICB9XG5cbiAgICAvLyB0YXJnZXQgaXMgYSBSZWZlcmVuY2VFbGVtZW50XG4gICAgaWYgKHJlZmVyZW5jZXMuaW5kZXhPZih0YXJnZXQgYXMgUmVmZXJlbmNlRWxlbWVudCkgPj0gMCkge1xuICAgICAgcmV0dXJuIHByZXBhcmVJbnN0YW5jZShzaW5nbGV0b24sIHRhcmdldCBhcyBSZWZlcmVuY2VFbGVtZW50KTtcbiAgICB9XG4gIH07XG5cbiAgc2luZ2xldG9uLnNob3dOZXh0ID0gKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGZpcnN0ID0gcmVmZXJlbmNlc1swXTtcbiAgICBpZiAoIWN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHJldHVybiBzaW5nbGV0b24uc2hvdygwKTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSByZWZlcmVuY2VzLmluZGV4T2YoY3VycmVudFRhcmdldCk7XG4gICAgc2luZ2xldG9uLnNob3cocmVmZXJlbmNlc1tpbmRleCArIDFdIHx8IGZpcnN0KTtcbiAgfTtcblxuICBzaW5nbGV0b24uc2hvd1ByZXZpb3VzID0gKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGxhc3QgPSByZWZlcmVuY2VzW3JlZmVyZW5jZXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFjdXJyZW50VGFyZ2V0KSB7XG4gICAgICByZXR1cm4gc2luZ2xldG9uLnNob3cobGFzdCk7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gcmVmZXJlbmNlcy5pbmRleE9mKGN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IHRhcmdldCA9IHJlZmVyZW5jZXNbaW5kZXggLSAxXSB8fCBsYXN0O1xuICAgIHNpbmdsZXRvbi5zaG93KHRhcmdldCk7XG4gIH07XG5cbiAgY29uc3Qgb3JpZ2luYWxTZXRQcm9wcyA9IHNpbmdsZXRvbi5zZXRQcm9wcztcblxuICBzaW5nbGV0b24uc2V0UHJvcHMgPSAocHJvcHMpOiB2b2lkID0+IHtcbiAgICBvdmVycmlkZXMgPSBwcm9wcy5vdmVycmlkZXMgfHwgb3ZlcnJpZGVzO1xuICAgIG9yaWdpbmFsU2V0UHJvcHMocHJvcHMpO1xuICB9O1xuXG4gIHNpbmdsZXRvbi5zZXRJbnN0YW5jZXMgPSAobmV4dEluc3RhbmNlcyk6IHZvaWQgPT4ge1xuICAgIGVuYWJsZUluc3RhbmNlcyh0cnVlKTtcbiAgICBpbnRlcmNlcHRTZXRQcm9wc0NsZWFudXBzLmZvckVhY2goKGZuKSA9PiBmbigpKTtcblxuICAgIGluZGl2aWR1YWxJbnN0YW5jZXMgPSBuZXh0SW5zdGFuY2VzO1xuXG4gICAgZW5hYmxlSW5zdGFuY2VzKGZhbHNlKTtcbiAgICBzZXRSZWZlcmVuY2VzKCk7XG4gICAgc2V0VHJpZ2dlclRhcmdldHMoKTtcbiAgICBpbnRlcmNlcHRTZXRQcm9wc0NsZWFudXBzID0gaW50ZXJjZXB0U2V0UHJvcHMoc2luZ2xldG9uKTtcblxuICAgIHNpbmdsZXRvbi5zZXRQcm9wcyh7dHJpZ2dlclRhcmdldDogdHJpZ2dlclRhcmdldHN9KTtcbiAgfTtcblxuICBpbnRlcmNlcHRTZXRQcm9wc0NsZWFudXBzID0gaW50ZXJjZXB0U2V0UHJvcHMoc2luZ2xldG9uKTtcblxuICByZXR1cm4gc2luZ2xldG9uO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU2luZ2xldG9uO1xuIiwgImltcG9ydCB0aXBweSBmcm9tICcuLic7XG5pbXBvcnQge1RPVUNIX09QVElPTlN9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge2RlZmF1bHRQcm9wc30gZnJvbSAnLi4vcHJvcHMnO1xuaW1wb3J0IHtJbnN0YW5jZSwgUHJvcHMsIFRhcmdldHN9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7TGlzdGVuZXJPYmplY3R9IGZyb20gJy4uL3R5cGVzLWludGVybmFsJztcbmltcG9ydCB7bm9ybWFsaXplVG9BcnJheSwgcmVtb3ZlUHJvcGVydGllc30gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtlcnJvcldoZW59IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xuXG5jb25zdCBCVUJCTElOR19FVkVOVFNfTUFQID0ge1xuICBtb3VzZW92ZXI6ICdtb3VzZWVudGVyJyxcbiAgZm9jdXNpbjogJ2ZvY3VzJyxcbiAgY2xpY2s6ICdjbGljaycsXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWxlZ2F0ZSBpbnN0YW5jZSB0aGF0IGNvbnRyb2xzIHRoZSBjcmVhdGlvbiBvZiB0aXBweSBpbnN0YW5jZXNcbiAqIGZvciBjaGlsZCBlbGVtZW50cyAoYHRhcmdldGAgQ1NTIHNlbGVjdG9yKS5cbiAqL1xuZnVuY3Rpb24gZGVsZWdhdGUoXG4gIHRhcmdldHM6IFRhcmdldHMsXG4gIHByb3BzOiBQYXJ0aWFsPFByb3BzPiAmIHt0YXJnZXQ6IHN0cmluZ31cbik6IEluc3RhbmNlIHwgSW5zdGFuY2VbXSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChfX0RFVl9fKSB7XG4gICAgZXJyb3JXaGVuKFxuICAgICAgIShwcm9wcyAmJiBwcm9wcy50YXJnZXQpLFxuICAgICAgW1xuICAgICAgICAnWW91IG11c3Qgc3BlY2l0eSBhIGB0YXJnZXRgIHByb3AgaW5kaWNhdGluZyBhIENTUyBzZWxlY3RvciBzdHJpbmcgbWF0Y2hpbmcnLFxuICAgICAgICAndGhlIHRhcmdldCBlbGVtZW50cyB0aGF0IHNob3VsZCByZWNlaXZlIGEgdGlwcHkuJyxcbiAgICAgIF0uam9pbignICcpXG4gICAgKTtcbiAgfVxuXG4gIGxldCBsaXN0ZW5lcnM6IExpc3RlbmVyT2JqZWN0W10gPSBbXTtcbiAgbGV0IGNoaWxkVGlwcHlJbnN0YW5jZXM6IEluc3RhbmNlW10gPSBbXTtcbiAgbGV0IGRpc2FibGVkID0gZmFsc2U7XG5cbiAgY29uc3Qge3RhcmdldH0gPSBwcm9wcztcblxuICBjb25zdCBuYXRpdmVQcm9wcyA9IHJlbW92ZVByb3BlcnRpZXMocHJvcHMsIFsndGFyZ2V0J10pO1xuICBjb25zdCBwYXJlbnRQcm9wcyA9IHsuLi5uYXRpdmVQcm9wcywgdHJpZ2dlcjogJ21hbnVhbCcsIHRvdWNoOiBmYWxzZX07XG4gIGNvbnN0IGNoaWxkUHJvcHMgPSB7XG4gICAgdG91Y2g6IGRlZmF1bHRQcm9wcy50b3VjaCxcbiAgICAuLi5uYXRpdmVQcm9wcyxcbiAgICBzaG93T25DcmVhdGU6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgcmV0dXJuVmFsdWUgPSB0aXBweSh0YXJnZXRzLCBwYXJlbnRQcm9wcyk7XG4gIGNvbnN0IG5vcm1hbGl6ZWRSZXR1cm5WYWx1ZSA9IG5vcm1hbGl6ZVRvQXJyYXkocmV0dXJuVmFsdWUpO1xuXG4gIGZ1bmN0aW9uIG9uVHJpZ2dlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIWV2ZW50LnRhcmdldCB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldE5vZGUgPSAoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QodGFyZ2V0KTtcblxuICAgIGlmICghdGFyZ2V0Tm9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdldCByZWxldmFudCB0cmlnZ2VyIHdpdGggZmFsbGJhY2tzOlxuICAgIC8vIDEuIENoZWNrIGBkYXRhLXRpcHB5LXRyaWdnZXJgIGF0dHJpYnV0ZSBvbiB0YXJnZXQgbm9kZVxuICAgIC8vIDIuIEZhbGxiYWNrIHRvIGB0cmlnZ2VyYCBwYXNzZWQgdG8gYGRlbGVnYXRlKClgXG4gICAgLy8gMy4gRmFsbGJhY2sgdG8gYGRlZmF1bHRQcm9wcy50cmlnZ2VyYFxuICAgIGNvbnN0IHRyaWdnZXIgPVxuICAgICAgdGFyZ2V0Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGlwcHktdHJpZ2dlcicpIHx8XG4gICAgICBwcm9wcy50cmlnZ2VyIHx8XG4gICAgICBkZWZhdWx0UHJvcHMudHJpZ2dlcjtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFyZ2V0Tm9kZS5fdGlwcHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoc3RhcnQnICYmIHR5cGVvZiBjaGlsZFByb3BzLnRvdWNoID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBldmVudC50eXBlICE9PSAndG91Y2hzdGFydCcgJiZcbiAgICAgIHRyaWdnZXIuaW5kZXhPZigoQlVCQkxJTkdfRVZFTlRTX01BUCBhcyBhbnkpW2V2ZW50LnR5cGVdKSA8IDBcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IHRpcHB5KHRhcmdldE5vZGUsIGNoaWxkUHJvcHMpO1xuXG4gICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICBjaGlsZFRpcHB5SW5zdGFuY2VzID0gY2hpbGRUaXBweUluc3RhbmNlcy5jb25jYXQoaW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uKFxuICAgIG5vZGU6IEVsZW1lbnQsXG4gICAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogRXZlbnRMaXN0ZW5lcixcbiAgICBvcHRpb25zOiBib29sZWFuIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICBsaXN0ZW5lcnMucHVzaCh7bm9kZSwgZXZlbnRUeXBlLCBoYW5kbGVyLCBvcHRpb25zfSk7XG4gIH1cblxuICBmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVycyhpbnN0YW5jZTogSW5zdGFuY2UpOiB2b2lkIHtcbiAgICBjb25zdCB7cmVmZXJlbmNlfSA9IGluc3RhbmNlO1xuXG4gICAgb24ocmVmZXJlbmNlLCAndG91Y2hzdGFydCcsIG9uVHJpZ2dlciwgVE9VQ0hfT1BUSU9OUyk7XG4gICAgb24ocmVmZXJlbmNlLCAnbW91c2VvdmVyJywgb25UcmlnZ2VyKTtcbiAgICBvbihyZWZlcmVuY2UsICdmb2N1c2luJywgb25UcmlnZ2VyKTtcbiAgICBvbihyZWZlcmVuY2UsICdjbGljaycsIG9uVHJpZ2dlcik7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoe25vZGUsIGV2ZW50VHlwZSwgaGFuZGxlciwgb3B0aW9uc306IExpc3RlbmVyT2JqZWN0KSA9PiB7XG4gICAgICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICB9KTtcbiAgICBsaXN0ZW5lcnMgPSBbXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFwcGx5TXV0YXRpb25zKGluc3RhbmNlOiBJbnN0YW5jZSk6IHZvaWQge1xuICAgIGNvbnN0IG9yaWdpbmFsRGVzdHJveSA9IGluc3RhbmNlLmRlc3Ryb3k7XG4gICAgY29uc3Qgb3JpZ2luYWxFbmFibGUgPSBpbnN0YW5jZS5lbmFibGU7XG4gICAgY29uc3Qgb3JpZ2luYWxEaXNhYmxlID0gaW5zdGFuY2UuZGlzYWJsZTtcblxuICAgIGluc3RhbmNlLmRlc3Ryb3kgPSAoc2hvdWxkRGVzdHJveUNoaWxkSW5zdGFuY2VzID0gdHJ1ZSk6IHZvaWQgPT4ge1xuICAgICAgaWYgKHNob3VsZERlc3Ryb3lDaGlsZEluc3RhbmNlcykge1xuICAgICAgICBjaGlsZFRpcHB5SW5zdGFuY2VzLmZvckVhY2goKGluc3RhbmNlKSA9PiB7XG4gICAgICAgICAgaW5zdGFuY2UuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY2hpbGRUaXBweUluc3RhbmNlcyA9IFtdO1xuXG4gICAgICByZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgICAgb3JpZ2luYWxEZXN0cm95KCk7XG4gICAgfTtcblxuICAgIGluc3RhbmNlLmVuYWJsZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIG9yaWdpbmFsRW5hYmxlKCk7XG4gICAgICBjaGlsZFRpcHB5SW5zdGFuY2VzLmZvckVhY2goKGluc3RhbmNlKSA9PiBpbnN0YW5jZS5lbmFibGUoKSk7XG4gICAgICBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICBpbnN0YW5jZS5kaXNhYmxlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgb3JpZ2luYWxEaXNhYmxlKCk7XG4gICAgICBjaGlsZFRpcHB5SW5zdGFuY2VzLmZvckVhY2goKGluc3RhbmNlKSA9PiBpbnN0YW5jZS5kaXNhYmxlKCkpO1xuICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgIH07XG5cbiAgICBhZGRFdmVudExpc3RlbmVycyhpbnN0YW5jZSk7XG4gIH1cblxuICBub3JtYWxpemVkUmV0dXJuVmFsdWUuZm9yRWFjaChhcHBseU11dGF0aW9ucyk7XG5cbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkZWxlZ2F0ZTtcbiIsICJpbXBvcnQge0JBQ0tEUk9QX0NMQVNTfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtkaXYsIHNldFZpc2liaWxpdHlTdGF0ZX0gZnJvbSAnLi4vZG9tLXV0aWxzJztcbmltcG9ydCB7Z2V0Q2hpbGRyZW59IGZyb20gJy4uL3RlbXBsYXRlJztcbmltcG9ydCB7QW5pbWF0ZUZpbGx9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7ZXJyb3JXaGVufSBmcm9tICcuLi92YWxpZGF0aW9uJztcblxuY29uc3QgYW5pbWF0ZUZpbGw6IEFuaW1hdGVGaWxsID0ge1xuICBuYW1lOiAnYW5pbWF0ZUZpbGwnLFxuICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICBmbihpbnN0YW5jZSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIWluc3RhbmNlLnByb3BzLnJlbmRlcj8uJCR0aXBweSkge1xuICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgZXJyb3JXaGVuKFxuICAgICAgICAgIGluc3RhbmNlLnByb3BzLmFuaW1hdGVGaWxsLFxuICAgICAgICAgICdUaGUgYGFuaW1hdGVGaWxsYCBwbHVnaW4gcmVxdWlyZXMgdGhlIGRlZmF1bHQgcmVuZGVyIGZ1bmN0aW9uLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IHtib3gsIGNvbnRlbnR9ID0gZ2V0Q2hpbGRyZW4oaW5zdGFuY2UucG9wcGVyKTtcblxuICAgIGNvbnN0IGJhY2tkcm9wID0gaW5zdGFuY2UucHJvcHMuYW5pbWF0ZUZpbGxcbiAgICAgID8gY3JlYXRlQmFja2Ryb3BFbGVtZW50KClcbiAgICAgIDogbnVsbDtcblxuICAgIHJldHVybiB7XG4gICAgICBvbkNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGJhY2tkcm9wKSB7XG4gICAgICAgICAgYm94Lmluc2VydEJlZm9yZShiYWNrZHJvcCwgYm94LmZpcnN0RWxlbWVudENoaWxkISk7XG4gICAgICAgICAgYm94LnNldEF0dHJpYnV0ZSgnZGF0YS1hbmltYXRlZmlsbCcsICcnKTtcbiAgICAgICAgICBib3guc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcblxuICAgICAgICAgIGluc3RhbmNlLnNldFByb3BzKHthcnJvdzogZmFsc2UsIGFuaW1hdGlvbjogJ3NoaWZ0LWF3YXknfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvbk1vdW50KCk6IHZvaWQge1xuICAgICAgICBpZiAoYmFja2Ryb3ApIHtcbiAgICAgICAgICBjb25zdCB7dHJhbnNpdGlvbkR1cmF0aW9ufSA9IGJveC5zdHlsZTtcbiAgICAgICAgICBjb25zdCBkdXJhdGlvbiA9IE51bWJlcih0cmFuc2l0aW9uRHVyYXRpb24ucmVwbGFjZSgnbXMnLCAnJykpO1xuXG4gICAgICAgICAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGZhZGUgaW4gYWZ0ZXIgdGhlIGJhY2tkcm9wIGhhcyBtb3N0bHkgZmlsbGVkIHRoZVxuICAgICAgICAgIC8vIHRvb2x0aXAgZWxlbWVudC4gYGNsaXAtcGF0aGAgaXMgdGhlIG90aGVyIGFsdGVybmF0aXZlIGJ1dCBpcyBub3RcbiAgICAgICAgICAvLyB3ZWxsLXN1cHBvcnRlZCBhbmQgaXMgYnVnZ3kgb24gc29tZSBkZXZpY2VzLlxuICAgICAgICAgIGNvbnRlbnQuc3R5bGUudHJhbnNpdGlvbkRlbGF5ID0gYCR7TWF0aC5yb3VuZChkdXJhdGlvbiAvIDEwKX1tc2A7XG5cbiAgICAgICAgICBiYWNrZHJvcC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSB0cmFuc2l0aW9uRHVyYXRpb247XG4gICAgICAgICAgc2V0VmlzaWJpbGl0eVN0YXRlKFtiYWNrZHJvcF0sICd2aXNpYmxlJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvblNob3coKTogdm9pZCB7XG4gICAgICAgIGlmIChiYWNrZHJvcCkge1xuICAgICAgICAgIGJhY2tkcm9wLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwbXMnO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25IaWRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoYmFja2Ryb3ApIHtcbiAgICAgICAgICBzZXRWaXNpYmlsaXR5U3RhdGUoW2JhY2tkcm9wXSwgJ2hpZGRlbicpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBhbmltYXRlRmlsbDtcblxuZnVuY3Rpb24gY3JlYXRlQmFja2Ryb3BFbGVtZW50KCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgY29uc3QgYmFja2Ryb3AgPSBkaXYoKTtcbiAgYmFja2Ryb3AuY2xhc3NOYW1lID0gQkFDS0RST1BfQ0xBU1M7XG4gIHNldFZpc2liaWxpdHlTdGF0ZShbYmFja2Ryb3BdLCAnaGlkZGVuJyk7XG4gIHJldHVybiBiYWNrZHJvcDtcbn1cbiIsICJpbXBvcnQge2dldE93bmVyRG9jdW1lbnQsIGlzTW91c2VFdmVudH0gZnJvbSAnLi4vZG9tLXV0aWxzJztcbmltcG9ydCB7Rm9sbG93Q3Vyc29yLCBJbnN0YW5jZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5sZXQgbW91c2VDb29yZHMgPSB7Y2xpZW50WDogMCwgY2xpZW50WTogMH07XG5sZXQgYWN0aXZlSW5zdGFuY2VzOiBBcnJheTx7aW5zdGFuY2U6IEluc3RhbmNlOyBkb2M6IERvY3VtZW50fT4gPSBbXTtcblxuZnVuY3Rpb24gc3RvcmVNb3VzZUNvb3Jkcyh7Y2xpZW50WCwgY2xpZW50WX06IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgbW91c2VDb29yZHMgPSB7Y2xpZW50WCwgY2xpZW50WX07XG59XG5cbmZ1bmN0aW9uIGFkZE1vdXNlQ29vcmRzTGlzdGVuZXIoZG9jOiBEb2N1bWVudCk6IHZvaWQge1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgc3RvcmVNb3VzZUNvb3Jkcyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU1vdXNlQ29vcmRzTGlzdGVuZXIoZG9jOiBEb2N1bWVudCk6IHZvaWQge1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgc3RvcmVNb3VzZUNvb3Jkcyk7XG59XG5cbmNvbnN0IGZvbGxvd0N1cnNvcjogRm9sbG93Q3Vyc29yID0ge1xuICBuYW1lOiAnZm9sbG93Q3Vyc29yJyxcbiAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgZm4oaW5zdGFuY2UpIHtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBpbnN0YW5jZS5yZWZlcmVuY2U7XG4gICAgY29uc3QgZG9jID0gZ2V0T3duZXJEb2N1bWVudChpbnN0YW5jZS5wcm9wcy50cmlnZ2VyVGFyZ2V0IHx8IHJlZmVyZW5jZSk7XG5cbiAgICBsZXQgaXNJbnRlcm5hbFVwZGF0ZSA9IGZhbHNlO1xuICAgIGxldCB3YXNGb2N1c0V2ZW50ID0gZmFsc2U7XG4gICAgbGV0IGlzVW5tb3VudGVkID0gdHJ1ZTtcbiAgICBsZXQgcHJldlByb3BzID0gaW5zdGFuY2UucHJvcHM7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0luaXRpYWxCZWhhdmlvcigpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGluc3RhbmNlLnByb3BzLmZvbGxvd0N1cnNvciA9PT0gJ2luaXRpYWwnICYmIGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVuc2V0R2V0UmVmZXJlbmNlQ2xpZW50UmVjdCgpOiB2b2lkIHtcbiAgICAgIGlzSW50ZXJuYWxVcGRhdGUgPSB0cnVlO1xuICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMoe2dldFJlZmVyZW5jZUNsaWVudFJlY3Q6IG51bGx9KTtcbiAgICAgIGlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgLy8gSWYgdGhlIGluc3RhbmNlIGlzIGludGVyYWN0aXZlLCBhdm9pZCB1cGRhdGluZyB0aGUgcG9zaXRpb24gdW5sZXNzIGl0J3NcbiAgICAgIC8vIG92ZXIgdGhlIHJlZmVyZW5jZSBlbGVtZW50XG4gICAgICBjb25zdCBpc0N1cnNvck92ZXJSZWZlcmVuY2UgPSBldmVudC50YXJnZXRcbiAgICAgICAgPyByZWZlcmVuY2UuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgIDogdHJ1ZTtcbiAgICAgIGNvbnN0IHtmb2xsb3dDdXJzb3J9ID0gaW5zdGFuY2UucHJvcHM7XG4gICAgICBjb25zdCB7Y2xpZW50WCwgY2xpZW50WX0gPSBldmVudDtcblxuICAgICAgY29uc3QgcmVjdCA9IHJlZmVyZW5jZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHJlbGF0aXZlWCA9IGNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgICBjb25zdCByZWxhdGl2ZVkgPSBjbGllbnRZIC0gcmVjdC50b3A7XG5cbiAgICAgIGlmIChpc0N1cnNvck92ZXJSZWZlcmVuY2UgfHwgIWluc3RhbmNlLnByb3BzLmludGVyYWN0aXZlKSB7XG4gICAgICAgIGluc3RhbmNlLnNldFByb3BzKHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gdW5uZWVkZWQgRE9NUmVjdCBwcm9wZXJ0aWVzXG4gICAgICAgICAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY3QgPSByZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgICAgIGxldCB4ID0gY2xpZW50WDtcbiAgICAgICAgICAgIGxldCB5ID0gY2xpZW50WTtcblxuICAgICAgICAgICAgaWYgKGZvbGxvd0N1cnNvciA9PT0gJ2luaXRpYWwnKSB7XG4gICAgICAgICAgICAgIHggPSByZWN0LmxlZnQgKyByZWxhdGl2ZVg7XG4gICAgICAgICAgICAgIHkgPSByZWN0LnRvcCArIHJlbGF0aXZlWTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG9wID0gZm9sbG93Q3Vyc29yID09PSAnaG9yaXpvbnRhbCcgPyByZWN0LnRvcCA6IHk7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGZvbGxvd0N1cnNvciA9PT0gJ3ZlcnRpY2FsJyA/IHJlY3QucmlnaHQgOiB4O1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gZm9sbG93Q3Vyc29yID09PSAnaG9yaXpvbnRhbCcgPyByZWN0LmJvdHRvbSA6IHk7XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gZm9sbG93Q3Vyc29yID09PSAndmVydGljYWwnID8gcmVjdC5sZWZ0IDogeDtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgd2lkdGg6IHJpZ2h0IC0gbGVmdCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBib3R0b20gLSB0b3AsXG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlKCk6IHZvaWQge1xuICAgICAgaWYgKGluc3RhbmNlLnByb3BzLmZvbGxvd0N1cnNvcikge1xuICAgICAgICBhY3RpdmVJbnN0YW5jZXMucHVzaCh7aW5zdGFuY2UsIGRvY30pO1xuICAgICAgICBhZGRNb3VzZUNvb3Jkc0xpc3RlbmVyKGRvYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIGFjdGl2ZUluc3RhbmNlcyA9IGFjdGl2ZUluc3RhbmNlcy5maWx0ZXIoXG4gICAgICAgIChkYXRhKSA9PiBkYXRhLmluc3RhbmNlICE9PSBpbnN0YW5jZVxuICAgICAgKTtcblxuICAgICAgaWYgKGFjdGl2ZUluc3RhbmNlcy5maWx0ZXIoKGRhdGEpID0+IGRhdGEuZG9jID09PSBkb2MpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZW1vdmVNb3VzZUNvb3Jkc0xpc3RlbmVyKGRvYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9uQ3JlYXRlOiBjcmVhdGUsXG4gICAgICBvbkRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgICBvbkJlZm9yZVVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgcHJldlByb3BzID0gaW5zdGFuY2UucHJvcHM7XG4gICAgICB9LFxuICAgICAgb25BZnRlclVwZGF0ZShfLCB7Zm9sbG93Q3Vyc29yfSk6IHZvaWQge1xuICAgICAgICBpZiAoaXNJbnRlcm5hbFVwZGF0ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmb2xsb3dDdXJzb3IgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHByZXZQcm9wcy5mb2xsb3dDdXJzb3IgIT09IGZvbGxvd0N1cnNvclxuICAgICAgICApIHtcbiAgICAgICAgICBkZXN0cm95KCk7XG5cbiAgICAgICAgICBpZiAoZm9sbG93Q3Vyc29yKSB7XG4gICAgICAgICAgICBjcmVhdGUoKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBpbnN0YW5jZS5zdGF0ZS5pc01vdW50ZWQgJiZcbiAgICAgICAgICAgICAgIXdhc0ZvY3VzRXZlbnQgJiZcbiAgICAgICAgICAgICAgIWdldElzSW5pdGlhbEJlaGF2aW9yKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBhZGRMaXN0ZW5lcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZW1vdmVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdW5zZXRHZXRSZWZlcmVuY2VDbGllbnRSZWN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25Nb3VudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluc3RhbmNlLnByb3BzLmZvbGxvd0N1cnNvciAmJiAhd2FzRm9jdXNFdmVudCkge1xuICAgICAgICAgIGlmIChpc1VubW91bnRlZCkge1xuICAgICAgICAgICAgb25Nb3VzZU1vdmUobW91c2VDb29yZHMgYXMgTW91c2VFdmVudCk7XG4gICAgICAgICAgICBpc1VubW91bnRlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghZ2V0SXNJbml0aWFsQmVoYXZpb3IoKSkge1xuICAgICAgICAgICAgYWRkTGlzdGVuZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvblRyaWdnZXIoXywgZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzTW91c2VFdmVudChldmVudCkpIHtcbiAgICAgICAgICBtb3VzZUNvb3JkcyA9IHtjbGllbnRYOiBldmVudC5jbGllbnRYLCBjbGllbnRZOiBldmVudC5jbGllbnRZfTtcbiAgICAgICAgfVxuICAgICAgICB3YXNGb2N1c0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ2ZvY3VzJztcbiAgICAgIH0sXG4gICAgICBvbkhpZGRlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluc3RhbmNlLnByb3BzLmZvbGxvd0N1cnNvcikge1xuICAgICAgICAgIHVuc2V0R2V0UmVmZXJlbmNlQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIHJlbW92ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgaXNVbm1vdW50ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmb2xsb3dDdXJzb3I7XG4iLCAiaW1wb3J0IHtNb2RpZmllciwgUGxhY2VtZW50fSBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5pbXBvcnQge2lzTW91c2VFdmVudH0gZnJvbSAnLi4vZG9tLXV0aWxzJztcbmltcG9ydCB7QmFzZVBsYWNlbWVudCwgSW5saW5lUG9zaXRpb25pbmcsIFByb3BzfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2FycmF5RnJvbSwgZ2V0QmFzZVBsYWNlbWVudH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5mdW5jdGlvbiBnZXRQcm9wcyhwcm9wczogUHJvcHMsIG1vZGlmaWVyOiBNb2RpZmllcjxhbnksIGFueT4pOiBQYXJ0aWFsPFByb3BzPiB7XG4gIHJldHVybiB7XG4gICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgLi4ucHJvcHMucG9wcGVyT3B0aW9ucyxcbiAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAuLi4ocHJvcHMucG9wcGVyT3B0aW9ucz8ubW9kaWZpZXJzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgKHtuYW1lfSkgPT4gbmFtZSAhPT0gbW9kaWZpZXIubmFtZVxuICAgICAgICApLFxuICAgICAgICBtb2RpZmllcixcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcbn1cblxuY29uc3QgaW5saW5lUG9zaXRpb25pbmc6IElubGluZVBvc2l0aW9uaW5nID0ge1xuICBuYW1lOiAnaW5saW5lUG9zaXRpb25pbmcnLFxuICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICBmbihpbnN0YW5jZSkge1xuICAgIGNvbnN0IHtyZWZlcmVuY2V9ID0gaW5zdGFuY2U7XG5cbiAgICBmdW5jdGlvbiBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gISFpbnN0YW5jZS5wcm9wcy5pbmxpbmVQb3NpdGlvbmluZztcbiAgICB9XG5cbiAgICBsZXQgcGxhY2VtZW50OiBQbGFjZW1lbnQ7XG4gICAgbGV0IGN1cnNvclJlY3RJbmRleCA9IC0xO1xuICAgIGxldCBpc0ludGVybmFsVXBkYXRlID0gZmFsc2U7XG4gICAgbGV0IHRyaWVkUGxhY2VtZW50czogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgY29uc3QgbW9kaWZpZXI6IE1vZGlmaWVyPFxuICAgICAgJ3RpcHB5SW5saW5lUG9zaXRpb25pbmcnLFxuICAgICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICA+ID0ge1xuICAgICAgbmFtZTogJ3RpcHB5SW5saW5lUG9zaXRpb25pbmcnLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHBoYXNlOiAnYWZ0ZXJXcml0ZScsXG4gICAgICBmbih7c3RhdGV9KSB7XG4gICAgICAgIGlmIChpc0VuYWJsZWQoKSkge1xuICAgICAgICAgIGlmICh0cmllZFBsYWNlbWVudHMuaW5kZXhPZihzdGF0ZS5wbGFjZW1lbnQpICE9PSAtMSkge1xuICAgICAgICAgICAgdHJpZWRQbGFjZW1lbnRzID0gW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGxhY2VtZW50ICE9PSBzdGF0ZS5wbGFjZW1lbnQgJiZcbiAgICAgICAgICAgIHRyaWVkUGxhY2VtZW50cy5pbmRleE9mKHN0YXRlLnBsYWNlbWVudCkgPT09IC0xXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0cmllZFBsYWNlbWVudHMucHVzaChzdGF0ZS5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMoe1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gdW5uZWVkZWQgRE9NUmVjdCBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3Q6ICgpID0+XG4gICAgICAgICAgICAgICAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdChzdGF0ZS5wbGFjZW1lbnQpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGxhY2VtZW50ID0gc3RhdGUucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRSZWZlcmVuY2VDbGllbnRSZWN0KHBsYWNlbWVudDogUGxhY2VtZW50KTogUGFydGlhbDxET01SZWN0PiB7XG4gICAgICByZXR1cm4gZ2V0SW5saW5lQm91bmRpbmdDbGllbnRSZWN0KFxuICAgICAgICBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCksXG4gICAgICAgIHJlZmVyZW5jZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgYXJyYXlGcm9tKHJlZmVyZW5jZS5nZXRDbGllbnRSZWN0cygpKSxcbiAgICAgICAgY3Vyc29yUmVjdEluZGV4XG4gICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEludGVybmFsUHJvcHMocGFydGlhbFByb3BzOiBQYXJ0aWFsPFByb3BzPik6IHZvaWQge1xuICAgICAgaXNJbnRlcm5hbFVwZGF0ZSA9IHRydWU7XG4gICAgICBpbnN0YW5jZS5zZXRQcm9wcyhwYXJ0aWFsUHJvcHMpO1xuICAgICAgaXNJbnRlcm5hbFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZE1vZGlmaWVyKCk6IHZvaWQge1xuICAgICAgaWYgKCFpc0ludGVybmFsVXBkYXRlKSB7XG4gICAgICAgIHNldEludGVybmFsUHJvcHMoZ2V0UHJvcHMoaW5zdGFuY2UucHJvcHMsIG1vZGlmaWVyKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9uQ3JlYXRlOiBhZGRNb2RpZmllcixcbiAgICAgIG9uQWZ0ZXJVcGRhdGU6IGFkZE1vZGlmaWVyLFxuICAgICAgb25UcmlnZ2VyKF8sIGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChpc01vdXNlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgY29uc3QgcmVjdHMgPSBhcnJheUZyb20oaW5zdGFuY2UucmVmZXJlbmNlLmdldENsaWVudFJlY3RzKCkpO1xuICAgICAgICAgIGNvbnN0IGN1cnNvclJlY3QgPSByZWN0cy5maW5kKFxuICAgICAgICAgICAgKHJlY3QpID0+XG4gICAgICAgICAgICAgIHJlY3QubGVmdCAtIDIgPD0gZXZlbnQuY2xpZW50WCAmJlxuICAgICAgICAgICAgICByZWN0LnJpZ2h0ICsgMiA+PSBldmVudC5jbGllbnRYICYmXG4gICAgICAgICAgICAgIHJlY3QudG9wIC0gMiA8PSBldmVudC5jbGllbnRZICYmXG4gICAgICAgICAgICAgIHJlY3QuYm90dG9tICsgMiA+PSBldmVudC5jbGllbnRZXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHJlY3RzLmluZGV4T2YoY3Vyc29yUmVjdCk7XG4gICAgICAgICAgY3Vyc29yUmVjdEluZGV4ID0gaW5kZXggPiAtMSA/IGluZGV4IDogY3Vyc29yUmVjdEluZGV4O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25IaWRkZW4oKTogdm9pZCB7XG4gICAgICAgIGN1cnNvclJlY3RJbmRleCA9IC0xO1xuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgaW5saW5lUG9zaXRpb25pbmc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmxpbmVCb3VuZGluZ0NsaWVudFJlY3QoXG4gIGN1cnJlbnRCYXNlUGxhY2VtZW50OiBCYXNlUGxhY2VtZW50IHwgbnVsbCxcbiAgYm91bmRpbmdSZWN0OiBET01SZWN0LFxuICBjbGllbnRSZWN0czogRE9NUmVjdFtdLFxuICBjdXJzb3JSZWN0SW5kZXg6IG51bWJlclxuKToge1xuICB0b3A6IG51bWJlcjtcbiAgYm90dG9tOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgcmlnaHQ6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59IHtcbiAgLy8gTm90IGFuIGlubGluZSBlbGVtZW50LCBvciBwbGFjZW1lbnQgaXMgbm90IHlldCBrbm93blxuICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoIDwgMiB8fCBjdXJyZW50QmFzZVBsYWNlbWVudCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBib3VuZGluZ1JlY3Q7XG4gIH1cblxuICAvLyBUaGVyZSBhcmUgdHdvIHJlY3RzIGFuZCB0aGV5IGFyZSBkaXNqb2luZWRcbiAgaWYgKFxuICAgIGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJlxuICAgIGN1cnNvclJlY3RJbmRleCA+PSAwICYmXG4gICAgY2xpZW50UmVjdHNbMF0ubGVmdCA+IGNsaWVudFJlY3RzWzFdLnJpZ2h0XG4gICkge1xuICAgIHJldHVybiBjbGllbnRSZWN0c1tjdXJzb3JSZWN0SW5kZXhdIHx8IGJvdW5kaW5nUmVjdDtcbiAgfVxuXG4gIHN3aXRjaCAoY3VycmVudEJhc2VQbGFjZW1lbnQpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6IHtcbiAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IGlzVG9wID0gY3VycmVudEJhc2VQbGFjZW1lbnQgPT09ICd0b3AnO1xuXG4gICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG5cbiAgICAgIHJldHVybiB7dG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LCB3aWR0aCwgaGVpZ2h0fTtcbiAgICB9XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOiB7XG4gICAgICBjb25zdCBtaW5MZWZ0ID0gTWF0aC5taW4oLi4uY2xpZW50UmVjdHMubWFwKChyZWN0cykgPT4gcmVjdHMubGVmdCkpO1xuICAgICAgY29uc3QgbWF4UmlnaHQgPSBNYXRoLm1heCguLi5jbGllbnRSZWN0cy5tYXAoKHJlY3RzKSA9PiByZWN0cy5yaWdodCkpO1xuICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKChyZWN0KSA9PlxuICAgICAgICBjdXJyZW50QmFzZVBsYWNlbWVudCA9PT0gJ2xlZnQnXG4gICAgICAgICAgPyByZWN0LmxlZnQgPT09IG1pbkxlZnRcbiAgICAgICAgICA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0XG4gICAgICApO1xuXG4gICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgY29uc3QgYm90dG9tID0gbWVhc3VyZVJlY3RzW21lYXN1cmVSZWN0cy5sZW5ndGggLSAxXS5ib3R0b207XG4gICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcblxuICAgICAgcmV0dXJuIHt0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQsIHdpZHRoLCBoZWlnaHR9O1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYm91bmRpbmdSZWN0O1xuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7VmlydHVhbEVsZW1lbnR9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlJztcbmltcG9ydCB7UmVmZXJlbmNlRWxlbWVudCwgU3RpY2t5fSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IHN0aWNreTogU3RpY2t5ID0ge1xuICBuYW1lOiAnc3RpY2t5JyxcbiAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgZm4oaW5zdGFuY2UpIHtcbiAgICBjb25zdCB7cmVmZXJlbmNlLCBwb3BwZXJ9ID0gaW5zdGFuY2U7XG5cbiAgICBmdW5jdGlvbiBnZXRSZWZlcmVuY2UoKTogUmVmZXJlbmNlRWxlbWVudCB8IFZpcnR1YWxFbGVtZW50IHtcbiAgICAgIHJldHVybiBpbnN0YW5jZS5wb3BwZXJJbnN0YW5jZVxuICAgICAgICA/IGluc3RhbmNlLnBvcHBlckluc3RhbmNlLnN0YXRlLmVsZW1lbnRzLnJlZmVyZW5jZVxuICAgICAgICA6IHJlZmVyZW5jZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzaG91bGRDaGVjayh2YWx1ZTogJ3JlZmVyZW5jZScgfCAncG9wcGVyJyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGluc3RhbmNlLnByb3BzLnN0aWNreSA9PT0gdHJ1ZSB8fCBpbnN0YW5jZS5wcm9wcy5zdGlja3kgPT09IHZhbHVlO1xuICAgIH1cblxuICAgIGxldCBwcmV2UmVmUmVjdDogQ2xpZW50UmVjdCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBwcmV2UG9wUmVjdDogQ2xpZW50UmVjdCB8IG51bGwgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICBjb25zdCBjdXJyZW50UmVmUmVjdCA9IHNob3VsZENoZWNrKCdyZWZlcmVuY2UnKVxuICAgICAgICA/IGdldFJlZmVyZW5jZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQb3BSZWN0ID0gc2hvdWxkQ2hlY2soJ3BvcHBlcicpXG4gICAgICAgID8gcG9wcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIDogbnVsbDtcblxuICAgICAgaWYgKFxuICAgICAgICAoY3VycmVudFJlZlJlY3QgJiYgYXJlUmVjdHNEaWZmZXJlbnQocHJldlJlZlJlY3QsIGN1cnJlbnRSZWZSZWN0KSkgfHxcbiAgICAgICAgKGN1cnJlbnRQb3BSZWN0ICYmIGFyZVJlY3RzRGlmZmVyZW50KHByZXZQb3BSZWN0LCBjdXJyZW50UG9wUmVjdCkpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGluc3RhbmNlLnBvcHBlckluc3RhbmNlKSB7XG4gICAgICAgICAgaW5zdGFuY2UucG9wcGVySW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJldlJlZlJlY3QgPSBjdXJyZW50UmVmUmVjdDtcbiAgICAgIHByZXZQb3BSZWN0ID0gY3VycmVudFBvcFJlY3Q7XG5cbiAgICAgIGlmIChpbnN0YW5jZS5zdGF0ZS5pc01vdW50ZWQpIHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZVBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb25Nb3VudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluc3RhbmNlLnByb3BzLnN0aWNreSkge1xuICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN0aWNreTtcblxuZnVuY3Rpb24gYXJlUmVjdHNEaWZmZXJlbnQoXG4gIHJlY3RBOiBDbGllbnRSZWN0IHwgbnVsbCxcbiAgcmVjdEI6IENsaWVudFJlY3QgfCBudWxsXG4pOiBib29sZWFuIHtcbiAgaWYgKHJlY3RBICYmIHJlY3RCKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlY3RBLnRvcCAhPT0gcmVjdEIudG9wIHx8XG4gICAgICByZWN0QS5yaWdodCAhPT0gcmVjdEIucmlnaHQgfHxcbiAgICAgIHJlY3RBLmJvdHRvbSAhPT0gcmVjdEIuYm90dG9tIHx8XG4gICAgICByZWN0QS5sZWZ0ICE9PSByZWN0Qi5sZWZ0XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIiwgImltcG9ydCB0aXBweSBmcm9tICcuLi9zcmMnO1xuaW1wb3J0IHtyZW5kZXJ9IGZyb20gJy4uL3NyYy90ZW1wbGF0ZSc7XG5cbnRpcHB5LnNldERlZmF1bHRQcm9wcyh7cmVuZGVyfSk7XG5cbmV4cG9ydCB7ZGVmYXVsdCwgaGlkZUFsbH0gZnJvbSAnLi4vc3JjJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjcmVhdGVTaW5nbGV0b259IGZyb20gJy4uL3NyYy9hZGRvbnMvY3JlYXRlU2luZ2xldG9uJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZWxlZ2F0ZX0gZnJvbSAnLi4vc3JjL2FkZG9ucy9kZWxlZ2F0ZSc7XG5leHBvcnQge2RlZmF1bHQgYXMgYW5pbWF0ZUZpbGx9IGZyb20gJy4uL3NyYy9wbHVnaW5zL2FuaW1hdGVGaWxsJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb2xsb3dDdXJzb3J9IGZyb20gJy4uL3NyYy9wbHVnaW5zL2ZvbGxvd0N1cnNvcic7XG5leHBvcnQge2RlZmF1bHQgYXMgaW5saW5lUG9zaXRpb25pbmd9IGZyb20gJy4uL3NyYy9wbHVnaW5zL2lubGluZVBvc2l0aW9uaW5nJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdGlja3l9IGZyb20gJy4uL3NyYy9wbHVnaW5zL3N0aWNreSc7XG5leHBvcnQge1JPVU5EX0FSUk9XIGFzIHJvdW5kQXJyb3d9IGZyb20gJy4uL3NyYy9jb25zdGFudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBLCtFQUFBQSxVQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLFFBQVEsU0FBVSxJQUFJO0FBQ3hCLGFBQU8sTUFBTSxHQUFHLFNBQVMsUUFBUTtBQUFBLElBQ25DO0FBR0EsSUFBQUEsUUFBTztBQUFBLElBRUwsTUFBTSxPQUFPLGNBQWMsWUFBWSxVQUFVLEtBQ2pELE1BQU0sT0FBTyxVQUFVLFlBQVksTUFBTTtBQUFBLElBRXpDLE1BQU0sT0FBTyxRQUFRLFlBQVksSUFBSSxLQUNyQyxNQUFNLE9BQU8sVUFBVSxZQUFZLE1BQU0sS0FDekMsTUFBTSxPQUFPRCxZQUFRLFlBQVlBLFFBQUk7QUFBQSxJQUVwQywyQkFBWTtBQUFFLGFBQU87QUFBQSxJQUFNLEVBQUcsS0FBSyxTQUFTLGFBQWEsRUFBRTtBQUFBO0FBQUE7OztBQ2Y5RDtBQUFBLDhFQUFBRSxVQUFBQyxTQUFBO0FBQUE7QUFDQSxJQUFBQSxRQUFPLFVBQVUsU0FBVSxNQUFNO0FBQy9CLFVBQUk7QUFDRixlQUFPLENBQUMsQ0FBQyxLQUFLO0FBQUEsTUFDaEIsU0FBUyxPQUFPO0FBQ2QsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDUEE7QUFBQSxvRkFB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QU9ULE1BQU1HLFNBQVNrQixNQUFNZixPQUFPVSxjQUFjSyxLQUF4RDtJQUNEO0VBSUY7QUF6QndFLENBQUE7QU1oQjNFekUsTUFBTW1vQixnQkFBZ0I7RUFBQ047QUFBRCxDQUF0Qjs7IiwKICAibmFtZXMiOiBbImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZm4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZm4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIlN5bWJvbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiZG9jdW1lbnQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiVHlwZUVycm9yIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm1heCIsICJtaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZm4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2V0IiwgImZuIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNldCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJtYXgiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2V0IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNldCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJUaXBweV9leHBvcnRzIiwgIl9fZXhwb3J0IiwgInRpcHB5IiwgInRpcHB5X2VzbV9kZWZhdWx0IiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIl9fdG9Db21tb25KUyIsICJ0b3AiLCAiYm90dG9tIiwgInJpZ2h0IiwgImxlZnQiLCAiYXV0byIsICJiYXNlUGxhY2VtZW50cyIsICJzdGFydCIsICJlbmQiLCAiY2xpcHBpbmdQYXJlbnRzIiwgInZpZXdwb3J0IiwgInBvcHBlciIsICJyZWZlcmVuY2UiLCAidmFyaWF0aW9uUGxhY2VtZW50cyIsICJyZWR1Y2UiLCAiYWNjIiwgInBsYWNlbWVudCIsICJjb25jYXQiLCAicGxhY2VtZW50cyIsICJiZWZvcmVSZWFkIiwgInJlYWQiLCAiYWZ0ZXJSZWFkIiwgImJlZm9yZU1haW4iLCAibWFpbiIsICJhZnRlck1haW4iLCAiYmVmb3JlV3JpdGUiLCAid3JpdGUiLCAiYWZ0ZXJXcml0ZSIsICJtb2RpZmllclBoYXNlcyIsICJnZXROb2RlTmFtZSIsICJlbGVtZW50IiwgIm5vZGVOYW1lIiwgInRvTG93ZXJDYXNlIiwgImdldFdpbmRvdyIsICJub2RlIiwgIndpbmRvdyIsICJ0b1N0cmluZyIsICJvd25lckRvY3VtZW50IiwgImRlZmF1bHRWaWV3IiwgImlzRWxlbWVudCIsICJPd25FbGVtZW50IiwgIkVsZW1lbnQiLCAiaXNIVE1MRWxlbWVudCIsICJIVE1MRWxlbWVudCIsICJpc1NoYWRvd1Jvb3QiLCAiU2hhZG93Um9vdCIsICJhcHBseVN0eWxlcyIsICJfcmVmIiwgInN0YXRlIiwgIk9iamVjdCIsICJrZXlzIiwgImVsZW1lbnRzIiwgImZvckVhY2giLCAibmFtZSIsICJzdHlsZSIsICJzdHlsZXMiLCAiYXR0cmlidXRlcyIsICJhc3NpZ24iLCAibmFtZTIiLCAidmFsdWUiLCAicmVtb3ZlQXR0cmlidXRlIiwgInNldEF0dHJpYnV0ZSIsICJlZmZlY3QiLCAiX3JlZjIiLCAiaW5pdGlhbFN0eWxlcyIsICJwb3NpdGlvbiIsICJvcHRpb25zIiwgInN0cmF0ZWd5IiwgIm1hcmdpbiIsICJhcnJvdyIsICJzdHlsZVByb3BlcnRpZXMiLCAiaGFzT3duUHJvcGVydHkiLCAic3R5bGUyIiwgInByb3BlcnR5IiwgImF0dHJpYnV0ZSIsICJhcHBseVN0eWxlc19kZWZhdWx0IiwgImVuYWJsZWQiLCAicGhhc2UiLCAiZm4iLCAicmVxdWlyZXMiLCAiZ2V0QmFzZVBsYWNlbWVudCIsICJzcGxpdCIsICJtYXgiLCAiTWF0aCIsICJtaW4iLCAicm91bmQiLCAiZ2V0VUFTdHJpbmciLCAidWFEYXRhIiwgIm5hdmlnYXRvciIsICJ1c2VyQWdlbnREYXRhIiwgImJyYW5kcyIsICJBcnJheSIsICJpc0FycmF5IiwgIm1hcCIsICJpdGVtIiwgImJyYW5kIiwgInZlcnNpb24iLCAiam9pbiIsICJ1c2VyQWdlbnQiLCAiaXNMYXlvdXRWaWV3cG9ydCIsICJ0ZXN0IiwgImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsICJpbmNsdWRlU2NhbGUiLCAiaXNGaXhlZFN0cmF0ZWd5IiwgImNsaWVudFJlY3QiLCAic2NhbGVYIiwgInNjYWxlWSIsICJvZmZzZXRXaWR0aCIsICJ3aWR0aCIsICJvZmZzZXRIZWlnaHQiLCAiaGVpZ2h0IiwgInZpc3VhbFZpZXdwb3J0IiwgImFkZFZpc3VhbE9mZnNldHMiLCAieCIsICJvZmZzZXRMZWZ0IiwgInkiLCAib2Zmc2V0VG9wIiwgImdldExheW91dFJlY3QiLCAiYWJzIiwgImNvbnRhaW5zIiwgInBhcmVudCIsICJjaGlsZCIsICJyb290Tm9kZSIsICJnZXRSb290Tm9kZSIsICJuZXh0IiwgImlzU2FtZU5vZGUiLCAicGFyZW50Tm9kZSIsICJob3N0IiwgImdldENvbXB1dGVkU3R5bGUiLCAiaXNUYWJsZUVsZW1lbnQiLCAiaW5kZXhPZiIsICJnZXREb2N1bWVudEVsZW1lbnQiLCAiZG9jdW1lbnQiLCAiZG9jdW1lbnRFbGVtZW50IiwgImdldFBhcmVudE5vZGUiLCAiYXNzaWduZWRTbG90IiwgImdldFRydWVPZmZzZXRQYXJlbnQiLCAib2Zmc2V0UGFyZW50IiwgImdldENvbnRhaW5pbmdCbG9jayIsICJpc0ZpcmVmb3giLCAiaXNJRSIsICJlbGVtZW50Q3NzIiwgImN1cnJlbnROb2RlIiwgImNzcyIsICJ0cmFuc2Zvcm0iLCAicGVyc3BlY3RpdmUiLCAiY29udGFpbiIsICJ3aWxsQ2hhbmdlIiwgImZpbHRlciIsICJnZXRPZmZzZXRQYXJlbnQiLCAid2luZG93MiIsICJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCAid2l0aGluIiwgIm1pbjIiLCAibWF4MiIsICJ3aXRoaW5NYXhDbGFtcCIsICJ2IiwgImdldEZyZXNoU2lkZU9iamVjdCIsICJtZXJnZVBhZGRpbmdPYmplY3QiLCAicGFkZGluZ09iamVjdCIsICJleHBhbmRUb0hhc2hNYXAiLCAiaGFzaE1hcCIsICJrZXkiLCAidG9QYWRkaW5nT2JqZWN0IiwgInRvUGFkZGluZ09iamVjdDIiLCAicGFkZGluZyIsICJyZWN0cyIsICJfc3RhdGUkbW9kaWZpZXJzRGF0YSQiLCAiYXJyb3dFbGVtZW50IiwgInBvcHBlck9mZnNldHMyIiwgIm1vZGlmaWVyc0RhdGEiLCAicG9wcGVyT2Zmc2V0cyIsICJiYXNlUGxhY2VtZW50IiwgImF4aXMiLCAiaXNWZXJ0aWNhbCIsICJsZW4iLCAiYXJyb3dSZWN0IiwgIm1pblByb3AiLCAibWF4UHJvcCIsICJlbmREaWZmIiwgInN0YXJ0RGlmZiIsICJhcnJvd09mZnNldFBhcmVudCIsICJjbGllbnRTaXplIiwgImNsaWVudEhlaWdodCIsICJjbGllbnRXaWR0aCIsICJjZW50ZXJUb1JlZmVyZW5jZSIsICJjZW50ZXIiLCAib2Zmc2V0MiIsICJheGlzUHJvcCIsICJjZW50ZXJPZmZzZXQiLCAiZWZmZWN0MiIsICJfb3B0aW9ucyRlbGVtZW50IiwgInF1ZXJ5U2VsZWN0b3IiLCAiYXJyb3dfZGVmYXVsdCIsICJyZXF1aXJlc0lmRXhpc3RzIiwgImdldFZhcmlhdGlvbiIsICJ1bnNldFNpZGVzIiwgInJvdW5kT2Zmc2V0c0J5RFBSIiwgIndpbiIsICJkcHIiLCAiZGV2aWNlUGl4ZWxSYXRpbyIsICJtYXBUb1N0eWxlcyIsICJfT2JqZWN0JGFzc2lnbjIiLCAicG9wcGVyMiIsICJwb3BwZXJSZWN0IiwgInZhcmlhdGlvbiIsICJvZmZzZXRzIiwgImdwdUFjY2VsZXJhdGlvbiIsICJhZGFwdGl2ZSIsICJyb3VuZE9mZnNldHMiLCAiaXNGaXhlZCIsICJfb2Zmc2V0cyR4IiwgIl9vZmZzZXRzJHkiLCAiX3JlZjMiLCAiaGFzWCIsICJoYXNZIiwgInNpZGVYIiwgInNpZGVZIiwgImhlaWdodFByb3AiLCAid2lkdGhQcm9wIiwgIm9mZnNldFkiLCAib2Zmc2V0WCIsICJjb21tb25TdHlsZXMiLCAiX3JlZjQiLCAiX09iamVjdCRhc3NpZ24iLCAiY29tcHV0ZVN0eWxlcyIsICJfcmVmNSIsICJfb3B0aW9ucyRncHVBY2NlbGVyYXQiLCAiX29wdGlvbnMkYWRhcHRpdmUiLCAiX29wdGlvbnMkcm91bmRPZmZzZXRzIiwgImNvbXB1dGVTdHlsZXNfZGVmYXVsdCIsICJkYXRhIiwgInBhc3NpdmUiLCAiZWZmZWN0MyIsICJpbnN0YW5jZSIsICJfb3B0aW9ucyRzY3JvbGwiLCAic2Nyb2xsIiwgIl9vcHRpb25zJHJlc2l6ZSIsICJyZXNpemUiLCAic2Nyb2xsUGFyZW50cyIsICJzY3JvbGxQYXJlbnQiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJ1cGRhdGUiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIsICJldmVudExpc3RlbmVyc19kZWZhdWx0IiwgImhhc2giLCAiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCAicmVwbGFjZSIsICJtYXRjaGVkIiwgImhhc2gyIiwgImdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IiwgImdldFdpbmRvd1Njcm9sbCIsICJzY3JvbGxMZWZ0IiwgInBhZ2VYT2Zmc2V0IiwgInNjcm9sbFRvcCIsICJwYWdlWU9mZnNldCIsICJnZXRXaW5kb3dTY3JvbGxCYXJYIiwgImdldFZpZXdwb3J0UmVjdCIsICJodG1sIiwgImxheW91dFZpZXdwb3J0IiwgImdldERvY3VtZW50UmVjdCIsICJfZWxlbWVudCRvd25lckRvY3VtZW4iLCAid2luU2Nyb2xsIiwgImJvZHkiLCAic2Nyb2xsV2lkdGgiLCAic2Nyb2xsSGVpZ2h0IiwgImRpcmVjdGlvbiIsICJpc1Njcm9sbFBhcmVudCIsICJfZ2V0Q29tcHV0ZWRTdHlsZSIsICJvdmVyZmxvdyIsICJvdmVyZmxvd1giLCAib3ZlcmZsb3dZIiwgImdldFNjcm9sbFBhcmVudCIsICJsaXN0U2Nyb2xsUGFyZW50cyIsICJsaXN0IiwgImlzQm9keSIsICJ0YXJnZXQiLCAidXBkYXRlZExpc3QiLCAicmVjdFRvQ2xpZW50UmVjdCIsICJyZWN0IiwgImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwgImNsaWVudFRvcCIsICJjbGllbnRMZWZ0IiwgImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwgImNsaXBwaW5nUGFyZW50IiwgImdldENsaXBwaW5nUGFyZW50cyIsICJjbGlwcGluZ1BhcmVudHMyIiwgImNhbkVzY2FwZUNsaXBwaW5nIiwgImNsaXBwZXJFbGVtZW50IiwgImdldENsaXBwaW5nUmVjdCIsICJib3VuZGFyeSIsICJyb290Qm91bmRhcnkiLCAibWFpbkNsaXBwaW5nUGFyZW50cyIsICJmaXJzdENsaXBwaW5nUGFyZW50IiwgImNsaXBwaW5nUmVjdCIsICJhY2NSZWN0IiwgImNvbXB1dGVPZmZzZXRzIiwgInJlZmVyZW5jZTIiLCAiY29tbW9uWCIsICJjb21tb25ZIiwgIm1haW5BeGlzIiwgImRldGVjdE92ZXJmbG93IiwgIl9vcHRpb25zIiwgIl9vcHRpb25zJHBsYWNlbWVudCIsICJfb3B0aW9ucyRzdHJhdGVneSIsICJfb3B0aW9ucyRib3VuZGFyeSIsICJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCAiX29wdGlvbnMkZWxlbWVudENvbnRlIiwgImVsZW1lbnRDb250ZXh0IiwgIl9vcHRpb25zJGFsdEJvdW5kYXJ5IiwgImFsdEJvdW5kYXJ5IiwgIl9vcHRpb25zJHBhZGRpbmciLCAiYWx0Q29udGV4dCIsICJjbGlwcGluZ0NsaWVudFJlY3QiLCAiY29udGV4dEVsZW1lbnQiLCAicmVmZXJlbmNlQ2xpZW50UmVjdCIsICJwb3BwZXJDbGllbnRSZWN0IiwgImVsZW1lbnRDbGllbnRSZWN0IiwgIm92ZXJmbG93T2Zmc2V0cyIsICJvZmZzZXREYXRhIiwgIm9mZnNldCIsICJtdWx0aXBseSIsICJjb21wdXRlQXV0b1BsYWNlbWVudCIsICJmbGlwVmFyaWF0aW9ucyIsICJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCAiYWxsb3dlZEF1dG9QbGFjZW1lbnRzIiwgInBsYWNlbWVudHMyIiwgInBsYWNlbWVudDIiLCAiYWxsb3dlZFBsYWNlbWVudHMiLCAibGVuZ3RoIiwgIm92ZXJmbG93cyIsICJzb3J0IiwgImEiLCAiYiIsICJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsICJvcHBvc2l0ZVBsYWNlbWVudCIsICJmbGlwIiwgIl9za2lwIiwgIl9vcHRpb25zJG1haW5BeGlzIiwgImNoZWNrTWFpbkF4aXMiLCAiX29wdGlvbnMkYWx0QXhpcyIsICJhbHRBeGlzIiwgImNoZWNrQWx0QXhpcyIsICJzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMiLCAiZmFsbGJhY2tQbGFjZW1lbnRzIiwgIl9vcHRpb25zJGZsaXBWYXJpYXRpbyIsICJwcmVmZXJyZWRQbGFjZW1lbnQiLCAiaXNCYXNlUGxhY2VtZW50IiwgInJlZmVyZW5jZVJlY3QiLCAiY2hlY2tzTWFwIiwgIk1hcCIsICJtYWtlRmFsbGJhY2tDaGVja3MiLCAiZmlyc3RGaXR0aW5nUGxhY2VtZW50IiwgImkiLCAiX2Jhc2VQbGFjZW1lbnQiLCAiaXNTdGFydFZhcmlhdGlvbiIsICJtYWluVmFyaWF0aW9uU2lkZSIsICJhbHRWYXJpYXRpb25TaWRlIiwgImNoZWNrcyIsICJwdXNoIiwgImV2ZXJ5IiwgImNoZWNrIiwgInNldCIsICJudW1iZXJPZkNoZWNrcyIsICJfbG9vcCIsICJfbG9vcDIiLCAiX2kyIiwgImZpdHRpbmdQbGFjZW1lbnQiLCAiZmluZCIsICJjaGVja3MyIiwgImdldCIsICJzbGljZSIsICJfaSIsICJfcmV0IiwgInJlc2V0IiwgImZsaXBfZGVmYXVsdCIsICJnZXRTaWRlT2Zmc2V0cyIsICJwcmV2ZW50ZWRPZmZzZXRzIiwgImlzQW55U2lkZUZ1bGx5Q2xpcHBlZCIsICJzb21lIiwgInNpZGUiLCAiaGlkZSIsICJwcmV2ZW50T3ZlcmZsb3ciLCAicmVmZXJlbmNlT3ZlcmZsb3ciLCAicG9wcGVyQWx0T3ZlcmZsb3ciLCAicmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzIiwgInBvcHBlckVzY2FwZU9mZnNldHMiLCAiaXNSZWZlcmVuY2VIaWRkZW4iLCAiaGFzUG9wcGVyRXNjYXBlZCIsICJoaWRlX2RlZmF1bHQiLCAiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCAiaW52ZXJ0RGlzdGFuY2UiLCAic2tpZGRpbmciLCAiZGlzdGFuY2UiLCAiX29wdGlvbnMkb2Zmc2V0IiwgIl9kYXRhJHN0YXRlJHBsYWNlbWVudCIsICJvZmZzZXRfZGVmYXVsdCIsICJwb3BwZXJPZmZzZXRzX2RlZmF1bHQiLCAiZ2V0QWx0QXhpcyIsICJfb3B0aW9ucyR0ZXRoZXIiLCAidGV0aGVyIiwgIl9vcHRpb25zJHRldGhlck9mZnNldCIsICJ0ZXRoZXJPZmZzZXQiLCAidGV0aGVyT2Zmc2V0VmFsdWUiLCAibm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlIiwgIm9mZnNldE1vZGlmaWVyU3RhdGUiLCAiX29mZnNldE1vZGlmaWVyU3RhdGUkIiwgIm1haW5TaWRlIiwgImFsdFNpZGUiLCAiYWRkaXRpdmUiLCAibWluTGVuIiwgIm1heExlbiIsICJhcnJvd1BhZGRpbmdPYmplY3QiLCAiYXJyb3dQYWRkaW5nTWluIiwgImFycm93UGFkZGluZ01heCIsICJhcnJvd0xlbiIsICJtaW5PZmZzZXQiLCAibWF4T2Zmc2V0IiwgImNsaWVudE9mZnNldCIsICJvZmZzZXRNb2RpZmllclZhbHVlIiwgInRldGhlck1pbiIsICJ0ZXRoZXJNYXgiLCAicHJldmVudGVkT2Zmc2V0IiwgIl9vZmZzZXRNb2RpZmllclN0YXRlJDIiLCAiX21haW5TaWRlIiwgIl9hbHRTaWRlIiwgIl9vZmZzZXQiLCAiX2xlbiIsICJfbWluIiwgIl9tYXgiLCAiaXNPcmlnaW5TaWRlIiwgIl9vZmZzZXRNb2RpZmllclZhbHVlIiwgIl90ZXRoZXJNaW4iLCAiX3RldGhlck1heCIsICJfcHJldmVudGVkT2Zmc2V0IiwgInByZXZlbnRPdmVyZmxvd19kZWZhdWx0IiwgImdldEhUTUxFbGVtZW50U2Nyb2xsIiwgImdldE5vZGVTY3JvbGwiLCAiaXNFbGVtZW50U2NhbGVkIiwgImdldENvbXBvc2l0ZVJlY3QiLCAiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCAiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCAib2Zmc2V0UGFyZW50SXNTY2FsZWQiLCAib3JkZXIiLCAibW9kaWZpZXJzIiwgInZpc2l0ZWQiLCAiU2V0IiwgInJlc3VsdCIsICJtb2RpZmllciIsICJhZGQiLCAiZGVwIiwgImhhcyIsICJkZXBNb2RpZmllciIsICJvcmRlck1vZGlmaWVycyIsICJvcmRlcmVkTW9kaWZpZXJzIiwgImRlYm91bmNlIiwgImZuMiIsICJwZW5kaW5nIiwgIlByb21pc2UiLCAicmVzb2x2ZSIsICJ0aGVuIiwgIm1lcmdlQnlOYW1lIiwgIm1lcmdlZCIsICJtZXJnZWQyIiwgImN1cnJlbnQiLCAiZXhpc3RpbmciLCAiREVGQVVMVF9PUFRJT05TIiwgImFyZVZhbGlkRWxlbWVudHMiLCAiYXJndW1lbnRzIiwgImFyZ3MiLCAiX2tleSIsICJwb3BwZXJHZW5lcmF0b3IiLCAiZ2VuZXJhdG9yT3B0aW9ucyIsICJfZ2VuZXJhdG9yT3B0aW9ucyIsICJfZ2VuZXJhdG9yT3B0aW9ucyRkZWYiLCAiZGVmYXVsdE1vZGlmaWVycyIsICJkZWZhdWx0TW9kaWZpZXJzMiIsICJfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyIiwgImRlZmF1bHRPcHRpb25zIiwgImNyZWF0ZVBvcHBlcjIiLCAiZWZmZWN0Q2xlYW51cEZucyIsICJpc0Rlc3Ryb3llZCIsICJzZXRPcHRpb25zIiwgInNldE9wdGlvbnNBY3Rpb24iLCAib3B0aW9uczIiLCAiY2xlYW51cE1vZGlmaWVyRWZmZWN0cyIsICJtIiwgInJ1bk1vZGlmaWVyRWZmZWN0cyIsICJmb3JjZVVwZGF0ZSIsICJfc3RhdGUkZWxlbWVudHMiLCAicmVmZXJlbmNlMyIsICJwb3BwZXIzIiwgImluZGV4IiwgIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZSIsICJfc3RhdGUkb3JkZXJlZE1vZGlmaWUyIiwgImRlc3Ryb3kiLCAic3RhdGUyIiwgIm9uRmlyc3RVcGRhdGUiLCAiX3JlZiRvcHRpb25zIiwgImVmZmVjdDUiLCAiY2xlYW51cEZuIiwgIm5vb3BGbiIsICJub29wRm4yIiwgImNyZWF0ZVBvcHBlciIsICJCT1hfQ0xBU1MiLCAiQ09OVEVOVF9DTEFTUyIsICJCQUNLRFJPUF9DTEFTUyIsICJBUlJPV19DTEFTUyIsICJTVkdfQVJST1dfQ0xBU1MiLCAiVE9VQ0hfT1BUSU9OUyIsICJjYXB0dXJlIiwgIlRJUFBZX0RFRkFVTFRfQVBQRU5EX1RPIiwgIlRJUFBZX0RFRkFVTFRfQVBQRU5EX1RPMiIsICJnZXRWYWx1ZUF0SW5kZXhPclJldHVybiIsICJkZWZhdWx0VmFsdWUiLCAiaXNUeXBlIiwgInR5cGUiLCAic3RyIiwgImNhbGwiLCAiaW52b2tlV2l0aEFyZ3NPclJldHVybiIsICJhcHBseSIsICJkZWJvdW5jZTIiLCAibXMiLCAidGltZW91dCIsICJhcmciLCAiY2xlYXJUaW1lb3V0IiwgInNldFRpbWVvdXQiLCAic3BsaXRCeVNwYWNlcyIsICJCb29sZWFuIiwgIm5vcm1hbGl6ZVRvQXJyYXkiLCAicHVzaElmVW5pcXVlIiwgImFyciIsICJ1bmlxdWUiLCAiZ2V0QmFzZVBsYWNlbWVudDIiLCAiYXJyYXlGcm9tIiwgInJlbW92ZVVuZGVmaW5lZFByb3BzIiwgIm9iaiIsICJkaXYiLCAiY3JlYXRlRWxlbWVudCIsICJpc0VsZW1lbnQyIiwgImlzTm9kZUxpc3QiLCAiaXNNb3VzZUV2ZW50IiwgImlzUmVmZXJlbmNlRWxlbWVudCIsICJfdGlwcHkiLCAiZ2V0QXJyYXlPZkVsZW1lbnRzIiwgInF1ZXJ5U2VsZWN0b3JBbGwiLCAic2V0VHJhbnNpdGlvbkR1cmF0aW9uIiwgImVscyIsICJlbCIsICJ0cmFuc2l0aW9uRHVyYXRpb24iLCAic2V0VmlzaWJpbGl0eVN0YXRlIiwgImdldE93bmVyRG9jdW1lbnQiLCAiZWxlbWVudE9yRWxlbWVudHMiLCAiX25vcm1hbGl6ZVRvQXJyYXkiLCAiaXNDdXJzb3JPdXRzaWRlSW50ZXJhY3RpdmVCb3JkZXIiLCAicG9wcGVyVHJlZURhdGEiLCAiZXZlbnQiLCAiY2xpZW50WCIsICJjbGllbnRZIiwgInBvcHBlclN0YXRlIiwgInByb3BzIiwgImludGVyYWN0aXZlQm9yZGVyIiwgInRvcERpc3RhbmNlIiwgImJvdHRvbURpc3RhbmNlIiwgImxlZnREaXN0YW5jZSIsICJyaWdodERpc3RhbmNlIiwgImV4Y2VlZHNUb3AiLCAiZXhjZWVkc0JvdHRvbSIsICJleGNlZWRzTGVmdCIsICJleGNlZWRzUmlnaHQiLCAidXBkYXRlVHJhbnNpdGlvbkVuZExpc3RlbmVyIiwgImJveCIsICJhY3Rpb24iLCAibGlzdGVuZXIiLCAibWV0aG9kIiwgImFjdHVhbENvbnRhaW5zIiwgIl90YXJnZXQkZ2V0Um9vdE5vZGUiLCAiY3VycmVudElucHV0IiwgImlzVG91Y2giLCAibGFzdE1vdXNlTW92ZVRpbWUiLCAib25Eb2N1bWVudFRvdWNoU3RhcnQiLCAicGVyZm9ybWFuY2UiLCAib25Eb2N1bWVudE1vdXNlTW92ZSIsICJub3ciLCAib25XaW5kb3dCbHVyIiwgImFjdGl2ZUVsZW1lbnQiLCAiYmx1ciIsICJpc1Zpc2libGUiLCAiYmluZEdsb2JhbEV2ZW50TGlzdGVuZXJzIiwgImlzQnJvd3NlciIsICJpc0lFMTEiLCAibXNDcnlwdG8iLCAicmVzZXRWaXNpdGVkTWVzc2FnZXMiLCAicGx1Z2luUHJvcHMiLCAiYW5pbWF0ZUZpbGwiLCAiZm9sbG93Q3Vyc29yIiwgImlubGluZVBvc2l0aW9uaW5nIiwgInN0aWNreSIsICJyZW5kZXJQcm9wcyIsICJhbGxvd0hUTUwiLCAiYW5pbWF0aW9uIiwgImNvbnRlbnQiLCAiaW5lcnRpYSIsICJtYXhXaWR0aCIsICJyb2xlIiwgInRoZW1lIiwgInpJbmRleCIsICJkZWZhdWx0UHJvcHMiLCAiYXBwZW5kVG8iLCAiYXJpYSIsICJleHBhbmRlZCIsICJkZWxheSIsICJkdXJhdGlvbiIsICJnZXRSZWZlcmVuY2VDbGllbnRSZWN0IiwgImhpZGVPbkNsaWNrIiwgImlnbm9yZUF0dHJpYnV0ZXMiLCAiaW50ZXJhY3RpdmUiLCAiaW50ZXJhY3RpdmVEZWJvdW5jZSIsICJtb3ZlVHJhbnNpdGlvbiIsICJvbkFmdGVyVXBkYXRlIiwgIm9uQmVmb3JlVXBkYXRlIiwgIm9uQ3JlYXRlIiwgIm9uRGVzdHJveSIsICJvbkhpZGRlbiIsICJvbkhpZGUiLCAib25Nb3VudCIsICJvblNob3ciLCAib25TaG93biIsICJvblRyaWdnZXIiLCAib25VbnRyaWdnZXIiLCAib25DbGlja091dHNpZGUiLCAicGx1Z2lucyIsICJwb3BwZXJPcHRpb25zIiwgInJlbmRlciIsICJzaG93T25DcmVhdGUiLCAidG91Y2giLCAidHJpZ2dlciIsICJ0cmlnZ2VyVGFyZ2V0IiwgImRlZmF1bHRLZXlzIiwgInNldERlZmF1bHRQcm9wcyIsICJzZXREZWZhdWx0UHJvcHMyIiwgInBhcnRpYWxQcm9wcyIsICJ2YWxpZGF0ZVByb3BzIiwgImdldEV4dGVuZGVkUGFzc2VkUHJvcHMiLCAicGFzc2VkUHJvcHMiLCAicGx1Z2luUHJvcHMyIiwgInBsdWdpbiIsICJfbmFtZSIsICJnZXREYXRhQXR0cmlidXRlUHJvcHMiLCAicHJvcEtleXMiLCAidmFsdWVBc1N0cmluZyIsICJnZXRBdHRyaWJ1dGUiLCAidHJpbSIsICJKU09OIiwgInBhcnNlIiwgImUiLCAiZXZhbHVhdGVQcm9wcyIsICJvdXQiLCAiaW5uZXJIVE1MIiwgImlubmVySFRNTDIiLCAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCAiY3JlYXRlQXJyb3dFbGVtZW50IiwgImFycm93MiIsICJjbGFzc05hbWUiLCAiYXBwZW5kQ2hpbGQiLCAic2V0Q29udGVudCIsICJ0ZXh0Q29udGVudCIsICJnZXRDaGlsZHJlbiIsICJmaXJzdEVsZW1lbnRDaGlsZCIsICJib3hDaGlsZHJlbiIsICJjaGlsZHJlbiIsICJjbGFzc0xpc3QiLCAiYmFja2Ryb3AiLCAib25VcGRhdGUiLCAicHJldlByb3BzIiwgIm5leHRQcm9wcyIsICJfZ2V0Q2hpbGRyZW4iLCAiYm94MiIsICJjb250ZW50MiIsICJyZW1vdmVDaGlsZCIsICIkJHRpcHB5IiwgImlkQ291bnRlciIsICJtb3VzZU1vdmVMaXN0ZW5lcnMiLCAibW91bnRlZEluc3RhbmNlcyIsICJjcmVhdGVUaXBweSIsICJzaG93VGltZW91dCIsICJoaWRlVGltZW91dCIsICJzY2hlZHVsZUhpZGVBbmltYXRpb25GcmFtZSIsICJpc1Zpc2libGVGcm9tQ2xpY2siLCAiZGlkSGlkZUR1ZVRvRG9jdW1lbnRNb3VzZURvd24iLCAiZGlkVG91Y2hNb3ZlIiwgImlnbm9yZU9uRmlyc3RVcGRhdGUiLCAibGFzdFRyaWdnZXJFdmVudCIsICJjdXJyZW50VHJhbnNpdGlvbkVuZExpc3RlbmVyIiwgImxpc3RlbmVycyIsICJkZWJvdW5jZWRPbk1vdXNlTW92ZSIsICJvbk1vdXNlTW92ZSIsICJjdXJyZW50VGFyZ2V0IiwgImlkIiwgInBvcHBlckluc3RhbmNlIiwgImlzRW5hYmxlZCIsICJpc01vdW50ZWQiLCAiaXNTaG93biIsICJjbGVhckRlbGF5VGltZW91dHMiLCAic2V0UHJvcHMiLCAic2V0Q29udGVudDIiLCAic2hvdyIsICJoaWRlMiIsICJoaWRlV2l0aEludGVyYWN0aXZpdHkiLCAiZW5hYmxlIiwgImRpc2FibGUiLCAidW5tb3VudCIsICJlcnJvcldoZW4iLCAiX3Byb3BzJHJlbmRlciIsICJwbHVnaW5zSG9va3MiLCAiaGFzQXJpYUV4cGFuZGVkIiwgImhhc0F0dHJpYnV0ZSIsICJhZGRMaXN0ZW5lcnMiLCAiaGFuZGxlQXJpYUV4cGFuZGVkQXR0cmlidXRlIiwgImhhbmRsZVN0eWxlcyIsICJpbnZva2VIb29rIiwgInNjaGVkdWxlU2hvdyIsICJnZXREb2N1bWVudCIsICJnZXROb3JtYWxpemVkVG91Y2hTZXR0aW5ncyIsICJnZXRJc0N1c3RvbVRvdWNoQmVoYXZpb3IiLCAiZ2V0SXNEZWZhdWx0UmVuZGVyRm4iLCAiX2luc3RhbmNlJHByb3BzJHJlbmRlIiwgImdldEN1cnJlbnRUYXJnZXQiLCAiZ2V0RGVmYXVsdFRlbXBsYXRlQ2hpbGRyZW4iLCAiZ2V0RGVsYXkiLCAiaXNTaG93IiwgImZyb21IaWRlIiwgInBvaW50ZXJFdmVudHMiLCAiaG9vayIsICJzaG91bGRJbnZva2VQcm9wc0hvb2siLCAicGx1Z2luSG9va3MiLCAiX2luc3RhbmNlJHByb3BzIiwgImhhbmRsZUFyaWFDb250ZW50QXR0cmlidXRlIiwgImF0dHIiLCAiaWQyIiwgIm5vZGVzIiwgImN1cnJlbnRWYWx1ZSIsICJuZXh0VmFsdWUiLCAiY2xlYW51cEludGVyYWN0aXZlTW91c2VMaXN0ZW5lcnMiLCAib25Eb2N1bWVudFByZXNzIiwgImFjdHVhbFRhcmdldCIsICJjb21wb3NlZFBhdGgiLCAicmVtb3ZlRG9jdW1lbnRQcmVzcyIsICJvblRvdWNoTW92ZSIsICJvblRvdWNoU3RhcnQiLCAiYWRkRG9jdW1lbnRQcmVzcyIsICJkb2MiLCAib25UcmFuc2l0aW9uZWRPdXQiLCAiY2FsbGJhY2siLCAib25UcmFuc2l0aW9uRW5kIiwgIm9uVHJhbnNpdGlvbmVkSW4iLCAib24iLCAiZXZlbnRUeXBlIiwgImhhbmRsZXIiLCAib25UcmlnZ2VyMiIsICJvbk1vdXNlTGVhdmUiLCAib25CbHVyT3JGb2N1c091dCIsICJyZW1vdmVMaXN0ZW5lcnMiLCAiX2xhc3RUcmlnZ2VyRXZlbnQiLCAic2hvdWxkU2NoZWR1bGVDbGlja0hpZGUiLCAiaXNFdmVudExpc3RlbmVyU3RvcHBlZCIsICJ3YXNGb2N1c2VkIiwgInNjaGVkdWxlSGlkZSIsICJpc0N1cnNvck92ZXJSZWZlcmVuY2VPclBvcHBlciIsICJnZXROZXN0ZWRQb3BwZXJUcmVlIiwgIl9pbnN0YW5jZSRwb3BwZXJJbnN0YSIsICJpbnN0YW5jZTIiLCAic2hvdWxkQmFpbCIsICJyZWxhdGVkVGFyZ2V0IiwgImNyZWF0ZVBvcHBlckluc3RhbmNlIiwgImRlc3Ryb3lQb3BwZXJJbnN0YW5jZSIsICJfaW5zdGFuY2UkcHJvcHMyIiwgImNvbXB1dGVkUmVmZXJlbmNlIiwgInRpcHB5TW9kaWZpZXIiLCAiX2dldERlZmF1bHRUZW1wbGF0ZUNoIiwgIm1vdW50IiwgIndhcm5XaGVuIiwgIm5leHRFbGVtZW50U2libGluZyIsICJfZ2V0Tm9ybWFsaXplZFRvdWNoU2UiLCAidG91Y2hWYWx1ZSIsICJ0b3VjaERlbGF5IiwgInJlcXVlc3RBbmltYXRpb25GcmFtZSIsICJjYW5jZWxBbmltYXRpb25GcmFtZSIsICJjcmVhdGVNZW1vcnlMZWFrV2FybmluZyIsICJuZXN0ZWRQb3BwZXIiLCAiaXNBbHJlYWR5VmlzaWJsZSIsICJpc0Rpc2FibGVkIiwgImlzVG91Y2hBbmRUb3VjaERpc2FibGVkIiwgInZpc2liaWxpdHkiLCAidHJhbnNpdGlvbiIsICJfZ2V0RGVmYXVsdFRlbXBsYXRlQ2gyIiwgIm9uRmlyc3RVcGRhdGUyIiwgIl9pbnN0YW5jZSRwb3BwZXJJbnN0YTIiLCAiX2dldERlZmF1bHRUZW1wbGF0ZUNoMyIsICJfYm94IiwgIl9jb250ZW50IiwgImlzQWxyZWFkeUhpZGRlbiIsICJfZ2V0RGVmYXVsdFRlbXBsYXRlQ2g0IiwgInRhcmdldHMiLCAib3B0aW9uYWxQcm9wcyIsICJ2YWxpZGF0ZVRhcmdldHMiLCAiaXNTaW5nbGVDb250ZW50RWxlbWVudCIsICJpc01vcmVUaGFuT25lUmVmZXJlbmNlRWxlbWVudCIsICJpbnN0YW5jZXMiLCAiYXBwbHlTdHlsZXNNb2RpZmllciIsICJlZmZlY3Q0Il0KfQo= +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwtdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWhlbHBlcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXNldC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtY2xvbmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc2l6ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1kaXJlY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc2V0LXJlY29yZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1kaWZmZXJlbmNlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LmRpZmZlcmVuY2UudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaW50ZXJzZWN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pbnRlcnNlY3Rpb24udjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1pcy1kaXNqb2ludC1mcm9tLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pcy1kaXNqb2ludC1mcm9tLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWlzLXN1YnNldC1vZi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtc3Vic2V0LW9mLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWlzLXN1cGVyc2V0LW9mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pcy1zdXBlcnNldC1vZi52Mi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1zeW1tZXRyaWMtZGlmZmVyZW5jZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdW5pb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LnVuaW9uLnYyLmpzIiwgInNyYy9UaXBweS9UaXBweS50cyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdXNlckFnZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNMYXlvdXRWaWV3cG9ydC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFZpZXdwb3J0UmVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50UmVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzU2Nyb2xsUGFyZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0U2Nyb2xsUGFyZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZXRlY3RPdmVyZmxvdy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vQHBvcHBlcmpzK2NvcmVAMi4xMS44L25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9AcG9wcGVyanMrY29yZUAyLjExLjgvbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9jcmVhdGVQb3BwZXIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL0Bwb3BwZXJqcytjb3JlQDIuMTEuOC9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9jb25zdGFudHMudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvdXRpbHMudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvZG9tLXV0aWxzLnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvc3JjL2JpbmRHbG9iYWxFdmVudExpc3RlbmVycy50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9icm93c2VyLnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvc3JjL3ZhbGlkYXRpb24udHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvcHJvcHMudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvdGVtcGxhdGUudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvY3JlYXRlVGlwcHkudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvaW5kZXgudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvYWRkb25zL2NyZWF0ZVNpbmdsZXRvbi50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9hZGRvbnMvZGVsZWdhdGUudHMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL3RpcHB5LmpzQDYuMy43L25vZGVfbW9kdWxlcy90aXBweS5qcy9zcmMvcGx1Z2lucy9hbmltYXRlRmlsbC50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9wbHVnaW5zL2ZvbGxvd0N1cnNvci50cyIsICJub2RlX21vZHVsZXMvLnBucG0vdGlwcHkuanNANi4zLjcvbm9kZV9tb2R1bGVzL3RpcHB5LmpzL3NyYy9wbHVnaW5zL2lubGluZVBvc2l0aW9uaW5nLnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvc3JjL3BsdWdpbnMvc3RpY2t5LnRzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS90aXBweS5qc0A2LjMuNy9ub2RlX21vZHVsZXMvdGlwcHkuanMvYnVpbGQvYmFzZS5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgY2hlY2sodHlwZW9mIHRoaXMgPT0gJ29iamVjdCcgJiYgdGhpcykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIGNhbGwgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IGNhbGwuYmluZChjYWxsKSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbGwuYXBwbHkoY2FsbCwgYXJndW1lbnRzKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGNhbGwgPSBGdW5jdGlvblByb3RvdHlwZS5jYWxsO1xudmFyIHVuY3VycnlUaGlzV2l0aEJpbmQgPSBOQVRJVkVfQklORCAmJiBGdW5jdGlvblByb3RvdHlwZS5iaW5kLmJpbmQoY2FsbCwgY2FsbCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyB1bmN1cnJ5VGhpc1dpdGhCaW5kIDogZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGwuYXBwbHkoZm4sIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoe30udG9TdHJpbmcpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gc3RyaW5nU2xpY2UodG9TdHJpbmcoaXQpLCA4LCAtMSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICEkT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6ICRPYmplY3QoaXQpO1xufSA6ICRPYmplY3Q7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gd2UgY2FuJ3QgdXNlIGp1c3QgYGl0ID09IG51bGxgIHNpbmNlIG9mIGBkb2N1bWVudC5hbGxgIHNwZWNpYWwgY2FzZVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdC1hZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gbnVsbCB8fCBpdCA9PT0gdW5kZWZpbmVkO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3RcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgZG9jdW1lbnRBbGwgPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRBbGwgIT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxUaGlzW25hbWVzcGFjZV0pIDogZ2xvYmFsVGhpc1tuYW1lc3BhY2VdICYmIGdsb2JhbFRoaXNbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxudmFyIG5hdmlnYXRvciA9IGdsb2JhbFRoaXMubmF2aWdhdG9yO1xudmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVzZXJBZ2VudCA/IFN0cmluZyh1c2VyQWdlbnQpIDogJyc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsVGhpcy5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG52YXIgJFN0cmluZyA9IGdsb2JhbFRoaXMuU3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnc3ltYm9sIGRldGVjdGlvbicpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIC8vIG5iOiBEbyBub3QgY2FsbCBgU3RyaW5nYCBkaXJlY3RseSB0byBhdm9pZCB0aGlzIGJlaW5nIG9wdGltaXplZCBvdXQgdG8gYHN5bWJvbCsnJ2Agd2hpY2ggd2lsbCxcbiAgLy8gb2YgY291cnNlLCBmYWlsLlxuICByZXR1cm4gISRTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdPYmplY3QnO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQoZnVuYykgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgT3JkaW5hcnlUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAocHJlZiA9PT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhpcywga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxUaGlzW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXNbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxuKHN0b3JlLnZlcnNpb25zIHx8IChzdG9yZS52ZXJzaW9ucyA9IFtdKSkucHVzaCh7XG4gIHZlcnNpb246ICczLjM4LjAnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTQtMjAyNCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KScsXG4gIGxpY2Vuc2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM4LjAvTElDRU5TRScsXG4gIHNvdXJjZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzJ1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgfHwge30pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoe30uaGFzT3duUHJvcGVydHkpO1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1oYXNvd24gLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eSh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBTeW1ib2wgPSBnbG9iYWxUaGlzLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcblxuLy8gYFRvUHJvcGVydHlLZXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIga2V5ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdzdHJpbmcnKTtcbiAgcmV0dXJuIGlzU3ltYm9sKGtleSkgPyBrZXkgOiBrZXkgKyAnJztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsVGhpcy5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFua3MgdG8gSUU4IGZvciBpdHMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT09IDc7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzT3duKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYsIE8sIFApLCBPW1BdKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVjggfiBDaHJvbWUgMzYtXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMzM0XG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ3Byb3RvdHlwZScsIHtcbiAgICB2YWx1ZTogNDIsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pLnByb3RvdHlwZSAhPT0gNDI7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IFR5cGUoYXJndW1lbnQpIGlzIE9iamVjdGBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc09iamVjdChhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJFN0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXREZXNjcmlwdG9yID0gREVTQ1JJUFRPUlMgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxudmFyIEVYSVNUUyA9IGhhc093bihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKTtcbi8vIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBmcm9tIG1pbmlmaWVkIC8gbWFuZ2xlZCAvIGRyb3BwZWQgZnVuY3Rpb24gbmFtZXNcbnZhciBQUk9QRVIgPSBFWElTVFMgJiYgKGZ1bmN0aW9uIHNvbWV0aGluZygpIHsgLyogZW1wdHkgKi8gfSkubmFtZSA9PT0gJ3NvbWV0aGluZyc7XG52YXIgQ09ORklHVVJBQkxFID0gRVhJU1RTICYmICghREVTQ1JJUFRPUlMgfHwgKERFU0NSSVBUT1JTICYmIGdldERlc2NyaXB0b3IoRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJykuY29uZmlndXJhYmxlKSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBFWElTVFM6IEVYSVNUUyxcbiAgUFJPUEVSOiBQUk9QRVIsXG4gIENPTkZJR1VSQUJMRTogQ09ORklHVVJBQkxFXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbFRoaXMuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEID0gJ09iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWxUaGlzLlR5cGVFcnJvcjtcbnZhciBXZWFrTWFwID0gZ2xvYmFsVGhpcy5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc3RvcmUuZ2V0ID0gc3RvcmUuZ2V0O1xuICBzdG9yZS5oYXMgPSBzdG9yZS5oYXM7XG4gIHN0b3JlLnNldCA9IHN0b3JlLnNldDtcbiAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoc3RvcmUuaGFzKGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgc3RvcmUuc2V0KGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuZ2V0KGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmhhcyhpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXNPd24oaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkNPTkZJR1VSQUJMRTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG52YXIgQ09ORklHVVJBQkxFX0xFTkdUSCA9IERFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdsZW5ndGgnLCB7IHZhbHVlOiA4IH0pLmxlbmd0aCAhPT0gODtcbn0pO1xuXG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbnZhciBtYWtlQnVpbHRJbiA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBuYW1lLCBvcHRpb25zKSB7XG4gIGlmIChzdHJpbmdTbGljZSgkU3RyaW5nKG5hbWUpLCAwLCA3KSA9PT0gJ1N5bWJvbCgnKSB7XG4gICAgbmFtZSA9ICdbJyArIHJlcGxhY2UoJFN0cmluZyhuYW1lKSwgL15TeW1ib2xcXCgoW14pXSopXFwpLiokLywgJyQxJykgKyAnXSc7XG4gIH1cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5nZXR0ZXIpIG5hbWUgPSAnZ2V0ICcgKyBuYW1lO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNldHRlcikgbmFtZSA9ICdzZXQgJyArIG5hbWU7XG4gIGlmICghaGFzT3duKHZhbHVlLCAnbmFtZScpIHx8IChDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSAmJiB2YWx1ZS5uYW1lICE9PSBuYW1lKSkge1xuICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIGVsc2UgdmFsdWUubmFtZSA9IG5hbWU7XG4gIH1cbiAgaWYgKENPTkZJR1VSQUJMRV9MRU5HVEggJiYgb3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2FyaXR5JykgJiYgdmFsdWUubGVuZ3RoICE9PSBvcHRpb25zLmFyaXR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkodmFsdWUsICdsZW5ndGgnLCB7IHZhbHVlOiBvcHRpb25zLmFyaXR5IH0pO1xuICB9XG4gIHRyeSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdjb25zdHJ1Y3RvcicpICYmIG9wdGlvbnMuY29uc3RydWN0b3IpIHtcbiAgICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICdwcm90b3R5cGUnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTtcbiAgICAvLyBpbiBWOCB+IENocm9tZSA1MywgcHJvdG90eXBlcyBvZiBzb21lIG1ldGhvZHMsIGxpa2UgYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgLCBhcmUgbm9uLXdyaXRhYmxlXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5wcm90b3R5cGUpIHZhbHVlLnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICB2YXIgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gIGlmICghaGFzT3duKHN0YXRlLCAnc291cmNlJykpIHtcbiAgICBzdGF0ZS5zb3VyY2UgPSBqb2luKFRFTVBMQVRFLCB0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyA/IG5hbWUgOiAnJyk7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5kLW5hdGl2ZSAtLSByZXF1aXJlZFxuRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gbWFrZUJ1aWx0SW4oZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG59LCAndG9TdHJpbmcnKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucy5lbnVtZXJhYmxlO1xuICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uYW1lIDoga2V5O1xuICBpZiAoaXNDYWxsYWJsZSh2YWx1ZSkpIG1ha2VCdWlsdEluKHZhbHVlLCBuYW1lLCBvcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMuZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBkZWZpbmVHbG9iYWxQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFvcHRpb25zLnVuc2FmZSkgZGVsZXRlIE9ba2V5XTtcbiAgICAgIGVsc2UgaWYgKE9ba2V5XSkgc2ltcGxlID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6ICFvcHRpb25zLm5vbkNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiAhb3B0aW9ucy5ub25Xcml0YWJsZVxuICAgIH0pO1xuICB9IHJldHVybiBPO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBNYXRoLnRydW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50cnVuY1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtdHJ1bmMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnRydW5jIHx8IGZ1bmN0aW9uIHRydW5jKHgpIHtcbiAgdmFyIG4gPSAreDtcbiAgcmV0dXJuIChuID4gMCA/IGZsb29yIDogY2VpbCkobik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0cnVuYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXRydW5jJyk7XG5cbi8vIGBUb0ludGVnZXJPckluZmluaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIG51bWJlciA9ICthcmd1bWVudDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiB0cnVuYyhudW1iZXIpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbGVuZ3RoXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbGVuID0gdG9JbnRlZ2VyT3JJbmZpbml0eShhcmd1bWVudCk7XG4gIHJldHVybiBsZW4gPiAwID8gbWluKGxlbiwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcblxuLy8gYExlbmd0aE9mQXJyYXlMaWtlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbGVuZ3Rob2ZhcnJheWxpa2Vcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdG9MZW5ndGgob2JqLmxlbmd0aCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXNPd24oaGlkZGVuS2V5cywga2V5KSAmJiBoYXNPd24oTywga2V5KSAmJiBwdXNoKHJlc3VsdCwga2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhc093bihPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCBwdXNoKHJlc3VsdCwga2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG52YXIgaGlkZGVuS2V5cyA9IGVudW1CdWdLZXlzLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ293bktleXMnKSB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChrZXlzLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIG93bktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3duLWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UsIGV4Y2VwdGlvbnMpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpICYmICEoZXhjZXB0aW9ucyAmJiBoYXNPd24oZXhjZXB0aW9ucywga2V5KSkpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICB9XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuXG52YXIgaXNGb3JjZWQgPSBmdW5jdGlvbiAoZmVhdHVyZSwgZGV0ZWN0aW9uKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGFbbm9ybWFsaXplKGZlYXR1cmUpXTtcbiAgcmV0dXJuIHZhbHVlID09PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogaXNDYWxsYWJsZShkZXRlY3Rpb24pID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAgICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMuZG9udENhbGxHZXRTZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4gIG9wdGlvbnMubmFtZSAgICAgICAgICAgLSB0aGUgLm5hbWUgb2YgdGhlIGZ1bmN0aW9uIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBrZXlcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXNbVEFSR0VUXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzW1RBUkdFVF0gJiYgZ2xvYmFsVGhpc1tUQVJHRVRdLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLmRvbnRDYWxsR2V0U2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zZXQgLS0gc2FmZVxudmFyIFNldFByb3RvdHlwZSA9IFNldC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc2V0IC0tIHNhZmVcbiAgU2V0OiBTZXQsXG4gIGFkZDogdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlLmFkZCksXG4gIGhhczogdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlLmhhcyksXG4gIHJlbW92ZTogdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlWydkZWxldGUnXSksXG4gIHByb3RvOiBTZXRQcm90b3R5cGVcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpLmhhcztcblxuLy8gUGVyZm9ybSA/IFJlcXVpcmVJbnRlcm5hbFNsb3QoTSwgW1tTZXREYXRhXV0pXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBoYXMoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocmVjb3JkLCBmbiwgSVRFUkFUT1JfSU5TVEVBRF9PRl9SRUNPUkQpIHtcbiAgdmFyIGl0ZXJhdG9yID0gSVRFUkFUT1JfSU5TVEVBRF9PRl9SRUNPUkQgPyByZWNvcmQgOiByZWNvcmQuaXRlcmF0b3I7XG4gIHZhciBuZXh0ID0gcmVjb3JkLm5leHQ7XG4gIHZhciBzdGVwLCByZXN1bHQ7XG4gIHdoaWxlICghKHN0ZXAgPSBjYWxsKG5leHQsIGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgIHJlc3VsdCA9IGZuKHN0ZXAudmFsdWUpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xudmFyIFNldEhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKTtcblxudmFyIFNldCA9IFNldEhlbHBlcnMuU2V0O1xudmFyIFNldFByb3RvdHlwZSA9IFNldEhlbHBlcnMucHJvdG87XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZS5mb3JFYWNoKTtcbnZhciBrZXlzID0gdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlLmtleXMpO1xudmFyIG5leHQgPSBrZXlzKG5ldyBTZXQoKSkubmV4dDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2V0LCBmbiwgaW50ZXJydXB0aWJsZSkge1xuICByZXR1cm4gaW50ZXJydXB0aWJsZSA/IGl0ZXJhdGVTaW1wbGUoeyBpdGVyYXRvcjoga2V5cyhzZXQpLCBuZXh0OiBuZXh0IH0sIGZuKSA6IGZvckVhY2goc2V0LCBmbik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXRlcmF0ZScpO1xuXG52YXIgU2V0ID0gU2V0SGVscGVycy5TZXQ7XG52YXIgYWRkID0gU2V0SGVscGVycy5hZGQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNldCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IFNldCgpO1xuICBpdGVyYXRlKHNldCwgZnVuY3Rpb24gKGl0KSB7XG4gICAgYWRkKHJlc3VsdCwgaXQpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCBtZXRob2QpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG4gICAgcmV0dXJuIHVuY3VycnlUaGlzKGFDYWxsYWJsZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwga2V5KVttZXRob2RdKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWFjY2Vzc29yJyk7XG52YXIgU2V0SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzQWNjZXNzb3IoU2V0SGVscGVycy5wcm90bywgJ3NpemUnLCAnZ2V0JykgfHwgZnVuY3Rpb24gKHNldCkge1xuICByZXR1cm4gc2V0LnNpemU7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIGBHZXRJdGVyYXRvckRpcmVjdChvYmopYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzLyNzZWMtZ2V0aXRlcmF0b3JkaXJlY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4ge1xuICAgIGl0ZXJhdG9yOiBvYmosXG4gICAgbmV4dDogb2JqLm5leHQsXG4gICAgZG9uZTogZmFsc2VcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgZ2V0SXRlcmF0b3JEaXJlY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLWRpcmVjdCcpO1xuXG52YXIgSU5WQUxJRF9TSVpFID0gJ0ludmFsaWQgc2l6ZSc7XG52YXIgJFJhbmdlRXJyb3IgPSBSYW5nZUVycm9yO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG5cbnZhciBTZXRSZWNvcmQgPSBmdW5jdGlvbiAoc2V0LCBpbnRTaXplKSB7XG4gIHRoaXMuc2V0ID0gc2V0O1xuICB0aGlzLnNpemUgPSBtYXgoaW50U2l6ZSwgMCk7XG4gIHRoaXMuaGFzID0gYUNhbGxhYmxlKHNldC5oYXMpO1xuICB0aGlzLmtleXMgPSBhQ2FsbGFibGUoc2V0LmtleXMpO1xufTtcblxuU2V0UmVjb3JkLnByb3RvdHlwZSA9IHtcbiAgZ2V0SXRlcmF0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0SXRlcmF0b3JEaXJlY3QoYW5PYmplY3QoY2FsbCh0aGlzLmtleXMsIHRoaXMuc2V0KSkpO1xuICB9LFxuICBpbmNsdWRlczogZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGNhbGwodGhpcy5oYXMsIHRoaXMuc2V0LCBpdCk7XG4gIH1cbn07XG5cbi8vIGBHZXRTZXRSZWNvcmRgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNzZWMtZ2V0c2V0cmVjb3JkXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgYW5PYmplY3Qob2JqKTtcbiAgdmFyIG51bVNpemUgPSArb2JqLnNpemU7XG4gIC8vIE5PVEU6IElmIHNpemUgaXMgdW5kZWZpbmVkLCB0aGVuIG51bVNpemUgd2lsbCBiZSBOYU5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgaWYgKG51bVNpemUgIT09IG51bVNpemUpIHRocm93IG5ldyAkVHlwZUVycm9yKElOVkFMSURfU0laRSk7XG4gIHZhciBpbnRTaXplID0gdG9JbnRlZ2VyT3JJbmZpbml0eShudW1TaXplKTtcbiAgaWYgKGludFNpemUgPCAwKSB0aHJvdyBuZXcgJFJhbmdlRXJyb3IoSU5WQUxJRF9TSVpFKTtcbiAgcmV0dXJuIG5ldyBTZXRSZWNvcmQob2JqLCBpbnRTaXplKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG52YXIgY2xvbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWNsb25lJyk7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG5cbnZhciBoYXMgPSBTZXRIZWxwZXJzLmhhcztcbnZhciByZW1vdmUgPSBTZXRIZWxwZXJzLnJlbW92ZTtcblxuLy8gYFNldC5wcm90b3R5cGUuZGlmZmVyZW5jZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkaWZmZXJlbmNlKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIG90aGVyUmVjID0gZ2V0U2V0UmVjb3JkKG90aGVyKTtcbiAgdmFyIHJlc3VsdCA9IGNsb25lKE8pO1xuICBpZiAoc2l6ZShPKSA8PSBvdGhlclJlYy5zaXplKSBpdGVyYXRlU2V0KE8sIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKG90aGVyUmVjLmluY2x1ZGVzKGUpKSByZW1vdmUocmVzdWx0LCBlKTtcbiAgfSk7XG4gIGVsc2UgaXRlcmF0ZVNpbXBsZShvdGhlclJlYy5nZXRJdGVyYXRvcigpLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChoYXMoTywgZSkpIHJlbW92ZShyZXN1bHQsIGUpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbnZhciBjcmVhdGVTZXRMaWtlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIHtcbiAgICBzaXplOiBzaXplLFxuICAgIGhhczogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAga2V5czogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciBTZXQgPSBnZXRCdWlsdEluKCdTZXQnKTtcbiAgdHJ5IHtcbiAgICBuZXcgU2V0KClbbmFtZV0oY3JlYXRlU2V0TGlrZSgwKSk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGxhdGUgc3BlYyBjaGFuZ2UsIGVhcmx5IFdlYktpdCB+IFNhZmFyaSAxNy4wIGJldGEgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgcGFzcyBpdFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHMvcHVsbC84OFxuICAgICAgbmV3IFNldCgpW25hbWVdKGNyZWF0ZVNldExpa2UoLTEpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcjIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZGlmZmVyZW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZGlmZmVyZW5jZScpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuZGlmZmVyZW5jZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6ICFzZXRNZXRob2RBY2NlcHRTZXRMaWtlKCdkaWZmZXJlbmNlJykgfSwge1xuICBkaWZmZXJlbmNlOiBkaWZmZXJlbmNlXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXNldCcpO1xudmFyIFNldEhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKTtcbnZhciBzaXplID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zaXplJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG52YXIgaXRlcmF0ZVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXRlcmF0ZScpO1xudmFyIGl0ZXJhdGVTaW1wbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZS1zaW1wbGUnKTtcblxudmFyIFNldCA9IFNldEhlbHBlcnMuU2V0O1xudmFyIGFkZCA9IFNldEhlbHBlcnMuYWRkO1xudmFyIGhhcyA9IFNldEhlbHBlcnMuaGFzO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pbnRlcnNlY3Rpb25gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW50ZXJzZWN0aW9uKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIG90aGVyUmVjID0gZ2V0U2V0UmVjb3JkKG90aGVyKTtcbiAgdmFyIHJlc3VsdCA9IG5ldyBTZXQoKTtcblxuICBpZiAoc2l6ZShPKSA+IG90aGVyUmVjLnNpemUpIHtcbiAgICBpdGVyYXRlU2ltcGxlKG90aGVyUmVjLmdldEl0ZXJhdG9yKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoaGFzKE8sIGUpKSBhZGQocmVzdWx0LCBlKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyYXRlU2V0KE8sIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAob3RoZXJSZWMuaW5jbHVkZXMoZSkpIGFkZChyZXN1bHQsIGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpbnRlcnNlY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWludGVyc2VjdGlvbicpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxudmFyIElOQ09SUkVDVCA9ICFzZXRNZXRob2RBY2NlcHRTZXRMaWtlKCdpbnRlcnNlY3Rpb24nKSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1mcm9tLCBlcy9uby1zZXQgLS0gdGVzdGluZ1xuICByZXR1cm4gU3RyaW5nKEFycmF5LmZyb20obmV3IFNldChbMSwgMiwgM10pLmludGVyc2VjdGlvbihuZXcgU2V0KFszLCAyXSkpKSkgIT09ICczLDInO1xufSk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmludGVyc2VjdGlvbmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IElOQ09SUkVDVCB9LCB7XG4gIGludGVyc2VjdGlvbjogaW50ZXJzZWN0aW9uXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGtpbmQsIHZhbHVlKSB7XG4gIHZhciBpbm5lclJlc3VsdCwgaW5uZXJFcnJvcjtcbiAgYW5PYmplY3QoaXRlcmF0b3IpO1xuICB0cnkge1xuICAgIGlubmVyUmVzdWx0ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAncmV0dXJuJyk7XG4gICAgaWYgKCFpbm5lclJlc3VsdCkge1xuICAgICAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpbm5lclJlc3VsdCA9IGNhbGwoaW5uZXJSZXN1bHQsIGl0ZXJhdG9yKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbm5lckVycm9yID0gdHJ1ZTtcbiAgICBpbm5lclJlc3VsdCA9IGVycm9yO1xuICB9XG4gIGlmIChraW5kID09PSAndGhyb3cnKSB0aHJvdyB2YWx1ZTtcbiAgaWYgKGlubmVyRXJyb3IpIHRocm93IGlubmVyUmVzdWx0O1xuICBhbk9iamVjdChpbm5lclJlc3VsdCk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKS5oYXM7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc0Rpc2pvaW50RnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNTZXQucHJvdG90eXBlLmlzRGlzam9pbnRGcm9tXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIG90aGVyUmVjID0gZ2V0U2V0UmVjb3JkKG90aGVyKTtcbiAgaWYgKHNpemUoTykgPD0gb3RoZXJSZWMuc2l6ZSkgcmV0dXJuIGl0ZXJhdGVTZXQoTywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAob3RoZXJSZWMuaW5jbHVkZXMoZSkpIHJldHVybiBmYWxzZTtcbiAgfSwgdHJ1ZSkgIT09IGZhbHNlO1xuICB2YXIgaXRlcmF0b3IgPSBvdGhlclJlYy5nZXRJdGVyYXRvcigpO1xuICByZXR1cm4gaXRlcmF0ZVNpbXBsZShpdGVyYXRvciwgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoaGFzKE8sIGUpKSByZXR1cm4gaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ25vcm1hbCcsIGZhbHNlKTtcbiAgfSkgIT09IGZhbHNlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc0Rpc2pvaW50RnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXMtZGlzam9pbnQtZnJvbScpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNEaXNqb2ludEZyb21gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnaXNEaXNqb2ludEZyb20nKSB9LCB7XG4gIGlzRGlzam9pbnRGcm9tOiBpc0Rpc2pvaW50RnJvbVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBzaXplID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zaXplJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXRlcmF0ZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc1N1YnNldE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0LW1ldGhvZHMvI1NldC5wcm90b3R5cGUuaXNTdWJzZXRPZlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc1N1YnNldE9mKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIG90aGVyUmVjID0gZ2V0U2V0UmVjb3JkKG90aGVyKTtcbiAgaWYgKHNpemUoTykgPiBvdGhlclJlYy5zaXplKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBpdGVyYXRlKE8sIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKCFvdGhlclJlYy5pbmNsdWRlcyhlKSkgcmV0dXJuIGZhbHNlO1xuICB9LCB0cnVlKSAhPT0gZmFsc2U7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzU3Vic2V0T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWlzLXN1YnNldC1vZicpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNTdWJzZXRPZmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6ICFzZXRNZXRob2RBY2NlcHRTZXRMaWtlKCdpc1N1YnNldE9mJykgfSwge1xuICBpc1N1YnNldE9mOiBpc1N1YnNldE9mXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXNldCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpLmhhcztcbnZhciBzaXplID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zaXplJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNTdXBlcnNldE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0LW1ldGhvZHMvI1NldC5wcm90b3R5cGUuaXNTdXBlcnNldE9mXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzU3VwZXJzZXRPZihvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBvdGhlclJlYyA9IGdldFNldFJlY29yZChvdGhlcik7XG4gIGlmIChzaXplKE8pIDwgb3RoZXJSZWMuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICB2YXIgaXRlcmF0b3IgPSBvdGhlclJlYy5nZXRJdGVyYXRvcigpO1xuICByZXR1cm4gaXRlcmF0ZVNpbXBsZShpdGVyYXRvciwgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIWhhcyhPLCBlKSkgcmV0dXJuIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICdub3JtYWwnLCBmYWxzZSk7XG4gIH0pICE9PSBmYWxzZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNTdXBlcnNldE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pcy1zdXBlcnNldC1vZicpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNTdXBlcnNldE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ2lzU3VwZXJzZXRPZicpIH0sIHtcbiAgaXNTdXBlcnNldE9mOiBpc1N1cGVyc2V0T2Zcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgU2V0SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpO1xudmFyIGNsb25lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1jbG9uZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTaW1wbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZS1zaW1wbGUnKTtcblxudmFyIGFkZCA9IFNldEhlbHBlcnMuYWRkO1xudmFyIGhhcyA9IFNldEhlbHBlcnMuaGFzO1xudmFyIHJlbW92ZSA9IFNldEhlbHBlcnMucmVtb3ZlO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5zeW1tZXRyaWNEaWZmZXJlbmNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2Uob3RoZXIpIHtcbiAgdmFyIE8gPSBhU2V0KHRoaXMpO1xuICB2YXIga2V5c0l0ZXIgPSBnZXRTZXRSZWNvcmQob3RoZXIpLmdldEl0ZXJhdG9yKCk7XG4gIHZhciByZXN1bHQgPSBjbG9uZShPKTtcbiAgaXRlcmF0ZVNpbXBsZShrZXlzSXRlciwgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoaGFzKE8sIGUpKSByZW1vdmUocmVzdWx0LCBlKTtcbiAgICBlbHNlIGFkZChyZXN1bHQsIGUpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgc3ltbWV0cmljRGlmZmVyZW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3ltbWV0cmljLWRpZmZlcmVuY2UnKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnN5bW1ldHJpY0RpZmZlcmVuY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnc3ltbWV0cmljRGlmZmVyZW5jZScpIH0sIHtcbiAgc3ltbWV0cmljRGlmZmVyZW5jZTogc3ltbWV0cmljRGlmZmVyZW5jZVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBhZGQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKS5hZGQ7XG52YXIgY2xvbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWNsb25lJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS51bmlvbmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB1bmlvbihvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBrZXlzSXRlciA9IGdldFNldFJlY29yZChvdGhlcikuZ2V0SXRlcmF0b3IoKTtcbiAgdmFyIHJlc3VsdCA9IGNsb25lKE8pO1xuICBpdGVyYXRlU2ltcGxlKGtleXNJdGVyLCBmdW5jdGlvbiAoaXQpIHtcbiAgICBhZGQocmVzdWx0LCBpdCk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB1bmlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdW5pb24nKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnVuaW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ3VuaW9uJykgfSwge1xuICB1bmlvbjogdW5pb25cbn0pO1xuIiwgImltcG9ydCAndGlwcHkuanMvZGlzdC90aXBweS5jc3MnO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgdGlwcHl9IGZyb20gJ3RpcHB5LmpzJztcbiIsICJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIGlmIChub2RlLnRvU3RyaW5nKCkgIT09ICdbb2JqZWN0IFdpbmRvd10nKSB7XG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgcmV0dXJuIG93bmVyRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdyA6IHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufSIsICJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCAiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsICJpbXBvcnQgeyBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59IiwgImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVBU3RyaW5nKCkge1xuICB2YXIgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG5cbiAgaWYgKHVhRGF0YSAhPSBudWxsICYmIHVhRGF0YS5icmFuZHMgJiYgQXJyYXkuaXNBcnJheSh1YURhdGEuYnJhbmRzKSkge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uYnJhbmQgKyBcIi9cIiArIGl0ZW0udmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbn0iLCAiaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGF5b3V0Vmlld3BvcnQoKSB7XG4gIHJldHVybiAhL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChnZXRVQVN0cmluZygpKTtcbn0iLCAiaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gMTtcbiAgdmFyIHNjYWxlWSA9IDE7XG5cbiAgaWYgKGluY2x1ZGVTY2FsZSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgc2NhbGVYID0gZWxlbWVudC5vZmZzZXRXaWR0aCA+IDAgPyByb3VuZChjbGllbnRSZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMSA6IDE7XG4gICAgc2NhbGVZID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgPiAwID8gcm91bmQoY2xpZW50UmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMSA6IDE7XG4gIH1cblxuICB2YXIgX3JlZiA9IGlzRWxlbWVudChlbGVtZW50KSA/IGdldFdpbmRvdyhlbGVtZW50KSA6IHdpbmRvdyxcbiAgICAgIHZpc3VhbFZpZXdwb3J0ID0gX3JlZi52aXN1YWxWaWV3cG9ydDtcblxuICB2YXIgYWRkVmlzdWFsT2Zmc2V0cyA9ICFpc0xheW91dFZpZXdwb3J0KCkgJiYgaXNGaXhlZFN0cmF0ZWd5O1xuICB2YXIgeCA9IChjbGllbnRSZWN0LmxlZnQgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQgOiAwKSkgLyBzY2FsZVg7XG4gIHZhciB5ID0gKGNsaWVudFJlY3QudG9wICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AgOiAwKSkgLyBzY2FsZVk7XG4gIHZhciB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZVg7XG4gIHZhciBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlWTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIGxlZnQ6IHgsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwgImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCAiaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICB2YXIgcm9vdE5vZGUgPSBjaGlsZC5nZXRSb290Tm9kZSAmJiBjaGlsZC5nZXRSb290Tm9kZSgpOyAvLyBGaXJzdCwgYXR0ZW1wdCB3aXRoIGZhc3RlciBuYXRpdmUgbWV0aG9kXG5cbiAgaWYgKHBhcmVudC5jb250YWlucyhjaGlsZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyB0aGVuIGZhbGxiYWNrIHRvIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNoYWRvdyBET00gc3VwcG9ydFxuICBlbHNlIGlmIChyb290Tm9kZSAmJiBpc1NoYWRvd1Jvb3Qocm9vdE5vZGUpKSB7XG4gICAgICB2YXIgbmV4dCA9IGNoaWxkO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuZXh0ICYmIHBhcmVudC5pc1NhbWVOb2RlKG5leHQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddOiBuZWVkIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhpcy4uLlxuXG5cbiAgICAgICAgbmV4dCA9IG5leHQucGFyZW50Tm9kZSB8fCBuZXh0Lmhvc3Q7XG4gICAgICB9IHdoaWxlIChuZXh0KTtcbiAgICB9IC8vIEdpdmUgdXAsIHRoZSByZXN1bHQgaXMgZmFsc2VcblxuXG4gIHJldHVybiBmYWxzZTtcbn0iLCAiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59IiwgImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpID49IDA7XG59IiwgImltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSB7XG4gIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgcmV0dXJuICgoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5vd25lckRvY3VtZW50IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gIGVsZW1lbnQuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xufSIsICJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCAiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGlzVGFibGVFbGVtZW50IGZyb20gXCIuL2lzVGFibGVFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSAvZmlyZWZveC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG4gIHZhciBpc0lFID0gL1RyaWRlbnQvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgaWYgKGlzU2hhZG93Um9vdChjdXJyZW50Tm9kZSkpIHtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmhvc3Q7XG4gIH1cblxuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgWydodG1sJywgJ2JvZHknXS5pbmRleE9mKGdldE5vZGVOYW1lKGN1cnJlbnROb2RlKSkgPCAwKSB7XG4gICAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufSIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgPj0gMCA/ICd4JyA6ICd5Jztcbn0iLCAiaW1wb3J0IHsgbWF4IGFzIG1hdGhNYXgsIG1pbiBhcyBtYXRoTWluIH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufSIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwgImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsICJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5lbGVtZW50cy5hcnJvdyA9IGFycm93RWxlbWVudDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGFycm93LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddXG59OyIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCAiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZiwgd2luKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIGdldFdpbmRvdyhwb3BwZXIpKSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/IHkgKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yW3NpZGVYXSA9IGhhc1ggPyB4ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMi50cmFuc2Zvcm0gPSAnJywgX09iamVjdCRhc3NpZ24yKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdHlsZXMoX3JlZjUpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjUuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjUub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9IG9wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZ3B1QWNjZWxlcmF0LFxuICAgICAgX29wdGlvbnMkYWRhcHRpdmUgPSBvcHRpb25zLmFkYXB0aXZlLFxuICAgICAgYWRhcHRpdmUgPSBfb3B0aW9ucyRhZGFwdGl2ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFkYXB0aXZlLFxuICAgICAgX29wdGlvbnMkcm91bmRPZmZzZXRzID0gb3B0aW9ucy5yb3VuZE9mZnNldHMsXG4gICAgICByb3VuZE9mZnNldHMgPSBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyb3VuZE9mZnNldHM7XG4gIHZhciBjb21tb25TdHlsZXMgPSB7XG4gICAgcGxhY2VtZW50OiBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCksXG4gICAgdmFyaWF0aW9uOiBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb24sXG4gICAgaXNGaXhlZDogc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJ1xuICB9O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMucG9wcGVyLCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgYWRhcHRpdmU6IGFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3cgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5hcnJvdywgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93LFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBhZGFwdGl2ZTogZmFsc2UsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCc6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59OyIsICJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHBhc3NpdmUgPSB7XG4gIHBhc3NpdmU6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBpbnN0YW5jZSA9IF9yZWYuaW5zdGFuY2UsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkc2Nyb2xsID0gb3B0aW9ucy5zY3JvbGwsXG4gICAgICBzY3JvbGwgPSBfb3B0aW9ucyRzY3JvbGwgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRzY3JvbGwsXG4gICAgICBfb3B0aW9ucyRyZXNpemUgPSBvcHRpb25zLnJlc2l6ZSxcbiAgICAgIHJlc2l6ZSA9IF9vcHRpb25zJHJlc2l6ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJlc2l6ZTtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIpO1xuICB2YXIgc2Nyb2xsUGFyZW50cyA9IFtdLmNvbmNhdChzdGF0ZS5zY3JvbGxQYXJlbnRzLnJlZmVyZW5jZSwgc3RhdGUuc2Nyb2xsUGFyZW50cy5wb3BwZXIpO1xuXG4gIGlmIChzY3JvbGwpIHtcbiAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgc2Nyb2xsUGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVzaXplKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzY3JvbGwpIHtcbiAgICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfVxuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZXZlbnRMaXN0ZW5lcnMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGZ1bmN0aW9uIGZuKCkge30sXG4gIGVmZmVjdDogZWZmZWN0LFxuICBkYXRhOiB7fVxufTsiLCAidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwgInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCAiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbChub2RlKSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3cobm9kZSk7XG4gIHZhciBzY3JvbGxMZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuICB2YXIgc2Nyb2xsVG9wID0gd2luLnBhZ2VZT2Zmc2V0O1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IHNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBzY3JvbGxUb3BcbiAgfTtcbn0iLCAiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsICJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICB2YXIgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIHZhciB4ID0gMDtcbiAgdmFyIHkgPSAwO1xuXG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIHZhciBsYXlvdXRWaWV3cG9ydCA9IGlzTGF5b3V0Vmlld3BvcnQoKTtcblxuICAgIGlmIChsYXlvdXRWaWV3cG9ydCB8fCAhbGF5b3V0Vmlld3BvcnQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwgImltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IHsgbWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgd2luU2Nyb2xsID0gZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpO1xuICB2YXIgYm9keSA9IChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keTtcbiAgdmFyIHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LnNjcm9sbFdpZHRoIDogMCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKTtcbiAgdmFyIGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkgPyBib2R5LnNjcm9sbEhlaWdodCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudEhlaWdodCA6IDApO1xuICB2YXIgeCA9IC13aW5TY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIHZhciB5ID0gLXdpblNjcm9sbC5zY3JvbGxUb3A7XG5cbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSB8fCBodG1sKS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKSAtIHdpZHRoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwgImltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgLy8gRmlyZWZveCB3YW50cyB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLFxuICAgICAgb3ZlcmZsb3cgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvdyxcbiAgICAgIG92ZXJmbG93WCA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WCxcbiAgICAgIG92ZXJmbG93WSA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WTtcblxuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVuLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKTtcbn0iLCAiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCAiaW1wb3J0IGdldFNjcm9sbFBhcmVudCBmcm9tIFwiLi9nZXRTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbi8qXG5naXZlbiBhIERPTSBlbGVtZW50LCByZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIHNjcm9sbCBwYXJlbnRzLCB1cCB0aGUgbGlzdCBvZiBhbmNlc29yc1xudW50aWwgd2UgZ2V0IHRvIHRoZSB0b3Agd2luZG93IG9iamVjdC4gVGhpcyBsaXN0IGlzIHdoYXQgd2UgYXR0YWNoIHNjcm9sbCBsaXN0ZW5lcnNcbnRvLCBiZWNhdXNlIGlmIGFueSBvZiB0aGVzZSBwYXJlbnQgZWxlbWVudHMgc2Nyb2xsLCB3ZSdsbCBuZWVkIHRvIHJlLWNhbGN1bGF0ZSB0aGVcbnJlZmVyZW5jZSBlbGVtZW50J3MgcG9zaXRpb24uXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaXN0U2Nyb2xsUGFyZW50cyhlbGVtZW50LCBsaXN0KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuXG4gIHZhciBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCk7XG4gIHZhciBpc0JvZHkgPSBzY3JvbGxQYXJlbnQgPT09ICgoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHkpO1xuICB2YXIgd2luID0gZ2V0V2luZG93KHNjcm9sbFBhcmVudCk7XG4gIHZhciB0YXJnZXQgPSBpc0JvZHkgPyBbd2luXS5jb25jYXQod2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc1Njcm9sbFBhcmVudChzY3JvbGxQYXJlbnQpID8gc2Nyb2xsUGFyZW50IDogW10pIDogc2Nyb2xsUGFyZW50O1xuICB2YXIgdXBkYXRlZExpc3QgPSBsaXN0LmNvbmNhdCh0YXJnZXQpO1xuICByZXR1cm4gaXNCb2R5ID8gdXBkYXRlZExpc3QgOiAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogaXNCb2R5IHRlbGxzIHVzIHRhcmdldCB3aWxsIGJlIGFuIEhUTUxFbGVtZW50IGhlcmVcbiAgdXBkYXRlZExpc3QuY29uY2F0KGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUodGFyZ2V0KSkpO1xufSIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlY3QsIHtcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgdG9wOiByZWN0LnksXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9KTtcbn0iLCAiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsICJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgc3RhcnQsIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZU9mZnNldHMoX3JlZikge1xuICB2YXIgcmVmZXJlbmNlID0gX3JlZi5yZWZlcmVuY2UsXG4gICAgICBlbGVtZW50ID0gX3JlZi5lbGVtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZi5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50ID8gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIDogbnVsbDtcbiAgdmFyIHZhcmlhdGlvbiA9IHBsYWNlbWVudCA/IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIDogbnVsbDtcbiAgdmFyIGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBlbGVtZW50LndpZHRoIC8gMjtcbiAgdmFyIGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZWxlbWVudC5oZWlnaHQgLyAyO1xuICB2YXIgb2Zmc2V0cztcblxuICBzd2l0Y2ggKGJhc2VQbGFjZW1lbnQpIHtcbiAgICBjYXNlIHRvcDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZWxlbWVudC5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgYm90dG9tOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIHJpZ2h0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgbGVmdDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZWxlbWVudC53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuXG4gIHZhciBtYWluQXhpcyA9IGJhc2VQbGFjZW1lbnQgPyBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCkgOiBudWxsO1xuXG4gIGlmIChtYWluQXhpcyAhPSBudWxsKSB7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICBzd2l0Y2ggKHZhcmlhdGlvbikge1xuICAgICAgY2FzZSBzdGFydDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSAtIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgZW5kOlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdICsgKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0cztcbn0iLCAiaW1wb3J0IGdldENsaXBwaW5nUmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGNvbXB1dGVPZmZzZXRzIGZyb20gXCIuL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5pbXBvcnQgcmVjdFRvQ2xpZW50UmVjdCBmcm9tIFwiLi9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBjbGlwcGluZ1BhcmVudHMsIHJlZmVyZW5jZSwgcG9wcGVyLCBib3R0b20sIHRvcCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB2aWV3cG9ydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi9leHBhbmRUb0hhc2hNYXAuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIF9vcHRpb25zJHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zJHBsYWNlbWVudCA9PT0gdm9pZCAwID8gc3RhdGUucGxhY2VtZW50IDogX29wdGlvbnMkcGxhY2VtZW50LFxuICAgICAgX29wdGlvbnMkc3RyYXRlZ3kgPSBfb3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIHN0cmF0ZWd5ID0gX29wdGlvbnMkc3RyYXRlZ3kgPT09IHZvaWQgMCA/IHN0YXRlLnN0cmF0ZWd5IDogX29wdGlvbnMkc3RyYXRlZ3ksXG4gICAgICBfb3B0aW9ucyRib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucyRib3VuZGFyeSA9PT0gdm9pZCAwID8gY2xpcHBpbmdQYXJlbnRzIDogX29wdGlvbnMkYm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRyb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucyRyb290Qm91bmRhcnkgPT09IHZvaWQgMCA/IHZpZXdwb3J0IDogX29wdGlvbnMkcm9vdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZWxlbWVudENvbnRlID0gX29wdGlvbnMuZWxlbWVudENvbnRleHQsXG4gICAgICBlbGVtZW50Q29udGV4dCA9IF9vcHRpb25zJGVsZW1lbnRDb250ZSA9PT0gdm9pZCAwID8gcG9wcGVyIDogX29wdGlvbnMkZWxlbWVudENvbnRlLFxuICAgICAgX29wdGlvbnMkYWx0Qm91bmRhcnkgPSBfb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMkYWx0Qm91bmRhcnkgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucyRwYWRkaW5nID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkcGFkZGluZztcbiAgdmFyIHBhZGRpbmdPYmplY3QgPSBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xuICB2YXIgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyByZWZlcmVuY2UgOiBwb3BwZXI7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgdmFyIGNsaXBwaW5nQ2xpZW50UmVjdCA9IGdldENsaXBwaW5nUmVjdChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCBnZXREb2N1bWVudEVsZW1lbnQoc3RhdGUuZWxlbWVudHMucG9wcGVyKSwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSwgc3RyYXRlZ3kpO1xuICB2YXIgcmVmZXJlbmNlQ2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChzdGF0ZS5lbGVtZW50cy5yZWZlcmVuY2UpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUNsaWVudFJlY3QsXG4gICAgZWxlbWVudDogcG9wcGVyUmVjdCxcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KTtcbiAgdmFyIHBvcHBlckNsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KE9iamVjdC5hc3NpZ24oe30sIHBvcHBlclJlY3QsIHBvcHBlck9mZnNldHMpKTtcbiAgdmFyIGVsZW1lbnRDbGllbnRSZWN0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHBvcHBlckNsaWVudFJlY3QgOiByZWZlcmVuY2VDbGllbnRSZWN0OyAvLyBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyByZWN0XG4gIC8vIDAgb3IgbmVnYXRpdmUgPSB3aXRoaW4gdGhlIGNsaXBwaW5nIHJlY3RcblxuICB2YXIgb3ZlcmZsb3dPZmZzZXRzID0ge1xuICAgIHRvcDogY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wLFxuICAgIGJvdHRvbTogZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tLFxuICAgIGxlZnQ6IGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCxcbiAgICByaWdodDogZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0XG4gIH07XG4gIHZhciBvZmZzZXREYXRhID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQ7IC8vIE9mZnNldHMgY2FuIGJlIGFwcGxpZWQgb25seSB0byB0aGUgcG9wcGVyIGVsZW1lbnRcblxuICBpZiAoZWxlbWVudENvbnRleHQgPT09IHBvcHBlciAmJiBvZmZzZXREYXRhKSB7XG4gICAgdmFyIG9mZnNldCA9IG9mZnNldERhdGFbcGxhY2VtZW50XTtcbiAgICBPYmplY3Qua2V5cyhvdmVyZmxvd09mZnNldHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIG11bHRpcGx5ID0gW3JpZ2h0LCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gMSA6IC0xO1xuICAgICAgdmFyIGF4aXMgPSBbdG9wLCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gJ3knIDogJ3gnO1xuICAgICAgb3ZlcmZsb3dPZmZzZXRzW2tleV0gKz0gb2Zmc2V0W2F4aXNdICogbXVsdGlwbHk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gb3ZlcmZsb3dPZmZzZXRzO1xufSIsICJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCAiaW1wb3J0IGdldE9wcG9zaXRlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBjb21wdXRlQXV0b1BsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IGJvdHRvbSwgdG9wLCBzdGFydCwgcmlnaHQsIGxlZnQsIGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmZ1bmN0aW9uIGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBpZiAoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cblxuZnVuY3Rpb24gZmxpcChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyA9IG9wdGlvbnMuZmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZmxpcFZhcmlhdGlvID0gb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMkZmxpcFZhcmlhdGlvID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZmxpcFZhcmlhdGlvLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHM7XG4gIHZhciBwcmVmZXJyZWRQbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSBiYXNlUGxhY2VtZW50ID09PSBwcmVmZXJyZWRQbGFjZW1lbnQ7XG4gIHZhciBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcFZhcmlhdGlvbnMgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwcmVmZXJyZWRQbGFjZW1lbnQpKTtcbiAgdmFyIHBsYWNlbWVudHMgPSBbcHJlZmVycmVkUGxhY2VtZW50XS5jb25jYXQoZmFsbGJhY2tQbGFjZW1lbnRzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvID8gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnM6IGZsaXBWYXJpYXRpb25zLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzOiBhbGxvd2VkQXV0b1BsYWNlbWVudHNcbiAgICB9KSA6IHBsYWNlbWVudCk7XG4gIH0sIFtdKTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgY2hlY2tzTWFwID0gbmV3IE1hcCgpO1xuICB2YXIgbWFrZUZhbGxiYWNrQ2hlY2tzID0gdHJ1ZTtcbiAgdmFyIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHNbMF07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGFjZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBsYWNlbWVudCA9IHBsYWNlbWVudHNbaV07XG5cbiAgICB2YXIgX2Jhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG5cbiAgICB2YXIgaXNTdGFydFZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSBzdGFydDtcbiAgICB2YXIgaXNWZXJ0aWNhbCA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihfYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KTtcbiAgICB2YXIgbWFpblZhcmlhdGlvblNpZGUgPSBpc1ZlcnRpY2FsID8gaXNTdGFydFZhcmlhdGlvbiA/IHJpZ2h0IDogbGVmdCA6IGlzU3RhcnRWYXJpYXRpb24gPyBib3R0b20gOiB0b3A7XG5cbiAgICBpZiAocmVmZXJlbmNlUmVjdFtsZW5dID4gcG9wcGVyUmVjdFtsZW5dKSB7XG4gICAgICBtYWluVmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB9XG5cbiAgICB2YXIgYWx0VmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB2YXIgY2hlY2tzID0gW107XG5cbiAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbX2Jhc2VQbGFjZW1lbnRdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja0FsdEF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W21haW5WYXJpYXRpb25TaWRlXSA8PSAwLCBvdmVyZmxvd1thbHRWYXJpYXRpb25TaWRlXSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tzLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgcmV0dXJuIGNoZWNrO1xuICAgIH0pKSB7XG4gICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICBtYWtlRmFsbGJhY2tDaGVja3MgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNoZWNrc01hcC5zZXQocGxhY2VtZW50LCBjaGVja3MpO1xuICB9XG5cbiAgaWYgKG1ha2VGYWxsYmFja0NoZWNrcykge1xuICAgIC8vIGAyYCBtYXkgYmUgZGVzaXJlZCBpbiBzb21lIGNhc2VzIOKAkyByZXNlYXJjaCBsYXRlclxuICAgIHZhciBudW1iZXJPZkNoZWNrcyA9IGZsaXBWYXJpYXRpb25zID8gMyA6IDE7XG5cbiAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChfaSkge1xuICAgICAgdmFyIGZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzLmZpbmQoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgICAgICB2YXIgY2hlY2tzID0gY2hlY2tzTWFwLmdldChwbGFjZW1lbnQpO1xuXG4gICAgICAgIGlmIChjaGVja3MpIHtcbiAgICAgICAgICByZXR1cm4gY2hlY2tzLnNsaWNlKDAsIF9pKS5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgICAgICAgIHJldHVybiBjaGVjaztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IGZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pID0gbnVtYmVyT2ZDaGVja3M7IF9pID4gMDsgX2ktLSkge1xuICAgICAgdmFyIF9yZXQgPSBfbG9vcChfaSk7XG5cbiAgICAgIGlmIChfcmV0ID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS5wbGFjZW1lbnQgIT09IGZpcnN0Rml0dGluZ1BsYWNlbWVudCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXAgPSB0cnVlO1xuICAgIHN0YXRlLnBsYWNlbWVudCA9IGZpcnN0Rml0dGluZ1BsYWNlbWVudDtcbiAgICBzdGF0ZS5yZXNldCA9IHRydWU7XG4gIH1cbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2ZsaXAnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogZmxpcCxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXSxcbiAgZGF0YToge1xuICAgIF9za2lwOiBmYWxzZVxuICB9XG59OyIsICJpbXBvcnQgeyB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QsIHByZXZlbnRlZE9mZnNldHMpIHtcbiAgaWYgKHByZXZlbnRlZE9mZnNldHMgPT09IHZvaWQgMCkge1xuICAgIHByZXZlbnRlZE9mZnNldHMgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQgLSBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCArIHByZXZlbnRlZE9mZnNldHMueCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0ICsgcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoIC0gcHJldmVudGVkT2Zmc2V0cy54XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gW3RvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdF0uc29tZShmdW5jdGlvbiAoc2lkZSkge1xuICAgIHJldHVybiBvdmVyZmxvd1tzaWRlXSA+PSAwO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGlkZShfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBwcmV2ZW50ZWRPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3c7XG4gIHZhciByZWZlcmVuY2VPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gIH0pO1xuICB2YXIgcG9wcGVyQWx0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gIH0pO1xuICB2YXIgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocmVmZXJlbmNlT3ZlcmZsb3csIHJlZmVyZW5jZVJlY3QpO1xuICB2YXIgcG9wcGVyRXNjYXBlT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHBvcHBlckFsdE92ZXJmbG93LCBwb3BwZXJSZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKTtcbiAgdmFyIGlzUmVmZXJlbmNlSGlkZGVuID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyk7XG4gIHZhciBoYXNQb3BwZXJFc2NhcGVkID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHBvcHBlckVzY2FwZU9mZnNldHMpO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0ge1xuICAgIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0czogcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzLFxuICAgIHBvcHBlckVzY2FwZU9mZnNldHM6IHBvcHBlckVzY2FwZU9mZnNldHMsXG4gICAgaXNSZWZlcmVuY2VIaWRkZW46IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgIGhhc1BvcHBlckVzY2FwZWQ6IGhhc1BvcHBlckVzY2FwZWRcbiAgfTtcbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1yZWZlcmVuY2UtaGlkZGVuJzogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgJ2RhdGEtcG9wcGVyLWVzY2FwZWQnOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnaGlkZScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J10sXG4gIGZuOiBoaWRlXG59OyIsICJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsICJpbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5cbmZ1bmN0aW9uIHBvcHBlck9mZnNldHMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgLy8gT2Zmc2V0cyBhcmUgdGhlIGFjdHVhbCBwb3NpdGlvbiB0aGUgcG9wcGVyIG5lZWRzIHRvIGhhdmUgdG8gYmVcbiAgLy8gcHJvcGVybHkgcG9zaXRpb25lZCBuZWFyIGl0cyByZWZlcmVuY2UgZWxlbWVudFxuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGJhc2ljIHBsYWNlbWVudCwgYW5kIHdpbGwgYmUgYWRqdXN0ZWQgYnlcbiAgLy8gdGhlIG1vZGlmaWVycyBpbiB0aGUgbmV4dCBzdGVwXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiBzdGF0ZS5yZWN0cy5yZWZlcmVuY2UsXG4gICAgZWxlbWVudDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncG9wcGVyT2Zmc2V0cycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAncmVhZCcsXG4gIGZuOiBwb3BwZXJPZmZzZXRzLFxuICBkYXRhOiB7fVxufTsiLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QWx0QXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59IiwgImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SFRNTEVsZW1lbnRTY3JvbGwoZWxlbWVudCkge1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gIH07XG59IiwgImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsICJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCAiaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gc291cmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTg3NTI1NVxuXG5mdW5jdGlvbiBvcmRlcihtb2RpZmllcnMpIHtcbiAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgbWFwLnNldChtb2RpZmllci5uYW1lLCBtb2RpZmllcik7XG4gIH0pOyAvLyBPbiB2aXNpdGluZyBvYmplY3QsIGNoZWNrIGZvciBpdHMgZGVwZW5kZW5jaWVzIGFuZCB2aXNpdCB0aGVtIHJlY3Vyc2l2ZWx5XG5cbiAgZnVuY3Rpb24gc29ydChtb2RpZmllcikge1xuICAgIHZpc2l0ZWQuYWRkKG1vZGlmaWVyLm5hbWUpO1xuICAgIHZhciByZXF1aXJlcyA9IFtdLmNvbmNhdChtb2RpZmllci5yZXF1aXJlcyB8fCBbXSwgbW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cyB8fCBbXSk7XG4gICAgcmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAoZGVwKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGRlcCkpIHtcbiAgICAgICAgdmFyIGRlcE1vZGlmaWVyID0gbWFwLmdldChkZXApO1xuXG4gICAgICAgIGlmIChkZXBNb2RpZmllcikge1xuICAgICAgICAgIHNvcnQoZGVwTW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgaWYgKCF2aXNpdGVkLmhhcyhtb2RpZmllci5uYW1lKSkge1xuICAgICAgLy8gY2hlY2sgZm9yIHZpc2l0ZWQgb2JqZWN0XG4gICAgICBzb3J0KG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlck1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgLy8gb3JkZXIgYmFzZWQgb24gZGVwZW5kZW5jaWVzXG4gIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXIobW9kaWZpZXJzKTsgLy8gb3JkZXIgYmFzZWQgb24gcGhhc2VcblxuICByZXR1cm4gbW9kaWZpZXJQaGFzZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBoYXNlKSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQob3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICByZXR1cm4gbW9kaWZpZXIucGhhc2UgPT09IHBoYXNlO1xuICAgIH0pKTtcbiAgfSwgW10pO1xufSIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWJvdW5jZShmbikge1xuICB2YXIgcGVuZGluZztcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHBlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBwZW5kaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHJlc29sdmUoZm4oKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBlbmRpbmc7XG4gIH07XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsICJpbXBvcnQgZ2V0Q29tcG9zaXRlUmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBydW5Nb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnVwZGF0ZSgpO1xuICAgICAgfSxcbiAgICAgIC8vIFN5bmMgdXBkYXRlIOKAkyBpdCB3aWxsIGFsd2F5cyBiZSBleGVjdXRlZCwgZXZlbiBpZiBub3QgbmVjZXNzYXJ5LiBUaGlzXG4gICAgICAvLyBpcyB1c2VmdWwgZm9yIGxvdyBmcmVxdWVuY3kgdXBkYXRlcyB3aGVyZSBzeW5jIGJlaGF2aW9yIHNpbXBsaWZpZXMgdGhlXG4gICAgICAvLyBsb2dpYy5cbiAgICAgIC8vIEZvciBoaWdoIGZyZXF1ZW5jeSB1cGRhdGVzIChlLmcuIGByZXNpemVgIGFuZCBgc2Nyb2xsYCBldmVudHMpLCBhbHdheXNcbiAgICAgIC8vIHByZWZlciB0aGUgYXN5bmMgUG9wcGVyI3VwZGF0ZSBtZXRob2RcbiAgICAgIGZvcmNlVXBkYXRlOiBmdW5jdGlvbiBmb3JjZVVwZGF0ZSgpIHtcbiAgICAgICAgaWYgKGlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9zdGF0ZSRlbGVtZW50cyA9IHN0YXRlLmVsZW1lbnRzLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gX3N0YXRlJGVsZW1lbnRzLnJlZmVyZW5jZSxcbiAgICAgICAgICAgIHBvcHBlciA9IF9zdGF0ZSRlbGVtZW50cy5wb3BwZXI7IC8vIERvbid0IHByb2NlZWQgaWYgYHJlZmVyZW5jZWAgb3IgYHBvcHBlcmAgYXJlIG5vdCB2YWxpZCBlbGVtZW50c1xuICAgICAgICAvLyBhbnltb3JlXG5cbiAgICAgICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5zZXRPcHRpb25zKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBpZiAoIWlzRGVzdHJveWVkICYmIG9wdGlvbnMub25GaXJzdFVwZGF0ZSkge1xuICAgICAgICBvcHRpb25zLm9uRmlyc3RVcGRhdGUoc3RhdGUpO1xuICAgICAgfVxuICAgIH0pOyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byBleGVjdXRlIGFyYml0cmFyeSBjb2RlIGJlZm9yZSB0aGUgZmlyc3RcbiAgICAvLyB1cGRhdGUgY3ljbGUgcnVucy4gVGhleSB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSB1cGRhdGVcbiAgICAvLyBjeWNsZS4gVGhpcyBpcyB1c2VmdWwgd2hlbiBhIG1vZGlmaWVyIGFkZHMgc29tZSBwZXJzaXN0ZW50IGRhdGEgdGhhdFxuICAgIC8vIG90aGVyIG1vZGlmaWVycyBuZWVkIHRvIHVzZSwgYnV0IHRoZSBtb2RpZmllciBpcyBydW4gYWZ0ZXIgdGhlIGRlcGVuZGVudFxuICAgIC8vIG9uZS5cblxuICAgIGZ1bmN0aW9uIHJ1bk1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgICAgICAgIF9yZWYkb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRvcHRpb25zLFxuICAgICAgICAgICAgZWZmZWN0ID0gX3JlZi5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCAiaW1wb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdyB9IGZyb20gXCIuL2NyZWF0ZVBvcHBlci5qc1wiO1xuaW1wb3J0IGV2ZW50TGlzdGVuZXJzIGZyb20gXCIuL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qc1wiO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSBcIi4vbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanNcIjtcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzXCI7XG5pbXBvcnQgYXBwbHlTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzXCI7XG5pbXBvcnQgb2Zmc2V0IGZyb20gXCIuL21vZGlmaWVycy9vZmZzZXQuanNcIjtcbmltcG9ydCBmbGlwIGZyb20gXCIuL21vZGlmaWVycy9mbGlwLmpzXCI7XG5pbXBvcnQgcHJldmVudE92ZXJmbG93IGZyb20gXCIuL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBhcnJvdyBmcm9tIFwiLi9tb2RpZmllcnMvYXJyb3cuanNcIjtcbmltcG9ydCBoaWRlIGZyb20gXCIuL21vZGlmaWVycy9oaWRlLmpzXCI7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IFtldmVudExpc3RlbmVycywgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgYXBwbHlTdHlsZXMsIG9mZnNldCwgZmxpcCwgcHJldmVudE92ZXJmbG93LCBhcnJvdywgaGlkZV07XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciwgcG9wcGVyR2VuZXJhdG9yLCBkZWZhdWx0TW9kaWZpZXJzLCBkZXRlY3RPdmVyZmxvdyB9OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciBhcyBjcmVhdGVQb3BwZXJMaXRlIH0gZnJvbSBcIi4vcG9wcGVyLWxpdGUuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgKiBmcm9tIFwiLi9tb2RpZmllcnMvaW5kZXguanNcIjsiLCAiZXhwb3J0IGNvbnN0IFJPVU5EX0FSUk9XID1cbiAgJzxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0wIDZzMS43OTYtLjAxMyA0LjY3LTMuNjE1QzUuODUxLjkgNi45My4wMDYgOCAwYzEuMDctLjAwNiAyLjE0OC44ODcgMy4zNDMgMi4zODVDMTQuMjMzIDYuMDA1IDE2IDYgMTYgNkgwelwiPjwvc3ZnPic7XG5cbmV4cG9ydCBjb25zdCBCT1hfQ0xBU1MgPSBgX19OQU1FU1BBQ0VfUFJFRklYX18tYm94YDtcbmV4cG9ydCBjb25zdCBDT05URU5UX0NMQVNTID0gYF9fTkFNRVNQQUNFX1BSRUZJWF9fLWNvbnRlbnRgO1xuZXhwb3J0IGNvbnN0IEJBQ0tEUk9QX0NMQVNTID0gYF9fTkFNRVNQQUNFX1BSRUZJWF9fLWJhY2tkcm9wYDtcbmV4cG9ydCBjb25zdCBBUlJPV19DTEFTUyA9IGBfX05BTUVTUEFDRV9QUkVGSVhfXy1hcnJvd2A7XG5leHBvcnQgY29uc3QgU1ZHX0FSUk9XX0NMQVNTID0gYF9fTkFNRVNQQUNFX1BSRUZJWF9fLXN2Zy1hcnJvd2A7XG5cbmV4cG9ydCBjb25zdCBUT1VDSF9PUFRJT05TID0ge3Bhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWV9O1xuXG5leHBvcnQgY29uc3QgVElQUFlfREVGQVVMVF9BUFBFTkRfVE8gPSAoKSA9PiBkb2N1bWVudC5ib2R5O1xuIiwgImltcG9ydCB7QmFzZVBsYWNlbWVudCwgUGxhY2VtZW50fSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc093blByb3BlcnR5KFxuICBvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBrZXk6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIHJldHVybiB7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQXRJbmRleE9yUmV0dXJuPFQ+KFxuICB2YWx1ZTogVCB8IFtUIHwgbnVsbCwgVCB8IG51bGxdLFxuICBpbmRleDogbnVtYmVyLFxuICBkZWZhdWx0VmFsdWU6IFQgfCBbVCwgVF1cbik6IFQge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBjb25zdCB2ID0gdmFsdWVbaW5kZXhdO1xuICAgIHJldHVybiB2ID09IG51bGxcbiAgICAgID8gQXJyYXkuaXNBcnJheShkZWZhdWx0VmFsdWUpXG4gICAgICAgID8gZGVmYXVsdFZhbHVlW2luZGV4XVxuICAgICAgICA6IGRlZmF1bHRWYWx1ZVxuICAgICAgOiB2O1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlKHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHIgPSB7fS50b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgcmV0dXJuIHN0ci5pbmRleE9mKCdbb2JqZWN0JykgPT09IDAgJiYgc3RyLmluZGV4T2YoYCR7dHlwZX1dYCkgPiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZVdpdGhBcmdzT3JSZXR1cm4odmFsdWU6IGFueSwgYXJnczogYW55W10pOiBhbnkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUoLi4uYXJncykgOiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlYm91bmNlPFQ+KFxuICBmbjogKGFyZzogVCkgPT4gdm9pZCxcbiAgbXM6IG51bWJlclxuKTogKGFyZzogVCkgPT4gdm9pZCB7XG4gIC8vIEF2b2lkIHdyYXBwaW5nIGluIGBzZXRUaW1lb3V0YCBpZiBtcyBpcyAwIGFueXdheVxuICBpZiAobXMgPT09IDApIHtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICBsZXQgdGltZW91dDogYW55O1xuXG4gIHJldHVybiAoYXJnKTogdm9pZCA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGZuKGFyZyk7XG4gICAgfSwgbXMpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUHJvcGVydGllczxUPihvYmo6IFQsIGtleXM6IHN0cmluZ1tdKTogUGFydGlhbDxUPiB7XG4gIGNvbnN0IGNsb25lID0gey4uLm9ian07XG4gIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgZGVsZXRlIChjbG9uZSBhcyBhbnkpW2tleV07XG4gIH0pO1xuICByZXR1cm4gY2xvbmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEJ5U3BhY2VzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRvQXJyYXk8VD4odmFsdWU6IFQgfCBUW10pOiBUW10ge1xuICByZXR1cm4gKFtdIGFzIFRbXSkuY29uY2F0KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2hJZlVuaXF1ZTxUPihhcnI6IFRbXSwgdmFsdWU6IFQpOiB2b2lkIHtcbiAgaWYgKGFyci5pbmRleE9mKHZhbHVlKSA9PT0gLTEpIHtcbiAgICBhcnIucHVzaCh2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFB4SWZOdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gYCR7dmFsdWV9cHhgIDogdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWU8VD4oYXJyOiBUW10pOiBUW10ge1xuICByZXR1cm4gYXJyLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IGFyci5pbmRleE9mKGl0ZW0pID09PSBpbmRleCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiBwYXJzZUZsb2F0KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50OiBQbGFjZW1lbnQpOiBCYXNlUGxhY2VtZW50IHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdIGFzIEJhc2VQbGFjZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUZyb20odmFsdWU6IEFycmF5TGlrZTxhbnk+KTogYW55W10ge1xuICByZXR1cm4gW10uc2xpY2UuY2FsbCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVVbmRlZmluZWRQcm9wcyhcbiAgb2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgaWYgKG9ialtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIChhY2MgYXMgYW55KVtrZXldID0gb2JqW2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufVxuIiwgImltcG9ydCB7UmVmZXJlbmNlRWxlbWVudCwgVGFyZ2V0c30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1BvcHBlclRyZWVEYXRhfSBmcm9tICcuL3R5cGVzLWludGVybmFsJztcbmltcG9ydCB7YXJyYXlGcm9tLCBpc1R5cGUsIG5vcm1hbGl6ZVRvQXJyYXksIGdldEJhc2VQbGFjZW1lbnR9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGl2KCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQge1xuICByZXR1cm4gWydFbGVtZW50JywgJ0ZyYWdtZW50J10uc29tZSgodHlwZSkgPT4gaXNUeXBlKHZhbHVlLCB0eXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVMaXN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgTm9kZUxpc3Qge1xuICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnTm9kZUxpc3QnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTW91c2VFdmVudCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIE1vdXNlRXZlbnQge1xuICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnTW91c2VFdmVudCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VFbGVtZW50KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBSZWZlcmVuY2VFbGVtZW50IHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl90aXBweSAmJiB2YWx1ZS5fdGlwcHkucmVmZXJlbmNlID09PSB2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcnJheU9mRWxlbWVudHModmFsdWU6IFRhcmdldHMpOiBFbGVtZW50W10ge1xuICBpZiAoaXNFbGVtZW50KHZhbHVlKSkge1xuICAgIHJldHVybiBbdmFsdWVdO1xuICB9XG5cbiAgaWYgKGlzTm9kZUxpc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGFycmF5RnJvbSh2YWx1ZSk7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gYXJyYXlGcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRyYW5zaXRpb25EdXJhdGlvbihcbiAgZWxzOiAoSFRNTERpdkVsZW1lbnQgfCBudWxsKVtdLFxuICB2YWx1ZTogbnVtYmVyXG4pOiB2b2lkIHtcbiAgZWxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgaWYgKGVsKSB7XG4gICAgICBlbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHt2YWx1ZX1tc2A7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFZpc2liaWxpdHlTdGF0ZShcbiAgZWxzOiAoSFRNTERpdkVsZW1lbnQgfCBudWxsKVtdLFxuICBzdGF0ZTogJ3Zpc2libGUnIHwgJ2hpZGRlbidcbik6IHZvaWQge1xuICBlbHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsIHN0YXRlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3duZXJEb2N1bWVudChcbiAgZWxlbWVudE9yRWxlbWVudHM6IEVsZW1lbnQgfCBFbGVtZW50W11cbik6IERvY3VtZW50IHtcbiAgY29uc3QgW2VsZW1lbnRdID0gbm9ybWFsaXplVG9BcnJheShlbGVtZW50T3JFbGVtZW50cyk7XG5cbiAgLy8gRWxlbWVudHMgY3JlYXRlZCB2aWEgYSA8dGVtcGxhdGU+IGhhdmUgYW4gb3duZXJEb2N1bWVudCB3aXRoIG5vIHJlZmVyZW5jZSB0byB0aGUgYm9keVxuICByZXR1cm4gZWxlbWVudD8ub3duZXJEb2N1bWVudD8uYm9keSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IGRvY3VtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDdXJzb3JPdXRzaWRlSW50ZXJhY3RpdmVCb3JkZXIoXG4gIHBvcHBlclRyZWVEYXRhOiBQb3BwZXJUcmVlRGF0YVtdLFxuICBldmVudDogTW91c2VFdmVudFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtjbGllbnRYLCBjbGllbnRZfSA9IGV2ZW50O1xuXG4gIHJldHVybiBwb3BwZXJUcmVlRGF0YS5ldmVyeSgoe3BvcHBlclJlY3QsIHBvcHBlclN0YXRlLCBwcm9wc30pID0+IHtcbiAgICBjb25zdCB7aW50ZXJhY3RpdmVCb3JkZXJ9ID0gcHJvcHM7XG4gICAgY29uc3QgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocG9wcGVyU3RhdGUucGxhY2VtZW50KTtcbiAgICBjb25zdCBvZmZzZXREYXRhID0gcG9wcGVyU3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQ7XG5cbiAgICBpZiAoIW9mZnNldERhdGEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRvcERpc3RhbmNlID0gYmFzZVBsYWNlbWVudCA9PT0gJ2JvdHRvbScgPyBvZmZzZXREYXRhLnRvcCEueSA6IDA7XG4gICAgY29uc3QgYm90dG9tRGlzdGFuY2UgPSBiYXNlUGxhY2VtZW50ID09PSAndG9wJyA/IG9mZnNldERhdGEuYm90dG9tIS55IDogMDtcbiAgICBjb25zdCBsZWZ0RGlzdGFuY2UgPSBiYXNlUGxhY2VtZW50ID09PSAncmlnaHQnID8gb2Zmc2V0RGF0YS5sZWZ0IS54IDogMDtcbiAgICBjb25zdCByaWdodERpc3RhbmNlID0gYmFzZVBsYWNlbWVudCA9PT0gJ2xlZnQnID8gb2Zmc2V0RGF0YS5yaWdodCEueCA6IDA7XG5cbiAgICBjb25zdCBleGNlZWRzVG9wID1cbiAgICAgIHBvcHBlclJlY3QudG9wIC0gY2xpZW50WSArIHRvcERpc3RhbmNlID4gaW50ZXJhY3RpdmVCb3JkZXI7XG4gICAgY29uc3QgZXhjZWVkc0JvdHRvbSA9XG4gICAgICBjbGllbnRZIC0gcG9wcGVyUmVjdC5ib3R0b20gLSBib3R0b21EaXN0YW5jZSA+IGludGVyYWN0aXZlQm9yZGVyO1xuICAgIGNvbnN0IGV4Y2VlZHNMZWZ0ID1cbiAgICAgIHBvcHBlclJlY3QubGVmdCAtIGNsaWVudFggKyBsZWZ0RGlzdGFuY2UgPiBpbnRlcmFjdGl2ZUJvcmRlcjtcbiAgICBjb25zdCBleGNlZWRzUmlnaHQgPVxuICAgICAgY2xpZW50WCAtIHBvcHBlclJlY3QucmlnaHQgLSByaWdodERpc3RhbmNlID4gaW50ZXJhY3RpdmVCb3JkZXI7XG5cbiAgICByZXR1cm4gZXhjZWVkc1RvcCB8fCBleGNlZWRzQm90dG9tIHx8IGV4Y2VlZHNMZWZ0IHx8IGV4Y2VlZHNSaWdodDtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVUcmFuc2l0aW9uRW5kTGlzdGVuZXIoXG4gIGJveDogSFRNTERpdkVsZW1lbnQsXG4gIGFjdGlvbjogJ2FkZCcgfCAncmVtb3ZlJyxcbiAgbGlzdGVuZXI6IChldmVudDogVHJhbnNpdGlvbkV2ZW50KSA9PiB2b2lkXG4pOiB2b2lkIHtcbiAgY29uc3QgbWV0aG9kID0gYCR7YWN0aW9ufUV2ZW50TGlzdGVuZXJgIGFzXG4gICAgfCAnYWRkRXZlbnRMaXN0ZW5lcidcbiAgICB8ICdyZW1vdmVFdmVudExpc3RlbmVyJztcblxuICAvLyBzb21lIGJyb3dzZXJzIGFwcGFyZW50bHkgc3VwcG9ydCBgdHJhbnNpdGlvbmAgKHVucHJlZml4ZWQpIGJ1dCBvbmx5IGZpcmVcbiAgLy8gYHdlYmtpdFRyYW5zaXRpb25FbmRgLi4uXG4gIFsndHJhbnNpdGlvbmVuZCcsICd3ZWJraXRUcmFuc2l0aW9uRW5kJ10uZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICBib3hbbWV0aG9kXShldmVudCwgbGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcik7XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbXBhcmVkIHRvIHh4eC5jb250YWlucywgdGhpcyBmdW5jdGlvbiB3b3JrcyBmb3IgZG9tIHN0cnVjdHVyZXMgd2l0aCBzaGFkb3dcbiAqIGRvbVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0dWFsQ29udGFpbnMocGFyZW50OiBFbGVtZW50LCBjaGlsZDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICBsZXQgdGFyZ2V0ID0gY2hpbGQ7XG4gIHdoaWxlICh0YXJnZXQpIHtcbiAgICBpZiAocGFyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0YXJnZXQgPSAodGFyZ2V0LmdldFJvb3ROb2RlPy4oKSBhcyBhbnkpPy5ob3N0O1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiIsICJpbXBvcnQge1RPVUNIX09QVElPTlN9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7aXNSZWZlcmVuY2VFbGVtZW50fSBmcm9tICcuL2RvbS11dGlscyc7XG5cbmV4cG9ydCBjb25zdCBjdXJyZW50SW5wdXQgPSB7aXNUb3VjaDogZmFsc2V9O1xubGV0IGxhc3RNb3VzZU1vdmVUaW1lID0gMDtcblxuLyoqXG4gKiBXaGVuIGEgYHRvdWNoc3RhcnRgIGV2ZW50IGlzIGZpcmVkLCBpdCdzIGFzc3VtZWQgdGhlIHVzZXIgaXMgdXNpbmcgdG91Y2hcbiAqIGlucHV0LiBXZSdsbCBiaW5kIGEgYG1vdXNlbW92ZWAgZXZlbnQgbGlzdGVuZXIgdG8gbGlzdGVuIGZvciBtb3VzZSBpbnB1dCBpblxuICogdGhlIGZ1dHVyZS4gVGhpcyB3YXksIHRoZSBgaXNUb3VjaGAgcHJvcGVydHkgaXMgZnVsbHkgZHluYW1pYyBhbmQgd2lsbCBoYW5kbGVcbiAqIGh5YnJpZCBkZXZpY2VzIHRoYXQgdXNlIGEgbWl4IG9mIHRvdWNoICsgbW91c2UgaW5wdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkRvY3VtZW50VG91Y2hTdGFydCgpOiB2b2lkIHtcbiAgaWYgKGN1cnJlbnRJbnB1dC5pc1RvdWNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY3VycmVudElucHV0LmlzVG91Y2ggPSB0cnVlO1xuXG4gIGlmICh3aW5kb3cucGVyZm9ybWFuY2UpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbkRvY3VtZW50TW91c2VNb3ZlKTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZW4gdHdvIGBtb3VzZW1vdmVgIGV2ZW50IGFyZSBmaXJlZCBjb25zZWN1dGl2ZWx5IHdpdGhpbiAyMG1zLCBpdCdzIGFzc3VtZWRcbiAqIHRoZSB1c2VyIGlzIHVzaW5nIG1vdXNlIGlucHV0IGFnYWluLiBgbW91c2Vtb3ZlYCBjYW4gZmlyZSBvbiB0b3VjaCBkZXZpY2VzIGFzXG4gKiB3ZWxsLCBidXQgdmVyeSByYXJlbHkgdGhhdCBxdWlja2x5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gb25Eb2N1bWVudE1vdXNlTW92ZSgpOiB2b2lkIHtcbiAgY29uc3Qgbm93ID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgaWYgKG5vdyAtIGxhc3RNb3VzZU1vdmVUaW1lIDwgMjApIHtcbiAgICBjdXJyZW50SW5wdXQuaXNUb3VjaCA9IGZhbHNlO1xuXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSk7XG4gIH1cblxuICBsYXN0TW91c2VNb3ZlVGltZSA9IG5vdztcbn1cblxuLyoqXG4gKiBXaGVuIGFuIGVsZW1lbnQgaXMgaW4gZm9jdXMgYW5kIGhhcyBhIHRpcHB5LCBsZWF2aW5nIHRoZSB0YWIvd2luZG93IGFuZFxuICogcmV0dXJuaW5nIGNhdXNlcyBpdCB0byBzaG93IGFnYWluLiBGb3IgbW91c2UgdXNlcnMgdGhpcyBpcyB1bmV4cGVjdGVkLCBidXRcbiAqIGZvciBrZXlib2FyZCB1c2UgaXQgbWFrZXMgc2Vuc2UuXG4gKiBUT0RPOiBmaW5kIGEgYmV0dGVyIHRlY2huaXF1ZSB0byBzb2x2ZSB0aGlzIHByb2JsZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uV2luZG93Qmx1cigpOiB2b2lkIHtcbiAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gIGlmIChpc1JlZmVyZW5jZUVsZW1lbnQoYWN0aXZlRWxlbWVudCkpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGFjdGl2ZUVsZW1lbnQuX3RpcHB5ITtcblxuICAgIGlmIChhY3RpdmVFbGVtZW50LmJsdXIgJiYgIWluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSkge1xuICAgICAgYWN0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJpbmRHbG9iYWxFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uRG9jdW1lbnRUb3VjaFN0YXJ0LCBUT1VDSF9PUFRJT05TKTtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBvbldpbmRvd0JsdXIpO1xufVxuIiwgImV4cG9ydCBjb25zdCBpc0Jyb3dzZXIgPVxuICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuXG5leHBvcnQgY29uc3QgaXNJRTExID0gaXNCcm93c2VyXG4gID8gLy8gQHRzLWlnbm9yZVxuICAgICEhd2luZG93Lm1zQ3J5cHRvXG4gIDogZmFsc2U7XG4iLCAiaW1wb3J0IHtUYXJnZXRzfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lbW9yeUxlYWtXYXJuaW5nKG1ldGhvZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdHh0ID0gbWV0aG9kID09PSAnZGVzdHJveScgPyAnbiBhbHJlYWR5LScgOiAnICc7XG5cbiAgcmV0dXJuIFtcbiAgICBgJHttZXRob2R9KCkgd2FzIGNhbGxlZCBvbiBhJHt0eHR9ZGVzdHJveWVkIGluc3RhbmNlLiBUaGlzIGlzIGEgbm8tb3AgYnV0YCxcbiAgICAnaW5kaWNhdGVzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrLicsXG4gIF0uam9pbignICcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW4odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNwYWNlc0FuZFRhYnMgPSAvWyBcXHRdezIsfS9nO1xuICBjb25zdCBsaW5lU3RhcnRXaXRoU3BhY2VzID0gL15bIFxcdF0qL2dtO1xuXG4gIHJldHVybiB2YWx1ZVxuICAgIC5yZXBsYWNlKHNwYWNlc0FuZFRhYnMsICcgJylcbiAgICAucmVwbGFjZShsaW5lU3RhcnRXaXRoU3BhY2VzLCAnJylcbiAgICAudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXREZXZNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjbGVhbihgXG4gICVjdGlwcHkuanNcblxuICAlYyR7Y2xlYW4obWVzc2FnZSl9XG5cbiAgJWPwn5G34oCNIFRoaXMgaXMgYSBkZXZlbG9wbWVudC1vbmx5IG1lc3NhZ2UuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBwcm9kdWN0aW9uLlxuICBgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlZE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gW1xuICAgIGdldERldk1lc3NhZ2UobWVzc2FnZSksXG4gICAgLy8gdGl0bGVcbiAgICAnY29sb3I6ICMwMEM1ODQ7IGZvbnQtc2l6ZTogMS4zZW07IGZvbnQtd2VpZ2h0OiBib2xkOycsXG4gICAgLy8gbWVzc2FnZVxuICAgICdsaW5lLWhlaWdodDogMS41JyxcbiAgICAvLyBmb290ZXJcbiAgICAnY29sb3I6ICNhNmEwOTU7JyxcbiAgXTtcbn1cblxuLy8gQXNzdW1lIHdhcm5pbmdzIGFuZCBlcnJvcnMgbmV2ZXIgaGF2ZSB0aGUgc2FtZSBtZXNzYWdlXG5sZXQgdmlzaXRlZE1lc3NhZ2VzOiBTZXQ8c3RyaW5nPjtcbmlmIChfX0RFVl9fKSB7XG4gIHJlc2V0VmlzaXRlZE1lc3NhZ2VzKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldFZpc2l0ZWRNZXNzYWdlcygpOiB2b2lkIHtcbiAgdmlzaXRlZE1lc3NhZ2VzID0gbmV3IFNldCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FybldoZW4oY29uZGl0aW9uOiBib29sZWFuLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGNvbmRpdGlvbiAmJiAhdmlzaXRlZE1lc3NhZ2VzLmhhcyhtZXNzYWdlKSkge1xuICAgIHZpc2l0ZWRNZXNzYWdlcy5hZGQobWVzc2FnZSk7XG4gICAgY29uc29sZS53YXJuKC4uLmdldEZvcm1hdHRlZE1lc3NhZ2UobWVzc2FnZSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvcldoZW4oY29uZGl0aW9uOiBib29sZWFuLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGNvbmRpdGlvbiAmJiAhdmlzaXRlZE1lc3NhZ2VzLmhhcyhtZXNzYWdlKSkge1xuICAgIHZpc2l0ZWRNZXNzYWdlcy5hZGQobWVzc2FnZSk7XG4gICAgY29uc29sZS5lcnJvciguLi5nZXRGb3JtYXR0ZWRNZXNzYWdlKG1lc3NhZ2UpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRzKHRhcmdldHM6IFRhcmdldHMpOiB2b2lkIHtcbiAgY29uc3QgZGlkUGFzc0ZhbHN5VmFsdWUgPSAhdGFyZ2V0cztcbiAgY29uc3QgZGlkUGFzc1BsYWluT2JqZWN0ID1cbiAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGFyZ2V0cykgPT09ICdbb2JqZWN0IE9iamVjdF0nICYmXG4gICAgISh0YXJnZXRzIGFzIGFueSkuYWRkRXZlbnRMaXN0ZW5lcjtcblxuICBlcnJvcldoZW4oXG4gICAgZGlkUGFzc0ZhbHN5VmFsdWUsXG4gICAgW1xuICAgICAgJ3RpcHB5KCkgd2FzIHBhc3NlZCcsXG4gICAgICAnYCcgKyBTdHJpbmcodGFyZ2V0cykgKyAnYCcsXG4gICAgICAnYXMgaXRzIHRhcmdldHMgKGZpcnN0KSBhcmd1bWVudC4gVmFsaWQgdHlwZXMgYXJlOiBTdHJpbmcsIEVsZW1lbnQsJyxcbiAgICAgICdFbGVtZW50W10sIG9yIE5vZGVMaXN0LicsXG4gICAgXS5qb2luKCcgJylcbiAgKTtcblxuICBlcnJvcldoZW4oXG4gICAgZGlkUGFzc1BsYWluT2JqZWN0LFxuICAgIFtcbiAgICAgICd0aXBweSgpIHdhcyBwYXNzZWQgYSBwbGFpbiBvYmplY3Qgd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBhcyBhbiBhcmd1bWVudCcsXG4gICAgICAnZm9yIHZpcnR1YWwgcG9zaXRpb25pbmcuIFVzZSBwcm9wcy5nZXRSZWZlcmVuY2VDbGllbnRSZWN0IGluc3RlYWQuJyxcbiAgICBdLmpvaW4oJyAnKVxuICApO1xufVxuIiwgImltcG9ydCB7RGVmYXVsdFByb3BzLCBQbHVnaW4sIFByb3BzLCBSZWZlcmVuY2VFbGVtZW50LCBUaXBweX0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBoYXNPd25Qcm9wZXJ0eSxcbiAgcmVtb3ZlUHJvcGVydGllcyxcbiAgaW52b2tlV2l0aEFyZ3NPclJldHVybixcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge3dhcm5XaGVufSBmcm9tICcuL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHtUSVBQWV9ERUZBVUxUX0FQUEVORF9UT30gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBwbHVnaW5Qcm9wcyA9IHtcbiAgYW5pbWF0ZUZpbGw6IGZhbHNlLFxuICBmb2xsb3dDdXJzb3I6IGZhbHNlLFxuICBpbmxpbmVQb3NpdGlvbmluZzogZmFsc2UsXG4gIHN0aWNreTogZmFsc2UsXG59O1xuXG5jb25zdCByZW5kZXJQcm9wcyA9IHtcbiAgYWxsb3dIVE1MOiBmYWxzZSxcbiAgYW5pbWF0aW9uOiAnZmFkZScsXG4gIGFycm93OiB0cnVlLFxuICBjb250ZW50OiAnJyxcbiAgaW5lcnRpYTogZmFsc2UsXG4gIG1heFdpZHRoOiAzNTAsXG4gIHJvbGU6ICd0b29sdGlwJyxcbiAgdGhlbWU6ICcnLFxuICB6SW5kZXg6IDk5OTksXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFByb3BzOiBEZWZhdWx0UHJvcHMgPSB7XG4gIGFwcGVuZFRvOiBUSVBQWV9ERUZBVUxUX0FQUEVORF9UTyxcbiAgYXJpYToge1xuICAgIGNvbnRlbnQ6ICdhdXRvJyxcbiAgICBleHBhbmRlZDogJ2F1dG8nLFxuICB9LFxuICBkZWxheTogMCxcbiAgZHVyYXRpb246IFszMDAsIDI1MF0sXG4gIGdldFJlZmVyZW5jZUNsaWVudFJlY3Q6IG51bGwsXG4gIGhpZGVPbkNsaWNrOiB0cnVlLFxuICBpZ25vcmVBdHRyaWJ1dGVzOiBmYWxzZSxcbiAgaW50ZXJhY3RpdmU6IGZhbHNlLFxuICBpbnRlcmFjdGl2ZUJvcmRlcjogMixcbiAgaW50ZXJhY3RpdmVEZWJvdW5jZTogMCxcbiAgbW92ZVRyYW5zaXRpb246ICcnLFxuICBvZmZzZXQ6IFswLCAxMF0sXG4gIG9uQWZ0ZXJVcGRhdGUoKSB7fSxcbiAgb25CZWZvcmVVcGRhdGUoKSB7fSxcbiAgb25DcmVhdGUoKSB7fSxcbiAgb25EZXN0cm95KCkge30sXG4gIG9uSGlkZGVuKCkge30sXG4gIG9uSGlkZSgpIHt9LFxuICBvbk1vdW50KCkge30sXG4gIG9uU2hvdygpIHt9LFxuICBvblNob3duKCkge30sXG4gIG9uVHJpZ2dlcigpIHt9LFxuICBvblVudHJpZ2dlcigpIHt9LFxuICBvbkNsaWNrT3V0c2lkZSgpIHt9LFxuICBwbGFjZW1lbnQ6ICd0b3AnLFxuICBwbHVnaW5zOiBbXSxcbiAgcG9wcGVyT3B0aW9uczoge30sXG4gIHJlbmRlcjogbnVsbCxcbiAgc2hvd09uQ3JlYXRlOiBmYWxzZSxcbiAgdG91Y2g6IHRydWUsXG4gIHRyaWdnZXI6ICdtb3VzZWVudGVyIGZvY3VzJyxcbiAgdHJpZ2dlclRhcmdldDogbnVsbCxcbiAgLi4ucGx1Z2luUHJvcHMsXG4gIC4uLnJlbmRlclByb3BzLFxufTtcblxuY29uc3QgZGVmYXVsdEtleXMgPSBPYmplY3Qua2V5cyhkZWZhdWx0UHJvcHMpO1xuXG5leHBvcnQgY29uc3Qgc2V0RGVmYXVsdFByb3BzOiBUaXBweVsnc2V0RGVmYXVsdFByb3BzJ10gPSAocGFydGlhbFByb3BzKSA9PiB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChfX0RFVl9fKSB7XG4gICAgdmFsaWRhdGVQcm9wcyhwYXJ0aWFsUHJvcHMsIFtdKTtcbiAgfVxuXG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwYXJ0aWFsUHJvcHMpIGFzIEFycmF5PGtleW9mIERlZmF1bHRQcm9wcz47XG4gIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgKGRlZmF1bHRQcm9wcyBhcyBhbnkpW2tleV0gPSBwYXJ0aWFsUHJvcHNba2V5XTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5kZWRQYXNzZWRQcm9wcyhcbiAgcGFzc2VkUHJvcHM6IFBhcnRpYWw8UHJvcHM+ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IFBhcnRpYWw8UHJvcHM+IHtcbiAgY29uc3QgcGx1Z2lucyA9IHBhc3NlZFByb3BzLnBsdWdpbnMgfHwgW107XG4gIGNvbnN0IHBsdWdpblByb3BzID0gcGx1Z2lucy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KChhY2MsIHBsdWdpbikgPT4ge1xuICAgIGNvbnN0IHtuYW1lLCBkZWZhdWx0VmFsdWV9ID0gcGx1Z2luO1xuXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGFjY1tuYW1lXSA9XG4gICAgICAgIHBhc3NlZFByb3BzW25hbWVdICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHBhc3NlZFByb3BzW25hbWVdXG4gICAgICAgICAgOiAoZGVmYXVsdFByb3BzIGFzIGFueSlbbmFtZV0gPz8gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnBhc3NlZFByb3BzLFxuICAgIC4uLnBsdWdpblByb3BzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YUF0dHJpYnV0ZVByb3BzKFxuICByZWZlcmVuY2U6IFJlZmVyZW5jZUVsZW1lbnQsXG4gIHBsdWdpbnM6IFBsdWdpbltdXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnN0IHByb3BLZXlzID0gcGx1Z2luc1xuICAgID8gT2JqZWN0LmtleXMoZ2V0RXh0ZW5kZWRQYXNzZWRQcm9wcyh7Li4uZGVmYXVsdFByb3BzLCBwbHVnaW5zfSkpXG4gICAgOiBkZWZhdWx0S2V5cztcblxuICBjb25zdCBwcm9wcyA9IHByb3BLZXlzLnJlZHVjZShcbiAgICAoYWNjOiBQYXJ0aWFsPFByb3BzPiAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlQXNTdHJpbmcgPSAoXG4gICAgICAgIHJlZmVyZW5jZS5nZXRBdHRyaWJ1dGUoYGRhdGEtdGlwcHktJHtrZXl9YCkgfHwgJydcbiAgICAgICkudHJpbSgpO1xuXG4gICAgICBpZiAoIXZhbHVlQXNTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgaWYgKGtleSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWVBc1N0cmluZztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWNjW2tleV0gPSBKU09OLnBhcnNlKHZhbHVlQXNTdHJpbmcpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgYWNjW2tleV0gPSB2YWx1ZUFzU3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiBwcm9wcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlUHJvcHMoXG4gIHJlZmVyZW5jZTogUmVmZXJlbmNlRWxlbWVudCxcbiAgcHJvcHM6IFByb3BzXG4pOiBQcm9wcyB7XG4gIGNvbnN0IG91dCA9IHtcbiAgICAuLi5wcm9wcyxcbiAgICBjb250ZW50OiBpbnZva2VXaXRoQXJnc09yUmV0dXJuKHByb3BzLmNvbnRlbnQsIFtyZWZlcmVuY2VdKSxcbiAgICAuLi4ocHJvcHMuaWdub3JlQXR0cmlidXRlc1xuICAgICAgPyB7fVxuICAgICAgOiBnZXREYXRhQXR0cmlidXRlUHJvcHMocmVmZXJlbmNlLCBwcm9wcy5wbHVnaW5zKSksXG4gIH07XG5cbiAgb3V0LmFyaWEgPSB7XG4gICAgLi4uZGVmYXVsdFByb3BzLmFyaWEsXG4gICAgLi4ub3V0LmFyaWEsXG4gIH07XG5cbiAgb3V0LmFyaWEgPSB7XG4gICAgZXhwYW5kZWQ6XG4gICAgICBvdXQuYXJpYS5leHBhbmRlZCA9PT0gJ2F1dG8nID8gcHJvcHMuaW50ZXJhY3RpdmUgOiBvdXQuYXJpYS5leHBhbmRlZCxcbiAgICBjb250ZW50OlxuICAgICAgb3V0LmFyaWEuY29udGVudCA9PT0gJ2F1dG8nXG4gICAgICAgID8gcHJvcHMuaW50ZXJhY3RpdmVcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6ICdkZXNjcmliZWRieSdcbiAgICAgICAgOiBvdXQuYXJpYS5jb250ZW50LFxuICB9O1xuXG4gIHJldHVybiBvdXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BzKFxuICBwYXJ0aWFsUHJvcHM6IFBhcnRpYWw8UHJvcHM+ID0ge30sXG4gIHBsdWdpbnM6IFBsdWdpbltdID0gW11cbik6IHZvaWQge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFydGlhbFByb3BzKSBhcyBBcnJheTxrZXlvZiBQcm9wcz47XG4gIGtleXMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgIGNvbnN0IG5vblBsdWdpblByb3BzID0gcmVtb3ZlUHJvcGVydGllcyhcbiAgICAgIGRlZmF1bHRQcm9wcyxcbiAgICAgIE9iamVjdC5rZXlzKHBsdWdpblByb3BzKVxuICAgICk7XG5cbiAgICBsZXQgZGlkUGFzc1Vua25vd25Qcm9wID0gIWhhc093blByb3BlcnR5KG5vblBsdWdpblByb3BzLCBwcm9wKTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBwcm9wIGV4aXN0cyBpbiBgcGx1Z2luc2BcbiAgICBpZiAoZGlkUGFzc1Vua25vd25Qcm9wKSB7XG4gICAgICBkaWRQYXNzVW5rbm93blByb3AgPVxuICAgICAgICBwbHVnaW5zLmZpbHRlcigocGx1Z2luKSA9PiBwbHVnaW4ubmFtZSA9PT0gcHJvcCkubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHdhcm5XaGVuKFxuICAgICAgZGlkUGFzc1Vua25vd25Qcm9wLFxuICAgICAgW1xuICAgICAgICBgXFxgJHtwcm9wfVxcYGAsXG4gICAgICAgIFwiaXMgbm90IGEgdmFsaWQgcHJvcC4gWW91IG1heSBoYXZlIHNwZWxsZWQgaXQgaW5jb3JyZWN0bHksIG9yIGlmIGl0J3NcIixcbiAgICAgICAgJ2EgcGx1Z2luLCBmb3Jnb3QgdG8gcGFzcyBpdCBpbiBhbiBhcnJheSBhcyBwcm9wcy5wbHVnaW5zLicsXG4gICAgICAgICdcXG5cXG4nLFxuICAgICAgICAnQWxsIHByb3BzOiBodHRwczovL2F0b21pa3MuZ2l0aHViLmlvL3RpcHB5anMvdjYvYWxsLXByb3BzL1xcbicsXG4gICAgICAgICdQbHVnaW5zOiBodHRwczovL2F0b21pa3MuZ2l0aHViLmlvL3RpcHB5anMvdjYvcGx1Z2lucy8nLFxuICAgICAgXS5qb2luKCcgJylcbiAgICApO1xuICB9KTtcbn1cbiIsICJpbXBvcnQge1xuICBBUlJPV19DTEFTUyxcbiAgQkFDS0RST1BfQ0xBU1MsXG4gIEJPWF9DTEFTUyxcbiAgQ09OVEVOVF9DTEFTUyxcbiAgU1ZHX0FSUk9XX0NMQVNTLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge2RpdiwgaXNFbGVtZW50fSBmcm9tICcuL2RvbS11dGlscyc7XG5pbXBvcnQge0luc3RhbmNlLCBQb3BwZXJFbGVtZW50LCBQcm9wc30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1BvcHBlckNoaWxkcmVufSBmcm9tICcuL3R5cGVzLWludGVybmFsJztcbmltcG9ydCB7YXJyYXlGcm9tfSBmcm9tICcuL3V0aWxzJztcblxuLy8gRmlyZWZveCBleHRlbnNpb25zIGRvbid0IGFsbG93IC5pbm5lckhUTUwgPSBcIi4uLlwiIHByb3BlcnR5LiBUaGlzIHRyaWNrcyBpdC5cbmNvbnN0IGlubmVySFRNTCA9ICgpOiAnaW5uZXJIVE1MJyA9PiAnaW5uZXJIVE1MJztcblxuZnVuY3Rpb24gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwoZWxlbWVudDogRWxlbWVudCwgaHRtbDogc3RyaW5nKTogdm9pZCB7XG4gIGVsZW1lbnRbaW5uZXJIVE1MKCldID0gaHRtbDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQXJyb3dFbGVtZW50KHZhbHVlOiBQcm9wc1snYXJyb3cnXSk6IEhUTUxEaXZFbGVtZW50IHtcbiAgY29uc3QgYXJyb3cgPSBkaXYoKTtcblxuICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICBhcnJvdy5jbGFzc05hbWUgPSBBUlJPV19DTEFTUztcbiAgfSBlbHNlIHtcbiAgICBhcnJvdy5jbGFzc05hbWUgPSBTVkdfQVJST1dfQ0xBU1M7XG5cbiAgICBpZiAoaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAgYXJyb3cuYXBwZW5kQ2hpbGQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTChhcnJvdywgdmFsdWUgYXMgc3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJyb3c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb250ZW50KGNvbnRlbnQ6IEhUTUxEaXZFbGVtZW50LCBwcm9wczogUHJvcHMpOiB2b2lkIHtcbiAgaWYgKGlzRWxlbWVudChwcm9wcy5jb250ZW50KSkge1xuICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKGNvbnRlbnQsICcnKTtcbiAgICBjb250ZW50LmFwcGVuZENoaWxkKHByb3BzLmNvbnRlbnQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5jb250ZW50ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHByb3BzLmFsbG93SFRNTCkge1xuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwoY29udGVudCwgcHJvcHMuY29udGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQudGV4dENvbnRlbnQgPSBwcm9wcy5jb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hpbGRyZW4ocG9wcGVyOiBQb3BwZXJFbGVtZW50KTogUG9wcGVyQ2hpbGRyZW4ge1xuICBjb25zdCBib3ggPSBwb3BwZXIuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gIGNvbnN0IGJveENoaWxkcmVuID0gYXJyYXlGcm9tKGJveC5jaGlsZHJlbik7XG5cbiAgcmV0dXJuIHtcbiAgICBib3gsXG4gICAgY29udGVudDogYm94Q2hpbGRyZW4uZmluZCgobm9kZSkgPT4gbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoQ09OVEVOVF9DTEFTUykpLFxuICAgIGFycm93OiBib3hDaGlsZHJlbi5maW5kKFxuICAgICAgKG5vZGUpID0+XG4gICAgICAgIG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKEFSUk9XX0NMQVNTKSB8fFxuICAgICAgICBub2RlLmNsYXNzTGlzdC5jb250YWlucyhTVkdfQVJST1dfQ0xBU1MpXG4gICAgKSxcbiAgICBiYWNrZHJvcDogYm94Q2hpbGRyZW4uZmluZCgobm9kZSkgPT5cbiAgICAgIG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKEJBQ0tEUk9QX0NMQVNTKVxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIoXG4gIGluc3RhbmNlOiBJbnN0YW5jZVxuKToge1xuICBwb3BwZXI6IFBvcHBlckVsZW1lbnQ7XG4gIG9uVXBkYXRlPzogKHByZXZQcm9wczogUHJvcHMsIG5leHRQcm9wczogUHJvcHMpID0+IHZvaWQ7XG59IHtcbiAgY29uc3QgcG9wcGVyID0gZGl2KCk7XG5cbiAgY29uc3QgYm94ID0gZGl2KCk7XG4gIGJveC5jbGFzc05hbWUgPSBCT1hfQ0xBU1M7XG4gIGJveC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCAnaGlkZGVuJyk7XG4gIGJveC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG5cbiAgY29uc3QgY29udGVudCA9IGRpdigpO1xuICBjb250ZW50LmNsYXNzTmFtZSA9IENPTlRFTlRfQ0xBU1M7XG4gIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdkYXRhLXN0YXRlJywgJ2hpZGRlbicpO1xuXG4gIHNldENvbnRlbnQoY29udGVudCwgaW5zdGFuY2UucHJvcHMpO1xuXG4gIHBvcHBlci5hcHBlbmRDaGlsZChib3gpO1xuICBib3guYXBwZW5kQ2hpbGQoY29udGVudCk7XG5cbiAgb25VcGRhdGUoaW5zdGFuY2UucHJvcHMsIGluc3RhbmNlLnByb3BzKTtcblxuICBmdW5jdGlvbiBvblVwZGF0ZShwcmV2UHJvcHM6IFByb3BzLCBuZXh0UHJvcHM6IFByb3BzKTogdm9pZCB7XG4gICAgY29uc3Qge2JveCwgY29udGVudCwgYXJyb3d9ID0gZ2V0Q2hpbGRyZW4ocG9wcGVyKTtcblxuICAgIGlmIChuZXh0UHJvcHMudGhlbWUpIHtcbiAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnLCBuZXh0UHJvcHMudGhlbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3gucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRoZW1lJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBuZXh0UHJvcHMuYW5pbWF0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgYm94LnNldEF0dHJpYnV0ZSgnZGF0YS1hbmltYXRpb24nLCBuZXh0UHJvcHMuYW5pbWF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm94LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1hbmltYXRpb24nKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFByb3BzLmluZXJ0aWEpIHtcbiAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ2RhdGEtaW5lcnRpYScsICcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm94LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1pbmVydGlhJyk7XG4gICAgfVxuXG4gICAgYm94LnN0eWxlLm1heFdpZHRoID1cbiAgICAgIHR5cGVvZiBuZXh0UHJvcHMubWF4V2lkdGggPT09ICdudW1iZXInXG4gICAgICAgID8gYCR7bmV4dFByb3BzLm1heFdpZHRofXB4YFxuICAgICAgICA6IG5leHRQcm9wcy5tYXhXaWR0aDtcblxuICAgIGlmIChuZXh0UHJvcHMucm9sZSkge1xuICAgICAgYm94LnNldEF0dHJpYnV0ZSgncm9sZScsIG5leHRQcm9wcy5yb2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm94LnJlbW92ZUF0dHJpYnV0ZSgncm9sZScpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByZXZQcm9wcy5jb250ZW50ICE9PSBuZXh0UHJvcHMuY29udGVudCB8fFxuICAgICAgcHJldlByb3BzLmFsbG93SFRNTCAhPT0gbmV4dFByb3BzLmFsbG93SFRNTFxuICAgICkge1xuICAgICAgc2V0Q29udGVudChjb250ZW50LCBpbnN0YW5jZS5wcm9wcyk7XG4gICAgfVxuXG4gICAgaWYgKG5leHRQcm9wcy5hcnJvdykge1xuICAgICAgaWYgKCFhcnJvdykge1xuICAgICAgICBib3guYXBwZW5kQ2hpbGQoY3JlYXRlQXJyb3dFbGVtZW50KG5leHRQcm9wcy5hcnJvdykpO1xuICAgICAgfSBlbHNlIGlmIChwcmV2UHJvcHMuYXJyb3cgIT09IG5leHRQcm9wcy5hcnJvdykge1xuICAgICAgICBib3gucmVtb3ZlQ2hpbGQoYXJyb3cpO1xuICAgICAgICBib3guYXBwZW5kQ2hpbGQoY3JlYXRlQXJyb3dFbGVtZW50KG5leHRQcm9wcy5hcnJvdykpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYXJyb3cpIHtcbiAgICAgIGJveC5yZW1vdmVDaGlsZChhcnJvdyEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcG9wcGVyLFxuICAgIG9uVXBkYXRlLFxuICB9O1xufVxuXG4vLyBSdW50aW1lIGNoZWNrIHRvIGlkZW50aWZ5IGlmIHRoZSByZW5kZXIgZnVuY3Rpb24gaXMgdGhlIGRlZmF1bHQgb25lOyB0aGlzXG4vLyB3YXkgd2UgY2FuIGFwcGx5IGRlZmF1bHQgQ1NTIHRyYW5zaXRpb25zIGxvZ2ljIGFuZCBpdCBjYW4gYmUgdHJlZS1zaGFrZW4gYXdheVxucmVuZGVyLiQkdGlwcHkgPSB0cnVlO1xuIiwgImltcG9ydCB7Y3JlYXRlUG9wcGVyLCBTdHJpY3RNb2RpZmllcnMsIE1vZGlmaWVyfSBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5pbXBvcnQge2N1cnJlbnRJbnB1dH0gZnJvbSAnLi9iaW5kR2xvYmFsRXZlbnRMaXN0ZW5lcnMnO1xuaW1wb3J0IHtpc0lFMTF9IGZyb20gJy4vYnJvd3Nlcic7XG5pbXBvcnQge1RJUFBZX0RFRkFVTFRfQVBQRU5EX1RPLCBUT1VDSF9PUFRJT05TfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBhY3R1YWxDb250YWlucyxcbiAgZGl2LFxuICBnZXRPd25lckRvY3VtZW50LFxuICBpc0N1cnNvck91dHNpZGVJbnRlcmFjdGl2ZUJvcmRlcixcbiAgaXNNb3VzZUV2ZW50LFxuICBzZXRUcmFuc2l0aW9uRHVyYXRpb24sXG4gIHNldFZpc2liaWxpdHlTdGF0ZSxcbiAgdXBkYXRlVHJhbnNpdGlvbkVuZExpc3RlbmVyLFxufSBmcm9tICcuL2RvbS11dGlscyc7XG5pbXBvcnQge2RlZmF1bHRQcm9wcywgZXZhbHVhdGVQcm9wcywgZ2V0RXh0ZW5kZWRQYXNzZWRQcm9wc30gZnJvbSAnLi9wcm9wcyc7XG5pbXBvcnQge2dldENoaWxkcmVufSBmcm9tICcuL3RlbXBsYXRlJztcbmltcG9ydCB7XG4gIENvbnRlbnQsXG4gIEluc3RhbmNlLFxuICBMaWZlY3ljbGVIb29rcyxcbiAgUG9wcGVyRWxlbWVudCxcbiAgUHJvcHMsXG4gIFJlZmVyZW5jZUVsZW1lbnQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtMaXN0ZW5lck9iamVjdCwgUG9wcGVyVHJlZURhdGEsIFBvcHBlckNoaWxkcmVufSBmcm9tICcuL3R5cGVzLWludGVybmFsJztcbmltcG9ydCB7XG4gIGFycmF5RnJvbSxcbiAgZGVib3VuY2UsXG4gIGdldFZhbHVlQXRJbmRleE9yUmV0dXJuLFxuICBpbnZva2VXaXRoQXJnc09yUmV0dXJuLFxuICBub3JtYWxpemVUb0FycmF5LFxuICBwdXNoSWZVbmlxdWUsXG4gIHNwbGl0QnlTcGFjZXMsXG4gIHVuaXF1ZSxcbiAgcmVtb3ZlVW5kZWZpbmVkUHJvcHMsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtjcmVhdGVNZW1vcnlMZWFrV2FybmluZywgZXJyb3JXaGVuLCB3YXJuV2hlbn0gZnJvbSAnLi92YWxpZGF0aW9uJztcblxubGV0IGlkQ291bnRlciA9IDE7XG5sZXQgbW91c2VNb3ZlTGlzdGVuZXJzOiAoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkKVtdID0gW107XG5cbi8vIFVzZWQgYnkgYGhpZGVBbGwoKWBcbmV4cG9ydCBsZXQgbW91bnRlZEluc3RhbmNlczogSW5zdGFuY2VbXSA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVUaXBweShcbiAgcmVmZXJlbmNlOiBSZWZlcmVuY2VFbGVtZW50LFxuICBwYXNzZWRQcm9wczogUGFydGlhbDxQcm9wcz5cbik6IEluc3RhbmNlIHtcbiAgY29uc3QgcHJvcHMgPSBldmFsdWF0ZVByb3BzKHJlZmVyZW5jZSwge1xuICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAuLi5nZXRFeHRlbmRlZFBhc3NlZFByb3BzKHJlbW92ZVVuZGVmaW5lZFByb3BzKHBhc3NlZFByb3BzKSksXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyDwn5SSIFByaXZhdGUgbWVtYmVyc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgbGV0IHNob3dUaW1lb3V0OiBhbnk7XG4gIGxldCBoaWRlVGltZW91dDogYW55O1xuICBsZXQgc2NoZWR1bGVIaWRlQW5pbWF0aW9uRnJhbWU6IG51bWJlcjtcbiAgbGV0IGlzVmlzaWJsZUZyb21DbGljayA9IGZhbHNlO1xuICBsZXQgZGlkSGlkZUR1ZVRvRG9jdW1lbnRNb3VzZURvd24gPSBmYWxzZTtcbiAgbGV0IGRpZFRvdWNoTW92ZSA9IGZhbHNlO1xuICBsZXQgaWdub3JlT25GaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICBsZXQgbGFzdFRyaWdnZXJFdmVudDogRXZlbnQgfCB1bmRlZmluZWQ7XG4gIGxldCBjdXJyZW50VHJhbnNpdGlvbkVuZExpc3RlbmVyOiAoZXZlbnQ6IFRyYW5zaXRpb25FdmVudCkgPT4gdm9pZDtcbiAgbGV0IG9uRmlyc3RVcGRhdGU6ICgpID0+IHZvaWQ7XG4gIGxldCBsaXN0ZW5lcnM6IExpc3RlbmVyT2JqZWN0W10gPSBbXTtcbiAgbGV0IGRlYm91bmNlZE9uTW91c2VNb3ZlID0gZGVib3VuY2Uob25Nb3VzZU1vdmUsIHByb3BzLmludGVyYWN0aXZlRGVib3VuY2UpO1xuICBsZXQgY3VycmVudFRhcmdldDogRWxlbWVudDtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8g8J+UkSBQdWJsaWMgbWVtYmVyc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgY29uc3QgaWQgPSBpZENvdW50ZXIrKztcbiAgY29uc3QgcG9wcGVySW5zdGFuY2UgPSBudWxsO1xuICBjb25zdCBwbHVnaW5zID0gdW5pcXVlKHByb3BzLnBsdWdpbnMpO1xuXG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIC8vIElzIHRoZSBpbnN0YW5jZSBjdXJyZW50bHkgZW5hYmxlZD9cbiAgICBpc0VuYWJsZWQ6IHRydWUsXG4gICAgLy8gSXMgdGhlIHRpcHB5IGN1cnJlbnRseSBzaG93aW5nIGFuZCBub3QgdHJhbnNpdGlvbmluZyBvdXQ/XG4gICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAvLyBIYXMgdGhlIGluc3RhbmNlIGJlZW4gZGVzdHJveWVkP1xuICAgIGlzRGVzdHJveWVkOiBmYWxzZSxcbiAgICAvLyBJcyB0aGUgdGlwcHkgY3VycmVudGx5IG1vdW50ZWQgdG8gdGhlIERPTT9cbiAgICBpc01vdW50ZWQ6IGZhbHNlLFxuICAgIC8vIEhhcyB0aGUgdGlwcHkgZmluaXNoZWQgdHJhbnNpdGlvbmluZyBpbj9cbiAgICBpc1Nob3duOiBmYWxzZSxcbiAgfTtcblxuICBjb25zdCBpbnN0YW5jZTogSW5zdGFuY2UgPSB7XG4gICAgLy8gcHJvcGVydGllc1xuICAgIGlkLFxuICAgIHJlZmVyZW5jZSxcbiAgICBwb3BwZXI6IGRpdigpLFxuICAgIHBvcHBlckluc3RhbmNlLFxuICAgIHByb3BzLFxuICAgIHN0YXRlLFxuICAgIHBsdWdpbnMsXG4gICAgLy8gbWV0aG9kc1xuICAgIGNsZWFyRGVsYXlUaW1lb3V0cyxcbiAgICBzZXRQcm9wcyxcbiAgICBzZXRDb250ZW50LFxuICAgIHNob3csXG4gICAgaGlkZSxcbiAgICBoaWRlV2l0aEludGVyYWN0aXZpdHksXG4gICAgZW5hYmxlLFxuICAgIGRpc2FibGUsXG4gICAgdW5tb3VudCxcbiAgICBkZXN0cm95LFxuICB9O1xuXG4gIC8vIFRPRE86IEludmVzdGlnYXRlIHdoeSB0aGlzIGVhcmx5IHJldHVybiBjYXVzZXMgYSBURFogZXJyb3IgaW4gdGhlIHRlc3RzIOKAlFxuICAvLyBpdCBkb2Vzbid0IHNlZW0gdG8gaGFwcGVuIGluIHRoZSBicm93c2VyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIXByb3BzLnJlbmRlcikge1xuICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICBlcnJvcldoZW4odHJ1ZSwgJ3JlbmRlcigpIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiBzdXBwbGllZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSW5pdGlhbCBtdXRhdGlvbnNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGNvbnN0IHtwb3BwZXIsIG9uVXBkYXRlfSA9IHByb3BzLnJlbmRlcihpbnN0YW5jZSk7XG5cbiAgcG9wcGVyLnNldEF0dHJpYnV0ZSgnZGF0YS1fX05BTUVTUEFDRV9QUkVGSVhfXy1yb290JywgJycpO1xuICBwb3BwZXIuaWQgPSBgX19OQU1FU1BBQ0VfUFJFRklYX18tJHtpbnN0YW5jZS5pZH1gO1xuXG4gIGluc3RhbmNlLnBvcHBlciA9IHBvcHBlcjtcbiAgcmVmZXJlbmNlLl90aXBweSA9IGluc3RhbmNlO1xuICBwb3BwZXIuX3RpcHB5ID0gaW5zdGFuY2U7XG5cbiAgY29uc3QgcGx1Z2luc0hvb2tzID0gcGx1Z2lucy5tYXAoKHBsdWdpbikgPT4gcGx1Z2luLmZuKGluc3RhbmNlKSk7XG4gIGNvbnN0IGhhc0FyaWFFeHBhbmRlZCA9IHJlZmVyZW5jZS5oYXNBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKTtcblxuICBhZGRMaXN0ZW5lcnMoKTtcbiAgaGFuZGxlQXJpYUV4cGFuZGVkQXR0cmlidXRlKCk7XG4gIGhhbmRsZVN0eWxlcygpO1xuXG4gIGludm9rZUhvb2soJ29uQ3JlYXRlJywgW2luc3RhbmNlXSk7XG5cbiAgaWYgKHByb3BzLnNob3dPbkNyZWF0ZSkge1xuICAgIHNjaGVkdWxlU2hvdygpO1xuICB9XG5cbiAgLy8gUHJldmVudCBhIHRpcHB5IHdpdGggYSBkZWxheSBmcm9tIGhpZGluZyBpZiB0aGUgY3Vyc29yIGxlZnQgdGhlbiByZXR1cm5lZFxuICAvLyBiZWZvcmUgaXQgc3RhcnRlZCBoaWRpbmdcbiAgcG9wcGVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgaWYgKGluc3RhbmNlLnByb3BzLmludGVyYWN0aXZlICYmIGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSkge1xuICAgICAgaW5zdGFuY2UuY2xlYXJEZWxheVRpbWVvdXRzKCk7XG4gICAgfVxuICB9KTtcblxuICBwb3BwZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICBpZiAoXG4gICAgICBpbnN0YW5jZS5wcm9wcy5pbnRlcmFjdGl2ZSAmJlxuICAgICAgaW5zdGFuY2UucHJvcHMudHJpZ2dlci5pbmRleE9mKCdtb3VzZWVudGVyJykgPj0gMFxuICAgICkge1xuICAgICAgZ2V0RG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBkZWJvdW5jZWRPbk1vdXNlTW92ZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIPCflJIgUHJpdmF0ZSBtZXRob2RzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBmdW5jdGlvbiBnZXROb3JtYWxpemVkVG91Y2hTZXR0aW5ncygpOiBbc3RyaW5nIHwgYm9vbGVhbiwgbnVtYmVyXSB7XG4gICAgY29uc3Qge3RvdWNofSA9IGluc3RhbmNlLnByb3BzO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRvdWNoKSA/IHRvdWNoIDogW3RvdWNoLCAwXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldElzQ3VzdG9tVG91Y2hCZWhhdmlvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0Tm9ybWFsaXplZFRvdWNoU2V0dGluZ3MoKVswXSA9PT0gJ2hvbGQnO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKTogYm9vbGVhbiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiAhIWluc3RhbmNlLnByb3BzLnJlbmRlcj8uJCR0aXBweTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRUYXJnZXQoKTogRWxlbWVudCB7XG4gICAgcmV0dXJuIGN1cnJlbnRUYXJnZXQgfHwgcmVmZXJlbmNlO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQoKTogRG9jdW1lbnQge1xuICAgIGNvbnN0IHBhcmVudCA9IGdldEN1cnJlbnRUYXJnZXQoKS5wYXJlbnROb2RlIGFzIEVsZW1lbnQ7XG4gICAgcmV0dXJuIHBhcmVudCA/IGdldE93bmVyRG9jdW1lbnQocGFyZW50KSA6IGRvY3VtZW50O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RGVmYXVsdFRlbXBsYXRlQ2hpbGRyZW4oKTogUG9wcGVyQ2hpbGRyZW4ge1xuICAgIHJldHVybiBnZXRDaGlsZHJlbihwb3BwZXIpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RGVsYXkoaXNTaG93OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICAvLyBGb3IgdG91Y2ggb3Iga2V5Ym9hcmQgaW5wdXQsIGZvcmNlIGAwYCBkZWxheSBmb3IgVVggcmVhc29uc1xuICAgIC8vIEFsc28gaWYgdGhlIGluc3RhbmNlIGlzIG1vdW50ZWQgYnV0IG5vdCB2aXNpYmxlICh0cmFuc2l0aW9uaW5nIG91dCksXG4gICAgLy8gaWdub3JlIGRlbGF5XG4gICAgaWYgKFxuICAgICAgKGluc3RhbmNlLnN0YXRlLmlzTW91bnRlZCAmJiAhaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlKSB8fFxuICAgICAgY3VycmVudElucHV0LmlzVG91Y2ggfHxcbiAgICAgIChsYXN0VHJpZ2dlckV2ZW50ICYmIGxhc3RUcmlnZ2VyRXZlbnQudHlwZSA9PT0gJ2ZvY3VzJylcbiAgICApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRWYWx1ZUF0SW5kZXhPclJldHVybihcbiAgICAgIGluc3RhbmNlLnByb3BzLmRlbGF5LFxuICAgICAgaXNTaG93ID8gMCA6IDEsXG4gICAgICBkZWZhdWx0UHJvcHMuZGVsYXlcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlU3R5bGVzKGZyb21IaWRlID0gZmFsc2UpOiB2b2lkIHtcbiAgICBwb3BwZXIuc3R5bGUucG9pbnRlckV2ZW50cyA9XG4gICAgICBpbnN0YW5jZS5wcm9wcy5pbnRlcmFjdGl2ZSAmJiAhZnJvbUhpZGUgPyAnJyA6ICdub25lJztcbiAgICBwb3BwZXIuc3R5bGUuekluZGV4ID0gYCR7aW5zdGFuY2UucHJvcHMuekluZGV4fWA7XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VIb29rKFxuICAgIGhvb2s6IGtleW9mIExpZmVjeWNsZUhvb2tzLFxuICAgIGFyZ3M6IFtJbnN0YW5jZSwgYW55P10sXG4gICAgc2hvdWxkSW52b2tlUHJvcHNIb29rID0gdHJ1ZVxuICApOiB2b2lkIHtcbiAgICBwbHVnaW5zSG9va3MuZm9yRWFjaCgocGx1Z2luSG9va3MpID0+IHtcbiAgICAgIGlmIChwbHVnaW5Ib29rc1tob29rXSkge1xuICAgICAgICBwbHVnaW5Ib29rc1tob29rXSEoLi4uYXJncyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2hvdWxkSW52b2tlUHJvcHNIb29rKSB7XG4gICAgICBpbnN0YW5jZS5wcm9wc1tob29rXSguLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVBcmlhQ29udGVudEF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB7YXJpYX0gPSBpbnN0YW5jZS5wcm9wcztcblxuICAgIGlmICghYXJpYS5jb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXR0ciA9IGBhcmlhLSR7YXJpYS5jb250ZW50fWA7XG4gICAgY29uc3QgaWQgPSBwb3BwZXIuaWQ7XG4gICAgY29uc3Qgbm9kZXMgPSBub3JtYWxpemVUb0FycmF5KGluc3RhbmNlLnByb3BzLnRyaWdnZXJUYXJnZXQgfHwgcmVmZXJlbmNlKTtcblxuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IG5vZGUuZ2V0QXR0cmlidXRlKGF0dHIpO1xuXG4gICAgICBpZiAoaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIGN1cnJlbnRWYWx1ZSA/IGAke2N1cnJlbnRWYWx1ZX0gJHtpZH1gIDogaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS5yZXBsYWNlKGlkLCAnJykudHJpbSgpO1xuXG4gICAgICAgIGlmIChuZXh0VmFsdWUpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCBuZXh0VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVBcmlhRXhwYW5kZWRBdHRyaWJ1dGUoKTogdm9pZCB7XG4gICAgaWYgKGhhc0FyaWFFeHBhbmRlZCB8fCAhaW5zdGFuY2UucHJvcHMuYXJpYS5leHBhbmRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVzID0gbm9ybWFsaXplVG9BcnJheShpbnN0YW5jZS5wcm9wcy50cmlnZ2VyVGFyZ2V0IHx8IHJlZmVyZW5jZSk7XG5cbiAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBpZiAoaW5zdGFuY2UucHJvcHMuaW50ZXJhY3RpdmUpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2FyaWEtZXhwYW5kZWQnLFxuICAgICAgICAgIGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSAmJiBub2RlID09PSBnZXRDdXJyZW50VGFyZ2V0KClcbiAgICAgICAgICAgID8gJ3RydWUnXG4gICAgICAgICAgICA6ICdmYWxzZSdcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBjbGVhbnVwSW50ZXJhY3RpdmVNb3VzZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBnZXREb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGRlYm91bmNlZE9uTW91c2VNb3ZlKTtcbiAgICBtb3VzZU1vdmVMaXN0ZW5lcnMgPSBtb3VzZU1vdmVMaXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lciAhPT0gZGVib3VuY2VkT25Nb3VzZU1vdmVcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gb25Eb2N1bWVudFByZXNzKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IHZvaWQge1xuICAgIC8vIE1vdmVkIGZpbmdlciB0byBzY3JvbGwgaW5zdGVhZCBvZiBhbiBpbnRlbnRpb25hbCB0YXAgb3V0c2lkZVxuICAgIGlmIChjdXJyZW50SW5wdXQuaXNUb3VjaCkge1xuICAgICAgaWYgKGRpZFRvdWNoTW92ZSB8fCBldmVudC50eXBlID09PSAnbW91c2Vkb3duJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsVGFyZ2V0ID1cbiAgICAgIChldmVudC5jb21wb3NlZFBhdGggJiYgZXZlbnQuY29tcG9zZWRQYXRoKClbMF0pIHx8IGV2ZW50LnRhcmdldDtcblxuICAgIC8vIENsaWNrZWQgb24gaW50ZXJhY3RpdmUgcG9wcGVyXG4gICAgaWYgKFxuICAgICAgaW5zdGFuY2UucHJvcHMuaW50ZXJhY3RpdmUgJiZcbiAgICAgIGFjdHVhbENvbnRhaW5zKHBvcHBlciwgYWN0dWFsVGFyZ2V0IGFzIEVsZW1lbnQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2xpY2tlZCBvbiB0aGUgZXZlbnQgbGlzdGVuZXJzIHRhcmdldFxuICAgIGlmIChcbiAgICAgIG5vcm1hbGl6ZVRvQXJyYXkoaW5zdGFuY2UucHJvcHMudHJpZ2dlclRhcmdldCB8fCByZWZlcmVuY2UpLnNvbWUoKGVsKSA9PlxuICAgICAgICBhY3R1YWxDb250YWlucyhlbCwgYWN0dWFsVGFyZ2V0IGFzIEVsZW1lbnQpXG4gICAgICApXG4gICAgKSB7XG4gICAgICBpZiAoY3VycmVudElucHV0LmlzVG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSAmJlxuICAgICAgICBpbnN0YW5jZS5wcm9wcy50cmlnZ2VyLmluZGV4T2YoJ2NsaWNrJykgPj0gMFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW52b2tlSG9vaygnb25DbGlja091dHNpZGUnLCBbaW5zdGFuY2UsIGV2ZW50XSk7XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbmNlLnByb3BzLmhpZGVPbkNsaWNrID09PSB0cnVlKSB7XG4gICAgICBpbnN0YW5jZS5jbGVhckRlbGF5VGltZW91dHMoKTtcbiAgICAgIGluc3RhbmNlLmhpZGUoKTtcblxuICAgICAgLy8gYG1vdXNlZG93bmAgZXZlbnQgaXMgZmlyZWQgcmlnaHQgYmVmb3JlIGBmb2N1c2AgaWYgcHJlc3NpbmcgdGhlXG4gICAgICAvLyBjdXJyZW50VGFyZ2V0LiBUaGlzIGxldHMgYSB0aXBweSB3aXRoIGBmb2N1c2AgdHJpZ2dlciBrbm93IHRoYXQgaXRcbiAgICAgIC8vIHNob3VsZCBub3Qgc2hvd1xuICAgICAgZGlkSGlkZUR1ZVRvRG9jdW1lbnRNb3VzZURvd24gPSB0cnVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGRpZEhpZGVEdWVUb0RvY3VtZW50TW91c2VEb3duID0gZmFsc2U7XG4gICAgICB9KTtcblxuICAgICAgLy8gVGhlIGxpc3RlbmVyIGdldHMgYWRkZWQgaW4gYHNjaGVkdWxlU2hvdygpYCwgYnV0IHRoaXMgbWF5IGJlIGhpZGluZyBpdFxuICAgICAgLy8gYmVmb3JlIGl0IHNob3dzLCBhbmQgaGlkZSgpJ3MgZWFybHkgYmFpbC1vdXQgYmVoYXZpb3IgY2FuIHByZXZlbnQgaXRcbiAgICAgIC8vIGZyb20gYmVpbmcgY2xlYW5lZCB1cFxuICAgICAgaWYgKCFpbnN0YW5jZS5zdGF0ZS5pc01vdW50ZWQpIHtcbiAgICAgICAgcmVtb3ZlRG9jdW1lbnRQcmVzcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKCk6IHZvaWQge1xuICAgIGRpZFRvdWNoTW92ZSA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBvblRvdWNoU3RhcnQoKTogdm9pZCB7XG4gICAgZGlkVG91Y2hNb3ZlID0gZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiBhZGREb2N1bWVudFByZXNzKCk6IHZvaWQge1xuICAgIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KCk7XG4gICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIG9uRG9jdW1lbnRQcmVzcywgdHJ1ZSk7XG4gICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgb25Eb2N1bWVudFByZXNzLCBUT1VDSF9PUFRJT05TKTtcbiAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCwgVE9VQ0hfT1BUSU9OUyk7XG4gICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBUT1VDSF9PUFRJT05TKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZURvY3VtZW50UHJlc3MoKTogdm9pZCB7XG4gICAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnQoKTtcbiAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Eb2N1bWVudFByZXNzLCB0cnVlKTtcbiAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBvbkRvY3VtZW50UHJlc3MsIFRPVUNIX09QVElPTlMpO1xuICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBUT1VDSF9PUFRJT05TKTtcbiAgICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIFRPVUNIX09QVElPTlMpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25UcmFuc2l0aW9uZWRPdXQoZHVyYXRpb246IG51bWJlciwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBvblRyYW5zaXRpb25FbmQoZHVyYXRpb24sICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSAmJlxuICAgICAgICBwb3BwZXIucGFyZW50Tm9kZSAmJlxuICAgICAgICBwb3BwZXIucGFyZW50Tm9kZS5jb250YWlucyhwb3BwZXIpXG4gICAgICApIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uVHJhbnNpdGlvbmVkSW4oZHVyYXRpb246IG51bWJlciwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBvblRyYW5zaXRpb25FbmQoZHVyYXRpb24sIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uVHJhbnNpdGlvbkVuZChkdXJhdGlvbjogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IGJveCA9IGdldERlZmF1bHRUZW1wbGF0ZUNoaWxkcmVuKCkuYm94O1xuXG4gICAgZnVuY3Rpb24gbGlzdGVuZXIoZXZlbnQ6IFRyYW5zaXRpb25FdmVudCk6IHZvaWQge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gYm94KSB7XG4gICAgICAgIHVwZGF0ZVRyYW5zaXRpb25FbmRMaXN0ZW5lcihib3gsICdyZW1vdmUnLCBsaXN0ZW5lcik7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFrZSBjYWxsYmFjayBzeW5jaHJvbm91cyBpZiBkdXJhdGlvbiBpcyAwXG4gICAgLy8gYHRyYW5zaXRpb25lbmRgIHdvbid0IGZpcmUgb3RoZXJ3aXNlXG4gICAgaWYgKGR1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUcmFuc2l0aW9uRW5kTGlzdGVuZXIoYm94LCAncmVtb3ZlJywgY3VycmVudFRyYW5zaXRpb25FbmRMaXN0ZW5lcik7XG4gICAgdXBkYXRlVHJhbnNpdGlvbkVuZExpc3RlbmVyKGJveCwgJ2FkZCcsIGxpc3RlbmVyKTtcblxuICAgIGN1cnJlbnRUcmFuc2l0aW9uRW5kTGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uKFxuICAgIGV2ZW50VHlwZTogc3RyaW5nLFxuICAgIGhhbmRsZXI6IEV2ZW50TGlzdGVuZXIsXG4gICAgb3B0aW9uczogYm9vbGVhbiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gZmFsc2VcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgbm9kZXMgPSBub3JtYWxpemVUb0FycmF5KGluc3RhbmNlLnByb3BzLnRyaWdnZXJUYXJnZXQgfHwgcmVmZXJlbmNlKTtcbiAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgICAgIGxpc3RlbmVycy5wdXNoKHtub2RlLCBldmVudFR5cGUsIGhhbmRsZXIsIG9wdGlvbnN9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAoZ2V0SXNDdXN0b21Ub3VjaEJlaGF2aW9yKCkpIHtcbiAgICAgIG9uKCd0b3VjaHN0YXJ0Jywgb25UcmlnZ2VyLCB7cGFzc2l2ZTogdHJ1ZX0pO1xuICAgICAgb24oJ3RvdWNoZW5kJywgb25Nb3VzZUxlYXZlIGFzIEV2ZW50TGlzdGVuZXIsIHtwYXNzaXZlOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgc3BsaXRCeVNwYWNlcyhpbnN0YW5jZS5wcm9wcy50cmlnZ2VyKS5mb3JFYWNoKChldmVudFR5cGUpID0+IHtcbiAgICAgIGlmIChldmVudFR5cGUgPT09ICdtYW51YWwnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgb24oZXZlbnRUeXBlLCBvblRyaWdnZXIpO1xuXG4gICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICBjYXNlICdtb3VzZWVudGVyJzpcbiAgICAgICAgICBvbignbW91c2VsZWF2ZScsIG9uTW91c2VMZWF2ZSBhcyBFdmVudExpc3RlbmVyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZm9jdXMnOlxuICAgICAgICAgIG9uKGlzSUUxMSA/ICdmb2N1c291dCcgOiAnYmx1cicsIG9uQmx1ck9yRm9jdXNPdXQgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ZvY3VzaW4nOlxuICAgICAgICAgIG9uKCdmb2N1c291dCcsIG9uQmx1ck9yRm9jdXNPdXQgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goKHtub2RlLCBldmVudFR5cGUsIGhhbmRsZXIsIG9wdGlvbnN9OiBMaXN0ZW5lck9iamVjdCkgPT4ge1xuICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgfSk7XG4gICAgbGlzdGVuZXJzID0gW107XG4gIH1cblxuICBmdW5jdGlvbiBvblRyaWdnZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IHNob3VsZFNjaGVkdWxlQ2xpY2tIaWRlID0gZmFsc2U7XG5cbiAgICBpZiAoXG4gICAgICAhaW5zdGFuY2Uuc3RhdGUuaXNFbmFibGVkIHx8XG4gICAgICBpc0V2ZW50TGlzdGVuZXJTdG9wcGVkKGV2ZW50KSB8fFxuICAgICAgZGlkSGlkZUR1ZVRvRG9jdW1lbnRNb3VzZURvd25cbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB3YXNGb2N1c2VkID0gbGFzdFRyaWdnZXJFdmVudD8udHlwZSA9PT0gJ2ZvY3VzJztcblxuICAgIGxhc3RUcmlnZ2VyRXZlbnQgPSBldmVudDtcbiAgICBjdXJyZW50VGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBFbGVtZW50O1xuXG4gICAgaGFuZGxlQXJpYUV4cGFuZGVkQXR0cmlidXRlKCk7XG5cbiAgICBpZiAoIWluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSAmJiBpc01vdXNlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAvLyBJZiBzY3JvbGxpbmcsIGBtb3VzZWVudGVyYCBldmVudHMgY2FuIGJlIGZpcmVkIGlmIHRoZSBjdXJzb3IgbGFuZHNcbiAgICAgIC8vIG92ZXIgYSBuZXcgdGFyZ2V0LCBidXQgYG1vdXNlbW92ZWAgZXZlbnRzIGRvbid0IGdldCBmaXJlZC4gVGhpc1xuICAgICAgLy8gY2F1c2VzIGludGVyYWN0aXZlIHRvb2x0aXBzIHRvIGdldCBzdHVjayBvcGVuIHVudGlsIHRoZSBjdXJzb3IgaXNcbiAgICAgIC8vIG1vdmVkXG4gICAgICBtb3VzZU1vdmVMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKGV2ZW50KSk7XG4gICAgfVxuXG4gICAgLy8gVG9nZ2xlIHNob3cvaGlkZSB3aGVuIGNsaWNraW5nIGNsaWNrLXRyaWdnZXJlZCB0b29sdGlwc1xuICAgIGlmIChcbiAgICAgIGV2ZW50LnR5cGUgPT09ICdjbGljaycgJiZcbiAgICAgIChpbnN0YW5jZS5wcm9wcy50cmlnZ2VyLmluZGV4T2YoJ21vdXNlZW50ZXInKSA8IDAgfHxcbiAgICAgICAgaXNWaXNpYmxlRnJvbUNsaWNrKSAmJlxuICAgICAgaW5zdGFuY2UucHJvcHMuaGlkZU9uQ2xpY2sgIT09IGZhbHNlICYmXG4gICAgICBpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGVcbiAgICApIHtcbiAgICAgIHNob3VsZFNjaGVkdWxlQ2xpY2tIaWRlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZWR1bGVTaG93KGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgaXNWaXNpYmxlRnJvbUNsaWNrID0gIXNob3VsZFNjaGVkdWxlQ2xpY2tIaWRlO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRTY2hlZHVsZUNsaWNrSGlkZSAmJiAhd2FzRm9jdXNlZCkge1xuICAgICAgc2NoZWR1bGVIaWRlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlO1xuICAgIGNvbnN0IGlzQ3Vyc29yT3ZlclJlZmVyZW5jZU9yUG9wcGVyID1cbiAgICAgIGdldEN1cnJlbnRUYXJnZXQoKS5jb250YWlucyh0YXJnZXQpIHx8IHBvcHBlci5jb250YWlucyh0YXJnZXQpO1xuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZW1vdmUnICYmIGlzQ3Vyc29yT3ZlclJlZmVyZW5jZU9yUG9wcGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9wcGVyVHJlZURhdGEgPSBnZXROZXN0ZWRQb3BwZXJUcmVlKClcbiAgICAgIC5jb25jYXQocG9wcGVyKVxuICAgICAgLm1hcCgocG9wcGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gcG9wcGVyLl90aXBweSE7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gaW5zdGFuY2UucG9wcGVySW5zdGFuY2U/LnN0YXRlO1xuXG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3BwZXJSZWN0OiBwb3BwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgICAgICBwb3BwZXJTdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBQb3BwZXJUcmVlRGF0YVtdO1xuXG4gICAgaWYgKGlzQ3Vyc29yT3V0c2lkZUludGVyYWN0aXZlQm9yZGVyKHBvcHBlclRyZWVEYXRhLCBldmVudCkpIHtcbiAgICAgIGNsZWFudXBJbnRlcmFjdGl2ZU1vdXNlTGlzdGVuZXJzKCk7XG4gICAgICBzY2hlZHVsZUhpZGUoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTW91c2VMZWF2ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNob3VsZEJhaWwgPVxuICAgICAgaXNFdmVudExpc3RlbmVyU3RvcHBlZChldmVudCkgfHxcbiAgICAgIChpbnN0YW5jZS5wcm9wcy50cmlnZ2VyLmluZGV4T2YoJ2NsaWNrJykgPj0gMCAmJiBpc1Zpc2libGVGcm9tQ2xpY2spO1xuXG4gICAgaWYgKHNob3VsZEJhaWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UucHJvcHMuaW50ZXJhY3RpdmUpIHtcbiAgICAgIGluc3RhbmNlLmhpZGVXaXRoSW50ZXJhY3Rpdml0eShldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2NoZWR1bGVIaWRlKGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uQmx1ck9yRm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBpbnN0YW5jZS5wcm9wcy50cmlnZ2VyLmluZGV4T2YoJ2ZvY3VzaW4nKSA8IDAgJiZcbiAgICAgIGV2ZW50LnRhcmdldCAhPT0gZ2V0Q3VycmVudFRhcmdldCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgZm9jdXMgd2FzIG1vdmVkIHRvIHdpdGhpbiB0aGUgcG9wcGVyXG4gICAgaWYgKFxuICAgICAgaW5zdGFuY2UucHJvcHMuaW50ZXJhY3RpdmUgJiZcbiAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXQgJiZcbiAgICAgIHBvcHBlci5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEVsZW1lbnQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2NoZWR1bGVIaWRlKGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzRXZlbnRMaXN0ZW5lclN0b3BwZWQoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGN1cnJlbnRJbnB1dC5pc1RvdWNoXG4gICAgICA/IGdldElzQ3VzdG9tVG91Y2hCZWhhdmlvcigpICE9PSBldmVudC50eXBlLmluZGV4T2YoJ3RvdWNoJykgPj0gMFxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlckluc3RhbmNlKCk6IHZvaWQge1xuICAgIGRlc3Ryb3lQb3BwZXJJbnN0YW5jZSgpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9wcGVyT3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIG9mZnNldCxcbiAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3QsXG4gICAgICBtb3ZlVHJhbnNpdGlvbixcbiAgICB9ID0gaW5zdGFuY2UucHJvcHM7XG5cbiAgICBjb25zdCBhcnJvdyA9IGdldElzRGVmYXVsdFJlbmRlckZuKCkgPyBnZXRDaGlsZHJlbihwb3BwZXIpLmFycm93IDogbnVsbDtcblxuICAgIGNvbnN0IGNvbXB1dGVkUmVmZXJlbmNlID0gZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdFxuICAgICAgPyB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiBnZXRSZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgICAgICAgIGNvbnRleHRFbGVtZW50OlxuICAgICAgICAgICAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdC5jb250ZXh0RWxlbWVudCB8fCBnZXRDdXJyZW50VGFyZ2V0KCksXG4gICAgICAgIH1cbiAgICAgIDogcmVmZXJlbmNlO1xuXG4gICAgY29uc3QgdGlwcHlNb2RpZmllcjogTW9kaWZpZXI8JyQkdGlwcHknLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSB7XG4gICAgICBuYW1lOiAnJCR0aXBweScsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgcGhhc2U6ICdiZWZvcmVXcml0ZScsXG4gICAgICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ10sXG4gICAgICBmbih7c3RhdGV9KSB7XG4gICAgICAgIGlmIChnZXRJc0RlZmF1bHRSZW5kZXJGbigpKSB7XG4gICAgICAgICAgY29uc3Qge2JveH0gPSBnZXREZWZhdWx0VGVtcGxhdGVDaGlsZHJlbigpO1xuXG4gICAgICAgICAgWydwbGFjZW1lbnQnLCAncmVmZXJlbmNlLWhpZGRlbicsICdlc2NhcGVkJ10uZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICdwbGFjZW1lbnQnKSB7XG4gICAgICAgICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhY2VtZW50Jywgc3RhdGUucGxhY2VtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlcltgZGF0YS1wb3BwZXItJHthdHRyfWBdKSB7XG4gICAgICAgICAgICAgICAgYm94LnNldEF0dHJpYnV0ZShgZGF0YS0ke2F0dHJ9YCwgJycpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJveC5yZW1vdmVBdHRyaWJ1dGUoYGRhdGEtJHthdHRyfWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IHt9O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0eXBlIFRpcHB5TW9kaWZpZXIgPSBNb2RpZmllcjwnJCR0aXBweScsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICB0eXBlIEV4dGVuZGVkTW9kaWZpZXJzID0gU3RyaWN0TW9kaWZpZXJzIHwgUGFydGlhbDxUaXBweU1vZGlmaWVyPjtcblxuICAgIGNvbnN0IG1vZGlmaWVyczogQXJyYXk8RXh0ZW5kZWRNb2RpZmllcnM+ID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgdG9wOiAyLFxuICAgICAgICAgICAgYm90dG9tOiAyLFxuICAgICAgICAgICAgbGVmdDogNSxcbiAgICAgICAgICAgIHJpZ2h0OiA1LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZmxpcCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBwYWRkaW5nOiA1LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgYWRhcHRpdmU6ICFtb3ZlVHJhbnNpdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aXBweU1vZGlmaWVyLFxuICAgIF07XG5cbiAgICBpZiAoZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKSAmJiBhcnJvdykge1xuICAgICAgbW9kaWZpZXJzLnB1c2goe1xuICAgICAgICBuYW1lOiAnYXJyb3cnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZWxlbWVudDogYXJyb3csXG4gICAgICAgICAgcGFkZGluZzogMyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG1vZGlmaWVycy5wdXNoKC4uLihwb3BwZXJPcHRpb25zPy5tb2RpZmllcnMgfHwgW10pKTtcblxuICAgIGluc3RhbmNlLnBvcHBlckluc3RhbmNlID0gY3JlYXRlUG9wcGVyPEV4dGVuZGVkTW9kaWZpZXJzPihcbiAgICAgIGNvbXB1dGVkUmVmZXJlbmNlLFxuICAgICAgcG9wcGVyLFxuICAgICAge1xuICAgICAgICAuLi5wb3BwZXJPcHRpb25zLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG9uRmlyc3RVcGRhdGUsXG4gICAgICAgIG1vZGlmaWVycyxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveVBvcHBlckluc3RhbmNlKCk6IHZvaWQge1xuICAgIGlmIChpbnN0YW5jZS5wb3BwZXJJbnN0YW5jZSkge1xuICAgICAgaW5zdGFuY2UucG9wcGVySW5zdGFuY2UuZGVzdHJveSgpO1xuICAgICAgaW5zdGFuY2UucG9wcGVySW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHthcHBlbmRUb30gPSBpbnN0YW5jZS5wcm9wcztcblxuICAgIGxldCBwYXJlbnROb2RlOiBhbnk7XG5cbiAgICAvLyBCeSBkZWZhdWx0LCB3ZSdsbCBhcHBlbmQgdGhlIHBvcHBlciB0byB0aGUgdHJpZ2dlclRhcmdldHMncyBwYXJlbnROb2RlIHNvXG4gICAgLy8gaXQncyBkaXJlY3RseSBhZnRlciB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgc28gdGhlIGVsZW1lbnRzIGluc2lkZSB0aGVcbiAgICAvLyB0aXBweSBjYW4gYmUgdGFiYmVkIHRvXG4gICAgLy8gSWYgdGhlcmUgYXJlIGNsaXBwaW5nIGlzc3VlcywgdGhlIHVzZXIgY2FuIHNwZWNpZnkgYSBkaWZmZXJlbnQgYXBwZW5kVG9cbiAgICAvLyBhbmQgZW5zdXJlIGZvY3VzIG1hbmFnZW1lbnQgaXMgaGFuZGxlZCBjb3JyZWN0bHkgbWFudWFsbHlcbiAgICBjb25zdCBub2RlID0gZ2V0Q3VycmVudFRhcmdldCgpO1xuXG4gICAgaWYgKFxuICAgICAgKGluc3RhbmNlLnByb3BzLmludGVyYWN0aXZlICYmIGFwcGVuZFRvID09PSBUSVBQWV9ERUZBVUxUX0FQUEVORF9UTykgfHxcbiAgICAgIGFwcGVuZFRvID09PSAncGFyZW50J1xuICAgICkge1xuICAgICAgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyZW50Tm9kZSA9IGludm9rZVdpdGhBcmdzT3JSZXR1cm4oYXBwZW5kVG8sIFtub2RlXSk7XG4gICAgfVxuXG4gICAgLy8gVGhlIHBvcHBlciBlbGVtZW50IG5lZWRzIHRvIGV4aXN0IG9uIHRoZSBET00gYmVmb3JlIGl0cyBwb3NpdGlvbiBjYW4gYmVcbiAgICAvLyB1cGRhdGVkIGFzIFBvcHBlciBuZWVkcyB0byByZWFkIGl0cyBkaW1lbnNpb25zXG4gICAgaWYgKCFwYXJlbnROb2RlLmNvbnRhaW5zKHBvcHBlcikpIHtcbiAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQocG9wcGVyKTtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5zdGF0ZS5pc01vdW50ZWQgPSB0cnVlO1xuXG4gICAgY3JlYXRlUG9wcGVySW5zdGFuY2UoKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKF9fREVWX18pIHtcbiAgICAgIC8vIEFjY2Vzc2liaWxpdHkgY2hlY2tcbiAgICAgIHdhcm5XaGVuKFxuICAgICAgICBpbnN0YW5jZS5wcm9wcy5pbnRlcmFjdGl2ZSAmJlxuICAgICAgICAgIGFwcGVuZFRvID09PSBkZWZhdWx0UHJvcHMuYXBwZW5kVG8gJiZcbiAgICAgICAgICBub2RlLm5leHRFbGVtZW50U2libGluZyAhPT0gcG9wcGVyLFxuICAgICAgICBbXG4gICAgICAgICAgJ0ludGVyYWN0aXZlIHRpcHB5IGVsZW1lbnQgbWF5IG5vdCBiZSBhY2Nlc3NpYmxlIHZpYSBrZXlib2FyZCcsXG4gICAgICAgICAgJ25hdmlnYXRpb24gYmVjYXVzZSBpdCBpcyBub3QgZGlyZWN0bHkgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBlbGVtZW50JyxcbiAgICAgICAgICAnaW4gdGhlIERPTSBzb3VyY2Ugb3JkZXIuJyxcbiAgICAgICAgICAnXFxuXFxuJyxcbiAgICAgICAgICAnVXNpbmcgYSB3cmFwcGVyIDxkaXY+IG9yIDxzcGFuPiB0YWcgYXJvdW5kIHRoZSByZWZlcmVuY2UgZWxlbWVudCcsXG4gICAgICAgICAgJ3NvbHZlcyB0aGlzIGJ5IGNyZWF0aW5nIGEgbmV3IHBhcmVudE5vZGUgY29udGV4dC4nLFxuICAgICAgICAgICdcXG5cXG4nLFxuICAgICAgICAgICdTcGVjaWZ5aW5nIGBhcHBlbmRUbzogZG9jdW1lbnQuYm9keWAgc2lsZW5jZXMgdGhpcyB3YXJuaW5nLCBidXQgaXQnLFxuICAgICAgICAgICdhc3N1bWVzIHlvdSBhcmUgdXNpbmcgYSBmb2N1cyBtYW5hZ2VtZW50IHNvbHV0aW9uIHRvIGhhbmRsZScsXG4gICAgICAgICAgJ2tleWJvYXJkIG5hdmlnYXRpb24uJyxcbiAgICAgICAgICAnXFxuXFxuJyxcbiAgICAgICAgICAnU2VlOiBodHRwczovL2F0b21pa3MuZ2l0aHViLmlvL3RpcHB5anMvdjYvYWNjZXNzaWJpbGl0eS8jaW50ZXJhY3Rpdml0eScsXG4gICAgICAgIF0uam9pbignICcpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5lc3RlZFBvcHBlclRyZWUoKTogUG9wcGVyRWxlbWVudFtdIHtcbiAgICByZXR1cm4gYXJyYXlGcm9tKFxuICAgICAgcG9wcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLV9fTkFNRVNQQUNFX1BSRUZJWF9fLXJvb3RdJylcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gc2NoZWR1bGVTaG93KGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpbnN0YW5jZS5jbGVhckRlbGF5VGltZW91dHMoKTtcblxuICAgIGlmIChldmVudCkge1xuICAgICAgaW52b2tlSG9vaygnb25UcmlnZ2VyJywgW2luc3RhbmNlLCBldmVudF0pO1xuICAgIH1cblxuICAgIGFkZERvY3VtZW50UHJlc3MoKTtcblxuICAgIGxldCBkZWxheSA9IGdldERlbGF5KHRydWUpO1xuICAgIGNvbnN0IFt0b3VjaFZhbHVlLCB0b3VjaERlbGF5XSA9IGdldE5vcm1hbGl6ZWRUb3VjaFNldHRpbmdzKCk7XG5cbiAgICBpZiAoY3VycmVudElucHV0LmlzVG91Y2ggJiYgdG91Y2hWYWx1ZSA9PT0gJ2hvbGQnICYmIHRvdWNoRGVsYXkpIHtcbiAgICAgIGRlbGF5ID0gdG91Y2hEZWxheTtcbiAgICB9XG5cbiAgICBpZiAoZGVsYXkpIHtcbiAgICAgIHNob3dUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGluc3RhbmNlLnNob3coKTtcbiAgICAgIH0sIGRlbGF5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2Uuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNjaGVkdWxlSGlkZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpbnN0YW5jZS5jbGVhckRlbGF5VGltZW91dHMoKTtcblxuICAgIGludm9rZUhvb2soJ29uVW50cmlnZ2VyJywgW2luc3RhbmNlLCBldmVudF0pO1xuXG4gICAgaWYgKCFpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGUpIHtcbiAgICAgIHJlbW92ZURvY3VtZW50UHJlc3MoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZvciBpbnRlcmFjdGl2ZSB0aXBwaWVzLCBzY2hlZHVsZUhpZGUgaXMgYWRkZWQgdG8gYSBkb2N1bWVudC5ib2R5IGhhbmRsZXJcbiAgICAvLyBmcm9tIG9uTW91c2VMZWF2ZSBzbyBtdXN0IGludGVyY2VwdCBzY2hlZHVsZWQgaGlkZXMgZnJvbSBtb3VzZW1vdmUvbGVhdmVcbiAgICAvLyBldmVudHMgd2hlbiB0cmlnZ2VyIGNvbnRhaW5zIG1vdXNlZW50ZXIgYW5kIGNsaWNrLCBhbmQgdGhlIHRpcCBpc1xuICAgIC8vIGN1cnJlbnRseSBzaG93biBhcyBhIHJlc3VsdCBvZiBhIGNsaWNrLlxuICAgIGlmIChcbiAgICAgIGluc3RhbmNlLnByb3BzLnRyaWdnZXIuaW5kZXhPZignbW91c2VlbnRlcicpID49IDAgJiZcbiAgICAgIGluc3RhbmNlLnByb3BzLnRyaWdnZXIuaW5kZXhPZignY2xpY2snKSA+PSAwICYmXG4gICAgICBbJ21vdXNlbGVhdmUnLCAnbW91c2Vtb3ZlJ10uaW5kZXhPZihldmVudC50eXBlKSA+PSAwICYmXG4gICAgICBpc1Zpc2libGVGcm9tQ2xpY2tcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZWxheSA9IGdldERlbGF5KGZhbHNlKTtcblxuICAgIGlmIChkZWxheSkge1xuICAgICAgaGlkZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSkge1xuICAgICAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSwgZGVsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGaXhlcyBhIGB0cmFuc2l0aW9uZW5kYCBwcm9ibGVtIHdoZW4gaXQgZmlyZXMgMSBmcmFtZSB0b29cbiAgICAgIC8vIGxhdGUgc29tZXRpbWVzLCB3ZSBkb24ndCB3YW50IGhpZGUoKSB0byBiZSBjYWxsZWQuXG4gICAgICBzY2hlZHVsZUhpZGVBbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyDwn5SRIFB1YmxpYyBtZXRob2RzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBmdW5jdGlvbiBlbmFibGUoKTogdm9pZCB7XG4gICAgaW5zdGFuY2Uuc3RhdGUuaXNFbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc2FibGUoKTogdm9pZCB7XG4gICAgLy8gRGlzYWJsaW5nIHRoZSBpbnN0YW5jZSBzaG91bGQgYWxzbyBoaWRlIGl0XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F0b21pa3MvdGlwcHkuanMtcmVhY3QvaXNzdWVzLzEwNlxuICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICBpbnN0YW5jZS5zdGF0ZS5pc0VuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyRGVsYXlUaW1lb3V0cygpOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQoc2hvd1RpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dChoaWRlVGltZW91dCk7XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoc2NoZWR1bGVIaWRlQW5pbWF0aW9uRnJhbWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0UHJvcHMocGFydGlhbFByb3BzOiBQYXJ0aWFsPFByb3BzPik6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKF9fREVWX18pIHtcbiAgICAgIHdhcm5XaGVuKGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkLCBjcmVhdGVNZW1vcnlMZWFrV2FybmluZygnc2V0UHJvcHMnKSk7XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW52b2tlSG9vaygnb25CZWZvcmVVcGRhdGUnLCBbaW5zdGFuY2UsIHBhcnRpYWxQcm9wc10pO1xuXG4gICAgcmVtb3ZlTGlzdGVuZXJzKCk7XG5cbiAgICBjb25zdCBwcmV2UHJvcHMgPSBpbnN0YW5jZS5wcm9wcztcbiAgICBjb25zdCBuZXh0UHJvcHMgPSBldmFsdWF0ZVByb3BzKHJlZmVyZW5jZSwge1xuICAgICAgLi4ucHJldlByb3BzLFxuICAgICAgLi4ucmVtb3ZlVW5kZWZpbmVkUHJvcHMocGFydGlhbFByb3BzKSxcbiAgICAgIGlnbm9yZUF0dHJpYnV0ZXM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpbnN0YW5jZS5wcm9wcyA9IG5leHRQcm9wcztcblxuICAgIGFkZExpc3RlbmVycygpO1xuXG4gICAgaWYgKHByZXZQcm9wcy5pbnRlcmFjdGl2ZURlYm91bmNlICE9PSBuZXh0UHJvcHMuaW50ZXJhY3RpdmVEZWJvdW5jZSkge1xuICAgICAgY2xlYW51cEludGVyYWN0aXZlTW91c2VMaXN0ZW5lcnMoKTtcbiAgICAgIGRlYm91bmNlZE9uTW91c2VNb3ZlID0gZGVib3VuY2UoXG4gICAgICAgIG9uTW91c2VNb3ZlLFxuICAgICAgICBuZXh0UHJvcHMuaW50ZXJhY3RpdmVEZWJvdW5jZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgc3RhbGUgYXJpYS1leHBhbmRlZCBhdHRyaWJ1dGVzIGFyZSByZW1vdmVkXG4gICAgaWYgKHByZXZQcm9wcy50cmlnZ2VyVGFyZ2V0ICYmICFuZXh0UHJvcHMudHJpZ2dlclRhcmdldCkge1xuICAgICAgbm9ybWFsaXplVG9BcnJheShwcmV2UHJvcHMudHJpZ2dlclRhcmdldCkuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChuZXh0UHJvcHMudHJpZ2dlclRhcmdldCkge1xuICAgICAgcmVmZXJlbmNlLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpO1xuICAgIH1cblxuICAgIGhhbmRsZUFyaWFFeHBhbmRlZEF0dHJpYnV0ZSgpO1xuICAgIGhhbmRsZVN0eWxlcygpO1xuXG4gICAgaWYgKG9uVXBkYXRlKSB7XG4gICAgICBvblVwZGF0ZShwcmV2UHJvcHMsIG5leHRQcm9wcyk7XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbmNlLnBvcHBlckluc3RhbmNlKSB7XG4gICAgICBjcmVhdGVQb3BwZXJJbnN0YW5jZSgpO1xuXG4gICAgICAvLyBGaXhlcyBhbiBpc3N1ZSB3aXRoIG5lc3RlZCB0aXBwaWVzIGlmIHRoZXkgYXJlIGFsbCBnZXR0aW5nIHJlLXJlbmRlcmVkLFxuICAgICAgLy8gYW5kIHRoZSBuZXN0ZWQgb25lcyBnZXQgcmUtcmVuZGVyZWQgZmlyc3QuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXRvbWlrcy90aXBweWpzLXJlYWN0L2lzc3Vlcy8xNzdcbiAgICAgIC8vIFRPRE86IGZpbmQgYSBjbGVhbmVyIC8gbW9yZSBlZmZpY2llbnQgc29sdXRpb24oISlcbiAgICAgIGdldE5lc3RlZFBvcHBlclRyZWUoKS5mb3JFYWNoKChuZXN0ZWRQb3BwZXIpID0+IHtcbiAgICAgICAgLy8gUmVhY3QgKGFuZCBvdGhlciBVSSBsaWJzIGxpa2VseSkgcmVxdWlyZXMgYSByQUYgd3JhcHBlciBhcyBpdCBmbHVzaGVzXG4gICAgICAgIC8vIGl0cyB3b3JrIGluIG9uZVxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobmVzdGVkUG9wcGVyLl90aXBweSEucG9wcGVySW5zdGFuY2UhLmZvcmNlVXBkYXRlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGludm9rZUhvb2soJ29uQWZ0ZXJVcGRhdGUnLCBbaW5zdGFuY2UsIHBhcnRpYWxQcm9wc10pO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0Q29udGVudChjb250ZW50OiBDb250ZW50KTogdm9pZCB7XG4gICAgaW5zdGFuY2Uuc2V0UHJvcHMoe2NvbnRlbnR9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3coKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoX19ERVZfXykge1xuICAgICAgd2FybldoZW4oaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQsIGNyZWF0ZU1lbW9yeUxlYWtXYXJuaW5nKCdzaG93JykpO1xuICAgIH1cblxuICAgIC8vIEVhcmx5IGJhaWwtb3V0XG4gICAgY29uc3QgaXNBbHJlYWR5VmlzaWJsZSA9IGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZTtcbiAgICBjb25zdCBpc0Rlc3Ryb3llZCA9IGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAhaW5zdGFuY2Uuc3RhdGUuaXNFbmFibGVkO1xuICAgIGNvbnN0IGlzVG91Y2hBbmRUb3VjaERpc2FibGVkID1cbiAgICAgIGN1cnJlbnRJbnB1dC5pc1RvdWNoICYmICFpbnN0YW5jZS5wcm9wcy50b3VjaDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGdldFZhbHVlQXRJbmRleE9yUmV0dXJuKFxuICAgICAgaW5zdGFuY2UucHJvcHMuZHVyYXRpb24sXG4gICAgICAwLFxuICAgICAgZGVmYXVsdFByb3BzLmR1cmF0aW9uXG4gICAgKTtcblxuICAgIGlmIChcbiAgICAgIGlzQWxyZWFkeVZpc2libGUgfHxcbiAgICAgIGlzRGVzdHJveWVkIHx8XG4gICAgICBpc0Rpc2FibGVkIHx8XG4gICAgICBpc1RvdWNoQW5kVG91Y2hEaXNhYmxlZFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbGl6ZSBgZGlzYWJsZWRgIGJlaGF2aW9yIGFjcm9zcyBicm93c2Vycy5cbiAgICAvLyBGaXJlZm94IGFsbG93cyBldmVudHMgb24gZGlzYWJsZWQgZWxlbWVudHMsIGJ1dCBDaHJvbWUgZG9lc24ndC5cbiAgICAvLyBVc2luZyBhIHdyYXBwZXIgZWxlbWVudCAoaS5lLiA8c3Bhbj4pIGlzIHJlY29tbWVuZGVkLlxuICAgIGlmIChnZXRDdXJyZW50VGFyZ2V0KCkuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW52b2tlSG9vaygnb25TaG93JywgW2luc3RhbmNlXSwgZmFsc2UpO1xuICAgIGlmIChpbnN0YW5jZS5wcm9wcy5vblNob3coaW5zdGFuY2UpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnN0YXRlLmlzVmlzaWJsZSA9IHRydWU7XG5cbiAgICBpZiAoZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKSkge1xuICAgICAgcG9wcGVyLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgfVxuXG4gICAgaGFuZGxlU3R5bGVzKCk7XG4gICAgYWRkRG9jdW1lbnRQcmVzcygpO1xuXG4gICAgaWYgKCFpbnN0YW5jZS5zdGF0ZS5pc01vdW50ZWQpIHtcbiAgICAgIHBvcHBlci5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgIH1cblxuICAgIC8vIElmIGZsaXBwaW5nIHRvIHRoZSBvcHBvc2l0ZSBzaWRlIGFmdGVyIGhpZGluZyBhdCBsZWFzdCBvbmNlLCB0aGVcbiAgICAvLyBhbmltYXRpb24gd2lsbCB1c2UgdGhlIHdyb25nIHBsYWNlbWVudCB3aXRob3V0IHJlc2V0dGluZyB0aGUgZHVyYXRpb25cbiAgICBpZiAoZ2V0SXNEZWZhdWx0UmVuZGVyRm4oKSkge1xuICAgICAgY29uc3Qge2JveCwgY29udGVudH0gPSBnZXREZWZhdWx0VGVtcGxhdGVDaGlsZHJlbigpO1xuICAgICAgc2V0VHJhbnNpdGlvbkR1cmF0aW9uKFtib3gsIGNvbnRlbnRdLCAwKTtcbiAgICB9XG5cbiAgICBvbkZpcnN0VXBkYXRlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGUgfHwgaWdub3JlT25GaXJzdFVwZGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlnbm9yZU9uRmlyc3RVcGRhdGUgPSB0cnVlO1xuXG4gICAgICAvLyByZWZsb3dcbiAgICAgIHZvaWQgcG9wcGVyLm9mZnNldEhlaWdodDtcblxuICAgICAgcG9wcGVyLnN0eWxlLnRyYW5zaXRpb24gPSBpbnN0YW5jZS5wcm9wcy5tb3ZlVHJhbnNpdGlvbjtcblxuICAgICAgaWYgKGdldElzRGVmYXVsdFJlbmRlckZuKCkgJiYgaW5zdGFuY2UucHJvcHMuYW5pbWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHtib3gsIGNvbnRlbnR9ID0gZ2V0RGVmYXVsdFRlbXBsYXRlQ2hpbGRyZW4oKTtcbiAgICAgICAgc2V0VHJhbnNpdGlvbkR1cmF0aW9uKFtib3gsIGNvbnRlbnRdLCBkdXJhdGlvbik7XG4gICAgICAgIHNldFZpc2liaWxpdHlTdGF0ZShbYm94LCBjb250ZW50XSwgJ3Zpc2libGUnKTtcbiAgICAgIH1cblxuICAgICAgaGFuZGxlQXJpYUNvbnRlbnRBdHRyaWJ1dGUoKTtcbiAgICAgIGhhbmRsZUFyaWFFeHBhbmRlZEF0dHJpYnV0ZSgpO1xuXG4gICAgICBwdXNoSWZVbmlxdWUobW91bnRlZEluc3RhbmNlcywgaW5zdGFuY2UpO1xuXG4gICAgICAvLyBjZXJ0YWluIG1vZGlmaWVycyAoZS5nLiBgbWF4U2l6ZWApIHJlcXVpcmUgYSBzZWNvbmQgdXBkYXRlIGFmdGVyIHRoZVxuICAgICAgLy8gcG9wcGVyIGhhcyBiZWVuIHBvc2l0aW9uZWQgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAgICBpbnN0YW5jZS5wb3BwZXJJbnN0YW5jZT8uZm9yY2VVcGRhdGUoKTtcblxuICAgICAgaW52b2tlSG9vaygnb25Nb3VudCcsIFtpbnN0YW5jZV0pO1xuXG4gICAgICBpZiAoaW5zdGFuY2UucHJvcHMuYW5pbWF0aW9uICYmIGdldElzRGVmYXVsdFJlbmRlckZuKCkpIHtcbiAgICAgICAgb25UcmFuc2l0aW9uZWRJbihkdXJhdGlvbiwgKCkgPT4ge1xuICAgICAgICAgIGluc3RhbmNlLnN0YXRlLmlzU2hvd24gPSB0cnVlO1xuICAgICAgICAgIGludm9rZUhvb2soJ29uU2hvd24nLCBbaW5zdGFuY2VdKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIG1vdW50KCk7XG4gIH1cblxuICBmdW5jdGlvbiBoaWRlKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKF9fREVWX18pIHtcbiAgICAgIHdhcm5XaGVuKGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkLCBjcmVhdGVNZW1vcnlMZWFrV2FybmluZygnaGlkZScpKTtcbiAgICB9XG5cbiAgICAvLyBFYXJseSBiYWlsLW91dFxuICAgIGNvbnN0IGlzQWxyZWFkeUhpZGRlbiA9ICFpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGU7XG4gICAgY29uc3QgaXNEZXN0cm95ZWQgPSBpbnN0YW5jZS5zdGF0ZS5pc0Rlc3Ryb3llZDtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gIWluc3RhbmNlLnN0YXRlLmlzRW5hYmxlZDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGdldFZhbHVlQXRJbmRleE9yUmV0dXJuKFxuICAgICAgaW5zdGFuY2UucHJvcHMuZHVyYXRpb24sXG4gICAgICAxLFxuICAgICAgZGVmYXVsdFByb3BzLmR1cmF0aW9uXG4gICAgKTtcblxuICAgIGlmIChpc0FscmVhZHlIaWRkZW4gfHwgaXNEZXN0cm95ZWQgfHwgaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGludm9rZUhvb2soJ29uSGlkZScsIFtpbnN0YW5jZV0sIGZhbHNlKTtcbiAgICBpZiAoaW5zdGFuY2UucHJvcHMub25IaWRlKGluc3RhbmNlKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICBpbnN0YW5jZS5zdGF0ZS5pc1Nob3duID0gZmFsc2U7XG4gICAgaWdub3JlT25GaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIGlzVmlzaWJsZUZyb21DbGljayA9IGZhbHNlO1xuXG4gICAgaWYgKGdldElzRGVmYXVsdFJlbmRlckZuKCkpIHtcbiAgICAgIHBvcHBlci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgfVxuXG4gICAgY2xlYW51cEludGVyYWN0aXZlTW91c2VMaXN0ZW5lcnMoKTtcbiAgICByZW1vdmVEb2N1bWVudFByZXNzKCk7XG4gICAgaGFuZGxlU3R5bGVzKHRydWUpO1xuXG4gICAgaWYgKGdldElzRGVmYXVsdFJlbmRlckZuKCkpIHtcbiAgICAgIGNvbnN0IHtib3gsIGNvbnRlbnR9ID0gZ2V0RGVmYXVsdFRlbXBsYXRlQ2hpbGRyZW4oKTtcblxuICAgICAgaWYgKGluc3RhbmNlLnByb3BzLmFuaW1hdGlvbikge1xuICAgICAgICBzZXRUcmFuc2l0aW9uRHVyYXRpb24oW2JveCwgY29udGVudF0sIGR1cmF0aW9uKTtcbiAgICAgICAgc2V0VmlzaWJpbGl0eVN0YXRlKFtib3gsIGNvbnRlbnRdLCAnaGlkZGVuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlQXJpYUNvbnRlbnRBdHRyaWJ1dGUoKTtcbiAgICBoYW5kbGVBcmlhRXhwYW5kZWRBdHRyaWJ1dGUoKTtcblxuICAgIGlmIChpbnN0YW5jZS5wcm9wcy5hbmltYXRpb24pIHtcbiAgICAgIGlmIChnZXRJc0RlZmF1bHRSZW5kZXJGbigpKSB7XG4gICAgICAgIG9uVHJhbnNpdGlvbmVkT3V0KGR1cmF0aW9uLCBpbnN0YW5jZS51bm1vdW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UudW5tb3VudCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhpZGVXaXRoSW50ZXJhY3Rpdml0eShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKF9fREVWX18pIHtcbiAgICAgIHdhcm5XaGVuKFxuICAgICAgICBpbnN0YW5jZS5zdGF0ZS5pc0Rlc3Ryb3llZCxcbiAgICAgICAgY3JlYXRlTWVtb3J5TGVha1dhcm5pbmcoJ2hpZGVXaXRoSW50ZXJhY3Rpdml0eScpXG4gICAgICApO1xuICAgIH1cblxuICAgIGdldERvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZGVib3VuY2VkT25Nb3VzZU1vdmUpO1xuICAgIHB1c2hJZlVuaXF1ZShtb3VzZU1vdmVMaXN0ZW5lcnMsIGRlYm91bmNlZE9uTW91c2VNb3ZlKTtcbiAgICBkZWJvdW5jZWRPbk1vdXNlTW92ZShldmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiB1bm1vdW50KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKF9fREVWX18pIHtcbiAgICAgIHdhcm5XaGVuKGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkLCBjcmVhdGVNZW1vcnlMZWFrV2FybmluZygndW5tb3VudCcpKTtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2Uuc3RhdGUuaXNWaXNpYmxlKSB7XG4gICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpbnN0YW5jZS5zdGF0ZS5pc01vdW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkZXN0cm95UG9wcGVySW5zdGFuY2UoKTtcblxuICAgIC8vIElmIGEgcG9wcGVyIGlzIG5vdCBpbnRlcmFjdGl2ZSwgaXQgd2lsbCBiZSBhcHBlbmRlZCBvdXRzaWRlIHRoZSBwb3BwZXJcbiAgICAvLyB0cmVlIGJ5IGRlZmF1bHQuIFRoaXMgc2VlbXMgbWFpbmx5IGZvciBpbnRlcmFjdGl2ZSB0aXBwaWVzLCBidXQgd2Ugc2hvdWxkXG4gICAgLy8gZmluZCBhIHdvcmthcm91bmQgaWYgcG9zc2libGVcbiAgICBnZXROZXN0ZWRQb3BwZXJUcmVlKCkuZm9yRWFjaCgobmVzdGVkUG9wcGVyKSA9PiB7XG4gICAgICBuZXN0ZWRQb3BwZXIuX3RpcHB5IS51bm1vdW50KCk7XG4gICAgfSk7XG5cbiAgICBpZiAocG9wcGVyLnBhcmVudE5vZGUpIHtcbiAgICAgIHBvcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHBvcHBlcik7XG4gICAgfVxuXG4gICAgbW91bnRlZEluc3RhbmNlcyA9IG1vdW50ZWRJbnN0YW5jZXMuZmlsdGVyKChpKSA9PiBpICE9PSBpbnN0YW5jZSk7XG5cbiAgICBpbnN0YW5jZS5zdGF0ZS5pc01vdW50ZWQgPSBmYWxzZTtcbiAgICBpbnZva2VIb29rKCdvbkhpZGRlbicsIFtpbnN0YW5jZV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICB3YXJuV2hlbihpbnN0YW5jZS5zdGF0ZS5pc0Rlc3Ryb3llZCwgY3JlYXRlTWVtb3J5TGVha1dhcm5pbmcoJ2Rlc3Ryb3knKSk7XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW5zdGFuY2UuY2xlYXJEZWxheVRpbWVvdXRzKCk7XG4gICAgaW5zdGFuY2UudW5tb3VudCgpO1xuXG4gICAgcmVtb3ZlTGlzdGVuZXJzKCk7XG5cbiAgICBkZWxldGUgcmVmZXJlbmNlLl90aXBweTtcblxuICAgIGluc3RhbmNlLnN0YXRlLmlzRGVzdHJveWVkID0gdHJ1ZTtcblxuICAgIGludm9rZUhvb2soJ29uRGVzdHJveScsIFtpbnN0YW5jZV0pO1xuICB9XG59XG4iLCAiaW1wb3J0IGJpbmRHbG9iYWxFdmVudExpc3RlbmVycywge1xuICBjdXJyZW50SW5wdXQsXG59IGZyb20gJy4vYmluZEdsb2JhbEV2ZW50TGlzdGVuZXJzJztcbmltcG9ydCBjcmVhdGVUaXBweSwge21vdW50ZWRJbnN0YW5jZXN9IGZyb20gJy4vY3JlYXRlVGlwcHknO1xuaW1wb3J0IHtnZXRBcnJheU9mRWxlbWVudHMsIGlzRWxlbWVudCwgaXNSZWZlcmVuY2VFbGVtZW50fSBmcm9tICcuL2RvbS11dGlscyc7XG5pbXBvcnQge2RlZmF1bHRQcm9wcywgc2V0RGVmYXVsdFByb3BzLCB2YWxpZGF0ZVByb3BzfSBmcm9tICcuL3Byb3BzJztcbmltcG9ydCB7SGlkZUFsbCwgSGlkZUFsbE9wdGlvbnMsIEluc3RhbmNlLCBQcm9wcywgVGFyZ2V0c30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge3ZhbGlkYXRlVGFyZ2V0cywgd2FybldoZW59IGZyb20gJy4vdmFsaWRhdGlvbic7XG5cbmZ1bmN0aW9uIHRpcHB5KFxuICB0YXJnZXRzOiBUYXJnZXRzLFxuICBvcHRpb25hbFByb3BzOiBQYXJ0aWFsPFByb3BzPiA9IHt9XG4pOiBJbnN0YW5jZSB8IEluc3RhbmNlW10ge1xuICBjb25zdCBwbHVnaW5zID0gZGVmYXVsdFByb3BzLnBsdWdpbnMuY29uY2F0KG9wdGlvbmFsUHJvcHMucGx1Z2lucyB8fCBbXSk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKF9fREVWX18pIHtcbiAgICB2YWxpZGF0ZVRhcmdldHModGFyZ2V0cyk7XG4gICAgdmFsaWRhdGVQcm9wcyhvcHRpb25hbFByb3BzLCBwbHVnaW5zKTtcbiAgfVxuXG4gIGJpbmRHbG9iYWxFdmVudExpc3RlbmVycygpO1xuXG4gIGNvbnN0IHBhc3NlZFByb3BzOiBQYXJ0aWFsPFByb3BzPiA9IHsuLi5vcHRpb25hbFByb3BzLCBwbHVnaW5zfTtcblxuICBjb25zdCBlbGVtZW50cyA9IGdldEFycmF5T2ZFbGVtZW50cyh0YXJnZXRzKTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoX19ERVZfXykge1xuICAgIGNvbnN0IGlzU2luZ2xlQ29udGVudEVsZW1lbnQgPSBpc0VsZW1lbnQocGFzc2VkUHJvcHMuY29udGVudCk7XG4gICAgY29uc3QgaXNNb3JlVGhhbk9uZVJlZmVyZW5jZUVsZW1lbnQgPSBlbGVtZW50cy5sZW5ndGggPiAxO1xuICAgIHdhcm5XaGVuKFxuICAgICAgaXNTaW5nbGVDb250ZW50RWxlbWVudCAmJiBpc01vcmVUaGFuT25lUmVmZXJlbmNlRWxlbWVudCxcbiAgICAgIFtcbiAgICAgICAgJ3RpcHB5KCkgd2FzIHBhc3NlZCBhbiBFbGVtZW50IGFzIHRoZSBgY29udGVudGAgcHJvcCwgYnV0IG1vcmUgdGhhbicsXG4gICAgICAgICdvbmUgdGlwcHkgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQgYnkgdGhpcyBpbnZvY2F0aW9uLiBUaGlzIG1lYW5zIHRoZScsXG4gICAgICAgICdjb250ZW50IGVsZW1lbnQgd2lsbCBvbmx5IGJlIGFwcGVuZGVkIHRvIHRoZSBsYXN0IHRpcHB5IGluc3RhbmNlLicsXG4gICAgICAgICdcXG5cXG4nLFxuICAgICAgICAnSW5zdGVhZCwgcGFzcyB0aGUgLmlubmVySFRNTCBvZiB0aGUgZWxlbWVudCwgb3IgdXNlIGEgZnVuY3Rpb24gdGhhdCcsXG4gICAgICAgICdyZXR1cm5zIGEgY2xvbmVkIHZlcnNpb24gb2YgdGhlIGVsZW1lbnQgaW5zdGVhZC4nLFxuICAgICAgICAnXFxuXFxuJyxcbiAgICAgICAgJzEpIGNvbnRlbnQ6IGVsZW1lbnQuaW5uZXJIVE1MXFxuJyxcbiAgICAgICAgJzIpIGNvbnRlbnQ6ICgpID0+IGVsZW1lbnQuY2xvbmVOb2RlKHRydWUpJyxcbiAgICAgIF0uam9pbignICcpXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluc3RhbmNlcyA9IGVsZW1lbnRzLnJlZHVjZTxJbnN0YW5jZVtdPihcbiAgICAoYWNjLCByZWZlcmVuY2UpOiBJbnN0YW5jZVtdID0+IHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gcmVmZXJlbmNlICYmIGNyZWF0ZVRpcHB5KHJlZmVyZW5jZSwgcGFzc2VkUHJvcHMpO1xuXG4gICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgYWNjLnB1c2goaW5zdGFuY2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICByZXR1cm4gaXNFbGVtZW50KHRhcmdldHMpID8gaW5zdGFuY2VzWzBdIDogaW5zdGFuY2VzO1xufVxuXG50aXBweS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG50aXBweS5zZXREZWZhdWx0UHJvcHMgPSBzZXREZWZhdWx0UHJvcHM7XG50aXBweS5jdXJyZW50SW5wdXQgPSBjdXJyZW50SW5wdXQ7XG5cbmV4cG9ydCBkZWZhdWx0IHRpcHB5O1xuXG5leHBvcnQgY29uc3QgaGlkZUFsbDogSGlkZUFsbCA9ICh7XG4gIGV4Y2x1ZGU6IGV4Y2x1ZGVkUmVmZXJlbmNlT3JJbnN0YW5jZSxcbiAgZHVyYXRpb24sXG59OiBIaWRlQWxsT3B0aW9ucyA9IHt9KSA9PiB7XG4gIG1vdW50ZWRJbnN0YW5jZXMuZm9yRWFjaCgoaW5zdGFuY2UpID0+IHtcbiAgICBsZXQgaXNFeGNsdWRlZCA9IGZhbHNlO1xuXG4gICAgaWYgKGV4Y2x1ZGVkUmVmZXJlbmNlT3JJbnN0YW5jZSkge1xuICAgICAgaXNFeGNsdWRlZCA9IGlzUmVmZXJlbmNlRWxlbWVudChleGNsdWRlZFJlZmVyZW5jZU9ySW5zdGFuY2UpXG4gICAgICAgID8gaW5zdGFuY2UucmVmZXJlbmNlID09PSBleGNsdWRlZFJlZmVyZW5jZU9ySW5zdGFuY2VcbiAgICAgICAgOiBpbnN0YW5jZS5wb3BwZXIgPT09IChleGNsdWRlZFJlZmVyZW5jZU9ySW5zdGFuY2UgYXMgSW5zdGFuY2UpLnBvcHBlcjtcbiAgICB9XG5cbiAgICBpZiAoIWlzRXhjbHVkZWQpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsRHVyYXRpb24gPSBpbnN0YW5jZS5wcm9wcy5kdXJhdGlvbjtcblxuICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMoe2R1cmF0aW9ufSk7XG4gICAgICBpbnN0YW5jZS5oaWRlKCk7XG5cbiAgICAgIGlmICghaW5zdGFuY2Uuc3RhdGUuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMoe2R1cmF0aW9uOiBvcmlnaW5hbER1cmF0aW9ufSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG4iLCAiaW1wb3J0IHRpcHB5IGZyb20gJy4uJztcbmltcG9ydCB7ZGl2fSBmcm9tICcuLi9kb20tdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlU2luZ2xldG9uLFxuICBQbHVnaW4sXG4gIENyZWF0ZVNpbmdsZXRvblByb3BzLFxuICBSZWZlcmVuY2VFbGVtZW50LFxuICBDcmVhdGVTaW5nbGV0b25JbnN0YW5jZSxcbiAgSW5zdGFuY2UsXG4gIFByb3BzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge25vcm1hbGl6ZVRvQXJyYXksIHJlbW92ZVByb3BlcnRpZXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7ZXJyb3JXaGVufSBmcm9tICcuLi92YWxpZGF0aW9uJztcbmltcG9ydCB7YXBwbHlTdHlsZXMsIE1vZGlmaWVyfSBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5cbi8vIFRoZSBkZWZhdWx0IGBhcHBseVN0eWxlc2AgbW9kaWZpZXIgaGFzIGEgY2xlYW51cCBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkXG4vLyBldmVyeSB0aW1lIHRoZSBwb3BwZXIgaXMgZGVzdHJveWVkIChpLmUuIGEgbmV3IHRhcmdldCksIHJlbW92aW5nIHRoZSBzdHlsZXNcbi8vIGFuZCBjYXVzaW5nIHRyYW5zaXRpb25zIHRvIGJyZWFrIGZvciBzaW5nbGV0b25zIHdoZW4gdGhlIGNvbnNvbGUgaXMgb3BlbiwgYnV0XG4vLyBtb3N0IG5vdGFibHkgZm9yIG5vbi10cmFuc2Zvcm0gc3R5bGVzIGJlaW5nIHVzZWQsIGBncHVBY2NlbGVyYXRpb246IGZhbHNlYC5cbmNvbnN0IGFwcGx5U3R5bGVzTW9kaWZpZXI6IE1vZGlmaWVyPCdhcHBseVN0eWxlcycsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IHtcbiAgLi4uYXBwbHlTdHlsZXMsXG4gIGVmZmVjdCh7c3RhdGV9KSB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvcHBlcjoge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgICAgbGVmdDogJzAnLFxuICAgICAgICB0b3A6ICcwJyxcbiAgICAgICAgbWFyZ2luOiAnMCcsXG4gICAgICB9LFxuICAgICAgYXJyb3c6IHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB9LFxuICAgICAgcmVmZXJlbmNlOiB7fSxcbiAgICB9O1xuXG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5wb3BwZXIuc3R5bGUsIGluaXRpYWxTdHlsZXMucG9wcGVyKTtcbiAgICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gICAgaWYgKHN0YXRlLmVsZW1lbnRzLmFycm93KSB7XG4gICAgICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLmFycm93LnN0eWxlLCBpbml0aWFsU3R5bGVzLmFycm93KTtcbiAgICB9XG5cbiAgICAvLyBpbnRlbnRpb25hbGx5IHJldHVybiBubyBjbGVhbnVwIGZ1bmN0aW9uXG4gICAgLy8gcmV0dXJuICgpID0+IHsgLi4uIH1cbiAgfSxcbn07XG5cbmNvbnN0IGNyZWF0ZVNpbmdsZXRvbjogQ3JlYXRlU2luZ2xldG9uID0gKFxuICB0aXBweUluc3RhbmNlcyxcbiAgb3B0aW9uYWxQcm9wcyA9IHt9XG4pID0+IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKF9fREVWX18pIHtcbiAgICBlcnJvcldoZW4oXG4gICAgICAhQXJyYXkuaXNBcnJheSh0aXBweUluc3RhbmNlcyksXG4gICAgICBbXG4gICAgICAgICdUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZVNpbmdsZXRvbigpIG11c3QgYmUgYW4gYXJyYXkgb2YnLFxuICAgICAgICAndGlwcHkgaW5zdGFuY2VzLiBUaGUgcGFzc2VkIHZhbHVlIHdhcycsXG4gICAgICAgIFN0cmluZyh0aXBweUluc3RhbmNlcyksXG4gICAgICBdLmpvaW4oJyAnKVxuICAgICk7XG4gIH1cblxuICBsZXQgaW5kaXZpZHVhbEluc3RhbmNlcyA9IHRpcHB5SW5zdGFuY2VzO1xuICBsZXQgcmVmZXJlbmNlczogQXJyYXk8UmVmZXJlbmNlRWxlbWVudD4gPSBbXTtcbiAgbGV0IHRyaWdnZXJUYXJnZXRzOiBBcnJheTxFbGVtZW50PiA9IFtdO1xuICBsZXQgY3VycmVudFRhcmdldDogRWxlbWVudCB8IG51bGw7XG4gIGxldCBvdmVycmlkZXMgPSBvcHRpb25hbFByb3BzLm92ZXJyaWRlcztcbiAgbGV0IGludGVyY2VwdFNldFByb3BzQ2xlYW51cHM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XG4gIGxldCBzaG93bk9uQ3JlYXRlID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gc2V0VHJpZ2dlclRhcmdldHMoKTogdm9pZCB7XG4gICAgdHJpZ2dlclRhcmdldHMgPSBpbmRpdmlkdWFsSW5zdGFuY2VzXG4gICAgICAubWFwKChpbnN0YW5jZSkgPT5cbiAgICAgICAgbm9ybWFsaXplVG9BcnJheShpbnN0YW5jZS5wcm9wcy50cmlnZ2VyVGFyZ2V0IHx8IGluc3RhbmNlLnJlZmVyZW5jZSlcbiAgICAgIClcbiAgICAgIC5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjLmNvbmNhdChpdGVtKSwgW10pO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0UmVmZXJlbmNlcygpOiB2b2lkIHtcbiAgICByZWZlcmVuY2VzID0gaW5kaXZpZHVhbEluc3RhbmNlcy5tYXAoKGluc3RhbmNlKSA9PiBpbnN0YW5jZS5yZWZlcmVuY2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gZW5hYmxlSW5zdGFuY2VzKGlzRW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGluZGl2aWR1YWxJbnN0YW5jZXMuZm9yRWFjaCgoaW5zdGFuY2UpID0+IHtcbiAgICAgIGlmIChpc0VuYWJsZWQpIHtcbiAgICAgICAgaW5zdGFuY2UuZW5hYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0YW5jZS5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbnRlcmNlcHRTZXRQcm9wcyhzaW5nbGV0b246IEluc3RhbmNlKTogQXJyYXk8KCkgPT4gdm9pZD4ge1xuICAgIHJldHVybiBpbmRpdmlkdWFsSW5zdGFuY2VzLm1hcCgoaW5zdGFuY2UpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsU2V0UHJvcHMgPSBpbnN0YW5jZS5zZXRQcm9wcztcblxuICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMgPSAocHJvcHMpOiB2b2lkID0+IHtcbiAgICAgICAgb3JpZ2luYWxTZXRQcm9wcyhwcm9wcyk7XG5cbiAgICAgICAgaWYgKGluc3RhbmNlLnJlZmVyZW5jZSA9PT0gY3VycmVudFRhcmdldCkge1xuICAgICAgICAgIHNpbmdsZXRvbi5zZXRQcm9wcyhwcm9wcyk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiAoKTogdm9pZCA9PiB7XG4gICAgICAgIGluc3RhbmNlLnNldFByb3BzID0gb3JpZ2luYWxTZXRQcm9wcztcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvLyBoYXZlIHRvIHBhc3Mgc2luZ2xldG9uLCBhcyBpdCBtYXliZSB1bmRlZmluZWQgb24gZmlyc3QgY2FsbFxuICBmdW5jdGlvbiBwcmVwYXJlSW5zdGFuY2UoXG4gICAgc2luZ2xldG9uOiBJbnN0YW5jZSxcbiAgICB0YXJnZXQ6IFJlZmVyZW5jZUVsZW1lbnRcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0cmlnZ2VyVGFyZ2V0cy5pbmRleE9mKHRhcmdldCk7XG5cbiAgICAvLyBiYWlsLW91dFxuICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0O1xuXG4gICAgY29uc3Qgb3ZlcnJpZGVQcm9wczogUGFydGlhbDxQcm9wcz4gPSAob3ZlcnJpZGVzIHx8IFtdKVxuICAgICAgLmNvbmNhdCgnY29udGVudCcpXG4gICAgICAucmVkdWNlKChhY2MsIHByb3ApID0+IHtcbiAgICAgICAgKGFjYyBhcyBhbnkpW3Byb3BdID0gaW5kaXZpZHVhbEluc3RhbmNlc1tpbmRleF0ucHJvcHNbcHJvcF07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG5cbiAgICBzaW5nbGV0b24uc2V0UHJvcHMoe1xuICAgICAgLi4ub3ZlcnJpZGVQcm9wcyxcbiAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3Q6XG4gICAgICAgIHR5cGVvZiBvdmVycmlkZVByb3BzLmdldFJlZmVyZW5jZUNsaWVudFJlY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IG92ZXJyaWRlUHJvcHMuZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdFxuICAgICAgICAgIDogKCk6IENsaWVudFJlY3QgPT4gcmVmZXJlbmNlc1tpbmRleF0/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIH0pO1xuICB9XG5cbiAgZW5hYmxlSW5zdGFuY2VzKGZhbHNlKTtcbiAgc2V0UmVmZXJlbmNlcygpO1xuICBzZXRUcmlnZ2VyVGFyZ2V0cygpO1xuXG4gIGNvbnN0IHBsdWdpbjogUGx1Z2luID0ge1xuICAgIGZuKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAgIGVuYWJsZUluc3RhbmNlcyh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25IaWRkZW4oKTogdm9pZCB7XG4gICAgICAgICAgY3VycmVudFRhcmdldCA9IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlKGluc3RhbmNlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGluc3RhbmNlLnByb3BzLnNob3dPbkNyZWF0ZSAmJiAhc2hvd25PbkNyZWF0ZSkge1xuICAgICAgICAgICAgc2hvd25PbkNyZWF0ZSA9IHRydWU7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uU2hvdyhpbnN0YW5jZSk6IHZvaWQge1xuICAgICAgICAgIGlmIChpbnN0YW5jZS5wcm9wcy5zaG93T25DcmVhdGUgJiYgIXNob3duT25DcmVhdGUpIHtcbiAgICAgICAgICAgIHNob3duT25DcmVhdGUgPSB0cnVlO1xuICAgICAgICAgICAgcHJlcGFyZUluc3RhbmNlKGluc3RhbmNlLCByZWZlcmVuY2VzWzBdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uVHJpZ2dlcihpbnN0YW5jZSwgZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgICBwcmVwYXJlSW5zdGFuY2UoaW5zdGFuY2UsIGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudCk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gIH07XG5cbiAgY29uc3Qgc2luZ2xldG9uID0gdGlwcHkoZGl2KCksIHtcbiAgICAuLi5yZW1vdmVQcm9wZXJ0aWVzKG9wdGlvbmFsUHJvcHMsIFsnb3ZlcnJpZGVzJ10pLFxuICAgIHBsdWdpbnM6IFtwbHVnaW4sIC4uLihvcHRpb25hbFByb3BzLnBsdWdpbnMgfHwgW10pXSxcbiAgICB0cmlnZ2VyVGFyZ2V0OiB0cmlnZ2VyVGFyZ2V0cyxcbiAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICAuLi5vcHRpb25hbFByb3BzLnBvcHBlck9wdGlvbnMsXG4gICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAgLi4uKG9wdGlvbmFsUHJvcHMucG9wcGVyT3B0aW9ucz8ubW9kaWZpZXJzIHx8IFtdKSxcbiAgICAgICAgYXBwbHlTdHlsZXNNb2RpZmllcixcbiAgICAgIF0sXG4gICAgfSxcbiAgfSkgYXMgQ3JlYXRlU2luZ2xldG9uSW5zdGFuY2U8Q3JlYXRlU2luZ2xldG9uUHJvcHM+O1xuXG4gIGNvbnN0IG9yaWdpbmFsU2hvdyA9IHNpbmdsZXRvbi5zaG93O1xuXG4gIHNpbmdsZXRvbi5zaG93ID0gKHRhcmdldD86IFJlZmVyZW5jZUVsZW1lbnQgfCBJbnN0YW5jZSB8IG51bWJlcik6IHZvaWQgPT4ge1xuICAgIG9yaWdpbmFsU2hvdygpO1xuXG4gICAgLy8gZmlyc3QgdGltZSwgc2hvd09uQ3JlYXRlIG9yIHByb2dyYW1tYXRpYyBjYWxsIHdpdGggbm8gcGFyYW1zXG4gICAgLy8gZGVmYXVsdCB0byBzaG93aW5nIGZpcnN0IGluc3RhbmNlXG4gICAgaWYgKCFjdXJyZW50VGFyZ2V0ICYmIHRhcmdldCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gcHJlcGFyZUluc3RhbmNlKHNpbmdsZXRvbiwgcmVmZXJlbmNlc1swXSk7XG4gICAgfVxuXG4gICAgLy8gdHJpZ2dlcmVkIGZyb20gZXZlbnQgKGRvIG5vdGhpbmcgYXMgcHJlcGFyZUluc3RhbmNlIGFscmVhZHkgY2FsbGVkIGJ5IG9uVHJpZ2dlcilcbiAgICAvLyBwcm9ncmFtbWF0aWMgY2FsbCB3aXRoIG5vIHBhcmFtcyB3aGVuIGFscmVhZHkgdmlzaWJsZSAoZG8gbm90aGluZyBhZ2FpbilcbiAgICBpZiAoY3VycmVudFRhcmdldCAmJiB0YXJnZXQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHRhcmdldCBpcyBpbmRleCBvZiBpbnN0YW5jZVxuICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgcmVmZXJlbmNlc1t0YXJnZXRdICYmIHByZXBhcmVJbnN0YW5jZShzaW5nbGV0b24sIHJlZmVyZW5jZXNbdGFyZ2V0XSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gdGFyZ2V0IGlzIGEgY2hpbGQgdGlwcHkgaW5zdGFuY2VcbiAgICBpZiAoaW5kaXZpZHVhbEluc3RhbmNlcy5pbmRleE9mKHRhcmdldCBhcyBJbnN0YW5jZSkgPj0gMCkge1xuICAgICAgY29uc3QgcmVmID0gKHRhcmdldCBhcyBJbnN0YW5jZSkucmVmZXJlbmNlO1xuICAgICAgcmV0dXJuIHByZXBhcmVJbnN0YW5jZShzaW5nbGV0b24sIHJlZik7XG4gICAgfVxuXG4gICAgLy8gdGFyZ2V0IGlzIGEgUmVmZXJlbmNlRWxlbWVudFxuICAgIGlmIChyZWZlcmVuY2VzLmluZGV4T2YodGFyZ2V0IGFzIFJlZmVyZW5jZUVsZW1lbnQpID49IDApIHtcbiAgICAgIHJldHVybiBwcmVwYXJlSW5zdGFuY2Uoc2luZ2xldG9uLCB0YXJnZXQgYXMgUmVmZXJlbmNlRWxlbWVudCk7XG4gICAgfVxuICB9O1xuXG4gIHNpbmdsZXRvbi5zaG93TmV4dCA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBmaXJzdCA9IHJlZmVyZW5jZXNbMF07XG4gICAgaWYgKCFjdXJyZW50VGFyZ2V0KSB7XG4gICAgICByZXR1cm4gc2luZ2xldG9uLnNob3coMCk7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gcmVmZXJlbmNlcy5pbmRleE9mKGN1cnJlbnRUYXJnZXQpO1xuICAgIHNpbmdsZXRvbi5zaG93KHJlZmVyZW5jZXNbaW5kZXggKyAxXSB8fCBmaXJzdCk7XG4gIH07XG5cbiAgc2luZ2xldG9uLnNob3dQcmV2aW91cyA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBsYXN0ID0gcmVmZXJlbmNlc1tyZWZlcmVuY2VzLmxlbmd0aCAtIDFdO1xuICAgIGlmICghY3VycmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuIHNpbmdsZXRvbi5zaG93KGxhc3QpO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHJlZmVyZW5jZXMuaW5kZXhPZihjdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCB0YXJnZXQgPSByZWZlcmVuY2VzW2luZGV4IC0gMV0gfHwgbGFzdDtcbiAgICBzaW5nbGV0b24uc2hvdyh0YXJnZXQpO1xuICB9O1xuXG4gIGNvbnN0IG9yaWdpbmFsU2V0UHJvcHMgPSBzaW5nbGV0b24uc2V0UHJvcHM7XG5cbiAgc2luZ2xldG9uLnNldFByb3BzID0gKHByb3BzKTogdm9pZCA9PiB7XG4gICAgb3ZlcnJpZGVzID0gcHJvcHMub3ZlcnJpZGVzIHx8IG92ZXJyaWRlcztcbiAgICBvcmlnaW5hbFNldFByb3BzKHByb3BzKTtcbiAgfTtcblxuICBzaW5nbGV0b24uc2V0SW5zdGFuY2VzID0gKG5leHRJbnN0YW5jZXMpOiB2b2lkID0+IHtcbiAgICBlbmFibGVJbnN0YW5jZXModHJ1ZSk7XG4gICAgaW50ZXJjZXB0U2V0UHJvcHNDbGVhbnVwcy5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG5cbiAgICBpbmRpdmlkdWFsSW5zdGFuY2VzID0gbmV4dEluc3RhbmNlcztcblxuICAgIGVuYWJsZUluc3RhbmNlcyhmYWxzZSk7XG4gICAgc2V0UmVmZXJlbmNlcygpO1xuICAgIHNldFRyaWdnZXJUYXJnZXRzKCk7XG4gICAgaW50ZXJjZXB0U2V0UHJvcHNDbGVhbnVwcyA9IGludGVyY2VwdFNldFByb3BzKHNpbmdsZXRvbik7XG5cbiAgICBzaW5nbGV0b24uc2V0UHJvcHMoe3RyaWdnZXJUYXJnZXQ6IHRyaWdnZXJUYXJnZXRzfSk7XG4gIH07XG5cbiAgaW50ZXJjZXB0U2V0UHJvcHNDbGVhbnVwcyA9IGludGVyY2VwdFNldFByb3BzKHNpbmdsZXRvbik7XG5cbiAgcmV0dXJuIHNpbmdsZXRvbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVNpbmdsZXRvbjtcbiIsICJpbXBvcnQgdGlwcHkgZnJvbSAnLi4nO1xuaW1wb3J0IHtUT1VDSF9PUFRJT05TfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtkZWZhdWx0UHJvcHN9IGZyb20gJy4uL3Byb3BzJztcbmltcG9ydCB7SW5zdGFuY2UsIFByb3BzLCBUYXJnZXRzfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0xpc3RlbmVyT2JqZWN0fSBmcm9tICcuLi90eXBlcy1pbnRlcm5hbCc7XG5pbXBvcnQge25vcm1hbGl6ZVRvQXJyYXksIHJlbW92ZVByb3BlcnRpZXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7ZXJyb3JXaGVufSBmcm9tICcuLi92YWxpZGF0aW9uJztcblxuY29uc3QgQlVCQkxJTkdfRVZFTlRTX01BUCA9IHtcbiAgbW91c2VvdmVyOiAnbW91c2VlbnRlcicsXG4gIGZvY3VzaW46ICdmb2N1cycsXG4gIGNsaWNrOiAnY2xpY2snLFxufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVsZWdhdGUgaW5zdGFuY2UgdGhhdCBjb250cm9scyB0aGUgY3JlYXRpb24gb2YgdGlwcHkgaW5zdGFuY2VzXG4gKiBmb3IgY2hpbGQgZWxlbWVudHMgKGB0YXJnZXRgIENTUyBzZWxlY3RvcikuXG4gKi9cbmZ1bmN0aW9uIGRlbGVnYXRlKFxuICB0YXJnZXRzOiBUYXJnZXRzLFxuICBwcm9wczogUGFydGlhbDxQcm9wcz4gJiB7dGFyZ2V0OiBzdHJpbmd9XG4pOiBJbnN0YW5jZSB8IEluc3RhbmNlW10ge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoX19ERVZfXykge1xuICAgIGVycm9yV2hlbihcbiAgICAgICEocHJvcHMgJiYgcHJvcHMudGFyZ2V0KSxcbiAgICAgIFtcbiAgICAgICAgJ1lvdSBtdXN0IHNwZWNpdHkgYSBgdGFyZ2V0YCBwcm9wIGluZGljYXRpbmcgYSBDU1Mgc2VsZWN0b3Igc3RyaW5nIG1hdGNoaW5nJyxcbiAgICAgICAgJ3RoZSB0YXJnZXQgZWxlbWVudHMgdGhhdCBzaG91bGQgcmVjZWl2ZSBhIHRpcHB5LicsXG4gICAgICBdLmpvaW4oJyAnKVxuICAgICk7XG4gIH1cblxuICBsZXQgbGlzdGVuZXJzOiBMaXN0ZW5lck9iamVjdFtdID0gW107XG4gIGxldCBjaGlsZFRpcHB5SW5zdGFuY2VzOiBJbnN0YW5jZVtdID0gW107XG4gIGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHt0YXJnZXR9ID0gcHJvcHM7XG5cbiAgY29uc3QgbmF0aXZlUHJvcHMgPSByZW1vdmVQcm9wZXJ0aWVzKHByb3BzLCBbJ3RhcmdldCddKTtcbiAgY29uc3QgcGFyZW50UHJvcHMgPSB7Li4ubmF0aXZlUHJvcHMsIHRyaWdnZXI6ICdtYW51YWwnLCB0b3VjaDogZmFsc2V9O1xuICBjb25zdCBjaGlsZFByb3BzID0ge1xuICAgIHRvdWNoOiBkZWZhdWx0UHJvcHMudG91Y2gsXG4gICAgLi4ubmF0aXZlUHJvcHMsXG4gICAgc2hvd09uQ3JlYXRlOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IHJldHVyblZhbHVlID0gdGlwcHkodGFyZ2V0cywgcGFyZW50UHJvcHMpO1xuICBjb25zdCBub3JtYWxpemVkUmV0dXJuVmFsdWUgPSBub3JtYWxpemVUb0FycmF5KHJldHVyblZhbHVlKTtcblxuICBmdW5jdGlvbiBvblRyaWdnZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCFldmVudC50YXJnZXQgfHwgZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXROb2RlID0gKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0KHRhcmdldCk7XG5cbiAgICBpZiAoIXRhcmdldE5vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgcmVsZXZhbnQgdHJpZ2dlciB3aXRoIGZhbGxiYWNrczpcbiAgICAvLyAxLiBDaGVjayBgZGF0YS10aXBweS10cmlnZ2VyYCBhdHRyaWJ1dGUgb24gdGFyZ2V0IG5vZGVcbiAgICAvLyAyLiBGYWxsYmFjayB0byBgdHJpZ2dlcmAgcGFzc2VkIHRvIGBkZWxlZ2F0ZSgpYFxuICAgIC8vIDMuIEZhbGxiYWNrIHRvIGBkZWZhdWx0UHJvcHMudHJpZ2dlcmBcbiAgICBjb25zdCB0cmlnZ2VyID1cbiAgICAgIHRhcmdldE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXRpcHB5LXRyaWdnZXInKSB8fFxuICAgICAgcHJvcHMudHJpZ2dlciB8fFxuICAgICAgZGVmYXVsdFByb3BzLnRyaWdnZXI7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRhcmdldE5vZGUuX3RpcHB5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b3VjaHN0YXJ0JyAmJiB0eXBlb2YgY2hpbGRQcm9wcy50b3VjaCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZXZlbnQudHlwZSAhPT0gJ3RvdWNoc3RhcnQnICYmXG4gICAgICB0cmlnZ2VyLmluZGV4T2YoKEJVQkJMSU5HX0VWRU5UU19NQVAgYXMgYW55KVtldmVudC50eXBlXSkgPCAwXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aXBweSh0YXJnZXROb2RlLCBjaGlsZFByb3BzKTtcblxuICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgY2hpbGRUaXBweUluc3RhbmNlcyA9IGNoaWxkVGlwcHlJbnN0YW5jZXMuY29uY2F0KGluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbihcbiAgICBub2RlOiBFbGVtZW50LFxuICAgIGV2ZW50VHlwZTogc3RyaW5nLFxuICAgIGhhbmRsZXI6IEV2ZW50TGlzdGVuZXIsXG4gICAgb3B0aW9uczogYm9vbGVhbiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gZmFsc2VcbiAgKTogdm9pZCB7XG4gICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgbGlzdGVuZXJzLnB1c2goe25vZGUsIGV2ZW50VHlwZSwgaGFuZGxlciwgb3B0aW9uc30pO1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcnMoaW5zdGFuY2U6IEluc3RhbmNlKTogdm9pZCB7XG4gICAgY29uc3Qge3JlZmVyZW5jZX0gPSBpbnN0YW5jZTtcblxuICAgIG9uKHJlZmVyZW5jZSwgJ3RvdWNoc3RhcnQnLCBvblRyaWdnZXIsIFRPVUNIX09QVElPTlMpO1xuICAgIG9uKHJlZmVyZW5jZSwgJ21vdXNlb3ZlcicsIG9uVHJpZ2dlcik7XG4gICAgb24ocmVmZXJlbmNlLCAnZm9jdXNpbicsIG9uVHJpZ2dlcik7XG4gICAgb24ocmVmZXJlbmNlLCAnY2xpY2snLCBvblRyaWdnZXIpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goKHtub2RlLCBldmVudFR5cGUsIGhhbmRsZXIsIG9wdGlvbnN9OiBMaXN0ZW5lck9iamVjdCkgPT4ge1xuICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgfSk7XG4gICAgbGlzdGVuZXJzID0gW107XG4gIH1cblxuICBmdW5jdGlvbiBhcHBseU11dGF0aW9ucyhpbnN0YW5jZTogSW5zdGFuY2UpOiB2b2lkIHtcbiAgICBjb25zdCBvcmlnaW5hbERlc3Ryb3kgPSBpbnN0YW5jZS5kZXN0cm95O1xuICAgIGNvbnN0IG9yaWdpbmFsRW5hYmxlID0gaW5zdGFuY2UuZW5hYmxlO1xuICAgIGNvbnN0IG9yaWdpbmFsRGlzYWJsZSA9IGluc3RhbmNlLmRpc2FibGU7XG5cbiAgICBpbnN0YW5jZS5kZXN0cm95ID0gKHNob3VsZERlc3Ryb3lDaGlsZEluc3RhbmNlcyA9IHRydWUpOiB2b2lkID0+IHtcbiAgICAgIGlmIChzaG91bGREZXN0cm95Q2hpbGRJbnN0YW5jZXMpIHtcbiAgICAgICAgY2hpbGRUaXBweUluc3RhbmNlcy5mb3JFYWNoKChpbnN0YW5jZSkgPT4ge1xuICAgICAgICAgIGluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNoaWxkVGlwcHlJbnN0YW5jZXMgPSBbXTtcblxuICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgIG9yaWdpbmFsRGVzdHJveSgpO1xuICAgIH07XG5cbiAgICBpbnN0YW5jZS5lbmFibGUgPSAoKTogdm9pZCA9PiB7XG4gICAgICBvcmlnaW5hbEVuYWJsZSgpO1xuICAgICAgY2hpbGRUaXBweUluc3RhbmNlcy5mb3JFYWNoKChpbnN0YW5jZSkgPT4gaW5zdGFuY2UuZW5hYmxlKCkpO1xuICAgICAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9O1xuXG4gICAgaW5zdGFuY2UuZGlzYWJsZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIG9yaWdpbmFsRGlzYWJsZSgpO1xuICAgICAgY2hpbGRUaXBweUluc3RhbmNlcy5mb3JFYWNoKChpbnN0YW5jZSkgPT4gaW5zdGFuY2UuZGlzYWJsZSgpKTtcbiAgICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgYWRkRXZlbnRMaXN0ZW5lcnMoaW5zdGFuY2UpO1xuICB9XG5cbiAgbm9ybWFsaXplZFJldHVyblZhbHVlLmZvckVhY2goYXBwbHlNdXRhdGlvbnMpO1xuXG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGVsZWdhdGU7XG4iLCAiaW1wb3J0IHtCQUNLRFJPUF9DTEFTU30gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7ZGl2LCBzZXRWaXNpYmlsaXR5U3RhdGV9IGZyb20gJy4uL2RvbS11dGlscyc7XG5pbXBvcnQge2dldENoaWxkcmVufSBmcm9tICcuLi90ZW1wbGF0ZSc7XG5pbXBvcnQge0FuaW1hdGVGaWxsfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2Vycm9yV2hlbn0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5cbmNvbnN0IGFuaW1hdGVGaWxsOiBBbmltYXRlRmlsbCA9IHtcbiAgbmFtZTogJ2FuaW1hdGVGaWxsJyxcbiAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgZm4oaW5zdGFuY2UpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCFpbnN0YW5jZS5wcm9wcy5yZW5kZXI/LiQkdGlwcHkpIHtcbiAgICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICAgIGVycm9yV2hlbihcbiAgICAgICAgICBpbnN0YW5jZS5wcm9wcy5hbmltYXRlRmlsbCxcbiAgICAgICAgICAnVGhlIGBhbmltYXRlRmlsbGAgcGx1Z2luIHJlcXVpcmVzIHRoZSBkZWZhdWx0IHJlbmRlciBmdW5jdGlvbi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCB7Ym94LCBjb250ZW50fSA9IGdldENoaWxkcmVuKGluc3RhbmNlLnBvcHBlcik7XG5cbiAgICBjb25zdCBiYWNrZHJvcCA9IGluc3RhbmNlLnByb3BzLmFuaW1hdGVGaWxsXG4gICAgICA/IGNyZWF0ZUJhY2tkcm9wRWxlbWVudCgpXG4gICAgICA6IG51bGw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb25DcmVhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmIChiYWNrZHJvcCkge1xuICAgICAgICAgIGJveC5pbnNlcnRCZWZvcmUoYmFja2Ryb3AsIGJveC5maXJzdEVsZW1lbnRDaGlsZCEpO1xuICAgICAgICAgIGJveC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYW5pbWF0ZWZpbGwnLCAnJyk7XG4gICAgICAgICAgYm94LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG5cbiAgICAgICAgICBpbnN0YW5jZS5zZXRQcm9wcyh7YXJyb3c6IGZhbHNlLCBhbmltYXRpb246ICdzaGlmdC1hd2F5J30pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25Nb3VudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGJhY2tkcm9wKSB7XG4gICAgICAgICAgY29uc3Qge3RyYW5zaXRpb25EdXJhdGlvbn0gPSBib3guc3R5bGU7XG4gICAgICAgICAgY29uc3QgZHVyYXRpb24gPSBOdW1iZXIodHJhbnNpdGlvbkR1cmF0aW9uLnJlcGxhY2UoJ21zJywgJycpKTtcblxuICAgICAgICAgIC8vIFRoZSBjb250ZW50IHNob3VsZCBmYWRlIGluIGFmdGVyIHRoZSBiYWNrZHJvcCBoYXMgbW9zdGx5IGZpbGxlZCB0aGVcbiAgICAgICAgICAvLyB0b29sdGlwIGVsZW1lbnQuIGBjbGlwLXBhdGhgIGlzIHRoZSBvdGhlciBhbHRlcm5hdGl2ZSBidXQgaXMgbm90XG4gICAgICAgICAgLy8gd2VsbC1zdXBwb3J0ZWQgYW5kIGlzIGJ1Z2d5IG9uIHNvbWUgZGV2aWNlcy5cbiAgICAgICAgICBjb250ZW50LnN0eWxlLnRyYW5zaXRpb25EZWxheSA9IGAke01hdGgucm91bmQoZHVyYXRpb24gLyAxMCl9bXNgO1xuXG4gICAgICAgICAgYmFja2Ryb3Auc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gdHJhbnNpdGlvbkR1cmF0aW9uO1xuICAgICAgICAgIHNldFZpc2liaWxpdHlTdGF0ZShbYmFja2Ryb3BdLCAndmlzaWJsZScpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25TaG93KCk6IHZvaWQge1xuICAgICAgICBpZiAoYmFja2Ryb3ApIHtcbiAgICAgICAgICBiYWNrZHJvcC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMG1zJztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uSGlkZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGJhY2tkcm9wKSB7XG4gICAgICAgICAgc2V0VmlzaWJpbGl0eVN0YXRlKFtiYWNrZHJvcF0sICdoaWRkZW4nKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgYW5pbWF0ZUZpbGw7XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhY2tkcm9wRWxlbWVudCgpOiBIVE1MRGl2RWxlbWVudCB7XG4gIGNvbnN0IGJhY2tkcm9wID0gZGl2KCk7XG4gIGJhY2tkcm9wLmNsYXNzTmFtZSA9IEJBQ0tEUk9QX0NMQVNTO1xuICBzZXRWaXNpYmlsaXR5U3RhdGUoW2JhY2tkcm9wXSwgJ2hpZGRlbicpO1xuICByZXR1cm4gYmFja2Ryb3A7XG59XG4iLCAiaW1wb3J0IHtnZXRPd25lckRvY3VtZW50LCBpc01vdXNlRXZlbnR9IGZyb20gJy4uL2RvbS11dGlscyc7XG5pbXBvcnQge0ZvbGxvd0N1cnNvciwgSW5zdGFuY2V9IGZyb20gJy4uL3R5cGVzJztcblxubGV0IG1vdXNlQ29vcmRzID0ge2NsaWVudFg6IDAsIGNsaWVudFk6IDB9O1xubGV0IGFjdGl2ZUluc3RhbmNlczogQXJyYXk8e2luc3RhbmNlOiBJbnN0YW5jZTsgZG9jOiBEb2N1bWVudH0+ID0gW107XG5cbmZ1bmN0aW9uIHN0b3JlTW91c2VDb29yZHMoe2NsaWVudFgsIGNsaWVudFl9OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gIG1vdXNlQ29vcmRzID0ge2NsaWVudFgsIGNsaWVudFl9O1xufVxuXG5mdW5jdGlvbiBhZGRNb3VzZUNvb3Jkc0xpc3RlbmVyKGRvYzogRG9jdW1lbnQpOiB2b2lkIHtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHN0b3JlTW91c2VDb29yZHMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVNb3VzZUNvb3Jkc0xpc3RlbmVyKGRvYzogRG9jdW1lbnQpOiB2b2lkIHtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHN0b3JlTW91c2VDb29yZHMpO1xufVxuXG5jb25zdCBmb2xsb3dDdXJzb3I6IEZvbGxvd0N1cnNvciA9IHtcbiAgbmFtZTogJ2ZvbGxvd0N1cnNvcicsXG4gIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gIGZuKGluc3RhbmNlKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gaW5zdGFuY2UucmVmZXJlbmNlO1xuICAgIGNvbnN0IGRvYyA9IGdldE93bmVyRG9jdW1lbnQoaW5zdGFuY2UucHJvcHMudHJpZ2dlclRhcmdldCB8fCByZWZlcmVuY2UpO1xuXG4gICAgbGV0IGlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcbiAgICBsZXQgd2FzRm9jdXNFdmVudCA9IGZhbHNlO1xuICAgIGxldCBpc1VubW91bnRlZCA9IHRydWU7XG4gICAgbGV0IHByZXZQcm9wcyA9IGluc3RhbmNlLnByb3BzO1xuXG4gICAgZnVuY3Rpb24gZ2V0SXNJbml0aWFsQmVoYXZpb3IoKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBpbnN0YW5jZS5wcm9wcy5mb2xsb3dDdXJzb3IgPT09ICdpbml0aWFsJyAmJiBpbnN0YW5jZS5zdGF0ZS5pc1Zpc2libGVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bnNldEdldFJlZmVyZW5jZUNsaWVudFJlY3QoKTogdm9pZCB7XG4gICAgICBpc0ludGVybmFsVXBkYXRlID0gdHJ1ZTtcbiAgICAgIGluc3RhbmNlLnNldFByb3BzKHtnZXRSZWZlcmVuY2VDbGllbnRSZWN0OiBudWxsfSk7XG4gICAgICBpc0ludGVybmFsVXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgIC8vIElmIHRoZSBpbnN0YW5jZSBpcyBpbnRlcmFjdGl2ZSwgYXZvaWQgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHVubGVzcyBpdCdzXG4gICAgICAvLyBvdmVyIHRoZSByZWZlcmVuY2UgZWxlbWVudFxuICAgICAgY29uc3QgaXNDdXJzb3JPdmVyUmVmZXJlbmNlID0gZXZlbnQudGFyZ2V0XG4gICAgICAgID8gcmVmZXJlbmNlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICAgICAgICA6IHRydWU7XG4gICAgICBjb25zdCB7Zm9sbG93Q3Vyc29yfSA9IGluc3RhbmNlLnByb3BzO1xuICAgICAgY29uc3Qge2NsaWVudFgsIGNsaWVudFl9ID0gZXZlbnQ7XG5cbiAgICAgIGNvbnN0IHJlY3QgPSByZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCByZWxhdGl2ZVggPSBjbGllbnRYIC0gcmVjdC5sZWZ0O1xuICAgICAgY29uc3QgcmVsYXRpdmVZID0gY2xpZW50WSAtIHJlY3QudG9wO1xuXG4gICAgICBpZiAoaXNDdXJzb3JPdmVyUmVmZXJlbmNlIHx8ICFpbnN0YW5jZS5wcm9wcy5pbnRlcmFjdGl2ZSkge1xuICAgICAgICBpbnN0YW5jZS5zZXRQcm9wcyh7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIHVubmVlZGVkIERPTVJlY3QgcHJvcGVydGllc1xuICAgICAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3QoKSB7XG4gICAgICAgICAgICBjb25zdCByZWN0ID0gcmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICBsZXQgeCA9IGNsaWVudFg7XG4gICAgICAgICAgICBsZXQgeSA9IGNsaWVudFk7XG5cbiAgICAgICAgICAgIGlmIChmb2xsb3dDdXJzb3IgPT09ICdpbml0aWFsJykge1xuICAgICAgICAgICAgICB4ID0gcmVjdC5sZWZ0ICsgcmVsYXRpdmVYO1xuICAgICAgICAgICAgICB5ID0gcmVjdC50b3AgKyByZWxhdGl2ZVk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZvbGxvd0N1cnNvciA9PT0gJ2hvcml6b250YWwnID8gcmVjdC50b3AgOiB5O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBmb2xsb3dDdXJzb3IgPT09ICd2ZXJ0aWNhbCcgPyByZWN0LnJpZ2h0IDogeDtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGZvbGxvd0N1cnNvciA9PT0gJ2hvcml6b250YWwnID8gcmVjdC5ib3R0b20gOiB5O1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGZvbGxvd0N1cnNvciA9PT0gJ3ZlcnRpY2FsJyA/IHJlY3QubGVmdCA6IHg7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHdpZHRoOiByaWdodCAtIGxlZnQsXG4gICAgICAgICAgICAgIGhlaWdodDogYm90dG9tIC0gdG9wLFxuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgIGlmIChpbnN0YW5jZS5wcm9wcy5mb2xsb3dDdXJzb3IpIHtcbiAgICAgICAgYWN0aXZlSW5zdGFuY2VzLnB1c2goe2luc3RhbmNlLCBkb2N9KTtcbiAgICAgICAgYWRkTW91c2VDb29yZHNMaXN0ZW5lcihkb2MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICBhY3RpdmVJbnN0YW5jZXMgPSBhY3RpdmVJbnN0YW5jZXMuZmlsdGVyKFxuICAgICAgICAoZGF0YSkgPT4gZGF0YS5pbnN0YW5jZSAhPT0gaW5zdGFuY2VcbiAgICAgICk7XG5cbiAgICAgIGlmIChhY3RpdmVJbnN0YW5jZXMuZmlsdGVyKChkYXRhKSA9PiBkYXRhLmRvYyA9PT0gZG9jKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVtb3ZlTW91c2VDb29yZHNMaXN0ZW5lcihkb2MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvbkNyZWF0ZTogY3JlYXRlLFxuICAgICAgb25EZXN0cm95OiBkZXN0cm95LFxuICAgICAgb25CZWZvcmVVcGRhdGUoKTogdm9pZCB7XG4gICAgICAgIHByZXZQcm9wcyA9IGluc3RhbmNlLnByb3BzO1xuICAgICAgfSxcbiAgICAgIG9uQWZ0ZXJVcGRhdGUoXywge2ZvbGxvd0N1cnNvcn0pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzSW50ZXJuYWxVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZm9sbG93Q3Vyc29yICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBwcmV2UHJvcHMuZm9sbG93Q3Vyc29yICE9PSBmb2xsb3dDdXJzb3JcbiAgICAgICAgKSB7XG4gICAgICAgICAgZGVzdHJveSgpO1xuXG4gICAgICAgICAgaWYgKGZvbGxvd0N1cnNvcikge1xuICAgICAgICAgICAgY3JlYXRlKCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RhdGUuaXNNb3VudGVkICYmXG4gICAgICAgICAgICAgICF3YXNGb2N1c0V2ZW50ICYmXG4gICAgICAgICAgICAgICFnZXRJc0luaXRpYWxCZWhhdmlvcigpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHVuc2V0R2V0UmVmZXJlbmNlQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uTW91bnQoKTogdm9pZCB7XG4gICAgICAgIGlmIChpbnN0YW5jZS5wcm9wcy5mb2xsb3dDdXJzb3IgJiYgIXdhc0ZvY3VzRXZlbnQpIHtcbiAgICAgICAgICBpZiAoaXNVbm1vdW50ZWQpIHtcbiAgICAgICAgICAgIG9uTW91c2VNb3ZlKG1vdXNlQ29vcmRzIGFzIE1vdXNlRXZlbnQpO1xuICAgICAgICAgICAgaXNVbm1vdW50ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWdldElzSW5pdGlhbEJlaGF2aW9yKCkpIHtcbiAgICAgICAgICAgIGFkZExpc3RlbmVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25UcmlnZ2VyKF8sIGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChpc01vdXNlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgbW91c2VDb29yZHMgPSB7Y2xpZW50WDogZXZlbnQuY2xpZW50WCwgY2xpZW50WTogZXZlbnQuY2xpZW50WX07XG4gICAgICAgIH1cbiAgICAgICAgd2FzRm9jdXNFdmVudCA9IGV2ZW50LnR5cGUgPT09ICdmb2N1cyc7XG4gICAgICB9LFxuICAgICAgb25IaWRkZW4oKTogdm9pZCB7XG4gICAgICAgIGlmIChpbnN0YW5jZS5wcm9wcy5mb2xsb3dDdXJzb3IpIHtcbiAgICAgICAgICB1bnNldEdldFJlZmVyZW5jZUNsaWVudFJlY3QoKTtcbiAgICAgICAgICByZW1vdmVMaXN0ZW5lcigpO1xuICAgICAgICAgIGlzVW5tb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZm9sbG93Q3Vyc29yO1xuIiwgImltcG9ydCB7TW9kaWZpZXIsIFBsYWNlbWVudH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xuaW1wb3J0IHtpc01vdXNlRXZlbnR9IGZyb20gJy4uL2RvbS11dGlscyc7XG5pbXBvcnQge0Jhc2VQbGFjZW1lbnQsIElubGluZVBvc2l0aW9uaW5nLCBQcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHthcnJheUZyb20sIGdldEJhc2VQbGFjZW1lbnR9IGZyb20gJy4uL3V0aWxzJztcblxuZnVuY3Rpb24gZ2V0UHJvcHMocHJvcHM6IFByb3BzLCBtb2RpZmllcjogTW9kaWZpZXI8YW55LCBhbnk+KTogUGFydGlhbDxQcm9wcz4ge1xuICByZXR1cm4ge1xuICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgIC4uLnByb3BzLnBvcHBlck9wdGlvbnMsXG4gICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAgLi4uKHByb3BzLnBvcHBlck9wdGlvbnM/Lm1vZGlmaWVycyB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICh7bmFtZX0pID0+IG5hbWUgIT09IG1vZGlmaWVyLm5hbWVcbiAgICAgICAgKSxcbiAgICAgICAgbW9kaWZpZXIsXG4gICAgICBdLFxuICAgIH0sXG4gIH07XG59XG5cbmNvbnN0IGlubGluZVBvc2l0aW9uaW5nOiBJbmxpbmVQb3NpdGlvbmluZyA9IHtcbiAgbmFtZTogJ2lubGluZVBvc2l0aW9uaW5nJyxcbiAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgZm4oaW5zdGFuY2UpIHtcbiAgICBjb25zdCB7cmVmZXJlbmNlfSA9IGluc3RhbmNlO1xuXG4gICAgZnVuY3Rpb24gaXNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuICEhaW5zdGFuY2UucHJvcHMuaW5saW5lUG9zaXRpb25pbmc7XG4gICAgfVxuXG4gICAgbGV0IHBsYWNlbWVudDogUGxhY2VtZW50O1xuICAgIGxldCBjdXJzb3JSZWN0SW5kZXggPSAtMTtcbiAgICBsZXQgaXNJbnRlcm5hbFVwZGF0ZSA9IGZhbHNlO1xuICAgIGxldCB0cmllZFBsYWNlbWVudHM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgIGNvbnN0IG1vZGlmaWVyOiBNb2RpZmllcjxcbiAgICAgICd0aXBweUlubGluZVBvc2l0aW9uaW5nJyxcbiAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgPiA9IHtcbiAgICAgIG5hbWU6ICd0aXBweUlubGluZVBvc2l0aW9uaW5nJyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBwaGFzZTogJ2FmdGVyV3JpdGUnLFxuICAgICAgZm4oe3N0YXRlfSkge1xuICAgICAgICBpZiAoaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICBpZiAodHJpZWRQbGFjZW1lbnRzLmluZGV4T2Yoc3RhdGUucGxhY2VtZW50KSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRyaWVkUGxhY2VtZW50cyA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHBsYWNlbWVudCAhPT0gc3RhdGUucGxhY2VtZW50ICYmXG4gICAgICAgICAgICB0cmllZFBsYWNlbWVudHMuaW5kZXhPZihzdGF0ZS5wbGFjZW1lbnQpID09PSAtMVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdHJpZWRQbGFjZW1lbnRzLnB1c2goc3RhdGUucGxhY2VtZW50KTtcbiAgICAgICAgICAgIGluc3RhbmNlLnNldFByb3BzKHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIHVubmVlZGVkIERPTVJlY3QgcHJvcGVydGllc1xuICAgICAgICAgICAgICBnZXRSZWZlcmVuY2VDbGllbnRSZWN0OiAoKSA9PlxuICAgICAgICAgICAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3Qoc3RhdGUucGxhY2VtZW50KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBsYWNlbWVudCA9IHN0YXRlLnBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdChwbGFjZW1lbnQ6IFBsYWNlbWVudCk6IFBhcnRpYWw8RE9NUmVjdD4ge1xuICAgICAgcmV0dXJuIGdldElubGluZUJvdW5kaW5nQ2xpZW50UmVjdChcbiAgICAgICAgZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpLFxuICAgICAgICByZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgIGFycmF5RnJvbShyZWZlcmVuY2UuZ2V0Q2xpZW50UmVjdHMoKSksXG4gICAgICAgIGN1cnNvclJlY3RJbmRleFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRJbnRlcm5hbFByb3BzKHBhcnRpYWxQcm9wczogUGFydGlhbDxQcm9wcz4pOiB2b2lkIHtcbiAgICAgIGlzSW50ZXJuYWxVcGRhdGUgPSB0cnVlO1xuICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMocGFydGlhbFByb3BzKTtcbiAgICAgIGlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRNb2RpZmllcigpOiB2b2lkIHtcbiAgICAgIGlmICghaXNJbnRlcm5hbFVwZGF0ZSkge1xuICAgICAgICBzZXRJbnRlcm5hbFByb3BzKGdldFByb3BzKGluc3RhbmNlLnByb3BzLCBtb2RpZmllcikpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvbkNyZWF0ZTogYWRkTW9kaWZpZXIsXG4gICAgICBvbkFmdGVyVXBkYXRlOiBhZGRNb2RpZmllcixcbiAgICAgIG9uVHJpZ2dlcihfLCBldmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNNb3VzZUV2ZW50KGV2ZW50KSkge1xuICAgICAgICAgIGNvbnN0IHJlY3RzID0gYXJyYXlGcm9tKGluc3RhbmNlLnJlZmVyZW5jZS5nZXRDbGllbnRSZWN0cygpKTtcbiAgICAgICAgICBjb25zdCBjdXJzb3JSZWN0ID0gcmVjdHMuZmluZChcbiAgICAgICAgICAgIChyZWN0KSA9PlxuICAgICAgICAgICAgICByZWN0LmxlZnQgLSAyIDw9IGV2ZW50LmNsaWVudFggJiZcbiAgICAgICAgICAgICAgcmVjdC5yaWdodCArIDIgPj0gZXZlbnQuY2xpZW50WCAmJlxuICAgICAgICAgICAgICByZWN0LnRvcCAtIDIgPD0gZXZlbnQuY2xpZW50WSAmJlxuICAgICAgICAgICAgICByZWN0LmJvdHRvbSArIDIgPj0gZXZlbnQuY2xpZW50WVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSByZWN0cy5pbmRleE9mKGN1cnNvclJlY3QpO1xuICAgICAgICAgIGN1cnNvclJlY3RJbmRleCA9IGluZGV4ID4gLTEgPyBpbmRleCA6IGN1cnNvclJlY3RJbmRleDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uSGlkZGVuKCk6IHZvaWQge1xuICAgICAgICBjdXJzb3JSZWN0SW5kZXggPSAtMTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlubGluZVBvc2l0aW9uaW5nO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5saW5lQm91bmRpbmdDbGllbnRSZWN0KFxuICBjdXJyZW50QmFzZVBsYWNlbWVudDogQmFzZVBsYWNlbWVudCB8IG51bGwsXG4gIGJvdW5kaW5nUmVjdDogRE9NUmVjdCxcbiAgY2xpZW50UmVjdHM6IERPTVJlY3RbXSxcbiAgY3Vyc29yUmVjdEluZGV4OiBudW1iZXJcbik6IHtcbiAgdG9wOiBudW1iZXI7XG4gIGJvdHRvbTogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIHJpZ2h0OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufSB7XG4gIC8vIE5vdCBhbiBpbmxpbmUgZWxlbWVudCwgb3IgcGxhY2VtZW50IGlzIG5vdCB5ZXQga25vd25cbiAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA8IDIgfHwgY3VycmVudEJhc2VQbGFjZW1lbnQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gYm91bmRpbmdSZWN0O1xuICB9XG5cbiAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkXG4gIGlmIChcbiAgICBjbGllbnRSZWN0cy5sZW5ndGggPT09IDIgJiZcbiAgICBjdXJzb3JSZWN0SW5kZXggPj0gMCAmJlxuICAgIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodFxuICApIHtcbiAgICByZXR1cm4gY2xpZW50UmVjdHNbY3Vyc29yUmVjdEluZGV4XSB8fCBib3VuZGluZ1JlY3Q7XG4gIH1cblxuICBzd2l0Y2ggKGN1cnJlbnRCYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOiB7XG4gICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBpc1RvcCA9IGN1cnJlbnRCYXNlUGxhY2VtZW50ID09PSAndG9wJztcblxuICAgICAgY29uc3QgdG9wID0gZmlyc3RSZWN0LnRvcDtcbiAgICAgIGNvbnN0IGJvdHRvbSA9IGxhc3RSZWN0LmJvdHRvbTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpc1RvcCA/IGZpcnN0UmVjdC5sZWZ0IDogbGFzdFJlY3QubGVmdDtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gaXNUb3AgPyBmaXJzdFJlY3QucmlnaHQgOiBsYXN0UmVjdC5yaWdodDtcbiAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuXG4gICAgICByZXR1cm4ge3RvcCwgYm90dG9tLCBsZWZ0LCByaWdodCwgd2lkdGgsIGhlaWdodH07XG4gICAgfVxuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0Jzoge1xuICAgICAgY29uc3QgbWluTGVmdCA9IE1hdGgubWluKC4uLmNsaWVudFJlY3RzLm1hcCgocmVjdHMpID0+IHJlY3RzLmxlZnQpKTtcbiAgICAgIGNvbnN0IG1heFJpZ2h0ID0gTWF0aC5tYXgoLi4uY2xpZW50UmVjdHMubWFwKChyZWN0cykgPT4gcmVjdHMucmlnaHQpKTtcbiAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcigocmVjdCkgPT5cbiAgICAgICAgY3VycmVudEJhc2VQbGFjZW1lbnQgPT09ICdsZWZ0J1xuICAgICAgICAgID8gcmVjdC5sZWZ0ID09PSBtaW5MZWZ0XG4gICAgICAgICAgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgY29uc3QgbGVmdCA9IG1pbkxlZnQ7XG4gICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG5cbiAgICAgIHJldHVybiB7dG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LCB3aWR0aCwgaGVpZ2h0fTtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIGJvdW5kaW5nUmVjdDtcbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQge1ZpcnR1YWxFbGVtZW50fSBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5pbXBvcnQge1JlZmVyZW5jZUVsZW1lbnQsIFN0aWNreX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBzdGlja3k6IFN0aWNreSA9IHtcbiAgbmFtZTogJ3N0aWNreScsXG4gIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gIGZuKGluc3RhbmNlKSB7XG4gICAgY29uc3Qge3JlZmVyZW5jZSwgcG9wcGVyfSA9IGluc3RhbmNlO1xuXG4gICAgZnVuY3Rpb24gZ2V0UmVmZXJlbmNlKCk6IFJlZmVyZW5jZUVsZW1lbnQgfCBWaXJ0dWFsRWxlbWVudCB7XG4gICAgICByZXR1cm4gaW5zdGFuY2UucG9wcGVySW5zdGFuY2VcbiAgICAgICAgPyBpbnN0YW5jZS5wb3BwZXJJbnN0YW5jZS5zdGF0ZS5lbGVtZW50cy5yZWZlcmVuY2VcbiAgICAgICAgOiByZWZlcmVuY2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2hvdWxkQ2hlY2sodmFsdWU6ICdyZWZlcmVuY2UnIHwgJ3BvcHBlcicpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBpbnN0YW5jZS5wcm9wcy5zdGlja3kgPT09IHRydWUgfHwgaW5zdGFuY2UucHJvcHMuc3RpY2t5ID09PSB2YWx1ZTtcbiAgICB9XG5cbiAgICBsZXQgcHJldlJlZlJlY3Q6IENsaWVudFJlY3QgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgcHJldlBvcFJlY3Q6IENsaWVudFJlY3QgfCBudWxsID0gbnVsbDtcblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgY29uc3QgY3VycmVudFJlZlJlY3QgPSBzaG91bGRDaGVjaygncmVmZXJlbmNlJylcbiAgICAgICAgPyBnZXRSZWZlcmVuY2UoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICA6IG51bGw7XG4gICAgICBjb25zdCBjdXJyZW50UG9wUmVjdCA9IHNob3VsZENoZWNrKCdwb3BwZXInKVxuICAgICAgICA/IHBvcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICA6IG51bGw7XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGN1cnJlbnRSZWZSZWN0ICYmIGFyZVJlY3RzRGlmZmVyZW50KHByZXZSZWZSZWN0LCBjdXJyZW50UmVmUmVjdCkpIHx8XG4gICAgICAgIChjdXJyZW50UG9wUmVjdCAmJiBhcmVSZWN0c0RpZmZlcmVudChwcmV2UG9wUmVjdCwgY3VycmVudFBvcFJlY3QpKVxuICAgICAgKSB7XG4gICAgICAgIGlmIChpbnN0YW5jZS5wb3BwZXJJbnN0YW5jZSkge1xuICAgICAgICAgIGluc3RhbmNlLnBvcHBlckluc3RhbmNlLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByZXZSZWZSZWN0ID0gY3VycmVudFJlZlJlY3Q7XG4gICAgICBwcmV2UG9wUmVjdCA9IGN1cnJlbnRQb3BSZWN0O1xuXG4gICAgICBpZiAoaW5zdGFuY2Uuc3RhdGUuaXNNb3VudGVkKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVQb3NpdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9uTW91bnQoKTogdm9pZCB7XG4gICAgICAgIGlmIChpbnN0YW5jZS5wcm9wcy5zdGlja3kpIHtcbiAgICAgICAgICB1cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBzdGlja3k7XG5cbmZ1bmN0aW9uIGFyZVJlY3RzRGlmZmVyZW50KFxuICByZWN0QTogQ2xpZW50UmVjdCB8IG51bGwsXG4gIHJlY3RCOiBDbGllbnRSZWN0IHwgbnVsbFxuKTogYm9vbGVhbiB7XG4gIGlmIChyZWN0QSAmJiByZWN0Qikge1xuICAgIHJldHVybiAoXG4gICAgICByZWN0QS50b3AgIT09IHJlY3RCLnRvcCB8fFxuICAgICAgcmVjdEEucmlnaHQgIT09IHJlY3RCLnJpZ2h0IHx8XG4gICAgICByZWN0QS5ib3R0b20gIT09IHJlY3RCLmJvdHRvbSB8fFxuICAgICAgcmVjdEEubGVmdCAhPT0gcmVjdEIubGVmdFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiIsICJpbXBvcnQgdGlwcHkgZnJvbSAnLi4vc3JjJztcbmltcG9ydCB7cmVuZGVyfSBmcm9tICcuLi9zcmMvdGVtcGxhdGUnO1xuXG50aXBweS5zZXREZWZhdWx0UHJvcHMoe3JlbmRlcn0pO1xuXG5leHBvcnQge2RlZmF1bHQsIGhpZGVBbGx9IGZyb20gJy4uL3NyYyc7XG5leHBvcnQge2RlZmF1bHQgYXMgY3JlYXRlU2luZ2xldG9ufSBmcm9tICcuLi9zcmMvYWRkb25zL2NyZWF0ZVNpbmdsZXRvbic7XG5leHBvcnQge2RlZmF1bHQgYXMgZGVsZWdhdGV9IGZyb20gJy4uL3NyYy9hZGRvbnMvZGVsZWdhdGUnO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGFuaW1hdGVGaWxsfSBmcm9tICcuLi9zcmMvcGx1Z2lucy9hbmltYXRlRmlsbCc7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9sbG93Q3Vyc29yfSBmcm9tICcuLi9zcmMvcGx1Z2lucy9mb2xsb3dDdXJzb3InO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGlubGluZVBvc2l0aW9uaW5nfSBmcm9tICcuLi9zcmMvcGx1Z2lucy9pbmxpbmVQb3NpdGlvbmluZyc7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RpY2t5fSBmcm9tICcuLi9zcmMvcGx1Z2lucy9zdGlja3knO1xuZXhwb3J0IHtST1VORF9BUlJPVyBhcyByb3VuZEFycm93fSBmcm9tICcuLi9zcmMvY29uc3RhbnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQSxvRkFBQUEsVUFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxRQUFRLFNBQVUsSUFBSTtBQUN4QixhQUFPLE1BQU0sR0FBRyxTQUFTLFFBQVE7QUFBQSxJQUNuQztBQUdBLElBQUFBLFFBQU87QUFBQSxJQUVMLE1BQU0sT0FBTyxjQUFjLFlBQVksVUFBVSxLQUNqRCxNQUFNLE9BQU8sVUFBVSxZQUFZLE1BQU07QUFBQSxJQUV6QyxNQUFNLE9BQU8sUUFBUSxZQUFZLElBQUksS0FDckMsTUFBTSxPQUFPLFVBQVUsWUFBWSxNQUFNLEtBQ3pDLE1BQU0sT0FBT0QsWUFBUSxZQUFZQSxRQUFJO0FBQUEsSUFFcEMsMkJBQVk7QUFBRSxhQUFPO0FBQUEsSUFBTSxFQUFHLEtBQUssU0FBUyxhQUFhLEVBQUU7QUFBQTtBQUFBOzs7QUNmOUQ7QUFBQSw4RUFBQUUsVUFBQUMsU0FBQTtBQUFBO0FBQ0EsSUFBQUEsUUFBTyxVQUFVLFNBQVUsTUFBTTtBQUMvQixVQUFJO0FBQ0YsZUFBTyxDQUFDLENBQUMsS0FBSztBQUFBLE1BQ2hCLFNBQVMsT0FBTztBQUNkLGVBQU87QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ1BBO0FBQUEsb0ZBQUFDLFVBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksUUFBUTtBQUdaLElBQUFBLFFBQU8sVUFBVSxDQUFDLE1BQU0sV0FBWTtBQUVsQyxhQUFPLE9BQU8sZUFBZSxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssV0FBWTtBQUFFLGVBQU87QUFBQSxNQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTTtBQUFBLElBQ2pGLENBQUM7QUFBQTtB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VDtJQUNEO0FBRUQsV0FBTzNOO0VBQ1IsR0FDRCxDQUFBLENBVmdCO0FBYWxCLFNBQU80Z0IsV0FBVXdRLE9BQUQsSUFBWUssVUFBVSxDQUFELElBQU1BO0FBQzVDO0FBRUQ1eUIsTUFBTW1tQixlQUFlQTtBQUNyQm5tQixNQUFNbW9CLGtCQUFrQkE7QUFDeEJub0IsTUFBTXFrQixlQUFlQTtBQzlDckIsSUFBTXdPLHNCQUFxRXh2QixPQUFBUSxPQUFBLENBQUEsR0FDdEVrQixxQkFEc0U7RUFFekViLFFBRnlFLFNBQUE0dUIsUUFBQTN2QixNQUV6RDtBQUFBLFFBQVJDLFFBQVFELEtBQVJDO0FBQ04sUUFBTWdCLGdCQUFnQjtNQUNwQnJELFFBQVE7UUFDTnNELFVBQVVqQixNQUFNa0IsUUFBUUM7UUFDeEIvRCxNQUFNO1FBQ05ILEtBQUs7UUFDTG1FLFFBQVE7TUFKRjtNQU1SQyxPQUFPO1FBQ0xKLFVBQVU7TUFETDtNQUdQckQsV0FBVyxDQUFBO0lBVlM7QUFhdEJxQyxXQUFPUSxPQUFPVCxNQUFNRyxTQUFTeEMsT0FBTzJDLE9BQU9VLGNBQWNyRCxNQUF6RDtBQUNBcUMsVUFBTU8sU0FBU1M7QUFFZixRQUFJaEIsTUFBTUcsU0FBU2tCLE9BQU87QUFDeEJwQixhQUFPUSxPQUFPVCxNQUFNRyxTQUFTa0IsTUFBTWYsT0FBT1UsY0FBY0ssS0FBeEQ7SUFDRDtFQUlGO0FBekJ3RSxDQUFBO0FNaEIzRXpFLE1BQU1tb0IsZ0JBQWdCO0VBQUNOO0FBQUQsQ0FBdEI7OyIsCiAgIm5hbWVzIjogWyJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZuIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJuYXZpZ2F0b3IiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZuIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIlN5bWJvbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgImRvY3VtZW50IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiVHlwZUVycm9yIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm1heCIsICJtaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZuIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNldCIsICJmbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTZXQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibWF4IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNldCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTZXQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVGlwcHlfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJ0aXBweSIsICJ0aXBweV9lc21fZGVmYXVsdCIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJfX3RvQ29tbW9uSlMiLCAidG9wIiwgImJvdHRvbSIsICJyaWdodCIsICJsZWZ0IiwgImF1dG8iLCAiYmFzZVBsYWNlbWVudHMiLCAic3RhcnQiLCAiZW5kIiwgImNsaXBwaW5nUGFyZW50cyIsICJ2aWV3cG9ydCIsICJwb3BwZXIiLCAicmVmZXJlbmNlIiwgInZhcmlhdGlvblBsYWNlbWVudHMiLCAicmVkdWNlIiwgImFjYyIsICJwbGFjZW1lbnQiLCAiY29uY2F0IiwgInBsYWNlbWVudHMiLCAiYmVmb3JlUmVhZCIsICJyZWFkIiwgImFmdGVyUmVhZCIsICJiZWZvcmVNYWluIiwgIm1haW4iLCAiYWZ0ZXJNYWluIiwgImJlZm9yZVdyaXRlIiwgIndyaXRlIiwgImFmdGVyV3JpdGUiLCAibW9kaWZpZXJQaGFzZXMiLCAiZ2V0Tm9kZU5hbWUiLCAiZWxlbWVudCIsICJub2RlTmFtZSIsICJ0b0xvd2VyQ2FzZSIsICJnZXRXaW5kb3ciLCAibm9kZSIsICJ3aW5kb3ciLCAidG9TdHJpbmciLCAib3duZXJEb2N1bWVudCIsICJkZWZhdWx0VmlldyIsICJpc0VsZW1lbnQiLCAiT3duRWxlbWVudCIsICJFbGVtZW50IiwgImlzSFRNTEVsZW1lbnQiLCAiSFRNTEVsZW1lbnQiLCAiaXNTaGFkb3dSb290IiwgIlNoYWRvd1Jvb3QiLCAiYXBwbHlTdHlsZXMiLCAiX3JlZiIsICJzdGF0ZSIsICJPYmplY3QiLCAia2V5cyIsICJlbGVtZW50cyIsICJmb3JFYWNoIiwgIm5hbWUiLCAic3R5bGUiLCAic3R5bGVzIiwgImF0dHJpYnV0ZXMiLCAiYXNzaWduIiwgIm5hbWUyIiwgInZhbHVlIiwgInJlbW92ZUF0dHJpYnV0ZSIsICJzZXRBdHRyaWJ1dGUiLCAiZWZmZWN0IiwgIl9yZWYyIiwgImluaXRpYWxTdHlsZXMiLCAicG9zaXRpb24iLCAib3B0aW9ucyIsICJzdHJhdGVneSIsICJtYXJnaW4iLCAiYXJyb3ciLCAic3R5bGVQcm9wZXJ0aWVzIiwgImhhc093blByb3BlcnR5IiwgInN0eWxlMiIsICJwcm9wZXJ0eSIsICJhdHRyaWJ1dGUiLCAiYXBwbHlTdHlsZXNfZGVmYXVsdCIsICJlbmFibGVkIiwgInBoYXNlIiwgImZuIiwgInJlcXVpcmVzIiwgImdldEJhc2VQbGFjZW1lbnQiLCAic3BsaXQiLCAibWF4IiwgIk1hdGgiLCAibWluIiwgInJvdW5kIiwgImdldFVBU3RyaW5nIiwgInVhRGF0YSIsICJuYXZpZ2F0b3IiLCAidXNlckFnZW50RGF0YSIsICJicmFuZHMiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJtYXAiLCAiaXRlbSIsICJicmFuZCIsICJ2ZXJzaW9uIiwgImpvaW4iLCAidXNlckFnZW50IiwgImlzTGF5b3V0Vmlld3BvcnQiLCAidGVzdCIsICJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCAiaW5jbHVkZVNjYWxlIiwgImlzRml4ZWRTdHJhdGVneSIsICJjbGllbnRSZWN0IiwgInNjYWxlWCIsICJzY2FsZVkiLCAib2Zmc2V0V2lkdGgiLCAid2lkdGgiLCAib2Zmc2V0SGVpZ2h0IiwgImhlaWdodCIsICJ2aXN1YWxWaWV3cG9ydCIsICJhZGRWaXN1YWxPZmZzZXRzIiwgIngiLCAib2Zmc2V0TGVmdCIsICJ5IiwgIm9mZnNldFRvcCIsICJnZXRMYXlvdXRSZWN0IiwgImFicyIsICJjb250YWlucyIsICJwYXJlbnQiLCAiY2hpbGQiLCAicm9vdE5vZGUiLCAiZ2V0Um9vdE5vZGUiLCAibmV4dCIsICJpc1NhbWVOb2RlIiwgInBhcmVudE5vZGUiLCAiaG9zdCIsICJnZXRDb21wdXRlZFN0eWxlIiwgImlzVGFibGVFbGVtZW50IiwgImluZGV4T2YiLCAiZ2V0RG9jdW1lbnRFbGVtZW50IiwgImRvY3VtZW50IiwgImRvY3VtZW50RWxlbWVudCIsICJnZXRQYXJlbnROb2RlIiwgImFzc2lnbmVkU2xvdCIsICJnZXRUcnVlT2Zmc2V0UGFyZW50IiwgIm9mZnNldFBhcmVudCIsICJnZXRDb250YWluaW5nQmxvY2siLCAiaXNGaXJlZm94IiwgImlzSUUiLCAiZWxlbWVudENzcyIsICJjdXJyZW50Tm9kZSIsICJjc3MiLCAidHJhbnNmb3JtIiwgInBlcnNwZWN0aXZlIiwgImNvbnRhaW4iLCAid2lsbENoYW5nZSIsICJmaWx0ZXIiLCAiZ2V0T2Zmc2V0UGFyZW50IiwgIndpbmRvdzIiLCAiZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IiwgIndpdGhpbiIsICJtaW4yIiwgIm1heDIiLCAid2l0aGluTWF4Q2xhbXAiLCAidiIsICJnZXRGcmVzaFNpZGVPYmplY3QiLCAibWVyZ2VQYWRkaW5nT2JqZWN0IiwgInBhZGRpbmdPYmplY3QiLCAiZXhwYW5kVG9IYXNoTWFwIiwgImhhc2hNYXAiLCAia2V5IiwgInRvUGFkZGluZ09iamVjdCIsICJ0b1BhZGRpbmdPYmplY3QyIiwgInBhZGRpbmciLCAicmVjdHMiLCAiX3N0YXRlJG1vZGlmaWVyc0RhdGEkIiwgImFycm93RWxlbWVudCIsICJwb3BwZXJPZmZzZXRzMiIsICJtb2RpZmllcnNEYXRhIiwgInBvcHBlck9mZnNldHMiLCAiYmFzZVBsYWNlbWVudCIsICJheGlzIiwgImlzVmVydGljYWwiLCAibGVuIiwgImFycm93UmVjdCIsICJtaW5Qcm9wIiwgIm1heFByb3AiLCAiZW5kRGlmZiIsICJzdGFydERpZmYiLCAiYXJyb3dPZmZzZXRQYXJlbnQiLCAiY2xpZW50U2l6ZSIsICJjbGllbnRIZWlnaHQiLCAiY2xpZW50V2lkdGgiLCAiY2VudGVyVG9SZWZlcmVuY2UiLCAiY2VudGVyIiwgIm9mZnNldDIiLCAiYXhpc1Byb3AiLCAiY2VudGVyT2Zmc2V0IiwgImVmZmVjdDIiLCAiX29wdGlvbnMkZWxlbWVudCIsICJxdWVyeVNlbGVjdG9yIiwgImFycm93X2RlZmF1bHQiLCAicmVxdWlyZXNJZkV4aXN0cyIsICJnZXRWYXJpYXRpb24iLCAidW5zZXRTaWRlcyIsICJyb3VuZE9mZnNldHNCeURQUiIsICJ3aW4iLCAiZHByIiwgImRldmljZVBpeGVsUmF0aW8iLCAibWFwVG9TdHlsZXMiLCAiX09iamVjdCRhc3NpZ24yIiwgInBvcHBlcjIiLCAicG9wcGVyUmVjdCIsICJ2YXJpYXRpb24iLCAib2Zmc2V0cyIsICJncHVBY2NlbGVyYXRpb24iLCAiYWRhcHRpdmUiLCAicm91bmRPZmZzZXRzIiwgImlzRml4ZWQiLCAiX29mZnNldHMkeCIsICJfb2Zmc2V0cyR5IiwgIl9yZWYzIiwgImhhc1giLCAiaGFzWSIsICJzaWRlWCIsICJzaWRlWSIsICJoZWlnaHRQcm9wIiwgIndpZHRoUHJvcCIsICJvZmZzZXRZIiwgIm9mZnNldFgiLCAiY29tbW9uU3R5bGVzIiwgIl9yZWY0IiwgIl9PYmplY3QkYXNzaWduIiwgImNvbXB1dGVTdHlsZXMiLCAiX3JlZjUiLCAiX29wdGlvbnMkZ3B1QWNjZWxlcmF0IiwgIl9vcHRpb25zJGFkYXB0aXZlIiwgIl9vcHRpb25zJHJvdW5kT2Zmc2V0cyIsICJjb21wdXRlU3R5bGVzX2RlZmF1bHQiLCAiZGF0YSIsICJwYXNzaXZlIiwgImVmZmVjdDMiLCAiaW5zdGFuY2UiLCAiX29wdGlvbnMkc2Nyb2xsIiwgInNjcm9sbCIsICJfb3B0aW9ucyRyZXNpemUiLCAicmVzaXplIiwgInNjcm9sbFBhcmVudHMiLCAic2Nyb2xsUGFyZW50IiwgImFkZEV2ZW50TGlzdGVuZXIiLCAidXBkYXRlIiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiZXZlbnRMaXN0ZW5lcnNfZGVmYXVsdCIsICJoYXNoIiwgImdldE9wcG9zaXRlUGxhY2VtZW50IiwgInJlcGxhY2UiLCAibWF0Y2hlZCIsICJoYXNoMiIsICJnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudCIsICJnZXRXaW5kb3dTY3JvbGwiLCAic2Nyb2xsTGVmdCIsICJwYWdlWE9mZnNldCIsICJzY3JvbGxUb3AiLCAicGFnZVlPZmZzZXQiLCAiZ2V0V2luZG93U2Nyb2xsQmFyWCIsICJnZXRWaWV3cG9ydFJlY3QiLCAiaHRtbCIsICJsYXlvdXRWaWV3cG9ydCIsICJnZXREb2N1bWVudFJlY3QiLCAiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwgIndpblNjcm9sbCIsICJib2R5IiwgInNjcm9sbFdpZHRoIiwgInNjcm9sbEhlaWdodCIsICJkaXJlY3Rpb24iLCAiaXNTY3JvbGxQYXJlbnQiLCAiX2dldENvbXB1dGVkU3R5bGUiLCAib3ZlcmZsb3ciLCAib3ZlcmZsb3dYIiwgIm92ZXJmbG93WSIsICJnZXRTY3JvbGxQYXJlbnQiLCAibGlzdFNjcm9sbFBhcmVudHMiLCAibGlzdCIsICJpc0JvZHkiLCAidGFyZ2V0IiwgInVwZGF0ZWRMaXN0IiwgInJlY3RUb0NsaWVudFJlY3QiLCAicmVjdCIsICJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsICJjbGllbnRUb3AiLCAiY2xpZW50TGVmdCIsICJnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZSIsICJjbGlwcGluZ1BhcmVudCIsICJnZXRDbGlwcGluZ1BhcmVudHMiLCAiY2xpcHBpbmdQYXJlbnRzMiIsICJjYW5Fc2NhcGVDbGlwcGluZyIsICJjbGlwcGVyRWxlbWVudCIsICJnZXRDbGlwcGluZ1JlY3QiLCAiYm91bmRhcnkiLCAicm9vdEJvdW5kYXJ5IiwgIm1haW5DbGlwcGluZ1BhcmVudHMiLCAiZmlyc3RDbGlwcGluZ1BhcmVudCIsICJjbGlwcGluZ1JlY3QiLCAiYWNjUmVjdCIsICJjb21wdXRlT2Zmc2V0cyIsICJyZWZlcmVuY2UyIiwgImNvbW1vblgiLCAiY29tbW9uWSIsICJtYWluQXhpcyIsICJkZXRlY3RPdmVyZmxvdyIsICJfb3B0aW9ucyIsICJfb3B0aW9ucyRwbGFjZW1lbnQiLCAiX29wdGlvbnMkc3RyYXRlZ3kiLCAiX29wdGlvbnMkYm91bmRhcnkiLCAiX29wdGlvbnMkcm9vdEJvdW5kYXJ5IiwgIl9vcHRpb25zJGVsZW1lbnRDb250ZSIsICJlbGVtZW50Q29udGV4dCIsICJfb3B0aW9ucyRhbHRCb3VuZGFyeSIsICJhbHRCb3VuZGFyeSIsICJfb3B0aW9ucyRwYWRkaW5nIiwgImFsdENvbnRleHQiLCAiY2xpcHBpbmdDbGllbnRSZWN0IiwgImNvbnRleHRFbGVtZW50IiwgInJlZmVyZW5jZUNsaWVudFJlY3QiLCAicG9wcGVyQ2xpZW50UmVjdCIsICJlbGVtZW50Q2xpZW50UmVjdCIsICJvdmVyZmxvd09mZnNldHMiLCAib2Zmc2V0RGF0YSIsICJvZmZzZXQiLCAibXVsdGlwbHkiLCAiY29tcHV0ZUF1dG9QbGFjZW1lbnQiLCAiZmxpcFZhcmlhdGlvbnMiLCAiX29wdGlvbnMkYWxsb3dlZEF1dG9QIiwgImFsbG93ZWRBdXRvUGxhY2VtZW50cyIsICJwbGFjZW1lbnRzMiIsICJwbGFjZW1lbnQyIiwgImFsbG93ZWRQbGFjZW1lbnRzIiwgImxlbmd0aCIsICJvdmVyZmxvd3MiLCAic29ydCIsICJhIiwgImIiLCAiZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMiLCAib3Bwb3NpdGVQbGFjZW1lbnQiLCAiZmxpcCIsICJfc2tpcCIsICJfb3B0aW9ucyRtYWluQXhpcyIsICJjaGVja01haW5BeGlzIiwgIl9vcHRpb25zJGFsdEF4aXMiLCAiYWx0QXhpcyIsICJjaGVja0FsdEF4aXMiLCAic3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIiwgImZhbGxiYWNrUGxhY2VtZW50cyIsICJfb3B0aW9ucyRmbGlwVmFyaWF0aW8iLCAicHJlZmVycmVkUGxhY2VtZW50IiwgImlzQmFzZVBsYWNlbWVudCIsICJyZWZlcmVuY2VSZWN0IiwgImNoZWNrc01hcCIsICJNYXAiLCAibWFrZUZhbGxiYWNrQ2hlY2tzIiwgImZpcnN0Rml0dGluZ1BsYWNlbWVudCIsICJpIiwgIl9iYXNlUGxhY2VtZW50IiwgImlzU3RhcnRWYXJpYXRpb24iLCAibWFpblZhcmlhdGlvblNpZGUiLCAiYWx0VmFyaWF0aW9uU2lkZSIsICJjaGVja3MiLCAicHVzaCIsICJldmVyeSIsICJjaGVjayIsICJzZXQiLCAibnVtYmVyT2ZDaGVja3MiLCAiX2xvb3AiLCAiX2xvb3AyIiwgIl9pMiIsICJmaXR0aW5nUGxhY2VtZW50IiwgImZpbmQiLCAiY2hlY2tzMiIsICJnZXQiLCAic2xpY2UiLCAiX2kiLCAiX3JldCIsICJyZXNldCIsICJmbGlwX2RlZmF1bHQiLCAiZ2V0U2lkZU9mZnNldHMiLCAicHJldmVudGVkT2Zmc2V0cyIsICJpc0FueVNpZGVGdWxseUNsaXBwZWQiLCAic29tZSIsICJzaWRlIiwgImhpZGUiLCAicHJldmVudE92ZXJmbG93IiwgInJlZmVyZW5jZU92ZXJmbG93IiwgInBvcHBlckFsdE92ZXJmbG93IiwgInJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyIsICJwb3BwZXJFc2NhcGVPZmZzZXRzIiwgImlzUmVmZXJlbmNlSGlkZGVuIiwgImhhc1BvcHBlckVzY2FwZWQiLCAiaGlkZV9kZWZhdWx0IiwgImRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZIiwgImludmVydERpc3RhbmNlIiwgInNraWRkaW5nIiwgImRpc3RhbmNlIiwgIl9vcHRpb25zJG9mZnNldCIsICJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCAib2Zmc2V0X2RlZmF1bHQiLCAicG9wcGVyT2Zmc2V0c19kZWZhdWx0IiwgImdldEFsdEF4aXMiLCAiX29wdGlvbnMkdGV0aGVyIiwgInRldGhlciIsICJfb3B0aW9ucyR0ZXRoZXJPZmZzZXQiLCAidGV0aGVyT2Zmc2V0IiwgInRldGhlck9mZnNldFZhbHVlIiwgIm5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSIsICJvZmZzZXRNb2RpZmllclN0YXRlIiwgIl9vZmZzZXRNb2RpZmllclN0YXRlJCIsICJtYWluU2lkZSIsICJhbHRTaWRlIiwgImFkZGl0aXZlIiwgIm1pbkxlbiIsICJtYXhMZW4iLCAiYXJyb3dQYWRkaW5nT2JqZWN0IiwgImFycm93UGFkZGluZ01pbiIsICJhcnJvd1BhZGRpbmdNYXgiLCAiYXJyb3dMZW4iLCAibWluT2Zmc2V0IiwgIm1heE9mZnNldCIsICJjbGllbnRPZmZzZXQiLCAib2Zmc2V0TW9kaWZpZXJWYWx1ZSIsICJ0ZXRoZXJNaW4iLCAidGV0aGVyTWF4IiwgInByZXZlbnRlZE9mZnNldCIsICJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwgIl9tYWluU2lkZSIsICJfYWx0U2lkZSIsICJfb2Zmc2V0IiwgIl9sZW4iLCAiX21pbiIsICJfbWF4IiwgImlzT3JpZ2luU2lkZSIsICJfb2Zmc2V0TW9kaWZpZXJWYWx1ZSIsICJfdGV0aGVyTWluIiwgIl90ZXRoZXJNYXgiLCAiX3ByZXZlbnRlZE9mZnNldCIsICJwcmV2ZW50T3ZlcmZsb3dfZGVmYXVsdCIsICJnZXRIVE1MRWxlbWVudFNjcm9sbCIsICJnZXROb2RlU2Nyb2xsIiwgImlzRWxlbWVudFNjYWxlZCIsICJnZXRDb21wb3NpdGVSZWN0IiwgImVsZW1lbnRPclZpcnR1YWxFbGVtZW50IiwgImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IiwgIm9mZnNldFBhcmVudElzU2NhbGVkIiwgIm9yZGVyIiwgIm1vZGlmaWVycyIsICJ2aXNpdGVkIiwgIlNldCIsICJyZXN1bHQiLCAibW9kaWZpZXIiLCAiYWRkIiwgImRlcCIsICJoYXMiLCAiZGVwTW9kaWZpZXIiLCAib3JkZXJNb2RpZmllcnMiLCAib3JkZXJlZE1vZGlmaWVycyIsICJkZWJvdW5jZSIsICJmbjIiLCAicGVuZGluZyIsICJQcm9taXNlIiwgInJlc29sdmUiLCAidGhlbiIsICJtZXJnZUJ5TmFtZSIsICJtZXJnZWQiLCAibWVyZ2VkMiIsICJjdXJyZW50IiwgImV4aXN0aW5nIiwgIkRFRkFVTFRfT1BUSU9OUyIsICJhcmVWYWxpZEVsZW1lbnRzIiwgImFyZ3VtZW50cyIsICJhcmdzIiwgIl9rZXkiLCAicG9wcGVyR2VuZXJhdG9yIiwgImdlbmVyYXRvck9wdGlvbnMiLCAiX2dlbmVyYXRvck9wdGlvbnMiLCAiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwgImRlZmF1bHRNb2RpZmllcnMiLCAiZGVmYXVsdE1vZGlmaWVyczIiLCAiX2dlbmVyYXRvck9wdGlvbnMkZGVmMiIsICJkZWZhdWx0T3B0aW9ucyIsICJjcmVhdGVQb3BwZXIyIiwgImVmZmVjdENsZWFudXBGbnMiLCAiaXNEZXN0cm95ZWQiLCAic2V0T3B0aW9ucyIsICJzZXRPcHRpb25zQWN0aW9uIiwgIm9wdGlvbnMyIiwgImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCAibSIsICJydW5Nb2RpZmllckVmZmVjdHMiLCAiZm9yY2VVcGRhdGUiLCAiX3N0YXRlJGVsZW1lbnRzIiwgInJlZmVyZW5jZTMiLCAicG9wcGVyMyIsICJpbmRleCIsICJfc3RhdGUkb3JkZXJlZE1vZGlmaWUiLCAiX3N0YXRlJG9yZGVyZWRNb2RpZmllMiIsICJkZXN0cm95IiwgInN0YXRlMiIsICJvbkZpcnN0VXBkYXRlIiwgIl9yZWYkb3B0aW9ucyIsICJlZmZlY3Q1IiwgImNsZWFudXBGbiIsICJub29wRm4iLCAibm9vcEZuMiIsICJjcmVhdGVQb3BwZXIiLCAiQk9YX0NMQVNTIiwgIkNPTlRFTlRfQ0xBU1MiLCAiQkFDS0RST1BfQ0xBU1MiLCAiQVJST1dfQ0xBU1MiLCAiU1ZHX0FSUk9XX0NMQVNTIiwgIlRPVUNIX09QVElPTlMiLCAiY2FwdHVyZSIsICJUSVBQWV9ERUZBVUxUX0FQUEVORF9UTyIsICJUSVBQWV9ERUZBVUxUX0FQUEVORF9UTzIiLCAiZ2V0VmFsdWVBdEluZGV4T3JSZXR1cm4iLCAiZGVmYXVsdFZhbHVlIiwgImlzVHlwZSIsICJ0eXBlIiwgInN0ciIsICJjYWxsIiwgImludm9rZVdpdGhBcmdzT3JSZXR1cm4iLCAiYXBwbHkiLCAiZGVib3VuY2UyIiwgIm1zIiwgInRpbWVvdXQiLCAiYXJnIiwgImNsZWFyVGltZW91dCIsICJzZXRUaW1lb3V0IiwgInNwbGl0QnlTcGFjZXMiLCAiQm9vbGVhbiIsICJub3JtYWxpemVUb0FycmF5IiwgInB1c2hJZlVuaXF1ZSIsICJhcnIiLCAidW5pcXVlIiwgImdldEJhc2VQbGFjZW1lbnQyIiwgImFycmF5RnJvbSIsICJyZW1vdmVVbmRlZmluZWRQcm9wcyIsICJvYmoiLCAiZGl2IiwgImNyZWF0ZUVsZW1lbnQiLCAiaXNFbGVtZW50MiIsICJpc05vZGVMaXN0IiwgImlzTW91c2VFdmVudCIsICJpc1JlZmVyZW5jZUVsZW1lbnQiLCAiX3RpcHB5IiwgImdldEFycmF5T2ZFbGVtZW50cyIsICJxdWVyeVNlbGVjdG9yQWxsIiwgInNldFRyYW5zaXRpb25EdXJhdGlvbiIsICJlbHMiLCAiZWwiLCAidHJhbnNpdGlvbkR1cmF0aW9uIiwgInNldFZpc2liaWxpdHlTdGF0ZSIsICJnZXRPd25lckRvY3VtZW50IiwgImVsZW1lbnRPckVsZW1lbnRzIiwgIl9ub3JtYWxpemVUb0FycmF5IiwgImlzQ3Vyc29yT3V0c2lkZUludGVyYWN0aXZlQm9yZGVyIiwgInBvcHBlclRyZWVEYXRhIiwgImV2ZW50IiwgImNsaWVudFgiLCAiY2xpZW50WSIsICJwb3BwZXJTdGF0ZSIsICJwcm9wcyIsICJpbnRlcmFjdGl2ZUJvcmRlciIsICJ0b3BEaXN0YW5jZSIsICJib3R0b21EaXN0YW5jZSIsICJsZWZ0RGlzdGFuY2UiLCAicmlnaHREaXN0YW5jZSIsICJleGNlZWRzVG9wIiwgImV4Y2VlZHNCb3R0b20iLCAiZXhjZWVkc0xlZnQiLCAiZXhjZWVkc1JpZ2h0IiwgInVwZGF0ZVRyYW5zaXRpb25FbmRMaXN0ZW5lciIsICJib3giLCAiYWN0aW9uIiwgImxpc3RlbmVyIiwgIm1ldGhvZCIsICJhY3R1YWxDb250YWlucyIsICJfdGFyZ2V0JGdldFJvb3ROb2RlIiwgImN1cnJlbnRJbnB1dCIsICJpc1RvdWNoIiwgImxhc3RNb3VzZU1vdmVUaW1lIiwgIm9uRG9jdW1lbnRUb3VjaFN0YXJ0IiwgInBlcmZvcm1hbmNlIiwgIm9uRG9jdW1lbnRNb3VzZU1vdmUiLCAibm93IiwgIm9uV2luZG93Qmx1ciIsICJhY3RpdmVFbGVtZW50IiwgImJsdXIiLCAiaXNWaXNpYmxlIiwgImJpbmRHbG9iYWxFdmVudExpc3RlbmVycyIsICJpc0Jyb3dzZXIiLCAiaXNJRTExIiwgIm1zQ3J5cHRvIiwgInJlc2V0VmlzaXRlZE1lc3NhZ2VzIiwgInBsdWdpblByb3BzIiwgImFuaW1hdGVGaWxsIiwgImZvbGxvd0N1cnNvciIsICJpbmxpbmVQb3NpdGlvbmluZyIsICJzdGlja3kiLCAicmVuZGVyUHJvcHMiLCAiYWxsb3dIVE1MIiwgImFuaW1hdGlvbiIsICJjb250ZW50IiwgImluZXJ0aWEiLCAibWF4V2lkdGgiLCAicm9sZSIsICJ0aGVtZSIsICJ6SW5kZXgiLCAiZGVmYXVsdFByb3BzIiwgImFwcGVuZFRvIiwgImFyaWEiLCAiZXhwYW5kZWQiLCAiZGVsYXkiLCAiZHVyYXRpb24iLCAiZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdCIsICJoaWRlT25DbGljayIsICJpZ25vcmVBdHRyaWJ1dGVzIiwgImludGVyYWN0aXZlIiwgImludGVyYWN0aXZlRGVib3VuY2UiLCAibW92ZVRyYW5zaXRpb24iLCAib25BZnRlclVwZGF0ZSIsICJvbkJlZm9yZVVwZGF0ZSIsICJvbkNyZWF0ZSIsICJvbkRlc3Ryb3kiLCAib25IaWRkZW4iLCAib25IaWRlIiwgIm9uTW91bnQiLCAib25TaG93IiwgIm9uU2hvd24iLCAib25UcmlnZ2VyIiwgIm9uVW50cmlnZ2VyIiwgIm9uQ2xpY2tPdXRzaWRlIiwgInBsdWdpbnMiLCAicG9wcGVyT3B0aW9ucyIsICJyZW5kZXIiLCAic2hvd09uQ3JlYXRlIiwgInRvdWNoIiwgInRyaWdnZXIiLCAidHJpZ2dlclRhcmdldCIsICJkZWZhdWx0S2V5cyIsICJzZXREZWZhdWx0UHJvcHMiLCAic2V0RGVmYXVsdFByb3BzMiIsICJwYXJ0aWFsUHJvcHMiLCAidmFsaWRhdGVQcm9wcyIsICJnZXRFeHRlbmRlZFBhc3NlZFByb3BzIiwgInBhc3NlZFByb3BzIiwgInBsdWdpblByb3BzMiIsICJwbHVnaW4iLCAiX25hbWUiLCAiZ2V0RGF0YUF0dHJpYnV0ZVByb3BzIiwgInByb3BLZXlzIiwgInZhbHVlQXNTdHJpbmciLCAiZ2V0QXR0cmlidXRlIiwgInRyaW0iLCAiSlNPTiIsICJwYXJzZSIsICJlIiwgImV2YWx1YXRlUHJvcHMiLCAib3V0IiwgImlubmVySFRNTCIsICJpbm5lckhUTUwyIiwgImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwgImNyZWF0ZUFycm93RWxlbWVudCIsICJhcnJvdzIiLCAiY2xhc3NOYW1lIiwgImFwcGVuZENoaWxkIiwgInNldENvbnRlbnQiLCAidGV4dENvbnRlbnQiLCAiZ2V0Q2hpbGRyZW4iLCAiZmlyc3RFbGVtZW50Q2hpbGQiLCAiYm94Q2hpbGRyZW4iLCAiY2hpbGRyZW4iLCAiY2xhc3NMaXN0IiwgImJhY2tkcm9wIiwgIm9uVXBkYXRlIiwgInByZXZQcm9wcyIsICJuZXh0UHJvcHMiLCAiX2dldENoaWxkcmVuIiwgImJveDIiLCAiY29udGVudDIiLCAicmVtb3ZlQ2hpbGQiLCAiJCR0aXBweSIsICJpZENvdW50ZXIiLCAibW91c2VNb3ZlTGlzdGVuZXJzIiwgIm1vdW50ZWRJbnN0YW5jZXMiLCAiY3JlYXRlVGlwcHkiLCAic2hvd1RpbWVvdXQiLCAiaGlkZVRpbWVvdXQiLCAic2NoZWR1bGVIaWRlQW5pbWF0aW9uRnJhbWUiLCAiaXNWaXNpYmxlRnJvbUNsaWNrIiwgImRpZEhpZGVEdWVUb0RvY3VtZW50TW91c2VEb3duIiwgImRpZFRvdWNoTW92ZSIsICJpZ25vcmVPbkZpcnN0VXBkYXRlIiwgImxhc3RUcmlnZ2VyRXZlbnQiLCAiY3VycmVudFRyYW5zaXRpb25FbmRMaXN0ZW5lciIsICJsaXN0ZW5lcnMiLCAiZGVib3VuY2VkT25Nb3VzZU1vdmUiLCAib25Nb3VzZU1vdmUiLCAiY3VycmVudFRhcmdldCIsICJpZCIsICJwb3BwZXJJbnN0YW5jZSIsICJpc0VuYWJsZWQiLCAiaXNNb3VudGVkIiwgImlzU2hvd24iLCAiY2xlYXJEZWxheVRpbWVvdXRzIiwgInNldFByb3BzIiwgInNldENvbnRlbnQyIiwgInNob3ciLCAiaGlkZTIiLCAiaGlkZVdpdGhJbnRlcmFjdGl2aXR5IiwgImVuYWJsZSIsICJkaXNhYmxlIiwgInVubW91bnQiLCAiZXJyb3JXaGVuIiwgIl9wcm9wcyRyZW5kZXIiLCAicGx1Z2luc0hvb2tzIiwgImhhc0FyaWFFeHBhbmRlZCIsICJoYXNBdHRyaWJ1dGUiLCAiYWRkTGlzdGVuZXJzIiwgImhhbmRsZUFyaWFFeHBhbmRlZEF0dHJpYnV0ZSIsICJoYW5kbGVTdHlsZXMiLCAiaW52b2tlSG9vayIsICJzY2hlZHVsZVNob3ciLCAiZ2V0RG9jdW1lbnQiLCAiZ2V0Tm9ybWFsaXplZFRvdWNoU2V0dGluZ3MiLCAiZ2V0SXNDdXN0b21Ub3VjaEJlaGF2aW9yIiwgImdldElzRGVmYXVsdFJlbmRlckZuIiwgIl9pbnN0YW5jZSRwcm9wcyRyZW5kZSIsICJnZXRDdXJyZW50VGFyZ2V0IiwgImdldERlZmF1bHRUZW1wbGF0ZUNoaWxkcmVuIiwgImdldERlbGF5IiwgImlzU2hvdyIsICJmcm9tSGlkZSIsICJwb2ludGVyRXZlbnRzIiwgImhvb2siLCAic2hvdWxkSW52b2tlUHJvcHNIb29rIiwgInBsdWdpbkhvb2tzIiwgIl9pbnN0YW5jZSRwcm9wcyIsICJoYW5kbGVBcmlhQ29udGVudEF0dHJpYnV0ZSIsICJhdHRyIiwgImlkMiIsICJub2RlcyIsICJjdXJyZW50VmFsdWUiLCAibmV4dFZhbHVlIiwgImNsZWFudXBJbnRlcmFjdGl2ZU1vdXNlTGlzdGVuZXJzIiwgIm9uRG9jdW1lbnRQcmVzcyIsICJhY3R1YWxUYXJnZXQiLCAiY29tcG9zZWRQYXRoIiwgInJlbW92ZURvY3VtZW50UHJlc3MiLCAib25Ub3VjaE1vdmUiLCAib25Ub3VjaFN0YXJ0IiwgImFkZERvY3VtZW50UHJlc3MiLCAiZG9jIiwgIm9uVHJhbnNpdGlvbmVkT3V0IiwgImNhbGxiYWNrIiwgIm9uVHJhbnNpdGlvbkVuZCIsICJvblRyYW5zaXRpb25lZEluIiwgIm9uIiwgImV2ZW50VHlwZSIsICJoYW5kbGVyIiwgIm9uVHJpZ2dlcjIiLCAib25Nb3VzZUxlYXZlIiwgIm9uQmx1ck9yRm9jdXNPdXQiLCAicmVtb3ZlTGlzdGVuZXJzIiwgIl9sYXN0VHJpZ2dlckV2ZW50IiwgInNob3VsZFNjaGVkdWxlQ2xpY2tIaWRlIiwgImlzRXZlbnRMaXN0ZW5lclN0b3BwZWQiLCAid2FzRm9jdXNlZCIsICJzY2hlZHVsZUhpZGUiLCAiaXNDdXJzb3JPdmVyUmVmZXJlbmNlT3JQb3BwZXIiLCAiZ2V0TmVzdGVkUG9wcGVyVHJlZSIsICJfaW5zdGFuY2UkcG9wcGVySW5zdGEiLCAiaW5zdGFuY2UyIiwgInNob3VsZEJhaWwiLCAicmVsYXRlZFRhcmdldCIsICJjcmVhdGVQb3BwZXJJbnN0YW5jZSIsICJkZXN0cm95UG9wcGVySW5zdGFuY2UiLCAiX2luc3RhbmNlJHByb3BzMiIsICJjb21wdXRlZFJlZmVyZW5jZSIsICJ0aXBweU1vZGlmaWVyIiwgIl9nZXREZWZhdWx0VGVtcGxhdGVDaCIsICJtb3VudCIsICJ3YXJuV2hlbiIsICJuZXh0RWxlbWVudFNpYmxpbmciLCAiX2dldE5vcm1hbGl6ZWRUb3VjaFNlIiwgInRvdWNoVmFsdWUiLCAidG91Y2hEZWxheSIsICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCAiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCAiY3JlYXRlTWVtb3J5TGVha1dhcm5pbmciLCAibmVzdGVkUG9wcGVyIiwgImlzQWxyZWFkeVZpc2libGUiLCAiaXNEaXNhYmxlZCIsICJpc1RvdWNoQW5kVG91Y2hEaXNhYmxlZCIsICJ2aXNpYmlsaXR5IiwgInRyYW5zaXRpb24iLCAiX2dldERlZmF1bHRUZW1wbGF0ZUNoMiIsICJvbkZpcnN0VXBkYXRlMiIsICJfaW5zdGFuY2UkcG9wcGVySW5zdGEyIiwgIl9nZXREZWZhdWx0VGVtcGxhdGVDaDMiLCAiX2JveCIsICJfY29udGVudCIsICJpc0FscmVhZHlIaWRkZW4iLCAiX2dldERlZmF1bHRUZW1wbGF0ZUNoNCIsICJ0YXJnZXRzIiwgIm9wdGlvbmFsUHJvcHMiLCAidmFsaWRhdGVUYXJnZXRzIiwgImlzU2luZ2xlQ29udGVudEVsZW1lbnQiLCAiaXNNb3JlVGhhbk9uZVJlZmVyZW5jZUVsZW1lbnQiLCAiaW5zdGFuY2VzIiwgImFwcGx5U3R5bGVzTW9kaWZpZXIiLCAiZWZmZWN0NCJdCn0K diff --git a/dist/Twinkle/Twinkle.js b/dist/Twinkle/Twinkle.js index 5c51e079e..a612d6072 100644 --- a/dist/Twinkle/Twinkle.js +++ b/dist/Twinkle/Twinkle.js @@ -13042,9 +13042,9 @@ var init_twinklebatchprotect = __esm({ let editProt; if (missing) { metadata[metadata.length] = "页面不存在"; - editProt = page.protection.filter((protection) => { + editProt = page.protection.findLast((protection) => { return protection.type === "create" && protection.level === "sysop"; - }).pop(); + }); } else { if (page.redirect) { metadata[metadata.length] = "重定向"; @@ -13054,9 +13054,9 @@ var init_twinklebatchprotect = __esm({ } else { metadata[metadata.length] = "".concat(mw.language.convertNumber(page.revisions[0].size), "字节"); } - editProt = page.protection.filter((protection) => { + editProt = page.protection.findLast((protection) => { return protection.type === "edit" && protection.level === "sysop"; - }).pop(); + }); } if (editProt) { metadata[metadata.length] = "".concat(missing ? "白纸" : "", "全保护").concat(editProt.expiry === "infinity" ? "(永久)" : "(".concat(new Morebits.date(editProt.expiry).calendar("utc"), " (UTC)过期)")); @@ -15393,4 +15393,4 @@ var init_twinkleconfig = __esm({ /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWFydi5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGV3YXJuLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvYXBpLnRzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWJsb2NrLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvZnJpZW5kbHl0YWxrYmFjay5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGVzcGVlZHkuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlY29weXZpby5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGV4ZmQuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlaW1hZ2UuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlcHJvdGVjdC5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL2ZyaWVuZGx5dGFnLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZXN0dWIuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlZGlmZi5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGV1bmxpbmsuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlZmx1ZmYuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlYmF0Y2hkZWxldGUuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlYmF0Y2h1bmRlbGV0ZS5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGViYXRjaHByb3RlY3QuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlY2xvc2UuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlY29uZmlnLmpzIiwgInNyYy9Ud2lua2xlL1R3aW5rbGUuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGUuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdGNvbnN0IFR3aW5rbGUgPSB7fTtcblx0d2luZG93LlR3aW5rbGUgfHw9IFR3aW5rbGU7IC8vIGFsbG93IGdsb2JhbCBhY2Nlc3Ncblx0Ly8gV3JhcCB3aXRoIGFub255bW91cyBmdW5jdGlvblxuXHQvLyBDaGVjayBpZiBhY2NvdW50IGlzIGV4cGVyaWVuY2VkIGVub3VnaCB0byB1c2UgVHdpbmtsZVxuXHRpZiAoIU1vcmViaXRzLnVzZXJJc0luR3JvdXAoJ2F1dG9jb25maXJtZWQnKSAmJiAhTW9yZWJpdHMudXNlcklzSW5Hcm91cCgnY29uZmlybWVkJykpIHtcblx0XHRjb25zb2xlLndhcm4oJ1tUd2lua2xlXSDpnZ7noa7orqTnlKjmiLfmiJboh6rliqjnoa7orqTnlKjmiLfvvIxUd2lua2xl5LiN5Lya6L+Q6KGM44CCJyk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdC8qKlxuXHQgKiBUd2lua2xlLXNwZWNpZmljIGRhdGEgc2hhcmVkIGJ5IG11bHRpcGxlIG1vZHVsZXNcblx0ICogTGlrZWx5IGN1c3RvbWl6ZWQgcGVyIGluc3RhbGxhdGlvblxuXHQgKi9cblx0Ly8gQ3VzdG9tIGNoYW5nZSB0YWcocykgdG8gYmUgYXBwbGllZCB0byBhbGwgVHdpbmtsZSBhY3Rpb25zLCBjcmVhdGUgYXQgU3BlY2lhbDpUYWdzXG5cdFR3aW5rbGUuY2hhbmdlVGFncyA9ICdUd2lua2xlJztcblx0Ly8gQXZhaWxhYmxlIGZvciBhY3Rpb25zIHRoYXQgZG9uJ3QgKHlldCkgc3VwcG9ydCB0YWdzXG5cdFR3aW5rbGUuc3VtbWFyeUFkID0gJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknO1xuXHQvLyBWYXJpb3VzIGhhdG5vdGUgdGVtcGxhdGVzLCB1c2VkIHdoZW4gdGFnZ2luZyAoY3NkL3hmZC90YWcvcHJvZC9wcm90ZWN0KSB0byBlbnN1cmUgb3JkZXJcblx0VHdpbmtsZS5oYXRub3RlUmVnZXggPVxuXHRcdCcoPzpTaG9ydFsgX11kZXNjcmlwdGlvbil8KD86UmVsbGlua3xIYXRub3RlfEhBVCl8KD86TWFpbnxb57uG57SwXVvoioLnr4BdfE1haW5bIF9dYXJ0aWNsZXN85Li7W+adoeainV3nm658SHVycmljYW5lWyBfXW1haW58W+adoeainV3nm6585Li7fFvpoIHpobVd6Z2ifOS4u1vpoIHpobVd6Z2ifOS4u1vpoIHpobVdfOS4u1vpoYzpophd55uufE1haW5bIF9dYXJ0aWNsZXxBUCl8KD86V3Jvbmd0aXRsZXxDb3JyZWN0WyBfXXRpdGxlKXwoPzrkuLvmnaHnm67mtojmrafkuYl85Li75qKd55uu5raI5q2n576pfOa2iOatp+S5iemTvuaOpXzmtojmrafnvqnpj4jmjqV85raI5q2n576p6YCj57WQfOa2iOi/nnzmtojpgKN85raI5q2n5LmJ6L+e57uTfERpc2FtYkxpbmt8Tm90ZXJlZnxEYWJsaW5rKXwoPzpEaXN0aW5ndWlzaHzkuI3mmK98Tm90fOaPkOekunzmt7fmt4Z85YiG5YilfOWIhuWIq3zljYDliKV85Yy65YirfOacrOadoeebrueahOS4u+mimOS4jeaYr3zmnKzmop3nm67nmoTkuLvpoYzkuI3mmK985pys5p2h55uu5Li76aKY5LiN5pivfOacrOaineebruS4u+mhjOS4jeaYr3zmnaHnm67kuLvpopjkuI3mmK985qKd55uu5Li76aGM5LiN5pivfOS4u+mimOS4jeaYr3zkuLvpoYzkuI3mmK98Q29uZnVzZWR85Yy65YiGfOWNgOWIhnxDb25mdXNpb258Q29uZnVzZXxSZWRpcmVjdE5PVHxNaXNzcGVsbGluZyl8KD86RGlzdGluZ3Vpc2gyfFNlbGZEaXN0aW5ndWlzaHxOb3QyfOS4jeaYrzIpfCg/OkZvcil8KD86RGV0YWlsc3xGdXJ0aGVyfFNlZXzlj6bop4F85Y+m6KaLfE1vcmV855u46Zec5qKd55uufOebuOWFs+adoeebrnxEZXRhaWx86KeBfOimi3zmm7TlpJrotYTmlpl85pu05aSa6LOH5paZfEZ1cnRoZXJbIF9daW5mb3JtYXRpb2585pu05aSa6LWE6K6vfOabtOWkmuizh+ioinxNb3JlWyBfXWluZm9ybWF0aW9ufOabtOWkmuS/oeaBryl8KD86U2VsZnJlZil8KD86QWJvdXR8T3RoZXJ1c2VzNHzlhbPkuo586Zec5pa8KXwoPzpPdGhlclsgX111c2VzfE90aGVydXNlfOadoeebrua2iOatp+S5iXzmop3nm67mtojmrafnvql85LuW55SofE90aGVydXNlcyl8KD86T3RoZXJbIF9ddXNlcyBsaXN0fE90aGVydXNlbGlzdHzkuLvmop3nm67mtojmrafnvqnliJfooah85Li75p2h55uu5raI5q2n5LmJ5YiX6KGofE90aGVydXNlc2xpc3R8QWJvdXRsaXN0fEFib3V0WyBfXWxpc3R8T3RoZXJ1c2VzWyBfXWxpc3QpfCg/OlJlZGlyZWN0fOmHjeWumuWQkeiHs+atpHxSZWRpcmVjdHNbIF9daGVyZXxSZWRpcmVjdFsgX110byl8KD86UmVkaXJlY3QyfOS4u+aineebrua2iOatp+e+qTJ85Li75p2h55uu5raI5q2n5LmJMnxSZWRpcnzph43lrprlkJHoh7PmraQyKXwoPzpSZWRpcmVjdDMpfCg/OlJlZGlyZWN0NCl8KD86UmVkaXJlY3QtZGlzdGluZ3Vpc2gpfCg/OlJlZGlyZWN0LXN5bm9ueW0pfCg/OlJlZGlyZWN0LW11bHRpKXwoPzpTZWVbIF9dV2lrdGlvbmFyeXxTZWV3aWt0KXwoPzpTZWVhbHNvfOWPgueci3zlj4PnnIt8U2VlWyBfXWFsc2985Y+C6KeBfOWPg+imi3xBbHNvKXwoPzpTZWVbIF9dYWxzbzJ8U2VlYWxzbzJ85LiN6L2J5o+b5Y+D6KaLfOS4jei9rOaNouWPguingSl8KD86T3RoZXJbIF9dcGxhY2VzKXwoPzpDb250cmFzdHzlsI3mr5R85a+55q+UKSc7XG5cdFR3aW5rbGUuaW5pdENhbGxiYWNrcyA9IFtdO1xuXHQvKipcblx0ICogQWRkcyBhIGNhbGxiYWNrIHRvIGV4ZWN1dGUgd2hlbiBUd2lua2xlIGhhcyBsb2FkZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmNcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSAtIG5hbWUgb2YgbW9kdWxlIHVzZWQgdG8gY2hlY2sgaWYgaXMgZGlzYWJsZWQuXG5cdCAqIElmIG5hbWUgaXMgbm90IGdpdmVuLCBtb2R1bGUgaXMgbG9hZGVkIHVuY29uZGl0aW9uYWxseS5cblx0ICovXG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrID0gKGZ1bmMsIG5hbWUpID0+IHtcblx0XHRUd2lua2xlLmluaXRDYWxsYmFja3NbVHdpbmtsZS5pbml0Q2FsbGJhY2tzLmxlbmd0aF0gPSB7XG5cdFx0XHRmdW5jLFxuXHRcdFx0bmFtZSxcblx0XHR9O1xuXHR9O1xuXHRUd2lua2xlLmRlZmF1bHRDb25maWcgPSB7fTtcblx0LyoqXG5cdCAqIFRoaXMgaG9sZHMgdGhlIGRlZmF1bHQgc2V0IG9mIHByZWZlcmVuY2VzIHVzZWQgYnkgVHdpbmtsZS5cblx0ICogSXQgaXMgaW1wb3J0YW50IHRoYXQgYWxsIG5ldyBwcmVmZXJlbmNlcyBhZGRlZCBoZXJlLCBlc3BlY2lhbGx5IGFkbWluLW9ubHkgb25lcywgYXJlIGFsc28gYWRkZWQgdG9cblx0ICogfFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zfCBpbiB0d2lua2xlY29uZmlnLmpzLCBzbyB0aGV5IGFyZSBjb25maWd1cmFibGUgdmlhIHRoZSBUd2lua2xlIHByZWZlcmVuY2VzIHBhbmVsLlxuXHQgKiBGb3IgaGVscCBvbiB0aGUgYWN0dWFsIHByZWZlcmVuY2VzLCBzZWUgdGhlIGNvbW1lbnRzIGluIHR3aW5rbGVjb25maWcuanMuXG5cdCAqXG5cdCAqIEZvcm1lcmx5IFR3aW5rbGUuZGVmYXVsdENvbmZpZy50d2lua2xlXG5cdCAqL1xuXHRUd2lua2xlLmRlZmF1bHRDb25maWcgPSB7XG5cdFx0Ly8gR2VuZXJhbFxuXHRcdHVzZXJUYWxrUGFnZU1vZGU6ICd0YWInLFxuXHRcdGRpYWxvZ0xhcmdlRm9udDogZmFsc2UsXG5cdFx0ZGlzYWJsZWRNb2R1bGVzOiBNb3JlYml0cy51c2VySXNTeXNvcCA/IFtdIDogWydibG9jayddLFxuXHRcdC8vIGRlZmF1bHQgdG8gZGlzYWJsZSBibG9jayBmb3Igbm9uLXN5c29wLCBpZiBlbmFibGUgbWFudWFsbHksIHRoZXkgY2FuIG9ubHkgdXNlIGl0IHRvIHRhZyB1c2VycGFnZVxuXHRcdGRpc2FibGVkU3lzb3BNb2R1bGVzOiBbXSxcblx0XHQvLyBBUlZcblx0XHRzcGlXYXRjaFJlcG9ydDogJ3llcycsXG5cdFx0Ly8gQmxvY2tcblx0XHRkZWZhdWx0VG9CbG9jazY0OiBmYWxzZSxcblx0XHRkZWZhdWx0VG9QYXJ0aWFsQmxvY2tzOiBmYWxzZSxcblx0XHRibGFua1RhbGtwYWdlT25JbmRlZkJsb2NrOiBmYWxzZSxcblx0XHR3YXRjaEJsb2NrTm90aWNlczogJ3llcycsXG5cdFx0Y3VzdG9tQmxvY2tSZWFzb25MaXN0OiBbXSxcblx0XHQvLyBGbHVmZiAocmV2ZXJ0IGFuZCByb2xsYmFjaylcblx0XHRvcGVuVGFsa1BhZ2U6IFtdLFxuXHRcdG9wZW5UYWxrUGFnZU9uQXV0b1JldmVydDogZmFsc2UsXG5cdFx0cm9sbGJhY2tJblBsYWNlOiBmYWxzZSxcblx0XHRtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3I6IFsndmFuZCddLFxuXHRcdHdhdGNoUmV2ZXJ0ZWRQYWdlczogWydub3JtJywgJ3ZhbmQnLCAndG9yZXYnXSxcblx0XHR3YXRjaFJldmVydGVkRXhwaXJ5OiAneWVzJyxcblx0XHRvZmZlclJlYXNvbk9uTm9ybWFsUmV2ZXJ0OiB0cnVlLFxuXHRcdGNvbmZpcm1PbkZsdWZmOiBmYWxzZSxcblx0XHRzaG93Um9sbGJhY2tMaW5rczogWydkaWZmJywgJ290aGVycyddLFxuXHRcdGN1c3RvbVJldmVydFN1bW1hcnk6IFtdLFxuXHRcdC8vIERJICh0d2lua2xlaW1hZ2UpXG5cdFx0bm90aWZ5VXNlck9uRGVsaTogdHJ1ZSxcblx0XHRkZWxpV2F0Y2hQYWdlOiAnZGVmYXVsdCcsXG5cdFx0ZGVsaVdhdGNoVXNlcjogJ2RlZmF1bHQnLFxuXHRcdC8vIFByb3RlY3Rcblx0XHR3YXRjaFJlcXVlc3RlZFBhZ2VzOiAneWVzJyxcblx0XHR3YXRjaFBQVGFnZ2VkUGFnZXM6ICdkZWZhdWx0Jyxcblx0XHR3YXRjaFByb3RlY3RlZFBhZ2VzOiAnZGVmYXVsdCcsXG5cdFx0Ly8gQ1NEXG5cdFx0c3BlZWR5U2VsZWN0aW9uU3R5bGU6ICdidXR0b25DbGljaycsXG5cdFx0d2F0Y2hTcGVlZHlQYWdlczogWydnMScsICdnMycsICdnNCcsICdnNycsICdnOCddLFxuXHRcdHdhdGNoU3BlZWR5RXhwaXJ5OiAneWVzJyxcblx0XHRtYXJrU3BlZWR5UGFnZXNBc1BhdHJvbGxlZDogZmFsc2UsXG5cdFx0d2F0Y2hTcGVlZHlVc2VyOiAnMSBtb250aCcsXG5cdFx0Ly8gdGhlc2UgbmV4dCB0d28gc2hvdWxkIHByb2JhYmx5IGJlIGlkZW50aWNhbCBieSBkZWZhdWx0XG5cdFx0bm90aWZ5VXNlck9uU3BlZWR5RGVsZXRpb25Ob21pbmF0aW9uOiBbXG5cdFx0XHQnZGInLFxuXHRcdFx0J2cxJyxcblx0XHRcdCdnMicsXG5cdFx0XHQnZzMnLFxuXHRcdFx0J2c0Jyxcblx0XHRcdCdnNScsXG5cdFx0XHQnZzYnLFxuXHRcdFx0J2c3Jyxcblx0XHRcdCdnOCcsXG5cdFx0XHQnZzknLFxuXHRcdFx0J2ExJyxcblx0XHRcdCdhMicsXG5cdFx0XHQnYTMnLFxuXHRcdFx0J3IxJyxcblx0XHRcdCdyMicsXG5cdFx0XHQnZjEnLFxuXHRcdFx0J2YyJyxcblx0XHRcdCdmMycsXG5cdFx0XHQnZjQnLFxuXHRcdFx0J2Y1Jyxcblx0XHRcdCdvMScsXG5cdFx0XHQnbzInLFxuXHRcdFx0J28zJyxcblx0XHRdLFxuXHRcdHdhcm5Vc2VyT25TcGVlZHlEZWxldGU6IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRcdCdmMScsXG5cdFx0XHQnZjInLFxuXHRcdFx0J2YzJyxcblx0XHRcdCdmNCcsXG5cdFx0XHQnZjUnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdF0sXG5cdFx0cHJvbXB0Rm9yU3BlZWR5RGVsZXRpb25TdW1tYXJ5OiBbXSxcblx0XHRvcGVuVXNlclRhbGtQYWdlT25TcGVlZHlEZWxldGU6IFtdLFxuXHRcdGRlbGV0ZVRhbGtQYWdlT25EZWxldGU6IHRydWUsXG5cdFx0ZGVsZXRlUmVkaXJlY3RzT25EZWxldGU6IHRydWUsXG5cdFx0ZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGU6IGZhbHNlLFxuXHRcdHNwZWVkeVdpbmRvd0hlaWdodDogNTAwLFxuXHRcdHNwZWVkeVdpbmRvd1dpZHRoOiA4MDAsXG5cdFx0bG9nU3BlZWR5Tm9taW5hdGlvbnM6IHRydWUsXG5cdFx0c3BlZWR5TG9nUGFnZU5hbWU6ICdDU0Tml6Xlv5cnLFxuXHRcdG5vTG9nT25TcGVlZHlOb21pbmF0aW9uOiBbJ28xJ10sXG5cdFx0ZW5sYXJnZUc3SW5wdXQ6IGZhbHNlLFxuXHRcdC8vIFVubGlua1xuXHRcdHVubGlua05hbWVzcGFjZXM6IFsnMCcsICc2JywgJzEwJywgJzExOCddLFxuXHRcdC8vIFdhcm5cblx0XHRkZWZhdWx0V2FybmluZ0dyb3VwOiAnMScsXG5cdFx0Y29tYmluZWRTaW5nbGV0TWVudXM6IGZhbHNlLFxuXHRcdHdhdGNoV2FybmluZ3M6ICd5ZXMnLFxuXHRcdG9sZFNlbGVjdDogZmFsc2UsXG5cdFx0Y3VzdG9tV2FybmluZ0xpc3Q6IFtdLFxuXHRcdGF1dG9NZW51QWZ0ZXJSb2xsYmFjazogZmFsc2UsXG5cdFx0Ly8gWGZEXG5cdFx0bG9nWGZkTm9taW5hdGlvbnM6IHRydWUsXG5cdFx0eGZkTG9nUGFnZU5hbWU6ICdYZkTml6Xlv5cnLFxuXHRcdG5vTG9nT25YZmROb21pbmF0aW9uOiBbXSxcblx0XHR4ZmRXYXRjaERpc2N1c3Npb246ICdkZWZhdWx0Jyxcblx0XHR4ZmRXYXRjaFBhZ2U6ICdkZWZhdWx0Jyxcblx0XHR4ZmRXYXRjaFVzZXI6ICdkZWZhdWx0Jyxcblx0XHRtYXJrWGZkUGFnZXNBc1BhdHJvbGxlZDogdHJ1ZSxcblx0XHRGd2RDc2RUb1hmZDogTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0YWZkRGVmYXVsdENhdGVnb3J5OiAnZGVsZXRlJyxcblx0XHRhZmRGYW1lRGVmYXVsdFJlYXNvbjogJ+ayoeaciei2s+Wkn+eahOWPr+mdoOadpea6kOivgeaYjuatpOadoeebruespuWQiFtbUWl1d2VuOuaUtuW9leagh+WHhnzmlLblvZXmoIflh4ZdXScsXG5cdFx0YWZkU3Vic3R1YkRlZmF1bHRSZWFzb246ICfov4fmnJ/lsI/lsI/kvZzlk4EnLFxuXHRcdFhmZENsb3NlOiBNb3JlYml0cy51c2VySXNTeXNvcCA/ICdhbGwnIDogJ2hpZGUnLFxuXHRcdC8vIENvcHl2aW9cblx0XHRjb3B5dmlvV2F0Y2hQYWdlOiAneWVzJyxcblx0XHRjb3B5dmlvV2F0Y2hVc2VyOiAneWVzJyxcblx0XHRtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQ6IHRydWUsXG5cdFx0Ly8gSGlkZGVuIHByZWZlcmVuY2VzXG5cdFx0YXV0b2xldmVsU3RhbGVEYXlzOiAzLFxuXHRcdHJldmVydE1heFJldmlzaW9uczogNTAsXG5cdFx0Ly8gaW50ZW50aW9uYWxseSBsaW1pdGVkXG5cdFx0YmF0Y2hNYXg6IDUwMDAsXG5cdFx0YmF0Y2hDaHVua3M6IDUwLFxuXHRcdGNvbmZpZ1BhZ2U6ICdIZWxwOlR3aW5rbGUv5Y+C5pWw6K6+572uJyxcblx0XHRwcm9qZWN0TmFtZXNwYWNlTmFtZTogbXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJylbNF0sXG5cdFx0c2FuZGJveFBhZ2U6ICdRaXV3ZW465rKZ55uSJyxcblx0XHQvLyBEZXByZWNhdGVkIG9wdGlvbnMsIGFzIGEgZmFsbGJhY2sgZm9yIGFkZC1vbiBzY3JpcHRzL21vZHVsZXNcblx0XHRzdW1tYXJ5QWQ6ICfvvIhbW0g6VFd8VHdpbmtsZV1d77yJJyxcblx0XHRkZWxldGlvblN1bW1hcnlBZDogJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknLFxuXHRcdHByb3RlY3Rpb25TdW1tYXJ5QWQ6ICfvvIhbW0g6VFd8VHdpbmtsZV1d77yJJyxcblx0XHRibG9ja1N1bW1hcnlBZDogJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknLFxuXHRcdC8vIFRhZ1xuXHRcdGdyb3VwQnlEZWZhdWx0OiB0cnVlLFxuXHRcdHdhdGNoVGFnZ2VkUGFnZXM6ICd5ZXMnLFxuXHRcdHdhdGNoTWVyZ2VEaXNjdXNzaW9uczogJ3llcycsXG5cdFx0bWFya1RhZ2dlZFBhZ2VzQXNNaW5vcjogZmFsc2UsXG5cdFx0bWFya1RhZ2dlZFBhZ2VzQXNQYXRyb2xsZWQ6IHRydWUsXG5cdFx0dGFnQXJ0aWNsZVNvcnRPcmRlcjogJ2NhdCcsXG5cdFx0Y3VzdG9tVGFnTGlzdDogW10sXG5cdFx0Y3VzdG9tRmlsZVRhZ0xpc3Q6IFtdLFxuXHRcdGN1c3RvbVJlZGlyZWN0VGFnTGlzdDogW10sXG5cdFx0Ly8gU3R1YlxuXHRcdHdhdGNoU3R1YmJlZFBhZ2VzOiBmYWxzZSxcblx0XHRtYXJrU3R1YmJlZFBhZ2VzQXNNaW5vcjogZmFsc2UsXG5cdFx0bWFya1N0dWJiZWRQYWdlc0FzUGF0cm9sbGVkOiB0cnVlLFxuXHRcdHN0dWJBcnRpY2xlU29ydE9yZGVyOiAnY2F0Jyxcblx0XHRjdXN0b21TdHViTGlzdDogW10sXG5cdFx0Ly8gVGFsa2JhY2tcblx0XHRtYXJrVGFsa2JhY2tBc01pbm9yOiB0cnVlLFxuXHRcdGluc2VydFRhbGtiYWNrU2lnbmF0dXJlOiB0cnVlLFxuXHRcdC8vIGFsd2F5cyBzaWduIHRhbGtiYWNrIHRlbXBsYXRlc1xuXHRcdHRhbGtiYWNrSGVhZGluZzogd2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJyksXG5cdFx0bWFpbEhlYWRpbmc6IHdpbmRvdy53Z1VMUygn5oKo5pyJ5paw6YKu5Lu277yBJywgJ+aCqOacieaWsOmDteS7tu+8gScpLFxuXHR9O1xuXHQvLyBub3cgc29tZSBza2luIGRlcGVuZGVudCBjb25maWcuXG5cdHN3aXRjaCAobXcuY29uZmlnLmdldCgnc2tpbicpKSB7XG5cdFx0Y2FzZSAndmVjdG9yJzpcblx0XHRjYXNlICd2ZWN0b3ItMjAyMic6XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldEFyZWEgPSAncmlnaHQtbmF2aWdhdGlvbic7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldElkID0gJ3AtdHdpbmtsZSc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5hbWUgPSAnVFcnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRUeXBlID0gJ21lbnUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXROZXh0ID0gJ3Atc2VhcmNoJztcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2dvbmdiaSc6XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldEFyZWEgPVxuXHRcdFx0XHQkYm9keS5maW5kKCcjcGFnZS10b29scyAuc2lkZWJhci1pbm5lcicpLmxlbmd0aCA+IDBcblx0XHRcdFx0XHQ/ICcjcGFnZS10b29scyAuc2lkZWJhci1pbm5lcidcblx0XHRcdFx0XHQ6ICcjcGFnZS1tb3JlIC5zaWRlYmFyLWlubmVyJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0SWQgPSAncC10d2lua2xlJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmFtZSA9ICdUd2lua2xlJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0VHlwZSA9IG51bGw7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5leHQgPVxuXHRcdFx0XHQkYm9keS5maW5kKCcjcGFnZS10b29scyAuc2lkZWJhci1pbm5lcicpLmxlbmd0aCA+IDAgPyAncGFnZS1tb3JlJyA6IG51bGw7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdjaXRpemVuJzpcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0QXJlYSA9ICcjcGFnZS1hY3Rpb25zLW1vcmVfX2NhcmQnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRJZCA9ICdwLXR3aW5rbGUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXROYW1lID0gJ1R3aW5rbGUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRUeXBlID0gJ25hdic7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5leHQgPSAncC10Yic7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRBcmVhID0gbnVsbDtcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0SWQgPSAncC1jYWN0aW9ucyc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5hbWUgPSBudWxsO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRUeXBlID0gbnVsbDtcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmV4dCA9IG51bGw7XG5cdH1cblx0VHdpbmtsZS5nZXRQcmVmID0gKG5hbWUpID0+IHtcblx0XHRpZiAodHlwZW9mIFR3aW5rbGUucHJlZnMgPT09ICdvYmplY3QnICYmIFR3aW5rbGUucHJlZnNbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIFR3aW5rbGUucHJlZnNbbmFtZV07XG5cdFx0fVxuXHRcdC8vIE9sZCBwcmVmZXJlbmNlcyBmb3JtYXQsIHVzZWQgYmVmb3JlIHR3aW5rbGVvcHRpb25zLmpzIHdhcyBhIHRoaW5nXG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cuVHdpbmtsZUNvbmZpZyA9PT0gJ29iamVjdCcgJiYgd2luZG93LlR3aW5rbGVDb25maWdbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIHdpbmRvdy5Ud2lua2xlQ29uZmlnW25hbWVdO1xuXHRcdH1cblx0XHRyZXR1cm4gVHdpbmtsZS5kZWZhdWx0Q29uZmlnW25hbWVdO1xuXHR9O1xuXHQvKipcblx0ICogKioqKioqKioqKioqKioqKiBUd2lua2xlLmFkZFBvcnRsZXQoKSAqKioqKioqKioqKioqKioqXG5cdCAqXG5cdCAqIEFkZHMgYSBwb3J0bGV0IG1lbnUgdG8gb25lIG9mIHRoZSBuYXZpZ2F0aW9uIGFyZWFzIG9uIHRoZSBwYWdlLlxuXHQgKiBUaGlzIGlzIG5lY2Vzc2FyaWx5IHF1aXRlIGEgaGFjayBzaW5jZSBza2lucywgbmF2aWdhdGlvbiBhcmVhcywgYW5kXG5cdCAqIHBvcnRsZXQgbWVudSB0eXBlcyBhbGwgd29yayBzbGlnaHRseSBkaWZmZXJlbnQuXG5cdCAqXG5cdCAqIEF2YWlsYWJsZSBuYXZpZ2F0aW9uIGFyZWFzIGRlcGVuZCBvbiB0aGUgc2tpbiB1c2VkLlxuXHQgKiBWZWN0b3I6XG5cdCAqIC0gRm9yIGVhY2ggb3B0aW9uLCB0aGUgb3V0ZXIgbmF2IGNsYXNzIGNvbnRhaW5zIFwidmVjdG9yLW1lbnVcIiwgdGhlIGlubmVyIGRpdiBjbGFzcyBpcyBcInZlY3Rvci1tZW51LWNvbnRlbnRcIiwgYW5kIHRoZSB1bCBpcyBcInZlY3Rvci1tZW51LWNvbnRlbnQtbGlzdFwiXG5cdCAqIC0gXCJtdy1wYW5lbFwiLCBvdXRlciBuYXYgY2xhc3MgY29udGFpbnMgXCJ2ZWN0b3ItbWVudS1wb3J0YWxcIi4gRXhpc3RpbmcgcG9ydGxldHMvZWxlbWVudHM6IFwicC1sb2dvXCIsIFwicC1uYXZpZ2F0aW9uXCIsIFwicC1pbnRlcmFjdGlvblwiLCBcInAtdGJcIiwgXCJwLWNvbGwtcHJpbnRfZXhwb3J0XCJcblx0ICogLSBcImxlZnQtbmF2aWdhdGlvblwiLCBvdXRlciBuYXYgY2xhc3MgY29udGFpbnMgXCJ2ZWN0b3ItbWVudS10YWJzXCIgb3IgXCJ2ZWN0b3ItbWVudS1kcm9wZG93blwiLiBFeGlzdGluZyBwb3J0bGV0czogXCJwLW5hbWVzcGFjZXNcIiwgXCJwLXZhcmlhbnRzXCIgKG1lbnUpXG5cdCAqIC0gXCJyaWdodC1uYXZpZ2F0aW9uXCIsIG91dGVyIG5hdiBjbGFzcyBjb250YWlucyBcInZlY3Rvci1tZW51LXRhYnNcIiBvciBcInZlY3Rvci1tZW51LWRyb3Bkb3duXCIuIEV4aXN0aW5nIHBvcnRsZXRzOiBcInAtdmlld3NcIiwgXCJwLWNhY3Rpb25zXCIgKG1lbnUpLCBcInAtc2VhcmNoXCJcblx0ICogLSBTcGVjaWFsIGxheW91dCBvZiBwLXBlcnNvbmFsIHBvcnRsZXQgKHBhcnQgb2YgXCJoZWFkXCIpIHRocm91Z2ggc3BlY2lhbGl6ZWQgc3R5bGVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmF2aWdhdGlvbiAtLSBpZCBvZiB0aGUgdGFyZ2V0IG5hdmlnYXRpb24gYXJlYSAoc2tpbiBkZXBlbmRhbnQsIG9uIHZlY3RvciBlaXRoZXIgb2YgXCJsZWZ0LW5hdmlnYXRpb25cIiwgXCJyaWdodC1uYXZpZ2F0aW9uXCIsIG9yIFwibXctcGFuZWxcIilcblx0ICogQHBhcmFtIHtzdHJpbmd9IGlkIC0tIGlkIG9mIHRoZSBwb3J0bGV0IG1lbnUgdG8gY3JlYXRlLCBwcmVmZXJhYmx5IHN0YXJ0IHdpdGggXCJwLVwiLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtLSBuYW1lIG9mIHRoZSBwb3J0bGV0IG1lbnUgdG8gY3JlYXRlLiBWaXNpYmlsaXR5IGRlcGVuZHMgb24gdGhlIGNsYXNzIHVzZWQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIC0tIHR5cGUgb2YgcG9ydGxldC4gQ3VycmVudGx5IG9ubHkgdXNlZCBmb3IgdGhlIHZlY3RvciBub24tc2lkZWJhciBwb3J0bGV0cywgcGFzcyBcIm1lbnVcIiB0byBtYWtlIHRoaXMgcG9ydGxldCBhIGRyb3AgZG93biBtZW51LlxuXHQgKiBAcGFyYW0ge05vZGV9IG5leHRub2RlaWQgLS0gdGhlIGlkIG9mIHRoZSBub2RlIGJlZm9yZSB3aGljaCB0aGUgbmV3IGl0ZW0gc2hvdWxkIGJlIGFkZGVkLCBzaG91bGQgYmUgYW5vdGhlciBpdGVtIGluIHRoZSBzYW1lIGxpc3QsIG9yIHVuZGVmaW5lZCB0byBwbGFjZSBpdCBhdCB0aGUgZW5kLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHtOb2RlfSAtLSB0aGUgRE9NIG5vZGUgb2YgdGhlIG5ldyBpdGVtIChhIERJViBlbGVtZW50KSBvciBudWxsXG5cdCAqL1xuXHRUd2lua2xlLmFkZFBvcnRsZXQgPSAobmF2aWdhdGlvbiwgaWQsIHRleHQsIHR5cGUsIG5leHRub2RlaWQpID0+IHtcblx0XHQvLyBzYW5pdHkgY2hlY2tzLCBhbmQgZ2V0IHJlcXVpcmVkIERPTSBub2Rlc1xuXHRcdGNvbnN0IHJvb3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKC9eKD86I3xcXC4pLy50ZXN0KG5hdmlnYXRpb24pID8gbmF2aWdhdGlvbiA6IGAjJHtuYXZpZ2F0aW9ufWApO1xuXHRcdGlmICghcm9vdCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGNvbnN0IGl0ZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtpZH1gKTtcblx0XHRpZiAoaXRlbSkge1xuXHRcdFx0aWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiBpdGVtLnBhcmVudE5vZGUgPT09IHJvb3QpIHtcblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0bGV0IG5leHRub2RlO1xuXHRcdGlmIChuZXh0bm9kZWlkKSB7XG5cdFx0XHRuZXh0bm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke25leHRub2RlaWR9YCk7XG5cdFx0fVxuXHRcdC8vIHZlcmlmeS9ub3JtYWxpemUgaW5wdXRcblx0XHRjb25zdCBza2luID0gbXcuY29uZmlnLmdldCgnc2tpbicpO1xuXHRcdGlmIChcblx0XHRcdChza2luICE9PSAndmVjdG9yJyAmJiBza2luICE9PSAndmVjdG9yLTIwMjInKSB8fFxuXHRcdFx0KG5hdmlnYXRpb24gIT09ICdsZWZ0LW5hdmlnYXRpb24nICYmIG5hdmlnYXRpb24gIT09ICdyaWdodC1uYXZpZ2F0aW9uJylcblx0XHQpIHtcblx0XHRcdHR5cGUgPSBudWxsOyAvLyBtZW51IHN1cHBvcnRlZCBvbmx5IGluIHZlY3RvcidzICNsZWZ0LW5hdmlnYXRpb24gJiAjcmlnaHQtbmF2aWdhdGlvblxuXHRcdH1cblx0XHRsZXQgb3V0ZXJOYXZDbGFzcztcblx0XHRsZXQgaW5uZXJEaXZDbGFzcztcblx0XHRzd2l0Y2ggKHNraW4pIHtcblx0XHRcdGNhc2UgJ3ZlY3Rvcic6XG5cdFx0XHRjYXNlICd2ZWN0b3ItMjAyMic6XG5cdFx0XHRcdC8vIFhYWDogcG9ydGFsIGRvZXNuJ3Qgd29ya1xuXHRcdFx0XHRpZiAobmF2aWdhdGlvbiAhPT0gJ3BvcnRhbCcgJiYgbmF2aWdhdGlvbiAhPT0gJ2xlZnQtbmF2aWdhdGlvbicgJiYgbmF2aWdhdGlvbiAhPT0gJ3JpZ2h0LW5hdmlnYXRpb24nKSB7XG5cdFx0XHRcdFx0bmF2aWdhdGlvbiA9ICdtdy1wYW5lbCc7XG5cdFx0XHRcdH1cblx0XHRcdFx0b3V0ZXJOYXZDbGFzcyA9ICdtdy1wb3J0bGV0IHZlY3Rvci1tZW51Jztcblx0XHRcdFx0aWYgKG5hdmlnYXRpb24gPT09ICdtdy1wYW5lbCcpIHtcblx0XHRcdFx0XHRvdXRlck5hdkNsYXNzICs9ICcgdmVjdG9yLW1lbnUtcG9ydGFsJztcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlID09PSAnbWVudScpIHtcblx0XHRcdFx0XHRvdXRlck5hdkNsYXNzICs9ICcgdmVjdG9yLW1lbnUtZHJvcGRvd24gdmVjdG9yLWRyb3Bkb3duIHZlY3Rvci1tZW51LWRyb3Bkb3duLW5vaWNvbic7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0b3V0ZXJOYXZDbGFzcyArPSAnIHZlY3Rvci1tZW51LXRhYnMnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlubmVyRGl2Q2xhc3MgPSAndmVjdG9yLW1lbnUtY29udGVudCB2ZWN0b3ItZHJvcGRvd24tY29udGVudCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZ29uZ2JpJzpcblx0XHRcdFx0b3V0ZXJOYXZDbGFzcyA9ICdtdy1wb3J0bGV0Jztcblx0XHRcdFx0aW5uZXJEaXZDbGFzcyA9ICdtdy1wb3J0bGV0LWJvZHknO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2NpdGl6ZW4nOlxuXHRcdFx0XHRvdXRlck5hdkNsYXNzID0gJ213LXBvcnRsZXQnO1xuXHRcdFx0XHRpbm5lckRpdkNsYXNzID0gJ213LXBvcnRsZXQtdHdpbmtsZSc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0bmF2aWdhdGlvbiA9ICdjb2x1bW4tb25lJztcblx0XHRcdFx0b3V0ZXJOYXZDbGFzcyA9ICdwb3J0bGV0Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdC8vIEJ1aWxkIHRoZSBET00gZWxlbWVudHMuXG5cdFx0bGV0IG91dGVyTmF2O1xuXHRcdGxldCBoZWFkaW5nO1xuXHRcdGlmIChza2luID09PSAndmVjdG9yLTIwMjInKSB7XG5cdFx0XHRvdXRlck5hdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0aGVhZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dGVyTmF2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbmF2Jyk7XG5cdFx0XHRoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDMnKTtcblx0XHR9XG5cdFx0b3V0ZXJOYXYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBgJHtpZH0tbGFiZWxgKTtcblx0XHQvLyBUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIHVzZWQgaGVyZSAob3V0ZXJOYXZDbGFzcyk6XG5cdFx0Ly8gKiBtdy1wb3J0bGV0IHZlY3Rvci1tZW51IHZlY3Rvci1tZW51LSpcblx0XHQvLyAqIG13LXBvcnRsZXRcblx0XHQvLyAqIGNvbHVtbi1vbmVcblx0XHQvLyBWZWN0b3IgZ2V0dGluZyB2ZWN0b3ItbWVudS1lbXB0eSBGSVhNRSBUT0RPXG5cdFx0b3V0ZXJOYXYuY2xhc3NOYW1lID0gYCR7b3V0ZXJOYXZDbGFzc30gZW1wdHlQb3J0bGV0YDtcblx0XHRvdXRlck5hdi5pZCA9IGlkO1xuXHRcdGlmIChuZXh0bm9kZSAmJiBuZXh0bm9kZS5wYXJlbnROb2RlID09PSByb290KSB7XG5cdFx0XHRyb290Lmluc2VydEJlZm9yZShvdXRlck5hdiwgbmV4dG5vZGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyb290LmFwcGVuZENoaWxkKG91dGVyTmF2KTtcblx0XHR9XG5cdFx0aGVhZGluZy5pZCA9IGAke2lkfS1sYWJlbGA7XG5cdFx0Y29uc3QgdWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpO1xuXHRcdGlmIChza2luID09PSAndmVjdG9yJyB8fCBza2luID09PSAndmVjdG9yLTIwMjInKSB7XG5cdFx0XHRoZWFkaW5nLnNldEF0dHJpYnV0ZSgnZm9yJywgYCR7aWR9LWRyb3Bkb3duLWNoZWNrYm94YCk7XG5cdFx0XHR1bC5jbGFzc05hbWUgPSAndmVjdG9yLW1lbnUtY29udGVudC1saXN0Jztcblx0XHRcdGhlYWRpbmcuY2xhc3NOYW1lID0gJ3ZlY3Rvci1tZW51LWhlYWRpbmcgdmVjdG9yLWRyb3Bkb3duLWxhYmVsJztcblx0XHRcdC8vIGFkZCBpbnZpc2libGUgY2hlY2tib3ggdG8ga2VlcCBtZW51IG9wZW4gd2hlbiBjbGlja2VkXG5cdFx0XHQvLyBzaW1pbGFyIHRvIHRoZSBwLWNhY3Rpb25zIChcIk1vcmVcIikgbWVudVxuXHRcdFx0aWYgKG91dGVyTmF2Q2xhc3MuaW5jbHVkZXMoJ3ZlY3Rvci1tZW51LWRyb3Bkb3duJykpIHtcblx0XHRcdFx0Y29uc3QgY2hrYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcblx0XHRcdFx0Y2hrYm94LmlkID0gYCR7aWR9LWRyb3Bkb3duLWNoZWNrYm94YDtcblx0XHRcdFx0Y2hrYm94LmNsYXNzTmFtZSA9ICd2ZWN0b3ItbWVudS1jaGVja2JveCB2ZWN0b3ItZHJvcGRvd24tY2hlY2tib3gnO1xuXHRcdFx0XHRjaGtib3guc2V0QXR0cmlidXRlKCd0eXBlJywgJ2NoZWNrYm94Jyk7XG5cdFx0XHRcdGNoa2JveC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsIGAke2lkfS1sYWJlbGApO1xuXHRcdFx0XHRvdXRlck5hdi5hcHBlbmRDaGlsZChjaGtib3gpO1xuXHRcdFx0XHQvLyBWZWN0b3IgZ2V0cyBpdHMgdGl0bGUgaW4gYSBzcGFuOyBhbGwgb3RoZXJzIGV4Y2VwdFxuXHRcdFx0XHQvLyBnb25nYmkgaGF2ZSBubyB0aXRsZSwgYW5kIGl0IGhhcyBubyBzcGFuXG5cdFx0XHRcdGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHRcdHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuXHRcdFx0XHRoZWFkaW5nLmFwcGVuZENoaWxkKHNwYW4pO1xuXHRcdFx0XHRjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0XHRhLmhyZWYgPSAnIyc7XG5cdFx0XHRcdCQoYSkub24oJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRoZWFkaW5nLmFwcGVuZENoaWxkKGEpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBCYXNpY2FsbHkganVzdCBHb25nYmlcblx0XHRcdGhlYWRpbmcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuXHRcdH1cblx0XHRvdXRlck5hdi5hcHBlbmRDaGlsZChoZWFkaW5nKTtcblx0XHRpZiAoaW5uZXJEaXZDbGFzcykge1xuXHRcdFx0Y29uc3QgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdC8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgdXNlZCBoZXJlIChpbm5lckRpdkNsYXNzKTpcblx0XHRcdC8vICogdmVjdG9yLW1lbnUtY29udGVudFxuXHRcdFx0Ly8gKiBtdy1wb3J0bGV0LWJvZHlcblx0XHRcdC8vICogbXctcG9ydGxldC10d2lua2xlXG5cdFx0XHQvLyAqIHBvcnRsZXRcblx0XHRcdGlubmVyRGl2LmNsYXNzTmFtZSA9IGlubmVyRGl2Q2xhc3M7XG5cdFx0XHRpbm5lckRpdi5hcHBlbmRDaGlsZCh1bCk7XG5cdFx0XHRvdXRlck5hdi5hcHBlbmRDaGlsZChpbm5lckRpdik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dGVyTmF2LmFwcGVuZENoaWxkKHVsKTtcblx0XHR9XG5cdFx0cmV0dXJuIG91dGVyTmF2O1xuXHR9O1xuXHQvKipcblx0ICogKioqKioqKioqKioqKioqKiBUd2lua2xlLmFkZFBvcnRsZXRMaW5rKCkgKioqKioqKioqKioqKioqKlxuXHQgKiBCdWlsZHMgYSBwb3J0bGV0IG1lbnUgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQsIGFuZCBhZGQgdGhlIHBvcnRsZXQgbGluay5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IHRhc2sgLS0gRWl0aGVyIGEgVVJMIGZvciB0aGUgcG9ydGxldCBsaW5rIG9yIGEgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRcblx0ICogQHBhcmFtIHtzdHJpbmd9IGlkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b29sdGlwXG5cdCAqIEByZXR1cm4ge09iamVjdH0gbGlua1xuXHQgKi9cblx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayA9ICh0YXNrLCB0ZXh0LCBpZCwgdG9vbHRpcCkgPT4ge1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3BvcnRsZXRBcmVhJykgIT09IG51bGwpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldChcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0QXJlYScpLFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3BvcnRsZXRJZCcpLFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3BvcnRsZXROYW1lJyksXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldFR5cGUnKSxcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0TmV4dCcpXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRjb25zdCBsaW5rID0gbXcudXRpbC5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldElkJyksXG5cdFx0XHR0eXBlb2YgdGFzayA9PT0gJ3N0cmluZycgPyB0YXNrIDogJyMnLFxuXHRcdFx0dGV4dCxcblx0XHRcdGlkLFxuXHRcdFx0dG9vbHRpcFxuXHRcdCk7XG5cdFx0JGJvZHkuZmluZCgnLmNsaWVudC1qcyAuc2tpbi12ZWN0b3IgI3AtY2FjdGlvbnMnKS5jc3MoJ21hcmdpbi1yaWdodCcsICdpbml0aWFsJyk7XG5cdFx0aWYgKHR5cGVvZiB0YXNrID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHQkKGxpbmspXG5cdFx0XHRcdC5maW5kKCdhJylcblx0XHRcdFx0Lm9uKCdjbGljaycsIChldikgPT4ge1xuXHRcdFx0XHRcdHRhc2soKTtcblx0XHRcdFx0XHRldi5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKCQuY29sbGFwc2libGVUYWJzKSB7XG5cdFx0XHQkLmNvbGxhcHNpYmxlVGFicy5oYW5kbGVSZXNpemUoKTtcblx0XHR9XG5cdFx0cmV0dXJuIGxpbms7XG5cdH07XG5cdC8qKlxuXHQgKiAqKioqKioqKioqKioqKioqIEdlbmVyYWwgaW5pdGlhbGl6YXRpb24gY29kZSAqKioqKioqKioqKioqKioqXG5cdCAqL1xuXHRjb25zdCBzY3JpcHR1cmwgPSBtdy51dGlsLmdldFVybChgVXNlcjoke213LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKX0vdHdpbmtsZW9wdGlvbnMuanNgLCB7XG5cdFx0YWN0aW9uOiAncmF3Jyxcblx0XHRjdHlwZTogJ3RleHQvamF2YXNjcmlwdCcsXG5cdFx0aGFwcHk6ICd5ZXMnLFxuXHR9KTtcblx0Ly8gUmV0cmlldmUgdGhlIHVzZXIncyBUd2lua2xlIHByZWZlcmVuY2VzICh3aW5kb3cuVHdpbmtsZS5wcmVmcylcblx0VHdpbmtsZS5wcmVmcyB8fD0ge307XG5cdG13LmxvYWRlclxuXHRcdC5nZXRTY3JpcHQoc2NyaXB0dXJsKVxuXHRcdC5mYWlsKCgpID0+IHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5pyq6IO95Yqg6L295oKo55qEVHdpbmtsZeWPguaVsOiuvue9ricsICfmnKrog73ovInlhaXmgqjnmoRUd2lua2xl5YGP5aW96Kit5a6aJyksIHtcblx0XHRcdFx0dHlwZTogJ2Vycm9yJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZScsXG5cdFx0XHR9KTtcblx0XHR9KVxuXHRcdC5hbHdheXMoKCkgPT4ge1xuXHRcdFx0JChUd2lua2xlLmxvYWQpO1xuXHRcdH0pO1xuXHQvLyBEZXZlbG9wZXJzOiB5b3UgY2FuIGltcG9ydCBjdXN0b20gVHdpbmtsZSBtb2R1bGVzIGhlcmVcblx0Ly8gRm9yIGV4YW1wbGUsIG13LmxvYWRlci5sb2FkKHNjcmlwdHBhdGhiZWZvcmUgKyBcIlVzZXI6VW5jbGVEb3VnZ2llL21vcmViaXRzLXRlc3QuanNcIiArIHNjcmlwdHBhdGhhZnRlcik7XG5cdFR3aW5rbGUubG9hZCA9ICgpID0+IHtcblx0XHQvLyBEb24ndCBhY3RpdmF0ZSBvbiBzcGVjaWFsIHBhZ2VzIG90aGVyIHRoYW4gdGhvc2UgbGlzdGVkIGhlcmUsIHNvXG5cdFx0Ly8gdGhhdCBvdGhlcnMgbG9hZCBmYXN0ZXIsIGVzcGVjaWFsbHkgdGhlIHdhdGNobGlzdC5cblx0XHRsZXQgYWN0aXZlU3BlY2lhbFBhZ2VMaXN0ID0gWydCbG9jaycsICdDb250cmlidXRpb25zJywgJ0FidXNlTG9nJywgJ1JlY2VudGNoYW5nZXMnLCAnUmVjZW50Y2hhbmdlc2xpbmtlZCddOyAvLyB3Z1JlbGV2YW50VXNlck5hbWUgZGVmaW5lZCBmb3Igbm9uLXN5c29wcyBvbiBTcGVjaWFsOkJsb2NrXG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRhY3RpdmVTcGVjaWFsUGFnZUxpc3QgPSBbXG5cdFx0XHRcdC4uLmFjdGl2ZVNwZWNpYWxQYWdlTGlzdCxcblx0XHRcdFx0J0RlbGV0ZWRDb250cmlidXRpb25zJyxcblx0XHRcdFx0J1ByZWZpeGluZGV4Jyxcblx0XHRcdFx0J0Jyb2tlblJlZGlyZWN0cycsXG5cdFx0XHRdO1xuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAtMSAmJlxuXHRcdFx0IWFjdGl2ZVNwZWNpYWxQYWdlTGlzdC5pbmNsdWRlcyhtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBQcmV2ZW50IGNsaWNramFja2luZ1xuXHRcdGlmICh3aW5kb3cudG9wICE9PSB3aW5kb3cuc2VsZikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBTZXQgY3VzdG9tIEFwaS1Vc2VyLUFnZW50IGhlYWRlciwgZm9yIHNlcnZlci1zaWRlIGxvZ2dpbmcgcHVycG9zZXNcblx0XHRUd2lua2xlLnVzZXJBZ2VudCA9ICdUd2lua2xlLzEuMSc7XG5cdFx0TW9yZWJpdHMud2lraS5hcGkuc2V0QXBpVXNlckFnZW50KFR3aW5rbGUudXNlckFnZW50KTtcblx0XHRUd2lua2xlLmRpc2FibGVkTW9kdWxlcyA9IFsuLi5Ud2lua2xlLmdldFByZWYoJ2Rpc2FibGVkTW9kdWxlcycpLCAuLi5Ud2lua2xlLmdldFByZWYoJ2Rpc2FibGVkU3lzb3BNb2R1bGVzJyldO1xuXHRcdC8vIFJlZGVmaW5lIGFkZEluaXRDYWxsYmFjayBzbyB0aGF0IGFueSBtb2R1bGVzIGJlaW5nIGxvYWRlZCBub3cgb24gYXJlIGRpcmVjdGx5XG5cdFx0Ly8gaW5pdGlhbGlzZWQgcmF0aGVyIHRoYW4gYWRkZWQgdG8gaW5pdENhbGxiYWNrcyBhcnJheVxuXHRcdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrID0gKGZ1bmMsIG5hbWUpID0+IHtcblx0XHRcdGlmICghbmFtZSB8fCAhVHdpbmtsZS5kaXNhYmxlZE1vZHVsZXMuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdFx0ZnVuYygpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Ly8gSW5pdGlhbGlzZSBtb2R1bGVzIHRoYXQgd2VyZSBzYXZlZCBpbiBpbml0Q2FsbGJhY2tzIGFycmF5XG5cdFx0Zm9yIChjb25zdCBtb2R1bGUgb2YgVHdpbmtsZS5pbml0Q2FsbGJhY2tzKSB7XG5cdFx0XHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhtb2R1bGUuZnVuYywgbW9kdWxlLm5hbWUpO1xuXHRcdH1cblx0XHQvLyBJbmNyZWFzZXMgdGV4dCBzaXplIGluIFR3aW5rbGUgZGlhbG9ncywgaWYgc28gY29uZmlndXJlZFxuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2RpYWxvZ0xhcmdlRm9udCcpKSB7XG5cdFx0XHRtdy51dGlsLmFkZENTUyhcblx0XHRcdFx0Jy5tb3JlYml0cy1kaWFsb2ctY29udGVudCwubW9yZWJpdHMtZGlhbG9nLWZvb3Rlcmxpbmtze2ZvbnQtc2l6ZToxMDAlIWltcG9ydGFudH0ubW9yZWJpdHMtZGlhbG9nIGlucHV0LC5tb3JlYml0cy1kaWFsb2cgc2VsZWN0LC5tb3JlYml0cy1kaWFsb2ctY29udGVudCBidXR0b257Zm9udC1zaXplOmluaGVyaXQgIWltcG9ydGFudH0nXG5cdFx0XHQpO1xuXHRcdH1cblx0XHQvLyBIaWRlIHRoZSBsaW5nZXJpbmcgc3BhY2UgaWYgdGhlIFRXIG1lbnUgaXMgZW1wdHlcblx0XHRjb25zdCBpc1ZlY3RvciA9IFsndmVjdG9yJywgJ3ZlY3Rvci0yMDIyJ10uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnc2tpbicpKTtcblx0XHRpZiAoaXNWZWN0b3IgJiYgVHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0VHlwZScpID09PSAnbWVudScgJiYgJGJvZHkuZmluZCgnI3AtdHdpbmtsZScpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0JGJvZHkuZmluZCgnI3AtY2FjdGlvbnMnKS5jc3MoJ21hcmdpbi1yaWdodCcsICdpbml0aWFsJyk7XG5cdFx0fVxuXHR9O1xuXHQvKipcblx0ICogVHdpbmtsZS1zcGVjaWZpYyB1dGlsaXR5IGZ1bmN0aW9ucyBzaGFyZWQgYnkgbXVsdGlwbGUgbW9kdWxlc1xuXHQgKlxuXHQgKiBAcGFyYW0geyp9IGZpcnN0XG5cdCAqIEBwYXJhbSB7Kn0gc2Vjb25kXG5cdCAqL1xuXHQvLyBVc2VkIGluIGJhdGNoLCB1bmxpbmssIGFuZCBkZXByb2QgdG8gc29ydCBwYWdlcyBieSBuYW1lc3BhY2UsIGFzXG5cdC8vIGpzb24gZm9ybWF0dmVyc2lvbj0yIHNvcnRzIGJ5IHBhZ2VpZCBpbnN0ZWFkICgjMTI1MSlcblx0VHdpbmtsZS5zb3J0QnlOYW1lc3BhY2UgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuXHRcdHJldHVybiBmaXJzdC5ucyAtIHNlY29uZC5ucyB8fCAoZmlyc3QudGl0bGUgPiBzZWNvbmQudGl0bGUgPyAxIDogLTEpO1xuXHR9O1xuXHQvLyBVc2VkIGluIHVubGluayBsaXN0aW5ncyB0byBsaW5rIHRoZSBwYWdlIHRpdGxlXG5cdFR3aW5rbGUuZ2VuZXJhdGVCYXRjaFBhZ2VMaW5rcyA9IChjaGVja2JveCkgPT4ge1xuXHRcdGNvbnN0ICRjaGVja2JveCA9ICQoY2hlY2tib3gpO1xuXHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsICRjaGVja2JveC52YWwoKSk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3R3LWJhdGNocGFnZS1saW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybCgkY2hlY2tib3gudmFsKCkpKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdCRjaGVja2JveC5uZXh0KCkucHJlcGVuZChbbGluaywgJyAnXSk7XG5cdH07XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYXJ2LmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWFydigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZWFydi5qczogQVJWIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJBUlZcIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicywgZXRjLilcblx0ICovXG5cdFR3aW5rbGUuYXJ2ID0gKCkgPT4ge1xuXHRcdGNvbnN0IHVzZXJuYW1lID0gbXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyk7XG5cdFx0aWYgKCF1c2VybmFtZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBpc0lQID0gbXcudXRpbC5pc0lQQWRkcmVzcyh1c2VybmFtZSk7XG5cdFx0Y29uc3QgdGl0bGUgPSBpc0lQXG5cdFx0XHQ/IHdpbmRvdy53Z1VMUygn5oql5ZGKSVDnu5nnrqHnkIblkZgnLCAn5aCx5ZGKSVDntabnrqHnkIblk6EnKVxuXHRcdFx0OiB3aW5kb3cud2dVTFMoJ+aKpeWRiueUqOaIt+e7meeuoeeQhuS6uuWRmCcsICfloLHlkYrkvb/nlKjogIXntabnrqHnkIbkurrlk6EnKTtcblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmFydi5jYWxsYmFjayh1c2VybmFtZSwgaXNJUCk7XG5cdFx0XHR9LFxuXHRcdFx0d2luZG93LndnVUxTKCflkYrnirYnLCAn5ZGK54uAJyksXG5cdFx0XHQndHctYXJ2Jyxcblx0XHRcdHRpdGxlXG5cdFx0KTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2sgPSAodWlkLCBpc0lQKSA9PiB7XG5cdFx0aWYgKHVpZCA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+S9oOS4jeaDs+aKpeWRiuS9oOiHquW3se+8jOWvueWQp++8nycsICfkvaDkuI3mg7PloLHlkYrkvaDoh6rlt7HvvIzlsI3lkKfvvJ8nKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGVhcnYnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjAwLCA1MDApO1xuXHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aKpeWRiueUqOaIt+e7meeuoeeQhuS6uuWRmCcsICfloLHlkYrkvb/nlKjogIXntabnrqHnkIbkurrlk6EnKSk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+WRiueKtuiuvue9ricsICflkYrni4DoqK3lrponKSwgJ0g6VFcvUFJFRiNhcnYnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVyPlkYrni4AnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmFydi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgY2F0ZWdvcmllcyA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NhdGVnb3J5Jyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqeaKpeWRiuexu+Wei++8micsICfpgbjmk4floLHlkYrpoZ7liKXvvJonKSxcblx0XHRcdGV2ZW50OiBUd2lua2xlLmFydi5jYWxsYmFjay5jaGFuZ2VDYXRlZ29yeSxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+egtOWdj++8iFFXOlZJUO+8iScsICfnoLTlo57vvIhRVzpWSVDvvIknKSxcblx0XHRcdHZhbHVlOiAnYWl2Jyxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e8lui+keS6ieiuru+8iFFXOkVXSVDvvIknLCAn57eo6Lyv54it6K2w77yIUVc6RVdJUO+8iScpLFxuXHRcdFx0dmFsdWU6ICdld2lwJyxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+WQje+8iFFXOlVBQe+8iScsICfkvb/nlKjogIXlkI3nqLHvvIhRVzpVQUHvvIknKSxcblx0XHRcdHZhbHVlOiAndXNlcm5hbWUnLFxuXHRcdFx0ZGlzYWJsZWQ6IG13LnV0aWwuaXNJUEFkZHJlc3ModWlkKSxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WCgOWEoeiwg+afpe+8iFFXOlNQSe+8iScsICflgoDlhKHoqr/mn6XvvIhRVzpTUEnvvIknKSxcblx0XHRcdHZhbHVlOiAnc3BpJyxcblx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHVpZCksXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRsYWJlbDogJycsXG5cdFx0XHRzdHlsZTogJ2NvbG9yOiAjZjAwJyxcblx0XHRcdGlkOiAndHdpbmtsZS1hcnYtYmxvY2t3YXJuaW5nJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICdXb3JrIGFyZWEnLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRsYWJlbDogJ+aPkOS6pCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2hpZGRlbicsXG5cdFx0XHRuYW1lOiAndWlkJyxcblx0XHRcdHZhbHVlOiB1aWQsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIHVzZXIgaXMgYmxvY2tlZCwgdXBkYXRlIG5vdGljZVxuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0bGlzdDogJ2Jsb2NrcycsXG5cdFx0XHRia3Byb3A6ICdyYW5nZXxmbGFncycsXG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHR9O1xuXHRcdGlmIChpc0lQKSB7XG5cdFx0XHRxdWVyeS5ia2lwID0gdWlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5ia3VzZXJzID0gdWlkO1xuXHRcdH1cblx0XHRuZXcgTW9yZWJpdHMud2lraS5hcGkod2luZG93LndnVUxTKCfmo4Dmn6XnlKjmiLfnmoTlsIHnpoHnirbmgIEnLCAn5qqi5p+l5L2/55So6ICF55qE5bCB6Y6W54uA5oWLJyksIHF1ZXJ5LCAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBibG9ja2xpc3QgPSBhcGlvYmouZ2V0UmVzcG9uc2UoKS5xdWVyeS5ibG9ja3M7XG5cdFx0XHRpZiAoYmxvY2tsaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBbYmxvY2tdID0gYmxvY2tsaXN0O1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9XG5cdFx0XHRcdFx0KGlzSVAgPyB3aW5kb3cud2dVTFMoJ+atpElQ5Zyw5Z2AJywgJ+atpElQ5L2N5Z2AJykgOiB3aW5kb3cud2dVTFMoJ+atpOi0puWPtycsICfmraTos6zomZ8nKSkgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bey57uP6KKrJywgJ+W3sue2k+iiqycpICtcblx0XHRcdFx0XHQoYmxvY2sucGFydGlhbCA/ICfpg6jliIYnIDogJycpO1xuXHRcdFx0XHQvLyBTdGFydCBhbmQgZW5kIGRpZmZlciwgcmFuZ2UgYmxvY2tlZFxuXHRcdFx0XHRtZXNzYWdlICs9IGJsb2NrLnJhbmdlc3RhcnQgPT09IChibG9jay5yYW5nZWVuZCA/ICfmrrUnIDogJycpICsgd2luZG93LndnVUxTKCflsIHnpoHjgIInLCAn5bCB6Y6W44CCJyk7XG5cdFx0XHRcdGlmIChibG9jay5wYXJ0aWFsKSB7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtYXJ2LWJsb2Nrd2FybmluZycpLmNzcygnY29sb3InLCAnYmxhY2snKTsgLy8gTGVzcyBzZXZlcmVcblx0XHRcdFx0fVxuXHRcdFx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS1hcnYtYmxvY2t3YXJuaW5nJykudGV4dChtZXNzYWdlKTtcblx0XHRcdH1cblx0XHR9KS5wb3N0KCk7XG5cdFx0Ly8gV2UgbXVzdCBpbml0IHRoZVxuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5jYXRlZ29yeS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2Lmx0YV9saXN0ID0gW1xuXHRcdHtcblx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+mAieaLqScsICfoq4vpgbjmk4cnKSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmFydi5jYWxsYmFjay5zb2NrbWFzdGVyX2NoYW5nZWQgPSAoZSkgPT4ge1xuXHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLnNldF9zb2NrbWFzdGVyKGUudGFyZ2V0LnZhbHVlKTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2suc2V0X3NvY2ttYXN0ZXIgPSAoc29ja21hc3RlcikgPT4ge1xuXHRcdCRib2R5LmZpbmQoJ2NvZGUudHctYXJ2LXNvY2ttYXN0ZXInKS50ZXh0KCd7eycuY29uY2F0KCdzdWJzdDonLCBgU29ja3N1c3BlY3Rub3RpY2V8MT0ke3NvY2ttYXN0ZXJ9fX1gKSk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmNoYW5nZUNhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRjb25zdCB2YWx1ZV8gPSBlLnRhcmdldC52YWx1ZTtcblx0XHRjb25zdCByb290XyA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyb290XywgJ3dvcmtfYXJlYScpO1xuXHRcdGxldCB3b3JrX2FyZWEgPSBudWxsO1xuXHRcdGNvbnN0IHByZXZpZXdsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdHByZXZpZXdsaW5rLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblx0XHRwcmV2aWV3bGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn6aKE6KeIJywgJ+mgkOimvScpO1xuXHRcdCQocHJldmlld2xpbmspLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLnByZXZpZXcocm9vdF8pO1xuXHRcdH0pO1xuXHRcdHN3aXRjaCAodmFsdWVfKSB7XG5cdFx0XHRjYXNlICdld2lwJzpcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aKpeWRiue8lui+keS6ieiuricsICfloLHlkYrnt6jovK/niK3orbAnKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkeW5pbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ebuOWFs+mhtemdou+8micsICfnm7jpl5zpoIHpnaLvvJonKSxcblx0XHRcdFx0XHRzdWJsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLvvJonLCAn6aCB6Z2i77yaJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflpoLkuI3luIzmnJvorqnmiqXlkYrpk77mjqXliLDpobXpnaLvvIzor7fnlZnnqbonLCAn5aaC5LiN5biM5pyb6K6T5aCx5ZGK6YCj57WQ5Yiw6aCB6Z2i77yM6KuL55WZ56m6JyksXG5cdFx0XHRcdFx0bWluOiAxLFxuXHRcdFx0XHRcdG1heDogMTAsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivhOiuuu+8micsICfoqZXoq5bvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiAnYXJ2cHJldmlldycsXG5cdFx0XHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGVhcnYtcHJldmlld2JveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAndXNlcm5hbWUnOlxuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oql5ZGK5LiN5b2T55So5oi35ZCNJywgJ+WgseWRiuS4jeeVtuS9v+eUqOiAheWQjeeosScpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5b2T55So5oi35ZCN57G75Z6LJywgJ+S4jeeVtuS9v+eUqOiAheWQjeeosemhnuWIpScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmsYLpl7vnmb7np5HkuI3lhYHorrjkvb/nlKjluKbmnInor6/lr7zmgKfjgIHlrqPkvKDmgKfjgIHkvq7ovrHmgKfmiJbnoLTlnY/mgKfnmoTnlKjmiLflkI3jgILmraTlpJbvvIzkvb/nlKjln5/lkI3lj4rpgq7nrrHlnLDlnYDnmoTnlKjmiLflkI3kuqbooqvnpoHmraLjgILov5nkupvlh4bliJnkv7HlupTlupTnlKjoh7PnlKjmiLflkI3lj4rnrb7lkI3jgILlnKjlhbbku5bor63oqIDkuK3kuI3lvZPnmoTnlKjmiLflkI3miJbpgJrov4fplJnmi7zjgIHmm7/ku6PjgIHmmpfnpLrjgIHmi4blrZfmiJbku7vkvZXpl7TmjqXmlrnms5Xovr7miJDnmoTpnZ7lpqXlvZPnlKjmiLflkI3lkIzmoLfop4bkuLrov53op4TjgIInLFxuXHRcdFx0XHRcdFx0J+axguiBnueZvuenkeS4jeWFgeioseS9v+eUqOW4tuacieiqpOWwjuaAp+OAgeWuo+WCs+aAp+OAgeS+rui+seaAp+aIluegtOWjnuaAp+eahOS9v+eUqOiAheWQjeeoseOAguatpOWklu+8jOS9v+eUqOWfn+WQjeWPiumbu+WtkOS/oeeuseS9jeWdgOeahOS9v+eUqOiAheWQjeeoseS6puiiq+emgeatouOAgumAmeS6m+a6luWJh+S/seaHieaHieeUqOiHs+S9v+eUqOiAheWQjeeoseWPiuewveWQjeOAguWcqOWFtuS7luiqnuiogOS4reS4jeeVtueahOS9v+eUqOiAheWQjeeoseaIlumAmumBjumMr+aLvOOAgeabv+S7o+OAgeaal+ekuuOAgeaLhuWtl+aIluS7u+S9lemWk+aOpeaWueazlemBlOaIkOeahOmdnuWmpeeVtuS9v+eUqOiAheWQjeeoseWQjOaoo+imlueCuumBleimj+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ2dHlwZScsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor6/lr7zmgKfnlKjmiLflkI0nLCAn6Kqk5bCO5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+ivr+WvvOaApycsICfoqqTlsI7mgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfor6/lr7zmgKfnlKjmiLflkI3pmpDlkKvnnYDkuI7otKHnjK7ogIXnm7jlhbPmiJbor6/lr7zku5bkurrnmoTkuovmg4XjgILkvovlpoLvuLDkuI3lrp7op4LngrnjgIHmmpfnpLrotKblj7fmi6XmnInnibnlrprmnYPpmZDmiJbmmpfnpLror6XotKblj7flubbpnZ7nlLHkuIDkurrmi6XmnInogIzmmK/nlLHkuIDkuKrnu4TnvqTjgIHkuIDkuKrpobnnm67miJbkuIDkuKrpm4bkvZPov5DkvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfoqqTlsI7mgKfkvb/nlKjogIXlkI3nqLHpmrHlkKvokZfoiIfosqLnjbvogIXnm7jpl5zmiJboqqTlsI7ku5bkurrnmoTkuovmg4XjgILkvovlpoLvuLDkuI3lr6bop4Dpu57jgIHmmpfnpLros6zomZ/mk4HmnInnibnlrprmrIrpmZDmiJbmmpfnpLroqbLos6zomZ/kuKbpnZ7nlLHkuIDkurrmk4HmnInogIzmmK/nlLHkuIDlgIvnvqTntYTjgIHkuIDlgIvoqIjnlavmiJbkuIDlgIvpm4bpq5TpgYvkvZzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflrqPkvKDmgKfnlKjmiLflkI0nLCAn5a6j5YKz5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+Wuo+S8oOaApycsICflrqPlgrPmgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflrqPkvKDmgKfnlKjmiLflkI3kvJrkuo7msYLpl7vnmb7np5HkuIrotbfmjqjplIDkuIDkuKrnu4TnvqTmiJbkuIDpl7Tlhazlj7jnmoTkvZznlKjjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflrqPlgrPmgKfkvb/nlKjogIXlkI3nqLHmnIPmlrzmsYLogZ7nmb7np5HkuIrotbfmjqjpirfkuIDlgIvnvqTntYTmiJbkuIDplpPlhazlj7jnmoTkvZznlKjjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmpfnpLrlubbpnZ7nlLHkuIDkurrmi6XmnIknLCAn5pqX56S65Lim6Z2e55Sx5LiA5Lq65pOB5pyJJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnc2hhcmVkJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmr4/kuKrotKblj7flj6rlj6/ku6Xku6PooajkuKrkurrvvIjlrrnorrjkuIDkupvkvovlpJbmg4XlhrXvvInvvIzmiYDmnInkuI7ku5bkurrliIbkuqvotKblj7fnmoTooYzkuLrvvIjljIXmi6zliIbkuqvotKblj7flr4bnoIHvvInlnYfooqvnpoHmraLjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfmr4/lgIvos6zomZ/lj6rlj6/ku6Xku6PooajlgIvkurrvvIjlrrnoqLHkuIDkupvkvovlpJbmg4Xms4HvvInvvIzmiYDmnInoiIfku5bkurrliIbkuqvos6zomZ/nmoTooYzngrrvvIjljIXmi6zliIbkuqvos6zomZ/lr4bnorzvvInlnYfooqvnpoHmraLjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvq7ovrHmgKfnlKjmiLflkI0nLCAn5L6u6L6x5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAn5L6u6L6x5oCnJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkvq7ovrHmgKfnlKjmiLflkI3ku6TljY/osIPnvJbovpHlj5jlvpflm7Dpmr7vvIznlJroh7Pml6Dlj6/og73jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfkvq7ovrHmgKfkvb/nlKjogIXlkI3nqLHku6TljZToqr/nt6jovK/ororlvpflm7Dpm6PvvIznlJroh7PnhKHlj6/og73jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnoLTlnY/mgKfnlKjmiLflkI0nLCAn56C05aOe5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+egtOWdj+aApycsICfnoLTlo57mgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnoLTlnY/mgKfnlKjmiLflkI3ljIXmi6zkurrouqvmlLvlh7vjgIHkvKrlhpLku5bkurrmiJblhbbku5bkuIDliIfmnInnnYDmuIXmmbDlj6/op4HnmoTnoLTlnY/msYLpl7vnmb7np5HmhI/lm77nmoTnlKjmiLflkI3jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfnoLTlo57mgKfkvb/nlKjogIXlkI3nqLHljIXmi6zkurrouqvmlLvmk4rjgIHlgb3lhpLku5bkurrmiJblhbbku5bkuIDliIfmnInokZfmuIXmmbDlj6/opovnmoTnoLTlo57msYLogZ7nmb7np5HmhI/lnJbnmoTkvb/nlKjogIXlkI3nqLHjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6aG16Z2i5LiK6ZqQ6JeP55So5oi35ZCN77yI6ZyA55uR552j55qE55So5oi35ZCN6K+35Yu/5LqO56uZ5YaF5oql5ZGK77yM5Yu+6YCJ5q2k6aG55bm25LiN5p6E5oiQ6IO95Zyo56uZ5YaF5oql5ZGK55qE55CG55Sx77yJJyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK6Zqx6JeP5L2/55So6ICF5ZCN56ix77yI6ZyA55uj552j55qE5L2/55So6ICF5ZCN56ix6KuL5Yu/5pa856uZ5YWn5aCx5ZGK77yM5Yu+6YG45q2k6aCF5Lim5LiN5qeL5oiQ6IO95Zyo56uZ5YWn5aCx5ZGK55qE55CG55Sx77yJJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeeUqOaIt+WQjeS4jeW9k+ivt+WLvumAieatpOmhue+8jOazqOaEj++8muivt+iAg+iZkeengeS4i+iBlOezu+euoeeQhuWRmOWkhOeQhuOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeS9v+eUqOiAheWQjeeoseS4jeeVtuiri+WLvumBuOatpOmghe+8jOazqOaEj++8muiri+iAg+aFruengeS4i+iBr+e1oeeuoeeQhuWToeiZleeQhuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2hpZGVuYW1lJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdoaWRlbmFtZScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0c3R5bGU6ICdmb250LXdlaWdodDogYm9sZDsnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor4TorrrvvJonLCAn6KmV6KuW77yaJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ2FydnByZXZpZXcnLFxuXHRcdFx0XHRcdGxhYmVsOiBbcHJldmlld2xpbmtdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXByZXZpZXdib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3NwaSc6XG5cdFx0XHRcdHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5HotbflgoDlhKHosIPmn6UnLCAn55m86LW35YKA5YSh6Kq/5p+lJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzb2NrbWFzdGVyJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+S4u+i0puWPt+eahOeUqOaIt+WQje+8iOS4jeWQq1VzZXI65YmN57yA77yJJywgJ+S4u+izrOiZn+eahOS9v+eUqOiAheWQjeeose+8iOS4jeWQq1VzZXI65a2X6aaW77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6IHJvb3RfLnVpZC52YWx1ZSxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5hcnYuY2FsbGJhY2suc29ja21hc3Rlcl9jaGFuZ2VkLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXNwaW5vdGljZWJveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkeW5pbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvY2twdXBwZXQnLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YKA5YShJyxcblx0XHRcdFx0XHRzdWJsYWJlbDogJ+WCgOWEoe+8micsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflgoDlhKHnmoTnlKjmiLflkI3vvIjkuI3lkKtVc2VyOuWJjee8gO+8iScsICflgoDlhKHnmoTkvb/nlKjogIXlkI3nqLHvvIjkuI3lkKtVc2VyOuWtl+mmlu+8iScpLFxuXHRcdFx0XHRcdG1pbjogMixcblx0XHRcdFx0XHRtYXg6IDksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivgeaNru+8micsICforYnmk5rvvJonKSxcblx0XHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L6T5YWl6IO95aSf55So5p2l5L2T546w6L+Z5Lqb55So5oi35Y+v6IO95rul55So5aSa6YeN6LSm5Y+355qE6K+B5o2u77yM6L+Z6YCa5bi45YyF5ous6Iy26aaG5Y+R6KiA44CB6aG16Z2i5Y6G5Y+y5oiW5YW25LuW5pyJ5YWz55qE5L+h5oGv44CC6K+36YG/5YWN5Zyo5q2k5aSE5o+Q5L6b6Z2e5LiO5YKA5YSh5oiW5rul55So5aSa6YeN6LSm5Y+355u45YWz55qE5YW25LuW6K6o6K6644CCJyxcblx0XHRcdFx0XHRcdCfovLjlhaXog73lpKDnlKjkvobpq5Tnj77pgJnkupvkvb/nlKjogIXlj6/og73mv6vnlKjlpJrph43os6zomZ/nmoTorYnmk5rvvIzpgJnpgJrluLjljIXmi6zojLbppKjnmbzoqIDjgIHpoIHpnaLmrbflj7LmiJblhbbku5bmnInpl5znmoTos4foqIrjgILoq4vpgb/lhY3lnKjmraTomZXmj5DkvpvpnZ7oiIflgoDlhKHmiJbmv6vnlKjlpJrph43os6zomZ/nm7jpl5znmoTlhbbku5boqI7oq5bjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fmsYLnlKjmiLfmn6XmoLgnLCAn6KuL5rGC5L2/55So6ICF5p+l5qC4JyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdjaGVja3VzZXInLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOaIt+afpeaguOaYr+S4gOenjeeUqOS6juiOt+WPluWCgOWEoeaMh+aOp+ebuOWFs+aKgOacr+ivgeaNrueahOW3peWFt++8jOiLpeayoeacieato+W9k+eQhueUseWImeS4jeS8muS9v+eUqO+8jOaCqOW/hemhu+WcqOivgeaNruWtl+auteWFheWIhuino+mHiuS4uuS7gOS5iOmcgOimgeS9v+eUqOivpeW3peWFt+OAgueUqOaIt+afpeaguOS4jeS8mueUqOS6juWFrOW8gOi/nuaOpeeUqOaIt+i0puWPt+S9v+eUqOeahElQ5Zyw5Z2A44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So6ICF5p+l5qC45piv5LiA56iu55So5pa8542y5Y+W5YKA5YSh5oyH5o6n55u46Zec5oqA6KGT6K2J5pOa55qE5bel5YW377yM6Iul5rKS5pyJ5q2j55W255CG55Sx5YmH5LiN5pyD5L2/55So77yM5oKo5b+F6aCI5Zyo6K2J5pOa5qyE5L2N5YWF5YiG6Kej6YeL54K65LuA6bq86ZyA6KaB5L2/55So6Kmy5bel5YW344CC5L2/55So6ICF5p+l5qC45LiN5pyD55So5pa85YWs6ZaL6YCj5o6l5L2/55So6ICF6LOs6Jmf5L2/55So55qESVDkvY3lnYDjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ2FydnByZXZpZXcnLFxuXHRcdFx0XHRcdGxhYmVsOiBbcHJldmlld2xpbmtdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXByZXZpZXdib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRsYWJlbDogW1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fkvb/nlKjluLjor4blhrPlrprmmK/lkKbku6UnLCAn6KuL5L2/55So5bi46K2Y5rG65a6a5piv5ZCm5LulJyksXG5cdFx0XHRcdFx0XHQkKCc8Y29kZT4nKS5hZGRDbGFzcygndHctYXJ2LXNvY2ttYXN0ZXInKS5jc3MoJ21hcmdpbicsICcycHg7JylbMF0sXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfpgJrnn6XnlKjmiLfjgILov5nkuI3mmK/lv4XpobvnmoTvvIzlr7nkuo7mtonlj4rmlrDnlKjmiLfnmoTmiqXlkYrogIzoqIDvvIzpgJrnn6Xku5bku6zog73orqnmiqXlkYrmmL7lvpfmm7TlhazlubPvvIzkvYbmmK/orrjlpJrmg4XlhrXkuIvvvIjlpoLplb/mnJ/noLTlnY/ogIXvvInpgJrnn6Xmm7Tlj6/og73pgILlvpflhbblj43jgIInLFxuXHRcdFx0XHRcdFx0XHQn6YCa55+l5L2/55So6ICF44CC6YCZ5LiN5piv5b+F6aCI55qE77yM5bCN5pa85raJ5Y+K5paw5L2/55So6ICF55qE5aCx5ZGK6ICM6KiA77yM6YCa55+l5LuW5YCR6IO96K6T5aCx5ZGK6aGv5b6X5pu05YWs5bmz77yM5L2G5piv6Kix5aSa5oOF5rOB5LiL77yI5aaC6ZW35pyf56C05aOe6ICF77yJ6YCa55+l5pu05Y+v6IO96YGp5b6X5YW25Y+N44CCJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhID0gd29ya19hcmVhLnJlbmRlcigpO1xuXHRcdFx0XHQkKCdpbnB1dDp0ZXh0W25hbWU9c29ja3B1cHBldF0nLCB3b3JrX2FyZWEpLmZpcnN0KCkudmFsKHJvb3RfLnVpZC52YWx1ZSk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRyb290Xy5zcGlub3RpY2VwcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KFxuXHRcdFx0XHRcdCQod29ya19hcmVhKS5maW5kKCcjdHdpbmtsZWFydi1zcGlub3RpY2Vib3gnKS5sYXN0KClbMF1cblx0XHRcdFx0KTtcblx0XHRcdFx0VHdpbmtsZS5hcnYuY2FsbGJhY2suc2V0X3NvY2ttYXN0ZXIocm9vdF8udWlkLnZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGNhc2UgJ2Fpdic6ICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oql5ZGK55So5oi356C05Z2PJywgJ+WgseWRiuS9v+eUqOiAheegtOWjnicpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmj5DmiqXlgoDlhKHlupTkvJjlhYjlj5HpgIHoh7PlgoDlhKHosIPmn6XvvIzpmaTpnZ7nm7jlhbPnmoTotKblj7fmnInpq5jpopHnjofjgIHmtonlj4rlpJrkuKrpobXpnaLnrYnntKfmgKXkuKXph43nmoTnoLTlnY/ooYzkuLrjgIInLFxuXHRcdFx0XHRcdFx0J+aPkOWgseWCgOWEoeaHieWEquWFiOeZvOmAgeiHs+WCgOWEoeiqv+afpe+8jOmZpOmdnuebuOmXnOeahOizrOiZn+aciemrmOmgu+eOh+OAgea2ieWPiuWkmuWAi+mggemdouetiee3iuaApeWatOmHjeeahOegtOWjnuihjOeCuuOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55u45YWz6aG16Z2i77yaJywgJ+ebuOmXnOmggemdou+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5aaC5LiN5biM5pyb6K6p5oql5ZGK6ZO+5o6l5Yiw6aG16Z2i77yM6K+355WZ56m6JywgJ+WmguS4jeW4jOacm+iuk+WgseWRiumAo+e1kOWIsOmggemdou+8jOiri+eVmeepuicpLFxuXHRcdFx0XHRcdHZhbHVlOiBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSB8fCAnJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB7dmFsdWV9ID0gZXZlbnQudGFyZ2V0O1xuXHRcdFx0XHRcdFx0Y29uc3Qgcm9vdCA9IGV2ZW50LnRhcmdldC5mb3JtO1xuXHRcdFx0XHRcdFx0aWYgKHZhbHVlID09PSAnJykge1xuXHRcdFx0XHRcdFx0XHRyb290LmJhZGlkLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0cm9vdC5nb29kaWQuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cm9vdC5iYWRpZC5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRyb290Lmdvb2RpZC5kaXNhYmxlZCA9IHJvb3QuYmFkaWQudmFsdWUgPT09ICcnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdiYWRpZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+X5Yiw56C05Z2P55qE5L+u6K6i54mI5pys77yaJywgJ+WPl+WIsOegtOWjnueahOS/ruiogueJiOacrO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn55WZ56m65Lul55Wl6L+H5beu5byCJywgJ+eVmeepuuS7peeVpemBjuW3rueVsCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGVyZXZpZCcpIHx8ICcnLFxuXHRcdFx0XHRcdGRpc2FibGVkOiAhbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qge3ZhbHVlfSA9IGV2ZW50LnRhcmdldDtcblx0XHRcdFx0XHRcdGNvbnN0IHJvb3QgPSBldmVudC50YXJnZXQuZm9ybTtcblx0XHRcdFx0XHRcdHJvb3QuZ29vZGlkLmRpc2FibGVkID0gdmFsdWUgPT09ICcnO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdnb29kaWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+egtOWdj+WJjeeahOS/ruiuoueJiOacrO+8micsICfnoLTlo57liY3nmoTkv67oqILniYjmnKzvvJonKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+eVmeepuuS7peeVpei/h+W3ruW8gueahOi+g+aXqeeJiOacrCcsICfnlZnnqbrku6XnlaXpgY7lt67nlbDnmoTovIPml6nniYjmnKwnKSxcblx0XHRcdFx0XHR2YWx1ZTogbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlZ29vZHJldmlkJykgfHwgJycsXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6ICFtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSB8fCBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGVyZXZpZCcpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ2dHlwZScsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflt7Llj5Hlh7rmnIDlkI7orablkYonLCAn5bey55m85Ye65pyA5b6M6K2m5ZGKJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnZmluYWwnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6L+H5pyf5ZCO6ZqP5Y2z56C05Z2PJywgJ+WwgemOlumBjuacn+W+jOmaqOWNs+egtOWjnicpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3Bvc3RibG9jaycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmL7ogIzmmJPop4HnmoTnuq/noLTlnY/nlKjmiLcnLCAn6aGv6ICM5piT6KaL55qE57SU56C05aOe5L2/55So6ICFJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAndmFuZGFsb25seScsXG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHJvb3RfLnVpZC52YWx1ZSksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmL7ogIzmmJPop4HnmoRzcGFtYm905oiW5aSx56qD6LSm5Y+3JywgJ+mhr+iAjOaYk+imi+eahHNwYW1ib3TmiJblpLHnq4ros6zomZ8nKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdzcGFtYm90Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heeUqOadpeaVo+WPkeW5v+WRiuWuo+S8oOeahOeUqOaItycsICflg4XnlKjkvobmlaPnmbzlu6PlkYrlrqPlgrPnmoTkvb/nlKjogIUnKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdwcm9tb29ubHknLFxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZDogbXcudXRpbC5pc0lQQWRkcmVzcyhyb290Xy51aWQudmFsdWUpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFtdy51dGlsLmlzSVBBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSkge1xuXHRcdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuWPiue8lui+keaRmOimgemakOiXj+eUqOaIt+WQjScsICflnKjpoIHpnaLkuIrlj4rnt6jovK/mkZjopoHpmrHol4/kvb/nlKjogIXlkI3nqLEnKSxcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Iul55So5oi35ZCN5LiN5b2T6K+35Yu+6YCJ5q2k6aG577yM5rOo5oSP77ya6K+36ICD6JmR56eB5LiL6IGU57O7566h55CG5ZGY5aSE55CG44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6Xkvb/nlKjogIXlkI3nqLHkuI3nlbboq4vli77pgbjmraTpoIXvvIzms6jmhI/vvJroq4vogIPmha7np4HkuIvoga/ntaHnrqHnkIblk6HomZXnkIbjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnaGlkZW5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnaGlkZW5hbWUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivhOiuuu+8micsICfoqZXoq5bvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiAnYXJ2cHJldmlldycsXG5cdFx0XHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGVhcnYtcHJldmlld2JveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyb290Xy5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KCQod29ya19hcmVhKS5maW5kKCcjdHdpbmtsZWFydi1wcmV2aWV3Ym94JykubGFzdCgpWzBdKTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2sucHJldmlldyA9IChmb3JtKSA9PiB7XG5cdFx0Y29uc3QgcmVhc29uID0gVHdpbmtsZS5hcnYuY2FsbGJhY2suZ2V0UmVwb3J0V2lraXRleHQoZm9ybSk7XG5cdFx0aWYgKHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRsZXQgdGl0bGU7XG5cdFx0c3dpdGNoIChpbnB1dC5jYXRlZ29yeSkge1xuXHRcdFx0Y2FzZSAndmlwJzpcblx0XHRcdFx0dGl0bGUgPSAnUWl1d2VuX3RhbGs65oql5ZGK5b2T5YmN56C05Z2PJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdld2lwJzpcblx0XHRcdFx0dGl0bGUgPSAnUWl1d2VuX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd1c2VybmFtZSc6XG5cdFx0XHRcdHRpdGxlID0gJ1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3BpJzpcblx0XHRcdFx0dGl0bGUgPSAnUWl1d2VuX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aXRsZSA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGZvcm0ucHJldmlld2VyLmJlZ2luUmVuZGVyKGBfX05PVE9DX18ke3JlYXNvblswXX1gLCB0aXRsZSk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0ID0gKGZvcm0pID0+IHtcblx0XHRjb25zdCBpbnB1dCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0bGV0IHJlYXNvbiA9ICcnO1xuXHRcdGxldCBjb21tZW50ID0gJyc7XG5cdFx0Y29uc3Qge3VpZH0gPSBpbnB1dDtcblx0XHRjb25zdCBjaGVja1RpdGxlID0gKHRpdGxlLCByZXZpZCkgPT4ge1xuXHRcdFx0aWYgKC9odHRwcz86XFwvXFwvLy50ZXN0KHRpdGxlKSkge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+mhtemdouWQjeensOS4jeiDveS9v+eUqOe9keWdgOOAgicsICfpoIHpnaLlkI3nqLHkuI3og73kvb/nlKjntrLlnYDjgIInKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGxldCBwYWdlXztcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHBhZ2VfID0gbmV3IG13LlRpdGxlKHRpdGxlKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShcblx0XHRcdFx0XHRgJHtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCcJywgJ+OAjCcpICtcblx0XHRcdFx0XHRcdHRpdGxlICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+KAneS4jeaYr+S4gOS4quacieaViOeahOmhtemdouWQjeensO+8jOWmguimgeS9v+eUqOW3ruW8gumTvuaOpeivt+aUvuWcqOKAnOivhOiuuuKAnScsXG5cdFx0XHRcdFx0XHRcdCfjgI3kuI3mmK/kuIDlgIvmnInmlYjnmoTpoIHpnaLlkI3nqLHvvIzlpoLopoHkvb/nlKjlt67nlbDpgKPntZDoq4vmlL7lnKjjgIzoqZXoq5bjgI0nXG5cdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdChyZXZpZCA/IHdpbmRvdy53Z1VMUygn77yM5oiW5q2j56Gu6L6T5YWl4oCc5L+u6K6i54mI5pys4oCdJywgJ++8jOaIluato+eiuui8uOWFpeOAjOS/ruiogueJiOacrOOAjScpIDogJycpXG5cdFx0XHRcdFx0feOAgmAsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFnZV8ubmFtZXNwYWNlID09PSAtMSkge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShcblx0XHRcdFx0XHRgJHtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCcJywgJ+OAjCcpICtcblx0XHRcdFx0XHRcdHRpdGxlICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+KAneWxnuS6jueJueauiumhtemdou+8jOWmguimgeS9v+eUqOW3ruW8gumTvuaOpeivt+aUvuWcqOKAnOivhOiuuuKAnScsXG5cdFx0XHRcdFx0XHRcdCfjgI3lsazmlrznibnmrorpoIHpnaLvvIzlpoLopoHkvb/nlKjlt67nlbDpgKPntZDoq4vmlL7lnKjjgIzoqZXoq5bjgI0nXG5cdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdChyZXZpZCA/IHdpbmRvdy53Z1VMUygn77yM5oiW5q2j56Gu6L6T5YWl4oCc5L+u6K6i54mI5pys4oCdJywgJ++8jOaIluato+eiuui8uOWFpeOAjOS/ruiogueJiOacrOOAjScpIDogJycpXG5cdFx0XHRcdFx0feOAgmAsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcGFnZV87XG5cdFx0fTtcblx0XHRsZXQgcGFnZTtcblx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHQvLyBSZXBvcnQgM1JSXG5cdFx0XHRjYXNlICdld2lwJzoge1xuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uID09PSAnJykge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5oKo5b+F6aG75oyH5a6a55CG55SxJywgJ+aCqOW/hemgiOaMh+WumueQhueUsScpLCB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVhc29uICs9IGA9PSDnvJbovpHmiJjkuL7miqXvvIgke3VpZH3vvIkgPT1cXG5gO1xuXHRcdFx0XHRyZWFzb24gKz0gYCogJycne3t2YW5kYWx8JHsvWz1dLy50ZXN0KHVpZCkgPyAnMT0nIDogJyd9JHt1aWR9fX0nJydcXG5gO1xuXHRcdFx0XHRjb25zdCBwYWdlcyA9ICQoJ2lucHV0OnRleHRbbmFtZT1wYWdlXScsIGZvcm0pLm1hcCgobywgZSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAkKGUpLnZhbCgpIHx8IG51bGw7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHBhZ2VfIG9mIHBhZ2VzKSB7XG5cdFx0XHRcdFx0cGFnZSA9IGNoZWNrVGl0bGUocGFnZV8sIGZhbHNlKTtcblx0XHRcdFx0XHRpZiAoIXBhZ2UpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29tbWVudCArPSBgKiB7e3BhZ2VsaW5rc3wke1xuXHRcdFx0XHRcdFx0cGFnZS5nZXRQcmVmaXhlZFRleHQoKS5pbmNsdWRlcygnPScpID8gJzE9JyA6ICcnXG5cdFx0XHRcdFx0fSR7cGFnZS5nZXRQcmVmaXhlZFRleHQoKX19fVxcbmA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5wdXQucmVhc29uID0gaW5wdXQucmVhc29uLnJlcGxhY2UoL1xcblxcbisvZywgJ1xcbicpO1xuXHRcdFx0XHRpbnB1dC5yZWFzb24gPSBpbnB1dC5yZWFzb24ucmVwbGFjZSgvXFxyP1xcbi9nLCAnXFxuKjonKTsgLy8gaW5kZW50IG5ld2xpbmVzXG5cdFx0XHRcdGNvbW1lbnQgKz0gYCogJHtpbnB1dC5yZWFzb259XFxuYDtcblx0XHRcdFx0Y29tbWVudCA9IGNvbW1lbnQudHJpbSgpO1xuXHRcdFx0XHRjb21tZW50ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGNvbW1lbnQpO1xuXHRcdFx0XHRyZWFzb24gKz0gYCR7Y29tbWVudH1cXG4qIOaPkOaKpeS6uu+8mn5+YC5jb25jYXQoJ35+XFxuKiDlpITnkIbvvJonKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBSZXBvcnQgaW5hcHByb3ByaWF0ZSB1c2VybmFtZVxuXHRcdFx0Y2FzZSAndXNlcm5hbWUnOiB7XG5cdFx0XHRcdGxldCB0eXBlcyA9IGlucHV0LmFydnR5cGUubWFwKE1vcmViaXRzLnN0cmluZy50b0xvd2VyQ2FzZUZpcnN0Q2hhcik7XG5cdFx0XHRcdGNvbnN0IGhhc1NoYXJlZCA9IHR5cGVzLmluY2x1ZGVzKCdzaGFyZWQnKTtcblx0XHRcdFx0aWYgKGhhc1NoYXJlZCkge1xuXHRcdFx0XHRcdHR5cGVzLnNwbGljZSh0eXBlcy5pbmRleE9mKCdzaGFyZWQnKSwgMSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHR5cGVzLmluY2x1ZGVzKCfkvq7ovrHmgKcnKSAmJlxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Lil6YeN55qE5L6u6L6x5oCn55So5oi35ZCN5ZKM6ZKI5a+554m55a6a5Liq5Lq655qE5L6u6L6x5oCn55So5oi35ZCN5LiN5bqU5Zyo5YWs5byA6aG16Z2i5oql5ZGK77yM6ICM5piv5bqU5b2T56eB5LiL6IGU57O755uR552j5ZGY5aSE55CG44CC5piv5ZCm57un57ut77yfJyxcblx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWatOmHjeeahOS+rui+seaAp+S9v+eUqOiAheWQjeeoseWSjOmHneWwjeeJueWumuWAi+S6uueahOS+rui+seaAp+S9v+eUqOiAheWQjeeoseS4jeaHieWcqOWFrOmWi+mggemdouWgseWRiu+8jOiAjOaYr+aHieeVtuengeS4i+iBr+e1oeebo+edo+WToeiZleeQhuOAguaYr+WQpue5vOe6jO+8nydcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZXMubGVuZ3RoIDw9IDIpIHtcblx0XHRcdFx0XHR0eXBlcyA9IHR5cGVzLmpvaW4oJ+WSjCcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHR5cGVzID0gW3R5cGVzLnNsaWNlKDAsIC0xKS5qb2luKCfjgIEnKSwgdHlwZXMuc2xpY2UoLTEpXS5qb2luKCflkownKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ICs9IGAqe3t1c2VyLXVhYXwxPSR7dWlkfWA7XG5cdFx0XHRcdGlmIChpbnB1dC5oaWRlbmFtZSkge1xuXHRcdFx0XHRcdGNvbW1lbnQgKz0gJ3xoaWRlbmFtZT0xJztcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ICs9ICd9fSAmbmRhc2g7ICc7XG5cdFx0XHRcdGlmICh0eXBlcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9IHR5cGVzICsgd2luZG93LndnVUxTKCfnlKjmiLflkI0nLCAn5L2/55So6ICF5ZCN56ixJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVzLmxlbmd0aCAmJiBoYXNTaGFyZWQpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9ICfvvIwnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChoYXNTaGFyZWQpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9IHdpbmRvdy53Z1VMUygn5pqX56S66K+l6LSm5Y+35bm26Z2e55Sx5LiA5Lq65oul5pyJJywgJ+aal+ekuuipsuizrOiZn+S4pumdnueUseS4gOS6uuaTgeaciScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlcy5sZW5ndGggfHwgaGFzU2hhcmVkKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSAn44CCJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSBNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIoaW5wdXQucmVhc29uKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGNvbW1lbnQpO1xuXHRcdFx0XHRjb21tZW50ICs9ICctLX5+Jy5jb25jYXQoJ35+Jyk7XG5cdFx0XHRcdGNvbW1lbnQgPSBjb21tZW50LnJlcGxhY2UoL1xccj9cXG4vZywgJ1xcbio6Jyk7IC8vIGluZGVudCBuZXdsaW5lc1xuXHRcdFx0XHRyZWFzb24gPSBgPT0g5LiN5b2T55So5oi35ZCN5oql5ZGK77yIJHtcblx0XHRcdFx0XHRpbnB1dC5oaWRlbmFtZSA/IHdpbmRvdy53Z1VMUygn5bey6ZqQ6JeP55So5oi35ZCNJywgJ+W3sumaseiXj+S9v+eUqOiAheWQjeeosScpIDogdWlkXG5cdFx0XHRcdH3vvIkgPT1cXG5gO1xuXHRcdFx0XHRyZWFzb24gKz0gY29tbWVudDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBRVzpTUElcblx0XHRcdGNhc2UgJ3NwaSc6IHtcblx0XHRcdFx0aWYgKCFpbnB1dC5yZWFzb24pIHtcblx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+i+k+WFpeivgeaNruOAgicsICfoq4vovLjlhaXorYnmk5rjgIInKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHNvY2twdXBwZXRzID0gTW9yZWJpdHMuYXJyYXkudW5pcShcblx0XHRcdFx0XHRbLi4uJCgnaW5wdXQ6dGV4dFtuYW1lPXNvY2twdXBwZXRdJywgZm9ybSldLm1hcCgobykgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuICQobykudmFsKCkudHJpbSgpIHx8IG51bGw7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKCFzb2NrcHVwcGV0c1swXSkge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5oKo5rKh5pyJ5oyH5a6a5Lu75L2V5YKA5YSh44CCJywgJ+aCqOaykuacieaMh+WumuS7u+S9leWCgOWEoeOAgicpLCB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCArPSAne3snLmNvbmNhdCgnc3Vic3Q6JywgJ1NQSSByZXBvcnR8Jyk7XG5cdFx0XHRcdGlmICghc29ja3B1cHBldHMuaW5jbHVkZXMoaW5wdXQuc29ja21hc3RlcikpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9ICcxPXt7Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdCcjaWZleGlzdDp7eycsXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGBGVUxMUEFHRU5BTUV9fXx8JHtpbnB1dC5zb2NrbWFzdGVyfX19fGBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbW1lbnQgKz0gYCR7c29ja3B1cHBldHNcblx0XHRcdFx0XHQubWFwKChzb2NrLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGAke2luZGV4ICsgMn09JHtzb2NrfWA7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuam9pbignfCcpfVxcbnxldmlkZW5jZT0ke01vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihpbnB1dC5yZWFzb24pfVxcbmA7XG5cdFx0XHRcdGlmIChpbnB1dC5jaGVja3VzZXIpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9ICd8Y2hlY2t1c2VyPXllcyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCArPSAnfX0nO1xuXHRcdFx0XHRyZWFzb24gPSBjb21tZW50O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVwb3J0IHVzZXIgZm9yIHZhbmRhbGlzbVxuXHRcdFx0LyogY2FzZSAnYWl2JzogKi9cblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0aWYgKCFpbnB1dC5hcnZ0eXBlLmxlbmd0aCAmJiBpbnB1dC5yZWFzb24gPT09ICcnKSB7XG5cdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfmgqjlv4XpobvmjIflrprnkIbnlLEnLCAn5oKo5b+F6aCI5oyH5a6a55CG55SxJyksIHtcblx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVhcnYnLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZWFzb24gKz0gYD09ICR7aW5wdXQuaGlkZW5hbWUgPyB3aW5kb3cud2dVTFMoJ+W3sumakOiXj+eUqOaIt+WQjScsICflt7LpmrHol4/kvb/nlKjogIXlkI3nqLEnKSA6IHVpZH0gPT1cXG5gO1xuXHRcdFx0XHRyZWFzb24gKz0gYCogJycne3t2YW5kYWx8JHsvWz1dLy50ZXN0KHVpZCkgPyAnMT0nIDogJyd9JHt1aWR9YDtcblx0XHRcdFx0aWYgKGlucHV0LmhpZGVuYW1lKSB7XG5cdFx0XHRcdFx0cmVhc29uICs9ICd8aGlkZW5hbWU9MSc7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVhc29uICs9IFwifX0nJydcXG5cIjtcblx0XHRcdFx0Y29uc3QgdHlwZXMgPSBpbnB1dC5hcnZ0eXBlXG5cdFx0XHRcdFx0Lm1hcCgodikgPT4ge1xuXHRcdFx0XHRcdFx0c3dpdGNoICh2KSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2ZpbmFsJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+W3suWPkeWHuuacgOWQjuitpuWRiic7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3Bvc3RibG9jayc6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICflsIHnpoHov4fmnJ/lkI7pmo/ljbPnoLTlnY8nO1xuXHRcdFx0XHRcdFx0XHRjYXNlICdzcGFtYm90Jzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+aYvuiAjOaYk+ingeeahHNwYW1ib3TmiJblpLHnqoPotKblj7cnO1xuXHRcdFx0XHRcdFx0XHRjYXNlICd2YW5kYWxvbmx5Jzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+aYvuiAjOaYk+ingeeahOe6r+egtOWdj+eUqOaItyc7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3Byb21vb25seSc6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICfku4XnlKjmnaXmlaPlj5Hlub/lkYrlrqPkvKDnmoTnlKjmiLcnO1xuXHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAn5pyq55+l55CG55SxJztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5qb2luKCfvvIwnKTtcblx0XHRcdFx0aWYgKGlucHV0LnBhZ2UgIT09ICcnKSB7XG5cdFx0XHRcdFx0cGFnZSA9IGNoZWNrVGl0bGUoaW5wdXQucGFnZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0aWYgKCFwYWdlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbW1lbnQgKz0gYCoge3twYWdlbGlua3N8JHtcblx0XHRcdFx0XHRcdHBhZ2UuZ2V0UHJlZml4ZWRUZXh0KCkuaW5jbHVkZXMoJz0nKSA/ICcxPScgOiAnJ1xuXHRcdFx0XHRcdH0ke3BhZ2UuZ2V0UHJlZml4ZWRUZXh0KCl9fX1gO1xuXHRcdFx0XHRcdGlmIChpbnB1dC5iYWRpZCkge1xuXHRcdFx0XHRcdFx0Y29tbWVudCArPSBg77yIe3tkaWZmfCR7cGFnZS5nZXRQcmVmaXhlZFRleHQoKX18JHtpbnB1dC5iYWRpZH18JHtpbnB1dC5nb29kaWQgPz8gJyd9fGRpZmZ9fe+8iWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbW1lbnQgKz0gJ1xcbic7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVzKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSBgKiAke3R5cGVzfWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGlucHV0LnJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRpbnB1dC5yZWFzb24gPSBpbnB1dC5yZWFzb24ucmVwbGFjZSgvXFxuXFxuKy9nLCAnXFxuJyk7XG5cdFx0XHRcdFx0aW5wdXQucmVhc29uID0gaW5wdXQucmVhc29uLnJlcGxhY2UoL1xccj9cXG4vZywgJ1xcbio6Jyk7IC8vIGluZGVudCBuZXdsaW5lc1xuXHRcdFx0XHRcdGNvbW1lbnQgKz0gKHR5cGVzID8gJ+OAgicgOiAnKiAnKSArIGlucHV0LnJlYXNvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ID0gY29tbWVudC50cmltKCk7XG5cdFx0XHRcdGNvbW1lbnQgPSBNb3JlYml0cy5zdHJpbmcuYXBwZW5kUHVuY3R1YXRpb24oY29tbWVudCk7XG5cdFx0XHRcdHJlYXNvbiArPSBgJHtjb21tZW50fVxcbiog5Y+R546w5Lq677yafn5gLmNvbmNhdCgnfn5cXG4qIOWkhOeQhu+8micpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFtyZWFzb24sIGNvbW1lbnRdO1xuXHR9O1xuXHRUd2lua2xlLmFydi5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRjb25zdCB7dWlkfSA9IGlucHV0O1xuXHRcdGxldCByZWFzb247XG5cdFx0bGV0IHN1bW1hcnk7XG5cdFx0c3dpdGNoIChpbnB1dC5jYXRlZ29yeSkge1xuXHRcdFx0Ly8gUmVwb3J0IDNSUlxuXHRcdFx0Y2FzZSAnZXdpcCc6IHtcblx0XHRcdFx0cmVhc29uID0gVHdpbmtsZS5hcnYuY2FsbGJhY2suZ2V0UmVwb3J0V2lraXRleHQoZm9ybSk7XG5cdFx0XHRcdGlmIChyZWFzb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdW1tYXJ5ID0gYCR7d2luZG93LndnVUxTKCfmiqXlkYonLCAn5aCx5ZGKJyl9W1tTcGVjaWFsOkNvbnRyaWJzLyR7dWlkfXwke3VpZH1dXWA7XG5cdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9ICdRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb8nO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+aKpeWRiuWujOaIkCcsICfloLHlkYrlrozmiJAnKTtcblx0XHRcdFx0Y29uc3QgZXdpcFBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdCdRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb8nLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5aSE55CGRVdJUOivt+axgicsICfomZXnkIZFV0lQ6KuL5rGCJylcblx0XHRcdFx0KTtcblx0XHRcdFx0ZXdpcFBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdGV3aXBQYWdlLmxvYWQoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRleHQgPSBld2lwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRcdGNvbnN0ICRld2lwTGluayA9ICc8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpFV0lQXCI+UVc6RVdJUDwvYT4nO1xuXHRcdFx0XHRcdC8vIGNoZWNrIGlmIHVzZXIgaGFzIGFscmVhZHkgYmVlbiByZXBvcnRlZFxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdG5ldyBSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdGA9PT1cXFxccypcXFxce1xcXFx7XFxcXHMqKD86W1Z2XWFuZGFsKVxcXFxzKlxcXFx8XFxcXHMqKD86MT0pP1xcXFxzKiR7TW9yZWJpdHMuc3RyaW5nLmVzY2FwZVJlZ0V4cChcblx0XHRcdFx0XHRcdFx0XHR1aWRcblx0XHRcdFx0XHRcdFx0KX1cXFxccypcXFxcfVxcXFx9XFxcXHMqPT09YFxuXHRcdFx0XHRcdFx0KS50ZXN0KHRleHQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRld2lwUGFnZVxuXHRcdFx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0XHRcdC5lcnJvcih3aW5kb3cud2dVTFMoJ+aKpeWRiuW3suWtmOWcqO+8jOWwhuS4jeS8muWKoOWFpeaWsOeahCcsICfloLHlkYrlt7LlrZjlnKjvvIzlsIfkuI3mnIPliqDlhaXmlrDnmoQnKSk7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMucHJpbnRVc2VyVGV4dChcblx0XHRcdFx0XHRcdFx0cmVhc29uWzFdLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aCqOi+k+WFpeeahOivhOiuuuW3suWcqOS4i+aWueaPkOS+m++8jOaCqOWPr+S7peWwhuWFtuWKoOWFpeWIsCcsXG5cdFx0XHRcdFx0XHRcdFx0J+aCqOi8uOWFpeeahOipleirluW3suWcqOS4i+aWueaPkOS+m++8jOaCqOWPr+S7peWwh+WFtuWKoOWFpeWIsCdcblx0XHRcdFx0XHRcdFx0KSArXG5cdFx0XHRcdFx0XHRcdFx0JGV3aXBMaW5rICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suWtmOWcqOeahOWwj+iKguS4re+8micsICflt7LlrZjlnKjnmoTlsI/nr4DkuK3vvJonKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZXdpcFBhZ2Uuc2V0UGFnZVNlY3Rpb24oMCk7XG5cdFx0XHRcdFx0ZXdpcFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+WKoOWFpeaWsOaKpeWRiuKApicsICfliqDlhaXmlrDloLHlkYrigKYnKSk7XG5cdFx0XHRcdFx0ZXdpcFBhZ2Uuc2V0RWRpdFN1bW1hcnkoc3VtbWFyeSk7XG5cdFx0XHRcdFx0ZXdpcFBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdGV3aXBQYWdlLnNldEFwcGVuZFRleHQoYFxcbiR7cmVhc29uWzBdfWApO1xuXHRcdFx0XHRcdGV3aXBQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBSZXBvcnQgaW5hcHByb3ByaWF0ZSB1c2VybmFtZVxuXHRcdFx0Y2FzZSAndXNlcm5hbWUnOiB7XG5cdFx0XHRcdHJlYXNvbiA9IFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0KGZvcm0pO1xuXHRcdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSAnUWl1d2VuX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKCfmiqXlkYrlrozmiJAnLCAn5aCx5ZGK5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHVhYVBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdCdRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb8nLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5aSE55CGVUFB6K+35rGCJywgJ+iZleeQhlVBQeiri+axgicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHVhYVBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHVhYVBhZ2UubG9hZCgoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdGV4dCA9IHVhYVBhZ2UuZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0XHQvLyBjaGVjayBpZiB1c2VyIGhhcyBhbHJlYWR5IGJlZW4gcmVwb3J0ZWRcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRgXFxcXHtcXFxce1xcXFxzKnVzZXItdWFhXFxcXHMqXFxcXHxcXFxccyooMVxcXFxzKj1cXFxccyopPyR7TW9yZWJpdHMuc3RyaW5nLmVzY2FwZVJlZ0V4cChcblx0XHRcdFx0XHRcdFx0XHR1aWRcblx0XHRcdFx0XHRcdFx0KX1cXFxccyooXFxcXHx8XFxcXH0pYFxuXHRcdFx0XHRcdFx0KS50ZXN0KHRleHQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR1YWFQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+W3suiiq+WIl+WFpeOAgicsICfkvb/nlKjogIXlt7LooqvliJflhaXjgIInKSk7XG5cdFx0XHRcdFx0XHRjb25zdCAkdWFhTGluayA9ICc8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpVQUFcIj5RVzpVQUE8L2E+Jztcblx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5wcmludFVzZXJUZXh0KFxuXHRcdFx0XHRcdFx0XHRyZWFzb25bMV0sXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oKo6L6T5YWl55qE6K+E6K665bey5Zyo5LiL5pa55o+Q5L6b77yM5oKo5Y+v5Lul5bCG5YW25omL5bel5Yqg5YWlJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo6Ly45YWl55qE6KmV6KuW5bey5Zyo5LiL5pa55o+Q5L6b77yM5oKo5Y+v5Lul5bCH5YW25omL5bel5Yqg5YWlJ1xuXHRcdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdFx0XHQkdWFhTGluayArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuIror6XnlKjmiLfnmoTmiqXlkYrkuK3vvJonLCAn5LiK6Kmy5L2/55So6ICF55qE5aCx5ZGK5Lit77yaJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHVhYVBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+WKoOWFpeaWsOaKpeWRiuKApicsICfliqDlhaXmlrDloLHlkYrigKYnKSk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+aWsOaPkOaKpScsICfmlrDmj5DloLEnKSk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRBcHBlbmRUZXh0KGBcXG5cXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHR1YWFQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBRVzpTUElcblx0XHRcdGNhc2UgJ3NwaSc6IHtcblx0XHRcdFx0cmVhc29uID0gVHdpbmtsZS5hcnYuY2FsbGJhY2suZ2V0UmVwb3J0V2lraXRleHQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFx0XHRjb25zdCByZXBvcnRwYWdlID0gJ1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gcmVwb3J0cGFnZTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKCfmiqXlkYrlrozmiJAnLCAn5aCx5ZGK5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHNwaVBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHJlcG9ydHBhZ2UsIHdpbmRvdy53Z1VMUygn5oqT5Y+W6K6o6K666aG16Z2iJywgJ+aKk+WPluiojuirlumggemdoicpKTtcblx0XHRcdFx0c3BpUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0c3BpUGFnZS5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+WKoOWFpeaWsOaPkOaKpScsICfliqDlhaXmlrDmj5DloLEnKSk7XG5cdFx0XHRcdHNwaVBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRzcGlQYWdlLnNldEFwcGVuZFRleHQocmVhc29uWzBdKTtcblx0XHRcdFx0c3BpUGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdzcGlXYXRjaFJlcG9ydCcpKTtcblx0XHRcdFx0c3BpUGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlcG9ydCB1c2VyIGZvciB2YW5kYWxpc21cblx0XHRcdC8qIGNhc2UgJ2Fpdic6ICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdHJlYXNvbiA9IFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0KGZvcm0pO1xuXHRcdFx0XHRpZiAocmVhc29uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0c3VtbWFyeSA9IGAke3dpbmRvdy53Z1VMUygn5oql5ZGKJywgJ+WgseWRiicpfVtbU3BlY2lhbDpDb250cmlicy8ke3VpZH18JHt1aWR9XV1gO1xuXHRcdFx0XHRpZiAoaW5wdXQuaGlkZW5hbWUpIHtcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfmiqXlkYrkuIDlkI3nlKjmiLcnLCAn5aCx5ZGK5LiA5ZCN5L2/55So6ICFJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gJ1FpdXdlbl90YWxrOuaKpeWRiuW9k+WJjeegtOWdjyc7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5a6M5oiQJywgJ+WgseWRiuWujOaIkCcpO1xuXHRcdFx0XHRjb25zdCBhaXZQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHQnUWl1d2VuX3RhbGs65oql5ZGK5b2T5YmN56C05Z2PJyxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WkhOeQhlZJUOivt+axgicsICfomZXnkIZWSVDoq4vmsYInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhaXZQYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHRhaXZQYWdlLmxvYWQoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRleHQgPSBhaXZQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Y29uc3QgJGFpdkxpbmsgPSAnPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6VklQXCI+UVc6VklQPC9hPic7XG5cdFx0XHRcdFx0Ly8gY2hlY2sgaWYgdXNlciBoYXMgYWxyZWFkeSBiZWVuIHJlcG9ydGVkXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChcblx0XHRcdFx0XHRcdFx0YD09PVxcXFxzKlxcXFx7XFxcXHtcXFxccyooPzpbVnZdYW5kYWwpXFxcXHMqXFxcXHxcXFxccyooPzoxPSk/XFxcXHMqJHtNb3JlYml0cy5zdHJpbmcuZXNjYXBlUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRcdHVpZFxuXHRcdFx0XHRcdFx0XHQpfVxcXFxzKlxcXFx9XFxcXH1cXFxccyo9PT1gXG5cdFx0XHRcdFx0XHQpLnRlc3QodGV4dClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGFpdlBhZ2Vcblx0XHRcdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdFx0XHQuZXJyb3Iod2luZG93LndnVUxTKCfmiqXlkYrlt7LlrZjlnKjvvIzlsIbkuI3kvJrliqDlhaXmlrDnmoQnLCAn5aCx5ZGK5bey5a2Y5Zyo77yM5bCH5LiN5pyD5Yqg5YWl5paw55qEJykpO1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLnByaW50VXNlclRleHQoXG5cdFx0XHRcdFx0XHRcdHJlYXNvblsxXSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovpPlhaXnmoTor4Torrrlt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIblhbbliqDlhaXliLAnLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovLjlhaXnmoToqZXoq5blt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIflhbbliqDlhaXliLAnXG5cdFx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0XHRcdCRhaXZMaW5rICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suWtmOWcqOeahOWwj+iKguS4re+8micsICflt7LlrZjlnKjnmoTlsI/nr4DkuK3vvJonKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRQYWdlU2VjdGlvbigwKTtcblx0XHRcdFx0XHRhaXZQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5zdGF0dXMod2luZG93LndnVUxTKCfliqDlhaXmlrDmiqXlkYrigKYnLCAn5Yqg5YWl5paw5aCx5ZGK4oCmJykpO1xuXHRcdFx0XHRcdGFpdlBhZ2Uuc2V0RWRpdFN1bW1hcnkoc3VtbWFyeSk7XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRBcHBlbmRUZXh0KGBcXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHRhaXZQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmFydiwgJ2FydicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXdhcm4uanMgKi9cbihmdW5jdGlvbiB0d2lua2xld2FybigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZXdhcm4uanM6IFdhcm4gbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIldhcm5cIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicyxcblx0ICogZXRjLiksIGFzIHdlbGwgYXMgdGhlIHJvbGxiYWNrIHN1Y2Nlc3MgcGFnZVxuXHQgKi9cblx0Y29uc3QgcmVsZXZhbnRVc2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRUd2lua2xlLndhcm4gPSAoKSA9PiB7XG5cdFx0aWYgKHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFjayxcblx0XHRcdFx0J+itpuWRiicsXG5cdFx0XHRcdCd0dy13YXJuJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCforablkYrmiJbmj5DphpLnlKjmiLcnLCAn6K2m5ZGK5oiW5o+Q6YaS5L2/55So6ICFJylcblx0XHRcdCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignYXV0b01lbnVBZnRlclJvbGxiYWNrJykgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMyAmJlxuXHRcdFx0XHRtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSAmJlxuXHRcdFx0XHQhbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdub2F1dG93YXJuJylcblx0XHRcdCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2soKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gTW9kaWZ5IFVSTCBvZiB0YWxrIHBhZ2Ugb24gcm9sbGJhY2sgc3VjY2VzcyBwYWdlcywgbWFrZXMgdXNlIG9mIGFcblx0XHQvLyBjdXN0b20gbWVzc2FnZSBib3ggaW4gW1tNZWRpYVdpa2k6Um9sbGJhY2stc3VjY2Vzc11dXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICdyb2xsYmFjaycpIHtcblx0XHRcdGNvbnN0ICR2YW5kYWxUYWxrTGluayA9ICRib2R5LmZpbmQoJyNtdy1yb2xsYmFjay1zdWNjZXNzJykuZmluZCgnLm13LXVzZXJ0b29sbGlua3MgYScpLmZpcnN0KCk7XG5cdFx0XHRpZiAoJHZhbmRhbFRhbGtMaW5rLmxlbmd0aCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4ubWFrZVZhbmRhbFRhbGtMaW5rKCR2YW5kYWxUYWxrTGluaywgTW9yZWJpdHMucGFnZU5hbWVOb3JtKTtcblx0XHRcdFx0JHZhbmRhbFRhbGtMaW5rLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQWJ1c2VMb2cnICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0FidXNlRmlsdGVyVmFyaWFibGVzJykgIT09IG51bGxcblx0XHQpIHtcblx0XHRcdGNvbnN0IGFmVGFsa0xpbmsgPSAkYm9keS5maW5kKCcubXctdXNlcnRvb2xsaW5rcy10YWxrJykuZmlyc3QoKTtcblx0XHRcdGlmIChhZlRhbGtMaW5rLmxlbmd0aCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4ubWFrZVZhbmRhbFRhbGtMaW5rKGFmVGFsa0xpbmssIG13LmNvbmZpZy5nZXQoJ3dnQWJ1c2VGaWx0ZXJWYXJpYWJsZXMnKS5wYWdlX3ByZWZpeGVkdGl0bGUpO1xuXHRcdFx0XHRhZlRhbGtMaW5rLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0VHdpbmtsZS53YXJuLm1ha2VWYW5kYWxUYWxrTGluayA9ICgkdmFuZGFsVGFsa0xpbmssIHBhZ2VuYW1lKSA9PiB7XG5cdFx0JHZhbmRhbFRhbGtMaW5rLndyYXBJbm5lcihcblx0XHRcdCQoJzxzcGFuPicpLmF0dHIoXG5cdFx0XHRcdCd0aXRsZScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5aaC5p6c5ZCI6YCC77yM5oKo5Y+v5Lul55SoVHdpbmtsZeWcqOivpeeUqOaIt+iuqOiuuumhteS4iuWBmuWHuuitpuWRiuOAgicsXG5cdFx0XHRcdFx0J+WmguaenOWQiOmBqe+8jOaCqOWPr+S7peeUqFR3aW5rbGXlnKjoqbLkvb/nlKjogIXoqI7oq5bpoIHkuIrlgZrlh7rorablkYrjgIInXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHRcdGNvbnN0IGV4dHJhUGFyYW0gPSBgdmFuYXJ0aWNsZT0ke213LnV0aWwucmF3dXJsZW5jb2RlKHBhZ2VuYW1lKX1gO1xuXHRcdGNvbnN0IGhyZWYgPSAkdmFuZGFsVGFsa0xpbmsuYXR0cignaHJlZicpO1xuXHRcdGlmIChocmVmLmluY2x1ZGVzKCc/JykpIHtcblx0XHRcdCR2YW5kYWxUYWxrTGluay5hdHRyKCdocmVmJywgYCR7aHJlZn0mJHtleHRyYVBhcmFtfWApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkdmFuZGFsVGFsa0xpbmsuYXR0cignaHJlZicsIGAke2hyZWZ9PyR7ZXh0cmFQYXJhbX1gKTtcblx0XHR9XG5cdH07XG5cdC8vIFVzZWQgdG8gY2xvc2Ugd2luZG93IHdoZW4gc3dpdGNoaW5nIHRvIEFSViBpbiBhdXRvbGV2ZWxcblx0VHdpbmtsZS53YXJuLmRpYWxvZyA9IG51bGw7XG5cdFR3aW5rbGUud2Fybi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRyZWxldmFudFVzZXJOYW1lID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgJiZcblx0XHRcdCFjb25maXJtKHdpbmRvdy53Z1VMUygn5oKo5bCG6KaB6K2m5ZGK6Ieq5bex77yB5oKo56Gu5a6a6KaB57un57ut5ZCX77yfJywgJ+aCqOWwh+imgeitpuWRiuiHquW3se+8geaCqOeiuuWumuimgee5vOe6jOWXju+8nycpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLndhcm4uZGlhbG9nID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDQ0MCk7XG5cdFx0Y29uc3Qge2RpYWxvZ30gPSBUd2lua2xlLndhcm47XG5cdFx0ZGlhbG9nLnNldFRpdGxlKHdpbmRvdy53Z1VMUygn6K2m5ZGK44CB5o+Q6YaS55So5oi3JywgJ+itpuWRiuOAgeaPkOmGkuS9v+eUqOiAhScpKTtcblx0XHRkaWFsb2cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdGRpYWxvZy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6K2m5ZGK6K6+572uJywgJ+itpuWRiuioreWumicpLCAnSDpUVy9QUkVGI3dhcm4nKTtcblx0XHRkaWFsb2cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjd2FybicpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUud2Fybi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgbWFpbl9zZWxlY3QgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup6KaB5Y+R6YCB55qE6K2m5ZGK5oiW5o+Q6YaS57G75Z6LJywgJ+mBuOaTh+imgeWCs+mAgeeahOitpuWRiuaIluaPkOmGkumhnuWIpScpLFxuXHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfpppblhYjpgInmi6nkuIDnu4TvvIzlho3pgInmi6nlhbfkvZPnmoTorablkYrmqKHmnb/jgIInLCAn6aaW5YWI6YG45pOH5LiA57WE77yM5YaN6YG45pOH5YW36auU55qE6K2m5ZGK5qih5p2/44CCJyksXG5cdFx0fSk7XG5cdFx0Y29uc3QgbWFpbl9ncm91cCA9IG1haW5fc2VsZWN0LmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdtYWluX2dyb3VwJyxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3orr7nva7pu5jorqTpgInmi6nnmoTpgInpobknLFxuXHRcdFx0XHQn5oKo5Y+v5ZyoVHdpbmtsZeWBj+WlveioreWumuS4reioreWumumgkOioremBuOaTh+eahOmBuOmghSdcblx0XHRcdCksXG5cdFx0XHRldmVudDogVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSxcblx0XHR9KTtcblx0XHRjb25zdCBkZWZhdWx0R3JvdXAgPSBOdW1iZXIucGFyc2VJbnQoVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0V2FybmluZ0dyb3VwJyksIDYpO1xuXHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5Yqo6YCJ5oup5bGC57qnJywgJ+iHquWLlemBuOaTh+WxpOe0micpLFxuXHRcdFx0dmFsdWU6ICdhdXRvbGV2ZWwnLFxuXHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gNyxcblx0XHR9KTtcblx0XHRtYWluX2dyb3VwLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiAnMe+8muaPkOmGkicsXG5cdFx0XHR2YWx1ZTogJ2xldmVsMScsXG5cdFx0XHRzZWxlY3RlZDogZGVmYXVsdEdyb3VwID09PSAxLFxuXHRcdH0pO1xuXHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6ICcy77ya6K2m5ZGKJyxcblx0XHRcdHZhbHVlOiAnbGV2ZWwyJyxcblx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDIsXG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY29tYmluZWRTaW5nbGV0TWVudXMnKSkge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn5raI5oGvJywgJ+WWruWxpOe0muioiuaBrycpLFxuXHRcdFx0XHR2YWx1ZTogJ3NpbmdsZWNvbWJpbmVkJyxcblx0XHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gMyB8fCBkZWZhdWx0R3JvdXAgPT09IDQsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn5o+Q6YaSJywgJ+WWruWxpOe0muaPkOmGkicpLFxuXHRcdFx0XHR2YWx1ZTogJ3NpbmdsZW5vdGljZScsXG5cdFx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDMsXG5cdFx0XHR9KTtcblx0XHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WNleWxgue6p+itpuWRiicsICfllq7lsaTntJrorablkYonKSxcblx0XHRcdFx0dmFsdWU6ICdzaW5nbGV3YXJuJyxcblx0XHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gNCxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21XYXJuaW5nTGlzdCcpLmxlbmd0aCkge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6K2m5ZGKJywgJ+iHquioguitpuWRiicpLFxuXHRcdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDUsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogJ+aJgOacieitpuWRiuaooeadvycsXG5cdFx0XHR2YWx1ZTogJ2tpdGNoZW5zaW5rJyxcblx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDYsXG5cdFx0fSk7XG5cdFx0bWFpbl9zZWxlY3QuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ3N1Yl9ncm91cCcsXG5cdFx0XHRldmVudDogVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9zdWJjYXRlZ29yeSxcblx0XHR9KTsgLy8gV2lsbCBiZSBlbXB0eSB0byBiZWdpbiB3aXRoLlxuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAnYXJ0aWNsZScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLpk77mjqUnLCAn6aCB6Z2i6YCj57WQJyksXG5cdFx0XHR2YWx1ZTogbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlJykgfHwgJycsXG5cdFx0XHRzaXplOiA1MCxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn57uZ5qih5p2/5Lit5Yqg5YWl5LiA6aG16Z2i6ZO+5o6l77yM5Y+v55WZ56m644CCJywgJ+e1puaooeadv+S4reWKoOWFpeS4gOmggemdoumAo+e1kO+8jOWPr+eVmeepuuOAgicpLFxuXHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+S7hemZkOS4gOS4qu+8jOWLv+S9v+eUqOe9keWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZmJyxcblx0XHRcdFx0J+WDhemZkOS4gOWAi++8jOWLv+S9v+eUqOe2suWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZmJ1xuXHRcdFx0KSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0aWQ6ICd0d2lua2xlLXdhcm4td2FybmluZy1tZXNzYWdlcycsXG5cdFx0fSk7XG5cdFx0Y29uc3QgbW9yZSA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRuYW1lOiAncmVhc29uR3JvdXAnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K2m5ZGK5L+h5oGvJywgJ+itpuWRiuizh+ioiicpLFxuXHRcdH0pO1xuXHRcdG1vcmUuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj6/pgInkv6Hmga/vvJonLCAn5Y+v6YG46LOH6KiK77yaJyksXG5cdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn55CG55Sx5oiW5piv6ZmE5Yqg5L+h5oGvJywgJ+eQhueUseaIluaYr+mZhOWKoOizh+ioiicpLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHByZXZpZXdsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdCQocHJldmlld2xpbmspLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFja3MucHJldmlldyhyZXN1bHQpOyAvLyB8cmVzdWx0fCBpcyBkZWZpbmVkIGJlbG93XG5cdFx0fSk7XG5cblx0XHRwcmV2aWV3bGluay5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cdFx0cHJldmlld2xpbmsudGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+mihOiniCcsICfpoJDopr0nKTtcblx0XHRtb3JlLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGlkOiAnd2FybmluZ3ByZXZpZXcnLFxuXHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0fSk7XG5cdFx0bW9yZS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3R3aW5rbGV3YXJuLXByZXZpZXdib3gnLFxuXHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHR9KTtcblx0XHRtb3JlLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdGxhYmVsOiAn5o+Q5LqkJyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdGRpYWxvZy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0ZGlhbG9nLmRpc3BsYXkoKTtcblx0XHRyZXN1bHQubWFpbl9ncm91cC5yb290ID0gcmVzdWx0O1xuXHRcdHJlc3VsdC5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KCQocmVzdWx0KS5maW5kKCdkaXYjdHdpbmtsZXdhcm4tcHJldmlld2JveCcpLmxhc3QoKVswXSk7XG5cdFx0Ly8gUG90ZW50aWFsIG5vdGljZXMgZm9yIHN0YWxlbmVzcyBhbmQgbWlzc2VkIHJldmVydHNcblx0XHRsZXQgbWVzc2FnZSA9ICcnO1xuXHRcdGxldCBxdWVyeSA9IHt9O1xuXHRcdGNvbnN0IHZhbnJldmlkID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlcmV2aWQnKTtcblx0XHRpZiAodmFucmV2aWQpIHtcblx0XHRcdC8vIElmIHlvdSB0cmllZCByZXZlcnRpbmcsIGNoZWNrIGlmICp5b3UqIGFjdHVhbGx5IHJldmVydGVkXG5cdFx0XHRpZiAoIW13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgnbm9hdXRvd2FybicpICYmIG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFuYXJ0aWNsZScpKSB7XG5cdFx0XHRcdC8vIFZpYSBmbHVmZiBsaW5rXG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHR0aXRsZXM6IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFuYXJ0aWNsZScpLFxuXHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdHJ2c3RhcnRpZDogdmFucmV2aWQsXG5cdFx0XHRcdFx0cnZsaW1pdDogMixcblx0XHRcdFx0XHRydmRpcjogJ25ld2VyJyxcblx0XHRcdFx0XHRydnByb3A6ICd1c2VyJyxcblx0XHRcdFx0fTtcblx0XHRcdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5qOA5p+l5oKo5piv5ZCm5oiQ5Yqf5Zue6YCA6K+l6aG16Z2iJywgJ+aqouafpeaCqOaYr+WQpuaIkOWKn+WbnumAgOipsumggemdoicpLFxuXHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHJldmVydFVzZXIgPSAkKGFwaW9iai5nZXRSZXNwb25zZSgpKS5maW5kKCdyZXZpc2lvbnMgcmV2JylbMV0uZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRcdFx0XHRpZiAocmV2ZXJ0VXNlciAmJiByZXZlcnRVc2VyICE9PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpIHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WFtuS7luS6uuWbnumAgOS6huivpemhtemdou+8jOW5tuWPr+iDveW3sue7j+itpuWRiuivpeeUqOaIt+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WFtuS7luS6uuWbnumAgOS6huipsumggemdou+8jOS4puWPr+iDveW3sue2k+itpuWRiuipsuS9v+eUqOiAheOAgidcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi13YXJuaW5nLW1lc3NhZ2VzJykudGV4dChg6K2m5ZGK77yaJHttZXNzYWdlfWApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBDb25maXJtIGVkaXQgd2Fzbid0IHRvbyBvbGQgZm9yIGEgd2FybmluZ1xuXHRcdFx0Y29uc3QgY2hlY2tTdGFsZSA9ICh2YW50aW1lc3RhbXBfKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJldkRhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZSh2YW50aW1lc3RhbXBfKTtcblx0XHRcdFx0aWYgKHZhbnRpbWVzdGFtcF8gJiYgcmV2RGF0ZS5pc1ZhbGlkKCkgJiYgcmV2RGF0ZS5hZGQoMjQsICdob3VycycpLmlzQmVmb3JlKG5ldyBEYXRlKCkpKSB7XG5cdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L+Z56yU57yW6L6R5piv5ZyoMjTlsI/ml7bliY3lgZrlh7rnmoTvvIznjrDlnKjorablkYrlj6/og73lt7Lov4fml7bjgIInLFxuXHRcdFx0XHRcdFx0J+mAmeethue3qOi8r+aYr+WcqDI05bCP5pmC5YmN5YGa5Ye655qE77yM54++5Zyo6K2m5ZGK5Y+v6IO95bey6YGO5pmC44CCJ1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi13YXJuaW5nLW1lc3NhZ2VzJykudGV4dChg6K2m5ZGK77yaJHttZXNzYWdlfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0bGV0IHZhbnRpbWVzdGFtcCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFudGltZXN0YW1wJyk7XG5cdFx0XHQvLyBQcm92aWRlZCBmcm9tIGEgZmx1ZmYgbW9kdWxlLWJhc2VkIHJldmVydCwgbm8gQVBJIGxvb2t1cCBuZWNlc3Nhcnlcblx0XHRcdGlmICh2YW50aW1lc3RhbXApIHtcblx0XHRcdFx0Y2hlY2tTdGFsZSh2YW50aW1lc3RhbXApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdHJ2cHJvcDogJ3RpbWVzdGFtcCcsXG5cdFx0XHRcdFx0cmV2aWRzOiB2YW5yZXZpZCxcblx0XHRcdFx0fTtcblx0XHRcdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn6I635Y+W54mI5pys5pe26Ze05oizJywgJ+WPluW+l+eJiOacrOaZgumWk+aIsycpLCBxdWVyeSwgKGFwaW9iaikgPT4ge1xuXHRcdFx0XHRcdHZhbnRpbWVzdGFtcCA9ICQoYXBpb2JqLmdldFJlc3BvbnNlKCkpLmZpbmQoJ3JldmlzaW9ucyByZXYnKS5hdHRyKCd0aW1lc3RhbXAnKTtcblx0XHRcdFx0XHRjaGVja1N0YWxlKHZhbnRpbWVzdGFtcCk7XG5cdFx0XHRcdH0pLnBvc3QoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgaW5pdCA9ICgpID0+IHtcblx0XHRcdC8vIFdlIG11c3QgaW5pdCB0aGUgZmlyc3QgY2hvaWNlIChHZW5lcmFsIE5vdGUpO1xuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5tYWluX2dyb3VwLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHR9O1xuXHRcdGluaXQoKTtcblx0fTtcblx0Ly8gVGhpcyBpcyBhbGwgdGhlIG1lc3NhZ2VzIHRoYXQgbWlnaHQgYmUgZGlzcGF0Y2hlZCBieSB0aGUgY29kZVxuXHQvLyBFYWNoIG9mIHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlcyByZXF1aXJlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246XG5cdC8vICAgbGFiZWwgKHJlcXVpcmVkKTogQSBzaG9ydCBkZXNjcmlwdGlvbiBkaXNwbGF5ZWQgaW4gdGhlIGRpYWxvZ1xuXHQvLyAgIHN1bW1hcnkgKHJlcXVpcmVkKTogVGhlIGVkaXQgc3VtbWFyeSB1c2VkLiBJZiBhbiBhcnRpY2xlIG5hbWUgaXMgZW50ZXJlZCwgdGhlIHN1bW1hcnkgaXMgcG9zdGZpeGVkIHdpdGggXCJvbiBbW2FydGljbGVdXVwiLCBhbmQgaXQgaXMgYWx3YXlzIHBvc3RmaXhlZCB3aXRoIFwiLiAkc3VtbWFyeUFkXCJcblx0Ly8gICBzdXBwcmVzc0FydGljbGVJblN1bW1hcnkgKG9wdGlvbmFsKTogU2V0IHRvIHRydWUgdG8gc3VwcHJlc3Mgc2hvd2luZyB0aGUgYXJ0aWNsZSBuYW1lIGluIHRoZSBlZGl0IHN1bW1hcnkuIFVzZWZ1bCBpZiB0aGUgd2FybmluZyByZWxhdGVzIHRvIGF0dGFjayBwYWdlcywgb3Igc29tZSBzdWNoLlxuXHRUd2lua2xlLndhcm4ubWVzc2FnZXMgPSB7XG5cdFx0bGV2ZWxzOiBbXG5cdFx0XHR7XG5cdFx0XHRcdGNhdGVnb3J5OiB3aW5kb3cud2dVTFMoJ+S4jeWQjOexu+Wei+eahOmdnuW7uuiuvue8lui+kScsICfkuI3lkIzpoZ7liKXnmoTpnZ7lu7roqK3nt6jovK8nKSxcblx0XHRcdFx0bGlzdDoge1xuXHRcdFx0XHRcdCd1dy1jb3B5cmlnaHQnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L6154qv6JGX5L2c5p2DJywgJ+S+teeKr+eJiOasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS+teeKr+iRl+S9nOadgycsICfms6jmhI/vvJrkvrXniq/niYjmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh5L6154qv6JGX5L2c5p2DJywgJ+WkmuasoeS+teeKr+eJiOasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWkmuasoeS+teeKr+iRl+S9nOadgycsICforablkYrvvJrlpJrmrKHkvrXniq/niYjmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctY3J5c3RhbCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXoh4bmtYvmiJbmnKrnoa7orqTnmoTmtojmga8nLCAn5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6IeG5rWL5oiW5pyq56Gu6K6k55qE5raI5oGvJywgJ+azqOaEj++8muWKoOWFpeiHhua4rOaIluacqueiuuiqjeeahOioiuaBrycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpJrmrKHliqDlhaXoh4bmtYvmiJbmnKrnoa7orqTnmoTmtojmga8nLCAn5aSa5qyh5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5aSa5qyh5Yqg5YWl6IeG5rWL5oiW5pyq56Gu6K6k55qE5raI5oGvJyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5aSa5qyh5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1kZWxldGUnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5oGw5b2T5Zyw56e76Zmk6aG16Z2i5YaF5a6544CB5qih5p2/5oiW6LWE5paZJywgJ+S4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muS4jeaBsOW9k+WcsOenu+mZpOmhtemdouWGheWuueOAgeaooeadv+aIlui1hOaWmScsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muS4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5oGw5b2T5Zyw56e76Zmk6aG16Z2i5YaF5a6544CB5qih5p2/5oiW6LWE5paZJywgJ+S4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4jeaBsOW9k+WcsOenu+mZpOmhtemdouWGheWuueOAgeaooeadv+aIlui1hOaWmScsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctaW1hZ2UnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5Lit5Yqg5YWl5LiN5b2T5Zu+54mHJywgJ+WcqOmggemdouS4reWKoOWFpeS4jeeVtuWclueJhycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOmhtemdouS4reWKoOWFpeS4jeW9k+WbvueJhycsICfms6jmhI/vvJrlnKjpoIHpnaLkuK3liqDlhaXkuI3nlbblnJbniYcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5Lit5Yqg5YWl5LiN5b2T5Zu+54mHJywgJ+WcqOmggemdouS4reWKoOWFpeS4jeeVtuWclueJhycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWcqOmhtemdouS4reWKoOWFpeS4jeW9k+WbvueJhycsICforablkYrvvJrlnKjpoIHpnaLkuK3liqDlhaXkuI3nlbblnJbniYcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctbmV3cGFnZSc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rkuI3lvZPpobXpnaInLCAn5bu656uL5LiN55W26aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yib5bu65LiN5b2T6aG16Z2iJywgJ+azqOaEj++8muW7uueri+S4jeeVtumggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rkuI3lvZPpobXpnaInLCAn5bu656uL5LiN55W26aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yib5bu65LiN5b2T6aG16Z2iJywgJ+itpuWRiu+8muW7uueri+S4jeeVtumggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1ub3InOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5Yqg5YWl5Y6f5Yib56CU56m2JywgJ+WcqOaineebruS4reWKoOWFpeWOn+WJteeglOepticpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebruS4reWKoOWFpeWOn+WIm+eglOepticsICfms6jmhI/vvJrlnKjmop3nm67kuK3liqDlhaXljp/libXnoJTnqbYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5Yqg5YWl5Y6f5Yib56CU56m2JywgJ+WcqOaineebruS4reWKoOWFpeWOn+WJteeglOepticpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWcqOadoeebruS4reWKoOWFpeWOn+WIm+eglOepticsICforablkYrvvJrlnKjmop3nm67kuK3liqDlhaXljp/libXnoJTnqbYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctb3Bvdic6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov53lj43lrqLop4Lljp/liJknLCAn6YGV5Y+N5a6i6KeA5Y6f5YmHJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya6L+d5Y+N5a6i6KeC5Y6f5YiZJywgJ+azqOaEj++8mumBleWPjeWuouingOWOn+WJhycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov53lj43lrqLop4Lljp/liJknLCAn6YGV5Y+N5a6i6KeA5Y6f5YmHJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya6L+d5Y+N5a6i6KeC5Y6f5YiZJywgJ+itpuWRiu+8mumBleWPjeWuouingOWOn+WJhycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1yZWRpcmVjdCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rnoLTlnY/mgKfnmoTph43lrprlkJEnLCAn5bu656uL56C05aOe5oCn55qE6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yib5bu656C05Z2P5oCn55qE6YeN5a6a5ZCRJywgJ+azqOaEj++8muW7uueri+egtOWjnuaAp+eahOmHjeWumuWQkScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rmgbbmhI/ph43lrprlkJEnLCAn5bu656uL5oOh5oSP6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yib5bu65oG25oSP6YeN5a6a5ZCRJywgJ+itpuWRiu+8muW7uueri+aDoeaEj+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy11cGxvYWQnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiK5Lyg5LiN5b2T5Zu+5YOPJywgJ+S4iuWCs+S4jeeVtuWcluWDjycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4iuS8oOS4jeW9k+WbvuWDjycsICfms6jmhI/vvJrkuIrlgrPkuI3nlbblnJblg48nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiK5Lyg5LiN5b2T5Zu+5YOPJywgJ+S4iuWCs+S4jeeVtuWcluWDjycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4iuS8oOS4jeW9k+WbvuWDjycsICforablkYrvvJrkuIrlgrPkuI3nlbblnJblg48nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdmFuZGFsaXNtJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aYjuaYvueahOegtOWdjycsICfmmI7poa/nmoTnoLTlo54nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrmmI7mmL7noLTlnY8nLCAn5rOo5oSP77ya5piO6aGv56C05aOeJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aYjuaYvueahOegtOWdjycsICfmmI7poa/nmoTnoLTlo54nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrmmI7mmL7noLTlnY8nLCAn6K2m5ZGK77ya5piO6aGv56C05aOeJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LXRkZWwnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6Zeu6aKY5LuN5pyq6Kej5Yaz55qE5oOF5Ya15LiL56e76Zmk57u05oqk5oCn5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5ZWP6aGM5LuN5pyq6Kej5rG655qE5oOF5rOB5LiL56e76Zmk57at6K235oCn5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muenu+mZpOe7tOaKpOaAp+aooeadvycsICfms6jmhI/vvJrnp7vpmaTntq3orbfmgKfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6Zeu6aKY5LuN5pyq6Kej5Yaz55qE5oOF5Ya15LiL56e76Zmk57u05oqk5oCn5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5ZWP6aGM5LuN5pyq6Kej5rG655qE5oOF5rOB5LiL56e76Zmk57at6K235oCn5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muenu+mZpOe7tOaKpOaAp+aooeadvycsICforablkYrvvJrnp7vpmaTntq3orbfmgKfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGNhdGVnb3J5OiB3aW5kb3cud2dVTFMoJ+WinuWKoOW5v+WRiicsICflop7liqDlu6PlkYonKSxcblx0XHRcdFx0bGlzdDoge1xuXHRcdFx0XHRcdCd1dy1zcGFtJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WinuWKoOS4jeWQiOmAgueahOWklumDqOmTvuaOpScsICflop7liqDkuI3lkIjpgannmoTlpJbpg6jpgKPntZAnKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrlop7liqDkuI3lkIjpgILnmoTlpJbpg6jpk77mjqUnLCAn5rOo5oSP77ya5aKe5Yqg5LiN5ZCI6YGp55qE5aSW6YOo6YCj57WQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WinuWKoOWeg+WcvumTvuaOpScsICflop7liqDlnoPlnL7pgKPntZAnKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlop7liqDlnoPlnL7pk77mjqUnLCAn6K2m5ZGK77ya5aKe5Yqg5Z6D5Zy+6YCj57WQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LWFkdmVydCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKnnlKjmsYLpl7vnmb7np5HmnaXlj5HluIPlub/lkYrmiJbmjqjlub8nLCAn5Yip55So5rGC6IGe55m+56eR5L6G55m85biD5buj5ZGK5oiW5o6o5bujJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yip55So5rGC6Ze755m+56eR5p2l5Y+R5biD5bm/5ZGK5oiW5o6o5bm/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yip55So5rGC6IGe55m+56eR5L6G55m85biD5buj5ZGK5oiW5o6o5bujJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKnnlKjmsYLpl7vnmb7np5HmnaXlj5HluIPlub/lkYrmiJbmjqjlub8nLCAn5Yip55So5rGC6IGe55m+56eR5L6G55m85biD5buj5ZGK5oiW5o6o5bujJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yip55So5rGC6Ze755m+56eR5p2l5Y+R5biD5bm/5ZGK5oiW5o6o5bm/Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yip55So5rGC6IGe55m+56eR5L6G55m85biD5buj5ZGK5oiW5o6o5bujJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0Y2F0ZWdvcnk6IHdpbmRvdy53Z1VMUygn5Yqg5o+S5LiN5a6e44CB6K+96LCk5paH5a2XJywgJ+WKoOaPkuS4jeWvpuOAgeiqueisl+aWh+WtlycpLFxuXHRcdFx0XHRsaXN0OiB7XG5cdFx0XHRcdFx0J3V3LWJpb2cnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5Lyg6K6w5Lit5Yqg5YWl5rKh5pyJ5Y+v6Z2g5p2l5rqQ5L2Q6K+B6ICM5LiU5Y+v6IO95byV5Y+R5LqJ6K6u55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5YKz6KiY5Lit5Yqg5YWl5rKS5pyJ5Y+v6Z2g5L6G5rqQ5L2Q6K2J6ICM5LiU5Y+v6IO95byV55m854it6K2w55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWcqOS6uueJqeS8oOiusOS4reWKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeiAjOS4lOWPr+iDveW8leWPkeS6ieiurueahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWcqOS6uueJqeWCs+iomOS4reWKoOWFpeaykuacieWPr+mdoOS+hua6kOS9kOitieiAjOS4lOWPr+iDveW8leeZvOeIreitsOeahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5Lyg6K6w5Lit5Yqg5YWl5rKh5pyJ5Y+v6Z2g5p2l5rqQ5L2Q6K+B6ICM5LiU5Y+v6IO95byV5Y+R5LqJ6K6u55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5YKz6KiY5Lit5Yqg5YWl5rKS5pyJ5Y+v6Z2g5L6G5rqQ5L2Q6K2J6ICM5LiU5Y+v6IO95byV55m854it6K2w55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWcqOS6uueJqeS8oOiusOS4reWKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeiAjOS4lOWPr+iDveW8leWPkeS6ieiurueahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWcqOS6uueJqeWCs+iomOS4reWKoOWFpeaykuacieWPr+mdoOS+hua6kOS9kOitieiAjOS4lOWPr+iDveW8leeZvOeIreitsOeahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctZXJyb3InOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWF5oSP5Yqg5YWl5LiN5a6e5YaF5a65JywgJ+aVheaEj+WKoOWFpeS4jeWvpuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muaVheaEj+WKoOWFpeS4jeWunuWGheWuuScsICfms6jmhI/vvJrmlYXmhI/liqDlhaXkuI3lr6blhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWF5oSP5Yqg5YWl5LiN5a6e5YaF5a65JywgJ+aVheaEj+WKoOWFpeS4jeWvpuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muaVheaEj+WKoOWFpeS4jeWunuWGheWuuScsICforablkYrvvJrmlYXmhI/liqDlhaXkuI3lr6blhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdW5zb3VyY2VkJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeeahOWGheWuuScsICfliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrliqDlhaXmsqHmnInlj6/pnaDmnaXmupDkvZDor4HnmoTlhoXlrrknLFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeeahOWGheWuuScsICfliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrliqDlhaXmsqHmnInlj6/pnaDmnaXmupDkvZDor4HnmoTlhoXlrrknLFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRjYXRlZ29yeTogd2luZG93LndnVUxTKCfnv7vor5Hlk4HotKgnLCAn57+76K2v5ZOB6LOqJyksXG5cdFx0XHRcdGxpc3Q6IHtcblx0XHRcdFx0XHQndXctcm91Z2h0cmFuc2xhdGlvbic6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmgqjnv7vor5HnmoTotKjph4/mnInlvoXmlLnlloQnLCAn5oKo57+76K2v55qE6LOq6YeP5pyJ5b6F5pS55ZaEJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5oKo57+76K+R55qE6LSo6YeP5pyJ5b6F5pS55ZaEJywgJ+azqOaEj++8muaCqOe/u+itr+eahOizqumHj+acieW+heaUueWWhCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnspfliqPnv7vor5EnLCAn57KX5Yqj57+76K2vJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya57KX5Yqj57+76K+RJywgJ+itpuWRiu+8mueyl+WKo+e/u+itrycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0Y2F0ZWdvcnk6IHdpbmRvdy53Z1VMUygn6Z2e6IO95o6l5Y+X5LiU6L+d5Y+N5pa56ZKI55qE5Y2V5pa56Z2i6KGM5Li65oiW5pON5L2cJywgJ+mdnuiDveaOpeWPl+S4lOmBleWPjeaWuemHneeahOWWruaWuemdouihjOeCuuaIluaTjeS9nCcpLFxuXHRcdFx0XHRsaXN0OiB7XG5cdFx0XHRcdFx0J3V3LWFmZCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaR7e2FmZH1977yI6aG16Z2i5a2Y5bqf6K6o6K6677yJ5qih5p2/JywgJ+enu+mZpHt7YWZkfX3vvIjpoIHpnaLlrZjlu6LoqI7oq5bvvInmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrnp7vpmaR7e2FmZH1977yI6aG16Z2i5a2Y5bqf6K6o6K6677yJ5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya56e76Zmke3thZmR9fe+8iOmggemdouWtmOW7ouiojuirlu+8ieaooeadvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e76Zmke3thZmR9fe+8iOmhtemdouWtmOW6n+iuqOiuuu+8ieaooeadvycsICfnp7vpmaR7e2FmZH1977yI6aCB6Z2i5a2Y5bui6KiO6KuW77yJ5qih5p2/JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya56e76Zmke3thZmR9fe+8iOmhtemdouWtmOW6n+iuqOiuuu+8ieaooeadvycsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muenu+mZpHt7YWZkfX3vvIjpoIHpnaLlrZjlu6LoqI7oq5bvvInmqKHmnb8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LW1vcyc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3mgbDlvZPnmoTmnaHnm67moLzlvI/jgIHml6XmnJ/jgIHor63oqIDnrYknLCAn5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5LiN5oGw5b2T55qE5p2h55uu5qC85byP44CB5pel5pyf44CB6K+t6KiA562JJyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3mgbDlvZPnmoTmnaHnm67moLzlvI/jgIHml6XmnJ/jgIHor63oqIDnrYknLCAn5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5LiN5oGw5b2T55qE5p2h55uu5qC85byP44CB5pel5pyf44CB6K+t6KiA562JJyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1tb3ZlJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aXoOaVheenu+WKqOadoeebri/mlrDlkI3np7DkuI3nrKblkIjlkb3lkI3op4TojIMnLFxuXHRcdFx0XHRcdFx0XHRcdCfnhKHmlYXnp7vli5Xmop3nm64v5paw5ZCN56ix5LiN56ym5ZCI5ZG95ZCN6KaP56+EJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4jeaBsOW9k+WcsOenu+WKqOmhtemdoicsICfms6jmhI/vvJrkuI3mgbDnlbblnLDnp7vli5XpoIHpnaInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oqK6aG16Z2i56e75Yqo5Yiw5LiN5oGw5b2T44CB6L+d5Y+N5ZG95ZCN5bi46KeE5oiW6L+d5Y+N5YWx6K+G55qE5qCH6aKYJyxcblx0XHRcdFx0XHRcdFx0XHQn5oqK6aCB6Z2i56e75YuV5Yiw5LiN5oGw55W244CB6YGV5Y+N5ZG95ZCN5bi46KaP5oiW6YGV5Y+N5YWx6K2Y55qE5qiZ6aGMJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4jeaBsOW9k+WcsOenu+WKqOmhtemdoicsICforablkYrvvJrkuI3mgbDnlbblnLDnp7vli5XpoIHpnaInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctc3BlZWR5Jzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKDpmaTvvInmqKHmnb8nLCAn56e76Zmke3tkZWxldGV9fe+8iOW/q+mAn+WIqumZpO+8ieaooeadvycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muenu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKDpmaTvvInmqKHmnb8nLFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yiq6Zmk77yJ5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yig6Zmk77yJ5qih5p2/JywgJ+enu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKrpmaTvvInmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yig6Zmk77yJ5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya56e76Zmke3tkZWxldGV9fe+8iOW/q+mAn+WIqumZpO+8ieaooeadvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdGFsa3BhZ2UnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N6K6o6K666aG16KeE6IyDJywgJ+mBleWPjeiojuirlumggeimj+evhCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8mui/neWPjeiuqOiuuumhteinhOiMgycsICfms6jmhI/vvJrpgZXlj43oqI7oq5bpoIHopo/nr4QnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N6K6o6K666aG16KeE6IyDJywgJ+mBleWPjeiojuirlumggeimj+evhCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8mui/neWPjeiuqOiuuumhteinhOiMgycsICforablkYrvvJrpgZXlj43oqI7oq5bpoIHopo/nr4QnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdHB2Jzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L+u5pS55LuW5Lq655WZ6KiAJyxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJ+azqOaEj++8muS/ruaUueS7luS6uueVmeiogCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L+u5pS55LuW5Lq655WZ6KiAJyxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJ+itpuWRiu+8muS/ruaUueS7luS6uueVmeiogCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRjYXRlZ29yeTogd2luZG93LndnVUxTKCflr7nlhbbku5bnlKjmiLflkozmnaHnm67nmoTmgIHluqYnLCAn5bCN5YW25LuW55So5oi25ZKM5qKd55uu55qE5oWL5bqmJyksXG5cdFx0XHRcdGxpc3Q6IHtcblx0XHRcdFx0XHQndXctaWxsZWdhbCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTlhoXlrrknLCAn5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTlhoXlrrknLCAn5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1vd24nOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li75byg5p2h55uu5omA5pyJ5p2DJywgJ+S4u+W8teaineebruaJgOacieasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4u+W8oOadoeebruaJgOacieadgycsICfms6jmhI/vvJrkuLvlvLXmop3nm67miYDmnInmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li75byg5p2h55uu55qE5omA5pyJ5p2DJywgJ+S4u+W8teaineebrueahOaJgOacieasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4u+W8oOadoeebrueahOaJgOacieadgycsICforablkYrvvJrkuLvlvLXmop3nm67nmoTmiYDmnInmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctc29jaWFsbWVkaWEnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5rGC6Ze755m+56eR5b2T5L2c56S+5Lqk5aqS5L2T5L2/55SoJywgJ+Wwh+axguiBnueZvuenkeeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWwhuaxgumXu+eZvuenkeW9k+S9nOekvuS6pOWqkuS9k+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWwh+axguiBnueZvuenkeeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5rGC6Ze755m+56eR5b2T5L2c56S+5Lqk5aqS5L2T5L2/55SoJywgJ+Wwh+axguiBnueZvuenkeeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWwhuaxgumXu+eZvuenkeW9k+S9nOekvuS6pOWqkuS9k+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWwh+axguiBnueZvuenkeeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XSxcblx0XHRzaW5nbGVub3RpY2U6IHtcblx0XHRcdCd1dy0ycmVkaXJlY3QnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOenu+WKqOmhtemdouWQjuW6lOivpeS/ruWkjeWPjOmHjemHjeWumuWQkScsICflnKjnp7vli5XpoIHpnaLlvozmh4noqbLkv67lvqnpm5nph43ph43lrprlkJEnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrlnKjnp7vliqjpobXpnaLlkI7lupTor6Xkv67lpI3lj4zph43ph43lrprlkJEnLCAn5rOo5oSP77ya5Zyo56e75YuV6aCB6Z2i5b6M5oeJ6Kmy5L+u5b6p6ZuZ6YeN6YeN5a6a5ZCRJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWFpdic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li+5oql5LqL6aG55bm25LiN5piv56C05Z2P6KGM5Li6JywgJ+iIieWgseS6i+mgheS4puS4jeaYr+egtOWjnuihjOS4uicpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4jeaBsOW9k+WcsOS4vuaKpeegtOWdjycsICfms6jmhI/vvJrkuI3mgbDnlbblnLDoiInloLHnoLTlo54nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXJ0aWNsZXNpZyc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit562+5ZCNJywgJ+WcqOaineebruS4reewveWQjScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebruS4reetvuWQjScsICfms6jmhI/vvJrlnKjmop3nm67kuK3nsL3lkI0nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXV0b2Jpb2dyYXBoeSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu66Ieq5LygJywgJ+W7uueri+iHquWCsycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWIm+W7uuiHquS8oCcsICfms6jmhI/vvJrlu7rnq4voh6rlgrMnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYmFkY2F0Jzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXplJnor6/nmoTpobXpnaLliIbnsbsnLCAn5Yqg5YWl6Yyv6Kqk55qE6aCB6Z2i5YiG6aGeJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6ZSZ6K+v55qE6aG16Z2i5YiG57G7JywgJ+azqOaEj++8muWKoOWFpemMr+iqpOeahOmggemdouWIhumhnicpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1iaXRlJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvKTlrrPmlrDmiYsnLCAn5YK35a6z5paw5omLJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Lyk5a6z5paw5omLJywgJ+azqOaEj++8muWCt+Wus+aWsOaJiycpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1jaGluZXNlJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fkvb/nlKjmoIflh4bmsYnor63msp/pgJonLCAn6KuL5L2/55So5qiZ5rqW5ryi6Kqe5rqd6YCaJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya6K+35L2/55So5qCH5YeG5rGJ6K+t5rKf6YCaJywgJ+azqOaEj++8muiri+S9v+eUqOaomea6lua8ouiqnua6nemAmicpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1jcG1vdmUnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WJqui0tOenu+WKqCcsICfliarosrznp7vli5UnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrliarotLTnp7vliqgnLCAn5rOo5oSP77ya5Ymq6LK856e75YuVJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWRhYic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5raI5q2n5LmJ6aG15qC85byP6ZSZ6K+vJywgJ+a2iOatp+e+qemggeagvOW8j+mMr+iqpCcpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8mua2iOatp+S5iemhteagvOW8j+mUmeivrycsICfms6jmhI/vvJrmtojmrafnvqnpoIHmoLzlvI/pjK/oqqQnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctbmV3cGFnZS1kcmFmdCc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyA6L+R5Yib5bu655qE6aG16Z2i6KKr56e75Yqo5Yiw6I2J56i/JywgJ+acgOi/keW7uueri+eahOmggemdouiiq+enu+WLleWIsOiNieeovycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muacgOi/keWIm+W7uueahOmhtemdouiiq+enu+WKqOWIsOiNieeovycsICfms6jmhI/vvJrmnIDov5Hlu7rnq4vnmoTpoIHpnaLooqvnp7vli5XliLDojYnnqL8nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctc2VsZnJldmVydCc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5oSf6LCi5oKo6Ieq6KGM5Zue6YCA6Ieq5bex55qE5rWL6K+V77yM5Lul5ZCO5LiN6KaB5YaN6L+Z5qC35YGa5LqGJyxcblx0XHRcdFx0XHQn5oSf6Kyd5oKo6Ieq6KGM5Zue6YCA6Ieq5bex55qE5ris6Kmm77yM5Lul5b6M5LiN6KaB5YaN6YCZ5qij5YGa5LqGJ1xuXHRcdFx0XHQpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWbnumAgOS4quS6uueahOa1i+ivlScsICfms6jmhI/vvJrlm57pgIDlgIvkurrnmoTmuKzoqaYnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctc3Vic3R1Yic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu65bCP5bCP5L2c5ZOBJywgJ+W7uueri+Wwj+Wwj+S9nOWTgScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWIm+W7uuWwj+Wwj+S9nOWTgScsICforablkYrvvJrlu7rnq4vlsI/lsI/kvZzlk4EnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctdGFsa2luYXJ0aWNsZSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu6aG15Lit55WZ5LiL5oSP6KeBJywgJ+WcqOaineebrumggeS4reeVmeS4i+aEj+imiycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebrumhteS4reeVmeS4i+aEj+ingScsICfms6jmhI/vvJrlnKjmop3nm67poIHkuK3nlZnkuIvmhI/oposnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctdW5zaWduZWQnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ayoeacieWcqOiuqOiuuumhteS4iuetvuWQjScsICfmspLmnInlnKjoqI7oq5bpoIHkuIrnsL3lkI0nKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrmsqHmnInlnKjorqjorrrpobXkuIrnrb7lkI0nLCAn5rOo5oSP77ya5rKS5pyJ5Zyo6KiO6KuW6aCB5LiK57C95ZCNJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LXdyb25nY3NkJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTnkIbnlLHkuI3lvZMnLCAn5b+r6YCf5Yiq6Zmk55CG55Sx5LiN55W2JyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5b+r6YCf5Yig6Zmk55CG55Sx5LiN5b2TJywgJ+azqOaEj++8muW/q+mAn+WIqumZpOeQhueUseS4jeeVticpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy13cm9uZ3N1bW1hcnknOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOe8lui+keaRmOimgeWItumAoOS4jemAguW9k+eahOWGheWuuScsICflnKjnt6jovK/mkZjopoHoo73pgKDkuI3pgannlbbnmoTlhaflrrknKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlnKjnvJbovpHmkZjopoHliLbpgKDkuI3pgILlvZPnmoTlhoXlrrknLCAn6K2m5ZGK77ya5Zyo57eo6Lyv5pGY6KaB6KO96YCg5LiN6YGp55W255qE5YWn5a65JyksXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0c2luZ2xld2Fybjoge1xuXHRcdFx0J3V3LTNycic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35r2c5Zyo6L+d5Y+N5Zue6YCA5LiN6L+H5LiJ5Y6f5YiZ55qE5Y+v6IO95oCnJywgJ+eUqOaItua9m+WcqOmBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJh+eahOWPr+iDveaApycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+itpuWRiu+8mueUqOaIt+a9nOWcqOi/neWPjeWbnumAgOS4jei/h+S4ieWOn+WImeeahOWPr+iDveaApycsXG5cdFx0XHRcdFx0J+itpuWRiu+8mueUqOaItua9m+WcqOmBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJh+eahOWPr+iDveaApydcblx0XHRcdFx0KSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXR0YWNrJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkurrouqvmlLvlh7snLCAn5Lq66Lqr5pS75pOKJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Lq66Lqr5pS75Ye7JywgJ+itpuWRiu+8muS6uui6q+aUu+aTiicpLFxuXHRcdFx0XHRzdXBwcmVzc0FydGljbGVJblN1bW1hcnk6IHRydWUsXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWNvaSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yip55uK5Yay56qBJywgJ+WIqeebiuihneeqgScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWIqeebiuWGsueqgScsICfms6jmhI/vvJrliKnnm4rooZ3nqoEnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctZmFrZXNvdXJjZSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Jma5p6E5pWw5o2u5rqQ5oiW5byV5paHJywgJ+iZm+ani+izh+aWmeS+hua6kOaIluW8leaWhycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muiZmuaehOaVsOaNrua6kOaIluW8leaWhycsICforablkYrvvJromZvmp4vos4fmlpnkvobmupDmiJblvJXmlocnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctcGluZm8nOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W8oOi0tOS7luS6uumakOengScsICflvLXosrzku5bkurrpmrHnp4EnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlvKDotLTku5bkurrpmpDnp4EnLCAn6K2m5ZGK77ya5by16LK85LuW5Lq66Zqx56eBJyksXG5cdFx0XHR9LFxuXHRcdH0sXG5cdH07XG5cdC8vIFVzZWQgcmVwZWF0ZWRseSBiZWxvdyBhY3Jvc3MgbWVudSByZWJ1aWxkc1xuXHRUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLnByZXZfcmVhc29uID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSA9IGZ1bmN0aW9uIGNoYW5nZV9jYXRlZ29yeShlKSB7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHtzdWJfZ3JvdXB9ID0gZS50YXJnZXQucm9vdDtcblx0XHRzdWJfZ3JvdXAubWFpbl9ncm91cCA9IHZhbHVlO1xuXHRcdGxldCBvbGRfc3VidmFsdWUgPSBzdWJfZ3JvdXAudmFsdWU7XG5cdFx0bGV0IG9sZF9zdWJ2YWx1ZV9yZTtcblx0XHRpZiAob2xkX3N1YnZhbHVlKSB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICdraXRjaGVuc2luaycpIHtcblx0XHRcdFx0Ly8gRXhhY3QgbWF0Y2ggcG9zc2libGUgaW4ga2l0Y2hlbnNpbmsgbWVudVxuXHRcdFx0XHRvbGRfc3VidmFsdWVfcmUgPSBuZXcgUmVnRXhwKG13LnV0aWwuZXNjYXBlUmVnRXhwKG9sZF9zdWJ2YWx1ZSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b2xkX3N1YnZhbHVlID0gb2xkX3N1YnZhbHVlLnJlcGxhY2UoL1xcZCooaW0pPyQvLCAnJyk7XG5cdFx0XHRcdG9sZF9zdWJ2YWx1ZV9yZSA9IG5ldyBSZWdFeHAoYCR7bXcudXRpbC5lc2NhcGVSZWdFeHAob2xkX3N1YnZhbHVlKX0oXFxcXGQqPykkYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlIChzdWJfZ3JvdXAuaGFzQ2hpbGROb2RlcygpKSB7XG5cdFx0XHRzdWJfZ3JvdXAucmVtb3ZlQ2hpbGQoc3ViX2dyb3VwLmZpcnN0Q2hpbGQpO1xuXHRcdH1cblx0XHRsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyB3b3JrZXIgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBjb21ibyBib3ggZW50cmllc1xuXHRcdGNvbnN0IGNyZWF0ZUVudHJpZXMgPSAoY29udGVudHMsIGNvbnRhaW5lciwgd3JhcEluT3B0Z3JvdXAsIHZhbCA9IHZhbHVlKSA9PiB7XG5cdFx0XHQvLyBsZXZlbDItPjIsIHNpbmdsZXdhcm4tPicnOyBhbHNvIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlXG5cdFx0XHQvLyBzY2FsZWQgbGV2ZWxzIGZyb20gc2luZ2xlbm90aWNlLCBzaW5nbGV3YXJuLCBhbmQgY3VzdG9tXG5cdFx0XHRjb25zdCBsZXZlbCA9IHZhbC5yZXBsYWNlKC9eXFxEKy9nLCAnJyk7XG5cdFx0XHQvLyBkdWUgdG8gYW4gYXBwYXJlbnQgaU9TIGJ1Zywgd2UgaGF2ZSB0byBhZGQgYW4gb3B0aW9uLWdyb3VwIHRvIHByZXZlbnQgdHJ1bmNhdGlvbiBvZiB0ZXh0XG5cdFx0XHQvLyAoc2VhcmNoIFdUOlRXIGFyY2hpdmVzIGZvciBcIlByb2JsZW0gc2VsZWN0aW5nIHdhcm5pbmdzIG9uIGFuIGlQaG9uZVwiKVxuXHRcdFx0aWYgKHdyYXBJbk9wdGdyb3VwICYmICQuY2xpZW50LnByb2ZpbGUoKS5wbGF0Zm9ybSA9PT0gJ2lwaG9uZScpIHtcblx0XHRcdFx0bGV0IHdyYXBwZXJPcHRncm91cCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0XHRsYWJlbDogJ+WPr+eUqOaooeadvycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3cmFwcGVyT3B0Z3JvdXAgPSB3cmFwcGVyT3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRcdGNvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyT3B0Z3JvdXApO1xuXHRcdFx0XHRjb250YWluZXIgPSB3cmFwcGVyT3B0Z3JvdXA7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IFtpdGVtS2V5LCBpdGVtUHJvcGVydGllc10gb2YgT2JqZWN0LmVudHJpZXMoY29udGVudHMpKSB7XG5cdFx0XHRcdC8vIFNraXAgaWYgdGhlIGN1cnJlbnQgdGVtcGxhdGUgZG9lc24ndCBoYXZlIGEgdmVyc2lvbiBmb3IgdGhlIGN1cnJlbnQgbGV2ZWxcblx0XHRcdFx0aWYgKCEhbGV2ZWwgJiYgIWl0ZW1Qcm9wZXJ0aWVzW3ZhbF0pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qga2V5ID0gdHlwZW9mIGl0ZW1LZXkgPT09ICdzdHJpbmcnID8gaXRlbUtleSA6IGl0ZW1Qcm9wZXJ0aWVzLnZhbHVlO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZSA9IGtleSArIGxldmVsO1xuXHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogYHt7JHt0ZW1wbGF0ZX19fTogJHtsZXZlbCA/IGl0ZW1Qcm9wZXJ0aWVzW3ZhbF0ubGFiZWwgOiBpdGVtUHJvcGVydGllcy5sYWJlbH1gLFxuXHRcdFx0XHRcdHZhbHVlOiB0ZW1wbGF0ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdC8vIFNlbGVjdCBpdGVtIGJlc3QgY29ycmVzcG9uZGluZyB0byBwcmV2aW91cyBzZWxlY3Rpb25cblx0XHRcdFx0aWYgKCFzZWxlY3RlZCAmJiBvbGRfc3VidmFsdWUgJiYgb2xkX3N1YnZhbHVlX3JlLnRlc3QodGVtcGxhdGUpKSB7XG5cdFx0XHRcdFx0ZWxlbS5kYXRhLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRzZWxlY3RlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZWxlbVJlbmRlcmVkID0gY29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW0ucmVuZGVyKCkpO1xuXHRcdFx0XHQkKGVsZW1SZW5kZXJlZCkuZGF0YSgnbWVzc2FnZURhdGEnLCBpdGVtUHJvcGVydGllcyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRzd2l0Y2ggKHZhbHVlKSB7XG5cdFx0XHRjYXNlICdzaW5nbGVub3RpY2UnOlxuXHRcdFx0Y2FzZSAnc2luZ2xld2Fybic6XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS53YXJuLm1lc3NhZ2VzW3ZhbHVlXSwgc3ViX2dyb3VwLCB0cnVlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzaW5nbGVjb21iaW5lZCc6IHtcblx0XHRcdFx0Y29uc3QgdW5Tb3J0ZWRTaW5nbGV0cyA9IHtcblx0XHRcdFx0XHQuLi5Ud2lua2xlLndhcm4ubWVzc2FnZXMuc2luZ2xlbm90aWNlLFxuXHRcdFx0XHRcdC4uLlR3aW5rbGUud2Fybi5tZXNzYWdlcy5zaW5nbGV3YXJuLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBzb3J0ZWRTaW5nbGV0TWVzc2FnZXMgPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModW5Tb3J0ZWRTaW5nbGV0cykuc29ydCgpKSB7XG5cdFx0XHRcdFx0c29ydGVkU2luZ2xldE1lc3NhZ2VzW2tleV0gPSB1blNvcnRlZFNpbmdsZXRzW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3JlYXRlRW50cmllcyhzb3J0ZWRTaW5nbGV0TWVzc2FnZXMsIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnY3VzdG9tJzpcblx0XHRcdFx0Y3JlYXRlRW50cmllcyhUd2lua2xlLmdldFByZWYoJ2N1c3RvbVdhcm5pbmdMaXN0JyksIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAna2l0Y2hlbnNpbmsnOlxuXHRcdFx0XHRmb3IgKGNvbnN0IGx2bCBvZiBbJ2xldmVsMScsICdsZXZlbDInXSkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgbGV2ZWxHcm91cCBvZiBUd2lua2xlLndhcm4ubWVzc2FnZXMubGV2ZWxzKSB7XG5cdFx0XHRcdFx0XHRjcmVhdGVFbnRyaWVzKGxldmVsR3JvdXAubGlzdCwgc3ViX2dyb3VwLCB0cnVlLCBsdmwpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjcmVhdGVFbnRyaWVzKFR3aW5rbGUud2Fybi5tZXNzYWdlcy5zaW5nbGVub3RpY2UsIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS53YXJuLm1lc3NhZ2VzLnNpbmdsZXdhcm4sIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21XYXJuaW5nTGlzdCcpLCBzdWJfZ3JvdXAsIHRydWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2xldmVsMSc6XG5cdFx0XHRjYXNlICdsZXZlbDInOlxuXHRcdFx0XHQvLyBDcmVhdGVzIHN1Ymdyb3VwIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVyZSBpcyBhbnl0aGluZyB0byBwbGFjZSBpbiBpdDtcblx0XHRcdFx0Ly8gbGVhdmVzIFwiUmVtb3ZhbCBvZiBkZWxldGlvbiB0YWdzXCIgZW1wdHkgZm9yIGxldmVsIDJcblx0XHRcdFx0Zm9yIChjb25zdCBsZXZlbEdyb3VwIG9mIFR3aW5rbGUud2Fybi5tZXNzYWdlcy5sZXZlbHMpIHtcblx0XHRcdFx0XHRsZXQgb3B0Z3JvdXAgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBsZXZlbEdyb3VwLmNhdGVnb3J5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG9wdGdyb3VwID0gb3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRcdFx0c3ViX2dyb3VwLmFwcGVuZENoaWxkKG9wdGdyb3VwKTtcblx0XHRcdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdFx0XHRjcmVhdGVFbnRyaWVzKGxldmVsR3JvdXAubGlzdCwgb3B0Z3JvdXAsIGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2F1dG9sZXZlbCc6IHtcblx0XHRcdFx0Ly8gQ2hlY2sgdXNlciBwYWdlIHRvIGRldGVybWluZSBhcHByb3ByaWF0ZSBsZXZlbFxuXHRcdFx0XHRjb25zdCBhdXRvbGV2ZWxQcm9jID0gKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHdpa2l0ZXh0ID0gVHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Ly8gaGlzdG9yeSBub3QgbmVlZGVkIGZvciBhdXRvbGV2ZWxcblx0XHRcdFx0XHRjb25zdCBbbGF0ZXN0XSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZGF0ZVByb2Nlc3Npbmcod2lraXRleHQpO1xuXHRcdFx0XHRcdC8vIFBzZXVkby1wYXJhbXMgd2l0aCBvbmx5IHdoYXQncyBuZWVkZWQgdG8gcGFyc2UgdGhlIGxldmVsIGkuZS4gbm8gbWVzc2FnZURhdGFcblx0XHRcdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRzdWJfZ3JvdXA6IG9sZF9zdWJ2YWx1ZSxcblx0XHRcdFx0XHRcdGFydGljbGU6IGUudGFyZ2V0LnJvb3QuYXJ0aWNsZS52YWx1ZSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGNvbnN0IGx2bCA9IGBsZXZlbCR7VHdpbmtsZS53YXJuLmNhbGxiYWNrcy5hdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0KHdpa2l0ZXh0LCBwYXJhbXMsIGxhdGVzdClbMV19YDtcblx0XHRcdFx0XHQvLyBJZGVudGljYWwgdG8gbGV2ZWwxLCBldGMuIGFib3ZlIGJ1dCBleHBsaWNpdGx5IHByb3ZpZGVzIHRoZSBsZXZlbFxuXHRcdFx0XHRcdGZvciAoY29uc3QgbGV2ZWxHcm91cCBvZiBUd2lua2xlLndhcm4ubWVzc2FnZXMubGV2ZWxzKSB7XG5cdFx0XHRcdFx0XHRsZXQgb3B0Z3JvdXAgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0Z3JvdXAnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogbGV2ZWxHcm91cC5jYXRlZ29yeSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0b3B0Z3JvdXAgPSBvcHRncm91cC5yZW5kZXIoKTtcblx0XHRcdFx0XHRcdHN1Yl9ncm91cC5hcHBlbmRDaGlsZChvcHRncm91cCk7XG5cdFx0XHRcdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdFx0XHRcdGNyZWF0ZUVudHJpZXMobGV2ZWxHcm91cC5saXN0LCBvcHRncm91cCwgZmFsc2UsIGx2bCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIFRyaWdnZXIgc3ViY2F0ZWdvcnkgY2hhbmdlLCBhZGQgc2VsZWN0IG1lbnUsIGV0Yy5cblx0XHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2sucG9zdENhdGVnb3J5Q2xlYW51cChlKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKFR3aW5rbGUud2Fybi50YWxrcGFnZU9iaikge1xuXHRcdFx0XHRcdGF1dG9sZXZlbFByb2MoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCB1c2VydGFsa19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfWAsXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOi9veS4iuasoeitpuWRiicsICfovInlhaXkuIrmrKHorablkYonKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dXNlcnRhbGtfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdFx0dXNlcnRhbGtfcGFnZS5sb2FkKFxuXHRcdFx0XHRcdFx0KHBhZ2VvYmopID0+IHtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gcGFnZW9iajsgLy8gVXBkYXRlIHRhbGtwYWdlT2JqXG5cdFx0XHRcdFx0XHRcdGF1dG9sZXZlbFByb2MoKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIENhdGNoIGFuZCB3YXJuIGlmIHRoZSB0YWxrcGFnZSBjYW4ndCBsb2FkLFxuXHRcdFx0XHRcdFx0XHQvLyBtb3N0IGxpa2VseSBiZWNhdXNlIGl0J3MgYSBjcm9zcy1uYW1lc3BhY2UgcmVkaXJlY3Rcblx0XHRcdFx0XHRcdFx0Ly8gU3VwZXJzZWRlcyB0aGUgdHlwaWNhbCAkYXV0b2xldmVsTWVzc2FnZSBhZGRlZCBpbiBhdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0XG5cdFx0XHRcdFx0XHRcdGNvbnN0ICRub1RhbGtQYWdlTm9kZSA9ICQoJzxzdHJvbmc+Jylcblx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCAndHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlJylcblx0XHRcdFx0XHRcdFx0XHQuY3NzKCdjb2xvcicsICcjZjAwJylcblx0XHRcdFx0XHRcdFx0XHQudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0J+aXoOazleWKoOi9veeUqOaIt+iuqOiuuumhte+8jOi/meWPr+iDveaYr+WboOS4uuWug+aYr+i3qOWRveWQjeepuumXtOmHjeWumuWQke+8jOiHquWKqOmAieaLqeitpuWRiue6p+WIq+WwhuS4jeS8mui/kOS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCfnhKHms5XovInlhaXkvb/nlKjogIXoqI7oq5bpoIHvvIzpgJnlj6/og73mmK/lm6DngrrlroPmmK/ot6jlkb3lkI3nqbrplpPph43mlrDlsI7lkJHvvIzoh6rli5Xpgbjmk4forablkYrntJrliKXlsIfkuI3mnIPpgYvkvZzjgIInXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0JG5vVGFsa1BhZ2VOb2RlLmluc2VydEJlZm9yZSgkYm9keS5maW5kKCcjdHdpbmtsZS13YXJuLXdhcm5pbmctbWVzc2FnZXMnKSk7XG5cdFx0XHRcdFx0XHRcdC8vIElmIGEgcHJldmlldyB3YXMgb3BlbmVkIHdoaWxlIGluIGEgZGlmZmVyZW50IG1vZGUsIGNsb3NlIGl0XG5cdFx0XHRcdFx0XHRcdC8vIFNob3VsZCBudWxsaWZ5IHRoZSBuZWVkIHRvIGNhdGNoIHRoZSBlcnJvciBpbiBwcmV2aWV3IGNhbGxiYWNrXG5cdFx0XHRcdFx0XHRcdGUudGFyZ2V0LnJvb3QucHJldmlld2VyLmNsb3NlUHJldmlldygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ3R3aW5rbGV3YXJu77ya5pyq55+l55qE6K2m5ZGK57uEJywgJ3R3aW5rbGV3YXJu77ya5pyq55+l55qE6K2m5ZGK57WEJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZXdhcm4nLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdC8vIFRyaWdnZXIgc3ViY2F0ZWdvcnkgY2hhbmdlLCBhZGQgc2VsZWN0IG1lbnUsIGV0Yy5cblx0XHQvLyBIZXJlIGJlY2F1c2Ugb2YgdGhlIGFzeW5jIGxvYWQgZm9yIGF1dG9sZXZlbFxuXHRcdGlmICh2YWx1ZSAhPT0gJ2F1dG9sZXZlbCcpIHtcblx0XHRcdC8vIHJlc2V0IGFueSBhdXRvbGV2ZWwtc3BlY2lmaWMgbWVzc2FnZXMgd2hpbGUgd2UncmUgaGVyZVxuXHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi1hdXRvbGV2ZWwtbWVzc2FnZScpLnJlbW92ZSgpO1xuXHRcdFx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLnBvc3RDYXRlZ29yeUNsZWFudXAoZSk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLndhcm4uY2FsbGJhY2sucG9zdENhdGVnb3J5Q2xlYW51cCA9IChlKSA9PiB7XG5cdFx0Ly8gY2xlYXIgb3ZlcnJpZGRlbiBsYWJlbCBvbiBhcnRpY2xlIHRleHRib3hcblx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5KGUudGFyZ2V0LnJvb3QuYXJ0aWNsZSwgdHJ1ZSk7XG5cdFx0TW9yZWJpdHMucXVpY2tGb3JtLnJlc2V0RWxlbWVudExhYmVsKGUudGFyZ2V0LnJvb3QuYXJ0aWNsZSk7XG5cdFx0Ly8gVHJpZ2dlciBjdXN0b20gbGFiZWwvY2hhbmdlIG9uIG1haW4gY2F0ZWdvcnkgY2hhbmdlXG5cdFx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9zdWJjYXRlZ29yeShlKTtcblx0XHQvLyBVc2Ugc2VsZWN0MiB0byBtYWtlIHRoZSBzZWxlY3QgbWVudSBzZWFyY2hhYmxlXG5cdFx0aWYgKCFUd2lua2xlLmdldFByZWYoJ29sZFNlbGVjdCcpKSB7XG5cdFx0XHQkYm9keVxuXHRcdFx0XHQuZmluZCgnc2VsZWN0W25hbWU9c3ViX2dyb3VwXScpXG5cdFx0XHRcdC5zZWxlY3QyKHtcblx0XHRcdFx0XHR3aWR0aDogJzEwMCUnLFxuXHRcdFx0XHRcdG1hdGNoZXI6IE1vcmViaXRzLnNlbGVjdDIubWF0Y2hlcnMub3B0Z3JvdXBGdWxsLFxuXHRcdFx0XHRcdHRlbXBsYXRlUmVzdWx0OiBNb3JlYml0cy5zZWxlY3QyLmhpZ2hsaWdodFNlYXJjaE1hdGNoZXMsXG5cdFx0XHRcdFx0bGFuZ3VhZ2U6IHtcblx0XHRcdFx0XHRcdHNlYXJjaGluZzogTW9yZWJpdHMuc2VsZWN0Mi5xdWVyeUludGVyY2VwdG9yLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jaGFuZ2UoVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9zdWJjYXRlZ29yeSk7XG5cdFx0XHQkYm9keS5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb24nKS5vbigna2V5ZG93bicsIE1vcmViaXRzLnNlbGVjdDIuYXV0b1N0YXJ0KS50cmlnZ2VyKCdmb2N1cycpO1xuXHRcdFx0bXcudXRpbC5hZGRDU1MoXG5cdFx0XHRcdC8qIEluY3JlYXNlIGhlaWdodDtcblx0XHRcdFx0ICogUmVkdWNlIHBhZGRpbmc7XG5cdFx0XHRcdCAqIEFkanVzdCBmb250IHNpemUuXG5cdFx0XHRcdCAqICovXG5cdFx0XHRcdCcuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItZHJvcGRvd24gLnNlbGVjdDItcmVzdWx0cz4uc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25ze21heC1oZWlnaHQ6MzUwcHh9LnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1yZXN1bHRzX19ncm91cCwuc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbntwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MXB4fS5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1kcm9wZG93biAuc2VsZWN0Mi1yZXN1bHRzLC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0aW9uIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWR7Zm9udC1zaXplOjEzcHh9J1xuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUud2Fybi5jYWxsYmFjay5jaGFuZ2Vfc3ViY2F0ZWdvcnkgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IG1haW5fZ3JvdXAgPSBlLnRhcmdldC5mb3JtLm1haW5fZ3JvdXAudmFsdWU7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGUudGFyZ2V0LmZvcm0uc3ViX2dyb3VwO1xuXHRcdC8vIFRhZ3MgdGhhdCBkb24ndCB0YWtlIGEgbGlua2VkIGFydGljbGUsIGJ1dCBzb21ldGhpbmcgZWxzZSAob2Z0ZW4gYSB1c2VybmFtZSkuXG5cdFx0Ly8gVGhlIHZhbHVlIG9mIGVhY2ggdGFnIGlzIHRoZSBsYWJlbCBuZXh0IHRvIHRoZSBpbnB1dCBmaWVsZFxuXHRcdGNvbnN0IG5vdExpbmtlZEFydGljbGUgPSB7XG5cdFx0XHQndXctYml0ZSc6IHdpbmRvdy53Z1VMUygn6KKr4oCc5ZKs5Yiw4oCd55qE55So5oi377yI5LiN5ZCrVXNlcjrvvIkgJywgJ+iiq+OAjOWSrOWIsOOAjeeahOS9v+eUqOiAhe+8iOS4jeWQq1VzZXI677yJICcpLFxuXHRcdFx0J3V3LWFpdic6IHdpbmRvdy53Z1VMUygn5Y+v6YCJ6L6T5YWl6KKr6K2m5ZGK55qE55So5oi35ZCN77yI5LiN5ZCrVXNlcjrvvIkgJywgJ+WPr+mBuOi8uOWFpeiiq+itpuWRiueahOS9v+eUqOiAheWQjeeose+8iOS4jeWQq1VzZXI677yJICcpLFxuXHRcdH07XG5cdFx0aWYgKFsnc2luZ2xlbm90aWNlJywgJ3NpbmdsZXdhcm4nLCAnc2luZ2xlY29tYmluZWQnLCAna2l0Y2hlbnNpbmsnXS5pbmNsdWRlcyhtYWluX2dyb3VwKSkge1xuXHRcdFx0aWYgKG5vdExpbmtlZEFydGljbGVbdmFsdWVdKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlID09PSBudWxsKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS53YXJuLnByZXZfYXJ0aWNsZSA9IGUudGFyZ2V0LmZvcm0uYXJ0aWNsZS52YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmFydGljbGUubm90QXJ0aWNsZSA9IHRydWU7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uYXJ0aWNsZS52YWx1ZSA9ICcnO1xuXHRcdFx0XHQvLyBjaGFuZ2UgZm9ybSBsYWJlbHMgYWNjb3JkaW5nIHRvIHRoZSB3YXJuaW5nIHNlbGVjdGVkXG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VG9vbHRpcFZpc2liaWxpdHkoZS50YXJnZXQuZm9ybS5hcnRpY2xlLCBmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5vdmVycmlkZUVsZW1lbnRMYWJlbChlLnRhcmdldC5mb3JtLmFydGljbGUsIG5vdExpbmtlZEFydGljbGVbdmFsdWVdKTtcblx0XHRcdH0gZWxzZSBpZiAoZS50YXJnZXQuZm9ybS5hcnRpY2xlLm5vdEFydGljbGUpIHtcblx0XHRcdFx0aWYgKFR3aW5rbGUud2Fybi5wcmV2X2FydGljbGUgIT09IG51bGwpIHtcblx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLmFydGljbGUudmFsdWUgPSBUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlO1xuXHRcdFx0XHRcdFR3aW5rbGUud2Fybi5wcmV2X2FydGljbGUgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uYXJ0aWNsZS5ub3RBcnRpY2xlID0gZmFsc2U7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VG9vbHRpcFZpc2liaWxpdHkoZS50YXJnZXQuZm9ybS5hcnRpY2xlLCB0cnVlKTtcblx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnJlc2V0RWxlbWVudExhYmVsKGUudGFyZ2V0LmZvcm0uYXJ0aWNsZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGFkZCBiaWcgcmVkIG5vdGljZSwgd2FybmluZyB1c2VycyBhYm91dCBob3cgdG8gdXNlIHt7dXctW2NvaS1ddXNlcm5hbWV9fSBhcHByb3ByaWF0ZWx5XG5cdFx0JGJvZHkuZmluZCgnI3R3LXdhcm4tcmVkLW5vdGljZScpLnJlbW92ZSgpO1xuXHR9O1xuXHRUd2lua2xlLndhcm4uY2FsbGJhY2tzID0ge1xuXHRcdGdldFdhcm5pbmdXaWtpdGV4dDogKHRlbXBsYXRlTmFtZSwgYXJ0aWNsZSwgcmVhc29uLCBpc0N1c3RvbSwgbm9TaWduKSA9PiB7XG5cdFx0XHRsZXQgdGV4dCA9ICd7eycuY29uY2F0KCdzdWJzdDonLCB0ZW1wbGF0ZU5hbWUpO1xuXHRcdFx0Ly8gYWRkIGxpbmtlZCBhcnRpY2xlIGZvciB1c2VyIHdhcm5pbmdzXG5cdFx0XHRpZiAoYXJ0aWNsZSkge1xuXHRcdFx0XHR0ZXh0ICs9IGB8MT0ke2FydGljbGV9YDtcblx0XHRcdH1cblx0XHRcdGlmIChyZWFzb24pIHtcblx0XHRcdFx0Ly8gYWRkIGV4dHJhIG1lc3NhZ2Vcblx0XHRcdFx0dGV4dCArPSBgfDI9JHtyZWFzb259YDtcblx0XHRcdH1cblx0XHRcdHRleHQgKz0gJ3xzdWJzdD0nLmNvbmNhdCgnc3Vic3Q6Jyk7XG5cdFx0XHRpZiAoIW5vU2lnbikge1xuXHRcdFx0XHR0ZXh0ICs9ICd8c2lnPX5+Jy5jb25jYXQoJ35+Jyk7XG5cdFx0XHR9XG5cdFx0XHR0ZXh0ICs9ICd9fSc7XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9LFxuXHRcdHNob3dQcmV2aWV3OiAoZm9ybSwgdGVtcGxhdGVuYW1lKSA9PiB7XG5cdFx0XHRjb25zdCBpbnB1dCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0XHQvLyBQcm92aWRlZCBvbiBhdXRvbGV2ZWwsIG5vdCBvdGhlcndpc2Vcblx0XHRcdHRlbXBsYXRlbmFtZSB8fD0gaW5wdXQuc3ViX2dyb3VwO1xuXHRcdFx0Y29uc3QgbGlua2VkYXJ0aWNsZSA9IGlucHV0LmFydGljbGU7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZXRleHQgPSBUd2lua2xlLndhcm4uY2FsbGJhY2tzLmdldFdhcm5pbmdXaWtpdGV4dChcblx0XHRcdFx0dGVtcGxhdGVuYW1lLFxuXHRcdFx0XHRsaW5rZWRhcnRpY2xlLFxuXHRcdFx0XHRpbnB1dC5yZWFzb24sXG5cdFx0XHRcdGlucHV0Lm1haW5fZ3JvdXAgPT09ICdjdXN0b20nXG5cdFx0XHQpO1xuXHRcdFx0Zm9ybS5wcmV2aWV3ZXIuYmVnaW5SZW5kZXIodGVtcGxhdGV0ZXh0LCBgVXNlcl90YWxrOiR7cmVsZXZhbnRVc2VyTmFtZX1gKTsgLy8gRm9yY2Ugd2lraXRleHQvY29ycmVjdCB1c2VybmFtZVxuXHRcdH0sXG5cblx0XHQvLyBKdXN0IGEgcGFzcy10aHJvdWdoIHVubGVzcyB0aGUgYXV0b2xldmVsIG9wdGlvbiB3YXMgc2VsZWN0ZWRcblx0XHRwcmV2aWV3OiAoZm9ybSkgPT4ge1xuXHRcdFx0aWYgKGZvcm0ubWFpbl9ncm91cC52YWx1ZSA9PT0gJ2F1dG9sZXZlbCcpIHtcblx0XHRcdFx0Ly8gQWx3YXlzIGdldCBhIG5ldywgdXBkYXRlZCB0YWxrcGFnZSBmb3IgYXV0b2xldmVsIHByb2Nlc3Npbmdcblx0XHRcdFx0Y29uc3QgdXNlcnRhbGtfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0YFVzZXJfdGFsazoke3JlbGV2YW50VXNlck5hbWV9YCxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOi9veS4iuasoeitpuWRiicsICfovInlhaXkuIrmrKHorablkYonKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VydGFsa19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0Ly8gV2lsbCBmYWlsIHNpbGVudGx5IGlmIHRoZSB0YWxrIHBhZ2UgaXMgYSBjcm9zcy1ucyByZWRpcmVjdCxcblx0XHRcdFx0Ly8gcmVtb3ZhbCBvZiB0aGUgcHJldmlldyBib3ggaGFuZGxlZCB3aGVuIGxvYWRpbmcgdGhlIG1lbnVcblx0XHRcdFx0dXNlcnRhbGtfcGFnZS5sb2FkKChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gcGFnZW9iajsgLy8gVXBkYXRlIHRhbGtwYWdlT2JqXG5cdFx0XHRcdFx0Y29uc3Qgd2lraXRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Ly8gaGlzdG9yeSBub3QgbmVlZGVkIGZvciBhdXRvbGV2ZWxcblx0XHRcdFx0XHRjb25zdCBbbGF0ZXN0XSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZGF0ZVByb2Nlc3Npbmcod2lraXRleHQpO1xuXHRcdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdFx0XHRcdHN1Yl9ncm91cDogZm9ybS5zdWJfZ3JvdXAudmFsdWUsXG5cdFx0XHRcdFx0XHRhcnRpY2xlOiBmb3JtLmFydGljbGUudmFsdWUsXG5cdFx0XHRcdFx0XHRtZXNzYWdlRGF0YTogJChmb3JtLnN1Yl9ncm91cClcblx0XHRcdFx0XHRcdFx0LmZpbmQoYG9wdGlvblt2YWx1ZT1cIiR7JChmb3JtLnN1Yl9ncm91cCkudmFsKCl9XCJdYClcblx0XHRcdFx0XHRcdFx0LmRhdGEoJ21lc3NhZ2VEYXRhJyksXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRjb25zdCBbdGVtcGxhdGVdID0gVHdpbmtsZS53YXJuLmNhbGxiYWNrcy5hdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0KHdpa2l0ZXh0LCBwYXJhbXMsIGxhdGVzdCk7XG5cdFx0XHRcdFx0VHdpbmtsZS53YXJuLmNhbGxiYWNrcy5zaG93UHJldmlldyhmb3JtLCB0ZW1wbGF0ZSk7XG5cdFx0XHRcdFx0Ly8gSWYgdGhlIHRlbXBsYXRlcyBoYXZlIGRpdmVyZ2VkLCBmYWtlIGEgY2hhbmdlIGV2ZW50XG5cdFx0XHRcdFx0Ly8gdG8gcmVsb2FkIHRoZSBtZW51IHdpdGggdGhlIHVwZGF0ZWQgcGFnZW9ialxuXHRcdFx0XHRcdGlmIChmb3JtLnN1Yl9ncm91cC52YWx1ZSAhPT0gdGVtcGxhdGUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdFx0XHRcdFx0ZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgdHJ1ZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRmb3JtLm1haW5fZ3JvdXAuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2tzLnNob3dQcmV2aWV3KGZvcm0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogVXNlZCBpbiB0aGUgbWFpbiBhbmQgYXV0b2xldmVsIGxvb3BzIHRvIGRldGVybWluZSB3aGVuIHRvIHdhcm5cblx0XHQgKiBhYm91dCBleGNlc3NpdmVseSByZWNlbnQsIHN0YWxlLCBvciBpZGVudGljYWwgd2FybmluZ3MuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gd2lraXRleHQgIFRoZSB0ZXh0IG9mIGEgdXNlcidzIHRhbGsgcGFnZSwgZnJvbSBnZXRQYWdlVGV4dCgpXG5cdFx0ICogQHJldHVybnMge09iamVjdFtdfSAtIEFycmF5IG9mIG9iamVjdHM6IGxhdGVzdCBjb250YWlucyBtb3N0IHJlY2VudFxuXHRcdCAqIHdhcm5pbmcgYW5kIGRhdGU7IGhpc3RvcnkgbGlzdHMgYWxsIHByaW9yIHdhcm5pbmdzXG5cdFx0ICovXG5cdFx0ZGF0ZVByb2Nlc3Npbmc6ICh3aWtpdGV4dCkgPT4ge1xuXHRcdFx0Y29uc3QgaGlzdG9yeV9yZSA9XG5cdFx0XHRcdC88IS0tXFxzP1RlbXBsYXRlOihbdVVddy0uKj8pXFxzPy0tPi4qPyhcXGR7NH0p5bm0KFxcZHsxLDJ9KeaciChcXGR7MSwyfSnml6UgXFwoW+aXpeS4gOS6jOS4ieWbm+S6lOWFrV1cXCkgKFxcZHsxLDJ9KTooXFxkezEsMn0pIFxcKENTVFxcKS9nO1xuXHRcdFx0Y29uc3QgaGlzdG9yeSA9IHt9O1xuXHRcdFx0Y29uc3QgbGF0ZXN0ID0ge1xuXHRcdFx0XHRkYXRlOiBuZXcgTW9yZWJpdHMuZGF0ZSgwKSxcblx0XHRcdFx0dHlwZTogJycsXG5cdFx0XHR9O1xuXHRcdFx0bGV0IGN1cnJlbnQ7XG5cdFx0XHR3aGlsZSAoKGN1cnJlbnQgPSBoaXN0b3J5X3JlLmV4ZWMod2lraXRleHQpKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRjb25zdCBbLCB0ZW1wbGF0ZV0gPSBjdXJyZW50O1xuXHRcdFx0XHRjb25zdCBjdXJyZW50X2RhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZShcblx0XHRcdFx0XHRgJHtjdXJyZW50WzJdfS0ke2N1cnJlbnRbM119LSR7Y3VycmVudFs0XX0gJHtjdXJyZW50WzVdfToke2N1cnJlbnRbNl19IChDU1QpYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoISh0ZW1wbGF0ZSBpbiBoaXN0b3J5KSB8fCBoaXN0b3J5W3RlbXBsYXRlXS5pc0JlZm9yZShjdXJyZW50X2RhdGUpKSB7XG5cdFx0XHRcdFx0aGlzdG9yeVt0ZW1wbGF0ZV0gPSBjdXJyZW50X2RhdGU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFsYXRlc3QuZGF0ZS5pc0FmdGVyKGN1cnJlbnRfZGF0ZSkpIHtcblx0XHRcdFx0XHRsYXRlc3QuZGF0ZSA9IGN1cnJlbnRfZGF0ZTtcblx0XHRcdFx0XHRsYXRlc3QudHlwZSA9IHRlbXBsYXRlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW2xhdGVzdCwgaGlzdG9yeV07XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBNYWluIGxvb3AgZm9yIGRlY2lkaW5nIHdoYXQgdGhlIGxldmVsIHNob3VsZCBpbmNyZW1lbnQgdG8uIE1vc3Qgb2Zcblx0XHQgKiB0aGlzIGlzIHJlYWxseSBqdXN0IGVycm9yIGNhdGNoaW5nIGFuZCB1cGRhdGluZyB0aGUgc3Vic2VxdWVudCBkYXRhLlxuXHRcdCAqIE1heSBwcm9kdWNlIHVwIHRvIHR3byBub3RpY2VzIGluIGEgdHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlcyBkaXZcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB3aWtpdGV4dCAgVGhlIHRleHQgb2YgYSB1c2VyJ3MgdGFsayBwYWdlLCBmcm9tIGdldFBhZ2VUZXh0KCkgKHJlcXVpcmVkKVxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgIFBhcmFtcyBvYmplY3Q6IHN1Yl9ncm91cCBpcyB0aGUgdGVtcGxhdGUgKHJlcXVpcmVkKTtcblx0XHQgKiBhcnRpY2xlIGlzIHRoZSB1c2VyLXByb3ZpZGVkIGFydGljbGUgKGZvcm0uYXJ0aWNsZSkgdXNlZCB0byBsaW5rIEFSViBvbiByZWNlbnQgbGV2ZWwyIHdhcm5pbmdzO1xuXHRcdCAqIG1lc3NhZ2VEYXRhIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIGdldHRpbmcgdGhlIGZ1bGwgdGVtcGxhdGUsIGFzIGl0J3Ncblx0XHQgKiB1c2VkIHRvIGVuc3VyZSBhIHZhbGlkIHRlbXBsYXRlIG9mIHRoYXQgbGV2ZWwgZXhpc3RzXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGxhdGVzdCAgRmlyc3QgZWxlbWVudCBvZiB0aGUgYXJyYXkgcmV0dXJuZWQgZnJvbVxuXHRcdCAqIGRhdGVQcm9jZXNzaW5nLiBQcm92aWRlZCBoZXJlIHJhdGhlciB0aGFuIHByb2Nlc3NlZCB3aXRoaW4gdG8gYXZvaWRcblx0XHQgKiByZXBlYXRlZCBjYWxsIHRvIGRhdGVQcm9jZXNzaW5nXG5cdFx0ICogQHBhcmFtIHsoRGF0ZXxNb3JlYml0cy5kYXRlKX0gZGF0ZSAgRGF0ZSBmcm9tIHdoaWNoIHN0YWxlbmVzcyBpcyBkZXRlcm1pbmVkXG5cdFx0ICogQHBhcmFtIHtNb3JlYml0cy5zdGF0dXN9IHN0YXRlbGVtICBTdGF0dXMgZWxlbWVudCwgb25seSB1c2VkIGZvciBoYW5kbGluZyBlcnJvciBpbiBmaW5hbCBleGVjdXRpb25cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtBcnJheX0gLSBBcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBmdWxsIHRlbXBsYXRlIGFuZCBqdXN0IHRoZSB3YXJuaW5nIGxldmVsXG5cdFx0ICovXG5cdFx0YXV0b2xldmVsUGFyc2VXaWtpdGV4dDogKHdpa2l0ZXh0LCBwYXJhbXMsIGxhdGVzdCwgZGF0ZSwgc3RhdGVsZW0pID0+IHtcblx0XHRcdGxldCBsZXZlbDsgLy8gdW5kZWZpbmVkIHJhdGhlciB0aGFuICcnIG1lYW5zIHRoZSBpc05hTiBiZWxvdyB3aWxsIHJldHVybiB0cnVlXG5cdFx0XHRpZiAoL1xcZD8kLy50ZXN0KGxhdGVzdC50eXBlKSkge1xuXHRcdFx0XHQvLyBsZXZlbDEtMlxuXHRcdFx0XHRsZXZlbCA9IE51bWJlci5wYXJzZUludChsYXRlc3QudHlwZS5yZXBsYWNlKC8uKihcXGQpPyQvLCAnJDEnKSwgMTApO1xuXHRcdFx0fSBlbHNlIGlmIChsYXRlc3QudHlwZSkge1xuXHRcdFx0XHRsZXZlbCA9IDE7IC8vIHNpbmdsZW5vdGljZSBvciBub3QgZm91bmRcblx0XHRcdH1cblx0XHRcdGNvbnN0ICRhdXRvbGV2ZWxNZXNzYWdlID0gJCgnPGRpdj4nKS5hdHRyKCdpZCcsICd0d2lua2xlLXdhcm4tYXV0b2xldmVsLW1lc3NhZ2UnKTtcblx0XHRcdGlmIChOdW1iZXIuaXNOYU4obGV2ZWwpKSB7XG5cdFx0XHRcdC8vIE5vIHByaW9yIHdhcm5pbmdzIGZvdW5kLCB0aGlzIGlzIHRoZSBmaXJzdFxuXHRcdFx0XHRsZXZlbCA9IDE7XG5cdFx0XHR9IGVsc2UgaWYgKGxldmVsID4gMiB8fCBsZXZlbCA8IDEpIHtcblx0XHRcdFx0Ly8gU2hvdWxkbid0IGhhcHBlblxuXHRcdFx0XHRjb25zdCBtZXNzYWdlID0gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfml6Dms5Xop6PmnpDkuIrmrKHnmoTorablkYrlsYLnuqfvvIzor7fmiYvliqjpgInmi6nkuIDkuKrorablkYrlsYLnuqfjgIInLFxuXHRcdFx0XHRcdCfnhKHms5Xop6PmnpDkuIrmrKHnmoTorablkYrlsaTntJrvvIzoq4vmiYvli5Xpgbjmk4fkuIDlgIvorablkYrlsaTntJrjgIInXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChzdGF0ZWxlbSkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKG1lc3NhZ2UpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KG1lc3NhZ2UsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGV3YXJuJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRlIHx8PSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRjb25zdCBhdXRvVGltZW91dCA9IG5ldyBNb3JlYml0cy5kYXRlKGxhdGVzdC5kYXRlLmdldFRpbWUoKSkuYWRkKFxuXHRcdFx0XHRcdE51bWJlci5wYXJzZUludChUd2lua2xlLmdldFByZWYoJ2F1dG9sZXZlbFN0YWxlRGF5cycpLCAxMCksXG5cdFx0XHRcdFx0J2RheSdcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKGF1dG9UaW1lb3V0LmlzQWZ0ZXIoZGF0ZSkpIHtcblx0XHRcdFx0XHRpZiAobGV2ZWwgPT09IDIpIHtcblx0XHRcdFx0XHRcdGxldmVsID0gMjtcblx0XHRcdFx0XHRcdC8vIEJhc2ljYWxseSBpbmRpY2F0ZXMgd2hldGhlciB3ZSdyZSBpbiB0aGUgZmluYWwgTWFpbiBldmFsdWF0aW9uIG9yIG5vdCxcblx0XHRcdFx0XHRcdC8vIGFuZCB0aHVzIHdoZXRoZXIgd2UgY2FuIGNvbnRpbnVlIG9yIG5lZWQgdG8gZGlzcGxheSB0aGUgd2FybmluZyBhbmQgbGlua1xuXHRcdFx0XHRcdFx0aWYgKCFzdGF0ZWxlbSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCAkbGluayA9ICQoJzxhPicpXG5cdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCAnIycpXG5cdFx0XHRcdFx0XHRcdFx0LnRleHQod2luZG93LndnVUxTKCfljZXlh7vmraTlpITmiZPlvIDlkYrnirblt6XlhbcnLCAn6bue5pOK5q2k6JmV5omT6ZaL5ZGK54uA5bel5YW3JykpXG5cdFx0XHRcdFx0XHRcdFx0LmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpXG5cdFx0XHRcdFx0XHRcdFx0Lm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUud2Fybi5kaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrKHJlbGV2YW50VXNlck5hbWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0JGJvZHkuZmluZCgnaW5wdXRbbmFtZT1wYWdlXScpLnZhbChwYXJhbXMuYXJ0aWNsZSk7IC8vIFRhcmdldCBwYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHQkYm9keS5maW5kKCdpbnB1dFt2YWx1ZT1maW5hbF0nKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7IC8vIFZhbmRhbGlzbSBhZnRlciBmaW5hbFxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXR1c05vZGUgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0LmNzcygnY29sb3InLCAnI2YwMCcpXG5cdFx0XHRcdFx0XHRcdFx0LnRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRyZWxldmFudFVzZXJOYW1lICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnIDlkI7mlLbliLDkuobkuIDkuKrlsYLnuqcy6K2m5ZGK77yIJywgJ+acgOW+jOaUtuWIsOS6huS4gOWAi+WxpOe0mjLorablkYrvvIgnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxhdGVzdC50eXBlICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCfvvInvvIzmiYDku6XlsIblhbbmiqXlkYrnu5nnrqHnkIbkurrlkZjkvJrmr5TovoPlpb3vvJsnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCfvvInvvIzmiYDku6XlsIflhbbloLHlkYrntabnrqHnkIbkurrlk6HmnIPmr5TovIPlpb3vvJsnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRzdGF0dXNOb2RlLmFwcGVuZCgkbGlua1swXSk7XG5cdFx0XHRcdFx0XHRcdCRhdXRvbGV2ZWxNZXNzYWdlLmFwcGVuZChzdGF0dXNOb2RlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gQXV0b21hdGljYWxseSBpbmNyZWFzZSBzZXZlcml0eVxuXHRcdFx0XHRcdFx0bGV2ZWwgKz0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gUmVzZXQgd2FybmluZyBsZXZlbCBpZiBtb3N0LXJlY2VudCB3YXJuaW5nIGlzIHRvbyBvbGRcblx0XHRcdFx0XHRsZXZlbCA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdCRhdXRvbGV2ZWxNZXNzYWdlLnByZXBlbmQoXG5cdFx0XHRcdCQoXG5cdFx0XHRcdFx0YDxkaXY+JHt3aW5kb3cud2dVTFMoJ+WwhuWPkemAgScsICflsIfnmbzpgIEnKX08c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPiR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+Wxgue6pycsXG5cdFx0XHRcdFx0XHQn5bGk57SaJ1xuXHRcdFx0XHRcdCl9JHtsZXZlbH08L3NwYW4+6K2m5ZGK5qih5p2/44CCPC9kaXY+YFxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdFx0Ly8gUGxhY2UgYWZ0ZXIgdGhlIHN0YWxlIGFuZCBvdGhlci11c2VyLXJldmVydGVkICh0ZXh0LW9ubHkpIG1lc3NhZ2VzXG5cdFx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlJykucmVtb3ZlKCk7IC8vIGNsZWFuIHNsYXRlXG5cdFx0XHQkYXV0b2xldmVsTWVzc2FnZS5pbnNlcnRBZnRlcigkYm9keS5maW5kKCcjdHdpbmtsZS13YXJuLXdhcm5pbmctbWVzc2FnZXMnKSk7XG5cdFx0XHRsZXQgdGVtcGxhdGUgPSBwYXJhbXMuc3ViX2dyb3VwLnJlcGxhY2UoLyguKilcXGQkLywgJyQxJyk7XG5cdFx0XHQvLyBWYWxpZGF0ZSB3YXJuaW5nIGxldmVsLCBmYWxsaW5nIGJhY2sgdG8gdGhlIHV3LWdlbmVyaWMgc2VyaWVzLlxuXHRcdFx0Ly8gT25seSBhIGZldyBpdGVtcyBhcmUgbWlzc2luZyBhIGxldmVsLCBhbmQgaW4gYWxsIGJ1dCBhIGhhbmRmdWxcblx0XHRcdC8vIG9mIGNhc2VzLCB0aGUgdXctZ2VuZXJpYyBzZXJpZXMgaXMgZXhwbGljaXRseSB1c2VkIGVsc2V3aGVyZS5cblx0XHRcdGlmIChwYXJhbXMubWVzc2FnZURhdGEgJiYgIXBhcmFtcy5tZXNzYWdlRGF0YVtgbGV2ZWwke2xldmVsfWBdKSB7XG5cdFx0XHRcdHRlbXBsYXRlID0gJ3V3LWdlbmVyaWMnO1xuXHRcdFx0fVxuXHRcdFx0dGVtcGxhdGUgKz0gbGV2ZWw7XG5cdFx0XHRyZXR1cm4gW3RlbXBsYXRlLCBsZXZlbF07XG5cdFx0fSxcblx0XHRtYWluOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHN0YXRlbGVtID0gcGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0bGV0IHttZXNzYWdlRGF0YX0gPSBwYXJhbXM7XG5cdFx0XHRjb25zdCB3YXJuaW5nSGlzdG9yeSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZGF0ZVByb2Nlc3NpbmcodGV4dCk7XG5cdFx0XHRjb25zdCBbbGF0ZXN0LCBoaXN0b3J5XSA9IHdhcm5pbmdIaXN0b3J5O1xuXHRcdFx0Y29uc3Qgbm93ID0gbmV3IE1vcmViaXRzLmRhdGUocGFnZW9iai5nZXRMb2FkVGltZSgpKTtcblx0XHRcdFR3aW5rbGUud2Fybi50YWxrcGFnZU9iaiA9IHBhZ2VvYmo7IC8vIFVwZGF0ZSB0YWxrcGFnZU9iaiwganVzdCBpbiBjYXNlXG5cdFx0XHRpZiAocGFyYW1zLm1haW5fZ3JvdXAgPT09ICdhdXRvbGV2ZWwnKSB7XG5cdFx0XHRcdC8vIFt0ZW1wbGF0ZSwgbGV2ZWxdXG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlQW5kTGV2ZWwgPSBUd2lua2xlLndhcm4uY2FsbGJhY2tzLmF1dG9sZXZlbFBhcnNlV2lraXRleHQoXG5cdFx0XHRcdFx0dGV4dCxcblx0XHRcdFx0XHRwYXJhbXMsXG5cdFx0XHRcdFx0bGF0ZXN0LFxuXHRcdFx0XHRcdG5vdyxcblx0XHRcdFx0XHRzdGF0ZWxlbVxuXHRcdFx0XHQpO1xuXHRcdFx0XHQvLyBPbmx5IGlmIHRoZXJlJ3MgYSBjaGFuZ2UgZnJvbSB0aGUgcHJpb3IgZGlzcGxheS9sb2FkXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRwYXJhbXMuc3ViX2dyb3VwICE9PSB0ZW1wbGF0ZUFuZExldmVsWzBdICYmXG5cdFx0XHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhuWPkemAgee7meeUqOaIt3t7JywgJ+Wwh+eZvOmAgee1puS9v+eUqOiAhXt7JykgK1xuXHRcdFx0XHRcdFx0XHR0ZW1wbGF0ZUFuZExldmVsWzBdICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCd9feaooeadv++8jOWlveWQl++8nycsICd9feaooeadv++8jOWlveWXju+8nycpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iCcsICfkvb/nlKjogIXlj5bmtognKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIFVwZGF0ZSBwYXJhbXMgbm93IHRoYXQgd2UndmUgc2VsZWN0ZWQgYSB3YXJuaW5nXG5cdFx0XHRcdFtwYXJhbXMuc3ViX2dyb3VwXSA9IHRlbXBsYXRlQW5kTGV2ZWw7XG5cdFx0XHRcdG1lc3NhZ2VEYXRhID0gcGFyYW1zLm1lc3NhZ2VEYXRhW2BsZXZlbCR7dGVtcGxhdGVBbmRMZXZlbFsxXX1gXTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdHBhcmFtcy5zdWJfZ3JvdXAgaW4gaGlzdG9yeSAmJlxuXHRcdFx0XHRuZXcgTW9yZWJpdHMuZGF0ZShoaXN0b3J5W3BhcmFtcy5zdWJfZ3JvdXBdKS5hZGQoMSwgJ2RheScpLmlzQWZ0ZXIobm93KSAmJlxuXHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+i/kTI05bCP5pe25YaF5LiA5Liq5ZCM5qC355qEICcsICfov5EyNOWwj+aZguWFp+S4gOWAi+WQjOaoo+eahCAnKSArXG5cdFx0XHRcdFx0XHRwYXJhbXMuc3ViX2dyb3VwICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOaooeadv+W3suiiq+WPkeWHuuOAglxcbuaYr+WQpue7p+e7re+8nycsICcg5qih5p2/5bey6KKr55m85Ye644CCXFxu5piv5ZCm57m857qM77yfJylcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raIJywgJ+S9v+eUqOiAheWPlua2iCcpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGF0ZXN0LmRhdGUuYWRkKDEsICdtaW51dGUnKTsgLy8gYWZ0ZXIgbG9uZyBkZWJhdGUsIG9uZSBtaW51dGUgaXMgbWF4XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGxhdGVzdC5kYXRlLmlzQWZ0ZXIobm93KSAmJlxuXHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+i/kTHliIbpkp/lhoUgJywgJ+i/kTHliIbpkJjlhacgJykgK1xuXHRcdFx0XHRcdFx0bGF0ZXN0LnR5cGUgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5qih5p2/5bey6KKr5Y+R5Ye644CCXFxu5piv5ZCm57un57ut77yfJywgJyDmqKHmnb/lt7Looqvnmbzlh7rjgIJcXG7mmK/lkKbnubznuozvvJ8nKVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfnlKjmiLflj5bmtognLCAn5L2/55So6ICF5Y+W5raIJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBidWlsZCB0aGUgZWRpdCBzdW1tYXJ5XG5cdFx0XHQvLyBGdW5jdGlvbiB0byBoYW5kbGUgZ2VuZXJhdGlvbiBvZiBzdW1tYXJ5IHByZWZpeCBmb3IgY3VzdG9tIHRlbXBsYXRlc1xuXHRcdFx0Y29uc3QgY3VzdG9tUHJvY2VzcyA9ICh0ZW1wbGF0ZSkgPT4ge1xuXHRcdFx0XHRbdGVtcGxhdGVdID0gdGVtcGxhdGUuc3BsaXQoJ3wnKTtcblx0XHRcdFx0bGV0IHByZWZpeDtcblx0XHRcdFx0c3dpdGNoICh0ZW1wbGF0ZS5zbGljZSgtMSkpIHtcblx0XHRcdFx0XHRjYXNlICcxJzpcblx0XHRcdFx0XHRcdHByZWZpeCA9ICfms6jmhI8nO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnMic6XG5cdFx0XHRcdFx0XHRwcmVmaXggPSAn6K2m5ZGKJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8vIGZhbGxzIHRocm91Z2hcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0cHJlZml4ID0gJ+aPkOmGkic7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYCR7cHJlZml4fe+8miR7TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKG1lc3NhZ2VEYXRhLmxhYmVsKX1gO1xuXHRcdFx0fTtcblx0XHRcdGxldCBzdW1tYXJ5O1xuXHRcdFx0aWYgKHBhcmFtcy5tYWluX2dyb3VwID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRzdW1tYXJ5ID0gY3VzdG9tUHJvY2VzcyhwYXJhbXMuc3ViX2dyb3VwKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIE5vcm1hbGl6ZSBraXRjaGVuc2luayB0byB0aGUgMS0yIHN0eWxlXG5cdFx0XHRcdGlmIChwYXJhbXMubWFpbl9ncm91cCA9PT0gJ2tpdGNoZW5zaW5rJyAmJiAhL15EKyQvLnRlc3QocGFyYW1zLnN1Yl9ncm91cCkpIHtcblx0XHRcdFx0XHRsZXQgc3ViID0gcGFyYW1zLnN1Yl9ncm91cC5zbGljZSgtMSk7XG5cdFx0XHRcdFx0aWYgKHN1YiA9PT0gJ20nKSB7XG5cdFx0XHRcdFx0XHRzdWIgPSBwYXJhbXMuc3ViX2dyb3VwLnNsaWNlKC0zKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gRG9uJ3Qgb3ZlcndyaXRlIHV3LTNyciwgdGVjaG5pY2FsbHkgdW5uZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoL1xcZC8udGVzdChzdWIpKSB7XG5cdFx0XHRcdFx0XHRwYXJhbXMubWFpbl9ncm91cCA9IGBsZXZlbCR7c3VifWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIHNpbmdsZXQgfHwgbGV2ZWwxLTIsIG5vIG5lZWQgdG8gL15cXEQrJC8udGVzdChwYXJhbXMubWFpbl9ncm91cClcblx0XHRcdFx0c3VtbWFyeSA9XG5cdFx0XHRcdFx0bWVzc2FnZURhdGEuc3VtbWFyeSB8fCAobWVzc2FnZURhdGFbcGFyYW1zLm1haW5fZ3JvdXBdICYmIG1lc3NhZ2VEYXRhW3BhcmFtcy5tYWluX2dyb3VwXS5zdW1tYXJ5KTtcblx0XHRcdFx0Ly8gTm90IGluIFR3aW5rbGUud2Fybi5tZXNzYWdlcywgYXNzdW1lIGN1c3RvbSB0ZW1wbGF0ZVxuXHRcdFx0XHRzdW1tYXJ5IHx8PSBjdXN0b21Qcm9jZXNzKHBhcmFtcy5zdWJfZ3JvdXApO1xuXHRcdFx0XHRpZiAobWVzc2FnZURhdGEuc3VwcHJlc3NBcnRpY2xlSW5TdW1tYXJ5ICE9PSB0cnVlICYmIHBhcmFtcy5hcnRpY2xlKSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5zdWJfZ3JvdXAgPT09ICd1dy1haXYnKSB7XG5cdFx0XHRcdFx0XHQvLyB0aGVzZSB0ZW1wbGF0ZXMgcmVxdWlyZSBhIHVzZXJuYW1lXG5cdFx0XHRcdFx0XHRzdW1tYXJ5ICs9IGDvvIgke3dpbmRvdy53Z1VMUygn5a+55LqOJywgJ+WwjeaWvCcpfVtbVXNlcjoke3BhcmFtcy5hcnRpY2xlfV1d77yJYDtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5zdWJfZ3JvdXAgPT09ICd1dy1iaXRlJykge1xuXHRcdFx0XHRcdFx0Ly8gdGhpcyB0ZW1wbGF0ZSByZXF1aXJlcyBhIHVzZXJuYW1lXG5cdFx0XHRcdFx0XHRzdW1tYXJ5ICs9IGDvvIwke3dpbmRvdy53Z1VMUygn5LqOJywgJ+aWvCcpfVtbVXNlciB0YWxrOiR7cGFyYW1zLmFydGljbGV9XV1gO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5ICs9IGAke3dpbmRvdy53Z1VMUygn77yM5LqOW1snLCAn77yM5pa8W1snKSArIHBhcmFtcy5hcnRpY2xlfV1dYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hXYXJuaW5ncycpKTtcblx0XHRcdC8vIEdldCBhY3R1YWwgd2FybmluZyB0ZXh0XG5cdFx0XHRjb25zdCB3YXJuaW5nVGV4dCA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZ2V0V2FybmluZ1dpa2l0ZXh0KFxuXHRcdFx0XHRwYXJhbXMuc3ViX2dyb3VwLFxuXHRcdFx0XHRwYXJhbXMuYXJ0aWNsZSxcblx0XHRcdFx0cGFyYW1zLnJlYXNvbixcblx0XHRcdFx0cGFyYW1zLm1haW5fZ3JvdXAgPT09ICdjdXN0b20nXG5cdFx0XHQpO1xuXHRcdFx0bGV0IHNlY3Rpb25FeGlzdHMgPSBmYWxzZTtcblx0XHRcdGxldCBzZWN0aW9uTnVtYmVyID0gMDtcblx0XHRcdC8vIE9ubHkgY2hlY2sgc2VjdGlvbnMgaWYgdGhlcmUgYXJlIHNlY3Rpb25zIG9yIHRoZXJlJ3MgYSBjaGFuY2Ugd2Ugd29uJ3QgY3JlYXRlIG91ciBvd25cblx0XHRcdGlmICghbWVzc2FnZURhdGEuaGVhZGluZyAmJiB0ZXh0Lmxlbmd0aCkge1xuXHRcdFx0XHQvLyBHZXQgYWxsIHNlY3Rpb25zXG5cdFx0XHRcdGNvbnN0IHNlY3Rpb25zID0gdGV4dC5tYXRjaCgvXig9PSopLitcXDEvZ20pO1xuXHRcdFx0XHRpZiAoc2VjdGlvbnMgJiYgc2VjdGlvbnMubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRcdFx0Ly8gRmluZCB0aGUgaW5kZXggb2YgdGhlIHNlY3Rpb24gaGVhZGVyIGluIHF1ZXN0aW9uXG5cdFx0XHRcdFx0Y29uc3QgZGF0ZUhlYWRlclJlZ2V4ID0gbm93Lm1vbnRoSGVhZGVyUmVnZXgoKTtcblx0XHRcdFx0XHRzZWN0aW9uTnVtYmVyID0gMDtcblx0XHRcdFx0XHQvLyBGaW5kIHRoaXMgbW9udGgncyBzZWN0aW9uIGFtb25nIEwyIHNlY3Rpb25zLCBwcmVmZXJyaW5nIHRoZSBib3R0b20tbW9zdFxuXHRcdFx0XHRcdHNlY3Rpb25FeGlzdHMgPSBzZWN0aW9ucy5yZXZlcnNlKCkuc29tZSgoc2VjLCBpZHgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdC9eKD09KVtePV0uK1xcMS9tLnRlc3Qoc2VjKSAmJlxuXHRcdFx0XHRcdFx0XHRkYXRlSGVhZGVyUmVnZXgudGVzdChzZWMpICYmXG5cdFx0XHRcdFx0XHRcdHR5cGVvZiAoc2VjdGlvbk51bWJlciA9IHNlY3Rpb25zLmxlbmd0aCAtIDEgLSBpZHgpID09PSAnbnVtYmVyJ1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHNlY3Rpb25FeGlzdHMpIHtcblx0XHRcdFx0Ly8gYXBwZW5kIHRvIGV4aXN0aW5nIHNlY3Rpb25cblx0XHRcdFx0cGFnZW9iai5zZXRQYWdlU2VjdGlvbihzZWN0aW9uTnVtYmVyICsgMSk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0QXBwZW5kVGV4dChgXFxuXFxuJHt3YXJuaW5nVGV4dH1gKTtcblx0XHRcdFx0cGFnZW9iai5hcHBlbmQoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChtZXNzYWdlRGF0YS5oZWFkaW5nKSB7XG5cdFx0XHRcdFx0Ly8gY3JlYXRlIG5ldyBzZWN0aW9uXG5cdFx0XHRcdFx0cGFnZW9iai5zZXROZXdTZWN0aW9uVGl0bGUobWVzc2FnZURhdGEuaGVhZGluZyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw5b2T5pyI55qE5LqM57qn5qCH6aKY77yM5bCG5Yib5bu65paw55qEJywgJ+acquaJvuWIsOeVtuaciOeahOS6jOe0muaomemhjO+8jOWwh+W7uueri+aWsOeahCcpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRwYWdlb2JqLnNldE5ld1NlY3Rpb25UaXRsZShub3cubW9udGhIZWFkZXIoMCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VvYmouc2V0TmV3U2VjdGlvblRleHQod2FybmluZ1RleHQpO1xuXHRcdFx0XHRwYWdlb2JqLm5ld1NlY3Rpb24oKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLndhcm4uY2FsbGJhY2suZXZhbHVhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHVzZXJUYWxrUGFnZSA9IGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfWA7XG5cdFx0Ly8gcmVhc29uLCBtYWluX2dyb3VwLCBzdWJfZ3JvdXAsIGFydGljbGVcblx0XHRjb25zdCBwYXJhbXMgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGUudGFyZ2V0KTtcblx0XHRpZiAocGFyYW1zLmFydGljbGUpIHtcblx0XHRcdGlmICgvaHR0cHM/OlxcL1xcLy8udGVzdChwYXJhbXMuYXJ0aWNsZSkpIHtcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfigJzpobXpnaLpk77mjqXigJ3kuI3og73kvb/nlKjnvZHlnYDjgIInLCAn44CM6aCB6Z2i6YCj57WQ44CN5LiN6IO95L2/55So57ay5Z2A44CCJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAnd2FybicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBhcnRpY2xlID0gbmV3IG13LlRpdGxlKHBhcmFtcy5hcnRpY2xlKTtcblx0XHRcdFx0cGFyYW1zLmFydGljbGUgPSBhcnRpY2xlLmdldFByZWZpeGVkVGV4dCgpO1xuXHRcdFx0XHRpZiAoYXJ0aWNsZS5nZXRGcmFnbWVudCgpKSB7XG5cdFx0XHRcdFx0cGFyYW1zLmFydGljbGUgKz0gYCMke2FydGljbGUuZ2V0RnJhZ21lbnQoKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0YWxlcnQoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+KAnOmhtemdoumTvuaOpeKAneS4jeWQiOazle+8jOS7heiDvei+k+WFpeS4gOS4qumhtemdouWQjeensO+8jOWLv+S9v+eUqOe9keWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZm44CCJyxcblx0XHRcdFx0XHRcdCfjgIzpoIHpnaLpgKPntZDjgI3kuI3lkIjms5XvvIzlg4Xog73ovLjlhaXkuIDlgIvpoIHpnaLlkI3nqLHvvIzli7/kvb/nlKjntrLlnYDjgIFbWyBdXe+8jOWPr+S9v+eUqFNwZWNpYWw6RGlmZuOAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gVGhlIGF1dG9sZXZlbCBvcHRpb24gd2lsbCBhbHJlYWR5IGtub3cgYnkgbm93IGlmIGEgdXNlciB0YWxrIHBhZ2Vcblx0XHQvLyBpcyBhIGNyb3NzLW5hbWVzcGFjZSByZWRpcmVjdCAodmlhICEhVHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqKSwgc29cblx0XHQvLyB0ZWNobmljYWxseSB3ZSBjb3VsZCBhbGVydCBhbiBlcnJvciBoZXJlLCBidXQgdGhlIHVzZXIgd2lsbCBoYXZlXG5cdFx0Ly8gYWxyZWFkeSBpZ25vcmVkIHRoZSBib2xkIHJlZCBlcnJvciBhYm92ZS4gTW9yZW92ZXIsIHRoZXkgcHJvYmFibHlcblx0XHQvLyAqZG9uJ3QqIHdhbnQgdG8gYWN0dWFsbHkgaXNzdWUgYSB3YXJuaW5nLCBzbyB0aGUgZXJyb3IgaGFuZGxpbmdcblx0XHQvLyBhZnRlciB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgaXMgcHJvYmFibHkgcHJlZmVyYWJsZVxuXHRcdC8vIEZpbmQgdGhlIHNlbGVjdGVkIDxvcHRpb24+IGVsZW1lbnQgc28gd2UgY2FuIGZldGNoIHRoZSBkYXRhIHN0cnVjdHVyZVxuXHRcdGNvbnN0ICRzZWxlY3RlZEVsID0gJChlLnRhcmdldC5zdWJfZ3JvdXApLmZpbmQoYG9wdGlvblt2YWx1ZT1cIiR7JChlLnRhcmdldC5zdWJfZ3JvdXApLnZhbCgpfVwiXWApO1xuXHRcdHBhcmFtcy5tZXNzYWdlRGF0YSA9ICRzZWxlY3RlZEVsLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0aWYgKHBhcmFtcy5tZXNzYWdlRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+mAieaLqeitpuWRiuaooeadv+OAgicsICfoq4vpgbjmk4forablkYrmqKHmnb/jgIInKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3dhcm4nLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZS50YXJnZXQpO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gdXNlclRhbGtQYWdlO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn6K2m5ZGK5a6M5oiQ77yM5bCG5Zyo5Yeg56eS5ZCO5Yi35pawJywgJ+itpuWRiuWujOaIkO+8jOWwh+WcqOW5vuenkuW+jOmHjeaWsOaVtOeQhicpO1xuXHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZSh1c2VyVGFsa1BhZ2UsIHdpbmRvdy53Z1VMUygn55So5oi36K6o6K666aG15L+u5pS5JywgJ+S9v+eUqOiAheiojuirlumggeS/ruaUuScpKTtcblx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRxaXV3ZW5fcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLndhcm4uY2FsbGJhY2tzLm1haW4pO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLndhcm4sICd3YXJuJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiaW1wb3J0IHtpbml0TXdBcGl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbmNvbnN0IGFwaTogbXcuQXBpID0gaW5pdE13QXBpKCdtb3JlYml0cy5qczsgVHdpbmtsZS8xLjEnKTtcblxuZXhwb3J0IHthcGl9O1xuIiwgIi8qIGVzbGludC1kaXNhYmxlIG5vLWpxdWVyeS9uby1tYXAtdXRpbCAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7YXBpfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge2dlbmVyYXRlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWJsb2NrLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWJsb2NrKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdGxldCByZWxldmFudFVzZXJOYW1lO1xuXHRsZXQgYmxvY2tlZFVzZXJOYW1lO1xuXHRjb25zdCBtZW51Rm9ybWF0dGVkTmFtZXNwYWNlcyA9IHtcblx0XHQuLi5tdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKSxcblx0fTtcblx0bWVudUZvcm1hdHRlZE5hbWVzcGFjZXNbMF0gPSB3aW5kb3cud2dVTFMoJ++8iOadoeebru+8iScsICfvvIjmop3nm67vvIknKTtcblx0Y29uc3QgYmxvY2tBY3Rpb25UZXh0ID0ge1xuXHRcdGJsb2NrOiB3aW5kb3cud2dVTFMoJ+WwgeemgScsICflsIHpjpYnKSxcblx0XHRyZWJsb2NrOiB3aW5kb3cud2dVTFMoJ+mHjeaWsOWwgeemgScsICfph43mlrDlsIHpjpYnKSxcblx0XHR1bmJsb2NrOiB3aW5kb3cud2dVTFMoJ+ino+mZpOWwgeemgScsICfop6PpmaTlsIHpjpYnKSxcblx0fTtcblx0LyoqXG5cdCAqIHR3aW5rbGVibG9jay5qczogQmxvY2sgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIkJsb2NrXCIpXG5cdCAqIEFjdGl2ZSBvbjogQW55IHBhZ2Ugd2l0aCByZWxldmFudCB1c2VyIG5hbWUgKHVzZXJzcGFjZSwgY29udHJpYnMsIGV0Yy4pXG5cdCAqL1xuXHRUd2lua2xlLmJsb2NrID0gKCkgPT4ge1xuXHRcdHJlbGV2YW50VXNlck5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHQvLyBzaG91bGQgc2hvdyBvbiBDb250cmlidXRpb25zIG9yIEJsb2NrIHBhZ2VzLCBhbnl3aGVyZSB0aGVyZSdzIGEgcmVsZXZhbnQgdXNlclxuXHRcdC8vIElnbm9yZSByYW5nZXMgd2lkZXIgdGhhbiB0aGUgQ0lEUiBsaW1pdFxuXHRcdC8vIEVuYWJsZSBmb3Igbm9uLWFkbWluc1xuXHRcdGlmIChcblx0XHRcdChNb3JlYml0cy51c2VySXNTeXNvcCB8fCAhbXcudXRpbC5pc0lQQWRkcmVzcyhyZWxldmFudFVzZXJOYW1lLCB0cnVlKSkgJiZcblx0XHRcdHJlbGV2YW50VXNlck5hbWUgJiZcblx0XHRcdCghTW9yZWJpdHMuaXAuaXNSYW5nZShyZWxldmFudFVzZXJOYW1lKSB8fCBNb3JlYml0cy5pcC52YWxpZENJRFIocmVsZXZhbnRVc2VyTmFtZSkpXG5cdFx0KSB7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwgeemgScsICflsIHpjpYnKSxcblx0XHRcdFx0J3R3LWJsb2NrJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCflsIHnpoHnm7jlhbPnlKjmiLcnLCAn5bCB6Y6W55u46Zec5L2/55So6ICFJylcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdHJlbGV2YW50VXNlck5hbWUgPT09IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSAmJlxuXHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5oKo5Y2z5bCG5a+56Ieq5bex5omn6KGM5bCB56aB55u45YWz5pON5L2c77yB56Gu6K6k6KaB57un57ut5ZCX77yfJyxcblx0XHRcdFx0XHQn5oKo5Y2z5bCH5bCN6Ieq5bex5Z+36KGM5bCB6Y6W55u46Zec5pON5L2c77yB56K66KqN6KaB57m857qM5ZeO77yfJ1xuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbyA9IHVuZGVmaW5lZDtcblx0XHRUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMgPSB7fTtcblx0XHRUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMgPSB7fTtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDY1MCwgNTMwKTtcblx0XHQvLyBuZWVkIHRvIGJlIHZlcmJvc2UgYWJvdXQgd2hvIHdlJ3JlIGJsb2NraW5nXG5cdFx0V2luZG93LnNldFRpdGxlKFxuXHRcdFx0d2luZG93LndnVUxTKCflsIHnpoHmiJblkJEnLCAn5bCB6Y6W5oiW5ZCRJykgKyByZWxldmFudFVzZXJOYW1lICsgd2luZG93LndnVUxTKCflj5Hlh7rlsIHnpoHmqKHmnb8nLCAn55m85Ye65bCB6Y6W5qih5p2/Jylcblx0XHQpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflsIHnpoHmlrnpkognLCAn5bCB6Y6W5pa56YedJyksICdRVzpCTE9DSycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5bCB56aB6K6+572uJywgJ+WwgemOluioreWumicpLCAnSDpUVy9QUkVGI2Jsb2NrJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI2Jsb2NrJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5ibG9jay5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgYWN0aW9uZmllbGQgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pON5L2c57G75Z6LJywgJ+aTjeS9nOmhnuWIpScpLFxuXHRcdH0pO1xuXHRcdGFjdGlvbmZpZWxkLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bmFtZTogJ2FjdGlvbnR5cGUnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbixcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgeeUqOaItycsICflsIHpjpbkvb/nlKjogIUnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn55So6YCJ5oup55qE6YCJ6aG55YWo56uZ5bCB56aB55u45YWz55So5oi377yM6Iul5pyq5Yu+6YCJ6YOo5YiG5bCB56aB5YiZ5Li65YWo56uZ5bCB56aB44CCJyxcblx0XHRcdFx0XHRcdCfnlKjpgbjmk4fnmoTpgbjpoIXlhajnq5nlsIHpjpbnm7jpl5zkvb/nlKjogIXvvIzoi6XmnKrli77pgbjpg6jliIblsIHpjpbliYfngrrlhajnq5nlsIHpjpbjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRoaWRkZW46ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0XHRjaGVja2VkOiBNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mDqOWIhuWwgeemgScsICfpg6jliIblsIHpjpYnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BhcnRpYWwnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5ZCv55So6YOo5YiG5bCB56aB5Y+K6YOo5YiG5bCB56aB5qih5p2/44CCJywgJ+WVn+eUqOmDqOWIhuWwgemOluWPiumDqOWIhuWwgemOluaooeadv+OAgicpLFxuXHRcdFx0XHRcdGhpZGRlbjogIU1vcmViaXRzLnVzZXJJc1N5c29wLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignZGVmYXVsdFRvUGFydGlhbEJsb2NrcycpLCAvLyBPdmVycmlkZGVuIGlmIGFscmVhZHkgYmxvY2tlZFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5bCB56aB5qih5p2/5Yiw55So5oi36K6o6K666aG1JywgJ+WKoOWFpeWwgemOluaooeadv+WIsOS9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndGVtcGxhdGUnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XmiafooYzlsIHnpoHnmoTnrqHnkIblkZjlv5jorrDlj5Hlh7rlsIHnpoHmqKHmnb/vvIzmiJbkvaDlsIHnpoHkuobnlKjmiLfogIzmsqHmnInnu5nlhbblj5Hlh7rmqKHmnb/vvIzliJnkvaDlj6/ku6XnlKjmraTmnaXlj5Hlh7rlkIjpgILnmoTmqKHmnb/jgILli77pgInpg6jliIblsIHnpoHku6Xkvb/nlKjpg6jliIblsIHnpoHmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+iLpeWft+ihjOWwgemOlueahOeuoeeQhuWToeW/mOiomOeZvOWHuuWwgemOluaooeadv++8jOaIluS9oOWwgemOluS6huS9v+eUqOiAheiAjOaykuaciee1puWFtueZvOWHuuaooeadv++8jOWJh+S9oOWPr+S7peeUqOatpOS+hueZvOWHuuWQiOmBqeeahOaooeadv+OAguWLvumBuOmDqOWIhuWwgemOluS7peS9v+eUqOmDqOWIhuWwgemOluaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdC8vIERpc2FsbG93IHdoZW4gdmlld2luZyB0aGUgYmxvY2sgZGlhbG9nIG9uIGFuIElQIHJhbmdlXG5cdFx0XHRcdFx0aGlkZGVuOiAhTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0XHRcdFx0Y2hlY2tlZDogTW9yZWJpdHMudXNlcklzU3lzb3AgJiYgIU1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSksXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IE1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd0YWcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflsIbnlKjmiLfpobXmm7/mjaLmiJDnm7jlhbPnmoTmoIforrDmqKHmnb/vvIzku4XpmZDmsLjkuYXlsIHnpoHkvb/nlKjjgIInLFxuXHRcdFx0XHRcdFx0J+Wwh+S9v+eUqOiAhemggemdouabv+aPm+aIkOebuOmXnOeahOaomeiomOaooeadv++8jOWDhemZkOawuOS5heWwgemOluS9v+eUqOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0XHRjaGVja2VkOiAhTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTnlKjmiLfpobUnLCAn5L+d6K235L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcm90ZWN0Jyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpOeUqOaIt+mhte+8jOS7hemZkOawuOS5heWwgeemgeS9v+eUqOOAgicsICflhajkv53orbfkvb/nlKjogIXpoIHpnaLvvIzlg4XpmZDmsLjkuYXlsIHpjpbkvb/nlKjjgIInKSxcblx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfop6PpmaTlsIHnpoHnlKjmiLcnLCAn6Kej6Zmk5bCB6Y6W5L2/55So6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1bmJsb2NrJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+ino+mZpOWwgeemgeebuOWFs+eUqOaIt+OAgicsICfop6PpmaTlsIHpjpbnm7jpl5zkvb/nlKjogIXjgIInKSxcblx0XHRcdFx0XHRoaWRkZW46ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0LyoqXG5cdFx0ICogQWRkIG9wdGlvbiBmb3IgSVB2NiByYW5nZXMgc21hbGxlciB0aGFuIC82NCB0byB1cGdyYWRlIHRvIHRoZSA2NFxuXHRcdCAqIENJRFIuIFRoaXMgaXMgb25lIG9mIHRoZSBmZXcgcGxhY2VzIHdoZXJlIHdlIHdhbnRcblx0XHQgKiB3Z1JlbGV2YW50VXNlck5hbWUgc2luY2UgdGhpcyBkZXBlbmRzIGVudGlyZWx5IG9uIHRoZSBvcmlnaW5hbCB1c2VyLlxuXHRcdCAqIEluIHRoZW9yeSwgd2Ugc2hvdWxkbid0IHVzZSBNb3JlYml0cy5pcC5nZXQ2NCBoZXJlIHNpbmNlIHNpbmNlIHdlIHdhbnRcblx0XHQgKiB0byBleGNsdWRlIGZ1bmN0aW9uYWxseS1lcXVpdmFsZW50IC82NHMuICBUaGF0J2QgYmU6XG5cdFx0ICogLy8gaWYgKG13LnV0aWwuaXNJUHY2QWRkcmVzcyhtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSwgdHJ1ZSkgJiZcblx0XHQgKiAvLyAobXcudXRpbC5pc0lQdjZBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSB8fCBwYXJzZUludChtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKS5yZXBsYWNlKC9eKC4rPylcXC8/KFxcZHsxLDN9KT8kLywgJyQyJyksIDEwKSA+IDY0KSkge1xuXHRcdCAqIEluIHByYWN0aWNlLCB0aG91Z2gsIHNpbmNlIGZ1bmN0aW9uYWxseS1lcXVpdmFsZW50IHJhbmdlcyBhcmVcblx0XHQgKiAobWlzKXRyZWF0ZWQgYXMgc2VwYXJhdGUgYnkgTWVkaWFXaWtpJ3MgbG9nZ2luZyxcblx0XHQgKiB1c2luZyBNb3JlYml0cy5pcC5nZXQ2NCBwcm92aWRlcyBhIG1vZGljdW0gb2YgcmVsaWVmIGluIHRoaXNlIGNhc2UuXG5cdFx0ICovXG5cdFx0Y29uc3Qgc2l4dHlGb3VyID0gTW9yZWJpdHMuaXAuZ2V0NjQobXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJykpO1xuXHRcdGlmIChzaXh0eUZvdXIgJiYgc2l4dHlGb3VyICE9PSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSkge1xuXHRcdFx0Y29uc3QgYmxvY2s2NGZpZWxkID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazmjaLkuLovNjTmrrXlsIHnpoEnLCAn6L2J5o+b54K6LzY05q615bCB6Y6WJyksXG5cdFx0XHRcdG5hbWU6ICdmaWVsZF82NCcsXG5cdFx0XHR9KTtcblx0XHRcdGJsb2NrNjRmaWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0c3R5bGU6ICdtYXJnaW4tYm90dG9tOiAwLjVlbScsXG5cdFx0XHRcdGxhYmVsOiBbd2dVTFMoJ+ebtOaOpeWwgeemgS82NOauteacieebiuaXoOWus+OAgicsICfnm7TmjqXlsIHpjpYvNjTmrrXmnInnm4rnhKHlrrPjgIInKV0sXG5cdFx0XHR9KTtcblx0XHRcdGJsb2NrNjRmaWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAnYmxvY2s2NCcsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9ibG9jazY0LFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0VG9CbG9jazY0JyksXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlLnmiJDlsIHnpoEvNjQnLCAn5pS55oiQ5bCB6Y6WLzY0JyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrNjQnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogTW9yZWJpdHMuaXAuaXNSYW5nZShtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSlcblx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+WwhuS4jeS8muWPkemAgeaooeadv+mAmuefpeOAgicsICflsIfkuI3mnIPnmbzpgIHmqKHmnb/pgJrnn6XjgIInKVxuXHRcdFx0XHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn5Lu75L2V5qih5p2/5bCG5Lya5Y+R6YCB57uZ5Y6f5aeLSVDvvJonLCAn5Lu75L2V5qih5p2/5bCH5pyD55m86YCB57Wm5Y6f5aeLSVDvvJonKSArXG5cdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aooeadv+mAiemhuScsICfmqKHmnb/pgbjpoIUnKSxcblx0XHRcdG5hbWU6ICdmaWVsZF90ZW1wbGF0ZV9vcHRpb25zJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCJ6aG5JywgJ+WwgemOlumBuOmghScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX2Jsb2NrX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfdGFnX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfop6PpmaTlsIHnpoHpgInpobknLCAn6Kej6Zmk5bCB6Y6W6YG46aCFJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfdW5ibG9ja19vcHRpb25zJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdGxhYmVsOiAn5o+Q5LqkJyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRyZXN1bHQucm9vdCA9IHJlc3VsdDtcblx0XHRUd2lua2xlLmJsb2NrLmZldGNoVXNlckluZm8oKCkgPT4ge1xuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRcdGNvbnN0ICRmb3JtID0gJChyZXN1bHQpO1xuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGFnXScpLnBhcmVudCgpLCB0cnVlKTtcblx0XHRcdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KFxuXHRcdFx0XHRcdFx0JGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cHJvdGVjdF0nKS5wYXJlbnQoKSxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBUb2dnbGUgaW5pdGlhbCBwYXJ0aWFsIHN0YXRlIGRlcGVuZGluZyBvbiBwcmlvciBibG9jayB0eXBlLFxuXHRcdFx0Ly8gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdFRvUGFydGlhbEJsb2NrcyBwcmVmXG5cdFx0XHRpZiAoYmxvY2tlZFVzZXJOYW1lID09PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRcdCQocmVzdWx0KVxuXHRcdFx0XHRcdC5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpXG5cdFx0XHRcdFx0LnByb3AoJ2NoZWNrZWQnLCBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJycpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gY2xlYW4gdXAgcHJlc2V0IGRhdGEgKGRlZmF1bHRzLCBldGMuKSwgZG9uZSBleGFjdGx5IG9uY2UsIG11c3QgYmUgYmVmb3JlIFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbiBpcyBjYWxsZWRcblx0XHRcdFR3aW5rbGUuYmxvY2sudHJhbnNmb3JtQmxvY2tQcmVzZXRzKCk7XG5cdFx0XHQvLyBpbml0IHRoZSBjb250cm9scyBhZnRlciB1c2VyIGFuZCBibG9jayBpbmZvIGhhdmUgYmVlbiBmZXRjaGVkXG5cdFx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0aWYgKHJlc3VsdC5ibG9jazY0ICYmIHJlc3VsdC5ibG9jazY0LmNoZWNrZWQpIHtcblx0XHRcdFx0Ly8gQ2FsbHMgdGhlIHNhbWUgY2hhbmdlX2FjdGlvbiBldmVudCBvbmNlIGZpbmlzaGVkXG5cdFx0XHRcdHJlc3VsdC5ibG9jazY0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdC5hY3Rpb250eXBlWzBdLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblx0Ly8gU3RvcmUgZmV0Y2hlZCB1c2VyIGRhdGEsIG9ubHkgcmVsZXZhbnQgaWYgc3dpdGNoaW5nIElQdjYgdG8gYSAvNjRcblx0VHdpbmtsZS5ibG9jay5mZXRjaGVkRGF0YSA9IHt9O1xuXHQvLyBQcm9jZXNzZXMgdGhlIGRhdGEgZnJvbSBhIGEgcXVlcnkgcmVzcG9uc2UsIHNlcGFyYXRlZCBmcm9tXG5cdC8vIFR3aW5rbGUuYmxvY2suZmV0Y2hVc2VySW5mbyB0byBhbGxvdyByZXByb2Nlc3Npbmcgb2YgYWxyZWFkeS1mZXRjaGVkIGRhdGFcblx0VHdpbmtsZS5ibG9jay5wcm9jZXNzVXNlckluZm8gPSAoZGF0YSwgZm4pID0+IHtcblx0XHRsZXQgW2Jsb2NraW5mb10gPSBkYXRhLnF1ZXJ5LmJsb2Nrcztcblx0XHRjb25zdCBbdXNlcmluZm9dID0gZGF0YS5xdWVyeS51c2Vycztcblx0XHQvLyBJZiBhbiBJUCBpcyBibG9ja2VkICphbmQqIHJhbmdlYmxvY2tlZCwgdGhlIGFib3ZlIGZpbmRzXG5cdFx0Ly8gd2hpY2hldmVyIGJsb2NrIGlzIG1vcmUgcmVjZW50LCBub3QgbmVjZXNzYXJpbHkgY29ycmVjdC5cblx0XHQvLyBUaHJlZSBzZWVtcy4uLiB1bmxpa2VseVxuXHRcdGlmIChkYXRhLnF1ZXJ5LmJsb2Nrcy5sZW5ndGggPiAxICYmIGJsb2NraW5mby51c2VyICE9PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRbLCBibG9ja2luZm9dID0gZGF0YS5xdWVyeS5ibG9ja3M7XG5cdFx0fVxuXHRcdC8vIENhY2hlIHJlc3BvbnNlLCB1c2VkIHdoZW4gdG9nZ2xpbmcgLzY0IGJsb2Nrc1xuXHRcdFR3aW5rbGUuYmxvY2suZmV0Y2hlZERhdGFbdXNlcmluZm8ubmFtZV0gPSBkYXRhO1xuXHRcdFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkID0gISF1c2VyaW5mby51c2VyaWQ7XG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCA9XG5cdFx0XHRcdCEhdXNlcmluZm8uZ3JvdXBtZW1iZXJzaGlwcyAmJlxuXHRcdFx0XHR1c2VyaW5mby5ncm91cG1lbWJlcnNoaXBzXG5cdFx0XHRcdFx0Lm1hcCgoZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUuZ3JvdXA7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuaW5jbHVkZXMoJ2JvdCcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCA9IGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoYmxvY2tpbmZvKSB7XG5cdFx0XHQvLyBoYW5kbGUgZnJ1c3RyYXRpbmcgc3lzdGVtIG9mIGludmVydGVkIGJvb2xlYW4gdmFsdWVzXG5cdFx0XHRibG9ja2luZm8uZGlzYWJsZXRhbGsgPSBibG9ja2luZm8uYWxsb3d1c2VydGFsayA9PT0gdW5kZWZpbmVkO1xuXHRcdFx0YmxvY2tpbmZvLmhhcmRibG9jayA9IGJsb2NraW5mby5hbm9ub25seSA9PT0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHQvLyB3aWxsIHVuZGVmaW5lIGlmIG5vIGJsb2NrcyBwcmVzZW50XG5cdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvID0gYmxvY2tpbmZvO1xuXHRcdGJsb2NrZWRVc2VyTmFtZSA9IFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbyAmJiBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8udXNlcjtcblx0XHQvLyBTZW1pLWJ1c3RlZCBvbiByYW5nZXMuXG5cdFx0Ly8gQmFzaWNhbGx5LCBsb2dldmVudHMgZG9lc24ndCB0cmVhdCBmdW5jdGlvbmFsbHktZXF1aXZhbGVudCByYW5nZXNcblx0XHQvLyBhcyBlcXVpdmFsZW50LCBtZWFuaW5nIGFueSBmdW5jdGlvbmFsbHktZXF1aXZhbGVudCBJUCByYW5nZSBpc1xuXHRcdC8vIG1pc2ludGVycHJldGVkIGJ5IHRoZSBsb2cgdGhyb3VnaG91dC4gIFdpdGhvdXQgbG9nZXZlbnRzXG5cdFx0Ly8gcmVkaXJlY3RpbmcgKGxpa2UgU3BlY2lhbDpCbG9jayBkb2VzKSB3ZSB3b3VsZCBuZWVkIGEgZnVuY3Rpb24gdG9cblx0XHQvLyBwYXJzZSByYW5nZXMsIHdoaWNoIGlzIGEgcGFpbi4gIElQVXRpbHMgaGFzIHRoZSBjb2RlLCBidXQgaXQnZCBiZSBhXG5cdFx0Ly8gbG90IG9mIGNydWZ0IGZvciBvbmUgcHVycG9zZS5cblx0XHRUd2lua2xlLmJsb2NrLmhhc0Jsb2NrTG9nID0gISFkYXRhLnF1ZXJ5LmxvZ2V2ZW50cy5sZW5ndGg7XG5cdFx0VHdpbmtsZS5ibG9jay5ibG9ja0xvZyA9IFR3aW5rbGUuYmxvY2suaGFzQmxvY2tMb2cgJiYgZGF0YS5xdWVyeS5sb2dldmVudHM7XG5cdFx0Ly8gVXNlZCBsYXRlciB0byBjaGVjayBpZiBibG9jayBzdGF0dXMgY2hhbmdlZCB3aGlsZSBmaWxsaW5nIG91dCB0aGUgZm9ybVxuXHRcdFR3aW5rbGUuYmxvY2suYmxvY2tMb2dJZCA9IFR3aW5rbGUuYmxvY2suaGFzQmxvY2tMb2cgPyBkYXRhLnF1ZXJ5LmxvZ2V2ZW50c1swXS5sb2dpZCA6IGZhbHNlO1xuXHRcdGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJldHVybiBmbigpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5mZXRjaFVzZXJJbmZvID0gKGZuKSA9PiB7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdGxpc3Q6ICdibG9ja3N8dXNlcnN8bG9nZXZlbnRzJyxcblx0XHRcdGxldHlwZTogJ2Jsb2NrJyxcblx0XHRcdGxlbGltaXQ6IDIsXG5cdFx0XHRsZXRpdGxlOiBgVXNlcjoke3JlbGV2YW50VXNlck5hbWV9YCxcblx0XHRcdGJrcHJvcDogJ2V4cGlyeXxyZWFzb258ZmxhZ3N8cmVzdHJpY3Rpb25zfHJhbmdlfHVzZXInLFxuXHRcdFx0dXN1c2VyczogcmVsZXZhbnRVc2VyTmFtZSxcblx0XHR9O1xuXHRcdC8vIGJrdXNlcnMgZG9lc24ndCBjYXRjaCBzaW5nbGUgSVBzIGJsb2NrZWQgYXMgcGFydCBvZiBhIHJhbmdlIGJsb2NrXG5cdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MocmVsZXZhbnRVc2VyTmFtZSwgdHJ1ZSkpIHtcblx0XHRcdHF1ZXJ5LmJraXAgPSByZWxldmFudFVzZXJOYW1lO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5ia3VzZXJzID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRcdC8vIGdyb3VwbWVtYmVyc2hpcHMgb25seSByZWxldmFudCBmb3IgcmVnaXN0ZXJlZCB1c2Vyc1xuXHRcdFx0cXVlcnkudXNwcm9wID0gJ2dyb3VwbWVtYmVyc2hpcHMnO1xuXHRcdH1cblx0XHR2b2lkIGFwaS5nZXQocXVlcnkpLnRoZW4oXG5cdFx0XHQoZGF0YSkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLnByb2Nlc3NVc2VySW5mbyhkYXRhLCBmbik7XG5cdFx0XHR9LFxuXHRcdFx0KGVycm9yKSA9PiB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiY3VycmVudGJsb2NrXCJdIHNwYW4nKS5sYXN0KClbMF0pO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybih3aW5kb3cud2dVTFMoJ+aKk+WPlueUqOaIt+S/oeaBr+WHuumUmScsICfmipPlj5bkvb/nlKjogIXos4foqIrlh7rpjK8nKSwgZXJyb3IpO1xuXHRcdFx0fVxuXHRcdCk7XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0ID0gKGZpZWxkc2V0KSA9PiB7XG5cdFx0VHdpbmtsZS5ibG9ja1skKGZpZWxkc2V0KS5wcm9wKCduYW1lJyldID0ge307XG5cdFx0Zm9yIChjb25zdCBlbCBvZiAkKGZpZWxkc2V0KS5zZXJpYWxpemVBcnJheSgpKSB7XG5cdFx0XHQvLyBuYW1lc3BhY2VzIGFuZCBwYWdlcyBmb3IgcGFydGlhbCBibG9ja3MgYXJlIG92ZXJ3cml0dGVuXG5cdFx0XHQvLyBoZXJlLCBidXQgd2UncmUgaGFuZGxpbmcgdGhlbSBlbHNld2hlcmUgc28gdGhhdCdzIGZpbmVcblx0XHRcdFR3aW5rbGUuYmxvY2tbJChmaWVsZHNldCkucHJvcCgnbmFtZScpXVtlbC5uYW1lXSA9IGVsLnZhbHVlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfYmxvY2s2NCA9IChlKSA9PiB7XG5cdFx0Y29uc3QgJGZvcm0gPSAkKGUudGFyZ2V0LmZvcm0pO1xuXHRcdGNvbnN0ICRibG9jazY0ID0gJGZvcm0uZmluZCgnW25hbWU9YmxvY2s2NF0nKTtcblx0XHQvLyBTaG93L2hpZGUgYmxvY2s2NCBidXR0b25cblx0XHQvLyBTaW5nbGUgSVB2Niwgb3IgSVB2NiByYW5nZSBzbWFsbGVyIHRoYW4gYSAvNjRcblx0XHRjb25zdCBwcmlvck5hbWUgPSByZWxldmFudFVzZXJOYW1lO1xuXHRcdGlmICgkYmxvY2s2NC5pcygnOmNoZWNrZWQnKSkge1xuXHRcdFx0cmVsZXZhbnRVc2VyTmFtZSA9IE1vcmViaXRzLmlwLmdldDY0KG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVsZXZhbnRVc2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdH1cblx0XHQvLyBObyB0ZW1wbGF0ZXMgZm9yIHJhbmdlcywgYnV0IGlmIHRoZSBvcmlnaW5hbCB1c2VyIGlzIGEgc2luZ2xlIElQLCBvZmZlciB0aGUgb3B0aW9uXG5cdFx0Ly8gKGRvbmUgc2VwYXJhdGVseSBpbiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmlzc3VlX3RlbXBsYXRlKVxuXHRcdGNvbnN0IG9yaWdpbmFsSXNSYW5nZSA9IE1vcmViaXRzLmlwLmlzUmFuZ2UobXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJykpO1xuXHRcdCRmb3JtXG5cdFx0XHQuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGVtcGxhdGVdJylcblx0XHRcdC5wcm9wKCdkaXNhYmxlZCcsIG9yaWdpbmFsSXNSYW5nZSlcblx0XHRcdC5wcm9wKCdjaGVja2VkJywgIW9yaWdpbmFsSXNSYW5nZSk7XG5cdFx0Ly8gUmVmZXRjaC9yZXByb2Nlc3MgdXNlciBpbmZvIHRoZW4gcmVnZW5lcmF0ZSB0aGUgbWFpbiBjb250ZW50XG5cdFx0Y29uc3QgcmVnZW5lcmF0ZUZvcm0gPSAoKSA9PiB7XG5cdFx0XHQvLyBUd2VhayB0aXRsZWJhciB0ZXh0LiAgSW4gdGhlb3J5LCB3ZSBjb3VsZCBzYXZlIHRoZSBkaWFsb2dcblx0XHRcdC8vIGF0IGluaXRpYWxpemF0aW9uIGFuZCB0aGVuIHVzZSBgLnNldFRpdGxlYCBvclxuXHRcdFx0Ly8gYGRpYWxvZygnb3B0aW9uJywgJ3RpdGxlJylgLCBidXQgaW4gcHJhY3RpY2UgdGhhdCBzd2FsbG93c1xuXHRcdFx0Ly8gdGhlIHNjcmlwdE5hbWUgYW5kIHJlcXVpcmVzIGAuZGlzcGxheWBpbmcsIHdoaWNoIGp1bXBzIHRoZVxuXHRcdFx0Ly8gd2luZG93LiAgSXQncyBqdXN0IGEgbGluZSBvZiB0ZXh0LCBzbyB0aGlzIGlzIGZpbmUuXG5cdFx0XHRjb25zdCB0aXRsZUJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy51aS1kaWFsb2ctdGl0bGUnKS5maXJzdENoaWxkLm5leHRTaWJsaW5nO1xuXHRcdFx0dGl0bGVCYXIubm9kZVZhbHVlID0gdGl0bGVCYXIubm9kZVZhbHVlLnJlcGxhY2UocHJpb3JOYW1lLCByZWxldmFudFVzZXJOYW1lKTtcblx0XHRcdC8vIENvcnJlY3QgcGFydGlhbCBzdGF0ZVxuXHRcdFx0JGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cGFydGlhbF0nKS5wcm9wKCdjaGVja2VkJywgVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0VG9QYXJ0aWFsQmxvY2tzJykpO1xuXHRcdFx0aWYgKGJsb2NrZWRVc2VyTmFtZSA9PT0gcmVsZXZhbnRVc2VyTmFtZSkge1xuXHRcdFx0XHQkZm9ybVxuXHRcdFx0XHRcdC5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpXG5cdFx0XHRcdFx0LnByb3AoJ2NoZWNrZWQnLCBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJycpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gU2V0IGNvbnRlbnQgYXBwcm9wcmlhdGVseVxuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfYWN0aW9uKGUpO1xuXHRcdH07XG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suZmV0Y2hlZERhdGFbcmVsZXZhbnRVc2VyTmFtZV0pIHtcblx0XHRcdFR3aW5rbGUuYmxvY2sucHJvY2Vzc1VzZXJJbmZvKFR3aW5rbGUuYmxvY2suZmV0Y2hlZERhdGFbcmVsZXZhbnRVc2VyTmFtZV0sIHJlZ2VuZXJhdGVGb3JtKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5mZXRjaFVzZXJJbmZvKHJlZ2VuZXJhdGVGb3JtKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbiA9IChlKSA9PiB7XG5cdFx0bGV0IGZpZWxkX3ByZXNldDtcblx0XHRsZXQgZmllbGRfdGVtcGxhdGVfb3B0aW9ucztcblx0XHRsZXQgZmllbGRfYmxvY2tfb3B0aW9ucztcblx0XHRsZXQgZmllbGRfdGFnX29wdGlvbnM7XG5cdFx0bGV0IGZpZWxkX3VuYmxvY2tfb3B0aW9ucztcblx0XHRjb25zdCAkZm9ybSA9ICQoZS50YXJnZXQuZm9ybSk7XG5cdFx0Ly8gTWFrZSBpZnMgc2hvcnRlclxuXHRcdGNvbnN0ICRibG9jayA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPWJsb2NrXScpO1xuXHRcdGxldCBibG9ja0JveCA9ICRibG9jay5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCAkdGVtcGxhdGUgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT10ZW1wbGF0ZV0nKTtcblx0XHRsZXQgdGVtcGxhdGVCb3ggPSAkdGVtcGxhdGUuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgJHRhZyA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXRhZ10nKTtcblx0XHRjb25zdCB0YWdCb3ggPSAkdGFnLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0ICRwcm90ZWN0ID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cHJvdGVjdF0nKTtcblx0XHRjb25zdCAkcGFydGlhbCA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXBhcnRpYWxdJyk7XG5cdFx0Y29uc3QgcGFydGlhbEJveCA9ICRwYXJ0aWFsLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0ICR1bmJsb2NrID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dW5ibG9ja10nKTtcblx0XHRjb25zdCB1bmJsb2NrQm94ID0gJHVuYmxvY2suaXMoJzpjaGVja2VkJyk7XG5cdFx0bGV0IGJsb2NrR3JvdXAgPSBwYXJ0aWFsQm94ID8gVHdpbmtsZS5ibG9jay5ibG9ja0dyb3Vwc1BhcnRpYWwgOiBUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzO1xuXHRcdGlmIChlLnRhcmdldC52YWx1ZSA9PT0gJ3VuYmxvY2snKSB7XG5cdFx0XHRpZiAoIVR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbykge1xuXHRcdFx0XHQkdW5ibG9jay5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+eUqOaIt+ayoeacieiiq+WwgeemgScsICfkvb/nlKjogIXmspLmnInooqvlsIHpjpYnKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0JGJsb2NrLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRibG9ja0JveCA9IGZhbHNlO1xuXHRcdFx0JHRlbXBsYXRlLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHR0ZW1wbGF0ZUJveCA9IGZhbHNlO1xuXHRcdFx0JHRhZy5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0JHByb3RlY3QucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdCRwYXJ0aWFsLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCR1bmJsb2NrLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0fVxuXHRcdCRwYXJ0aWFsLnByb3AoJ2Rpc2FibGVkJywgIWJsb2NrQm94ICYmICF0ZW1wbGF0ZUJveCk7XG5cdFx0Ly8gQWRkIGN1cnJlbnQgYmxvY2sgcGFyYW1ldGVycyBhcyBkZWZhdWx0IHByZXNldFxuXHRcdGNvbnN0IHByaW9yID0ge1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b2T5YmN5bCB56aBJywgJ+ebruWJjeWwgemOlicpLFxuXHRcdH07XG5cdFx0aWYgKGJsb2NrZWRVc2VyTmFtZSA9PT0gcmVsZXZhbnRVc2VyTmFtZSkge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvLnByaW9yID0gVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvO1xuXHRcdFx0Ly8gdmFsdWUgbm90IGEgdmFsaWQgdGVtcGxhdGUgc2VsZWN0aW9uLCBjaG9zZW4gYmVsb3cgYnkgc2V0dGluZyB0ZW1wbGF0ZU5hbWVcblx0XHRcdHByaW9yLmxpc3QgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPliY3lsIHnpoHorr7nva4nLCAn55uu5YmN5bCB6Y6W6Kit5a6aJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcmlvcicsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdFx0Ly8gQXJyYXlzIG9mIG9iamVjdHMgYXJlIGFubm95aW5nIHRvIGNoZWNrXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFibG9ja0dyb3VwLnNvbWUoKGJnKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGJnLmxhYmVsID09PSBwcmlvci5sYWJlbDtcblx0XHRcdFx0fSlcblx0XHRcdCkge1xuXHRcdFx0XHRibG9ja0dyb3VwW2Jsb2NrR3JvdXAubGVuZ3RoXSA9IHByaW9yO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQWx3YXlzIGVuc3VyZSBwcm9wZXIgdGVtcGxhdGUgZXhpc3RzL2lzIHNlbGVjdGVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzXG5cdFx0XHRpZiAocGFydGlhbEJveCkge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm8ucHJpb3IudGVtcGxhdGVOYW1lID0gTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoXG5cdFx0XHRcdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeVxuXHRcdFx0XHQpXG5cdFx0XHRcdFx0PyAndXctcGJsb2NraW5kZWYnXG5cdFx0XHRcdFx0OiAndXctcGJsb2NrJztcblx0XHRcdH0gZWxzZSBpZiAoVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQpIHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvLnByaW9yLnRlbXBsYXRlTmFtZSA9IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KFxuXHRcdFx0XHRcdFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5leHBpcnlcblx0XHRcdFx0KVxuXHRcdFx0XHRcdD8gJ3V3LWJsb2NraW5kZWYnXG5cdFx0XHRcdFx0OiAndXctYmxvY2snO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvLnByaW9yLnRlbXBsYXRlTmFtZSA9ICd1dy1hYmxvY2snO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBCdXQgZmlyc3QgcmVtb3ZlIGFueSBwcmlvciBwcmlvclxuXHRcdFx0YmxvY2tHcm91cCA9IGJsb2NrR3JvdXAuZmlsdGVyKChiZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYmcubGFiZWwgIT09IHByaW9yLmxhYmVsO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRib2R5LmZpbmQoJ1tuYW1lPWZpZWxkX2Jsb2NrX29wdGlvbnNdJykpO1xuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRib2R5LmZpbmQoJ1tuYW1lPWZpZWxkX3RlbXBsYXRlX29wdGlvbnNdJykpO1xuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRib2R5LmZpbmQoJ1tuYW1lPWZpZWxkX3RhZ19vcHRpb25zXScpKTtcblx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCgkYm9keS5maW5kKCdbbmFtZT1maWVsZF91bmJsb2NrX29wdGlvbnNdJykpO1xuXHRcdGlmIChibG9ja0JveCkge1xuXHRcdFx0ZmllbGRfcHJlc2V0ID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfcHJlc2V0Jyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfcHJlc2V0LmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRuYW1lOiAncHJlc2V0Jyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup6buY6K6k77yaJywgJ+mBuOaTh+mgkOiore+8micpLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfcHJlc2V0LFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmZpbHRlcmVkX2Jsb2NrX2dyb3VwcyhibG9ja0dyb3VwKSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucyA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgemAiemhuScsICflsIHpjpbpgbjpoIUnKSxcblx0XHRcdFx0bmFtZTogJ2ZpZWxkX2Jsb2NrX29wdGlvbnMnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnY3VycmVudGJsb2NrJyxcblx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0bmFtZTogJ2hhc2Jsb2NrbG9nJyxcblx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0bmFtZTogJ2V4cGlyeV9wcmVzZXQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov4fmnJ/ml7bpl7TvvJonLCAn6YGO5pyf5pmC6ZaT77yaJyksXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9leHBpcnksXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYknLCAn6Ieq6KiCJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnaW5maW5pdHknLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnM+Wwj+aXticsICcz5bCP5pmCJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzMgaG91cnMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMTLlsI/ml7YnLCAnMTLlsI/mmYInKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMTIgaG91cnMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcx5aSpJyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMSBkYXknLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMzHlsI/ml7YnLCAnMzHlsI/mmYInKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMzEgaG91cnMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcy5aSpJyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMiBkYXlzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiAnM+WkqScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzMgZGF5cycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCcx5ZGoJywgJzHpgLEnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMSB3ZWVrJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzLlkagnLCAnMumAsScpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcyIHdlZWtzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzHkuKrmnIgnLCAnMeWAi+aciCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxIG1vbnRoJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzPkuKrmnIgnLCAnM+WAi+aciCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICczIG1vbnRocycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCc25Liq5pyIJywgJzblgIvmnIgnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnNiBtb250aHMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcx5bm0Jyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMSB5ZWFyJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiAnMuW5tCcsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzIgeWVhcnMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcz5bm0Jyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMyB5ZWFycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnZXhwaXJ5Jyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6L+H5pyf5pe26Ze0JywgJ+iHquiogumBjuacn+aZgumWkycpLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqOebuOWvueaXtumXtO+8jOWmguKAnDEgbWludXRl4oCd5oiW4oCcMTkgZGF5c+KAne+8m+aIlue7neWvueaXtumXtO+8jOKAnHl5eXltbWRkaGhtbeKAne+8iOWmguKAnDIwMDYwMjAxMTQwNeKAneaYrzIwMDblubQy5pyIMeaXpTE0OjA1IFVUQ+OAgu+8iScsXG5cdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqOebuOWwjeaZgumWk++8jOWmguOAjDEgbWludXRl44CN5oiW44CMMTkgZGF5c+OAje+8m+aIlue1leWwjeaZgumWk++8jOOAjHl5eXltbWRkaGhtbeOAje+8iOWmguOAjDIwMDYwMjAxMTQwNeOAjeaYrzIwMDblubQy5pyIMeaXpTE0OjA1IFVUQ+OAgu+8iSdcblx0XHRcdFx0KSxcblx0XHRcdFx0dmFsdWU6IFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucy5leHBpcnkgfHwgVHdpbmtsZS5ibG9jay5maWVsZF90ZW1wbGF0ZV9vcHRpb25zLnRlbXBsYXRlX2V4cGlyeSxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKHBhcnRpYWxCb3gpIHtcblx0XHRcdFx0Ly8gUGFydGlhbCBibG9ja1xuXHRcdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2VyZXN0cmljdGlvbnMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mhtemdouWwgeemgScsICfpoIHpnaLlsIHpjpYnKSxcblx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmnIDlpJoxMOS4qumhtemdouOAgicsICfmnIDlpJoxMOWAi+mggemdouOAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgbnMgPSBmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdFx0bmFtZTogJ25hbWVzcGFjZXJlc3RyaWN0aW9ucycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZG95ZCN56m66Ze05bCB56aBJywgJ+WRveWQjeepuumWk+WwgemOlicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+aMh+WumuWwgeemgeeahOWRveWQjeepuumXtOOAgicsICfmjIflrprlsIHpjpbnmoTlkb3lkI3nqbrplpPjgIInKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvciAoY29uc3QgW251bWJlciwgbmFtZV0gb2YgT2JqZWN0LmVudHJpZXMobWVudUZvcm1hdHRlZE5hbWVzcGFjZXMpKSB7XG5cdFx0XHRcdFx0Ly8gSWdub3JlIC0xOiBTcGVjaWFsOyAtMjogTWVkaWE7IGFuZCAyMzAwLTIzMDM6IEdhZGdldCAodGFsaykgYW5kIEdhZGdldCBkZWZpbml0aW9uICh0YWxrKVxuXHRcdFx0XHRcdGlmIChudW1iZXIgPj0gMCAmJiBudW1iZXIgPCA4MzApIHtcblx0XHRcdFx0XHRcdG5zLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogbmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IG51bWJlcixcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYmxvY2tvcHRpb25zID0gW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zLm5vY3JlYXRlLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+emgeatouWIm+W7uui0puWPtycsICfnpoHmraLlu7rnq4vos6zomZ8nKSxcblx0XHRcdFx0XHRuYW1lOiAnbm9jcmVhdGUnLFxuXHRcdFx0XHRcdHZhbHVlOiAnMScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMubm9lbWFpbCxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlLXlrZDpgq7ku7blgZznlKgnLCAn6Zu75a2Q6YO15Lu25YGc55SoJyksXG5cdFx0XHRcdFx0bmFtZTogJ25vZW1haWwnLFxuXHRcdFx0XHRcdHZhbHVlOiAnMScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMuZGlzYWJsZXRhbGssXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN6IO957yW6L6R6Ieq5bex55qE6K6o6K666aG1JywgJ+S4jeiDvee3qOi8r+iHquW3seeahOiojuirlumggScpLFxuXHRcdFx0XHRcdG5hbWU6ICdkaXNhYmxldGFsaycsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0XHR0b29sdGlwOiBwYXJ0aWFsQm94XG5cdFx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6Iul5L2/55So6YOo5YiG5bCB56aB77yM5LiN5bqU6YCJ5oup5q2k6aG577yM6Zmk6Z2e5oKo5Lmf5oOz6KaB56aB5q2i57yW6L6R55So5oi36K6o6K666aG144CCJyxcblx0XHRcdFx0XHRcdFx0XHQn6Iul5L2/55So6YOo5YiG5bCB6Y6W77yM5LiN5oeJ6YG45pOH5q2k6aCF77yM6Zmk6Z2e5oKo5Lmf5oOz6KaB56aB5q2i57eo6Lyv5L2/55So6ICF6KiO6KuW6aCB44CCJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQ6ICcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XTtcblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmlzUmVnaXN0ZXJlZCkge1xuXHRcdFx0XHRibG9ja29wdGlvbnNbYmxvY2tvcHRpb25zLmxlbmd0aF0gPSB7XG5cdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zLmF1dG9ibG9jayxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rliqjlsIHnpoEnLCAn6Ieq5YuV5bCB6Y6WJyksXG5cdFx0XHRcdFx0bmFtZTogJ2F1dG9ibG9jaycsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJsb2Nrb3B0aW9uc1tibG9ja29wdGlvbnMubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMuaGFyZGJsb2NrLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mYu+atoueZu+W9leeUqOaIt+S9v+eUqOivpUlQ5Zyw5Z2A57yW6L6RJywgJ+mYu+atoueZu+WFpeS9v+eUqOiAheS9v+eUqOipsklQ5L2N5Z2A57eo6LyvJyksXG5cdFx0XHRcdFx0bmFtZTogJ2hhcmRibG9jaycsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGJsb2Nrb3B0aW9uc1tibG9ja29wdGlvbnMubGVuZ3RoXSA9XG5cdFx0XHRcdCh7XG5cdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zLndhdGNodXNlcixcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnm5Hop4bor6XnlKjmiLfnmoTnlKjmiLfpobXlkozorqjorrrpobUnLCAn55uj6KaW6Kmy5L2/55So6ICF55qE5L2/55So6ICF6aCB6Z2i5ZKM6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNodXNlcicsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5b2T5YmN55qE56C05Z2P5Lit55qE6K+35rGCJywgJ+aomeiomOeVtuWJjeeahOegtOWjnuS4reeahOiri+axgicpLFxuXHRcdFx0XHRcdG5hbWU6ICdjbG9zZXZpcCcsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdibG9ja29wdGlvbnMnLFxuXHRcdFx0XHRsaXN0OiBibG9ja29wdGlvbnMsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55CG55Sx77yI55So5LqO5bCB56aB5pel5b+X77yJ77yaJywgJ+eQhueUse+8iOeUqOaWvOWwgemOluaXpeiqjO+8ie+8micpLFxuXHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfor7fogIPomZHlnKjpu5jorqTnmoTmtojmga/kuK3liqDlhaXmnInnlKjnmoTor6bnu4bkv6Hmga/jgIInLFxuXHRcdFx0XHRcdCfoq4vogIPmha7lnKjpoJDoqK3nmoToqIrmga/kuK3liqDlhaXmnInnlKjnmoToqbPntLDos4foqIrjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMucmVhc29uLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnZmlsZXJsb2dfbGFiZWwnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj4Lop4HvvJonLCAn5Y+D6KaL77yaJyksXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zdHlsZTpub3JtYWwgIWltcG9ydGFudCcsXG5cdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5Zyo5bCB56aB55CG55Sx5Lit5qCH5riF54m55q6K5oOF5Ya15Lul5L6b5YW25LuW566h55CG5ZGY5Y+C6ICDJyxcblx0XHRcdFx0XHQn5Zyo5bCB6Y6W55CG55Sx5Lit5qiZ5riF54m55q6K5oOF5rOB5Lul5L6b5YW25LuW566h55CG5ZOh5Y+D6ICDJ1xuXHRcdFx0XHQpLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdmaWx0ZXJfc2VlX2Fsc28nLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6NXB4Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+i/h+a7pOWZqOaXpeW/lycsICfpgY7mv77lmajml6XoqownKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn6L+H5ruk5Zmo5pel5b+XJywgJ+mBjua/vuWZqOaXpeiqjCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2RlbGV0ZWRfc2VlX2Fsc28nLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6NXB4Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suWIoOmZpOeahOe8lui+kScsICflt7LliKrpmaTnmoTnt6jovK8nKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn5bey5Yig6Zmk55qE57yW6L6RJywgJ+W3suWIqumZpOeahOe3qOi8rycpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2ZpbHRlcl9zZWVfYWxzbycsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnRvZ2dsZV9zZWVfYWxzb3MsXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1yaWdodDo1cHgnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi36K6o6K666aG1JywgJ+S9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobUnLCAn5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAnZmlsdGVyX3NlZV9hbHNvJyxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudG9nZ2xlX3NlZV9hbHNvcyxcblx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luLXJpZ2h0OjVweCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov4fljrvnmoTlsIHnpoHorrDlvZUnLCAn6YGO5Y6755qE5bCB6Y6W6KiY6YyEJyksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+i/h+WOu+eahOWwgeemgeiusOW9lScsICfpgY7ljrvnmoTlsIHpjpboqJjpjIQnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHQvLyBZZXQtYW5vdGhlci1sb2dldmVudHMtZG9lc24ndC1oYW5kbGUtcmFuZ2VzLXdlbGxcblx0XHRcdGlmIChibG9ja2VkVXNlck5hbWUgPT09IHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoaWRkZW4nLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWJsb2NrJyxcblx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRlbXBsYXRlQm94KSB7XG5cdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qih5p2/6YCJ6aG5JywgJ+aooeadv+mBuOmghScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfdGVtcGxhdGVfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdG5hbWU6ICd0ZW1wbGF0ZScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqeiuqOiuuumhteaooeadv++8micsICfpgbjmk4foqI7oq5bpoIHmqKHmnb/vvJonKSxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlLFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmZpbHRlcmVkX2Jsb2NrX2dyb3VwcyhibG9ja0dyb3VwLCB0cnVlKSxcblx0XHRcdFx0dmFsdWU6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy50ZW1wbGF0ZSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnYXJ0aWNsZScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mTvuaOpemhtemdoicsICfpgKPntZDpoIHpnaInKSxcblx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+WPr+S7pemaj+mAmuefpemTvuaOpemhtemdou+8jOS+i+WmguegtOWdj+eahOebruagh+OAguayoeacieadoeebrumcgOimgemTvuaOpeWImeivt+eVmeepuuOAgicsXG5cdFx0XHRcdFx0J+WPr+S7pemaqOmAmuefpemAo+e1kOmggemdou+8jOS+i+WmguegtOWjnueahOebruaomeOAguaykuacieaineebrumcgOimgemAo+e1kOWJh+iri+eVmeepuuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0Ly8gT25seSB2aXNpYmxlIGlmIHBhcnRpYWwgYW5kIG5vdCBibG9ja2luZ1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnYXJlYScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgeiMg+WbtCcsICflsIHpjpbnr4TlnI0nKSxcblx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+mYu+atoueUqOaIt+e8lui+keeahOmhtemdouaIluWRveWQjeepuumXtOeahOWPr+mAieivtOaYjuOAgicsXG5cdFx0XHRcdFx0J+mYu+atouS9v+eUqOiAhee3qOi8r+eahOmggemdouaIluWRveWQjeepuumWk+eahOWPr+mBuOiqquaYjuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKCFibG9ja0JveCkge1xuXHRcdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAndGVtcGxhdGVfZXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogJ+Wwgeemgeacn+mZkO+8micsXG5cdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5bCB56aB5pe26ZW/77yM5aaCMjTlsI/ml7bjgIEy5ZGo44CB5peg6ZmQ5pyf562J44CCJywgJ+WwgemOluaZgumVt++8jOWmgjI05bCP5pmC44CBMumAseOAgeeEoemZkOacn+etieOAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bmFtZTogJ2Jsb2NrX3JlYXNvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+KAnOeUseS6juKApuKApuaCqOW3suiiq+WwgeemgeKAnScsICfjgIznlLHmlrzigKbigKbmgqjlt7LooqvlsIHpjpbjgI0nKSxcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCflj6/pgInnmoTnkIbnlLHvvIznlKjkuo7mm7/mjaLpu5jorqTnkIbnlLHjgILlj6rlnKjluLjop4TlsIHnpoHmqKHmnb/kuK3mnInmlYjjgIInLFxuXHRcdFx0XHRcdCflj6/pgbjnmoTnkIbnlLHvvIznlKjmlrzmm7/mj5vpoJDoqK3nkIbnlLHjgILlj6rlnKjluLjopo/lsIHpjpbmqKHmnb/kuK3mnInmlYjjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYmxvY2tfcmVhc29uLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKGJsb2NrQm94KSB7XG5cdFx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdibGFua19kdXJhdGlvbicsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3lnKjmqKHmnb/kuK3ljIXlkKvlsIHnpoHmnJ/pmZAnLCAn5LiN5Zyo5qih5p2/5Lit5YyF5ZCr5bCB6Y6W5pyf6ZmQJyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ibGFua19kdXJhdGlvbixcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmqKHmnb/lsIbkvJrmmL7npLrigJzkuIDmrrXml7bpl7TigJ3ogIzkuI3mmK/lhbfkvZPml7bplb8nLFxuXHRcdFx0XHRcdFx0XHRcdCfmqKHmnb/lsIfmnIPpoa/npLrjgIzkuIDmrrXmmYLplpPjgI3ogIzkuI3mmK/lhbfpq5TmmYLplbcnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73nvJbovpHoh6rlt7HnmoTorqjorrrpobUnLCAn5LiN6IO957eo6Lyv6Ieq5bex55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub3RhbGsnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm90YWxrLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOatpOWcqOWwgeemgeaooeadv+S4reaMh+aYjuivpeeUqOaIt+e8lui+keiuqOiuuumhteeahOadg+mZkOW3suiiq+enu+mZpCcsXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOatpOWcqOWwgemOluaooeadv+S4reaMh+aYjuipsuS9v+eUqOiAhee3qOi8r+iojuirlumggeeahOasiumZkOW3suiiq+enu+mZpCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S4jeiDveWPkemAgeeUteWtkOmCruS7ticsICfkuI3og73lgrPpgIHpm7vlrZDpg7Xku7YnKSxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ25vZW1haWxfdGVtcGxhdGUnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm9lbWFpbF90ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHnpoHmqKHmnb/kuK3mjIfmmI7or6XnlKjmiLflj5HpgIHnlLXlrZDpgq7ku7bnmoTmnYPpmZDlt7Looqvnp7vpmaQnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHpjpbmqKHmnb/kuK3mjIfmmI7oqbLkvb/nlKjogIXlgrPpgIHpm7vlrZDpg7Xku7bnmoTmrIrpmZDlt7Looqvnp7vpmaQnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73liJvlu7rotKblj7cnLCAn5LiN6IO95bu656uL6LOs6JmfJyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub2NyZWF0ZV90ZW1wbGF0ZScsXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub2NyZWF0ZV90ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHnpoHmqKHmnb/kuK3mjIfmmI7or6XnlKjmiLfliJvlu7rotKblj7fnmoTmnYPpmZDlt7Looqvnp7vpmaQnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHpjpbmqKHmnb/kuK3mjIfmmI7oqbLkvb/nlKjogIXlu7rnq4vos6zomZ/nmoTmrIrpmZDlt7Looqvnp7vpmaQnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgJHByZXZpZXdsaW5rID0gJCgnPGE+JykuYXR0cignaWQnLCAndHdpbmtsZWJsb2NrLXByZXZpZXctbGluaycpLnRleHQod2luZG93LndnVUxTKCfpooTop4gnLCAn6aCQ6Ka9JykpO1xuXHRcdFx0JHByZXZpZXdsaW5rLm9mZignY2xpY2snKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sucHJldmlldygkZm9ybVswXSk7XG5cdFx0XHR9KTtcblx0XHRcdCRwcmV2aWV3bGluay5jc3Moe1xuXHRcdFx0XHRjdXJzb3I6ICdwb2ludGVyJyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0aWQ6ICdibG9ja3ByZXZpZXcnLFxuXHRcdFx0XHRsYWJlbDogWyRwcmV2aWV3bGlua1swXV0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdGlkOiAndHdpbmtsZWJsb2NrLXByZXZpZXdib3gnLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6IG5vbmUnLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmICh0YWdCb3gpIHtcblx0XHRcdGZpZWxkX3RhZ19vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w55So5oi36aG1JywgJ+aomeiomOS9v+eUqOiAhemggemdoicpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfdGFnX29wdGlvbnMnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF90YWdfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAndGFnJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup55So5oi36aG15qih5p2/77yaJywgJ+mBuOaTh+S9v+eUqOiAhemggemdouaooeadv++8micpLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IGB7e0Jsb2NrZWQgdXNlcn1977yaJHt3aW5kb3cud2dVTFMoJ+S4gOiIrOawuOS5heWwgeemgScsICfkuIDoiKzmsLjkuYXlsIHpjpYnKX1gLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdCbG9ja2VkIHVzZXInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IGB7e1NvY2twdXBwZXR9fe+8miR7d2luZG93LndnVUxTKCflgoDlhKHotKblj7cnLCAn5YKA5YSh6LOs6JmfJyl9YCxcblx0XHRcdFx0XHRcdHZhbHVlOiAnU29ja3B1cHBldCcsXG5cdFx0XHRcdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3NwcFVzZXJuYW1lJyxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S4u+i0puWPt+eUqOaIt+WQje+8micsICfkuLvos6zomZ/kvb/nlKjogIXlkI3nqLHvvJonKSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzcHBUeXBlJyxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnirbmgIHvvJonLCAn54uA5oWL77yaJyksXG5cdFx0XHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdibG9ja2VkJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGBibG9ja2VkIC0gJHt3aW5kb3cud2dVTFMoJ+S7heS+neihjOS4uuivgeaNruiupOWumicsICflg4Xkvp3ooYzngrrorYnmk5roqo3lrponKX1gLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3Byb3ZlbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBgcHJvdmVuIC0gJHt3aW5kb3cud2dVTFMoJ+e7j+WCgOWEoeiwg+afpeehruiupCcsICfntpPlgoDlhKHoqr/mn6Xnorroqo0nKX1gLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnY29uZmlybWVkJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGBjb25maXJtZWQgLSAke3dpbmRvdy53Z1VMUygn57uP5p+l5qC456Gu6K6kJywgJ+e2k+afpeaguOeiuuiqjScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnc3BwRXZpZGVuY2UnLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qC55o2u4oCm4oCm56Gu5a6a77yaJywgJ+agueaTmuKApuKApueiuuWumu+8micpLFxuXHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfnuq/mloflrZfmiJbmmK/luKZbW11d55qE6ZO+5o6l77yM5L6L5aaC77yaW1tTcGVjaWFsOuWbuuWumumTvuaOpS94eHh4eHh4eHznlKjmiLfmn6XmoLhdXScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn57SU5paH5a2X5oiW5piv5bi2W1tdXeeahOmAo+e1kO+8jOS+i+Wmgu+8mltbU3BlY2lhbDrlm7rlrprpk77mjqUveHh4eHh4eHh855So5oi25p+l5qC4XV0nXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogYHt7U29ja3B1cHBldGVlcnxibG9ja2VkfX3vvJoke3dpbmRvdy53Z1VMUygn5YKA5YSh5Li76LSm5Y+3JywgJ+WCgOWEoeS4u+izrOiZnycpfWAsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ1NvY2twdXBwZXRlZXInLFxuXHRcdFx0XHRcdFx0c3ViZ3JvdXA6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnc3BtQ2hlY2tlZCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnc3BtQ2hlY2tlZCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e7j+eUqOaIt+afpeaguOehruiupCcsICfntpPkvb/nlKjogIXmn6XmoLjnorroqo0nKSxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzcG1FdmlkZW5jZScsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpop3lpJbnkIbnlLHvvJonLCAn6aGN5aSW55CG55Sx77yaJyksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKHVuYmxvY2tCb3gpIHtcblx0XHRcdGZpZWxkX3VuYmxvY2tfb3B0aW9ucyA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ino+mZpOWwgeemgemAiemhuScsICfop6PpmaTlsIHpjpbpgbjpoIUnKSxcblx0XHRcdFx0bmFtZTogJ2ZpZWxkX3VuYmxvY2tfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3VuYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnkIbnlLHvvIjnlKjkuo7lsIHnpoHml6Xlv5fvvInvvJonLCAn55CG55Sx77yI55So5pa85bCB6Y6W5pel6KqM77yJ77yaJyksXG5cdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHR2YWx1ZTogVHdpbmtsZS5ibG9jay5maWVsZF91bmJsb2NrX29wdGlvbnMucmVhc29uLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGxldCBvbGRmaWVsZDtcblx0XHRpZiAoZmllbGRfcHJlc2V0KSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3ByZXNldFwiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfcHJlc2V0LnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF9wcmVzZXRcIl0nKS5oaWRlKCk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZF9ibG9ja19vcHRpb25zKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX2Jsb2NrX29wdGlvbnNcIl0nKTtcblx0XHRcdG9sZGZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZpZWxkX2Jsb2NrX29wdGlvbnMucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF82NFwiXScpLnNob3coKTtcblx0XHRcdCRmb3JtLmZpbmQoJ1tuYW1lPXBhZ2VyZXN0cmljdGlvbnNdJykuc2VsZWN0Mih7XG5cdFx0XHRcdHdpZHRoOiAnMTAwJScsXG5cdFx0XHRcdHBsYWNlaG9sZGVyOiB3aW5kb3cud2dVTFMoJ+i+k+WFpeimgemYu+atoueUqOaIt+e8lui+keeahOmhtemdoicsICfovLjlhaXopoHpmLvmraLkvb/nlKjogIXnt6jovK/nmoTpoIHpnaInKSxcblx0XHRcdFx0bGFuZ3VhZ2U6IHtcblx0XHRcdFx0XHRlcnJvckxvYWRpbmc6ICgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cud2dVTFMoJ+aQnOe0ouivjeaxh+S4jeWujOaVtOaIluaXoOaViCcsICfmkJzlsIvoqZ7lvZnkuI3lrozmlbTmiJbnhKHmlYgnKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoOiAxMCxcblx0XHRcdFx0bWluaW11bUlucHV0TGVuZ3RoOiAxLFxuXHRcdFx0XHRhamF4OiB7XG5cdFx0XHRcdFx0dXJsOiBtdy51dGlsLndpa2lTY3JpcHQoJ2FwaScpLFxuXHRcdFx0XHRcdGRhdGFUeXBlOiAnanNvbicsXG5cdFx0XHRcdFx0ZGVsYXk6IDEwMCxcblx0XHRcdFx0XHRkYXRhOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB0aXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhcmFtcy50ZXJtKTtcblx0XHRcdFx0XHRcdGlmICghdGl0bGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdFx0XHRcdFx0bGlzdDogJ2FsbHBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0YXBmcm9tOiB0aXRsZS50aXRsZSxcblx0XHRcdFx0XHRcdFx0YXBuYW1lc3BhY2U6IHRpdGxlLm5hbWVzcGFjZSxcblx0XHRcdFx0XHRcdFx0YXBsaW1pdDogJzEwJyxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwcm9jZXNzUmVzdWx0czogKGRhdGEpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdHM6IGRhdGEucXVlcnkuYWxscGFnZXMubWFwKChwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYWdlLnRpdGxlLCBwYWdlLm5zKS50b1RleHQoKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWQ6IHRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGV4dDogdGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRlbXBsYXRlU2VsZWN0aW9uOiAoY2hvaWNlKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuICQoJzxhPicpXG5cdFx0XHRcdFx0XHQudGV4dChjaG9pY2UudGV4dClcblx0XHRcdFx0XHRcdC5hdHRyKHtcblx0XHRcdFx0XHRcdFx0aHJlZjogbXcudXRpbC5nZXRVcmwoY2hvaWNlLnRleHQpLFxuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0XHRyZWw6ICdub29wZW5lciBub3JlZmVycmVyJyxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9LFxuXHRcdFx0fSk7XG5cdFx0XHQkZm9ybS5maW5kKCdbbmFtZT1uYW1lc3BhY2VyZXN0cmljdGlvbnNdJykuc2VsZWN0Mih7XG5cdFx0XHRcdHdpZHRoOiAnMTAwJScsXG5cdFx0XHRcdG1hdGNoZXI6IE1vcmViaXRzLnNlbGVjdDIubWF0Y2hlcnMud29yZEJlZ2lubmluZyxcblx0XHRcdFx0bGFuZ3VhZ2U6IHtcblx0XHRcdFx0XHRzZWFyY2hpbmc6IE1vcmViaXRzLnNlbGVjdDIucXVlcnlJbnRlcmNlcHRvcixcblx0XHRcdFx0fSxcblx0XHRcdFx0dGVtcGxhdGVSZXN1bHQ6IE1vcmViaXRzLnNlbGVjdDIuaGlnaGxpZ2h0U2VhcmNoTWF0Y2hlcyxcblx0XHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUygn6YCJ5oup6KaB56aB5q2i55So5oi357yW6L6R55qE5ZG95ZCN56m66Ze0JywgJ+mBuOaTh+imgeemgeatouS9v+eUqOiAhee3qOi8r+eahOWRveWQjeepuumWkycpLFxuXHRcdFx0fSk7XG5cdFx0XHRtdy51dGlsLmFkZENTUyhcblx0XHRcdFx0LyogUmVkdWNlIHBhZGRpbmc7XG5cdFx0XHRcdCAqIEFkanVzdCBmb250IHNpemU7XG5cdFx0XHRcdCAqIFJlbW92ZSBibGFjayBib3JkZXI7XG5cdFx0XHRcdCAqIE1ha2UgdGhlIHRpbnkgY3Jvc3MgbGFyZ2VyXG5cdFx0XHRcdCAqL1xuXHRcdFx0XHQnLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb257cGFkZGluZy10b3A6MXB4O3BhZGRpbmctYm90dG9tOjFweH0uc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItZHJvcGRvd24gLnNlbGVjdDItcmVzdWx0cywuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdGlvbiAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVke2ZvbnQtc2l6ZToxM3B4fS5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZXtib3JkZXI6MXB4IHNvbGlkICNhYWF9LnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZXtmb250LXNpemU6MTI1JX0nXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfYmxvY2tfb3B0aW9uc1wiXScpLmhpZGUoKTtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF82NFwiXScpLmhpZGUoKTtcblx0XHRcdC8vIENsZWFyIHNlbGVjdDIgb3B0aW9uc1xuXHRcdFx0JGZvcm0uZmluZCgnW25hbWU9cGFnZXJlc3RyaWN0aW9uc10nKS52YWwobnVsbCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0XHQkZm9ybS5maW5kKCdbbmFtZT1uYW1lc3BhY2VyZXN0cmljdGlvbnNdJykudmFsKG51bGwpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXHRcdH1cblx0XHRpZiAoZmllbGRfdGVtcGxhdGVfb3B0aW9ucykge1xuXHRcdFx0W29sZGZpZWxkXSA9ICRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF90ZW1wbGF0ZV9vcHRpb25zXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZF90ZW1wbGF0ZV9vcHRpb25zLnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0XHRlLnRhcmdldC5mb3JtLnJvb3QucHJldmlld2VyID0gbmV3IE1vcmViaXRzLndpa2kucHJldmlldyhcblx0XHRcdFx0JChlLnRhcmdldC5mb3JtLnJvb3QpLmZpbmQoJyN0d2lua2xlYmxvY2stcHJldmlld2JveCcpLmxhc3QoKVswXVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3RlbXBsYXRlX29wdGlvbnNcIl0nKS5oaWRlKCk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZF90YWdfb3B0aW9ucykge1xuXHRcdFx0W29sZGZpZWxkXSA9ICRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF90YWdfb3B0aW9uc1wiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfdGFnX29wdGlvbnMucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3RhZ19vcHRpb25zXCJdJykuaGlkZSgpO1xuXHRcdH1cblx0XHRpZiAoZmllbGRfdW5ibG9ja19vcHRpb25zKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3VuYmxvY2tfb3B0aW9uc1wiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfdW5ibG9ja19vcHRpb25zLnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF91bmJsb2NrX29wdGlvbnNcIl0nKS5oaWRlKCk7XG5cdFx0fVxuXHRcdC8vIEFueSBibG9jaywgaW5jbHVkaW5nIHJhbmdlc1xuXHRcdGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8pIHtcblx0XHRcdC8vIGZhbHNlIGZvciBhbiBpcCBjb3ZlcmVkIGJ5IGEgcmFuZ2Ugb3IgYSBzbWFsbGVyIHJhbmdlIHdpdGhpbiBhIGxhcmdlciByYW5nZTtcblx0XHRcdC8vIHRydWUgZm9yIGEgdXNlciwgc2luZ2xlIGlwIGJsb2NrLCBvciB0aGUgZXhhY3QgcmFuZ2UgZm9yIGEgcmFuZ2UgYmxvY2tcblx0XHRcdGNvbnN0IHNhbWVVc2VyID0gYmxvY2tlZFVzZXJOYW1lID09PSByZWxldmFudFVzZXJOYW1lO1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoJGJvZHkuZmluZCgnZGl2W25hbWU9XCJjdXJyZW50YmxvY2tcIl0gc3BhbicpLmxhc3QoKVswXSk7XG5cdFx0XHRsZXQgc3RhdHVzU3RyID0gYCR7cmVsZXZhbnRVc2VyTmFtZX3lt7Looqske1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJydcblx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn6YOo5YiG5bCB56aBJywgJ+mDqOWIhuWwgemOlicpXG5cdFx0XHRcdFx0OiB3aW5kb3cud2dVTFMoJ+WFqOermeWwgeemgScsICflhajnq5nlsIHpjpYnKVxuXHRcdFx0fWA7XG5cdFx0XHQvLyBSYW5nZSBibG9ja2VkXG5cdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnJhbmdlc3RhcnQgIT09IFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5yYW5nZWVuZCkge1xuXHRcdFx0XHRpZiAoc2FtZVVzZXIpIHtcblx0XHRcdFx0XHRzdGF0dXNTdHIgKz0gd2luZG93LndnVUxTKCfvvIjmrrXlsIHnpoHvvIknLCAn77yI5q615bCB6Y6W77yJJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gQ2hhbmdlIG9yZGVyXG5cdFx0XHRcdFx0Ly8gTGluayB0byB0aGUgZnVsbCByYW5nZVxuXHRcdFx0XHRcdGNvbnN0ICRyYW5nZWJsb2NrbG9nbGluayA9ICQoJzxzcGFuPicpLmFwcGVuZChcblx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdGA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOkxvZycsIHtcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb246ICd2aWV3Jyxcblx0XHRcdFx0XHRcdFx0XHRwYWdlOiBibG9ja2VkVXNlck5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcblx0XHRcdFx0XHRcdFx0fSl9XCI+JHtcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5pcC5nZXQ2NChyZWxldmFudFVzZXJOYW1lKSA9PT0gYmxvY2tlZFVzZXJOYW1lID8gJy82NCcgOiBibG9ja2VkVXNlck5hbWVcblx0XHRcdFx0XHRcdFx0fTwvYT4pYFxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c3RhdHVzU3RyICs9XG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ++8iOS9jeS6jicsICfvvIjkvY3mlrwnKSArXG5cdFx0XHRcdFx0XHQkcmFuZ2VibG9ja2xvZ2xpbmsuaHRtbCgpICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q615bCB56aB5YaF77yJJywgJ+auteWwgemOluWFp++8iScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeSA9PT0gJ2luZmluaXR5Jykge1xuXHRcdFx0XHRzdGF0dXNTdHIgKz0gd2luZG93LndnVUxTKCfvvIjml6DpmZDmnJ/vvIknLCAn77yI54Sh6ZmQ5pyf77yJJyk7XG5cdFx0XHR9IGVsc2UgaWYgKG5ldyBNb3JlYml0cy5kYXRlKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5leHBpcnkpLmlzVmFsaWQoKSkge1xuXHRcdFx0XHRzdGF0dXNTdHIgKz0gYCR7XG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfvvIjnu4jmraLkuo4nLCAn77yI57WC5q2i5pa8JykgK1xuXHRcdFx0XHRcdG5ldyBNb3JlYml0cy5kYXRlKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5leHBpcnkpLmNhbGVuZGFyKCd1dGMnKVxuXHRcdFx0XHR977yJYDtcblx0XHRcdH1cblx0XHRcdGxldCBpbmZvU3RyID0gd2luZG93LndnVUxTKCfmraTooajljZXlsIYnLCAn5q2k6KGo5Zau5bCHJyk7XG5cdFx0XHRpZiAoc2FtZVVzZXIpIHtcblx0XHRcdFx0aW5mb1N0ciArPSB3aW5kb3cud2dVTFMoJ+abtOaUueWwgeemgScsICforormm7TlsIHpjpYnKTtcblx0XHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5wYXJ0aWFsID09PSB1bmRlZmluZWQgJiYgcGFydGlhbEJveCkge1xuXHRcdFx0XHRcdGluZm9TdHIgKz0gd2luZG93LndnVUxTKCfkuLrpg6jliIblsIHnpoEnLCAn54K66YOo5YiG5bCB6Y6WJyk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnBhcnRpYWwgPT09ICcnICYmICFwYXJ0aWFsQm94KSB7XG5cdFx0XHRcdFx0aW5mb1N0ciArPSB3aW5kb3cud2dVTFMoJ+S4uuWFqOermeWwgeemgScsICfngrrlhajnq5nlsIHpjpYnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpbmZvU3RyICs9ICfjgIInO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aW5mb1N0ciArPVxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5LiK6aKd5aSW55qEJywgJ+WKoOS4iumhjeWklueahCcpICtcblx0XHRcdFx0XHQocGFydGlhbEJveCA/ICfpg6jliIYnIDogJycpICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwgeemgeOAgicsICflsIHpjpbjgIInKTtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKHN0YXR1c1N0ciwgaW5mb1N0cik7XG5cdFx0XHQvLyBEZWZhdWx0IHRvIHRoZSBjdXJyZW50IGJsb2NrIGNvbmRpdGlvbnMgb24gaW50aWFsIGZvcm0gZ2VuZXJhdGlvblxuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay51cGRhdGVfZm9ybShlLCBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8pO1xuXHRcdH1cblx0XHQvLyBUaGlzIGlzIHdoZXJlIFQxNDY2MjggcmVhbGx5IGNvbWVzIGludG8gcGxheTogYSByYW5nZWJsb2NrIHdpbGxcblx0XHQvLyBvbmx5IHJldHVybiB0aGUgY29ycmVjdCBibG9jayBsb2cgaWYgd2dSZWxldmFudFVzZXJOYW1lIGlzIHRoZVxuXHRcdC8vIGV4YWN0IHJhbmdlLCBub3QgbWVyZWx5IGEgZnVudGlvbmFsIGVxdWl2YWxlbnRcblx0XHRpZiAoVHdpbmtsZS5ibG9jay5oYXNCbG9ja0xvZykge1xuXHRcdFx0Ly8gQWRkIG1vcmUgZGV0YWlsc1xuXHRcdFx0Y29uc3QgYmxvY2tsb2dpbmZvID0gW107XG5cdFx0XHRjb25zdCAkYmxvY2tsb2dsaW5rID0gJCgnPHNwYW4+JykuYXBwZW5kKFxuXHRcdFx0XHQkKFxuXHRcdFx0XHRcdGA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOkxvZycsIHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3ZpZXcnLFxuXHRcdFx0XHRcdFx0cGFnZTogcmVsZXZhbnRVc2VyTmFtZSxcblx0XHRcdFx0XHRcdHR5cGU6ICdibG9jaycsXG5cdFx0XHRcdFx0fSl9XCI+JHt3aW5kb3cud2dVTFMoJ+WwgeemgeaXpeW/lycsICflsIHpjpbml6XoqownKX08L2E+KWBcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8pIHtcblx0XHRcdFx0YmxvY2tsb2dpbmZvW2Jsb2NrbG9naW5mby5sZW5ndGhdID0gd2luZG93LndnVUxTKCflsIHnpoHor6bmg4UnLCAn5bCB6Y6W6Kmz5oOFJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBbbGFzdEJsb2NrQWN0aW9uXSA9IFR3aW5rbGUuYmxvY2suYmxvY2tMb2c7XG5cdFx0XHRcdGNvbnN0IGJsb2NrQWN0aW9uID0gbGFzdEJsb2NrQWN0aW9uLmFjdGlvbiA9PT0gJ3VuYmxvY2snID8gVHdpbmtsZS5ibG9jay5ibG9ja0xvZ1sxXSA6IGxhc3RCbG9ja0FjdGlvbjtcblx0XHRcdFx0YmxvY2tsb2dpbmZvW2Jsb2NrbG9naW5mby5sZW5ndGhdID1cblx0XHRcdFx0XHQoYOatpCR7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5pcC5pc1JhbmdlKHJlbGV2YW50VXNlck5hbWUpXG5cdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCdJUOiMg+WbtCcsICdJUOevhOWcjScpXG5cdFx0XHRcdFx0XHRcdDogd2luZG93LndnVUxTKCfnlKjmiLcnLCAn5L2/55So6ICFJylcblx0XHRcdFx0XHR95pu+5ZyoYCxcblx0XHRcdFx0XHQkKCc8Yj4nKS50ZXh0KG5ldyBNb3JlYml0cy5kYXRlKGJsb2NrQWN0aW9uLnRpbWVzdGFtcCkuY2FsZW5kYXIoJ3V0YycpKVswXSxcblx0XHRcdFx0XHRg6KKrJHtibG9ja0FjdGlvbi51c2VyfSR7d2luZG93LndnVUxTKCflsIHnpoEnLCAn5bCB6Y6WJyl9YCxcblx0XHRcdFx0XHQkKCc8Yj4nKS50ZXh0KE1vcmViaXRzLnN0cmluZy5mb3JtYXRUaW1lKGJsb2NrQWN0aW9uLnBhcmFtcy5kdXJhdGlvbikpWzBdKTtcblx0XHRcdFx0aWYgKGxhc3RCbG9ja0FjdGlvbi5hY3Rpb24gPT09ICd1bmJsb2NrJykge1xuXHRcdFx0XHRcdGJsb2NrbG9naW5mb1tibG9ja2xvZ2luZm8ubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRg77yMJHtuZXcgTW9yZWJpdHMuZGF0ZShsYXN0QmxvY2tBY3Rpb24udGltZXN0YW1wKS5jYWxlbmRhcigndXRjJyl96Kej5bCBYDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBibG9jayBvciByZWJsb2NrXG5cdFx0XHRcdFx0YmxvY2tsb2dpbmZvW2Jsb2NrbG9naW5mby5sZW5ndGhdID1cblx0XHRcdFx0XHRcdGDvvIwke25ldyBNb3JlYml0cy5kYXRlKGJsb2NrQWN0aW9uLnBhcmFtcy5leHBpcnkpLmNhbGVuZGFyKCd1dGMnKX0ke3dpbmRvdy53Z1VMUygn6L+H5pyfJywgJ+mBjuacnycpfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiaGFzYmxvY2tsb2dcIl0gc3BhbicpLmxhc3QoKVswXSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMud2FybihibG9ja2xvZ2luZm8sICRibG9ja2xvZ2xpbmtbMF0pO1xuXHRcdH1cblx0XHQvLyBNYWtlIHN1cmUgYWxsIHRoZSBmaWVsZHMgYXJlIGNvcnJlY3QgYmFzZWQgb24gaW5pdGlhbCBkZWZhdWx0c1xuXHRcdGlmIChibG9ja0JveCkge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfcHJlc2V0KGUpO1xuXHRcdH0gZWxzZSBpZiAodGVtcGxhdGVCb3gpIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlKGUpO1xuXHRcdH1cblx0fTtcblx0LyoqXG5cdCAqIEtlZXAgYWxwaGFiZXRpemVkIGJ5IGtleSBuYW1lLCBUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzIGVzdGFibGlzaGVzXG5cdCAqICAgIHRoZSBvcmRlciB0aGV5IHdpbGwgYXBwZWFyIGluIHRoZSBpbnRlcmZhY2Vcblx0ICpcblx0ICogQmxvY2sgcHJlc2V0IGZvcm1hdCwgYWxsIGtleXMgYWNjZXB0IG9ubHkgJ3RydWUnIChvbWl0IGZvciBmYWxzZSkgZXhjZXB0IHdoZXJlIG5vdGVkOlxuXHQgKiA8dGl0bGUgb2YgYmxvY2sgdGVtcGxhdGU+IDoge1xuXHQgKiAgIGF1dG9ibG9jazogPGF1dG9ibG9jayBhbnkgSVAgYWRkcmVzc2VzIHVzZWQgKGZvciByZWdpc3RlcmVkIHVzZXJzIG9ubHkpPlxuXHQgKiAgIGRpc2FibGV0YWxrOiA8ZGlzYWJsZSB1c2VyIGZyb20gZWRpdGluZyB0aGVpciBvd24gdGFsayBwYWdlIHdoaWxlIGJsb2NrZWQ+XG5cdCAqICAgZXhwaXJ5OiA8c3RyaW5nIC0gZXhwaXJ5IHRpbWVzdGFtcCwgY2FuIGluY2x1ZGUgcmVsYXRpdmUgdGltZXMgbGlrZSBcIjUgbW9udGhzXCIsIFwiMiB3ZWVrc1wiIGV0Yz5cblx0ICogICBmb3JBbm9uT25seTogPHNob3cgYmxvY2sgb3B0aW9uIGluIHRoZSBpbnRlcmZhY2Ugb25seSBpZiB0aGUgcmVsZXZhbnQgdXNlciBpcyBhbiBJUD5cblx0ICogICBmb3JSZWdpc3RlcmVkT25seTogPHNob3cgYmxvY2sgb3B0aW9uIGluIHRoZSBpbnRlcmZhY2Ugb25seSBpZiB0aGUgcmVsZXZhbnQgdXNlciBpcyByZWdpc3RlcmVkPlxuXHQgKiAgIGxhYmVsOiA8c3RyaW5nIC0gbGFiZWwgZm9yIHRoZSBvcHRpb24gb2YgdGhlIGRyb3Bkb3duIGluIHRoZSBpbnRlcmZhY2UgKGtlZXAgYnJpZWYpPlxuXHQgKiAgIG5vZW1haWw6IHByZXZlbnQgdGhlIHVzZXIgZnJvbSBzZW5kaW5nIGVtYWlsIHRocm91Z2ggU3BlY2lhbDpFbWFpbHVzZXJcblx0ICogICBwYWdlUGFyYW06IDxzZXQgaWYgdGhlIGFzc29jaWF0ZWQgYmxvY2sgdGVtcGxhdGUgYWNjZXB0cyBhIHBhZ2UgcGFyYW1ldGVyPlxuXHQgKiAgIHByZXBlbmRSZWFzb246IDxzdHJpbmcgLSBwcmVwZW5kcyB0aGUgdmFsdWUgb2YgJ3JlYXNvbicgdG8gdGhlIGVuZCBvZiB0aGUgZXhpc3RpbmcgcmVhc29uLCBuYW1lbHkgZm9yIHdoZW4gcmV2b2tpbmcgdGFsayBwYWdlIGFjY2Vzcz5cblx0ICogICBub2NyZWF0ZTogPGJsb2NrIGFjY291bnQgY3JlYXRpb24gZnJvbSB0aGUgdXNlcidzIElQIChmb3IgYW5vbnltb3VzIHVzZXJzIG9ubHkpPlxuXHQgKiAgIG5vbnN0YW5kYXJkOiA8dGVtcGxhdGUgZG9lcyBub3QgY29uZm9ybSB0byBzdGV3YXJkc2hpcCBvZiBbW2Vud2lraTpXaWtpUHJvamVjdCBVc2VyIFdhcm5pbmdzXV0gYW5kIG1heSBub3QgYWNjZXB0IHN0YW5kYXJkIHBhcmFtZXRlcnM+XG5cdCAqICAgcmVhc29uOiA8c3RyaW5nIC0gYmxvY2sgcmF0aW9uYWxlLCBhcyB3b3VsZCBhcHBlYXIgaW4gdGhlIGJsb2NrIGxvZyxcblx0ICogICAgICAgICAgICBhbmQgdGhlIGVkaXQgc3VtbWFyeSBmb3Igd2hlbiBhZGRpbmcgYmxvY2sgdGVtcGxhdGUsIHVubGVzcyAnc3VtbWFyeScgaXMgc2V0PlxuXHQgKiAgIHJlYXNvblBhcmFtOiA8c2V0IGlmIHRoZSBhc3NvY2lhdGVkIGJsb2NrIHRlbXBsYXRlIGFjY2VwdHMgYSByZWFzb24gcGFyYW1ldGVyPlxuXHQgKiAgIHNpZzogPHN0cmluZyAtIHNldCB0byB+fn5+IGlmIGJsb2NrIHRlbXBsYXRlIGRvZXMgbm90IGFjY2VwdCBcInRydWVcIiBhcyB0aGUgdmFsdWUsIG9yIHNldCBudWxsIHRvIG9taXQgc2lnIHBhcmFtIGFsdG9nZXRoZXI+XG5cdCAqICAgc3VtbWFyeTogPHN0cmluZyAtIGVkaXQgc3VtbWFyeSBmb3Igd2hlbiBhZGRpbmcgYmxvY2sgdGVtcGxhdGUgdG8gdXNlcidzIHRhbGsgcGFnZSwgaWYgbm90IHNldCwgJ3JlYXNvbicgaXMgdXNlZD5cblx0ICogICBzdXBwcmVzc0FydGljbGVJblN1bW1hcnk6IDxzZXQgdG8gc3VwcHJlc3Mgc2hvd2luZyB0aGUgYXJ0aWNsZSBuYW1lIGluIHRoZSBlZGl0IHN1bW1hcnksIGFzIHdpdGggYXR0YWNrIHBhZ2VzPlxuXHQgKiAgIHRlbXBsYXRlTmFtZTogPHN0cmluZyAtIG5hbWUgb2YgdGVtcGxhdGUgdG8gdXNlIChpbnN0ZWFkIG9mIGtleSBuYW1lKSwgZW50cnkgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlIFRlbXBsYXRlcyBsaXN0LlxuXHQgKiAgICAgICAgICAgICAgICAgIChlLmcuIHVzZSBhbm90aGVyIHRlbXBsYXRlIGJ1dCB3aXRoIGRpZmZlcmVudCBibG9jayBvcHRpb25zKT5cblx0ICogICB1c2VJbml0aWFsT3B0aW9uczogPHdoZW4gcHJlc2V0IGlzIGNob3Nlbiwgb25seSBjaGFuZ2UgZ2l2ZW4gYmxvY2sgb3B0aW9ucywgbGVhdmUgb3RoZXJzIGFzIHRoZXkgd2VyZT5cblx0ICpcblx0ICogV0FSTklORzogJ2Fub25vbmx5JyBhbmQgJ2FsbG93dXNlcnRhbGsnIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cdCAqICAgVG8gZGlzYWJsZSwgc2V0ICdoYXJkYmxvY2snIGFuZCAnZGlzYWJsZXRhbGsnLCByZXNwZWN0aXZlbHlcblx0ICovXG5cdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mbyA9IHtcblx0XHQvLyB1dy1wcmVmaXhlZFxuXHRcdCd1dy1ibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+lJywgJ+WwgemOlumAmuefpScpLFxuXHRcdFx0c3VwcHJlc3NBcnRpY2xlSW5TdW1tYXJ5OiB0cnVlLFxuXHRcdH0sXG5cdFx0J3V3LWJsb2NraW5kZWYnOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpScsICflsIHpjpbpgJrnn6UnKSxcblx0XHRcdHN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeTogdHJ1ZSxcblx0XHR9LFxuXHRcdCd1dy1ibG9ja25vdGFsayc6IHtcblx0XHRcdGRpc2FibGV0YWxrOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muemgeatoue8lui+keiuqOiuuumhtScsICflsIHpjpbpgJrnn6XvvJrnpoHmraLnt6jovK/oqI7oq5bpoIEnKSxcblx0XHRcdHN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeTogdHJ1ZSxcblx0XHR9LFxuXHRcdCd1dy0zYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfov53lj41bW1FXOjNSUnzlm57pgIDkuI3ov4fkuInljp/liJldXScsICfpgZXlj41bW1FXOjNSUnzlm57pgIDkuI3pgY7kuInljp/liYddXScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrov53lj41bW1FXOjNSUnzlm57pgIDkuI3ov4fkuInljp/liJldXScsICflsIHpjpbpgJrnn6XvvJrpgZXlj41bW1FXOjNSUnzlm57pgIDkuI3pgY7kuInljp/liYddXScpLFxuXHRcdH0sXG5cdFx0J3V3LWFkYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmlaPlj5FbW1FXOlNPQVB85pWj5Y+R5bm/5ZGK5oiW5a6j5LygXV0nLCAn5pWj55m8W1tRVzpTT0FQfOaVo+eZvOW7o+WRiuaIluWuo+WCs11dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmlaPlj5FbW1FXOlNPQVB85pWj5Y+R5bm/5ZGK5oiW5a6j5LygXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5pWj55m8W1tRVzpTT0FQfOaVo+eZvOW7o+WRiuaIluWuo+WCs11dJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1hdHRhY2tibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW1FXOkNJVnzooYzkuLrml6DnpLxdXeaIlltbUVc6TlBBfOS6uui6q+aUu+WHu11dJyxcblx0XHRcdFx0J1tbUVc6Q0lWfOihjOeCuueEoeemrl1d5oiWW1tRVzpOUEF85Lq66Lqr5pS75pOKXV0nXG5cdFx0XHQpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77yaW1tRVzpDSVZ86KGM5Li65peg56S8XV3miJZbW1FXOk5QQXzkurrouqvmlLvlh7tdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJpbW1FXOkNJVnzooYzngrrnhKHnpq5dXeaIlltbUVc6TlBBfOS6uui6q+aUu+aTil1dJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1jb3B5cmlnaHRibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+aMgee7rVtbUVc6Q09QWVZJT3zkvrXniq/okZfkvZzmnYNdXScsICfmjIHnuoxbW1FXOkNPUFlWSU985L6154qv6JGX5L2c5qyKXV0nKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5oyB57utW1tRVzpDT1BZVklPfOS+teeKr+iRl+S9nOadg11dJywgJ+WwgemOlumAmuefpe+8muaMgee6jFtbUVc6Q09QWVZJT3zkvrXniq/okZfkvZzmrIpdXScpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2tpbmRlZicsXG5cdFx0fSxcblx0XHQndXctZGJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5oyB57utW1tRVzpWQU585Yig6Zmk5YaF5a65XV0nLCAn5oyB57qMW1tRVzpWQU585Yiq6Zmk5YWn5a65XV0nKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5oyB57utW1tRVzpWQU585Yig6Zmk5YaF5a65XV0nLCAn5bCB6Y6W6YCa55+l77ya5oyB57qMW1tRVzpWQU585Yiq6Zmk5YWn5a65XV0nKSxcblx0XHR9LFxuXHRcdCd1dy1oYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCdbW1FXOumqmuaJsHzpqprmibBdXeWFtuS7lueUqOaItycsICdbW1FXOumot+aTvnzpqLfmk75dXeWFtuS7luS9v+eUqOiAhScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJpbW1FXOumqmuaJsHzpqprmibBdXeWFtuS7lueUqOaItycsICflsIHpjpbpgJrnn6XvvJpbW1FXOumot+aTvnzpqLfmk75dXeWFtuS7luS9v+eUqOiAhScpLFxuXHRcdH0sXG5cdFx0J3V3LXZibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ1tbUVc6VkFOfOegtOWdj11dJywgJ1tbUVc6VkFOfOegtOWjnl1dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8mltbUVc6VkFOfOegtOWdj11dJywgJ+WwgemOlumAmuefpe+8mltbUVc6VkFOfOegtOWjnl1dJyksXG5cdFx0fSxcblx0XHQndXctaWxsZWdhbGJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5oyB57ut5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE6Z2e5rOV5YaF5a65JywgJ+aMgee6jOWKoOWFpeS4jeespuWQiOS4reWci+WDueWAvOingOeahOmdnuazleWFp+WuuScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya5oyB57ut5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE6Z2e5rOV5YaF5a65Jyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muaMgee6jOWKoOWFpeS4jeespuWQiOS4reWci+WDueWAvOingOeahOmdnuazleWFp+WuuSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHQndXctc29ja2Jsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSB3ZWVrJyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5rul55SoW1tRVzpTT0NLfOWkmuS4qui0puWPt11dJywgJ+a/q+eUqFtbUVc6U09DS3zlpJrlgIvos6zomZ9dXScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrmu6XnlKhbW1FXOlNPQ0t85aSa5Liq6LSm5Y+3XV0nLCAn5bCB6Y6W6YCa55+l77ya5r+r55SoW1tRVzpTT0NLfOWkmuWAi+izrOiZn11dJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy1ibG9jaycsXG5cdFx0fSxcblx0XHQvLyB1dy11LXByZWZpeGVkXG5cdFx0J3V3LXVibG9jayc6IHtcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0cmVhc29uOiBge3t1dy11YmxvY2t9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+S4jeW9k+eUqOaIt+WQjeOAgei9r+WwgeemgScsICfkuI3nlbbkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbUVc6VXznlKjmiLflkI3mlrnpkohdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW1FXOlV85L2/55So6ICF5ZCN56ix5pa56YedXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1pbGxlZ2FsJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogYHt7dXctdWJsb2NrLWlsbGVnYWx9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+S4jeWQiOinhOeahOeUqOaIt+WQjScsICfkuI3lkIjopo/nmoTkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbUVc6VXznlKjmiLflkI3mlrnpkohdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW1FXOlV85L2/55So6ICF5ZCN56ix5pa56YedXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1zdWdnZXN0aXZlJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogYHt7dXctdWJsb2NrLXN1Z2dlc3RpdmV9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+ivr+WvvOOAgea3t+a3huaAp+eUqOaIt+WQjScsICfoqqTlsI7jgIHmt7fmt4bmgKfkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbUVc6VXznlKjmiLflkI3mlrnpkohdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW1FXOlV85L2/55So6ICF5ZCN56ix5pa56YedXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1zcGFtJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogYHt7dXctdWJsb2NrLXNwYW19fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+Wuo+S8oOaAp+eUqOaIt+WQjeaIluWuo+S8oOaAp+e8lui+kScsICflrqPlgrPmgKfkvb/nlKjogIXlkI3nqLHmiJblrqPlgrPmgKfnt6jovK8nKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbUVc6VXznlKjmiLflkI3mlrnpkohdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW1FXOlV85L2/55So6ICF5ZCN56ix5pa56YedXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0Ly8gb3RoZXIgYmxvY2sgdGVtcGxhdGVzXG5cdFx0J3JhbmdlIGJsb2NrJzoge1xuXHRcdFx0ZXhwaXJ5OiAnMSB3ZWVrJyxcblx0XHRcdHJlYXNvbjogJ3t7cmFuZ2UgYmxvY2t9fScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0Zm9yQW5vbk9ubHk6IHRydWUsXG5cdFx0XHRzaWc6ICd+ficuY29uY2F0KCd+ficpLFxuXHRcdH0sXG5cdFx0J2Jsb2NrZWQgcHJveHknOiB7XG5cdFx0XHRleHBpcnk6ICcyIHllYXJzJyxcblx0XHRcdGZvckFub25Pbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRub25zdGFuZGFyZDogdHJ1ZSxcblx0XHRcdGhhcmRibG9jazogdHJ1ZSxcblx0XHRcdHJlYXNvbjogJ3t7YmxvY2tlZCBwcm94eX19Jyxcblx0XHRcdHNpZzogbnVsbCxcblx0XHR9LFxuXHRcdGNoZWNrdXNlcmJsb2NrOiB7XG5cdFx0XHRleHBpcnk6ICcxIHdlZWsnLFxuXHRcdFx0Zm9yQW5vbk9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0cmVhc29uOiAne3tjaGVja3VzZXJibG9ja319Jyxcblx0XHRcdHNpZzogJ35+Jy5jb25jYXQoJ35+JyksXG5cdFx0fSxcblx0XHQnY2hlY2t1c2VyYmxvY2stYWNjb3VudCc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRub25zdGFuZGFyZDogdHJ1ZSxcblx0XHRcdHJlYXNvbjogJ3t7Y2hlY2t1c2VyYmxvY2stYWNjb3VudH19Jyxcblx0XHRcdHNpZzogJ35+Jy5jb25jYXQoJ35+JyksXG5cdFx0fSxcblx0XHQnc2Nob29sIGJsb2NrJzoge1xuXHRcdFx0ZXhwaXJ5OiAnMSB3ZWVrJyxcblx0XHRcdGZvckFub25Pbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRub25zdGFuZGFyZDogdHJ1ZSxcblx0XHRcdHJlYXNvbjogJ3t7c2Nob29sIGJsb2NrfX0nLFxuXHRcdFx0c2lnOiAnfn4nLmNvbmNhdCgnfn4nKSxcblx0XHR9LFxuXHRcdCdCb3QgYmxvY2sgbWVzc2FnZSc6IHtcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+acuuWZqOS6uuaVhemanCcsICfmqZ/lmajkurrmlYXpmpwnKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5py65Zmo5Lq65pWF6ZqcJywgJ+WwgemOlumAmuefpe+8muapn+WZqOS6uuaVhemanCcpLFxuXHRcdFx0c2lnOiAnfn4nLmNvbmNhdCgnfn4nKSxcblx0XHR9LFxuXHRcdC8vIG90aGVyIGJsb2NrIHJlYXNvbnNcblx0XHRiaW9ibG9jazoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6L+d5Y+N55Sf6ICF5Lyg6K6w5pa56ZKIJywgJ+mBleWPjeeUn+iAheWCs+iomOaWuemHnScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrov53lj43nlJ/ogIXkvKDorrDmlrnpkognLCAn5bCB6Y6W6YCa55+l77ya6YGV5Y+N55Sf6ICF5YKz6KiY5pa56YedJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy12YmxvY2snLFxuXHRcdH0sXG5cdFx0dWNibG9jazoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5bGh5qyh5aKe5Yqg5rKh5pyJW1tRVzpSU3zlj6/pnaDmnaXmupBdXeeahOi1hOaWmScsICflsaLmrKHlop7liqDmspLmnIlbW1FXOlJTfOWPr+mdoOS+hua6kF1d55qE6LOH5paZJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrlsaHmrKHlop7liqDmsqHmnIlbW1FXOlJTfOWPr+mdoOadpea6kF1d55qE6LWE5paZJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muWxouasoeWinuWKoOaykuaciVtbUVc6UlN85Y+v6Z2g5L6G5rqQXV3nmoTos4fmlpknXG5cdFx0XHQpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2snLFxuXHRcdH0sXG5cdFx0bnBibG9jazoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5aKe5Yqg5peg5oSP5LmJ5paH5a2XJywgJ+WcqOaineebruS4reWinuWKoOeEoeaEj+e+qeaWh+WtlycpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrlnKjmnaHnm67kuK3lop7liqDml6DmhI/kuYnmloflrZcnLCAn5bCB6Y6W6YCa55+l77ya5Zyo5qKd55uu5Lit5aKe5Yqg54Sh5oSP576p5paH5a2XJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy12YmxvY2snLFxuXHRcdH0sXG5cdFx0J3BvaW50LWJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63miZPliLbluqbmk6bovrnnkIMnLCAn5oyB57qM5omT5Yi25bqm5pOm6YKK55CDJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaMgee7reaJk+WItuW6puaTpui+ueeQgycsICflsIHpjpbpgJrnn6XvvJrmjIHnuozmiZPliLbluqbmk6bpgornkIMnKSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LWJsb2NrJyxcblx0XHR9LFxuXHRcdCdzb2NrLWNvbnRyaWJzJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvblBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfnoa7orqTkuLpbW1FXOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEgLSDmoLnmja7nlKjmiLfotKHnjK7noa7lrponLFxuXHRcdFx0XHQn56K66KqN54K6W1tRVzpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShIC0g5qC55pOa5L2/55So6ICF6LKi542756K65a6aJ1xuXHRcdFx0KSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muehruiupOS4ultbUVc6U09DS3zlgoDlhKFdXeaIluecn+S6uuWCgOWEoScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrnorroqo3ngrpbW1FXOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEnXG5cdFx0XHQpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2tpbmRlZicsXG5cdFx0fSxcblx0XHQnc29jay1jdSc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn56Gu6K6k5Li6W1tRVzpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShIC0g55So5oi35p+l5qC456Gu6K6kJyxcblx0XHRcdFx0J+eiuuiqjeeCultbUVc6U09DS3zlgoDlhKFdXeaIluecn+S6uuWCgOWEoSAtIOS9v+eUqOiAheafpeaguOeiuuiqjSdcblx0XHRcdCksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrnoa7orqTkuLpbW1FXOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEnLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya56K66KqN54K6W1tRVzpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShJ1xuXHRcdFx0KSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LWJsb2NraW5kZWYnLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1hdHRhY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cmVhc29uOiBge3t1dy11YmxvY2stYXR0YWNrfX08IS0tICR7d2luZG93LndnVUxTKCfmlLvlh7vmgKfnlKjmiLflkI0nLCAn5pS75pOK5oCn5L2/55So6ICF5ZCN56ixJyl9IC0tPmAsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaUu+WHu+aAp+eUqOaIt+WQjScsICflsIHpjpbpgJrnn6XvvJrmlLvmk4rmgKfkvb/nlKjogIXlkI3nqLEnKSxcblx0XHR9LFxuXHRcdC8vIEJlZ2luIHBhcnRpYWwgYmxvY2sgdGVtcGxhdGVzLCBhY2Nlc3NlZCBpbiBUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzUGFydGlhbFxuXHRcdCd1dy1wYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogZmFsc2UsXG5cdFx0XHRwYWdlUGFyYW06IGZhbHNlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmgqjlt7LooqvnpoHmraLnvJbovpHmsYLpl7vnmb7np5HnmoTpg6jliIbljLrln58nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oKo5bey6KKr56aB5q2i57eo6Lyv5rGC6IGe55m+56eR55qE6YOo5YiG5Y2A5Z+fJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1wYmxvY2tpbmRlZic6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdG5vY3JlYXRlOiBmYWxzZSxcblx0XHRcdHBhZ2VQYXJhbTogZmFsc2UsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOW3suiiq+awuOS5heemgeatoue8lui+keaxgumXu+eZvuenkeeahOmDqOWIhuWMuuWfnycsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjlt7LooqvmsLjkuYXnpoHmraLnt6jovK/msYLogZ7nmb7np5HnmoTpg6jliIbljYDln58nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYmxvY2sudHJhbnNmb3JtQmxvY2tQcmVzZXRzID0gKCkgPT4ge1xuXHRcdC8vIE1lcmdlIGN1c3RvbSByZWFzb25cblx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21CbG9ja1JlYXNvbkxpc3QnKSkge1xuXHRcdFx0Y29uc3QgbmV3S2V5ID0gYCR7aXRlbS52YWx1ZX18JHtpdGVtLmxhYmVsfWA7XG5cdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bbmV3S2V5XSA9IHtcblx0XHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdFx0Li4uVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2l0ZW0udmFsdWVdLFxuXHRcdFx0XHRyZWFzb246IGl0ZW0ubGFiZWwsXG5cdFx0XHRcdHRlbXBsYXRlTmFtZTogaXRlbS52YWx1ZSxcblx0XHRcdH07XG5cdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2l0ZW0udmFsdWVdID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2l0ZW0udmFsdWVdID0ge1xuXHRcdFx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdFx0XHRjdXN0b206IHRydWUsXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIHN1cHBseSBzZW5zaWJsZSBkZWZhdWx0c1xuXHRcdGZvciAoY29uc3QgW3ByZXNldCwgc2V0dGluZ3NdIG9mIE9iamVjdC5lbnRyaWVzKFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mbykpIHtcblx0XHRcdHNldHRpbmdzLnN1bW1hcnkgfHw9IHNldHRpbmdzLnJlYXNvbjtcblx0XHRcdHNldHRpbmdzLnNpZyA9IHNldHRpbmdzLnNpZyA9PT0gdW5kZWZpbmVkID8gJ3llcycgOiBzZXR0aW5ncy5zaWc7XG5cdFx0XHRzZXR0aW5ncy5pbmRlZmluaXRlIHx8PSBNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShzZXR0aW5ncy5leHBpcnkpO1xuXHRcdFx0aWYgKCFUd2lua2xlLmJsb2NrLmlzUmVnaXN0ZXJlZCAmJiBzZXR0aW5ncy5pbmRlZmluaXRlKSB7XG5cdFx0XHRcdHNldHRpbmdzLmV4cGlyeSA9ICcxIGRheSc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZXR0aW5ncy5leHBpcnkgfHw9ICcxIGRheSc7XG5cdFx0XHR9XG5cdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bcHJlc2V0XSA9IHNldHRpbmdzO1xuXHRcdH1cblx0fTtcblx0Ly8gVGhlc2UgYXJlIHRoZSBncm91cHMgb2YgcHJlc2V0cyBhbmQgZGVmaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIuIEZvciBlYWNoIGxpc3QgaXRlbTpcblx0Ly8gICBsYWJlbDogPHN0cmluZywgdGhlIGRlc2NyaXB0aW9uIHRoYXQgd2lsbCBiZSB2aXNpYmxlIGluIHRoZSBkcm9wZG93bj5cblx0Ly8gICB2YWx1ZTogPHN0cmluZywgdGhlIGtleSBvZiBhIHByZXNldCBpbiBibG9ja1ByZXNldHNJbmZvPlxuXHQvLyAgIG1ldGE6IDxib29sZWFuLCBzaG93IGluIHRlbXBsYXRlcyBvbmx5PlxuXHRUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aZrumAmuWwgeemgScsICfmma7pgJrlsIHpjpYnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+mAmueUqOWwgeemge+8iOiHquWumuS5ieeQhueUse+8iScsICfpgJrnlKjlsIHpjpbvvIjoh6roqILnkIbnlLHvvIknKSwgdmFsdWU6ICd1dy1ibG9jayd9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyf5bCB56aB77yI6Ieq5a6a5LmJ55CG55Sx77yJJywgJ+eEoemZkOacn+WwgemOlu+8iOiHquiogueQhueUse+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndXctYmxvY2tpbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfnpoHmraLnvJbovpHorqjorrrpobUnLCAn56aB5q2i57eo6Lyv6KiO6KuW6aCBJyksIHZhbHVlOiAndXctYmxvY2tub3RhbGsnLCBtZXRhOiB0cnVlfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+i/neWPjeWbnumAgOS4jei/h+S4ieWOn+WImScsICfpgZXlj43lm57pgIDkuI3pgY7kuInljp/liYcnKSwgdmFsdWU6ICd1dy0zYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+aVo+WPkeW5v+WRiuaIluWuo+S8oCcsICfmlaPnmbzlu6PlkYrmiJblrqPlgrMnKSwgdmFsdWU6ICd1dy1hZGJsb2NrJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfooYzkuLrml6DnpLzmiJbkurrouqvmlLvlh7snLCAn6KGM54K654Sh56au5oiW5Lq66Lqr5pS75pOKJyksIHZhbHVlOiAndXctYXR0YWNrYmxvY2snfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WkmuasoeWKoOWFpeS+teeKr+iRl+S9nOadg+eahOWGheWuuScsICflpJrmrKHliqDlhaXkvrXniq/okZfkvZzmrIrnmoTlhaflrrknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3V3LWNvcHlyaWdodGJsb2NrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoOaVheWIoOmZpOWGheWuuScsICfnhKHmlYXliKrpmaTlhaflrrknKSwgdmFsdWU6ICd1dy1kYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+mqmuaJsOeUqOaItycsICfpqLfmk77kvb/nlKjogIUnKSwgdmFsdWU6ICd1dy1oYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+egtOWdjycsICfnoLTlo54nKSwgdmFsdWU6ICd1dy12YmxvY2snLCBzZWxlY3RlZDogdHJ1ZX0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjIHnu63liqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTpnZ7ms5XlhoXlrrknLCAn5oyB57qM5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE6Z2e5rOV5YWn5a65JyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy1pbGxlZ2FsYmxvY2snLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5rul55So5aSa5Liq6LSm5Y+3JywgJ+a/q+eUqOWkmuWAi+izrOiZnycpLCB2YWx1ZTogJ3V3LXNvY2tibG9jayd9LFxuXHRcdFx0XHQvLyBvdGhlciBibG9jayByZWFzb25zXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfov53lj43nlJ/ogIXkvKDorrDmlrnpkognLCAn6YGV5Y+N55Sf6ICF5YKz6KiY5pa56YedJyksIHZhbHVlOiAnYmlvYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+WxoeasoeWinuWKoOayoeacieWPr+mdoOadpea6kOeahOi1hOaWmScsICflsaLmrKHlop7liqDmspLmnInlj6/pnaDkvobmupDnmoTos4fmlpknKSwgdmFsdWU6ICd1Y2Jsb2NrJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCflnKjmnaHnm67kuK3lop7liqDml6DmhI/kuYnmloflrZcnLCAn5Zyo5qKd55uu5Lit5aKe5Yqg54Sh5oSP576p5paH5a2XJyksIHZhbHVlOiAnbnBibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5oyB57ut5omT5Yi25bqm5pOm6L6555CDJywgJ+aMgee6jOaJk+WItuW6puaTpumCiueQgycpLCB2YWx1ZTogJ3BvaW50LWJsb2NrJ30sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ehruiupOS4uuWCgOWEoeaIluecn+S6uuWCgOWEoe+8iOagueaNrueUqOaIt+i0oeeMruehruWumu+8iScsXG5cdFx0XHRcdFx0XHQn56K66KqN54K65YKA5YSh5oiW55yf5Lq65YKA5YSh77yI5qC55pOa5L2/55So6ICF6LKi542756K65a6a77yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6ICdzb2NrLWNvbnRyaWJzJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn56Gu6K6k5Li65YKA5YSh5oiW55yf5Lq65YKA5YSh77yI55So5oi35p+l5qC456Gu6K6k77yJJyxcblx0XHRcdFx0XHRcdCfnorroqo3ngrrlgoDlhKHmiJbnnJ/kurrlgoDlhKHvvIjkvb/nlKjogIXmn6XmoLjnorroqo3vvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogJ3NvY2stY3UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5py65Zmo5Lq65Y+R55Sf5pWF6Zqc5bm25b+F6aG757Sn5oCl5YGc5q2iJywgJ+apn+WZqOS6uueZvOeUn+aVhemanOS4puW/hemgiOe3iuaApeWBnOatoicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnQm90IGJsb2NrIG1lc3NhZ2UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGN1c3RvbTogdHJ1ZSxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieWwgeemgeeQhueUsScsICfoh6roqILlsIHpjpbnkIbnlLEnKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+WQjeWwgeemgScsICfkvb/nlKjogIXlkI3nqLHlsIHpjpYnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+i/neWPjeeUqOaIt+WQjeaWuemSiCcsICfpgZXlj43kvb/nlKjogIXlkI3nqLHmlrnph50nKSwgdmFsdWU6ICd1dy11YmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+S4jeWQiOinhOeahOeUqOaIt+WQjScsICfkuI3lkIjopo/nmoTkvb/nlKjogIXlkI3nqLEnKSwgdmFsdWU6ICd1dy11YmxvY2staWxsZWdhbCd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5a6j5Lyg5oCn55So5oi35ZCNJywgJ+Wuo+WCs+aAp+S9v+eUqOiAheWQjeeosScpLCB2YWx1ZTogJ3V3LXVibG9jay1zcGFtJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfmlLvlh7vmgKfnlKjmiLflkI0nLCAn5pS75pOK5oCn5L2/55So6ICF5ZCN56ixJyksIHZhbHVlOiAndXctdWJsb2NrLWF0dGFjayd9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5re35reG5oCn5oiW6K+v5a+85oCn55So5oi35ZCNJywgJ+a3t+a3huaAp+aIluiqpOWwjuaAp+S9v+eUqOiAheWQjeeosScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndXctdWJsb2NrLXN1Z2dlc3RpdmUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAn5YW25LuW5qih5p2/Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e2xhYmVsOiAncmFuZ2UgYmxvY2snLCB2YWx1ZTogJ3JhbmdlIGJsb2NrJywgZm9yQW5vbk9ubHk6IHRydWV9LFxuXHRcdFx0XHR7bGFiZWw6ICdzY2hvb2wgYmxvY2snLCB2YWx1ZTogJ3NjaG9vbCBibG9jaycsIGZvckFub25Pbmx5OiB0cnVlfSxcblx0XHRcdFx0e2xhYmVsOiAnYmxvY2tlZCBwcm94eScsIHZhbHVlOiAnYmxvY2tlZCBwcm94eScsIGZvckFub25Pbmx5OiB0cnVlfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+afpeaguOWwgeemge+8iOS4u+eUqOaIt++8iScsICfkvb/nlKjogIXmn6XmoLjlsIHpjpbvvIjkuLvkvb/nlKjogIXvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2NoZWNrdXNlcmJsb2NrJyxcblx0XHRcdFx0XHRmb3JBbm9uT25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+afpeaguOWwgeemge+8iOWtkOeUqOaIt++8iScsICfkvb/nlKjogIXmn6XmoLjlsIHpjpbvvIjlrZDkvb/nlKjogIXvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2NoZWNrdXNlcmJsb2NrLWFjY291bnQnLFxuXHRcdFx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzUGFydGlhbCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfluLjop4Hpg6jliIblsIHnpoHnkIbnlLEnLCAn5bi46KaL6YOo5YiG5bCB6Y6W55CG55SxJyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrnlKjpg6jliIblsIHnpoHvvIjoh6rlrprkuYnnkIbnlLHvvIknLCAn6YCa55So6YOo5YiG5bCB6Y6W77yI6Ieq6KiC55CG55Sx77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy1wYmxvY2snLFxuXHRcdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyf6YOo5YiG5bCB56aB77yI6Ieq5a6a5LmJ55CG55Sx77yJJywgJ+eEoemZkOacn+mDqOWIhuWwgemOlu+8iOiHquiogueQhueUse+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndXctcGJsb2NraW5kZWYnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmZpbHRlcmVkX2Jsb2NrX2dyb3VwcyA9IChncm91cCwgc2hvd190ZW1wbGF0ZSkgPT4ge1xuXHRcdHJldHVybiAkLm1hcChncm91cCwgKGJsb2NrR3JvdXApID0+IHtcblx0XHRcdC8vIEFkZCBjdXN0b20gcmVhc29uXG5cdFx0XHRpZiAoYmxvY2tHcm91cC5jdXN0b20pIHtcblx0XHRcdFx0aWYgKHNob3dfdGVtcGxhdGUpIHtcblx0XHRcdFx0XHRsZXQgdGVtcGxhdGVzID0gJC5tYXAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21CbG9ja1JlYXNvbkxpc3QnKSwgKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9baXRlbS52YWx1ZV0uY3VzdG9tKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpdGVtLnZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRlbXBsYXRlcyA9IE1vcmViaXRzLmFycmF5LnVuaXEodGVtcGxhdGVzKTtcblx0XHRcdFx0XHRibG9ja0dyb3VwLmxpc3QgPSAkLm1hcCh0ZW1wbGF0ZXMsICh0ZW1wbGF0ZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogdGVtcGxhdGUsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGJsb2NrR3JvdXAubGlzdCA9ICQubWFwKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tQmxvY2tSZWFzb25MaXN0JyksIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogaXRlbS5sYWJlbCxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGAke2l0ZW0udmFsdWV9fCR7aXRlbS5sYWJlbH1gLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbGlzdCA9ICQubWFwKGJsb2NrR3JvdXAubGlzdCwgKGJsb2NrUHJlc2V0KSA9PiB7XG5cdFx0XHRcdGlmICghc2hvd190ZW1wbGF0ZSAmJiBibG9ja1ByZXNldC5tZXRhKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN3aXRjaCAoYmxvY2tQcmVzZXQudmFsdWUpIHtcblx0XHRcdFx0XHRjYXNlICdyYW5nZSBibG9jayc6XG5cdFx0XHRcdFx0XHRpZiAoIU1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSkpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YmxvY2tQcmVzZXQuc2VsZWN0ZWQgPSAhTW9yZWJpdHMuaXAuZ2V0NjQocmVsZXZhbnRVc2VyTmFtZSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgYmxvY2tTZXR0aW5ncyA9IFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tibG9ja1ByZXNldC52YWx1ZV07XG5cdFx0XHRcdGxldCByZWdpc3RyYXRpb25SZXN0cmljdDtcblx0XHRcdFx0aWYgKGJsb2NrU2V0dGluZ3MuZm9yUmVnaXN0ZXJlZE9ubHkpIHtcblx0XHRcdFx0XHRyZWdpc3RyYXRpb25SZXN0cmljdCA9IFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGJsb2NrU2V0dGluZ3MuZm9yQW5vbk9ubHkpIHtcblx0XHRcdFx0XHRyZWdpc3RyYXRpb25SZXN0cmljdCA9ICFUd2lua2xlLmJsb2NrLmlzUmVnaXN0ZXJlZDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZWdpc3RyYXRpb25SZXN0cmljdCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCEoYmxvY2tTZXR0aW5ncy50ZW1wbGF0ZU5hbWUgJiYgc2hvd190ZW1wbGF0ZSkgJiYgcmVnaXN0cmF0aW9uUmVzdHJpY3QpIHtcblx0XHRcdFx0XHRjb25zdCB0ZW1wbGF0ZU5hbWUgPSBibG9ja1NldHRpbmdzLnRlbXBsYXRlTmFtZSB8fCBibG9ja1ByZXNldC52YWx1ZTtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0bGFiZWw6IChzaG93X3RlbXBsYXRlID8gYHt7JHt0ZW1wbGF0ZU5hbWV9fX06IGAgOiAnJykgKyBibG9ja1ByZXNldC5sYWJlbCxcblx0XHRcdFx0XHRcdHZhbHVlOiBibG9ja1ByZXNldC52YWx1ZSxcblx0XHRcdFx0XHRcdGRhdGE6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICd0ZW1wbGF0ZS1uYW1lJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdGVtcGxhdGVOYW1lLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiAhIWJsb2NrUHJlc2V0LnNlbGVjdGVkLFxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ6ICEhYmxvY2tQcmVzZXQuZGlzYWJsZWQsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRpZiAobGlzdC5sZW5ndGgpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRsYWJlbDogYmxvY2tHcm91cC5sYWJlbCxcblx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9wcmVzZXQgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IGtleSA9IGZvcm0ucHJlc2V0LnZhbHVlO1xuXHRcdGlmICgha2V5KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudXBkYXRlX2Zvcm0oZSwgVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2tleV0pO1xuXHRcdGlmIChmb3JtLnRlbXBsYXRlKSB7XG5cdFx0XHRmb3JtLnRlbXBsYXRlLnZhbHVlID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2tleV0udGVtcGxhdGVOYW1lIHx8IGtleTtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlKGUpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfZXhwaXJ5ID0gKGUpID0+IHtcblx0XHRjb25zdCB7ZXhwaXJ5fSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0aWYgKGUudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGV4cGlyeS5wYXJlbnROb2RlLCB0cnVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGV4cGlyeS5wYXJlbnROb2RlLCBmYWxzZSk7XG5cdFx0XHRleHBpcnkudmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suc2VlQWxzb3MgPSBbXTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zID0gZnVuY3Rpb24gKCkge1xuXHRcdGNvbnN0IHJlYXNvbiA9IHRoaXMuZm9ybS5yZWFzb24udmFsdWUucmVwbGFjZShcblx0XHRcdG5ldyBSZWdFeHAoYCg8IS0tICko5Y+C6KeBfOWPg+imiykke1R3aW5rbGUuYmxvY2suc2VlQWxzb3Muam9pbign44CBJyl9KCAtLT4pYCksXG5cdFx0XHQnJ1xuXHRcdCk7XG5cdFx0VHdpbmtsZS5ibG9jay5zZWVBbHNvcyA9IFR3aW5rbGUuYmxvY2suc2VlQWxzb3MuZmlsdGVyKChlbCkgPT4ge1xuXHRcdFx0cmV0dXJuIGVsICE9PSB0aGlzLnZhbHVlO1xuXHRcdH0pO1xuXHRcdGlmICh0aGlzLmNoZWNrZWQpIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suc2VlQWxzb3NbVHdpbmtsZS5ibG9jay5zZWVBbHNvcy5sZW5ndGhdID0gdGhpcy52YWx1ZTtcblx0XHR9XG5cdFx0Y29uc3Qgc2VlQWxzb01lc3NhZ2UgPSBUd2lua2xlLmJsb2NrLnNlZUFsc29zLmpvaW4oJ+OAgScpO1xuXHRcdGlmIChUd2lua2xlLmJsb2NrLnNlZUFsc29zLmxlbmd0aCkge1xuXHRcdFx0dGhpcy5mb3JtLnJlYXNvbi52YWx1ZSA9IGAke3JlYXNvbn08IS0tICR7d2luZG93LndnVUxTKCflj4Lop4EnLCAn5Y+D6KaLJyl9JHtzZWVBbHNvTWVzc2FnZX0gLS0+YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5mb3JtLnJlYXNvbi52YWx1ZSA9IHJlYXNvbjtcblx0XHR9XG5cdH07XG5cdC8vIE5vIGRzXG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudXBkYXRlX2Zvcm0gPSAoZSwgZGF0YSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGxldCB7ZXhwaXJ5fSA9IGRhdGE7XG5cdFx0Ly8gZG9uJ3Qgb3ZlcnJpZGUgb3JpZ2luYWwgZXhwaXJ5IGlmIHVzZUluaXRpYWxPcHRpb25zIGlzIHNldFxuXHRcdGlmICghZGF0YS51c2VJbml0aWFsT3B0aW9ucykge1xuXHRcdFx0aWYgKERhdGUucGFyc2UoZXhwaXJ5KSkge1xuXHRcdFx0XHRleHBpcnkgPSBuZXcgRGF0ZShleHBpcnkpLnRvR01UU3RyaW5nKCk7XG5cdFx0XHRcdGZvcm0uZXhwaXJ5X3ByZXNldC52YWx1ZSA9ICdjdXN0b20nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9ybS5leHBpcnlfcHJlc2V0LnZhbHVlID0gZGF0YS5leHBpcnkgfHwgJ2N1c3RvbSc7XG5cdFx0XHR9XG5cdFx0XHRmb3JtLmV4cGlyeS52YWx1ZSA9IGV4cGlyeTtcblx0XHRcdGlmIChmb3JtLmV4cGlyeV9wcmVzZXQudmFsdWUgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VmlzaWJpbGl0eShmb3JtLmV4cGlyeS5wYXJlbnROb2RlLCB0cnVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VmlzaWJpbGl0eShmb3JtLmV4cGlyeS5wYXJlbnROb2RlLCBmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGJvb2xlYW4tZmxpcHBlZCBvcHRpb25zLCBtb3JlIGF0IFtbbXc6QVBJOkJsb2NrXV1cblx0XHRkYXRhLmRpc2FibGV0YWxrID0gZGF0YS5kaXNhYmxldGFsayA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBkYXRhLmRpc2FibGV0YWxrO1xuXHRcdGRhdGEuaGFyZGJsb2NrID0gZGF0YS5oYXJkYmxvY2sgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogZGF0YS5oYXJkYmxvY2s7XG5cdFx0Ly8gZGlzYWJsZSBhdXRvYmxvY2sgaWYgYmxvY2tpbmcgYSBib3Rcblx0XHRpZiAoVHdpbmtsZS5ibG9jay51c2VySXNCb3QgfHwgL2JvdFxcYi9pLnRlc3QocmVsZXZhbnRVc2VyTmFtZSkpIHtcblx0XHRcdGRhdGEuYXV0b2Jsb2NrID0gZmFsc2U7XG5cdFx0fVxuXHRcdCQoZm9ybSlcblx0XHRcdC5maW5kKCdbbmFtZT1maWVsZF9ibG9ja19vcHRpb25zXScpXG5cdFx0XHQuZmluZCgnOmNoZWNrYm94Jylcblx0XHRcdC5lYWNoKChfaSwgZWwpID0+IHtcblx0XHRcdFx0Ly8gZG9uJ3Qgb3ZlcnJpZGUgb3JpZ2luYWwgb3B0aW9ucyBpZiB1c2VJbml0aWFsT3B0aW9ucyBpcyBzZXRcblx0XHRcdFx0aWYgKGRhdGEudXNlSW5pdGlhbE9wdGlvbnMgJiYgZGF0YVtlbC5uYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChlbC5uYW1lID09PSAnY2xvc2V2aXAnKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGNoZWNrID0gZGF0YVtlbC5uYW1lXSA9PT0gJycgfHwgISFkYXRhW2VsLm5hbWVdO1xuXHRcdFx0XHQkKGVsKS5wcm9wKCdjaGVja2VkJywgY2hlY2spO1xuXHRcdFx0fSk7XG5cdFx0aWYgKGRhdGEucHJlcGVuZFJlYXNvbiAmJiBkYXRhLnJlYXNvbikge1xuXHRcdFx0Zm9ybS5yZWFzb24udmFsdWUgPSBgJHtkYXRhLnJlYXNvbn3vvJske2Zvcm0ucmVhc29uLnZhbHVlfWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcm0ucmVhc29uLnZhbHVlID0gZGF0YS5yZWFzb24gfHwgJyc7XG5cdFx0fVxuXHRcdC8vIENsZWFyIGFuZC9vciBzZXQgYW55IHBhcnRpYWwgcGFnZSBvciBuYW1lc3BhY2UgcmVzdHJpY3Rpb25zXG5cdFx0aWYgKGZvcm0ucGFnZXJlc3RyaWN0aW9ucykge1xuXHRcdFx0Y29uc3QgJHBhZ2VTZWxlY3QgPSAkKGZvcm0pLmZpbmQoJ1tuYW1lPXBhZ2VyZXN0cmljdGlvbnNdJyk7XG5cdFx0XHRjb25zdCAkbmFtZXNwYWNlU2VsZWN0ID0gJChmb3JtKS5maW5kKCdbbmFtZT1uYW1lc3BhY2VyZXN0cmljdGlvbnNdJyk7XG5cdFx0XHQvLyBSZXNwZWN0IHVzZUluaXRpYWxPcHRpb25zIGJ5IGNsZWFyaW5nIGRhdGEgd2hlbiBzd2l0Y2hpbmcgcHJlc2V0c1xuXHRcdFx0Ly8gSW4gcHJhY3RpY2UsIHRoaXMgd2lsbCBhbHdheXMgY2xlYXIsIHNpbmNlIG5vIHBhcnRpYWwgcHJlc2V0cyB1c2UgaXRcblx0XHRcdGlmICghZGF0YS51c2VJbml0aWFsT3B0aW9ucykge1xuXHRcdFx0XHQkcGFnZVNlbGVjdC52YWwobnVsbCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0XHRcdCRuYW1lc3BhY2VTZWxlY3QudmFsKG51bGwpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQWRkIGFueSBwcmVzZXQgb3B0aW9uczsgaW4gcHJhY3RpY2UsIGp1c3QgdXNlZCBmb3IgcHJpb3IgYmxvY2sgc2V0dGluZ3Ncblx0XHRcdGlmIChkYXRhLnJlc3RyaWN0aW9ucykge1xuXHRcdFx0XHRpZiAoZGF0YS5yZXN0cmljdGlvbnMucGFnZXMgJiYgISRwYWdlU2VsZWN0LnZhbCgpLmxlbmd0aCkge1xuXHRcdFx0XHRcdGNvbnN0IHBhZ2VzID0gZGF0YS5yZXN0cmljdGlvbnMucGFnZXMubWFwKChwcikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHByLnRpdGxlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8vIHNpbmNlIHBhZ2UgcmVzdHJpY3Rpb25zIHVzZSBhbiBhamF4IHNvdXJjZSwgd2Vcblx0XHRcdFx0XHQvLyBzaG9ydC1jaXJjdWl0IHRoYXQgYW5kIGp1c3QgYWRkIGEgbmV3IG9wdGlvblxuXHRcdFx0XHRcdGZvciAoY29uc3QgcGFnZSBvZiBwYWdlcykge1xuXHRcdFx0XHRcdFx0aWYgKCEkcGFnZVNlbGVjdC5maW5kKGBvcHRpb25bdmFsdWU9JyR7JC5lc2NhcGVTZWxlY3RvcihwYWdlKX0nXWApLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuZXdPcHRpb24gPSBuZXcgT3B0aW9uKHBhZ2UsIHBhZ2UsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRcdFx0XHQkcGFnZVNlbGVjdC5hcHBlbmQobmV3T3B0aW9uKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0JHBhZ2VTZWxlY3QudmFsKFsuLi4kcGFnZVNlbGVjdC52YWwoKSwgLi4uZ2VuZXJhdGVBcnJheShwYWdlcyldKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5yZXN0cmljdGlvbnMubmFtZXNwYWNlcykge1xuXHRcdFx0XHRcdCRuYW1lc3BhY2VTZWxlY3Rcblx0XHRcdFx0XHRcdC52YWwoWy4uLiRuYW1lc3BhY2VTZWxlY3QudmFsKCksIC4uLmdlbmVyYXRlQXJyYXkoZGF0YS5yZXN0cmljdGlvbnMubmFtZXNwYWNlcyldKVxuXHRcdFx0XHRcdFx0LnRyaWdnZXIoJ2NoYW5nZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV90ZW1wbGF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGZvcm0udGVtcGxhdGU7XG5cdFx0Y29uc3Qgc2V0dGluZ3MgPSBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bdmFsdWVdO1xuXHRcdGNvbnN0IGJsb2NrQm94ID0gJChmb3JtKS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1ibG9ja10nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCBwYXJ0aWFsQm94ID0gJChmb3JtKS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0IHRlbXBsYXRlQm94ID0gJChmb3JtKS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT10ZW1wbGF0ZV0nKS5pcygnOmNoZWNrZWQnKTtcblx0XHQvLyBCbG9jayBmb3JtIGlzIG5vdCBwcmVzZW50XG5cdFx0aWYgKCFibG9ja0JveCkge1xuXHRcdFx0aWYgKHNldHRpbmdzLmluZGVmaW5pdGUgfHwgc2V0dGluZ3Mubm9uc3RhbmRhcmQpIHtcblx0XHRcdFx0aWYgKFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnkgPT09IG51bGwpIHtcblx0XHRcdFx0XHRUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ID0gZm9ybS50ZW1wbGF0ZV9leHBpcnkudmFsdWUgfHwgJyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9ybS50ZW1wbGF0ZV9leHBpcnkucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdFx0XHRmb3JtLnRlbXBsYXRlX2V4cGlyeS52YWx1ZSA9ICdpbmZpbml0eSc7XG5cdFx0XHR9IGVsc2UgaWYgKGZvcm0udGVtcGxhdGVfZXhwaXJ5LnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0Zm9ybS50ZW1wbGF0ZV9leHBpcnkudmFsdWUgPSBUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5O1xuXHRcdFx0XHRcdFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnkgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0udGVtcGxhdGVfZXhwaXJ5LnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cdFx0XHR9XG5cdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5wcmV2X3RlbXBsYXRlX2V4cGlyeSkge1xuXHRcdFx0XHRmb3JtLmV4cGlyeS52YWx1ZSA9IFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5ub3RhbGsucGFyZW50Tm9kZSwgIXNldHRpbmdzLm5vbnN0YW5kYXJkKTtcblx0XHRcdC8vIFBhcnRpYWxcblx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VmlzaWJpbGl0eShmb3JtLm5vZW1haWxfdGVtcGxhdGUucGFyZW50Tm9kZSwgcGFydGlhbEJveCk7XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5ub2NyZWF0ZV90ZW1wbGF0ZS5wYXJlbnROb2RlLCBwYXJ0aWFsQm94KTtcblx0XHR9IGVsc2UgaWYgKHRlbXBsYXRlQm94KSB7XG5cdFx0XHQvLyBPbmx5IHByZXNlbnQgaWYgYmxvY2sgJiYgdGVtcGxhdGUgZm9ybXMgYm90aCB2aXNpYmxlXG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoXG5cdFx0XHRcdGZvcm0uYmxhbmtfZHVyYXRpb24ucGFyZW50Tm9kZSxcblx0XHRcdFx0IXNldHRpbmdzLmluZGVmaW5pdGUgJiYgIXNldHRpbmdzLm5vbnN0YW5kYXJkXG5cdFx0XHQpO1xuXHRcdH1cblx0XHQvLyBPbmx5IHBhcnRpY3VsYXJseSByZWxldmFudCBpZiB0ZW1wbGF0ZSBmb3JtIGlzIHByZXNlbnRcblx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5hcnRpY2xlLnBhcmVudE5vZGUsIHNldHRpbmdzICYmICEhc2V0dGluZ3MucGFnZVBhcmFtKTtcblx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5ibG9ja19yZWFzb24ucGFyZW50Tm9kZSwgc2V0dGluZ3MgJiYgISFzZXR0aW5ncy5yZWFzb25QYXJhbSk7XG5cdFx0Ly8gQXBwbHkgcmVhc29uIGZyb20gYmxvY2tQcmVzZXRzSW5mb1xuXHRcdGlmIChzZXR0aW5ncy5yZWFzb25QYXJhbSkge1xuXHRcdFx0Zm9ybS5ibG9ja19yZWFzb24udmFsdWUgPSBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bZm9ybS5wcmVzZXQudmFsdWVdLnJlYXNvbiB8fCAnJztcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9ybS5ibG9ja19yZWFzb24udmFsdWUgPSAnJztcblx0XHR9XG5cdFx0Ly8gUGFydGlhbCBibG9ja1xuXHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VmlzaWJpbGl0eShmb3JtLmFyZWEucGFyZW50Tm9kZSwgcGFydGlhbEJveCAmJiAhYmxvY2tCb3gpO1xuXHRcdGZvcm0ucm9vdC5wcmV2aWV3ZXIuY2xvc2VQcmV2aWV3KCk7XG5cdH07XG5cdFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnkgPSBudWxsO1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnByZXZpZXcgPSAoZm9ybSkgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdGFydGljbGU6IGZvcm0uYXJ0aWNsZS52YWx1ZSxcblx0XHRcdGJsYW5rX2R1cmF0aW9uOiBmb3JtLmJsYW5rX2R1cmF0aW9uID8gZm9ybS5ibGFua19kdXJhdGlvbi5jaGVja2VkIDogZmFsc2UsXG5cdFx0XHRkaXNhYmxldGFsazogZm9ybS5kaXNhYmxldGFsay5jaGVja2VkIHx8IChmb3JtLm5vdGFsayA/IGZvcm0ubm90YWxrLmNoZWNrZWQgOiBmYWxzZSksXG5cdFx0XHRleHBpcnk6IGZvcm0udGVtcGxhdGVfZXhwaXJ5ID8gZm9ybS50ZW1wbGF0ZV9leHBpcnkudmFsdWUgOiBmb3JtLmV4cGlyeS52YWx1ZSxcblx0XHRcdGhhcmRibG9jazogVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQgPyBmb3JtLmF1dG9ibG9jay5jaGVja2VkIDogZm9ybS5oYXJkYmxvY2suY2hlY2tlZCxcblx0XHRcdGluZGVmaW5pdGU6IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KFxuXHRcdFx0XHRmb3JtLnRlbXBsYXRlX2V4cGlyeSA/IGZvcm0udGVtcGxhdGVfZXhwaXJ5LnZhbHVlIDogZm9ybS5leHBpcnkudmFsdWVcblx0XHRcdCksXG5cdFx0XHRyZWFzb246IGZvcm0uYmxvY2tfcmVhc29uLnZhbHVlLFxuXHRcdFx0dGVtcGxhdGU6IGZvcm0udGVtcGxhdGUudmFsdWUsXG5cdFx0XHRwYXJ0aWFsOiAkKGZvcm0pLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXBhcnRpYWxdJykuaXMoJzpjaGVja2VkJyksXG5cdFx0XHRwYWdlcmVzdHJpY3Rpb25zOiAkKGZvcm0ucGFnZXJlc3RyaWN0aW9ucykudmFsKCkgfHwgW10sXG5cdFx0XHRuYW1lc3BhY2VyZXN0cmljdGlvbnM6ICQoZm9ybS5uYW1lc3BhY2VyZXN0cmljdGlvbnMpLnZhbCgpIHx8IFtdLFxuXHRcdFx0bm9lbWFpbDogZm9ybS5ub2VtYWlsLmNoZWNrZWQgfHwgKGZvcm0ubm9lbWFpbF90ZW1wbGF0ZSA/IGZvcm0ubm9lbWFpbF90ZW1wbGF0ZS5jaGVja2VkIDogZmFsc2UpLFxuXHRcdFx0bm9jcmVhdGU6IGZvcm0ubm9jcmVhdGUuY2hlY2tlZCB8fCAoZm9ybS5ub2NyZWF0ZV90ZW1wbGF0ZSA/IGZvcm0ubm9jcmVhdGVfdGVtcGxhdGUuY2hlY2tlZCA6IGZhbHNlKSxcblx0XHRcdGFyZWE6IGZvcm0uYXJlYS52YWx1ZSxcblx0XHR9O1xuXHRcdGNvbnN0IHRlbXBsYXRlVGV4dCA9IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suZ2V0QmxvY2tOb3RpY2VXaWtpdGV4dChwYXJhbXMpO1xuXHRcdGZvcm0ucHJldmlld2VyLmJlZ2luUmVuZGVyKHRlbXBsYXRlVGV4dCwgYFVzZXJfdGFsazoke3JlbGV2YW50VXNlck5hbWV9L1dpa2l0ZXh0YCk7IC8vIEZvcmNlIHdpa2l0ZXh0L2NvcnJlY3QgdXNlcm5hbWVcblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShlLnRhcmdldCk7XG5cdFx0Y29uc3QgJGZvcm0gPSAkKGUudGFyZ2V0KTtcblx0XHRjb25zdCB0b0Jsb2NrID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9YmxvY2tdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgdG9XYXJuID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGVtcGxhdGVdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgdG9QYXJ0aWFsID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cGFydGlhbF0nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCB0b1RhZyA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXRhZ10nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCB0b1Byb3RlY3QgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wcm90ZWN0XScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0IHRvVW5ibG9jayA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXVuYmxvY2tdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0bGV0IGJsb2Nrb3B0aW9ucyA9IHt9O1xuXHRcdGxldCB0ZW1wbGF0ZW9wdGlvbnMgPSB7fTtcblx0XHRsZXQgdW5ibG9ja29wdGlvbnMgPSB7fTtcblx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCgkZm9ybS5maW5kKCdbbmFtZT1maWVsZF9ibG9ja19vcHRpb25zXScpKTtcblx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCgkZm9ybS5maW5kKCdbbmFtZT1maWVsZF90ZW1wbGF0ZV9vcHRpb25zXScpKTtcblx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCgkZm9ybS5maW5kKCdbbmFtZT1maWVsZF90YWdfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGZvcm0uZmluZCgnW25hbWU9ZmllbGRfdW5ibG9ja19vcHRpb25zXScpKTtcblx0XHRibG9ja29wdGlvbnMgPSBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnM7XG5cdFx0dW5ibG9ja29wdGlvbnMgPSBUd2lua2xlLmJsb2NrLmZpZWxkX3VuYmxvY2tfb3B0aW9ucztcblx0XHRjb25zdCB0b0Nsb3NldmlwID0gISFibG9ja29wdGlvbnMuY2xvc2V2aXA7XG5cdFx0dGVtcGxhdGVvcHRpb25zID0gVHdpbmtsZS5ibG9jay5maWVsZF90ZW1wbGF0ZV9vcHRpb25zO1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5kaXNhYmxldGFsayA9ICEhKHRlbXBsYXRlb3B0aW9ucy5kaXNhYmxldGFsayB8fCBibG9ja29wdGlvbnMuZGlzYWJsZXRhbGspO1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5oYXJkYmxvY2sgPSAhIWJsb2Nrb3B0aW9ucy5oYXJkYmxvY2s7XG5cdFx0Ly8gcmVtb3ZlIGV4dHJhbmVvdXNcblx0XHRkZWxldGUgYmxvY2tvcHRpb25zLmV4cGlyeV9wcmVzZXQ7XG5cdFx0ZGVsZXRlIGJsb2Nrb3B0aW9ucy5jbG9zZXZpcDtcblx0XHQvLyBQYXJ0aWFsIEFQSSByZXF1aXJlcyB0aGlzIHRvIGJlIGdvbmUsIG5vdCBmYWxzZSBvciAwXG5cdFx0aWYgKHRvUGFydGlhbCkge1xuXHRcdFx0YmxvY2tvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuXHRcdFx0dGVtcGxhdGVvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuXHRcdH1cblx0XHR0ZW1wbGF0ZW9wdGlvbnMucGFnZXJlc3RyaWN0aW9ucyA9ICRmb3JtLmZpbmQoJ1tuYW1lPXBhZ2VyZXN0cmljdGlvbnNdJykudmFsKCkgfHwgW107XG5cdFx0dGVtcGxhdGVvcHRpb25zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucyA9ICRmb3JtLmZpbmQoJ1tuYW1lPW5hbWVzcGFjZXJlc3RyaWN0aW9uc10nKS52YWwoKSB8fCBbXTtcblx0XHQvLyBGb3JtYXQgZm9yIEFQSSBoZXJlIHJhdGhlciB0aGFuIGluIHNhdmVGaWVsZHNldFxuXHRcdGJsb2Nrb3B0aW9ucy5wYWdlcmVzdHJpY3Rpb25zID0gdGVtcGxhdGVvcHRpb25zLnBhZ2VyZXN0cmljdGlvbnMuam9pbignfCcpO1xuXHRcdGJsb2Nrb3B0aW9ucy5uYW1lc3BhY2VyZXN0cmljdGlvbnMgPSB0ZW1wbGF0ZW9wdGlvbnMubmFtZXNwYWNlcmVzdHJpY3Rpb25zLmpvaW4oJ3wnKTtcblx0XHQvLyB1c2UgYmxvY2sgc2V0dGluZ3MgYXMgd2FybiBvcHRpb25zIHdoZXJlIG5vdCBzdXBwbGllZFxuXHRcdHRlbXBsYXRlb3B0aW9ucy5zdW1tYXJ5IHx8PSBibG9ja29wdGlvbnMucmVhc29uO1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5leHBpcnkgPSB0ZW1wbGF0ZW9wdGlvbnMudGVtcGxhdGVfZXhwaXJ5IHx8IGJsb2Nrb3B0aW9ucy5leHBpcnk7XG5cdFx0dGVtcGxhdGVvcHRpb25zLnByZXNldCA9IHRvQmxvY2sgPyBwYXJhbXMucHJlc2V0IDogbnVsbDtcblx0XHQvLyBDaGVjayB0YWdzXG5cdFx0Ly8gR2l2ZW4gYW4gYXJyYXkgb2YgaW5jb21wYXRpYmxlIHRhZ3MsIGNoZWNrIGlmIHdlIGhhdmUgdHdvIG9yIG1vcmUgc2VsZWN0ZWRcblx0XHRjb25zdCBjaGVja0luY29tcGF0aWJsZSA9IChjb25mbGljdHMsIGV4dHJhKSA9PiB7XG5cdFx0XHRjb25zdCBjb3VudCA9IGNvbmZsaWN0cy5yZWR1Y2UoKHN1bSwgdGFnKSA9PiB7XG5cdFx0XHRcdHJldHVybiAoc3VtICs9IHBhcmFtcy50YWcuaW5jbHVkZXModGFnKSk7XG5cdFx0XHR9LCAwKTtcblx0XHRcdGlmIChjb3VudCA+IDEpIHtcblx0XHRcdFx0bGV0IG1lc3NhZ2UgPSBgJHt3aW5kb3cud2dVTFMoJ+ivt+WcqOS7peS4i+agh+etvuS4reaLqeS4gOS9v+eUqCcsICfoq4vlnKjku6XkuIvmqJnnsaTkuK3mk4fkuIDkvb/nlKgnKX3vvJp7eyR7Y29uZmxpY3RzLmpvaW4oXG5cdFx0XHRcdFx0J31944CBe3snXG5cdFx0XHRcdCl9fX3jgIJgO1xuXHRcdFx0XHRtZXNzYWdlICs9IGV4dHJhIHx8ICcnO1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShtZXNzYWdlLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdGlmICh0b1RhZykge1xuXHRcdFx0aWYgKHBhcmFtcy50YWcubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+36Iez5bCR6YCJ5oup5LiA5Liq55So5oi36aG15qCH6K6w77yBJywgJ+iri+iHs+WwkemBuOaTh+S4gOWAi+S9v+eUqOiAhemggemdouaomeiomO+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNoZWNrSW5jb21wYXRpYmxlKFxuXHRcdFx0XHRcdFsnQmxvY2tlZCB1c2VyJywgJ1NvY2twdXBwZXQnXSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQne3tTb2NrcHVwcGV0fX3lt7LmtrXnm5Z7e0Jsb2NrZWQgdXNlcn1955qE5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCd7e1NvY2twdXBwZXR9feW3sua2teiTi3t7QmxvY2tlZCB1c2VyfX3nmoTlip/og73jgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjaGVja0luY29tcGF0aWJsZShcblx0XHRcdFx0XHRbJ0Jsb2NrZWQgdXNlcicsICdTb2NrcHVwcGV0ZWVyJ10sXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J3t7U29ja3B1cHBldGVlcn195bey5ra155uWe3tCbG9ja2VkIHVzZXJ9feeahOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQne3tTb2NrcHVwcGV0ZWVyfX3lt7LmtrXok4t7e0Jsb2NrZWQgdXNlcn1955qE5Yqf6IO944CCJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0Y2hlY2tJbmNvbXBhdGlibGUoXG5cdFx0XHRcdFx0WydTb2NrcHVwcGV0JywgJ1NvY2twdXBwZXRlZXInXSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+S7juS4u+i0puWPt+WSjOWIhui6q+i0puWPt+S4remAieaLqeS4gOS4quOAgicsICfoq4vlvp7kuLvos6zomZ/lkozliIbouqvos6zomZ/kuK3pgbjmk4fkuIDlgIvjgIInKVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50YWcuaW5jbHVkZXMoJ1NvY2twdXBwZXQnKSAmJiBwYXJhbXMuc3BwVXNlcm5hbWUudHJpbSgpID09PSAnJykge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+aPkOS+m+WCgOWEoei0puWPt+eahOS4u+i0puWPt+eUqOaIt+WQje+8gScsICfoq4vmj5DkvpvlgoDlhKHos6zomZ/nmoTkuLvos6zomZ/kvb/nlKjogIXlkI3nqLHvvIEnKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAodG9CbG9jaykge1xuXHRcdFx0aWYgKGJsb2Nrb3B0aW9ucy5wYXJ0aWFsKSB7XG5cdFx0XHRcdGlmIChibG9ja29wdGlvbnMuZGlzYWJsZXRhbGsgJiYgIWJsb2Nrb3B0aW9ucy5uYW1lc3BhY2VyZXN0cmljdGlvbnMuaW5jbHVkZXMoJzMnKSkge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6YOo5YiG5bCB56aB5peg5rOV6Zi75q2i57yW6L6R6Ieq5bex55qE6K6o6K666aG177yM6Zmk6Z2e5Lmf5bCB56aB5LqGVXNlciB0YWxr5ZG95ZCN56m66Ze077yBJyxcblx0XHRcdFx0XHRcdFx0J+mDqOWIhuWwgemOlueEoeazlemYu+atoue3qOi8r+iHquW3seeahOiojuirlumgge+8jOmZpOmdnuS5n+WwgemOluS6hlVzZXIgdGFsa+WRveWQjeepuumWk++8gSdcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWJsb2Nrb3B0aW9ucy5uYW1lc3BhY2VyZXN0cmljdGlvbnMgJiYgIWJsb2Nrb3B0aW9ucy5wYWdlcmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRcdFx0aWYgKCFibG9ja29wdGlvbnMubm9lbWFpbCAmJiAhYmxvY2tvcHRpb25zLm5vY3JlYXRlKSB7XG5cdFx0XHRcdFx0XHQvLyBCbGFuayBlbnRyaWVzIHRlY2huaWNhbGx5IGFsbG93ZWRcblx0XHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ayoeaciemAieaLqemhtemdouaIluWRveWQjeepuumXtO+8jOS5n+ayoeacieWBnOeUqOeUteWtkOmCruS7tuaIluemgeatouWIm+W7uui0puWPt++8m+ivt+mAieaLqeiHs+WwkeS4gOS4qumAiemhueS7peW6lOeUqOmDqOWIhuWwgeemge+8gScsXG5cdFx0XHRcdFx0XHRcdFx0J+aykuaciemBuOaTh+mggemdouaIluWRveWQjeepuumWk++8jOS5n+aykuacieWBnOeUqOmbu+WtkOmDteS7tuaIluemgeatouW7uueri+izrOiZn++8m+iri+mBuOaTh+iHs+WwkeS4gOWAi+mBuOmgheS7peaHieeUqOmDqOWIhuWwgemOlu+8gSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlsIbopoHov5vooYzlsIHnpoHvvIzkvYbmsqHmnInpmLvmraLku7vkvZXpobXpnaLmiJblkb3lkI3nqbrpl7TnmoTnvJbovpHvvIznoa7lrpropoHnu6fnu63vvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlsIfopoHpgLLooYzlsIHpjpbvvIzkvYbmspLmnInpmLvmraLku7vkvZXpoIHpnaLmiJblkb3lkI3nqbrplpPnmoTnt6jovK/vvIznorrlrpropoHnubznuozvvJ8nXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghYmxvY2tvcHRpb25zLmV4cGlyeSkge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+aPkOS+m+i/h+acn+aXtumXtO+8gScsICfoq4vmj5DkvpvpgY7mnJ/mmYLplpPvvIEnKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSBlbHNlIGlmIChNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShibG9ja29wdGlvbnMuZXhwaXJ5KSAmJiAhVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQpIHtcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfnpoHmraLml6DpmZDmnJ/lsIHnpoFJUOWcsOWdgO+8gScsICfnpoHmraLnhKHpmZDmnJ/lsIHpjpZJUOS9jeWdgO+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWJsb2Nrb3B0aW9ucy5yZWFzb24pIHtcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5DkvpvlsIHnpoHnkIbnlLHvvIEnLCAn6KuL5o+Q5L6b5bCB6Y6W55CG55Sx77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRjb25zdCBzdGF0dXNFbGVtZW50ID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+aJp+ihjOWwgeemgScsICfln7fooYzlsIHpjpYnKSk7XG5cdFx0XHRibG9ja29wdGlvbnMuYWN0aW9uID0gJ2Jsb2NrJztcblx0XHRcdGJsb2Nrb3B0aW9ucy51c2VyID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRcdC8vIGJvb2xlYW4tZmxpcHBlZCBvcHRpb25zXG5cdFx0XHRibG9ja29wdGlvbnMuYW5vbm9ubHkgPSBibG9ja29wdGlvbnMuaGFyZGJsb2NrID8gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHRcdGJsb2Nrb3B0aW9ucy5hbGxvd3VzZXJ0YWxrID0gYmxvY2tvcHRpb25zLmRpc2FibGV0YWxrID8gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHRcdC8qKlxuXHRcdFx0ICogQ2hlY2sgaWYgYmxvY2sgc3RhdHVzIGNoYW5nZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgZm9ybS5cblx0XHRcdCAqIFRoZXJlJ3MgYSBsb3QgdG8gY29uc2lkZXIgaGVyZS4gbGlzdD1ibG9ja3MgcHJvdmlkZXMgdGhlXG5cdFx0XHQgKiBjdXJyZW50IGJsb2NrIHN0YXR1cywgYnV0IHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gaXNzdWVzIHdpdGhcblx0XHRcdCAqIHJlbHlpbmcgb24gaXQuIEZpcnN0LCB0aGUgaWQgZG9lc24ndCB1cGRhdGUgb24gYSByZWJsb2NrLFxuXHRcdFx0ICogbWVhbmluZyB0aGUgaW5kaXZpZHVhbCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgY29tcGFyZWQuIFRoaXNcblx0XHRcdCAqIGNhbiBiZSBkb25lIHJvdWdobHkgd2l0aCBKU09OLnN0cmluZ2lmeSAtIHdlIGNhbiB0aGFua2Z1bGx5XG5cdFx0XHQgKiByZWx5IG9uIG9yZGVyIGZyb20gdGhlIHNlcnZlciwgYWx0aG91Z2ggc29ydGluZyB3b3VsZCBiZVxuXHRcdFx0ICogZmluZSBpZiBub3QgLSBidXQgZmFsc2V5IHZhbHVlcyBhcmUgcHJvYmxlbWF0aWMgYW5kIGlzXG5cdFx0XHQgKiBub24taWRlYWwuIE1vcmUgaW1wb3J0YW50bHksIGxpc3Q9YmxvY2tzIHdvbid0IGluZGljYXRlIGlmIGFcblx0XHRcdCAqIG5vbi1ibG9ja2VkIHVzZXIgaXMgYmxvY2tlZCB0aGVuIHVuYmxvY2tlZC4gVGhpcyBzaG91bGQgYmVcblx0XHRcdCAqIGV4Y2VlZGluZ3kgcmFyZSwgYnV0IHJlZ2FyZGxlc3MsIHdlIHRodXMgbmVlZCB0byBjaGVja1xuXHRcdFx0ICogbGlzdD1sb2dldmVudHMsIHdoaWNoIGhhcyBhIG5pY2VseSB1cGRhdGluZyBsb2dpZFxuXHRcdFx0ICogcGFyYW1ldGVyLiBXZSBjYW4ndCByZWx5IGp1c3Qgb24gdGhhdCwgdGhvdWdoLCBzaW5jZSBpdFxuXHRcdFx0ICogZG9lc24ndCBhY2NvdW50IGZvciBibG9ja3MgdGhhdCBoYXZlIGV4cGlyZWQgb24gdGhlaXIgb3duLlxuXHRcdFx0ICogQXMgc3VjaCwgd2UgdXNlIGJvdGguIFVzaW5nIHNvbWUgdGVybmFyaWVzLCB0aGUgbG9naWRcblx0XHRcdCAqIHZhcmlhYmxlcyBhcmUgZmFsc2UgaWYgdGhlcmUncyBubyBsb2dldmVudHMsIHNvIGlmIHRoZXlcblx0XHRcdCAqIGFyZW4ndCBlcXVhbCB3ZSBkZWZpbnRlbHkgaGF2ZSBhIGNoYW5nZWQgZW50cnkgKHNlbmRcblx0XHRcdCAqIGNvbmZpcm1hdGlvbikuIElmIHRoZXkgYXJlIGVxdWFsLCB0aGVuIGVpdGhlciB0aGUgdXNlciB3YXNcblx0XHRcdCAqIG5ldmVyIGJsb2NrZWQgKHRoZSBibG9jayBzdGF0dXNlcyB3aWxsIGJlIGVxdWFsLCBub1xuXHRcdFx0ICogY29uZmlybWF0aW9uKSBvciB0aGVyZSdzIG5vIG5ldyBibG9jaywgaW4gd2hpY2ggY2FzZSBlaXRoZXJcblx0XHRcdCAqIGEgYmxvY2sgZXhwaXJlZCAoZGlmZmVyZW50IHN0YXR1c2VzLCBjb25maXJtYXRpb24pIG9yIHRoZVxuXHRcdFx0ICogc2FtZSBibG9jayBpcyBzdGlsbCBhY3RpdmUgKHNhbWUgc3RhdHVzLCBubyBjb25maXJtYXRpb24pLlxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0bGlzdDogJ2Jsb2Nrc3xsb2dldmVudHMnLFxuXHRcdFx0XHRsZXR5cGU6ICdibG9jaycsXG5cdFx0XHRcdGxlbGltaXQ6IDEsXG5cdFx0XHRcdGxldGl0bGU6IGBVc2VyOiR7YmxvY2tvcHRpb25zLnVzZXJ9YCxcblx0XHRcdH07XG5cdFx0XHQvLyBia3VzZXJzIGRvZXNuJ3QgY2F0Y2ggc2luZ2xlIElQcyBibG9ja2VkIGFzIHBhcnQgb2YgYSByYW5nZSBibG9ja1xuXHRcdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MoYmxvY2tvcHRpb25zLnVzZXIsIHRydWUpKSB7XG5cdFx0XHRcdHF1ZXJ5LmJraXAgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHF1ZXJ5LmJrdXNlcnMgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdFx0cXVlcnkubGlzdCArPSAnfHVzZXJzJztcblx0XHRcdFx0cXVlcnkudXNwcm9wID0gJ2dyb3Vwcyc7XG5cdFx0XHRcdHF1ZXJ5LnVzdXNlcnMgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdFx0cXVlcnkubWV0YSA9ICd0b2tlbnMnO1xuXHRcdFx0XHRxdWVyeS50eXBlID0gJ3VzZXJyaWdodHMnO1xuXHRcdFx0fVxuXHRcdFx0dm9pZCBhcGkuZ2V0KHF1ZXJ5KS50aGVuKChkYXRhKSA9PiB7XG5cdFx0XHRcdGxldCBbYmxvY2tdID0gZGF0YS5xdWVyeS5ibG9ja3M7XG5cdFx0XHRcdC8vIEFzIHdpdGggdGhlIGluaXRpYWwgZGF0YSBmZXRjaCwgaWYgYW4gSVAgaXMgYmxvY2tlZFxuXHRcdFx0XHQvLyAqYW5kKiByYW5nZWJsb2NrZWQsIHRoaXMgd291bGQgb25seSBncmFiIHdoaWNoZXZlclxuXHRcdFx0XHQvLyBibG9jayBpcyBtb3JlIHJlY2VudCwgd2hpY2ggd291bGQgbGlrZWx5IG1lYW4gYVxuXHRcdFx0XHQvLyBtaXNtYXRjaC4gIEhvd2V2ZXIsIGlmIHRoZSByYW5nZWJsb2NrIGlzIHVwZGF0ZWRcblx0XHRcdFx0Ly8gd2hpbGUgZmlsbGluZyBvdXQgdGhlIGZvcm0sIHRoaXMgd29uJ3QgZGV0ZWN0IHRoYXQsXG5cdFx0XHRcdC8vIGJ1dCB0aGF0J3MgcHJvYmFibHkgZmluZS5cblx0XHRcdFx0aWYgKGRhdGEucXVlcnkuYmxvY2tzLmxlbmd0aCA+IDEgJiYgYmxvY2sudXNlciAhPT0gcmVsZXZhbnRVc2VyTmFtZSkge1xuXHRcdFx0XHRcdFssIGJsb2NrXSA9IGRhdGEucXVlcnkuYmxvY2tzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IFtsb2dldmVudHNdID0gZGF0YS5xdWVyeS5sb2dldmVudHM7XG5cdFx0XHRcdGNvbnN0IHVzZXIgPSBkYXRhLnF1ZXJ5LnVzZXJzID8gZGF0YS5xdWVyeS51c2Vyc1swXSA6IG51bGw7XG5cdFx0XHRcdGNvbnN0IGxvZ2lkID0gZGF0YS5xdWVyeS5sb2dldmVudHMubGVuZ3RoID8gbG9nZXZlbnRzLmxvZ2lkIDogZmFsc2U7XG5cdFx0XHRcdGlmIChsb2dpZCAhPT0gVHdpbmtsZS5ibG9jay5ibG9ja0xvZ0lkIHx8ICEhYmxvY2sgIT09ICEhVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvKSB7XG5cdFx0XHRcdFx0bGV0IG1lc3NhZ2UgPSBibG9ja29wdGlvbnMudXNlciArIHdpbmRvdy53Z1VMUygn55qE5bCB56aB54q25oCB5bey6KKr5L+u5pS544CCJywgJ+eahOWwgemOlueLgOaFi+W3suiiq+S/ruaUueOAgicpO1xuXHRcdFx0XHRcdGlmIChibG9jaykge1xuXHRcdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoJ+aWsOeKtuaAge+8micsICfmlrDni4DmhYvvvJonKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoJ+acgOaWsOaXpeW/l++8micsICfmnIDmlrDml6XoqozvvJonKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bGV0IGxvZ0V4cGlyeSA9ICcnO1xuXHRcdFx0XHRcdGlmIChsb2dldmVudHMucGFyYW1zLmR1cmF0aW9uKSB7XG5cdFx0XHRcdFx0XHRpZiAobG9nZXZlbnRzLnBhcmFtcy5kdXJhdGlvbiA9PT0gJ2luZmluaXR5Jykge1xuXHRcdFx0XHRcdFx0XHRsb2dFeHBpcnkgPSB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGV4cGlyeURhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZShsb2dldmVudHMucGFyYW1zLmV4cGlyeSk7XG5cdFx0XHRcdFx0XHRcdGxvZ0V4cGlyeSArPVxuXHRcdFx0XHRcdFx0XHRcdChleHBpcnlEYXRlLmlzQmVmb3JlKG5ldyBEYXRlKCkpID8gd2luZG93LndnVUxTKCfov4fmnJ/kuo4nLCAn6YGO5pyf5pa8JykgOiAn55u05YiwJykgK1xuXHRcdFx0XHRcdFx0XHRcdGV4cGlyeURhdGUuY2FsZW5kYXIoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gbm8gZHVyYXRpb24sIGFjdGlvbj11bmJsb2NrLCBqdXN0IHNob3cgdGltZXN0YW1wXG5cdFx0XHRcdFx0XHRsb2dFeHBpcnkgPSBg5pa8JHtuZXcgTW9yZWJpdHMuZGF0ZShsb2dldmVudHMudGltZXN0YW1wKS5jYWxlbmRhcigpfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1lc3NhZ2UgKz0gYOeUsSR7bG9nZXZlbnRzLnVzZXJ9JHt3aW5kb3cud2dVTFMoJ+S7peKAnCcsICfku6XjgIwnKX0ke2xvZ2V2ZW50cy5jb21tZW50fSR7d2luZG93LndnVUxTKCfigJ0nLCAn44CNJyl9JHtcblx0XHRcdFx0XHRcdGJsb2NrQWN0aW9uVGV4dFtsb2dldmVudHMuYWN0aW9uXVxuXHRcdFx0XHRcdH0ke2xvZ0V4cGlyeX0ke3dpbmRvdy53Z1VMUygn77yM5L2g5oOz6KaB5Lul5L2g55qE6K6+572u5pu05pS55bCB56aB5ZCX77yfJywgJ++8jOS9oOaDs+imgeS7peS9oOeahOioreWumuiuiuabtOWwgemOluWXju+8nycpfWA7XG5cdFx0XHRcdFx0aWYgKCFjb25maXJtKG1lc3NhZ2UpKSB7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmiafooYzlsIHnpoEnLCAn5Z+36KGM5bCB6Y6WJyksXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raI5pON5L2cJywgJ+S9v+eUqOiAheWPlua2iOaTjeS9nCcpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRibG9ja29wdGlvbnMucmVibG9jayA9IDE7IC8vIFdyaXRpbmcgb3ZlciBhIGJsb2NrIHdpbGwgZmFpbCBvdGhlcndpc2Vcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBncm91cHNDYW5CZVJlbW92ZWQgPSBbXG5cdFx0XHRcdFx0J2F1dG9yZXZpZXdlcicsXG5cdFx0XHRcdFx0J2NvbmZpcm1lZCcsXG5cdFx0XHRcdFx0J3JucnN2ZXJpZnktZXhlbXB0Jyxcblx0XHRcdFx0XHQnbWFzc21lc3NhZ2Utc2VuZGVyJyxcblx0XHRcdFx0XHQncGF0cm9sbGVyJyxcblx0XHRcdFx0XHQndGVtcGxhdGVlZGl0b3InLFxuXHRcdFx0XHRcdCd0cmFuc3dpa2knLFxuXHRcdFx0XHRdO1xuXHRcdFx0XHRsZXQgZ3JvdXBzVG9CZVJlbW92ZWQgPSBbXTtcblx0XHRcdFx0aWYgKHVzZXIgJiYgTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoYmxvY2tvcHRpb25zLmV4cGlyeSkpIHtcblx0XHRcdFx0XHRncm91cHNUb0JlUmVtb3ZlZCA9IHVzZXIuZ3JvdXBzLmZpbHRlcigoZ3JvdXApID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBncm91cHNDYW5CZVJlbW92ZWQuaW5jbHVkZXMoZ3JvdXApO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGV4ZWN1dGUgYmxvY2tcblx0XHRcdFx0YmxvY2tvcHRpb25zLnRhZ3MgPSBUd2lua2xlLmNoYW5nZVRhZ3M7XG5cdFx0XHRcdGJsb2Nrb3B0aW9ucy50b2tlbiA9IG13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJyk7XG5cdFx0XHRcdGNvbnN0IG1iQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn5omn6KGM5bCB56aBJywgJ+Wft+ihjOWwgemOlicpLCBibG9ja29wdGlvbnMsICgpID0+IHtcblx0XHRcdFx0XHRzdGF0dXNFbGVtZW50LmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdGlmICh0b1dhcm4pIHtcblx0XHRcdFx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suaXNzdWVfdGVtcGxhdGUodGVtcGxhdGVvcHRpb25zKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRvQ2xvc2V2aXApIHtcblx0XHRcdFx0XHRcdGNvbnN0IHZpcFBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHQnUWl1d2VuX3RhbGs65oql5ZGK5b2T5YmN56C05Z2PJyxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflhbPpl63or7fmsYInLCAn6Zec6ZaJ6KuL5rGCJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR2aXBQYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHRcdFx0dmlwUGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMoYmxvY2tvcHRpb25zKTtcblx0XHRcdFx0XHRcdHZpcFBhZ2UubG9hZChUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNsb3NlUmVxdWVzdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChncm91cHNUb0JlUmVtb3ZlZC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByaWdodFN0YXR1c0VsZW1lbnQgPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn56e76Zmk5p2D6ZmQJywgJ+enu+mZpOasiumZkCcpKTtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivpeeUqOaIt+acieS7peS4i+adg+mZkO+8micsICfoqbLkvb/nlKjogIXmnInku6XkuIvmrIrpmZDvvJonKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRncm91cHNUb0JlUmVtb3ZlZC5qb2luKCfjgIEnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ++8jOaCqOaYr+WQpuaDs+imgeWQjOaXtuenu+mZpOi/meS6m+adg+mZkO+8nycsICfvvIzmgqjmmK/lkKbmg7PopoHlkIzmmYLnp7vpmaTpgJnkupvmrIrpmZDvvJ8nKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmV2b2tlT3B0aW9ucyA9IHtcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb246ICd1c2VycmlnaHRzJyxcblx0XHRcdFx0XHRcdFx0XHR1c2VyOiBibG9ja29wdGlvbnMudXNlcixcblx0XHRcdFx0XHRcdFx0XHRyZW1vdmU6IGdyb3Vwc1RvQmVSZW1vdmVkLmpvaW4oJ3wnKSxcblx0XHRcdFx0XHRcdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn55So5oi35bey6KKr5peg6ZmQ5pyf5bCB56aBJywgJ+S9v+eUqOiAheW3suiiq+eEoemZkOacn+WwgemOlicpLFxuXHRcdFx0XHRcdFx0XHRcdHRva2VuOiBkYXRhLnF1ZXJ5LnRva2Vucy51c2VycmlnaHRzdG9rZW4sXG5cdFx0XHRcdFx0XHRcdFx0dGFnczogVHdpbmtsZS5jaGFuZ2VUYWdzLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRjb25zdCBtckFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+enu+mZpOadg+mZkCcsICfnp7vpmaTmrIrpmZAnKSxcblx0XHRcdFx0XHRcdFx0XHRyZXZva2VPcHRpb25zLFxuXHRcdFx0XHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdHJpZ2h0U3RhdHVzRWxlbWVudC5pbmZvKGDlt7Lnp7vpmaQke2dyb3Vwc1RvQmVSZW1vdmVkLmpvaW4oJ+OAgScpfWApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0bXJBcGkucG9zdCgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmlnaHRTdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raI5pON5L2c44CCJywgJ+S9v+eUqOiAheWPlua2iOaTjeS9nOOAgicpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRtYkFwaS5wb3N0KCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2UgaWYgKHRvV2Fybikge1xuXHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suaXNzdWVfdGVtcGxhdGUodGVtcGxhdGVvcHRpb25zKTtcblx0XHR9XG5cdFx0aWYgKHRvVGFnIHx8IHRvUHJvdGVjdCkge1xuXHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRcdGNvbnN0IHVzZXJQYWdlID0gYFVzZXI6JHttdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKX1gO1xuXHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHR1c2VyUGFnZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDmiJbkv53miqTnlKjmiLfpobUnLCAn5qiZ6KiY5oiW5L+d6K235L2/55So6ICF6aCB6Z2iJylcblx0XHRcdCk7XG5cdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5ibG9jay5jYWxsYmFjay50YWd1c2VycGFnZSk7XG5cdFx0fVxuXHRcdGlmICh0b1VuYmxvY2spIHtcblx0XHRcdGlmICghdW5ibG9ja29wdGlvbnMucmVhc29uKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+35o+Q5L6b6Kej6Zmk5bCB56aB55CG55Sx77yBJywgJ+iri+aPkOS+m+ino+mZpOWwgemOlueQhueUse+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZS50YXJnZXQpO1xuXHRcdFx0Y29uc3QgdW5ibG9ja1N0YXR1c0VsZW1lbnQgPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn5omn6KGM6Kej6Zmk5bCB56aBJywgJ+Wft+ihjOino+mZpOWwgemOlicpKTtcblx0XHRcdHVuYmxvY2tvcHRpb25zLmFjdGlvbiA9ICd1bmJsb2NrJztcblx0XHRcdHVuYmxvY2tvcHRpb25zLnVzZXIgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHRcdC8vIGV4ZWN1dGUgdW5ibG9ja1xuXHRcdFx0dW5ibG9ja29wdGlvbnMudGFncyA9IFR3aW5rbGUuY2hhbmdlVGFncztcblx0XHRcdHVuYmxvY2tvcHRpb25zLnRva2VuID0gbXcudXNlci50b2tlbnMuZ2V0KCdjc3JmVG9rZW4nKTtcblx0XHRcdGNvbnN0IHVuYmxvY2tNYkFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfmiafooYzop6PpmaTlsIHnpoEnLCAn5Z+36KGM6Kej6Zmk5bCB6Y6WJyksXG5cdFx0XHRcdHVuYmxvY2tvcHRpb25zLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0dW5ibG9ja1N0YXR1c0VsZW1lbnQuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0XHR1bmJsb2NrTWJBcGkucG9zdCgpO1xuXHRcdH1cblx0XHRpZiAoIXRvQmxvY2sgJiYgIXRvV2FybiAmJiAhdG9UYWcgJiYgIXRvUHJvdGVjdCAmJiAhdG9VbmJsb2NrKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+e7mVR3aW5rbGXngrnkuovlgZrvvIEnLCAn6KuL57WmVHdpbmtsZem7nuS6i+WBmu+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdH0pO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay50YWd1c2VycGFnZSA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRjb25zdCBzdGF0ZWxlbSA9IHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdGlmIChwYXJhbXMuYWN0aW9udHlwZS5pbmNsdWRlcygndGFnJykpIHtcblx0XHRcdGNvbnN0IHRhZ3MgPSBbXTtcblx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWcpIHtcblx0XHRcdFx0bGV0IHRhZ3RleHQgPSBge3ske3RhZ31gO1xuXHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdGNhc2UgJ0Jsb2NrZWQgdXNlcic6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdTb2NrcHVwcGV0Jzpcblx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gYFxcbnwgMSA9ICR7cGFyYW1zLnNwcFVzZXJuYW1lLnRyaW0oKX1gO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSBgXFxufCAyID0gJHtwYXJhbXMuc3BwVHlwZS50cmltKCl9YDtcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMuc3BwRXZpZGVuY2UudHJpbSgpKSB7XG5cdFx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gYFxcbnwgZXZpZGVuY2UgPSAke3BhcmFtcy5zcHBFdmlkZW5jZS50cmltKCl9YDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gJ1xcbnwgbG9ja2VkID0gbm8nO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxufCBub3RibG9ja2VkID0gbm8nO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxuJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ1NvY2twdXBwZXRlZXInOlxuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxufCAxID0gYmxvY2tlZCc7XG5cdFx0XHRcdFx0XHR0YWd0ZXh0ICs9IGBcXG58IGNoZWNrZWQgPSAke3BhcmFtcy5zcG1DaGVja2VkID8gJ3llcycgOiAnJ31gO1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5zcG1FdmlkZW5jZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dGFndGV4dCArPSBgXFxufCBldmlkZW5jZSA9ICR7cGFyYW1zLnNwbUV2aWRlbmNlLnRyaW0oKX1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxuJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+acquefpeeahOeUqOaIt+mhteaooeadv++8gScsICfmnKrnn6XnmoTkvb/nlKjogIXpoIHpnaLmqKHmnb/vvIEnKSwge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRhZ3RleHQgKz0gJ319Jztcblx0XHRcdFx0dGFnc1t0YWdzLmxlbmd0aF0gPSB0YWd0ZXh0O1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgdGV4dCA9IHRhZ3Muam9pbignXFxuJyk7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+agh+iusOiiq+awuOS5heWwgeemgeeahOeUqOaIt+mhtScsICfmqJnoqJjooqvmsLjkuYXlsIHpjpbnmoTkvb/nlKjogIXpoIHpnaInKSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgoKSA9PiB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKHdpbmRvdy53Z1VMUygn5qCH6K6w55So5oi36aG1JywgJ+aomeiomOS9v+eUqOiAhemggemdoicpLCAn5a6M5oiQJyk7XG5cdFx0XHRcdHN0YXRlbGVtLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+ato+WcqOS/neaKpOmhtemdoicsICfmraPlnKjkv53orbfpoIHpnaInKSk7XG5cdFx0XHRcdHBhZ2VvYmoubG9hZChUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnByb3RlY3R1c2VycGFnZSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcm90ZWN0dXNlcnBhZ2UocGFnZW9iaik7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnByb3RlY3R1c2VycGFnZSA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRjb25zdCBzdGF0ZWxlbSA9IHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdGlmIChwYXJhbXMuYWN0aW9udHlwZS5pbmNsdWRlcygncHJvdGVjdCcpKSB7XG5cdFx0XHRpZiAocGFnZW9iai5leGlzdHMoKSkge1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRQcm90ZWN0aW9uKCdzeXNvcCcsICdpbmRlZmluaXRlJyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0TW92ZVByb3RlY3Rpb24oJ3N5c29wJywgJ2luZGVmaW5pdGUnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlUHJvdGVjdGlvbignc3lzb3AnLCAnaW5kZWZpbml0ZScpO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+iiq+awuOS5heWwgeemgeeahOeUqOaIt+mhtScsICfooqvmsLjkuYXlsIHpjpbnmoTkvb/nlKjogIXpoIHpnaInKSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmoucHJvdGVjdCgoKSA9PiB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5oqk55So5oi36aG1JywgJ+S/neitt+S9v+eUqOiAhemggemdoicpLFxuXHRcdFx0XHRcdHBhZ2VvYmouZXhpc3RzKCkgPyB3aW5kb3cud2dVTFMoJ+W3suWFqOS/neaKpCcsICflt7Llhajkv53orbcnKSA6IHdpbmRvdy53Z1VMUygn5bey55m957q45L+d5oqkJywgJ+W3sueZvee0meS/neittycpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHN0YXRlbGVtLmluZm8oJ+WFqOmDqOWujOaIkCcpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0YXRlbGVtLmluZm8oJ+WFqOmDqOWujOaIkCcpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5pc3N1ZV90ZW1wbGF0ZSA9IChmb3JtRGF0YSkgPT4ge1xuXHRcdC8vIFVzZSB3Z1JlbGV2YW50VXNlck5hbWUgdG8gZW5zdXJlIHRoZSBibG9jayB0ZW1wbGF0ZSBnb2VzIHRvIGEgc2luZ2xlIElQIGFuZCBub3QgdG8gdGhlXG5cdFx0Ly8gXCJ0YWxrIHBhZ2VcIiBvZiBhbiBJUCByYW5nZSAod2hpY2ggZG9lcyBub3QgZXhpc3QpXG5cdFx0Y29uc3QgdXNlclRhbGtQYWdlID0gYFVzZXJfdGFsazoke213LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpfWA7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0Li4uZm9ybURhdGEsXG5cdFx0XHRtZXNzYWdlRGF0YTogVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2Zvcm1EYXRhLnRlbXBsYXRlXSxcblx0XHRcdHVzZXJ0YWxrX3N1bW1hcnk6IFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tmb3JtRGF0YS5wcmVzZXQgfHwgZm9ybURhdGEudGVtcGxhdGVdLnN1bW1hcnksXG5cdFx0XHRyZWFzb246IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ibG9ja19yZWFzb24sXG5cdFx0XHRkaXNhYmxldGFsazogVHdpbmtsZS5ibG9jay5maWVsZF90ZW1wbGF0ZV9vcHRpb25zLm5vdGFsayxcblx0XHRcdG5vZW1haWw6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub2VtYWlsX3RlbXBsYXRlLFxuXHRcdFx0bm9jcmVhdGU6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub2NyZWF0ZV90ZW1wbGF0ZSxcblx0XHR9O1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gdXNlclRhbGtQYWdlO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdCflrozmiJDvvIzlsIblnKjlh6Dnp5LlkI7liqDovb3nlKjmiLforqjorrrpobUnLFxuXHRcdFx0J+WujOaIkO+8jOWwh+WcqOW5vuenkuW+jOi8ieWFpeS9v+eUqOiAheiojuirlumggSdcblx0XHQpO1xuXHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZSh1c2VyVGFsa1BhZ2UsIHdpbmRvdy53Z1VMUygn55So5oi36K6o6K666aG15L+u5pS5JywgJ+S9v+eUqOiAheiojuirlumggeS/ruaUuScpKTtcblx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuYmxvY2suY2FsbGJhY2subWFpbik7XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2xvc2VSZXF1ZXN0ID0gKHZpcFBhZ2UpID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSB2aXBQYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdGxldCB0ZXh0ID0gdmlwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdGNvbnN0IHN0YXR1c0VsZW1lbnQgPSB2aXBQYWdlLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRjb25zdCB1c2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdGNvbnN0IGV4cGlyeVRleHQgPSBNb3JlYml0cy5zdHJpbmcuZm9ybWF0VGltZShwYXJhbXMuZXhwaXJ5KTtcblx0XHRjb25zdCBjb21tZW50ID0gYHt7QmxvY2tlZHwke01vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpID8gJ2luZGVmJyA6IGV4cGlyeVRleHR9fX3jgIJgO1xuXHRcdGNvbnN0IHJlcXVlc3RMaXN0ID0gdGV4dC5zcGxpdCgvKD89XFxuPT09Lis9PT1cXHMqXFxuKS8pO1xuXHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdGxldCBoaWRlbmFtZSA9IGZhbHNlO1xuXHRcdGNvbnN0IHZpcFJlID0gbmV3IFJlZ0V4cChcblx0XHRcdGB7e1xcXFxzKltWdl1hbmRhbFxcXFxzKlxcXFx8XFxcXHMqKDFcXFxccyo9XFxcXHMqKT8ke01vcmViaXRzLnBhZ2VOYW1lUmVnZXgoXG5cdFx0XHRcdHVzZXJOYW1lXG5cdFx0XHQpfVxcXFxzKihcXFxcfFxcXFxzKmhpZGVuYW1lXFxcXHMqPVtefF0rKT99fWAsXG5cdFx0XHQnbSdcblx0XHQpO1xuXHRcdGZvciAobGV0IHJlcXVlc3Qgb2YgcmVxdWVzdExpc3QpIHtcblx0XHRcdGlmICh2aXBSZS5leGVjKHJlcXVlc3QpKSB7XG5cdFx0XHRcdGhpZGVuYW1lID0gL1xcfFxccypoaWRlbmFtZVxccyo9W158XSsvLnRlc3QocmVxdWVzdCk7XG5cdFx0XHRcdHJlcXVlc3QgPSByZXF1ZXN0LnRyaW1FbmQoKTtcblx0XHRcdFx0bGV0IG5ld1RleHQgPSByZXF1ZXN0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L14oXFwqXFxzKuWkhOeQhu+8milbIFxcdF0qKDwhLS0g6Z2e566h55CG5ZOh5YOF5Y+v5qiZ6KiY5bey5Z+36KGM55qE5bCB56aB77yM6Yed5bCN5o+Q5aCx55qE5oSP6KaL6KuL5pS+5Zyo5LiL5LiA6KGMIC0tPik/WyBcXHRdKiQvbSxcblx0XHRcdFx0XHRgJDEke2NvbW1lbnR9LS1+fmAuY29uY2F0KCd+ficpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChyZXF1ZXN0ID09PSBuZXdUZXh0KSB7XG5cdFx0XHRcdFx0bmV3VGV4dCA9IGAke3JlcXVlc3R9XFxuKiDlpITnkIbvvJoke2NvbW1lbnR9LS1+fmAuY29uY2F0KCd+ficpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlcXVlc3QgPSBgJHtuZXdUZXh0fVxcbmA7XG5cdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZm91bmQpIHtcblx0XHRcdHN0YXR1c0VsZW1lbnQud2Fybih3aW5kb3cud2dVTFMoJ+ayoeacieaJvuWIsOebuOWFs+eahOivt+axgicsICfmspLmnInmib7liLDnm7jpl5znmoToq4vmsYInKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRleHQgPSByZXF1ZXN0TGlzdC5qb2luKCcnKTtcblx0XHRsZXQgc3VtbWFyeTtcblx0XHRpZiAoaGlkZW5hbWUpIHtcblx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+agh+iusOS4uuW3suWkhOeQhicsICfmqJnoqJjngrrlt7LomZXnkIYnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VtbWFyeSA9IGAvKiAke3VzZXJOYW1lfSAqLyBgO1xuXHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpKSB7XG5cdFx0XHRcdHN1bW1hcnkgKz0gd2luZG93LndnVUxTKCfkuI3pmZDmnJ/lsIHnpoEnLCAn5LiN6ZmQ5pyf5bCB6Y6WJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdW1tYXJ5ICs9IHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpICsgZXhwaXJ5VGV4dDtcblx0XHRcdH1cblx0XHR9XG5cdFx0dmlwUGFnZS5zZXRFZGl0U3VtbWFyeShzdW1tYXJ5KTtcblx0XHR2aXBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHR2aXBQYWdlLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdHZpcFBhZ2Uuc2F2ZSgpO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmdldEJsb2NrTm90aWNlV2lraXRleHQgPSAocGFyYW1zKSA9PiB7XG5cdFx0bGV0IHRleHQgPSAne3snO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW3BhcmFtcy50ZW1wbGF0ZV07XG5cdFx0aWYgKHNldHRpbmdzLm5vbnN0YW5kYXJkKSB7XG5cdFx0XHR0ZXh0ICs9IHBhcmFtcy50ZW1wbGF0ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGV4dCArPSAnc3Vic3Q6Jy5jb25jYXQocGFyYW1zLnRlbXBsYXRlKTtcblx0XHRcdGlmIChwYXJhbXMuYXJ0aWNsZSAmJiBzZXR0aW5ncy5wYWdlUGFyYW0pIHtcblx0XHRcdFx0dGV4dCArPSBgfHBhZ2U9JHtwYXJhbXMuYXJ0aWNsZX1gO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCEvdGU/bXB8XlxccyokfG1pbi8uZXhlYyhwYXJhbXMuZXhwaXJ5KSkge1xuXHRcdFx0XHRpZiAocGFyYW1zLmluZGVmaW5pdGUpIHtcblx0XHRcdFx0XHR0ZXh0ICs9ICd8aW5kZWY9eWVzJztcblx0XHRcdFx0fSBlbHNlIGlmICghcGFyYW1zLmJsYW5rX2R1cmF0aW9uKSB7XG5cdFx0XHRcdFx0Ly8gTm8gZXhwaXJ5IGNoZWNrc1xuXHRcdFx0XHRcdC8vIEJsb2NrIHRlbXBsYXRlIHdhbnRzIGEgZHVyYXRpb24sIG5vdCBkYXRlXG5cdFx0XHRcdFx0dGV4dCArPSBgfHRpbWU9JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0VGltZShwYXJhbXMuZXhwaXJ5KX1gOyAvLyBmb3JtYXRUaW1lXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQgJiYgIXBhcmFtcy5oYXJkYmxvY2spIHtcblx0XHRcdFx0dGV4dCArPSAnfGFub249eWVzJztcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMucmVhc29uKSB7XG5cdFx0XHRcdHRleHQgKz0gYHxyZWFzb249JHtwYXJhbXMucmVhc29ufWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLmRpc2FibGV0YWxrKSB7XG5cdFx0XHRcdHRleHQgKz0gJ3xub3RhbGs9eWVzJztcblx0XHRcdH1cblx0XHRcdC8vIEN1cnJlbnRseSwgYWxsIHBhcnRpYWwgYmxvY2sgdGVtcGxhdGVzIGFyZSBcInN0YW5kYXJkXCJcblx0XHRcdC8vIEJ1aWxkaW5nIHRoZSB0ZW1wbGF0ZSwgaG93ZXZlciwgdGFrZXMgYSBmYWlyIGJpdCBvZiBsb2dpY1xuXHRcdFx0aWYgKHBhcmFtcy5wYXJ0aWFsKSB7XG5cdFx0XHRcdGlmIChwYXJhbXMucGFnZXJlc3RyaWN0aW9ucy5sZW5ndGggfHwgcGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBtYWtlU2VudGVuY2UgPSAoYXJyYXkpID0+IHtcblx0XHRcdFx0XHRcdGlmIChhcnJheS5sZW5ndGggPCAzKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhcnJheS5qb2luKCflkownKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNvbnN0IGxhc3QgPSBhcnJheS5wb3AoKTtcblx0XHRcdFx0XHRcdHJldHVybiBgJHthcnJheS5qb2luKCfjgIEnKX3lkowke2xhc3R9YDtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHRleHQgKz0gJ3xhcmVhPeafkOS6myc7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5wYWdlcmVzdHJpY3Rpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGV4dCArPSBg6aCB6Z2i77yIJHttYWtlU2VudGVuY2UoXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5wYWdlcmVzdHJpY3Rpb25zLm1hcCgocCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBgW1s6JHtwfV1dYDtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCl9YDtcblx0XHRcdFx0XHRcdHRleHQgKz0gcGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGggPyAn77yJ5ZKM5p+Q5LqbJyA6ICfvvIknO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdC8vIDEgPT4gVGFsaywgMiA9PiBVc2VyLCBldGMuXG5cdFx0XHRcdFx0XHRjb25zdCBuYW1lc3BhY2VOYW1lcyA9IHBhcmFtcy5uYW1lc3BhY2VyZXN0cmljdGlvbnMubWFwKChpZCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbWVudUZvcm1hdHRlZE5hbWVzcGFjZXNbaWRdO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ZXh0ICs9IGAke1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ1tbSGVscDrlkb3lkI3nqbrpl7R85ZG95ZCN56m66Ze0XV3vvIgnLCAnW1tIZWxwOuWRveWQjeepuumWk3zlkb3lkI3nqbrplpNdXe+8iCcpICtcblx0XHRcdFx0XHRcdFx0bWFrZVNlbnRlbmNlKG5hbWVzcGFjZU5hbWVzKVxuXHRcdFx0XHRcdFx0fe+8iWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5hcmVhKSB7XG5cdFx0XHRcdFx0dGV4dCArPSBgfGFyZWE9JHtwYXJhbXMuYXJlYX1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9lbWFpbCkge1xuXHRcdFx0XHRcdFx0dGV4dCArPSAnfGVtYWlsPXllcyc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9jcmVhdGUpIHtcblx0XHRcdFx0XHRcdHRleHQgKz0gJ3xhY2NvdW50Y3JlYXRlPXllcyc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzZXR0aW5ncy5zaWcpIHtcblx0XHRcdHRleHQgKz0gYHxzaWc9JHtzZXR0aW5ncy5zaWd9YDtcblx0XHR9XG5cdFx0cmV0dXJuIGAke3RleHR9fX1gO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLm1haW4gPSAocGFnZW9iaikgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Y29uc3QgZGF0ZSA9IG5ldyBNb3JlYml0cy5kYXRlKHBhZ2VvYmouZ2V0TG9hZFRpbWUoKSk7XG5cdFx0Y29uc3Qge21lc3NhZ2VEYXRhfSA9IHBhcmFtcztcblx0XHRsZXQgdGV4dDtcblx0XHRwYXJhbXMuaW5kZWZpbml0ZSA9IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2JsYW5rVGFsa3BhZ2VPbkluZGVmQmxvY2snKSAmJiBwYXJhbXMudGVtcGxhdGUgIT09ICd1dy1sYmxvY2snICYmIHBhcmFtcy5pbmRlZmluaXRlKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5qC55o2u5Y+C5pWw6K6+572u5riF56m66K6o6K666aG15bm25Li65pel5pyf5Yib5bu65pawMue6p+agh+mimCcsXG5cdFx0XHRcdFx0J+agueaTmuWBj+WlveioreWumua4heepuuiojuirlumggeS4pueCuuaXpeacn+W7uueri+aWsDLntJrmqJnpoYwnXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHR0ZXh0ID0gYCR7ZGF0ZS5tb250aEhlYWRlcigpfVxcbmA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBkYXRlSGVhZGVyUmVnZXggPSBkYXRlLm1vbnRoSGVhZGVyUmVnZXgoKTtcblx0XHRcdGxldCBkYXRlSGVhZGVyUmVnZXhMYXN0O1xuXHRcdFx0bGV0IGRhdGVIZWFkZXJSZWdleFJlc3VsdDtcblx0XHRcdHdoaWxlICgoZGF0ZUhlYWRlclJlZ2V4TGFzdCA9IGRhdGVIZWFkZXJSZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRkYXRlSGVhZGVyUmVnZXhSZXN1bHQgPSBkYXRlSGVhZGVyUmVnZXhMYXN0O1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgZGF0ZUhlYWRlclJlZ2V4UmVzdWx0IGlzIG51bGwgdGhlbiBsYXN0SGVhZGVySW5kZXggaXMgbmV2ZXIgY2hlY2tlZC4gSWYgaXQgaXMgbm90IG51bGwgYnV0XG5cdFx0XHQvLyBcXG49PSBpcyBub3QgZm91bmQsIHRoZW4gdGhlIGRhdGUgaGVhZGVyIG11c3QgYmUgYXQgdGhlIHZlcnkgc3RhcnQgb2YgdGhlIHBhZ2UuIGxhc3RJbmRleE9mXG5cdFx0XHQvLyByZXR1cm5zIC0xIGluIHRoaXMgY2FzZSwgc28gbGFzdEhlYWRlckluZGV4IGdldHMgc2V0IHRvIDAgYXMgZGVzaXJlZC5cblx0XHRcdGNvbnN0IGxhc3RIZWFkZXJJbmRleCA9IHRleHQubGFzdEluZGV4T2YoJ1xcbj09JykgKyAxO1xuXHRcdFx0aWYgKHRleHQubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0ZXh0ICs9ICdcXG5cXG4nO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFkYXRlSGVhZGVyUmVnZXhSZXN1bHQgfHwgZGF0ZUhlYWRlclJlZ2V4UmVzdWx0LmluZGV4ICE9PSBsYXN0SGVhZGVySW5kZXgpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnKrmib7liLDlvZPmnIjnmoTkuoznuqfmoIfpopjvvIzlsIbliJvlu7rmlrDnmoQnLCAn5pyq5om+5Yiw55W25pyI55qE5LqM57Sa5qiZ6aGM77yM5bCH5bu656uL5paw55qEJylcblx0XHRcdFx0KTtcblx0XHRcdFx0dGV4dCArPSBgJHtkYXRlLm1vbnRoSGVhZGVyKCl9XFxuYDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cGFyYW1zLmV4cGlyeSA9IHBhcmFtcy50ZW1wbGF0ZV9leHBpcnkgPT09IHVuZGVmaW5lZCA/IHBhcmFtcy5leHBpcnkgOiBwYXJhbXMudGVtcGxhdGVfZXhwaXJ5O1xuXHRcdHRleHQgKz0gVHdpbmtsZS5ibG9jay5jYWxsYmFjay5nZXRCbG9ja05vdGljZVdpa2l0ZXh0KHBhcmFtcyk7XG5cdFx0Ly8gYnVpbGQgdGhlIGVkaXQgc3VtbWFyeVxuXHRcdGxldCBzdW1tYXJ5ID0gcGFyYW1zLnVzZXJ0YWxrX3N1bW1hcnk7XG5cdFx0aWYgKG1lc3NhZ2VEYXRhLnN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeSAhPT0gdHJ1ZSAmJiBwYXJhbXMuYXJ0aWNsZSkge1xuXHRcdFx0c3VtbWFyeSArPSBgJHt3aW5kb3cud2dVTFMoJ++8jOS6jicsICfvvIzmlrwnKX1bWzoke3BhcmFtcy5hcnRpY2xlfV1dYDtcblx0XHR9XG5cdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkpO1xuXHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hCbG9ja05vdGljZXMnKSk7XG5cdFx0cGFnZW9iai5zYXZlKCk7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmxvY2ssICdibG9jaycpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gZnJpZW5kbHl0YWxrYmFjay5qcyAqL1xuKGZ1bmN0aW9uIGZyaWVuZGx5dGFsa2JhY2soJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIGZyaWVuZGx5dGFsa2JhY2suanM6IFRhbGtiYWNrIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJUQlwiKVxuXHQgKiBBY3RpdmUgb246IEFueSBwYWdlIHdpdGggcmVsZXZhbnQgdXNlciBuYW1lICh1c2Vyc3BhY2UsIGNvbnRyaWJzLCBldGMuKSBleGNlcHQgSVAgcmFuZ2VzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBGcmllbmRseUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS50YWxrYmFjayA9ICgpID0+IHtcblx0XHRpZiAoIW13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrLFxuXHRcdFx0J+mAmuWRiicsXG5cdFx0XHQnZnJpZW5kbHktdGFsa2JhY2snLFxuXHRcdFx0d2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJylcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgJiZcblx0XHRcdCFjb25maXJtKHdpbmRvdy53Z1VMUygn5oKo5a+C5a+e5Yiw5LqG6KaB6Ieq5bex5Zue5aSN6Ieq5bex55qE56iL5bqm5LmI77yfJywgJ+aCqOWvguWvnuWIsOS6huimgeiHquW3seWbnuimhuiHquW3seeahOeoi+W6pum6vO+8nycpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgMzUwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflhbPkuo57e3RhbGtiYWNrfX0nLCAn6Zec5pa8e3t0YWxrYmFja319JyksICdUZW1wbGF0ZTpUYWxrYmFjaycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6YCa5ZGK6K6+572uJywgJ+mAmuWRiuioreWumicpLCAnSDpUVy9QUkVGI3RhbGtiYWNrJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3RhbGtiYWNrJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS50YWxrYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3JhZGlvJyxcblx0XHRcdG5hbWU6ICd0YnRhcmdldCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm57lpI3vvJrmiJHnmoTorqjorrrpobUnLCAn5Zue6KaG77ya5oiR55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdteXRhbGsnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICd0cnVlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkje+8muWFtuS7lueUqOaIt+eahOiuqOiuuumhtScsICflm57opobvvJrlhbbku5bkvb/nlKjogIXnmoToqI7oq5bpoIEnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3VzZXJ0YWxrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkje+8muWFtuWug+mhtemdoicsICflm57opobvvJrlhbblroPpoIHpnaInKSxcblx0XHRcdFx0XHR2YWx1ZTogJ290aGVyJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mCgOivt+iuqOiuuicsICfpgoDoq4voqI7oq5YnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3NlZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+mAmuWRiuadv+mAmuefpScsXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpY2UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn4oCc5pyJ5paw6YKu5Lu24oCdJywgJ+OAjOacieaWsOmDteS7tuOAjScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbWFpbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUudGFsa2JhY2suY2hhbmdlVGFyZ2V0LFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogJ+W3peS9nOWMuicsXG5cdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHR9KTtcblx0XHRjb25zdCBwcmV2aWV3bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHQkKHByZXZpZXdsaW5rKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLnByZXZpZXcocmVzdWx0KTsgLy8gfHJlc3VsdHwgaXMgZGVmaW5lZCBiZWxvd1xuXHRcdH0pO1xuXG5cdFx0cHJldmlld2xpbmsuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuXHRcdHByZXZpZXdsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfpooTop4gnLCAn6aCQ6Ka9Jyk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3RhbGtiYWNrcHJldmlldycsXG5cdFx0XHRsYWJlbDogW3ByZXZpZXdsaW5rXSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGlkOiAnZnJpZW5kbHl0YWxrYmFjay1wcmV2aWV3Ym94Jyxcblx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0cmVzdWx0LnByZXZpZXdlciA9IG5ldyBNb3JlYml0cy53aWtpLnByZXZpZXcoJChyZXN1bHQpLmZpbmQoJ2RpdiNmcmllbmRseXRhbGtiYWNrLXByZXZpZXdib3gnKS5sYXN0KClbMF0pO1xuXHRcdC8vIFdlIG11c3QgaW5pdCB0aGVcblx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQudGJ0YXJnZXRbMF0uZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdC8vIENoZWNrIHdoZXRoZXIgdGhlIHVzZXIgaGFzIG9wdGVkIG91dCBmcm9tIHRhbGtiYWNrXG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAnZXh0bGlua3MnLFxuXHRcdFx0dGl0bGVzOiBgVXNlciB0YWxrOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YCxcblx0XHRcdGVscXVlcnk6ICd1c2VyanMuaW52YWxpZC9ub1RhbGtiYWNrJyxcblx0XHRcdGVsbGltaXQ6ICcxJyxcblx0XHR9O1xuXHRcdGNvbnN0IHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aKk+WPlumAgOWHuumAmuWRiuS/oeaBrycsICfmipPlj5bpgIDlh7rpgJrlkYros4foqIonKSxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0VHdpbmtsZS50YWxrYmFjay5jYWxsYmFjay5vcHRvdXRTdGF0dXNcblx0XHQpO1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLm9wdG91dCA9ICcnO1xuXHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrLm9wdG91dFN0YXR1cyA9IChhcGlvYmopID0+IHtcblx0XHRjb25zdCAkZWwgPSAkKGFwaW9iai5nZXRYTUwoKSkuZmluZCgnZWwnKTtcblx0XHRpZiAoJGVsLmxlbmd0aCkge1xuXHRcdFx0VHdpbmtsZS50YWxrYmFjay5vcHRvdXQgPVxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSArIHdpbmRvdy53Z1VMUygn5LiN5biM5pyb5pS25Yiw5Zue5aSN6YCa5ZGKJywgJ+S4jeW4jOacm+aUtuWIsOWbnuimhumAmuWRiicpO1xuXHRcdFx0Y29uc3QgdXJsID0gJGVsLnRleHQoKTtcblx0XHRcdGNvbnN0IHJlYXNvbiA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncmVhc29uJywgdXJsKTtcblx0XHRcdFR3aW5rbGUudGFsa2JhY2sub3B0b3V0ICs9IHJlYXNvbiA/IGDvvJoke01vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihyZWFzb24pfWAgOiAn44CCJztcblx0XHR9XG5cdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtdGFsa2JhY2stb3B0b3V0LW1lc3NhZ2UnKS50ZXh0KFR3aW5rbGUudGFsa2JhY2sub3B0b3V0KTtcblx0fTtcblx0bGV0IHByZXZfcGFnZSA9ICcnO1xuXHRsZXQgcHJldl9zZWN0aW9uID0gJyc7XG5cdGxldCBwcmV2X21lc3NhZ2UgPSAnJztcblx0VHdpbmtsZS50YWxrYmFjay5jaGFuZ2VUYXJnZXQgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWVzO1xuXHRcdGNvbnN0IHJvb3QgPSBlLnRhcmdldC5mb3JtO1xuXHRcdGNvbnN0IFtvbGRfYXJlYV0gPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocm9vdCwgJ3dvcmtfYXJlYScpO1xuXHRcdGlmIChyb290LnNlY3Rpb24pIHtcblx0XHRcdHByZXZfc2VjdGlvbiA9IHJvb3Quc2VjdGlvbi52YWx1ZTtcblx0XHR9XG5cdFx0aWYgKHJvb3QubWVzc2FnZSkge1xuXHRcdFx0cHJldl9tZXNzYWdlID0gcm9vdC5tZXNzYWdlLnZhbHVlO1xuXHRcdH1cblx0XHRpZiAocm9vdC5wYWdlKSB7XG5cdFx0XHRwcmV2X3BhZ2UgPSByb290LnBhZ2UudmFsdWU7XG5cdFx0fVxuXHRcdGxldCB3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkjemAmuWRiuS/oeaBrycsICflm57opobpgJrlkYros4foqIonKSxcblx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdH0pO1xuXHRcdHJvb3QucHJldmlld2VyLmNsb3NlUHJldmlldygpO1xuXHRcdHN3aXRjaCAodmFsdWUpIHtcblx0XHRcdGNhc2UgJ3VzZXJ0YWxrJzpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0XHRcdGlkOiAndHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlKjmiLfvvIjlv4XloavvvIknLCAn5L2/55So6ICF77yI5b+F5aGr77yJJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmgqjnlZnoqIDpobXpnaLnmoTnlKjmiLflkI3vvIzlv4XloavjgIInLCAn5oKo55WZ6KiA6aCB6Z2i55qE5L2/55So6ICF5ZCN56ix77yM5b+F5aGr44CCJyksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfcGFnZSxcblx0XHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eroOiKgu+8iOWPr+mAie+8iScsICfnq6Dnr4DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug6IqC5qCH6aKY77yM55WZ56m65YiZ5LiN5Lya5Lqn55Sf56ug6IqC6ZO+5o6l44CCJyxcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6Dnr4DmqJnpoYzvvIznlZnnqbrliYfkuI3mnIPnlKLnlJ/nq6Dnr4DpgKPntZDjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9zZWN0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdub3RpY2UnOiB7XG5cdFx0XHRcdGNvbnN0IG5vdGljZWJvYXJkID0gd29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ25vdGljZWJvYXJkJyxcblx0XHRcdFx0XHRsYWJlbDogJ+mAmuWRiuadv++8micsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3IgKGNvbnN0IFtuYm5hbWUsIGRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKFR3aW5rbGUudGFsa2JhY2subm90aWNlYm9hcmRzKSkge1xuXHRcdFx0XHRcdG5vdGljZWJvYXJkLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBkYXRhLmxhYmVsLFxuXHRcdFx0XHRcdFx0dmFsdWU6IG5ibmFtZSxcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiAhIWRhdGEuZGVmYXVsdFNlbGVjdGVkLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eroOiKgu+8iOWPr+mAie+8iScsICfnq6Dnr4DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+eroOiKguagh+mimO+8jOeVmeepuuWImeS4jeS8muS6p+eUn+eroOiKgumTvuaOpeOAgicsICfnq6Dnr4DmqJnpoYzvvIznlZnnqbrliYfkuI3mnIPnlKLnlJ/nq6Dnr4DpgKPntZDjgIInKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9zZWN0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlICdvdGhlcic6XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdFx0XHRzdHlsZTogJ2NvbG9yOiAjZjAwJyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGUtdGFsa2JhY2stb3B0b3V0LW1lc3NhZ2UnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5a6M5pW06aG16Z2i5ZCNJywgJ+WujOaVtOmggemdouWQjScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjnlZnkuIvmtojmga/nmoTlrozmlbTpobXpnaLlkI3vvIzkvovlpoLigJxRaXV3ZW5fdGFsazrpppbpobXigJ3jgIInLFxuXHRcdFx0XHRcdFx0J+aCqOeVmeS4i+ioiuaBr+eahOWujOaVtOmggemdouWQje+8jOS+i+WmguOAjFFpdXdlbl90YWxrOummlumggeOAjeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3BhZ2UsXG5cdFx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzZWN0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnq6DoioLvvIjlj6/pgInvvIknLCAn56ug56+A77yI5Y+v6YG477yJJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOiKguagh+mimO+8jOeVmeepuuWImeS4jeS8muS6p+eUn+eroOiKgumTvuaOpeOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug56+A5qiZ6aGM77yM55WZ56m65YmH5LiN5pyD55Si55Sf56ug56+A6YCj57WQ44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfc2VjdGlvbixcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbWFpbCc6XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUteWtkOmCruS7tuS4u+mimO+8iOWPr+mAie+8iScsICfpm7vlrZDpg7Xku7bkuLvpoYzvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+aCqOWPkeWHuueahOeUteWtkOmCruS7tueahOS4u+mimOOAgicsICfmgqjnmbzlh7rnmoTpm7vlrZDpg7Xku7bnmoTkuLvpoYzjgIInKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2VlJzpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5a6M5pW06aG16Z2i5ZCNJywgJ+WujOaVtOmggemdouWQjScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjnlZnkuIvmtojmga/nmoTlrozmlbTpobXpnaLlkI3vvIzkvovlpoLigJxRaXV3ZW5fdGFsazrpppbpobXigJ3jgIInLFxuXHRcdFx0XHRcdFx0J+aCqOeVmeS4i+ioiuaBr+eahOWujOaVtOmggemdouWQje+8jOS+i+WmguOAjFFpdXdlbl90YWxrOummlumggeOAjeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3BhZ2UsXG5cdFx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzZWN0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnq6DoioLvvIjlj6/pgInvvIknLCAn56ug56+A77yI5Y+v6YG477yJJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOiKguagh+mimO+8jOeVmeepuuWImeS4jeS8muS6p+eUn+eroOiKgumTvuaOpeOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug56+A5qiZ6aGM77yM55WZ56m65YmH5LiN5pyD55Si55Sf56ug56+A6YCj57WQ44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfc2VjdGlvbixcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0LyogY2FzZSAnbXl0YWxrJzogKi9cblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdFx0XHRzdHlsZTogJ2NvbG9yOiAjZjAwJyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGUtdGFsa2JhY2stb3B0b3V0LW1lc3NhZ2UnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAnc2VjdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56ug6IqC77yI5Y+v6YCJ77yJJywgJ+eroOevgO+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6DoioLmoIfpopjvvIznlZnnqbrliJnkuI3kvJrkuqfnlJ/nq6DoioLpk77mjqXjgIInLFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOevgOaomemhjO+8jOeVmeepuuWJh+S4jeacg+eUoueUn+eroOevgOmAo+e1kOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3NlY3Rpb24sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKHZhbHVlICE9PSAnbm90aWNlJykge1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mZhOWKoOS/oeaBr++8iOWPr+mAie+8ie+8micsICfpmYTliqDos4foqIrvvIjlj6/pgbjvvInvvJonKSxcblx0XHRcdFx0bmFtZTogJ21lc3NhZ2UnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+S8muWcqOWbnuWkjemAmuWRiuaooeadv+S4i+WHuueOsOeahOa2iOaBr++8jOaCqOeahOetvuWQjeS8muiiq+WKoOWcqOacgOWQjuOAgicsXG5cdFx0XHRcdFx0J+acg+WcqOWbnuimhumAmuWRiuaooeadv+S4i+WHuuePvueahOioiuaBr++8jOaCqOeahOewveWQjeacg+iiq+WKoOWcqOacgOW+jOOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0cm9vdC5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0aWYgKHJvb3QubWVzc2FnZSkge1xuXHRcdFx0cm9vdC5tZXNzYWdlLnZhbHVlID0gcHJldl9tZXNzYWdlO1xuXHRcdH1cblx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScpLnRleHQoVHdpbmtsZS50YWxrYmFjay5vcHRvdXQpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLm5vdGljZWJvYXJkcyA9IHtcblx0XHRhZmZwOiB7XG5cdFx0XHRsYWJlbDogYFFXOkFGL0ZQ77yIJHt3aW5kb3cud2dVTFMoJ+i/h+a7pOWZqOWkhOeQhi/miqXlkYonLCAn6YGO5r++5Zmo6JmV55CGL+WgseWRiicpfe+8iWAsXG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfov4fmu6TlmajplJnor6/miqXlkYrmnInmlrDlm57lupQnLCAn6YGO5r++5Zmo6Yyv6Kqk5aCx5ZGK5pyJ5paw5Zue5oeJJyksXG5cdFx0XHRjb250ZW50OiBgJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmgqjnmoRbW1FpdXdlbl90YWxrOui/h+a7pOWZqOWkhOeQhi/miqXlkYp86L+H5ruk5Zmo6ZSZ6K+v5oql5ZGKXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrov4fmu6TlmajlpITnkIYv5oql5ZGKfOmBjua/vuWZqOmMr+iqpOWgseWRil1d5bey5pyJ5Zue5oeJ77yM6KuL5YmN5b6A5p+l55yL44CCJ1xuXHRcdFx0KX0tLX5+YC5jb25jYXQoJ35+JyksXG5cdFx0XHRlZGl0U3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5pyJ5YWzW1tRaXV3ZW5fdGFsazrov4fmu6TlmajlpITnkIYv5oql5ZGKfOi/h+a7pOWZqOmUmeivr+aKpeWRil1d55qE6YCa55+lJyxcblx0XHRcdFx0J+aciemXnFtbUWl1d2VuX3RhbGs66L+H5ruk5Zmo5aSE55CGL+aKpeWRinzpgY7mv77lmajpjK/oqqTloLHlkYpdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0XHRkZWZhdWx0U2VsZWN0ZWQ6IHRydWUsXG5cdFx0fSxcblx0XHRzYmw6IHtcblx0XHRcdGxhYmVsOiAnU3BhbS1ibGFja2xpc3QnLFxuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V6K+35rGC5pyJ5paw5Zue5bqUJywgJ+Weg+WcvumAo+e1kOm7keWQjeWWruiri+axguacieaWsOWbnuaHiScpLFxuXHRcdFx0Y29udGVudDogYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V6K+35rGCXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6YCj57WQ6buR5ZCN5Zau6KuL5rGCXV3lt7LmnInlm57mh4nvvIzoq4vliY3lvoDmn6XnnIvjgIInXG5cdFx0XHQpfS0tfn5gLmNvbmNhdCgnfn4nKSxcblx0XHRcdGVkaXRTdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmnInlhbNbW1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pk77mjqXpu5HlkI3ljZXor7fmsYJdXeeahOmAmuefpScsXG5cdFx0XHRcdCfmnInpl5xbW1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pgKPntZDpu5HlkI3llq7oq4vmsYJdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHRzaGw6IHtcblx0XHRcdGxhYmVsOiAnU3BhbS13aGl0ZWxpc3QnLFxuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Z6D5Zy+6ZO+5o6l55m95ZCN5Y2V6K+35rGC5pyJ5paw5Zue5bqUJywgJ+Weg+WcvumAo+e1kOeZveWQjeWWruiri+axguacieaWsOWbnuaHiScpLFxuXHRcdFx0Y29udGVudDogYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6ZO+5o6l55m95ZCN5Y2V6K+35rGCXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6YCj57WQ55m95ZCN5Zau6KuL5rGCXV3lt7LmnInlm57mh4nvvIzoq4vliY3lvoDmn6XnnIvjgIInXG5cdFx0XHQpfS0tfn5gLmNvbmNhdCgnfn4nKSxcblx0XHRcdGVkaXRTdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmnInlhbNbW1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pk77mjqXnmb3lkI3ljZXor7fmsYJdXeeahOmAmuefpScsXG5cdFx0XHRcdCfmnInpl5xbW1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pgKPntZDnmb3lkI3llq7oq4vmsYJdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS50YWxrYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IFt0YnRhcmdldF0gPSBmb3JtLmdldENoZWNrZWQoJ3RidGFyZ2V0Jyk7XG5cdFx0bGV0IHBhZ2U7XG5cdFx0bGV0IG1lc3NhZ2U7XG5cdFx0Y29uc3Qgc2VjdGlvbiA9IGZvcm0uc2VjdGlvbi52YWx1ZTtcblx0XHRsZXQgZWRpdFN1bW1hcnk7XG5cdFx0aWYgKHRidGFyZ2V0ID09PSAnbm90aWNlJykge1xuXHRcdFx0cGFnZSA9IGZvcm0ubm90aWNlYm9hcmQudmFsdWU7XG5cdFx0XHQoe2VkaXRTdW1tYXJ5fSA9IFR3aW5rbGUudGFsa2JhY2subm90aWNlYm9hcmRzW3BhZ2VdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gdXNlcnRhbGssIG90aGVyLCBzZWVcblx0XHRcdHBhZ2UgPSBmb3JtLnBhZ2UgPyBmb3JtLnBhZ2UudmFsdWUgOiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0XHRpZiAoZm9ybS5tZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBmb3JtLm1lc3NhZ2UudmFsdWUudHJpbSgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRidGFyZ2V0ID09PSAnbWFpbCcpIHtcblx0XHRcdFx0ZWRpdFN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+mAmuefpe+8muacieaWsOmCruS7ticsICfpgJrnn6XvvJrmnInmlrDpg7Xku7YnKTtcblx0XHRcdH0gZWxzZSBpZiAodGJ0YXJnZXQgPT09ICdzZWUnKSB7XG5cdFx0XHRcdGVkaXRTdW1tYXJ5ID0gYCR7d2luZG93LndnVUxTKCfor7fnnIvnnIsnLCAn6KuL55yL55yLJyl9W1s6JHtwYWdlfSR7c2VjdGlvbiA/IGAjJHtzZWN0aW9ufWAgOiAnJ31dXSR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfkuIrnmoTorqjorronLFxuXHRcdFx0XHRcdCfkuIrnmoToqI7oq5YnXG5cdFx0XHRcdCl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRidGFyZ2V0IG9uZSBvZiBteXRhbGssIHVzZXJ0YWxrLCBvdGhlclxuXHRcdFx0XHRlZGl0U3VtbWFyeSA9IGAke3dpbmRvdy53Z1VMUygn5Zue5aSN6YCa5ZGKJywgJ+WbnuimhumAmuWRiicpfe+8iFtbOmA7XG5cdFx0XHRcdGlmICh0YnRhcmdldCAhPT0gJ290aGVyJyAmJiAhbmV3IFJlZ0V4cChgXlxcXFxzKiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoMyl9OmAsICdpJykudGVzdChwYWdlKSkge1xuXHRcdFx0XHRcdGVkaXRTdW1tYXJ5ICs9ICdVc2VyIHRhbGs6Jztcblx0XHRcdFx0fVxuXHRcdFx0XHRlZGl0U3VtbWFyeSArPSBgJHtwYWdlICsgKHNlY3Rpb24gPyBgIyR7c2VjdGlvbn1gIDogJycpfV1dKWA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0Y29uc3QgZnVsbFVzZXJUYWxrUGFnZU5hbWUgPSBgJHtcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW213LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlSWRzJykudXNlcl90YWxrXVxuXHRcdH06JHttdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKX1gO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gZnVsbFVzZXJUYWxrUGFnZU5hbWU7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+WbnuWkjemAmuWRiuWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5Zue6KaG6YCa5ZGK5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0Y29uc3QgdGV4dCA9IGBcXG5cXG4ke1R3aW5rbGUudGFsa2JhY2suZ2V0Tm90aWNlV2lraXRleHQodGJ0YXJnZXQsIHBhZ2UsIHNlY3Rpb24sIG1lc3NhZ2UpWzBdfWA7XG5cdFx0Y29uc3QgdGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKGZ1bGxVc2VyVGFsa1BhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+WKoOWFpeWbnuWkjemAmuWRiicsICfliqDlhaXlm57opobpgJrlkYonKSk7XG5cdFx0dGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoZWRpdFN1bW1hcnkpO1xuXHRcdHRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHR0YWxrcGFnZS5zZXRBcHBlbmRUZXh0KHRleHQpO1xuXHRcdHRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHR0YWxrcGFnZS5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFsa2JhY2tBc01pbm9yJykpO1xuXHRcdHRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdHRhbGtwYWdlLmFwcGVuZCgpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLnByZXZpZXcgPSAoZm9ybSkgPT4ge1xuXHRcdGNvbnN0IFt0YnRhcmdldF0gPSBmb3JtLmdldENoZWNrZWQoJ3RidGFyZ2V0Jyk7XG5cdFx0Y29uc3Qgc2VjdGlvbiA9IGZvcm0uc2VjdGlvbi52YWx1ZTtcblx0XHRsZXQgcGFnZTtcblx0XHRsZXQgbWVzc2FnZTtcblx0XHRpZiAodGJ0YXJnZXQgPT09ICdub3RpY2UnKSB7XG5cdFx0XHRwYWdlID0gZm9ybS5ub3RpY2Vib2FyZC52YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gdXNlcnRhbGssIG90aGVyLCBzZWVcblx0XHRcdHBhZ2UgPSBmb3JtLnBhZ2UgPyBmb3JtLnBhZ2UudmFsdWUgOiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0XHRpZiAoZm9ybS5tZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBmb3JtLm1lc3NhZ2UudmFsdWUudHJpbSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBbbm90aWNldGV4dF0gPSBUd2lua2xlLnRhbGtiYWNrLmdldE5vdGljZVdpa2l0ZXh0KHRidGFyZ2V0LCBwYWdlLCBzZWN0aW9uLCBtZXNzYWdlKTtcblx0XHRmb3JtLnByZXZpZXdlci5iZWdpblJlbmRlcihub3RpY2V0ZXh0LCBgVXNlcl90YWxrOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YCk7IC8vIEZvcmNlIHdpa2l0ZXh0L2NvcnJlY3QgdXNlcm5hbWVcblx0fTtcblxuXHRUd2lua2xlLnRhbGtiYWNrLmdldE5vdGljZVdpa2l0ZXh0ID0gKHRidGFyZ2V0LCBwYWdlLCBzZWN0aW9uLCBtZXNzYWdlKSA9PiB7XG5cdFx0bGV0IHRleHQ7XG5cdFx0bGV0IHRpdGxlO1xuXHRcdGxldCBjb250ZW50O1xuXHRcdGlmICh0YnRhcmdldCA9PT0gJ25vdGljZScpIHtcblx0XHRcdCh7dGl0bGV9ID0gVHdpbmtsZS50YWxrYmFjay5ub3RpY2Vib2FyZHNbcGFnZV0pO1xuXHRcdFx0Y29udGVudCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShUd2lua2xlLnRhbGtiYWNrLm5vdGljZWJvYXJkc1twYWdlXS5jb250ZW50LCAnJFNFQ1RJT04nLCBzZWN0aW9uKTtcblx0XHRcdHRleHQgPSBgPT0gJHt0aXRsZX0gPT1cXG4ke2NvbnRlbnR9YDtcblx0XHR9IGVsc2UgaWYgKHRidGFyZ2V0ID09PSAnc2VlJykge1xuXHRcdFx0dGl0bGUgPSBwYWdlICsgd2luZG93LndnVUxTKCfnmoTnm7jlhbPorqjorronLCAn55qE55u46Zec6KiO6KuWJyk7XG5cdFx0XHRjb250ZW50ID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRgUGxlYXNlIHNlZXxsb2NhdGlvbj0ke3BhZ2V9JHtzZWN0aW9uID8gYCMke3NlY3Rpb259YCA6ICcnfXxtb3JlPSR7bWVzc2FnZS50cmltKCl9fX1gXG5cdFx0XHQpO1xuXHRcdFx0dGV4dCA9ICd7eycuY29uY2F0KFxuXHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0YFBsZWFzZSBzZWV8bG9jYXRpb249JHtwYWdlfSR7c2VjdGlvbiA/IGAjJHtzZWN0aW9ufWAgOiAnJ318bW9yZT0ke21lc3NhZ2UudHJpbSgpfX19YFxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGV4dCA9ICc9PSc7XG5cdFx0XHRpZiAodGJ0YXJnZXQgPT09ICdtYWlsJykge1xuXHRcdFx0XHR0aXRsZSA9IFR3aW5rbGUuZ2V0UHJlZignbWFpbEhlYWRpbmcnKTtcblx0XHRcdFx0Y29udGVudCA9IGB7e1lvdSd2ZSBnb3QgbWFpbHxzdWJqZWN0PSR7c2VjdGlvbn18dHM9fn5gLmNvbmNhdCgnficsICd+fn19Jyk7XG5cdFx0XHRcdHRleHQgKz0gYCR7VHdpbmtsZS5nZXRQcmVmKCdtYWlsSGVhZGluZycpfT09XFxue3tZb3UndmUgZ290IG1haWx8c3ViamVjdD0ke3NlY3Rpb259YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRidGFyZ2V0IG9uZSBvZiBteXRhbGssIHVzZXJ0YWxrLCBvdGhlclxuXHRcdFx0XHQvLyBjbGVhbiB0YWxrYmFjayBoZWFkaW5nOiBzdHJpcCBzZWN0aW9uIGhlYWRlciBtYXJrZXJzIHRoYXQgd2VyZSBlcnJvbmVvdXNseSBzdWdnZXN0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb25cblx0XHRcdFx0dGl0bGUgPSBUd2lua2xlLmdldFByZWYoJ3RhbGtiYWNrSGVhZGluZycpLnJlcGxhY2UoL15cXHMqPStcXHMqKC4qPylcXHMqPSskXFxzKi8sICckMScpO1xuXHRcdFx0XHRjb250ZW50ID0gYHt7dGFsa2JhY2t8JHtwYWdlfSR7c2VjdGlvbiA/IGB8JHtzZWN0aW9ufWAgOiAnJ31gO1xuXHRcdFx0XHR0ZXh0ICs9IGAke1R3aW5rbGUuZ2V0UHJlZigndGFsa2JhY2tIZWFkaW5nJykucmVwbGFjZShcblx0XHRcdFx0XHQvXlxccyo9K1xccyooLio/KVxccyo9KyRcXHMqLyxcblx0XHRcdFx0XHQnJDEnXG5cdFx0XHRcdCl9PT1cXG57e3RhbGtiYWNrfCR7cGFnZX0ke3NlY3Rpb24gPyBgfCR7c2VjdGlvbn1gIDogJyd9YDtcblx0XHRcdH1cblx0XHRcdGNvbnRlbnQgKz0gJ3x0cz1+ficuY29uY2F0KCd+JywgJ35+fX0nKTtcblx0XHRcdHRleHQgKz0gJ3x0cz1+ficuY29uY2F0KCd+JywgJ35+fX0nKTtcblx0XHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHRcdGNvbnRlbnQgKz0gYFxcbiR7bWVzc2FnZX1gO1xuXHRcdFx0XHR0ZXh0ICs9IGBcXG4ke21lc3NhZ2V9ICB+fmAuY29uY2F0KCd+ficpO1xuXHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLmdldFByZWYoJ2luc2VydFRhbGtiYWNrU2lnbmF0dXJlJykpIHtcblx0XHRcdFx0dGV4dCArPSAnXFxufn4nLmNvbmNhdCgnfn4nKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFt0ZXh0LCB0aXRsZSwgY29udGVudF07XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUudGFsa2JhY2ssICd0YWxrYmFjaycpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQge2dlbmVyYXRlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXNwZWVkeS5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVzcGVlZHkoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVzcGVlZHkuanM6IENTRCBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiQ1NEXCIpXG5cdCAqIEFjdGl2ZSBvbjogTm9uLXNwZWNpYWwsIGV4aXN0aW5nIHBhZ2VzXG5cdCAqXG5cdCAqIE5PVEUgRk9SIERFVkVMT1BFUlM6XG5cdCAqICBJZiBhZGRpbmcgYSBuZXcgY3JpdGVyaW9uLCBhZGQgaXQgdG8gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcyBhdCB0aGUgdG9wIG9mXG5cdCAqICB0d2lua2xlY29uZmlnLmpzLlxuXHQgKiAgQWxzbywgY2hlY2sgb3V0IHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgQ1NEIHByZWZlcmVuY2VzIGluIHR3aW5rbGUuanMsXG5cdCAqICBhbmQgYWRkIHlvdXIgbmV3IGNyaXRlcmlvbiB0byB0aG9zZSBpZiB5b3UgdGhpbmsgaXQgd291bGQgYmUgZ29vZC5cblx0ICovXG5cdFR3aW5rbGUuc3BlZWR5ID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA8IDAgfHwgIW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfpgJ/liKAnLCAn6YCf5YiqJyksXG5cdFx0XHQndHctY3NkJyxcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wID8gd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaQnLCAn5b+r6YCf5Yiq6ZmkJykgOiB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpCcsICfoq4vmsYLlv6vpgJ/liKrpmaQnKVxuXHRcdCk7XG5cdH07XG5cdC8vIFRoaXMgZnVuY3Rpb24gaXMgcnVuIHdoZW4gdGhlIENTRCB0YWIvaGVhZGVyIGxpbmsgaXMgY2xpY2tlZFxuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRUd2lua2xlLnNwZWVkeS5pbml0RGlhbG9nKFxuXHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3AgPyBUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVN5c29wIDogVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZXZhbHVhdGVVc2VyLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH07XG5cdC8vIFVzZWQgYnkgdW5saW5rIGZlYXR1cmVcblx0VHdpbmtsZS5zcGVlZHkuZGlhbG9nID0gbnVsbDtcblx0Ly8gVXNlZCB0aHJvdWdob3V0XG5cdFR3aW5rbGUuc3BlZWR5Lmhhc0NTRCA9ICEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RlbGV0ZS1yZWFzb24nKTtcblx0Ly8gVGhlIHNwZWVkeSBjcml0ZXJpYSBsaXN0IGNhbiBiZSBpbiBvbmUgb2Ygc2V2ZXJhbCBtb2Rlc1xuXHRUd2lua2xlLnNwZWVkeS5tb2RlID0ge1xuXHRcdHN5c29wU2luZ2xlU3VibWl0OiAxLFxuXHRcdC8vIHJhZGlvIGJ1dHRvbnMsIG5vIHN1Ymdyb3Vwcywgc3VibWl0IHdoZW4gXCJTdWJtaXRcIiBidXR0b24gaXMgY2xpY2tlZFxuXHRcdHN5c29wUmFkaW9DbGljazogMixcblx0XHQvLyByYWRpbyBidXR0b25zLCBubyBzdWJncm91cHMsIHN1Ym1pdCB3aGVuIGEgcmFkaW8gYnV0dG9uIGlzIGNsaWNrZWRcblx0XHRzeXNvcE11bHRpcGxlU3VibWl0OiAzLFxuXHRcdC8vIGNoZWNrIGJveGVzLCBzdWJncm91cHMsIFwiU3VibWl0XCIgYnV0dG9uIGFscmVhZHkgcHJlc2VudFxuXHRcdHN5c29wTXVsdGlwbGVSYWRpb0NsaWNrOiA0LFxuXHRcdC8vIGNoZWNrIGJveGVzLCBzdWJncm91cHMsIG5lZWQgdG8gYWRkIGEgXCJTdWJtaXRcIiBidXR0b25cblx0XHR1c2VyTXVsdGlwbGVTdWJtaXQ6IDUsXG5cdFx0Ly8gY2hlY2sgYm94ZXMsIHN1Ymdyb3VwcywgXCJTdWJtaXRcIiBidXR0b24gYWxyZWFkeSBwcmVzc2VudFxuXHRcdHVzZXJNdWx0aXBsZVJhZGlvQ2xpY2s6IDYsXG5cdFx0Ly8gY2hlY2sgYm94ZXMsIHN1Ymdyb3VwcywgbmVlZCB0byBhZGQgYSBcIlN1Ym1pdFwiIGJ1dHRvblxuXHRcdHVzZXJTaW5nbGVTdWJtaXQ6IDcsXG5cdFx0Ly8gcmFkaW8gYnV0dG9ucywgc3ViZ3JvdXBzLCBzdWJtaXQgd2hlbiBcIlN1Ym1pdFwiIGJ1dHRvbiBpcyBjbGlja2VkXG5cdFx0dXNlclNpbmdsZVJhZGlvQ2xpY2s6IDgsXG5cdFx0Ly8gcmFkaW8gYnV0dG9ucywgc3ViZ3JvdXBzLCBzdWJtaXQgd2hlbiBhIHJhZGlvIGJ1dHRvbiBpcyBjbGlja2VkXG5cdFx0Ly8gYXJlIHdlIGluIFwiZGVsZXRlIHBhZ2VcIiBtb2RlP1xuXHRcdC8vIChzeXNvcHMgY2FuIGFjY2VzcyBib3RoIFwiZGVsZXRlIHBhZ2VcIiBbc3lzb3BdIGFuZCBcInRhZyBwYWdlIG9ubHlcIiBbdXNlcl0gbW9kZXMpXG5cdFx0aXNTeXNvcDogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BSYWRpb0NsaWNrIHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2tcblx0XHRcdCk7XG5cdFx0fSxcblx0XHQvLyBkbyB3ZSBoYXZlIGEgXCJTdWJtaXRcIiBidXR0b24gb25jZSB0aGUgZm9ybSBpcyBjcmVhdGVkP1xuXHRcdGhhc1N1Ym1pdEJ1dHRvbjogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2sgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVSYWRpb0NsaWNrIHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlclNpbmdsZVN1Ym1pdFxuXHRcdFx0KTtcblx0XHR9LFxuXHRcdC8vIGlzIGRiLW11bHRpcGxlIHRoZSBvdXRjb21lIGhlcmU/XG5cdFx0aXNNdWx0aXBsZTogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlck11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVN1Ym1pdCB8fFxuXHRcdFx0XHRtb2RlID09PSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJNdWx0aXBsZVJhZGlvQ2xpY2sgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlUmFkaW9DbGlja1xuXHRcdFx0KTtcblx0XHR9LFxuXHR9O1xuXHQvLyBQcmVwYXJlcyB0aGUgc3BlZWR5IGRlbGV0aW9uIGRpYWxvZyBhbmQgZGlzcGxheXMgaXRcblx0VHdpbmtsZS5zcGVlZHkuaW5pdERpYWxvZyA9IChjYWxsYmFja2Z1bmMpID0+IHtcblx0XHRUd2lua2xlLnNwZWVkeS5kaWFsb2cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlXaW5kb3dXaWR0aCcpLFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlXaW5kb3dIZWlnaHQnKVxuXHRcdCk7XG5cdFx0Y29uc3Qge2RpYWxvZ30gPSBUd2lua2xlLnNwZWVkeTtcblx0XHRkaWFsb2cuc2V0VGl0bGUod2luZG93LndnVUxTKCfpgInmi6nlv6vpgJ/liKDpmaTnkIbnlLEnLCAn6YG45pOH5b+r6YCf5Yiq6Zmk55CG55SxJykpO1xuXHRcdGRpYWxvZy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0ZGlhbG9nLmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmlrnpkognLCAn5b+r6YCf5Yiq6Zmk5pa56YedJyksICdRVzpDU0QnKTtcblx0XHRkaWFsb2cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+mAn+WIoOiuvue9ricsICfpgJ/liKroqK3lrponKSwgJ0g6VFcvUFJFRiNzcGVlZHknKTtcblx0XHRkaWFsb2cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjc3BlZWR5Jyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oXG5cdFx0XHRjYWxsYmFja2Z1bmMsXG5cdFx0XHRUd2lua2xlLmdldFByZWYoJ3NwZWVkeVNlbGVjdGlvblN0eWxlJykgPT09ICdyYWRpb0NsaWNrJyA/ICdjaGFuZ2UnIDogbnVsbFxuXHRcdCk7XG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj6rmoIforrDvvIzkuI3liKDpmaQnLCAn5Y+q5qiZ6KiY77yM5LiN5Yiq6ZmkJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3RhZ19vbmx5Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdfb25seScsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+iLpeaCqOWPquaDs+agh+iusOatpOmhtemdouiAjOS4jeaYr+WwhuWFtuWIoOmZpCcsICfoi6Xmgqjlj6rmg7PmqJnoqJjmraTpoIHpnaLogIzkuI3mmK/lsIflhbbliKrpmaQnKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6ICEoVHdpbmtsZS5zcGVlZHkuaGFzQ1NEIHx8IFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUnKSksXG5cdFx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNGb3JtID0gZXZlbnQudGFyZ2V0LmZvcm07XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNDaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIHRhbGsgcGFnZSBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRpZiAoY0Zvcm0udGFsa3BhZ2UpIHtcblx0XHRcdFx0XHRcdFx0XHRjRm9ybS50YWxrcGFnZS5kaXNhYmxlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRcdGNGb3JtLnRhbGtwYWdlLmNoZWNrZWQgPSAhY0NoZWNrZWQgJiYgVHdpbmtsZS5nZXRQcmVmKCdkZWxldGVUYWxrUGFnZU9uRGVsZXRlJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Ly8gZW5hYmxlL2Rpc2FibGUgcmVkaXJlY3RzIGNoZWNrYm94XG5cdFx0XHRcdFx0XHRcdGNGb3JtLnJlZGlyZWN0cy5kaXNhYmxlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5yZWRpcmVjdHMuY2hlY2tlZCA9ICFjQ2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0Ly8gZW5hYmxlL2Rpc2FibGUgZGVsZXRlIG11bHRpcGxlXG5cdFx0XHRcdFx0XHRcdGNGb3JtLmRlbG11bHRpcGxlLmRpc2FibGVkID0gY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdGNGb3JtLmRlbG11bHRpcGxlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0Ly8gZW5hYmxlL2Rpc2FibGUgb3BlbiB0YWxrIHBhZ2UgY2hlY2tib3hcblx0XHRcdFx0XHRcdFx0Y0Zvcm0ub3BlbnVzZXJ0YWxrLmRpc2FibGVkID0gY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdGNGb3JtLm9wZW51c2VydGFsay5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIG5vdGlmeSBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRjRm9ybS5ub3RpZnkuZGlzYWJsZWQgPSAhY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdGNGb3JtLm5vdGlmeS5jaGVja2VkID0gY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIG11bHRpcGxlXG5cdFx0XHRcdFx0XHRcdGNGb3JtLm11bHRpcGxlLmRpc2FibGVkID0gIWNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5tdWx0aXBsZS5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZSByZXF1ZXN0aW5nIGNyZWF0aW9uIHByb3RlY3Rpb25cblx0XHRcdFx0XHRcdFx0Y0Zvcm0uc2FsdGluZy5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLm1vZGVDaGFuZ2VkKGNGb3JtKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGRlbGV0ZU9wdGlvbnMgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnZGVsZXRlX29wdGlvbnMnLFxuXHRcdFx0fSk7XG5cdFx0XHRkZWxldGVPcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaTnm7jlhbPpgInpobknLCAn5Yiq6Zmk55u46Zec6YG46aCFJyksXG5cdFx0XHR9KTtcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICUgMiA9PT0gMCAmJiBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICE9PSAyKSB7XG5cdFx0XHRcdC8vIGhpZGUgb3B0aW9uIGZvciB1c2VyIHBhZ2VzLCB0byBhdm9pZCBhY2NpZGVudGFsbHkgZGVsZXRpbmcgdXNlciB0YWxrIHBhZ2Vcblx0XHRcdFx0ZGVsZXRlT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaTorqjorrrpobUnLCAn5Yiq6Zmk6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAndGFsa3BhZ2UnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAndGFsa3BhZ2UnLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOaXtumZhOW4puWIoOmZpOatpOmhtemdoueahOiuqOiuuumhteOAgicsICfliKrpmaTmmYLpmYTluLbliKrpmaTmraTpoIHpnaLnmoToqI7oq5bpoIHjgIInKSxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdkZWxldGVUYWxrUGFnZU9uRGVsZXRlJyksXG5cdFx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRkZWxldGVPcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaTph43lrprlkJEnLCAn5Yiq6Zmk6YeN5paw5bCO5ZCRJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRuYW1lOiAncmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5Yig6Zmk5Yiw5q2k6aG155qE6YeN5a6a5ZCR44CCJywgJ+WIqumZpOWIsOatpOmggeeahOmHjeaWsOWwjuWQkeOAgicpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdkZWxldGVSZWRpcmVjdHNPbkRlbGV0ZScpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdFx0ZGVsZXRlT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bqU55So5aSa5Liq55CG55Sx5Yig6ZmkJywgJ+aHieeUqOWkmuWAi+eQhueUseWIqumZpCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxtdWx0aXBsZScsXG5cdFx0XHRcdFx0XHRuYW1lOiAnZGVsbXVsdGlwbGUnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmgqjlj6/pgInmi6nlupTnlKjkuo7or6XpobXnmoTlpJrkuKrnkIbnlLHjgIInLCAn5oKo5Y+v6YG45pOH5oeJ55So5pa86Kmy6aCB55qE5aSa5YCL55CG55Sx44CCJyksXG5cdFx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLm1vZGVDaGFuZ2VkKGV2ZW50LnRhcmdldC5mb3JtKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGRlbGV0ZU9wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W8gOWQr+eUqOaIt+iuqOiuuumhtScsICfplovllZ/kvb/nlKjogIXoqI7oq5bpoIEnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnb3BlbnVzZXJ0YWxrJyxcblx0XHRcdFx0XHRcdG5hbWU6ICdvcGVudXNlcnRhbGsnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn5q2k6aG555qE6buY6K6k5YC85Li65oKo55qE5byA5ZCv6K6o6K666aG16K6+572u44CC5Zyo5oKo6YCJ5oup5bqU55So5aSa5p2h55CG55Sx5Yig6Zmk5pe25q2k6aG55bCG5L+d5oyB5LiN5Y+Y44CCJyxcblx0XHRcdFx0XHRcdFx0J+atpOmgheeahOmgkOioreWAvOeCuuaCqOeahOmWi+WVn+iojuirlumggeioreWumuOAguWcqOaCqOmBuOaTh+aHieeUqOWkmuaineeQhueUseWIqumZpOaZguatpOmgheWwh+S/neaMgeS4jeiuiuOAgidcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IHRhZ09wdGlvbnMgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdG5hbWU6ICd0YWdfb3B0aW9ucycsXG5cdFx0fSk7XG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHR0YWdPcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnm7jlhbPpgInpobknLCAn5qiZ6KiY55u46Zec6YG46aCFJyksXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0dGFnT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WmguWPr+iDve+8jOmAmuefpeWIm+W7uuiAhScsICflpoLlj6/og73vvIzpgJrnn6Xlu7rnq4vogIUnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ25vdGlmeScsXG5cdFx0XHRcdFx0bmFtZTogJ25vdGlmeScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S4gOS4qumAmuefpeaooeadv+WwhuS8muiiq+WKoOWFpeWIm+W7uuiAheeahOiuqOiuuumhte+8jOiLpeaCqOWQr+eUqOS6huivpeeQhuaNrueahOmAmuefpeOAgicsXG5cdFx0XHRcdFx0XHQn5LiA5YCL6YCa55+l5qih5p2/5bCH5pyD6KKr5Yqg5YWl5bu656uL6ICF55qE6KiO6KuW6aCB77yM6Iul5oKo5ZWf55So5LqG6Kmy55CG5pOa55qE6YCa55+l44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y2hlY2tlZDpcblx0XHRcdFx0XHRcdCFNb3JlYml0cy51c2VySXNTeXNvcCB8fFxuXHRcdFx0XHRcdFx0IShUd2lua2xlLnNwZWVkeS5oYXNDU0QgfHwgVHdpbmtsZS5nZXRQcmVmKCdkZWxldGVTeXNvcERlZmF1bHRUb0RlbGV0ZScpKSxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5riF56m66aG16Z2iJywgJ+a4heepuumggemdoicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnYmxhbmsnLFxuXHRcdFx0XHRcdG5hbWU6ICdibGFuaycsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqOagh+iusOaooeadv+WJje+8jOWFiOa4heepuumhtemdou+8jOmAgueUqOS6juS4pemHjeegtOWdj+aIlui0n+mdoueUn+iAheS8oOiusOetieOAgicsXG5cdFx0XHRcdFx0XHQn5Zyo5qiZ6KiY5qih5p2/5YmN77yM5YWI5riF56m66aCB6Z2i77yM6YGp55So5pa85Zq06YeN56C05aOe5oiW6LKg6Z2i55Sf6ICF5YKz6KiY562J44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflkIzml7bmoIforrDku6Xor7fmsYLnmb3nurjkv53miqQnLCAn5ZCM5pmC5qiZ6KiY5Lul6KuL5rGC55m957SZ5L+d6K23JyksXG5cdFx0XHRcdFx0dmFsdWU6ICdzYWx0aW5nJyxcblx0XHRcdFx0XHRuYW1lOiAnc2FsdGluZycsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+mAieWPluWQju+8jOW/q+mAn+WIoOmZpOaooeadv+WQjuWwhumZhOW4piB7e3NhbHR9fSDmoIfnrb7vvIzku6Xor7fmsYLmiafooYzliKDpmaTnmoTnrqHnkIblkZjov5vooYznmb3nurjkv53miqTvvIzku4XlnKjpobXpnaLliJvlu7oz5qyh5Lul5LiK5omN6YCJ5oup5q2k6aG544CCJyxcblx0XHRcdFx0XHRcdCfpgbjlj5blvozvvIzlv6vpgJ/liKrpmaTmqKHmnb/lvozlsIfpmYTluLYge3tzYWx0fX0g5qiZ57Gk77yM5Lul6KuL5rGC5Z+36KGM5Yiq6Zmk55qE566h55CG5ZOh6YCy6KGM55m957SZ5L+d6K2377yM5YOF5Zyo6aCB6Z2i5bu656uLM+asoeS7peS4iuaJjemBuOaTh+atpOmgheOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bqU55So5aSa5Liq55CG55SxJywgJ+aHieeUqOWkmuWAi+eQhueUsScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbXVsdGlwbGUnLFxuXHRcdFx0XHRcdG5hbWU6ICdtdWx0aXBsZScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmgqjlj6/pgInmi6nlupTnlKjkuo7or6XpobXnmoTlpJrkuKrnkIbnlLHjgIInLCAn5oKo5Y+v6YG45pOH5oeJ55So5pa86Kmy6aCB55qE5aSa5YCL55CG55Sx44CCJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2subW9kZUNoYW5nZWQoZXZlbnQudGFyZ2V0LmZvcm0pO1xuXHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3ByaW9yLWRlbGV0aW9uLWNvdW50Jyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WIneWni+WMlkNTROaooeWdl+Wksei0pe+8jOivt+mHjeivle+8jOaIluWwhui/meaKpeWRiue7mVR3aW5rbGXlvIDlj5HogIXjgIInLFxuXHRcdFx0XHQn5Yid5aeL5YyWQ1NE5qih57WE5aSx5pWX77yM6KuL6YeN6Kmm77yM5oiW5bCH6YCZ5aCx5ZGK57WmVHdpbmtsZemWi+eZvOiAheOAgidcblx0XHRcdCksXG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignc3BlZWR5U2VsZWN0aW9uU3R5bGUnKSAhPT0gJ3JhZGlvQ2xpY2snKSB7XG5cdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdFx0XHRjbGFzc05hbWU6ICd0dy1zcGVlZHktc3VibWl0Jyxcblx0XHRcdH0pOyAvLyBSZW5hbWVkIGluIG1vZGVDaGFuZ2VkXG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRkaWFsb2cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdGRpYWxvZy5kaXNwbGF5KCk7XG5cdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2subW9kZUNoYW5nZWQocmVzdWx0KTtcblx0XHQvLyBDaGVjayBmb3IgcHJpb3IgZGVsZXRpb25zLiAgSnVzdCBvbmNlLCB1cG9uIGluaXRcblx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5wcmlvckRlbGV0aW9uQ291bnQoKTtcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZ2V0TW9kZSA9IChmb3JtKSA9PiB7XG5cdFx0bGV0IG1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJTaW5nbGVTdWJtaXQ7XG5cdFx0aWYgKGZvcm0udGFnX29ubHkgJiYgIWZvcm0udGFnX29ubHkuY2hlY2tlZCkge1xuXHRcdFx0aWYgKGZvcm0uZGVsbXVsdGlwbGUuY2hlY2tlZCkge1xuXHRcdFx0XHRtb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bW9kZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChmb3JtLm11bHRpcGxlLmNoZWNrZWQpIHtcblx0XHRcdG1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJNdWx0aXBsZVN1Ym1pdDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bW9kZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlclNpbmdsZVN1Ym1pdDtcblx0XHR9XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignc3BlZWR5U2VsZWN0aW9uU3R5bGUnKSA9PT0gJ3JhZGlvQ2xpY2snKSB7XG5cdFx0XHRtb2RlKys7XG5cdFx0fVxuXHRcdHJldHVybiBtb2RlO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5tb2RlQ2hhbmdlZCA9IChmb3JtKSA9PiB7XG5cdFx0Y29uc3QgbmFtZXNwYWNlID0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKTtcblx0XHQvLyBmaXJzdCBmaWd1cmUgb3V0IHdoYXQgbW9kZSB3ZSdyZSBpblxuXHRcdGNvbnN0IG1vZGUgPSBUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5nZXRNb2RlKGZvcm0pO1xuXHRcdGNvbnN0IGlzU3lzb3BNb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc1N5c29wKG1vZGUpO1xuXHRcdGlmIChpc1N5c29wTW9kZSkge1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9ZGVsZXRlX29wdGlvbnNdJykuc2hvdygpO1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9dGFnX29wdGlvbnNdJykuaGlkZSgpO1xuXHRcdFx0JGJvZHkuZmluZCgnYnV0dG9uLnR3LXNwZWVkeS1zdWJtaXQnKS50ZXh0KHdpbmRvdy53Z1VMUygn5Yig6Zmk6aG16Z2iJywgJ+WIqumZpOmggemdoicpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9ZGVsZXRlX29wdGlvbnNdJykuaGlkZSgpO1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9dGFnX29wdGlvbnNdJykuc2hvdygpO1xuXHRcdFx0JGJvZHkuZmluZCgnYnV0dG9uLnR3LXNwZWVkeS1zdWJtaXQnKS50ZXh0KHdpbmRvdy53Z1VMUygn5qCH6K6w6aG16Z2iJywgJ+aomeiomOmggemdoicpKTtcblx0XHR9XG5cdFx0Y29uc3Qgd29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0aWYgKFxuXHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVSYWRpb0NsaWNrIHx8XG5cdFx0XHRtb2RlID09PSBUd2lua2xlLnNwZWVkeS5tb2RlLnN5c29wTXVsdGlwbGVSYWRpb0NsaWNrXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBldmFsdWF0ZVR5cGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSkgPyAnZXZhbHVhdGVTeXNvcCcgOiAnZXZhbHVhdGVVc2VyJztcblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b2T6YCJ5oup5a6M5oiQ5ZCO77yM5Y2V5Ye777yaJywgJ+eVtumBuOaTh+WujOaIkOW+jO+8jOm7nuaTiu+8micpLFxuXHRcdFx0fSk7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdG5hbWU6ICdzdWJtaXQtbXVsdGlwbGUnLFxuXHRcdFx0XHRsYWJlbDogaXNTeXNvcE1vZGUgPyB3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKSA6IHdpbmRvdy53Z1VMUygn5qCH6K6w6aG16Z2iJywgJ+aomeiomOmggemdoicpLFxuXHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tbZXZhbHVhdGVUeXBlXShldmVudCk7XG5cdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3QgcmFkaW9PckNoZWNrYm94ID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc011bHRpcGxlKG1vZGUpID8gJ2NoZWNrYm94JyA6ICdyYWRpbyc7XG5cdFx0aWYgKGlzU3lzb3BNb2RlKSB7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdH0pO1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0bmFtZTogJ2NzZCcsXG5cdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5jdXN0b21SYXRpb25hbGUsIG1vZGUpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHN3aXRjaCAobmFtZXNwYWNlKSB7XG5cdFx0XHRjYXNlIDA6XG5cdFx0XHRcdC8vIGFydGljbGUgYW5kIHBzZXVkbyBuYW1lc3BhY2Vcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2h55uuJywgJ+aineebricpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5hcnRpY2xlTGlzdCwgbW9kZSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0Ly8gdXNlclxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlKjmiLfpobUnLCAn5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiByYWRpb09yQ2hlY2tib3gsXG5cdFx0XHRcdFx0bmFtZTogJ2NzZCcsXG5cdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0KFR3aW5rbGUuc3BlZWR5LnVzZXJMaXN0LCBtb2RlKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHQvLyB1c2VyIHRhbGtcblx0XHRcdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MobXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJykpKSB7XG5cdFx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+iuqOiuuumhtScsICfkvb/nlKjogIXoqI7oq5bpoIEnKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0KFR3aW5rbGUuc3BlZWR5LnVzZXJ0YWxrTGlzdCwgbW9kZSksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDY6XG5cdFx0XHRcdC8vIGZpbGVcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5paH5Lu2JywgJ+aqlOahiCcpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5maWxlTGlzdCwgbW9kZSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKSkge1xuXHRcdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn5qCH6K6wQ1NEIEYx44CBRjPjgIFGNe+8jOivt+S9v+eUqFR3aW5rbGXnmoTigJzlm77mnYPigJ3lip/og73jgIInLFxuXHRcdFx0XHRcdFx0XHQn5qiZ6KiYQ1NEIEYx44CBRjPjgIFGNe+8jOiri+S9v+eUqFR3aW5rbGXnmoTjgIzlnJbmrIrjgI3lip/og73jgIInXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxNDpcblx0XHRcdFx0Ly8gY2F0ZWdvcnlcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YiG57G7JywgJ+WIhumhnicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5jYXRlZ29yeUxpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDExODpcblx0XHRcdFx0Ly8gZHJhZnRcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6ICfojYnnqL8nLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5kcmFmdExpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIG5hbWVzcGFjZSAlIDIgPT09IDEgJiYgbmFtZXNwYWNlICE9PSAzOlxuXHRcdFx0XHQvLyBzaG93IGRiLXRhbGsgb24gdGFsayBwYWdlcywgYnV0IG5vdCB1c2VyIHRhbGsgcGFnZXNcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K6o6K666aG1JywgJ+iojuirlumggScpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS50YWxrTGlzdCwgbW9kZSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBjdXN0b20gcmF0aW9uYWxlIGxpdmVzIHVuZGVyIGdlbmVyYWwgY3JpdGVyaWEgd2hlbiB0YWdnaW5nXG5cdFx0bGV0IGdlbmVyYWxDcml0ZXJpYSA9IFR3aW5rbGUuc3BlZWR5LmdlbmVyYWxMaXN0O1xuXHRcdGlmICghVHdpbmtsZS5zcGVlZHkubW9kZS5pc1N5c29wKG1vZGUpKSB7XG5cdFx0XHRnZW5lcmFsQ3JpdGVyaWEgPSBbLi4uVHdpbmtsZS5zcGVlZHkuY3VzdG9tUmF0aW9uYWxlLCAuLi5nZW5lcmF0ZUFycmF5KGdlbmVyYWxDcml0ZXJpYSldO1xuXHRcdH1cblx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeEJywgJ+W4uOimjycpLFxuXHRcdH0pO1xuXHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0bmFtZTogJ2NzZCcsXG5cdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoZ2VuZXJhbENyaXRlcmlhLCBtb2RlKSxcblx0XHR9KTtcblx0XHRpZiAoIVR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKSkge1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmj5DmiqXkvrXmnYPpobXpnaLvvIzor7fkvb/nlKhUd2lua2xl55qE4oCc5L615p2D4oCd5Yqf6IO944CCJyxcblx0XHRcdFx0XHQn5o+Q5aCx5L615qyK6aCB6Z2i77yM6KuL5L2/55SoVHdpbmtsZeeahOOAjOS+teasiuOAjeWKn+iDveOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dJc1JlZGlyZWN0JykgfHwgTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6ICfph43lrprlkJEnLFxuXHRcdFx0fSk7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0bGlzdDogVHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0KFR3aW5rbGUuc3BlZWR5LnJlZGlyZWN0TGlzdCwgbW9kZSksXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhmb3JtLCAnd29ya19hcmVhJyk7XG5cdFx0Zm9ybS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLnJlbmRlcigpLCBvbGRfYXJlYSk7XG5cdFx0Ly8gaWYgc3lzb3AsIGNoZWNrIGlmIENTRCBpcyBhbHJlYWR5IG9uIHRoZSBwYWdlIGFuZCBmaWxsIGluIGN1c3RvbSByYXRpb25hbGVcblx0XHRpZiAoaXNTeXNvcE1vZGUgJiYgVHdpbmtsZS5zcGVlZHkuaGFzQ1NEKSB7XG5cdFx0XHRjb25zdCBbY3VzdG9tT3B0aW9uXSA9ICRib2R5LmZpbmQoJ2lucHV0W25hbWU9Y3NkXVt2YWx1ZT1yZWFzb25dJyk7XG5cdFx0XHRpZiAoY3VzdG9tT3B0aW9uKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3NwZWVkeVNlbGVjdGlvblN0eWxlJykgIT09ICdyYWRpb0NsaWNrJykge1xuXHRcdFx0XHRcdC8vIGZvcmNlIGxpc3RlbmVycyB0byByZS1pbml0XG5cdFx0XHRcdFx0Y3VzdG9tT3B0aW9uLmNsaWNrKCk7XG5cdFx0XHRcdFx0Y3VzdG9tT3B0aW9uLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoY3VzdG9tT3B0aW9uLnN1Ymdyb3VwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdXN0b21PcHRpb24uc3ViZ3JvdXAucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChcblx0XHRcdFx0XHQkYm9keS5maW5kKCcjZGVsZXRlLXJlYXNvbicpLnRleHQoKVxuXHRcdFx0XHQpLnJlcGxhY2UoL1xcKy9nLCAnICcpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBlbmxhcmdlIEc3IHJhZGlvL2NoZWNrYm94IGFuZCBpdHMgbGFiZWxcblx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdmFsdWU9XCJnN1wiXScpICYmIFR3aW5rbGUuZ2V0UHJlZignZW5sYXJnZUc3SW5wdXQnKSkge1xuXHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdmFsdWU9XCJnN1wiXScpLnN0eWxlID1cblx0XHRcdFx0J2hlaWdodDogMmVtOyB3aWR0aDogMmVtOyBoZWlnaHQ6IC1tb3otaW5pdGlhbDsgd2lkdGg6IC1tb3otaW5pdGlhbDsgLW1vei10cmFuc2Zvcm06IHNjYWxlKDIpOyAtby10cmFuc2Zvcm06IHNjYWxlKDIpOyc7XG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt2YWx1ZT1cImc3XCJdJykubGFiZWxzWzBdLnN0eWxlID0gJ2ZvbnQtc2l6ZTogMS41ZW07IGxpbmUtaGVpZ2h0OiAxLjVlbTsnO1xuXHRcdH1cblx0XHRpZiAoIWlzU3lzb3BNb2RlICYmIG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpICE9PSAnd2lraXRleHQnKSB7XG5cdFx0XHQkYm9keS5maW5kKCdbbmFtZT10YWdfb3B0aW9uc10nKS5oaWRlKCk7XG5cdFx0XHQkYm9keS5maW5kKCdbbmFtZT13b3JrX2FyZWFdJykuZW1wdHkoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBbXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygnVHdpbmtsZeS4jeaUr+aMgeWcqOmhtemdouWGheWuueaooeWei+S4uicsICdUd2lua2xl5LiN5pSv5o+05Zyo6aCB6Z2i5YWn5a655qih5Z6L54K6JyksXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+eahOmhtemdouS4iuaMguS4iuW/q+mAn+WIoOmZpOaooeadv++8jOivt+WPguingScsICfnmoTpoIHpnaLkuIrmjpvkuIrlv6vpgJ/liKrpmaTmqKHmnb/vvIzoq4vlj4PoposnKSxcblx0XHRcdFx0JCgnPGE+Jylcblx0XHRcdFx0XHQuYXR0cih7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0cmVsOiAnbm9vcGVuZXIgbm9yZWZlcnJlcicsXG5cdFx0XHRcdFx0XHRocmVmOiBtdy51dGlsLmdldFVybCgnUVc6U1BFQ0lBTFNEJyksXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+aJi+WKqOaUvue9ruaooeadv+aXtueahOazqOaEj+S6i+mhuScsICfmiYvli5XmlL7nva7mqKHmnb/mmYLnmoTms6jmhI/kuovpoIUnKSlbMF0sXG5cdFx0XHRcdCfjgIInLFxuXHRcdFx0XTtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPXdvcmtfYXJlYV0nKS5hcHBlbmQobWVzc2FnZSk7XG5cdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQodHJ1ZSk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5wcmlvckRlbGV0aW9uQ291bnQgPSAoKSA9PiB7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdGxpc3Q6ICdsb2dldmVudHMnLFxuXHRcdFx0bGV0eXBlOiAnZGVsZXRlJyxcblx0XHRcdGxlYWN0aW9uOiAnZGVsZXRlL2RlbGV0ZScsXG5cdFx0XHQvLyBKdXN0IHB1cmUgcGFnZSBkZWxldGlvbiwgbm8gcmVkaXJlY3Qgb3ZlcndyaXRlcyBvciByZXZkZWxcblx0XHRcdGxldGl0bGU6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdGxlcHJvcDogJycsXG5cdFx0XHQvLyBXZSdyZSBqdXN0IGNvdW50aW5nIHdlIGRvbid0IGFjdHVhbGx5IGNhcmUgYWJvdXQgdGhlIGVudHJpZXNcblx0XHRcdGxlbGltaXQ6IDUsXG5cdFx0XHQvLyBBIGxpdHRsZSBiaXQgZ29lcyBhIGxvbmcgd2F5XG5cdFx0fTtcblxuXHRcdG5ldyBNb3JlYml0cy53aWtpLmFwaSh3aW5kb3cud2dVTFMoJ+ajgOafpeS5i+WJjeeahOWIoOmZpCcsICfmqqLmn6XkuYvliY3nmoTliKrpmaQnKSwgcXVlcnksIChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRjb25zdCBkZWxDb3VudCA9IHJlc3BvbnNlLnF1ZXJ5LmxvZ2V2ZW50cy5sZW5ndGg7XG5cdFx0XHRpZiAoZGVsQ291bnQpIHtcblx0XHRcdFx0bGV0IG1lc3NhZ2UgPSB3aW5kb3cud2dVTFMoJ+iiq+WIoOmZpCcsICfooqvliKrpmaQnKTtcblx0XHRcdFx0aWYgKHJlc3BvbnNlLmNvbnRpbnVlKSB7XG5cdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoJ+i2hei/hycsICfotoXpgY4nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRtZXNzYWdlICs9IGAke2RlbENvdW50feasoWA7XG5cdFx0XHRcdC8vIDMrIHNlZW1zIHByb2JsZW1hdGljXG5cdFx0XHRcdGlmIChkZWxDb3VudCA+PSAzKSB7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3ByaW9yLWRlbGV0aW9uLWNvdW50JykuY3NzKCdjb2xvcicsICcjZmYwMDAwJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUHJvdmlkZSBhIGxpbmsgdG8gcGFnZSBsb2dzIChDU0QgdGVtcGxhdGVzIGhhdmUgb25lIGZvciBzeXNvcHMpXG5cdFx0XHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsIHdpbmRvdy53Z1VMUygn77yI5pel5b+X77yJJywgJ++8iOaXpeiqjO+8iScpKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcdFx0J2hyZWYnLFxuXHRcdFx0XHRcdG13LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOkxvZycsIHtcblx0XHRcdFx0XHRcdHBhZ2U6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXInKTtcblx0XHRcdFx0JGJvZHkuZmluZCgnI3ByaW9yLWRlbGV0aW9uLWNvdW50JykudGV4dChtZXNzYWdlKTsgLy8gU3BhY2UgYmVmb3JlIGxvZyBsaW5rXG5cdFx0XHRcdCRib2R5LmZpbmQoJyNwcmlvci1kZWxldGlvbi1jb3VudCcpLmFwcGVuZChsaW5rKTtcblx0XHRcdH1cblx0XHR9KS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdCA9IChsaXN0LCBtb2RlKSA9PiB7XG5cdFx0Ly8gbW9kZSBzd2l0Y2hlc1xuXHRcdGNvbnN0IGlzU3lzb3BNb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc1N5c29wKG1vZGUpO1xuXHRcdGNvbnN0IG11bHRpcGxlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc011bHRpcGxlKG1vZGUpO1xuXHRcdGNvbnN0IGhhc1N1Ym1pdEJ1dHRvbiA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuaGFzU3VibWl0QnV0dG9uKG1vZGUpO1xuXHRcdGNvbnN0IG9wZW5TdWJncm91cEhhbmRsZXIgPSAoZSkgPT4ge1xuXHRcdFx0JChlLnRhcmdldC5mb3JtKS5maW5kKCdpbnB1dCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmNoaWxkcmVuKCkuY3NzKCdjb2xvcicsICdncmF5Jyk7XG5cdFx0XHQkKGUudGFyZ2V0KS5wYXJlbnQoKS5jc3MoJ2NvbG9yJywgJ2JsYWNrJykuZmluZCgnaW5wdXQnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcblx0XHRcdCQoZS50YXJnZXQpLnBhcmVudCgpLmZpbmQoJ2lucHV0OnRleHQnKVswXS5mb2N1cygpO1xuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9O1xuXHRcdGNvbnN0IHN1Ym1pdFN1Ymdyb3VwSGFuZGxlciA9IChlKSA9PiB7XG5cdFx0XHRjb25zdCBldmFsdWF0ZVR5cGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSkgPyAnZXZhbHVhdGVTeXNvcCcgOiAnZXZhbHVhdGVVc2VyJztcblx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrW2V2YWx1YXRlVHlwZV0oZSk7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH07XG5cdFx0cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChsaXN0LCAoY3JpdEVsZW1lbnQpID0+IHtcblx0XHRcdGNvbnN0IGNyaXRlcmlvbiA9IHtcblx0XHRcdFx0Li4uY3JpdEVsZW1lbnQsXG5cdFx0XHR9O1xuXHRcdFx0aWYgKG11bHRpcGxlKSB7XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVdoZW5NdWx0aXBsZSkge1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVN1Ymdyb3VwV2hlbk11bHRpcGxlKSB7XG5cdFx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlV2hlblNpbmdsZSkge1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVN1Ymdyb3VwV2hlblNpbmdsZSkge1xuXHRcdFx0XHRcdGNyaXRlcmlvbi5zdWJncm91cCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChpc1N5c29wTW9kZSkge1xuXHRcdFx0XHRpZiAoY3JpdGVyaW9uLmhpZGVXaGVuU3lzb3ApIHtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY3JpdGVyaW9uLmhpZGVTdWJncm91cFdoZW5TeXNvcCkge1xuXHRcdFx0XHRcdGNyaXRlcmlvbi5zdWJncm91cCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVdoZW5Vc2VyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlU3ViZ3JvdXBXaGVuVXNlcikge1xuXHRcdFx0XHRcdGNyaXRlcmlvbi5zdWJncm91cCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0lzUmVkaXJlY3QnKSAmJiBjcml0ZXJpb24uaGlkZVdoZW5SZWRpcmVjdCkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0Y3JpdGVyaW9uLnNob3dJbk5hbWVzcGFjZXMgJiZcblx0XHRcdFx0IWNyaXRlcmlvbi5zaG93SW5OYW1lc3BhY2VzLmluY2x1ZGVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRjcml0ZXJpb24uaGlkZUluTmFtZXNwYWNlcyAmJlxuXHRcdFx0XHRjcml0ZXJpb24uaGlkZUluTmFtZXNwYWNlcy5pbmNsdWRlcyhtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNyaXRlcmlvbi5zdWJncm91cCAmJiAhaGFzU3VibWl0QnV0dG9uKSB7XG5cdFx0XHRcdGNyaXRlcmlvbi5zdWJncm91cCA9IGdlbmVyYXRlQXJyYXkoY3JpdGVyaW9uLnN1Ymdyb3VwLCB7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bmFtZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdFx0bGFiZWw6IGlzU3lzb3BNb2RlID8gd2luZG93LndnVUxTKCfliKDpmaTpobXpnaInLCAn5Yiq6Zmk6aCB6Z2iJykgOiB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdoicsICfmqJnoqJjpoIHpnaInKSxcblx0XHRcdFx0XHRldmVudDogc3VibWl0U3ViZ3JvdXBIYW5kbGVyLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gRklYTUU6IGRvZXMgdGhpcyBkbyBhbnl0aGluZz9cblx0XHRcdFx0Y3JpdGVyaW9uLmV2ZW50ID0gb3BlblN1Ymdyb3VwSGFuZGxlcjtcblx0XHRcdH1cblx0XHRcdGlmIChpc1N5c29wTW9kZSkge1xuXHRcdFx0XHRjb25zdCBvcmlnaW5hbEV2ZW50ID0gY3JpdGVyaW9uLmV2ZW50O1xuXHRcdFx0XHRjcml0ZXJpb24uZXZlbnQgPSAoZSkgPT4ge1xuXHRcdFx0XHRcdGlmIChtdWx0aXBsZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnQoZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IG5vcm1hbGl6ZWRDcml0ZXJpb24gPSBUd2lua2xlLnNwZWVkeS5ub3JtYWxpemVIYXNoW2UudGFyZ2V0LnZhbHVlXTtcblx0XHRcdFx0XHQkYm9keVxuXHRcdFx0XHRcdFx0LmZpbmQoJ1tuYW1lPW9wZW51c2VydGFsa10nKVxuXHRcdFx0XHRcdFx0LnByb3AoXG5cdFx0XHRcdFx0XHRcdCdjaGVja2VkJyxcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdvcGVuVXNlclRhbGtQYWdlT25TcGVlZHlEZWxldGUnKS5pbmNsdWRlcyhub3JtYWxpemVkQ3JpdGVyaW9uKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAob3JpZ2luYWxFdmVudCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnQoZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNyaXRlcmlvbjtcblx0XHR9KTtcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY3VzdG9tUmF0aW9uYWxlID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiBg6Ieq5a6a5LmJ55CG55SxJHtNb3JlYml0cy51c2VySXNTeXNvcCA/ICfvvIjoh6rlrprkuYnliKDpmaTnkIbnlLHvvIknIDogJyd9YCxcblx0XHRcdHZhbHVlOiAncmVhc29uJyxcblx0XHRcdHRvb2x0aXA6ICfor6XpobXoh7PlsJHlupTor6XnrKblkIjkuIDmnaHlv6vpgJ/liKDpmaTnmoTmoIflh4bvvIzlubbkuJTmgqjlv4XpobvlnKjnkIbnlLHkuK3mj5DliLDjgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ3JlYXNvbl8xJyxcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0sXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5zcGVlZHkuZmlsZUxpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdGMe+8muaYjuaYvuS4jeespuWQiOacrOermeiRl+S9nOadg+aWuemSiOeahOaWh+S7ticsXG5cdFx0XHR2YWx1ZTogJ2YxJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfljIXmi6zku6XkuIvmg4XlhrXvvJoxLuS4iuS8oOWQjjPlpKnlhoXku43nhLbmnaXmupDkuI3mmI7jgIHokZfkvZzmnYPkuI3mmI7nmoTmlofku7bjgIIyLuS4iuS8oOiAheWuo+ensOaLpeacie+8jOiAjOWcqOWFtuS7luadpea6kOaJvuWIsOeahOaWh+S7tuOAgjMu5paH5Lu25a6j56ew55Sx5p+Q5L2c6ICF5L6d5o2u5p+Q6Ieq55Sx6JGX5L2c5p2D5Y2P6K6u5Y+R5biD77yM5L2G5om+5LiN5Yiw6K+l6Ieq55Sx5Y2P6K6u55qE5aOw5piO44CCNC7lhbbku5bmmI7mmL7kvrXmnYPnmoTmlofku7bvvIzlj6/pmYTliqDkvrXmnYPnkIbnlLHjgIInLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdGMu+8mumHjeWkjeS4lOS4jeWGjeiiq+S9v+eUqOeahOaWh+S7ticsXG5cdFx0XHR2YWx1ZTogJ2YyJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfljIXmi6zku6XkuIvmg4XlhrXvvJrkuI7njrDmnInmlofku7blrozlhajnm7jlkIzvvIjmiJbkuI7njrDmnInmlofku7blhoXlrrnkuIDoh7TkvYblsLrlr7jovoPlsI/vvInvvIzkuJTmsqHmnInlrqLop4LpnIDopoHvvIjlpoLmn5DkupvlnLrlkIjpnIDkvb/nlKjlsI/lsLrlr7jlm77niYfvvInnmoTmlofku7bjgILmiJbmmK/ooqvmm7TliqDmuIXmmbDnmoTmlofku7bjgIFTVkfmoLzlvI/mlofku7bmiYDlj5bku6PnmoTmlofku7bjgILor7fmj5DmiqXogIXnoa7lrprmlofku7bmsqHmnInku7vkvZXpobXpnaLkvb/nlKjlkI7lho3mj5DmiqXliKDpmaTvvIzlubbpmYTms6jlr7nlupTotKjph4/mm7Tlpb3nmoTmlofku7blkI3jgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ2YyX2ZpbGVuYW1lJyxcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bGFiZWw6ICfmlrDmlofku7blkI3vvJonLFxuXHRcdFx0XHR0b29sdGlwOiAn5Y+v5LiN5ZCr4oCcRmlsZTrigJ3liY3nvIDjgIInLFxuXHRcdFx0fSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5hcnRpY2xlTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0Ex77ya5YaF5a6556m65rOb5oiW5a6M5YWo5rKh5pyJ5YaF5a6544CCJyxcblx0XHRcdHZhbHVlOiAnYTEnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+adoeebrueahOWGheWuueesvOe7n++8jOaIlueUmuiHs+agueacrOayoeacieaPkOWPiuadoeebruS4u+S9k++8jOS9v+adoeebruS4jeiDveeUqOS7peWMuuWIhuWFtuS7luS6i+eJqe+8m+aIluadoeebruWPquWMheaLrOWklumDqOmTvuaOpeOAgeWPguingeOAgeWPguiAg+adpea6kOOAgeWIhuexu+OAgeaooeadv++8jOiAjOayoeacieaWh+Wtl+aPj+i/sOOAgua2iOatp+S5iemhteOAgemHjeWumuWQkemhteS4jemAgueUqOatpOadoeOAguivt+azqOaEj+acieS6m+eUqOaIt+WPr+iDveS8muWkmuasoeS/neWtmO+8jOiLpeatpOexu+mhtemdoueahOacgOWQjuS4gOasoee8lui+keaXtumXtOi2hei/hzI05bCP5pe277yM5YiZ5Y+v5o+Q6K+35b+r6YCf5Yig6Zmk44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnQTLvvJrkuI7lhbbku5bmnaHnm67miJblhbbljoblj7LniYjmnKzph43lpI3vvIzkuJTkuI3pgILlkIjkvZzkuLrlhbbph43lrprlkJHjgIInLFxuXHRcdFx0dmFsdWU6ICdhMicsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5p2h55uu5Yib5bu65pe255qE5YaF5a6577yM5LiO5YW25LuW546w5pyJ5p2h55uu77yI5oiW5YW25Y6G5Y+y54mI5pys77yJ5YaF5a655a6M5YWo55u45ZCM5oiW6Z2e5bi455u45Ly877yM5LiU5ZCN56ew5LiN6YCC5ZCI5L2c5Li65ZCO6ICF55qE6YeN5a6a5ZCR44CC5LiN5YyF5ous5ouG5YiG44CB5ZCI5bm244CB6YeN57uE5ZCO5Lqn55Sf55qE5p2h55uu44CC5aaC5pyJ55aR6JmR77yM5Y+v6L2s5Lqk5Yig6Zmk6K6o6K6644CC6Iul5ZCO5Yib5bu655qE5p2h55uu5ZCN56ew5Y+v5L2c5Li66YeN5a6a5ZCR77yM5Y+v55u05o6l5pS55Li66YeN5a6a5ZCR77yb6Iul5YWI5Yib5bu655qE5p2h55uu5a6c5L2c5Li65ZCO5Yib5bu65p2h55uu55qE6YeN5a6a5ZCR77yM6K+35o+Q6K+356e75Yqo6K+35rGC44CCJyxcblx0XHRcdHN1Ymdyb3VwOiB7XG5cdFx0XHRcdG5hbWU6ICdhMl9wYWdlbmFtZScsXG5cdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdGxhYmVsOiAn546w5pyJ5p2h55uu5ZCN77yaJyxcblx0XHRcdFx0dG9vbHRpcDogJ+S4jeiHquWKqOWKoOS4iumTvuaOpe+8jOiLpemcgOimgeivt+iHquihjOWKoOS4iltbXV3jgIInLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0Ez77ya6Z2e546w5Luj5rGJ6K+t5oiW57+76K+R5ouZ5Yqj55qE5p2h55uuJyxcblx0XHRcdHZhbHVlOiAnYTMnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+adoeebruWGheWuuee7neWkp+mDqOWIhumdnueOsOS7o+axieivre+8jOWMheaLrOacque/u+ivkeeahOWkluivreOAgeaWueiogOWPiuaWh+iogOaWh++8m+aIlue/u+ivkei0qOmHj+S9juS4i++8jOS7peiHs+S6jumavuS7peeQhuino+aIluWHuueOsOi+g+WkmumUmeivr+OAgicsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5zcGVlZHkuY2F0ZWdvcnlMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAnTzLvvJrnqbrliIbnsbvjgIInLFxuXHRcdFx0dmFsdWU6ICdvMicsXG5cdFx0XHR0b29sdGlwOiAn5rKh5pyJ5pS25b2V5Lu75L2V6aG16Z2i44CB5paH5Lu244CB5a2Q5YiG57G755qE5YiG57G744CCQ2F0ZWdvcnk66K+35Yu/5Yig6Zmk55qE5YiG57G75Lit55qE5YiG57G75LiN6YCC55So44CCJyxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5kcmFmdExpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdPM++8muW6n+W8g+iNieeov+OAgicsXG5cdFx0XHR2YWx1ZTogJ28zJyxcblx0XHRcdHRvb2x0aXA6ICfojYnnqL/lkI3lrZfnqbrpl7TlhoXlha3kuKrmnIjlhoXml6DnvJbovpHnmoTpobXpnaLjgIInLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LnVzZXJMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAnTzHvvJrnlKjmiLfor7fmsYLliKDpmaToh6rlt7HnmoTnlKjmiLfpobXjgIInLFxuXHRcdFx0dmFsdWU6ICdvMScsXG5cdFx0XHR0b29sdGlwOiAn566h55CG5ZGY6ZyA5p+l55yL57yW6L6R5Y6G5Y+y77yM56Gu6K6k6K+l6aG16Z2i5LiN5piv5LuO5YW25LuW5ZCN5a2X56m66Ze056e75Yqo6ICM5p2l44CCJyxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5nZW5lcmFsTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0cx77ya5piO5pi+6L+d5Y+N5rOV5b6L5rOV6KeE5oiW6L+d6IOM5YWs5bqP6Imv5L+X55qE6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzEnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+aYjuaYvui/neWPjeacjeWKoeWZqOaJgOWcqOWcsOeahOazleW+i+azleinhOWPiuacieWFs+inhOWumu+8jOaIlueqgeegtOekvuS8muWFrOW6j+iJr+S/l+W6lee6v++8jOaMieeFp+S4reWNjuS6uuawkeWFseWSjOWbveS6kuiBlOe9keeuoeeQhuinhOWumuW6lOS6iOWIoOmZpOeahOmhtemdouOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0cy77ya5rKh5pyJ5a6e6ZmF5YaF5a6555qE6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzInLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+S7heWMheaLrOaXoOaEj+S5ieWtl+espuS4suiAjOayoeacieWunumZheWGheWuueeahOmhtemdouOAgueUseeUqOaIt+acrOS6uuWIm+W7uueahOeUqOaIt+mhteOAgeeUqOaIt+iuqOiuuumhte+8jOWPiuS4k+S4uua1i+ivleaPkOS+m+eahOaymeebku+8jOS4jemAgueUqOatpOWHhuWImeOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0cz77ya57qv57K556C05Z2PJyxcblx0XHRcdHZhbHVlOiAnZzMnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS9huS4jemZkOS6juaYjuaYvueahOaBtuS9nOWJp+OAgemUmeivr+S/oeaBr+OAgeS6uui6q+aUu+WHu+etie+8jOS7peWPiua4heeQhuenu+WKqOegtOWdj+aXtueVmeS4i+eahOmHjeWumuWQkeOAguiLpeaUtuWIsOaIluWPkeeOsOS4pemHjeeahOS6uui6q+aUu+WHu+S4juivi+avge+8jOeuoeeQhuWRmOWPiuWFtuS7lueUqOaIt+W6lOmAmuefpeebkeedo+WRmOi/m+ihjOebkeedo+makOiXj+OAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c077ya6YeN5paw5Yib5bu65bey6KKr5Yig6Zmk55qE6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzQnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+iLpeeOsOaciemhtemdouS4juabvuWcqOWIoOmZpOiuqOiuuu+8iOWQq+mhtemdouWtmOW6n+iuqOiuuuOAgeaWh+S7tuWtmOW6n+iuqOiuuuWSjOS+teadg+WuoeaguO+8jOS4jeWQq+W/q+mAn+WIoOmZpO+8ieS4reiiq+WIoOmZpOWGheWuueebuOWQjOaIlumdnuW4uOebuOS8vO+8jOS4lOeOsOacieWGheWuueS7jeeEtumAgueUqOWIoOmZpOiuqOiuuuS4reeahOe7k+iuuu+8jOaXoOiuuuagh+mimOaYr+WQpuebuOWQjO+8jOmDvemAgueUqOacrOagh+WHhuOAguiLpeeOsOaciemhtemdouagh+mimOS4juW3suWIoOeJiOacrOS4jeS4gOiHtO+8jOWImeaPkOivt+mAn+WIoOiAheW6lOS4gOW5tuazqOaYjuW3suWIoOeJiOacrOeahOmhtemdouWQje+8m+iLpeivpemhtemdouS5i+WJjeiiq+W/q+mAn+WIoOmZpO+8jOivt+S7peebuOWQjOeQhueUsemHjeaWsOaPkOivt+mAn+WIoOOAguiLpeeOsOacieWGheWuueS4jemAgueUqOWIoOmZpOiuqOiuuuS4reeahOe7k+iuuu+8jOW6lOmHjeaWsOaPkOWHuuWIoOmZpOiuqOiuuuOAgicsXG5cdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2c0X3BhZ2VuYW1lJyxcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdGxhYmVsOiAn5bey5Yig54mI5q2k6aG16Z2i5ZCN77yaJyxcblx0XHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0XHRoaWRlU3ViZ3JvdXBXaGVuTXVsdGlwbGU6IHRydWUsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c177ya5Zug5oqA5pyv5Y6f5Zug5Yig6Zmk6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzUnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+aDheW9ou+8muWboOenu+WKqOivt+axguiAjOWIoOmZpOmhtemdou+8m+S7peimhuebluWIoOmZpOmHjeWumuWQke+8m+WIoOmZpOaXoOeUqOeahE1lZGlhV2lraemhtemdou+8jOWPiuWFtuS7luaKgOacr+WboumYn+aIlueVjOmdoueuoeeQhuWRmOiupOS4uuacieW/heimgeaJp+ihjOeahOW/q+mAn+WIoOmZpOaDheW9ouOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c277ya5Y6f5L2c6ICF5o+Q6K+35Yig6Zmk5oiW5riF56m66aG16Z2i77yM5LiU6aG16Z2i5Y6f5L2c6ICF5LuF5pyJ5LiA5Lq6Jyxcblx0XHRcdHZhbHVlOiAnZzYnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+mhtemdouWOn+S9nOiAheaMgeWQiOeQhueQhueUseaPkOWHuueahOW/q+mAn+WIoOmZpO+8m+aIlumhtemdouWOn+S9nOiAhe+8iOWunumZhei0oeeMruiAhe+8iea4heepuumhtemdou+8jOWFtuS7lueUqOaIt+aPkOS6pOeahOW/q+mAn+WIoOmZpOOAgumhtemdouWOn+S9nOiAhe+8iOWunumZhei0oeeMruiAhe+8ieS7heS4gOS6uuaXtua7oei2s+acrOWHhuWImeOAguiLpemhtemdouWunumZhei0oeeMruiAheWkmuS6juS4gOS6uu+8jOivt+aMgeWQiOeQhueQhueUseaPkOS6pOWIoOmZpOiuqOiuuuOAguWQjuS4gOaDheW9ouS4jeWMheaLrOeUqOaIt+mhteOAgeeUqOaIt+iuqOiuuumhte+8jOS4lOW6lOWcqOmhtemdouacgOWQjuS4gOasoee8lui+kTblsI/ml7blkI7mj5Dlh7rjgILooqvlr7zlhaXnmoTpobXpnaLvvIzlr7zlhaXogIXop4bkuLrljp/kvZzogIXjgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ2c2X3JhdGlvbmFsZScsXG5cdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdGxhYmVsOiAn5Yig6Zmk5Y6f5Zug77yaJyxcblx0XHRcdFx0c2l6ZTogNjAsXG5cdFx0XHR9LFxuXHRcdFx0aGlkZVN1Ymdyb3VwV2hlblN5c29wOiB0cnVlLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdHN++8muaYjuaYvueahOW5v+WRiuWuo+S8oCcsXG5cdFx0XHR2YWx1ZTogJ2c3Jyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCflupTnlKjkuo7mmI7mmL7nmoTlub/lkYrlrqPkvKDvvIzmiJblj6rmnInnm7jlhbPkurrnianjgIHnu4Tnu4fnrYnkuovnianogZTns7vmlrnms5XvvIjljIXmi6zkvYbkuI3pmZDkuo7nlLXor53jgIHlnLDlnYDjgIHnlLXlrZDpgq7nrrHjgIHljbPml7bpgJrorq/ova/ku7bogZTns7vmlrnlvI/vvIjlpoJRUeWPt+OAgeW+ruS/oeWPt++8ieOAgeekvuS6pOWqkuS9k+mTvuaOpe+8ieOAguiLpeWuo+S8oOivreawlOS4jeaYjuaYvu+8jOW7uuiurui9rOS6pOWIoOmZpOiuqOiuuuOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c477ya5pyq5YiX5piO5Y+v6Z2g5p2l5rqQ5LiU6K+t6LCD6LSf6Z2i55qE55Sf6ICF5Lyg6K6wJyxcblx0XHRcdHZhbHVlOiAnZzgnLFxuXHRcdFx0dG9vbHRpcDogJ+acrOaDheWGteS4i+acieeahOmhtemdouS4pemHjeS+teeKr+S7luS6uuWQjeiqieadg++8jOacieaXtuWPr+iDveS+teeKr+makOengeadg++8jOWPr+iDvemcgOimgeaPkOivt+ebkeedo+OAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c577ya5a2k56uL6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzknLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+WHoOenjeexu+Wei++8mjEu5rKh5pyJ5a+55bqU5paH5Lu255qE5paH5Lu26aG16Z2i77ybMi7msqHmnInlr7nlupTmr43pobXpnaLnmoTlrZDpobXpnaLvvIjnlKjmiLfpobXlrZDpobXpnaLpmaTlpJbvvInvvJszLuaMh+WQkeS4jeWtmOWcqOmhtemdoueahOmHjeWumuWQke+8mzQu5rKh5pyJ5a+55bqU5YaF5a656aG16Z2i55qE6K6o6K666aG177yI6K6o6K666aG15a2Y5qGj44CB55So5oi36K6o6K666aG177yM5Lul5Y+K5Zyo5Li76aG16Z2i5oyC5pyJe3tDU0QgUGxhY2Vob2xkZXJ9feaooeadv+eahOiuqOiuuumhtemZpOWklu+8ie+8mzUu5LiN5a2Y5Zyo5rOo5YaM55So5oi355qE55So5oi36aG15Y+K55So5oi36aG15a2Q6aG16Z2i77yI6ZqP55So5oi35pu05ZCN5Lqn55Sf55qE55So5oi36aG16YeN5a6a5ZCR6Zmk5aSW77yJ44CC6K+35Zyo5Yig6Zmk5pe25rOo5oSP5pyJ5peg5bCG5YaF5a6556e76Iez5LuW5aSE55qE5b+F6KaB44CCJyxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5yZWRpcmVjdExpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdSMe+8muS4jeiDveWPkeaMpeWunumZheS9nOeUqOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHR2YWx1ZTogJ3IxJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfljIXmi6zku6XkuIvmg4XlhrXvvJoxLuaMh+WQkeacrOi6q+aIluW+queOr+eahOmHjeWumuWQke+8jOWmgkHihpJC4oaSQ+KGkuKApuKApuKGkkHmiJZB4oaSQe+8iOe5geeugOmHjeWumuWQkeS4jemAgueUqOatpOmhue+8ie+8mzIu5qC85byP6ZSZ6K+v55qE6YeN5a6a5ZCR77yM5YyF5ous5qCH6aKY5LuF5Li657mB5L2T44CB57mB566A5re355So44CB5raI5q2n5LmJ5L2/55So55qE5ous5byn5oiW56m65qC86ZSZ6K+v44CB6Ze06ZqU5Y+35L2/55So6ZSZ6K+v77yI5Zug57G75o6o566A5YyW5a2X5pyq5pS25b2V6Iez44CK6YCa55So6KeE6IyD5rGJ5a2X6KGo44CL5a+86Ie055qE57mB566A5re35p2C5oOF5b2i77yM5oiW57O757uf5peg5rOV6Ieq5Yqo6L+b6KGM57mB566A5aSE55CG55qE5oOF5b2i77yM5YiZ5LiN6YCC55So77yJ44CC6Iul6YeN5a6a5ZCR6aG16Z2i5qCH6aKY77yM5LiO5ZCI5LmO5ZG95ZCN5bi46KeE55qE55uu5qCH6aG16Z2i5qCH6aKY5LmL6Ze077yM5LuF5a2Y5Zyo57mB566A5a2X5L2T55qE5Yy65Yir77yM6ICM5LiN5a2Y5Zyo6K+N6K+t55So5rOV5Yy65Yir77yM5YiZ5LiN5L+d55WZ6K+l6YeN5a6a5ZCR44CC5Zug57O757uf5peg5rOV6Ieq5Yqo57mB566A6L2s5o2i6ICM5b+F6aG75L+d55WZ55qE6YeN5a6a5ZCR6aG16Z2i6Zmk5aSW44CC5a+55LqO5YW25LuW5pyq5YiX5Ye655qE5oOF5Ya177yM6Iul55So5oi36K6k5Li66K+l6YeN5a6a5ZCR5peg5rOV5Y+R5oyl5a6e6ZmF5L2c55So77yM5LiU5L6d5o2u5bi46K+G5rKh5pyJ5Lu75L2V5LqJ6K6u77yM5Y+v5Yet5ZCI55CG55CG55Sx5o+Q6K+36YCf5Yig77yM55Sx566h55CG5ZGY5Yik5pat44CC5oyH5ZCR5LiN5a2Y5Zyo6aG16Z2i55qE6YeN5a6a5ZCR77yM6YCC55SoRzXlh4bliJnjgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ3IxX3R5cGUnLFxuXHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0bGFiZWw6ICfpgILnlKjnsbvlnovvvJonLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfor7fpgInmi6knLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfmjIflkJHmnKzouqvmiJblvqrnjq/nmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfmjIflkJHmnKzouqvmiJblvqrnjq/nmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfmoIfpopjnuYHnroDmt7fnlKgnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfmoIfpopjnuYHnroDmt7fnlKjjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfmtojmrafkuYnkvb/nlKjnmoTmi6zlj7fmiJbnqbrmoLzplJnor68nLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfmtojmrafkuYnkvb/nlKjnmoTmi6zlj7fmiJbnqbrmoLzplJnor6/jgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfpl7TpmpTlj7fkvb/nlKjplJnor68nLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfpl7TpmpTlj7fkvb/nlKjplJnor6/jgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICflhbbku5bnkIbnlLHvvIjor7fli77pgInkuIrmlrnigJzlupTnlKjlpJrkuKrnkIbnlLHigJ3vvIzlubbloavlhpnoh6rlrprkuYnnkIbnlLHvvIknLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdSMu+8muWQjeensOS4juWvvOWQkeebruagh+S7o+ihqOS6i+eJqeS4jeS4gOiHtOaIluS4jeWujOWFqOS4gOiHtOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHR2YWx1ZTogJ3IyJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfljIXmi6zkvYbkuI3pmZDkuo7ku6XkuIvmg4XlhrXvvJoxLueUseS7u+S9lemdnuadoeebrumhtemdou+8iOmZpOeUqOaIt+mhte+8ieWvvOWQkeadoeebrumhteeahOmHjeWumuWQke+8jOS7peWPiueUseadoeebrumhteWvvOWQkeS7u+S9lemdnuadoeebrumhtemdoueahOmHjeWumuWQkeOAgjIu5piO5pi+56yU6K+v55qE6YeN5a6a5ZCR77yM5aaC5Ye6546w5LiN5bi46KeB55qE6ZSZ5Yir5a2X562J44CC77yI5Yir56ew6YeN5a6a5ZCR5LiN6YCC55So5q2k6aG544CC6Iul5ZCr6ZSZ5Yir5a2X5oiW5pyJ56yU6K+v55qE6YeN5a6a5ZCR5L2/55So6aKR546H6auY77yM5q2k57G76YeN5a6a5ZCR5pyJ5Yqp5LqO5biu5Yqp55So5oi35a+75om+5Yiw5q2j56Gu55qE6aG16Z2i77yM5LiN6YCC55So5q2k5qCH5YeG44CC5pyJ5LqJ6K6u55qE5q2k57G76YeN5a6a5ZCR5a6c5o+Q5Lqk5Yig6Zmk6K6o6K6644CC77yJMy7mmI7mmL7kuI7lr7zlkJHnm67moIfmiYDmtrXnm5bnmoTkuLvpopjml6DlhbPvvIzmiJbmr5Tlr7zlkJHnm67moIfmiYDmtrXnm5bnmoTkuLvpopjmm7Tlub/ms5vnmoTph43lrprlkJHjgILvvIjoi6XkuI3mmI7mmL7vvIzlj6/mlLnkuLrmj5DkuqTliKDpmaTorqjorrrjgILvvIknLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ3IyX3R5cGUnLFxuXHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0bGFiZWw6ICfpgILnlKjnsbvlnovvvJonLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfor7fpgInmi6knLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfnlLHpnZ7mnaHnm67pobXpnaLvvIjpmaTnlKjmiLfpobXvvInlr7zlkJHmnaHnm67pobXnmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfnlLHpnZ7mnaHnm67pobXpnaLvvIjpmaTnlKjmiLfpobXvvInlr7zlkJHmnaHnm67pobXnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfnlLHmnaHnm67pobXlr7zlkJHpnZ7mnaHnm67pobXpnaLnmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfnlLHmnaHnm67pobXlr7zlkJHku7vkvZXpnZ7mnaHnm67pobXpnaLnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfmmI7mmL7nrJTor6/nmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfmmI7mmL7nrJTor6/nmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfkuI7lr7zlkJHnm67moIfml6DlhbPmiJbmr5TlhbbojIPlm7Tmm7Tlub/ms5vnmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfkuI7lr7zlkJHnm67moIfml6DlhbPmiJbmr5TlhbbojIPlm7Tmm7Tlub/ms5vnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICflhbbku5bnkIbnlLHvvIjor7fli77pgInkuIrmlrnigJzlupTnlKjlpJrkuKrnkIbnlLHigJ3vvIzlubbloavlhpnoh6rlrprkuYnnkIbnlLHvvIknLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5Lm5vcm1hbGl6ZUhhc2ggPSB7XG5cdFx0cmVhc29uOiAnZGInLFxuXHRcdG11bHRpcGxlOiAnbXVsdGlwbGUnLFxuXHRcdCdtdWx0aXBsZS1maW5pc2gnOiAnbXVsdGlwbGUtZmluaXNoJyxcblx0XHRnMTogJ2cxJyxcblx0XHRnMjogJ2cyJyxcblx0XHRnMzogJ2czJyxcblx0XHRnNDogJ2c0Jyxcblx0XHRnNTogJ2c1Jyxcblx0XHRnNjogJ2c2Jyxcblx0XHRnNzogJ2c3Jyxcblx0XHRnODogJ2c4Jyxcblx0XHRnOTogJ2c5Jyxcblx0XHRhMTogJ2ExJyxcblx0XHRhMjogJ2EyJyxcblx0XHRhMzogJ2EzJyxcblx0XHRyMTogJ3IxJyxcblx0XHRyMjogJ3IyJyxcblx0XHRmMTogJ2YxJyxcblx0XHRmMjogJ2YyJyxcblx0XHRmMzogJ2YzJyxcblx0XHRmNDogJ2Y0Jyxcblx0XHRmNTogJ2Y1Jyxcblx0XHRvMTogJ28xJyxcblx0XHRvMjogJ28yJyxcblx0XHRvMzogJ28zJyxcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzID0ge1xuXHRcdGdldFRlbXBsYXRlQ29kZUFuZFBhcmFtczogKHBhcmFtcykgPT4ge1xuXHRcdFx0bGV0IGNvZGU7XG5cdFx0XHRsZXQgcGFyYW1ldGVycztcblx0XHRcdGxldCBpO1xuXHRcdFx0aWYgKHBhcmFtcy5ub3JtYWxpemVkcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdGNvZGUgPSAne3tkZWxldGUnO1xuXHRcdFx0XHRwYXJhbXMudXRwYXJhbXMgPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBbaW5kZXgsIG5vcm1dIG9mIHBhcmFtcy5ub3JtYWxpemVkcy5lbnRyaWVzKCkpIHtcblx0XHRcdFx0XHRpZiAobm9ybSAhPT0gJ2RiJykge1xuXHRcdFx0XHRcdFx0Y29kZSArPSBgfCR7bm9ybS50b1VwcGVyQ2FzZSgpfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBwYXJhbXMudGVtcGxhdGVQYXJhbXNbaW5kZXhdIHx8IFtdO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgaV8gaW4gcGFyYW1ldGVycykge1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbWV0ZXJzW2lfXSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdFx0Y29kZSArPSBgfCR7cGFyYW1ldGVyc1tpX119YDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cGFyYW1zLnV0cGFyYW1zID0ge1xuXHRcdFx0XHRcdFx0Li4ucGFyYW1zLnV0cGFyYW1zLFxuXHRcdFx0XHRcdFx0Li4uVHdpbmtsZS5zcGVlZHkuZ2V0VXNlclRhbGtQYXJhbWV0ZXJzKG5vcm0sIHBhcmFtZXRlcnMpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29kZSArPSAnfX0nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cGFyYW1ldGVycyA9IHBhcmFtcy50ZW1wbGF0ZVBhcmFtc1swXSB8fCBbXTtcblx0XHRcdFx0Y29kZSA9ICd7e2RlbGV0ZSc7XG5cdFx0XHRcdGlmIChwYXJhbXMudmFsdWVzWzBdICE9PSAncmVhc29uJykge1xuXHRcdFx0XHRcdGNvZGUgKz0gYHwke3BhcmFtcy52YWx1ZXNbMF19YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGkgaW4gcGFyYW1ldGVycykge1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcGFyYW1ldGVyc1tpXSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdGNvZGUgKz0gYHwke3BhcmFtZXRlcnNbaV19YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29kZSArPSAnfX0nO1xuXHRcdFx0XHRwYXJhbXMudXRwYXJhbXMgPSBUd2lua2xlLnNwZWVkeS5nZXRVc2VyVGFsa1BhcmFtZXRlcnMocGFyYW1zLm5vcm1hbGl6ZWRzWzBdLCBwYXJhbWV0ZXJzKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBbY29kZSwgcGFyYW1zLnV0cGFyYW1zXTtcblx0XHR9LFxuXHRcdHBhcnNlV2lraXRleHQ6ICh0aXRsZSwgd2lraXRleHQsIGNhbGxiYWNrKSA9PiB7XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAncGFyc2UnLFxuXHRcdFx0XHRwcm9wOiAndGV4dCcsXG5cdFx0XHRcdHBzdDogJ3RydWUnLFxuXHRcdFx0XHR0ZXh0OiB3aWtpdGV4dCxcblx0XHRcdFx0Y29udGVudG1vZGVsOiAnd2lraXRleHQnLFxuXHRcdFx0XHR0aXRsZSxcblx0XHRcdH07XG5cdFx0XHRjb25zdCBzdGF0dXNJbmRpY2F0b3IgPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn5p6E6YCg5Yig6Zmk55CG55SxJywgJ+ani+mAoOWIqumZpOeQhueUsScpKTtcblx0XHRcdGNvbnN0IGFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfop6PmnpDliKDpmaTmqKHmnb8nLCAn6Kej5p6Q5Yiq6Zmk5qih5p2/JyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHQoYXBpT2JqKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgcmVhc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KFxuXHRcdFx0XHRcdFx0JChhcGlPYmouZ2V0WE1MKCkucXVlcnlTZWxlY3RvcigndGV4dCcpLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgnI2RlbGV0ZS1yZWFzb24nKVxuXHRcdFx0XHRcdFx0XHQudGV4dCgpXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKC9cXCsvZywgJyAnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKHJlYXNvbikge1xuXHRcdFx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3Iud2Fybih3aW5kb3cud2dVTFMoJ+acquiDveS7juWIoOmZpOaooeadv+eUn+aIkOWIoOmZpOeQhueUsScsICfmnKrog73lvp7liKrpmaTmqKHmnb/nlJ/miJDliKrpmaTnkIbnlLEnKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhbGxiYWNrKHJlYXNvbik7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHN0YXR1c0luZGljYXRvclxuXHRcdFx0KTtcblx0XHRcdGFwaS5wb3N0KCk7XG5cdFx0fSxcblx0XHRzeXNvcDoge1xuXHRcdFx0bWFpbjogKHBhcmFtcykgPT4ge1xuXHRcdFx0XHRsZXQgcmVhc29uO1xuXHRcdFx0XHRpZiAoIXBhcmFtcy5ub3JtYWxpemVkcy5sZW5ndGggJiYgcGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0cmVhc29uID0gcHJvbXB0KHdpbmRvdy53Z1VMUygn6L6T5YWl5Yig6Zmk55CG55Sx77yaJywgJ+i8uOWFpeWIqumZpOeQhueUse+8micpLCAnJyk7XG5cdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLmRlbGV0ZVBhZ2UocmVhc29uLCBwYXJhbXMpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IFtjb2RlXSA9IFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5nZXRUZW1wbGF0ZUNvZGVBbmRQYXJhbXMocGFyYW1zKTtcblx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MucGFyc2VXaWtpdGV4dChtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksIGNvZGUsIChkZWxldGVSZWFzb24pID0+IHtcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMucHJvbXB0Rm9yU3VtbWFyeSkge1xuXHRcdFx0XHRcdFx0XHRkZWxldGVSZWFzb24gPSBwcm9tcHQoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+i+k+WFpeWIoOmZpOeQhueUse+8jOaIluWNleWHu+ehruWumuS7peaOpeWPl+iHquWKqOeUn+aIkOeahO+8micsXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Ly45YWl5Yiq6Zmk55CG55Sx77yM5oiW6bue5pOK56K65a6a5Lul5o6l5Y+X6Ieq5YuV55Sf5oiQ55qE77yaJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0ZGVsZXRlUmVhc29uXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUGFnZShkZWxldGVSZWFzb24sIHBhcmFtcyk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxldGVQYWdlOiAocmVhc29uLCBwYXJhbXMpID0+IHtcblx0XHRcdFx0Y29uc3QgdGhpc3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAocmVhc29uID09PSBudWxsKSB7XG5cdFx0XHRcdFx0cmV0dXJuIE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6K+i6Zeu55CG55SxJywgJ+ipouWVj+eQhueUsScpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnlKjmiLflj5bmtojmk43kvZzjgIInLCAn5L2/55So6ICF5Y+W5raI5pON5L2c44CCJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFyZWFzb24gfHwgIXJlYXNvbi50cmltKCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gTW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor6Lpl67nkIbnlLEnLCAn6Kmi5ZWP55CG55SxJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S9oOS4jee7meaIkeeQhueUseKApuaIkeWwseKApuS4jeeuoeS6huKApicsICfkvaDkuI3ntabmiJHnkIbnlLHigKbmiJHlsLHigKbkuI3nrqHkuobigKYnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZGVsZXRlTWFpbiA9ICgpID0+IHtcblx0XHRcdFx0XHR0aGlzcGFnZS5zZXRFZGl0U3VtbWFyeShyZWFzb24pO1xuXHRcdFx0XHRcdHRoaXNwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5zZXRXYXRjaGxpc3QocGFyYW1zLndhdGNoKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5kZWxldGVQYWdlKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXNwYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5kZWxldGVUYWxrKHBhcmFtcyk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdC8vIGxvb2sgdXAgaW5pdGlhbCBjb250cmlidXRvci4gSWYgcHJvbXB0aW5nIHVzZXIgZm9yIGRlbGV0aW9uIHJlYXNvbiwganVzdCBkaXNwbGF5IGEgbGluay5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIG9wZW4gdGhlIHRhbGsgcGFnZSBkaXJlY3RseVxuXHRcdFx0XHRpZiAocGFyYW1zLm9wZW5Vc2VyVGFsaykge1xuXHRcdFx0XHRcdHRoaXNwYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdHRoaXNwYWdlLmxvb2t1cENyZWF0aW9uKCgpID0+IHtcblx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5vcGVuVXNlclRhbGtQYWdlKHRoaXNwYWdlKTtcblx0XHRcdFx0XHRcdGRlbGV0ZU1haW4oKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWxldGVNYWluKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxldGVUYWxrOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdC8vIGRlbGV0ZSB0YWxrIHBhZ2Vcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHBhcmFtcy5kZWxldGVUYWxrUGFnZSAmJlxuXHRcdFx0XHRcdHBhcmFtcy5ub3JtYWxpemVkICE9PSAnbzEnICYmXG5cdFx0XHRcdFx0IWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjYS10YWxrJykuY2xhc3NMaXN0LmNvbnRhaW5zKCduZXcnKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb25zdCB0YWxrcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHRgJHtcblx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJylbbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSArIDFdXG5cdFx0XHRcdFx0XHR9OiR7bXcuY29uZmlnLmdldCgnd2dUaXRsZScpfWAsXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WIoOmZpOiuqOiuuumhtScsICfliKrpmaToqI7oq5bpoIEnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYFtbUVc6Q1NEI0c5fEc5XV06IOWtpOeri+mhtemdou+8muW3suWIoOmZpOmhtemdouKAnCR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfeKAneeahOiuqOiuuumhtWApO1xuXHRcdFx0XHRcdHRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR0YWxrcGFnZS5kZWxldGVQYWdlKCk7XG5cdFx0XHRcdFx0Ly8gdGhpcyBpcyB1Z2x5LCBidXQgYmVjYXVzZSBvZiB0aGUgYXJjaGl0ZWN0dXJlIG9mIHdpa2kuYXBpLCBpdCBpcyBuZWVkZWRcblx0XHRcdFx0XHQvLyAob3RoZXJ3aXNlIHN1Y2Nlc3MvZmFpbHVyZSBtZXNzYWdlcyBmb3IgdGhlIHByZXZpb3VzIGFjdGlvbiB3b3VsZCBiZSBzdXBwcmVzc2VkKVxuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLmRlbGV0ZVJlZGlyZWN0cyhwYXJhbXMpO1xuXHRcdFx0XHRcdH0sIDE4MDApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5kZWxldGVSZWRpcmVjdHMocGFyYW1zKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZVJlZGlyZWN0czogKHBhcmFtcykgPT4ge1xuXHRcdFx0XHQvLyBkZWxldGUgcmVkaXJlY3RzXG5cdFx0XHRcdGlmIChwYXJhbXMuZGVsZXRlUmVkaXJlY3RzKSB7XG5cdFx0XHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHR0aXRsZXM6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHRcdHByb3A6ICdyZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0cmRsaW1pdDogNTAwMCwgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W6YeN5a6a5ZCR5YiX6KGo4oCmJywgJ+WPluW+l+mHjeaWsOWwjuWQkeWIl+ihqOKApicpLFxuXHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUmVkaXJlY3RzTWFpbixcblx0XHRcdFx0XHRcdG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfliKDpmaTph43lrprlkJEnLCAn5Yiq6Zmk6YeN5paw5bCO5ZCRJykpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBwcm9tcHQgZm9yIHByb3RlY3Qgb24gRzdcblx0XHRcdFx0bGV0ICRsaW5rO1xuXHRcdFx0XHRsZXQgJGJpZ3RleHQ7XG5cdFx0XHRcdGlmIChwYXJhbXMubm9ybWFsaXplZCA9PT0gJ2c3Jykge1xuXHRcdFx0XHRcdCRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdC5hdHRyKCdocmVmJywgJyMnKVxuXHRcdFx0XHRcdFx0LnRleHQod2luZG93LndnVUxTKCfljZXlh7vov5nph4zmlr3ooYzkv53miqQnLCAn6bue5pOK6YCZ6KOh5pa96KGM5L+d6K23JykpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMjUlJyxcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdG13LmNvbmZpZy5zZXQoJ3dnQXJ0aWNsZUlkJywgMCk7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0JGJpZ3RleHQgPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXNpemUnOiAnMTI1JScsXG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+eZvee6uOS/neaKpOivpemhtScsICfnmb3ntJnkv53orbfoqbLpoIEnKSk7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJGJpZ3RleHRbMF0sICRsaW5rWzBdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBwcm9tb3RlIFVubGluayB0b29sXG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2KSB7XG5cdFx0XHRcdFx0JGxpbmsgPSAkKCc8YT4nKVxuXHRcdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCAnIycpXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+WNleWHu+i/memHjOWJjeW+gOWPlua2iOmTvuWFpeW3peWFtycsICfpu57mk4rpgJnoo6HliY3lvoDlj5bmtojpgKPlhaXlt6XlhbcnKSlcblx0XHRcdFx0XHRcdC5jc3Moe1xuXHRcdFx0XHRcdFx0XHQnZm9udC13ZWlnaHQnOiAnYm9sZCcsXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0Lm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5kaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2soXG5cdFx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCflj5bmtojlr7nlt7LliKDpmaTmlofku7YgJywgJ+WPlua2iOWwjeW3suWIqumZpOaqlOahiCAnKSArIE1vcmViaXRzLnBhZ2VOYW1lTm9ybX0g55qE5L2/55SoYFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0JGJpZ3RleHQgPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+WPlua2iOWvueW3suWIoOmZpOaWh+S7tueahOS9v+eUqCcsICflj5bmtojlsI3lt7LliKrpmaTmqpTmoYjnmoTkvb/nlKgnKSk7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJGJpZ3RleHRbMF0sICRsaW5rWzBdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkbGluayA9ICQoJzxhPicpXG5cdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICcjJylcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5Y2V5Ye76L+Z6YeM5YmN5b6A5Y+W5raI6ZO+5YWl5bel5YW3JywgJ+m7nuaTiumAmeijoeWJjeW+gOWPlua2iOmAo+WFpeW3peWFtycpKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmRpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnVubGluay5jYWxsYmFjayhcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOWvueW3suWIoOmZpOmhtemdoiAnLCAn5Y+W5raI5bCN5bey5Yiq6Zmk6aCB6Z2iICcpICtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSArXG5cdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDnmoTpk77mjqUnLCAnIOeahOmAo+e1kCcpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQkYmlndGV4dCA9ICQoJzxzcGFuPicpLnRleHQod2luZG93LndnVUxTKCflj5bmtojlr7nlt7LliKDpmaTpobXpnaLnmoTpk77mjqUnLCAn5Y+W5raI5bCN5bey5Yiq6Zmk6aCB6Z2i55qE6YCj57WQJykpLmNzcyh7XG5cdFx0XHRcdFx0XHQnZm9udC13ZWlnaHQnOiAnYm9sZCcsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJGJpZ3RleHRbMF0sICRsaW5rWzBdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQkbGluayA9ICQoJzxhPicpXG5cdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCBtdy51dGlsLmdldFVybCgnU3BlY2lhbDpSYW5kb21JbkNhdGVnb3J5L+W/q+mAn+WIoOmZpOWAmemAiScpKVxuXHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5Y2V5Ye75YmN5b6A5LiL5LiA5Liq5b+r6YCf5Yig6Zmk5YCZ6YCJJywgJ+m7nuaTiuWJjeW+gOS4i+S4gOWAi+W/q+mAn+WIqumZpOWAmemBuCcpKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJ+W3peWFtycsICRsaW5rWzBdKTtcblx0XHRcdH0sXG5cdFx0XHRvcGVuVXNlclRhbGtQYWdlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKS51bmxpbmsoKTsgLy8gZG9uJ3QgbmVlZCBpdCBhbnltb3JlXG5cdFx0XHRcdGNvbnN0IHVzZXIgPSBwYWdlb2JqLmdldENyZWF0b3IoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdFx0YWN0aW9uOiAnZWRpdCcsXG5cdFx0XHRcdFx0cHJldmlldzogJ3llcycsXG5cdFx0XHRcdFx0dmFuYXJ0aWNsZTogTW9yZWJpdHMucGFnZU5hbWVOb3JtLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCB0aXRsZSA9IGBVc2VyIHRhbGs6JHt1c2VyfWA7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRwYXJhbXMubm9ybWFsaXplZCA9PT0gJ2RiJyB8fFxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncHJvbXB0Rm9yU3BlZWR5RGVsZXRpb25TdW1tYXJ5JykuaW5jbHVkZXMocGFyYW1zLm5vcm1hbGl6ZWQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIHByb3ZpZGUgYSBsaW5rIHRvIHRoZSB1c2VyIHRhbGsgcGFnZVxuXHRcdFx0XHRcdGNvbnN0ICRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdC5hdHRyKHtcblx0XHRcdFx0XHRcdFx0aHJlZjogbXcudXRpbC5nZXRVcmwodGl0bGUsIHF1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnX2JsYW5rJyxcblx0XHRcdFx0XHRcdFx0cmVsOiAnbm9vcGVuZXIgbm9yZWZlcnJlcicsXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXNpemUnOiAnMTI1JScsXG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+eCueatpOaJk+W8gFVzZXIgdGFsazonLCAn6bue5q2k5omT6ZaLVXNlciB0YWxrOicpICsgdXNlcik7XG5cdFx0XHRcdFx0Y29uc3QgJGJpZ3RleHQgPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXNpemUnOiAnMTI1JScsXG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhScsICfpgJrnn6XpoIHpnaLlu7rnq4vogIUnKSk7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJGJpZ3RleHRbMF0sICRsaW5rWzBdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBvcGVuIHRoZSBpbml0aWFsIGNvbnRyaWJ1dG9yJ3MgdGFsayBwYWdlXG5cdFx0XHRcdFx0Y29uc3Qgc3RhdHVzSW5kaWNhdG9yID0gbmV3IE1vcmViaXRzLnN0YXR1cyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5omT5byA55So5oi3JywgJ+aJk+mWi+S9v+eUqOiAhScpICtcblx0XHRcdFx0XHRcdFx0dXNlciArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn55qE6K6o6K666aG157yW6L6R56qX5Y+jJywgJ+eahOiojuirlumggee3qOi8r+imlueqlycpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmiZPlvIDkuK3igKYnLCAn5omT6ZaL5Lit4oCmJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHN3aXRjaCAoVHdpbmtsZS5nZXRQcmVmKCd1c2VyVGFsa1BhZ2VNb2RlJykpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ3RhYic6XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKG13LnV0aWwuZ2V0VXJsKHRpdGxlLCBxdWVyeSksICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2JsYW5rJzpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4oXG5cdFx0XHRcdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwodGl0bGUsIHF1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHQnX2JsYW5rJyxcblx0XHRcdFx0XHRcdFx0XHQnbm9vcGVuZXIsbm9yZWZlcnJlcixsb2NhdGlvbj1ubyx0b29sYmFyPW5vLHN0YXR1cz1ubyxkaXJlY3Rvcmllcz1ubyxzY3JvbGxiYXJzPXllcyx3aWR0aD0xMjAwLGhlaWdodD04MDAnXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0LyogY2FzZSAnd2luZG93JzogKi9cblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKFxuXHRcdFx0XHRcdFx0XHRcdG13LnV0aWwuZ2V0VXJsKHRpdGxlLCBxdWVyeSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hbWUgPT09ICd0d2lua2xld2FybndpbmRvdycgPyAnX2JsYW5rJyA6ICd0d2lua2xld2FybndpbmRvdycsXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hbWUgPT09ICd0d2lua2xld2FybndpbmRvdydcblx0XHRcdFx0XHRcdFx0XHRcdD8gJ25vb3BlbmVyLG5vcmVmZXJyZXIsJ1xuXHRcdFx0XHRcdFx0XHRcdFx0OiAnJyArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2xvY2F0aW9uPW5vLHRvb2xiYXI9bm8sc3RhdHVzPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJhcnM9eWVzLHdpZHRoPTEyMDAsaGVpZ2h0PTgwMCdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHN0YXR1c0luZGljYXRvci5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZVJlZGlyZWN0c01haW46IChhcGlvYmopID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRG9jID0gYXBpb2JqLmdldFhNTCgpO1xuXHRcdFx0XHRjb25zdCAkc25hcHNob3QgPSAkKHhtbERvYykuZmluZCgncmVkaXJlY3RzIHJkJyk7XG5cdFx0XHRcdGNvbnN0IHRvdGFsID0gJHNuYXBzaG90Lmxlbmd0aDtcblx0XHRcdFx0Y29uc3Qgc3RhdHVzSW5kaWNhdG9yID0gYXBpb2JqLnN0YXRlbGVtO1xuXHRcdFx0XHRpZiAoIXRvdGFsKSB7XG5cdFx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yLmluZm8od2luZG93LndnVUxTKCfmnKrlj5HnjrDph43lrprlkJEnLCAn5pyq55m854++6YeN5paw5bCO5ZCRJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdGF0dXNJbmRpY2F0b3Iuc3RhdHVzKCcwJScpO1xuXHRcdFx0XHRsZXQgY3VycmVudCA9IDA7XG5cdFx0XHRcdGNvbnN0IG9uc3VjY2VzcyA9IChhcGlvYmpJbm5lcikgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG5vdyA9IGAke051bWJlci5wYXJzZUludCgoMTAwICogKytjdXJyZW50KSAvIHRvdGFsLCAxMCl9JWA7XG5cdFx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yLnVwZGF0ZShub3cpO1xuXHRcdFx0XHRcdGFwaW9iaklubmVyLnN0YXRlbGVtLnVubGluaygpO1xuXHRcdFx0XHRcdGlmIChjdXJyZW50ID49IHRvdGFsKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3IuaW5mbyhgJHtub3d977yI5a6M5oiQ77yJYCk7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWRkQ2hlY2twb2ludCgpO1xuXHRcdFx0XHQkc25hcHNob3QuZWFjaCgoX2tleSwgdmFsdWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0aXRsZSA9ICQodmFsdWUpLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHR0aXRsZSxcblx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn5Yig6Zmk6YeN5a6a5ZCRIFwiJywgJ+WIqumZpOmHjeaWsOWwjuWQkSBcIicpICsgdGl0bGV9XCJgXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KGBbW1FXOkNTRCNHOXxHOV1dOiDlraTnq4vpobXpnaLvvJrph43lrprlkJHliLDlt7LliKDpmaTpobXpnaLigJwke01vcmViaXRzLnBhZ2VOYW1lTm9ybX3igJ1gKTtcblx0XHRcdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRwYWdlLmRlbGV0ZVBhZ2Uob25zdWNjZXNzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0dXNlcjoge1xuXHRcdFx0bWFpbjogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0Y29uc3Qgc3RhdGVsZW0gPSBwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKDpmaQnLCAn6aCB6Z2i5LiN5a2Y5Zyo77yM5Y+v6IO95bey6KKr5Yiq6ZmkJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0c3RhdGVsZW0uc3RhdHVzKHdpbmRvdy53Z1VMUygn5qOA5p+l6aG16Z2i5bey5pyJ5qCH6K6w4oCmJywgJ+aqouafpemggemdouW3suacieaomeiomOKApicpKTtcblx0XHRcdFx0Ly8gY2hlY2sgZm9yIGV4aXN0aW5nIGRlbGV0aW9uIHRhZ3Ncblx0XHRcdFx0Y29uc3QgdGV4dE5vU2QgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooZGIoLVxcdyopP3xkfGRlbGV0ZXxkZWxldGViZWNhdXNlfHNwZWVkeXxjc2R86YCf5YiqfOmAn+WIoHzlv6vliKB85b+r5YiqKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRleHQgIT09IHRleHROb1NkICYmXG5cdFx0XHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCflnKjpobXpnaLkuIrmib7liLDlv6vpgJ/liKDpmaTmqKHmnb/vvIzopoHnp7vpmaTlubbliqDlhaXmlrDnmoTlkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK5om+5Yiw5b+r6YCf5Yiq6Zmk5qih5p2/77yM6KaB56e76Zmk5Lim5Yqg5YWl5paw55qE5ZeO77yfJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmqKHmnb/lt7Looqvnva7kuo7pobXpnaLkuK3jgIInLCAn5b+r6YCf5Yiq6Zmk5qih5p2/5bey6KKr572u5pa86aCB6Z2i5Lit44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0ZXh0ID0gdGV4dE5vU2Q7XG5cdFx0XHRcdGNvbnN0IGNvcHl2aW8gPSAvKD86XFx7XFx7XFxzKihjb3B5dmlvfOS+teadg3zkvrXmrIopW157fV0qP1xcfVxcfSkvaS5leGVjKHRleHQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y29weXZpbyAmJlxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6JGX5L2c5p2D6aqM6K+B5qih5p2/5bey6KKr572u5LqO6aG16Z2i5Lit77yM5oKo5piv5ZCm5LuN5oOz5Yqg5YWl5LiA5Liq5b+r6YCf5Yig6Zmk5qih5p2/77yfJyxcblx0XHRcdFx0XHRcdFx0J+iRl+S9nOasiumpl+itieaooeadv+W3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+WKoOWFpeS4gOWAi+W/q+mAn+WIqumZpOaooeadv++8nydcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5Lit5bey5pyJ6JGX5L2c5p2D6aqM6K+B5qih5p2/44CCJywgJ+mggemdouS4reW3suacieiRl+S9nOasiumpl+itieaooeadv+OAgicpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgeGZkID0gLyg/Olxce1xceyhbcnNhaWZ0Y212XWZkfG1kMXxwcm9wb3NlZCBkZWxldGlvbilbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR4ZmQgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz5qih5p2/e3snLCAn5Yiq6Zmk55u46Zec5qih5p2/e3snKSArXG5cdFx0XHRcdFx0XHRcdHhmZFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7kuo7pobXpnaLkuK3vvIzmgqjmmK/lkKbku43mg7PliqDlhaXkuIDkuKrlv6vpgJ/liKDpmaTmqKHmnb/vvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+WKoOWFpeS4gOWAi+W/q+mAn+WIqumZpOaooeadv++8nydcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLlt7Looqvmj5DkuqToh7PlrZjlup/orqjorrrjgIInLCAn6aCB6Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bui6KiO6KuW44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBnaXZlbiB0aGUgcGFyYW1zLCBidWlsZHMgdGhlIHRlbXBsYXRlIGFuZCBhbHNvIGFkZHMgdGhlIHVzZXIgdGFsayBwYWdlIHBhcmFtZXRlcnMgdG8gdGhlIHBhcmFtcyB0aGF0IHdlcmUgcGFzc2VkIGluXG5cdFx0XHRcdC8vIHJldHVybnMgPT4gWzxzdHJpbmc+IHdpa2l0ZXh0LCA8b2JqZWN0PiB1dHBhcmFtc11cblx0XHRcdFx0Y29uc3QgYnVpbGREYXRhID0gVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLmdldFRlbXBsYXRlQ29kZUFuZFBhcmFtcyhwYXJhbXMpO1xuXHRcdFx0XHRsZXQgW2NvZGVdID0gYnVpbGREYXRhO1xuXHRcdFx0XHRbLCBwYXJhbXMudXRwYXJhbXNdID0gYnVpbGREYXRhO1xuXHRcdFx0XHRjb25zdCB0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpKTtcblx0XHRcdFx0Ly8gcGF0cm9sIHRoZSBwYWdlLCBpZiByZWFjaGVkIGZyb20gU3BlY2lhbDpOZXdQYWdlc1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3BlZWR5UGFnZXNBc1BhdHJvbGxlZCcpKSB7XG5cdFx0XHRcdFx0dGhpc3BhZ2UucGF0cm9sKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gV3JhcCBTRCB0ZW1wbGF0ZSBpbiBub2luY2x1ZGUgdGFncyBpZiB3ZSBhcmUgaW4gdGVtcGxhdGUgc3BhY2UuXG5cdFx0XHRcdC8vIFdvbid0IHdvcmsgd2l0aCB1c2VyYm94ZXMgaW4gdXNlcnNwYWNlLCBvciBhbnkgb3RoZXIgdHJhbnNjbHVkZWQgcGFnZSBvdXRzaWRlIHRlbXBsYXRlIHNwYWNlXG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxMCkge1xuXHRcdFx0XHRcdC8vIFRlbXBsYXRlOlxuXHRcdFx0XHRcdGNvZGUgPSBgPG5vaW5jbHVkZT4ke2NvZGV9PC9ub2luY2x1ZGU+YDtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBSZW1vdmUgdGFncyB0aGF0IGJlY29tZSBzdXBlcmZsdW91cyB3aXRoIHRoaXMgYWN0aW9uXG5cdFx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooW05uXWV3IHVucmV2aWV3ZWQgYXJ0aWNsZXxbVXVdbnJldmlld2VkfFtVdV1zZXJzcGFjZSBkcmFmdClcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2csXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0XHQvLyByZW1vdmUgXCJtb3ZlIHRvIENvbW1vbnNcIiB0YWcgLSBkZWxldGlvbi10YWdnZWQgZmlsZXMgY2Fubm90IGJlIG1vdmVkIHRvIENvbW1vbnNcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xce1xceyhtdGN8KGNvcHkgfG1vdmUgKT90byA/KHNoYXJlfGNvbW1vbnMpfG1vdmUgdG8gKHFpdXdlbiBzaGFyZXx3aWtpbWVkaWEgY29tbW9ucyl8Y29weSB0byAocWl1d2VuIHNoYXJlfHdpa2ltZWRpYSBjb21tb25zKSlbXn1dKlxcfVxcfS9naSxcblx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocGFyYW1zLnJlcXVlc3RzYWx0KSB7XG5cdFx0XHRcdFx0Y29kZSA9IGB7e3NhbHR9fVxcbiR7Y29kZX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEdlbmVyYXRlIGVkaXQgc3VtbWFyeSBmb3IgZWRpdFxuXHRcdFx0XHRsZXQgZWRpdHN1bW1hcnk7XG5cdFx0XHRcdGlmIChwYXJhbXMubm9ybWFsaXplZHMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdGVkaXRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfor7fmsYLlv6vpgJ/liKDpmaTvvIgnLCAn6KuL5rGC5b+r6YCf5Yiq6Zmk77yIJyk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBub3JtIG9mIHBhcmFtcy5ub3JtYWxpemVkcykge1xuXHRcdFx0XHRcdFx0aWYgKG5vcm0gIT09ICdkYicpIHtcblx0XHRcdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gYFtbUVc6Q1NEIyR7bm9ybS50b1VwcGVyQ2FzZSgpfXxDU0QgJHtub3JtLnRvVXBwZXJDYXNlKCl9XV3jgIFgO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlZGl0c3VtbWFyeSA9IGVkaXRzdW1tYXJ5LnNsaWNlKDAsIE1hdGgubWF4KDAsIGVkaXRzdW1tYXJ5Lmxlbmd0aCAtIDEpKTsgLy8gcmVtb3ZlIHRyYWlsaW5nIGNvbW1hXG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gJ++8iSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgPVxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fmsYJbW1FXOkNTRHzlv6vpgJ/liKDpmaRdXe+8micsICfoq4vmsYJbW1FXOkNTRHzlv6vpgJ/liKrpmaRdXe+8micpICtcblx0XHRcdFx0XHRcdHBhcmFtcy50ZW1wbGF0ZVBhcmFtc1swXVsnMSddO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGVkaXRzdW1tYXJ5ID0gYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+axguW/q+mAn+WIoOmZpCcsXG5cdFx0XHRcdFx0XHQn6KuL5rGC5b+r6YCf5Yiq6ZmkJ1xuXHRcdFx0XHRcdCl977yIW1tRVzpDU0QjJHtwYXJhbXMubm9ybWFsaXplZHNbMF0udG9VcHBlckNhc2UoKX18Q1NEICR7cGFyYW1zLm5vcm1hbGl6ZWRzWzBdLnRvVXBwZXJDYXNlKCl9XV3vvIlgO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEJsYW5rIGF0dGFjayBwYWdlc1xuXHRcdFx0XHRpZiAocGFyYW1zLmJsYW5rKSB7XG5cdFx0XHRcdFx0dGV4dCA9IGNvZGU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyhgJHtjb2RlfVxcbmAsIFR3aW5rbGUuaGF0bm90ZVJlZ2V4KS5nZXRUZXh0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShlZGl0c3VtbWFyeSk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChwYXJhbXMud2F0Y2gpO1xuXHRcdFx0XHRwYWdlb2JqLnNhdmUoVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIudGFnQ29tcGxldGUpO1xuXHRcdFx0fSxcblx0XHRcdHRhZ0NvbXBsZXRlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHQvLyBOb3RpZmljYXRpb24gdG8gZmlyc3QgY29udHJpYnV0b3Jcblx0XHRcdFx0aWYgKHBhcmFtcy51c2VydGFsaykge1xuXHRcdFx0XHRcdGNvbnN0IGNhbGxiYWNrID0gKHBhZ2VPYmopID0+IHtcblx0XHRcdFx0XHRcdGxldCBpbml0aWFsQ29udHJpYiA9IHBhZ2VPYmouZ2V0Q3JlYXRvcigpO1xuXHRcdFx0XHRcdFx0Ly8gZGlzYWxsb3cgd2FybmluZyB5b3Vyc2VsZlxuXHRcdFx0XHRcdFx0aWYgKGluaXRpYWxDb250cmliID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpIHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0YOaCqO+8iCR7aW5pdGlhbENvbnRyaWJ9JHt3aW5kb3cud2dVTFMoJ++8ieWIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICfvvInlu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKX1gXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGluaXRpYWxDb250cmliID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Ly8gZG9uJ3Qgbm90aWZ5IHVzZXJzIHdoZW4gdGhlaXIgdXNlciB0YWxrIHBhZ2UgaXMgbm9taW5hdGVkXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdFx0XHRpbml0aWFsQ29udHJpYiA9PT0gbXcuY29uZmlnLmdldCgnd2dUaXRsZScpICYmXG5cdFx0XHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDNcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6YCa55+l6aG16Z2i5Yib5bu66ICF77ya55So5oi35Yib5bu65LqG6Ieq5bex55qE6K6o6K666aG1Jyxcblx0XHRcdFx0XHRcdFx0XHRcdCfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvJrkvb/nlKjogIXlu7rnq4vkuoboh6rlt7HnmoToqI7oq5bpoIEnXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRpbml0aWFsQ29udHJpYiA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdC8vIHF1aWNrIGhhY2sgdG8gcHJldmVudCBleGNlc3NpdmUgdW53YW50ZWQgbm90aWZpY2F0aW9ucy4gU2hvdWxkIGFjdHVhbGx5IGJlIGNvbmZpZ3VyYWJsZSBvbiByZWNpcGllbnQgcGFnZS4uLlxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChpbml0aWFsQ29udHJpYiA9PT0gJ0EyMDkzMDY0LWJvdCcgJiYgcGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZzE1Jykge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6YCa55+l6aG16Z2i5Yib5bu66ICF77ya55Sx5py65Zmo5Lq65Yib5bu677yM6Lez6L+H6YCa55+lJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvJrnlLHmqZ/lmajkurrlu7rnq4vvvIzot7PpgY7pgJrnn6UnXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRpbml0aWFsQ29udHJpYiA9IG51bGw7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0YWxrUGFnZU5hbWUgPSBgVXNlciB0YWxrOiR7aW5pdGlhbENvbnRyaWJ9YDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdXNlcnRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0XHR0YWxrUGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIXvvIgnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICF77yIJykgKyBpbml0aWFsQ29udHJpYn3vvIlgXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGxldCBub3RpZnl0ZXh0O1xuXHRcdFx0XHRcdFx0XHRub3RpZnl0ZXh0ID0gJ1xcbnt7Jy5jb25jYXQoJ3N1YnN0OicsIGBkYi1ub3RpY2V8dGFyZ2V0PSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfWApO1xuXHRcdFx0XHRcdFx0XHRub3RpZnl0ZXh0ICs9IFwifG5vd2VsY29tZT15ZXMnfX0tLX5+XCIuY29uY2F0KCd+ficpO1xuXHRcdFx0XHRcdFx0XHRsZXQgZWRpdHN1bW1hcnkgPSAn6YCa55+l77yaJztcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5ub3JtYWxpemVkcy5pbmNsdWRlcygnZzMnKSkge1xuXHRcdFx0XHRcdFx0XHRcdGVkaXRzdW1tYXJ5ICs9ICfkuIDmlLvlh7vmgKfpobXpnaInO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdC8vIG5vIGFydGljbGUgbmFtZSBpbiBzdW1tYXJ5IGZvciBHMTAgZGVsZXRpb25zXG5cdFx0XHRcdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gYOmhtemdoltbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVkaXRzdW1tYXJ5ICs9ICflv6vpgJ/liKDpmaTmj5DlkI0nO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KGVkaXRzdW1tYXJ5KTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2csIGlmIHRoZSB1c2VyIGhhcyBlbmFibGVkIGl0XG5cdFx0XHRcdFx0XHRpZiAocGFyYW1zLmxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIuYWRkVG9Mb2cocGFyYW1zLCBpbml0aWFsQ29udHJpYik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRjb25zdCB0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoTW9yZWJpdHMucGFnZU5hbWVOb3JtKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5sb29rdXBDcmVhdGlvbihjYWxsYmFjayk7XG5cdFx0XHRcdFx0Ly8gb3IsIGlmIG5vdCBub3RpZnlpbmcsIGFkZCB0aGlzIG5vbWluYXRpb24gdG8gdGhlIHVzZXIncyB1c2Vyc3BhY2UgbG9nIHdpdGhvdXQgdGhlIGluaXRpYWwgY29udHJpYnV0b3IncyBuYW1lXG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLmxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci5hZGRUb0xvZyhwYXJhbXMsIG51bGwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Ly8gbm90ZTogdGhpcyBjb2RlIGlzIGFsc28gaW52b2tlZCBmcm9tIHR3aW5rbGVpbWFnZVxuXHRcdFx0Ly8gdGhlIHBhcmFtcyB1c2VkIGFyZTpcblx0XHRcdC8vICAgZm9yIENTRDogcGFyYW1zLnZhbHVlcywgcGFyYW1zLm5vcm1hbGl6ZWRzICAobm90ZTogbm9ybWFsaXplZHMgaXMgYW4gYXJyYXkpXG5cdFx0XHQvLyAgIGZvciBESTogcGFyYW1zLmZyb21ESSA9IHRydWUsIHBhcmFtcy50ZW1wbGF0ZW5hbWUsIHBhcmFtcy5ub3JtYWxpemVkICAobm90ZTogbm9ybWFsaXplZCBpcyBhIHN0cmluZylcblx0XHRcdGFkZFRvTG9nOiAocGFyYW1zLCBpbml0aWFsQ29udHJpYikgPT4ge1xuXHRcdFx0XHRjb25zdCB1c2wgPSBuZXcgTW9yZWJpdHMudXNlcnNwYWNlTG9nZ2VyKFR3aW5rbGUuZ2V0UHJlZignc3BlZWR5TG9nUGFnZU5hbWUnKSk7XG5cdFx0XHRcdHVzbC5pbml0aWFsVGV4dCA9IGDov5nmmK/or6XnlKjmiLfkvb/nlKhbW0g6VFd8VHdpbmtsZV1d55qE6YCf5Yig5qih5Z2X5YGa5Ye655qEW1tRVzpDU0R85b+r6YCf5Yig6ZmkXV3mj5DlkI3liJfooajjgIJcXG5cXG7oi6XmgqjkuI3lho3mg7Pkv53nlZnmraTml6Xlv5fvvIzor7flnKhbWyR7VHdpbmtsZS5nZXRQcmVmKFxuXHRcdFx0XHRcdCdjb25maWdQYWdlJ1xuXHRcdFx0XHQpfXzlj4LmlbDorr7nva5dXeS4reWFs+aOie+8jOW5tuS9v+eUqFtbUVc6Q1NEI08xfENTRCBPMV1d5o+Q5Lqk5b+r6YCf5Yig6Zmk44CCJHtcblx0XHRcdFx0XHRNb3JlYml0cy51c2VySXNTeXNvcCA/ICdcXG5cXG7mraTml6Xlv5flubbkuI3orrDlvZXnlKhUd2lua2xl55u05o6l5omn6KGM55qE5Yig6Zmk44CCJyA6ICcnXG5cdFx0XHRcdH1gO1xuXHRcdFx0XHRsZXQgYXBwZW5kVGV4dCA9IGAjIFtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1d77yaYDtcblx0XHRcdFx0aWYgKHBhcmFtcy5mcm9tREkpIHtcblx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IGDlm77niYhbW1FXOkNTRCMke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9fENTRCAke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9XV3vvIh7e3RsfCR7XG5cdFx0XHRcdFx0XHRwYXJhbXMudGVtcGxhdGVuYW1lXG5cdFx0XHRcdFx0fX1977yJYDtcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubm9ybWFsaXplZHMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gJ+WkmuS4queQhueUse+8iCc7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBub3JtIG9mIHBhcmFtcy5ub3JtYWxpemVkcykge1xuXHRcdFx0XHRcdFx0YXBwZW5kVGV4dCArPSBgW1tRVzpDU0QjJHtub3JtLnRvVXBwZXJDYXNlKCl9fCR7bm9ybS50b1VwcGVyQ2FzZSgpfV1d44CBYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCA9IGFwcGVuZFRleHQuc2xpY2UoMCwgTWF0aC5tYXgoMCwgYXBwZW5kVGV4dC5sZW5ndGggLSAxKSk7IC8vIHJlbW92ZSB0cmFpbGluZyBjb21tYVxuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gJ++8iSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSAn6Ieq5a6a5LmJ55CG55SxJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IGBbW1FXOkNTRCMke3BhcmFtcy5ub3JtYWxpemVkc1swXS50b1VwcGVyQ2FzZSgpfXxDU0QgJHtwYXJhbXMubm9ybWFsaXplZHNbMF0udG9VcHBlckNhc2UoKX1dXWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHBhcmFtcy5yZXF1ZXN0c2FsdCkge1xuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gd2luZG93LndnVUxTKCfvvJvor7fmsYLnmb3nurjkv53miqQnLCAn77yb6KuL5rGC55m957SZ5L+d6K23Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGluaXRpYWxDb250cmliKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSBg77yb6YCa55+le3t1c2VyfCR7aW5pdGlhbENvbnRyaWJ9fX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gJyB+ficuY29uY2F0KCd+JywgJ35+XFxuJyk7XG5cdFx0XHRcdHVzbC5jaGFuZ2VUYWdzID0gVHdpbmtsZS5jaGFuZ2VUYWdzO1xuXHRcdFx0XHR1c2wubG9nKFxuXHRcdFx0XHRcdGFwcGVuZFRleHQsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCforrDlvZXlr7lbWycsICfoqJjpjITlsI1bWycpICtcblx0XHRcdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ11d55qE5b+r6YCf5Yig6Zmk5o+Q5ZCNJywgJ11d55qE5b+r6YCf5Yiq6Zmk5o+Q5ZCNJylcblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0fSxcblx0fTtcblx0Ly8gdmFsaWRhdGUgc3ViZ3JvdXBzIGluIHRoZSBmb3JtIHBhc3NlZCBpbnRvIHRoZSBzcGVlZHkgZGVsZXRpb24gdGFnXG5cdFR3aW5rbGUuc3BlZWR5LmdldFBhcmFtZXRlcnMgPSAoZm9ybSwgdmFsdWVzKSA9PiB7XG5cdFx0bGV0IHBhcmFtZXRlcnMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuXHRcdFx0Y29uc3QgY3VycmVudFBhcmFtcyA9IFtdO1xuXHRcdFx0bGV0IHJlZGltYWdlO1xuXHRcdFx0c3dpdGNoICh2YWx1ZSkge1xuXHRcdFx0XHRjYXNlICdyZWFzb24nOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QucmVhc29uXzEnXSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgZGJyYXRpb25hbGUgPSBmb3JtWydjc2QucmVhc29uXzEnXS52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICghZGJyYXRpb25hbGUgfHwgIWRicmF0aW9uYWxlLnRyaW0oKSkge1xuXHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUse+8muivt+aMh+WumueQhueUseOAgicsICfoh6roqILnkIbnlLHvvJroq4vmjIflrprnkIbnlLHjgIInKSwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3BlZWR5Jyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zWycxJ10gPSBkYnJhdGlvbmFsZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2EyJzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLmEyX3BhZ2VuYW1lJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IG90aGVycGFnZSA9IGZvcm1bJ2NzZC5hMl9wYWdlbmFtZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFvdGhlcnBhZ2UgfHwgIW90aGVycGFnZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCdDU0QgQTLvvJror7fmj5DkvpvnjrDmnInmnaHnm67nmoTlkI3np7DjgIInLCAnQ1NEIEEy77ya6KuL5o+Q5L6b54++5pyJ5qKd55uu55qE5ZCN56ix44CCJyksXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFBhcmFtcy5wYWdlbmFtZSA9IG90aGVycGFnZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2c0Jzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLmc0X3BhZ2VuYW1lJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IHBhZ2VuYW1lID0gZm9ybVsnY3NkLmc0X3BhZ2VuYW1lJ10udmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoIXBhZ2VuYW1lIHx8ICFwYWdlbmFtZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCdDU0QgRzTvvJror7fmj5DkvpvpobXpnaLlkI3np7DjgIInLCAnQ1NEIEc077ya6KuL5o+Q5L6b6aCB6Z2i5ZCN56ix44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFBhcmFtcy5wYWdlbmFtZSA9IHBhZ2VuYW1lO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZjInOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QuZjJfZmlsZW5hbWUnXSkge1xuXHRcdFx0XHRcdFx0cmVkaW1hZ2UgPSBmb3JtWydjc2QuZjJfZmlsZW5hbWUnXS52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICghcmVkaW1hZ2UgfHwgIXJlZGltYWdlLnRyaW0oKSkge1xuXHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeShcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ0NTRCBGMu+8muivt+aPkOS+m+WPpuS4gOaWh+S7tueahOWQjeensOOAgicsICdDU0QgRjLvvJroq4vmj5Dkvpvlj6bkuIDmqpTmoYjnmoTlkI3nqLHjgIInKSxcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3BlZWR5Jyxcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zLmZpbGVuYW1lID0gcmVkaW1hZ2UucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChgXlxcXFxzKiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoNil9OmAsICdpJyksXG5cdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncjEnOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QucjFfdHlwZSddKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZWRpcnR5cGUgPSBmb3JtWydjc2QucjFfdHlwZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFyZWRpcnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCdDU0QgUjHvvJror7fpgInmi6npgILnlKjnsbvlnovjgIInLCAnQ1NEIFIx77ya6KuL6YG45pOH6YGp55So6aGe5Yil44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFBhcmFtc1snMSddID0gcmVkaXJ0eXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncjInOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QucjJfdHlwZSddKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZWRpcnR5cGUgPSBmb3JtWydjc2QucjJfdHlwZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFyZWRpcnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCdDU0QgUjLvvJror7fpgInmi6npgILnlKjnsbvlnovjgIInLCAnQ1NEIFIy77ya6KuL6YG45pOH6YGp55So6aGe5Yil44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFBhcmFtc1snMSddID0gcmVkaXJ0eXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHBhcmFtZXRlcnNbcGFyYW1ldGVycy5sZW5ndGhdID0gY3VycmVudFBhcmFtcztcblx0XHR9XG5cdFx0cmV0dXJuIHBhcmFtZXRlcnM7XG5cdH07XG5cdC8vIEZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIHRhbGsgcGFnZSBub3RpZmljYXRpb24gdGVtcGxhdGUgcGFyYW1ldGVyc1xuXHRUd2lua2xlLnNwZWVkeS5nZXRVc2VyVGFsa1BhcmFtZXRlcnMgPSAobm9ybWFsaXplZCkgPT4ge1xuXHRcdGNvbnN0IHV0cGFyYW1zID0gW107XG5cdFx0c3dpdGNoIChub3JtYWxpemVkKSB7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHV0cGFyYW1zO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5yZXNvbHZlQ3NkVmFsdWVzID0gKGUpID0+IHtcblx0XHRjb25zdCB2YWx1ZXMgPSAoZS50YXJnZXQuZm9ybSA/PyBlLnRhcmdldCkuZ2V0Q2hlY2tlZCgnY3NkJyk7XG5cdFx0aWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+36YCJ5oup5LiA5Liq55CG5o2u77yBJywgJ+iri+mBuOaTh+S4gOWAi+eQhuaTmu+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gdmFsdWVzO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVN5c29wID0gKGUpID0+IHtcblx0XHRjb25zdCBmb3JtID0gZS50YXJnZXQuZm9ybSA/PyBlLnRhcmdldDtcblx0XHRpZiAoZS50YXJnZXQudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlLnRhcmdldC50eXBlID09PSAndGV4dCcgfHwgZS50YXJnZXQudHlwZSA9PT0gJ3NlbGVjdCcpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qge3RhZ19vbmx5fSA9IGZvcm07XG5cdFx0aWYgKHRhZ19vbmx5ICYmIHRhZ19vbmx5LmNoZWNrZWQpIHtcblx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLmV2YWx1YXRlVXNlcihlKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdmFsdWVzID0gVHdpbmtsZS5zcGVlZHkucmVzb2x2ZUNzZFZhbHVlcyhlKTtcblx0XHRpZiAoIXZhbHVlcykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBub3JtYWxpemVkcyA9IHZhbHVlcy5tYXAoKHZhbHVlKSA9PiB7XG5cdFx0XHRyZXR1cm4gVHdpbmtsZS5zcGVlZHkubm9ybWFsaXplSGFzaFt2YWx1ZV07XG5cdFx0fSk7XG5cdFx0Ly8gYW5hbHlzZSBlYWNoIGNyaXRlcmlvbiB0byBkZXRlcm1pbmUgd2hldGhlciB0byB3YXRjaCB0aGUgcGFnZSwgcHJvbXB0IGZvciBzdW1tYXJ5LCBvciBvcGVuIHVzZXIgdGFsayBwYWdlXG5cdFx0bGV0IHdhdGNoUGFnZTtcblx0XHRsZXQgcHJvbXB0Rm9yU3VtbWFyeTtcblx0XHRmb3IgKGNvbnN0IG5vcm0gb2Ygbm9ybWFsaXplZHMpIHtcblx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3dhdGNoU3BlZWR5UGFnZXMnKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHR3YXRjaFBhZ2UgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoU3BlZWR5RXhwaXJ5Jyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnknKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRwcm9tcHRGb3JTdW1tYXJ5ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0dmFsdWVzLFxuXHRcdFx0bm9ybWFsaXplZHMsXG5cdFx0XHR3YXRjaDogd2F0Y2hQYWdlLFxuXHRcdFx0ZGVsZXRlVGFsa1BhZ2U6IGZvcm0udGFsa3BhZ2UgJiYgZm9ybS50YWxrcGFnZS5jaGVja2VkLFxuXHRcdFx0ZGVsZXRlUmVkaXJlY3RzOiBmb3JtLnJlZGlyZWN0cy5jaGVja2VkLFxuXHRcdFx0b3BlblVzZXJUYWxrOiBmb3JtLm9wZW51c2VydGFsay5jaGVja2VkLFxuXHRcdFx0cHJvbXB0Rm9yU3VtbWFyeSxcblx0XHRcdHRlbXBsYXRlUGFyYW1zOiBUd2lua2xlLnNwZWVkeS5nZXRQYXJhbWV0ZXJzKGZvcm0sIHZhbHVlcyksXG5cdFx0fTtcblx0XHRpZiAoIXBhcmFtcy50ZW1wbGF0ZVBhcmFtcykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5tYWluKHBhcmFtcyk7XG5cdH07XG5cdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLmV2YWx1YXRlVXNlciA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0LmZvcm0gPz8gZS50YXJnZXQ7XG5cdFx0aWYgKGUudGFyZ2V0LnR5cGUgPT09ICdjaGVja2JveCcgfHwgZS50YXJnZXQudHlwZSA9PT0gJ3RleHQnIHx8IGUudGFyZ2V0LnR5cGUgPT09ICdzZWxlY3QnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlcyA9IFR3aW5rbGUuc3BlZWR5LnJlc29sdmVDc2RWYWx1ZXMoZSk7XG5cdFx0aWYgKCF2YWx1ZXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Ly8gY29uc3QgbXVsdGlwbGUgPSBmb3JtLm11bHRpcGxlLmNoZWNrZWQ7XG5cdFx0Y29uc3Qgbm9ybWFsaXplZHMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuXHRcdFx0Y29uc3Qgbm9ybSA9IFR3aW5rbGUuc3BlZWR5Lm5vcm1hbGl6ZUhhc2hbdmFsdWVdO1xuXHRcdFx0bm9ybWFsaXplZHNbbm9ybWFsaXplZHMubGVuZ3RoXSA9IG5vcm07XG5cdFx0fVxuXHRcdC8vIGFuYWx5c2UgZWFjaCBjcml0ZXJpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gd2F0Y2ggdGhlIHBhZ2Uvbm90aWZ5IHRoZSBjcmVhdG9yXG5cdFx0bGV0IHdhdGNoUGFnZSA9IGZhbHNlO1xuXHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hTcGVlZHlQYWdlcycpLmluY2x1ZGVzKG5vcm0pKSB7XG5cdFx0XHRcdHdhdGNoUGFnZSA9IFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hTcGVlZHlFeHBpcnknKTtcblx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdGNvbnRpbnVlOyAvLyBicmVha1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBub3RpZnl1c2VyID0gZmFsc2U7XG5cdFx0aWYgKGZvcm0ubm90aWZ5LmNoZWNrZWQpIHtcblx0XHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24nKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRcdG5vdGlmeXVzZXIgPSB0cnVlO1xuXHRcdFx0XHRcdGZhbHNlO1xuXHRcdFx0XHRcdGNvbnRpbnVlOyAvLyBicmVha1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IGNzZGxvZyA9IGZhbHNlO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2xvZ1NwZWVkeU5vbWluYXRpb25zJykpIHtcblx0XHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRcdGNzZGxvZyA9IHRydWU7XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0Y29udGludWU7IC8vIGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR2YWx1ZXMsXG5cdFx0XHRub3JtYWxpemVkcyxcblx0XHRcdHdhdGNoOiB3YXRjaFBhZ2UsXG5cdFx0XHR1c2VydGFsazogbm90aWZ5dXNlcixcblx0XHRcdGxvZ25vbWluYXRpb246IGNzZGxvZyxcblx0XHRcdGJsYW5rOiBmb3JtLmJsYW5rLmNoZWNrZWQsXG5cdFx0XHRyZXF1ZXN0c2FsdDogZm9ybS5zYWx0aW5nLmNoZWNrZWQsXG5cdFx0XHR0ZW1wbGF0ZVBhcmFtczogVHdpbmtsZS5zcGVlZHkuZ2V0UGFyYW1ldGVycyhmb3JtLCB2YWx1ZXMpLFxuXHRcdH07XG5cdFx0aWYgKCFwYXJhbXMudGVtcGxhdGVQYXJhbXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+agh+iusOWujOaIkCcsICfmqJnoqJjlrozmiJAnKTtcblx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdoicsICfmqJnoqJjpoIHpnaInKSk7XG5cdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci5tYWluKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5zcGVlZHksICdzcGVlZHknKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlY29weXZpby5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVjb3B5dmlvKCkge1xuXHQvKipcblx0ICogdHdpbmtsZWNvcHl2aW8uanM6IENvcHl2aW8gbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjpcdFRhYiAoXCJDb3B5dmlvXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3RpbmcsIG5vbi1zcGVjaWFsIHBhZ2VzLCBleGNlcHQgZm9yIGZpbGUgcGFnZXNcblx0ICogd2l0aCBubyBsb2NhbCBmaWxlIHdoaWNoIGFyZSBub3QgcmVkaXJlY3RzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiAgVHdpbmtsZUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS5jb3B5dmlvID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHQvLyAqIG5vbi1sb2NhbCBmaWxlcywgd2hldGhlciB0aGVyZSBpcyBhIGxvY2FsIHBhZ2Ugb3Igbm90ICh1bm5lZWRlZCBsb2NhbCBwYWdlcyBvZiBub24tbG9jYWwgZmlsZXMgYXJlIGVsaWdpYmxlIGZvciBDU0QgRjIpXG5cdFx0Ly8gKiBmaWxlIHBhZ2VzIHdpdGhvdXQgYWN0dWFsIGZpbGVzICh0aGVzZSBhcmUgZWxpZ2libGUgZm9yIENTRCBHOClcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fFxuXHRcdFx0IW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHxcblx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHRcdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctc2hhcmVkdXBsb2FkJykgfHxcblx0XHRcdFx0XHQoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1pbWFnZXBhZ2Utc2VjdGlvbi1maWxlaGlzdG9yeScpICYmICFNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSkpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2ssXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+S+teadgycsICfkvrXmrIonKSxcblx0XHRcdCd0dy1jb3B5dmlvJyxcblx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5oql5L615p2D6aG16Z2iJywgJ+aPkOWgseS+teasiumggemdoicpLFxuXHRcdFx0Jydcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDM1MCk7XG5cdFx0V2luZG93LnNldFRpdGxlKHdpbmRvdy53Z1VMUygn5o+Q5oql5L615p2D6aG16Z2iJywgJ+aPkOWgseS+teasiumggemdoicpKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5L615p2D6K6+572uJywgJ+S+teasiuioreWumicpLCAnSDpUVy9QUkVGI2NvcHl2aW8nKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjY29weXZpbycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuY29weXZpby5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S+teadg+adpea6kO+8micsICfkvrXmrIrkvobmupDvvJonKSxcblx0XHRcdG5hbWU6ICdzb3VyY2UnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J0NTRCBHNDog5pu+57uP5qC55o2u5L615p2D5a6h5qC45Yig6Zmk5ZCO5Y+I6YeN5paw5Yib5bu655qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdCdDU0QgRzQ6IOabvue2k+agueaTmuS+teasiuWvqeaguOWIqumZpOW+jOWPiOmHjeaWsOW7uueri+eahOWFp+WuuSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZzQnLFxuXHRcdFx0XHRcdG5hbWU6ICdnNCcsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflkIzml7bku6VHNOWHhuWImeaPkOaKpeW/q+mAn+WIoOmZpCcsICflkIzmmYLku6VHNOa6luWJh+aPkOWgseW/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdnNF9wYWdlbmFtZScsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WJjeasoeWIoOmZpOeahOmhtemdouWQjeensCcsICfliY3mrKHliKrpmaTnmoTpoIHpnaLlkI3nqLEnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpgInloavvvIzoi6XliY3mrKHliKDpmaTnmoTpobXpnaLlkI3np7DkuI3lkIzvvIzor7fmj5DkvpsnLFxuXHRcdFx0XHRcdFx0XHRcdCfpgbjloavvvIzoi6XliY3mrKHliKrpmaTnmoTpoIHpnaLlkI3nqLHkuI3lkIzvvIzoq4vmj5DkvpsnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIUnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjpobXpnaLliJvlu7rogIXorqjorrrpobXkuIrmlL7nva7kuIDpgJrnn6XmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+WcqOmggemdouW7uueri+iAheiojuirlumggeS4iuaUvue9ruS4gOmAmuefpeaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHR9O1xuXHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2tzID0ge1xuXHRcdHRyeVRhZ2dpbmc6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyDlhYjlsJ3or5XmoIforrDpobXpnaLvvIzoi6Xlj5HnjrDlt7Lnu4/moIforrDliJnlgZzmraLmj5DmiqVcblx0XHRcdGNvbnN0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRpZiAodGV4dC5pbmNsdWRlcygne3tDb3B5dmlvfCcpKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mUmeivrycsICfpjK/oqqQnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6aG16Z2i5bey57uP5qCH6K6w5L615p2D77yM6K+35Lq65bel56Gu6K6k5piv5ZCm5bey57uP5o+Q5oql44CCJyxcblx0XHRcdFx0XHRcdCfpoIHpnaLlt7LntpPmqJnoqJjkvrXmrIrvvIzoq4vkurrlt6Xnorroqo3mmK/lkKblt7LntpPmj5DloLHjgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0VHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy50YWdnaW5nQXJ0aWNsZShwYWdlb2JqKTtcblx0XHRcdFx0Ly8gQ29udHJpYnV0b3Igc3BlY2lmaWMgZWRpdHNcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpKTtcblx0XHRcdFx0cWl1d2VuX3BhZ2UubG9va3VwQ3JlYXRpb24oVHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy5tYWluKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG1haW46IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyB0aGlzIGlzIGNvbWluZyBpbiBmcm9tIGxvb2t1cENyZWF0aW9uLi4uIVxuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IGluaXRpYWxDb250cmliID0gcGFnZW9iai5nZXRDcmVhdG9yKCk7XG5cdFx0XHQvLyBBZGRpbmcgZGlzY3Vzc2lvblxuXHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRwYXJhbXMubG9ncGFnZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXkvrXmnYPorrDlvZXpobknLCAn5Yqg5YWl5L615qyK6KiY6YyE6aCFJylcblx0XHRcdCk7XG5cdFx0XHRxaXV3ZW5fcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2tzLmNvcHl2aW9MaXN0KTtcblx0XHRcdC8vIE5vdGlmaWNhdGlvbiB0byBmaXJzdCBjb250cmlidXRvclxuXHRcdFx0aWYgKHBhcmFtcy5ub3RpZnkpIHtcblx0XHRcdFx0Y29uc3QgdXNlcnRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRgVXNlciB0YWxrOiR7aW5pdGlhbENvbnRyaWJ9YCxcblx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhe+8iCcsICfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvIgnKSArIGluaXRpYWxDb250cmlife+8iWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3Qgbm90aWZ5dGV4dCA9ICdcXG57eycuY29uY2F0KCdzdWJzdDonLCBgQ29weXZpb05vdGljZXwke213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX19fWApO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6YCa55+l77ya6aG16Z2iW1snLCAn6YCa55+l77ya6aCB6Z2iW1snKSArXG5cdFx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCddXeeWkeS8vOS+teeKr+iRl+S9nOadgycsICddXeeWkeS8vOS+teeKr+eJiOasiicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdjb3B5dmlvV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0YWdnaW5nQXJ0aWNsZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCByZXZpc2lvbklkID1cblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dSZXZpc2lvbklkJykgfHwgbXcuY29uZmlnLmdldCgnd2dEaWZmTmV3SWQnKSB8fCBtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKTtcblx0XHRcdGxldCB0YWcgPSAne3snLmNvbmNhdChcblx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdGBDb3B5dmlvL2F1dG98dXJsPSR7cGFyYW1zLnNvdXJjZVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9odHRwL2csICcmIzEwNDt0dHAnKVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9cXG4rL2csICdcXG4nKVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9eXFxzKihbXipdKS9nbSwgJyogJDEnKVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9eXFwqICQvbSwgJycpfXxPbGRSZXZpc2lvbj0ke3JldmlzaW9uSWR9fX1gXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IG9sZGNzZCA9IHRleHQubWF0Y2goL1xce1xce1xccyooZGIoLVxcdyopP3xkfGRlbGV0ZSlcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH0vaSk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9sZGNzZCAmJlxuXHRcdFx0XHRjb25maXJtKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjpobXpnaLkuIrmib7liLDlv6vpgJ/liKDpmaTmqKHmnb/vvIzopoHkv53nlZnlkJfvvJ9cXG5cXG7lvZPpobXpnaLlkIzml7bkvrXniq/okZfkvZzmnYPlj4jnrKblkIjlv6vpgJ/liKDpmaTmoIflh4bml7bvvIzlupTor6XkvJjlhYjotbDlv6vpgJ/liKDpmaTnqIvluo/jgIJcXG7ljZXlh7vigJznoa7orqTigJ3ku6Xkv53nlZnlv6vpgJ/liKDpmaTmqKHmnb/vvIzoi6XmgqjorqTkuLrlv6vpgJ/liKDpmaTnkIbnlLHkuI3lkIjvvIzljZXlh7vigJzlj5bmtojigJ3ku6Xnp7vpmaTlv6vpgJ/liKDpmaTmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+WcqOmggemdouS4iuaJvuWIsOW/q+mAn+WIqumZpOaooeadv++8jOimgeS/neeVmeWXju+8n1xcblxcbueVtumggemdouWQjOaZguS+teeKr+eJiOasiuWPiOespuWQiOW/q+mAn+WIqumZpOaomea6luaZgu+8jOaHieipsuWEquWFiOi1sOW/q+mAn+WIqumZpOeoi+W6j+OAglxcbum7nuaTiuOAjOeiuuiqjeOAjeS7peS/neeVmeW/q+mAn+WIqumZpOaooeadv++8jOiLpeaCqOiqjeeCuuW/q+mAn+WIqumZpOeQhueUseS4jeWQiO+8jOm7nuaTiuOAjOWPlua2iOOAjeS7peenu+mZpOW/q+mAn+WIqumZpOaooeadv+OAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHR0YWcgPSBgJHtvbGRjc2RbMF19XFxuJHt0YWd9YDtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMuZzQpIHtcblx0XHRcdFx0bGV0IHNwZWVkeVRhZyA9ICd7e2RlbGV0ZSc7XG5cdFx0XHRcdHNwZWVkeVRhZyArPSAnfGc0Jztcblx0XHRcdFx0aWYgKHBhcmFtcy5nNF9wYWdlbmFtZSkge1xuXHRcdFx0XHRcdHNwZWVkeVRhZyArPSBgfCR7cGFyYW1zLmc0X3BhZ2VuYW1lfXxjMT1bW1NwZWNpYWw6VW5kZWxldGUvJHtwYXJhbXMuZzRfcGFnZW5hbWV9XV1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNwZWVkeVRhZyArPSBgfGMxPVtbU3BlY2lhbDpVbmRlbGV0ZS8ke213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX1dXWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3BlZWR5VGFnICs9ICd9fSc7XG5cdFx0XHRcdHRhZyA9IGAke3NwZWVkeVRhZ31cXG4ke3RhZ31gO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0YWcpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+atpOmhtemdoueWkeS8vOS+teeKr+iRl+S9nOadgycsICfmraTpoIHpnaLnlpHkvLzkvrXniq/niYjmrIonKSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignY29weXZpb1dhdGNoUGFnZScpKTtcblx0XHRcdC8vIHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQnKSkge1xuXHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Y29weXZpb0xpc3Q6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0bGV0IG91dHB1dCA9ICcnO1xuXHRcdFx0Y29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRjb25zdCBkYXRlSGVhZGVyUmVnZXggPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgXj09K1xcXFxzKiR7ZGF0ZS5nZXRVVENNb250aCgpICsgMX3mnIgke2RhdGUuZ2V0VVRDRGF0ZSgpfeaXpVxcXFxzKj09K2AsXG5cdFx0XHRcdCdtZydcblx0XHRcdCk7XG5cdFx0XHRpZiAoIWRhdGVIZWFkZXJSZWdleC5leGVjKHRleHQpKSB7XG5cdFx0XHRcdG91dHB1dCA9IGBcXG5cXG49PSR7ZGF0ZS5nZXRVVENNb250aCgpICsgMX3mnIgke2RhdGUuZ2V0VVRDRGF0ZSgpfeaXpT09YDtcblx0XHRcdH1cblx0XHRcdG91dHB1dCArPSAnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYENvcHl2aW9WRkRSZWNvcmR8JHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9fX1gKTtcblx0XHRcdHBhZ2VvYmouc2V0QXBwZW5kVGV4dChvdXRwdXQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShg5Yqg5YWlW1ske213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX1dXWApO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouYXBwZW5kKCk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGUudGFyZ2V0KTtcblx0XHRpZiAoIXBhcmFtcy5zb3VyY2UudHJpbSgpKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+aMh+WumuS+teadg+adpea6kCcsICfoq4vmjIflrprkvrXmrIrkvobmupAnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGVjb3B5dmlvJyxcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRwYXJhbXMubG9ncGFnZSA9ICdRaXV3ZW5fdGFsazrkvrXmnYPmj5DmiqUnO1xuXHRcdE1vcmViaXRzLndpa2kuYWRkQ2hlY2twb2ludCgpO1xuXHRcdC8vIFVwZGF0aW5nIGRhdGEgZm9yIHRoZSBhY3Rpb24gY29tcGxldGVkIGV2ZW50XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+aPkOaKpeWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5o+Q5aCx5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0Ly8gVGFnZ2luZyBmaWxlXG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXkvrXmnYPmqKHmnb/liLDpobXpnaInLCAn5Yqg5YWl5L615qyK5qih5p2/5Yiw6aCB6Z2iJylcblx0XHQpO1xuXHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy50cnlUYWdnaW5nKTtcblx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5jb3B5dmlvLCAnY29weXZpbycpO1xufSkoKTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGV4ZmQuanMgKi9cbihmdW5jdGlvbiB0d2lua2xleGZkKCkge1xuXHQvKipcblx0ICogdHdpbmtsZXhmZC5qczogWEZEIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJYRkRcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZywgbm9uLXNwZWNpYWwgcGFnZXMsXG5cdCAqIGV4Y2VwdCBmb3IgZmlsZSBwYWdlcyB3aXRoIG5vIGxvY2FsIGZpbGVcblx0ICogd2hpY2ggYXJlIG5vdCByZWRpcmVjdHNcblx0ICovXG5cdFR3aW5rbGUueGZkID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHQvLyAqIG5vbi1sb2NhbCBmaWxlcywgd2hldGhlciB0aGVyZSBpcyBhIGxvY2FsIHBhZ2Ugb3Igbm90ICh1bm5lZWRlZCBsb2NhbCBwYWdlcyBvZiBmaWxlcyBvbiBTaGFyZSBhcmUgZWxpZ2libGUgZm9yIENTRCBGMilcblx0XHQvLyAqIGZpbGUgcGFnZXMgd2l0aG91dCBhY3R1YWwgZmlsZXNcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fFxuXHRcdFx0IW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHxcblx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHRcdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctc2hhcmVkdXBsb2FkJykgfHxcblx0XHRcdFx0XHQoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1pbWFnZXBhZ2Utc2VjdGlvbi1maWxlaGlzdG9yeScpICYmICFNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSkpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFjayxcblx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5YigJywgJ+aPkOWIqicpLFxuXHRcdFx0J3R3LXhmZCcsXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aPkOS6pOWIoOmZpOiuqOiuuicsICfmj5DkuqTliKrpmaToqI7oq5YnKVxuXHRcdCk7XG5cdH07XG5cdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBudWxsO1xuXHQvLyBlcnJvciBjYWxsYmFjayBvbiBNb3JlYml0cy5zdGF0dXMub2JqZWN0XG5cdFR3aW5rbGUueGZkLnByaW50UmF0aW9uYWxlID0gKCkgPT4ge1xuXHRcdGlmIChUd2lua2xlLnhmZC5jdXJyZW50UmF0aW9uYWxlKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMucHJpbnRVc2VyVGV4dChcblx0XHRcdFx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSxcblx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmgqjnmoTnkIbnlLHlt7LlnKjkuIvmlrnmj5DkvpvvvIzoi6Xmgqjmg7Pph43mlrDmj5DkuqTvvIzor7flsIblhbblpI3liLbliLDkuIDmlrDnqpflj6PkuK3vvJonLFxuXHRcdFx0XHRcdCfmgqjnmoTnkIbnlLHlt7LlnKjkuIvmlrnmj5DkvpvvvIzoi6Xmgqjmg7Pph43mlrDmj5DkuqTvvIzoq4vlsIflhbbopIfoo73liLDkuIDmlrDoppbnqpfkuK3vvJonXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHQvLyBvbmx5IG5lZWQgdG8gcHJpbnQgdGhlIHJhdGlvbmFsZSBvbmNlXG5cdFx0XHRUd2lua2xlLnhmZC5jdXJyZW50UmF0aW9uYWxlID0gbnVsbDtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjAwLCAzNTApO1xuXHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aPkOS6pOWtmOW6n+iuqOiuuicsICfmj5DkuqTlrZjlu6LoqI7oq5YnKSk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+aPkOWIoOiuvue9ricsICfmj5DliKroqK3lrponKSwgJ0g6VFcvUFJFRiN4ZmQnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjeGZkJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS54ZmQuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGNvbnN0IGNhdGVnb3JpZXMgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdjYXRlZ29yeScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmj5DkuqTnsbvlnovvvJonLCAn5o+Q5Lqk6aGe5Yil77yaJyksXG5cdFx0XHRldmVudDogVHdpbmtsZS54ZmQuY2FsbGJhY2suY2hhbmdlX2NhdGVnb3J5LFxuXHRcdH0pO1xuXHRcdGNhdGVnb3JpZXMuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5a2Y5bqf6K6o6K66JywgJ+mggemdouWtmOW7ouiojuirlicpLFxuXHRcdFx0c2VsZWN0ZWQ6IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDAsXG5cdFx0XHR2YWx1ZTogJ2FmZCcsXG5cdFx0fSk7XG5cdFx0Y2F0ZWdvcmllcy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlofku7blrZjlup/orqjorronLCAn5qqU5qGI5a2Y5bui6KiO6KuWJyksXG5cdFx0XHRzZWxlY3RlZDogbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gNixcblx0XHRcdHZhbHVlOiAnZmZkJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aaC5Y+v6IO977yM6YCa55+l6aG16Z2i5Yib5bu66ICFJywgJ+WmguWPr+iDve+8jOmAmuefpemggemdouW7uueri+iAhScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm90aWZ5Jyxcblx0XHRcdFx0XHRuYW1lOiAnbm90aWZ5Jyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo6aG16Z2i5Yib5bu66ICF6K6o6K666aG15LiK5pS+572u5LiA6YCa55+l5qih5p2/44CCJyxcblx0XHRcdFx0XHRcdCflnKjpoIHpnaLlu7rnq4vogIXoqI7oq5bpoIHkuIrmlL7nva7kuIDpgJrnn6XmqKHmnb/jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICflt6XkvZzljLonLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Ly8gV2UgbXVzdCBpbml0IHRoZSBjb250cm9sc1xuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5jYXRlZ29yeS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSA9IChlKSA9PiB7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IFtvbGRfYXJlYV0gPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ3dvcmtfYXJlYScpO1xuXHRcdGxldCB3b3JrX2FyZWEgPSBudWxsO1xuXHRcdGNvbnN0IG9sZHJlYXNvbnRleHRib3ggPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhJyk7XG5cdFx0bGV0IG9sZHJlYXNvbiA9IG9sZHJlYXNvbnRleHRib3ggPyBvbGRyZWFzb250ZXh0Ym94LnZhbHVlIDogJyc7XG5cdFx0Y29uc3QgYXBwZW5kUmVhc29uQm94ID0gKHhmZF9jYXQpID0+IHtcblx0XHRcdHN3aXRjaCAoeGZkX2NhdCkge1xuXHRcdFx0XHRjYXNlICdmd2Rjc2QnOlxuXHRcdFx0XHRcdG9sZHJlYXNvbiA9IGRlY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZGVsZXRlLXJlYXNvbicpLnRleHRDb250ZW50KS5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xcKy9nLFxuXHRcdFx0XHRcdFx0JyAnXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZmFtZSc6XG5cdFx0XHRcdFx0b2xkcmVhc29uID0gVHdpbmtsZS5nZXRQcmVmKCdhZmRGYW1lRGVmYXVsdFJlYXNvbicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0XHRvbGRyZWFzb24gPSBUd2lua2xlLmdldFByZWYoJ2FmZFN1YnN0dWJEZWZhdWx0UmVhc29uJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0bmFtZTogJ3hmZHJlYXNvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aPkOWIoOeQhueUse+8micsICfmj5DliKrnkIbnlLHvvJonKSxcblx0XHRcdFx0dmFsdWU6IG9sZHJlYXNvbixcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmgqjlj6/ku6Xkvb/nlKh3aWtpdGV4dO+8jFR3aW5rbGXlsIboh6rliqjkuLrmgqjliqDlhaXnrb7lkI3jgILoi6Xmgqjkvb/nlKjmibnph4/mj5DliKDlip/og73vvIzlrZjlup/orqjorrrpobXlj6rkvJrkvb/nlKjnrKzkuIDmrKHmj5DkuqTnmoTnkIbnlLHvvIzkvYbkuYvlkI7mgqjku43pnIDmj5Dkvpvku6XnlKjkuo7liKDpmaTpgJrlkYrmqKHmnb/nmoTlj4LmlbDjgIInLFxuXHRcdFx0XHRcdCfmgqjlj6/ku6Xkvb/nlKh3aWtpdGV4dO+8jFR3aW5rbGXlsIfoh6rli5XngrrmgqjliqDlhaXnsL3lkI3jgILoi6Xmgqjkvb/nlKjmibnmrKHmj5DliKrlip/og73vvIzlrZjlu6LoqI7oq5bpoIHlj6rmnIPkvb/nlKjnrKzkuIDmrKHmj5DkuqTnmoTnkIbnlLHvvIzkvYbkuYvlvozmgqjku43pnIDmj5Dkvpvku6XnlKjmlrzliKrpmaTpgJrlkYrmqKHmnb/nmoTlj4PmlbjjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHBsYWNlaG9sZGVyOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+atpOWAvOS6puaYvuekuuS6jumhtemdoueahOWIoOmZpOmAmuWRiuaooeadv+WGhe+8jOaVheWKoeW/heaPkOS+m+atpOWAvO+8jOmBv+WFjeS9v+eUqOKAnOWQjOS4iuKAneetieeUqOivreOAgicsXG5cdFx0XHRcdFx0J+atpOWAvOS6pumhr+ekuuaWvOmggemdoueahOWIqumZpOmAmuWRiuaooeadv+WFp++8jOaVheWLmeW/heaPkOS+m+atpOWAvO+8jOmBv+WFjeS9v+eUqOOAjOWQjOS4iuOAjeetieeUqOiqnuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0Ly8gVE9ETyBwb3NzaWJsZSBmdXR1cmUgXCJwcmV2aWV3XCIgbGluayBoZXJlXG5cdFx0fTtcblxuXHRcdHN3aXRjaCAodmFsdWUpIHtcblx0XHRcdGNhc2UgJ2FmZCc6IHtcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mhtemdouWtmOW6n+iuqOiuuicsICfpoIHpnaLlrZjlu6LoqI7oq5YnKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+S9v+eUqCZsdDtub2luY2x1ZGUmZ3Q75YyF6KO55qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdub2luY2x1ZGUnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbm9pbmNsdWRlJyxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDpcblx0XHRcdFx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxMCAmJlxuXHRcdFx0XHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpICE9PSAnU2NyaWJ1bnRvJyxcblx0XHRcdFx0XHRcdFx0Ly8gVGVtcGxhdGUgbmFtZXNwYWNlXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5L2/5YW25LiN5Lya5Zyo6KKr5YyF5ZCr5pe25Ye6546w44CCJywgJ+S9v+WFtuS4jeacg+WcqOiiq+WMheWQq+aZguWHuuePvuOAgicpLFxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZDogbXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgPT09ICdTY3JpYnVudG8nLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgYWZkX2NhdGVnb3J5ID0gd29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ3hmZGNhdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup5o+Q5Yig57G75Z6L77yaJywgJ+mBuOaTh+aPkOWIqumhnuWIpe+8micpLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnhmZC5jYWxsYmFjay5jaGFuZ2VfYWZkX2NhdGVnb3J5LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0bGV0IGFmZF9jYXQgPSAnZGVsZXRlJztcblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignYWZkRGVmYXVsdENhdGVnb3J5JykgPT09ICdzYW1lJykge1xuXHRcdFx0XHRcdGlmIChsb2NhbFN0b3JhZ2UuVHdpbmtsZV9hZmRDYXRlZ29yeSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRsb2NhbFN0b3JhZ2UuVHdpbmtsZV9hZmRDYXRlZ29yeSA9ICdkZWxldGUnO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhZmRfY2F0ID0gbG9jYWxTdG9yYWdlLlR3aW5rbGVfYWZkQ2F0ZWdvcnk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGFmZF9jYXRlZ29yeS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2RlbGV0ZScsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdkZWxldGUnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZCI5bm2JywgJ+WQiOS9tScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbWVyZ2UnLFxuXHRcdFx0XHRcdHNlbGVjdGVkOiBhZmRfY2F0ID09PSAnbWVyZ2UnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignRndkQ3NkVG9YZmQnKSkge1xuXHRcdFx0XHRcdGFmZF9jYXRlZ29yeS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazkuqToh6rlv6vpgJ/liKDpmaTlgJnpgIknLCAn6L2J5Lqk6Ieq5b+r6YCf5Yiq6Zmk5YCZ6YG4JyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2Z3ZGNzZCcsXG5cdFx0XHRcdFx0XHRzZWxlY3RlZDogYWZkX2NhdCA9PT0gJ2Z3ZGNzZCcsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZmFtZScsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdmYW1lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFmZF9jYXRlZ29yeS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aJuemHj+Wwj+Wwj+S9nOWTgeaPkOWIoCcsICfmibnmrKHlsI/lsI/kvZzlk4Hmj5DliKonKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3N1YnN0dWInLFxuXHRcdFx0XHRcdHNlbGVjdGVkOiBhZmRfY2F0ID09PSAnc3Vic3R1YicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhZmRfY2F0ZWdvcnkuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdiYXRjaCcsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdiYXRjaCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdtZXJnZWludG8nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WQiOW5tuWIsO+8micsICflkIjkvbXliLDvvJonKSxcblx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcHBlbmRSZWFzb25Cb3goYWZkX2NhdCk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0bmFtZTogJ2Z3ZGNzZHJlYXNvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L2s5Lqk55CG55Sx77yaJywgJ+i9ieS6pOeQhueUse+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6Xkvb/nlKh3aWtpdGV4dO+8jFR3aW5rbGXlsIboh6rliqjkuLrmgqjliqDlhaXnrb7lkI3jgIInLFxuXHRcdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqHdpa2l0ZXh077yMVHdpbmtsZeWwh+iHquWLleeCuuaCqOWKoOWFpeewveWQjeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdFx0Zm9ybS54ZmRjYXQuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgJ2ZmZCc6XG5cdFx0XHRcdHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlofku7blrZjlup/orqjorronLCAn5qqU5qGI5a2Y5bui6KiO6KuWJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcHBlbmRSZWFzb25Cb3goJ2ZmZCcpO1xuXHRcdFx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmnKrlrprkuYknLCAn5pyq5a6a576pJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Ly8gUmV0dXJuIHRvIGNoZWNrZWQgc3RhdGUgd2hlbiBzd2l0Y2hpbmdcblx0XHRmb3JtLm5vdGlmeS5jaGVja2VkID0gdHJ1ZTtcblx0XHRmb3JtLm5vdGlmeS5kaXNhYmxlZCA9IGZhbHNlO1xuXHR9O1xuXHRUd2lua2xlLnhmZC5jYWxsYmFjay5jaGFuZ2VfYWZkX2NhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRzd2l0Y2ggKGUudGFyZ2V0LnZhbHVlKSB7XG5cdFx0XHRjYXNlICdtZXJnZSc6XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubWVyZ2VpbnRvLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5md2Rjc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucHJldmlvdXNFbGVtZW50U2libGluZy5pbm5lckhUTUwgPSB3aW5kb3cud2dVTFMoJ+WQiOW5tuWIsO+8micsICflkIjkvbXliLDvvJonKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdmd2Rjc2QnOlxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wYXJlbnRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnaGlkZGVuJyk7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uZndkY3NkcmVhc29uLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucHJldmlvdXNFbGVtZW50U2libGluZy5pbm5lckhUTUwgPSAn5o+Q5Lqk5Lq677yaJztcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS54ZmRyZWFzb24udmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoXG5cdFx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RlbGV0ZS1yZWFzb24nKS50ZXh0Q29udGVudFxuXHRcdFx0XHQpLnJlcGxhY2UoL1xcKy9nLCAnICcpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2ZhbWUnOlxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmZ3ZGNzZHJlYXNvbi5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnhmZHJlYXNvbi52YWx1ZSA9IFR3aW5rbGUuZ2V0UHJlZignYWZkRmFtZURlZmF1bHRSZWFzb24nKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5md2Rjc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS54ZmRyZWFzb24udmFsdWUgPSBUd2lua2xlLmdldFByZWYoJ2FmZFN1YnN0dWJEZWZhdWx0UmVhc29uJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5md2Rjc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHR9XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignYWZkRGVmYXVsdENhdGVnb3J5JykgPT09ICdzYW1lJykge1xuXHRcdFx0bG9jYWxTdG9yYWdlLlR3aW5rbGVfYWZkQ2F0ZWdvcnkgPSBlLnRhcmdldC52YWx1ZTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrcyA9IHtcblx0XHRhZmQ6IHtcblx0XHRcdG1haW46ICh0YWdnaW5nX3BhZ2UpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gdGFnZ2luZ19wYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuYWZkLnRhZ2dpbmdBcnRpY2xlKHRhZ2dpbmdfcGFnZSk7XG5cdFx0XHRcdC8vIEFkZGluZyBkaXNjdXNzaW9uXG5cdFx0XHRcdGNvbnN0IGRpc2N1c3Npb25fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXorqjorrrliLDlvZPml6XliJfooagnLCAn5Yqg5YWl6KiO6KuW5Yiw55W25pel5YiX6KGoJylcblx0XHRcdFx0KTtcblx0XHRcdFx0ZGlzY3Vzc2lvbl9wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHRkaXNjdXNzaW9uX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdGRpc2N1c3Npb25fcGFnZS5sb2FkKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZmQudG9kYXlzTGlzdCk7XG5cdFx0XHRcdC8vIE5vdGlmaWNhdGlvbiB0byBmaXJzdCBjb250cmlidXRvclxuXHRcdFx0XHRpZiAocGFyYW1zLm5vdGlmeSkge1xuXHRcdFx0XHRcdC8vIERpc2FsbG93IHdhcm5pbmcgeW91cnNlbGZcblx0XHRcdFx0XHRpZiAocGFyYW1zLmNyZWF0b3IgPT09IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSkge1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICF77yIJywgJ+mAmuefpemggemdouW7uueri+iAhe+8iCcpICsgcGFyYW1zLmNyZWF0b3J977yJYCxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmgqjliJvlu7rkuobor6XpobXvvIzot7Pov4fpgJrnn6UnLCAn5oKo5bu656uL5LqG6Kmy6aCB77yM6Lez6YGO6YCa55+lJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRwYXJhbXMuY3JlYXRvciA9IG51bGw7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtwYXJhbXMuY3JlYXRvcn1gO1xuXHRcdFx0XHRcdFx0Y29uc3QgdXNlcnRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0dGFsa1BhZ2VOYW1lLFxuXHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhe+8iCcsICfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvIgnKSArIHBhcmFtcy5jcmVhdG9yfe+8iWBcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRjb25zdCBub3RpZnl0ZXh0ID0gJ1xcbnt7J1xuXHRcdFx0XHRcdFx0XHQuY29uY2F0KCdzdWJzdDonKVxuXHRcdFx0XHRcdFx0XHQuY29uY2F0KGBBRkROb3RlfCR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19LS1+fmAsICd+ficpO1xuXHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEFwcGVuZFRleHQobm90aWZ5dGV4dCk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYOmAmuefpe+8mumhtemdoltbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV3lrZjlup/orqjorrrmj5DlkI1gKTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3hmZFdhdGNoVXNlcicpKTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGFkZCB0aGlzIG5vbWluYXRpb24gdG8gdGhlIHVzZXIncyB1c2Vyc3BhY2UgbG9nLCBpZiB0aGUgdXNlciBoYXMgZW5hYmxlZCBpdFxuXHRcdFx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFkZFRvTG9nKHBhcmFtcywgcGFyYW1zLmNyZWF0b3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBvciwgaWYgbm90IG5vdGlmeWluZywgYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2cgd2l0aG91dCB0aGUgaW5pdGlhbCBjb250cmlidXRvcidzIG5hbWVcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZGRUb0xvZyhwYXJhbXMsIG51bGwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0dGFnZ2luZ0FydGljbGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdGxldCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRsZXQgdGFnID0gYHt7dmZkfCR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQocGFyYW1zLnhmZHJlYXNvbil9YDtcblx0XHRcdFx0aWYgKE1vcmViaXRzLmlzUGFnZVJlZGlyZWN0KCkpIHtcblx0XHRcdFx0XHR0YWcgKz0gJ3xyJztcblx0XHRcdFx0fVxuXHRcdFx0XHR0YWcgKz0gJ3xkYXRlPXt7Jy5jb25jYXQoJ3N1YnN0OicsICcjdGltZTpZL20vZH19fX0nKTtcblx0XHRcdFx0aWYgKHBhcmFtcy5ub2luY2x1ZGUpIHtcblx0XHRcdFx0XHR0YWcgPSBgPG5vaW5jbHVkZT4ke3RhZ308L25vaW5jbHVkZT5gO1xuXHRcdFx0XHRcdC8vIOWPquacieihqOagvOmcgOimgeWNleeLrOWKoOWbnui9pu+8jOWFtuS7luaDheWGteWKoOWbnui9puS8muegtOWdj+aooeadv+OAglxuXHRcdFx0XHRcdGlmICh0ZXh0LmluZGV4T2YoJ3t8JykgPT09IDApIHtcblx0XHRcdFx0XHRcdHRhZyArPSAnXFxuJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFnICs9ICdcXG4nO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIFRoZW4sIHRlc3QgaWYgdGhlcmUgYXJlIHNwZWVkeSBkZWxldGlvbi1yZWxhdGVkIHRlbXBsYXRlcyBvbiB0aGUgYXJ0aWNsZS5cblx0XHRcdFx0Y29uc3QgdGV4dE5vU2QgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooZGIoLVxcdyopP3xkfGRlbGV0ZXwoPzpoYW5nfGhvbGQpWy0gXT9vbilcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2dpLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9TZCAmJlxuXHRcdFx0XHRcdGNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuaJvuWIsOW/q+mAn+WIoOmZpOaooeadv++8jOimgeenu+mZpOWQl++8nycsICflnKjpoIHpnaLkuIrmib7liLDlv6vpgJ/liKrpmaTmqKHmnb/vvIzopoHnp7vpmaTll47vvJ8nKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGV4dCA9IHRleHROb1NkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHROb05vdE1hbmRhcmluID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdC9cXHtcXHtcXHMqKE5vdE1hbmRhcmlufE5vdGNoaW5lc2V86Z2e5Lit5paHfOmdnuePvuS7o+a8ouiqnnzpnZ7njrDku6PmsYnor6186Z2e54++5Luj5qiZ5rqW5ryi6KqefOmdnueOsOS7o+agh+WHhuaxieivrSlcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2dpLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9Ob3RNYW5kYXJpbiAmJlxuXHRcdFx0XHRcdGNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCflnKjpobXpnaLkuIrmib7liLDpnZ7njrDku6PmoIflh4bmsYnor63mqKHmnb/vvIzopoHnp7vpmaTlkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK5om+5Yiw6Z2e54++5Luj5qiZ5rqW5ryi6Kqe5qih5p2/77yM6KaB56e76Zmk5ZeO77yfJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGV4dCA9IHRleHROb05vdE1hbmRhcmluO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHROb0FmYyA9IHRleHQucmVwbGFjZSgve3tcXHMqQUZDIHN1Ym1pc3Npb25cXHMqXFx8XFxzKlxcfFtefV0qP319XFxzKi9naSwgJycpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0dGV4dCAhPT0gdGV4dE5vQWZjICYmXG5cdFx0XHRcdFx0Y29uZmlybSh3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuaJvuWIsEFGQ+aPkOS6pOaooeadv++8jOimgeenu+mZpOWQl++8nycsICflnKjpoIHpnaLkuIrmib7liLBBRkPmj5DkuqTmqKHmnb/vvIzopoHnp7vpmaTll47vvJ8nKSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGV4dCA9IHRleHROb0FmYztcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBNYXJrIHRoZSBwYWdlIGFzIHBhdHJvbGxlZCwgaWYgd2FudGVkXG5cdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ21hcmtYZmRQYWdlc0FzUGF0cm9sbGVkJykpIHtcblx0XHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEluc2VydCB0YWcgYWZ0ZXIgc2hvcnQgZGVzY3JpcHRpb24gb3IgYW55IGhhdG5vdGVzXG5cdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UodGV4dCk7XG5cdFx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyh0YWcsIFR3aW5rbGUuaGF0bm90ZVJlZ2V4KS5nZXRUZXh0KCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpobXpnaLlrZjlup/orqjorrrvvJpbWycsICfpoIHpnaLlrZjlu6LoqI7oq5bvvJpbWycpICsgcGFyYW1zLmxvZ3BhZ2V9IyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd4ZmRXYXRjaFBhZ2UnKSk7XG5cdFx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0fSxcblx0XHRcdHRvZGF5c0xpc3Q6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdGxldCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRsZXQgdHlwZSA9ICcnO1xuXHRcdFx0XHRsZXQgdG8gPSAnJztcblx0XHRcdFx0c3dpdGNoIChwYXJhbXMueGZkY2F0KSB7XG5cdFx0XHRcdFx0Y2FzZSAnZndkY3NkJzpcblx0XHRcdFx0XHRjYXNlICdtZXJnZSc6XG5cdFx0XHRcdFx0XHR0byA9IHBhcmFtcy5tZXJnZWludG87XG5cdFx0XHRcdFx0LyogRmFsbCB0aHJvdWdoICovXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHR5cGUgPSBwYXJhbXMueGZkY2F0O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IGFwcGVuZCA9IHRydWU7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgJ2ZhbWUnOlxuXHRcdFx0XHRcdGNhc2UgJ3N1YnN0dWInOlxuXHRcdFx0XHRcdGNhc2UgJ2JhdGNoJzoge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29tbWVudFRleHQgPSBgPCEtLSBUd2lua2xlOiBVc2VyOiR7bXcuY29uZmlnLmdldChcblx0XHRcdFx0XHRcdFx0J3dnVXNlck5hbWUnXG5cdFx0XHRcdFx0XHQpfSDnmoQgJHt0eXBlfSDmj5DliKDmj5LlhaXngrnvvIzor7fli7/mm7TmlLnmiJbnp7vpmaTmraTooYzvvIzpmaTpnZ7kuI3lho3kuo7mraTpobXpnaLmj5DliKAgLS0+YDtcblx0XHRcdFx0XHRcdGxldCBuZXdUZXh0ID0gYD09PVtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dPT09YDtcblx0XHRcdFx0XHRcdGlmICh0eXBlID09PSAnZmFtZScpIHtcblx0XHRcdFx0XHRcdFx0bmV3VGV4dCArPSBgXFxue3tGaW5kc291cmNlc3wke01vcmViaXRzLnBhZ2VOYW1lTm9ybX19fWA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAodGV4dC5pbmNsdWRlcyhjb21tZW50VGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShjb21tZW50VGV4dCwgYCR7bmV3VGV4dH1cXG5cXG4ke2NvbW1lbnRUZXh0fWApO1xuXHRcdFx0XHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0XHRcdFx0XHRhcHBlbmQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNhZmVzdWJzdCA9ICdzYWZlc3Vic3QnO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhcHBlbmRUZXh0ID0gYFxcbnt7JHtzYWZlc3Vic3R9JHtgOlNhZmVBZmRIZWFkfX1cXG4ke1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGZhbWU6ICc9PSAzMOWkqeWQjuS7jeaMguaciXt7dGx8bm90YWJpbGl0eX195qih5p2/55qE5p2h55uuID09XFxuPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IHNtYWxsZXI7XCI+77yI5bey5oyCW1tUZW1wbGF0ZTpub3RhYmlsaXR5fOS4jeespuaUtuW9leagh+WHhuaooeadv11dMzDlpKnvvIk8L3NwYW4+Jyxcblx0XHRcdFx0XHRcdFx0XHRcdHN1YnN0dWI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCc9PSAzMOWkqeWQjuS7jeaMguaciXt7dGx8c3Vic3R1Yn195qih5p2/55qE5p2h55uuID09XFxuPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IHNtYWxsZXI7XCI+77yI5bey5oyCW1tUZW1wbGF0ZTpzdWJzdHVifOWwj+Wwj+adoeebruaooeadv11dMzDlpKnvvIk8L3NwYW4+Jyxcblx0XHRcdFx0XHRcdFx0XHRcdGJhdGNoOiAnPT0g5om56YeP5o+Q5YigID09Jyxcblx0XHRcdFx0XHRcdFx0XHR9W3R5cGVdXG5cdFx0XHRcdFx0XHRcdH1cXG4ke25ld1RleHR9XFxuXFxuJHtjb21tZW50VGV4dH1cXG4tLS0tXFxuOuW7uuiuru+8muWIoOmZpOWJjei/sOmhtemdou+8m+eQhueUse+8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQoXG5cdFx0XHRcdFx0XHRcdFx0cGFyYW1zLnhmZHJlYXNvblxuXHRcdFx0XHRcdFx0XHQpfVxcbuaPkOaKpeS7peS4iiR7XG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmFtZTogJzx1PuS4jeespuWQiOaUtuW9leagh+WHhjwvdT7mnaHnm64nLFxuXHRcdFx0XHRcdFx0XHRcdFx0c3Vic3R1YjogJzx1PumVv+W6pui/h+efrTwvdT7mnaHnm64nLFxuXHRcdFx0XHRcdFx0XHRcdFx0YmF0Y2g6ICfpobXpnaInLFxuXHRcdFx0XHRcdFx0XHRcdH1bdHlwZV1cblx0XHRcdFx0XHRcdFx0feeahOaxgumXu+e8luiAheWPiuaXtumXtO+8mjxiciBpZD1cIm5vLW5ldy10aXRsZVwiPn5+YC5jb25jYXQoJ35+Jyl9YDtcblx0XHRcdFx0XHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KGFwcGVuZFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRwYWdlb2JqLnNldEFwcGVuZFRleHQoXG5cdFx0XHRcdFx0XHRcdCdcXG57eycuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRcdFx0XHRcdGBEUkl0ZW18VHlwZT0ke3R5cGV9fERSYXJ0aWNsZXM9JHtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybVxuXHRcdFx0XHRcdFx0XHRcdH18UmVhc29uPSR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQocGFyYW1zLnhmZHJlYXNvbil9JHtcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5md2Rjc2RyZWFzb24udHJpbSgpID09PSAnJyA/ICcnIDogYDxicj5cXG7ovazkuqTnkIbnlLHvvJoke3BhcmFtcy5md2Rjc2RyZWFzb259YFxuXHRcdFx0XHRcdFx0XHRcdH18VG89JHt0b319fX5+YC5jb25jYXQoJ35+Jylcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hEaXNjdXNzaW9uJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0aWYgKGFwcGVuZCkge1xuXHRcdFx0XHRcdHBhZ2VvYmouYXBwZW5kKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSA9IG51bGw7XG5cdFx0XHR9LFxuXHRcdFx0bG9va3VwQ3JlYXRpb246ICh0YXJnZXRfcGFnZSkgPT4ge1xuXHRcdFx0XHR0YXJnZXRfcGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHRhcmdldF9wYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRwYXJhbXMuY3JlYXRvciA9IHRhcmdldF9wYWdlLmdldENyZWF0b3IoKTtcblx0XHRcdFx0Ly8gVGFnZ2luZyBwYWdlXG5cdFx0XHRcdGNvbnN0IHRhZ2dpbmdfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5a2Y5bqf6K6o6K665qih5p2/5Yiw6aG16Z2iJywgJ+WKoOWFpeWtmOW7ouiojuirluaooeadv+WIsOmggemdoicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdChmYWxzZSk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0dGFnZ2luZ19wYWdlLmxvYWQoVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFmZC50cnlUYWdnaW5nKTtcblx0XHRcdH0sXG5cdFx0XHR0cnlUYWdnaW5nOiAodGFnZ2luZ19wYWdlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN0YXRlbGVtID0gdGFnZ2luZ19wYWdlLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0Ly8gZGVmYXVsdHMgdG8gL2RvYyBmb3IgbHVhIG1vZHVsZXMsIHdoaWNoIG1heSBub3QgZXhpc3Rcblx0XHRcdFx0aWYgKCF0YWdnaW5nX3BhZ2UuZXhpc3RzKCkpIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+mhtemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIoOmZpCcsICfpoIHpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKrpmaQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHQgPSB0YWdnaW5nX3BhZ2UuZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgeGZkID0gLyg/Olxce1xceyhbcnNhaWZ0Y212XWZkfG1kMXxwcm9wb3NlZCBkZWxldGlvbilbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR4ZmQgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz5qih5p2/e3snLCAn5Yiq6Zmk55u46Zec5qih5p2/e3snKSArXG5cdFx0XHRcdFx0XHRcdHhmZFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7kuo7pobXpnaLkuK3vvIzmgqjmmK/lkKbku43mg7Pnu6fnu63mj5DmiqXvvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+e5vOe6jOaPkOWgse+8nydcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLlt7Looqvmj5DkuqToh7PlrZjlup/orqjorrrjgIInLCAn6aCB6Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bui6KiO6KuW44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBjb3B5dmlvID0gLyg/Olxce1xce1xccyooY29weXZpbylbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChjb3B5dmlvKSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLkuK3lt7LmnInokZfkvZzmnYPpqozor4HmqKHmnb/jgIInLCAn6aCB6Z2i5Lit5bey5pyJ6JGX5L2c5qyK6amX6K2J5qih5p2/44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuYWZkLm1haW4odGFnZ2luZ19wYWdlKTtcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRmZmQ6IHtcblx0XHRcdG1haW46ICh0YWdnaW5nX3BhZ2UpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gdGFnZ2luZ19wYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuZmZkLnRhZ2dpbmdJbWFnZSh0YWdnaW5nX3BhZ2UpO1xuXHRcdFx0XHQvLyBBZGRpbmcgZGlzY3Vzc2lvblxuXHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXorqjorrrliLDlvZPml6XliJfooagnLCAn5Yqg5YWl6KiO6KuW5Yiw55W25pel5YiX6KGoJylcblx0XHRcdFx0KTtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5mZmQudG9kYXlzTGlzdCk7XG5cdFx0XHRcdC8vIE5vdGlmaWNhdGlvbiB0byBmaXJzdCBjb250cmlidXRvclxuXHRcdFx0XHRpZiAocGFyYW1zLm5vdGlmeSkge1xuXHRcdFx0XHRcdC8vIERpc2FsbG93IHdhcm5pbmcgeW91cnNlbGZcblx0XHRcdFx0XHRpZiAocGFyYW1zLmNyZWF0b3IgPT09IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSkge1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICF77yIJywgJ+mAmuefpemggemdouW7uueri+iAhe+8iCcpICsgcGFyYW1zLmNyZWF0b3J977yJYCxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmgqjliJvlu7rkuobor6XpobXvvIzot7Pov4fpgJrnn6UnLCAn5oKo5bu656uL5LqG6Kmy6aCB77yM6Lez6YGO6YCa55+lJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtwYXJhbXMuY3JlYXRvcn1gO1xuXHRcdFx0XHRcdGNvbnN0IHVzZXJ0YWxrcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHR0YWxrUGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhe+8iCcsICfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvIgnKSArIHBhcmFtcy5jcmVhdG9yfe+8iWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGNvbnN0IG5vdGlmeXRleHQgPSAnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYGlkd3xGaWxlOiR7bXcuY29uZmlnLmdldCgnd2dUaXRsZScpfX19YCwgJy0tfn4nLCAnfn4nKTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYOmAmuefpe+8muaWh+S7tltbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV3lrZjlup/orqjorrrmj5DlkI1gKTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3hmZFdhdGNoVXNlcicpKTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0XHQvLyBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZywgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgaXRcblx0XHRcdFx0XHRpZiAocGFyYW1zLmxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZGRUb0xvZyhwYXJhbXMsIHBhcmFtcy5jcmVhdG9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gb3IsIGlmIG5vdCBub3RpZnlpbmcsIGFkZCB0aGlzIG5vbWluYXRpb24gdG8gdGhlIHVzZXIncyB1c2Vyc3BhY2UgbG9nIHdpdGhvdXQgdGhlIGluaXRpYWwgY29udHJpYnV0b3IncyBuYW1lXG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLmxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuYWRkVG9Mb2cocGFyYW1zLCBudWxsKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHRhZ2dpbmdJbWFnZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dChcblx0XHRcdFx0XHRge3tpZmR8JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0UmVhc29uVGV4dChwYXJhbXMueGZkcmVhc29uKX18ZGF0ZT17e2AuY29uY2F0KFxuXHRcdFx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdFx0XHRgI3RpbWU6Y319fX1cXG4ke3RleHR9YFxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+aWh+S7tuWtmOW6n+iuqOiuuu+8mltbJywgJ+aqlOahiOWtmOW7ouiojuirlu+8mltbJykgKyBwYXJhbXMubG9ncGFnZX0jJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3hmZFdhdGNoUGFnZScpKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7IC8vIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIGZvciBhIGZpbGUgdG8gZXhpc3Qgd2l0aG91dCBhIGRlc2NyaXB0aW9uIHBhZ2Vcblx0XHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHR9LFxuXHRcdFx0dG9kYXlzTGlzdDogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0Ly8gY29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KFxuXHRcdFx0XHRcdCdcXG57eycuY29uY2F0KFxuXHRcdFx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdFx0XHRgSWZkSXRlbXxGaWxlbmFtZT0ke213LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKX18VXBsb2FkZXI9JHtcblx0XHRcdFx0XHRcdFx0cGFyYW1zLmNyZWF0b3Jcblx0XHRcdFx0XHRcdH18UmVhc29uPSR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQocGFyYW1zLnhmZHJlYXNvbil9fX0tLX5+YC5jb25jYXQoJ35+Jylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hEaXNjdXNzaW9uJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0cGFnZW9iai5hcHBlbmQoKCkgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBudWxsOyAvLyBhbnkgZXJyb3JzIGZyb20gbm93IG9uIGRvIG5vdCBuZWVkIHRvIHByaW50IHRoZSByYXRpb25hbGUsIGFzIGl0IGlzIHNhZmVseSBzYXZlZCBvbi13aWtpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblxuXHRcdFx0bG9va3VwQ3JlYXRpb246ICh0YXJnZXRfcGFnZSkgPT4ge1xuXHRcdFx0XHR0YXJnZXRfcGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHRhcmdldF9wYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRwYXJhbXMuY3JlYXRvciA9IHRhcmdldF9wYWdlLmdldENyZWF0b3IoKTtcblx0XHRcdFx0Ly8gVGFnZ2luZyBmaWxlXG5cdFx0XHRcdGNvbnN0IHRhZ2dpbmdfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5a2Y5bqf6K6o6K665qih5p2/5Yiw5paH5Lu25o+P6L+w6aG1JywgJ+WKoOWFpeWtmOW7ouiojuirluaooeadv+WIsOaqlOahiOaPj+i/sOmggScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdChmYWxzZSk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0dGFnZ2luZ19wYWdlLmxvYWQoVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmZmZC50cnlUYWdnaW5nKTtcblx0XHRcdH0sXG5cdFx0XHR0cnlUYWdnaW5nOiAodGFnZ2luZ19wYWdlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN0YXRlbGVtID0gdGFnZ2luZ19wYWdlLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0aWYgKCF0YWdnaW5nX3BhZ2UuZXhpc3RzKCkpIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+mhtemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIoOmZpCcsICfpoIHpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKrpmaQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHQgPSB0YWdnaW5nX3BhZ2UuZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgeGZkID0gLyg/Olxce1xceyhbcnNhaWZ0Y212XWZkfG1kMXxwcm9wb3NlZCBkZWxldGlvbilbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR4ZmQgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz5qih5p2/e3snLCAn5Yiq6Zmk55u46Zec5qih5p2/e3snKSArXG5cdFx0XHRcdFx0XHRcdHhmZFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7kuo7pobXpnaLkuK3vvIzmgqjmmK/lkKbku43mg7Pnu6fnu63mj5DmiqXvvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+e5vOe6jOaPkOWgse+8nydcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLlt7Looqvmj5DkuqToh7PlrZjlup/orqjorrrjgIInLCAn6aCB6Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bui6KiO6KuW44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuZmZkLm1haW4odGFnZ2luZ19wYWdlKTtcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRhZGRUb0xvZzogKHBhcmFtcywgaW5pdGlhbENvbnRyaWIpID0+IHtcblx0XHRcdGNvbnN0IGVkaXRzdW1tYXJ5ID1cblx0XHRcdFx0d2luZG93LndnVUxTKCforrDlvZXlr7lbWycsICfoqJjpjITlsI1bWycpICtcblx0XHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtICtcblx0XHRcdFx0d2luZG93LndnVUxTKCddXeeahOWtmOW6n+iuqOiuuuaPkOWQjScsICddXeeahOWtmOW7ouiojuirluaPkOWQjScpO1xuXHRcdFx0Y29uc3QgdXNsID0gbmV3IE1vcmViaXRzLnVzZXJzcGFjZUxvZ2dlcihUd2lua2xlLmdldFByZWYoJ3hmZExvZ1BhZ2VOYW1lJykpO1xuXHRcdFx0dXNsLmluaXRpYWxUZXh0ID0gd2luZG93LndnVUxTKFxuXHRcdFx0XHRg6L+Z5piv6K+l55So5oi35L2/55SoW1tIOlRXfFR3aW5rbGVdXeeahOaPkOWIoOaooeWdl+WBmuWHuueahFtbUVc6WEZEfOWtmOW6n+iuqOiuul1d5o+Q5ZCN5YiX6KGo44CCXFxuXFxu6Iul5oKo5LiN5YaN5oOz5L+d55WZ5q2k5pel5b+X77yM6K+35ZyoW1ske1R3aW5rbGUuZ2V0UHJlZihcblx0XHRcdFx0XHQnY29uZmlnUGFnZSdcblx0XHRcdFx0KX185Y+C5pWw6K6+572uXV3kuK3lhbPmjonvvIzlubbkvb/nlKhbW1FXOkNTRCNPMXxDU0QgTzFdXeaPkOS6pOW/q+mAn+WIoOmZpOOAgmAsXG5cdFx0XHRcdGDpgJnmmK/oqbLkvb/nlKjogIXkvb/nlKhbW0g6VFd8VHdpbmtsZV1d55qE5o+Q5Yiq5qih5aGK5YGa5Ye655qEW1tRVzpYRkR85a2Y5bui6KiO6KuWXV3mj5DlkI3liJfooajjgIJcXG5cXG7oi6XmgqjkuI3lho3mg7Pkv53nlZnmraTml6XoqozvvIzoq4vlnKhbWyR7VHdpbmtsZS5nZXRQcmVmKFxuXHRcdFx0XHRcdCdjb25maWdQYWdlJ1xuXHRcdFx0XHQpfXzlgY/lpb3oqK3lrppdXeS4remXnOaOie+8jOS4puS9v+eUqFtbUVc6Q1NEI08xfENTRCBPMV1d5o+Q5Lqk5b+r6YCf5Yiq6Zmk44CCYFxuXHRcdFx0KTtcblx0XHRcdGxldCB4ZmRDYXROYW1lO1xuXHRcdFx0c3dpdGNoIChwYXJhbXMueGZkY2F0KSB7XG5cdFx0XHRcdGNhc2UgJ2RlbGV0ZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdtZXJnZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5ZCI5bm25YiwJywgJ+WQiOS9teWIsCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdmd2Rjc2QnOlxuXHRcdFx0XHRcdHhmZENhdE5hbWUgPSB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZmFtZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0XHR4ZmRDYXROYW1lID0gd2luZG93LndnVUxTKCfmibnph4/lsI/lsI/kvZzlk4Hmj5DliKAnLCAn5om55qyh5bCP5bCP5L2c5ZOB5o+Q5YiqJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2JhdGNoJzpcblx0XHRcdFx0XHR4ZmRDYXROYW1lID0gd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5paH5Lu25a2Y5bqf6K6o6K66JywgJ+aqlOahiOWtmOW7ouiojuirlicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgYSBsb2dnZWQgZmlsZSBpcyBkZWxldGVkIGJ1dCBleGlzdHMgb24gcmVtb3RlIHJlcG8sIHRoZSB3aWtpbGluayB3aWxsIGJlIGJsdWUsIHNvIHByb3ZpZGUgYSBsaW5rIHRvIHRoZSBsb2dcblx0XHRcdGxldCBhcHBlbmRUZXh0ID0gYCMgW1s6JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gO1xuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBg77yIW3t7ZnVsbHVybDpTcGVjaWFsOkxvZ3xwYWdlPSR7bXcudXRpbC53aWtpVXJsZW5jb2RlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKVxuXHRcdFx0XHQpfX19ICR7d2luZG93LndnVUxTKCfml6Xlv5cnLCAn5pel6KqMJyl9Xe+8iWA7XG5cdFx0XHR9XG5cdFx0XHRhcHBlbmRUZXh0ICs9IGDvvJoke3hmZENhdE5hbWV9YDtcblx0XHRcdGlmIChwYXJhbXMueGZkY2F0ID09PSAnbWVyZ2UnKSB7XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gYFtbOiR7cGFyYW1zLm1lcmdlaW50b31dXWA7XG5cdFx0XHR9XG5cdFx0XHRhcHBlbmRUZXh0ICs9ICfjgIInO1xuXHRcdFx0aWYgKHBhcmFtcy54ZmRyZWFzb24pIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBgJycnJHtcblx0XHRcdFx0XHRwYXJhbXMueGZkY2F0ID09PSAnZndkY3NkJyA/IHdpbmRvdy53Z1VMUygn5Y6f5Yig6Zmk55CG5o2uJywgJ+WOn+WIqumZpOeQhuaTmicpIDogd2luZG93LndnVUxTKCfnkIbmja4nLCAn55CG5pOaJylcblx0XHRcdFx0fScnJ++8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvbkZvckxvZyhwYXJhbXMueGZkcmVhc29uKX1gO1xuXHRcdFx0XHRhcHBlbmRUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGFwcGVuZFRleHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5md2Rjc2RyZWFzb24pIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBgJycnJHtcblx0XHRcdFx0XHRwYXJhbXMueGZkY2F0ID09PSAnZndkY3NkJyA/IHdpbmRvdy53Z1VMUygn6L2s5Lqk55CG5o2uJywgJ+i9ieS6pOeQhuaTmicpIDogd2luZG93LndnVUxTKCfnkIbmja4nLCAn55CG5pOaJylcblx0XHRcdFx0fScnJ++8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvbkZvckxvZyhwYXJhbXMuZndkY3NkcmVhc29uKX1gO1xuXHRcdFx0XHRhcHBlbmRUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGFwcGVuZFRleHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGluaXRpYWxDb250cmliKSB7XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gYO+8m+mAmuefpXt7dXNlcnwke2luaXRpYWxDb250cmlifX19YDtcblx0XHRcdH1cblx0XHRcdGFwcGVuZFRleHQgKz0gJyB+ficuY29uY2F0KCd+ficsICd+XFxuJyk7XG5cdFx0XHR1c2wuY2hhbmdlVGFncyA9IFR3aW5rbGUuY2hhbmdlVGFncztcblx0XHRcdHVzbC5sb2coYXBwZW5kVGV4dCwgZWRpdHN1bW1hcnkpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGUudGFyZ2V0KTtcblx0XHRpZiAocGFyYW1zLnhmZGNhdCA9PT0gJ21lcmdlJyAmJiBwYXJhbXMubWVyZ2VpbnRvLnRyaW0oKSA9PT0gJycpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+35o+Q5L6b5ZCI5bm255uu5qCH77yBJywgJ+iri+aPkOS+m+WQiOS9teebruaome+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXhmZCcsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSA9IHBhcmFtcy54ZmRyZWFzb247XG5cdFx0TW9yZWJpdHMuc3RhdHVzLm9uRXJyb3IoVHdpbmtsZS54ZmQucHJpbnRSYXRpb25hbGUpO1xuXHRcdGlmICghcGFyYW1zLmNhdGVnb3J5KSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoJ+mUmeivrycsICfmnKrlrprkuYnnmoTliqjkvZwnKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IHRhcmdldF9wYWdlO1xuXHRcdGNvbnN0IGRhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZSgpOyAvLyBYWFg6IGF2b2lkIHVzZSBvZiBjbGllbnQgY2xvY2ssIHN0aWxsIHVzZWQgYnkgVGZELCBGZkQgYW5kIENmRFxuXHRcdHN3aXRjaCAocGFyYW1zLmNhdGVnb3J5KSB7XG5cdFx0XHRjYXNlICdhZmQnOlxuXHRcdFx0XHQvLyBBRkRcblx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UgPSBgUWl1d2VuX3RhbGs65a2Y5bqf6K6o6K66L+iusOW9lS8ke2RhdGUuZm9ybWF0KCdZWVlZL01NL0REJywgJ3V0YycpfWA7XG5cdFx0XHRcdHBhcmFtcy5sb2dub21pbmF0aW9uID1cblx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ2xvZ1hmZE5vbWluYXRpb25zJykgJiZcblx0XHRcdFx0XHQhVHdpbmtsZS5nZXRQcmVmKCdub0xvZ09uWGZkTm9taW5hdGlvbicpLmluY2x1ZGVzKHBhcmFtcy54ZmRjYXQpO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFkZENoZWNrcG9pbnQoKTtcblx0XHRcdFx0Ly8gVXBkYXRpbmcgZGF0YSBmb3IgdGhlIGFjdGlvbiBjb21wbGV0ZWQgZXZlbnRcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBwYXJhbXMubG9ncGFnZTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmj5DlkI3lrozmiJDvvIzph43lrprlkJHliLDorqjorrrpobUnLFxuXHRcdFx0XHRcdCfmj5DlkI3lrozmiJDvvIzph43mlrDlsI7lkJHliLDoqI7oq5bpoIEnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdC8vIExvb2t1cCBjcmVhdGlvblxuXHRcdFx0XHR0YXJnZXRfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W6aG16Z2i5Yib5bu65L+h5oGvJywgJ+WPluW+l+mggemdouW7uueri+izh+ioiicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhcmdldF9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgPT09ICd3aWtpdGV4dCcpIHtcblx0XHRcdFx0XHR0YXJnZXRfcGFnZS5zZXRMb29rdXBOb25SZWRpcmVjdENyZWF0b3IodHJ1ZSk7IC8vIExvb2sgZm9yIGF1dGhvciBvZiBmaXJzdCBub24tcmVkaXJlY3QgcmV2aXNpb25cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRhcmdldF9wYWdlLmxvb2t1cENyZWF0aW9uKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZmQubG9va3VwQ3JlYXRpb24pO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdmZmQnOiB7XG5cdFx0XHRcdC8vIEZGRFxuXHRcdFx0XHRwYXJhbXMubG9ncGFnZSA9IGBRaXV3ZW5fdGFsazrlrZjlup/orqjorrov6K6w5b2VLyR7ZGF0ZS5mb3JtYXQoJ1lZWVkvTU0vREQnLCAndXRjJyl9YDtcblx0XHRcdFx0cGFyYW1zLmxvZ25vbWluYXRpb24gPVxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignbG9nWGZkTm9taW5hdGlvbnMnKSAmJiAhVHdpbmtsZS5nZXRQcmVmKCdub0xvZ09uWGZkTm9taW5hdGlvbicpLmluY2x1ZGVzKCdmZmQnKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0XHRcdC8vIFVwZGF0aW5nIGRhdGEgZm9yIHRoZSBhY3Rpb24gY29tcGxldGVkIGV2ZW50XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gcGFyYW1zLmxvZ3BhZ2U7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5a6a5ZCR5Yiw6K6o6K666aG1Jyxcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5paw5bCO5ZCR5Yiw6KiO6KuW6aCBJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHQvLyBMb29rdXAgY3JlYXRpb25cblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPlumhtemdouWIm+W7uuS/oeaBrycsICflj5blvpfpoIHpnaLlu7rnq4vos4foqIonKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0TG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yKHRydWUpOyAvLyBMb29rIGZvciBhdXRob3Igb2YgZmlyc3Qgbm9uLXJlZGlyZWN0IHJldmlzaW9uXG5cdFx0XHRcdHFpdXdlbl9wYWdlLmxvb2t1cENyZWF0aW9uKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5mZmQubG9va3VwQ3JlYXRpb24pO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSgndHdpbmtsZXhmZO+8muacquWumuS5ieeahOexu+WIqycsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZXhmZCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUueGZkLCAneGZkJyk7XG59KSgpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWltYWdlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWltYWdlKCkge1xuXHQvKipcblx0ICogdHdpbmtsZWltYWdlLmpzOiBJbWFnZSBDU0QgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIkRJXCIpXG5cdCAqIEFjdGl2ZSBvbjogTG9jYWwgbm9ucmVkaXJlY3QgZmlsZSBwYWdlcyAobm90IG9uIFNoYXJlKVxuXHQgKi9cblx0VHdpbmtsZS5pbWFnZSA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHQhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LXNoYXJlZHVwbG9hZCcpICYmXG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctaW1hZ2VwYWdlLXNlY3Rpb24tZmlsZWhpc3RvcnknKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCflm77mnYMnLCAn5ZyW5qyKJyksXG5cdFx0XHRcdCd0dy1kaScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5Lqk5paH5Lu25b+r6YCf5Yig6ZmkJywgJ+aPkOS6pOaqlOahiOW/q+mAn+WIqumZpCcpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgMzMwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmlofku7blv6vpgJ/liKDpmaTlgJnpgIknLCAn5qqU5qGI5b+r6YCf5Yiq6Zmk5YCZ6YG4JykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmlrnpkognLCAn5b+r6YCf5Yiq6Zmk5pa56YedJyksICdRVzpDU0QnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+Wbvuadg+iuvue9ricsICflnJbmrIroqK3lrponKSwgJ0g6VFcvUFJFRiNpbWFnZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyNpbWFnZScpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrnn6XkuIrkvKDogIUnLCAn6YCa55+l5LiK5YKz6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XmgqjlnKjmoIforrDlkIzkuIDnlKjmiLfnmoTlvojlpJrmlofku7bvvIzor7flj5bmtojmraTlpI3pgInmoYbku6Xpgb/lhY3lj5HpgIHov4flpJrmtojmga/jgIJDU0QgRjXmsLjov5zkuI3kvJrpgJrnn6XjgIInLFxuXHRcdFx0XHRcdFx0J+iLpeaCqOWcqOaomeiomOWQjOS4gOS9v+eUqOiAheeahOW+iOWkmuaqlOahiO+8jOiri+WPlua2iOatpOaguOWPluaWueWhiuS7pemBv+WFjeeZvOmAgemBjuWkmuioiuaBr+OAgkNTRCBGNeawuOmBoOS4jeacg+mAmuefpeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignbm90aWZ5VXNlck9uRGVsaScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRjb25zdCBmaWVsZCA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpnIDopoHnmoTliqjkvZwnLCAn6ZyA6KaB55qE5YuV5L2cJyksXG5cdFx0fSk7XG5cdFx0ZmllbGQuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdyYWRpbycsXG5cdFx0XHRuYW1lOiAndHlwZScsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmI7mmL7kvrXmnYPkuYvmlofku7bvvIhDU0QgRjHvvIknLCAn5piO6aGv5L615qyK5LmL5qqU5qGI77yIQ1NEIEYx77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBwZXJtaXNzaW9uJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5LiK5Lyg6ICF5a6j56ew5oul5pyJ77yM6ICM5Zyo5YW25LuW5p2l5rqQ5om+5Yiw55qE5paH5Lu277yM5oiW5LuO5L615p2D55qE5p2l5rqQ6I635Y+W55qE5paH5Lu244CCJyxcblx0XHRcdFx0XHRcdCfkuIrlgrPogIXlrqPnqLHmk4HmnInvvIzogIzlnKjlhbbku5bkvobmupDmib7liLDnmoTmqpTmoYjvvIzmiJblvp7kvrXmrIrnmoTkvobmupDlj5blvpfnmoTmqpTmoYjjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRcdFx0bmFtZTogJ2YxX3NvdXJjZScsXG5cdFx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L615p2D5p2l5rqQ77yaJywgJ+S+teasiuS+hua6kO+8micpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmnaXmupDkuI3mmI7vvIhDU0QgRjPvvIknLCAn5L6G5rqQ5LiN5piO77yIQ1NEIEYz77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBzb3VyY2UnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmnKzmlofku7blubbmnKrms6jmmI7ljp/lp4vlh7rlpIQnLCAn5pys5qqU5qGI5Lim5pyq6Ki75piO5Y6f5aeL5Ye66JmVJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmnKrnn6XokZfkvZzmnYPkv6Hmga/vvIhDU0QgRjPvvIknLCAn5pyq55+l6JGX5L2c5qyK6LOH6KiK77yIQ1NEIEYz77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBsaWNlbnNlJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+acrOaWh+S7tue8uuWwkeiRl+S9nOadg+S/oeaBrycsICfmnKzmqpTmoYjnvLrlsJHokZfkvZzmrIros4foqIonKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iRl+S9nOadg+aXoOazleiiq+afpeivge+8iENTRCBGM++8iScsICfokZfkvZzmrIrnhKHms5Xooqvmn6XorYnvvIhDU0QgRjPvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ25vIGxpY2Vuc2UnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5pys5paH5Lu25aOw56ew55qE6JGX5L2c5p2D5L+h5oGv5peg5rOV6KKr5p+l6K+BJywgJ+acrOaqlOahiOiBsueoseeahOiRl+S9nOasiuizh+ioiueEoeazleiiq+afpeitiScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+v6KKr5pu/5Luj55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu277yIQ1NEIEY077yJJywgJ+WPr+iiq+abv+S7o+eahOmdnuiHqueUseiRl+S9nOasiuaqlOahiO+8iENTRCBGNO+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncmVwbGFjZWFibGUgZmFpciB1c2UnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmlofku7bku4XnlKjkuo7mj4/ov7DjgIHor4bliKvmiJbor4Torrrmlofku7bkuK3lsZXnpLrnmoTkuovnianvvIzmiJbku4XnlKjkvZzmj5Llm77vvIzkuJTmu6HotrPku6XkuIvlm5vkuKrmnaHku7bkuYvkuIDjgILoi6Xnu5nlh7rkuoblhbbku5blkIjnkIbkvb/nlKjkvp3mja7vvIzkuI3pgILnlKjmnKzmnaHjgILlpoLlr7nmlofku7bnmoTlj6/mm7/ku6PmgKflrZjlnKjkuonorq7vvIzlupTkuqTmlofku7blrZjlup/orqjorrrlpITnkIbjgILmnKzmnaHkuZ/kuI3pgILnlKjkuo7mraPlnKjmiJbmm77nu4/nlLHmlofku7blrZjlup/orqjorrrlpITnkIbov4fnmoTmlofku7bjgIInLFxuXHRcdFx0XHRcdFx0J+aqlOahiOWDheeUqOaWvOaPj+i/sOOAgei+qOitmOaIluipleirluaqlOahiOS4reWxleekuueahOS6i+eJqe+8jOaIluWDheeUqOS9nOaPkuWclu+8jOS4lOa7v+i2s+S7peS4i+Wbm+WAi+aineS7tuS5i+S4gOOAguiLpee1puWHuuS6huWFtuS7luWQiOeQhuS9v+eUqOS+neaTmu+8jOS4jemBqeeUqOacrOaineOAguWmguWwjeaqlOahiOeahOWPr+abv+S7o+aAp+WtmOWcqOeIreitsO+8jOaHieS6pOaqlOahiOWtmOW7ouiojuirluiZleeQhuOAguacrOaineS5n+S4jemBqeeUqOaWvOato+WcqOaIluabvue2k+eUseaqlOahiOWtmOW7ouiojuirluiZleeQhumBjueahOaqlOahiOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiB7XG5cdFx0XHRcdFx0XHRuYW1lOiAnZjRfdHlwZScsXG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAgueUqOexu+Wei++8micsICfpgannlKjpoZ7liKXvvJonKSxcblx0XHRcdFx0XHRcdHN0eWxlOiAnd2lkdGg6IDg1JTsnLFxuXHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K+36YCJ5oupJywgJ+iri+mBuOaThycpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn5pyJ5YW25LuW6Ieq55Sx6JGX5L2c5p2D5paH5Lu25bGV56S655u45ZCM55qE5LqL54mpJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfmnInlhbbku5boh6rnlLHokZfkvZzmrIrmqpTmoYjlsZXnpLrnm7jlkIznmoTkuovniaknXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfmlofku7bmj4/ov7DnmoTmmK/lnKjkuJbmiJblgYflrprlnKjkuJbkurrnianjgIHku43nhLblrZjlnKjnmoTlu7rnrZHjgIHlrqTlpJbpm5XloZHmiJbku43nhLblnKjllK7nmoTllYblk4HvvIzkuJTpooTorqHoh6rooYzmi43mkYTnmoTnhafniYfkuI3lj5fku5bkurrokZfkvZzmnYPkv53miqQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+aqlOahiOaPj+i/sOeahOaYr+WcqOS4luaIluWBh+WumuWcqOS4luS6uueJqeOAgeS7jeeEtuWtmOWcqOeahOW7uuevieOAgeWupOWklumbleWhkeaIluS7jeeEtuWcqOWUrueahOWVhuWTge+8jOS4lOmgkOioiOiHquihjOaLjeaUneeahOebuOeJh+S4jeWPl+S7luS6uuiRl+S9nOasiuS/neittydcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnMicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlofku7bkuLrlj6/oh6rooYznu5jliLbnmoTlnLDlm77miJblm77ooagnLCAn5qqU5qGI54K65Y+v6Ieq6KGM57mq6KO955qE5Zyw5ZyW5oiW5ZyW6KGoJyksXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICczJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn5paH5Lu25p2l6Ieq5ZWG5Lia5Zu+54mH5py65p6E77yI5aaCR2V0dHnvvIknLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+aqlOahiOS+huiHquWVhualreWclueJh+apn+ani++8iOWmgkdldHR577yJJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICc0Jyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5rKh5pyJ6KKr5p2h55uu5L2/55So55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu277yIQ1NEIEY177yJJyxcblx0XHRcdFx0XHRcdCfmspLmnInooqvmop3nm67kvb/nlKjnmoTpnZ7oh6rnlLHokZfkvZzmrIrmqpTmoYjvvIhDU0QgRjXvvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogJ29ycGhhbmVkIGZhaXIgdXNlJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5pys5paH5Lu25Li66Z2e6Ieq55Sx6JGX5L2c5p2D5LiU5rKh5pyJ6KKr5p2h55uu5L2/55SoJyxcblx0XHRcdFx0XHRcdCfmnKzmqpTmoYjngrrpnZ7oh6rnlLHokZfkvZzmrIrkuJTmspLmnInooqvmop3nm67kvb/nlKgnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5rKh5pyJ5aGr5YaZ5Lu75L2V5ZCI55CG5L2/55So5L6d5o2u55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu277yIQ1NEIEY177yJJyxcblx0XHRcdFx0XHRcdCfmspLmnInloavlr6vku7vkvZXlkIjnkIbkvb/nlKjkvp3mk5rnmoTpnZ7oh6rnlLHokZfkvZzmrIrmqpTmoYjvvIhDU0QgRjXvvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogJ25vIGZhaXIgdXNlIHJhdGlvbmFsZScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S4jemAgueUqOS6juacieS6ieiuruS9huWujOaVtOeahOWQiOeQhuS9v+eUqOS+neaNruOAguiLpemdnuiHqueUseiRl+S9nOadg+aWh+S7tuWPquaciemDqOWIhuadoeebrueahOS9v+eUqOS+neaNru+8jOS9huWQjOaXtuiiq+S9v+eUqOS6juacquaPkOS+m+WQiOeQhuS9v+eUqOS+neaNrueahOadoeebru+8jOWImeacrOaWuemSiOS5n+S4jemAgueUqOOAgicsXG5cdFx0XHRcdFx0XHQn5LiN6YGp55So5pa85pyJ54it6K2w5L2G5a6M5pW055qE5ZCI55CG5L2/55So5L6d5pOa44CC6Iul6Z2e6Ieq55Sx6JGX5L2c5qyK5qqU5qGI5Y+q5pyJ6YOo5YiG5qKd55uu55qE5L2/55So5L6d5pOa77yM5L2G5ZCM5pmC6KKr5L2/55So5pa85pyq5o+Q5L6b5ZCI55CG5L2/55So5L6d5pOa55qE5qKd55uu77yM5YmH5pys5pa56Yed5Lmf5LiN6YGp55So44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdC8vIFdlIG11c3QgaW5pdCB0aGUgcGFyYW1ldGVyc1xuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC50eXBlWzBdLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0fTtcblx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdGxldCB0eXBlO1xuXHRcdGxldCBub3RpZnkgPSBldmVudC50YXJnZXQubm90aWZ5LmNoZWNrZWQ7XG5cdFx0Y29uc3QgdHlwZXMgPSBldmVudC50YXJnZXQudHlwZTtcblx0XHRmb3IgKGNvbnN0IHR5cGVfIG9mIHR5cGVzKSB7XG5cdFx0XHRpZiAodHlwZV8uY2hlY2tlZCkge1xuXHRcdFx0XHR0eXBlID0gdHlwZV8udmFsdWVzO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0bGV0IGNzZGNyaXQ7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlICdubyBzb3VyY2UnOlxuXHRcdFx0XHRjc2Rjcml0ID0gJ2YzJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdubyBsaWNlbnNlJzpcblx0XHRcdFx0Y3NkY3JpdCA9ICdmMyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnb3JwaGFuZWQgZmFpciB1c2UnOlxuXHRcdFx0XHRjc2Rjcml0ID0gJ2Y1Jztcblx0XHRcdFx0bm90aWZ5ID0gZmFsc2U7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbm8gcGVybWlzc2lvbic6XG5cdFx0XHRcdGNzZGNyaXQgPSAnZjEnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ25vIGZhaXIgdXNlIHJhdGlvbmFsZSc6XG5cdFx0XHRcdGNzZGNyaXQgPSAnZjUnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlcGxhY2VhYmxlIGZhaXIgdXNlJzpcblx0XHRcdFx0Y3NkY3JpdCA9ICdmNCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdUd2lua2xlLmltYWdlLmNhbGxiYWNrLmV2YWx1YXRl77ya5pyq55+l5p2h5qy+Jyk7XG5cdFx0fVxuXHRcdGNvbnN0IGxvZ25vbWluYXRpb24gPVxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdsb2dTcGVlZHlOb21pbmF0aW9ucycpICYmXG5cdFx0XHQhVHdpbmtsZS5nZXRQcmVmKCdub0xvZ09uU3BlZWR5Tm9taW5hdGlvbicpLmluY2x1ZGVzKGNzZGNyaXQudG9Mb3dlckNhc2UoKSk7XG5cdFx0Y29uc3QgdGVtcGxhdGVuYW1lID0gdHlwZTtcblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR0eXBlLFxuXHRcdFx0dGVtcGxhdGVuYW1lLFxuXHRcdFx0bm9ybWFsaXplZDogY3NkY3JpdCxcblx0XHRcdGxvZ25vbWluYXRpb24sXG5cdFx0fTtcblx0XHRpZiAoY3NkY3JpdCA9PT0gJ2YxJykge1xuXHRcdFx0cGFyYW1zLmYxX3NvdXJjZSA9IGV2ZW50LnRhcmdldFsndHlwZS5mMV9zb3VyY2UnXS52YWx1ZTtcblx0XHR9XG5cdFx0aWYgKGNzZGNyaXQgPT09ICdmNCcpIHtcblx0XHRcdGNvbnN0IGY0X3R5cGUgPSBldmVudC50YXJnZXRbJ3R5cGUuZjRfdHlwZSddLnZhbHVlO1xuXHRcdFx0aWYgKCFmNF90eXBlKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygnQ1NEIEY077ya6K+36YCJ5oup6YCC55So57G75Z6L44CCJywgJ0NTRCBGNO+8muiri+mBuOaTh+mBqeeUqOmhnuWIpeOAgicpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVpbWFnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRwYXJhbXMuZjRfdHlwZSA9IGY0X3R5cGU7XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZXZlbnQudGFyZ2V0KTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+agh+iusOWujOaIkCcsICfmqJnoqJjlrozmiJAnKTtcblx0XHQvLyBUYWdnaW5nIGltYWdlXG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXliKDpmaTmoIforrAnLCAn5Yqg5YWl5Yiq6Zmk5qiZ6KiYJylcblx0XHQpO1xuXHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5pbWFnZS5jYWxsYmFja3MudGFnZ2luZ0ltYWdlKTtcblx0XHQvLyBOb3RpZnlpbmcgdXBsb2FkZXJcblx0XHRpZiAobm90aWZ5KSB7XG5cdFx0XHRxaXV3ZW5fcGFnZS5sb29rdXBDcmVhdGlvbihUd2lua2xlLmltYWdlLmNhbGxiYWNrcy51c2VyTm90aWZpY2F0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYWRkIHRvIENTRCBsb2cgaWYgZGVzaXJlZFxuXHRcdFx0aWYgKGxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0cGFyYW1zLmZyb21ESSA9IHRydWU7XG5cdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy51c2VyLmFkZFRvTG9nKHBhcmFtcywgbnVsbCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBObyBhdXRvLW5vdGlmaWNhdGlvbiwgZGlzcGxheSB3aGF0IHdhcyBnb2luZyB0byBiZSBhZGRlZC5cblx0XHRcdGlmICh0eXBlICE9PSAnb3JwaGFuZWQgZmFpciB1c2UnKSB7XG5cdFx0XHRcdGNvbnN0IG5vdGVEYXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7XG5cdFx0XHRcdG5vdGVEYXRhLmFwcGVuZENoaWxkKFxuXHRcdFx0XHRcdGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFxuXHRcdFx0XHRcdFx0J3t7Jy5jb25jYXQoJ3N1YnN0OicsIGBVcGxvYWR2aW9ub3RpY2V8JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19fX0tLX5+YCwgJ35+Jylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdCfmj5DnpLonLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFsn6L+Z5Lqb5YaF5a655bqU6LS06L+b5LiK5Lyg6ICF5a+56K+d6aG177yaJywgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSwgbm90ZURhdGFdLFxuXHRcdFx0XHRcdFx0WyfpgJnkupvlhaflrrnmh4nosrzpgLLkuIrlgrPogIXoqI7oq5bpoIHvvJonLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpLCBub3RlRGF0YV1cblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmltYWdlLmNhbGxiYWNrcyA9IHtcblx0XHR0YWdnaW5nSW1hZ2U6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQvLyByZW1vdmUgdGFnIC0gZGVsZXRpb24tdGFnZ2VkIGZpbGVzIGNhbm5vdCBiZSBtb3ZlZFxuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0L1xce1xceyhtdGN8KGNvcHkgfG1vdmUgKT90byA/KHNoYXJlfGNvbW1vbnMpfG1vdmUgdG8gKHFpdXdlbiBzaGFyZXx3aWtpbWVkaWEgY29tbW9ucyl8Y29weSB0byAocWl1d2VuIHNoYXJlfHdpa2ltZWRpYSBjb21tb25zKSlbXn1dKlxcfVxcfS9naSxcblx0XHRcdFx0Jydcblx0XHRcdCk7XG5cdFx0XHQvLyBBZGRpbmcgZGlzY3Vzc2lvblxuXHRcdFx0aWYgKHBhcmFtcy50eXBlICE9PSAnb3JwaGFuZWQgZmFpciB1c2UnKSB7XG5cdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHQnUWl1d2VuX3RhbGs65a2Y5bqf6K6o6K66L+aWh+S7tuW/q+mAn+WIoOmZpOaPkOaKpScsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXlv6vpgJ/liKDpmaTorrDlvZXpobknLCAn5Yqg5YWl5b+r6YCf5Yiq6Zmk6KiY6YyE6aCFJylcblx0XHRcdFx0KTtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzLmltYWdlTGlzdCk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgdGFnID0gJyc7XG5cdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ29ycGhhbmVkIGZhaXIgdXNlJzpcblx0XHRcdFx0XHR0YWcgPSAne3snLmNvbmNhdCgnc3Vic3Q6JywgJ29ycGhhbmVkIGZhaXIgdXNlfX1cXG4nKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbm8gcGVybWlzc2lvbic6XG5cdFx0XHRcdFx0dGFnID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGAke3BhcmFtcy50ZW1wbGF0ZW5hbWV9L2F1dG98MT0ke3BhcmFtcy5mMV9zb3VyY2Vcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL2h0dHAvZywgJyYjMTA0O3R0cCcpXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKC9cXG4rL2csICdcXG4nKVxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgvXlxccyooW14qXSkvZ20sICcqICQxJylcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL15cXCogJC9tLCAnJyl9fX1cXG5gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmVwbGFjZWFibGUgZmFpciB1c2UnOlxuXHRcdFx0XHRcdHRhZyA9ICd7eycuY29uY2F0KCdzdWJzdDonLCBgJHtwYXJhbXMudGVtcGxhdGVuYW1lfS9hdXRvfDE9JHtwYXJhbXMuZjRfdHlwZX19fVxcbmApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHRhZyA9ICd7eycuY29uY2F0KCdzdWJzdDonLCBgJHtwYXJhbXMudGVtcGxhdGVuYW1lfS9hdXRvfX1cXG5gKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNvbnN0IHRleHROb1NkID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHQvXFx7XFx7XFxzKihkYigtXFx3Kik/fGR8ZGVsZXRlfCg/Omhhbmd8aG9sZClbLSBdP29uKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdCcnXG5cdFx0XHQpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9TZCAmJlxuXHRcdFx0XHRjb25maXJtKHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5Yiw5b+r6YCf5Yig6Zmk5qih5p2/77yM6KaB56e76Zmk5ZCX77yfJywgJ+WcqOmggemdouS4iuaJvuWIsOW/q+mAn+WIqumZpOaooeadv++8jOimgeenu+mZpOWXju+8nycpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRleHQgPSB0ZXh0Tm9TZDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGFnICsgdGV4dCk7XG5cdFx0XHRsZXQgZWRpdFN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpO+8iCcsICfoq4vmsYLlv6vpgJ/liKrpmaTvvIgnKTtcblx0XHRcdGVkaXRTdW1tYXJ5ICs9IGBbW1FXOkNTRCMke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9fENTRCAke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9XV1gO1xuXHRcdFx0ZWRpdFN1bW1hcnkgKz0gJ++8iSc7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGVkaXRTdW1tYXJ5KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdkZWxpV2F0Y2hQYWdlJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHR9LFxuXHRcdHVzZXJOb3RpZmljYXRpb246IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0Y29uc3QgaW5pdGlhbENvbnRyaWIgPSBwYWdlb2JqLmdldENyZWF0b3IoKTtcblx0XHRcdC8vIGRpc2FsbG93IHdhcm5pbmcgeW91cnNlbGZcblx0XHRcdGlmIChpbml0aWFsQ29udHJpYiA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRcdHBhZ2VvYmpcblx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0Lndhcm4oYOaCqO+8iCR7aW5pdGlhbENvbnRyaWJ977yJJHt3aW5kb3cud2dVTFMoJ+WIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICflu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKX1gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtpbml0aWFsQ29udHJpYn1gO1xuXHRcdFx0XHRjb25zdCB1c2VydGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHRhbGtQYWdlTmFtZSxcblx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpeS4iuS8oOiAhScsICfpgJrnn6XkuIrlgrPogIUnKX3vvIgke2luaXRpYWxDb250cmlife+8iWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3Qgbm90aWZ5dGV4dCA9ICdcXG57eycuY29uY2F0KFxuXHRcdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRcdGBEaS0ke3BhcmFtcy50ZW1wbGF0ZW5hbWV9LW5vdGljZXwxPSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19LS1+fmAsXG5cdFx0XHRcdFx0J35+J1xuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6YCa55+l77ya5paH5Lu2W1snLCAn6YCa55+l77ya5qqU5qGIW1snKSArXG5cdFx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCddXeW/q+mAn+WIoOmZpOaPkOWQjScsICddXeW/q+mAn+WIqumZpOaPkOWQjScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdkZWxpV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZywgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgaXRcblx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRwYXJhbXMuZnJvbURJID0gdHJ1ZTtcblx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIuYWRkVG9Mb2cocGFyYW1zLCBpbml0aWFsQ29udHJpYik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRpbWFnZUxpc3Q6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Ly8gY29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQoYCR7dGV4dH1cXG4qIFtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dLS1+fmAuY29uY2F0KCd+ficpKTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmltYWdlLCAnaW1hZ2UnKTtcbn0pKCk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHthcGl9IGZyb20gJy4vYXBpJztcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlcHJvdGVjdC5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVwcm90ZWN0KCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiB0d2lua2xlcHJvdGVjdC5qczogUHJvdGVjdC9SUFAgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIlBQXCIvXCJSUFBcIilcblx0ICogQWN0aXZlIG9uOiBOb24tc3BlY2lhbCwgbm9uLU1lZGlhV2lraSBwYWdlc1xuXHQgKi9cblx0Ly8gTm90ZTogYSBsb3Qgb2YgY29kZSBpbiB0aGlzIG1vZHVsZSBpcyByZS11c2VkL2NhbGxlZCBieSBiYXRjaHByb3RlY3QuXG5cdFR3aW5rbGUucHJvdGVjdCA9ICgpID0+IHtcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA8IDAgfHwgbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gOCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfkv53miqQnLCAn5L+d6K23JyksXG5cdFx0XHQndHctcnBwJyxcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wID8gd2luZG93LndnVUxTKCfkv53miqTpobXpnaInLCAn5L+d6K236aCB6Z2iJykgOiB3aW5kb3cud2dVTFMoJ+ivt+axguS/neaKpOmhtemdoicsICfoq4vmsYLkv53orbfpoIHpnaInKVxuXHRcdCk7XG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYyMCwgNTMwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoXG5cdFx0XHRNb3JlYml0cy51c2VySXNTeXNvcFxuXHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5pa96KGM5oiW6K+35rGC5L+d5oqk6aG16Z2iJywgJ+aWveihjOaIluiri+axguS/neitt+mggemdoicpXG5cdFx0XHRcdDogd2luZG93LndnVUxTKCfor7fmsYLkv53miqTpobXpnaInLCAn6KuL5rGC5L+d6K236aCB6Z2iJylcblx0XHQpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfkv53miqTmlrnpkognLCAn5L+d6K235pa56YedJyksICdRVzpQUk9UJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfkv53miqTorr7nva4nLCAn5L+d6K236Kit5a6aJyksICdIOlRXL1BSRUYjcHJvdGVjdCcpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyNwcm90ZWN0Jyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRjb25zdCBhY3Rpb25maWVsZCA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmk43kvZznsbvlnosnLCAn5pON5L2c6aGe5YilJyksXG5cdFx0fSk7XG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRhY3Rpb25maWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAncmFkaW8nLFxuXHRcdFx0XHRuYW1lOiAnYWN0aW9udHlwZScsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlQWN0aW9uLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+d5oqk6aG16Z2iJywgJ+S/neitt+mggemdoicpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdwcm90ZWN0Jyxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRhY3Rpb25maWVsZC5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3JhZGlvJyxcblx0XHRcdG5hbWU6ICdhY3Rpb250eXBlJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlQWN0aW9uLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2iJywgJ+iri+axguS/neitt+mggemdoicpLFxuXHRcdFx0XHRcdHZhbHVlOiAncmVxdWVzdCcsXG5cdFx0XHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6Iul5oKo5oOz5ZyoUVc6UkZQUOivt+axguS/neaKpOatpOmhtScsICfoi6Xmgqjmg7PlnKhRVzpSRlBQ6KuL5rGC5L+d6K235q2k6aCBJykgK1xuXHRcdFx0XHRcdFx0KE1vcmViaXRzLnVzZXJJc1N5c29wID8gJ+iAjOS4jeaYr+iHquihjOWujOaIkOOAgicgOiAn44CCJyksXG5cdFx0XHRcdFx0Y2hlY2tlZDogIU1vcmViaXRzLnVzZXJJc1N5c29wLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5L+d5oqk5qih5p2/5qCH6K6w5q2k6aG1JywgJ+eUqOS/neitt+aooeadv+aomeiomOatpOmggScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndGFnJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WPr+S7peeUqOatpOS4uumhtemdouWKoOS4iuWQiOmAgueahOS/neaKpOaooeadv+OAgicsICflj6/ku6XnlKjmraTngrrpoIHpnaLliqDkuIrlkIjpgannmoTkv53orbfmqKHmnb/jgIInKSxcblx0XHRcdFx0XHRkaXNhYmxlZDogbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSA9PT0gMCB8fCBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSA9PT0gJ1NjcmlidW50bycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqQnLCAn6aCQ6KitJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfcHJlc2V0Jyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICcxJyxcblx0XHRcdG5hbWU6ICdmaWVsZDEnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogJzInLFxuXHRcdFx0bmFtZTogJ2ZpZWxkMicsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Ly8gV2UgbXVzdCBpbml0IHRoZSBjb250cm9sc1xuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5hY3Rpb250eXBlWzBdLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHQvLyBnZXQgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsIGFzeW5jaHJvbm91c2x5XG5cdFx0VHdpbmtsZS5wcm90ZWN0LmZldGNoUHJvdGVjdGlvbkxldmVsKCk7XG5cdH07XG5cdC8vIEN1c3RvbWl6YWJsZSBuYW1lc3BhY2UgYW5kIEZsYWdnZWRSZXZzIHNldHRpbmdzXG5cdC8vIEluIHRoZW9yeSBpdCdkIGJlIG5pY2UgdG8gaGF2ZSByZXN0cmljdGlvbmxldmVscyBkZWZpbmVkIGhlcmUsXG5cdC8vIGJ1dCB0aG9zZSBhcmUgb25seSBhdmFpbGFibGUgdmlhIGEgc2l0ZWluZm8gcXVlcnlcblx0Ly8gTGltaXQgdGVtcGxhdGUgZWRpdG9yOyBhIFR3aW5rbGUgcmVzdHJpY3Rpb24sIG5vdCBhIHNpdGUgc2V0dGluZ1xuXHRjb25zdCBpc1RlbXBsYXRlID0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMTAgfHwgbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gODI4O1xuXHQvLyBDb250YWlucyB0aGUgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsIGluIGFuIG9iamVjdFxuXHQvLyBPbmNlIGZpbGxlZCwgaXQgd2lsbCBsb29rIHNvbWV0aGluZyBsaWtlOlxuXHQvLyB7IGVkaXQ6IHsgbGV2ZWw6IFwic3lzb3BcIiwgZXhwaXJ5OiA8c29tZSBkYXRlPiwgY2FzY2FkZTogdHJ1ZSB9LCAuLi4gfVxuXHRUd2lua2xlLnByb3RlY3QuY3VycmVudFByb3RlY3Rpb25MZXZlbHMgPSB7fTtcblx0VHdpbmtsZS5wcm90ZWN0LnByZXZpb3VzUHJvdGVjdGlvbkxldmVscyA9IHt9O1xuXHRUd2lua2xlLnByb3RlY3QuZmV0Y2hQcm90ZWN0aW9uTGV2ZWwgPSAoKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRpbmRleHBhZ2VpZHM6IHRydWUsXG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRsaXN0OiAnbG9nZXZlbnRzJyxcblx0XHRcdGxldHlwZTogJ3Byb3RlY3QnLFxuXHRcdFx0bGV0aXRsZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0aW5wcm9wOiAncHJvdGVjdGlvbnx3YXRjaGVkJyxcblx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdH07XG5cdFx0dm9pZCBhcGkuZ2V0KHBhcmFtcykudGhlbigocHJvdGVjdERhdGEpID0+IHtcblx0XHRcdGNvbnN0IFtwYWdlaWRdID0gcHJvdGVjdERhdGEucXVlcnkucGFnZWlkcztcblx0XHRcdGNvbnN0IHBhZ2UgPSBwcm90ZWN0RGF0YS5xdWVyeS5wYWdlc1twYWdlaWRdO1xuXHRcdFx0Y29uc3QgY3VycmVudCA9IHt9O1xuXHRcdFx0Y29uc3QgcHJldmlvdXMgPSB7fTtcblx0XHRcdC8vIFNhdmUgcmVxdWVzdGVkIHBhZ2UncyB3YXRjaGVkIHN0YXR1cyBmb3IgbGF0ZXIgaW4gY2FzZSBuZWVkZWQgd2hlbiBmaWxpbmcgcmVxdWVzdFxuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LndhdGNoZWQgPSBwYWdlLndhdGNobGlzdGV4cGlyeSB8fCBwYWdlLndhdGNoZWQgPT09ICcnO1xuXHRcdFx0Zm9yIChjb25zdCBwcm90ZWN0aW9uIG9mIHBhZ2UucHJvdGVjdGlvbikge1xuXHRcdFx0XHRpZiAocHJvdGVjdGlvbi50eXBlICE9PSAnYWZ0Jykge1xuXHRcdFx0XHRcdGN1cnJlbnRbcHJvdGVjdGlvbi50eXBlXSA9IHtcblx0XHRcdFx0XHRcdGxldmVsOiBwcm90ZWN0aW9uLmxldmVsLFxuXHRcdFx0XHRcdFx0ZXhwaXJ5OiBwcm90ZWN0aW9uLmV4cGlyeSxcblx0XHRcdFx0XHRcdGNhc2NhZGU6IHByb3RlY3Rpb24uY2FzY2FkZSA9PT0gJycsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gT25seSB1c2UgdGhlIGxvZyBleGNlcHQgdW5wcm90ZWN0XG5cdFx0XHRpZiAocHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA+PSAxICYmIHByb3RlY3REYXRhLnF1ZXJ5LmxvZ2V2ZW50c1swXS5hY3Rpb24gIT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFtUd2lua2xlLnByb3RlY3QucHJldmlvdXNQcm90ZWN0aW9uTG9nXSA9IHByb3RlY3REYXRhLnF1ZXJ5LmxvZ2V2ZW50cztcblx0XHRcdH0gZWxzZSBpZiAocHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA+PSAyKSB7XG5cdFx0XHRcdFssIFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2ddID0gcHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBwcm90ZWN0aW9uIG9mIFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cucGFyYW1zLmRldGFpbHMpIHtcblx0XHRcdFx0XHRpZiAocHJvdGVjdGlvbi50eXBlICE9PSAnYWZ0Jykge1xuXHRcdFx0XHRcdFx0cHJldmlvdXNbcHJvdGVjdGlvbi50eXBlXSA9IHtcblx0XHRcdFx0XHRcdFx0bGV2ZWw6IHByb3RlY3Rpb24ubGV2ZWwsXG5cdFx0XHRcdFx0XHRcdGV4cGlyeTogcHJvdGVjdGlvbi5leHBpcnksXG5cdFx0XHRcdFx0XHRcdGNhc2NhZGU6IHByb3RlY3Rpb24uY2FzY2FkZSA9PT0gJycsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gc2hvdyB0aGUgcHJvdGVjdGlvbiBsZXZlbCBhbmQgbG9nIGluZm9cblx0XHRcdFR3aW5rbGUucHJvdGVjdC5oYXNQcm90ZWN0TG9nID0gISFwcm90ZWN0RGF0YS5xdWVyeS5sb2dldmVudHMubGVuZ3RoO1xuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LmN1cnJlbnRQcm90ZWN0aW9uTGV2ZWxzID0gY3VycmVudDtcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMgPSBwcmV2aW91cztcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5zaG93TG9nQW5kQ3VycmVudFByb3RlY3RJbmZvKCk7XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5zaG93TG9nQW5kQ3VycmVudFByb3RlY3RJbmZvID0gKCkgPT4ge1xuXHRcdGNvbnN0IGN1cnJlbnRseVByb3RlY3RlZCA9IE9iamVjdC5rZXlzKFR3aW5rbGUucHJvdGVjdC5jdXJyZW50UHJvdGVjdGlvbkxldmVscykubGVuZ3RoICE9PSAwO1xuXHRcdGlmIChUd2lua2xlLnByb3RlY3QuaGFzUHJvdGVjdExvZyB8fCBUd2lua2xlLnByb3RlY3QuaGFzU3RhYmxlTG9nKSB7XG5cdFx0XHRjb25zdCAkbGlua01hcmt1cCA9ICQoJzxzcGFuPicpO1xuXHRcdFx0aWYgKFR3aW5rbGUucHJvdGVjdC5oYXNQcm90ZWN0TG9nKSB7XG5cdFx0XHRcdCRsaW5rTWFya3VwLmFwcGVuZChcblx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0YDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1NwZWNpYWw6TG9nJywge1xuXHRcdFx0XHRcdFx0XHRhY3Rpb246ICd2aWV3Jyxcblx0XHRcdFx0XHRcdFx0cGFnZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAncHJvdGVjdCcsXG5cdFx0XHRcdFx0XHR9KX1cIj4ke3dpbmRvdy53Z1VMUygn5L+d5oqk5pel5b+XJywgJ+S/neitt+aXpeiqjCcpfTwvYT5gXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuaGFzU3RhYmxlTG9nID8gJCgnPHNwYW4+JykuaHRtbCgnICZidWxsOyAnKSA6IG51bGxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiaGFzcHJvdGVjdGxvZ1wiXSBzcGFuJylbMF0pO1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdGN1cnJlbnRseVByb3RlY3RlZFxuXHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCflhYjliY3kv53miqQnLCAn5YWI5YmN5L+d6K23Jylcblx0XHRcdFx0XHQ6IFtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraTpobXpnaLmm77lnKgnLCAn5q2k6aCB6Z2i5pu+5ZyoJyksXG5cdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0YDxiPiR7bmV3IE1vcmViaXRzLmRhdGUoVHdpbmtsZS5wcm90ZWN0LnByZXZpb3VzUHJvdGVjdGlvbkxvZy50aW1lc3RhbXApLmNhbGVuZGFyKFxuXHRcdFx0XHRcdFx0XHRcdFx0J3V0Yydcblx0XHRcdFx0XHRcdFx0XHQpfTwvYj5gXG5cdFx0XHRcdFx0XHRcdClbMF0sXG5cdFx0XHRcdFx0XHRcdGDooqske1R3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cudXNlcn0ke3dpbmRvdy53Z1VMUygn5L+d5oqkJywgJ+S/neittycpfe+8mmAsXG5cdFx0XHRcdFx0XHRcdC4uLlR3aW5rbGUucHJvdGVjdC5mb3JtYXRQcm90ZWN0aW9uRGVzY3JpcHRpb24oVHdpbmtsZS5wcm90ZWN0LnByZXZpb3VzUHJvdGVjdGlvbkxldmVscyksXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHQkbGlua01hcmt1cFswXVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoJGJvZHkuZmluZCgnZGl2W25hbWU9XCJjdXJyZW50cHJvdFwiXSBzcGFuJylbMF0pO1xuXHRcdGxldCBwcm90ZWN0aW9uTm9kZSA9IFtdO1xuXHRcdGxldCBzdGF0dXNMZXZlbCA9ICdpbmZvJztcblx0XHRwcm90ZWN0aW9uTm9kZSA9IFR3aW5rbGUucHJvdGVjdC5mb3JtYXRQcm90ZWN0aW9uRGVzY3JpcHRpb24oVHdpbmtsZS5wcm90ZWN0LmN1cnJlbnRQcm90ZWN0aW9uTGV2ZWxzKTtcblx0XHRpZiAoY3VycmVudGx5UHJvdGVjdGVkKSB7XG5cdFx0XHRzdGF0dXNMZXZlbCA9ICd3YXJuJztcblx0XHR9XG5cdFx0TW9yZWJpdHMuc3RhdHVzW3N0YXR1c0xldmVsXSh3aW5kb3cud2dVTFMoJ+W9k+WJjeS/neaKpOetiee6pycsICfnm67liY3kv53orbfnrYnntJonKSwgcHJvdGVjdGlvbk5vZGUpO1xuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlQWN0aW9uID0gKGUpID0+IHtcblx0XHRsZXQgZmllbGRfcHJlc2V0O1xuXHRcdGxldCBmaWVsZDE7XG5cdFx0bGV0IGZpZWxkMjtcblx0XHRzd2l0Y2ggKGUudGFyZ2V0LnZhbHVlcykge1xuXHRcdFx0Y2FzZSAncHJvdGVjdCc6XG5cdFx0XHRcdGZpZWxkX3ByZXNldCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqQnLCAn6aCQ6KitJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZF9wcmVzZXQuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAnY2F0ZWdvcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqem7mOiupO+8micsICfpgbjmk4fpoJDoqK3vvJonKSxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldCxcblx0XHRcdFx0XHRsaXN0OiBtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpXG5cdFx0XHRcdFx0XHQ/IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNBZG1pblxuXHRcdFx0XHRcdFx0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGQyID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S/neaKpOmAiemhuScsICfkv53orbfpgbjpoIUnKSxcblx0XHRcdFx0XHRuYW1lOiAnZmllbGQyJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdG5hbWU6ICdjdXJyZW50cHJvdCcsXG5cdFx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdFx0fSk7IC8vIGhvbGRzIHRoZSBjdXJyZW50IHByb3RlY3Rpb24gbGV2ZWwsIGFzIGZpbGxlZCBvdXQgYnkgdGhlIGFzeW5jIGNhbGxiYWNrXG5cdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdG5hbWU6ICdoYXNwcm90ZWN0bG9nJyxcblx0XHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gZm9yIGV4aXN0aW5nIHBhZ2VzXG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpKSB7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRtb2RpZnksXG5cdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv67mlLnnvJbovpHmnYPpmZAnLCAn5L+u5pS557eo6Lyv5qyK6ZmQJyksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2VkaXRtb2RpZnknLFxuXHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6XmraTpobnlhbPpl63vvIznvJbovpHmnYPpmZDlsIbkuI3kvJrkv67mlLnjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+iLpeatpOmghemXnOmWie+8jOe3qOi8r+asiumZkOWwh+S4jeacg+S/ruaUueOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAnZWRpdGxldmVsJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e8lui+keadg+mZkO+8micsICfnt6jovK/mrIrpmZDvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bGV2ZWwsXG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdC8vIEZpbHRlciBURSBvdXRzaWRlIG9mIHRlbXBsYXRlcyBhbmQgbW9kdWxlc1xuXHRcdFx0XHRcdFx0XHQobGV2ZWwpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaXNUZW1wbGF0ZSB8fCBsZXZlbC52YWx1ZSAhPT0gJ3RlbXBsYXRlZWRpdG9yJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ2VkaXRleHBpcnknLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn57uI5q2i5pe26Ze077yaJywgJ+e1guatouaZgumWk++8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCQoJ2lucHV0W25hbWU9c21hbGxdJywgJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJ2Zvcm0nKSlbMF0uY2hlY2tlZCA9XG5cdFx0XHRcdFx0XHRcdFx0ZXZlbnQudGFyZ2V0LnNlbGVjdGVkSW5kZXggPj0gNDsgLy8gMSBtb250aFxuXHRcdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdFx0Ly8gZGVmYXVsdCBleHBpcnkgc2VsZWN0aW9uICgyIGRheXMpIGlzIGNvbmRpdGlvbmFsbHkgc2V0IGluIFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXRcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGVuZ3Rocyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZW1vZGlmeSxcblx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S/ruaUueenu+WKqOadg+mZkCcsICfkv67mlLnnp7vli5XmrIrpmZAnKSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnbW92ZW1vZGlmeScsXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+iLpeatpOmhueiiq+WFs+mXre+8jOenu+WKqOadg+mZkOWwhuS4jeiiq+S/ruaUueOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Iul5q2k6aCF6KKr6Zec6ZaJ77yM56e75YuV5qyK6ZmQ5bCH5LiN6KKr5L+u5pS544CCJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdtb3ZlbGV2ZWwnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo5p2D6ZmQ77yaJywgJ+enu+WLleasiumZkO+8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLm1vdmVsZXZlbCxcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGV2ZWxzLmZpbHRlcihcblx0XHRcdFx0XHRcdFx0Ly8gQXV0b2NvbmZpcm1lZCBpcyByZXF1aXJlZCBmb3IgYSBtb3ZlLCByZWR1bmRhbnRcblx0XHRcdFx0XHRcdFx0KGxldmVsKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdGxldmVsLnZhbHVlICE9PSAnYXV0b2NvbmZpcm1lZCcgJiYgKGlzVGVtcGxhdGUgfHwgbGV2ZWwudmFsdWUgIT09ICd0ZW1wbGF0ZWVkaXRvcicpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ21vdmVleHBpcnknLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn57uI5q2i5pe26Ze077yaJywgJ+e1guatouaZgumWk++8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Ly8gZGVmYXVsdCBleHBpcnkgc2VsZWN0aW9uICgyIGRheXMpIGlzIGNvbmRpdGlvbmFsbHkgc2V0IGluIFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXRcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGVuZ3Rocyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBmb3Igbm9uLWV4aXN0aW5nIHBhZ2VzXG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdjcmVhdGVsZXZlbCcsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rmnYPpmZDvvJonLCAn5bu656uL5qyK6ZmQ77yaJyksXG5cdFx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMuY3JlYXRlbGV2ZWwsXG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdC8vIEZpbHRlciBURSBhbHdheXMsIGFuZCBhdXRvY29uZmlybWVkIGluIG1haW5zcGFjZVxuXHRcdFx0XHRcdFx0XHQobGV2ZWwpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbGV2ZWwudmFsdWUgIT09ICd0ZW1wbGF0ZWVkaXRvcic7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdjcmVhdGVleHBpcnknLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn57uI5q2i5pe26Ze077yaJywgJ+e1guatouaZgumWk++8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Ly8gZGVmYXVsdCBleHBpcnkgc2VsZWN0aW9uIChpbmRlZmluaXRlKSBpcyBjb25kaXRpb25hbGx5IHNldCBpbiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlUHJlc2V0XG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdjbG9zZScsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOivt+axguS/neaKpOmhtemdouS4reeahOivt+axgicsICfmqJnoqJjoq4vmsYLkv53orbfpoIHpnaLkuK3nmoToq4vmsYInKSxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0bmFtZTogJ3Byb3RlY3RSZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eQhueUse+8iOS/neaKpOaXpeW/l++8ie+8micsICfnkIbnlLHvvIjkv53orbfml6XoqozvvInvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmICghbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSB8fCBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSA9PT0gJ1NjcmlidW50bycpIHtcblx0XHRcdFx0XHQvLyB0YWdnaW5nIGlzbid0IHJlbGV2YW50IGZvciBub24tZXhpc3Rpbmcgb3IgbW9kdWxlIHBhZ2VzXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ3RhZyc6XG5cdFx0XHRcdGZpZWxkMSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDpgInpobknLCAn5qiZ6KiY6YG46aCFJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkMScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnY3VycmVudHByb3QnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pOyAvLyBob2xkcyB0aGUgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsLCBhcyBmaWxsZWQgb3V0IGJ5IHRoZSBhc3luYyBjYWxsYmFja1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnaGFzcHJvdGVjdGxvZycsXG5cdFx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdG5hbWU6ICd0YWd0eXBlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nkv53miqTmqKHmnb/vvJonLCAn6YG45pOH5L+d6K235qih5p2/77yaJyksXG5cdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UYWdzLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy50YWd0eXBlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdzbWFsbCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S9v+eUqOWbvuagh++8iHNtYWxsPXllc++8iScsICfkvb/nlKjlnJbnpLrvvIhzbWFsbD15ZXPvvIknKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflsIbnu5nmqKHmnb/liqDkuIp8c21hbGw9eWVz5Y+C5pWw77yM5pi+56S65oiQ5Y+z5LiK6KeS55qE5LiA5oqK5oyC6ZSB44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5bCH57Wm5qih5p2/5Yqg5LiKfHNtYWxsPXllc+WPg+aVuO+8jOmhr+ekuuaIkOWPs+S4iuinkueahOS4gOaKiuaOm+mOluOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub2luY2x1ZGUnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlKgmbHQ7bm9pbmNsdWRlJmd0O+WMheijueS/neaKpOaooeadvycsICfnlKgmbHQ7bm9pbmNsdWRlJmd0O+WMheijueS/neitt+aooeadvycpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WwhuS/neaKpOaooeadv+WMheijueWcqCZsdDtub2luY2x1ZGUmZ3Q75LitJyxcblx0XHRcdFx0XHRcdFx0XHQn5bCH5L+d6K235qih5p2/5YyF6KO55ZyoJmx0O25vaW5jbHVkZSZndDvkuK0nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDEwLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3Nob3dleHBpcnknLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjmqKHmnb/mmL7npLrliLDmnJ/ml7bpl7QnLCAn5Zyo5qih5p2/6aGv56S65Yiw5pyf5pmC6ZaTJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5bCG57uZ5qih5p2/5Yqg5LiKfGV4cGlyeeWPguaVsCcsICflsIfntabmqKHmnb/liqDkuIp8ZXhwaXJ55Y+D5pW4JyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGhpZGRlbjogZS50YXJnZXQudmFsdWVzID09PSAndGFnJyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncmVxdWVzdCc6XG5cdFx0XHRcdGZpZWxkX3ByZXNldCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTnsbvlnosnLCAn5L+d6K236aGe5YilJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZF9wcmVzZXQuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAnY2F0ZWdvcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+exu+Wei+WSjOeQhueUse+8micsICfpoZ7liKXlkoznkIbnlLHvvJonKSxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldCxcblx0XHRcdFx0XHRsaXN0OiBtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpXG5cdFx0XHRcdFx0XHQ/IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNcblx0XHRcdFx0XHRcdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0NyZWF0ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInpobknLCAn6YG46aCFJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkMScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnY3VycmVudHByb3QnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pOyAvLyBob2xkcyB0aGUgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsLCBhcyBmaWxsZWQgb3V0IGJ5IHRoZSBhc3luYyBjYWxsYmFja1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnaGFzcHJvdGVjdGxvZycsXG5cdFx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdG5hbWU6ICdleHBpcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXtumVv++8micsICfmmYLplbfvvJonKSxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S4tOaXticsICfoh6jmmYInKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICd0ZW1wb3JhcnknLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICfmsLjkuYUnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2luZmluaXR5Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+i/meeOqeaEj+WEv+iiq+a1t+ixmuWQg+aOieS6hu+8gScsICfpgJnnjqnmhI/lhZLooqvmtbfosZrlkIPmjonkuobvvIEnKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlcHJvdGVjdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0bGV0IG9sZGZpZWxkO1xuXHRcdGlmIChmaWVsZF9wcmVzZXQpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF9wcmVzZXRcIl0nKTtcblx0XHRcdG9sZGZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZpZWxkX3ByZXNldC5yZW5kZXIoKSwgb2xkZmllbGQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF9wcmVzZXRcIl0nKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXHRcdH1cblx0XHRpZiAoZmllbGQxKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQxXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZDEucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQxXCJdJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcblx0XHR9XG5cdFx0aWYgKGZpZWxkMikge1xuXHRcdFx0W29sZGZpZWxkXSA9ICQoZS50YXJnZXQuZm9ybSkuZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkMlwiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGQyLnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCQoZS50YXJnZXQuZm9ybSkuZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkMlwiXScpLmNzcygnZGlzcGxheScsICdub25lJyk7XG5cdFx0fVxuXHRcdGlmIChlLnRhcmdldC52YWx1ZXMgPT09ICdwcm90ZWN0Jykge1xuXHRcdFx0Ly8gZmFrZSBhIGNoYW5nZSBldmVudCBvbiB0aGUgcHJlc2V0IGRyb3Bkb3duXG5cdFx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5jYXRlZ29yeS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdFx0XHQvLyByZWR1Y2UgdmVydGljYWwgaGVpZ2h0IG9mIGRpYWxvZ1xuXHRcdFx0JChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQyXCJdIHNlbGVjdCcpLnBhcmVudCgpLmNzcyh7XG5cdFx0XHRcdGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuXHRcdFx0XHRtYXJnaW5SaWdodDogJzAuNWVtJyxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyByZS1hZGQgcHJvdGVjdGlvbiBsZXZlbCBhbmQgbG9nIGluZm8sIGlmIGl0J3MgYXZhaWxhYmxlXG5cdFx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLnNob3dMb2dBbmRDdXJyZW50UHJvdGVjdEluZm8oKTtcblx0fTtcblx0Ly8gTk9URTogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGJhdGNocHJvdGVjdCBhcyB3ZWxsXG5cdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzID0ge1xuXHRcdGVkaXRtb2RpZnk6IChlKSA9PiB7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC5kaXNhYmxlZCA9ICFlLnRhcmdldC5jaGVja2VkO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5lZGl0ZXhwaXJ5LmRpc2FibGVkID0gIWUudGFyZ2V0LmNoZWNrZWQgfHwgZS50YXJnZXQuZm9ybS5lZGl0bGV2ZWwudmFsdWUgPT09ICdhbGwnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5lZGl0bGV2ZWwuc3R5bGUuY29sb3IgPSBlLnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5lZGl0ZXhwaXJ5LnN0eWxlLmNvbG9yID0gZS50YXJnZXQuY2hlY2tlZCA/ICcnIDogJ3RyYW5zcGFyZW50Jztcblx0XHR9LFxuXHRcdGVkaXRsZXZlbDogKGUpID0+IHtcblx0XHRcdGUudGFyZ2V0LmZvcm0uZWRpdGV4cGlyeS5kaXNhYmxlZCA9IGUudGFyZ2V0LnZhbHVlID09PSAnYWxsJztcblx0XHR9LFxuXHRcdG1vdmVtb2RpZnk6IChlKSA9PiB7XG5cdFx0XHQvLyBzeW5jIG1vdmUgc2V0dGluZ3Mgd2l0aCBlZGl0IHNldHRpbmdzIGlmIGFwcGxpY2FibGVcblx0XHRcdGlmIChlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC5kaXNhYmxlZCAmJiAhZS50YXJnZXQuZm9ybS5lZGl0bGV2ZWwuZGlzYWJsZWQpIHtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlbGV2ZWwudmFsdWUgPSBlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC52YWx1ZTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LnZhbHVlID0gZS50YXJnZXQuZm9ybS5lZGl0ZXhwaXJ5LnZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC5kaXNhYmxlZCkge1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC52YWx1ZSA9ICdzeXNvcCc7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubW92ZWV4cGlyeS52YWx1ZSA9ICdpbmZpbml0eSc7XG5cdFx0XHR9XG5cdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC5kaXNhYmxlZCA9ICFlLnRhcmdldC5jaGVja2VkO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LmRpc2FibGVkID0gIWUudGFyZ2V0LmNoZWNrZWQgfHwgZS50YXJnZXQuZm9ybS5tb3ZlbGV2ZWwudmFsdWUgPT09ICdhbGwnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlbGV2ZWwuc3R5bGUuY29sb3IgPSBlLnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LnN0eWxlLmNvbG9yID0gZS50YXJnZXQuY2hlY2tlZCA/ICcnIDogJ3RyYW5zcGFyZW50Jztcblx0XHR9LFxuXHRcdG1vdmVsZXZlbDogKGUpID0+IHtcblx0XHRcdGUudGFyZ2V0LmZvcm0ubW92ZWV4cGlyeS5kaXNhYmxlZCA9IGUudGFyZ2V0LnZhbHVlID09PSAnYWxsJztcblx0XHR9LFxuXHRcdGNyZWF0ZWxldmVsOiAoZSkgPT4ge1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5jcmVhdGVleHBpcnkuZGlzYWJsZWQgPSBlLnRhcmdldC52YWx1ZSA9PT0gJ2FsbCc7XG5cdFx0fSxcblx0XHR0YWd0eXBlOiAoZSkgPT4ge1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5zbWFsbC5kaXNhYmxlZCA9IGUudGFyZ2V0LnZhbHVlID09PSAnbm9uZScgfHwgZS50YXJnZXQudmFsdWUgPT09ICdub29wJztcblx0XHRcdGUudGFyZ2V0LmZvcm0ubm9pbmNsdWRlLmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdub25lJyB8fCBlLnRhcmdldC52YWx1ZSA9PT0gJ25vb3AnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5zaG93ZXhwaXJ5LmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdub25lJyB8fCBlLnRhcmdldC52YWx1ZSA9PT0gJ25vb3AnO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeSA9ICh0YXJnZXQpID0+IHtcblx0XHRjb25zdCBjdXN0b20gPSBwcm9tcHQoXG5cdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfovpPlhaXoh6rlrprkuYnnu4jmraLml7bpl7TjgIJcXG7mgqjlj6/ku6Xkvb/nlKjnm7jlr7nml7bpl7TvvIzlpoLigJwxIG1pbnV0ZeKAneaIluKAnDE5IGRheXPigJ3vvIzmiJbnu53lr7nml7bpl7TigJx5eXl5bW1kZGhobW3igJ3vvIjlpoLigJwyMDA2MDIwMTE0MDXigJ3mmK8yMDA25bm0MDLmnIgwMeaXpTE077yaMDXvvIhVVEPvvInvvIknLFxuXHRcdFx0XHQn6Ly45YWl6Ieq6KiC57WC5q2i5pmC6ZaT44CCXFxu5oKo5Y+v5Lul5L2/55So55u45bCN5pmC6ZaT77yM5aaC44CMMSBtaW51dGXjgI3miJbjgIwxOSBkYXlz44CN77yM5oiW57WV5bCN5pmC6ZaT44CMeXl5eW1tZGRoaG1t44CN77yI5aaC44CMMjAwNjAyMDExNDA144CN5pivMjAwNuW5tDAy5pyIMDHml6UxNO+8mjA177yIVVRD77yJ77yJJ1xuXHRcdFx0KSxcblx0XHRcdCcnXG5cdFx0KTtcblx0XHRpZiAoY3VzdG9tKSB7XG5cdFx0XHRjb25zdCBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcblx0XHRcdG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgY3VzdG9tKTtcblx0XHRcdG9wdGlvbi50ZXh0Q29udGVudCA9IGN1c3RvbTtcblx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZChvcHRpb24pO1xuXHRcdFx0dGFyZ2V0LnZhbHVlID0gY3VzdG9tO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0YXJnZXQuc2VsZWN0ZWRJbmRleCA9IDA7XG5cdFx0fVxuXHR9O1xuXHQvLyBOT1RFOiBUaGlzIGxpc3QgaXMgdXNlZCBieSBiYXRjaHByb3RlY3QgYXMgd2VsbFxuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscyA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ+WFqOmDqCcsXG5cdFx0XHR2YWx1ZTogJ2FsbCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XlhYHorrjoh6rliqjnoa7orqTnlKjmiLcnLCAn5YOF5YWB6Kix6Ieq5YuV56K66KqN5L2/55So6ICFJyksXG5cdFx0XHR2YWx1ZTogJ2F1dG9jb25maXJtZWQnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LuF5qih5p2/57yW6L6R5ZGY5ZKM566h55CG5ZGYJywgJ+WDheaooeadv+e3qOi8r+WToeWSjOeuoeeQhuWToScpLFxuXHRcdFx0dmFsdWU6ICd0ZW1wbGF0ZWVkaXRvcicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XnrqHnkIblkZgnLCAn5YOF566h55CG5ZOhJyksXG5cdFx0XHR2YWx1ZTogJ3N5c29wJyxcblx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LuF5YWB6K646LWE5rex55So5oi3JywgJ+WDheWFgeioseizh+a3seeUqOaIticpLFxuXHRcdFx0dmFsdWU6ICdyZXZpc2lvbnByb3RlY3RlZCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XlhYHorrjoo4HlhrPlp5TlkZgnLCAn5YOF5YWB6Kix6KOB5rG65aeU5ZOhJyksXG5cdFx0XHR2YWx1ZTogJ29mZmljaWFscHJvdGVjdGVkJyxcblx0XHR9LFxuXHRdO1xuXHQvLyBkZWZhdWx0IGV4cGlyeSBzZWxlY3Rpb24gaXMgY29uZGl0aW9uYWxseSBzZXQgaW4gVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldFxuXHQvLyBOT1RFOiBUaGlzIGxpc3QgaXMgdXNlZCBieSBiYXRjaHByb3RlY3QgYXMgd2VsbFxuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICcx5aSpJyxcblx0XHRcdHZhbHVlOiAnMSBkYXknLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICcz5aSpJyxcblx0XHRcdHZhbHVlOiAnMyBkYXlzJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzHlkagnLCAnMemAsScpLFxuXHRcdFx0dmFsdWU6ICcxIHdlZWsnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMuWRqCcsICcy6YCxJyksXG5cdFx0XHR2YWx1ZTogJzIgd2Vla3MnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMeS4quaciCcsICcx5YCL5pyIJyksXG5cdFx0XHR2YWx1ZTogJzEgbW9udGgnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnM+S4quaciCcsICcz5YCL5pyIJyksXG5cdFx0XHR2YWx1ZTogJzMgbW9udGhzJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzbkuKrmnIgnLCAnNuWAi+aciCcpLFxuXHRcdFx0dmFsdWU6ICc2IG1vbnRocycsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJzHlubQnLFxuXHRcdFx0dmFsdWU6ICcxIHllYXInLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyfJywgJ+eEoemZkOacnycpLFxuXHRcdFx0dmFsdWU6ICdpbmZpbml0eScsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnigKbigKYnLCAn6Ieq6KiC4oCm4oCmJyksXG5cdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0FkbWluID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ino+mZpOS/neaKpCcsICfop6PpmaTkv53orbcnKSxcblx0XHRcdHZhbHVlOiAndW5wcm90ZWN0Jyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpCcsICflhajkv53orbcnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhO+8iOWFqO+8iScsICfluLjopo/vvIjlhajvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXByb3RlY3RlZCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuonorq7jgIHnvJbovpHmiJjvvIjlhajvvIknLCAn54it6K2w44CB57eo6Lyv5oiw77yI5YWo77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1kaXNwdXRlJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmqKHmnb/kv53miqQnLCAn5qih5p2/5L+d6K23JyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpq5jpo47pmanmqKHmnb/vvIjmqKHmnb/vvIknLCAn6auY6aKo6Zqq5qih5p2/77yI5qih5p2/77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC10ZW1wbGF0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2K5L+d5oqkJywgJ+WNiuS/neittycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeE77yI5Y2K77yJJywgJ+W4uOimj++8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1wcm90ZWN0ZWQnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oyB57ut56C05Z2P77yI5Y2K77yJJywgJ+aMgee6jOegtOWjnu+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS12YW5kYWxpc20nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N55Sf6ICF5Lyg6K6w5pa56ZKI77yI5Y2K77yJJywgJ+mBleWPjeeUn+iAheWCs+iomOaWuemHne+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1ibHAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YKA5YSh56C05Z2P77yI5Y2K77yJJywgJ+WCgOWEoeegtOWjnu+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1zb2NrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mrmOmjjumZqeaooeadv++8iOWNiu+8iScsICfpq5jpoqjpmqrmqKHmnb/vvIjljYrvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktdGVtcGxhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6KKr5bCB56aB55So5oi35rul55So6K6o6K666aG177yI5Y2K77yJJywgJ+iiq+WwgeemgeS9v+eUqOiAhea/q+eUqOiojuirlumgge+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS11c2VydGFsaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo5L+d5oqkJywgJ+enu+WLleS/neittycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeE77yI56e75Yqo77yJJywgJ+W4uOimj++8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuonorq7jgIHnp7vliqjmiJjvvIjnp7vliqjvvIknLCAn54it6K2w44CB56e75YuV5oiw77yI56e75YuV77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLWRpc3B1dGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo56C05Z2P77yI56e75Yqo77yJJywgJ+enu+WLleegtOWjnu+8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS12YW5kYWxpc20nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6auY6aOO6Zmp6aG16Z2i77yI56e75Yqo77yJJywgJ+mrmOmiqOmaqumggemdou+8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS1pbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF0uZmlsdGVyKFxuXHRcdChcblx0XHRcdC8vIEZpbHRlciBmb3IgdGVtcGxhdGVzXG5cdFx0XHR7bGFiZWx9XG5cdFx0KSA9PiB7XG5cdFx0XHRyZXR1cm4gaXNUZW1wbGF0ZSB8fCAobGFiZWwgIT09ICfmqKHmnb/kv53miqQnICYmIGxhYmVsICE9PSAn5qih5p2/5L+d6K23Jyk7XG5cdFx0fVxuXHQpO1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlT25seSA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnmb3nurjkv53miqQnLCAn55m957SZ5L+d6K23JyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfluLjop4TvvIjnmb3nurjvvIknLCAn5bi46KaP77yI55m957SZ77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1jcmVhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh6YeN5aSN5Yib5bu677yI55m957q477yJJywgJ+WkmuasoemHjeikh+W7uueri++8iOeZvee0me+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtY3JlYXRlLXJlcGVhdCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjIHnu63noLTlnY/vvIjnmb3nurjvvIknLCAn5oyB57qM56C05aOe77yI55m957SZ77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1jcmVhdGUtdmFuZGFsaXNtJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suWwgeemgeeUqOaIt+eahOeUqOaIt+mhte+8iOeZvee6uO+8iScsICflt7LlsIHnpoHkvb/nlKjogIXnmoTkvb/nlKjogIXpoIHvvIjnmb3ntJnvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLWNyZWF0ZS11c2VycGFnZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXMgPSBbXG5cdFx0Li4uVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0FkbWluLFxuXHRcdC4uLlR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5LFxuXHRdO1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAn6Kej6Zmk5L+d5oqkJyxcblx0XHRcdHZhbHVlOiAndW5wcm90ZWN0Jyxcblx0XHR9LFxuXHRcdC4uLlR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5LFxuXHRdO1xuXHQvLyBOT1RJQ0U6IGtlZXAgdGhpcyBzeW5jaGVkIHdpdGggW1tNZWRpYVdpa2k6UHJvdGVjdC1kcm9wZG93bl1dXG5cdC8vIGV4cGlyeSB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0c1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblByZXNldHNJbmZvID0ge1xuXHRcdCdwcC1wcm90ZWN0ZWQnOiB7XG5cdFx0XHRlZGl0OiAnc3lzb3AnLFxuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogbnVsbCxcblx0XHR9LFxuXHRcdCdwcC1kaXNwdXRlJzoge1xuXHRcdFx0ZWRpdDogJ3N5c29wJyxcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn57yW6L6R5oiYJywgJ+e3qOi8r+aIsCcpLFxuXHRcdH0sXG5cdFx0J3BwLXRlbXBsYXRlJzoge1xuXHRcdFx0ZWRpdDogJ3RlbXBsYXRlZWRpdG9yJyxcblx0XHRcdG1vdmU6ICd0ZW1wbGF0ZWVkaXRvcicsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygnW1tRVzpIUlR86auY6aOO6Zmp5qih5p2/XV0nLCAnW1tRVzpIUlR86auY6aKo6Zqq5qih5p2/XV0nKSxcblx0XHRcdHRlbXBsYXRlOiAnbm9vcCcsXG5cdFx0fSxcblx0XHQncHAtdmFuZGFsaXNtJzoge1xuXHRcdFx0ZWRpdDogJ3N5c29wJyxcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6KKr6Ieq5Yqo56Gu6K6k55So5oi356C05Z2PJywgJ+iiq+iHquWLleeiuuiqjeS9v+eUqOiAheegtOWjnicpLFxuXHRcdH0sXG5cdFx0J3BwLXNvY2snOiB7XG5cdFx0XHRlZGl0OiAnc3lzb3AnLFxuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63nmoTlgoDlhKHnoLTlnY8nLCAn5oyB57qM55qE5YKA5YSh56C05aOeJyksXG5cdFx0fSxcblx0XHQncHAtc2VtaS12YW5kYWxpc20nOiB7XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6KKr5paw55So5oi356C05Z2PJywgJ+iiq+aWsOS9v+eUqOiAheegtOWjnicpLFxuXHRcdFx0dGVtcGxhdGU6ICdwcC12YW5kYWxpc20nLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktYmxwJzoge1xuXHRcdFx0ZWRpdDogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+aWsOeUqOaIt+i/neWPjeeUn+iAheS8oOiusOaWuemSiCcsICfmlrDkvb/nlKjogIXpgZXlj43nlJ/ogIXlgrPoqJjmlrnph50nKSxcblx0XHR9LFxuXHRcdCdwcC1zZW1pLXVzZXJ0YWxrJzoge1xuXHRcdFx0ZWRpdDogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+iiq+WwgeemgeeUqOaIt+a7peeUqOWFtuiuqOiuuumhtScsICfooqvlsIHnpoHkvb/nlKjogIXmv6vnlKjlhbboqI7oq5bpoIEnKSxcblx0XHR9LFxuXHRcdCdwcC1zZW1pLXRlbXBsYXRlJzoge1xuXHRcdFx0Ly8gcmVtb3ZlZCBmb3Igbm93XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygnW1tRVzpIUlR86auY6aOO6Zmp5qih5p2/XV0nLCAnW1tRVzpIUlR86auY6aKo6Zqq5qih5p2/XV0nKSxcblx0XHRcdHRlbXBsYXRlOiAnbm9vcCcsXG5cdFx0fSxcblx0XHQncHAtc2VtaS1zb2NrJzoge1xuXHRcdFx0ZWRpdDogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+aMgee7reeahOWCgOWEoeegtOWdjycsICfmjIHnuoznmoTlgoDlhKHnoLTlo54nKSxcblx0XHRcdHRlbXBsYXRlOiAncHAtc29jaycsXG5cdFx0fSxcblx0XHQncHAtc2VtaS1wcm90ZWN0ZWQnOiB7XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IG51bGwsXG5cdFx0XHR0ZW1wbGF0ZTogJ3BwLXByb3RlY3RlZCcsXG5cdFx0fSxcblx0XHQncHAtbW92ZSc6IHtcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IG51bGwsXG5cdFx0fSxcblx0XHQncHAtbW92ZS1kaXNwdXRlJzoge1xuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfpobXpnaLnp7vliqjmiJgnLCAn6aCB6Z2i56e75YuV5oiwJyksXG5cdFx0fSxcblx0XHQncHAtbW92ZS12YW5kYWxpc20nOiB7XG5cdFx0XHRtb3ZlOiAnc3lzb3AnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+enu+WKqOegtOWdjycsICfnp7vli5XnoLTlo54nKSxcblx0XHR9LFxuXHRcdCdwcC1tb3ZlLWluZGVmJzoge1xuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfpq5jpo47pmanpobXpnaInLCAn6auY6aKo6Zqq6aCB6Z2iJyksXG5cdFx0fSxcblx0XHR1bnByb3RlY3Q6IHtcblx0XHRcdGVkaXQ6ICdhbGwnLFxuXHRcdFx0bW92ZTogJ2FsbCcsXG5cdFx0XHRjcmVhdGU6ICdhbGwnLFxuXHRcdFx0cmVhc29uOiBudWxsLFxuXHRcdFx0dGVtcGxhdGU6ICdub25lJyxcblx0XHR9LFxuXHRcdCdwcC1jcmVhdGUnOiB7XG5cdFx0XHRjcmVhdGU6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdHJlYXNvbjogbnVsbCxcblx0XHR9LFxuXHRcdCdwcC1jcmVhdGUtcmVwZWF0Jzoge1xuXHRcdFx0Y3JlYXRlOiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5aSa5qyh6YeN5aSN5Yib5bu6JywgJ+WkmuasoemHjeikh+W7uueriycpLFxuXHRcdH0sXG5cdFx0J3BwLWNyZWF0ZS12YW5kYWxpc20nOiB7XG5cdFx0XHRjcmVhdGU6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfooqvmlrDnlKjmiLfnoLTlnY8nLCAn6KKr5paw5L2/55So6ICF56C05aOeJyksXG5cdFx0fSxcblx0XHQncHAtY3JlYXRlLXVzZXJwYWdlJzoge1xuXHRcdFx0Y3JlYXRlOiAnc3lzb3AnLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+iiq+awuOS5heWwgeemgeeahOeUqOaIt+mhtScsICfooqvmsLjkuYXlsIHnpoHnmoTkvb/nlKjogIXpoIHpnaInKSxcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblRhZ3MgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg77yI56e76Zmk546w5pyJ5qih5p2/77yJJywgJ+eEoe+8iOenu+mZpOePvuacieaooeadv++8iScpLFxuXHRcdFx0dmFsdWU6ICdub25lJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoO+8iOS4jeenu+mZpOeOsOacieaooeadv++8iScsICfnhKHvvIjkuI3np7vpmaTnj77mnInmqKHmnb/vvIknKSxcblx0XHRcdHZhbHVlOiAnbm9vcCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ+mAmueUqOaooeadvycsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtZGlzcHV0ZX19OiAke3dpbmRvdy53Z1VMUygn5LqJ6K6uJywgJ+eIreitsCcpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1kaXNwdXRlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC12YW5kYWxpc219fTogJHt3aW5kb3cud2dVTFMoJ+egtOWdjycsICfnoLTlo54nKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtdmFuZGFsaXNtJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAne3twcC1zb2NrfX06IOWCgOWEoScsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1zb2NrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC10ZW1wbGF0ZX19OiAke3dpbmRvdy53Z1VMUygn6auY6aOO6Zmp5qih5p2/JywgJ+mrmOmiqOmaquaooeadvycpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC10ZW1wbGF0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtcHJvdGVjdGVkfX06ICR7d2luZG93LndnVUxTKCfluLjop4QnLCAn5bi46KaPJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXByb3RlY3RlZCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2K5L+d5oqk5qih5p2/JywgJ+WNiuS/neitt+aooeadvycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLXNlbWktdXNlcnRhbGt9fTogJHt3aW5kb3cud2dVTFMoJ+WwgeemgeeahOeUqOaItycsICflsIHnpoHnmoTkvb/nlKjogIUnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS11c2VydGFsaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtc2VtaS1ibHB9fTogJHt3aW5kb3cud2dVTFMoJ+eUn+iAheS8oOiusCcsICfnlJ/ogIXlgrPoqJgnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1ibHAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLXNlbWktaW5kZWZ9fTogJHt3aW5kb3cud2dVTFMoJ+mVv+acnycsICfplbfmnJ8nKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1pbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo5L+d5oqk5qih5p2/JywgJ+enu+WLleS/neitt+aooeadvycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLW1vdmUtZGlzcHV0ZX19OiAke3dpbmRvdy53Z1VMUygn5LqJ6K6uJywgJ+eIreitsCcpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLWRpc3B1dGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLW1vdmUtdmFuZGFsaXNtfX06ICR7d2luZG93LndnVUxTKCfnoLTlnY8nLCAn56C05aOeJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLW1vdmUtdmFuZGFsaXNtJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1tb3ZlLWluZGVmfX06ICR7d2luZG93LndnVUxTKCfplb/mnJ8nLCAn6ZW35pyfJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLW1vdmUtaW5kZWYnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLW1vdmV9fTogJHt3aW5kb3cud2dVTFMoJ+W4uOinhCcsICfluLjopo8nKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXQgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IGFjdGlvbnR5cGVzID0gZm9ybS5hY3Rpb250eXBlO1xuXHRcdGxldCBhY3Rpb250eXBlO1xuXHRcdGZvciAoY29uc3QgYWN0aW9uX3R5cGVfdmFsdWUgb2YgYWN0aW9udHlwZXMpIHtcblx0XHRcdGlmICghYWN0aW9uX3R5cGVfdmFsdWUuY2hlY2tlZCkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGFjdGlvbnR5cGUgPSBhY3Rpb25fdHlwZV92YWx1ZS52YWx1ZXM7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKGFjdGlvbnR5cGUgPT09ICdwcm90ZWN0Jykge1xuXHRcdFx0Ly8gYWN0dWFsbHkgcHJvdGVjdGluZyB0aGUgcGFnZVxuXHRcdFx0Y29uc3QgaXRlbSA9IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uUHJlc2V0c0luZm9bZm9ybS5jYXRlZ29yeS52YWx1ZV07XG5cdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0XHRpZiAoaXRlbS5lZGl0KSB7XG5cdFx0XHRcdFx0Zm9ybS5lZGl0bW9kaWZ5LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRtb2RpZnkoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiBmb3JtLmVkaXRtb2RpZnksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5lZGl0bGV2ZWwudmFsdWUgPSBpdGVtLmVkaXQ7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMuZWRpdGxldmVsKHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5lZGl0bGV2ZWwsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9ybS5lZGl0bW9kaWZ5LmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bW9kaWZ5KHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5lZGl0bW9kaWZ5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChpdGVtLm1vdmUpIHtcblx0XHRcdFx0XHRmb3JtLm1vdmVtb2RpZnkuY2hlY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZW1vZGlmeSh7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0ubW92ZW1vZGlmeSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmb3JtLm1vdmVsZXZlbC52YWx1ZSA9IGl0ZW0ubW92ZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbGV2ZWwoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiBmb3JtLm1vdmVsZXZlbCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmb3JtLm1vdmVtb2RpZnkuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLm1vdmVtb2RpZnkoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiBmb3JtLm1vdmVtb2RpZnksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9ybS5lZGl0ZXhwaXJ5LnZhbHVlID0gaXRlbS5leHBpcnkgfHwgJzEgd2Vlayc7XG5cdFx0XHRcdGZvcm0ubW92ZWV4cGlyeS52YWx1ZSA9IGl0ZW0uZXhwaXJ5IHx8ICcxIHdlZWsnO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKGl0ZW0uY3JlYXRlKSB7XG5cdFx0XHRcdFx0Zm9ybS5jcmVhdGVsZXZlbC52YWx1ZSA9IGl0ZW0uY3JlYXRlO1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmNyZWF0ZWxldmVsKHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5jcmVhdGVsZXZlbCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmb3JtLmNyZWF0ZWV4cGlyeS52YWx1ZSA9IGl0ZW0uY3JlYXRlZXhwaXJ5IHx8ICcxIHdlZWsnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0uY3JlYXRlZXhwaXJ5LnZhbHVlID0gaXRlbS5leHBpcnkgfHwgJzEgd2Vlayc7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZWFzb25GaWVsZCA9IGFjdGlvbnR5cGUgPT09ICdwcm90ZWN0JyA/IGZvcm0ucHJvdGVjdFJlYXNvbiA6IGZvcm0ucmVhc29uO1xuXHRcdFx0aWYgKGl0ZW0ucmVhc29uKSB7XG5cdFx0XHRcdHJlYXNvbkZpZWxkLnZhbHVlID0gaXRlbS5yZWFzb247XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZWFzb25GaWVsZC52YWx1ZSA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0Ly8gc29ydCBvdXQgdGFnZ2luZyBvcHRpb25zLCBkaXNhYmxlZCBpZiBub25leGlzdGVudCBvciBsdWFcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpICYmIG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpICE9PSAnU2NyaWJ1bnRvJykge1xuXHRcdFx0XHRpZiAoZm9ybS5jYXRlZ29yeS52YWx1ZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0XHRmb3JtLnRhZ3R5cGUudmFsdWUgPSAnbm9uZSc7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9ybS50YWd0eXBlLnZhbHVlID0gaXRlbS50ZW1wbGF0ZSA/PyBmb3JtLmNhdGVnb3J5LnZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLnRhZ3R5cGUoe1xuXHRcdFx0XHRcdHRhcmdldDogZm9ybS50YWd0eXBlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKC90ZW1wbGF0ZS8udGVzdChmb3JtLmNhdGVnb3J5LnZhbHVlKSkge1xuXHRcdFx0XHRcdGZvcm0ubm9pbmNsdWRlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgIT09IDEwKSB7XG5cdFx0XHRcdFx0Zm9ybS5ub2luY2x1ZGUuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChmb3JtLmNhdGVnb3J5LnZhbHVlID09PSAndW5wcm90ZWN0Jykge1xuXHRcdFx0Ly8gUlBQIHJlcXVlc3Rcblx0XHRcdGZvcm0uZXhwaXJ5LnZhbHVlID0gJyc7XG5cdFx0XHRmb3JtLmV4cGlyeS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcm0uZXhwaXJ5LnZhbHVlID0gJyc7XG5cdFx0XHRmb3JtLmV4cGlyeS5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBmb3JtID0gZS50YXJnZXQ7XG5cdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdGxldCB0YWdwYXJhbXM7XG5cdFx0aWYgKFxuXHRcdFx0aW5wdXQuYWN0aW9udHlwZSA9PT0gJ3RhZycgfHxcblx0XHRcdChpbnB1dC5hY3Rpb250eXBlID09PSAncHJvdGVjdCcgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSAhPT0gJ1NjcmlidW50bycpXG5cdFx0KSB7XG5cdFx0XHR0YWdwYXJhbXMgPSB7XG5cdFx0XHRcdHRhZzogaW5wdXQudGFndHlwZSxcblx0XHRcdFx0cmVhc29uOlxuXHRcdFx0XHRcdChpbnB1dC50YWd0eXBlID09PSAncHAtcHJvdGVjdGVkJyB8fFxuXHRcdFx0XHRcdFx0aW5wdXQudGFndHlwZSA9PT0gJ3BwLXNlbWktcHJvdGVjdGVkJyB8fFxuXHRcdFx0XHRcdFx0aW5wdXQudGFndHlwZSA9PT0gJ3BwLW1vdmUnKSAmJlxuXHRcdFx0XHRcdGlucHV0LnByb3RlY3RSZWFzb25cblx0XHRcdFx0XHRcdD8gaW5wdXQucHJvdGVjdFJlYXNvblxuXHRcdFx0XHRcdFx0OiBudWxsLFxuXHRcdFx0XHRzaG93ZXhwaXJ5OiBpbnB1dC5hY3Rpb250eXBlID09PSAncHJvdGVjdCcgPyBpbnB1dC5zaG93ZXhwaXJ5IDogbnVsbCxcblx0XHRcdFx0c21hbGw6IGlucHV0LnNtYWxsLFxuXHRcdFx0XHRub2luY2x1ZGU6IGlucHV0Lm5vaW5jbHVkZSxcblx0XHRcdH07XG5cdFx0XHRpZiAoaW5wdXQuYWN0aW9udHlwZSA9PT0gJ3Byb3RlY3QnKSB7XG5cdFx0XHRcdGlmIChpbnB1dC5lZGl0bW9kaWZ5KSB7XG5cdFx0XHRcdFx0dGFncGFyYW1zLmV4cGlyeSA9IGlucHV0LmVkaXRleHBpcnk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaW5wdXQubW92ZW1vZGlmeSkge1xuXHRcdFx0XHRcdHRhZ3BhcmFtcy5leHBpcnkgPSBpbnB1dC5tb3ZlZXhwaXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IGNsb3NlcGFyYW1zID0ge307XG5cdFx0aWYgKGlucHV0LmNsb3NlKSB7XG5cdFx0XHRpZiAoaW5wdXQuY2F0ZWdvcnkgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAndW5wcm90ZWN0Jztcblx0XHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0XHRpZiAoaW5wdXQuZWRpdG1vZGlmeSkge1xuXHRcdFx0XHRcdHN3aXRjaCAoaW5wdXQuZWRpdGxldmVsKSB7XG5cdFx0XHRcdFx0XHRjYXNlICdvZmZpY2lhbHByb3RlY3RlZCc6XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAnb2ZmaWNpYWxwcm90ZWN0ZWQnO1xuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5lZGl0ZXhwaXJ5O1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3JldmlzaW9ucHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICdyZXZpc2lvbnByb3RlY3RlZCc7XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0LmVkaXRleHBpcnk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnc3lzb3AnOlxuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ2Z1bGwnO1xuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5lZGl0ZXhwaXJ5O1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3RlbXBsYXRlZWRpdG9yJzpcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICd0ZW1wJztcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMuZXhwaXJ5ID0gaW5wdXQuZWRpdGV4cGlyeTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdhdXRvY29uZmlybWVkJzpcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICdzZW1pJztcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMuZXhwaXJ5ID0gaW5wdXQuZWRpdGV4cGlyeTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHQvLyBObyBkZWZhdWx0XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdGlucHV0Lm1vdmVtb2RpZnkgJiZcblx0XHRcdFx0XHRbJ29mZmljaWFscHJvdGVjdGVkJywgJ3JldmlzaW9ucHJvdGVjdGVkJywgJ3N5c29wJywgJ3RlbXBsYXRlZWRpdG9yJ10uaW5jbHVkZXMoaW5wdXQubW92ZWxldmVsKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ21vdmUnO1xuXHRcdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0Lm1vdmVleHBpcnk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoaW5wdXQuY3JlYXRlbGV2ZWwgIT09ICdhbGwnKSB7XG5cdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAnc2FsdCc7XG5cdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0LmNyZWF0ZWV4cGlyeTtcblx0XHRcdH1cblx0XHR9XG5cdFx0c3dpdGNoIChpbnB1dC5hY3Rpb250eXBlKSB7XG5cdFx0XHRjYXNlICdwcm90ZWN0Jzoge1xuXHRcdFx0XHQvLyBwcm90ZWN0IHRoZSBwYWdlXG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+S/neaKpOWujOaIkCcsICfkv53orbflrozmiJAnKTtcblx0XHRcdFx0bGV0IHN0YXR1c0luaXRlZCA9IGZhbHNlO1xuXHRcdFx0XHRsZXQgdGhpc3BhZ2U7XG5cdFx0XHRcdGNvbnN0IGFsbERvbmUgPSAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXNwYWdlKSB7XG5cdFx0XHRcdFx0XHR0aGlzcGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0YWdwYXJhbXMpIHtcblx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFja3MudGFnZ2luZ1BhZ2VJbml0aWFsKHRhZ3BhcmFtcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChjbG9zZXBhcmFtcyAmJiBjbG9zZXBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBycHBQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0J1FpdXdlbl90YWxrOumhtemdouS/neaKpOivt+axgicsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5YWz6Zet6K+35rGCJywgJ+mXnOmWieiri+axgicpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cnBwUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0XHRcdHJwcFBhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKGNsb3NlcGFyYW1zKTtcblx0XHRcdFx0XHRcdHJwcFBhZ2UubG9hZChUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLmNsb3NlUmVxdWVzdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBwcm90ZWN0SXQgPSAobmV4dCkgPT4ge1xuXHRcdFx0XHRcdHRoaXNwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5oqk6aG16Z2iJywgJ+S/neitt+mggemdoicpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0XHRcdFx0aWYgKGlucHV0LmVkaXRtb2RpZnkpIHtcblx0XHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0RWRpdFByb3RlY3Rpb24oaW5wdXQuZWRpdGxldmVsLCBpbnB1dC5lZGl0ZXhwaXJ5KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChpbnB1dC5tb3ZlbW9kaWZ5KSB7XG5cdFx0XHRcdFx0XHRcdC8vIEVuc3VyZSBhIGxldmVsIGhhcyBhY3R1YWxseSBiZWVuIGNob3NlblxuXHRcdFx0XHRcdFx0XHRpZiAoaW5wdXQubW92ZWxldmVsKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0TW92ZVByb3RlY3Rpb24oaW5wdXQubW92ZWxldmVsLCBpbnB1dC5tb3ZlZXhwaXJ5KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOmcgOimgemAieaLqeS/neaKpOWxgue6p++8gScsICfmgqjpnIDopoHpgbjmk4fkv53orbflsaTntJrvvIEnKSwge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXByb3RlY3QnLFxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hQcm90ZWN0ZWRQYWdlcycpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0Q3JlYXRlUHJvdGVjdGlvbihpbnB1dC5jcmVhdGVsZXZlbCwgaW5wdXQuY3JlYXRlZXhwaXJ5KTtcblx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldFdhdGNobGlzdChmYWxzZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChpbnB1dC5wcm90ZWN0UmVhc29uKSB7XG5cdFx0XHRcdFx0XHR0aGlzcGFnZS5zZXRFZGl0U3VtbWFyeShpbnB1dC5wcm90ZWN0UmVhc29uKTtcblx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oKo5b+F6aG76L6T5YWl5L+d5oqk55CG55Sx77yM6L+Z5bCG6KKr6K6w5b2V5Zyo5L+d5oqk5pel5b+X5Lit44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo5b+F6aCI6Ly45YWl5L+d6K2355CG55Sx77yM6YCZ5bCH6KKr6KiY6YyE5Zyo5L+d6K235pel6KqM5Lit44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVwcm90ZWN0Jyxcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFzdGF0dXNJbml0ZWQpIHtcblx0XHRcdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0XHRcdHN0YXR1c0luaXRlZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXNwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5wcm90ZWN0KG5leHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRpZiAoaW5wdXQuZWRpdG1vZGlmeSB8fCBpbnB1dC5tb3ZlbW9kaWZ5IHx8ICFtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpKSB7XG5cdFx0XHRcdFx0cHJvdGVjdEl0KGFsbERvbmUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6K+35ZGK6K+JVHdpbmtsZeimgeWBmuS7gOS5iO+8gVxcbuiLpeaCqOWPquaYr+aDs+agh+iusOivpemhte+8jOivt+mAieaLqeS4iumdoueahOKAnOeUqOS/neaKpOaooeadv+agh+iusOatpOmhteKAnemAiemhueOAgicsXG5cdFx0XHRcdFx0XHRcdCfoq4vlkYroqLRUd2lua2xl6KaB5YGa5LuA6bq877yBXFxu6Iul5oKo5Y+q5piv5oOz5qiZ6KiY6Kmy6aCB77yM6KuL6YG45pOH5LiK6Z2i55qE44CM55So5L+d6K235qih5p2/5qiZ6KiY5q2k6aCB44CN6YG46aCF44CCJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlcHJvdGVjdCcsXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgJ3RhZyc6XG5cdFx0XHRcdC8vIGFwcGx5IGEgcHJvdGVjdGlvbiB0ZW1wbGF0ZVxuXHRcdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLmZvbGxvd1JlZGlyZWN0ID0gZmFsc2U7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5qCH6K6w5a6M5oiQJywgJ+aomeiomOWujOaIkCcpO1xuXHRcdFx0XHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLnRhZ2dpbmdQYWdlSW5pdGlhbCh0YWdwYXJhbXMpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlcXVlc3QnOiB7XG5cdFx0XHRcdC8vIGZpbGUgcmVxdWVzdCBhdCBSRlBQXG5cdFx0XHRcdGxldCB0eXBlbmFtZTtcblx0XHRcdFx0bGV0IHR5cGVyZWFzb247XG5cdFx0XHRcdHN3aXRjaCAoaW5wdXQuY2F0ZWdvcnkpIHtcblx0XHRcdFx0XHRjYXNlICdwcC1kaXNwdXRlJzpcblx0XHRcdFx0XHRjYXNlICdwcC1wcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdFx0dHlwZW5hbWUgPSB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpCcsICflhajkv53orbcnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXRlbXBsYXRlJzpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCfmqKHmnb/kv53miqQnLCAn5qih5p2/5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC12YW5kYWxpc20nOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktZGlzcnVwdGl2ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS11bnNvdXJjZWQnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXVzZXJ0YWxrJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXRlbXBsYXRlJzogLy8gcmVtb3ZlZCBmb3Igbm93XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS1zb2NrJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLWJscCc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS1wcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdFx0dHlwZW5hbWUgPSB3aW5kb3cud2dVTFMoJ+WNiuS/neaKpCcsICfljYrkv53orbcnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUtZGlzcHV0ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtbW92ZS1pbmRlZic6XG5cdFx0XHRcdFx0Y2FzZSAncHAtbW92ZS12YW5kYWxpc20nOlxuXHRcdFx0XHRcdFx0dHlwZW5hbWUgPSB3aW5kb3cud2dVTFMoJ+enu+WKqOS/neaKpCcsICfnp7vli5Xkv53orbcnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLW9mZmVuc2l2ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLWJscCc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXNhbHQnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS11c2VycGFnZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXJlcGVhdCc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0XHR0eXBlbmFtZSA9IHdpbmRvdy53Z1VMUygn55m957q45L+d5oqkJywgJ+eZvee0meS/neittycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0LyogY2FzZSAndW5wcm90ZWN0JzogKi9cblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCfop6PpmaTkv53miqQnLCAn6Kej6Zmk5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHRcdFx0Y2FzZSAncHAtZGlzcHV0ZSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfkuonorq7jgIHnvJbovpHmiJgnLCAn54it6K2w44CB57eo6Lyv5oiwJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC12YW5kYWxpc20nOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRjYXNlICdwcC1jcmVhdGUtdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+aMgee7reegtOWdjycsICfmjIHnuoznoLTlo54nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXRlbXBsYXRlJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXRlbXBsYXRlJzpcblx0XHRcdFx0XHRcdC8vIHJlbW92ZWQgZm9yIG5vd1xuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn6auY6aOO6Zmp5qih5p2/JywgJ+mrmOmiqOmaquaooeadvycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXVzZXJwYWdlJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+iiq+awuOS5heWwgeemgeeahOeUqOaIt+mhtScsICfooqvmsLjkuYXlsIHpjpbnmoTkvb/nlKjogIXpoIHpnaInKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktdXNlcnRhbGsnOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn5bey5bCB56aB55So5oi355qE6K6o6K666aG1JywgJ+W3suWwgemOluS9v+eUqOiAheeahOiojuirlumggScpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS1zb2NrJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+WCgOWEoeegtOWdjycsICflgoDlhKHnoLTlo54nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktYmxwJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+i/neWPjeeUn+iAheS8oOiusOaWuemSiCcsICfpgZXlj43nlJ/ogIXlgrPoqJjmlrnph50nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUtZGlzcHV0ZSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfkuonorq7jgIHnp7vliqjmiJgnLCAn54it6K2w44CB56e75YuV5oiwJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfnp7vliqjnoLTlnY8nLCAn56e75YuV56C05aOeJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlLWluZGVmJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+mrmOmjjumZqemhtemdoicsICfpq5jpoqjpmqrpoIHpnaInKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1yZXBlYXQnOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn5aSa5qyh6YeN5aSN5Yib5bu6JywgJ+WkmuasoemHjeikh+W7uueriycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSAnJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCByZWFzb24gPSB0eXBlcmVhc29uO1xuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uICE9PSAnJykge1xuXHRcdFx0XHRcdGlmICh0eXBlcmVhc29uICE9PSAnJykge1xuXHRcdFx0XHRcdFx0cmVhc29uICs9ICfvvJonO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZWFzb24gKz0gaW5wdXQucmVhc29uO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChyZWFzb24gIT09ICcnKSB7XG5cdFx0XHRcdFx0cmVhc29uID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKHJlYXNvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcnBwcGFyYW1zID0ge1xuXHRcdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0XHR0eXBlbmFtZSxcblx0XHRcdFx0XHRjYXRlZ29yeTogaW5wdXQuY2F0ZWdvcnksXG5cdFx0XHRcdFx0ZXhwaXJ5OiBpbnB1dC5leHBpcnksXG5cdFx0XHRcdH07XG5cdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFx0XHRjb25zdCBycHBOYW1lID0gJ1FpdXdlbl90YWxrOumhtemdouS/neaKpOivt+axgic7XG5cdFx0XHRcdC8vIFVwZGF0aW5nIGRhdGEgZm9yIHRoZSBhY3Rpb24gY29tcGxldGVkIGV2ZW50XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gcnBwTmFtZTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmj5DlkI3lrozmiJDvvIzph43lrprlkJHliLDorqjorrrpobUnLFxuXHRcdFx0XHRcdCfmj5DlkI3lrozmiJDvvIzph43mlrDlsI7lkJHliLDoqI7oq5bpoIEnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IHJwcFBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHJwcE5hbWUsIHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2iJywgJ+iri+axguS/neitt+mggemdoicpKTtcblx0XHRcdFx0cnBwUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0cnBwUGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocnBwcGFyYW1zKTtcblx0XHRcdFx0cnBwUGFnZS5sb2FkKFR3aW5rbGUucHJvdGVjdC5jYWxsYmFja3MuZmlsZVJlcXVlc3QpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KCd0d2lua2xlcHJvdGVjdDog5pyq55+l5pON5L2c57G75Z6LJywge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlcHJvdGVjdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFja3MgPSB7XG5cdFx0dGFnZ2luZ1BhZ2VJbml0aWFsOiAodGFncGFyYW1zKSA9PiB7XG5cdFx0XHRpZiAodGFncGFyYW1zLnRhZyA9PT0gJ25vb3AnKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bqU55So5L+d5oqk5qih5p2/JywgJ+aHieeUqOS/neitt+aooeadvycpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5rKh5LuA5LmI6KaB5YGa55qEJywgJ+aykuS7gOm6vOimgeWBmueahCcpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhZ2VOYW1lID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0Y29uc3QgcHJvdGVjdGVkUGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UocGFnZU5hbWUsIHdpbmRvdy53Z1VMUygn5qCH6K6w6aG16Z2iJywgJ+aomeiomOmggemdoicpKTtcblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHRhZ3BhcmFtcyk7XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLmxvYWQoVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcy50YWdnaW5nUGFnZSk7XG5cdFx0fSxcblx0XHRnZXRUYWdnZWRQYWdlOiAocGFyYW1zLCB0ZXh0KSA9PiB7XG5cdFx0XHRsZXQgdGFnO1xuXHRcdFx0bGV0IHN1bW1hcnk7XG5cdFx0XHRjb25zdCBvbGR0YWdfcmUgPVxuXHRcdFx0XHQvKD86PG5vaW5jbHVkZT4pP1sgXFx0XSpcXHtcXHtcXHMqKHBwLVtee31dKj98cHJvdGVjdGVkfCg/OnR8dnxzfHAtfHVzZXJ0YWxrLXZ8dXNlcnRhbGstc3xzYnxtb3ZlKXByb3RlY3RlZCg/OjIpP3xwcm90ZWN0ZWQgdGVtcGxhdGV8cHJpdmFjeSBwcm90ZWN0aW9uKVxccyo/XFx9XFx9XFxzKig/OjxcXC9ub2luY2x1ZGU+KT9cXHMqL2dpO1xuXHRcdFx0Y29uc3QgcmVfcmVzdWx0ID0gb2xkdGFnX3JlLmV4ZWModGV4dCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHJlX3Jlc3VsdCAmJlxuXHRcdFx0XHQocGFyYW1zLnRhZyA9PT0gJ25vbmUnIHx8XG5cdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5Yiwe3snLCAn5Zyo6aCB6Z2i5LiK5om+5Yiwe3snKSArXG5cdFx0XHRcdFx0XHRcdHJlX3Jlc3VsdFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX1cXG7ljZXlh7vnoa7lrprku6Xnp7vpmaTvvIzmiJbljZXlh7vlj5bmtojku6Xlj5bmtojmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCd9fVxcbum7nuaTiueiuuWumuS7peenu+mZpO+8jOaIlum7nuaTiuWPlua2iOS7peWPlua2iOaTjeS9nOOAgidcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCkpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShvbGR0YWdfcmUsICcnKTtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMudGFnID09PSAnbm9uZScpIHtcblx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn56e76Zmk5L+d5oqk5qih5p2/JywgJ+enu+mZpOS/neitt+aooeadvycpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0KHt0YWd9ID0gcGFyYW1zKTtcblx0XHRcdFx0aWYgKHBhcmFtcy5yZWFzb24pIHtcblx0XHRcdFx0XHR0YWcgKz0gYHxyZWFzb249JHtwYXJhbXMucmVhc29ufWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHBhcmFtcy5zaG93ZXhwaXJ5ICYmIHBhcmFtcy5leHBpcnkgJiYgIU1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpKSB7XG5cdFx0XHRcdFx0dGFnICs9ICd8ZXhwaXJ5PXt7Jy5jb25jYXQoJ3N1YnN0OicsIGAjdGltZTpjfCR7cGFyYW1zLmV4cGlyeX19fWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwYXJhbXMuc21hbGwpIHtcblx0XHRcdFx0XHR0YWcgKz0gJ3xzbWFsbD15ZXMnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgvXlxccyojKD86cmVkaXJlY3R86YeN5a6a5ZCRfOmHjeaWsOWwjuWQkSkvaS50ZXN0KHRleHQpKSB7XG5cdFx0XHRcdFx0Ly8gcmVkaXJlY3QgcGFnZVxuXHRcdFx0XHRcdC8vIE9ubHkgdGFnIGlmIG5vIHt7cmNhdCBzaGVsbH19IGlzIGZvdW5kXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0dGV4dC5tYXRjaChcblx0XHRcdFx0XHRcdFx0L3t7KD86UmVkaXJlY3RbIF9dY2F0ZWdvcnkgc2hlbGx8UmNhdFsgX11zaGVsbHxUaGlzWyBfXWlzIGEgcmVkaXJlY3R85aSa56eN57G75Z6L6YeN5a6a5ZCRfOWkmueorumhnuWei+mHjeWumuWQkXzlpJrnqK7poZ7lnovph43mlrDlsI7lkJF85aSa56eN57G75Z6L6YeN5paw5a+85ZCRfFIwfOWFtuS7lumHjeWumuWQkXxSQ1N8UmVkaXJlY3RbIF9dc2hlbGwpL2lcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdFx0XHQn5bey5a2Y5ZyoUmVkaXJlY3QgY2F0ZWdvcnkgc2hlbGwnLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeS7gOS5iOWPr+WBmueahCcsICfmspLku4Dpurzlj6/lgZrnmoQnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdC8jKD86cmVkaXJlY3R86YeN5a6a5ZCRfOmHjeaWsOWwjuWQkSkgPyhcXFtcXFsuKj9cXF1cXF0pKC4qKS9pLFxuXHRcdFx0XHRcdFx0YCNSRURJUkVDVCAkMSQyXFxuXFxue3ske3RhZ319fWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9pbmNsdWRlKSB7XG5cdFx0XHRcdFx0XHR0YWcgPSBgPG5vaW5jbHVkZT57eyR7dGFnfX19PC9ub2luY2x1ZGU+YDtcblx0XHRcdFx0XHRcdC8vIOWPquacieihqOagvOmcgOimgeWNleeLrOWKoOWbnui9pu+8jOWFtuS7luaDheWGteWKoOWbnui9puS8muegtOWdj+aooeadv+OAglxuXHRcdFx0XHRcdFx0aWYgKHRleHQuaW5kZXhPZigne3wnKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHR0YWcgKz0gJ1xcbic7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRhZyA9IGB7eyR7dGFnfX19XFxuYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyh0YWcsIFR3aW5rbGUuaGF0bm90ZVJlZ2V4KS5nZXRUZXh0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3VtbWFyeSA9IGDliqDlhaV7eyR7cGFyYW1zLnRhZ319fWA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0ZXh0LFxuXHRcdFx0XHRzdW1tYXJ5LFxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdHRhZ2dpbmdQYWdlOiAocHJvdGVjdGVkUGFnZSkgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcHJvdGVjdGVkUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IHRleHQgPSBwcm90ZWN0ZWRQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBuZXdWZXJzaW9uID0gVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcy5nZXRUYWdnZWRQYWdlKHBhcmFtcywgdGV4dCk7XG5cdFx0XHRpZiAobmV3VmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHByb3RlY3RlZFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnNldEVkaXRTdW1tYXJ5KG5ld1ZlcnNpb24uc3VtbWFyeSk7XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hQUFRhZ2dlZFBhZ2VzJykpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRQYWdlVGV4dChuZXdWZXJzaW9uLnRleHQpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnN1cHByZXNzUHJvdGVjdFdhcm5pbmcoKTsgLy8gbm8gbmVlZCB0byBsZXQgYWRtaW5zIGtub3cgdGhleSBhcmUgZWRpdGluZyB0aHJvdWdoIHByb3RlY3Rpb25cblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2F2ZSgpO1xuXHRcdH0sXG5cdFx0ZmlsZVJlcXVlc3Q6IChycHBQYWdlKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBycHBQYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0bGV0IHRleHQgPSBycHBQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBzdGF0dXNFbGVtZW50ID0gcnBwUGFnZS5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRjb25zdCBycHBSZSA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdGA9PT1cXFxccyooXFxcXFtcXFxcWyk/XFxcXHMqOj9cXFxccyoke01vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAoTW9yZWJpdHMucGFnZU5hbWVOb3JtKX1cXFxccyooXFxcXF1cXFxcXSk/XFxcXHMqPT09YCxcblx0XHRcdFx0J20nXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgdGFnID0gcnBwUmUuZXhlYyh0ZXh0KTtcblx0XHRcdGNvbnN0IHJwcExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRycHBMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKHJwcFBhZ2UuZ2V0UGFnZU5hbWUoKSkpO1xuXHRcdFx0cnBwTGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShycHBQYWdlLmdldFBhZ2VOYW1lKCkpKTtcblx0XHRcdGlmICh0YWcpIHtcblx0XHRcdFx0c3RhdHVzRWxlbWVudC5lcnJvcihbXG5cdFx0XHRcdFx0cnBwTGluayxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suacieWvueatpOmhtemdoueahOS/neaKpOaPkOWQje+8jOWPlua2iOaTjeS9nOOAgicsICflt7LmnInlsI3mraTpoIHpnaLnmoTkv53orbfmj5DlkI3vvIzlj5bmtojmk43kvZzjgIInKSxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCBuZXd0YWcgPSBgPT09IFtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dID09PVxcbmA7XG5cdFx0XHRpZiAobmV3IFJlZ0V4cChgXiR7bXcudXRpbC5lc2NhcGVSZWdFeHAobmV3dGFnKS5yZXBsYWNlKC9cXHMrL2csIFN0cmluZy5yYXdgXFxzKmApfWAsICdtJykudGVzdCh0ZXh0KSkge1xuXHRcdFx0XHRzdGF0dXNFbGVtZW50LmVycm9yKFtcblx0XHRcdFx0XHRycHBMaW5rLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bey5pyJ5a+55q2k6aG16Z2i55qE5L+d5oqk5o+Q5ZCN77yM5Y+W5raI5pON5L2c44CCJywgJ+W3suacieWwjeatpOmggemdoueahOS/neitt+aPkOWQje+8jOWPlua2iOaTjeS9nOOAgicpLFxuXHRcdFx0XHRdKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHdvcmRzO1xuXHRcdFx0c3dpdGNoIChwYXJhbXMuZXhwaXJ5KSB7XG5cdFx0XHRcdGNhc2UgJ3RlbXBvcmFyeSc6XG5cdFx0XHRcdFx0d29yZHMgPSB3aW5kb3cud2dVTFMoJ+S4tOaXticsICfoh6jmmYInKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnaW5maW5pdHknOlxuXHRcdFx0XHRcdHdvcmRzID0gJ+awuOS5hSc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0d29yZHMgPSAnJztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHdvcmRzICs9IHBhcmFtcy50eXBlbmFtZTtcblx0XHRcdG5ld3RhZyArPSBgKiA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogOTAlXCI+JHt3aW5kb3cud2dVTFMoJ+W9k+WJjeS/neaKpOeKtuaAgScsICfnm67liY3kv53orbfni4DmhYsnKX3vvJp7e3Byb3RlY3Rpb24gc3RhdHVzfCR7XG5cdFx0XHRcdC9bPV0vLnRlc3QoTW9yZWJpdHMucGFnZU5hbWVOb3JtKSA/ICcxPScgOiAnJ1xuXHRcdFx0fSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19PC9zcGFuPlxcbmA7XG5cdFx0XHRuZXd0YWcgKz0gYCR7XG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6K+35rGCJywgJ+iri+axgicpICtcblx0XHRcdFx0TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKHdvcmRzKSArXG5cdFx0XHRcdChwYXJhbXMucmVhc29uID09PSAnJyA/ICfjgIInIDogYO+8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQocGFyYW1zLnJlYXNvbil9YClcblx0XHRcdH0tLX5+YC5jb25jYXQoJ35+Jyk7XG5cdFx0XHRsZXQgcmVnO1xuXHRcdFx0aWYgKHBhcmFtcy5jYXRlZ29yeSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0cmVnID0gLyg9PVxccyror7fmsYLop6PpmaTkv53miqRcXHMqPT0pLztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlZyA9IC8oe3tcXHMqXFwvaGVhZGVyXFxzKn19KS87XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBvcmlnaW5hbFRleHRMZW5ndGggPSB0ZXh0Lmxlbmd0aDtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UocmVnLCBgJDFcXG4ke25ld3RhZ31cXG5gKTtcblx0XHRcdGlmICh0ZXh0Lmxlbmd0aCA9PT0gb3JpZ2luYWxUZXh0TGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmtub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0XHRsaW5rbm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybCgnSGVscDpUd2lua2xlL+S/ruWkjVJGUFAnKSk7XG5cdFx0XHRcdGxpbmtub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn5aaC5L2V5L+u5aSNUkZQUCcsICflpoLkvZXkv67lvqlSRlBQJykpKTtcblx0XHRcdFx0c3RhdHVzRWxlbWVudC5lcnJvcihbXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aXoOazleWcqFFXOlJGUFDkuIrmib7liLDnm7jlhbPlrprkvY3ngrnmoIforrDvvIzopoHkv67lpI3mraTpl67popjvvIzor7flj4Lop4EnLFxuXHRcdFx0XHRcdFx0J+eEoeazleWcqFFXOlJGUFDkuIrmib7liLDnm7jpl5zlrprkvY3pu57mqJnoqJjvvIzopoHkv67lvqnmraTllY/poYzvvIzoq4vlj4PoposnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRsaW5rbm9kZSxcblx0XHRcdFx0XHQn44CCJyxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHN0YXR1c0VsZW1lbnQuc3RhdHVzKCfliqDlhaXmlrDmj5DlkI3igKYnKTtcblx0XHRcdHJwcFBhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdGAvKiAke01vcmViaXRzLnBhZ2VOYW1lTm9ybX0gKi8gJHt3aW5kb3cud2dVTFMoJ+ivt+axguWvuScsICfoq4vmsYLlsI0nKX1bWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dJHtcblx0XHRcdFx0XHRwYXJhbXMudHlwZW5hbWVcblx0XHRcdFx0fWBcblx0XHRcdCk7XG5cdFx0XHRycHBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHJwcFBhZ2Uuc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRycHBQYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHJwcFBhZ2Uuc2F2ZSgoKSA9PiB7XG5cdFx0XHRcdC8vIFdhdGNoIHRoZSBwYWdlIGJlaW5nIHJlcXVlc3RlZFxuXHRcdFx0XHRjb25zdCB3YXRjaFByZWYgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoUmVxdWVzdGVkUGFnZXMnKTtcblx0XHRcdFx0Ly8gYWN0aW9uPXdhdGNoIGhhcyBubyB3YXkgdG8gcmVseSBvbiB1c2VyIHByZWZlcmVuY2VzIChUMjYyOTEyKSwgc28gd2UgZG8gaXQgbWFudWFsbHkuXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGRlZmF1bHQgcHJlZiBhcHBlYXJzIHRvIHJlbGlhYmx5IHJldHVybiAnMScgKHN0cmluZyksXG5cdFx0XHRcdC8vIGJ1dCB0aGF0J3Mgbm90IGNvbnNpc3RlbnQgYW1vbmcgcHJlZnMgc28gbWlnaHQgYXMgd2VsbCBiZSBcImNvcnJlY3RcIlxuXHRcdFx0XHRjb25zdCB3YXRjaCA9XG5cdFx0XHRcdFx0d2F0Y2hQcmVmICE9PSAnbm8nICYmXG5cdFx0XHRcdFx0KHdhdGNoUHJlZiAhPT0gJ2RlZmF1bHQnIHx8ICEhTnVtYmVyLnBhcnNlSW50KG13LnVzZXIub3B0aW9ucy5nZXQoJ3dhdGNoZGVmYXVsdCcpLCAxMCkpO1xuXHRcdFx0XHRpZiAod2F0Y2gpIHtcblx0XHRcdFx0XHRjb25zdCB3YXRjaF9xdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3dhdGNoJyxcblx0XHRcdFx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdFx0dG9rZW46IG13LnVzZXIudG9rZW5zLmdldCgnd2F0Y2hUb2tlbicpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0Ly8gT25seSBhZGQgdGhlIGV4cGlyeSBpZiBwYWdlIGlzIHVud2F0Y2hlZCBvciBhbHJlYWR5IHRlbXBvcmFyaWx5IHdhdGNoZWRcblx0XHRcdFx0XHRpZiAoVHdpbmtsZS5wcm90ZWN0LndhdGNoZWQgIT09IHRydWUgJiYgd2F0Y2hQcmVmICE9PSAnZGVmYXVsdCcgJiYgd2F0Y2hQcmVmICE9PSAneWVzJykge1xuXHRcdFx0XHRcdFx0d2F0Y2hfcXVlcnkuZXhwaXJ5ID0gd2F0Y2hQcmVmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+Wwhuivt+axguS/neaKpOeahOmhtemdouWKoOWFpeWIsOebkeinhuWIl+ihqCcsICflsIfoq4vmsYLkv53orbfnmoTpoIHpnaLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHRcdHdhdGNoX3F1ZXJ5XG5cdFx0XHRcdFx0KS5wb3N0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Y2xvc2VSZXF1ZXN0OiAocnBwUGFnZSkgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcnBwUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0ZXh0ID0gcnBwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3Qgc3RhdHVzRWxlbWVudCA9IHJwcFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0Y29uc3Qgc2VjdGlvbnMgPSB0ZXh0LnNwbGl0KC8oPz1cXG49PVxccyror7fmsYLop6PpmaTkv53miqRcXHMqPT0pLyk7XG5cdFx0XHRpZiAoc2VjdGlvbnMubGVuZ3RoICE9PSAyKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmtub2RlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGlua25vZGUyLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKCdIZWxwOlR3aW5rbGUv5L+u5aSNUkZQUCcpKTtcblx0XHRcdFx0bGlua25vZGUyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCflpoLkvZXkv67lpI1SRlBQJykpO1xuXHRcdFx0XHRzdGF0dXNFbGVtZW50LmVycm9yKFtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5peg5rOV5ZyoUVc6UkZQUOS4iuaJvuWIsOebuOWFs+WumuS9jeeCueagh+iusO+8jOimgeS/ruWkjeatpOmXrumimO+8jOivt+WPguingScsXG5cdFx0XHRcdFx0XHQn54Sh5rOV5ZyoUVc6UkZQUOS4iuaJvuWIsOebuOmXnOWumuS9jem7nuaomeiomO+8jOimgeS/ruW+qeatpOWVj+mhjO+8jOiri+WPg+imiydcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGxpbmtub2RlMixcblx0XHRcdFx0XHQn44CCJyxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCBzZWN0aW9uVGV4dDtcblx0XHRcdGxldCBleHBpcnlUZXh0ID0gJyc7XG5cdFx0XHRpZiAocGFyYW1zLnR5cGUgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFssIHNlY3Rpb25UZXh0XSA9IHNlY3Rpb25zO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0W3NlY3Rpb25UZXh0XSA9IHNlY3Rpb25zO1xuXHRcdFx0XHRleHBpcnlUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmZvcm1hdFRpbWUocGFyYW1zLmV4cGlyeSk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZXF1ZXN0TGlzdCA9IHNlY3Rpb25UZXh0LnNwbGl0KC8oPz1cXG49PT0uKz09PVxccypcXG4pLyk7XG5cdFx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRcdGNvbnN0IHJwcFJlID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0YD09PVxcXFxzKihcXFxcW1xcXFxbKT9cXFxccyo6P1xcXFxzKiR7TW9yZWJpdHMucGFnZU5hbWVSZWdleChNb3JlYml0cy5wYWdlTmFtZU5vcm0pfVxcXFxzKihcXFxcXVxcXFxdKT9cXFxccyo9PT1gLFxuXHRcdFx0XHQnbSdcblx0XHRcdCk7XG5cdFx0XHRmb3IgKGxldCByZXF1ZXN0IG9mIHJlcXVlc3RMaXN0KSB7XG5cdFx0XHRcdGlmIChycHBSZS5leGVjKHJlcXVlc3QpKSB7XG5cdFx0XHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QudHJpbUVuZCgpO1xuXHRcdFx0XHRcdGlmIChwYXJhbXMudHlwZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0XHRcdHJlcXVlc3QgKz0gJ1xcbjoge3tSRlBQfGlzdW59feOAgi0tfn4nLmNvbmNhdCgnfn5cXG4nKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVxdWVzdCArPSBgXFxuOiB7e1JGUFB8JHtwYXJhbXMudHlwZX18JHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkocGFyYW1zLmV4cGlyeSkgPyAnaW5maW5pdHknIDogZXhwaXJ5VGV4dFxuXHRcdFx0XHRcdFx0fX1944CCLS1+fmAuY29uY2F0KCd+flxcbicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghZm91bmQpIHtcblx0XHRcdFx0c3RhdHVzRWxlbWVudC53YXJuKHdpbmRvdy53Z1VMUygn5rKh5pyJ5om+5Yiw55u45YWz55qE6K+35rGCJywgJ+aykuacieaJvuWIsOebuOmXnOeahOiri+axgicpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50eXBlID09PSAndW5wcm90ZWN0Jykge1xuXHRcdFx0XHR0ZXh0ID0gc2VjdGlvbnNbMF0gKyByZXF1ZXN0TGlzdC5qb2luKCcnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHQgPSByZXF1ZXN0TGlzdC5qb2luKCcnKSArIHNlY3Rpb25zWzFdO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHN1bW1hcnkgPSAnJztcblx0XHRcdGlmIChwYXJhbXMudHlwZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0Wywgc2VjdGlvblRleHRdID0gc2VjdGlvbnM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRbc2VjdGlvblRleHRdID0gc2VjdGlvbnM7XG5cdFx0XHR9XG5cdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ3NlbWknOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+WNiuS/neaKpCcsICfljYrkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAndGVtcCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn5qih5p2/5L+d5oqkJywgJ+aooeadv+S/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdlY3AnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+W7tuS8uOehruiupOS/neaKpCcsICflu7bkvLjnorroqo3kv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZnVsbCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn5YWo5L+d5oqkJywgJ+WFqOS/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdyZXZpc2lvbnByb3RlY3RlZCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn54mI5pys5L+d5oqkJywgJ+eJiOacrOS/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdvZmZpY2lhbHByb3RlY3RlZCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn6KOB5aeU5Lya5L+d5oqkJywgJ+ijgeWnlOacg+S/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdtb3ZlJzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfnp7vliqjkv53miqQnLCAn56e75YuV5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3NhbHQnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+eZvee6uOS/neaKpCcsICfnmb3ntJnkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAndW5wcm90ZWN0Jzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfop6PpmaTkv53miqQnLCAn6Kej6Zmk5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0c3RhdHVzRWxlbWVudC53YXJuKHdpbmRvdy53Z1VMUygn5pyq55+l5L+d5oqk57G75Z6LJywgJ+acquefpeS/neitt+mhnuWIpScpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkocGFyYW1zLmV4cGlyeSkpIHtcblx0XHRcdFx0c3VtbWFyeSA9IGV4cGlyeVRleHQgKyBzdW1tYXJ5O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3VtbWFyeSArPSBleHBpcnlUZXh0O1xuXHRcdFx0fVxuXHRcdFx0cnBwUGFnZS5zZXRFZGl0U3VtbWFyeShgLyogJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19ICovICR7c3VtbWFyeX1gKTtcblx0XHRcdHJwcFBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cnBwUGFnZS5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdHJwcFBhZ2Uuc2F2ZSgpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5mb3JtYXRQcm90ZWN0aW9uRGVzY3JpcHRpb24gPSAocHJvdGVjdGlvbkxldmVscykgPT4ge1xuXHRcdGNvbnN0IHByb3RlY3Rpb25Ob2RlID0gW107XG5cdFx0aWYgKE9iamVjdC5rZXlzKHByb3RlY3Rpb25MZXZlbHMpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0W3Byb3RlY3Rpb25Ob2RlW3Byb3RlY3Rpb25Ob2RlLmxlbmd0aF1dID0gJCgnPGI+JykudGV4dCh3aW5kb3cud2dVTFMoJ+aXoOS/neaKpCcsICfnhKHkv53orbcnKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoY29uc3QgW3R5cGUsIHNldHRpbmdzXSBvZiBPYmplY3QuZW50cmllcyhwcm90ZWN0aW9uTGV2ZWxzKSkge1xuXHRcdFx0XHRsZXQgbGFiZWw7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgJ2VkaXQnOlxuXHRcdFx0XHRcdFx0bGFiZWwgPSB3aW5kb3cud2dVTFMoJ+e8lui+kScsICfnt6jovK8nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21vdmUnOlxuXHRcdFx0XHRcdFx0bGFiZWwgPSB3aW5kb3cud2dVTFMoJ+enu+WKqCcsICfnp7vli5UnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NyZWF0ZSc6XG5cdFx0XHRcdFx0XHRsYWJlbCA9IHdpbmRvdy53Z1VMUygn5Yib5bu6JywgJ+W7uueriycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndXBsb2FkJzpcblx0XHRcdFx0XHRcdGxhYmVsID0gd2luZG93LndnVUxTKCfkuIrkvKAnLCAn5LiK5YKzJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0bGFiZWwgPSB0eXBlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IGxldmVsO1xuXHRcdFx0XHRzd2l0Y2ggKHNldHRpbmdzLmxldmVsKSB7XG5cdFx0XHRcdFx0Y2FzZSAnb2ZmaWNpYWxwcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdFx0bGV2ZWwgPSB3aW5kb3cud2dVTFMoJ+S7heWFgeiuuOijgeWGs+WnlOWRmCcsICflg4XlhYHoqLHoo4Hmsbrlp5Tlk6EnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JldmlzaW9ucHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdGxldmVsID0gd2luZG93LndnVUxTKCfku4XlhYHorrjotYTmt7HnlKjmiLcnLCAn5YOF5YWB6Kix6LOH5rex55So5oi2Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvY29uZmlybWVkJzpcblx0XHRcdFx0XHRcdGxldmVsID0gd2luZG93LndnVUxTKCfku4XlhYHorrjoh6rliqjnoa7orqTnlKjmiLcnLCAn5YOF5YWB6Kix6Ieq5YuV56K66KqN5L2/55So6ICFJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICd0ZW1wbGF0ZWVkaXRvcic6XG5cdFx0XHRcdFx0XHRsZXZlbCA9IHdpbmRvdy53Z1VMUygn5LuF5qih5p2/57yW6L6R5ZGY5ZKM566h55CG5ZGYJywgJ+WDheaooeadv+e3qOi8r+WToeWSjOeuoeeQhuWToScpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3lzb3AnOlxuXHRcdFx0XHRcdFx0bGV2ZWwgPSB3aW5kb3cud2dVTFMoJ+S7heeuoeeQhuWRmCcsICflg4XnrqHnkIblk6EnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHQoe2xldmVsfSA9IHNldHRpbmdzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFtwcm90ZWN0aW9uTm9kZVtwcm90ZWN0aW9uTm9kZS5sZW5ndGhdXSA9ICQoJzxiPicpLnRleHQoYCR7bGFiZWx977yaJHtsZXZlbH1gKTtcblx0XHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHNldHRpbmdzLmV4cGlyeSkpIHtcblx0XHRcdFx0XHRwcm90ZWN0aW9uTm9kZVtwcm90ZWN0aW9uTm9kZS5sZW5ndGhdID0gd2luZG93LndnVUxTKCfvvIjml6DpmZDmnJ/vvIknLCAn77yI54Sh6ZmQ5pyf77yJJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cHJvdGVjdGlvbk5vZGVbcHJvdGVjdGlvbk5vZGUubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ++8iOi/h+acn++8micsICfvvIjpgY7mnJ/vvJonKSArIG5ldyBNb3JlYml0cy5kYXRlKHNldHRpbmdzLmV4cGlyeSkuY2FsZW5kYXIoJ3V0Yycpfe+8iWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNldHRpbmdzLmNhc2NhZGUpIHtcblx0XHRcdFx0XHRwcm90ZWN0aW9uTm9kZVtwcm90ZWN0aW9uTm9kZS5sZW5ndGhdID0gd2luZG93LndnVUxTKCfvvIjov57plIHvvIknLCAn77yI6YCj6Y6W77yJJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHByb3RlY3Rpb25Ob2RlO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLnByb3RlY3QsICdwcm90ZWN0Jyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gZnJpZW5kbHl0YWcuanMgKi9cbihmdW5jdGlvbiBmcmllbmRseXRhZygkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogZnJpZW5kbHl0YWcuanM6IFRhZyBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiVGFnXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3RpbmcgYXJ0aWNsZXMgYW5kIGRyYWZ0czsgZmlsZSBwYWdlcyB3aXRoIGEgY29ycmVzcG9uZGluZyBmaWxlXG5cdCAqIHdoaWNoIGlzIGxvY2FsIChub3Qgb24gU2hhcmUpOyBhbGwgcmVkaXJlY3RzXG5cdCAqL1xuXHRUd2lua2xlLnRhZyA9ICgpID0+IHtcblx0XHQvLyByZWRpcmVjdCB0YWdnaW5nXG5cdFx0aWYgKE1vcmViaXRzLmlzUGFnZVJlZGlyZWN0KCkpIHtcblx0XHRcdFR3aW5rbGUudGFnLm1vZGUgPSB3aW5kb3cud2dVTFMoJ+mHjeWumuWQkScsICfph43mlrDlsI7lkJEnKTtcblx0XHRcdFR3aW5rbGUudGFnLm1vZGVFbiA9ICdyZWRpcmVjdCc7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHRUd2lua2xlLnRhZy5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrAnLCAn5qiZ6KiYJyksXG5cdFx0XHRcdCdmcmllbmRseS10YWcnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOmHjeWumuWQkScsICfmqJnoqJjph43mlrDlsI7lkJEnKVxuXHRcdFx0KTtcblx0XHRcdC8vIGZpbGUgdGFnZ2luZ1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHQhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LXNoYXJlZHVwbG9hZCcpICYmXG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctaW1hZ2VwYWdlLXNlY3Rpb24tZmlsZWhpc3RvcnknKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZSA9IHdpbmRvdy53Z1VMUygn5paH5Lu2JywgJ+aqlOahiCcpO1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZUVuID0gJ2ZpbGUnO1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS50YWcuY2FsbGJhY2ssXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpLFxuXHRcdFx0XHQnZnJpZW5kbHktdGFnJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDmlofku7YnLCAn5qiZ6KiY5qqU5qGIJylcblx0XHRcdCk7XG5cdFx0XHQvLyBhcnRpY2xlL2RyYWZ0IHRhZ2dpbmdcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0KFswLCAxMThdLmluY2x1ZGVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpICYmIG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpKSB8fFxuXHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtID09PSBUd2lua2xlLmdldFByZWYoJ3NhbmRib3hQYWdlJylcblx0XHQpIHtcblx0XHRcdFR3aW5rbGUudGFnLm1vZGUgPSB3aW5kb3cud2dVTFMoJ+adoeebricsICfmop3nm64nKTtcblx0XHRcdFR3aW5rbGUudGFnLm1vZGVFbiA9ICdhcnRpY2xlJztcblx0XHRcdC8vIENhbid0IHJlbW92ZSB0YWdzIHdoZW4gbm90IHZpZXdpbmcgY3VycmVudCB2ZXJzaW9uXG5cdFx0XHRUd2lua2xlLnRhZy5jYW5SZW1vdmUgPVxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKSA9PT0gbXcuY29uZmlnLmdldCgnd2dSZXZpc2lvbklkJykgJiZcblx0XHRcdFx0Ly8gRGlzYWJsZWQgb24gbGF0ZXN0IGRpZmYgYmVjYXVzZSB0aGUgZGlmZiBzbGlkZXIgY291bGQgYmUgdXNlZCB0byBzbGlkZVxuXHRcdFx0XHQvLyBhd2F5IGZyb20gdGhlIGxhdGVzdCBkaWZmIHdpdGhvdXQgY2F1c2luZyB0aGUgc2NyaXB0IHRvIHJlbG9hZFxuXHRcdFx0XHQhbXcuY29uZmlnLmdldCgnd2dEaWZmTmV3SWQnKTtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUudGFnLmNhbGxiYWNrLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKSxcblx0XHRcdFx0J2ZyaWVuZGx5LXRhZycsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6w5p2h55uuJywgJ+aomeiomOaineebricpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS50YWcuY2hlY2tlZFRhZ3MgPSBbXTtcblx0VHdpbmtsZS50YWcuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MzAsIFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ2FydGljbGUnID8gNTAwIDogNDAwKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5qCH6K6w6K6+572uJywgJ+aomeiomOioreWumicpLCAnSDpUVy9QUkVGI3RhZycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyN0YWcnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLnRhZy5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+etm+mAieagh+iusOWIl+ihqO+8micsICfnr6npgbjmqJnoqJjliJfooajvvJonKSxcblx0XHRcdG5hbWU6ICdxdWlja2ZpbHRlcicsXG5cdFx0XHRzaXplOiAnMzAnLFxuXHRcdFx0ZXZlbnQ6IGZ1bmN0aW9uIGV2ZW50KCkge1xuXHRcdFx0XHQvLyBmbHVzaCB0aGUgRE9NIG9mIGFsbCBleGlzdGluZyB1bmRlcmxpbmUgc3BhbnNcblx0XHRcdFx0JGFsbENoZWNrYm94RGl2cy5maW5kKCcuc2VhcmNoLWhpdCcpLmVhY2goKF9pLCBlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbGFiZWxfZWxlbWVudCA9IGUucGFyZW50RWxlbWVudDtcblx0XHRcdFx0XHQvLyBUaGlzIHdvdWxkIGNvbnZlcnQgPGxhYmVsPkhlbGxvIDxzcGFuIGNsYXNzPXNlYXJjaC1oaXQ+d288L3NwYW4+cmxkPC9sYWJlbD5cblx0XHRcdFx0XHQvLyB0byA8bGFiZWw+SGVsbG8gd29ybGQ8L2xhYmVsPlxuXHRcdFx0XHRcdGxhYmVsX2VsZW1lbnQuaW5uZXJIVE1MID0gbGFiZWxfZWxlbWVudC50ZXh0Q29udGVudDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmICh0aGlzLnZhbHVlKSB7XG5cdFx0XHRcdFx0JGFsbENoZWNrYm94RGl2cy5oaWRlKCk7XG5cdFx0XHRcdFx0JGFsbEhlYWRlcnMuaGlkZSgpO1xuXHRcdFx0XHRcdGNvbnN0IHNlYXJjaFN0cmluZyA9IHRoaXMudmFsdWU7XG5cdFx0XHRcdFx0Y29uc3Qgc2VhcmNoUmVnZXggPSBuZXcgUmVnRXhwKG13LnV0aWwuZXNjYXBlUmVnRXhwKHNlYXJjaFN0cmluZyksICdpJyk7XG5cdFx0XHRcdFx0JGFsbENoZWNrYm94RGl2cy5maW5kKCdsYWJlbCcpLmVhY2goKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgbGFiZWxfdGV4dCA9IGVsZW1lbnQudGV4dENvbnRlbnQ7XG5cdFx0XHRcdFx0XHRjb25zdCBzZWFyY2hIaXQgPSBzZWFyY2hSZWdleC5leGVjKGxhYmVsX3RleHQpO1xuXHRcdFx0XHRcdFx0aWYgKHNlYXJjaEhpdCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IFt0ZXh0bm9kZV0gPSBlbGVtZW50LmNoaWxkTm9kZXM7XG5cdFx0XHRcdFx0XHRcdHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0ZXh0bm9kZSk7XG5cdFx0XHRcdFx0XHRcdHJhbmdlLnNldFN0YXJ0KHRleHRub2RlLCBzZWFyY2hIaXQuaW5kZXgpO1xuXHRcdFx0XHRcdFx0XHRyYW5nZS5zZXRFbmQodGV4dG5vZGUsIHNlYXJjaEhpdC5pbmRleCArIHNlYXJjaFN0cmluZy5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBbdW5kZXJsaW5lX3NwYW5dID0gJCgnPHNwYW4+Jylcblx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ3NlYXJjaC1oaXQnKVxuXHRcdFx0XHRcdFx0XHRcdC5jc3MoJ3RleHQtZGVjb3JhdGlvbicsICd1bmRlcmxpbmUnKTtcblx0XHRcdFx0XHRcdFx0cmFuZ2Uuc3Vycm91bmRDb250ZW50cyh1bmRlcmxpbmVfc3Bhbik7XG5cdFx0XHRcdFx0XHRcdGVsZW1lbnQucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsgLy8gc2hvd1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCRhbGxDaGVja2JveERpdnMuc2hvdygpO1xuXHRcdFx0XHRcdCRhbGxIZWFkZXJzLnNob3coKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHR9KTtcblx0XHRzd2l0Y2ggKFR3aW5rbGUudGFnLm1vZGVFbikge1xuXHRcdFx0Y2FzZSAnYXJ0aWNsZSc6XG5cdFx0XHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+adoeebrue7tOaKpOagh+iusCcsICfmop3nm67ntq3orbfmqJnoqJgnKSk7XG5cdFx0XHRcdC8vIEJ1aWxkIHNvcnRpbmcgYW5kIGxvb2t1cCBvYmplY3QgZmxhdE9iamVjdCwgd2hpY2ggaXMgYWx3YXlzXG5cdFx0XHRcdC8vIG5lZWRlZCBidXQgYWxzbyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBhbHBoYWJldGljYWwgbGlzdFxuXHRcdFx0XHQvLyBXb3VsZCBiZSBpbmZpbml0ZWx5IGJldHRlciB3aXRoIE9iamVjdC52YWx1ZXNcblx0XHRcdFx0VHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0ID0ge307XG5cdFx0XHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS50YWcuYXJ0aWNsZS50YWdMaXN0KSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBzdWJncm91cCBvZiBncm91cC52YWx1ZSkge1xuXHRcdFx0XHRcdFx0aWYgKHN1Ymdyb3VwLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBzdWJncm91cC52YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFtpdGVtLnRhZ10gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdFx0XHRcdGV4Y2x1ZGVNSTogISFpdGVtLmV4Y2x1ZGVNSSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnRhZy5hcnRpY2xlLmZsYXRPYmplY3Rbc3ViZ3JvdXAudGFnXSA9IHtcblx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc3ViZ3JvdXAuZGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0XHRcdFx0ZXhjbHVkZU1JOiAhIXN1Ymdyb3VwLmV4Y2x1ZGVNSSxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdG5hbWU6ICdzb3J0b3JkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+afpeeci+WIl+ihqO+8micsICfmqqLoppbliJfooajvvJonKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5ZyoVHdpbmtsZeWPguaVsOiuvue9ru+8iEg6VFcvUFJFRu+8ieS4reabtOaUueatpOmhueOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5ZyoVHdpbmtsZeWBj+WlveioreWumu+8iEg6VFcvUFJFRu+8ieS4reabtOaUueatpOmgheOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnRhZy51cGRhdGVTb3J0T3JkZXIsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdjYXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjInnsbvlnosnLCAn5oyJ6aGe5YilJyksXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3RhZ0FydGljbGVTb3J0T3JkZXInKSA9PT0gJ2NhdCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdhbHBoYScsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5oyJ5a2X5q+NJyxcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQ6IFR3aW5rbGUuZ2V0UHJlZigndGFnQXJ0aWNsZVNvcnRPcmRlcicpID09PSAnYWxwaGEnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFUd2lua2xlLnRhZy5jYW5SZW1vdmUpIHtcblx0XHRcdFx0XHRjb25zdCBkaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0ZGl2RWxlbWVudC5pbm5lckhUTUwgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6KaB56e76Zmk546w5pyJ57u05oqk5qCH6K6w77yM6K+35LuO5b2T5YmN5p2h55uu54mI5pys5Lit5omT5byA4oCc5qCH6K6w4oCd6I+c5Y2VJyxcblx0XHRcdFx0XHRcdCfopoHnp7vpmaTnj77mnInntq3orbfmqJnoqJjvvIzoq4vlvp7nm67liY3mop3nm67niYjmnKzkuK3miZPplovjgIzmqJnoqJjjgI3pgbjllq4nXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd1bnRhZ25vdGljZScsXG5cdFx0XHRcdFx0XHRsYWJlbDogZGl2RWxlbWVudCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0YWdXb3JrQXJlYScsXG5cdFx0XHRcdFx0Y2xhc3NOYW1lOiAnbW9yZWJpdHMtc2Nyb2xsYm94Jyxcblx0XHRcdFx0XHRzdHlsZTogJ21heC1oZWlnaHQ6IDI4ZW0nLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflpoLlj6/og73vvIzlkIjlubblhaV7e211bHRpcGxlIGlzc3Vlc319Jyxcblx0XHRcdFx0XHRcdFx0XHQn5aaC5Y+v6IO977yM5ZCI5L215YWle3ttdWx0aXBsZSBpc3N1ZXN9fSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdncm91cCcsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdncm91cCcsXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6Iul5Yqg5YWle3ttdWx0aXBsZSBpc3N1ZXN9feaUr+aMgeeahOS4ieS4quS7peS4iueahOaooeadv++8jOaJgOacieaUr+aMgeeahOaooeadv+mDveS8muiiq+WQiOW5tuWFpXt7bXVsdGlwbGUgaXNzdWVzfX3mqKHmnb/kuK3jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfoi6XliqDlhaV7e211bHRpcGxlIGlzc3Vlc3195pSv5o+055qE5LiJ5YCL5Lul5LiK55qE5qih5p2/77yM5omA5pyJ5pSv5o+055qE5qih5p2/6YO95pyD6KKr5ZCI5L215YWle3ttdWx0aXBsZSBpc3N1ZXN9feaooeadv+S4reOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdncm91cEJ5RGVmYXVsdCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfpmYTliqDkuo7nvJbovpHmkZjopoHnmoTlj6/pgInnkIbnlLHvvIzkvovlpoLmjIflh7rmnaHnm67lhoXlrrnnmoTlk6rkupvpg6jliIbmnInpl67popjmiJbnp7vpmaTmqKHmnb/nmoTnkIbnlLHvvIzkvYboi6XnkIbnlLHlvojplb/liJnlupTor6Xlj5HooajlnKjorqjorrrpobXjgIInLFxuXHRcdFx0XHRcdFx0J+mZhOWKoOaWvOe3qOi8r+aRmOimgeeahOWPr+mBuOeQhueUse+8jOS+i+WmguaMh+WHuuaineebruWFp+WuueeahOWTquS6m+mDqOWIhuacieWVj+mhjOaIluenu+mZpOaooeadv+eahOeQhueUse+8jOS9huiLpeeQhueUseW+iOmVt+WJh+aHieipsueZvOihqOWcqOiojuirlumggeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHNpemU6ICc4MCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2ZpbGUnOlxuXHRcdFx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmlofku7bnu7TmiqTmoIforrAnLCAn5qqU5qGI57at6K235qiZ6KiYJykpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGdyb3VwIG9mIFR3aW5rbGUudGFnLmZpbGVMaXN0KSB7XG5cdFx0XHRcdFx0aWYgKGdyb3VwLmJ1aWxkRmlsZW5hbWUpIHtcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgZWwgb2YgZ3JvdXAudmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0ZWwuc3ViZ3JvdXAgPSB7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmm7/mjaLnmoTmlofku7bvvJonLCAn5pu/5o+b55qE5qqU5qGI77yaJyksXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+i+k+WFpeabv+aNouatpOaWh+S7tueahOaWh+S7tuWQjeensO+8iOW/heWhq++8iScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Ly45YWl5pu/5o+b5q2k5qqU5qGI55qE5qqU5qGI5ZCN56ix77yI5b+F5aGr77yJJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogYCR7ZWwudmFsdWUucmVwbGFjZSgvIC9nLCAnXycpfUZpbGVgLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBncm91cC5rZXksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRcdGxpc3Q6IGdyb3VwLnZhbHVlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2N1c3RvbUZpbGVUYWdMaXN0JykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmqKHmnb8nLCAn6Ieq6KiC5qih5p2/JyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tRmlsZVRhZ0xpc3QnKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlZGlyZWN0Jzoge1xuXHRcdFx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfph43lrprlkJHmoIforrAnLCAn6YeN5paw5bCO5ZCR5qiZ6KiYJykpO1xuXHRcdFx0XHRjb25zdCBpID0gMTtcblx0XHRcdFx0Zm9yIChjb25zdCBncm91cCBvZiBUd2lua2xlLnRhZy5yZWRpcmVjdExpc3QpIHtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGlkOiBgdGFnSGVhZGVyJHtpfWAsXG5cdFx0XHRcdFx0XHRsYWJlbDogZ3JvdXAua2V5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFncycsXG5cdFx0XHRcdFx0XHRsaXN0OiBncm91cC52YWx1ZS5tYXAoKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogaXRlbS50YWcsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7eyR7aXRlbS50YWd9fX3vvJoke2l0ZW0uZGVzY3JpcHRpb259YCxcblx0XHRcdFx0XHRcdFx0XHRzdWJncm91cDogaXRlbS5zdWJncm91cCxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2N1c3RvbVJlZGlyZWN0VGFnTGlzdCcpLmxlbmd0aCkge1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFncycsXG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLmdldFByZWYoJ2N1c3RvbVJlZGlyZWN0VGFnTGlzdCcpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoYFR3aW5rbGUudGFn77ya5pyq55+l5qih5byPICR7VHdpbmtsZS50YWcubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ2ZyaWVuZGx5dGFnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBhdHJvbGxpbmsnKS5sZW5ndGgpIHtcblx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdouS4uuW3suW3oeafpScsICfmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6UnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAncGF0cm9sJyxcblx0XHRcdFx0XHRcdG5hbWU6ICdwYXRyb2wnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFnZ2VkUGFnZXNBc1BhdHJvbGxlZCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRjbGFzc05hbWU6ICd0dy10YWctc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHQvLyBmb3IgcXVpY2sgZmlsdGVyOlxuXHRcdCRhbGxDaGVja2JveERpdnMgPSAkKHJlc3VsdCkuZmluZCgnW25hbWUkPXRhZ3NdJykucGFyZW50KCk7XG5cdFx0JGFsbEhlYWRlcnMgPSAkKHJlc3VsdCkuZmluZCgnaDUnKTtcblx0XHRyZXN1bHQucXVpY2tmaWx0ZXIuZm9jdXMoKTsgLy8gcGxhY2UgY3Vyc29yIGluIHRoZSBxdWljayBmaWx0ZXIgZmllbGQgYXMgc29vbiBhcyB3aW5kb3cgaXMgb3BlbmVkXG5cdFx0cmVzdWx0LnF1aWNrZmlsdGVyLmF1dG9jb21wbGV0ZSA9ICdvZmYnOyAvLyBkaXNhYmxlIGJyb3dzZXIgc3VnZ2VzdGlvbnNcblx0XHRyZXN1bHQucXVpY2tmaWx0ZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5cHJlc3MnLCAoZSkgPT4ge1xuXHRcdFx0aWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG5cdFx0XHRcdC8vIHByZXZlbnQgZW50ZXIga2V5IGZyb20gYWNjaWRlbnRhbGx5IHN1Ym1pdHRpbmcgdGhlIGZvcm1cblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ2FydGljbGUnKSB7XG5cdFx0XHRUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MgPSBbXTtcblx0XHRcdGlmIChUd2lua2xlLnRhZy5jYW5SZW1vdmUpIHtcblx0XHRcdFx0Ly8gTG9vayBmb3IgZXhpc3RpbmcgbWFpbnRlbmFuY2UgdGFncyBpbiB0aGUgbGVhZCBzZWN0aW9uIGFuZCBwdXQgdGhlbSBpbiBhcnJheVxuXHRcdFx0XHQvLyBBbGwgdGFncyBhcmUgSFRNTCB0YWJsZSBlbGVtZW50cyB0aGF0IGFyZSBkaXJlY3QgY2hpbGRyZW4gb2YgLm13LXBhcnNlci1vdXRwdXQsXG5cdFx0XHRcdC8vIGV4Y2VwdCB3aGVuIHRoZXkgYXJlIHdpdGhpbiB7e211bHRpcGxlIGlzc3Vlc319XG5cdFx0XHRcdCRib2R5XG5cdFx0XHRcdFx0LmZpbmQoJy5tdy1wYXJzZXItb3V0cHV0Jylcblx0XHRcdFx0XHQuY2hpbGRyZW4oKVxuXHRcdFx0XHRcdC5lYWNoKChfaSwgZSkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gYnJlYWsgb3V0IG9uIGVuY291bnRlcmluZyB0aGUgZmlyc3QgaGVhZGluZywgd2hpY2ggbWVhbnMgd2UgYXJlIG5vXG5cdFx0XHRcdFx0XHQvLyBsb25nZXIgaW4gdGhlIGxlYWQgc2VjdGlvblxuXHRcdFx0XHRcdFx0aWYgKGUudGFnTmFtZSA9PT0gJ0gyJykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBUaGUgYWJpbGl0eSB0byByZW1vdmUgdGFncyBkZXBlbmRzIG9uIHRoZSB0ZW1wbGF0ZSdzIHt7YW1ib3h9fSB8bmFtZT1cblx0XHRcdFx0XHRcdC8vIHBhcmFtZXRlciBiZWFyaW5nIHRoZSB0ZW1wbGF0ZSdzIGNvcnJlY3QgbmFtZSAocHJlZmVyYWJseSkgb3IgYSBuYW1lIHRoYXQgYXRcblx0XHRcdFx0XHRcdC8vIGxlYXN0IHJlZGlyZWN0cyB0byB0aGUgYWN0dWFsIG5hbWVcblx0XHRcdFx0XHRcdC8vIEFsbCB0YWdzIGhhdmUgdGhlaXIgZmlyc3QgY2xhc3MgbmFtZSBhcyBcImJveC1cIiArIHRlbXBsYXRlIG5hbWVcblx0XHRcdFx0XHRcdGlmIChlLmNsYXNzTmFtZS5pbmRleE9mKCdib3gtJykgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0aWYgKGUuY2xhc3NMaXN0WzBdID09PSAnYm94LemXrumimOadoeebricpIHtcblx0XHRcdFx0XHRcdFx0XHQkKGUpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnLmFtYm94Jylcblx0XHRcdFx0XHRcdFx0XHRcdC5lYWNoKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGVsZW1lbnQuY2xhc3NMaXN0WzBdLmluZGV4T2YoJ2JveC0nKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGJveFRhZyA9IGVsZW1lbnQuY2xhc3NMaXN0WzBdLnNsaWNlKCdib3gtJy5sZW5ndGgpLnJlcGxhY2UoL18vZywgJyAnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3NbVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ym94VGFnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWVcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRhZyA9IGUuY2xhc3NMaXN0WzBdLnNsaWNlKCdib3gtJy5sZW5ndGgpLnJlcGxhY2UoL18vZywgJyAnKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzW1R3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5sZW5ndGhdID0gdGFnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyB7e1VuY2F0ZWdvcml6ZWR9fSBhbmQge3tJbXByb3ZlIGNhdGVnb3JpZXN9fSBhcmUgdXN1YWxseSBwbGFjZWQgYXQgdGhlIGVuZFxuXHRcdFx0XHRpZiAoJGJvZHkuZmluZCgnLmJveC1VbmNhdGVnb3JpemVkJykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzW1R3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5sZW5ndGhdID0gJ1VuY2F0ZWdvcml6ZWQnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgkYm9keS5maW5kKCcuYm94LUltcHJvdmVfY2F0ZWdvcmllcycpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFnc1tUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MubGVuZ3RoXSA9ICdJbXByb3ZlIGNhdGVnb3JpZXMnO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBBZGQgc3RhdHVzIHRleHQgbm9kZSBhZnRlciBTdWJtaXQgYnV0dG9uXG5cdFx0XHRjb25zdCBzdGF0dXNOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0c3RhdHVzTm9kZS5zdHlsZS5mb250U2l6ZSA9ICc5MCUnO1xuXHRcdFx0c3RhdHVzTm9kZS5pZCA9ICd0dy10YWctc3RhdHVzJztcblx0XHRcdFR3aW5rbGUudGFnLnN0YXR1cyA9IHtcblx0XHRcdFx0Ly8gaW5pdGlhbCBzdGF0ZTsgZGVmaW5lZCBsaWtlIHRoaXMgYmVjYXVzZSB0aGVzZSBuZWVkIHRvIGJlIGF2YWlsYWJsZSBmb3IgcmVmZXJlbmNlXG5cdFx0XHRcdC8vIGluIHRoZSBjbGljayBldmVudCBoYW5kbGVyXG5cdFx0XHRcdG51bUFkZGVkOiAwLFxuXHRcdFx0XHRudW1SZW1vdmVkOiAwLFxuXHRcdFx0fTtcblx0XHRcdCRib2R5LmZpbmQoJ2J1dHRvbi50dy10YWctc3VibWl0JykuYWZ0ZXIoc3RhdHVzTm9kZSk7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBzb3J0IGRyb3Bkb3duLCB0byBpbml0aWFsaXplIHRoZSB0YWcgbGlzdFxuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5zb3J0b3JkZXIuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBSZWRpcmVjdHMgYW5kIGZpbGVzOiBBZGQgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICd0YWdzJykpIHtcblx0XHRcdFx0Z2VuZXJhdGVMaW5rcyhjaGVja2JveCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQvLyAkYWxsQ2hlY2tib3hEaXZzIGFuZCAkYWxsSGVhZGVycyBhcmUgZGVmaW5lZCBnbG9iYWxseSwgcmF0aGVyIHRoYW4gaW4gdGhlXG5cdC8vIHF1aWNrZmlsdGVyIGV2ZW50IGZ1bmN0aW9uLCB0byBhdm9pZCBoYXZpbmcgdG8gcmVjb21wdXRlIHRoZW0gb24gZXZlcnkga2V5ZG93blxuXHRsZXQgJGFsbENoZWNrYm94RGl2cztcblx0bGV0ICRhbGxIZWFkZXJzO1xuXHRUd2lua2xlLnRhZy51cGRhdGVTb3J0T3JkZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHNvcnRvcmRlciA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFR3aW5rbGUudGFnLmNoZWNrZWRUYWdzID0gZm9ybS5nZXRDaGVja2VkKCd0YWdzJyk7XG5cdFx0Y29uc3QgY29udGFpbmVyID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdHR5cGU6ICdmcmFnbWVudCcsXG5cdFx0fSk7XG5cdFx0Ly8gZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSBjaGVja2JveCwgd2l0aCBhcHByb3ByaWF0ZSBzdWJncm91cCBpZiBuZWVkZWRcblx0XHRjb25zdCBtYWtlQ2hlY2tib3ggPSAodGFnLCBkZXNjcmlwdGlvbikgPT4ge1xuXHRcdFx0Y29uc3QgY2hlY2tib3ggPSB7XG5cdFx0XHRcdHZhbHVlOiB0YWcsXG5cdFx0XHRcdGxhYmVsOiBge3ske3RhZ319fTogJHtkZXNjcmlwdGlvbn1gLFxuXHRcdFx0fTtcblx0XHRcdGlmIChUd2lua2xlLnRhZy5jaGVja2VkVGFncy5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdGNoZWNrYm94LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoICh0YWcpIHtcblx0XHRcdFx0Y2FzZSAnRXhwZXJ0IG5lZWRlZCc6XG5cdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXAgPSBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdleHBlcnQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflk6rkuKrpoobln5/nmoTkuJPlrrbvvIjlv4XloavvvInvvJonLCAn5ZOq5YCL6aCY5Z+f55qE5bCI5a6277yI5b+F5aGr77yJ77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5b+F5aGr77yM5Y+v5Y+C6ICDIENhdGVnb3J5OumcgOimgeS4k+S4muS6uuWjq+WFs+azqOeahOmhtemdoiDkvb/nlKjnjrDlrZjnmoTliIbnsbvjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflv4XloavvvIzlj6/lj4PogIMgQ2F0ZWdvcnk66ZyA6KaB5bCI5qWt5Lq65aOr6Zec5rOo55qE6aCB6Z2iIOS9v+eUqOePvuWtmOeahOWIhumhnuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdleHBlcnQyJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZOq5Liq6aKG5Z+f55qE5LiT5a6277yaJywgJ+WTquWAi+mgmOWfn+eahOWwiOWutu+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mAie+8jOWPr+WPguiAgyBDYXRlZ29yeTrpnIDopoHkuJPkuJrkurrlo6vlhbPms6jnmoTpobXpnaIg5L2/55So546w5a2Y55qE5YiG57G744CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YG477yM5Y+v5Y+D6ICDIENhdGVnb3J5OumcgOimgeWwiOalreS6uuWjq+mXnOazqOeahOmggemdoiDkvb/nlKjnj77lrZjnmoTliIbpoZ7jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnZXhwZXJ0MycsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WTquS4qumihuWfn+eahOS4k+Wutu+8micsICflk6rlgIvpoJjln5/nmoTlsIjlrrbvvJonKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgInvvIzlj6/lj4LogIMgQ2F0ZWdvcnk66ZyA6KaB5LiT5Lia5Lq65aOr5YWz5rOo55qE6aG16Z2iIOS9v+eUqOeOsOWtmOeahOWIhuexu+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mBuO+8jOWPr+WPg+iAgyBDYXRlZ29yeTrpnIDopoHlsIjmpa3kurrlo6vpl5zms6jnmoTpoIHpnaIg5L2/55So54++5a2Y55qE5YiG6aGe44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdNZXJnZSc6XG5cdFx0XHRcdGNhc2UgJ01lcmdlIGZyb20nOlxuXHRcdFx0XHRjYXNlICdNZXJnZSB0byc6IHtcblx0XHRcdFx0XHRsZXQgb3RoZXJUYWdOYW1lID0gJ01lcmdlJztcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgZnJvbSc6XG5cdFx0XHRcdFx0XHRcdG90aGVyVGFnTmFtZSA9ICdNZXJnZSB0byc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgdG8nOlxuXHRcdFx0XHRcdFx0XHRvdGhlclRhZ05hbWUgPSAnTWVyZ2UgZnJvbSc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbWVyZ2VUYXJnZXQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhbbku5bmnaHnm67vvJonLCAn5YW25LuW5qKd55uu77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5aaC5oyH5a6a5aSa5Liq5p2h55uu77yM6K+355So566h6YGT56ym5YiG6ZqU77ya5p2h55uu55SyfOadoeebruS5mScsXG5cdFx0XHRcdFx0XHRcdFx0J+WmguaMh+WumuWkmuWAi+aineebru+8jOiri+eUqOeuoemBk+espuWIhumalO+8muaineebrueUsnzmop3nm67kuZknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogJ21lcmdlVGFnT3RoZXInLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGDnlKh7eyR7b3RoZXJUYWdOYW1lfSR7d2luZG93LndnVUxTKCd9feagh+iusOWFtuS7luadoeebricsICd9feaomeiomOWFtuS7luaineebricpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQn5LuF5Zyo5Y+q6L6T5YWl5LqG5LiA5Liq5p2h55uu5ZCN5pe25Y+v55SoJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J+WDheWcqOWPqui8uOWFpeS6huS4gOWAi+aineebruWQjeaZguWPr+eUqCdcblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXBbY2hlY2tib3guc3ViZ3JvdXAubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ21lcmdlUmVhc29uJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRg5ZCI5bm255CG55Sx77yI5Lya6KKr6LS05LiKJHt0YWcgPT09ICdNZXJnZSB0bycgPyAn5YW25LuWJyA6ICfov5knfeadoeebrueahOiuqOiuuumhte+8ie+8mmAsXG5cdFx0XHRcdFx0XHRcdFx0YOWQiOS9teeQhueUse+8iOacg+iiq+iyvOS4iiR7dGFnID09PSAnTWVyZ2UgdG8nID8gJ+WFtuS7licgOiAn6YCZJ33mop3nm67nmoToqI7oq5bpoIHvvInvvJpgXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YCJ77yM5L2G5by654OI5o6o6I2Q44CC5aaC5LiN6ZyA6KaB6K+355WZ56m644CC5LuF5Zyo5Y+q6L6T5YWl5LqG5LiA5Liq5p2h55uu5ZCN5pe25Y+v55So44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YG477yM5L2G5by354OI5o6o6Jam44CC5aaC5LiN6ZyA6KaB6KuL55WZ56m644CC5YOF5Zyo5Y+q6Ly45YWl5LqG5LiA5YCL5qKd55uu5ZCN5pmC5Y+v55So44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSAnTWlzc2luZyBpbmZvcm1hdGlvbic6XG5cdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXAgPSB7XG5cdFx0XHRcdFx0XHRuYW1lOiAnbWlzc2luZ0luZm9ybWF0aW9uJyxcblx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnvLrlsJHnmoTlhoXlrrnvvIjlv4XloavvvInvvJonLCAn57y65bCR55qE5YWn5a6577yI5b+F5aGr77yJ77yaJyksXG5cdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+W/heWhq++8jOaYvuekuuS4uuKAnOe8uuWwkeacieWFs+KApuKApueahOS/oeaBr+OAguKAnScsICflv4XloavvvIzpoa/npLrngrrjgIznvLrlsJHmnInpl5zigKbigKbnmoTos4foqIrjgILjgI0nKSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdOb3RhYmlsaXR5Jzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IHtcblx0XHRcdFx0XHRcdG5hbWU6ICdub3RhYmlsaXR5Jyxcblx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl9fe+8miR7d2luZG93LndnVUxTKCfpgJrnlKjnmoTlhbPms6jluqbmjIflvJUnLCAn6YCa55So55qE6Zec5rOo5bqm5oyH5byVJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8QXN0cm99fe+8miR7d2luZG93LndnVUxTKCflpKnkvZMnLCAn5aSp6auUJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0FzdHJvJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEJpb2dyYXBoaWVzfX3vvJoke3dpbmRvdy53Z1VMUygn5Lq654mp5Lyg6K6wJywgJ+S6uueJqeWCs+iomCcpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdCaW9ncmFwaGllcycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxCb29rfX3vvJoke3dpbmRvdy53Z1VMUygn5Lmm57GNJywgJ+abuOexjScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdCb29rJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEN5Y2xvbmV9fe+8miR7d2luZG93LndnVUxTKCfmsJTml4snLCAn5rCj5peLJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0N5Y2xvbmUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8RmljdGlvbn1977yaJHt3aW5kb3cud2dVTFMoJ+iZmuaehOS6i+eJqScsICfomZvmp4vkuovniaknKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnRmljdGlvbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxHZW9ncmFwaGljfX3vvJoke3dpbmRvdy53Z1VMUygn5Zyw55CG54m55b6BJywgJ+WcsOeQhueJueW+tScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdHZW9ncmFwaGljJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEdlb21ldHJ5fX3vvJoke3dpbmRvdy53Z1VMUygn5Yeg5L2V5Zu+5b2iJywgJ+W5vuS9leWcluW9oicpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdHZW9tZXRyeScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxJbnZlbnRpb259fe+8miR7d2luZG93LndnVUxTKCflj5HmmI7jgIHnoJTnqbYnLCAn55m85piO44CB56CU56m2Jyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0ludmVudGlvbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxNdXNpY31977yaJHt3aW5kb3cud2dVTFMoJ+mfs+S5kCcsICfpn7PmqIInKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnTXVzaWMnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8TnVtYmVyc31977yaJHt3aW5kb3cud2dVTFMoJ+aVsOWtlycsICfmlbjlrZcnKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnTnVtYmVycycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxPcmdhbml6YXRpb25zfX3vvJoke3dpbmRvdy53Z1VMUygn57uE57uHJywgJ+e1hOe5lCcpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdPcmdhbml6YXRpb25zJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fFByb3BlcnR5fX3vvJoke3dpbmRvdy53Z1VMUygn5oCn6LSo6KGoJywgJ+aAp+izquihqCcpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdQcm9wZXJ0eScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogJ3t7Tm90YWJpbGl0eXxUcmFmZmljfX3vvJrkuqTpgJonLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnVHJhZmZpYycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxXZWJ9fe+8miR7d2luZG93LndnVUxTKCfnvZHnq5njgIHnvZHnu5zlhoXlrrknLCAn57ay56uZ44CB57ay6Lev5YWn5a65Jyl977yI6Z2e5q2j5byP5oyH5byV77yJYCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ1dlYicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1JlcXVlc3RlZCBtb3ZlJzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ21vdmVUYXJnZXQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlrDlkI3np7DvvJonLCAn5paw5ZCN56ix77yaJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbW92ZVJlYXNvbicsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+enu+WKqOeQhueUse+8iOS8muiiq+eymOi0tOivpeadoeebrueahOiuqOiuuumhte+8ie+8micsXG5cdFx0XHRcdFx0XHRcdFx0J+enu+WLleeQhueUse+8iOacg+iiq+iyvOS4iuipsuaineebrueahOiojuirlumgge+8ie+8midcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgInvvIzkvYblvLrng4jmjqjojZDjgILlpoLkuI3pnIDopoHor7fnlZnnqbrjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgbjvvIzkvYblvLfng4jmjqjolqbjgILlpoLkuI3pnIDopoHoq4vnlZnnqbrjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1NwbGl0Jzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3RhcmdldDEnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLlkI0x77yaJywgJ+mggemdouWQjTHvvJonKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflj6/pgInjgIInLCAn5Y+v6YG444CCJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAndGFyZ2V0MicsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mhtemdouWQjTLvvJonLCAn6aCB6Z2i5ZCNMu+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WPr+mAieOAgicsICflj6/pgbjjgIInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICd0YXJnZXQzJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5ZCNM++8micsICfpoIHpnaLlkI0z77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5Y+v6YCJ44CCJywgJ+WPr+mBuOOAgicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdDbGVhbnVwJzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2NsZWFudXBSZWFzb24nLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+mcgOimgea4heeQhueahOeQhueUsScsXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YCJ77yM5L2G5by654OI5o6o6I2Q44CC5aaC5LiN6ZyA6KaB6K+355WZ56m644CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YG477yM5L2G5by354OI5o6o6Jam44CC5aaC5LiN6ZyA6KaB6KuL55WZ56m644CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNoZWNrYm94O1xuXHRcdH07XG5cdFx0Y29uc3QgbWFrZUNoZWNrYm94ZXNGb3JBbHJlYWR5UHJlc2VudFRhZ3MgPSAoKSA9PiB7XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdGlkOiAndGFnSGVhZGVyMCcsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suaUvue9rueahOe7tOaKpOagh+iusCcsICflt7LmlL7nva7nmoTntq3orbfmqJnoqJgnKSxcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgc3ViZGl2ID0gY29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRpZDogJ3RhZ1N1YmRpdjAnLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRjb25zdCB1bkNoZWNrZWRUYWdzID0gZS50YXJnZXQuZm9ybS5nZXRVbmNoZWNrZWQoJ2V4aXN0aW5nVGFncycpO1xuXHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzKSB7XG5cdFx0XHRcdGNvbnN0IGNoZWNrYm94ID0ge1xuXHRcdFx0XHRcdHZhbHVlOiB0YWcsXG5cdFx0XHRcdFx0bGFiZWw6IGB7eyR7dGFnfX19JHtcblx0XHRcdFx0XHRcdFR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddXG5cdFx0XHRcdFx0XHRcdD8gYDogJHtUd2lua2xlLnRhZy5hcnRpY2xlLmZsYXRPYmplY3RbdGFnXS5kZXNjcmlwdGlvbn1gXG5cdFx0XHRcdFx0XHRcdDogJydcblx0XHRcdFx0XHR9YCxcblx0XHRcdFx0XHRjaGVja2VkOiAhdW5DaGVja2VkVGFncy5pbmNsdWRlcyh0YWcpLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjaGVja2JveGVzW2NoZWNrYm94ZXMubGVuZ3RoXSA9IGNoZWNrYm94O1xuXHRcdFx0fVxuXHRcdFx0c3ViZGl2LmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdleGlzdGluZ1RhZ3MnLFxuXHRcdFx0XHRsaXN0OiBjaGVja2JveGVzLFxuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRpZiAoc29ydG9yZGVyID09PSAnY2F0Jykge1xuXHRcdFx0Ly8gY2F0ZWdvcmljYWwgc29ydCBvcmRlclxuXHRcdFx0Ly8gZnVuY3Rpb24gdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSB0YWdzIGFuZCBjcmVhdGUgYSBjaGVja2JveCBmb3IgZWFjaCBvbmVcblx0XHRcdGNvbnN0IGRvQ2F0ZWdvcnlDaGVja2JveGVzID0gKHN1YmRpdiwgc3ViZ3JvdXApID0+IHtcblx0XHRcdFx0Y29uc3QgY2hlY2tib3hlcyA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2Ygc3ViZ3JvdXApIHtcblx0XHRcdFx0XHRpZiAoIVR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5pbmNsdWRlcyhpdGVtLnRhZykpIHtcblx0XHRcdFx0XHRcdGNoZWNrYm94ZXNbY2hlY2tib3hlcy5sZW5ndGhdID0gbWFrZUNoZWNrYm94KGl0ZW0udGFnLCBpdGVtLmRlc2NyaXB0aW9uKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c3ViZGl2LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAndGFncycsXG5cdFx0XHRcdFx0bGlzdDogY2hlY2tib3hlcyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9O1xuXHRcdFx0aWYgKFR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdG1ha2VDaGVja2JveGVzRm9yQWxyZWFkeVByZXNlbnRUYWdzKCk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgaSA9IDE7XG5cdFx0XHQvLyBnbyB0aHJvdWdoIGVhY2ggY2F0ZWdvcnkgYW5kIHN1Yi1jYXRlZ29yeSBhbmQgYXBwZW5kIGxpc3RzIG9mIGNoZWNrYm94ZXNcblx0XHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS50YWcuYXJ0aWNsZS50YWdMaXN0KSB7XG5cdFx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGlkOiBgdGFnSGVhZGVyJHtpfWAsXG5cdFx0XHRcdFx0bGFiZWw6IGdyb3VwLmtleSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IHN1YmRpdiA9IGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiBgdGFnU3ViZGl2JHtpKyt9YCxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChncm91cC52YWx1ZVswXS50YWcpIHtcblx0XHRcdFx0XHRkb0NhdGVnb3J5Q2hlY2tib3hlcyhzdWJkaXYsIGdyb3VwLnZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHN1Ymdyb3VwIG9mIGdyb3VwLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBbTW9yZWJpdHMuaHRtbE5vZGUoJ2InLCBzdWJncm91cC5rZXkpXSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0ZG9DYXRlZ29yeUNoZWNrYm94ZXMoc3ViZGl2LCBzdWJncm91cC52YWx1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGFscGhhYmV0aWNhbCBzb3J0IG9yZGVyXG5cdFx0XHRpZiAoVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0bWFrZUNoZWNrYm94ZXNGb3JBbHJlYWR5UHJlc2VudFRhZ3MoKTtcblx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0aWQ6ICd0YWdIZWFkZXIxJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj6/nlKjnmoTnu7TmiqTmoIforrAnLCAn5Y+v55So55qE57at6K235qiZ6KiYJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQXZvaWQgcmVwZWF0ZWRseSByZXNvcnRpbmdcblx0XHRcdFR3aW5rbGUudGFnLmFydGljbGUuYWxwaGFiZXRpY2FsTGlzdCB8fD0gT2JqZWN0LmtleXMoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0KS5zb3J0KCk7XG5cdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBUd2lua2xlLnRhZy5hcnRpY2xlLmFscGhhYmV0aWNhbExpc3QpIHtcblx0XHRcdFx0aWYgKCFUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MuaW5jbHVkZXModGFnKSkge1xuXHRcdFx0XHRcdGNoZWNrYm94ZXNbY2hlY2tib3hlcy5sZW5ndGhdID0gbWFrZUNoZWNrYm94KHRhZywgVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10uZGVzY3JpcHRpb24pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ3RhZ3MnLFxuXHRcdFx0XHRsaXN0OiBjaGVja2JveGVzLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIGFwcGVuZCBhbnkgY3VzdG9tIHRhZ3Ncblx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21UYWdMaXN0JykubGVuZ3RoKSB7XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieaooeadvycsICfoh6roqILmqKHmnb8nKSxcblx0XHRcdH0pO1xuXHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0bGlzdDogVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21UYWdMaXN0JykubWFwKChlbCkgPT4ge1xuXHRcdFx0XHRcdGVsLmNoZWNrZWQgPSBUd2lua2xlLnRhZy5jaGVja2VkVGFncy5pbmNsdWRlcyhlbC52YWx1ZSk7XG5cdFx0XHRcdFx0cmV0dXJuIGVsO1xuXHRcdFx0XHR9KSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCAkd29ya2FyZWEgPSAkKGZvcm0pLmZpbmQoJyN0YWdXb3JrQXJlYScpO1xuXHRcdGNvbnN0IHJlbmRlcmVkID0gY29udGFpbmVyLnJlbmRlcigpO1xuXHRcdCR3b3JrYXJlYS5lbXB0eSgpLmFwcGVuZChyZW5kZXJlZCk7XG5cdFx0Ly8gZm9yIHF1aWNrIGZpbHRlcjpcblx0XHQkYWxsQ2hlY2tib3hEaXZzID0gJHdvcmthcmVhLmZpbmQoJ1tuYW1lPXRhZ3NdLCBbbmFtZT1leGlzdGluZ1RhZ3NdJykucGFyZW50KCk7XG5cdFx0JGFsbEhlYWRlcnMgPSAkd29ya2FyZWEuZmluZCgnaDUsIC5xdWlja2Zvcm1EZXNjcmlwdGlvbicpO1xuXHRcdGZvcm0ucXVpY2tmaWx0ZXIudmFsdWUgPSAnJzsgLy8gY2xlYXIgc2VhcmNoLCBiZWNhdXNlIHRoZSBzZWFyY2ggcmVzdWx0cyBhcmUgbm90IHByZXNlcnZlZCBvdmVyIG1vZGUgY2hhbmdlXG5cdFx0Zm9ybS5xdWlja2ZpbHRlci5mb2N1cygpO1xuXHRcdC8vIHN0eWxlIGFkanVzdG1lbnRzXG5cdFx0JHdvcmthcmVhLmZpbmQoJ2g1JykuY3NzKHtcblx0XHRcdCdmb250LXNpemUnOiAnMTEwJScsXG5cdFx0fSk7XG5cdFx0JHdvcmthcmVhLmZpbmQoJ2g1Om5vdCg6Zmlyc3QtY2hpbGQpJykuY3NzKHtcblx0XHRcdCdtYXJnaW4tdG9wJzogJzFlbScsXG5cdFx0fSk7XG5cdFx0JHdvcmthcmVhLmZpbmQoJ2RpdicpLmZpbHRlcignOmhhcyhzcGFuLnF1aWNrZm9ybURlc2NyaXB0aW9uKScpLmNzcyh7XG5cdFx0XHQnbWFyZ2luLXRvcCc6ICcwLjRlbScsXG5cdFx0fSk7XG5cdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ2V4aXN0aW5nVGFncycpKSB7XG5cdFx0XHRnZW5lcmF0ZUxpbmtzKGNoZWNrYm94KTtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ3RhZ3MnKSkge1xuXHRcdFx0Z2VuZXJhdGVMaW5rcyhjaGVja2JveCk7XG5cdFx0fVxuXHRcdC8vIHRhbGx5IHRhZ3MgYWRkZWQvcmVtb3ZlZCwgdXBkYXRlIHN0YXR1c05vZGUgdGV4dFxuXHRcdGNvbnN0IHN0YXR1c05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdHctdGFnLXN0YXR1cycpO1xuXHRcdCRib2R5LmZpbmQoJ1tuYW1lPXRhZ3NdLCBbbmFtZT1leGlzdGluZ1RhZ3NdJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0aWYgKHRoaXMubmFtZSA9PT0gJ3RhZ3MnKSB7XG5cdFx0XHRcdFR3aW5rbGUudGFnLnN0YXR1cy5udW1BZGRlZCArPSB0aGlzLmNoZWNrZWQgPyAxIDogLTE7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2V4aXN0aW5nVGFncycpIHtcblx0XHRcdFx0VHdpbmtsZS50YWcuc3RhdHVzLm51bVJlbW92ZWQgKz0gdGhpcy5jaGVja2VkID8gLTEgOiAxO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZmlyc3RQYXJ0ID0gYOWKoOWFpSR7VHdpbmtsZS50YWcuc3RhdHVzLm51bUFkZGVkfSR7d2luZG93LndnVUxTKCfkuKrmoIforrAnLCAn5YCL5qiZ6KiYJyl9YDtcblx0XHRcdGNvbnN0IHNlY29uZFBhcnQgPSBg56e76ZmkJHtUd2lua2xlLnRhZy5zdGF0dXMubnVtUmVtb3ZlZH0ke3dpbmRvdy53Z1VMUygn5Liq5qCH6K6wJywgJ+WAi+aomeiomCcpfWA7XG5cdFx0XHRzdGF0dXNOb2RlLnRleHRDb250ZW50ID1cblx0XHRcdFx0KFR3aW5rbGUudGFnLnN0YXR1cy5udW1BZGRlZCA/IGAgICR7Zmlyc3RQYXJ0fWAgOiAnJykgK1xuXHRcdFx0XHQoVHdpbmtsZS50YWcuc3RhdHVzLm51bVJlbW92ZWQgPyAoVHdpbmtsZS50YWcuc3RhdHVzLm51bUFkZGVkID8gJ++8mycgOiAnICAnKSArIHNlY29uZFBhcnQgOiAnJyk7XG5cdFx0fSk7XG5cdH07XG5cdC8qKlxuXHQgKiBBZGRzIGEgbGluayB0byBlYWNoIHRlbXBsYXRlJ3MgZGVzY3JpcHRpb24gcGFnZVxuXHQgKlxuXHQgKiBAcGFyYW0ge01vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50fSBjaGVja2JveCAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZW1wbGF0ZVxuXHQgKi9cblx0Y29uc3QgZ2VuZXJhdGVMaW5rcyA9IChjaGVja2JveCkgPT4ge1xuXHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsICc+Jyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3RhZy10ZW1wbGF0ZS1saW5rJyk7XG5cdFx0Y29uc3QgdGFnbmFtZSA9IGNoZWNrYm94LnZhbHVlcztcblx0XHRsaW5rLnNldEF0dHJpYnV0ZShcblx0XHRcdCdocmVmJyxcblx0XHRcdG13LnV0aWwuZ2V0VXJsKFxuXHRcdFx0XHQodGFnbmFtZS5pbmNsdWRlcygnOicpID8gJycgOiAnVGVtcGxhdGU6JykgK1xuXHRcdFx0XHRcdCh0YWduYW1lLmluY2x1ZGVzKCd8JykgPyB0YWduYW1lLnNsaWNlKDAsIHRhZ25hbWUuaW5kZXhPZignfCcpKSA6IHRhZ25hbWUpXG5cdFx0XHQpXG5cdFx0KTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdCQoY2hlY2tib3gpLnBhcmVudCgpLmFwcGVuZChbJ1xcdTAwQTAnLCBsaW5rXSk7XG5cdH07XG5cdC8vIFRhZ3MgZm9yIEFSVElDTEVTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS50YWcuYXJ0aWNsZSA9IHt9O1xuXHQvLyBUYWdzIGFycmFuZ2VkIGJ5IGNhdGVnb3J5OyB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFscGhhYmV0aWNhbCBsaXN0LFxuXHQvLyBidXQgdGFncyBzaG91bGQgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIHdpdGhpbiB0aGUgY2F0ZWdvcmllc1xuXHQvLyBleGNsdWRlTUk6IHRydWUgaW5kaWNhdGUgYSB0YWcgdGhhdCAqZG9lcyBub3QqIHdvcmsgaW5zaWRlIHt7bXVsdGlwbGUgaXNzdWVzfX1cblx0Ly8gQWRkIG5ldyBjYXRlZ29yaWVzIHdpdGggZGlzY3JldGlvbiAtIHRoZSBsaXN0IGlzIGxvbmcgZW5vdWdoIGFzIGlzIVxuXHRUd2lua2xlLnRhZy5hcnRpY2xlLnRhZ0xpc3QgPSBbXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+a4heeQhuWSjOe7tOaKpOaooeadvycsICfmuIXnkIblkozntq3orbfmqKHmnb8nKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5bi46KeE5riF55CGJywgJ+W4uOimj+a4heeQhicpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NsZWFudXAnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73pnIDopoHov5vooYzmuIXnkIbvvIzku6XnrKblkIjmsYLpl7vnmb7np5HnmoTotKjph4/moIflh4YnLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73pnIDopoHpgLLooYzmuIXnkIbvvIzku6XnrKblkIjmsYLogZ7nmb7np5HnmoTos6rph4/mqJnmupYnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDbGVhbnVwIHJld3JpdGUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkuI3nrKblkIjmsYLpl7vnmb7np5HnmoTotKjph4/moIflh4bvvIzpnIDopoHlrozlhajph43lhpknLFxuXHRcdFx0XHRcdFx0XHRcdCfkuI3nrKblkIjmsYLogZ7nmb7np5HnmoTos6rph4/mqJnmupbvvIzpnIDopoHlrozlhajph43lr6snXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDbGVhbnVwLWphcmdvbicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WMheWQq+i/h+WkmuihjOivneaIluS4k+S4muacr+ivre+8jOWPr+iDvemcgOimgeeugOWMluaIluaPkOWHuui/m+S4gOatpeino+mHiicsXG5cdFx0XHRcdFx0XHRcdFx0J+WMheWQq+mBjuWkmuihjOipseaIluWwiOalreihk+iqnu+8jOWPr+iDvemcgOimgeewoeWMluaIluaPkOWHuumAsuS4gOatpeino+mHiydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NvcHkgZWRpdCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+mcgOimgee8luS/ru+8jOS7peehruS/neaWh+azleOAgeeUqOivjeOAgeivreawlOOAgeagvOW8j+OAgeagh+eCueetieS9v+eUqOaBsOW9kycsXG5cdFx0XHRcdFx0XHRcdFx0J+mcgOimgee3qOS/ru+8jOS7peeiuuS/neaWh+azleOAgeeUqOipnuOAgeiqnuawo+OAgeagvOW8j+OAgeaomem7nuetieS9v+eUqOaBsOeVtidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflj6/og73lpJrkvZnnmoTlhoXlrrknLCAn5Y+v6IO95aSa6aSY55qE5YWn5a65JyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQ29weXBhc3RlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5YaF5a655Y+v6IO95piv5LuO5p+Q5Liq5p2l5rqQ5aSE5ou36LSd5ZCO57KY6LS0Jyxcblx0XHRcdFx0XHRcdFx0XHQn5YWn5a655Y+v6IO95piv5b6e5p+Q5YCL5L6G5rqQ6JmV5ou36LKd5b6M6LK85LiKJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnRXh0ZXJuYWwgbGlua3MnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkvb/nlKjlpJbpg6jpk77mjqXnmoTmlrnlvI/lj6/og73kuI3nrKblkIjmsYLpl7vnmb7np5HnmoTmlrnpkognLFxuXHRcdFx0XHRcdFx0XHRcdCfkvb/nlKjlpJbpg6jpgKPntZDnmoTmlrnlvI/lj6/og73kuI3nrKblkIjmsYLogZ7nmb7np5HnmoTmlrnph50nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOb24tZnJlZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvei/h+WkmuaIluS4jeW9k+WcsOS9v+eUqOS6huWPl+iRl+S9nOadg+S/neaKpOeahOaWh+Wtl+OAgeWbvuWDj+aIluWkmuWqkuS9k+aWh+S7ticsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvemBjuWkmuaIluS4jeeVtuWcsOS9v+eUqOS6huWPl+eJiOasiuS/neitt+eahOaWh+Wtl+OAgeWcluWDj+aIluWkmuWqkumrlOaqlOahiCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCfnu5PmnoTlkozlr7zoqIAnLCAn57WQ5qeL5ZKM5bCO6KiAJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTGVhZCB0b28gbG9uZycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WvvOiogOmDqOWIhuS5n+iuuOi/h+S6juWGl+mVvycsICflsI7oqIDpg6jliIbkuZ/oqLHpgY7mlrzlhpfplbcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0xlYWQgdG9vIHNob3J0Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+86KiA6YOo5YiG5Lmf6K645LiN6Laz5Lul5qaC5ous5YW25YaF5a65JywgJ+WwjuiogOmDqOWIhuS5n+ioseS4jei2s+S7peamguaLrOWFtuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVmVyeSBsb25nJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO96L+H5LqO5YaX6ZW/JywgJ+WPr+iDvemBjuaWvOWGl+mVtycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+iZmuaehOS9nOWTgeebuOWFs+a4heeQhicsICfomZvmp4vkvZzlk4Hnm7jpl5zmuIXnkIYnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdJbi11bml2ZXJzZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOWwj+ivtOaVheS6i+WGheeahOingueCueaPj+i/sOS4gOS4quiZmuaehOS6i+eJqScsXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOWwj+iqquaVheS6i+WFp+eahOingOm7nuaPj+i/sOS4gOWAi+iZm+ani+S6i+eJqSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0xvbmcgcGxvdCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WPr+iDveWMheWQq+i/h+S6juivpue7hueahOWJp+aDheaRmOimgScsICflj6/og73ljIXlkKvpgY7mlrzoqbPntLDnmoTliofmg4XmkZjopoEnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5bi46KeE5p2h55uu6Zeu6aKYJywgJ+W4uOimj+aineebruWVj+mhjCcpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogJ+mHjeimgeaAp+WSjOefpeWQjeW6picsXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTm90YWJpbGl0eScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WPr+iDveS4jeespuWQiOmAmueUqOWFs+azqOW6puaMh+W8lScsICflj6/og73kuI3nrKblkIjpgJrnlKjpl5zms6jluqbmjIflvJUnKSxcblx0XHRcdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTm90YWJpbGl0eSBVbnJlZmVyZW5jZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73lhbflpIflhbPms6jluqbvvIzkvYbpnIDopoHmnaXmupDliqDku6XlvbDmmL4nLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73lhbflgpnpl5zms6jluqbvvIzkvYbpnIDopoHkvobmupDliqDku6XlvbDpoa8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5YaZ5L2c6aOO5qC8JywgJ+Wvq+S9nOmiqOagvCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0FkdmVydCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+exu+S8vOW5v+WRiuaIluWuo+S8oOaAp+WGheWuuScsICfpoZ7kvLzlu6PlkYrmiJblrqPlgrPmgKflhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0ZhbnBvdicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+exu+S8vOeIseWlveiAhee9kemhtScsICfpoZ7kvLzmhJvlpb3ogIXntrLpoIEnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0hvdy10bycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WMheWQq+aMh+WNl+aIluaVmeWtpuWGheWuuScsICfljIXlkKvmjIfljZfmiJbmlZnlrbjlhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0luYXBwcm9wcmlhdGUgcGVyc29uJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5LiN6YCC5b2T55qE56ys5LiA5Lq656ew5ZKM56ys5LqM5Lq656ewJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5LiN6YGp55W255qE56ys5LiA5Lq656ix5ZKM56ys5LqM5Lq656ixJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTmV3c3JlbGVhc2UnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpmIXor7votbfmnaXlg4/mmK/mlrDpl7vnqL/lj4rljIXlkKvov4fluqbnmoTlrqPkvKDmgKfor63osIMnLFxuXHRcdFx0XHRcdFx0XHRcdCfplrHoroDotbfkvoblg4/mmK/mlrDogZ7nqL/lj4rljIXlkKvpgY7luqbnmoTlrqPlgrPmgKfoqp7oqr8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdQcm9zZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOS6huaXpeacn+aIluaXtumXtOWIl+ihqOW8j+iusOi/sO+8jOmcgOimgeaUueWGmeS4uui/nui0r+eahOWPmei/sOaAp+aWh+WtlycsXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOS6huaXpeacn+aIluaZgumWk+WIl+ihqOW8j+iomOi/sO+8jOmcgOimgeaUueWvq+eCuumAo+iyq+eahOaVmOi/sOaAp+aWh+Wtlydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1JldmlldycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+mYheivu+i1t+adpeexu+S8vOivhOiuuu+8jOmcgOimgea4heeQhicsICfplrHoroDotbfkvobpoZ7kvLzoqZXoq5bvvIzpnIDopoHmuIXnkIYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1RvbmUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfor63osIPmiJbpo47moLzlj6/og73kuI3pgILlkIjnmb7np5HlhajkuabnmoTlhpnkvZzmlrnlvI8nLFxuXHRcdFx0XHRcdFx0XHRcdCfoqp7oqr/miJbpoqjmoLzlj6/og73kuI3pganlkIjnmb7np5Hlhajmm7jnmoTlr6vkvZzmlrnlvI8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5YaF5a65JywgJ+WFp+WuuScpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7dGFnOiAnTWlzc2luZyBpbmZvcm1hdGlvbicsIGRlc2NyaXB0aW9uOiAn57y65bCR5b+F6KaB55qE5L+h5oGvJ30sIC8vIHRoZXNlIHRocmVlIGhhdmUgYSBzdWJncm91cCB3aXRoIHNldmVyYWwgb3B0aW9uc1xuXHRcdFx0XHRcdFx0e3RhZzogJ1N1YnN0dWInLCBkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfov4fkuo7nn63lsI8nLCAn6YGO5pa855+t5bCPJyksIGV4Y2x1ZGVNSTogdHJ1ZX0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1VuZW5jeWNsb3BlZGljJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO95LiN6YCC5ZCI5YaZ5YWl55m+56eR5YWo5LmmJywgJ+WPr+iDveS4jemBqeWQiOWvq+WFpeeZvuenkeWFqOabuCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+S/oeaBr+WSjOe7huiKgicsICfos4foqIrlkozntLDnr4AnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdFeHBlcnQgbmVlZGVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB57K+6YCa5oiW54af5oKJ5pys5Li76aKY55qE5LiT5Lia5Lq65aOr77yI5LiT5a6277yJ5Y+C5LiO5Y+K5Y2P5Yqp57yW6L6RJyxcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB57K+6YCa5oiW54af5oKJ5pys5Li76aGM55qE5bCI5qWt5Lq65aOr77yI5bCI5a6277yJ5Y+D6IiH5Y+K5Y2U5Yqp57eo6LyvJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT3Zlcmx5IGRldGFpbGVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5YyF5ZCr5aSq5aSa6L+H5bqm57uG6IqC5YaF5a65JywgJ+WMheWQq+WkquWkmumBjuW6pue0sOevgOWFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVHJpdmlhJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5bqU6YG/5YWN5pyJ6ZmI5YiX5p2C6aG544CB55CQ56KO6LWE5paZ55qE6YOo5YiGJyxcblx0XHRcdFx0XHRcdFx0XHQn5oeJ6YG/5YWN5pyJ6Zmz5YiX6Zuc6aCF44CB55Gj56KO6LOH5paZ55qE6YOo5YiGJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+aXtumXtOaApycsICfmmYLplpPmgKcnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDdXJyZW50Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6K6w6L+w5paw6Ze75Yqo5oCBJywgJ+iomOi/sOaWsOiBnuWLleaFiycpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdVcGRhdGUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflvZPliY3mnaHnm67miJbnq6DoioLpnIDopoHmm7TmlrAnLCAn55W25YmN5qKd55uu5oiW56ug56+A6ZyA6KaB5pu05pawJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5a6i6KeC5oCn5ZKM5LqL5a6e5YeG56Gu5oCnJywgJ+WuouingOaAp+WSjOS6i+Wvpua6lueiuuaApycpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0F1dG9iaW9ncmFwaHknLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnsbvkvLzkuIDnr4foh6rkvKDvvIzmiJblhoXlrrnkuLvopoHnlLHmnaHnm67mj4/ov7DnmoTlvZPkuovkurrmiJbnu4Tnu4fmkrDlhpnjgIHnvJbovpEnLFxuXHRcdFx0XHRcdFx0XHRcdCfpoZ7kvLzkuIDnr4foh6rlgrPvvIzmiJblhaflrrnkuLvopoHnlLHmop3nm67mj4/ov7DnmoTnlbbkuovkurrmiJbntYTnuZTmkrDlr6vjgIHnt6jovK8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDT0knLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkuLvopoHotKHnjK7ogIXkuI7mnKzmnaHnm67miYDlrqPmiaznmoTlhoXlrrnlj6/og73lrZjlnKjliKnnm4rlhrLnqoEnLFxuXHRcdFx0XHRcdFx0XHRcdCfkuLvopoHosqLnjbvogIXoiIfmnKzmop3nm67miYDlrqPmj5rnmoTlhaflrrnlj6/og73lrZjlnKjliKnnm4rooZ3nqoEnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdEaXNwdXRlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WGheWuueeWkeasoOWHhuehru+8jOacieW+heafpeivgScsICflhaflrrnnlpHmrKDmupbnorrvvIzmnInlvoXmn6XorYknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0dsb2JhbGl6ZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+S7heWFt+acieS4gOmDqOWIhuWcsOWMuueahOS/oeaBr+aIluingueCuScsICflg4XlhbfmnInkuIDpg6jliIblnLDljYDnmoTos4foqIrmiJbop4Dpu54nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0hvYXgnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnnJ/lrp7mgKfooqvotKjnlpEnLCAn55yf5a+m5oCn6KKr6LOq55aRJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdQT1YnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflrqLop4LmgKfmnInkuonorq7jgILlhoXlrrnjgIHor63osIPlj6/og73luKbmnInmmI7mmL7nmoTkuKrkurrop4LngrnmiJblnLDmlrnoibLlvaknLFxuXHRcdFx0XHRcdFx0XHRcdCflrqLop4DmgKfmnInniK3orbDjgILlhaflrrnjgIHoqp7oqr/lj6/og73luLbmnInmmI7poa/nmoTlgIvkurrop4Dpu57miJblnLDmlrnoibLlvaknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdTZWxmLWNvbnRyYWRpY3RvcnknLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflhoXlrrnoh6rnm7jnn5vnm74nLCAn5YWn5a656Ieq55u455+b55u+JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdXZWFzZWwnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfor63kuYnmqKHmo7HkuKTlj6/ogIzmjZ/lj4rlhbblrqLop4LmgKfmiJblh4bnoa7mgKcnLFxuXHRcdFx0XHRcdFx0XHRcdCfoqp7mhI/mqKHmo7Hlhanlj6/ogIzmkI3lj4rlhbblrqLop4DmgKfmiJbmupbnorrmgKcnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5Y+v5L6b5p+l6K+B5ZKM5p2l5rqQJywgJ+WPr+S+m+afpeitieWSjOS+hua6kCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0JMUGRpc3B1dGUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73ov53lj43kuobmsYLpl7vnmb7np5HlhbPkuo7nlJ/ogIXkvKDorrDnmoTmlrnpkognLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73pgZXlj43kuobmsYLogZ7nmb7np5Hpl5zmlrznlJ/ogIXlgrPoqJjnmoTmlrnph50nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdCTFBzb3VyY2VzJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn55Sf6ICF5Lyg6K6w6ZyA6KaB6KGl5YWF5pu05aSa5Y+v5L6b5p+l6K+B55qE5p2l5rqQJyxcblx0XHRcdFx0XHRcdFx0XHQn55Sf6ICF5YKz6KiY6ZyA6KaB6KOc5YWF5pu05aSa5Y+v5L6b5p+l6K2J55qE5L6G5rqQJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQkxQIHVuc291cmNlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUn+iAheS8oOiusOayoeacieWIl+WHuuS7u+S9leWPguiAg+aIluadpea6kCcsXG5cdFx0XHRcdFx0XHRcdFx0J+eUn+iAheWCs+iomOaykuacieWIl+WHuuS7u+S9leWPg+iAg+aIluS+hua6kCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NpdGVjaGVjaycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDveWMheWQq+S4jemAgueUqOaIluiiq+absuino+eahOW8leeUqOi1hOaWme+8jOmDqOWIhuWGheWuueeahOWHhuehruaAp+aXoOazleiiq+ivgeWunicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDveWMheWQq+S4jemBqeeUqOaIluiiq+absuino+eahOW8leeUqOizh+aWme+8jOmDqOWIhuWFp+WuueeahOa6lueiuuaAp+eEoeazleiiq+itieWvpidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ01vcmUgZm9vdG5vdGVzIG5lZWRlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WboOS4uuaWh+WGheW8leeUqOS4jei2s++8jOmDqOWIhuWtl+WPpeeahOadpea6kOS7jeeEtuS4jeaYjicsXG5cdFx0XHRcdFx0XHRcdFx0J+WboOeCuuaWh+WFp+W8leeUqOS4jei2s++8jOmDqOWIhuWtl+WPpeeahOS+hua6kOS7jeeEtuS4jeaYjidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ05vIGZvb3Rub3RlcycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WboOS4uuayoeacieWGheaWh+W8leeUqOiAjOadpea6kOS7jeeEtuS4jeaYjicsXG5cdFx0XHRcdFx0XHRcdFx0J+WboOeCuuaykuacieWFp+aWh+W8leeUqOiAjOS+hua6kOS7jeeEtuS4jeaYjidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ09uZXNvdXJjZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aegeWkp+aIluWujOWFqOWcsOS+nei1luS6juafkOS4quWNleS4gOeahOadpea6kCcsXG5cdFx0XHRcdFx0XHRcdFx0J+alteWkp+aIluWujOWFqOWcsOS+neiztOaWvOafkOWAi+WWruS4gOeahOS+hua6kCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ09yaWdpbmFsIHJlc2VhcmNoJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO95YyF5ZCr5Y6f5Yib56CU56m25oiW5pyq5p+l6K+B5YaF5a65JywgJ+WPr+iDveWMheWQq+WOn+WJteeglOeptuaIluacquafpeitieWFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnUHJpbWFyeXNvdXJjZXMnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfkvp3otZbnrKzkuIDmiYvmnaXmupAnLCAn5L6d6LO056ys5LiA5omL5L6G5rqQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdSZWZpbXByb3ZlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6ZyA6KaB6KGl5YWF5pu05aSa5p2l5rqQJywgJ+mcgOimgeijnOWFheabtOWkmuS+hua6kCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVW5yZWZlcmVuY2VkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5rKh5pyJ5YiX5Ye65Lu75L2V5Y+C6ICD5oiW5p2l5rqQJywgJ+aykuacieWIl+WHuuS7u+S9leWPg+iAg+aIluS+hua6kCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCflhbfkvZPlhoXlrrnpl67popgnLCAn5YW36auU5YWn5a655ZWP6aGMJyksXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+ivreiogCcsICfoqp7oqIAnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOb3RNYW5kYXJpbicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WMheWQq+i/h+WkmuS4jeaYr+eOsOS7o+agh+WHhuaxieivreeahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+WMheWQq+mBjuWkmuS4jeaYr+ePvuS7o+aomea6lua8ouiqnueahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnUm91Z2ggdHJhbnNsYXRpb24nLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnv7vor5Hlk4HotKjkuI3kvbMnLCAn57+76K2v5ZOB6LOq5LiN5L2zJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6ZO+5o6lJywgJ+mAo+e1kCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0RlYWQgZW5kJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB5Yqg5LiK5YaF6YOo6ZO+5o6l5Lul5p6E562R55m+56eR5YWo5Lmm55qE6ZO+5o6l572R57ucJyxcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB5Yqg5LiK5YWn6YOo6YCj57WQ5Lul5qeL56+J55m+56eR5YWo5pu455qE6YCj57WQ57ay57WhJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT3JwaGFuJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5rKh5pyJ5oiW5Y+q5pyJ5b6I5bCR6ZO+5YWl6aG16Z2iJywgJ+aykuacieaIluWPquacieW+iOWwkemAo+WFpemggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT3ZlcmxpbmtlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WQq+aciei/h+WkmuOAgemHjeWkjeOAgeaIluS4jeW/heimgeeahOWGhemDqOmTvuaOpScsXG5cdFx0XHRcdFx0XHRcdFx0J+WQq+aciemBjuWkmuOAgemHjeikh+OAgeaIluS4jeW/heimgeeahOWFp+mDqOmAo+e1kCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1VuZGVybGlua2VkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB5pu05aSa5YaF6YOo6ZO+5o6l5Lul5p6E562R55m+56eR5YWo5Lmm55qE6ZO+5o6l572R57ucJyxcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB5pu05aSa5YWn6YOo6YCj57WQ5Lul5qeL56+J55m+56eR5YWo5pu455qE6YCj57WQ57ay57WhJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WPguiAg+aKgOacrycsICflj4PogIPmioDooZMnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDaXRhdGlvbiBzdHlsZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W8leeUqOmcgOimgei/m+ihjOa4heeQhicsICflvJXnlKjpnIDopoHpgLLooYzmuIXnkIYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCfliIbnsbsnLCAn5YiG6aGeJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnSW1wcm92ZSBjYXRlZ29yaWVzJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6ZyA6KaB5pu05aSa6aG16Z2i5YiG57G7JywgJ+mcgOimgeabtOWkmumggemdouWIhumhnicpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdVbmNhdGVnb3JpemVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn57y65bCR6aG16Z2i5YiG57G7JywgJ+e8uuWwkemggemdouWIhumhnicpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WQiOW5tuOAgeaLhuWIhuOAgeenu+WKqCcsICflkIjkvbXjgIHmi4bliIbjgIHnp7vli5UnKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdNZXJnZSBmcm9tJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflu7rorq7lsIbpobXpnaLlubblhaXmraTpobXpnaInLCAn5bu66K2w5bCH6aCB6Z2i5L215YWl5q2k6aCB6Z2iJyksXG5cdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAnTWVyZ2UgdG8nLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W7uuiuruWwhuatpOmhtemdouW5tuWFpemhtemdoicsICflu7rorbDlsIfmraTpoIHpnaLkvbXlhaXpoIHpnaInKSxcblx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdNZXJnZScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5bu66K6u5q2k6aG16Z2i5LiO6aG16Z2i5ZCI5bm2JywgJ+W7uuitsOatpOmggemdouiIh+mggemdouWQiOS9tScpLFxuXHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ1JlcXVlc3RlZCBtb3ZlJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflu7rorq7lsIbmraTpobXpnaLnp7vliqjliLDmlrDlkI3np7AnLCAn5bu66K2w5bCH5q2k6aCB6Z2i56e75YuV5Yiw5paw5ZCN56ixJyksXG5cdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAnU3BsaXQnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W7uuiuruWwhuatpOmhtemdouWIhuWJsuS4uuWkmuS4qumhtemdoicsICflu7rorbDlsIfmraTpoIHpnaLliIblibLngrrlpJrlgIvpoIHpnaInKSxcblx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdC8vIFRhZ3MgZm9yIFJFRElSRUNUUyBzdGFydCBoZXJlXG5cdC8vIE5vdCBieSBwb2xpY3ksIGJ1dCB0aGUgbGlzdCByb3VnaGx5IGFwcHJveGltYXRlcyBpdGVtcyB3aXRoID41MDBcblx0Ly8gdHJhbnNjbHVzaW9ucyBmcm9tIFRlbXBsYXRlOlIgdGVtcGxhdGUgaW5kZXhcblx0VHdpbmtsZS50YWcucmVkaXJlY3RMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGtleTogJ+W4uOeUqOaooeadvycsXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+WQiOW5tumHjeWumuWQkScsICflkIjkvbXph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S/neaMgemhtemdoumimOWQjeiHs+ebuOW6lOS4u+adoeebru+8jOS7pOmhtemdouWGheWuueWcqOWQiOW5tuWQjuS7jeiDveS/neWtmOWFtue8lui+keWOhuWPsicsXG5cdFx0XHRcdFx0XHQn5L+d5oyB6aCB6Z2i6aGM5ZCN6Iez55u45oeJ5Li75qKd55uu77yM5Luk6aCB6Z2i5YWn5a655Zyo5ZCI5L215b6M5LuN6IO95YSy5a2Y5YW257eo6Lyv5q235Y+yJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn566A57mB6YeN5a6a5ZCRJywgJ+ewoee5gemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W8leWvvOeugOS9k+iHs+e5geS9k++8jOaIlue5geS9k+iHs+eugOS9kycsICflvJXlsI7nsKHpq5Toh7PnuYHpq5TvvIzmiJbnuYHpq5Toh7PnsKHpq5QnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCflhbPms6jluqbph43lrprlkJEnLCAn6Zec5rOo5bqm6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfnvLrkuY/lhbPms6jluqbnmoTlrZDkuLvpopjlkJHmnInlhbPms6jluqbnmoTmr43kuLvpopjnmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0J+e8uuS5j+mXnOazqOW6pueahOWtkOS4u+mhjOWQkeaciemXnOazqOW6pueahOavjeS4u+mhjOeahOmHjeWumuWQkSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5qih5p2/6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmjIflkJHmqKHmnb/nmoTph43lrprlkJHpobXpnaInLCAn5oyH5ZCR5qih5p2/55qE6YeN5a6a5ZCR6aCB6Z2iJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5Yir5ZCN6YeN5a6a5ZCRJywgJ+WIpeWQjemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5qCH6aKY55qE5YW25LuW5ZCN56ew44CB56yU5ZCN44CB57uw5Y+344CB5ZCM5LmJ5a2X562JJyxcblx0XHRcdFx0XHRcdCfmqJnpoYznmoTlhbbku5blkI3nqLHjgIHnrYblkI3jgIHntr3omZ/jgIHlkIznvqnlrZfnrYknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfor5HlkI3ph43lrprlkJEnLCAn6K2v5ZCN6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkurrnianjgIHkvZzlk4HnrYnlkITpobnkuovniannmoTlhbbku5bnv7vor5HlkI3np7AnLFxuXHRcdFx0XHRcdFx0J+S6uueJqeOAgeS9nOWTgeetieWQhOmgheS6i+eJqeeahOWFtuS7lue/u+itr+WQjeeosSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+e8qeWGmemHjeWumuWQkScsICfnuK7lr6vph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmoIfpopjnvKnlhpknLCAn5qiZ6aGM57iu5a+rJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5ou85YaZ6YeN5a6a5ZCRJywgJ+aLvOWvq+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+agh+mimOeahOWFtuS7luS4jeWQjOaLvOWGmScsICfmqJnpoYznmoTlhbbku5bkuI3lkIzmi7zlr6snKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfplJnlrZfph43lrprlkJEnLCAn6Yyv5a2X6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn57qg5q2j5qCH6aKY55qE5bi46KeB6ZSZ6K+v5ou85YaZ5oiW6K+v5qSNJywgJ+ezvuato+aomemhjOeahOW4uOimi+mMr+iqpOaLvOWvq+aIluiqpOakjScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+aXp+WQjemHjeWumuWQkScsICfoiIrlkI3ph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WwhuS6i+eJqeaXqeWJjeeahOWQjeensOW8leWvvOiHs+abtOaUueWQjueahOS4u+mimCcsXG5cdFx0XHRcdFx0XHQn5bCH5LqL54mp5pep5YmN55qE5ZCN56ix5byV5bCO6Iez5pu05pS55b6M55qE5Li76aGMJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflhajlkI3ph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+agh+mimOeahOWujOaVtOaIluabtOWujOaVtOWQjeensCcsICfmqJnpoYznmoTlrozmlbTmiJbmm7TlrozmlbTlkI3nqLEnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+efreWQjemHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflrozmlbTmoIfpopjlkI3np7DmiJbkurrnianlhajlkI3nmoTpg6jliIbjgIHkuI3lrozmlbTnmoTlkI3np7DmiJbnroDnp7AnLFxuXHRcdFx0XHRcdFx0J+WujOaVtOaomemhjOWQjeeoseaIluS6uueJqeWFqOWQjeeahOmDqOWIhuOAgeS4jeWujOaVtOeahOWQjeeoseaIluewoeeosSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5aeT5rCP6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogJ+S6uueJqeWnk+awjycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflkI3lrZfph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiAn5Lq654mp5Lq65ZCNJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+acrOWQjemHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246ICfkurrnianmnKzlkI0nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn6Z2e5Lit5paH6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfpnZ7kuK3mlofmoIfpopgnLCAn6Z2e5Lit5paH5qiZ6aGMJyksXG5cdFx0XHRcdFx0c3ViZ3JvdXA6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2FsdExhbmdGcm9tJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICfmnKzph43mlrDlsI7lkJHnmoToqp7oqIDvvIjlj6/pgbjvvIknLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOlxuXHRcdFx0XHRcdFx0XHRcdCfovLjlhaXph43mlrDlsI7lkJHlkI3nqLHmiYDkvb/nlKjoqp7oqIDnmoRJU08gNjM55Luj56K877yM5L6L5aaCZW7ku6Pooajoi7Hoqp7vvIzku6Pnorzlj6/lj4PoposgVGVtcGxhdGU6SVNPXzYzOV9uYW1lJyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+aXpeaWh+mHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5pel6K+t5ZCN56ewJywgJ+aXpeiqnuWQjeeosScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogJ+WBtueUqOaooeadvycsXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn6KeS6Imy6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnlLXop4bliafjgIHnlLXlvbHjgIHkuabnsY3nrYnkvZzlk4HnmoTop5LoibInLCAn6Zu76KaW5YqH44CB6Zu75b2x44CB5pu457GN562J5L2c5ZOB55qE6KeS6ImyJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn56ug6IqC6YeN5a6a5ZCRJywgJ+eroOevgOmHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WvvOWQkeiHs+i+g+mrmOWvhuW6pue7hOe7h+eahOmhtemdoicsICflsI7lkJHoh7PovIPpq5jlr4bluqbntYTnuZTnmoTpoIHpnaInKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+WIl+ihqOmHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+85ZCR6Iez5L2O5a+G5bqm55qE5YiX6KGoJywgJ+WwjuWQkeiHs+S9juWvhuW6pueahOWIl+ihqCcpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5Y+v6IO95oCn6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WvvOWQkeiHs+W9k+WJjeaPkOS+m+WGheWuueabtOS4uuivpuWwveeahOebruagh+mhtemdoicsXG5cdFx0XHRcdFx0XHQn5bCO5ZCR6Iez55W25YmN5o+Q5L6b5YWn5a655pu054K66Kmz55uh55qE55uu5qiZ6aCB6Z2iJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5YWz6IGU5a2X6YeN5a6a5ZCRJywgJ+mXnOiBr+Wtl+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+agh+mimOWQjeensOWFs+iBlOWtlycsICfmqJnpoYzlkI3nqLHpl5zoga/lrZcnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfmnaHnm67or7fmsYLph43lrprlkJEnLCAn5qKd55uu6KuL5rGC6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6ZyA6KaB54us56uL5p2h55uu55qE6aG16Z2iJywgJ+mcgOimgeeNqOeri+aineebrueahOmggemdoicpLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdyZXFBcnRpY2xlTGFuZycsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5aSW6Kqe6Kqe6KiA5Luj56K877yaJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogJ+S9v+eUqElTTyA2Mznku6PnorzvvIzlj6/lj4PoposgVGVtcGxhdGU6SVNPXzYzOV9uYW1lJyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdyZXFBcnRpY2xlVGl0bGUnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+WkluiqnumggemdouWQjeeose+8micsXG5cdFx0XHRcdFx0XHRcdHNpemU6IDYwLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+W/q+aNt+aWueW8j+mHjeWumuWQkScsICfmjbflvpHph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmsYLpl7vnmb7np5Hlv6vmjbfmlrnlvI8nLCAn5rGC6IGe55m+56eR5b+r5o235pa55byPJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+mynOeUqOaooeadvycsICfprq7nlKjmqKHmnb8nKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn6K+N57uE6YeN5a6a5ZCRJywgJ+ipnue1hOmHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bCG6K+N57uEL+ivjee7hC/miJDor63mjIflkJHliIfpopjnmoTmnaHnm67lj4rmgbDlvZPnq6DoioInLFxuXHRcdFx0XHRcdFx0J+Wwh+ipnue1hC/oqZ7ntYQv5oiQ6Kqe5oyH5ZCR5YiH6aGM55qE5qKd55uu5Y+K5oGw55W256ug56+AJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5raI5q2n5LmJ6aG16YeN5a6a5ZCRJywgJ+a2iOatp+e+qemggemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+aMh+WQkea2iOatp+S5iemhtScsICfmjIflkJHmtojmrafnvqnpoIEnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+Wfn+WQjemHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Z+f5ZCNJywgJ+e2suWfn+WQjeeosScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5bm05Luj6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfkuo7lubTku73mnaHnm67lr7zlkJHoh7PlubTku6PmnaHnm64nLCAn5pa85bm05Lu95qKd55uu5bCO5ZCR6Iez5bm05Luj5qKd55uuJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn55So5oi35qGG5qih5p2/6YeN5a6a5ZCRJywgJ+eUqOaItuahhuaooeadv+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+ahhuaooeadvycsICfnlKjmiLbmoYbmqKHmnb8nKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+mHjeWumuWQkeaooeadv+eUqOmHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+85ZCR6Iez6YeN5a6a5ZCR5qih5p2/JywgJ+WwjuWQkeiHs+mHjeWumuWQkeaooeadvycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAnRVhJRumHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygnSlBFR+WbvuWDj+aWh+S7tuWMheWQq0VYSUbkv6Hmga8nLCAnSlBFR+WcluaqlOWMheWQq0VYSUbos4foqIonKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XTtcblx0Ly8gbWFpbnRlbmFuY2UgdGFncyBmb3IgRklMRVMgc3RhcnQgaGVyZVxuXHRUd2lua2xlLnRhZy5maWxlTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6JGX5L2c5p2D5ZKM5p2l5rqQ6Zeu6aKY5qCH562+JywgJ+iRl+S9nOasiuWSjOS+hua6kOWVj+mhjOaomeexpCcpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3tOb24tZnJlZSByZWR1Y2V9fe+8miR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+mdnuS9juWIhui+qOeOh+eahOWQiOeQhuS9v+eUqOWbvuWDj++8iOaIlui/h+mVv+eahOmfs+mikeWJqui+keetie+8iScsXG5cdFx0XHRcdFx0XHQn6Z2e5L2O6Kej5p6Q5bqm55qE5ZCI55CG5L2/55So5ZyW5YOP77yI5oiW6YGO6ZW355qE6Z+z6aC75Ymq6Lyv562J77yJJ1xuXHRcdFx0XHRcdCl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ05vbi1mcmVlIHJlZHVjZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+a4heeQhuagh+etvicsICfmuIXnkIbmqJnnsaQnKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7V2F0ZXJtYXJrfX3vvJoke3dpbmRvdy53Z1VMUygn5Zu+5YOP5YyF5ZCr5LqG5rC05Y2wJywgJ+WcluWDj+WMheWQq+S6hua1ruawtOWNsCcpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdXYXRlcm1hcmsnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e1JlbmFtZSBtZWRpYX1977yaJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5paH5Lu25bqU6K+l5qC55o2u5paH5Lu25ZCN56ew5oyH5byV6KKr6YeN5ZG95ZCNJyxcblx0XHRcdFx0XHRcdCfmqpTmoYjmh4noqbLmoLnmk5rmqpTmoYjlkI3nqLHmjIflvJXooqvph43mlrDlkb3lkI0nXG5cdFx0XHRcdFx0KX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAnUmVuYW1lIG1lZGlhJyxcblx0XHRcdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAncmVuYW1lbWVkaWFOZXduYW1lJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5paw5ZCN56ew77yaJywgJ+aWsOWQjeeose+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+i+k+WFpeWbvuWDj+eahOaWsOWQjeensO+8iOWPr+mAie+8iScsICfovLjlhaXlnJblg4/nmoTmlrDlkI3nqLHvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdyZW5hbWVtZWRpYVJlYXNvbicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5Y6f5Zug77yaJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfovpPlhaXph43lkb3lkI3nmoTljp/lm6DvvIjlj6/pgInvvIknLCAn6Ly45YWl6YeN5paw5ZG95ZCN55qE5Y6f5Zug77yI5Y+v6YG477yJJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7U2hvdWxkIGJlIFNWR31977yaJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQnUE5H44CBR0lG44CBSlBFR+aWh+S7tuW6lOivpemHjeWItuaIkOefoumHj+WbvuW9oicsXG5cdFx0XHRcdFx0XHQnUE5H44CBR0lG44CBSlBFR+aqlOahiOaHieipsumHjeijveaIkOWQkemHj+WcluW9oidcblx0XHRcdFx0XHQpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdTaG91bGQgYmUgU1ZHJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5paH5Lu25Y+W5Luj5qCH562+JywgJ+aqlOahiOWPluS7o+aomeexpCcpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3tPYnNvbGV0ZX1977yaJHt3aW5kb3cud2dVTFMoJ+acieaWsOeJiOacrOWPr+eUqOeahOi/h+aXtuaWh+S7ticsICfmnInmlrDniYjmnKzlj6/nlKjnmoTpgY7mmYLmqpTmoYgnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAnT2Jzb2xldGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e1ZlY3RvciB2ZXJzaW9uIGF2YWlsYWJsZX1977yaJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5pyJ55+i6YeP5Zu+5b2i5Y+v55So55qE6Z2e55+i6YeP5Zu+5b2i5paH5Lu2Jyxcblx0XHRcdFx0XHRcdCfmnInlkJHph4/lnJblvaLlj6/nlKjnmoTpnZ7lkJHph4/lnJblvaLmqpTmoYgnXG5cdFx0XHRcdFx0KX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0XHRidWlsZEZpbGVuYW1lOiB0cnVlLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUudGFnLmNhbGxiYWNrcyA9IHtcblx0XHRhcnRpY2xlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Ly8gUmVtb3ZlIHRhZ3MgdGhhdCBiZWNvbWUgc3VwZXJmbHVvdXMgd2l0aCB0aGlzIGFjdGlvblxuXHRcdFx0bGV0IHBhZ2VUZXh0ID0gcGFnZW9ialxuXHRcdFx0XHQuZ2V0UGFnZVRleHQoKVxuXHRcdFx0XHQucmVwbGFjZShcblx0XHRcdFx0XHQvXFx7XFx7XFxzKihbTm5dZXcgdW5yZXZpZXdlZCBhcnRpY2xlfFtVdV1ucmV2aWV3ZWR8W1V1XXNlcnNwYWNlIGRyYWZ0KVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZyxcblx0XHRcdFx0XHQnJ1xuXHRcdFx0XHQpO1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdC8qKlxuXHRcdFx0ICogU2F2ZXMgdGhlIHBhZ2UgZm9sbG93aW5nIHRoZSByZW1vdmFsIG9mIHRhZ3MgaWYgYW55LiBUaGUgbGFzdCBzdGVwLlxuXHRcdFx0ICogQ2FsbGVkIGZyb20gcmVtb3ZlVGFncygpXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IHBvc3RSZW1vdmFsID0gKCkgPT4ge1xuXHRcdFx0XHRpZiAocGFyYW1zLnRhZ3NUb1JlbW92ZS5sZW5ndGgpIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgZW1wdHkge3ttdWx0aXBsZSBpc3N1ZXN9fSBpZiBmb3VuZFxuXHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdC9cXHtcXHsobXVsdGlwbGUgP2lzc3Vlc3xhcnRpY2xlID9pc3N1ZXN8bWl8YWl8aXNzdWVzfOWkmuWAi+WVj+mhjHzlpJrkuKrpl67poph85ZWP6aGM5qKd55uufOmXrumimOadoeebrnzmlbjlgIvllY/poYx85pWw5Liq6Zeu6aKYKVxccypcXHxcXHMqXFx9XFx9XFxuPy9pbSxcblx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHQvLyBSZW1vdmUgc2luZ2xlLWVsZW1lbnQge3ttdWx0aXBsZSBpc3N1ZXN9fSBpZiBmb3VuZFxuXHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdC9cXHtcXHsoPzptdWx0aXBsZSA/aXNzdWVzfGFydGljbGUgP2lzc3Vlc3xtaXxhaXxpc3N1ZXN85aSa5YCL5ZWP6aGMfOWkmuS4qumXrumimHzllY/poYzmop3nm6586Zeu6aKY5p2h55uufOaVuOWAi+WVj+mhjHzmlbDkuKrpl67popgpXFxzKlxcfFxccyooXFx7XFx7KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKStcXH1cXH0pXFxzKlxcfVxcfS9pbSxcblx0XHRcdFx0XHRcdCckMSdcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEJ1aWxkIGVkaXQgc3VtbWFyeVxuXHRcdFx0XHRjb25zdCBtYWtlU2VudGVuY2UgPSAoYXJyYXkpID0+IHtcblx0XHRcdFx0XHRpZiAoYXJyYXkubGVuZ3RoIDwgMykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFycmF5LmpvaW4oJ+WSjCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBsYXN0ID0gYXJyYXkucG9wKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGAke2FycmF5LmpvaW4oJ+OAgScpfeWSjCR7bGFzdH1gO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBtYWtlVGVtcGxhdGVMaW5rID0gKHRhZykgPT4ge1xuXHRcdFx0XHRcdGxldCB0ZXh0ID0gJ3t7W1snO1xuXHRcdFx0XHRcdC8vIGlmIGl0IGlzIGEgY3VzdG9tIHRhZyB3aXRoIGEgcGFyYW1ldGVyXG5cdFx0XHRcdFx0aWYgKHRhZy5pbmNsdWRlcygnfCcpKSB7XG5cdFx0XHRcdFx0XHR0YWcgPSB0YWcuc2xpY2UoMCwgdGFnLmluZGV4T2YoJ3wnKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRleHQgKz0gdGFnLmluY2x1ZGVzKCc6JykgPyB0YWcgOiBgVGVtcGxhdGU6JHt0YWd9fCR7dGFnfWA7XG5cdFx0XHRcdFx0cmV0dXJuIGAke3RleHR9XV19fWA7XG5cdFx0XHRcdH07XG5cdFx0XHRcdGxldCBzdW1tYXJ5VGV4dDtcblx0XHRcdFx0Y29uc3QgYWRkZWRUYWdzID0gcGFyYW1zLnRhZ3MubWFwKG1ha2VUZW1wbGF0ZUxpbmspO1xuXHRcdFx0XHRjb25zdCByZW1vdmVkVGFncyA9IHBhcmFtcy50YWdzVG9SZW1vdmUubWFwKG1ha2VUZW1wbGF0ZUxpbmspO1xuXHRcdFx0XHRpZiAoYWRkZWRUYWdzLmxlbmd0aCkge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ID0gYOWKoOWFpSR7bWFrZVNlbnRlbmNlKGFkZGVkVGFncyl9YDtcblx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSByZW1vdmVkVGFncy5sZW5ndGggPyBg5Lim56e76ZmkJHttYWtlU2VudGVuY2UocmVtb3ZlZFRhZ3MpfWAgOiAnJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdW1tYXJ5VGV4dCA9IGDnp7vpmaQke21ha2VTZW50ZW5jZShyZW1vdmVkVGFncyl9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdW1tYXJ5VGV4dCArPSB3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKTtcblx0XHRcdFx0aWYgKHBhcmFtcy5yZWFzb24pIHtcblx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSBg77yaJHtwYXJhbXMucmVhc29ufWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gYXZvaWQgdHJ1bmNhdGVkIHN1bW1hcmllc1xuXHRcdFx0XHRpZiAoc3VtbWFyeVRleHQubGVuZ3RoID4gNDk5KSB7XG5cdFx0XHRcdFx0c3VtbWFyeVRleHQgPSBzdW1tYXJ5VGV4dC5yZXBsYWNlKC9cXFtcXFtbXnxdK1xcfChbXlxcXV0rKVxcXVxcXS9nLCAnJDEnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHBhZ2VUZXh0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShzdW1tYXJ5VGV4dCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoVGFnZ2VkUGFnZXMnKSk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0TWlub3JFZGl0KFR3aW5rbGUuZ2V0UHJlZignbWFya1RhZ2dlZFBhZ2VzQXNNaW5vcicpKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRcdHBhZ2VvYmouc2F2ZSgoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gc3BlY2lhbCBmdW5jdGlvbnMgZm9yIG1lcmdlIHRhZ3Ncblx0XHRcdFx0XHRpZiAocGFyYW1zLm1lcmdlUmVhc29uKSB7XG5cdFx0XHRcdFx0XHQvLyBwb3N0IHRoZSByYXRpb25hbGUgb24gdGhlIHRhbGsgcGFnZSAob25seSBvcGVyYXRlcyBpbiBtYWluIG5hbWVzcGFjZSlcblx0XHRcdFx0XHRcdGNvbnN0IHRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0YFRhbGs6JHtwYXJhbXMuZGlzY3Vzc0FydGljbGV9YCxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflsIbnkIbnlLHotLTov5vorqjorrrpobUnLCAn5bCH55CG55Sx6LK86YCy6KiO6KuW6aCBJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5zZXROZXdTZWN0aW9uVGV4dChgJHtwYXJhbXMubWVyZ2VSZWFzb24udHJpbSgpfSB+fmAuY29uY2F0KCd+ficpKTtcblx0XHRcdFx0XHRcdHRhbGtwYWdlLnNldE5ld1NlY3Rpb25UaXRsZShg6K+35rGC5LiOW1ske3BhcmFtcy5ub25EaXNjdXNzQXJ0aWNsZX1dXeWQiOW5tmApO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hNZXJnZURpc2N1c3Npb25zJykpO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2UubmV3U2VjdGlvbigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocGFyYW1zLm1lcmdlVGFnT3RoZXIpIHtcblx0XHRcdFx0XHRcdC8vIHRhZyB0aGUgdGFyZ2V0IHBhZ2UgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdFx0XHRsZXQgb3RoZXJUYWdOYW1lID0gJ01lcmdlJztcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VUYWcgPT09ICdNZXJnZSBmcm9tJykge1xuXHRcdFx0XHRcdFx0XHRvdGhlclRhZ05hbWUgPSAnTWVyZ2UgdG8nO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubWVyZ2VUYWcgPT09ICdNZXJnZSB0bycpIHtcblx0XHRcdFx0XHRcdFx0b3RoZXJUYWdOYW1lID0gJ01lcmdlIGZyb20nO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y29uc3QgbmV3UGFyYW1zID0ge1xuXHRcdFx0XHRcdFx0XHR0YWdzOiBbb3RoZXJUYWdOYW1lXSxcblx0XHRcdFx0XHRcdFx0dGFnc1RvUmVtb3ZlOiBbXSxcblx0XHRcdFx0XHRcdFx0dGFnc1RvUmVtYWluOiBbXSxcblx0XHRcdFx0XHRcdFx0bWVyZ2VUYXJnZXQ6IE1vcmViaXRzLnBhZ2VOYW1lTm9ybSxcblx0XHRcdFx0XHRcdFx0ZGlzY3Vzc0FydGljbGU6IHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSxcblx0XHRcdFx0XHRcdFx0dGFsa0Rpc2N1c3Npb25UaXRsZTogcGFyYW1zLnRhbGtEaXNjdXNzaW9uVGl0bGUsXG5cdFx0XHRcdFx0XHRcdHRhbGtEaXNjdXNzaW9uVGl0bGVMaW5rZWQ6IHBhcmFtcy50YWxrRGlzY3Vzc2lvblRpdGxlTGlua2VkLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGNvbnN0IG90aGVycGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldCxcblx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfmoIforrDlhbbku5bpobXpnaLvvIgnLCAn5qiZ6KiY5YW25LuW6aCB6Z2i77yIJykgKyBwYXJhbXMubWVyZ2VUYXJnZXR977yJYFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdG90aGVycGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMobmV3UGFyYW1zKTtcblx0XHRcdFx0XHRcdG90aGVycGFnZS5sb2FkKFR3aW5rbGUudGFnLmNhbGxiYWNrcy5hcnRpY2xlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gc3BlY2lhbCBmdW5jdGlvbnMgZm9yIHJlcXVlc3RlZCBtb3ZlIHRhZ3Ncblx0XHRcdFx0XHRpZiAocGFyYW1zLm1vdmVSZWFzb24pIHtcblx0XHRcdFx0XHRcdC8vIHBvc3QgdGhlIHJhdGlvbmFsZSBvbiB0aGUgdGFsayBwYWdlIChvbmx5IG9wZXJhdGVzIGluIG1haW4gbmFtZXNwYWNlKVxuXHRcdFx0XHRcdFx0bGV0IG1vdmVUYWxrcGFnZVRleHQgPSAnXFxuXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYFJNfDE9JHtwYXJhbXMubW92ZVJlYXNvbi50cmltKCl9YCk7XG5cdFx0XHRcdFx0XHRpZiAocGFyYW1zLm1vdmVUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlVGV4dCArPSBgfDI9JHtwYXJhbXMubW92ZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlVGV4dCArPSAnfX0nO1xuXHRcdFx0XHRcdFx0Y29uc3QgbW92ZVRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0YFRhbGs6JHtwYXJhbXMuZGlzY3Vzc0FydGljbGV9YCxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflsIbnkIbnlLHotLTov5vorqjorrrpobUnLCAn5bCH55CG55Sx6LK86YCy6KiO6KuW6aCBJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChtb3ZlVGFsa3BhZ2VUZXh0KTtcblx0XHRcdFx0XHRcdG1vdmVUYWxrcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fmsYLnp7vliqgnLCAn6KuL5rGC56e75YuVJykgK1xuXHRcdFx0XHRcdFx0XHRcdChwYXJhbXMubW92ZVRhcmdldCA/IGDoh7NbWyR7cGFyYW1zLm1vdmVUYXJnZXR9XV1gIDogJycpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRcdG1vdmVUYWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKHBhcmFtcy5wYXRyb2wpIHtcblx0XHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBSZW1vdmVzIHRoZSBleGlzdGluZyB0YWdzIHRoYXQgd2VyZSBkZXNlbGVjdGVkIChpZiBhbnkpXG5cdFx0XHQgKiBDYWxscyBwb3N0UmVtb3ZhbCgpIHdoZW4gZG9uZVxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCByZW1vdmVUYWdzID0gKCkgPT4ge1xuXHRcdFx0XHRpZiAocGFyYW1zLnRhZ3NUb1JlbW92ZS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRwb3N0UmVtb3ZhbCgpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+enu+mZpOWPlua2iOmAieaLqeeahOW3suWtmOWcqOagh+iusCcsICfnp7vpmaTlj5bmtojpgbjmk4fnmoTlt7LlrZjlnKjmqJnoqJgnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBnZXRSZWRpcmVjdHNGb3IgPSBbXTtcblx0XHRcdFx0Ly8gUmVtb3ZlIHRoZSB0YWdzIGZyb20gdGhlIHBhZ2UgdGV4dCwgaWYgZm91bmQgaW4gaXRzIHByb3BlciBuYW1lLFxuXHRcdFx0XHQvLyBvdGhlcndpc2UgbW92ZXMgaXQgdG8gYGdldFJlZGlyZWN0c0ZvcmAgYXJyYXkgZWFybWFya2luZyBpdCBmb3Jcblx0XHRcdFx0Ly8gbGF0ZXIgcmVtb3ZhbFxuXHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFnc1RvUmVtb3ZlKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGFnX3JlID0gbmV3IFJlZ0V4cChgXFxcXHtcXFxceyR7TW9yZWJpdHMucGFnZU5hbWVSZWdleCh0YWcpfVxcXFxzKihcXFxcfFtefV0rKT9cXFxcfVxcXFx9XFxcXG4/YCk7XG5cdFx0XHRcdFx0aWYgKHRhZ19yZS50ZXN0KHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKHRhZ19yZSwgJycpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRnZXRSZWRpcmVjdHNGb3JbZ2V0UmVkaXJlY3RzRm9yLmxlbmd0aF0gPSBgVGVtcGxhdGU6JHt0YWd9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFnZXRSZWRpcmVjdHNGb3IubGVuZ3RoKSB7XG5cdFx0XHRcdFx0cG9zdFJlbW92YWwoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUmVtb3ZlIHRhZ3Mgd2hpY2ggYXBwZWFyIGluIHBhZ2UgdGV4dCBhcyByZWRpcmVjdHNcblx0XHRcdFx0Y29uc3QgYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5qih5p2/6YeN5a6a5ZCRJywgJ+WPluW+l+aooeadv+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHByb3A6ICdsaW5rc2hlcmUnLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiBnZXRSZWRpcmVjdHNGb3Iuam9pbignfCcpLFxuXHRcdFx0XHRcdFx0cmVkaXJlY3RzOiAxLFxuXHRcdFx0XHRcdFx0bGhuYW1lc3BhY2U6ICcxMCcsXG5cdFx0XHRcdFx0XHRsaHNob3c6ICdyZWRpcmVjdCcsXG5cdFx0XHRcdFx0XHRsaGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdCQoYXBpb2JqLnJlc3BvbnNlWE1MKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgncGFnZScpXG5cdFx0XHRcdFx0XHRcdC5lYWNoKChfaWR4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHJlbW92ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHQkKHBhZ2UpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnbGgnKVxuXHRcdFx0XHRcdFx0XHRcdFx0LmVhY2goKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0YWcgPSAkKGVsZW1lbnQpLmF0dHIoJ3RpdGxlJykuc2xpY2UoOSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRhZ19yZSA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YFxcXFx7XFxcXHske01vcmViaXRzLnBhZ2VOYW1lUmVnZXgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxcXFxzKihcXFxcfCg/OlxcXFx7XFxcXHtbXnt9XSpcXFxcfVxcXFx9fFtee31dKSopP1xcXFx9XFxcXH1cXFxcbj9gXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0YWdfcmUudGVzdChwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVtb3ZlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBicmVhayBvdXQgb2YgJC5lYWNoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFyZW1vdmVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5peg5rOV5Zyo6aG16Z2i5LiK5om+5Yiwe3snLCAn54Sh5rOV5Zyo6aCB6Z2i5LiK5om+5Yiwe3snKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChwYWdlKS5hdHRyKCd0aXRsZScpLnNsaWNlKDkpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ3194oCm4oCm6Lez6L+HJywgJ3194oCm4oCm6Lez6YGOJylcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHBvc3RSZW1vdmFsKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhcGkucG9zdCgpO1xuXHRcdFx0fTtcblx0XHRcdGlmICghcGFyYW1zLnRhZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdHJlbW92ZVRhZ3MoKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHRhZ1JlO1xuXHRcdFx0bGV0IHRhZ1RleHQgPSAnJztcblx0XHRcdGxldCB0YWdzID0gW107XG5cdFx0XHRjb25zdCBncm91cGFibGVUYWdzID0gW107XG5cdFx0XHRjb25zdCBncm91cGFibGVFeGlzdGluZ1RhZ3MgPSBbXTtcblx0XHRcdC8vIEV4ZWN1dGVzIGZpcnN0OiBhZGRpdGlvbiBvZiBzZWxlY3RlZCB0YWdzXG5cdFx0XHQvKipcblx0XHRcdCAqIFVwZGF0ZXMgYHRhZ1RleHRgIHdpdGggdGhlIHN5bnRheCBvZiBgdGFnTmFtZWAgdGVtcGxhdGUgd2l0aCBpdHMgcGFyYW1ldGVyc1xuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0YWdOYW1lXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lKSA9PiB7XG5cdFx0XHRcdGxldCBjdXJyZW50VGFnID0gJyc7XG5cdFx0XHRcdGlmICh0YWdOYW1lID09PSAnVW5jYXRlZ29yaXplZCcgfHwgdGFnTmFtZSA9PT0gJ0ltcHJvdmUgY2F0ZWdvcmllcycpIHtcblx0XHRcdFx0XHRwYWdlVGV4dCArPSBgXFxuXFxue3ske3RhZ05hbWV9fHRpbWU9e3tgLmNvbmNhdCgnc3Vic3Q6JywgJyN0aW1lOmN9fX19Jyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudFRhZyArPSBge3ske3RhZ05hbWV9YDtcblx0XHRcdFx0XHQvLyBmaWxsIGluIG90aGVyIHBhcmFtZXRlcnMsIGJhc2VkIG9uIHRoZSB0YWdcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZ05hbWUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ0V4cGVydCBuZWVkZWQnOlxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8c3ViamVjdD0ke3BhcmFtcy5leHBlcnR9YDtcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5leHBlcnQyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfHN1YmplY3QyPSR7cGFyYW1zLmV4cGVydDJ9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmV4cGVydDMpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8c3ViamVjdDM9JHtwYXJhbXMuZXhwZXJ0M31gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UnOlxuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgdG8nOlxuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgZnJvbSc6XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBub3JtYWxpemUgdGhlIG1lcmdlIHRhcmdldCBmb3Igbm93IGFuZCBsYXRlclxuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldCA9IE1vcmViaXRzLnN0cmluZy50b1VwcGVyQ2FzZUZpcnN0Q2hhcihcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldC5yZXBsYWNlKC9fL2csICcgJylcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwke3BhcmFtcy5tZXJnZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0XHRcdC8vIGxpbmsgdG8gdGhlIGNvcnJlY3Qgc2VjdGlvbiBvbiB0aGUgdGFsayBwYWdlLCBmb3IgYXJ0aWNsZSBzcGFjZSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KHBhcmFtcy5tZXJnZVJlYXNvbiB8fCBwYXJhbXMuZGlzY3Vzc0FydGljbGUpXG5cdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXBhcmFtcy5kaXNjdXNzQXJ0aWNsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBkaXNjdXNzQXJ0aWNsZSBpcyB0aGUgYXJ0aWNsZSB3aG9zZSB0YWxrIHBhZ2Ugd2lsbCBjb250YWluIHRoZSBkaXNjdXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFnTmFtZSA9PT0gJ01lcmdlIHRvJyA/IHBhcmFtcy5tZXJnZVRhcmdldCA6IG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gbm9uRGlzY3Vzc0FydGljbGUgaXMgdGhlIGFydGljbGUgd2hpY2ggd29uJ3QgaGF2ZSB0aGUgZGlzY3Vzc2lvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMubm9uRGlzY3Vzc0FydGljbGUgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhZ05hbWUgPT09ICdNZXJnZSB0bycgPyBtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykgOiBwYXJhbXMubWVyZ2VUYXJnZXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy50YWxrRGlzY3Vzc2lvblRpdGxlID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+axguS4jicsICfoq4vmsYLoiIcnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyYW1zLm5vbkRpc2N1c3NBcnRpY2xlICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WQiOW5ticsICflkIjkvbUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHxkaXNjdXNzPVRhbGs6JHtwYXJhbXMuZGlzY3Vzc0FydGljbGV9IyR7cGFyYW1zLnRhbGtEaXNjdXNzaW9uVGl0bGV9YDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdNaXNzaW5nIGluZm9ybWF0aW9uJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXMubWlzc2luZ0luZm9ybWF0aW9ufWA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTm90YWJpbGl0eSc6XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMubm90YWJpbGl0eSAhPT0gJ25vbmUnKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDM9JHtwYXJhbXMubm90YWJpbGl0eX1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnUmVxdWVzdGVkIG1vdmUnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm1vdmVUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBub3JtYWxpemUgdGhlIG1vdmUgdGFyZ2V0IGZvciBub3cgYW5kIGxhdGVyXG5cdFx0XHRcdFx0XHRcdFx0cGFyYW1zLm1vdmVUYXJnZXQgPSBNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMubW92ZVRhcmdldC5yZXBsYWNlKC9fL2csICcgJylcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSA9IG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKTtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8JHtwYXJhbXMubW92ZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnU3BsaXQnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLnRhcmdldDEpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8MT0ke3BhcmFtcy50YXJnZXQxfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy50YXJnZXQyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDI9JHtwYXJhbXMudGFyZ2V0Mn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMudGFyZ2V0Mykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwzPSR7cGFyYW1zLnRhcmdldDN9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ0NsZWFudXAnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmNsZWFudXBSZWFzb24pIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8cmVhc29uPSR7cGFyYW1zLmNsZWFudXBSZWFzb259YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjdXJyZW50VGFnICs9ICd8dGltZT17eycuY29uY2F0KCdzdWJzdDonLCAnI3RpbWU6Y319fX1cXG4nKTtcblx0XHRcdFx0XHR0YWdUZXh0ICs9IGN1cnJlbnRUYWc7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHQvKipcblx0XHRcdCAqIEFkZHMgdGhlIHRhZ3Mgd2hpY2ggZ28gb3V0c2lkZSB7e211bHRpcGxlIGlzc3Vlc319LCBlaXRoZXIgYmVjYXVzZVxuXHRcdFx0ICogdGhlc2UgdGFncyBhcmVuJ3Qgc3VwcG9ydGVkIGluIHt7bXVsdGlwbGUgaXNzdWVzfX0gb3IgYmVjYXVzZVxuXHRcdFx0ICoge3ttdWx0aXBsZSBpc3N1ZXN9fSBpcyBub3QgYmVpbmcgYWRkZWQgdG8gdGhlIHBhZ2UgYXQgYWxsXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IGFkZFVuZ3JvdXBlZFRhZ3MgPSAoKSA9PiB7XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcblx0XHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlcyxcblx0XHRcdFx0Ly8gYXMgd2VsbCBhcyBkZWxldGlvbi9wcm90ZWN0aW9uLXJlbGF0ZWQgdGVtcGxhdGVzXG5cdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UocGFnZVRleHQpO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZXNBZnRlciA9XG5cdFx0XHRcdFx0Ly8gUHJvdGVjdGlvbiB0ZW1wbGF0ZXNcblx0XHRcdFx0XHQvLyBDU0Rcblx0XHRcdFx0XHQvLyBBZkRcblx0XHRcdFx0XHRgJHtUd2lua2xlLmhhdG5vdGVSZWdleH1wcHxwcC0uKj98KD86RGVsZXRlfERiLXJlYXNvbnxEfERlbGV0ZWJlY2F1c2V8RGJ86YCf5YigfOmAn+WIqnxTcGVlZHl8U0R85b+r5YigfOW/q+WIqnxDU0QpfFtyc2FpZnRjbXZdZmR8dmZkLSg/OmJ8cXxzfHNvdXJjZXx2fHdpa3QpfCg/Ouenu+WKqOWIsOe7tOWfunznp7vli5XliLDntq3ln7opKD865pWZ56eR5LmmfOaVmeenkeabuHzor63lvZV86Kqe6YyEfOaWh+W6k3zmlofluqt85a+85ri4fOWwjumBinzor43lhbh86Kme5YW4KWA7XG5cdFx0XHRcdHBhZ2VUZXh0ID0gcWl1d2VuX3BhZ2UuaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXModGFnVGV4dCwgdGVtcGxhdGVzQWZ0ZXIpLmdldFRleHQoKTtcblx0XHRcdFx0cmVtb3ZlVGFncygpO1xuXHRcdFx0fTtcblx0XHRcdC8vIFNlcGFyYXRlIHRhZ3MgaW50byBncm91cGFibGUgb25lcyAoYGdyb3VwYWJsZVRhZ3NgKSBhbmQgbm9uLWdyb3VwYWJsZSBvbmVzIChgdGFnc2ApXG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFncykge1xuXHRcdFx0XHR0YWdSZSA9IG5ldyBSZWdFeHAoYFxcXFx7XFxcXHske3RhZ30oXFxcXHx8XFxcXH1cXFxcfSlgLCAnaW0nKTtcblx0XHRcdFx0Ly8gcmVnZXggY2hlY2sgZm9yIHByZWV4aXN0ZW5jZSBvZiB0YWcgY2FuIGJlIHNraXBwZWQgaWYgaW4gY2FuUmVtb3ZlIG1vZGVcblx0XHRcdFx0aWYgKFR3aW5rbGUudGFnLmNhblJlbW92ZSB8fCAhdGFnUmUuZXhlYyhwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHR0YWcgPT09ICdOb3RhYmlsaXR5JyAmJlxuXHRcdFx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDAgfHxcblx0XHRcdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6K+l6aG16Z2i5LiN5piv5p2h55uu77yM5oKo5LuN6KaB5o+Q5oql5Yiw5YWz5rOo5bqm5o+Q5oql5ZCX77yfJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfoqbLpoIHpnaLkuI3mmK/mop3nm67vvIzmgqjku43opoHmj5DloLHliLDpl5zms6jluqbmj5DloLHll47vvJ8nXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpKVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHQnUWl1d2VuX3RhbGs65a2Y5bqf6K6o6K66L+WFs+azqOW6puaPkOaKpScsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5YWz5rOo5bqm6K6w5b2V6aG5JywgJ+WKoOWFpemXnOazqOW6puiomOmMhOmghScpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0XHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS50YWcuY2FsbGJhY2tzLm5vdGFiaWxpdHlMaXN0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gY29uZGl0aW9uIFR3aW5rbGUudGFnLmFydGljbGUudGFnc1t0YWddIHRvIGVuc3VyZSB0aGF0IGl0cyBub3QgYSBjdXN0b20gdGFnXG5cdFx0XHRcdFx0Ly8gQ3VzdG9tIHRhZ3MgYXJlIGFzc3VtZWQgbm9uLWdyb3VwYWJsZSwgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGV0aGVyIE1JIHRlbXBsYXRlIHN1cHBvcnRzIHRoZW1cblx0XHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10gJiYgIVR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmV4Y2x1ZGVNSSkge1xuXHRcdFx0XHRcdFx0Z3JvdXBhYmxlVGFnc1tncm91cGFibGVUYWdzLmxlbmd0aF0gPSB0YWc7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRhZ3NbdGFncy5sZW5ndGhdID0gdGFnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh0YWcgPT09ICdNZXJnZSBmcm9tJykge1xuXHRcdFx0XHRcdHRhZ3NbdGFncy5sZW5ndGhdID0gdGFnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuaJvuWIsHt7JywgJ+WcqOmggemdouS4iuaJvuWIsHt7JykgKyB0YWcgKyB3aW5kb3cud2dVTFMoJ3194oCm4oCm6Lez6L+HJywgJ3194oCm4oCm6Lez6YGOJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vIGRvbid0IGRvIGFueXRoaW5nIGVsc2Ugd2l0aCBtZXJnZSB0YWdzXG5cdFx0XHRcdFx0aWYgKFsnTWVyZ2UnLCAnTWVyZ2UgdG8nXS5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdFx0XHRwYXJhbXMubWVyZ2VUYXJnZXQgPSBudWxsO1xuXHRcdFx0XHRcdFx0cGFyYW1zLm1lcmdlUmVhc29uID0gbnVsbDtcblx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhZ090aGVyID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIFRvLWJlLXJldGFpbmVkIGV4aXN0aW5nIHRhZ3MgdGhhdCBhcmUgZ3JvdXBhYmxlXG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFnc1RvUmVtYWluKSB7XG5cdFx0XHRcdC8vIElmIHRoZSB0YWcgaXMgdW5rbm93biB0byB1cywgd2UgY29uc2lkZXIgaXQgbm9uLWdyb3VwYWJsZVxuXHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10gJiYgIVR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmV4Y2x1ZGVNSSkge1xuXHRcdFx0XHRcdGdyb3VwYWJsZUV4aXN0aW5nVGFnc1tncm91cGFibGVFeGlzdGluZ1RhZ3MubGVuZ3RoXSA9IHRhZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbWlUZXN0ID1cblx0XHRcdFx0L1xce1xceyhtdWx0aXBsZSA/aXNzdWVzfGFydGljbGUgP2lzc3Vlc3xtaXxhaXxpc3N1ZXN85aSa5YCL5ZWP6aGMfOWkmuS4qumXrumimHzllY/poYzmop3nm6586Zeu6aKY5p2h55uufOaVuOWAi+WVj+mhjHzmlbDkuKrpl67popgpXFxzKlxcfFtefV0rXFx7L2ltLmV4ZWMoXG5cdFx0XHRcdFx0cGFnZVRleHRcblx0XHRcdFx0KTtcblx0XHRcdGlmIChtaVRlc3QgJiYgZ3JvdXBhYmxlVGFncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfliqDlhaXmlK/mjIHnmoTmoIforrDlhaXlt7LlrZjlnKjnmoR7e211bHRpcGxlIGlzc3Vlc319Jyxcblx0XHRcdFx0XHRcdCfliqDlhaXmlK/mj7TnmoTmqJnoqJjlhaXlt7LlrZjlnKjnmoR7e211bHRpcGxlIGlzc3Vlc319J1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0dGFnVGV4dCA9ICcnO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBncm91cGFibGVUYWdzKSB7XG5cdFx0XHRcdFx0YWRkVGFnKHRhZyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgbWlSZWdleCA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdFx0YChcXFxce1xcXFx7XFxcXHMqJHttaVRlc3RbMV19XFxcXHMqKD86XFxcXHwoPzpcXFxce1xcXFx7W157fV0qXFxcXH1cXFxcfXxbXnt9XSkqKT8pXFxcXH1cXFxcfVxcXFxzKmAsXG5cdFx0XHRcdFx0J2ltJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UobWlSZWdleCwgYCQxJHt0YWdUZXh0fX19XFxuYCk7XG5cdFx0XHRcdHRhZ1RleHQgPSAnJztcblx0XHRcdFx0YWRkVW5ncm91cGVkVGFncygpO1xuXHRcdFx0fSBlbHNlIGlmIChwYXJhbXMuZ3JvdXAgJiYgIW1pVGVzdCAmJiBncm91cGFibGVFeGlzdGluZ1RhZ3MubGVuZ3RoICsgZ3JvdXBhYmxlVGFncy5sZW5ndGggPj0gMikge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeaUr+aMgeeahOagh+iusOWFpXt7bXVsdGlwbGUgaXNzdWVzfX0nLCAn5Yqg5YWl5pSv5o+055qE5qiZ6KiY5YWle3ttdWx0aXBsZSBpc3N1ZXN9fScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhZ1RleHQgKz0gJ3t7TXVsdGlwbGUgaXNzdWVzfFxcbic7XG5cdFx0XHRcdC8qKlxuXHRcdFx0XHQgKiBBZGRzIG5ld2x5IGFkZGVkIHRhZ3MgdG8gTUlcblx0XHRcdFx0ICovXG5cdFx0XHRcdGNvbnN0IGFkZE5ld1RhZ3NUb01JID0gKCkgPT4ge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIGdyb3VwYWJsZVRhZ3MpIHtcblx0XHRcdFx0XHRcdGFkZFRhZyh0YWcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0YWdUZXh0ICs9ICd9fVxcbic7XG5cdFx0XHRcdFx0YWRkVW5ncm91cGVkVGFncygpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBnZXRSZWRpcmVjdHNGb3IgPSBbXTtcblx0XHRcdFx0Ly8gUmVwb3NpdGlvbiB0aGUgdGFncyBvbiB0aGUgcGFnZSBpbnRvIHt7bXVsdGlwbGUgaXNzdWVzfX0sIGlmIGZvdW5kIHdpdGggaXRzXG5cdFx0XHRcdC8vIHByb3BlciBuYW1lLCBlbHNlIG1vdmVzIGl0IHRvIGBnZXRSZWRpcmVjdHNGb3JgIGFycmF5IHRvIGJlIGhhbmRsZWQgbGF0ZXJcblx0XHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgZ3JvdXBhYmxlRXhpc3RpbmdUYWdzKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGFnX3JlID0gbmV3IFJlZ0V4cChgKFxcXFx7XFxcXHske01vcmViaXRzLnBhZ2VOYW1lUmVnZXgodGFnKX1cXFxccyooXFxcXHxbXn1dKyk/XFxcXH1cXFxcfVxcXFxuPylgKTtcblx0XHRcdFx0XHRpZiAodGFnX3JlLnRlc3QocGFnZVRleHQpKSB7XG5cdFx0XHRcdFx0XHR0YWdUZXh0ICs9IHRhZ19yZS5leGVjKHBhZ2VUZXh0KVsxXTtcblx0XHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZSh0YWdfcmUsICcnKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Z2V0UmVkaXJlY3RzRm9yW2dldFJlZGlyZWN0c0Zvci5sZW5ndGhdID0gYFRlbXBsYXRlOiR7dGFnfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZ2V0UmVkaXJlY3RzRm9yLmxlbmd0aCkge1xuXHRcdFx0XHRcdGFkZE5ld1RhZ3NUb01JKCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPluaooeadv+mHjeWumuWQkScsICflj5blvpfmqKHmnb/ph43mlrDlsI7lkJEnKSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHRwcm9wOiAnbGlua3NoZXJlJyxcblx0XHRcdFx0XHRcdHRpdGxlczogZ2V0UmVkaXJlY3RzRm9yLmpvaW4oJ3wnKSxcblx0XHRcdFx0XHRcdHJlZGlyZWN0czogMSxcblx0XHRcdFx0XHRcdGxobmFtZXNwYWNlOiAnMTAnLFxuXHRcdFx0XHRcdFx0bGhzaG93OiAncmVkaXJlY3QnLFxuXHRcdFx0XHRcdFx0bGhsaW1pdDogJ21heCcsIC8vIDUwMCBpcyBtYXggZm9yIG5vcm1hbCB1c2VycywgNTAwMCBmb3IgYm90cyBhbmQgc3lzb3BzXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdFx0XHQkKGFwaW9iai5yZXNwb25zZVhNTClcblx0XHRcdFx0XHRcdFx0LmZpbmQoJ3BhZ2UnKVxuXHRcdFx0XHRcdFx0XHQuZWFjaCgoX2lkeCwgcGFnZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdCQocGFnZSlcblx0XHRcdFx0XHRcdFx0XHRcdC5maW5kKCdsaCcpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZWFjaCgoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRhZyA9ICQoZWxlbWVudCkuYXR0cigndGl0bGUnKS5zbGljZSg5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGFnX3JlID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRgKFxcXFx7XFxcXHske01vcmViaXRzLnBhZ2VOYW1lUmVnZXgodGFnKX1cXFxccyooXFxcXHxbXn1dKik/XFxcXH1cXFxcfVxcXFxuPylgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0YWdfcmUudGVzdChwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdUZXh0ICs9IHRhZ19yZS5leGVjKHBhZ2VUZXh0KVsxXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTsgLy8gYnJlYWsgb3V0IG9mICQuZWFjaFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmICghZm91bmQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfml6Dms5XlnKjpobXpnaLkuIrmib7liLB7eycsICfnhKHms5XlnKjpoIHpnaLkuIrmib7liLB7eycpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHBhZ2UpLmF0dHIoJ3RpdGxlJykuc2xpY2UoOSkgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnfX3igKbigKbot7Pov4cnLCAnfX3igKbigKbot7PpgY4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YWRkTmV3VGFnc1RvTUkoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGFwaS5wb3N0KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0YWdzID0gWy4uLnRhZ3MsIC4uLmdyb3VwYWJsZVRhZ3NdO1xuXHRcdFx0XHRhZGRVbmdyb3VwZWRUYWdzKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRub3RhYmlsaXR5TGlzdDogKHBhZ2VvYmopID0+IHtcblx0XHRcdHBhZ2VvYmouc2V0QXBwZW5kVGV4dCgnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYEZhbWVpdGVtfHRpdGxlPSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19YCkpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShg5Yqg5YWlW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWApO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouYXBwZW5kKCk7XG5cdFx0fSxcblx0XHRyZWRpcmVjdDogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRsZXQgcGFnZVRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRsZXQgdGFnUmU7XG5cdFx0XHRsZXQgdGFnVGV4dCA9ICcnO1xuXHRcdFx0bGV0IHN1bW1hcnlUZXh0ID0gJ+WKoOWFpSc7XG5cdFx0XHRjb25zdCB0YWdzID0gW107XG5cdFx0XHRsZXQgaTtcblx0XHRcdGZvciAoaSA9IDA7IGkgPCBwYXJhbXMudGFncy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR0YWdSZSA9IG5ldyBSZWdFeHAoYChcXFxce1xcXFx7JHtwYXJhbXMudGFnc1tpXX0oXFxcXHx8XFxcXH1cXFxcfSkpYCwgJ2ltJyk7XG5cdFx0XHRcdGlmICh0YWdSZS5leGVjKHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WcqOmHjeWumuWQkeS4iuaJvuWIsHt7JywgJ+WcqOmHjeaWsOWwjuWQkeS4iuaJvuWIsHt7JykgK1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMudGFnc1tpXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnfX3igKbigKbot7Pov4cnLCAnfX3igKbigKbot7PpgY4nKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFnc1t0YWdzLmxlbmd0aF0gPSBwYXJhbXMudGFnc1tpXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gdXNlZCBpbiBBcnJheSNmb3JFYWNoXG5cdFx0XHRjb25zdCBhZGRUYWcgPSAodGFnTmFtZSwgdGFnSW5kZXgpID0+IHtcblx0XHRcdFx0dGFnVGV4dCArPSBgXFxue3ske3RhZ05hbWV9YDtcblx0XHRcdFx0aWYgKHRhZ05hbWUgPT09ICfpnZ7kuK3mlofph43lrprlkJEnKSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5hbHRMYW5nRnJvbSkge1xuXHRcdFx0XHRcdFx0dGFnVGV4dCArPSBgfDE9JHtwYXJhbXMuYWx0TGFuZ0Zyb219YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0KHRhZ05hbWUgPT09ICfmnaHnm67or7fmsYLph43lrprlkJEnIHx8IHRhZ05hbWUgPT09ICfmop3nm67oq4vmsYLph43lrprlkJEnKSAmJlxuXHRcdFx0XHRcdHBhcmFtcy5yZXFBcnRpY2xlTGFuZyAmJlxuXHRcdFx0XHRcdHBhcmFtcy5yZXFBcnRpY2xlVGl0bGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGFnVGV4dCArPSBgfDE9JHtwYXJhbXMucmVxQXJ0aWNsZUxhbmd9YDtcblx0XHRcdFx0XHR0YWdUZXh0ICs9IGB8Mj0ke3BhcmFtcy5yZXFBcnRpY2xlVGl0bGV9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0YWdUZXh0ICs9ICd9fSc7XG5cdFx0XHRcdGlmICh0YWdJbmRleCA+IDApIHtcblx0XHRcdFx0XHRpZiAodGFnSW5kZXggPT09IHRhZ3MubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0c3VtbWFyeVRleHQgKz0gJ+WSjCc7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0YWdJbmRleCA8IHRhZ3MubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0c3VtbWFyeVRleHQgKz0gJ+OAgSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnlUZXh0ICs9IGB7e1tbOiR7dGFnTmFtZS5pbmNsdWRlcygnOicpID8gdGFnTmFtZSA6IGBUZW1wbGF0ZToke3RhZ05hbWV9fCR7dGFnTmFtZX1gfV1dfX1gO1xuXHRcdFx0fTtcblx0XHRcdGlmICghdGFncy5sZW5ndGgpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmsqHmnInmoIfnrb7lj6/kvpvmoIforrAnLCAn5rKS5pyJ5qiZ57Gk5Y+v5L6b5qiZ6KiYJylcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHRhZ3Muc29ydCgpO1xuXHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdH1cblx0XHRcdC8vIENoZWNrIGZvciBhbGwgUmNhdCBzaGVsbCByZWRpcmVjdHMgKGZyb20gIzQzMylcblx0XHRcdGlmIChwYWdlVGV4dC5tYXRjaCgve3soPzpyZWRyfHRoaXMgaXMgYSByZWRpcmVjdHxyKD86ZWRpcmVjdCk/KD86Lj9jYXQuKik/WyBfXT9zaCkvaSkpIHtcblx0XHRcdFx0Ly8gUmVnZXggaW5zcGlyZWQgYnkgW1tVc2VyOktlcGhpci9nYWRnZXRzL3NhZ2l0dGFyaXVzLmpzXV0gKFtbU3BlY2lhbDpQZXJtYUxpbmsvODMxNDAyODkzXV0pXG5cdFx0XHRcdGNvbnN0IG9sZFRhZ3MgPSBwYWdlVGV4dC5tYXRjaCgvKFxccyp7e1tBLVphLXpcXHNdK1xcfCg/OlxccyoxPSk/KSgoPzpbXnx7fV18e3tbXn1dK319KSspKH19KVxccyovaSk7XG5cdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZShvbGRUYWdzWzBdLCBvbGRUYWdzWzFdICsgdGFnVGV4dCArIG9sZFRhZ3NbMl0gKyBvbGRUYWdzWzNdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEZvbGQgYW55IHByZS1leGlzdGluZyBSY2F0cyBpbnRvIHRhZ2xpc3QgYW5kIHVuZGVyIFJjYXRzaGVsbFxuXHRcdFx0XHRjb25zdCBwYWdlVGFncyA9IHBhZ2VUZXh0Lm1hdGNoKC9cXHMqe3suKz/ph43lrprlkJEuKj99fS9naW0pO1xuXHRcdFx0XHRsZXQgb2xkUGFnZVRhZ3MgPSAnJztcblx0XHRcdFx0aWYgKHBhZ2VUYWdzKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgcGFnZVRhZyBvZiBwYWdlVGFncykge1xuXHRcdFx0XHRcdFx0Y29uc3QgcGFnZVJlID0gbmV3IFJlZ0V4cChNb3JlYml0cy5zdHJpbmcuZXNjYXBlUmVnRXhwKHBhZ2VUYWcpLCAnaW1nJyk7XG5cdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UocGFnZVJlLCAnJyk7XG5cdFx0XHRcdFx0XHRwYWdlVGFnID0gcGFnZVRhZy50cmltKCk7XG5cdFx0XHRcdFx0XHRvbGRQYWdlVGFncyArPSBgXFxuJHtwYWdlVGFnfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VUZXh0ICs9IGBcXG57e1JlZGlyZWN0IGNhdGVnb3J5IHNoZWxsfCR7dGFnVGV4dH0ke29sZFBhZ2VUYWdzfVxcbn19YDtcblx0XHRcdH1cblx0XHRcdHN1bW1hcnlUZXh0ICs9XG5cdFx0XHRcdCh0YWdzLmxlbmd0aCA+IDAgPyB3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKSA6ICd7e1JlZGlyZWN0IGNhdGVnb3J5IHNoZWxsfX0nKSArXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yiw6YeN5a6a5ZCRJywgJ+WIsOmHjeaWsOWwjuWQkScpO1xuXHRcdFx0Ly8gYXZvaWQgdHJ1bmNhdGVkIHN1bW1hcmllc1xuXHRcdFx0aWYgKHN1bW1hcnlUZXh0Lmxlbmd0aCA+IDQ5OSkge1xuXHRcdFx0XHRzdW1tYXJ5VGV4dCA9IHN1bW1hcnlUZXh0LnJlcGxhY2UoL1xcW1xcW1tefF0rXFx8KFteXFxdXSspXFxdXFxdL2csICckMScpO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dChwYWdlVGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnlUZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFRhZ2dlZFBhZ2VzJykpO1xuXHRcdFx0cGFnZW9iai5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFnZ2VkUGFnZXNBc01pbm9yJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHRcdGlmIChwYXJhbXMucGF0cm9sKSB7XG5cdFx0XHRcdHBhZ2VvYmoucGF0cm9sKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRmaWxlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0bGV0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0bGV0IHN1bW1hcnkgPSAn5Yqg5YWlJztcblx0XHRcdC8vIEFkZCBtYWludGVuYW5jZSB0YWdzXG5cdFx0XHRpZiAocGFyYW1zLnRhZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdGxldCB0YWd0ZXh0ID0gJyc7XG5cdFx0XHRcdGxldCBjdXJyZW50VGFnO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFncykge1xuXHRcdFx0XHRcdC8vIHdoZW4gb3RoZXIgY29tbW9ucy1yZWxhdGVkIHRhZ3MgYXJlIHBsYWNlZCwgcmVtb3ZlIFwibW92ZSB0byBTaGFyZVwiIHRhZ1xuXHRcdFx0XHRcdGlmIChbJ0tlZXAgbG9jYWwnLCAnTm93IFFpdXdlbiBTaGFyZScsICdEbyBub3QgbW92ZSB0byBRaXV3ZW4gU2hhcmUnXS5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0XHQve3sobXRjfChjb3B5IHxtb3ZlICk/dG8gP3NoYXJlfG1vdmUgdG8gcWl1d2VuIHNoYXJlfGNvcHkgdG8gcWl1d2VuIHNoYXJlKVtefV0qfX0vZ2ksXG5cdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGFnID09PSAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJykge1xuXHRcdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0L1xce1xceygoY29udmVydCB0byB8Y29udmVydHRvfHNob3VsZCBiZSB8c2hvdWxkYmV8dG8pP3N2Z3xiYWRwbmd8dmVjdG9yaXplKVtefV0qXFx9XFx9L2dpLFxuXHRcdFx0XHRcdFx0XHQnJ1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y3VycmVudFRhZyA9IHRhZztcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdFx0Y2FzZSAnTm93IENvbW1vbnMnOlxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnID0gYHN1YnN0OiR7Y3VycmVudFRhZ31gOyAvLyBzdWJzdFxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm5vd2NvbW1vbnNOYW1lICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwxPSR7cGFyYW1zLm5vd2NvbW1vbnNOYW1lfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdLZWVwIGxvY2FsJzpcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5rZWVwbG9jYWxOYW1lICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwxPSR7cGFyYW1zLmtlZXBsb2NhbE5hbWV9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmtlZXBsb2NhbFJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8cmVhc29uPSR7cGFyYW1zLmtlZXBsb2NhbFJlYXNvbn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnUmVuYW1lIG1lZGlhJzpcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5yZW5hbWVtZWRpYU5ld25hbWUgIT09ICcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXMucmVuYW1lbWVkaWFOZXduYW1lfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5yZW5hbWVtZWRpYVJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8Mj0ke3BhcmFtcy5yZW5hbWVtZWRpYVJlYXNvbn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJzpcblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRcdGNhc2UgJ09ic29sZXRlJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXNbYCR7dGFnLnJlcGxhY2UoLyAvZywgJ18nKX1GaWxlYF19YDtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdEbyBub3QgbW92ZSB0byBDb21tb25zJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfHJlYXNvbj0ke3BhcmFtcy5Eb05vdE1vdmVUb0NvbW1vbnNfcmVhc29ufWA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnQ29weSB0byBXaWtpbWVkaWEgQ29tbW9ucyc6XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHxodW1hbj0ke213LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKX1gO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gZG9uJ3QgY2FyZVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGN1cnJlbnRUYWcgPSBge3ske2N1cnJlbnRUYWd9fX1cXG5gO1xuXHRcdFx0XHRcdHRhZ3RleHQgKz0gY3VycmVudFRhZztcblx0XHRcdFx0XHRzdW1tYXJ5ICs9IGB7eyR7dGFnfX1944CBYDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIXRhZ3RleHQpIHtcblx0XHRcdFx0XHRwYWdlb2JqXG5cdFx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0XHQud2Fybih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nO+8jOayoeS7gOS5iOimgeWBmueahCcsICfkvb/nlKjogIXlj5bmtojmk43kvZzvvIzmspLku4DpurzopoHlgZrnmoQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRleHQgPSB0YWd0ZXh0ICsgdGV4dDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkuc2xpY2UoMCwgTWF0aC5tYXgoMCwgc3VtbWFyeS5sZW5ndGggLSAxKSkpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoVGFnZ2VkUGFnZXMnKSk7XG5cdFx0XHRwYWdlb2JqLnNldE1pbm9yRWRpdChUd2lua2xlLmdldFByZWYoJ21hcmtUYWdnZWRQYWdlc0FzTWlub3InKSk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0aWYgKHBhcmFtcy5wYXRyb2wpIHtcblx0XHRcdFx0cGFnZW9iai5wYXRyb2woKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLnRhZy5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHBhcmFtcyA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0Ly8gVmFsaWRhdGlvblxuXHRcdC8vIEdpdmVuIGFuIGFycmF5IG9mIGluY29tcGF0aWJsZSB0YWdzLCBjaGVjayBpZiB3ZSBoYXZlIHR3byBvciBtb3JlIHNlbGVjdGVkXG5cdFx0Y29uc3QgY2hlY2tJbmNvbXBhdGlibGUgPSAoY29uZmxpY3RzLCBleHRyYSkgPT4ge1xuXHRcdFx0Y29uc3QgY291bnQgPSBjb25mbGljdHMucmVkdWNlKChzdW0sIHRhZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gKHN1bSArPSBwYXJhbXMudGFncy5pbmNsdWRlcyh0YWcpKTtcblx0XHRcdH0sIDApO1xuXHRcdFx0aWYgKGNvdW50ID4gMSkge1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9IGAke3dpbmRvdy53Z1VMUygn6K+35Zyo5Lul5LiL5qCH562+5Lit5oup5LiA5L2/55SoJywgJ+iri+WcqOS7peS4i+aomeexpOS4reaTh+S4gOS9v+eUqCcpfe+8mnt7JHtjb25mbGljdHMuam9pbihcblx0XHRcdFx0XHQnfX3jgIF7eydcblx0XHRcdFx0KX19feOAgmA7XG5cdFx0XHRcdG1lc3NhZ2UgKz0gZXh0cmEgfHwgJyc7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KG1lc3NhZ2UsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvLyBHaXZlbiBhIHRhZywgZW5zdXJlIGFuIGFzc29jaWF0ZSBwYXJhbWV0ZXIgaXMgcHJlc2VudFxuXHRcdC8vIE1heWJlIGp1c3Qgc29jayB0aGlzIGF3YXkgaW4gZWFjaCBmdW5jdGlvbj8/P1xuXHRcdGNvbnN0IGNoZWNrUGFyYW1ldGVyID0gKHRhZywgcGFyYW1ldGVyLCBkZXNjcmlwdGlvbiA9ICfnkIbnlLEnKSA9PiB7XG5cdFx0XHRpZiAocGFyYW1zLnRhZ3MuaW5jbHVkZXModGFnKSAmJiBwYXJhbXNbcGFyYW1ldGVyXS50cmltKCkgPT09ICcnKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGAke3dpbmRvdy53Z1VMUygn5oKo5b+F6aG75oyH5a6aJywgJ+aCqOW/hemgiOaMh+WumicpfXt7JHt0YWd9fX3nmoQke2Rlc2NyaXB0aW9ufeOAgmAsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvLyBXZSBjb3VsZCB0aGVvcmV0aWNhbGx5IHB1dCB0aGVtIGFsbCBjaGVja0luY29tcGF0aWJsZSBjYWxscyBpbiBhXG5cdFx0Ly8gZm9yRWFjaCBsb29wLCBidXQgaXQncyBwcm9iYWJseSBjbGVhcmVyIG5vdCB0byBoYXZlIFtbYXJyYXkgb25lXSxcblx0XHQvLyBbYXJyYXkgdHdvXV0gZGV2b2lkIG9mIGNvbnRleHQuIExpa2V3aXNlLCBhbGwgdGhlIGNoZWNrUGFyYW1ldGVyXG5cdFx0Ly8gY2FsbHMgY291bGQgYmUgaW4gb25lIGlmLCBidXQgY291bGQgYmUgc2ltaWxhcmx5IGNvbmZ1c2luZy5cblx0XHRzd2l0Y2ggKFR3aW5rbGUudGFnLm1vZGVFbikge1xuXHRcdFx0Y2FzZSAnYXJ0aWNsZSc6XG5cdFx0XHRcdHBhcmFtcy50YWdzVG9SZW1vdmUgPSBmb3JtLmdldFVuY2hlY2tlZCgnZXhpc3RpbmdUYWdzJyk7IC8vIG5vdCBpbiBgaW5wdXRgXG5cdFx0XHRcdHBhcmFtcy50YWdzVG9SZW1haW4gPSBwYXJhbXMuZXhpc3RpbmdUYWdzIHx8IFtdOyAvLyBjb250YWluZXIgbm90IGNyZWF0ZWQgaWYgbm9uZSBwcmVzZW50XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRwYXJhbXMudGFncy5pbmNsdWRlcygnTWVyZ2UnKSB8fFxuXHRcdFx0XHRcdHBhcmFtcy50YWdzLmluY2x1ZGVzKCdNZXJnZSBmcm9tJykgfHxcblx0XHRcdFx0XHRwYXJhbXMudGFncy5pbmNsdWRlcygnTWVyZ2UgdG8nKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRjaGVja0luY29tcGF0aWJsZShcblx0XHRcdFx0XHRcdFx0WydNZXJnZScsICdNZXJnZSBmcm9tJywgJ01lcmdlIHRvJ10sXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6Iul6ZyA6KaB5aSa5qyh5ZCI5bm277yM6K+35L2/55Soe3tNZXJnZX195bm255So566h6YGT56ym5YiG6ZqU5p2h55uu5ZCN77yI5L2G5Zyo6L+Z56eN5oOF5b2i5LitVHdpbmtsZeS4jeiDveiHquWKqOagh+iusOWFtuS7luadoeebru+8ieOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+iLpemcgOimgeWkmuasoeWQiOS9te+8jOiri+S9v+eUqHt7TWVyZ2V9feS4pueUqOeuoemBk+espuWIhumalOaineebruWQje+8iOS9huWcqOmAmeeoruaDheW9ouS4rVR3aW5rbGXkuI3og73oh6rli5XmqJnoqJjlhbbku5bmop3nm67vvInjgIInXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFwYXJhbXMubWVyZ2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ivt+aMh+WumuS9v+eUqOS6jm1lcmdl5qih5p2/5Lit55qE5Y+m5LiA5Liq6aG16Z2i5qCH6aKY44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn6KuL5oyH5a6a5L2/55So5pa8bWVyZ2XmqKHmnb/kuK3nmoTlj6bkuIDlgIvpoIHpnaLmqJnpoYzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoKHBhcmFtcy5tZXJnZVRhZ090aGVyIHx8IHBhcmFtcy5tZXJnZVJlYXNvbikgJiYgcGFyYW1zLm1lcmdlVGFyZ2V0LmluY2x1ZGVzKCd8JykpIHtcblx0XHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+W9k+WJjei/mOS4jeaUr+aMgeWcqOS4gOasoeWQiOW5tuS4reagh+iusOWkmuS4quadoeebru+8jOS4juW8gOWQr+WFs+S6juWkmuS4quadoeebrueahOiuqOiuuuOAguivt+S4jeimgeWLvumAieKAnOagh+iusOWFtuS7luadoeebruKAneW5tua4heepuuKAnOeQhueUseKAneahhuWQjuWGjeaPkOS6pOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+ebruWJjemChOS4jeaUr+aPtOWcqOS4gOasoeWQiOS9teS4reaomeiomOWkmuWAi+aineebru+8jOiIh+mWi+WVn+mXnOaWvOWkmuWAi+aineebrueahOiojuirluOAguiri+S4jeimgeWLvumBuOOAjOaomeiomOWFtuS7luaineebruOAjeS4pua4heepuuOAjOeQhueUseOAjeahhuW+jOWGjeaPkOS6pOOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICdmcmllbmRseXRhZycsXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRjaGVja1BhcmFtZXRlcihcblx0XHRcdFx0XHRcdCdNaXNzaW5nIGluZm9ybWF0aW9uJyxcblx0XHRcdFx0XHRcdCdtaXNzaW5nSW5mb3JtYXRpb24nLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnvLrlsJHnmoTlhoXlrrknLCAn57y65bCR55qE5YWn5a65Jylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hlY2tQYXJhbWV0ZXIoJ0V4cGVydCBuZWVkZWQnLCAnZXhwZXJ0Jywgd2luZG93LndnVUxTKCfkuJPlrrbpoobln58nLCAn5bCI5a626aCY5Z+fJykpKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmlsZSc6XG5cdFx0XHRcdC8vIFNpbGx5IHRvIHByb3ZpZGUgdGhlIHNhbWUgc3RyaW5nIHRvIGVhY2ggb2YgdGhlc2Vcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGNoZWNrUGFyYW1ldGVyKCdPYnNvbGV0ZScsICdPYnNvbGV0ZUZpbGUnLCB3aW5kb3cud2dVTFMoJ+abv+aNoueahOaWh+S7tuWQjeensCcsICfmm7/mj5vnmoTmqpTmoYjlkI3nqLEnKSkgfHxcblx0XHRcdFx0XHRjaGVja1BhcmFtZXRlcihcblx0XHRcdFx0XHRcdCdWZWN0b3IgdmVyc2lvbiBhdmFpbGFibGUnLFxuXHRcdFx0XHRcdFx0J1ZlY3Rvcl92ZXJzaW9uX2F2YWlsYWJsZUZpbGUnLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmm7/mjaLnmoTmlofku7blkI3np7AnLCAn5pu/5o+b55qE5qqU5qGI5ZCN56ixJylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hlY2tQYXJhbWV0ZXIoJ0RvIG5vdCBtb3ZlIHRvIENvbW1vbnMnLCAnRG9Ob3RNb3ZlVG9Db21tb25zX3JlYXNvbicpKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncmVkaXJlY3QnOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBUd2lua2xlLnRhZ++8muacquefpeaooeW8jyAke1R3aW5rbGUudGFnLm1vZGV9YCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICdmcmllbmRseXRhZycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Ly8gRmlsZS9yZWRpcmVjdDogcmV0dXJuIGlmIG5vIHRhZ3Mgc2VsZWN0ZWRcblx0XHQvLyBBcnRpY2xlOiByZXR1cm4gaWYgbm8gdGFnIGlzIHNlbGVjdGVkIGFuZCBubyBhbHJlYWR5IHByZXNlbnQgdGFnIGlzIGRlc2VsZWN0ZWRcblx0XHRpZiAocGFyYW1zLnRhZ3MubGVuZ3RoID09PSAwICYmIChUd2lua2xlLnRhZy5tb2RlRW4gIT09ICdhcnRpY2xlJyB8fCBwYXJhbXMudGFnc1RvUmVtb3ZlLmxlbmd0aCA9PT0gMCkpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5b+F6aG76YCJ5oup6Iez5bCR5LiA5Liq5qCH6K6w77yBJywgJ+W/hemgiOmBuOaTh+iHs+WwkeS4gOWAi+aomeiomO+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBNb3JlYml0cy5wYWdlTmFtZU5vcm07XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+agh+iusOWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5qiZ6KiY5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0aWYgKFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ3JlZGlyZWN0Jykge1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPSBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtLFxuXHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjmoIforrAnLCAn5q2j5Zyo5qiZ6KiYJykgKyBUd2lua2xlLnRhZy5tb2RlXG5cdFx0KTtcblx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUudGFnLmNhbGxiYWNrc1tUd2lua2xlLnRhZy5tb2RlRW5dKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS50YWcsICd0YWcnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHtnZW5lcmF0ZUFycmF5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVzdHViLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZXN0dWIoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZXN0dWIuanM6IFRhZyBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiU3R1YlwiKVxuXHQgKiBBY3RpdmUgb246IEV4aXN0aW5nIGFydGljbGVzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBGcmllbmRseUNvbmZpZ1xuXHQgKiBOb3RlOiBjdXN0b21pc2VkIGZyaWVuZGx5dGFnIG1vZHVsZVxuXHQgKi9cblx0VHdpbmtsZS5zdHViID0gKCkgPT4ge1xuXHRcdGlmIChNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSB7XG5cdFx0XHQvLyBTa2lwXG5cdFx0XHQvLyBhcnRpY2xlL2RyYWZ0IGFydGljbGUgdGFnZ2luZ1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQoWzAsIDExOF0uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSkgJiYgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5zdHViLm1vZGUgPSAn5p2h55uuJztcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoVHdpbmtsZS5zdHViLmNhbGxiYWNrLCAn5bCP5L2c5ZOBJywgJ2ZyaWVuZGx5LXRhZycsICfmoIforrDlsI/kvZzlk4EnKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRpZiAoTW9yZWJpdHMuaXNQYWdlUmVkaXJlY3QoKSkge1xuXHRcdFx0Ly8gU2tpcFxuXHRcdFx0Ly8gYXJ0aWNsZS9kcmFmdCBhcnRpY2xlIHRhZ2dpbmdcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0KChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAwIHx8IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDExOCkgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5zdHViLm1vZGUgPSB3aW5kb3cud2dVTFMoJ+adoeebricsICfmop3nm64nKTtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayxcblx0XHRcdFx0J+Wwj+S9nOWTgScsXG5cdFx0XHRcdCdmcmllbmRseS10YWcnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOWwj+S9nOWTgScsICfmqJnoqJjlsI/kvZzlk4EnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYzMCwgVHdpbmtsZS5zdHViLm1vZGUgPT09ICdhcnRpY2xlJyA/IDQ1MCA6IDQwMCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+Wwj+S9nOWTgeiqquaYjicsICflsI/kvZzlk4Hor7TmmI4nKSwgJ1FXOuWwj+S9nOWTgScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5bCP5L2c5ZOB6K6+572uJywgJ+Wwj+S9nOWTgeioreWumicpLCAnSDpUVy9QUkVGI3N0dWInKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjc3R1YicpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuc3R1Yi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0aWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYXRyb2xsaW5rJykubGVuZ3RoKSB7XG5cdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDpobXpnaLkuLrlt7Llt6Hmn6UnLCAn5qiZ6KiY6aCB6Z2i54K65bey5beh5p+lJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3BhdHJvbFBhZ2UnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3BhdHJvbFBhZ2UnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3R1YmJlZFBhZ2VzQXNQYXRyb2xsZWQnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHN3aXRjaCAoVHdpbmtsZS5zdHViLm1vZGUpIHtcblx0XHRcdGNhc2UgJ+aineebric6XG5cdFx0XHRjYXNlICfmnaHnm64nOlxuXHRcdFx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmnaHnm67lsI/kvZzlk4HmoIforrAnLCAn5qKd55uu5bCP5L2c5ZOB5qiZ6KiYJykpO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvcnRvcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p+l55yL5YiX6KGo77yaJywgJ+aqouimluWIl+ihqO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5Y+C5pWw6K6+572u77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aG544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5YGP5aW96Kit5a6a77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuc3R1Yi51cGRhdGVTb3J0T3JkZXIsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdjYXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjInnsbvlnosnLCAn5oyJ6aGe5YilJyksXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3N0dWJBcnRpY2xlU29ydE9yZGVyJykgPT09ICdjYXQnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnYWxwaGEnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+aMieWtl+avjScsXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3N0dWJBcnRpY2xlU29ydE9yZGVyJykgPT09ICdhbHBoYScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0YWdXb3JrQXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBUd2lua2xlLnN0dWLvvJrmnKrnn6XmqKHlvI8gJHtUd2lua2xlLnN0dWIubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVzdHViJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRpZiAoWyfmnaHnm64nLCAn5qKd55uuJ10uaW5jbHVkZXMoVHdpbmtsZS5zdHViLm1vZGUpKSB7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBzb3J0IGRyb3Bkb3duLCB0byBpbml0aWFsaXplIHRoZSB0YWcgbGlzdFxuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5zb3J0b3JkZXIuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5zdHViLmNoZWNrZWRUYWdzID0gW107XG5cdFR3aW5rbGUuc3R1Yi51cGRhdGVTb3J0T3JkZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHNvcnRvcmRlciA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFR3aW5rbGUuc3R1Yi5jaGVja2VkVGFncyA9IGUudGFyZ2V0LmZvcm0uZ2V0Q2hlY2tlZCgnYXJ0aWNsZVRhZ3MnKTtcblx0XHRUd2lua2xlLnN0dWIuY2hlY2tlZFRhZ3MgPz89IFtdO1xuXHRcdGNvbnN0IGNvbnRhaW5lciA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnZnJhZ21lbnQnLFxuXHRcdH0pO1xuXHRcdC8vIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgY2hlY2tib3gsIHdpdGggYXBwcm9wcmlhdGUgc3ViZ3JvdXAgaWYgbmVlZGVkXG5cdFx0Y29uc3QgbWFrZUNoZWNrYm94ID0gKHRhZywgZGVzY3JpcHRpb24pID0+IHtcblx0XHRcdGNvbnN0IGNoZWNrYm94ID0ge1xuXHRcdFx0XHR2YWx1ZTogdGFnLFxuXHRcdFx0XHRsYWJlbDogYHt7JHt0YWd9fX06ICR7ZGVzY3JpcHRpb259YCxcblx0XHRcdH07XG5cdFx0XHRpZiAoVHdpbmtsZS5zdHViLmNoZWNrZWRUYWdzLmluY2x1ZGVzKHRhZykpIHtcblx0XHRcdFx0Y2hlY2tib3guY2hlY2tlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY2hlY2tib3g7XG5cdFx0fTtcblx0XHQvLyBhcHBlbmQgYW55IGN1c3RvbSB0YWdzXG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tU3R1Ykxpc3QnKS5sZW5ndGgpIHtcblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBjdXN0b21jaGVja2JveGVzID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21TdHViTGlzdCcpKSB7XG5cdFx0XHRcdGN1c3RvbWNoZWNrYm94ZXNbY3VzdG9tY2hlY2tib3hlcy5sZW5ndGhdID0gbWFrZUNoZWNrYm94KGl0ZW0udmFsdWUsIGl0ZW0ubGFiZWwpO1xuXHRcdFx0fVxuXHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdhcnRpY2xlVGFncycsXG5cdFx0XHRcdGxpc3Q6IGN1c3RvbWNoZWNrYm94ZXMsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gY2F0ZWdvcmljYWwgc29ydCBvcmRlclxuXHRcdGlmIChzb3J0b3JkZXIgPT09ICdjYXQnKSB7XG5cdFx0XHQvLyBmdW5jdGlvbiB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHRhZ3MgYW5kIGNyZWF0ZSBhIGNoZWNrYm94IGZvciBlYWNoIG9uZVxuXHRcdFx0Y29uc3QgZG9DYXRlZ29yeUNoZWNrYm94ZXMgPSAoc3ViZGl2LCBhcnJheSkgPT4ge1xuXHRcdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIGFycmF5KSB7XG5cdFx0XHRcdFx0Y29uc3QgZGVzY3JpcHRpb24gPSBUd2lua2xlLnN0dWIuYXJ0aWNsZS50YWdzW3RhZ107XG5cdFx0XHRcdFx0Y2hlY2tib3hlc1tjaGVja2JveGVzLmxlbmd0aF0gPSBtYWtlQ2hlY2tib3godGFnLCBkZXNjcmlwdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3ViZGl2LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ0aWNsZVRhZ3MnLFxuXHRcdFx0XHRcdGxpc3Q6IGNoZWNrYm94ZXMsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHRcdGxldCBpID0gMDtcblx0XHRcdC8vIGdvIHRocm91Z2ggZWFjaCBjYXRlZ29yeSBhbmQgc3ViLWNhdGVnb3J5IGFuZCBhcHBlbmQgbGlzdHMgb2YgY2hlY2tib3hlc1xuXHRcdFx0Zm9yIChjb25zdCBbdGl0bGUsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXMpKSB7XG5cdFx0XHRcdGNvbnN0IHRpdGxlTmFtZSA9IFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXNIZWFkZXJbdGl0bGVdO1xuXHRcdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRpZDogYHRhZ0hlYWRlciR7aX1gLFxuXHRcdFx0XHRcdGxhYmVsOiB0aXRsZU5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBzdWJkaXYgPSBjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogYHRhZ1N1YmRpdiR7aSsrfWAsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShjb250ZW50KSkge1xuXHRcdFx0XHRcdGRvQ2F0ZWdvcnlDaGVja2JveGVzKHN1YmRpdiwgY29udGVudCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbc3VidGl0bGUsIHN1YmNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRlbnQpKSB7XG5cdFx0XHRcdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBbTW9yZWJpdHMuaHRtbE5vZGUoJ2InLCBzdWJ0aXRsZSldLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRkb0NhdGVnb3J5Q2hlY2tib3hlcyhzdWJkaXYsIHN1YmNvbnRlbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gYWxwaGFiZXRpY2FsIHNvcnQgb3JkZXJcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgY2hlY2tib3hlcyA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBbdGFnLCBkZXNjcmlwdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoVHdpbmtsZS5zdHViLmFydGljbGUudGFncykpIHtcblx0XHRcdFx0Y2hlY2tib3hlc1tjaGVja2JveGVzLmxlbmd0aF0gPSBtYWtlQ2hlY2tib3godGFnLCBkZXNjcmlwdGlvbik7XG5cdFx0XHR9XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2FydGljbGVUYWdzJyxcblx0XHRcdFx0bGlzdDogY2hlY2tib3hlcyxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCAkd29ya2FyZWEgPSAkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2RpdiN0YWdXb3JrQXJlYScpO1xuXHRcdGNvbnN0IHJlbmRlcmVkID0gY29udGFpbmVyLnJlbmRlcigpO1xuXHRcdCR3b3JrYXJlYS5lbXB0eSgpLmFwcGVuZChyZW5kZXJlZCk7XG5cdFx0Ly8gc3R5bGUgYWRqdXN0bWVudHNcblx0XHQkd29ya2FyZWEuZmluZCgnaDUnKS5jc3Moe1xuXHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMTAlJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnaDU6bm90KDpmaXJzdC1jaGlsZCknKS5jc3Moe1xuXHRcdFx0J21hcmdpbi10b3AnOiAnMWVtJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnZGl2JykuZmlsdGVyKCc6aGFzKHNwYW4ucXVpY2tmb3JtRGVzY3JpcHRpb24pJykuY3NzKHtcblx0XHRcdCdtYXJnaW4tdG9wJzogJzAuNGVtJyxcblx0XHR9KTtcblx0XHQvLyBhZGQgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ2FydGljbGVUYWdzJykpIHtcblx0XHRcdGNvbnN0ICRjaGVja2JveCA9ICQoY2hlY2tib3gpO1xuXHRcdFx0Y29uc3QgbGluayA9IE1vcmViaXRzLmh0bWxOb2RlKCdhJywgJz4nKTtcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdjbGFzcycsICd0YWctdGVtcGxhdGUtbGluaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcdCdocmVmJyxcblx0XHRcdFx0bXcudXRpbC5nZXRVcmwoYFRlbXBsYXRlOiR7TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKGNoZWNrYm94LnZhbHVlcyl9YClcblx0XHRcdCk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0XHQkY2hlY2tib3gucGFyZW50KCkuYXBwZW5kKFsnXFx1MDBBMCcsIGxpbmtdKTtcblx0XHR9XG5cdH07XG5cdC8vIFRhZ3MgZm9yIEFSVElDTEVTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS5zdHViLmFydGljbGUgPSB7fTtcblx0Ly8gQSBsaXN0IG9mIGFsbCBhcnRpY2xlIHRhZ3MsIGluIGFscGhhYmV0aWNhbCBvcmRlclxuXHQvLyBUbyBlbnN1cmUgdGFncyBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgXCJjYXRlZ29yaXplZFwiIHZpZXcsIGFkZCB0aGVtIHRvIHRoZSB0YWdDYXRlZ29yaWVzIGhhc2ggYmVsb3cuXG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ3MgPSB7XG5cdFx0J2FjdG9yLXN0dWInOiAn5ryU5ZGYJyxcblx0XHQnYXNpYS1zdHViJzogJ+S6mua0sicsXG5cdFx0J2Jpby1zdHViJzogJ+S6uueJqScsXG5cdFx0J2Jpb2xvZ3ktc3R1Yic6ICfnlJ/nianlraYnLFxuXHRcdCdjaGVtLXN0dWInOiAn5YyW5a2mJyxcblx0XHQnZXVyb3BlLXN0dWInOiAn5qyn5rSyJyxcblx0XHQnZXhwYW5kIGxpc3QnOiAn5pyq5a6M5oiQ5YiX6KGoJyxcblx0XHQnZm9vZC1zdHViJzogJ+mjn+eJqScsXG5cdFx0J2ZyYW5jZS1nZW8tc3R1Yic6ICfms5Xlm73lnLDnkIYnLFxuXHRcdCdnZW8tc3R1Yic6ICflnLDnkIbkvY3nva4nLFxuXHRcdCdoaXN0LXN0dWInOiAn5Y6G5Y+y5oiW5Y6G5Y+y5a2mJyxcblx0XHQnSlAtc3R1Yic6ICfml6XmnKwnLFxuXHRcdCdsaXQtc3R1Yic6ICfmloflraYnLFxuXHRcdCdtYXRoLXN0dWInOiAn5pWw5a2mJyxcblx0XHQnbWVkLXN0dWInOiAn5Yy75a2mJyxcblx0XHQnbWlsLXN0dWInOiAn5Yab5LqLJyxcblx0XHQnbW92aWUtc3R1Yic6ICfnlLXlvbEnLFxuXHRcdCdtdXNpYy1zdHViJzogJ+mfs+S5kCcsXG5cdFx0J3BoeXNpY3Mtc3R1Yic6ICfniannkIblraYnLFxuXHRcdCdwb2xpdGljLXN0dWInOiAn5pS/5rK7Jyxcblx0XHQncmVsaWdpb24tc3R1Yic6ICflrpfmlZknLFxuXHRcdCdzY2llbmNlLXN0dWInOiAn56eR5a2mJyxcblx0XHQnc3BvcnQtc3R1Yic6ICfkvZPogrInLFxuXHRcdHN0dWI6ICfpgJrnlKjlsI/kvZzlk4EnLFxuXHRcdCdzd2l0emVybGFuZC1zdHViJzogJ+eRnuWjqycsXG5cdFx0J3RlY2gtc3R1Yic6ICfnp5HmioAnLFxuXHRcdCd0cmFuc3Atc3R1Yic6ICfkuqTpgJonLFxuXHRcdCdUVi1zdHViJzogJ+eUteinhicsXG5cdFx0J1VLLXN0dWInOiAn6Iux5Zu9Jyxcblx0XHQnVVMtYmlvLXN0dWInOiAn576O5Zu95Lq654mpJyxcblx0XHQnVVMtZ2VvLXN0dWInOiAn576O5Zu95Zyw55CGJyxcblx0XHQnVVMtc3R1Yic6ICfnvo7lm70nLFxuXHRcdCd3ZWF0aGVyLXN0dWInOiAn5aSp5rCU5ZKM54m55Yir55qE5aSp5rCU5LqL5Lu2Jyxcblx0fTtcblx0Ly8gQSBsaXN0IG9mIHRhZ3MgaW4gb3JkZXIgb2YgY2F0ZWdvcnlcblx0Ly8gVGFncyBzaG91bGQgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIHdpdGhpbiB0aGUgY2F0ZWdvcmllc1xuXHQvLyBBZGQgbmV3IGNhdGVnb3JpZXMgd2l0aCBkaXNjcmV0aW9uIC0gdGhlIGxpc3QgaXMgbG9uZyBlbm91Z2ggYXMgaXMhXG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXNIZWFkZXIgPSB7XG5cdFx0Z2VuZXJhbDogJ+mAmueUqOaooeadvycsXG5cdFx0Z2VvOiAn5Zu95a625ZKM5Zyw55CGJyxcblx0XHRvdGhlcnM6ICfmnYLpobknLFxuXHRcdGJpbzogJ+S6uueJqScsXG5cdFx0c2NpZW5jZTogJ+enkeWtpicsXG5cdFx0c3BvcnQ6ICfkvZPogrInLFxuXHRcdHRlY2g6ICfmioDmnK8nLFxuXHRcdGFydDogJ+iJuuacrycsXG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXMgPSB7XG5cdFx0Z2VuZXJhbDogWydzdHViJywgJ2V4cGFuZCBsaXN0J10sXG5cdFx0Z2VvOiBbXG5cdFx0XHQnYXNpYS1zdHViJyxcblx0XHRcdCdldXJvcGUtc3R1YicsXG5cdFx0XHQnZnJhbmNlLWdlby1zdHViJyxcblx0XHRcdCdnZW8tc3R1YicsXG5cdFx0XHQnSlAtc3R1YicsXG5cdFx0XHQnc3dpdHplcmxhbmQtc3R1YicsXG5cdFx0XHQnVUstc3R1YicsXG5cdFx0XHQnVVMtYmlvLXN0dWInLFxuXHRcdFx0J1VTLWdlby1zdHViJyxcblx0XHRcdCdVUy1zdHViJyxcblx0XHRdLFxuXHRcdG90aGVyczogWydmb29kLXN0dWInLCAnaGlzdC1zdHViJywgJ21pbC1zdHViJywgJ3BvbGl0aWMtc3R1YicsICdyZWxpZ2lvbi1zdHViJywgJ3RyYW5zcC1zdHViJ10sXG5cdFx0YmlvOiBbJ2FjdG9yLXN0dWInLCAnYmlvLXN0dWInLCAnVVMtYmlvLXN0dWInXSxcblx0XHRzY2llbmNlOiBbJ2Jpb2xvZ3ktc3R1YicsICdjaGVtLXN0dWInLCAnbWF0aC1zdHViJywgJ21lZC1zdHViJywgJ3BoeXNpY3Mtc3R1YicsICdzY2llbmNlLXN0dWInLCAnd2VhdGhlci1zdHViJ10sXG5cdFx0c3BvcnQ6IFsnc3BvcnQtc3R1YiddLFxuXHRcdHRlY2g6IFsndGVjaC1zdHViJ10sXG5cdFx0YXJ0OiBbJ2FjdG9yLXN0dWInLCAnbGl0LXN0dWInLCAnbW92aWUtc3R1YicsICdtdXNpYy1zdHViJywgJ1RWLXN0dWInXSxcblx0fTtcblx0Ly8gVGFncyBmb3IgUkVESVJFQ1RTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS5zdHViLmNhbGxiYWNrcyA9IHtcblx0XHRtYWluOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0YWdSZTtcblx0XHRcdGxldCBzdW1tYXJ5VGV4dCA9ICfliqDlhaUnO1xuXHRcdFx0bGV0IHRhZ3MgPSBbXTtcblx0XHRcdGNvbnN0IGdyb3VwYWJsZVRhZ3MgPSBbXTtcblx0XHRcdGxldCBpO1xuXHRcdFx0Ly8gUmVtb3ZlIHRhZ3MgdGhhdCBiZWNvbWUgc3VwZXJmbHVvdXMgd2l0aCB0aGlzIGFjdGlvblxuXHRcdFx0bGV0IHBhZ2VUZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Ly8gQ2hlY2sgZm9yIHByZWV4aXN0aW5nIHRhZ3MgYW5kIHNlcGFyYXRlIHRhZ3MgaW50byBncm91cGFibGUgYW5kIG5vbi1ncm91cGFibGUgYXJyYXlzXG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgcGFyYW1zLnRhZ3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dGFnUmUgPSBuZXcgUmVnRXhwKGAoXFxcXHtcXFxceyR7cGFyYW1zLnRhZ3NbaV19KFxcXFx8fFxcXFx9XFxcXH0pKWAsICdpbScpO1xuXHRcdFx0XHRpZiAodGFnUmUuZXhlYyhwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRg5Zyo6aG16Z2i5LiK5om+5Yiwe3ske3BhcmFtcy50YWdzW2ldfX194oCm4oCm6Lez6L+HYCxcblx0XHRcdFx0XHRcdFx0YOWcqOmggemdouS4iuaJvuWIsHt7JHtwYXJhbXMudGFnc1tpXX19feKApuKApui3s+mBjmBcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRhZ3MgPSBbLi4udGFncywgLi4uZ2VuZXJhdGVBcnJheShwYXJhbXMudGFnc1tpXSldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0YWdzID0gWy4uLnRhZ3MsIC4uLmdyb3VwYWJsZVRhZ3NdO1xuXHRcdFx0dGFncy5zb3J0KCk7XG5cdFx0XHRjb25zdCB0b3RhbFRhZ3MgPSB0YWdzLmxlbmd0aDtcblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lLCB0YWdJbmRleCkgPT4ge1xuXHRcdFx0XHRwYWdlVGV4dCArPSBgXFxue3ske3RhZ05hbWV9fX1gO1xuXHRcdFx0XHRpZiAodGFnSW5kZXggPiAwKSB7XG5cdFx0XHRcdFx0aWYgKHRhZ0luZGV4ID09PSB0b3RhbFRhZ3MgLSAxKSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAn5ZKMJztcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRhZ0luZGV4IDwgdG90YWxUYWdzIC0gMSkge1xuXHRcdFx0XHRcdFx0c3VtbWFyeVRleHQgKz0gJ+OAgSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnlUZXh0ICs9ICd7e1tbJztcblx0XHRcdFx0c3VtbWFyeVRleHQgKz0gdGFnTmFtZS5pbmNsdWRlcygnOicpID8gdGFnTmFtZSA6IGBUZW1wbGF0ZToke3RhZ05hbWV9fCR7dGFnTmFtZX1gO1xuXHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAnXV19fSc7XG5cdFx0XHR9O1xuXHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdH1cblx0XHRcdHN1bW1hcnlUZXh0ICs9IHdpbmRvdy53Z1VMUygn5qCH6K6w5YiwJywgJ+aomeiomOWIsCcpICsgVHdpbmtsZS5zdHViLm1vZGU7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHBhZ2VUZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeVRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoU3R1YmJlZFBhZ2VzJykpO1xuXHRcdFx0cGFnZW9iai5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3R1YmJlZFBhZ2VzQXNNaW5vcicpKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHRpZiAocGFyYW1zLnBhdHJvbCkge1xuXHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHBhcmFtcyA9IHt9O1xuXHRcdGlmIChmb3JtLnBhdHJvbFBhZ2UpIHtcblx0XHRcdHBhcmFtcy5wYXRyb2wgPSBmb3JtLnBhdHJvbFBhZ2UuY2hlY2tlZDtcblx0XHR9XG5cdFx0c3dpdGNoIChUd2lua2xlLnN0dWIubW9kZSkge1xuXHRcdFx0Y2FzZSAn5qKd55uuJzpcblx0XHRcdGNhc2UgJ+adoeebric6XG5cdFx0XHRcdHBhcmFtcy50YWdzID0gZm9ybS5nZXRDaGVja2VkKCdhcnRpY2xlVGFncycpO1xuXHRcdFx0XHRwYXJhbXMuZ3JvdXAgPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShgVHdpbmtsZS5zdHVi77ya5pyq55+l5qih5byPICR7VHdpbmtsZS5zdHViLm1vZGV9YCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3R1YicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKCFwYXJhbXMudGFncy5sZW5ndGgpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KCflv4XpobvpgInmi6noh7PlsJHkuIDkuKrmoIforrDvvIEnLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXN0dWInLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+agh+iusOWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5qiZ6KiY5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0aWYgKFR3aW5rbGUuc3R1Yi5tb2RlID09PSAn6YeN5a6a5ZCRJykge1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPSBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjmoIforrAnLCAn5q2j5Zyo5qiZ6KiYJykgKyBUd2lua2xlLnN0dWIubW9kZVxuXHRcdCk7XG5cdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0c3dpdGNoIChUd2lua2xlLnN0dWIubW9kZSkge1xuXHRcdFx0Y2FzZSAn5qKd55uuJzpcblx0XHRcdGNhc2UgJ+adoeebric6XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICfph43lrprlkJEnOlxuXHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuc3R1Yi5jYWxsYmFja3MubWFpbik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdGNhc2UgJ+aWh+S7tic6XG5cdFx0XHRjYXNlICfmqpTmoYgnOlxuXHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuc3R1Yi5jYWxsYmFja3MuZmlsZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoYFR3aW5rbGUuc3R1Yu+8muacquefpeaooeW8jyAke1R3aW5rbGUuc3R1Yi5tb2RlfWAsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZXN0dWInLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLnN0dWIsICdzdHViJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWRpZmYuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlZGlmZigkKSB7XG5cdC8qKlxuXHQgKiB0d2lua2xlZGlmZi5qczogRGlmZiBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgb24gbm9uLWRpZmYgcGFnZXMgKFwiTGFzdFwiKTtcblx0ICogdGFicyBvbiBkaWZmIHBhZ2VzIChcIlNpbmNlXCIsIFwiU2luY2UgbWluZVwiLCBcIkN1cnJlbnRcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyBub24tc3BlY2lhbCBwYWdlc1xuXHQgKi9cblx0VHdpbmtsZS5kaWZmID0gKCkgPT4ge1xuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fCAhbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0bXcudXRpbC5nZXRVcmwobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCB7XG5cdFx0XHRcdGRpZmY6ICdjdXInLFxuXHRcdFx0XHRvbGRpZDogJ3ByZXYnLFxuXHRcdFx0fSksXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+acgOWQjicsICfmnIDlvownKSxcblx0XHRcdCd0dy1sYXN0ZGlmZicsXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aYvuekuuacgOWQjuS/ruaUuScsICfpoa/npLrmnIDlvozkv67mlLknKVxuXHRcdCk7XG5cdFx0Ly8gU2hvdyBhZGRpdGlvbmFsIHRhYnMgb25seSBvbiBkaWZmIHBhZ2VzXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJykpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRUd2lua2xlLmRpZmYuZXZhbHVhdGUoZmFsc2UpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQn6Ieq5LiKJyxcblx0XHRcdFx0J3R3LXNpbmNlJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmmL7npLrkuI7kuIrkuIDkv67orqLniYjmnKzpl7TnmoTlt67lvIInLCAn6aGv56S66IiH5LiK5LiA5L+u6KiC54mI5pys6ZaT55qE5beu55WwJylcblx0XHRcdCk7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS5kaWZmLmV2YWx1YXRlKHRydWUpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQn6Ieq5oiRJyxcblx0XHRcdFx0J3R3LXNpbmNlbWluZScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65LiO5oiR5YGa5Ye655qE5L+u6K6i54mI5pys55qE5beu5byCJywgJ+mhr+ekuuiIh+aIkeWBmuWHuueahOS/ruiogueJiOacrOeahOW3rueVsCcpXG5cdFx0XHQpO1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0bXcudXRpbC5nZXRVcmwobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCB7XG5cdFx0XHRcdFx0ZGlmZjogJ2N1cicsXG5cdFx0XHRcdFx0b2xkaWQ6IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJyksXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W9k+WJjScsICfnm67liY0nKSxcblx0XHRcdFx0J3R3LWN1cmRpZmYnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aYvuekuuS4juW9k+WJjeeJiOacrOmXtOeahOW3ruW8gicsICfpoa/npLroiIfnm67liY3niYjmnKzplpPnmoTlt67nlbAnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuZGlmZi5ldmFsdWF0ZSA9IChtZSkgPT4ge1xuXHRcdGxldCB1c2VyO1xuXHRcdGlmIChtZSkge1xuXHRcdFx0dXNlciA9IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1kaWZmLW50aXRsZTInKTtcblx0XHRcdGlmICghbm9kZSkge1xuXHRcdFx0XHQvLyBub3RoaW5nIHRvIGRvP1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR1c2VyID0gJChub2RlKS5maW5kKCdhJykuZmlyc3QoKS50ZXh0KCk7XG5cdFx0fVxuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0cHJvcDogJ3JldmlzaW9ucycsXG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHR0aXRsZXM6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdHJ2bGltaXQ6IDEsXG5cdFx0XHRydnByb3A6IFsnaWRzJywgJ3VzZXInXSxcblx0XHRcdHJ2c3RhcnRpZDogbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykgLSAxLFxuXHRcdFx0cnZ1c2VyOiB1c2VyLFxuXHRcdH07XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LWNvbnRlbnQtdGV4dCcpKTtcblx0XHRjb25zdCBxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bmnIDliJ3otKHnjK7ogIXkv6Hmga8nLCAn5oqT5Y+W5pyA5Yid6LKi54276ICF6LOH6KiKJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUuZGlmZi5jYWxsYmFja3MubWFpblxuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHR1c2VyLFxuXHRcdH07XG5cdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuZGlmZi5jYWxsYmFja3MgPSB7XG5cdFx0bWFpbjogKHNlbGYpID0+IHtcblx0XHRcdGNvbnN0IHhtbERvYyA9IHNlbGYucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCByZXZpZCA9ICQoeG1sRG9jKS5maW5kKCdyZXYnKS5hdHRyKCdyZXZpZCcpO1xuXHRcdFx0aWYgKCFyZXZpZCkge1xuXHRcdFx0XHRzZWxmLnN0YXRlbGVtLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw5ZCI6YCC55qE5pep5pyf54mI5pys77yM5oiWICcsICfmnKrmib7liLDlkIjpgannmoTml6nmnJ/niYjmnKzvvIzmiJYgJykgK1xuXHRcdFx0XHRcdFx0c2VsZi5wYXJhbXMudXNlciArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDmmK/llK/kuIDotKHnjK7ogIXjgILlj5bmtojjgIInLCAnIOaYr+WUr+S4gOiyoueNu+iAheOAguWPlua2iOOAgicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxvY2F0aW9uID0gbXcudXRpbC5nZXRVcmwobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCB7XG5cdFx0XHRcdGRpZmY6IG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpLFxuXHRcdFx0XHRvbGRpZDogcmV2aWQsXG5cdFx0XHR9KTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmRpZmYsICdkaWZmJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXVubGluay5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGV1bmxpbmsoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZXVubGluay5qczogVW5saW5rIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJVbmxpbmtcIilcblx0ICogQWN0aXZlIG9uOiBOb24tc3BlY2lhbCBwYWdlcywgZXhjZXB0IFFpdXdlbjrmspnnm5Jcblx0ICovXG5cdFR3aW5rbGUudW5saW5rID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPCAwIHx8XG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykgPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKSB8fFxuXHRcdFx0IU1vcmViaXRzLnVzZXJJc1N5c29wXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLnVubGluay5jYWxsYmFjayxcblx0XHRcdHdpbmRvdy53Z1VMUygn5raI6ZO+JywgJ+a2iOmAoycpLFxuXHRcdFx0J3R3LXVubGluaycsXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOWIsOacrOmhteeahOmTvuaOpScsICflj5bmtojliLDmnKzpoIHnmoTpgKPntZAnKVxuXHRcdCk7XG5cdH07XG5cdC8vIHRoZSBwYXJhbWV0ZXIgaXMgdXNlZCB3aGVuIGludm9raW5nIHVubGluayBmcm9tIGFkbWluIHNwZWVkeVxuXHRUd2lua2xlLnVubGluay5jYWxsYmFjayA9IChwcmVzZXRSZWFzb24pID0+IHtcblx0XHRjb25zdCBmaWxlU3BhY2UgPSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2O1xuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjAwLCA0NDApO1xuXHRcdFdpbmRvdy5zZXRUaXRsZShcblx0XHRcdHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+5YWlJywgJ+WPlua2iOmAo+WFpScpICtcblx0XHRcdFx0KGZpbGVTcGFjZSA/IHdpbmRvdy53Z1VMUygn5ZKM5qih5p2/44CB5paH5Lu25L2/55SoJywgJ+WSjOaooeadv+OAgeaqlOahiOS9v+eUqCcpIDogJycpXG5cdFx0KTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6ZO+5YWl6K6+572uJywgJ+mAo+WFpeioreWumicpLCAnSDpUVy9QUkVGI3VubGluaycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyN1bmxpbmsnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLnVubGluay5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Ly8gcHJlcGVuZCBzb21lIGRvY3VtZW50YXRpb246IGZpbGVzIGFyZSBjb21tZW50ZWQgb3V0LCB3aGlsZSBhbnlcblx0XHQvLyBkaXNwbGF5IHRleHQgaXMgcHJlc2VydmVkIGZvciBsaW5rcyAob3RoZXJ3aXNlIHRoZSBsaW5rIGl0c2VsZiBpcyB1c2VkKVxuXHRcdGNvbnN0IGxpbmtUZXh0QmVmb3JlID0gTW9yZWJpdHMuaHRtbE5vZGUoXG5cdFx0XHQnY29kZScsXG5cdFx0XHRgW1ske2ZpbGVTcGFjZSA/ICc6JyA6ICcnfSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfSR7d2luZG93LndnVUxTKCd86ZO+5o6l5paH5a2XXV0nLCAnfOmAo+e1kOaWh+Wtl11dJyl9YFxuXHRcdCk7XG5cdFx0Y29uc3QgbGlua1RleHRBZnRlciA9IE1vcmViaXRzLmh0bWxOb2RlKCdjb2RlJywgd2luZG93LndnVUxTKCfpk77mjqXmloflrZcnLCAn6YCj57WQ5paH5a2XJykpO1xuXHRcdGNvbnN0IGxpbmtQbGFpbkJlZm9yZSA9IE1vcmViaXRzLmh0bWxOb2RlKCdjb2RlJywgYFtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRjb25zdCBsaW5rVGVtcGxhdGVCZWZvcmUgPSBNb3JlYml0cy5odG1sTm9kZSgnY29kZScsIGB7eyR7bXcuY29uZmlnLmdldCgnd2dUaXRsZScpfX19YCk7XG5cdFx0bGV0IGxpbmtQbGFpbkFmdGVyO1xuXHRcdGlmIChmaWxlU3BhY2UpIHtcblx0XHRcdGxpbmtQbGFpbkFmdGVyID0gTW9yZWJpdHMuaHRtbE5vZGUoJ2NvZGUnLCBgPCEtLSBbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dIC0tPmApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsaW5rUGxhaW5BZnRlciA9IE1vcmViaXRzLmh0bWxOb2RlKCdjb2RlJywgTW9yZWJpdHMucGFnZU5hbWVOb3JtKTtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIFtsaW5rVGV4dEJlZm9yZSwgbGlua1RleHRBZnRlciwgbGlua1BsYWluQmVmb3JlLCBsaW5rUGxhaW5BZnRlciwgbGlua1RlbXBsYXRlQmVmb3JlXSkge1xuXHRcdFx0bm9kZS5zdHlsZS5mb250RmFtaWx5ID0gJ21vbm9zcGFjZSc7XG5cdFx0XHRub2RlLnN0eWxlLmZvbnRTdHlsZSA9ICdub3JtYWwnO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdHN0eWxlOiAnbWFyZ2luLWJvdHRvbTogMC41ZW07IGZvbnQtc3R5bGU6IG5vcm1hbCcsXG5cdFx0XHRsYWJlbDogW1xuXHRcdFx0XHRgJHtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L+Z5Liq5bel5YW35Y+v5Lul5Y+W5raI5omA5pyJ5oyH5ZCR6K+l6aG155qE6ZO+5o6l77yI4oCc6ZO+5YWl4oCd77yJJyxcblx0XHRcdFx0XHRcdCfpgJnlgIvlt6Xlhbflj6/ku6Xlj5bmtojmiYDmnInmjIflkJHoqbLpoIHnmoTpgKPntZDvvIjjgIzpgKPlhaXjgI3vvIknXG5cdFx0XHRcdFx0KSArXG5cdFx0XHRcdFx0KGZpbGVTcGFjZVxuXHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J++8jOaIlumAmui/h+WKoOWFpTwhLS0gLS0+5rOo6YeK5qCH6K6w6ZqQ6JeP5omA5pyJ5a+55q2k5paH5Lu255qE5L2/55SoJyxcblx0XHRcdFx0XHRcdFx0XHQn77yM5oiW6YCP6YGO5Yqg5YWlPCEtLSAtLT7ms6jph4vmqJnoqJjpmrHol4/miYDmnInlsI3mraTmqpTmoYjnmoTkvb/nlKgnXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdDogJycpXG5cdFx0XHRcdH3jgILkvovlpoLvvJpgLFxuXHRcdFx0XHRsaW5rVGV4dEJlZm9yZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflsIbkvJrlj5jmiJAnLCAn5bCH5pyD6K6K5oiQJyksXG5cdFx0XHRcdGxpbmtUZXh0QWZ0ZXIsXG5cdFx0XHRcdCfvvIwnLFxuXHRcdFx0XHRsaW5rUGxhaW5CZWZvcmUsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5Lya5Y+Y5oiQJywgJ+Wwh+acg+iuiuaIkCcpLFxuXHRcdFx0XHRsaW5rUGxhaW5BZnRlcixcblx0XHRcdFx0J++8jCcsXG5cdFx0XHRcdGxpbmtUZW1wbGF0ZUJlZm9yZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflsIbkvJrooqvnp7vpmaQnLCAn5bCH5pyD6KKr56e76ZmkJyksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn44CC6K+35bCP5b+D5L2/55So44CCJywgJ+OAguiri+Wwj+W/g+S9v+eUqOOAgicpLFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHRsYWJlbDogJ+eQhueUse+8micsXG5cdFx0XHR2YWx1ZTogcHJlc2V0UmVhc29uIHx8ICcnLFxuXHRcdFx0c2l6ZTogNjAsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRsaXN0OiAnYmFja2xpbmtzJyxcblx0XHRcdGJsdGl0bGU6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdGJsbGltaXQ6ICdtYXgnLFxuXHRcdFx0Ly8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdGJsbmFtZXNwYWNlOiBUd2lua2xlLmdldFByZWYoJ3VubGlua05hbWVzcGFjZXMnKSxcblx0XHRcdHJhd2NvbnRpbnVlOiB0cnVlLFxuXHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0fTtcblx0XHRpZiAoZmlsZVNwYWNlKSB7XG5cdFx0XHRxdWVyeS5saXN0ICs9ICd8aW1hZ2V1c2FnZSc7XG5cdFx0XHRxdWVyeS5pdXRpdGxlID0gcXVlcnkuYmx0aXRsZTtcblx0XHRcdHF1ZXJ5Lml1bGltaXQgPSBxdWVyeS5ibGxpbWl0O1xuXHRcdFx0cXVlcnkuaXVuYW1lc3BhY2UgPSBxdWVyeS5ibG5hbWVzcGFjZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cXVlcnkuYmxmaWx0ZXJyZWRpciA9ICdub25yZWRpcmVjdHMnO1xuXHRcdH1cblx0XHRjb25zdCBxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bpk77lhaUnLCAn5oqT5Y+W6YCj5YWlJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUudW5saW5rLmNhbGxiYWNrcy5kaXNwbGF5LmJhY2tsaW5rc1xuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdFx0aW1hZ2U6IGZpbGVTcGFjZSxcblx0XHR9O1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHRcdGNvbnN0IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRyb290LnN0eWxlLnBhZGRpbmcgPSAnMTVweCc7IC8vIGp1c3Qgc28gaXQgZG9lc24ndCBsb29rIGJyb2tlblxuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KHJvb3QpO1xuXHRcdHFpdXdlbl9hcGkuc3RhdGVsZW0uc3RhdHVzKHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCm4oCmJywgJ+i8ieWFpeS4reKApuKApicpKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyb290KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHR9O1xuXHRUd2lua2xlLnVubGluay5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdGNvbnN0IGZvcm0gPSBldmVudC50YXJnZXQ7XG5cdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdGlmICghaW5wdXQucmVhc29uKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOW/hemhu+aMh+WumuWPlua2iOmTvuWFpeeahOeQhueUseOAgicsICfmgqjlv4XpoIjmjIflrprlj5bmtojpgKPlhaXnmoTnkIbnlLHjgIInKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGV1bmxpbmsnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlucHV0LmJhY2tsaW5rcyB8fD0gW107XG5cdFx0aW5wdXQuaW1hZ2V1c2FnZSB8fD0gW107XG5cdFx0Y29uc3QgcGFnZXMgPSBNb3JlYml0cy5hcnJheS51bmlxKFsuLi5pbnB1dC5iYWNrbGlua3MsIC4uLmlucHV0LmltYWdldXNhZ2VdKTtcblx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5b+F6aG76Iez5bCR6YCJ5oup5LiA5Liq6KaB5Y+W5raI6ZO+5YWl55qE6aG16Z2i44CCJywgJ+aCqOW/hemgiOiHs+WwkemBuOaTh+S4gOWAi+imgeWPlua2iOmAo+WFpeeahOmggemdouOAgicpLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGV1bmxpbmsnLFxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdGNvbnN0IHVubGlua2VyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKFxuXHRcdFx0YOWPlua2iCR7XG5cdFx0XHRcdGlucHV0LmJhY2tsaW5rcy5sZW5ndGhcblx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn6ZO+5YWlJywgJ+mAo+WFpScpICtcblx0XHRcdFx0XHRcdChpbnB1dC5pbWFnZXVzYWdlLmxlbmd0aCA/IHdpbmRvdy53Z1VMUygn5LiO5paH5Lu25L2/55SoJywgJ+iIh+aqlOahiOS9v+eUqCcpIDogJycpXG5cdFx0XHRcdFx0OiB3aW5kb3cud2dVTFMoJ+aWh+S7tuS9v+eUqCcsICfmqpTmoYjkvb/nlKgnKVxuXHRcdFx0fWBcblx0XHQpO1xuXHRcdHVubGlua2VyLnNldE9wdGlvbigncHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMnLCB0cnVlKTtcblx0XHR1bmxpbmtlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0cmVhc29uOiBpbnB1dC5yZWFzb24sXG5cdFx0XHR1bmxpbmtlcixcblx0XHR9O1xuXHRcdHVubGlua2VyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0cGFnZU5hbWUsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i4oCcJywgJ+WcqOmggemdouOAjCcpICsgcGFnZU5hbWUgKyB3aW5kb3cud2dVTFMoJ+KAneS4reWPlua2iOmTvuWFpScsICfjgI3kuK3lj5bmtojpgKPlhaUnKVxuXHRcdFx0KTtcblx0XHRcdHFpdXdlbl9wYWdlLnNldEJvdEVkaXQodHJ1ZSk7IC8vIHVubGluayBjb25zaWRlcmVkIGEgZmxvb2R5IG9wZXJhdGlvblxuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHtcblx0XHRcdFx0ZG9CYWNrbGlua3M6IGlucHV0LmJhY2tsaW5rcy5pbmNsdWRlcyhwYWdlTmFtZSksXG5cdFx0XHRcdGRvSW1hZ2V1c2FnZTogaW5wdXQuaW1hZ2V1c2FnZS5pbmNsdWRlcyhwYWdlTmFtZSksXG5cdFx0XHRcdC4uLnBhcmFtcyxcblx0XHRcdH0pO1xuXHRcdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLnVubGluay5jYWxsYmFja3MudW5saW5rQmFja2xpbmtzKTtcblx0XHR9KTtcblx0fTtcblx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2tzID0ge1xuXHRcdGRpc3BsYXk6IHtcblx0XHRcdGJhY2tsaW5rczogKGFwaW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGFwaW9iai5nZXRSZXNwb25zZSgpO1xuXHRcdFx0XHRsZXQgaGF2ZWNvbnRlbnQgPSBmYWxzZTtcblx0XHRcdFx0bGV0IGxpc3Q7XG5cdFx0XHRcdGxldCBuYW1lc3BhY2VzO1xuXHRcdFx0XHRsZXQgaTtcblx0XHRcdFx0aWYgKGFwaW9iai5wYXJhbXMuaW1hZ2UpIHtcblx0XHRcdFx0XHRjb25zdCBpbWFnZXVzYWdlID0gcmVzcG9uc2UucXVlcnkuaW1hZ2V1c2FnZS5zb3J0KFR3aW5rbGUuc29ydEJ5TmFtZXNwYWNlKTtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGltYWdldXNhZ2UubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0XHRcdC8vIExhYmVsIG1hZGUgYnkgVHdpbmtsZS5nZW5lcmF0ZUJhdGNoUGFnZUxpbmtzXG5cdFx0XHRcdFx0XHRsaXN0W2xpc3QubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogaW1hZ2V1c2FnZVtpXS50aXRsZSxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChsaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlofku7bkvb/nlKgnLCAn5qqU5qGI5L2/55SoJyksXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdG5hbWVzcGFjZXMgPSBbXTtcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgdiBvZiBUd2lua2xlLmdldFByZWYoJ3VubGlua05hbWVzcGFjZXMnKSkge1xuXHRcdFx0XHRcdFx0XHRuYW1lc3BhY2VzW25hbWVzcGFjZXMubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRcdFx0diA9PT0gJzAnXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn77yI5p2h55uu77yJJywgJ++8iOaineebru+8iScpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW3ZdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflt7LpgInmi6nnmoTlkb3lkI3nqbrpl7TvvJonLCAn5bey6YG45pOH55qE5ZG95ZCN56m66ZaT77yaJykgKyBuYW1lc3BhY2VzLmpvaW4oJ+OAgScpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3mm7TmlLnnm7jlhbPpgInpobnvvIzor7flj4Lop4FbW0g6VFcvUFJFRl1dJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo5Y+v5ZyoVHdpbmtsZeWBj+WlveioreWumuS4reabtOaUueebuOmXnOmBuOmghe+8jOiri+WPg+imi1tbSDpUVy9QUkVGXV0nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGlmIChyZXNwb25zZVsncXVlcnktY29udGludWUnXSAmJiByZXNwb25zZVsncXVlcnktY29udGludWUnXS5pbWFnZXVzYWdlKSB7XG5cdFx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmmL7npLrliY0nLCAn6aGv56S65YmNJykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihsaXN0Lmxlbmd0aCkgK1xuXHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuKrmlofku7bkvb/nlKjjgIInLCAn5YCL5qqU5qGI5L2/55So44CCJyksXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajpgIknLCAn5YWo6YG4JyksXG5cdFx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdCQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGUudGFyZ2V0LmZvcm0sICdpbWFnZXVzYWdlJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajkuI3pgIknLCAn5YWo5LiN6YG4JyksXG5cdFx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdCQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGUudGFyZ2V0LmZvcm0sICdpbWFnZXVzYWdlJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnaW1hZ2V1c2FnZScsXG5cdFx0XHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRoYXZlY29udGVudCA9IHRydWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw5paH5Lu25L2/55So44CCJywgJ+acquaJvuWIsOaqlOahiOS9v+eUqOOAgicpLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGJhY2tsaW5rcyA9IHJlc3BvbnNlLnF1ZXJ5LmJhY2tsaW5rcy5zb3J0KFR3aW5rbGUuc29ydEJ5TmFtZXNwYWNlKTtcblx0XHRcdFx0aWYgKGJhY2tsaW5rcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXHRcdFx0XHRcdGZvciAoaSA9IDA7IGkgPCBiYWNrbGlua3MubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0XHRcdC8vIExhYmVsIG1hZGUgYnkgVHdpbmtsZS5nZW5lcmF0ZUJhdGNoUGFnZUxpbmtzXG5cdFx0XHRcdFx0XHRsaXN0W2xpc3QubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYmFja2xpbmtzW2ldLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mTvuWFpScsICfpgKPlhaUnKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRuYW1lc3BhY2VzID0gW107XG5cdFx0XHRcdFx0Zm9yIChjb25zdCB2IG9mIFR3aW5rbGUuZ2V0UHJlZigndW5saW5rTmFtZXNwYWNlcycpKSB7XG5cdFx0XHRcdFx0XHRuYW1lc3BhY2VzW25hbWVzcGFjZXMubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRcdHYgPT09ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfvvIjmnaHnm67vvIknLCAn77yI5qKd55uu77yJJylcblx0XHRcdFx0XHRcdFx0XHQ6IG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW3ZdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey6YCJ5oup55qE5ZG95ZCN56m66Ze077yaJywgJ+W3sumBuOaTh+eahOWRveWQjeepuumWk++8micpICsgbmFtZXNwYWNlcy5qb2luKCfjgIEnKSxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3mm7TmlLnnm7jlhbPpgInpobnvvIzor7flj4Lop4FbW0g6VFcvUFJFRl1dJyxcblx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlgY/lpb3oqK3lrprkuK3mm7TmlLnnm7jpl5zpgbjpoIXvvIzoq4vlj4PopotbW0g6VFcvUFJFRl1dJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAocmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10gJiYgcmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10uYmFja2xpbmtzKSB7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65YmNJywgJ+mhr+ekuuWJjScpICtcblx0XHRcdFx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKGxpc3QubGVuZ3RoKSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuKrpk77lhaXjgIInLCAn5YCL6YCj5YWl44CCJyksXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOmAiScsICflhajpgbgnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnYmFja2xpbmtzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS4jemAiScsICflhajkuI3pgbgnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnYmFja2xpbmtzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdiYWNrbGlua3MnLFxuXHRcdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGhhdmVjb250ZW50ID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw6ZO+5YWl44CCJywgJ+acquaJvuWIsOmAo+WFpeOAgicpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChoYXZlY29udGVudCkge1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gYXBpb2JqLnBhcmFtcy5mb3JtLnJlbmRlcigpO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLldpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0XHRcdGZvciAoY29uc3QgbGluayBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAnYmFja2xpbmtzJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3MobGluayk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBsaW5rIG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICdpbWFnZXVzYWdlJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3MobGluayk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3M6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRsZXQgb2xkdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKG9sZHRleHQpO1xuXHRcdFx0bGV0IHN1bW1hcnlUZXh0ID0gJyc7XG5cdFx0XHRsZXQgd2FybmluZ1N0cmluZyA9IGZhbHNlO1xuXHRcdFx0bGV0IHRleHQ7XG5cdFx0XHQvLyByZW1vdmUgaW1hZ2UgdXNhZ2VzXG5cdFx0XHRpZiAocGFyYW1zLmRvSW1hZ2V1c2FnZSkge1xuXHRcdFx0XHR0ZXh0ID0gcWl1d2VuX3BhZ2UuY29tbWVudE91dEltYWdlKG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKSwgd2luZG93LndnVUxTKCfms6jph4onLCAn5rOo6YeLJykpLmdldFRleHQoKTtcblx0XHRcdFx0Ly8gZGlkIHdlIGFjdHVhbGx5IG1ha2UgYW55IGNoYW5nZXM/XG5cdFx0XHRcdGlmICh0ZXh0ID09PSBvbGR0ZXh0KSB7XG5cdFx0XHRcdFx0d2FybmluZ1N0cmluZyA9IHdpbmRvdy53Z1VMUygn5paH5Lu25L2/55SoJywgJ+aqlOahiOS9v+eUqCcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ID0gd2luZG93LndnVUxTKCfms6jph4rmlofku7bkvb/nlKgnLCAn5rOo6YeL5qqU5qGI5L2/55SoJyk7XG5cdFx0XHRcdFx0b2xkdGV4dCA9IHRleHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIHJlbW92ZSBiYWNrbGlua3Ncblx0XHRcdGlmIChwYXJhbXMuZG9CYWNrbGlua3MpIHtcblx0XHRcdFx0dGV4dCA9IHFpdXdlbl9wYWdlLnJlbW92ZUxpbmsoTW9yZWJpdHMucGFnZU5hbWVOb3JtKS5nZXRUZXh0KCk7XG5cdFx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5yZW1vdmVUZW1wbGF0ZShtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykpLmdldFRleHQoKTtcblx0XHRcdFx0Ly8gZGlkIHdlIGFjdHVhbGx5IG1ha2UgYW55IGNoYW5nZXM/XG5cdFx0XHRcdGlmICh0ZXh0ID09PSBvbGR0ZXh0KSB7XG5cdFx0XHRcdFx0d2FybmluZ1N0cmluZyA9IHdhcm5pbmdTdHJpbmdcblx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCflj5bmtojpk77lhaXmiJbmlofku7bkvb/nlKgnLCAn5Y+W5raI6YCj5YWl5oiW5qqU5qGI5L2/55SoJylcblx0XHRcdFx0XHRcdDogd2luZG93LndnVUxTKCflj5bmtojpk77lhaUnLCAn5Y+W5raI6YCj5YWlJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3VtbWFyeVRleHQgPSAoc3VtbWFyeVRleHQgPyBgJHtzdW1tYXJ5VGV4dH0gLyBgIDogJycpICsgd2luZG93LndnVUxTKCflj5bmtojpk77nu5PliLAnLCAn5Y+W5raI6YCj57WQ5YiwJyk7XG5cdFx0XHRcdFx0b2xkdGV4dCA9IHRleHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICh3YXJuaW5nU3RyaW5nKSB7XG5cdFx0XHRcdC8vIG5vdGhpbmcgdG8gZG8hXG5cdFx0XHRcdHBhZ2VvYmpcblx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0LmVycm9yKGAke3dpbmRvdy53Z1VMUygn5pyq6IO95Zyo6aG16Z2i5LiK5om+5YiwJywgJ+acquiDveWcqOmggemdouS4iuaJvuWIsCcpICsgd2FybmluZ1N0cmluZ33jgIJgKTtcblx0XHRcdFx0cGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUocGFnZW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRzdW1tYXJ5VGV4dCArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJwnLCAn44CMJykgK1xuXHRcdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3vvJonLCAn44CN77yaJykgK1xuXHRcdFx0XHRcdHBhcmFtcy5yZWFzb25cblx0XHRcdCk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKHBhcmFtcy51bmxpbmtlci53b3JrZXJTdWNjZXNzLCBwYXJhbXMudW5saW5rZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS51bmxpbmssICd1bmxpbmsnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVmbHVmZi5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVmbHVmZigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZWZsdWZmLmpzOiBSZXZlcnQvcm9sbGJhY2sgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogTGlua3Mgb24gY29udHJpYnV0aW9ucyxcblx0ICogcmVjZW50IGNoYW5nZXMsIGhpc3RvcnksIGFuZCBkaWZmIHBhZ2VzXG5cdCAqIEFjdGl2ZSBvbjogRGlmZiBwYWdlcywgaGlzdG9yeSBwYWdlcyxcblx0ICogU3BlY2lhbDpSZWNlbnRDaGFuZ2VzKExpbmtlZCksIGFuZCBTcGVjaWFsOkNvbnRyaWJ1dGlvbnNcblx0ICovXG5cdC8qKlxuXHQgKiBUd2lua2xlZmx1ZmYgcmV2ZXJ0IGFuZCBhbnRpdmFuZGFsaXNtIHV0aWxpdHlcblx0ICovXG5cdFR3aW5rbGUuZmx1ZmYgPSAoKSA9PiB7XG5cdFx0Ly8gT25seSBwcm9jZWVkIGlmIHRoZSB1c2VyIGNhbiBhY3R1YWxseSBlZGl0IHRoZSBwYWdlIGluIHF1ZXN0aW9uLlxuXHRcdC8vIHdnSXNQcm9iYWJseUVkaXRhYmxlIHNob3VsZCB0YWtlXG5cdFx0Ly8gY2FyZSBvZiBuYW1lc3BhY2UvY29udGVudE1vZGVsIHJlc3RyaWN0aW9ucyBhcyB3ZWxsIGFzIGV4cGxpY2l0XG5cdFx0Ly8gcHJvdGVjdGlvbnM7IGl0IHdvbid0IHRha2UgY2FyZSBvZiBjYXNjYWRpbmcgb3IgVGl0bGVCbGFja2xpc3QuXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnSXNQcm9iYWJseUVkaXRhYmxlJykpIHtcblx0XHRcdC8vIHdnRGlmZk9sZElkIGluY2x1ZGVkIGZvciBjbGFyaXR5IGluIGlmIGVsc2UgbG9vcFxuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJykgfHwgbXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSkge1xuXHRcdFx0XHQvLyBSZWxvYWQgYWxvbmdzaWRlIHRoZSByZXZpc2lvbiBzbGlkZXJcblx0XHRcdFx0bXcuaG9vaygnd2lraXBhZ2UuZGlmZicpLmFkZCgoKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS5mbHVmZi5hZGRMaW5rcy5kaWZmKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSA9PT0gJ3ZpZXcnICYmXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmV2aXNpb25JZCcpICYmXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpICE9PSBtdy5jb25maWcuZ2V0KCd3Z1JldmlzaW9uSWQnKVxuXHRcdFx0KSB7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3Mub2xkaWQoKTtcblx0XHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSA9PT0gJ2hpc3RvcnknKSB7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MuaGlzdG9yeSgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gLTEpIHtcblx0XHRcdFR3aW5rbGUuZmx1ZmYuc2tpcFRhbGsgPSAhVHdpbmtsZS5nZXRQcmVmKCdvcGVuVGFsa1BhZ2VPbkF1dG9SZXZlcnQnKTtcblx0XHRcdFR3aW5rbGUuZmx1ZmYucm9sbGJhY2tJblBsYWNlID0gVHdpbmtsZS5nZXRQcmVmKCdyb2xsYmFja0luUGxhY2UnKTtcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQ29udHJpYnV0aW9ucycpIHtcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5hZGRMaW5rcy5jb250cmlidXRpb25zKCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUmVjZW50Y2hhbmdlcycgfHxcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1JlY2VudGNoYW5nZXNsaW5rZWQnXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gUmVsb2FkIHdpdGggcmVjZW50IGNoYW5nZXMgdXBkYXRlc1xuXHRcdFx0XHQvLyBzdHJ1Y3R1cmVkQ2hhbmdlRmlsdGVycy51aS5pbml0aWFsaXplZCBpcyBqdXN0IG9uIGxvYWRcblx0XHRcdFx0bXcuaG9vaygnd2lraXBhZ2UuY29udGVudCcpLmFkZCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdGlmIChpdGVtLmlzKCdkaXYnKSkge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5mbHVmZi5hZGRMaW5rcy5yZWNlbnRjaGFuZ2VzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdC8vIEEgbGlzdCBvZiB1c2VybmFtZXMsIHVzdWFsbHkgb25seSBib3RzLCB0aGF0IHZhbmRhbGlzbSByZXZlcnQgaXMganVtcGVkXG5cdC8vIG92ZXI7IHRoYXQgaXMsIGlmIHZhbmRhbGlzbSByZXZlcnQgd2FzIGNob3NlbiBvbiBzdWNoIHVzZXJuYW1lLCB0aGVuIGl0c1xuXHQvLyB0YXJnZXQgaXMgb24gdGhlIHJldmlzaW9uIGJlZm9yZS4gIFRoaXMgaXMgZm9yIGhhbmRsaW5nIHF1aWNrIGJvdHMgdGhhdFxuXHQvLyBtYWtlcyBlZGl0cyBzZWNvbmRzIGFmdGVyIHRoZSBvcmlnaW5hbCBlZGl0IGlzIG1hZGUuICBUaGlzIG9ubHkgYWZmZWN0c1xuXHQvLyB2YW5kYWxpc20gcm9sbGJhY2s7IGZvciBnb29kIGZhaXRoIHJvbGxiYWNrLCBpdCB3aWxsIHN0b3AsIGluZGljYXRpbmcgYSBib3Rcblx0Ly8gaGFzIG5vIGZhaXRoLCBhbmQgZm9yIG5vcm1hbCByb2xsYmFjaywgaXQgd2lsbCByb2xsYmFjayB0aGF0IGVkaXQuXG5cdFR3aW5rbGUuZmx1ZmYudHJ1c3RlZEJvdHMgPSBbXTtcblx0VHdpbmtsZS5mbHVmZi5za2lwVGFsayA9IG51bGw7XG5cdFR3aW5rbGUuZmx1ZmYucm9sbGJhY2tJblBsYWNlID0gbnVsbDtcblx0Ly8gU3RyaW5nIHRvIGluc2VydCB3aGVuIGEgdXNlcm5hbWUgaXMgaGlkZGVuXG5cdFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZSA9IHdpbmRvdy53Z1VMUygn5bey6ZqQ6JeP55qE55So5oi3JywgJ+W3sumaseiXj+eahOS9v+eUqOiAhScpO1xuXHQvLyBDb25zb2xpZGF0ZWQgY29uc3RydWN0aW9uIG9mIGZsdWZmIGxpbmtzXG5cdFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIgPSB7XG5cdFx0c3BhblRhZzogKGNvbG9yLCBjb250ZW50KSA9PiB7XG5cdFx0XHRjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0c3Bhbi5zdHlsZS5jb2xvciA9IGNvbG9yO1xuXHRcdFx0c3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7XG5cdFx0XHRyZXR1cm4gc3Bhbjtcblx0XHR9LFxuXHRcdGJ1aWxkTGluazogKGNvbG9yLCB0ZXh0KSA9PiB7XG5cdFx0XHRjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0bGluay5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnNwYW5UYWcoJ0JsYWNrJywgJ1snKSk7XG5cdFx0XHRsaW5rLmFwcGVuZENoaWxkKFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIuc3BhblRhZyhjb2xvciwgdGV4dCkpO1xuXHRcdFx0bGluay5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnNwYW5UYWcoJ0JsYWNrJywgJ10nKSk7XG5cdFx0XHRsaW5rLmhyZWYgPSAnIyc7XG5cdFx0XHRyZXR1cm4gbGluaztcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbdmFuZGFsPW51bGxdIC0gVXNlcm5hbWUgb2YgdGhlIGVkaXRvciBiZWluZyByZXZlcnRlZFxuXHRcdCAqIFByb3ZpZGUgYSBmYWxzZXkgdmFsdWUgaWYgdGhlIHVzZXJuYW1lIGlzIGhpZGRlbiwgZGVmYXVsdHMgdG8gbnVsbFxuXHRcdCAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5saW5lIC0gVHJ1ZSB0byBjcmVhdGUgdHdvIGxpbmtzIGluIGEgc3BhbiwgZmFsc2Vcblx0XHQgKiB0byBjcmVhdGUgdGhyZWUgbGlua3MgaW4gYSBkaXYgKG9wdGlvbmFsKVxuXHRcdCAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gW3Jldj13Z0N1clJldmlzaW9uSWRdIC0gUmV2aXNpb24gSUQgYmVpbmcgcmV2ZXJ0ZWQgKG9wdGlvbmFsKVxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbcGFnZT13Z1BhZ2VOYW1lXSAtIFBhZ2UgYmVpbmcgcmV2ZXJ0ZWQgKG9wdGlvbmFsKVxuXHRcdCAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSByZXZOb2RlXG5cdFx0ICovXG5cdFx0cm9sbGJhY2tMaW5rczogKHZhbmRhbCwgaW5saW5lLCByZXYsIHBhZ2UpID0+IHtcblx0XHRcdHZhbmRhbCB8fD0gbnVsbDtcblx0XHRcdGNvbnN0IGVsZW0gPSBpbmxpbmUgPyAnc3BhbicgOiAnZGl2Jztcblx0XHRcdGNvbnN0IHJldk5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW0pO1xuXHRcdFx0cmV2ID0gTnVtYmVyLnBhcnNlSW50KHJldiwgMTApO1xuXHRcdFx0aWYgKHJldikge1xuXHRcdFx0XHRyZXZOb2RlLnNldEF0dHJpYnV0ZSgnaWQnLCBgdHctcmV2ZXJ0JHtyZXZ9YCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXZOb2RlLnNldEF0dHJpYnV0ZSgnaWQnLCAndHctcmV2ZXJ0Jyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBub3JtTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0cm9uZycpO1xuXHRcdFx0Y29uc3QgdmFuZE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKTtcblx0XHRcdGNvbnN0IG5vcm1MaW5rID0gVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5idWlsZExpbmsoJ1N0ZWVsQmx1ZScsICflm57pgIAnKTtcblx0XHRcdGNvbnN0IHZhbmRMaW5rID0gVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5idWlsZExpbmsoJ1JlZCcsIHdpbmRvdy53Z1VMUygn56C05Z2PJywgJ+egtOWjnicpKTtcblx0XHRcdCQobm9ybUxpbmspLm9uKCdjbGljaycsIChlKSA9PiB7XG5cdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5yZXZlcnQoJ25vcm0nLCB2YW5kYWwsIHJldiwgcGFnZSk7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYuZGlzYWJsZUxpbmtzKHJldk5vZGUpO1xuXHRcdFx0fSk7XG5cdFx0XHQkKHZhbmRMaW5rKS5vbignY2xpY2snLCAoZSkgPT4ge1xuXHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYucmV2ZXJ0KCd2YW5kJywgdmFuZGFsLCByZXYsIHBhZ2UpO1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmRpc2FibGVMaW5rcyhyZXZOb2RlKTtcblx0XHRcdH0pO1xuXHRcdFx0dmFuZE5vZGUuYXBwZW5kQ2hpbGQodmFuZExpbmspO1xuXHRcdFx0bm9ybU5vZGUuYXBwZW5kQ2hpbGQobm9ybUxpbmspO1xuXHRcdFx0Y29uc3Qgc2VwYXJhdG9yID0gaW5saW5lID8gJyAnIDogJyB8fCAnO1xuXHRcdFx0cmV2Tm9kZS5hcHBlbmRDaGlsZChub3JtTm9kZSk7XG5cdFx0XHRyZXZOb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlcGFyYXRvcikpO1xuXHRcdFx0cmV2Tm9kZS5hcHBlbmRDaGlsZCh2YW5kTm9kZSk7XG5cdFx0XHRyZXR1cm4gcmV2Tm9kZTtcblx0XHR9LFxuXHRcdC8vIEJ1aWxkIFtyZXN0b3JlIHRoaXMgcmV2aXNpb25dIGxpbmtzXG5cdFx0cmVzdG9yZVRoaXNSZXZpc2lvbkxpbms6IChyZXZpc2lvblJlZiwgaW5saW5lKSA9PiB7XG5cdFx0XHQvLyBJZiBub3QgYSBzcGVjaWZpYyByZXZpc2lvbiBudW1iZXIsIHNob3VsZCBiZSB3Z0RpZmZOZXdJZC93Z0RpZmZPbGRJZC93Z1JldmlzaW9uSWRcblx0XHRcdHJldmlzaW9uUmVmID0gdHlwZW9mIHJldmlzaW9uUmVmID09PSAnbnVtYmVyJyA/IHJldmlzaW9uUmVmIDogbXcuY29uZmlnLmdldChyZXZpc2lvblJlZik7XG5cdFx0XHRjb25zdCBlbGVtID0gaW5saW5lID8gJ3NwYW4nIDogJ2Rpdic7XG5cdFx0XHRjb25zdCByZXZlcnRUb1JldmlzaW9uTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbSk7XG5cdFx0XHRyZXZlcnRUb1JldmlzaW9uTm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgYHR3LXJldmVydC10by0ke3JldmlzaW9uUmVmfWApO1xuXHRcdFx0cmV2ZXJ0VG9SZXZpc2lvbk5vZGUuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcblx0XHRcdGNvbnN0IHJldmVydFRvUmV2aXNpb25MaW5rID0gVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5idWlsZExpbmsoXG5cdFx0XHRcdCdTYWRkbGVCcm93bicsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oGi5aSN5q2k54mI5pysJywgJ+aBouW+qeatpOeJiOacrCcpXG5cdFx0XHQpO1xuXHRcdFx0JChyZXZlcnRUb1JldmlzaW9uTGluaykub24oJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLnJldmVydFRvUmV2aXNpb24ocmV2aXNpb25SZWYpO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoaW5saW5lKSB7XG5cdFx0XHRcdHJldmVydFRvUmV2aXNpb25Ob2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgJykpO1xuXHRcdFx0fVxuXHRcdFx0cmV2ZXJ0VG9SZXZpc2lvbk5vZGUuYXBwZW5kQ2hpbGQocmV2ZXJ0VG9SZXZpc2lvbkxpbmspO1xuXHRcdFx0cmV0dXJuIHJldmVydFRvUmV2aXNpb25Ob2RlO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MgPSB7XG5cdFx0Y29udHJpYnV0aW9uczogKCkgPT4ge1xuXHRcdFx0Ly8gJCgnc3AtY29udHJpYnV0aW9ucy1mb290ZXItYW5vbi1yYW5nZScpIHJlbGllcyBvbiB0aGUgZm1ib3hcblx0XHRcdC8vIGlkIGluIFtbTWVkaWFXaWtpOlNwLWNvbnRyaWJ1dGlvbnMtZm9vdGVyLWFub24tcmFuZ2VdXSBhbmRcblx0XHRcdC8vIGlzIHVzZWQgdG8gc2hvdyByb2xsYmFjay92YW5kYWxpc20gbGlua3MgZm9yIElQIHJhbmdlc1xuXHRcdFx0Y29uc3QgaXNSYW5nZSA9ICEhJGJvZHkuZmluZCgnI3NwLWNvbnRyaWJ1dGlvbnMtZm9vdGVyLWFub24tcmFuZ2UnKVswXTtcblx0XHRcdGlmIChtdy5jb25maWcuZXhpc3RzKCd3Z1JlbGV2YW50VXNlck5hbWUnKSB8fCBpc1JhbmdlKSB7XG5cdFx0XHRcdC8vIEdldCB0aGUgdXNlcm5hbWUgdGhlc2UgY29udHJpYnV0aW9ucyBhcmUgZm9yXG5cdFx0XHRcdGxldCB1c2VybmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdjb250cmlicycpIHx8XG5cdFx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSAhPT0gdXNlcm5hbWUgJiZcblx0XHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygnb3RoZXJzJykpIHx8XG5cdFx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSA9PT0gdXNlcm5hbWUgJiYgVHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdtaW5lJykpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0ICRsaXN0ID0gJGJvZHlcblx0XHRcdFx0XHRcdC5maW5kKCcjbXctY29udGVudC10ZXh0Jylcblx0XHRcdFx0XHRcdC5maW5kKCd1bCBsaTpoYXMoc3Bhbi5tdy11Y3RvcCk6aGFzKC5tdy1jaGFuZ2VzbGlzdC1kaWZmKScpO1xuXHRcdFx0XHRcdCRsaXN0LmVhY2goKF9rZXksIGN1cnJlbnQpID0+IHtcblx0XHRcdFx0XHRcdC8vIHJldmlkIGlzIGFsc28gYXZhaWxhYmxlIGluIHRoZSBocmVmIG9mIGJvdGhcblx0XHRcdFx0XHRcdC8vIC5tdy1jaGFuZ2VzbGlzdC1kYXRlIG9yIC5tdy1jaGFuZ2VzbGlzdC1kaWZmXG5cdFx0XHRcdFx0XHRjb25zdCBwYWdlID0gJChjdXJyZW50KS5maW5kKCcubXctY29udHJpYnV0aW9ucy10aXRsZScpLnRleHQoKTtcblx0XHRcdFx0XHRcdC8vIEdldCB1c2VybmFtZSBmb3IgSVAgcmFuZ2VzICh3Z1JlbGV2YW50VXNlck5hbWUgaXMgbnVsbClcblx0XHRcdFx0XHRcdGlmIChpc1JhbmdlKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFRoZSA6bm90IGlzIHBvc3NpYmx5IHVubmVjZXNzYXJ5LCBhcyBpdCBhcHBlYXJzIHRoYXRcblx0XHRcdFx0XHRcdFx0Ly8gLm13LXVzZXJsaW5rIGlzIHNpbXBseSBub3QgcHJlc2VudCBpZiB0aGUgdXNlcm5hbWUgaXMgaGlkZGVuXG5cdFx0XHRcdFx0XHRcdHVzZXJuYW1lID0gJChjdXJyZW50KS5maW5kKCcubXctdXNlcmxpbms6bm90KC5oaXN0b3J5LWRlbGV0ZWQpJykudGV4dCgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gSXQncyB1bmxpa2VseSwgYnV0IHdlIGNhbid0IGVhc2lseSBjaGVjayBmb3IgcmV2ZGVsJ2QgdXNlcm5hbWVzXG5cdFx0XHRcdFx0XHQvLyBzaW5jZSBvbmx5IGEgc3Ryb25nIGVsZW1lbnQgaXMgcHJvdmlkZWQsIHdpdGggbm8gZWFzeSBzZWxlY3RvclxuXHRcdFx0XHRcdFx0Y3VycmVudC5hcHBlbmRDaGlsZChcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yb2xsYmFja0xpbmtzKHVzZXJuYW1lLCB0cnVlLCBjdXJyZW50LmRhdGFzZXQubXdSZXZpZCwgcGFnZSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlY2VudGNoYW5nZXM6ICgpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdSZWNlbnRjaGFuZ2VzJyAmJlxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygncmVjZW50Y2hhbmdlcycpKSB8fFxuXHRcdFx0XHQobXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1JlY2VudGNoYW5nZXNsaW5rZWQnICYmXG5cdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdyZWNlbnRjaGFuZ2VzbGlua2VkJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gTGF0ZXN0IGFuZCByZXZlcnRhYmxlIChub3QgcGFnZSBjcmVhdGlvbnMsIGxvZ3MsIGNhdGVnb3JpemF0aW9ucywgZXRjLilcblx0XHRcdFx0bGV0ICRsaXN0ID0gJGJvZHkuZmluZCgnLm13LWNoYW5nZXNsaXN0IC5tdy1jaGFuZ2VzbGlzdC1sYXN0Lm13LWNoYW5nZXNsaXN0LXNyYy1tdy1lZGl0Jyk7XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgdG9wLWxldmVsIGhlYWRlciBpZiBcImdyb3VwIGNoYW5nZXNcIiBwcmVmZXJlbmNlIGlzIHVzZWRcblx0XHRcdFx0Ly8gYW5kIGZpbmQgb25seSBpbmRpdmlkdWFsIGxpbmVzIG9yIG5lc3RlZCBsaW5lc1xuXHRcdFx0XHQkbGlzdCA9ICRsaXN0XG5cdFx0XHRcdFx0Lm5vdCgnLm13LXJjZmlsdGVycy11aS1oaWdobGlnaHRzLWVuaGFuY2VkLXRvcGxldmVsJylcblx0XHRcdFx0XHQuZmluZCgnLm13LWNoYW5nZXNsaXN0LWxpbmUtaW5uZXIsIHRkLm13LWVuaGFuY2VkLXJjLW5lc3RlZCcpO1xuXHRcdFx0XHQkbGlzdC5lYWNoKChfa2V5LCBjdXJyZW50KSA9PiB7XG5cdFx0XHRcdFx0Ly8gVGhlIDpub3QgaXMgcG9zc2libHkgdW5uZWNlc3NhcnksIGFzIGl0IGFwcGVhcnMgdGhhdFxuXHRcdFx0XHRcdC8vIC5tdy11c2VybGluayBpcyBzaW1wbHkgbm90IHByZXNlbnQgaWYgdGhlIHVzZXJuYW1lIGlzIGhpZGRlblxuXHRcdFx0XHRcdGNvbnN0IHZhbmRhbCA9ICQoY3VycmVudCkuZmluZCgnLm13LXVzZXJsaW5rOm5vdCguaGlzdG9yeS1kZWxldGVkKScpLnRleHQoKTtcblx0XHRcdFx0XHRjb25zdCBocmVmID0gJChjdXJyZW50KS5maW5kKCcubXctY2hhbmdlc2xpc3QtZGlmZicpLmF0dHIoJ2hyZWYnKTtcblx0XHRcdFx0XHRjb25zdCByZXYgPSBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ2RpZmYnLCBocmVmKTtcblx0XHRcdFx0XHRjb25zdCBwYWdlID0gY3VycmVudC5kYXRhc2V0LnRhcmdldFBhZ2U7XG5cdFx0XHRcdFx0Y3VycmVudC5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnJvbGxiYWNrTGlua3ModmFuZGFsLCB0cnVlLCByZXYsIHBhZ2UpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRoaXN0b3J5OiAoKSA9PiB7XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdoaXN0b3J5JykpIHtcblx0XHRcdFx0Ly8gQWxsIHJldnNcblx0XHRcdFx0Y29uc3QgaGlzdExpc3QgPSAkYm9keS5maW5kKCcjcGFnZWhpc3RvcnkgbGknKS50b0FycmF5KCk7XG5cdFx0XHRcdC8vIE9uIGZpcnN0IHBhZ2Ugb2YgcmVzdWx0cywgc28gYWRkIHJldmVydC9yb2xsYmFja1xuXHRcdFx0XHQvLyBsaW5rcyB0byB0aGUgdG9wIHJldmlzaW9uXG5cdFx0XHRcdGlmICghJGJvZHkuZmluZCgnYS5tdy1maXJzdGxpbmsnKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBmaXJzdCA9IGhpc3RMaXN0LnNoaWZ0KCk7XG5cdFx0XHRcdFx0Y29uc3QgdmFuZGFsID0gJChmaXJzdCkuZmluZCgnLm13LXVzZXJsaW5rOm5vdCguaGlzdG9yeS1kZWxldGVkKScpLnRleHQoKTtcblx0XHRcdFx0XHQvLyBDaGVjayBmb3IgZmlyc3QgdXNlcm5hbWUgZGlmZmVyZW50IHRoYW4gdGhlIHRvcCB1c2VyLFxuXHRcdFx0XHRcdC8vIG9ubHkgYXBwbHkgcm9sbGJhY2sgbGlua3MgaWYvd2hlbiBmb3VuZFxuXHRcdFx0XHRcdC8vIGZvciBmYXN0ZXIgdGhhbiBldmVyeVxuXHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBoaXN0TGlzdCkge1xuXHRcdFx0XHRcdFx0aWYgKCQoaXRlbSkuZmluZCgnLm13LXVzZXJsaW5rJykudGV4dCgpICE9PSB2YW5kYWwpIHtcblx0XHRcdFx0XHRcdFx0Zmlyc3QuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yb2xsYmFja0xpbmtzKHZhbmRhbCwgdHJ1ZSkpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gb2xkaWRcblx0XHRcdFx0Zm9yIChjb25zdCByZXYgb2YgaGlzdExpc3QpIHtcblx0XHRcdFx0XHQvLyBGcm9tIHJlc3RvcmVUaGlzUmV2aXNpb24sIG5vbi10cmFuc2ZlcmFibGVcblx0XHRcdFx0XHQvLyBJZiB0aGUgdGV4dCBoYXMgYmVlbiByZXZkZWwnZCwgaXQgZ2V0cyB3cmFwcGVkIGluIGEgc3BhbiB3aXRoIC5oaXN0b3J5LWRlbGV0ZWQsXG5cdFx0XHRcdFx0Ly8gYW5kIGhyZWYgd2lsbCBiZSB1bmRlZmluZWQgKGFuZCB0aHVzIG9sZGlkIGlzIE5hTilcblx0XHRcdFx0XHRjb25zdCB7aHJlZn0gPSByZXYucXVlcnlTZWxlY3RvcignLm13LWNoYW5nZXNsaXN0LWRhdGUnKTtcblx0XHRcdFx0XHRjb25zdCBvbGRpZCA9IE51bWJlci5wYXJzZUludChtdy51dGlsLmdldFBhcmFtVmFsdWUoJ29sZGlkJywgaHJlZiksIDEwKTtcblx0XHRcdFx0XHRpZiAoIU51bWJlci5pc05hTihvbGRpZCkpIHtcblx0XHRcdFx0XHRcdHJldi5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnJlc3RvcmVUaGlzUmV2aXNpb25MaW5rKG9sZGlkLCB0cnVlKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRkaWZmOiAoKSA9PiB7XG5cdFx0XHQvLyBBdXRvZmlsbCB1c2VyIHRhbGsgbGlua3Mgb24gZGlmZnMgd2l0aCB2YW5hcnRpY2xlIGZvciBlYXN5IHdhcm5pbmcsIGJ1dCBkb24ndCBhdXRvd2FyblxuXHRcdFx0Y29uc3Qgd2FybkZyb21UYWxrID0gKHh0aXRsZSkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YWxrTGluayA9ICQoYCNtdy1kaWZmLSR7eHRpdGxlfTIgLm13LXVzZXJ0b29sbGlua3MgYWApLmZpcnN0KCk7XG5cdFx0XHRcdGlmICh0YWxrTGluay5sZW5ndGgpIHtcblx0XHRcdFx0XHRsZXQgZXh0cmFQYXJhbXMgPSBgdmFuYXJ0aWNsZT0ke213LnV0aWwucmF3dXJsZW5jb2RlKE1vcmViaXRzLnBhZ2VOYW1lTm9ybSl9Jm5vYXV0b3dhcm49dHJ1ZWA7XG5cdFx0XHRcdFx0Ly8gZGlmZklEcyBmb3IgdmFuYXJ0aWNsZXJldmlkXG5cdFx0XHRcdFx0ZXh0cmFQYXJhbXMgKz0gJyZ2YW5hcnRpY2xlcmV2aWQ9Jztcblx0XHRcdFx0XHRleHRyYVBhcmFtcyArPSB4dGl0bGUgPT09ICdvdGl0bGUnID8gbXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSA6IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJyk7XG5cdFx0XHRcdFx0Y29uc3QgaHJlZiA9IHRhbGtMaW5rLmF0dHIoJ2hyZWYnKTtcblx0XHRcdFx0XHRpZiAoaHJlZi5pbmNsdWRlcygnPycpKSB7XG5cdFx0XHRcdFx0XHR0YWxrTGluay5hdHRyKCdocmVmJywgYCR7aHJlZn0mJHtleHRyYVBhcmFtc31gKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGFsa0xpbmsuYXR0cignaHJlZicsIGAke2hyZWZ9PyR7ZXh0cmFQYXJhbXN9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0Ly8gT2xkZXIgcmV2aXNpb25cblx0XHRcdHdhcm5Gcm9tVGFsaygnb3RpdGxlJyk7IC8vIEFkZCBxdWljay13YXJuIGxpbmsgdG8gdXNlciB0YWxrIGxpbmtcblx0XHRcdC8vIERvbid0IGxvYWQgaWYgdGhlcmUncyBhIHNpbmdsZSByZXZpc2lvbiBvciB3ZWlyZCBkaWZmIChjdXIgb24gbGF0ZXN0KVxuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJykgJiYgbXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSAhPT0gbXcuY29uZmlnLmdldCgnd2dEaWZmTmV3SWQnKSkge1xuXHRcdFx0XHQvLyBBZGQgYSBbcmVzdG9yZSB0aGlzIHJldmlzaW9uXSBsaW5rIHRvIHRoZSBvbGRlciByZXZpc2lvblxuXHRcdFx0XHRjb25zdCBvbGRUaXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1kaWZmLW90aXRsZTEnKS5wYXJlbnROb2RlO1xuXHRcdFx0XHRjb25zdCByZXZlcnRUb1JldmlzaW9uID0gVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yZXN0b3JlVGhpc1JldmlzaW9uTGluaygnd2dEaWZmT2xkSWQnKTtcblx0XHRcdFx0b2xkVGl0bGUuaW5zZXJ0QmVmb3JlKHJldmVydFRvUmV2aXNpb24sIG9sZFRpdGxlLmZpcnN0Q2hpbGQpO1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21SZXZlcnRTdW1tYXJ5JykubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdHJldmVydFRvUmV2aXNpb24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyB8fCAnKSk7XG5cdFx0XHRcdFx0Y29uc3QgcmV2ZXJ0c3VtbWFyeSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdyZXZlcnRzdW1tYXJ5Jyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXZlcnRzdW1tYXJ5LmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqeWbnumAgOeQhueUsScsICfpgbjmk4flm57pgIDnkIbnlLEnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQkKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tUmV2ZXJ0U3VtbWFyeScpKS5lYWNoKChfLCBlKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXZlcnRzdW1tYXJ5LmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogZS5sYWJlbCxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGUudmFsdWUsXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXZlcnRUb1JldmlzaW9uLmFwcGVuZENoaWxkKHJldmVydHN1bW1hcnkucmVuZGVyKCkuY2hpbGROb2Rlc1swXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIE5ld2VyIHJldmlzaW9uXG5cdFx0XHR3YXJuRnJvbVRhbGsoJ250aXRsZScpOyAvLyBBZGQgcXVpY2std2FybiBsaW5rIHRvIHVzZXIgdGFsayBsaW5rXG5cdFx0XHQvLyBBZGQgZWl0aGVyIHJlc3RvcmUgb3Igcm9sbGJhY2sgbGlua3MgdG8gdGhlIG5ld2VyIHJldmlzaW9uXG5cdFx0XHQvLyBEb24ndCBzaG93IGlmIHRoZXJlJ3MgYSBzaW5nbGUgcmV2aXNpb24gb3Igd2VpcmQgZGlmZiAocHJldiBvbiBmaXJzdClcblx0XHRcdGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZGlmZmVyZW5jZXMtbmV4dGxpbmsnKSkge1xuXHRcdFx0XHQvLyBOb3QgbGF0ZXN0IHJldmlzaW9uLCBhZGQgW3Jlc3RvcmUgdGhpcyByZXZpc2lvbl0gbGluayB0byBuZXdlciByZXZpc2lvblxuXHRcdFx0XHRjb25zdCBuZXdUaXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1kaWZmLW50aXRsZTEnKS5wYXJlbnROb2RlO1xuXHRcdFx0XHRuZXdUaXRsZS5pbnNlcnRCZWZvcmUoXG5cdFx0XHRcdFx0VHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yZXN0b3JlVGhpc1JldmlzaW9uTGluaygnd2dEaWZmTmV3SWQnKSxcblx0XHRcdFx0XHRuZXdUaXRsZS5maXJzdENoaWxkXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3Nob3dSb2xsYmFja0xpbmtzJykuaW5jbHVkZXMoJ2RpZmYnKSAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0RpZmZPbGRJZCcpICYmXG5cdFx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z0RpZmZPbGRJZCcpICE9PSBtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpIHx8XG5cdFx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RpZmZlcmVuY2VzLXByZXZsaW5rJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gTm9ybWFsbHkgLm13LXVzZXJsaW5rIGlzIGEgbGluaywgYnV0IGlmIHRoZVxuXHRcdFx0XHQvLyB1c2VybmFtZSBpcyBoaWRkZW4sIGl0IHdpbGwgYmUgYSBzcGFuIHdpdGhcblx0XHRcdFx0Ly8gLmhpc3RvcnktZGVsZXRlZCBhcyB3ZWxsLiBXaGVuIGEgc3lzb3Agdmlld3MgdGhlXG5cdFx0XHRcdC8vIGhpZGRlbiBjb250ZW50LCB0aGUgc3BhbiBjb250YWlucyB0aGUgdXNlcm5hbWUgaW4gYVxuXHRcdFx0XHQvLyBsaW5rIGVsZW1lbnQsIHdoaWNoIHdpbGwgKmp1c3QqIGhhdmVcblx0XHRcdFx0Ly8gLm13LXVzZXJsaW5rLiBUaGUgYmVsb3cgdGh1cyBmaW5kcyB0aGUgZmlyc3Rcblx0XHRcdFx0Ly8gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLCB3aGljaCBpZiBoaWRkZW4gaXMgdGhlIHNwYW5cblx0XHRcdFx0Ly8gYW5kIHRodXMgdGV4dCByZXR1cm5zIHVuZGVmaW5lZC4gVGVjaG5pY2FsbHksIHRoaXNcblx0XHRcdFx0Ly8gaXMgYSBwbGFjZSB3aGVyZSBzeXNvcHMgKmNvdWxkKiBoYXZlIG1vcmVcblx0XHRcdFx0Ly8gaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRvIHRoZW0gKGFzIGFib3ZlLCB2aWFcblx0XHRcdFx0Ly8gJnVuaGlkZT0xKSwgc2luY2UgdGhlIHVzZXJuYW1lIHdpbGwgYmUgYXZhaWxhYmxlIGJ5XG5cdFx0XHRcdC8vIGNoZWNraW5nIGEubXctdXNlcmxpbmsgaW5zdGVhZCwgYnV0IHJldmVydCgpIHdpbGxcblx0XHRcdFx0Ly8gbmVlZCByZXdvcmtpbmcgYXJvdW5kIHVzZXJIaWRkZW5cblx0XHRcdFx0Y29uc3QgdmFuZGFsID0gJGJvZHkuZmluZCgnI213LWRpZmYtbnRpdGxlMicpLmZpbmQoJy5tdy11c2VybGluaycpWzBdLnRleHQ7XG5cdFx0XHRcdGNvbnN0IG50aXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1kaWZmLW50aXRsZTEnKS5wYXJlbnROb2RlO1xuXHRcdFx0XHRudGl0bGUuaW5zZXJ0QmVmb3JlKFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucm9sbGJhY2tMaW5rcyh2YW5kYWwpLCBudGl0bGUuZmlyc3RDaGlsZCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbGRpZDogKCkgPT4ge1xuXHRcdFx0Ly8gQWRkIGEgW3Jlc3RvcmUgdGhpcyByZXZpc2lvbl0gbGluayBvbiBvbGQgcmV2aXNpb25zXG5cdFx0XHRjb25zdCB0aXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1yZXZpc2lvbi1pbmZvJykucGFyZW50Tm9kZTtcblx0XHRcdHRpdGxlLmluc2VydEJlZm9yZShUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnJlc3RvcmVUaGlzUmV2aXNpb25MaW5rKCd3Z1JldmlzaW9uSWQnKSwgdGl0bGUuZmlyc3RDaGlsZCk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5mbHVmZi5kaXNhYmxlTGlua3MgPSAocGFyZW50Tm9kZSkgPT4ge1xuXHRcdC8vIEFycmF5LmZyb20gbm90IGF2YWlsYWJsZSBpbiBJRTExIDooXG5cdFx0JChwYXJlbnROb2RlKVxuXHRcdFx0LmNoaWxkcmVuKClcblx0XHRcdC5lYWNoKChfaSwgbm9kZSkgPT4ge1xuXHRcdFx0XHRub2RlLmlubmVySFRNTCA9IG5vZGUudGV4dENvbnRlbnQ7IC8vIEZlZWxzIGxpa2UgY2hlYXRpbmdcblx0XHRcdFx0JChub2RlKS5jc3MoJ2ZvbnQtd2VpZ2h0JywgJ25vcm1hbCcpLmNzcygnY29sb3InLCAnZGFya2dyYXknKTtcblx0XHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLmZsdWZmLnJldmVydCA9ICh0eXBlLCB2YW5kYWwsIHJldiwgcGFnZSkgPT4ge1xuXHRcdGlmIChtdy51dGlsLmlzSVB2NkFkZHJlc3ModmFuZGFsKSkge1xuXHRcdFx0dmFuZGFsID0gTW9yZWJpdHMuaXAuc2FuaXRpemVJUHY2KHZhbmRhbCk7XG5cdFx0fVxuXHRcdGNvbnN0IHBhZ2VuYW1lID0gcGFnZSB8fCBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0Y29uc3QgcmV2aWQgPSByZXYgfHwgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJyk7XG5cdFx0bGV0IHN1bW1hcnkgPSAnJztcblx0XHRpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3JldmVydHN1bW1hcnknKVswXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzdW1tYXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3JldmVydHN1bW1hcnknKVswXS52YWx1ZTtcblx0XHR9XG5cdFx0aWYgKFR3aW5rbGUuZmx1ZmYucm9sbGJhY2tJblBsYWNlKSB7XG5cdFx0XHRjb25zdCBub3RpZnlTdGF0dXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeShub3RpZnlTdGF0dXMsIHtcblx0XHRcdFx0YXV0b0hpZGU6IGZhbHNlLFxuXHRcdFx0XHR0aXRsZTogYOWbnumAgCR7cGFnZX1gLFxuXHRcdFx0XHR0YWc6IGB0d2lua2xlZmx1ZmZfJHtyZXZ9YCwgLy8gU2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBnaXZlbiBkaXNhYmxlTGlua1xuXHRcdFx0fSk7XG5cblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KG5vdGlmeVN0YXR1cyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1jb250ZW50LXRleHQnKSk7XG5cdFx0XHQkYm9keS5maW5kKCcjY2F0bGlua3MnKS5yZW1vdmUoKTtcblx0XHR9XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0dHlwZSxcblx0XHRcdHVzZXI6IHZhbmRhbCxcblx0XHRcdHVzZXJIaWRkZW46ICF2YW5kYWwsXG5cdFx0XHRwYWdlbmFtZSxcblx0XHRcdHJldmlkLFxuXHRcdFx0c3VtbWFyeSxcblx0XHR9O1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0cHJvcDogWydpbmZvJywgJ3JldmlzaW9ucyddLFxuXHRcdFx0dGl0bGVzOiBwYWdlbmFtZSxcblx0XHRcdGludGVzdGFjdGlvbnM6ICdlZGl0Jyxcblx0XHRcdHJ2bGltaXQ6IFR3aW5rbGUuZ2V0UHJlZigncmV2ZXJ0TWF4UmV2aXNpb25zJyksXG5cdFx0XHRydnByb3A6IFsnaWRzJywgJ3RpbWVzdGFtcCcsICd1c2VyJ10sXG5cdFx0XHRjdXJ0aW1lc3RhbXA6ICcnLFxuXHRcdFx0bWV0YTogJ3Rva2VucycsXG5cdFx0XHR0eXBlOiAnY3NyZicsXG5cdFx0fTtcblx0XHRjb25zdCBxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bovoPml6nkv67orqLniYjmnKzkv6Hmga8nLCAn5oqT5Y+W6LyD5pep5L+u6KiC54mI5pys6LOH6KiKJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUuZmx1ZmYuY2FsbGJhY2tzLm1haW5cblx0XHQpO1xuXHRcdHFpdXdlbl9hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmZsdWZmLnJldmVydFRvUmV2aXNpb24gPSAob2xkcmV2KSA9PiB7XG5cdFx0bGV0IHN1bW1hcnkgPSAnJztcblx0XHRpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3JldmVydHN1bW1hcnknKVswXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzdW1tYXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3JldmVydHN1bW1hcnknKVswXS52YWx1ZTtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LWNvbnRlbnQtdGV4dCcpKTtcblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdHByb3A6IFsnaW5mbycsICdyZXZpc2lvbnMnXSxcblx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0cnZsaW1pdDogMSxcblx0XHRcdHJ2c3RhcnRpZDogb2xkcmV2LFxuXHRcdFx0cnZwcm9wOiBbJ2lkcycsICd1c2VyJ10sXG5cdFx0XHRmb3JtYXQ6ICd4bWwnLFxuXHRcdFx0Y3VydGltZXN0YW1wOiAnJyxcblx0XHRcdG1ldGE6ICd0b2tlbnMnLFxuXHRcdFx0dHlwZTogJ2NzcmYnLFxuXHRcdH07XG5cdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5oqT5Y+W6L6D5pep5L+u6K6i54mI5pys5L+h5oGvJywgJ+aKk+WPlui8g+aXqeS/ruiogueJiOacrOizh+ioiicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcy50b1JldmlzaW9uXG5cdFx0KTtcblx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHtcblx0XHRcdHJldjogb2xkcmV2LFxuXHRcdFx0c3VtbWFyeSxcblx0XHR9O1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcyA9IHtcblx0XHR0b1JldmlzaW9uOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxEb2MgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBsYXN0cmV2aWQgPSBOdW1iZXIucGFyc2VJbnQoJCh4bWxEb2MpLmZpbmQoJ3BhZ2UnKS5hdHRyKCdsYXN0cmV2aWQnKSwgMTApO1xuXHRcdFx0Y29uc3QgdG91Y2hlZCA9ICQoeG1sRG9jKS5maW5kKCdwYWdlJykuYXR0cigndG91Y2hlZCcpO1xuXHRcdFx0Y29uc3QgbG9hZHRpbWVzdGFtcCA9ICQoeG1sRG9jKS5maW5kKCdhcGknKS5hdHRyKCdjdXJ0aW1lc3RhbXAnKTtcblx0XHRcdGNvbnN0IGNzcmZ0b2tlbiA9ICQoeG1sRG9jKS5maW5kKCd0b2tlbnMnKS5hdHRyKCdjc3JmdG9rZW4nKTtcblx0XHRcdGNvbnN0IHJldmVydFRvUmV2SUQgPSBOdW1iZXIucGFyc2VJbnQoJCh4bWxEb2MpLmZpbmQoJ3JldicpLmF0dHIoJ3JldmlkJyksIDEwKTtcblx0XHRcdGNvbnN0IHJldmVydFRvVXNlciA9ICQoeG1sRG9jKS5maW5kKCdyZXYnKS5hdHRyKCd1c2VyJyk7XG5cdFx0XHRjb25zdCByZXZlcnRUb1VzZXJIaWRkZW4gPSB0eXBlb2YgJCh4bWxEb2MpLmZpbmQoJ3JldicpLmF0dHIoJ3VzZXJoaWRkZW4nKSA9PT0gJ3N0cmluZyc7XG5cdFx0XHRpZiAocmV2ZXJ0VG9SZXZJRCAhPT0gYXBpb2JqLnBhcmFtcy5yZXYpIHtcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmipPlj5bliLDnmoTkv67orqLniYjmnKzkuI7or7fmsYLnmoTkv67orqLniYjmnKzkuI3nrKbvvIzlj5bmtojjgIInLFxuXHRcdFx0XHRcdFx0J+aKk+WPluWIsOeahOS/ruiogueJiOacrOiIh+iri+axgueahOS/ruiogueJiOacrOS4jeespu+8jOWPlua2iOOAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG9wdGlvbmFsX3N1bW1hcnkgPSBwcm9tcHQoXG5cdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6K+36L6T5YWl5Zue6YCA55CG55Sx77yaJywgJ+iri+i8uOWFpeWbnumAgOeQhueUse+8micpfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCxcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5zdW1tYXJ5XG5cdFx0XHQpOyAvLyBwYWRkZWQgb3V0IHRvIHdpZGVuIHByb21wdCBpbiBGaXJlZm94XG5cdFx0XHRpZiAob3B0aW9uYWxfc3VtbWFyeSA9PT0gbnVsbCkge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfnlLHnlKjmiLflj5bmtojjgIInLCAn55Sx5L2/55So6ICF5Y+W5raI44CCJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzdW1tYXJ5ID0gVHdpbmtsZS5mbHVmZi5mb3JtYXRTdW1tYXJ5KFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WbnumAgOWIsOeUsSRVU0VS5YGa5Ye655qE5L+u6K6i54mI5pysJywgJ+WbnumAgOWIsOeUsSRVU0VS5YGa5Ye655qE5L+u6KiC54mI5pysJykgKyByZXZlcnRUb1JldklELFxuXHRcdFx0XHRyZXZlcnRUb1VzZXJIaWRkZW4gPyBudWxsIDogcmV2ZXJ0VG9Vc2VyLFxuXHRcdFx0XHRvcHRpb25hbF9zdW1tYXJ5XG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdFx0XHR0aXRsZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRzdW1tYXJ5LFxuXHRcdFx0XHR0YWdzOiBUd2lua2xlLmNoYW5nZVRhZ3MsXG5cdFx0XHRcdHRva2VuOiBjc3JmdG9rZW4sXG5cdFx0XHRcdHVuZG86IGxhc3RyZXZpZCxcblx0XHRcdFx0dW5kb2FmdGVyOiByZXZlcnRUb1JldklELFxuXHRcdFx0XHRiYXNldGltZXN0YW1wOiB0b3VjaGVkLFxuXHRcdFx0XHRzdGFydHRpbWVzdGFtcDogbG9hZHRpbWVzdGFtcCxcblx0XHRcdFx0bWlub3I6IFR3aW5rbGUuZ2V0UHJlZignbWFya1JldmVydGVkUGFnZXNBc01pbm9yJykuaW5jbHVkZXMoJ3RvcmV2JykgPyB0cnVlIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRib3Q6IHRydWUsXG5cdFx0XHR9O1xuXHRcdFx0Ly8gSGFuZGxlIHdhdGNoaW5nLCBwb3NzaWJsZSBleHBpcnlcblx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3dhdGNoUmV2ZXJ0ZWRQYWdlcycpLmluY2x1ZGVzKCd0b3JldicpKSB7XG5cdFx0XHRcdGNvbnN0IHdhdGNoT3JFeHBpcnkgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoUmV2ZXJ0ZWRFeHBpcnknKTtcblx0XHRcdFx0aWYgKCF3YXRjaE9yRXhwaXJ5IHx8IHdhdGNoT3JFeHBpcnkgPT09ICdubycpIHtcblx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3QgPSAnbm9jaGFuZ2UnO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHdhdGNoT3JFeHBpcnkgPT09ICdkZWZhdWx0JyB8fCB3YXRjaE9yRXhwaXJ5ID09PSAncHJlZmVyZW5jZXMnKSB7XG5cdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ID0gJ3ByZWZlcmVuY2VzJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3QgPSAnd2F0Y2gnO1xuXHRcdFx0XHRcdC8vIG51bWJlciBhbGxvd2VkIGJ1dCBub3QgdXNlZCBpbiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtc1xuXHRcdFx0XHRcdGlmICh0eXBlb2Ygd2F0Y2hPckV4cGlyeSA9PT0gJ3N0cmluZycgJiYgd2F0Y2hPckV4cGlyeSAhPT0gJ3llcycpIHtcblx0XHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdGV4cGlyeSA9IHdhdGNoT3JFeHBpcnk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9ICflm57pgIDlrozmiJAnO1xuXHRcdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv53lrZjlm57pgIDlhoXlrrknLCAn5YSy5a2Y5Zue6YCA5YWn5a65JyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcy5jb21wbGV0ZSxcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtXG5cdFx0XHQpO1xuXHRcdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSBhcGlvYmoucGFyYW1zO1xuXHRcdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdFx0fSxcblx0XHRtYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxEb2MgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRpZiAoJCh4bWxEb2MpLmZpbmQoJ2FjdGlvbnMnKS5hdHRyKCdlZGl0JykgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3IoXCJVbmFibGUgdG8gZWRpdCB0aGUgcGFnZSwgaXQncyBwcm9iYWJseSBwcm90ZWN0ZWQuXCIpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBsYXN0cmV2aWQgPSBOdW1iZXIucGFyc2VJbnQoJCh4bWxEb2MpLmZpbmQoJ3BhZ2UnKS5hdHRyKCdsYXN0cmV2aWQnKSwgMTApO1xuXHRcdFx0Y29uc3QgdG91Y2hlZCA9ICQoeG1sRG9jKS5maW5kKCdwYWdlJykuYXR0cigndG91Y2hlZCcpO1xuXHRcdFx0Y29uc3QgbG9hZHRpbWVzdGFtcCA9ICQoeG1sRG9jKS5maW5kKCdhcGknKS5hdHRyKCdjdXJ0aW1lc3RhbXAnKTtcblx0XHRcdGNvbnN0IGNzcmZ0b2tlbiA9ICQoeG1sRG9jKS5maW5kKCd0b2tlbnMnKS5hdHRyKCdjc3JmdG9rZW4nKTtcblx0XHRcdGNvbnN0IHJldnMgPSAkKHhtbERvYykuZmluZCgncmV2Jyk7XG5cdFx0XHRjb25zdCB7c3RhdGVsZW19ID0gYXBpb2JqO1xuXHRcdFx0Y29uc3Qge3BhcmFtc30gPSBhcGlvYmo7XG5cdFx0XHRpZiAocmV2cy5sZW5ndGggPCAxKSB7XG5cdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn5rKh5pyJ5YW25a6D5L+u6K6i54mI5pys77yM5peg5rOV5Zue6YCAJywgJ+aykuacieWFtuWug+S/ruiogueJiOacrO+8jOeEoeazleWbnumAgCcpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgW3RvcF0gPSByZXZzO1xuXHRcdFx0Y29uc3QgbGFzdHVzZXIgPSB0b3AuZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRpZiAobGFzdHJldmlkIDwgcGFyYW1zLnJldmlkKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mUmeivrycsICfpjK/oqqQnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdCfku47mnI3liqHlmajojrflj5bnmoTmnIDmlrDkv67orqLniYjmnKxJRCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDlsI/kuo7nm67liY3miYDmmL7npLrnmoTkv67orqLniYjmnKxJROOAgui/meWPr+iDveaEj+WRs+edgOW9k+WJjeS/ruiuoueJiOacrOW3suiiq+WIoOmZpOOAgeacjeWKoeWZqOW7tui/n+OAgeaIluaKk+WPluWIsOS6huWdj+aOieeahOS/oeaBr+OAguWPlua2iOOAgicsXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHQn5b6e5Ly65pyN5Zmo5Y+W5b6X55qE5pyA5paw5L+u6KiC54mI5pysSUQgJyxcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIGxhc3RyZXZpZCksXG5cdFx0XHRcdFx0XHRcdCcg5bCP5pa855uu5YmN5omA6aGv56S655qE5L+u6KiC54mI5pysSUTjgILpgJnlj6/og73mhI/lkbPokZfnlbbliY3kv67oqILniYjmnKzlt7LooqvliKrpmaTjgIHkvLrmnI3lmajlu7bpgbLjgIHmiJbmk7flj5bliLDkuoblo57mjonnmoTos4foqIrjgILlj5bmtojjgIInLFxuXHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gVXNlZCBmb3IgdXNlci1mYWNpbmcgYWxlcnRzLCBtZXNzYWdlcywgZXRjLiwgbm90IGVkaXRzIG9yIHN1bW1hcmllc1xuXHRcdFx0bGV0IHVzZXJOb3JtID0gcGFyYW1zLnVzZXIgfHwgVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lO1xuXHRcdFx0bGV0IGluZGV4ID0gMTtcblx0XHRcdGlmIChwYXJhbXMucmV2aWQgPT09IGxhc3RyZXZpZCkge1xuXHRcdFx0XHQvLyBFeHBlY3RlZCByZXZpc2lvbiBpcyB0aGUgc2FtZSwgc28gdGhlIHVzZXJzIG11c3QgbWF0Y2g7XG5cdFx0XHRcdC8vIHRoaXMgYWxsb3dzIHN5c29wcyB0byBrbm93IHdoZXRoZXIgdGhlIHVzZXJzIGFyZSB0aGUgc2FtZVxuXHRcdFx0XHRwYXJhbXMudXNlciA9IGxhc3R1c2VyO1xuXHRcdFx0XHR1c2VyTm9ybSA9IHBhcmFtcy51c2VyIHx8IFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdCforablkYonLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0J+acgOaWsOS/ruiuoueJiOacrCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDkuI7miJHku6znmoTkv67orqLniYjmnKwgJyxcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy5yZXZpZCksXG5cdFx0XHRcdFx0XHRcdCfkuI3lkIwnLFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0J+acgOaWsOS/ruiogueJiOacrCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDoiIfmiJHlgJHnmoTkv67oqILniYjmnKwgJyxcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy5yZXZpZCksXG5cdFx0XHRcdFx0XHRcdCcg5LiN5ZCMJyxcblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChsYXN0dXNlciA9PT0gcGFyYW1zLnVzZXIpIHtcblx0XHRcdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRjYXNlICd2YW5kJzpcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8od2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksIFtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOaWsOS/ruiuoueJiOacrOeUsSAnLCAn5pyA5paw5L+u6KiC54mI5pys55SxICcpLFxuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0JyDlgZrlh7rvvIzlm6DmiJHku6zlgYflrprnoLTlnY/vvIznu6fnu63lm57pgIDmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0JyDlgZrlh7rvvIzlm6DmiJHlgJHlgYflrprnoLTlo57vvIznubznuozlm57pgIDmk43kvZzjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oJ+aPkOekuicsIFtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOaWsOS/ruiuoueJiOacrOeUsSAnLCAn5pyA5paw5L+u6KiC54mI5pys55SxICcpLFxuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5YGa5Ye677yM5L2G5oiR5Lus6L+Y5piv5LiN5Zue6YCA5LqG44CCJywgJyDlgZrlh7rvvIzkvYbmiJHlgJHpgoTmmK/kuI3lm57pgIDkuobjgIInKSxcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0cGFyYW1zLnR5cGUgPT09ICd2YW5kJyAmJiAvLyBPa2F5IHRvIHRlc3Qgb24gdXNlciBzaW5jZSBpdCB3aWxsIGVpdGhlciBmYWlsIG9yIHN5c29wIHdpbGwgY29ycmVjdGx5IGFjY2VzcyBpdFxuXHRcdFx0XHRcdC8vIEJlc2lkZXMsIG5vbmUgb2YgdGhlIHRydXN0ZWQgYm90cyBhcmUgZ29pbmcgdG8gYmUgcmV2ZGVsJ2Rcblx0XHRcdFx0XHRUd2lua2xlLmZsdWZmLnRydXN0ZWRCb3RzLmluY2x1ZGVzKHRvcC5nZXRBdHRyaWJ1dGUoJ3VzZXInKSkgJiZcblx0XHRcdFx0XHRyZXZzLmxlbmd0aCA+IDEgJiZcblx0XHRcdFx0XHRyZXZzWzFdLmdldEF0dHJpYnV0ZSgncmV2aWQnKSA9PT0gcGFyYW1zLnJldmlkXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6K6i54mI5pys55SxICcsXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIGxhc3R1c2VyKSxcblx0XHRcdFx0XHRcdFx0XHQn77yM5LiA5Liq5Y+v5L+h55qE5py65Zmo5Lq65YGa5Ye677yM5L2G5LmL5YmN55qE54mI5pys6KKr6K6k5Li65piv56C05Z2P77yM57un57ut5Zue6YCA5pON5L2c44CCJyxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdCfmnIDmlrDkv67oqILniYjmnKznlLEgJyxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHVzZXIpLFxuXHRcdFx0XHRcdFx0XHRcdCfvvIzkuIDlgIvlj6/kv6HnmoTmqZ/lmajkurrlgZrlh7rvvIzkvYbkuYvliY3nmoTniYjmnKzooqvoqo3ngrrmmK/noLTlo57vvIznubznuozlm57pgIDmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpbmRleCA9IDI7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfplJnor68nLCAn6Yyv6KqkJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6K6i54mI5pys55SxICcsXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIGxhc3R1c2VyKSxcblx0XHRcdFx0XHRcdFx0XHQnIOWBmuWHuu+8jOaJgOS7pei/meS4quS/ruiuoueJiOacrOWPr+iDveW3sue7j+iiq+WbnumAgOS6hu+8jOWPlua2iOWbnumAgOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6KiC54mI5pys55SxICcsXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIGxhc3R1c2VyKSxcblx0XHRcdFx0XHRcdFx0XHQnIOWBmuWHuu+8jOaJgOS7pemAmeWAi+S/ruiogueJiOacrOWPr+iDveW3sue2k+iiq+WbnumAgOS6hu+8jOWPlua2iOWbnumAgOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUuZmx1ZmYudHJ1c3RlZEJvdHMuaW5jbHVkZXMocGFyYW1zLnVzZXIpKSB7XG5cdFx0XHRcdHN3aXRjaCAocGFyYW1zLnR5cGUpIHtcblx0XHRcdFx0XHRjYXNlICd2YW5kJzpcblx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLCBbXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5a+5ICcsICflsIflsI0gJyksXG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnIOaJp+ihjOegtOWdj+WbnumAgO+8jOi/meaYr+S4gOS4quWPr+S/oeeahOacuuWZqOS6uu+8jOaIkeS7rOWBh+WumuaCqOimgeWbnumAgOWJjeS4gOS4quS/ruiuoueJiOacrOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0JyDln7fooYznoLTlo57lm57pgIDvvIzpgJnmmK/kuIDlgIvlj6/kv6HnmoTmqZ/lmajkurrvvIzmiJHlgJHlgYflrprmgqjopoHlm57pgIDliY3kuIDlgIvkv67oqILniYjmnKzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdGluZGV4ID0gMjtcblx0XHRcdFx0XHRcdHBhcmFtcy51c2VyID0gcmV2c1sxXS5nZXRBdHRyaWJ1dGUoJ3VzZXInKTtcblx0XHRcdFx0XHRcdHBhcmFtcy51c2VySGlkZGVuID0gcmV2c1sxXS5nZXRBdHRyaWJ1dGUoJ3VzZXJoaWRkZW4nKSA9PT0gJyc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHQvKiBjYXNlICdub3JtJzogKi9cblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29udCA9IGNvbmZpcm0oXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6YCJ5oup5LqG5bi46KeE5Zue6YCA77yM5L2G5pyA5paw5L+u5pS55piv55Sx5LiA5Liq5Y+v5L+h55qE5py65Zmo5Lq677yIJyxcblx0XHRcdFx0XHRcdFx0XHQn6YG45pOH5LqG5bi46KaP5Zue6YCA77yM5L2G5pyA5paw5L+u5pS55piv55Sx5LiA5YCL5Y+v5L+h55qE5qmf5Zmo5Lq677yIJ1xuXHRcdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdFx0XHR1c2VyTm9ybSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J++8ieWBmuWHuueahOOAguehruWumuS7peWbnumAgOWJjeS4gOS4quS/ruiuoueJiOacrO+8jOWPlua2iOS7peWbnumAgOacuuWZqOS6uueahOS/ruaUuScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn77yJ5YGa5Ye655qE44CC56K65a6a5Lul5Zue6YCA5YmN5LiA5YCL5L+u6KiC54mI5pys77yM5Y+W5raI5Lul5Zue6YCA5qmf5Zmo5Lq655qE5L+u5pS5J1xuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRpZiAoY29udCkge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyh3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSwgW1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5a+5ICcsICflsIflsI0gJyksXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOaJp+ihjOW4uOinhOWbnumAgO+8jOi/meaYr+S4gOS4quWPr+S/oeeahOacuuWZqOS6uu+8jOWfuuS6juehruiupO+8jOaIkeS7rOWwhuWbnumAgOWJjeS4gOS4quS/ruiuoueJiOacrOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOWft+ihjOW4uOimj+WbnumAgO+8jOmAmeaYr+S4gOWAi+WPr+S/oeeahOapn+WZqOS6uu+8jOWfuuaWvOeiuuiqje+8jOaIkeWAkeWwh+WbnumAgOWJjeS4gOWAi+S/ruiogueJiOacrOOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdFx0aW5kZXggPSAyO1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMudXNlciA9IHJldnNbMV0uZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy51c2VySGlkZGVuID0gcmV2c1sxXS5nZXRBdHRyaWJ1dGUoJ3VzZXJoaWRkZW4nKSA9PT0gJyc7XG5cdFx0XHRcdFx0XHRcdHVzZXJOb3JtID0gcGFyYW1zLnVzZXIgfHwgVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oJ+aPkOekuicsIFtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhuWvuSAnLCAn5bCH5bCNICcpLFxuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0JyDmiafooYzluLjop4Tlm57pgIDvvIzov5nmmK/kuIDkuKrlj6/kv6HnmoTmnLrlmajkurrvvIzln7rkuo7noa7orqTvvIzmiJHku6zku43lsIblm57pgIDov5nkuKrkv67orqLniYjmnKzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0JyDln7fooYzluLjopo/lm57pgIDvvIzpgJnmmK/kuIDlgIvlj6/kv6HnmoTmqZ/lmajkurrvvIzln7rmlrznorroqo3vvIzmiJHlgJHku43lsIflm57pgIDpgJnlgIvkv67oqILniYjmnKzjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0bGV0IGNvdW50ID0gMDtcblx0XHRcdGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHJldnMubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0Kytjb3VudDtcblx0XHRcdFx0aWYgKHJldnNbaV0uZ2V0QXR0cmlidXRlKCd1c2VyJykgIT09IHBhcmFtcy51c2VyKSB7XG5cdFx0XHRcdFx0Zm91bmQgPSBpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWZvdW5kKSB7XG5cdFx0XHRcdHN0YXRlbGVtLmVycm9yKFtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acquaJvuWIsOS5i+WJjeeahOS/ruiuoueJiOacrO+8jOWPr+iDvSAnLCAn5pyq5om+5Yiw5LmL5YmN55qE5L+u6KiC54mI5pys77yM5Y+v6IO9ICcpLFxuXHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0JyDmmK/llK/kuIDotKHnjK7ogIXvvIzmiJbov5nkuKrnlKjmiLfov57nu63lgZrlh7rkuobotoXov4cgJyxcblx0XHRcdFx0XHRcdCcg5piv5ZSv5LiA6LKi54276ICF77yM5oiW6YCZ5YCL55So5oi26YCj57qM5YGa5Ye65LqG6LaF6YGOICdcblx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIoVHdpbmtsZS5nZXRQcmVmKCdyZXZlcnRNYXhSZXZpc2lvbnMnKSkgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5qyh57yW6L6R44CCJywgJyDmrKHnt6jovK/jgIInKSxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghY291bnQpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmiJHku6zlsIbopoHlm57pgIAw5Liq5L+u6K6i54mI5pys77yM6L+Z5rKh5pyJ5oSP5LmJ77yM5omA5Lul5Y+W5raI5Zue6YCA5pON5L2c44CC5Y+v6IO95piv5Zug5Li66L+Z5Liq5L+u6K6i54mI5pys5bey57uP6KKr5Zue6YCA77yM5L2G5L+u6K6i54mI5pysSUTku43mmK/kuIDmoLfnmoTjgIInLFxuXHRcdFx0XHRcdFx0J+aIkeWAkeWwh+imgeWbnumAgDDlgIvkv67oqILniYjmnKzvvIzpgJnmspLmnInmhI/nvqnvvIzmiYDku6Xlj5bmtojlm57pgIDmk43kvZzjgILlj6/og73mmK/lm6DngrrpgJnlgIvkv67oqILniYjmnKzlt7LntpPooqvlm57pgIDvvIzkvYbkv67oqILniYjmnKxJROS7jeaYr+S4gOaoo+eahOOAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGdvb2RfcmV2aXNpb24gPSByZXZzW2ZvdW5kXTtcblx0XHRcdGxldCB1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiA9IGZhbHNlO1xuXHRcdFx0aWYgKHBhcmFtcy50eXBlICE9PSAndmFuZCcgJiYgY291bnQgPiAxKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHVzZXJOb3JtICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg6L+e57ut5YGa5Ye65LqGICcsICcg6YCj57qM5YGa5Ye65LqGICcpICtcblx0XHRcdFx0XHRcdFx0bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihjb3VudCkgK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDmrKHnvJbovpHvvIzmmK/lkKbopoHlhajpg6jlm57pgIDvvJ8nLCAnIOasoee3qOi8r++8jOaYr+WQpuimgeWFqOmDqOWbnumAgO+8nycpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygn5o+Q56S6Jywgd2luZG93LndnVUxTKCfnlKjmiLflj5bmtojmk43kvZwnLCAn5L2/55So6ICF5Y+W5raI5pON5L2cJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRwYXJhbXMuY291bnQgPSBjb3VudDtcblx0XHRcdHBhcmFtcy5nb29kaWQgPSBnb29kX3JldmlzaW9uLmdldEF0dHJpYnV0ZSgncmV2aWQnKTtcblx0XHRcdHBhcmFtcy5nb29kdXNlciA9IGdvb2RfcmV2aXNpb24uZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRwYXJhbXMuZ29vZHVzZXJIaWRkZW4gPSBnb29kX3JldmlzaW9uLmdldEF0dHJpYnV0ZSgndXNlcmhpZGRlbicpID09PSAnJztcblx0XHRcdHN0YXRlbGVtLnN0YXR1cyhbXG5cdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKGNvdW50KSksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygnIOS4quS/ruiuoueJiOacrOS5i+WJjeeUsSAnLCAnIOWAi+S/ruiogueJiOacrOS5i+WJjeeUsSAnKSxcblx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy5nb29kdXNlckhpZGRlbiA/IFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZSA6IHBhcmFtcy5nb29kdXNlciksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygnIOWBmuWHuueahOS/ruiuoueJiOacrCAnLCAnIOWBmuWHuueahOS/ruiogueJiOacrCAnKSxcblx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy5nb29kaWQpLFxuXHRcdFx0XSk7XG5cdFx0XHRsZXQgc3VtbWFyeTtcblx0XHRcdGxldCBleHRyYV9zdW1tYXJ5O1xuXHRcdFx0c3dpdGNoIChwYXJhbXMudHlwZSkge1xuXHRcdFx0XHRjYXNlICd2YW5kJzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gVHdpbmtsZS5mbHVmZi5mb3JtYXRTdW1tYXJ5KFxuXHRcdFx0XHRcdFx0YOWbnumAgCRVU0VS5YGa5Ye655qEJHtwYXJhbXMuY291bnR9JHt3aW5kb3cud2dVTFMoJ+asoee8lui+ke+8jOWIsOeUsScsICfmrKHnt6jovK/vvIzliLDnlLEnKX0ke1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMuZ29vZHVzZXJIaWRkZW4gPyBUd2lua2xlLmZsdWZmLmhpZGRlbk5hbWUgOiBwYXJhbXMuZ29vZHVzZXJcblx0XHRcdFx0XHRcdH0ke3dpbmRvdy53Z1VMUygn5YGa5Ye655qE5pyA5ZCO5L+u6K6i54mI5pysICcsICflgZrlh7rnmoTmnIDlvozkv67oqILniYjmnKwgJyl9YCxcblx0XHRcdFx0XHRcdHBhcmFtcy51c2VySGlkZGVuID8gbnVsbCA6IHBhcmFtcy51c2VyXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0LyogY2FzZSAnbm9ybSc6ICovXG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdvZmZlclJlYXNvbk9uTm9ybWFsUmV2ZXJ0JykpIHtcblx0XHRcdFx0XHRcdGV4dHJhX3N1bW1hcnkgPSBwcm9tcHQoXG5cdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn5Y+v6YCJ55qE57yW6L6R5pGY6KaB77yaJywgJ+WPr+mBuOeahOe3qOi8r+aRmOimge+8micpfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAsXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5zdW1tYXJ5XG5cdFx0XHRcdFx0XHQpOyAvLyBwYWRkZWQgb3V0IHRvIHdpZGVuIHByb21wdCBpbiBGaXJlZm94XG5cdFx0XHRcdFx0XHRpZiAoZXh0cmFfc3VtbWFyeSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nOOAgicsICfkvb/nlKjogIXlj5bmtojmk43kvZzjgIInKSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHVzZXJIYXNBbHJlYWR5Q29uZmlybWVkQWN0aW9uID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c3VtbWFyeSA9IFR3aW5rbGUuZmx1ZmYuZm9ybWF0U3VtbWFyeShcblx0XHRcdFx0XHRcdGDlm57pgIAkVVNFUuWBmuWHuueahCR7cGFyYW1zLmNvdW50fSR7d2luZG93LndnVUxTKCfmrKHnvJbovpEnLCAn5qyh57eo6LyvJyl9YCxcblx0XHRcdFx0XHRcdHBhcmFtcy51c2VySGlkZGVuID8gbnVsbCA6IHBhcmFtcy51c2VyLFxuXHRcdFx0XHRcdFx0ZXh0cmFfc3VtbWFyeVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignY29uZmlybU9uRmx1ZmYnKSAmJlxuXHRcdFx0XHQhdXNlckhhc0FscmVhZHlDb25maXJtZWRBY3Rpb24gJiZcblx0XHRcdFx0IWNvbmZpcm0od2luZG93LndnVUxTKCflm57pgIDpobXpnaLvvJrmgqjnoa7lrprlkJfvvJ8nLCAn5Zue6YCA6aCB6Z2i77ya5oKo56K65a6a5ZeO77yfJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfnlKjmiLflj5bmtojmk43kvZzjgIInLCAn5L2/55So6ICF5Y+W5raI5pON5L2c44CCJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBEZWNpZGUgd2hldGhlciB0byBub3RpZnkgdGhlIHVzZXIgb24gc3VjY2Vzc1xuXHRcdFx0aWYgKFxuXHRcdFx0XHQhVHdpbmtsZS5mbHVmZi5za2lwVGFsayAmJlxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ29wZW5UYWxrUGFnZScpLmluY2x1ZGVzKHBhcmFtcy50eXBlKSAmJlxuXHRcdFx0XHQhcGFyYW1zLnVzZXJIaWRkZW4gJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpICE9PSBwYXJhbXMudXNlclxuXHRcdFx0KSB7XG5cdFx0XHRcdHBhcmFtcy5ub3RpZnlVc2VyID0gdHJ1ZTtcblx0XHRcdFx0Ly8gUGFzcyBhbG9uZyB0byB0aGUgd2FybiBtb2R1bGVcblx0XHRcdFx0cGFyYW1zLnZhbnRpbWVzdGFtcCA9IHRvcC5nZXRBdHRyaWJ1dGUoJ3RpbWVzdGFtcCcpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdFx0XHR0aXRsZTogcGFyYW1zLnBhZ2VuYW1lLFxuXHRcdFx0XHRzdW1tYXJ5LFxuXHRcdFx0XHR0YWdzOiBUd2lua2xlLmNoYW5nZVRhZ3MsXG5cdFx0XHRcdHRva2VuOiBjc3JmdG9rZW4sXG5cdFx0XHRcdHVuZG86IGxhc3RyZXZpZCxcblx0XHRcdFx0dW5kb2FmdGVyOiBwYXJhbXMuZ29vZGlkLFxuXHRcdFx0XHRiYXNldGltZXN0YW1wOiB0b3VjaGVkLFxuXHRcdFx0XHRzdGFydHRpbWVzdGFtcDogbG9hZHRpbWVzdGFtcCxcblx0XHRcdFx0bWlub3I6IFR3aW5rbGUuZ2V0UHJlZignbWFya1JldmVydGVkUGFnZXNBc01pbm9yJykuaW5jbHVkZXMocGFyYW1zLnR5cGUpID8gdHJ1ZSA6IHVuZGVmaW5lZCxcblx0XHRcdFx0Ym90OiB0cnVlLFxuXHRcdFx0fTtcblx0XHRcdC8vIEhhbmRsZSB3YXRjaGluZywgcG9zc2libGUgZXhwaXJ5XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFJldmVydGVkUGFnZXMnKS5pbmNsdWRlcyhwYXJhbXMudHlwZSkpIHtcblx0XHRcdFx0Y29uc3Qgd2F0Y2hPckV4cGlyeSA9IFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hSZXZlcnRlZEV4cGlyeScpO1xuXHRcdFx0XHRpZiAoIXdhdGNoT3JFeHBpcnkgfHwgd2F0Y2hPckV4cGlyeSA9PT0gJ25vJykge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICdub2NoYW5nZSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAod2F0Y2hPckV4cGlyeSA9PT0gJ2RlZmF1bHQnIHx8IHdhdGNoT3JFeHBpcnkgPT09ICdwcmVmZXJlbmNlcycpIHtcblx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3QgPSAncHJlZmVyZW5jZXMnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICd3YXRjaCc7XG5cdFx0XHRcdFx0Ly8gbnVtYmVyIGFsbG93ZWQgYnV0IG5vdCB1c2VkIGluIFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB3YXRjaE9yRXhwaXJ5ID09PSAnc3RyaW5nJyAmJiB3YXRjaE9yRXhwaXJ5ICE9PSAneWVzJykge1xuXHRcdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gd2F0Y2hPckV4cGlyeTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghVHdpbmtsZS5mbHVmZi5yb2xsYmFja0luUGxhY2UpIHtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBwYXJhbXMucGFnZW5hbWU7XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSAn5Zue6YCA5a6M5oiQJztcblx0XHRcdGNvbnN0IHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2Y5Zue6YCA5YaF5a65JywgJ+WEsuWtmOWbnumAgOWFp+WuuScpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5jYWxsYmFja3MuY29tcGxldGUsXG5cdFx0XHRcdHN0YXRlbGVtXG5cdFx0XHQpO1xuXHRcdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHR9LFxuXHRcdGNvbXBsZXRlOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHQvLyBUT0RPIE1vc3Qgb2YgdGhpcyBpcyBjb3B5LXBhc3RlZCBmcm9tIE1vcmViaXRzLndpa2kucGFnZSNmblNhdmVTdWNjZXNzLiBVbmlmeSBpdFxuXHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLmdldFhNTCgpO1xuXHRcdFx0Y29uc3QgJGVkaXQgPSAkKHhtbCkuZmluZCgnZWRpdCcpO1xuXHRcdFx0aWYgKCQoeG1sKS5maW5kKCdjYXB0Y2hhJykubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuI3og73lm57pgIDvvIzlm6DmnI3liqHlmajopoHmsYLmgqjovpPlhaXpqozor4HnoIHjgIInLCAn5LiN6IO95Zue6YCA77yM5Zug5Ly65pyN5Zmo6KaB5rGC5oKo6Ly45YWl6amX6K2J56K844CCJylcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAoJGVkaXQuYXR0cignbm9jaGFuZ2UnKSA9PT0gJycpIHtcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfopoHlm57pgIDliLDnmoTniYjmnKzkuI7lvZPliY3niYjmnKznm7jlkIzvvIzmsqHku4DkuYjopoHlgZrnmoQnLFxuXHRcdFx0XHRcdFx0J+imgeWbnumAgOWIsOeahOeJiOacrOiIh+ebruWJjeeJiOacrOebuOWQjO+8jOaykuS7gOm6vOimgeWBmueahCdcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHtwYXJhbXN9ID0gYXBpb2JqO1xuXHRcdFx0XHRpZiAocGFyYW1zLm5vdGlmeVVzZXIgJiYgIXBhcmFtcy51c2VySGlkZGVuKSB7XG5cdFx0XHRcdFx0Ly8gbm90aWZ5VXNlciBvbmx5IGZyb20gbWFpbiwgbm90IGZyb20gdG9SZXZpc2lvblxuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLCBbXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W8gOWQr+eUqOaItyAnLCAn6ZaL5ZWf5L2/55So6ICFICcpLFxuXHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy51c2VyKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOeahOiuqOiuuumhtScsICcg55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0Y29uc3Qgd2luZG93UXVlcnkgPSB7XG5cdFx0XHRcdFx0XHR0aXRsZTogYFVzZXIgdGFsazoke3BhcmFtcy51c2VyfWAsXG5cdFx0XHRcdFx0XHRhY3Rpb246ICdlZGl0Jyxcblx0XHRcdFx0XHRcdHByZXZpZXc6ICd5ZXMnLFxuXHRcdFx0XHRcdFx0dmFuYXJ0aWNsZTogcGFyYW1zLnBhZ2VuYW1lLnJlcGxhY2UoL18vZywgJyAnKSxcblx0XHRcdFx0XHRcdHZhbmFydGljbGVyZXZpZDogcGFyYW1zLnJldmlkLFxuXHRcdFx0XHRcdFx0dmFudGltZXN0YW1wOiBwYXJhbXMudmFudGltZXN0YW1wLFxuXHRcdFx0XHRcdFx0dmFuYXJ0aWNsZWdvb2RyZXZpZDogcGFyYW1zLmdvb2RpZCxcblx0XHRcdFx0XHRcdHR5cGU6IHBhcmFtcy50eXBlLFxuXHRcdFx0XHRcdFx0Y291bnQ6IHBhcmFtcy5jb3VudCxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHN3aXRjaCAoVHdpbmtsZS5nZXRQcmVmKCd1c2VyVGFsa1BhZ2VNb2RlJykpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ3RhYic6XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKG13LnV0aWwuZ2V0VXJsKCcnLCB3aW5kb3dRdWVyeSksICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2JsYW5rJzpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4oXG5cdFx0XHRcdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwoJycsIHdpbmRvd1F1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHQnX2JsYW5rJyxcblx0XHRcdFx0XHRcdFx0XHQnbm9vcGVuZXIsbm9yZWZlcnJlcixsb2NhdGlvbj1ubyx0b29sYmFyPW5vLHN0YXR1cz1ubyxkaXJlY3Rvcmllcz1ubyxzY3JvbGxiYXJzPXllcyx3aWR0aD0xMjAwLGhlaWdodD04MDAnXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0LyogY2FzZSAnd2luZG93JzogKi9cblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKFxuXHRcdFx0XHRcdFx0XHRcdG13LnV0aWwuZ2V0VXJsKCcnLCB3aW5kb3dRdWVyeSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hbWUgPT09ICd0d2lua2xld2FybndpbmRvdycgPyAnX2JsYW5rJyA6ICd0d2lua2xld2FybndpbmRvdycsXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hbWUgPT09ICd0d2lua2xld2FybndpbmRvdydcblx0XHRcdFx0XHRcdFx0XHRcdD8gJ25vb3BlbmVyLG5vcmVmZXJyZXIsJ1xuXHRcdFx0XHRcdFx0XHRcdFx0OiAnJyArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2xvY2F0aW9uPW5vLHRvb2xiYXI9bm8sc3RhdHVzPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJhcnM9eWVzLHdpZHRoPTEyMDAsaGVpZ2h0PTgwMCdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0fTtcblx0Ly8gSWYgYnVpbHRJblN0cmluZyBjb250YWlucyB0aGUgc3RyaW5nIFwiJFVTRVJcIiwgaXQgd2lsbCBiZSByZXBsYWNlZFxuXHQvLyBieSBhbiBhcHByb3ByaWF0ZSB1c2VyIGxpbmsgaWYgYSB1c2VyIG5hbWUgaXMgcHJvdmlkZWRcblx0VHdpbmtsZS5mbHVmZi5mb3JtYXRTdW1tYXJ5ID0gKGJ1aWx0SW5TdHJpbmcsIHVzZXJOYW1lLCBjdXN0b21TdHJpbmcpID0+IHtcblx0XHRsZXQgcmVzdWx0ID0gYnVpbHRJblN0cmluZztcblx0XHQvLyBhcHBlbmQgdXNlcidzIGN1c3RvbSByZWFzb25cblx0XHRpZiAoY3VzdG9tU3RyaW5nKSB7XG5cdFx0XHRyZXN1bHQgKz0gYO+8miR7TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKGN1c3RvbVN0cmluZyl9YDtcblx0XHR9XG5cdFx0Ly8gZmluZCBudW1iZXIgb2YgVVRGLTggYnl0ZXMgdGhlIHJlc3VsdGluZyBzdHJpbmcgdGFrZXMgdXAsIGFuZCBwb3NzaWJseSBhZGRcblx0XHQvLyBhIGNvbnRyaWJ1dGlvbnMgb3IgY29udHJpYnV0aW9ucyt0YWxrIGxpbmsgaWYgaXQgZG9lc24ndCBwdXNoIHRoZSBlZGl0IHN1bW1hcnlcblx0XHQvLyBvdmVyIHRoZSA0OTktYnl0ZSBsaW1pdFxuXHRcdGlmICgvXFwkVVNFUi8udGVzdChidWlsdEluU3RyaW5nKSkge1xuXHRcdFx0aWYgKHVzZXJOYW1lKSB7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdExlbiA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChyZXN1bHQucmVwbGFjZSgnJFVTRVInLCAnJykpKS5sZW5ndGg7XG5cdFx0XHRcdGNvbnN0IGNvbnRyaWJzTGluayA9IGBbW1NwZWNpYWw6Q29udHJpYnV0aW9ucy8ke3VzZXJOYW1lfXwke3VzZXJOYW1lfV1dYDtcblx0XHRcdFx0Y29uc3QgY29udHJpYnNMZW4gPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29udHJpYnNMaW5rKSkubGVuZ3RoO1xuXHRcdFx0XHRpZiAocmVzdWx0TGVuICsgY29udHJpYnNMZW4gPD0gNDk5KSB7XG5cdFx0XHRcdFx0Y29uc3QgdGFsa0xpbmsgPSBg77yIW1tVc2VyIHRhbGs6JHt1c2VyTmFtZX0ke3dpbmRvdy53Z1VMUygnfOiuqOiuul1d77yJJywgJ3zoqI7oq5ZdXe+8iScpfWA7XG5cdFx0XHRcdFx0aWYgKHJlc3VsdExlbiArIGNvbnRyaWJzTGVuICsgdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHRhbGtMaW5rKSkubGVuZ3RoIDw9IDQ5OSkge1xuXHRcdFx0XHRcdFx0cmVzdWx0ID0gTW9yZWJpdHMuc3RyaW5nLnNhZmVSZXBsYWNlKHJlc3VsdCwgJyRVU0VSJywgY29udHJpYnNMaW5rICsgdGFsa0xpbmspO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSBNb3JlYml0cy5zdHJpbmcuc2FmZVJlcGxhY2UocmVzdWx0LCAnJFVTRVInLCBjb250cmlic0xpbmspO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXN1bHQgPSBNb3JlYml0cy5zdHJpbmcuc2FmZVJlcGxhY2UocmVzdWx0LCAnJFVTRVInLCB1c2VyTmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShyZXN1bHQsICckVVNFUicsIFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuZmx1ZmYsICdmbHVmZicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWJhdGNoZGVsZXRlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWJhdGNoZGVsZXRlKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiB0d2lua2xlYmF0Y2hkZWxldGUuanM6IEJhdGNoIGRlbGV0ZSBtb2R1bGUgKHN5c29wcyBvbmx5KVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJELWJhdGNoXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3Rpbmcgbm9uLWFydGljbGVzLCBhbmQgU3BlY2lhbDpQcmVmaXhJbmRleFxuXHQgKi9cblx0VHdpbmtsZS5iYXRjaGRlbGV0ZSA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRNb3JlYml0cy51c2VySXNTeXNvcCAmJlxuXHRcdFx0KChtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKSAmJiBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID4gMCkgfHxcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1ByZWZpeGluZGV4JyB8fFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQnJva2VuUmVkaXJlY3RzJylcblx0XHQpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2ssXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5om55YigJywgJ+aJueWIqicpLFxuXHRcdFx0XHQndHctYmF0Y2gnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WIoOmZpOatpOWIhuexu+aIlumhtemdouS4reeahOaJgOaciemTvuaOpScsICfliKrpmaTmraTliIbpoZ7miJbpoIHpnaLkuK3nmoTmiYDmnInpgKPntZAnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGUgPSB7fTtcblx0Ly8gSGFzIHRoZSBzdWJwYWdlcyBsaXN0IGJlZW4gbG9hZGVkP1xuXHRsZXQgc3VicGFnZXNMb2FkZWQ7XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0c3VicGFnZXNMb2FkZWQgPSBmYWxzZTtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNDAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmibnph4/liKDpmaQnLCAn5om55qyh5Yiq6ZmkJykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI2JhdGNoZGVsZXRlJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKSxcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlX3BhZ2UnLFxuXHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlJyxcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfliKDpmaTlhbPogZTnmoTorqjorrrpobXvvIjnlKjmiLforqjorrrpobXpmaTlpJbvvIknLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+WIqumZpOmXnOiBr+eahOiojuirlumgge+8iOS9v+eUqOiAheiojuirlumggemZpOWklu+8iSdcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfdGFsaycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfdGFsaycsXG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOWIsOW3suWIoOmhtemdoueahOmHjeWumuWQkemhtScsICfliKrpmaTliLDlt7LliKrpoIHpnaLnmoTph43mlrDlsI7lkJHpoIHpnaInKSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlX3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfcmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk5bey5Yig6aG16Z2i55qE5a2Q6aG16Z2iJywgJ+WIqumZpOW3suWIqumggemdoueahOWtkOmggemdoicpLFxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlX3N1YnBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay50b2dnbGVTdWJwYWdlcyxcblx0XHRcdFx0XHRcdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOW3suWIoOWtkOmhtemdoueahOiuqOiuuumhtScsICfliKrpmaTlt7LliKrlrZDpoIHpnaLnmoToqI7oq5bpoIEnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlX3N1YnBhZ2VfdGFsa3MnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlX3N1YnBhZ2VfdGFsa3MnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCfliKDpmaTliLDlt7LliKDlrZDpobXpnaLnmoTph43lrprlkJHpobUnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+WIqumZpOWIsOW3suWIquWtkOmggemdoueahOmHjeaWsOWwjuWQkemggemdoidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfc3VicGFnZV9yZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQn5Y+W5raI5omA5pyJ5bey5Yig6aG16Z2i55qE6ZO+5YWl77yI5LuF5aSE55CG5p2h55uu5ZG95ZCN56m66Ze077yJJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCflj5bmtojmiYDmnInlt7LliKrpoIHpnaLnmoTpgKPlhaXvvIjlg4XomZXnkIbmop3nm67lkb3lkI3nqbrplpPvvIknXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAndW5saW5rX3N1YnBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3VubGlua19zdWJwYWdlcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5bmtojpk77lhaXvvIjku4XlpITnkIbmnaHnm67lkb3lkI3nqbrpl7TvvIknLCAn5Y+W5raI6YCj5YWl77yI5YOF6JmV55CG5qKd55uu5ZG95ZCN56m66ZaT77yJJyksXG5cdFx0XHRcdFx0bmFtZTogJ3VubGlua19wYWdlJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3VubGluaycsXG5cdFx0XHRcdFx0Y2hlY2tlZDogZmFsc2UsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaTmlofku7bkvb/nlKjvvIjmiYDmnInlkb3lkI3nqbrpl7TvvIknLCAn56e76Zmk5qqU5qGI5L2/55So77yI5omA5pyJ5ZG95ZCN56m66ZaT77yJJyksXG5cdFx0XHRcdFx0bmFtZTogJ3VubGlua19maWxlJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3VubGlua19maWxlJyxcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdjb21tb25fcmVhc29uJyxcblx0XHRcdGxhYmVsOiAn5bi455So55CG55Sx77yaJyxcblx0XHRcdHN0eWxlOiAnd2lkdGg6IDg1JTsnLFxuXHRcdFx0bGlzdDogVHdpbmtsZS5iYXRjaGRlbGV0ZS5kZWxldGVyZWFzb25saXN0LFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2suY2hhbmdlX2NvbW1vbl9yZWFzb24sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0c2l6ZTogNzUsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAncmV2aXNpb25zfGluZm98aW1hZ2VpbmZvJyxcblx0XHRcdGlucHJvcDogJ3Byb3RlY3Rpb24nLFxuXHRcdFx0cnZwcm9wOiAnc2l6ZXx1c2VyJyxcblx0XHR9O1xuXHRcdC8vIE9uIGNhdGVnb3JpZXNcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMTQpIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdjYXRlZ29yeW1lbWJlcnMnO1xuXHRcdFx0cXVlcnkuZ2NtdGl0bGUgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRxdWVyeS5nY21saW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHRcdC8vIE9uIFNwZWNpYWw6UHJlZml4SW5kZXhcblx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdQcmVmaXhpbmRleCcpIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdhbGxwYWdlcyc7XG5cdFx0XHRxdWVyeS5nYXBsaW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHRcdGlmIChtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ByZWZpeCcpKSB7XG5cdFx0XHRcdHF1ZXJ5LmdhcG5hbWVzcGFjZSA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgnbmFtZXNwYWNlJyk7XG5cdFx0XHRcdHF1ZXJ5LmdhcHByZWZpeCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncHJlZml4Jyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgcGF0aFNwbGl0ID0gZGVjb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLnBhdGhuYW1lKS5zcGxpdCgnLycpO1xuXHRcdFx0XHRpZiAocGF0aFNwbGl0Lmxlbmd0aCA8IDMgfHwgcGF0aFNwbGl0WzJdICE9PSAnU3BlY2lhbDrliY3nvIDntKLlvJUnKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRpdGxlU3BsaXQgPSBwYXRoU3BsaXRbM10uc3BsaXQoJzonKTtcblx0XHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VJZHMnKVt0aXRsZVNwbGl0WzBdLnRvTG93ZXJDYXNlKCldO1xuXHRcdFx0XHRpZiAodGl0bGVTcGxpdC5sZW5ndGggPCAyIHx8IHF1ZXJ5LmdhcG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID0gMDsgLy8gYXJ0aWNsZSBuYW1lc3BhY2Vcblx0XHRcdFx0XHRxdWVyeS5nYXBwcmVmaXggPSBwYXRoU3BsaXQuc3BsaWNlKDMpLmpvaW4oJy8nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRwYXRoU3BsaXQgPSBwYXRoU3BsaXQuc3BsaWNlKDQpO1xuXHRcdFx0XHRcdHBhdGhTcGxpdC5zcGxpY2UoMCwgMCwgdGl0bGVTcGxpdC5zcGxpY2UoMSkuam9pbignOicpKTtcblx0XHRcdFx0XHRxdWVyeS5nYXBwcmVmaXggPSBwYXRoU3BsaXQuam9pbignLycpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBPbiBTcGVjaWFsOkJyb2tlblJlZGlyZWN0c1xuXHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ0Jyb2tlblJlZGlyZWN0cycpIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdxdWVyeXBhZ2UnO1xuXHRcdFx0cXVlcnkuZ3FwcGFnZSA9ICdCcm9rZW5SZWRpcmVjdHMnO1xuXHRcdFx0cXVlcnkuZ3FwbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0XHQvLyBPbiBub3JtYWwgcGFnZXNcblx0XHR9IGVsc2Uge1xuXHRcdFx0cXVlcnkuZ2VuZXJhdG9yID0gJ2xpbmtzJztcblx0XHRcdHF1ZXJ5LnRpdGxlcyA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdHF1ZXJ5LmdwbGxpbWl0ID0gVHdpbmtsZS5nZXRQcmVmKCdiYXRjaE1heCcpO1xuXHRcdH1cblx0XHRjb25zdCBzdGF0dXNkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRzdGF0dXNkaXYuc3R5bGUucGFkZGluZyA9ICcxNXB4JzsgLy8ganVzdCBzbyBpdCBkb2Vzbid0IGxvb2sgYnJva2VuXG5cdFx0V2luZG93LnNldENvbnRlbnQoc3RhdHVzZGl2KTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChzdGF0dXNkaXYpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcyA9IHt9O1xuXHRcdGNvbnN0IHN0YXRlbGVtID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+aKk+WPlumhtemdouWIl+ihqCcsICfmipPlj5bpoIHpnaLliJfooagnKSk7XG5cdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCmJywgJ+i8ieWFpeS4reKApicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdFx0Y29uc3QgJHBhZ2VzID0gJCh4bWwpLmZpbmQoJ3BhZ2UnKS5maWx0ZXIoJzpub3QoW21pc3NpbmddKScpOyAvLyA6bm90KFtpbWFnZXJlcG9zaXRvcnk9XCJzaGFyZWRcIl0pXG5cdFx0XHRcdCRwYWdlcy5lYWNoKChfaW5kZXgsIHBhZ2UpID0+IHtcblx0XHRcdFx0XHRjb25zdCAkcGFnZSA9ICQocGFnZSk7XG5cdFx0XHRcdFx0Y29uc3QgbnMgPSAkcGFnZS5hdHRyKCducycpO1xuXHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gJHBhZ2UuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0XHRjb25zdCBpc1JlZGlyID0gJHBhZ2UuYXR0cigncmVkaXJlY3QnKSA9PT0gJyc7XG5cdFx0XHRcdFx0Y29uc3QgJGVkaXRwcm90ID0gJHBhZ2UuZmluZCgncHJbdHlwZT1cImVkaXRcIl1bbGV2ZWw9XCJzeXNvcFwiXScpO1xuXHRcdFx0XHRcdGNvbnN0IGlzUHJvdGVjdGVkID0gJGVkaXRwcm90Lmxlbmd0aCA+IDA7XG5cdFx0XHRcdFx0Y29uc3Qgc2l6ZSA9ICRwYWdlLmZpbmQoJ3JldicpLmF0dHIoJ3NpemUnKTtcblx0XHRcdFx0XHRjb25zdCBtZXRhZGF0YSA9IFtdO1xuXHRcdFx0XHRcdGlmIChpc1JlZGlyKSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID0gd2luZG93LndnVUxTKCfph43lrprlkJEnLCAn6YeN5paw5bCO5ZCRJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChpc1Byb3RlY3RlZCkge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGFbbWV0YWRhdGEubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5YWo5L+d5oqk77yMJywgJ+WFqOS/neitt++8jCcpICtcblx0XHRcdFx0XHRcdFx0KCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfml6DpmZDmnJ8nLCAn54Sh6ZmQ5pyfJylcblx0XHRcdFx0XHRcdFx0XHQ6IGAke25ldyBNb3JlYml0cy5kYXRlKCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSkuY2FsZW5kYXIoJ3V0YycpfSAoVVRDKWApICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfov4fmnJ8nLCAn6YGO5pyfJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChucyA9PT0gJzYnKSB7XG5cdFx0XHRcdFx0XHQvLyBtaW1pYyB3aGF0IGRlbGltYWdlcyB1c2VkIHRvIHNob3cgZm9yIGZpbGVzXG5cdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID1cblx0XHRcdFx0XHRcdFx0KHdpbmRvdy53Z1VMUygn5LiK5Lyg6ICF77yaJywgJ+S4iuWCs+iAhe+8micpICsgJHBhZ2UuZmluZCgnaWknKS5hdHRyKCd1c2VyJyksXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyA5ZCO57yW6L6R77yaJywgJ+acgOW+jOe3qOi8r++8micpICsgJHBhZ2UuZmluZCgncmV2JykuYXR0cigndXNlcicpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGFbbWV0YWRhdGEubGVuZ3RoXSA9IG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIoc2l6ZSkgKyB3aW5kb3cud2dVTFMoJ+Wtl+iKgicsICfkvY3lhYPntYQnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlc1t0aXRsZV0gPSB7XG5cdFx0XHRcdFx0XHRsYWJlbDogdGl0bGUgKyAobWV0YWRhdGEubGVuZ3RoID8gYO+8iCR7bWV0YWRhdGEuam9pbign77yMJyl977yJYCA6ICcnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiB0aXRsZSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRzdHlsZTogaXNQcm90ZWN0ZWQgPyAnY29sb3I6ICNmMDAnIDogJycsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IGZvcm1fID0gYXBpb2JqLnBhcmFtcy5mb3JtO1xuXHRcdFx0XHRmb3JtXy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W+heWIoOmZpOmhtemdoicsICflvoXliKrpmaTpoIHpnaInKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo6YCJJywgJ+WFqOmBuCcpLFxuXHRcdFx0XHRcdGV2ZW50OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHQkKHJlc3VsdClcblx0XHRcdFx0XHRcdFx0LmZpbmQoJ2lucHV0W25hbWU9cGFnZXNdOm5vdCg6Y2hlY2tlZCknKVxuXHRcdFx0XHRcdFx0XHQuZWFjaCgoXywgZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGUuY2xpY2soKTsgLy8gY2hlY2sgaXQsIGFuZCBpbnZva2UgY2xpY2sgZXZlbnQgc28gdGhhdCBzdWJncm91cCBjYW4gYmUgc2hvd25cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQvLyBDaGVjayBhbnkgdW5jaGVja2VkIHN1YnBhZ2VzIHRvb1xuXHRcdFx0XHRcdFx0JGJvZHkuZmluZCgnaW5wdXRbbmFtZT1cInBhZ2VzLnN1YnBhZ2VzXCJdJykucHJvcCgnY2hlY2tlZCcsIHRydWUpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtXy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS4jemAiScsICflhajkuI3pgbgnKSxcblx0XHRcdFx0XHRldmVudDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0JChyZXN1bHQpXG5cdFx0XHRcdFx0XHRcdC5maW5kKCdpbnB1dFtuYW1lPXBhZ2VzXTpjaGVja2VkJylcblx0XHRcdFx0XHRcdFx0LmVhY2goKF8sIGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRlLmNsaWNrKCk7IC8vIHVuY2hlY2sgaXQsIGFuZCBpbnZva2UgY2xpY2sgZXZlbnQgc28gdGhhdCBzdWJncm91cCBjYW4gYmUgaGlkZGVuXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZXMnLFxuXHRcdFx0XHRcdGlkOiAndHctZGJhdGNoLXBhZ2VzJyxcblx0XHRcdFx0XHRzaGlmdENsaWNrU3VwcG9ydDogdHJ1ZSxcblx0XHRcdFx0XHRsaXN0OiBPYmplY3QudmFsdWVzKFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXMpLm1hcCgoZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtXy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gZm9ybV8ucmVuZGVyKCk7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMuV2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRcdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAncGFnZXMnKSkge1xuXHRcdFx0XHRcdGdlbmVyYXRlQXJyb3dMaW5rcyhjaGVja2JveCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRzdGF0ZWxlbVxuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdH07XG5cdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdH07XG5cdGNvbnN0IGdlbmVyYXRlQXJyb3dMaW5rcyA9IChjaGVja2JveCkgPT4ge1xuXHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsICcgPicpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdjbGFzcycsICd0dy1kYmF0Y2gtcGFnZS1saW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChjaGVja2JveC52YWx1ZSkpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0Y2hlY2tib3gubmV4dEVsZW1lbnRTaWJsaW5nLmFwcGVuZChsaW5rKTtcblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5nZW5lcmF0ZU5ld1BhZ2VMaXN0ID0gKGZvcm0pID0+IHtcblx0XHQvLyBVcGRhdGUgdGhlIGxpc3Qgb2YgY2hlY2tlZCBwYWdlcyBpbiBUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzIG9iamVjdFxuXHRcdGNvbnN0IGVsZW1lbnRzID0gZm9ybS5lbGVtZW50cy5wYWdlcztcblx0XHRpZiAoZWxlbWVudHMgaW5zdGFuY2VvZiBOb2RlTGlzdCkge1xuXHRcdFx0Ly8gaWYgdGhlcmUgYXJlIG11bHRpcGxlIHBhZ2VzXG5cdFx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcblx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlc1tlbGVtZW50LnZhbHVlXS5jaGVja2VkID0gZWxlbWVudC5jaGVja2VkO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudHMgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG5cdFx0XHQvLyBpZiB0aGVyZSBpcyBqdXN0IG9uZSBwYWdlXG5cdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzW2VsZW1lbnRzLnZhbHVlXS5jaGVja2VkID0gZWxlbWVudHMuY2hlY2tlZDtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bmFtZTogJ3BhZ2VzJyxcblx0XHRcdGlkOiAndHctZGJhdGNoLXBhZ2VzJyxcblx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0bGlzdDogT2JqZWN0LnZhbHVlcyhUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzKS5tYXAoKGUpID0+IHtcblx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHR9KSxcblx0XHR9KS5yZW5kZXIoKTtcblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5kZWxldGVyZWFzb25saXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+mAieaLqScsICfoq4vpgbjmk4cnKSxcblx0XHRcdHZhbHVlOiAnJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdHNu+8muWOn+S9nOiAheaPkOivt+WIoOmZpOaIlua4heepuumhtemdou+8jOS4lOmhtemdouWOn+S9nOiAheS7heacieS4gOS6uicsXG5cdFx0XHRcdCdHNu+8muWOn+S9nOiAheaPkOiri+WIqumZpOaIlua4heepuumggemdou+8jOS4lOmggemdouWOn+S9nOiAheWDheacieS4gOS6uidcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjRzZ8RzZdXe+8muWOn+S9nOiAheaPkOivt+WIoOmZpOaIlua4heepuumhtemdou+8jOS4lOmhtemdouWOn+S9nOiAheS7heacieS4gOS6uicsXG5cdFx0XHRcdCdbW1FXOkNTRCNHNnxHNl1d77ya5Y6f5L2c6ICF5o+Q6KuL5Yiq6Zmk5oiW5riF56m66aCB6Z2i77yM5LiU6aCB6Z2i5Y6f5L2c6ICF5YOF5pyJ5LiA5Lq6J1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdHOe+8muWtpOeri+mhtemdou+8jOavlOWmguayoeacieS4u+mhtemdoueahOiuqOiuuumhteOAgeaMh+WQkeepuumhtemdoueahOmHjeWumuWQkeetiScsXG5cdFx0XHRcdCdHOe+8muWtpOeri+mggemdou+8jOavlOWmguaykuacieS4u+mggemdoueahOiojuirlumggeOAgeaMh+WQkeepuumggemdoueahOmHjeaWsOWwjuWQkeetiSdcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCdbW1FXOkNTRCNHOXxHOV1d77ya5a2k56uL6aG16Z2iJywgJ1tbUVc6Q1NEI0c5fEc5XV3vvJrlraTnq4vpoIHpnaInKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ1Ix77ya5LiN6IO95Y+R5oyl5a6e6ZmF5L2c55So55qE6YeN5a6a5ZCR44CCJywgJ1Ix77ya5LiN6IO955m85o+u5a+m6Zqb5L2c55So55qE6YeN5a6a5ZCR44CCJyksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjUjF8UjFdXe+8muS4jeiDveWPkeaMpeWunumZheS9nOeUqOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdCdbW1FXOkNTRCNSMXxSMV1d77ya5LiN6IO955m85o+u5a+m6Zqb5L2c55So55qE6YeN5a6a5ZCR44CCJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdSMu+8muWQjeensOS4juWvvOWQkeebruagh+S7o+ihqOS6i+eJqeS4jeS4gOiHtOaIluS4jeWujOWFqOS4gOiHtOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdCdSMu+8muWQjeeoseiIh+WwjuWQkeebruaomeS7o+ihqOS6i+eJqeS4jeS4gOiHtOaIluS4jeWujOWFqOS4gOiHtOeahOmHjeWumuWQkeOAgidcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjUjJ8UjJdXe+8muWQjeensOS4juWvvOWQkeebruagh+S7o+ihqOS6i+eJqeS4jeS4gOiHtOaIluS4jeWujOWFqOS4gOiHtOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdCdbW1FXOkNTRCNSMnxSMl1d77ya5ZCN56ix6IiH5bCO5ZCR55uu5qiZ5Luj6KGo5LqL54mp5LiN5LiA6Ie05oiW5LiN5a6M5YWo5LiA6Ie055qE6YeN5a6a5ZCR44CCJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ0Y077ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5paH5Lu2JywgJ0Y077ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5qqU5qGIJyksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCdbW1FXOkNTRCNGNHxGNF1d77ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5paH5Lu2JywgJ1tbUVc6Q1NEI0Y0fEY0XV3vvJrlj6/ooqvmm7/ku6PnmoTlkIjnkIbkvb/nlKjmqpTmoYgnKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdGNe+8muayoeacieiiq+adoeebruS9v+eUqOeahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tuOAgeayoeacieWhq+WGmeS7u+S9leWQiOeQhuS9v+eUqOS+neaNrueahOmdnuiHqueUseiRl+S9nOadg+aWh+S7ticsXG5cdFx0XHRcdCdGNe+8muaykuacieiiq+aineebruS9v+eUqOeahOmdnuiHqueUseeJiOasiuaqlOahiOOAgeaykuacieWhq+Wvq+S7u+S9leWQiOeQhuS9v+eUqOS+neaTmueahOmdnuiHqueUseeJiOasiuaqlOahiCdcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjRjV8RjVdXe+8muayoeacieiiq+adoeebruS9v+eUqOeahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tuOAgeayoeacieWhq+WGmeS7u+S9leWQiOeQhuS9v+eUqOS+neaNrueahOmdnuiHqueUseiRl+S9nOadg+aWh+S7ticsXG5cdFx0XHRcdCdbW1FXOkNTRCNGNXxGNV1d77ya5rKS5pyJ6KKr5qKd55uu5L2/55So55qE6Z2e6Ieq55Sx54mI5qyK5qqU5qGI44CB5rKS5pyJ5aGr5a+r5Lu75L2V5ZCI55CG5L2/55So5L6d5pOa55qE6Z2e6Ieq55Sx54mI5qyK5qqU5qGIJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdPMe+8mueUqOaIt+ivt+axguWIoOmZpOiHquW3seeahOeUqOaIt+mhteaIluWFtuWtkOmhtemdoicsXG5cdFx0XHRcdCdPMe+8muS9v+eUqOiAheiri+axguWIqumZpOiHquW3seeahOS9v+eUqOiAhemggemdouaIluWFtuWtkOmggemdoidcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjTzF8TzFdXe+8mueUqOaIt+ivt+axguWIoOmZpOiHquW3seeahFtbSGVscDrnlKjmiLfpobV855So5oi36aG1XV3miJblhbblrZDpobXpnaLjgIInLFxuXHRcdFx0XHQnW1tRVzpDU0QjTzF8TzFdXe+8muS9v+eUqOiAheiri+axguWIqumZpOiHquW3seeahFtbSGVscDrnlKjmiLfpobV85L2/55So6ICF6aCB6Z2iXV3miJblhbblrZDpoIHpnaLjgIInXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnTzLvvJrnqbrnmoTliIbnsbvvvIjmsqHmnInmnaHnm67kuZ/msqHmnInlrZDliIbnsbvvvIknLCAnTzLvvJrnqbrnmoTliIbpoZ7vvIjmspLmnInmop3nm67kuZ/mspLmnInlrZDliIbpoZ7vvIknKSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW1FXOkNTRCNPMnxPMl1d77ya56m655qE5YiG57G777yI5rKh5pyJ5p2h55uu5Lmf5rKh5pyJ5a2Q5YiG57G777yJ44CCJyxcblx0XHRcdFx0J1tbUVc6Q1NEI08yfE8yXV3vvJrnqbrnmoTliIbpoZ7vvIjmspLmnInmop3nm67kuZ/mspLmnInlrZDliIbpoZ7vvInjgIInXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnTzPvvJrlup/lvIPojYnnqL8nLCAnTzPvvJrlu6Lmo4TojYnnqL8nKSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ1tbUVc6Q1NEI08zfE8zXV3vvJrlup/lvIPojYnnqL/jgIInLCAnW1tRVzpDU0QjTzN8TzNdXe+8muW7ouajhOiNieeov+OAgicpLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2suY2hhbmdlX2NvbW1vbl9yZWFzb24gPSAoZSkgPT4ge1xuXHRcdGlmIChlLnRhcmdldC5mb3JtLnJlYXNvbi52YWx1ZSAhPT0gJycpIHtcblx0XHRcdGUudGFyZ2V0LmZvcm0ucmVhc29uLnZhbHVlID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGUudGFyZ2V0LmZvcm0ucmVhc29uLnZhbHVlKTtcblx0XHR9XG5cdFx0ZS50YXJnZXQuZm9ybS5yZWFzb24udmFsdWUgKz0gZS50YXJnZXQudmFsdWU7XG5cdFx0ZS50YXJnZXQudmFsdWUgPSAnJztcblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay50b2dnbGVTdWJwYWdlcyA9IChlKSA9PiB7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0bGV0IG5ld1BhZ2VMaXN0O1xuXHRcdGlmIChlLnRhcmdldC5jaGVja2VkKSB7XG5cdFx0XHRmb3JtLmRlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cy5jaGVja2VkID0gZm9ybS5kZWxldGVfcmVkaXJlY3RzLmNoZWNrZWQ7XG5cdFx0XHRmb3JtLmRlbGV0ZV9zdWJwYWdlX3RhbGtzLmNoZWNrZWQgPSBmb3JtLmRlbGV0ZV90YWxrLmNoZWNrZWQ7XG5cdFx0XHRmb3JtLnVubGlua19zdWJwYWdlcy5jaGVja2VkID0gZm9ybS51bmxpbmtfcGFnZS5jaGVja2VkO1xuXHRcdFx0Ly8gSWYgbGlzdHMgb2Ygc3VicGFnZXMgd2VyZSBhbHJlYWR5IGxvYWRlZCBvbmNlLCB0aGV5IGFyZVxuXHRcdFx0Ly8gYXZhaWxhYmxlIHdpdGhvdXQgdXNlIG9mIGFueSBBUEkgY2FsbHNcblx0XHRcdGlmIChzdWJwYWdlc0xvYWRlZCkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGVsIG9mIFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXMpIHtcblx0XHRcdFx0XHQvLyBHZXQgYmFjayB0aGUgc3ViZ3JvdXAgZnJvbSBzdWJncm91cF8sIHdoZXJlIHdlIHNhdmVkIGl0XG5cdFx0XHRcdFx0aWYgKGVsLnN1Ymdyb3VwID09PSBudWxsICYmIGVsLnN1Ymdyb3VwXykge1xuXHRcdFx0XHRcdFx0ZWwuc3ViZ3JvdXAgPSBlbC5zdWJncm91cF87XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdG5ld1BhZ2VMaXN0ID0gVHdpbmtsZS5iYXRjaGRlbGV0ZS5nZW5lcmF0ZU5ld1BhZ2VMaXN0KGZvcm0pO1xuXHRcdFx0XHQkYm9keS5maW5kKCcjdHctZGJhdGNoLXBhZ2VzJykucmVwbGFjZVdpdGgobmV3UGFnZUxpc3QpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhuZXdQYWdlTGlzdCwgJ3BhZ2VzJykpIHtcblx0XHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoY29uc3QgY2hlY2tib3ggb2YgTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKG5ld1BhZ2VMaXN0LCAncGFnZXMuc3VicGFnZXMnKSkge1xuXHRcdFx0XHRcdGdlbmVyYXRlQXJyb3dMaW5rcyhjaGVja2JveCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gUHJvY2VlZCB3aXRoIEFQSSBjYWxscyB0byBnZXQgbGlzdCBvZiBzdWJwYWdlc1xuXHRcdFx0Y29uc3QgbG9hZGluZ1RleHQgPSBgPHN0cm9uZyBpZD1cImRiYXRjaC1zdWJwYWdlLWxvYWRpbmdcIj4ke3dpbmRvdy53Z1VMUygn5Yqg6L295LitLi4uJywgJ+i8ieWFpeS4rS4uLicpfTwvc3Ryb25nPmA7XG5cdFx0XHQkKGUudGFyZ2V0KS5hZnRlcihsb2FkaW5nVGV4dCk7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoZm9ybS5wYWdlcylcblx0XHRcdFx0Lm1hcCgoX2ksIGVsKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsLnZhbHVlO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRjb25zdCBzdWJwYWdlTGlzdGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKCk7XG5cdFx0XHRzdWJwYWdlTGlzdGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdHN1YnBhZ2VMaXN0ZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdFx0c3VicGFnZUxpc3Rlci5ydW4oXG5cdFx0XHRcdChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHBhZ2VUaXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhZ2VOYW1lKTtcblx0XHRcdFx0XHQvLyBObyBuZWVkIHRvIGxvb2sgZm9yIHN1YnBhZ2VzIGluIG1haW4vZmlsZS9tZWRpYXdpa2kgc3BhY2Vcblx0XHRcdFx0XHRpZiAoWzAsIDYsIDhdLmluY2x1ZGVzKHBhZ2VUaXRsZS5uYW1lc3BhY2UpKSB7XG5cdFx0XHRcdFx0XHRzdWJwYWdlTGlzdGVyLndvcmtlclN1Y2Nlc3MoKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+WICcsICfmraPlnKjlj5blvpcgJykgKyBwYWdlTmFtZSArIHdpbmRvdy53Z1VMUygnIOeahOWtkOmhtemdoicsICcg55qE5a2Q6aCB6Z2iJyksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdFx0cHJvcDogJ3JldmlzaW9uc3xpbmZvfGltYWdlaW5mbycsXG5cdFx0XHRcdFx0XHRcdGdlbmVyYXRvcjogJ2FsbHBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0cnZwcm9wOiAnc2l6ZScsXG5cdFx0XHRcdFx0XHRcdGlucHJvcDogJ3Byb3RlY3Rpb24nLFxuXHRcdFx0XHRcdFx0XHRnYXBwcmVmaXg6IGAke3BhZ2VUaXRsZS50aXRsZX0vYCxcblx0XHRcdFx0XHRcdFx0Z2FwbmFtZXNwYWNlOiBwYWdlVGl0bGUubmFtZXNwYWNlLFxuXHRcdFx0XHRcdFx0XHRnYXBsaW1pdDogJ21heCcsXG5cdFx0XHRcdFx0XHRcdHBhZ2VOYW1lRnVsbDogcGFnZU5hbWUsIC8vIE5vdCB1c2VkIGJ5IEFQSSwgYnV0IGFkZGVkIGZvciBhY2Nlc3MgaW4gb25TdWNjZXNzKClcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgJHBhZ2VzID0gJCh4bWwpLmZpbmQoJ3BhZ2UnKTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3VicGFnZUxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0JHBhZ2VzLmVhY2goKF9pbmRleCwgcGFnZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0ICRwYWdlID0gJChwYWdlKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBucyA9ICRwYWdlLmF0dHIoJ25zJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGl0bGUgPSAkcGFnZS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGlzUmVkaXIgPSAkcGFnZS5hdHRyKCdyZWRpcmVjdCcpID09PSAnJztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCAkZWRpdHByb3QgPSAkcGFnZS5maW5kKCdwclt0eXBlPVwiZWRpdFwiXVtsZXZlbD1cInN5c29wXCJdJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXNQcm90ZWN0ZWQgPSAkZWRpdHByb3QubGVuZ3RoID4gMDtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBzaXplID0gJHBhZ2UuZmluZCgncmV2JykuYXR0cignc2l6ZScpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG1ldGFkYXRhID0gW107XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGlzUmVkaXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPSAncmVkaXJlY3QnO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoaXNQcm90ZWN0ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WFqOS/neaKpO+8jCcsICflhajkv53orbfvvIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgkZWRpdHByb3QuYXR0cignZXhwaXJ5JykgPT09ICdpbmZpbml0eSdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyfJywgJ+eEoemZkOacnycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBgJHtuZXcgTW9yZWJpdHMuZGF0ZSgkZWRpdHByb3QuYXR0cignZXhwaXJ5JykpLmNhbGVuZGFyKCd1dGMnKX0gKFVUQylgKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+H5pyfJywgJ+mBjuacnycpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAobnMgPT09ICc2Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gbWltaWMgd2hhdCBkZWxpbWFnZXMgdXNlZCB0byBzaG93IGZvciBmaWxlc1xuXHRcdFx0XHRcdFx0XHRcdFx0bWV0YWRhdGFbbWV0YWRhdGEubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCh3aW5kb3cud2dVTFMoJ+S4iuS8oOiAhe+8micsICfkuIrlgrPogIXvvJonKSArICRwYWdlLmZpbmQoJ2lpJykuYXR0cigndXNlcicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOWQjue8lui+ke+8micsICfmnIDlvoznt6jovK/vvJonKSArICRwYWdlLmZpbmQoJ3JldicpLmF0dHIoJ3VzZXInKSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKHNpemUpICsgd2luZG93LndnVUxTKCflrZfoioInLCAn5L2N5YWD57WEJyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHN1YnBhZ2VMaXN0W3N1YnBhZ2VMaXN0Lmxlbmd0aF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogdGl0bGUgKyAobWV0YWRhdGEubGVuZ3RoID8gYCAoJHttZXRhZGF0YS5qb2luKCc7ICcpfSlgIDogJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlOiBpc1Byb3RlY3RlZCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0aWYgKHN1YnBhZ2VMaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHBhZ2VOYW1lXyA9IGFwaW9iai5xdWVyeS5wYWdlTmFtZUZ1bGw7XG5cdFx0XHRcdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlc1twYWdlTmFtZV9dLnN1Ymdyb3VwID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzdWJwYWdlcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICdkYmF0Y2gtc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0OiBzdWJwYWdlTGlzdCxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHN1YnBhZ2VMaXN0ZXIud29ya2VyU3VjY2VzcygpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG51bGwgLyogc3RhdHVzRWxlbWVudCAqLyxcblx0XHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFx0c3VicGFnZUxpc3Rlci53b3JrZXJGYWlsdXJlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdC8vIExpc3QgJ2VtIG9uIHRoZSBpbnRlcmZhY2Vcblx0XHRcdFx0XHRuZXdQYWdlTGlzdCA9IFR3aW5rbGUuYmF0Y2hkZWxldGUuZ2VuZXJhdGVOZXdQYWdlTGlzdChmb3JtKTtcblx0XHRcdFx0XHQkYm9keS5maW5kKCcjdHctZGJhdGNoLXBhZ2VzJykucmVwbGFjZVdpdGgobmV3UGFnZUxpc3QpO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgY2hlY2tib3ggb2YgTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKG5ld1BhZ2VMaXN0LCAncGFnZXMnKSkge1xuXHRcdFx0XHRcdFx0Z2VuZXJhdGVBcnJvd0xpbmtzKGNoZWNrYm94KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMobmV3UGFnZUxpc3QsICdwYWdlcy5zdWJwYWdlcycpKSB7XG5cdFx0XHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzdWJwYWdlc0xvYWRlZCA9IHRydWU7XG5cdFx0XHRcdFx0Ly8gUmVtb3ZlIFwiTG9hZGluZy4uLiBcIiB0ZXh0XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI2RiYXRjaC1zdWJwYWdlLWxvYWRpbmcnKS5yZW1vdmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKCFlLnRhcmdldC5jaGVja2VkKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGVsIG9mIFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXMpIHtcblx0XHRcdFx0aWYgKGVsLnN1Ymdyb3VwKSB7XG5cdFx0XHRcdFx0Ly8gUmVtb3ZlIHN1Ymdyb3VwIGFmdGVyIHNhdmluZyBpdHMgY29udGVudHMgaW4gc3ViZ3JvdXBfXG5cdFx0XHRcdFx0Ly8gc28gdGhhdCBpdCBjYW4gYmUgcmV0cmlldmVkIGVhc2lseSBpZiB1c2VyIGRlY2lkZXMgdG9cblx0XHRcdFx0XHQvLyBkZWxldGUgdGhlIHN1YnBhZ2VzIGFnYWluXG5cdFx0XHRcdFx0ZWwuc3ViZ3JvdXBfID0gZWwuc3ViZ3JvdXA7XG5cdFx0XHRcdFx0ZWwuc3ViZ3JvdXAgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRuZXdQYWdlTGlzdCA9IFR3aW5rbGUuYmF0Y2hkZWxldGUuZ2VuZXJhdGVOZXdQYWdlTGlzdChmb3JtKTtcblx0XHRcdCRib2R5LmZpbmQoJyN0dy1kYmF0Y2gtcGFnZXMnKS5yZXBsYWNlV2l0aChuZXdQYWdlTGlzdCk7XG5cdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhuZXdQYWdlTGlzdCwgJ3BhZ2VzJykpIHtcblx0XHRcdFx0Z2VuZXJhdGVBcnJvd0xpbmtzKGNoZWNrYm94KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+aJuemHj+WIoOmZpOW3suWujOaIkCcsICfmibnmrKHliKrpmaTlt7LlrozmiJAnKTtcblx0XHRjb25zdCBmb3JtID0gZXZlbnQudGFyZ2V0O1xuXHRcdGNvbnN0IG51bVByb3RlY3RlZCA9ICQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGZvcm0sICdwYWdlcycpKS5maWx0ZXIoKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQuY2hlY2tlZCAmJiBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZy5zdHlsZS5jb2xvciA9PT0gJ3JlZCc7XG5cdFx0fSkubGVuZ3RoO1xuXHRcdGlmIChcblx0XHRcdG51bVByb3RlY3RlZCA+IDAgJiZcblx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOato+imgeWIoOmZpCAnLCAn5oKo5q2j6KaB5Yiq6ZmkICcpICtcblx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKG51bVByb3RlY3RlZCkgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOS4quWFqOS/neaKpOmhtemdou+8jOaCqOehruWumuWQl++8nycsICcg5YCL5YWo5L+d6K236aCB6Z2i77yM5oKo56K65a6a5ZeO77yfJylcblx0XHRcdClcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZXMgPSBmb3JtLmdldENoZWNrZWQoJ3BhZ2VzJyk7XG5cdFx0Y29uc3Qgc3VicGFnZXMgPSBmb3JtLmdldENoZWNrZWQoJ3BhZ2VzLnN1YnBhZ2VzJyk7XG5cdFx0Y29uc3QgcmVhc29uID0gZm9ybS5yZWFzb24udmFsdWU7XG5cdFx0Y29uc3QgZGVsZXRlX3BhZ2UgPSBmb3JtLmRlbGV0ZV9wYWdlLmNoZWNrZWQ7XG5cdFx0bGV0IGRlbGV0ZV90YWxrO1xuXHRcdGxldCBkZWxldGVfcmVkaXJlY3RzO1xuXHRcdGxldCBkZWxldGVfc3VicGFnZXM7XG5cdFx0bGV0IGRlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cztcblx0XHRsZXQgZGVsZXRlX3N1YnBhZ2VfdGFsa3M7XG5cdFx0bGV0IHVubGlua19zdWJwYWdlcztcblx0XHRpZiAoZGVsZXRlX3BhZ2UpIHtcblx0XHRcdGRlbGV0ZV90YWxrID0gZm9ybS5kZWxldGVfdGFsay5jaGVja2VkO1xuXHRcdFx0ZGVsZXRlX3JlZGlyZWN0cyA9IGZvcm0uZGVsZXRlX3JlZGlyZWN0cy5jaGVja2VkO1xuXHRcdFx0ZGVsZXRlX3N1YnBhZ2VzID0gZm9ybS5kZWxldGVfc3VicGFnZXMuY2hlY2tlZDtcblx0XHRcdGlmIChkZWxldGVfc3VicGFnZXMpIHtcblx0XHRcdFx0ZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzID0gZm9ybS5kZWxldGVfc3VicGFnZV9yZWRpcmVjdHMuY2hlY2tlZDtcblx0XHRcdFx0ZGVsZXRlX3N1YnBhZ2VfdGFsa3MgPSBmb3JtLmRlbGV0ZV9zdWJwYWdlX3RhbGtzLmNoZWNrZWQ7XG5cdFx0XHRcdHVubGlua19zdWJwYWdlcyA9IGZvcm0udW5saW5rX3N1YnBhZ2VzLmNoZWNrZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHVubGlua19wYWdlID0gZm9ybS51bmxpbmtfcGFnZS5jaGVja2VkO1xuXHRcdGNvbnN0IHVubGlua19maWxlID0gZm9ybS51bmxpbmtfZmlsZS5jaGVja2VkO1xuXHRcdGlmICghcmVhc29uKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOmcgOimgee7meWHuuS4gOS4queQhueUsScsICfmgqjpnIDopoHntablh7rkuIDlgIvnkIbnlLEnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGViYXRjaGRlbGV0ZScsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRpZiAoIXBhZ2VzKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeacieimgeWIoOmZpOeahOWGheWuue+8jOS4reatoicsICfmspLmnInopoHliKrpmaTnmoTlhaflrrnvvIzkuK3mraInKVxuXHRcdFx0KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZURlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRkZWxldGVfcGFnZVxuXHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iJywgJ+ato+WcqOWIqumZpOmggemdoicpXG5cdFx0XHRcdDogd2luZG93LndnVUxTKCfmraPlnKjlkK/liqjopoHmsYLnmoTku7vliqEnLCAn5q2j5Zyo5ZWf5YuV6KaB5rGC55qE5Lu75YuZJylcblx0XHQpO1xuXHRcdHBhZ2VEZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHQvLyB3ZSBvbmx5IG5lZWQgdGhlIGluaXRpYWwgc3RhdHVzIGxpbmVzIGlmIHdlJ3JlIGRlbGV0aW5nIHRoZSBwYWdlcyBpbiB0aGUgcGFnZXMgYXJyYXlcblx0XHRwYWdlRGVsZXRlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgZGVsZXRlX3BhZ2UpO1xuXHRcdHBhZ2VEZWxldGVyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRwYWdlRGVsZXRlci5ydW4oXG5cdFx0XHQocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdHBhZ2U6IHBhZ2VOYW1lLFxuXHRcdFx0XHRcdGRlbGV0ZV9wYWdlLFxuXHRcdFx0XHRcdGRlbGV0ZV90YWxrLFxuXHRcdFx0XHRcdGRlbGV0ZV9yZWRpcmVjdHMsXG5cdFx0XHRcdFx0dW5saW5rX3BhZ2UsXG5cdFx0XHRcdFx0dW5saW5rX2ZpbGU6IHVubGlua19maWxlICYmIG5ldyBSZWdFeHAoYF4ke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDYpfTpgLCAnaScpLnRlc3QocGFnZU5hbWUpLFxuXHRcdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0XHRwYWdlRGVsZXRlcixcblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHBhZ2VOYW1lLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iICcsICfmraPlnKjliKrpmaTpoIHpnaIgJykgKyBwYWdlTmFtZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0aWYgKGRlbGV0ZV9wYWdlKSB7XG5cdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYCR7cmVhc29ufe+8iOaJuemHj++8iWApO1xuXHRcdFx0XHRcdHFpdXdlbl9wYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRxaXV3ZW5fcGFnZS5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nKCk7XG5cdFx0XHRcdFx0cWl1d2VuX3BhZ2UuZGVsZXRlUGFnZShUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kb0V4dHJhcywgcGFnZURlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMocWl1d2VuX3BhZ2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAoZGVsZXRlX3N1YnBhZ2VzKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VicGFnZURlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOWtkOmhtemdoicsICfmraPlnKjliKrpmaTlrZDpoIHpnaInKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c3VicGFnZURlbGV0ZXIuc2V0T3B0aW9uKCdjaHVua1NpemUnLCBUd2lua2xlLmdldFByZWYoJ2JhdGNoQ2h1bmtzJykpO1xuXHRcdFx0XHRcdHN1YnBhZ2VEZWxldGVyLnNldE9wdGlvbigncHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMnLCB0cnVlKTtcblx0XHRcdFx0XHRzdWJwYWdlRGVsZXRlci5zZXRQYWdlTGlzdChzdWJwYWdlcyk7XG5cdFx0XHRcdFx0c3VicGFnZURlbGV0ZXIucnVuKChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdFx0XHRwYWdlOiBwYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0ZGVsZXRlX3BhZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZV90YWxrOiBkZWxldGVfc3VicGFnZV90YWxrcyxcblx0XHRcdFx0XHRcdFx0ZGVsZXRlX3JlZGlyZWN0czogZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzLFxuXHRcdFx0XHRcdFx0XHR1bmxpbmtfcGFnZTogdW5saW5rX3N1YnBhZ2VzLFxuXHRcdFx0XHRcdFx0XHR1bmxpbmtfZmlsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0XHRcdFx0cGFnZURlbGV0ZXI6IHN1YnBhZ2VEZWxldGVyLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0cGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk5a2Q6aG16Z2iICcsICfmraPlnKjliKrpmaTlrZDpoIHpnaIgJykgKyBwYWdlTmFtZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYCR7cmVhc29ufe+8iOaJuemHj++8iWApO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc3VwcHJlc3NQcm90ZWN0V2FybmluZygpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2UuZGVsZXRlUGFnZShUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kb0V4dHJhcywgcGFnZURlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcyA9IHtcblx0XHQvLyB0aGlzIHN0dXBpZCBwYXJhbWV0ZXIgbmFtZSBpcyBhIHRlbXBvcmFyeSB0aGluZyB1bnRpbCBJIGltcGxlbWVudCBhbiBvdmVyaGF1bFxuXHRcdC8vIG9mIE1vcmViaXRzLndpa2kuKiBjYWxsYmFjayBwYXJhbWV0ZXJzXG5cdFx0ZG9FeHRyYXM6ICh0aGluZ1dpdGhQYXJhbWV0ZXJzKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSB0aGluZ1dpdGhQYXJhbWV0ZXJzLnBhcmVudFxuXHRcdFx0XHQ/IHRoaW5nV2l0aFBhcmFtZXRlcnMucGFyZW50LmdldENhbGxiYWNrUGFyYW1ldGVycygpXG5cdFx0XHRcdDogdGhpbmdXaXRoUGFyYW1ldGVycy5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdC8vIHRoZSBpbml0aWFsIGJhdGNoIG9wZXJhdGlvbidzIGpvYiBpcyB0byBkZWxldGUgdGhlIHBhZ2UsIGFuZCB0aGF0IGhhc1xuXHRcdFx0Ly8gc3VjY2VlZGVkIGJ5IG5vd1xuXHRcdFx0cGFyYW1zLnBhZ2VEZWxldGVyLndvcmtlclN1Y2Nlc3ModGhpbmdXaXRoUGFyYW1ldGVycyk7XG5cdFx0XHRsZXQgcXVlcnk7XG5cdFx0XHRsZXQgcWl1d2VuX2FwaTtcblx0XHRcdGlmIChwYXJhbXMudW5saW5rX3BhZ2UpIHtcblx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZSA9IHt9O1xuXHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0bGlzdDogJ2JhY2tsaW5rcycsXG5cdFx0XHRcdFx0YmxmaWx0ZXJyZWRpcjogJ25vbnJlZGlyZWN0cycsXG5cdFx0XHRcdFx0YmxuYW1lc3BhY2U6IFswXSxcblx0XHRcdFx0XHRibHRpdGxlOiBwYXJhbXMucGFnZSxcblx0XHRcdFx0XHRibGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+W6ZO+5YWlJywgJ+ato+WcqOWPluW+l+mAo+WFpScpLFxuXHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2tzLnVubGlua0JhY2tsaW5rc01haW5cblx0XHRcdFx0KTtcblx0XHRcdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy51bmxpbmtfZmlsZSkge1xuXHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0bGlzdDogJ2ltYWdldXNhZ2UnLFxuXHRcdFx0XHRcdGl1dGl0bGU6IHBhcmFtcy5wYWdlLFxuXHRcdFx0XHRcdGl1bGltaXQ6ICdtYXgnLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjojrflj5bmlofku7bpk77lhaUnLCAn5q2j5Zyo5Y+W5b6X5qqU5qGI6YCj5YWlJyksXG5cdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MudW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHFpdXdlbl9hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMuZGVsZXRlX3BhZ2UpIHtcblx0XHRcdFx0aWYgKHBhcmFtcy5kZWxldGVfcmVkaXJlY3RzKSB7XG5cdFx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHR0aXRsZXM6IHBhcmFtcy5wYWdlLFxuXHRcdFx0XHRcdFx0cHJvcDogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRyZGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0cWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+W6YeN5a6a5ZCRJywgJ+ato+WcqOWPluW+l+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kZWxldGVSZWRpcmVjdHNNYWluXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocGFyYW1zLmRlbGV0ZV90YWxrKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gbXcuVGl0bGUubmV3RnJvbVRleHQocGFyYW1zLnBhZ2UpO1xuXHRcdFx0XHRcdGlmIChwYWdlVGl0bGUgJiYgcGFnZVRpdGxlLm5hbWVzcGFjZSAlIDIgPT09IDAgJiYgcGFnZVRpdGxlLm5hbWVzcGFjZSAhPT0gMikge1xuXHRcdFx0XHRcdFx0cGFnZVRpdGxlLm5hbWVzcGFjZSsrOyAvLyBub3cgcGFnZVRpdGxlIGlzIHRoZSB0YWxrIHBhZ2UgdGl0bGUhXG5cdFx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0XHR0aXRsZXM6IHBhZ2VUaXRsZS50b1RleHQoKSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOajgOafpeiuqOiuuumhtemdouaYr+WQpuWtmOWcqCcsICfmraPlnKjmqqLmn6XoqI7oq5bpoIHpnaLmmK/lkKblrZjlnKgnKSxcblx0XHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2tzLmRlbGV0ZVRhbGtcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHRcdHFpdXdlbl9hcGkucGFyYW1zLnRhbGtQYWdlID0gcGFnZVRpdGxlLnRvVGV4dCgpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRkZWxldGVSZWRpcmVjdHNNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgncmQnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZWRpcmVjdERlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk5YiwICcsICfmraPlnKjliKrpmaTliLAgJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6YeN5a6a5ZCRJywgJyDnmoTph43mlrDlsI7lkJEnKVxuXHRcdFx0KTtcblx0XHRcdHJlZGlyZWN0RGVsZXRlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0XHRyZWRpcmVjdERlbGV0ZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdFx0cmVkaXJlY3REZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHBhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpCAnLCAn5q2j5Zyo5Yiq6ZmkICcpICsgcGFnZU5hbWUpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRgW1tRVzpDU0QjRzl8RzldXTogJHt3aW5kb3cud2dVTFMoJ+aMh+WQkeW3suWIoOmhtemdouKAnCcsICfmjIflkJHlt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfigJ3nmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0J+OAjeeahOmHjeaWsOWwjuWQkSdcblx0XHRcdFx0XHQpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5kZWxldGVQYWdlKHJlZGlyZWN0RGVsZXRlci53b3JrZXJTdWNjZXNzLCByZWRpcmVjdERlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdGRlbGV0ZVRhbGs6IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IGV4aXN0cyA9ICQoeG1sKS5maW5kKCdwYWdlOm5vdChbbWlzc2luZ10pJykubGVuZ3RoID4gMDtcblx0XHRcdGlmICghZXhpc3RzKSB7XG5cdFx0XHRcdC8vIG5vIHRhbGsgcGFnZTsgZm9yZ2V0IGFib3V0IGl0XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnRhbGtQYWdlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOmhtemdoiAnLCAn5q2j5Zyo5Yiq6Zmk6aCB6Z2iICcpICtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLnBhZ2UgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOeahOiuqOiuuumhtScsICcg55qE6KiO6KuW6aCBJylcblx0XHRcdCk7XG5cdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRgW1tRVzpDU0QjRzl8RzldXTogJHt3aW5kb3cud2dVTFMoJ+W3suWIoOmhtemdouKAnCcsICflt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn4oCd55qEW1tIZWxwOuiuqOiuuumhtXzorqjorrrpobVdXScsXG5cdFx0XHRcdFx0J+OAjeeahFtbSGVscDroqI7oq5bpoIF86KiO6KuW6aCBXV0nXG5cdFx0XHRcdCl9YFxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZS5kZWxldGVQYWdlKCk7XG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3NNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgnYmwnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB1bmxpbmtlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdFx0YOato+WcqOWPlua2iOWIsCAke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUygnIOeahOmTvuWFpScsICcg55qE6YCj5YWlJyl9YFxuXHRcdFx0KTtcblx0XHRcdHVubGlua2VyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdHVubGlua2VyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRcdHVubGlua2VyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHBhZ2VOYW1lLFxuXHRcdFx0XHRcdGDmraPlnKjlj5bmtoggJHtwYWdlTmFtZX0ke3dpbmRvdy53Z1VMUygnIOS4iueahOmTvuWFpScsICcg5LiK55qE6YCj5YWlJyl9YFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdFx0Li4uYXBpb2JqLnBhcmFtcyxcblx0XHRcdFx0fTtcblx0XHRcdFx0cGFyYW1zLnRpdGxlID0gcGFnZU5hbWU7XG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlciA9IHVubGlua2VyO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy51bmxpbmtCYWNrbGlua3MpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3M6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdC8vIHdlIHByb2JhYmx5IGp1c3QgZGVsZXRlZCBpdCwgYXMgYSByZWN1cnNpdmUgYmFja2xpbmtcblx0XHRcdFx0cGFyYW1zLnVubGlua2VyLndvcmtlclN1Y2Nlc3MocGFnZW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCB0ZXh0O1xuXHRcdFx0aWYgKHBhcmFtcy50aXRsZSBpbiBUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlKSB7XG5cdFx0XHRcdHRleHQgPSBUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlW3BhcmFtcy50aXRsZV07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb2xkX3RleHQgPSB0ZXh0O1xuXHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZSh0ZXh0KTtcblx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5yZW1vdmVMaW5rKHBhcmFtcy5wYWdlKS5nZXRUZXh0KCk7XG5cdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlW3BhcmFtcy50aXRsZV0gPSB0ZXh0O1xuXHRcdFx0aWYgKHRleHQgPT09IG9sZF90ZXh0KSB7XG5cdFx0XHRcdC8vIE5vdGhpbmcgdG8gZG8sIHJldHVyblxuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcyhwYWdlb2JqKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0d2luZG93LndnVUxTKCflj5bmtojliLDlt7LliKDpobXpnaInLCAn5Y+W5raI5Yiw5bey5Yiq6aCB6Z2iJykgKyBwYXJhbXMucGFnZSArIHdpbmRvdy53Z1VMUygn55qE6ZO+5YWlJywgJ+eahOmAo+WFpScpXG5cdFx0XHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNldE1heENvbmZsaWN0UmV0cmllcygxMCk7XG5cdFx0XHRwYWdlb2JqLnNhdmUocGFyYW1zLnVubGlua2VyLndvcmtlclN1Y2Nlc3MsIHBhcmFtcy51bmxpbmtlci53b3JrZXJGYWlsdXJlKTtcblx0XHR9LFxuXHRcdHVubGlua0ltYWdlSW5zdGFuY2VzTWFpbjogKGFwaW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLnJlc3BvbnNlWE1MO1xuXHRcdFx0Y29uc3QgcGFnZXMgPSAkKHhtbClcblx0XHRcdFx0LmZpbmQoJ2l1Jylcblx0XHRcdFx0Lm1hcCgoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuICQoZWxlbWVudCkuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmdldCgpO1xuXHRcdFx0aWYgKCFwYWdlcy5sZW5ndGgpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgdW5saW5rZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRcdGDmraPlnKjlj5bmtojliLAgJHthcGlvYmoucGFyYW1zLnBhZ2V9JHt3aW5kb3cud2dVTFMoJyDnmoTpk77lhaUnLCAnIOeahOmAo+WFpScpfWBcblx0XHRcdCk7XG5cdFx0XHR1bmxpbmtlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0XHR1bmxpbmtlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0XHR1bmxpbmtlci5ydW4oKHBhZ2VOYW1lKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHRg5Y+W5raIICR7cGFnZU5hbWV9JHt3aW5kb3cud2dVTFMoJyDnmoTmlofku7bkvb/nlKgnLCAnIOeahOaqlOahiOS9v+eUqCcpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdC4uLmFwaW9iai5wYXJhbXMsXG5cdFx0XHRcdH07XG5cdFx0XHRcdHBhcmFtcy50aXRsZSA9IHBhZ2VOYW1lO1xuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIgPSB1bmxpbmtlcjtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MudW5saW5rSW1hZ2VJbnN0YW5jZXMpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHR1bmxpbmtJbWFnZUluc3RhbmNlczogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRpZiAoIXBhZ2VvYmouZXhpc3RzKCkpIHtcblx0XHRcdFx0Ly8gd2UgcHJvYmFibHkganVzdCBkZWxldGVkIGl0LCBhcyBhIHJlY3Vyc2l2ZSBiYWNrbGlua1xuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcyhwYWdlb2JqKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW1hZ2UgPSBwYXJhbXMucGFnZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDYpfTpgKSwgJycpO1xuXHRcdFx0bGV0IHRleHQ7XG5cdFx0XHRpZiAocGFyYW1zLnRpdGxlIGluIFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGUpIHtcblx0XHRcdFx0dGV4dCA9IFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGVbcGFyYW1zLnRpdGxlXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBvbGRfdGV4dCA9IHRleHQ7XG5cdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0dGV4dCA9IHFpdXdlbl9wYWdlXG5cdFx0XHRcdC5jb21tZW50T3V0SW1hZ2UoaW1hZ2UsIHdpbmRvdy53Z1VMUygn5Zug5paH5Lu25bey5Yig77yM5pWF5rOo6KejJywgJ+WboOaqlOahiOW3suWIqu+8jOaVheiou+inoycpKVxuXHRcdFx0XHQuZ2V0VGV4dCgpO1xuXHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZVtwYXJhbXMudGl0bGVdID0gdGV4dDtcblx0XHRcdGlmICh0ZXh0ID09PSBvbGRfdGV4dCkge1xuXHRcdFx0XHRwYWdlb2JqXG5cdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdC5lcnJvcihcblx0XHRcdFx0XHRcdGDlnKggJHtwYWdlb2JqLmdldFBhZ2VOYW1lKCl9IOS4iuWPlua2iCAke2ltYWdlfSR7d2luZG93LndnVUxTKCcg55qE5paH5Lu25L2/55So5aSx6LSlJywgJyDnmoTmqpTmoYjkvb/nlKjlpLHmlZcnKX1gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0cGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUocGFnZW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Y+W5raI5L2/55So5bey6KKr5Yig6Zmk5paH5Lu2JywgJ+WPlua2iOS9v+eUqOW3suiiq+WIqumZpOaqlOahiCcpICtcblx0XHRcdFx0XHRpbWFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfvvIzlm6DkuLrvvJonLCAn77yM5Zug54K677yaJykgK1xuXHRcdFx0XHRcdHBhcmFtcy5yZWFzb25cblx0XHRcdCk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2V0TWF4Q29uZmxpY3RSZXRyaWVzKDEwKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcywgcGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmF0Y2hkZWxldGUsICdiYXRjaGRlbGV0ZScpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGViYXRjaHVuZGVsZXRlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWJhdGNodW5kZWxldGUoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZWJhdGNodW5kZWxldGUuanM6IEJhdGNoIHVuZGVsZXRlIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJVbmQtYmF0Y2hcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyB1c2VyIGFuZCBwcm9qZWN0IHBhZ2VzXG5cdCAqL1xuXHRUd2lua2xlLmJhdGNodW5kZWxldGUgPSAoKSA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0IU1vcmViaXRzLnVzZXJJc1N5c29wIHx8XG5cdFx0XHQhbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSB8fFxuXHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgIT09IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlSWRzJykudXNlciAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICE9PSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpLnByb2plY3QpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLmJhdGNodW5kZWxldGUuY2FsbGJhY2ssXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aJueWkjScsICfmibnlvqknKSxcblx0XHRcdCd0dy1iYXRjaC11bmRlbCcsXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOmhtemdoicsICflj43liKrpmaTpoIHpnaInKVxuXHRcdCk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNDAwKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aJuemHj+WPjeWIoOmZpCcsICfmibnmrKHlj43liKrpmaQnKSk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI2JhdGNodW5kZWxldGUnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmJhdGNodW5kZWxldGUuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoi6XlrZjlnKjlt7LliKDpmaTnmoTorqjorrrpobXvvIzkuZ/mgaLlpI0nLCAn6Iul5a2Y5Zyo5bey5Yiq6Zmk55qE6KiO6KuW6aCB77yM5Lmf5oGi5b6pJyksXG5cdFx0XHRcdFx0bmFtZTogJ3VuZGVsX3RhbGsnLFxuXHRcdFx0XHRcdHZhbHVlOiAndW5kZWxfdGFsaycsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0c2l6ZTogNjAsXG5cdFx0fSk7XG5cdFx0Y29uc3Qgc3RhdHVzZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0c3RhdHVzZGl2LnN0eWxlLnBhZGRpbmcgPSAnMTVweCc7IC8vIGp1c3Qgc28gaXQgZG9lc24ndCBsb29rIGJyb2tlblxuXHRcdFdpbmRvdy5zZXRDb250ZW50KHN0YXR1c2Rpdik7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoc3RhdHVzZGl2KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0Z2VuZXJhdG9yOiAnbGlua3MnLFxuXHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0aW5wcm9wOiAncHJvdGVjdGlvbicsXG5cdFx0XHR0aXRsZXM6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdGdwbGxpbWl0OiBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4JyksXG5cdFx0fTtcblx0XHRjb25zdCBzdGF0ZWxlbSA9IG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfmipPlj5bpobXpnaLliJfooagnLCAn5oqT5Y+W6aCB6Z2i5YiX6KGoJykpO1xuXHRcdGNvbnN0IHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOi9veS4reKApicsICfovInlhaXkuK3igKYnKSxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0KGFwaW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRcdGNvbnN0ICRwYWdlcyA9ICQoeG1sKS5maW5kKCdwYWdlW21pc3NpbmddJyk7XG5cdFx0XHRcdGNvbnN0IGxpc3QgPSBbXTtcblx0XHRcdFx0JHBhZ2VzLmVhY2goKF9pbmRleCwgcGFnZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0ICRwYWdlID0gJChwYWdlKTtcblx0XHRcdFx0XHRjb25zdCB0aXRsZSA9ICRwYWdlLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdFx0Y29uc3QgJGVkaXRwcm90ID0gJHBhZ2UuZmluZCgncHJbdHlwZT1cImNyZWF0ZVwiXVtsZXZlbD1cInN5c29wXCJdJyk7XG5cdFx0XHRcdFx0Y29uc3QgaXNQcm90ZWN0ZWQgPSAkZWRpdHByb3QubGVuZ3RoID4gMDtcblx0XHRcdFx0XHRsaXN0W2xpc3QubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdFx0XHR0aXRsZSArXG5cdFx0XHRcdFx0XHRcdChpc1Byb3RlY3RlZFxuXHRcdFx0XHRcdFx0XHRcdD8gYO+8iCR7d2luZG93LndnVUxTKCflhajkv53miqTvvIwnLCAn5YWo5L+d6K2377yMJyl9JHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JGVkaXRwcm90LmF0dHIoJ2V4cGlyeScpID09PSAnaW5maW5pdHknXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogYCR7bmV3IE1vcmViaXRzLmRhdGUoJGVkaXRwcm90LmF0dHIoJ2V4cGlyeScpKS5jYWxlbmRhcihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3V0Yydcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9IChVVEMpJHt3aW5kb3cud2dVTFMoJ+i/h+acnycsICfpgY7mnJ8nKX1gXG5cdFx0XHRcdFx0XHRcdFx0XHR977yJYFxuXHRcdFx0XHRcdFx0XHRcdDogJycpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHN0eWxlOiBpc1Byb3RlY3RlZCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b6F5oGi5aSN6aG16Z2iJywgJ+W+heaBouW+qemggemdoicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo6YCJJywgJ+WFqOmBuCcpLFxuXHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0JChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo5LiN6YCJJywgJ+WFqOS4jemBuCcpLFxuXHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0JChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2VzJyxcblx0XHRcdFx0XHRzaGlmdENsaWNrU3VwcG9ydDogdHJ1ZSxcblx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBhcGlvYmoucGFyYW1zLmZvcm0ucmVuZGVyKCk7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMuV2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRcdH0sXG5cdFx0XHRzdGF0ZWxlbVxuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdH07XG5cdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5Y+N5Yig6Zmk5bey5a6M5oiQJywgJ+WPjeWIqumZpOW3suWujOaIkCcpO1xuXHRcdGNvbnN0IG51bVByb3RlY3RlZCA9ICQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGV2ZW50LnRhcmdldCwgJ3BhZ2VzJykpLmZpbHRlcigoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRyZXR1cm4gZWxlbWVudC5jaGVja2VkICYmIGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnN0eWxlLmNvbG9yID09PSAncmVkJztcblx0XHR9KS5sZW5ndGg7XG5cdFx0aWYgKFxuXHRcdFx0bnVtUHJvdGVjdGVkID4gMCAmJlxuXHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5q2j6KaB5Y+N5Yig6ZmkICcsICfmgqjmraPopoHlj43liKrpmaQgJykgK1xuXHRcdFx0XHRcdG51bVByb3RlY3RlZCArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5Liq5YWo5L+d5oqk6aG16Z2i77yM5oKo56Gu5a6a5ZCX77yfJywgJyDlgIvlhajkv53orbfpoIHpnaLvvIzmgqjnorrlrprll47vvJ8nKVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwYWdlcyA9IGV2ZW50LnRhcmdldC5nZXRDaGVja2VkKCdwYWdlcycpO1xuXHRcdGNvbnN0IHJlYXNvbiA9IGV2ZW50LnRhcmdldC5yZWFzb24udmFsdWU7XG5cdFx0Y29uc3QgdW5kZWxfdGFsayA9IGV2ZW50LnRhcmdldC5yZWFzb24udmFsdWU7XG5cdFx0aWYgKCFyZWFzb24pIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KCfmgqjpnIDopoHmjIflrprnkIbnlLHjgIInLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWJhdGNodW5kZWxldGUnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZXZlbnQudGFyZ2V0KTtcblx0XHRpZiAoIXBhZ2VzKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeS7gOS5iOimgeWPjeWIoOmZpOeahO+8jOWPlua2iOaTjeS9nCcsICfmspLku4DpurzopoHlj43liKrpmaTnmoTvvIzlj5bmtojmk43kvZwnKVxuXHRcdFx0KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZVVuZGVsZXRlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbih3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOmhtemdoicsICflj43liKrpmaTpoIHpnaInKSk7XG5cdFx0cGFnZVVuZGVsZXRlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0cGFnZVVuZGVsZXRlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgdHJ1ZSk7XG5cdFx0cGFnZVVuZGVsZXRlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0cGFnZVVuZGVsZXRlci5ydW4oKHBhZ2VOYW1lKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdHBhZ2U6IHBhZ2VOYW1lLFxuXHRcdFx0XHR1bmRlbF90YWxrLFxuXHRcdFx0XHRyZWFzb24sXG5cdFx0XHRcdHBhZ2VVbmRlbGV0ZXIsXG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHBhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOmhtemdoicsICflj43liKrpmaTpoIHpnaInKSArIHBhZ2VOYW1lKTtcblx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYCR7cmVhc29ufSAo5om56YePKWApO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc3VwcHJlc3NQcm90ZWN0V2FybmluZygpO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0TWF4UmV0cmllcygzKTsgLy8gdGVtcG9yYXJ5IGluY3JlYXNlIGZyb20gMiB0byBtYWtlIGJhdGNodW5kZWxldGUgbW9yZSBsaWtlbHkgdG8gc3VjY2VlZFxuXHRcdFx0cWl1d2VuX3BhZ2UudW5kZWxldGVQYWdlKFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMsIHBhZ2VVbmRlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MgPSB7XG5cdFx0Ly8gdGhpcyBzdHVwaWQgcGFyYW1ldGVyIG5hbWUgaXMgYSB0ZW1wb3JhcnkgdGhpbmcgdW50aWwgSSBpbXBsZW1lbnQgYW4gb3ZlcmhhdWxcblx0XHQvLyBvZiBNb3JlYml0cy53aWtpLiogY2FsbGJhY2sgcGFyYW1ldGVyc1xuXHRcdGRvRXh0cmFzOiAodGhpbmdXaXRoUGFyYW1ldGVycykgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gdGhpbmdXaXRoUGFyYW1ldGVycy5wYXJlbnRcblx0XHRcdFx0PyB0aGluZ1dpdGhQYXJhbWV0ZXJzLnBhcmVudC5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKVxuXHRcdFx0XHQ6IHRoaW5nV2l0aFBhcmFtZXRlcnMuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQvLyB0aGUgaW5pdGlhbCBiYXRjaCBvcGVyYXRpb24ncyBqb2IgaXMgdG8gZGVsZXRlIHRoZSBwYWdlLCBhbmQgdGhhdCBoYXNcblx0XHRcdC8vIHN1Y2NlZWRlZCBieSBub3dcblx0XHRcdHBhcmFtcy5wYWdlVW5kZWxldGVyLndvcmtlclN1Y2Nlc3ModGhpbmdXaXRoUGFyYW1ldGVycyk7XG5cdFx0XHRsZXQgcXVlcnk7XG5cdFx0XHRsZXQgcWl1d2VuX2FwaTtcblx0XHRcdGlmIChwYXJhbXMudW5kZWxfdGFsaykge1xuXHRcdFx0XHRjb25zdCB0YWxrcGFnZW5hbWUgPSBuZXcgbXcuVGl0bGUocGFyYW1zLnBhZ2UpLmdldFRhbGtQYWdlKCkuZ2V0UHJlZml4ZWRUZXh0KCk7XG5cdFx0XHRcdGlmICh0YWxrcGFnZW5hbWUgIT09IHBhcmFtcy5wYWdlKSB7XG5cdFx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHRwcm9wOiAnZGVsZXRlZHJldmlzaW9ucycsXG5cdFx0XHRcdFx0XHRkcnZwcm9wOiAnaWRzJyxcblx0XHRcdFx0XHRcdGRydmxpbWl0OiAxLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiB0YWxrcGFnZW5hbWUsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmo4Dmn6XorqjorrrpobXnmoTlt7LliKDniYjmnKwnLCAn5qqi5p+l6KiO6KuW6aCB55qE5bey5Yiq54mI5pysJyksXG5cdFx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MudW5kZWxldGVUYWxrXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcy50YWxrUGFnZSA9IHRhbGtwYWdlbmFtZTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dW5kZWxldGVUYWxrOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBleGlzdHMgPSAkKHhtbCkuZmluZCgncGFnZTpub3QoW21pc3NpbmddKScpLmxlbmd0aCA+IDA7XG5cdFx0XHRjb25zdCBkZWxyZXZzID0gJCh4bWwpLmZpbmQoJ3JldicpLmF0dHIoJ3JldmlkJyk7XG5cdFx0XHRpZiAoZXhpc3RzIHx8ICFkZWxyZXZzKSB7XG5cdFx0XHRcdC8vIHBhZ2UgZXhpc3RzIG9yIGhhcyBubyBkZWxldGVkIHJldmlzaW9uczsgZm9yZ2V0IGFib3V0IGl0XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnRhbGtQYWdlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWPjeWIoOmZpCcsICfmraPlnKjlj43liKrpmaQnKSArIGFwaW9iai5wYXJhbXMucGFnZSArIHdpbmRvdy53Z1VMUygn55qE6K6o6K666aG1JywgJ+eahOiojuirlumggScpXG5cdFx0XHQpO1xuXHRcdFx0cGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0d2luZG93LndnVUxTKCflj43liKDpmaTigJwnLCAn5Y+N5Yiq6Zmk44CMJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3nmoRbW0hlbHA66K6o6K666aG1fOiuqOiuuumhtV1dJywgJ+OAjeeahFtbSGVscDroqI7oq5bpoIF86KiO6KuW6aCBXV0nKVxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZS51bmRlbGV0ZVBhZ2UoKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmJhdGNodW5kZWxldGUsICdiYXRjaHVuZGVsZXRlJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYmF0Y2hwcm90ZWN0LmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWJhdGNocHJvdGVjdCgkKSB7XG5cdC8qKlxuXHQgKiB0d2lua2xlYmF0Y2hwcm90ZWN0LmpzOiBCYXRjaCBwcm90ZWN0IG1vZHVsZSAoc3lzb3BzIG9ubHkpXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIlAtYmF0Y2hcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyBwcm9qZWN0IHBhZ2VzIGFuZCB1c2VyIHBhZ2VzO1xuXHQgKiBleGlzdGluZyBhbmQgbm9uLWV4aXN0aW5nIGNhdGVnb3JpZXM7IFNwZWNpYWw6UHJlZml4SW5kZXhcblx0ICovXG5cdFR3aW5rbGUuYmF0Y2hwcm90ZWN0ID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wICYmXG5cdFx0XHQoKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgPiAwICYmIFsyLCA0XS5pbmNsdWRlcyhtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpKSkgfHxcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMTQgfHxcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1ByZWZpeGluZGV4Jylcblx0XHQpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoVHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2ssICfmibnkv50nLCAndHctcGJhdGNoJywgJ+aJuemHj+S/neaKpOmTvuWHuumhtemdoicpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5iYXRjaHByb3RlY3QudW5saW5rQ2FjaGUgPSB7fTtcblx0VHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDQwMCk7XG5cdFx0V2luZG93LnNldFRpdGxlKCfmibnkv50nKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKCfkv53miqTmlrnpkognLCAnUVc6UFJPVCcpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5biu5Yqp5paH5qGjJywgJ+W5q+WKqeaWh+aqlCcpLCAnSDpUVy9ET0Mj5L+d5oqkJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfpl67popjlj43ppognLCAn5ZWP6aGM5Y+N6aWLJyksICdIVDpUVycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuYmF0Y2hwcm90ZWN0LmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRtb2RpZnksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/ruaUuee8lui+keS/neaKpCcsXG5cdFx0XHRcdFx0dmFsdWU6ICdlZGl0bW9kaWZ5Jyxcblx0XHRcdFx0XHRuYW1lOiAnZWRpdG1vZGlmeScsXG5cdFx0XHRcdFx0dG9vbHRpcDogJ+S7hemZkOeOsOaciemhtemdouOAgicsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRuYW1lOiAnZWRpdGxldmVsJyxcblx0XHRcdGxhYmVsOiAn57yW6L6R5p2D6ZmQ77yaJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bGV2ZWwsXG5cdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdlZGl0ZXhwaXJ5Jyxcblx0XHRcdGxhYmVsOiAn57uI5q2i5pe26Ze077yaJyxcblx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGVuZ3RocywgLy8gRGVmYXVsdCAoMiBkYXlzKSBzZXQgYWZ0ZXIgcmVuZGVyXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbW9kaWZ5LFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICfkv67mlLnnp7vliqjkv53miqQnLFxuXHRcdFx0XHRcdHZhbHVlOiAnbW92ZW1vZGlmeScsXG5cdFx0XHRcdFx0bmFtZTogJ21vdmVtb2RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfku4XpmZDnjrDmnInpobXpnaLjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ21vdmVsZXZlbCcsXG5cdFx0XHRsYWJlbDogJ+enu+WKqOadg+mZkO+8micsXG5cdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZWxldmVsLFxuXHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZXZlbHMuZmlsdGVyKFxuXHRcdFx0XHQvLyBBdXRvY29uZmlybWVkIGlzIHJlcXVpcmVkIGZvciBhIG1vdmUsIHJlZHVuZGFudFxuXHRcdFx0XHQocHJvdExldmVsKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHByb3RMZXZlbC52YWx1ZSAhPT0gJ2F1dG9jb25maXJtZWQnO1xuXHRcdFx0XHR9XG5cdFx0XHQpLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ21vdmVleHBpcnknLFxuXHRcdFx0bGFiZWw6ICfnu4jmraLml7bpl7TvvJonLFxuXHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZW5ndGhzLCAvLyBEZWZhdWx0ICgyIGRheXMpIHNldCBhZnRlciByZW5kZXJcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVsZXZlbC5kaXNhYmxlZCA9ICFldmVudC50YXJnZXQuY2hlY2tlZDtcblx0XHRcdFx0ZXZlbnQudGFyZ2V0LmZvcm0uY3JlYXRlZXhwaXJ5LmRpc2FibGVkID1cblx0XHRcdFx0XHQhZXZlbnQudGFyZ2V0LmNoZWNrZWQgfHwgZXZlbnQudGFyZ2V0LmZvcm0uY3JlYXRlbGV2ZWwudmFsdWUgPT09ICdhbGwnO1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVsZXZlbC5zdHlsZS5jb2xvciA9IGV2ZW50LnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVleHBpcnkuc3R5bGUuY29sb3IgPSBldmVudC50YXJnZXQuY2hlY2tlZCA/ICcnIDogJ3RyYW5zcGFyZW50Jztcblx0XHRcdH0sXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/ruaUueWIm+W7uuS/neaKpCcsXG5cdFx0XHRcdFx0dmFsdWU6ICdjcmVhdGVtb2RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdjcmVhdGVtb2RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfku4XpmZDkuI3lrZjlnKjnmoTpobXpnaLjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NyZWF0ZWxldmVsJyxcblx0XHRcdGxhYmVsOiAn5Yib5bu65p2D6ZmQ77yaJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5jcmVhdGVsZXZlbCxcblx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGV2ZWxzLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NyZWF0ZWV4cGlyeScsXG5cdFx0XHRsYWJlbDogJ+e7iOatouaXtumXtO+8micsXG5cdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudC50YXJnZXQudmFsdWUgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmRvQ3VzdG9tRXhwaXJ5KGV2ZW50LnRhcmdldCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsIC8vIERlZmF1bHQgKGluZGVmaW5pdGUpIHNldCBhZnRlciByZW5kZXJcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdGxhYmVsOiAnJywgLy8gaG9yaXpvbnRhbCBydWxlXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvIjkv53miqTml6Xlv5fvvIknLFxuXHRcdFx0c2l6ZTogNjAsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAncmV2aXNpb25zfGluZm98aW1hZ2VpbmZvJyxcblx0XHRcdHJ2cHJvcDogJ3NpemV8dXNlcicsXG5cdFx0XHRpbnByb3A6ICdwcm90ZWN0aW9uJyxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdH07XG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDE0KSB7XG5cdFx0XHQvLyBjYXRlZ29yaWVzXG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnY2F0ZWdvcnltZW1iZXJzJztcblx0XHRcdHF1ZXJ5LmdjbXRpdGxlID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0cXVlcnkuZ2NtbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fSBlbHNlIGlmIChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUHJlZml4aW5kZXgnKSB7XG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnYWxscGFnZXMnO1xuXHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID1cblx0XHRcdFx0bXcudXRpbC5nZXRQYXJhbVZhbHVlKCduYW1lc3BhY2UnKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbbmFtZT1uYW1lc3BhY2VdJylbMF0udmFsdWU7XG5cdFx0XHRxdWVyeS5nYXBwcmVmaXggPVxuXHRcdFx0XHRtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ByZWZpeCcpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9cHJlZml4XScpWzBdLnZhbHVlO1xuXHRcdFx0cXVlcnkuZ2FwbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdsaW5rcyc7XG5cdFx0XHRxdWVyeS50aXRsZXMgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRxdWVyeS5ncGxsaW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHR9XG5cdFx0Y29uc3Qgc3RhdHVzZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0c3RhdHVzZGl2LnN0eWxlLnBhZGRpbmcgPSAnMTVweCc7IC8vIGp1c3Qgc28gaXQgZG9lc24ndCBsb29rIGJyb2tlblxuXHRcdFdpbmRvdy5zZXRDb250ZW50KHN0YXR1c2Rpdik7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoc3RhdHVzZGl2KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdGNvbnN0IHN0YXRlbGVtID0gbmV3IE1vcmViaXRzLnN0YXR1cygn5oqT5Y+W6aG16Z2i5YiX6KGoJyk7XG5cdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdCfliqDovb3kuK3igKbigKYnLFxuXHRcdFx0cXVlcnksXG5cdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRcdGNvbnN0IHBhZ2VzID0gKHJlc3BvbnNlLnF1ZXJ5ICYmIHJlc3BvbnNlLnF1ZXJ5LnBhZ2VzKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgbGlzdCA9IFtdO1xuXHRcdFx0XHRwYWdlcy5zb3J0KFR3aW5rbGUuc29ydEJ5TmFtZXNwYWNlKTtcblx0XHRcdFx0Zm9yIChjb25zdCBwYWdlIG9mIHBhZ2VzKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWV0YWRhdGEgPSBbXTtcblx0XHRcdFx0XHRjb25zdCBtaXNzaW5nID0gISFwYWdlLm1pc3Npbmc7XG5cdFx0XHRcdFx0bGV0IGVkaXRQcm90O1xuXHRcdFx0XHRcdGlmIChtaXNzaW5nKSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID0gJ+mhtemdouS4jeWtmOWcqCc7XG5cdFx0XHRcdFx0XHRlZGl0UHJvdCA9IHBhZ2UucHJvdGVjdGlvblxuXHRcdFx0XHRcdFx0XHQuZmlsdGVyKChwcm90ZWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHByb3RlY3Rpb24udHlwZSA9PT0gJ2NyZWF0ZScgJiYgcHJvdGVjdGlvbi5sZXZlbCA9PT0gJ3N5c29wJztcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0LnBvcCgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAocGFnZS5yZWRpcmVjdCkge1xuXHRcdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID0gJ+mHjeWumuWQkSc7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAocGFnZS5ucyA9PT0gNikge1xuXHRcdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID1cblx0XHRcdFx0XHRcdFx0XHQoYOS4iuS8oOiAhe+8miR7cGFnZS5pbWFnZWluZm9bMF0udXNlcn1gLCBg5pyA5ZCO57yW6L6R6ICF77yaJHtwYWdlLnJldmlzaW9uc1swXS51c2VyfWApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0bWV0YWRhdGFbbWV0YWRhdGEubGVuZ3RoXSA9IGAke213Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIocGFnZS5yZXZpc2lvbnNbMF0uc2l6ZSl95a2X6IqCYDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVkaXRQcm90ID0gcGFnZS5wcm90ZWN0aW9uXG5cdFx0XHRcdFx0XHRcdC5maWx0ZXIoKHByb3RlY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcHJvdGVjdGlvbi50eXBlID09PSAnZWRpdCcgJiYgcHJvdGVjdGlvbi5sZXZlbCA9PT0gJ3N5c29wJztcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0LnBvcCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZWRpdFByb3QpIHtcblx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPSBgJHttaXNzaW5nID8gJ+eZvee6uCcgOiAnJ33lhajkv53miqQke1xuXHRcdFx0XHRcdFx0XHRlZGl0UHJvdC5leHBpcnkgPT09ICdpbmZpbml0eSdcblx0XHRcdFx0XHRcdFx0XHQ/ICfvvIjmsLjkuYXvvIknXG5cdFx0XHRcdFx0XHRcdFx0OiBg77yIJHtuZXcgTW9yZWJpdHMuZGF0ZShlZGl0UHJvdC5leHBpcnkpLmNhbGVuZGFyKCd1dGMnKX0gKFVUQynov4fmnJ/vvIlgXG5cdFx0XHRcdFx0XHR9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3Qge3RpdGxlfSA9IHBhZ2U7XG5cdFx0XHRcdFx0bGlzdFtsaXN0Lmxlbmd0aF0gPSB7XG5cdFx0XHRcdFx0XHRsYWJlbDogdGl0bGUgKyAobWV0YWRhdGEubGVuZ3RoID4gMCA/IGAgKCR7bWV0YWRhdGEuam9pbignOyAnKX0pYCA6ICcnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiB0aXRsZSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRzdHlsZTogZWRpdFByb3QgPyAnY29sb3I6ICNmMDAnIDogJycsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6ICflvoXkv53miqTpobXpnaInLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YWo6YCJJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhldmVudC50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YWo5LiN6YCJJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhldmVudC50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlcycsXG5cdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0bGlzdCxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0XHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0XHRcdC8vIFNldCBkZWZhdWx0c1xuXHRcdFx0XHRyZXN1bHQuZWRpdGV4cGlyeS52YWx1ZSA9ICcyIGRheXMnO1xuXHRcdFx0XHRyZXN1bHQubW92ZWV4cGlyeS52YWx1ZSA9ICcyIGRheXMnO1xuXHRcdFx0XHRyZXN1bHQuY3JlYXRlZXhwaXJ5LnZhbHVlID0gJ2luZmluaXR5Jztcblx0XHRcdFx0Zm9yIChjb25zdCBsaW5rcyBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAn5Liq6aG16Z2iJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQXJyb3dMaW5rcyhsaW5rcyk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRzdGF0ZWxlbVxuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hwcm90ZWN0LmN1cnJlbnRQcm90ZWN0Q291bnRlciA9IDA7XG5cdFR3aW5rbGUuYmF0Y2hwcm90ZWN0LmN1cnJlbnRwcm90ZWN0b3IgPSAwO1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9ICfmibnph4/kv53miqTlrozmiJAnO1xuXHRcdGNvbnN0IGZvcm0gPSBldmVudC50YXJnZXQ7XG5cdFx0Y29uc3QgbnVtUHJvdGVjdGVkID0gJChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ+S4qumhtemdoicpKS5maWx0ZXIoKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQuY2hlY2tlZCAmJiBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZy5zdHlsZS5jb2xvciA9PT0gJyNmMDAnO1xuXHRcdH0pLmxlbmd0aDtcblx0XHRpZiAoXG5cdFx0XHRudW1Qcm90ZWN0ZWQgPiAwICYmXG5cdFx0XHQhY29uZmlybShg5oKo5Y2z5bCG5a+5JHttdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKG51bVByb3RlY3RlZCl95Liq5YWo5L+d5oqk6aG16Z2i6L+b6KGM5pON5L2c44CC5oKo56Gu5a6a5ZCX77yfYClcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdGlmICghaW5wdXQucmVhc29uKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSgn5oKo5b+F6aG757uZ5Ye65LiA5Liq55CG55Sx44CCJywge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGViYXRjaHByb3RlY3QnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0aWYgKGlucHV0LnBhZ2VzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKCdFcnJvcicsICflvoXkv53miqTpobXpnaLkuI3lrZjlnKjvvIznqIvluo/nu4jmraInKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgYmF0Y2hPcGVyYXRpb24gPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oJ+W6lOeUqOS/neaKpOiuvue9ricpO1xuXHRcdGJhdGNoT3BlcmF0aW9uLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRiYXRjaE9wZXJhdGlvbi5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgdHJ1ZSk7XG5cdFx0YmF0Y2hPcGVyYXRpb24uc2V0UGFnZUxpc3QoaW5wdXQucGFnZXMpO1xuXHRcdGJhdGNoT3BlcmF0aW9uLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdHRpdGxlczogcGFnZU5hbWUsXG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdGDmraPlnKjmo4Dmn6XpobXpnaLigJwke3BhZ2VOYW1lfeKAneaYr+WQpuWtmOWcqGAsXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFja3MubWFpbixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0YmF0Y2hPcGVyYXRpb24ud29ya2VyRmFpbHVyZVxuXHRcdFx0KTtcblx0XHRcdHFpdXdlbl9hcGkucGFyYW1zID0ge1xuXHRcdFx0XHRwYWdlOiBwYWdlTmFtZSxcblx0XHRcdFx0YmF0Y2hPcGVyYXRpb24sXG5cdFx0XHRcdC4uLmlucHV0LFxuXHRcdFx0fTtcblx0XHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jYWxsYmFja3MgPSB7XG5cdFx0bWFpbjogKGFwaW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhcGlvYmouZ2V0UmVzcG9uc2UoKTtcblx0XHRcdGlmIChyZXNwb25zZS5xdWVyeS5ub3JtYWxpemVkKSB7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSA9IHJlc3BvbnNlLnF1ZXJ5Lm5vcm1hbGl6ZWRbMF0udG87XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBleGlzdHMgPSAhcmVzcG9uc2UucXVlcnkucGFnZXNbMF0ubWlzc2luZztcblx0XHRcdGNvbnN0IHBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKGFwaW9iai5wYXJhbXMucGFnZSwgYOato+WcqOS/neaKpCR7YXBpb2JqLnBhcmFtcy5wYWdlfWApO1xuXHRcdFx0bGV0IHRha2VuQWN0aW9uID0gZmFsc2U7XG5cdFx0XHRpZiAoZXhpc3RzICYmIGFwaW9iai5wYXJhbXMuZWRpdG1vZGlmeSkge1xuXHRcdFx0XHRwYWdlLnNldEVkaXRQcm90ZWN0aW9uKGFwaW9iai5wYXJhbXMuZWRpdGxldmVsLCBhcGlvYmoucGFyYW1zLmVkaXRleHBpcnkpO1xuXHRcdFx0XHR0YWtlbkFjdGlvbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZXhpc3RzICYmIGFwaW9iai5wYXJhbXMubW92ZW1vZGlmeSkge1xuXHRcdFx0XHRwYWdlLnNldE1vdmVQcm90ZWN0aW9uKGFwaW9iai5wYXJhbXMubW92ZWxldmVsLCBhcGlvYmoucGFyYW1zLm1vdmVleHBpcnkpO1xuXHRcdFx0XHR0YWtlbkFjdGlvbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWV4aXN0cyAmJiBhcGlvYmoucGFyYW1zLmNyZWF0ZW1vZGlmeSkge1xuXHRcdFx0XHRwYWdlLnNldENyZWF0ZVByb3RlY3Rpb24oYXBpb2JqLnBhcmFtcy5jcmVhdGVsZXZlbCwgYXBpb2JqLnBhcmFtcy5jcmVhdGVleHBpcnkpO1xuXHRcdFx0XHR0YWtlbkFjdGlvbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRha2VuQWN0aW9uKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdGDmraPlnKjkv53miqTigJwke2FwaW9iai5wYXJhbXMucGFnZX1gLFxuXHRcdFx0XHRcdGDigJ3pobXpnaIke2V4aXN0cyA/ICflrZjlnKgnIDogJ+S4jeWtmOWcqCd977yb5peg5LqL5Y+v5YGa77yM6Lez6L+HYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLmJhdGNoT3BlcmF0aW9uLndvcmtlckZhaWx1cmUoYXBpb2JqKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cGFnZS5zZXRFZGl0U3VtbWFyeShhcGlvYmoucGFyYW1zLnJlYXNvbik7XG5cdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2UucHJvdGVjdChhcGlvYmoucGFyYW1zLmJhdGNoT3BlcmF0aW9uLndvcmtlclN1Y2Nlc3MsIGFwaW9iai5wYXJhbXMuYmF0Y2hPcGVyYXRpb24ud29ya2VyRmFpbHVyZSk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5iYXRjaHByb3RlY3QsICdiYXRjaHByb3RlY3QnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVjbG9zZS5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVjbG9zZSgkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZWNsb3NlLmpzOiBYRkQgY2xvc2luZyBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBMaW5rcyBhZnRlciBzZWN0aW9uIGhlYWRpbmdcblx0ICogQWN0aXZlIG9uOiBBZkQgZGF0ZWQgYXJjaGl2ZSBwYWdlc1xuXHQgKiBDb25maWcgZGlyZWN0aXZlcyBpbjogVHdpbmtsZUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS5jbG9zZSA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRUd2lua2xlLmdldFByZWYoJ1hmZENsb3NlJykgPT09ICdoaWRlJyB8fFxuXHRcdFx0IS9eUWl1d2VuKFtfIF10YWxrKT865a2Y5bqf6K6o6K66XFwv6K6w5b2VKD86XFwvXFxkKyl7M30kLy50ZXN0KG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSlcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bXcuaG9vaygnd2lraXBhZ2UuY29udGVudCcpLmFkZCgoaXRlbSkgPT4ge1xuXHRcdFx0aWYgKGl0ZW0uYXR0cignaWQnKSA9PT0gJ213LWNvbnRlbnQtdGV4dCcpIHtcblx0XHRcdFx0VHdpbmtsZS5jbG9zZS5hZGRMaW5rcygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmFkZExpbmtzID0gKCkgPT4ge1xuXHRcdGNvbnN0IHNwYW5UYWcgPSAoY29sb3IsIGNvbnRlbnQpID0+IHtcblx0XHRcdGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHRzcGFuLnN0eWxlLmNvbG9yID0gY29sb3I7XG5cdFx0XHRzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbnRlbnQpKTtcblx0XHRcdHJldHVybiBzcGFuO1xuXHRcdH07XG5cdFx0JGJvZHlcblx0XHRcdC5maW5kKFxuXHRcdFx0XHQnaDE6aGFzKC5tdy1oZWFkbGluZSksaDI6aGFzKC5tdy1oZWFkbGluZSksaDM6aGFzKC5tdy1oZWFkbGluZSksaDQ6aGFzKC5tdy1oZWFkbGluZSksaDU6aGFzKC5tdy1oZWFkbGluZSksaDY6aGFzKC5tdy1oZWFkbGluZSknLFxuXHRcdFx0XHQnI2JvZHlDb250ZW50J1xuXHRcdFx0KVxuXHRcdFx0LmVhY2goKGluZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRcdGVsZW1lbnQuZGF0YXNldC5zZWN0aW9uID0gaW5kZXggKyAxO1xuXHRcdFx0fSk7XG5cdFx0Y29uc3Qgc2VsZWN0b3IgPSAnOmhhcygubXctaGVhZGxpbmUgYTpvbmx5LW9mLXR5cGUpOm5vdCg6aGFzKCsgZGl2Lk5hdkZyYW1lKSknO1xuXHRcdGNvbnN0IHRpdGxlcyA9ICRib2R5LmZpbmQoJyNib2R5Q29udGVudCcpLmZpbmQoYGgyJHtzZWxlY3Rvcn06bm90KDpoYXMoKyBwICsgaDMpKSwgaDMke3NlbGVjdG9yfWApOyAvLyByZWFsbHkgbmVlZHMgdG8gd29yayBvblxuXHRcdGNvbnN0IGRlbE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKTtcblx0XHRjb25zdCBkZWxMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdGRlbExpbmsuYXBwZW5kQ2hpbGQoc3BhblRhZygnQmxhY2snLCAnWycpKTtcblx0XHRkZWxMaW5rLmFwcGVuZENoaWxkKHNwYW5UYWcoJ1JlZCcsIHdpbmRvdy53Z1VMUygn5YWz6Zet6K6o6K66JywgJ+mXnOmWieiojuirlicpKSk7XG5cdFx0ZGVsTGluay5hcHBlbmRDaGlsZChzcGFuVGFnKCdCbGFjaycsICddJykpO1xuXHRcdGRlbE5vZGUuYXBwZW5kQ2hpbGQoZGVsTGluayk7XG5cdFx0Zm9yIChjb25zdCBjdXJyZW50IG9mIHRpdGxlcykge1xuXHRcdFx0Y29uc3QgaGVhZGxpbmVocmVmID0gJChjdXJyZW50KVxuXHRcdFx0XHQuZmluZCgnLm13LWhlYWRsaW5lIGE6bm90KC5leHQtZGlzY3Vzc2lvbnRvb2xzLWluaXQtc2VjdGlvbi1zdWJzY3JpYmUtbGluayknKVxuXHRcdFx0XHQuYXR0cignaHJlZicpO1xuXHRcdFx0aWYgKGhlYWRsaW5laHJlZiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGxldCB0aXRsZSA9IG51bGw7XG5cdFx0XHRcdGlmIChoZWFkbGluZWhyZWYuaW5jbHVkZXMoJ3JlZGxpbms9MScpKSB7XG5cdFx0XHRcdFx0dGl0bGUgPSBoZWFkbGluZWhyZWYuc2xpY2UoMTksIC0yMik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgbSA9IGhlYWRsaW5laHJlZi5tYXRjaCgvXFwvd2lraVxcLyhbXj9dKykvLCAnJDEnKTtcblx0XHRcdFx0XHRpZiAobSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0WywgdGl0bGVdID0gbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRpdGxlICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0dGl0bGUgPSBkZWNvZGVVUklDb21wb25lbnQodGl0bGUpO1xuXHRcdFx0XHRcdHRpdGxlID0gdGl0bGUucmVwbGFjZSgvXy9nLCAnICcpOyAvLyBOb3JtYWxpemUgZm9yIHVzaW5nIGluIGludGVyZmFjZSBhbmQgc3VtbWFyeVxuXHRcdFx0XHRcdGNvbnN0IHBhZ2Vub3RleGlzdCA9ICQoY3VycmVudCkuZmluZCgnLm13LWhlYWRsaW5lIGEnKS5oYXNDbGFzcygnbmV3Jyk7XG5cdFx0XHRcdFx0Y29uc3Qge3NlY3Rpb259ID0gY3VycmVudC5kYXRhc2V0O1xuXHRcdFx0XHRcdGNvbnN0IFtub2RlXSA9IGN1cnJlbnQucXVlcnlTZWxlY3RvckFsbCgnLm13LWhlYWRsaW5lJyk7XG5cdFx0XHRcdFx0bm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpKTtcblx0XHRcdFx0XHRjb25zdCB0bXBOb2RlID0gZGVsTm9kZS5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRcdFx0dG1wTm9kZS5maXJzdENoaWxkLmhyZWYgPSBgIyR7c2VjdGlvbn1gO1xuXHRcdFx0XHRcdCQodG1wTm9kZS5maXJzdENoaWxkKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrKHRpdGxlLCBzZWN0aW9uLCBwYWdlbm90ZXhpc3QpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG5vZGUuYXBwZW5kQ2hpbGQodG1wTm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdC8vIEtlZXAgdGhpcyBzeW5jaHJvbml6ZWQgd2l0aCB7e2RlbGh9fVxuXHRUd2lua2xlLmNsb3NlLmNvZGVzID0gW1xuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCfor7fmsYLml6DmlYgnLCAn6KuL5rGC54Sh5pWIJyksXG5cdFx0XHR2YWx1ZToge1xuXHRcdFx0XHRpcjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+axguaXoOaViCcsICfoq4vmsYLnhKHmlYgnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0cmVwOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YeN5aSN5o+Q5Ye677yM5peg5pWIJywgJ+mHjeikh+aPkOWHuu+8jOeEoeaViCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuZToge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ebruagh+mhtemdouaIluaWh+S7tuS4jeWtmOWcqO+8jOaXoOaViCcsICfnm67mqJnpoIHpnaLmiJbmqpTmoYjkuI3lrZjlnKjvvIznhKHmlYgnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bnE6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmj5DliKDogIXmnKrojrflj5bmj5DliKDotYTmoLzvvIzml6DmlYgnLCAn5o+Q5Yiq6ICF5pyq5Y+W5b6X5o+Q5Yiq6LOH5qC877yM54Sh5pWIJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiAn5L+d55WZJyxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdGs6IHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/neeVmScsXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzazoge1xuXHRcdFx0XHRcdGxhYmVsOiAn5b+r6YCf5L+d55WZJyxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0dGs6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmoLml7bkv53nlZnvvIzmlLnmjILnu7TmiqTmqKHmnb/vvIjlhbPms6jluqbnrYnvvIknLCAn5pqr5pmC5L+d55WZ77yM5pS55o6b57at6K235qih5p2/77yI6Zec5rOo5bqm562J77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn5pqC5pe25L+d55WZJywgJ+aaq+aZguS/neeVmScpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRycjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+axgueQhueUsea2iOWksScsICfoq4vmsYLnkIbnlLHmtojlpLEnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogVHdpbmtsZS5nZXRQcmVmKCdYZmRDbG9zZScpID09PSAnbm9uYWRtaW5vbmx5Jyxcblx0XHRcdFx0fSxcblx0XHRcdFx0ZGFuOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig5ZCO6YeN5bu6JywgJ+WIquW+jOmHjeW7uicpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpLFxuXHRcdFx0dmFsdWU6IHtcblx0XHRcdFx0ZDoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdkZWwnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0XHRzZWxlY3RlZDogVHdpbmtsZS5nZXRQcmVmKCdYZmRDbG9zZScpID09PSAnYWxsJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0aWM6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm77lg4/lm6DkvrXmnYPooqvliKAnLCAn5ZyW5YOP5Zug5L615qyK6KKr5YiqJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpCcsICflv6vpgJ/liKrpmaQnKSxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdHNkOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b+r6YCf5Yig6ZmkJywgJ+W/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxzc2Q6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DmnaXmupDmiJbokZfkvZzmnYPkv6Hmga/vvIzlv6vpgJ/liKDpmaQnLCAn54Sh5L6G5rqQ5oiW54mI5qyK6LOH6KiK77yM5b+r6YCf5Yiq6ZmkJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0c3ZnOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey5pS555SoU1ZH5Zu+5b2i77yM5b+r6YCf5Yig6ZmkJywgJ+W3suaUueeUqFNWR+WcluW9ou+8jOW/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRyZXA6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpJrmrKHooqvliKDpmaTvvIzmnaHnm67plIHlrponLCAn5aSa5qyh6KKr5Yiq6Zmk77yM5qKd55uu6Y6W5a6aJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WFtuS7luWkhOeQhuaWueazlScsICflhbbku5bomZXnkIbmlrnms5UnKSxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdGM6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazkuqTkvrXmnYMnLCAn6L2J5Lqk5L615qyKJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnbm9vcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHI6IHtcblx0XHRcdFx0XHRsYWJlbDogJ+mHjeWumuWQkScsXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjcjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIhuexu+mHjeWumuWQkScsICfliIbpoZ7ph43lrprlkJEnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG06IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vliqgnLCAn56e75YuVJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtZXJnZToge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W5tuWFpScsICfkvbXlhaUnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1lcmdlYXBwcm92ZWQ6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhYHorrjlubblhaUnLCAn5YWB6Kix5L215YWlJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuYzoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoOWFseivhuaaguaXtuS/neeVmScsICfnhKHlhbHorZjmmqvmmYLkv53nlZknKSxcblx0XHRcdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCfml6DlhbHor4YnLCAn54Sh5YWx6K2YJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2sgPSAodGl0bGUsIHNlY3Rpb24sIG5vb3ApID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDQxMCwgMjAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoYOWFs+mXreWtmOW6n+iuqOiuuiBcXHUwMEI3ICR7dGl0bGV9YCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluaygn5a2Y5bqf6K6o6K666K6+572uJywgJ0g6VFcvUFJFRiPlhbPpl63lrZjlup/orqjorronKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluaygnVHdpbmtsZeW4ruWKqScsICdIOlRXL0RPQyPlhbPpl63lrZjlup/orqjorronKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdGxhYmVsOiAn5aSE55CG57uT5p6c77yaJyxcblx0XHRcdG5hbWU6ICdzdWJfZ3JvdXAnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suY2hhbmdlX2NvZGUsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdzZHJlYXNvbicsXG5cdFx0XHRsYWJlbDogJ+mAn+WIoOeQhueUse+8micsXG5cdFx0XHR0b29sdGlwOiAn55So5LqO5Yig6Zmk5pel5b+X77yM5L2/55Soe3tkZWxldGV9feeahOWPguaVsOagvOW8j++8jOS+i+WmgiBBMSDmiJYgQTF8RzEnLFxuXHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAncmVtYXJrJyxcblx0XHRcdGxhYmVsOiAn6KGl5YWF6K+05piO77yaJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICflj6rlhbPpl63orqjorrrvvIzkuI3ov5vooYzlhbbku5bmk43kvZwnLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm9vcCcsXG5cdFx0XHRcdFx0bmFtZTogJ25vb3AnLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmNoYW5nZV9vcGVyYXRpb24sXG5cdFx0XHRcdFx0Y2hlY2tlZDogbm9vcCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0aWYgKG5ldyBtdy5UaXRsZSh0aXRsZSkubmFtZXNwYWNlICUgMiA9PT0gMCAmJiBuZXcgbXcuVGl0bGUodGl0bGUpLm5hbWVzcGFjZSAhPT0gMikge1xuXHRcdFx0Ly8gaGlkZSBvcHRpb24gZm9yIHVzZXIgcGFnZXMsIHRvIGF2b2lkIGFjY2lkZW50YWxseSBkZWxldGluZyB1c2VyIHRhbGsgcGFnZVxuXHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfliKDpmaTlhbPogZTnmoTorqjorrrpobUnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICd0YWxrcGFnZScsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFsa3BhZ2UnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogJ+WIoOmZpOaXtumZhOW4puWIoOmZpOatpOmhtemdoueahOiuqOiuuumhteOAgicsXG5cdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAn5Yig6Zmk6YeN5a6a5ZCR6aG1Jyxcblx0XHRcdFx0XHR2YWx1ZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0bmFtZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0dG9vbHRpcDogJ+WIoOmZpOWIsOatpOmhteeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRldmVudDogKGUpID0+IHtcblx0XHRcdFx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Y29uc3QgW3N1Yl9ncm91cF0gPSByZXN1bHQucXVlcnlTZWxlY3RvckFsbCgnc2VsZWN0Jyk7IC8vIGhhY2tcblx0XHRjb25zdCByZXN1bHREYXRhID0ge1xuXHRcdFx0dGl0bGUsXG5cdFx0XHRzZWN0aW9uOiBOdW1iZXIucGFyc2VJbnQoc2VjdGlvbiwgMTApLFxuXHRcdFx0bm9vcCxcblx0XHR9O1xuXHRcdCQocmVzdWx0KS5kYXRhKCdyZXN1bHREYXRhJywgcmVzdWx0RGF0YSk7XG5cdFx0Ly8gd29ya2VyIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgY29tYm8gYm94IGVudHJpZXNcblx0XHRjb25zdCBjcmVhdGVFbnRyaWVzID0gKGNvbnRlbnRzLCBjb250YWluZXIpID0+IHtcblx0XHRcdGZvciAoY29uc3QgW2l0ZW1LZXksIGl0ZW1Qcm9wZXJ0aWVzXSBvZiBPYmplY3QuZW50cmllcyhjb250ZW50cykpIHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gdHlwZW9mIGl0ZW1LZXkgPT09ICdzdHJpbmcnID8gaXRlbUtleSA6IGl0ZW1Qcm9wZXJ0aWVzLnZhbHVlO1xuXHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogYCR7a2V5fe+8miR7aXRlbVByb3BlcnRpZXMubGFiZWx9YCxcblx0XHRcdFx0XHR2YWx1ZToga2V5LFxuXHRcdFx0XHRcdHNlbGVjdGVkOiBpdGVtUHJvcGVydGllcy5zZWxlY3RlZCxcblx0XHRcdFx0XHRkaXNhYmxlZDpcblx0XHRcdFx0XHRcdChUd2lua2xlLmdldFByZWYoJ1hmZENsb3NlJykgIT09ICdhbGwnICYmIGl0ZW1Qcm9wZXJ0aWVzLmFkbWlub25seSkgfHwgaXRlbVByb3BlcnRpZXMuZGlzYWJsZWQsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBlbGVtUmVuZGVyZWQgPSBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWxlbS5yZW5kZXIoKSk7XG5cdFx0XHRcdCQoZWxlbVJlbmRlcmVkKS5kYXRhKCdtZXNzYWdlRGF0YScsIGl0ZW1Qcm9wZXJ0aWVzKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS5jbG9zZS5jb2Rlcykge1xuXHRcdFx0bGV0IG9wdGdyb3VwID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0bGFiZWw6IGdyb3VwLmtleSxcblx0XHRcdH0pO1xuXHRcdFx0b3B0Z3JvdXAgPSBvcHRncm91cC5yZW5kZXIoKTtcblx0XHRcdHN1Yl9ncm91cC5hcHBlbmRDaGlsZChvcHRncm91cCk7XG5cdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdGNyZWF0ZUVudHJpZXMoZ3JvdXAudmFsdWUsIG9wdGdyb3VwKTtcblx0XHR9XG5cdFx0Y29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldmVudC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5zdWJfZ3JvdXAuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suY2hhbmdlX29wZXJhdGlvbiA9IChlKSA9PiB7XG5cdFx0Y29uc3Qgbm9vcCA9IGUudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0Y29uc3QgY29kZSA9IGUudGFyZ2V0LmZvcm0uc3ViX2dyb3VwLnZhbHVlO1xuXHRcdGNvbnN0IG1lc3NhZ2VEYXRhID0gJChlLnRhcmdldC5mb3JtLnN1Yl9ncm91cCkuZmluZChgb3B0aW9uW3ZhbHVlPVwiJHtjb2RlfVwiXWApLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0Y29uc3Qge3RhbGtwYWdlfSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3Qge3JlZGlyZWN0c30gPSBlLnRhcmdldC5mb3JtO1xuXHRcdGlmIChub29wIHx8IG1lc3NhZ2VEYXRhLmFjdGlvbiA9PT0gJ2tlZXAnKSB7XG5cdFx0XHRpZiAodGFsa3BhZ2UpIHtcblx0XHRcdFx0dGFsa3BhZ2UuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZWRpcmVjdHMuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRhbGtwYWdlKSB7XG5cdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmNoYW5nZV9jb2RlID0gKGUpID0+IHtcblx0XHRjb25zdCByZXN1bHREYXRhID0gJChlLnRhcmdldC5mb3JtKS5kYXRhKCdyZXN1bHREYXRhJyk7XG5cdFx0Y29uc3QgbWVzc2FnZURhdGEgPSAkKGUudGFyZ2V0KS5maW5kKGBvcHRpb25bdmFsdWU9XCIke2UudGFyZ2V0LnZhbHVlfVwiXWApLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0Y29uc3Qge25vb3B9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRjb25zdCB7dGFsa3BhZ2V9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRjb25zdCB7cmVkaXJlY3RzfSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0aWYgKHJlc3VsdERhdGEubm9vcCB8fCBtZXNzYWdlRGF0YS5hY3Rpb24gPT09ICdub29wJykge1xuXHRcdFx0bm9vcC5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdG5vb3AuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKHRhbGtwYWdlKSB7XG5cdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0dGFsa3BhZ2UuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdHJlZGlyZWN0cy5kaXNhYmxlZCA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG5vb3AuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0bm9vcC5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0aWYgKG1lc3NhZ2VEYXRhLmFjdGlvbiA9PT0gJ2tlZXAnKSB7XG5cdFx0XHRcdGlmICh0YWxrcGFnZSkge1xuXHRcdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICh0YWxrcGFnZSkge1xuXHRcdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRhbGtwYWdlLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRyZWRpcmVjdHMuZGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmIChlLnRhcmdldC52YWx1ZSA9PT0gJ3NkJykge1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnNkcmVhc29uLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2suZXZhbHVhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IGNvZGUgPSBlLnRhcmdldC5zdWJfZ3JvdXAudmFsdWU7XG5cdFx0Y29uc3QgcmVzdWx0RGF0YSA9ICQoZS50YXJnZXQpLmRhdGEoJ3Jlc3VsdERhdGEnKTtcblx0XHRjb25zdCBtZXNzYWdlRGF0YSA9ICQoZS50YXJnZXQuc3ViX2dyb3VwKS5maW5kKGBvcHRpb25bdmFsdWU9XCIke2NvZGV9XCJdYCkuZGF0YSgnbWVzc2FnZURhdGEnKTtcblx0XHRjb25zdCBub29wID0gZS50YXJnZXQubm9vcC5jaGVja2VkO1xuXHRcdGNvbnN0IHRhbGtwYWdlID0gZS50YXJnZXQudGFsa3BhZ2UgJiYgZS50YXJnZXQudGFsa3BhZ2UuY2hlY2tlZDtcblx0XHRjb25zdCByZWRpcmVjdHMgPSBlLnRhcmdldC5yZWRpcmVjdHMuY2hlY2tlZDtcblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR0aXRsZTogcmVzdWx0RGF0YS50aXRsZSxcblx0XHRcdGNvZGUsXG5cdFx0XHRyZW1hcms6IGUudGFyZ2V0LnJlbWFyay52YWx1ZSxcblx0XHRcdHNkcmVhc29uOiBlLnRhcmdldC5zZHJlYXNvbi52YWx1ZSxcblx0XHRcdHNlY3Rpb246IHJlc3VsdERhdGEuc2VjdGlvbixcblx0XHRcdHBhcmVudFNlY3Rpb246IHJlc3VsdERhdGEucGFyZW50U2VjdGlvbixcblx0XHRcdG1lc3NhZ2VEYXRhLFxuXHRcdFx0dGFsa3BhZ2UsXG5cdFx0XHRyZWRpcmVjdHMsXG5cdFx0fTtcblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSAn5pON5L2c5a6M5oiQJztcblx0XHRpZiAobm9vcCB8fCBtZXNzYWdlRGF0YS5hY3Rpb24gPT09ICdub29wJykge1xuXHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzd2l0Y2ggKG1lc3NhZ2VEYXRhLmFjdGlvbikge1xuXHRcdFx0XHRjYXNlICdkZWwnOlxuXHRcdFx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmRlbChwYXJhbXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdrZWVwJzoge1xuXHRcdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShwYXJhbXMudGl0bGUsICfnp7vpmaTlrZjlup/orqjorrrmqKHmnb8nKTtcblx0XHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmtlZXApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoYOWFs+mXreWtmOW6n+iuqOiuuu+8muacquWumuS5iSAke2NvZGV9YCwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWNsb3NlJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzID0ge1xuXHRcdGRlbDogKHBhcmFtcykgPT4ge1xuXHRcdFx0bGV0IHF1ZXJ5O1xuXHRcdFx0bGV0IHFpdXdlbl9hcGk7XG5cdFx0XHRNb3JlYml0cy53aWtpLmFkZENoZWNrcG9pbnQoKTtcblx0XHRcdGNvbnN0IHBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHBhcmFtcy50aXRsZSwgJ+WIoOmZpOmhtemdoicpO1xuXHRcdFx0aWYgKHBhcmFtcy5jb2RlID09PSAnc2QnKSB7XG5cdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5wYXJzZVdpa2l0ZXh0KHBhcmFtcy50aXRsZSwgYHt7ZGVsZXRlfCR7cGFyYW1zLnNkcmVhc29ufX19YCwgKHJlYXNvbikgPT4ge1xuXHRcdFx0XHRcdHJlYXNvbiA9IHByb21wdCgn6L6T5YWl5Yig6Zmk55CG55Sx77yM5oiW54K55Ye756Gu5a6a5Lul5o6l5Y+X6Ieq5Yqo55Sf5oiQ55qE77yaJywgcmVhc29uKTtcblx0XHRcdFx0XHRpZiAocmVhc29uID09PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRwYWdlLmdldFN0YXR1c0VsZW1lbnQoKS53YXJuKCfmsqHmnInmiafooYzliKDpmaQnKTtcblx0XHRcdFx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLnRhbGtlbmQocGFyYW1zKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cGFnZS5zZXRFZGl0U3VtbWFyeShyZWFzb24pO1xuXHRcdFx0XHRcdFx0cGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0XHRwYWdlLmRlbGV0ZVBhZ2UoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRwYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MudGFsa2VuZChwYXJhbXMpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBhZ2Uuc2V0RWRpdFN1bW1hcnkoYOWtmOW6n+iuqOiuuumAmui/h++8mltbJHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9IyR7cGFyYW1zLnRpdGxlfV1dYCk7XG5cdFx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlLmRlbGV0ZVBhZ2UoKCkgPT4ge1xuXHRcdFx0XHRcdHBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLnRhbGtlbmQocGFyYW1zKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLnJlZGlyZWN0cykge1xuXHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0dGl0bGVzOiBwYXJhbXMudGl0bGUsXG5cdFx0XHRcdFx0cHJvcDogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0cmRsaW1pdDogJ21heCcsIC8vIDUwMCBpcyBtYXggZm9yIG5vcm1hbCB1c2VycywgNTAwMCBmb3IgYm90cyBhbmQgc3lzb3BzXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0cWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHQn5q2j5Zyo6I635Y+W6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5kZWxldGVSZWRpcmVjdHNNYWluXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHFpdXdlbl9hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMudGFsa1BhZ2UpIHtcblx0XHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gbXcuVGl0bGUubmV3RnJvbVRleHQocGFyYW1zLnRpdGxlKTtcblx0XHRcdFx0aWYgKHBhZ2VUaXRsZSAmJiBwYWdlVGl0bGUubmFtZXNwYWNlICUgMiA9PT0gMCAmJiBwYWdlVGl0bGUubmFtZXNwYWNlICE9PSAyKSB7XG5cdFx0XHRcdFx0cGFnZVRpdGxlLm5hbWVzcGFjZSsrOyAvLyBub3cgcGFnZVRpdGxlIGlzIHRoZSB0YWxrIHBhZ2UgdGl0bGUhXG5cdFx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHR0aXRsZXM6IHBhZ2VUaXRsZS50b1RleHQoKSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHQn5q2j5Zyo5qOA5p+l6K6o6K666aG16Z2i5piv5ZCm5a2Y5ZyoJyxcblx0XHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MuZGVsZXRlVGFsa1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdFx0cWl1d2VuX2FwaS5hcGlvYmoucGFyYW1zLnRhbGtQYWdlID0gcGFnZVRpdGxlLnRvVGV4dCgpO1xuXHRcdFx0XHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHR9LFxuXHRcdGRlbGV0ZVJlZGlyZWN0c01haW46IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IHBhZ2VzID0gJCh4bWwpXG5cdFx0XHRcdC5maW5kKCdyZCcpXG5cdFx0XHRcdC5tYXAoKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAkKGVsZW1lbnQpLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5nZXQoKTtcblx0XHRcdGlmIChwYWdlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmVkaXJlY3REZWxldGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOWIsCAnLCAn5q2j5Zyo5Yiq6Zmk5YiwICcpICtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLnRpdGxlICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDnmoTph43lrprlkJEnLCAnIOeahOmHjeaWsOWwjuWQkScpXG5cdFx0XHQpO1xuXHRcdFx0cmVkaXJlY3REZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaGRlbGV0ZUNodW5rcycpKTtcblx0XHRcdHJlZGlyZWN0RGVsZXRlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0XHRyZWRpcmVjdERlbGV0ZXIucnVuKChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UocGFnZU5hbWUsIHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6ZmkICcsICfmraPlnKjliKrpmaQgJykgKyBwYWdlTmFtZSk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdGBbW1FXOkNTRCNHNXxHNV1d77yaJHt3aW5kb3cud2dVTFMoJ+aMh+WQkeW3suWIoOmhtemdouKAnCcsICfmjIflkJHlt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMudGl0bGV9JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn4oCd55qE6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRcdCfjgI3nmoTph43mlrDlsI7lkJEnXG5cdFx0XHRcdFx0KX1gXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0cWl1d2VuX3BhZ2UuZGVsZXRlUGFnZShyZWRpcmVjdERlbGV0ZXIud29ya2VyU3VjY2VzcywgcmVkaXJlY3REZWxldGVyLndvcmtlckZhaWx1cmUpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRkZWxldGVUYWxrOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBleGlzdHMgPSAkKHhtbCkuZmluZCgncGFnZTpub3QoW21pc3NpbmddKScpLmxlbmd0aCA+IDA7XG5cdFx0XHRpZiAoIWV4aXN0cykge1xuXHRcdFx0XHQvLyBubyB0YWxrIHBhZ2U7IGZvcmdldCBhYm91dCBpdFxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy50YWxrUGFnZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjliKDpmaTpobXpnaIgJywgJ+ato+WcqOWIqumZpOmggemdoiAnKSArXG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy50aXRsZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6K6o6K666aG1JywgJyDnmoToqI7oq5bpoIEnKVxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdGBbW1FXOkNTRCNHNXxHNV1d77yaJHt3aW5kb3cud2dVTFMoJ+W3suWIoOmhtemdouKAnCcsICflt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMudGl0bGV9JHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+KAneeahFtbSGVscDrorqjorrrpobV86K6o6K666aG1XV0nLFxuXHRcdFx0XHRcdCfjgI3nmoRbW0hlbHA66KiO6KuW6aCBfOiojuirlumggV1dJ1xuXHRcdFx0XHQpfWBcblx0XHRcdCk7XG5cdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2UuZGVsZXRlUGFnZSgpO1xuXHRcdH0sXG5cdFx0a2VlcDogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHN0YXRlbGVtID0gcGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRpZiAoIXBhZ2VvYmouZXhpc3RzKCkpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3IoJ+mhtemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIoOmZpCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IHBhZ2V0aXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhcmFtcy50aXRsZSk7XG5cdFx0XHRpZiAocGFnZXRpdGxlLmdldE5hbWVzcGFjZUlkKCkgJSAyID09PSAwKSB7XG5cdFx0XHRcdGNvbnN0IHRhbGtwYWdldGl0bGUgPSBuZXcgbXcuVGl0bGUocGFnZXRpdGxlLmdldE1haW5UZXh0KCksIHBhZ2V0aXRsZS5nZXROYW1lc3BhY2VJZCgpICsgMSk7XG5cdFx0XHRcdGNvbnN0IHRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHR0YWxrcGFnZXRpdGxlLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDorqjorrrpobUnLCAn5qiZ6KiY6KiO6KuW6aCBJylcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcmVhc29uID0gcGFyYW1zLm1lc3NhZ2VEYXRhLnZhbHVlIHx8IHBhcmFtcy5tZXNzYWdlRGF0YS5sYWJlbDtcblx0XHRcdFx0Y29uc3QgdmZka2VwdCA9IGB7e09sZCB2ZmQgbXVsdGl8JHttdy5jb25maWdcblx0XHRcdFx0XHQuZ2V0KCd3Z1BhZ2VOYW1lJylcblx0XHRcdFx0XHQuc3BsaXQoJy8nKVxuXHRcdFx0XHRcdC5zbGljZSgyKVxuXHRcdFx0XHRcdC5qb2luKCcvJyl9fCR7cmVhc29ufX19XFxuYDtcblx0XHRcdFx0dGFsa3BhZ2Uuc2V0UHJlcGVuZFRleHQodmZka2VwdCk7XG5cdFx0XHRcdHRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KGBbWyR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX1dXe+8miR7cmVhc29ufWApO1xuXHRcdFx0XHR0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0dGFsa3BhZ2UucHJlcGVuZCgpO1xuXHRcdFx0fVxuXHRcdFx0bGV0IG5ld3RleHQgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdC88bm9pbmNsdWRlPlxccypcXHtcXHsoW3JzYWlmdGNtdl1mZCkoXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyo8XFwvbm9pbmNsdWRlPlxccyovZ2ksXG5cdFx0XHRcdCcnXG5cdFx0XHQpO1xuXHRcdFx0bmV3dGV4dCA9IG5ld3RleHQucmVwbGFjZSgvXFx7XFx7KFtyc2FpZnRjbXZdZmQpKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2dpLCAnJyk7XG5cdFx0XHRpZiAocGFyYW1zLmNvZGUgIT09ICd0aycpIHtcblx0XHRcdFx0bmV3dGV4dCA9IG5ld3RleHQucmVwbGFjZShcblx0XHRcdFx0XHQve3sobm90YWJpbGl0eXxmYW1lfG1haXJ855+l5ZCN5bqmfOmHjeimgeaAp3zmmL7okZfmgKd86aGv6JGX5oCnfOefpeWQjeW6puS4jei2s3zkurrnianph43opoHmgKd86YeN6KaB5oCn5LiN6LazfG5vdGFibGV85YWz5rOo5bqmfOWFs+azqOW6puS4jei2s3zpl5zms6jluqZ86Zec5rOo5bqm5LiN6LazfOmHjeimgXzph43opoHluqYpKFxcfCg/Ont7W157fV0qfX18W157fV0pKik/fX1cXG4qL2dpLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdG5ld3RleHQgPSBuZXd0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L3t7KHN1YnN0dWJ85bCP5bCP5L2c5ZOBfGNvZHzlsI/lsI/mop3nm6585bCP5bCP5p2h55uuKShcXHwoPzp7e1tee31dKn19fFtee31dKSopP319XFxuKi9naSxcblx0XHRcdFx0XHQnJ1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5jb2RlID09PSAnbWVyZ2VhcHByb3ZlZCcpIHtcblx0XHRcdFx0Y29uc3QgdGFnID0gJ3t7J1xuXHRcdFx0XHRcdC5jb25jYXQoJ3N1YnN0OicpXG5cdFx0XHRcdFx0LmNvbmNhdChgTWVyZ2UgYXBwcm92ZWQvYXV0b3xkaXNjdXNzPSR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX19fVxcbmApO1xuXHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlc1xuXHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKG5ld3RleHQpO1xuXHRcdFx0XHRuZXd0ZXh0ID0gcWl1d2VuX3BhZ2UuaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXModGFnLCBUd2lua2xlLmhhdG5vdGVSZWdleCkuZ2V0VGV4dCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG5ld3RleHQgPT09IHRleHQpIHtcblx0XHRcdFx0c3RhdGVsZW0ud2Fybign5pyq5om+5Yiw5a2Y5bqf6K6o6K665qih5p2/77yM5Y+v6IO95bey6KKr56e76ZmkJyk7XG5cdFx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLnRhbGtlbmQocGFyYW1zKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZWRpdHN1bW1hcnkgPSBg5a2Y5bqf6K6o6K665YWz6Zet77yaW1ske213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX0jJHtwYXJhbXMudGl0bGV9XV1gO1xuXHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dChuZXd0ZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoZWRpdHN1bW1hcnkpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5rZWVwQ29tcGxldGUpO1xuXHRcdH0sXG5cdFx0a2VlcENvbXBsZXRlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLnRhbGtlbmQocGFyYW1zKTtcblx0XHR9LFxuXHRcdHRhbGtlbmQ6IChwYXJhbXMpID0+IHtcblx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksICflhbPpl63orqjorronKTtcblx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0UGFnZVNlY3Rpb24ocGFyYW1zLnNlY3Rpb24pO1xuXHRcdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5zYXZlVGFsayk7XG5cdFx0fSxcblx0XHRzYXZlVGFsazogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHN0YXRlbGVtID0gcGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRpZiAodGV4dC5pbmNsdWRlcygne3tkZWxoJykpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3IoJ+iuqOiuuuW3suiiq+WFs+mXrScpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzYmVnaW4gPSB0ZXh0LmluY2x1ZGVzKCc8c2VjdGlvbiBiZWdpbj1iYWNrbG9nIC8+Jyk7XG5cdFx0XHRjb25zdCBzZW5kID0gdGV4dC5pbmNsdWRlcygnPHNlY3Rpb24gZW5kPWJhY2tsb2cgLz4nKTtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoJ1xcbjxzZWN0aW9uIGJlZ2luPWJhY2tsb2cgLz4nLCAnJyk7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCdcXG48c2VjdGlvbiBlbmQ9YmFja2xvZyAvPicsICcnKTtcblx0XHRcdGNvbnN0IGJhciA9IHRleHQuc3BsaXQoJ1xcbi0tLS1cXG4nKTtcblx0XHRcdGNvbnN0IHNwbGl0ID0gYmFyWzBdLnNwbGl0KCdcXG4nKTtcblx0XHRcdHRleHQgPSBgJHtzcGxpdFswXX1cXG57e2RlbGh8JHtwYXJhbXMuY29kZX19fVxcbmA7XG5cdFx0XHR0ZXh0ICs9IHNwbGl0LnNsaWNlKDEpLmpvaW4oJ1xcbicpO1xuXHRcdFx0Y29uc3QgcmVhc29uID0gcGFyYW1zLm1lc3NhZ2VEYXRhLnZhbHVlIHx8IHBhcmFtcy5tZXNzYWdlRGF0YS5sYWJlbDtcblx0XHRcdHRleHQgKz0gYFxcbjxocj5cXG46ICR7cmVhc29ufWA7XG5cdFx0XHRpZiAocGFyYW1zLnJlbWFyaykge1xuXHRcdFx0XHR0ZXh0ICs9IGDvvJoke01vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihwYXJhbXMucmVtYXJrKX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGV4dCArPSAn44CCJztcblx0XHRcdH1cblx0XHRcdGlmICghTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0dGV4dCArPSAne3snLmNvbmNhdCgnc3Vic3Q6JykuY29uY2F0KCdOQUN9fScpO1xuXHRcdFx0fVxuXHRcdFx0dGV4dCArPSAnLS1+ficuY29uY2F0KCd+ficsICdcXG57e2RlbGZ9fScpO1xuXHRcdFx0aWYgKGJhclsxXSkge1xuXHRcdFx0XHR0ZXh0ICs9IGBcXG4tLS0tXFxuJHtiYXIuc2xpY2UoMSkuam9pbignXFxuLS0tLVxcbicpfWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2VuZCkge1xuXHRcdFx0XHR0ZXh0ICs9ICdcXG48c2VjdGlvbiBlbmQ9YmFja2xvZyAvPic7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2JlZ2luKSB7XG5cdFx0XHRcdC8vIGd1YXJhbnRlZWQgdG8gYmUgYXQgdG5lIGVuZD9cblx0XHRcdFx0dGV4dCArPSAnXFxuPHNlY3Rpb24gYmVnaW49YmFja2xvZyAvPic7XG5cdFx0XHR9XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShgLyogJHtwYXJhbXMudGl0bGV9ICovICR7cmVhc29ufWApO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5kaXNhYmxlTGluayk7XG5cdFx0fSxcblx0XHRkaXNhYmxlTGluazogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQkKGBzdHJvbmcgYVtocmVmPSMke3BhcmFtcy5zZWN0aW9ufV0gc3BhbmApLmNzcygnY29sb3InLCAnIzgwODA4MCcpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuY2xvc2UsICdjbG9zZScpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWNvbmZpZy5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVjb25maWcoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVjb25maWcuanM6IFByZWZlcmVuY2VzIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IEFkZHMgY29uZmlndXJhdGlvbiBmb3JtIHRvIEhlbHA6VHdpbmtsZS/lj4LmlbDorr7nva4sXG5cdCAqIGFuZCBhZGRzIGFuIGFkIGJveCB0byB0aGUgdG9wIG9mIHVzZXIgc3VicGFnZXMgYmVsb25naW5nIHRvIHRoZVxuXHQgKiBjdXJyZW50bHkgbG9nZ2VkLWluIHVzZXIgd2hpY2ggZW5kIGluICcuanMnXG5cdCAqIEFjdGl2ZSBvbjogV2hhdCBJIGp1c3Qgc2FpZC4gWWVhaC5cblx0ICovXG5cdFR3aW5rbGUuY29uZmlnID0ge307XG5cdFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zID0ge1xuXHRcdHllczogd2luZG93LndnVUxTKCfmsLjkuYXliqDlhaXliLDnm5Hop4bliJfooagnLCAn5rC45LmF5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0bm86IHdpbmRvdy53Z1VMUygn5LiN5Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+S4jeWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdGRlZmF1bHQ6IHdpbmRvdy53Z1VMUygn6YG15a6I56uZ54K56K6+572uJywgJ+mBteWuiOermem7nuioreWumicpLFxuXHRcdCcxIHdlZWsnOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWIsOebkeinhuWIl+ihqDHlkagnLCAn5Yqg5YWl5Yiw55uj6KaW5riF5ZauMemAsScpLFxuXHRcdCcxIG1vbnRoJzogd2luZG93LndnVUxTKCfliqDlhaXliLDnm5Hop4bliJfooagx5Liq5pyIJywgJ+WKoOWFpeWIsOebo+imlua4heWWrjHlgIvmnIgnKSxcblx0XHQnMyBtb250aHMnOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWIsOebkeinhuWIl+ihqDPkuKrmnIgnLCAn5Yqg5YWl5Yiw55uj6KaW5riF5ZauM+WAi+aciCcpLFxuXHRcdCc2IG1vbnRocyc6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5Yiw55uR6KeG5YiX6KGoNuS4quaciCcsICfliqDlhaXliLDnm6PoppbmuIXllq425YCL5pyIJyksXG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMgPSB7XG5cdFx0Y3NkQ3JpdGVyaWE6IHtcblx0XHRcdGRiOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdGcxOiAnRzEnLFxuXHRcdFx0ZzI6ICdHMicsXG5cdFx0XHRnMzogJ0czJyxcblx0XHRcdGc0OiAnRzQnLFxuXHRcdFx0ZzU6ICdHNScsXG5cdFx0XHRnNjogJ0c2Jyxcblx0XHRcdGc3OiAnRzcnLFxuXHRcdFx0Zzg6ICdHOCcsXG5cdFx0XHRnOTogJ0c5Jyxcblx0XHRcdGExOiAnQTEnLFxuXHRcdFx0YTI6ICdBMicsXG5cdFx0XHRhMzogJ0EzJyxcblx0XHRcdG8xOiAnTzEnLFxuXHRcdFx0bzI6ICdPMicsXG5cdFx0XHRvMzogJ08zJyxcblx0XHRcdGYxOiAnRjEnLFxuXHRcdFx0ZjI6ICdGMicsXG5cdFx0XHRmMzogJ0YzJyxcblx0XHRcdGY0OiAnRjQnLFxuXHRcdFx0ZjU6ICdGNScsXG5cdFx0XHRyMTogJ1IxJyxcblx0XHRcdHIyOiAnUjInLFxuXHRcdH0sXG5cdFx0Y3NkQ3JpdGVyaWFEaXNwbGF5T3JkZXI6IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQnbzEnLFxuXHRcdFx0J28yJyxcblx0XHRcdCdvMycsXG5cdFx0XHQnZjEnLFxuXHRcdFx0J2YyJyxcblx0XHRcdCdmMycsXG5cdFx0XHQnZjQnLFxuXHRcdFx0J2Y1Jyxcblx0XHRcdCdyMScsXG5cdFx0XHQncjInLFxuXHRcdF0sXG5cdFx0Y3NkQ3JpdGVyaWFOb3RpZmljYXRpb246IHtcblx0XHRcdGRiOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdGcxOiAnRzEnLFxuXHRcdFx0ZzI6ICdHMicsXG5cdFx0XHRnMzogJ0czJyxcblx0XHRcdGc0OiAnRzQnLFxuXHRcdFx0ZzU6ICdHNScsXG5cdFx0XHRnNjogJ0c2Jyxcblx0XHRcdGc3OiAnRzcnLFxuXHRcdFx0Zzg6ICdHOCcsXG5cdFx0XHRnOTogJ0c5Jyxcblx0XHRcdGExOiAnQTEnLFxuXHRcdFx0YTI6ICdBMicsXG5cdFx0XHRhMzogJ0EzJyxcblx0XHRcdG8xOiAnTzEnLFxuXHRcdFx0bzI6ICdPMicsXG5cdFx0XHRvMzogJ08zJyxcblx0XHRcdGYxOiAnRjEnLFxuXHRcdFx0ZjI6ICdGMicsXG5cdFx0XHRmMzogJ0YzJyxcblx0XHRcdGY0OiAnRjQnLFxuXHRcdFx0ZjU6ICdGNScsXG5cdFx0XHRyMTogJ1IxJyxcblx0XHRcdHIyOiAnUjInLFxuXHRcdH0sXG5cdFx0Y3NkQ3JpdGVyaWFOb3RpZmljYXRpb25EaXNwbGF5T3JkZXI6IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQnbzEnLFxuXHRcdFx0J28yJyxcblx0XHRcdCdvMycsXG5cdFx0XHQnZjEnLFxuXHRcdFx0J2YyJyxcblx0XHRcdCdmMycsXG5cdFx0XHQnZjQnLFxuXHRcdFx0J2Y1Jyxcblx0XHRcdCdyMScsXG5cdFx0XHQncjInLFxuXHRcdF0sXG5cdFx0Y3NkQW5kRElDcml0ZXJpYToge1xuXHRcdFx0ZGI6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ55CG55SxJywgJ+iHquiogueQhueUsScpLFxuXHRcdFx0ZzE6ICdHMScsXG5cdFx0XHRnMjogJ0cyJyxcblx0XHRcdGczOiAnRzMnLFxuXHRcdFx0ZzQ6ICdHNCcsXG5cdFx0XHRnNTogJ0c1Jyxcblx0XHRcdGc2OiAnRzYnLFxuXHRcdFx0Zzc6ICdHNycsXG5cdFx0XHRnODogJ0c4Jyxcblx0XHRcdGc5OiAnRzknLFxuXHRcdFx0YTE6ICdBMScsXG5cdFx0XHRhMjogJ0EyJyxcblx0XHRcdGEzOiAnQTMnLFxuXHRcdFx0bzE6ICdPMScsXG5cdFx0XHRvMjogJ08yJyxcblx0XHRcdG8zOiAnTzMnLFxuXHRcdFx0ZjE6ICdGMScsXG5cdFx0XHRmMjogJ0YyJyxcblx0XHRcdGYzOiAnRjMnLFxuXHRcdFx0ZjQ6ICdGNCcsXG5cdFx0XHRmNTogJ0Y1Jyxcblx0XHRcdHIxOiAnUjEnLFxuXHRcdFx0cjI6ICdSMicsXG5cdFx0fSxcblx0XHRjc2RBbmRESUNyaXRlcmlhRGlzcGxheU9yZGVyOiBbXG5cdFx0XHQnZGInLFxuXHRcdFx0J2cxJyxcblx0XHRcdCdnMicsXG5cdFx0XHQnZzMnLFxuXHRcdFx0J2c0Jyxcblx0XHRcdCdnNScsXG5cdFx0XHQnZzYnLFxuXHRcdFx0J2c3Jyxcblx0XHRcdCdnOCcsXG5cdFx0XHQnZzknLFxuXHRcdFx0J2ExJyxcblx0XHRcdCdhMicsXG5cdFx0XHQnYTMnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdFx0J2YxJyxcblx0XHRcdCdmMicsXG5cdFx0XHQnZjMnLFxuXHRcdFx0J2Y0Jyxcblx0XHRcdCdmNScsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRdLFxuXHRcdHhmZENyaXRlcmlhOiB7XG5cdFx0XHRkZWxldGU6IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpLFxuXHRcdFx0bWVyZ2U6IHdpbmRvdy53Z1VMUygn5ZCI5bm2JywgJ+WQiOS9tScpLFxuXHRcdFx0ZndkY3NkOiB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKSxcblx0XHRcdGZhbWU6IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpLFxuXHRcdFx0c3Vic3R1Yjogd2luZG93LndnVUxTKCfmibnph4/lsI/lsI/kvZzlk4Hmj5DliKAnLCAn5om55qyh5bCP5bCP5L2c5ZOB5o+Q5YiqJyksXG5cdFx0XHRiYXRjaDogd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyksXG5cdFx0fSxcblx0XHR4ZmRDcml0ZXJpYURpc3BsYXlPcmRlcjogWydkZWxldGUnLCAnbWVyZ2UnLCAnZndkY3NkJywgJ2ZhbWUnLCAnc3Vic3R1YicsICdiYXRjaCddLFxuXHRcdG5hbWVzcGFjZXNOb1NwZWNpYWw6IHtcblx0XHRcdDA6IHdpbmRvdy53Z1VMUygn77yI5p2h55uu77yJJywgJ++8iOaineebru+8iScpLFxuXHRcdFx0MTogJ1RhbGsnLFxuXHRcdFx0MjogJ1VzZXInLFxuXHRcdFx0MzogJ1VzZXIgdGFsaycsXG5cdFx0XHQ0OiAnUWl1d2VuJyxcblx0XHRcdDU6ICdRaXV3ZW4gdGFsaycsXG5cdFx0XHQ2OiAnRmlsZScsXG5cdFx0XHQ3OiAnRmlsZSB0YWxrJyxcblx0XHRcdDg6ICdNZWRpYVdpa2knLFxuXHRcdFx0OTogJ01lZGlhV2lraSB0YWxrJyxcblx0XHRcdDEwOiAnVGVtcGxhdGUnLFxuXHRcdFx0MTE6ICdUZW1wbGF0ZSB0YWxrJyxcblx0XHRcdDEyOiAnSGVscCcsXG5cdFx0XHQxMzogJ0hlbHAgdGFsaycsXG5cdFx0XHQxNDogJ0NhdGVnb3J5Jyxcblx0XHRcdDE1OiAnQ2F0ZWdvcnkgdGFsaycsXG5cdFx0XHQxMTg6ICdEcmFmdCcsXG5cdFx0XHQxMTk6ICdEcmFmdCB0YWxrJyxcblx0XHRcdDIwNDogJ05FQScsXG5cdFx0XHQyMDU6ICdORUEgdGFsaycsXG5cdFx0XHQyMDY6ICdBZGRlbmR1bScsXG5cdFx0XHQyMDc6ICdBZGRlbmR1bSB0YWxrJyxcblx0XHRcdDgyODogJ01vZHVsZScsXG5cdFx0XHQ4Mjk6ICdNb2R1bGUgdGFsaycsXG5cdFx0fSxcblx0fTtcblx0LyoqXG5cdCAqIFNlY3Rpb24gZW50cnkgZm9ybWF0OlxuXHQgKlxuXHQgKiB7XG5cdCAqICAgdGl0bGU6IDxodW1hbi1yZWFkYWJsZSBzZWN0aW9uIHRpdGxlPixcblx0ICogICBtb2R1bGU6IDxuYW1lIG9mIHRoZSBhc3NvY2lhdGVkIG1vZHVsZSwgdXNlZCB0byBsaW5rIHRvIHNlY3Rpb25zPixcblx0ICogICBhZG1pbk9ubHk6IDx0cnVlIGZvciBhZG1pbi1vbmx5IHNlY3Rpb25zPixcblx0ICogICBoaWRkZW46IDx0cnVlIGZvciBhZHZhbmNlZCBwcmVmZXJlbmNlcyB0aGF0IHJhcmVseSBuZWVkIHRvIGJlIGNoYW5nZWQgLSB0aGV5IGNhbiBzdGlsbCBiZSBtb2RpZmllZCBieSBtYW51YWxseSBlZGl0aW5nIHR3aW5rbGVvcHRpb25zLmpzPixcblx0ICogICBwcmVmZXJlbmNlczogW1xuXHQgKiAgICAge1xuXHQgKiAgICAgICBuYW1lOiA8VHdpbmtsZUNvbmZpZyBwcm9wZXJ0eSBuYW1lPixcblx0ICogICAgICAgbGFiZWw6IDxodW1hbi1yZWFkYWJsZSBzaG9ydCBkZXNjcmlwdGlvbiAtIHVzZWQgYXMgYSBmb3JtIGxhYmVsPixcblx0ICogICAgICAgaGVscHRpcDogPChvcHRpb25hbCkgaHVtYW4tcmVhZGFibGUgdGV4dCAodXNpbmcgdmFsaWQgSFRNTCkgdGhhdCBjb21wbGVtZW50cyB0aGUgZGVzY3JpcHRpb24sIGxpa2UgbGltaXRzLCB3YXJuaW5ncywgZXRjLj5cblx0ICogICAgICAgYWRtaW5Pbmx5OiA8dHJ1ZSBmb3IgYWRtaW4tb25seSBwcmVmZXJlbmNlcz4sXG5cdCAqICAgICAgIHR5cGU6IDxzdHJpbmd8Ym9vbGVhbnxpbnRlZ2VyfGVudW18c2V0fGN1c3RvbUxpc3Q+IChjdXN0b21MaXN0IHN0b3JlcyBhbiBhcnJheSBvZiBKU09OIG9iamVjdHMgeyB2YWx1ZSwgbGFiZWwgfSksXG5cdCAqICAgICAgIGVudW1WYWx1ZXM6IDxmb3IgdHlwZSA9IFwiZW51bVwiOiBhIEpTT04gb2JqZWN0IHdoZXJlIHRoZSBrZXlzIGFyZSB0aGUgaW50ZXJuYWwgbmFtZXMgYW5kIHRoZSB2YWx1ZXMgYXJlIGh1bWFuLXJlYWRhYmxlIHN0cmluZ3M+LFxuXHQgKiAgICAgICBzZXRWYWx1ZXM6IDxmb3IgdHlwZSA9IFwic2V0XCI6IGEgSlNPTiBvYmplY3Qgd2hlcmUgdGhlIGtleXMgYXJlIHRoZSBpbnRlcm5hbCBuYW1lcyBhbmQgdGhlIHZhbHVlcyBhcmUgaHVtYW4tcmVhZGFibGUgc3RyaW5ncz4sXG5cdCAqICAgICAgIHNldERpc3BsYXlPcmRlcjogPChvcHRpb25hbCkgZm9yIHR5cGUgPSBcInNldFwiOiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBrZXlzIG9mIHNldFZhbHVlcyAoYXMgc3RyaW5ncykgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUgZGlzcGxheWVkPixcblx0ICogICAgICAgY3VzdG9tTGlzdFZhbHVlVGl0bGU6IDxmb3IgdHlwZSA9IFwiY3VzdG9tTGlzdFwiOiB0aGUgaGVhZGluZyBmb3IgdGhlIGxlZnQgXCJ2YWx1ZVwiIGNvbHVtbiBpbiB0aGUgY3VzdG9tIGxpc3QgZWRpdG9yPixcblx0ICogICAgICAgY3VzdG9tTGlzdExhYmVsVGl0bGU6IDxmb3IgdHlwZSA9IFwiY3VzdG9tTGlzdFwiOiB0aGUgaGVhZGluZyBmb3IgdGhlIHJpZ2h0IFwibGFiZWxcIiBjb2x1bW4gaW4gdGhlIGN1c3RvbSBsaXN0IGVkaXRvcj5cblx0ICogICAgIH0sXG5cdCAqICAgICAuIC4gLlxuXHQgKiAgIF1cblx0ICogfSxcblx0ICogLiAuIC5cblx0ICpcblx0ICovXG5cdFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zID0gW1xuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+W4uOinhCcsICfluLjopo8nKSxcblx0XHRcdG1vZHVsZTogJ2dlbmVyYWwnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy51c2VyVGFsa1BhZ2VNb2RlIG1heSB0YWtlIGFyZ3VtZW50czpcblx0XHRcdFx0Ly8gJ3dpbmRvdyc6IG9wZW4gYSBuZXcgd2luZG93LCByZW1lbWJlciB0aGUgb3BlbmVkIHdpbmRvd1xuXHRcdFx0XHQvLyAndGFiJzogb3BlbnMgaW4gYSBuZXcgdGFiLCBpZiBwb3NzaWJsZS5cblx0XHRcdFx0Ly8gJ2JsYW5rJzogZm9yY2Ugb3BlbiBpbiBhIG5ldyB3aW5kb3csIGV2ZW4gaWYgc3VjaCBhIHdpbmRvdyBleGlzdHNcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd1c2VyVGFsa1BhZ2VNb2RlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPopoHmiZPlvIDnlKjmiLforqjorrrpobXml7YnLCAn55W26KaB5omT6ZaL5L2/55So6ICF6KiO6KuW6aCB5pmCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdHdpbmRvdzogd2luZG93LndnVUxTKCflnKjnqpflj6PkuK3vvIzmm7/mjaLmiJDlhbblroPnlKjmiLflr7nor53pobUnLCAn5Zyo55W25YmN5YiG6aCB77yM5pu/5o+b5oiQ5YW25a6D55So5oi26KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHR0YWI6IHdpbmRvdy53Z1VMUygn5Zyo5paw5qCH562+6aG15LitJywgJ+WcqOaWsOWIhumggeS4rScpLFxuXHRcdFx0XHRcdFx0Ymxhbms6IHdpbmRvdy53Z1VMUygn5Zyo5YWo5paw55qE56qX5Y+j5LitJywgJ+WcqOaWsOimlueql+S4rScpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGlhbG9nTGFyZ2VGb250IChib29sZWFuKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RpYWxvZ0xhcmdlRm9udCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZyoVHdpbmtsZeWvueivneahhuS4reS9v+eUqOWkp+WPt+Wtl+S9kycsICflnKhUd2lua2xl5bCN6Kmx5pa55aGK5Lit5L2/55So5aSn6Jmf5a2X5Z6LJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlLmNvbmZpZy5kaXNhYmxlZE1vZHVsZXMgKGFycmF5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2Rpc2FibGVkTW9kdWxlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWz6Zet5oyH5a6a55qEVHdpbmtsZeaooeWdlycsICfpl5zplonmjIflrprnmoRUd2lua2xl5qih57WEJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOWcqOatpOmAieaLqeeahOWKn+iDveWwhuaXoOazleS9v+eUqO+8jOWPlua2iOmAieaLqeS7pemHjeaWsOWQr+eUqOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Zyo5q2k6YG45pOH55qE5Yqf6IO95bCH54Sh5rOV5L2/55So77yM5Y+W5raI6YG45pOH5Lul6YeN5paw5ZWf55So5Yqf6IO944CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRhcnY6IHdpbmRvdy53Z1VMUygn5ZGK54q2JywgJ+WRiueLgCcpLFxuXHRcdFx0XHRcdFx0d2FybjogJ+itpuWRiicsXG5cdFx0XHRcdFx0XHRibG9jazogd2luZG93LndnVUxTKCflsIHnpoEnLCAn5bCB6Y6WJyksXG5cdFx0XHRcdFx0XHR0YWxrYmFjazogJ+mAmuWRiicsXG5cdFx0XHRcdFx0XHRzcGVlZHk6IHdpbmRvdy53Z1VMUygn6YCf5YigJywgJ+mAn+WIqicpLFxuXHRcdFx0XHRcdFx0Y29weXZpbzogd2luZG93LndnVUxTKCfkvrXmnYMnLCAn5L615qyKJyksXG5cdFx0XHRcdFx0XHR4ZmQ6IHdpbmRvdy53Z1VMUygn5o+Q5YigJywgJ+aPkOWIqicpLFxuXHRcdFx0XHRcdFx0aW1hZ2U6IHdpbmRvdy53Z1VMUygn5Zu+5p2DJywgJ+WcluasiicpLFxuXHRcdFx0XHRcdFx0cHJvdGVjdDogd2luZG93LndnVUxTKCfkv53miqQnLCAn5L+d6K23JyksXG5cdFx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpLFxuXHRcdFx0XHRcdFx0c3R1YjogJ+Wwj+S9nOWTgScsXG5cdFx0XHRcdFx0XHRkaWZmOiB3aW5kb3cud2dVTFMoJ+W3ruW8gicsICflt67nlbAnKSxcblx0XHRcdFx0XHRcdHVubGluazogd2luZG93LndnVUxTKCfpk77lhaUnLCAn6YCj5YWlJyksXG5cdFx0XHRcdFx0XHRmbHVmZjogJ+WbnumAgCcsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZS5jb25maWcuZGlzYWJsZWRTeXNvcE1vZHVsZXMgKGFycmF5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2Rpc2FibGVkU3lzb3BNb2R1bGVzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhbPpl63mjIflrprnmoRUd2lua2xl566h55CG5ZGY5qih5Z2XJywgJ+mXnOmWieaMh+WumueahFR3aW5rbGXnrqHnkIblk6HmqKHntYQnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Zyo5q2k6YCJ5oup55qE5Yqf6IO95bCG5peg5rOV5L2/55So77yM5Y+W5raI6YCJ5oup5Lul6YeN5paw5ZCv55So5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCfmgqjlnKjmraTpgbjmk4fnmoTlip/og73lsIfnhKHms5Xkvb/nlKjvvIzlj5bmtojpgbjmk4fku6Xph43mlrDllZ/nlKjlip/og73jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRiYXRjaGRlbGV0ZTogd2luZG93LndnVUxTKCfmibnliKAnLCAn5om55YiqJyksXG5cdFx0XHRcdFx0XHRiYXRjaHVuZGVsZXRlOiB3aW5kb3cud2dVTFMoJ+aJueWkjScsICfmibnlvqknKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WRiueKticsICflkYrni4AnKSxcblx0XHRcdG1vZHVsZTogJ2FydicsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3NwaVdhdGNoUmVwb3J0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5HotbflgoDlhKHosIPmn6Xml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn55m86LW35YKA5YSh6Kq/5p+l5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WwgeemgeeUqOaItycsICflsIHpjpbkvb/nlKjogIUnKSxcblx0XHRcdG1vZHVsZTogJ2Jsb2NrJyxcblx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFRvQmxvY2s2NCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gV2hldGhlciB0byBkZWZhdWx0IHRvIGp1c3QgYmxvY2tpbmcgdGhlIC82NCBvbiBvciBvZmZcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkZWZhdWx0VG9CbG9jazY0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflr7nkuo5JUHY25Zyw5Z2A77yM6buY6K6k6YCJ5oup5bCB56aBLzY05q61JywgJ+WwjeaWvElQdjblnLDlnYDvvIzpoJDoqK3pgbjmk4flsIHpjpYvNjTmrrUnKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFRvUGFydGlhbEJsb2NrcyAoYm9vbGVhbilcblx0XHRcdFx0Ly8gV2hldGhlciB0byBkZWZhdWx0IHBhcnRpYWwgYmxvY2tzIG9uIG9yIG9mZlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RlZmF1bHRUb1BhcnRpYWxCbG9ja3MnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aJk+W8gOWwgeemgeiPnOWNleaXtum7mOiupOmAieaLqemDqOWIhuWwgeemgScsICfmiZPplovlsIHpjpbpgbjllq7mmYLpoJDoqK3pgbjmk4fpg6jliIblsIHpjpYnKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hCbG9ja05vdGljZXMgKHN0cmluZylcblx0XHRcdFx0Ly8gV2F0Y2hsaXN0IHNldHRpbmcgZm9yIHRoZSBwYWdlIHdoaWNoIGhhcyBiZWVuIGRpc3BhdGNoZWQgYW4gd2FybmluZyBvciBub3RpY2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaEJsb2NrTm90aWNlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflj5HpgIHlsIHnpoHmqKHmnb/ml7bliqDlhaXnlKjmiLforqjorrrpobXliLDnm5Hop4bliJfooagnLFxuXHRcdFx0XHRcdFx0J+eZvOmAgeWwgemOluaooeadv+aZguWKoOWFpeS9v+eUqOiAheiojuirlumggeWIsOebo+imlua4heWWridcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjdXN0b21CbG9ja1JlYXNvbkxpc3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieWwgeemgeeQhueUsScsICfoh6roqILlsIHpjpbnkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5Yqg5YWl5bi455So55qE5bCB56aB55CG55Sx44CC6Ieq5a6a5LmJ55qE5bCB56aB55CG55Sx5Lya5Ye6546w5Zyo5LiA6Iis55qE5bCB56aB55CG55Sx5LiL5pa544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XliqDlhaXluLjnlKjnmoTlsIHpjpbnkIbnlLHjgILoh6roqILnmoTlsIHpjpbnkIbnlLHmnIPlh7rnj77lnKjkuIDoiKznmoTlsIHpjpbnkIbnlLHkuIvmlrnjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkvb/nlKjlsIHnpoHmqKHmnb/vvIjpu5jorqTkuLogdXctYmxvY2sx77yJJyxcblx0XHRcdFx0XHRcdCfkvb/nlKjlsIHpjpbmqKHmnb/vvIjpoJDoqK3ngrogdXctYmxvY2sx77yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfigJznlLHkuo7igKbmgqjlt7LooqvlsIHnpoHigJ3lj4rlsIHnpoHml6Xlv5fnkIbnlLEnLFxuXHRcdFx0XHRcdFx0J+OAjOeUseaWvOKApuaCqOW3suiiq+WwgemOluOAjeWPiuWwgemOluaXpeiqjOeQhueUsSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WbvueJh+WIoOmZpCcsICflnJbniYfliKrpmaQnKSxcblx0XHRcdG1vZHVsZTogJ2ltYWdlJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubm90aWZ5VXNlck9uRGVsaSAoYm9vbGVhbilcblx0XHRcdFx0Ly8gSWYgdGhlIHVzZXIgc2hvdWxkIGJlIG5vdGlmaWVkIGFmdGVyIHBsYWNpbmcgYSBmaWxlIGRlbGV0aW9uIHRhZ1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ25vdGlmeVVzZXJPbkRlbGknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWLvumAieKAnOmAmuefpeWIm+W7uuiAheKAnScsICfpoJDoqK3li77pgbjjgIzpgJrnn6Xlu7rnq4vogIXjgI0nKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVsaVdhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgdGFnZ2VkIGZvciBkZWxldGlvbi5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkZWxpV2F0Y2hQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDlm77niYfml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5ZyW54mH5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlbGlXYXRjaFVzZXIgKHN0cmluZylcblx0XHRcdFx0Ly8gVGhlIHdhdGNobGlzdCBzZXR0aW5nIG9mIHRoZSB1c2VyIHRhbGsgcGFnZSBpZiBhIG5vdGlmaWNhdGlvbiBpcyBwbGFjZWQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsaVdhdGNoVXNlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5Zu+54mH5pe25Yqg5YWl5Yib5bu66ICF6K6o6K666aG15Yiw55uR6KeG5YiX6KGoJywgJ+aomeiomOWclueJh+aZguWKoOWFpeW7uueri+iAheiojuirlumggeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfkv53miqQnLCAn5L+d6K23JyksXG5cdFx0XHRtb2R1bGU6ICdwcm90ZWN0Jyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hSZXF1ZXN0ZWRQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2i5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+iri+axguS/neitt+mggemdouaZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFBQVGFnZ2VkUGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOS/neaKpOaooeadv+aXtuWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfmqJnoqJjkv53orbfmqKHmnb/mmYLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hQcm90ZWN0ZWRQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+d5oqk5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+S/neitt+aZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XlnKjkv53miqTlkI7kuZ/moIforrDpobXpnaLvvIzliJnkvb/nlKjmoIforrDpobXpnaLnmoTlj4LmlbDorr7nva7jgIInLFxuXHRcdFx0XHRcdFx0J+iLpeWcqOS/neitt+W+jOS5n+aomeiomOmggemdou+8jOWJh+S9v+eUqOaomeiomOmggemdoueahOWBj+WlveioreWumuOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6ICflm57pgIAnLFxuXHRcdFx0Ly8gdHdpbmtsZWZsdWZmIG1vZHVsZVxuXHRcdFx0bW9kdWxlOiAnZmx1ZmYnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5hdXRvTWVudUFmdGVyUm9sbGJhY2sgKGJvb2wpXG5cdFx0XHRcdC8vIE9wdGlvbiB0byBhdXRvbWF0aWNhbGx5IG9wZW4gdGhlIHdhcm5pbmcgbWVudSBpZiB0aGUgdXNlciB0YWxrIHBhZ2UgaXMgb3BlbmVkIHBvc3QtcmV2ZXJzaW9uXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYXV0b01lbnVBZnRlclJvbGxiYWNrJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqFR3aW5rbGXlm57pgIDlkI7oh6rliqjmiZPlvIDnlKjmiLforqjorrrpobXkuIrnmoRUd2lua2xl6K2m5ZGK6I+c5Y2VJyxcblx0XHRcdFx0XHRcdCflnKhUd2lua2xl5Zue6YCA5b6M6Ieq5YuV5omT6ZaL5L2/55So6ICF6KiO6KuW6aCB5LiK55qEVHdpbmtsZeitpuWRiumBuOWWridcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5LuF5Zyo6YCJ5Y+W5LiL5pa55a+55bqU5qGG5pe25omN5omn6KGMJywgJ+WDheWcqOmBuOWPluS4i+aWueWwjeaHieahhuaZguaJjeWft+ihjCcpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5vcGVuVGFsa1BhZ2UgKGFycmF5KVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IGluIG9wZW5pbmcgb2YgdGFsayBwYWdlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnb3BlblRhbGtQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjov5nkupvnsbvlnovnmoTlm57pgIDlkI7miZPlvIDnlKjmiLforqjorrrpobUnLCAn5Zyo6YCZ5Lqb6aGe5Yil55qE5Zue6YCA5b6M5omT6ZaL5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRub3JtOiB3aW5kb3cud2dVTFMoJ+W4uOinhOWbnumAgCcsICfluLjopo/lm57pgIAnKSxcblx0XHRcdFx0XHRcdHZhbmQ6IHdpbmRvdy53Z1VMUygn56C05Z2P5Zue6YCAJywgJ+egtOWjnuWbnumAgCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcub3BlblRhbGtQYWdlT25BdXRvUmV2ZXJ0IChib29sKVxuXHRcdFx0XHQvLyBEZWZpbmVzIGlmIHRhbGsgcGFnZSBzaG91bGQgYmUgb3BlbmVkIHdoZW4gY2FsbGluZyByZXZlcnQgZnJvbSBjb250cmlicyBvciByZWNlbnQgY2hhbmdlcyBwYWdlcy4gSWYgc2V0IHRvIHRydWUsIG9wZW5UYWxrUGFnZSBkZWZpbmVzIHRoZW4gaWYgdGFsayBwYWdlIHdpbGwgYmUgb3BlbmVkLlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29wZW5UYWxrUGFnZU9uQXV0b1JldmVydCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjku47nlKjmiLfotKHnjK7lj4rmnIDov5Hmm7TmlLnkuK3lj5Hotbflm57pgIDml7bmiZPlvIDnlKjmiLforqjorrrpobUnLFxuXHRcdFx0XHRcdFx0J+WcqOW+nuS9v+eUqOiAheiyoueNu+WPiui/keacn+iuiuabtOS4reeZvOi1t+WbnumAgOaZguaJk+mWi+S9v+eUqOiAheiojuirlumggSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5b2T5a6D5omT5byA5pe277yM5L6d6LWW5LiK5LiA5Liq6K6+572u44CCJywgJ+eVtuWug+aJk+mWi+aZgu+8jOS+neiztOS4iuS4gOWAi+ioreWumuOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5yb2xsYmFja0luUGxhY2UgKGJvb2wpXG5cdFx0XHRcdC8vXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncm9sbGJhY2tJblBsYWNlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqOS7jueUqOaIt+i0oeeMruWPiuacgOi/keabtOaUueS4reWPkei1t+WbnumAgOaXtuS4jeWIt+aWsOmhtemdoicsXG5cdFx0XHRcdFx0XHQn5Zyo5b6e5L2/55So6ICF6LKi54275Y+K6L+R5pyf6K6K5pu05Lit55m86LW35Zue6YCA5pmC5LiN6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+W9k+Wug+aJk+W8gOaXtu+8jFR3aW5rbGXlsIbkuI3kvJrlnKjku47nlKjmiLfotKHnjK7lj4rmnIDov5Hmm7TmlLnkuK3lj5Hotbflm57pgIDml7bliLfmlrDpobXpnaLvvIzlhYHorrjmgqjkuIDmrKHmgKflm57pgIDlpJrkuKrnvJbovpHjgIInLFxuXHRcdFx0XHRcdFx0J+eVtuWug+aJk+mWi+aZgu+8jFR3aW5rbGXlsIfkuI3mnIPlnKjlvp7kvb/nlKjogIXosqLnjbvlj4rov5HmnJ/orormm7TkuK3nmbzotbflm57pgIDmmYLph43mlrDmlbTnkIbpoIHpnaLvvIzlhYHoqLHmgqjkuIDmrKHmgKflm57pgIDlpJrlgIvnt6jovK/jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubWFya1JldmVydGVkUGFnZXNBc01pbm9yIChhcnJheSlcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIHJlc3VsdCBpbiBtYXJraW5nIGVkaXQgYXMgbWlub3Jcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3InLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+Wwhui/meS6m+exu+Wei+eahOWbnumAgOagh+iusOS4uuWwj+S/ruaUuScsICflsIfpgJnkupvpoZ7liKXnmoTlm57pgIDmqJnoqJjngrrlsI/kv67mlLknKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdG5vcm06IHdpbmRvdy53Z1VMUygn5bi46KeE5Zue6YCAJywgJ+W4uOimj+WbnumAgCcpLFxuXHRcdFx0XHRcdFx0dmFuZDogd2luZG93LndnVUxTKCfnoLTlnY/lm57pgIAnLCAn56C05aOe5Zue6YCAJyksXG5cdFx0XHRcdFx0XHR0b3Jldjogd2luZG93LndnVUxTKCfigJzmgaLlpI3mraTniYjmnKzigJ0nLCAn44CM5oGi5b6p5q2k54mI5pys44CNJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy53YXRjaFJldmVydGVkUGFnZXMgKGFycmF5KVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IGluIGZvcmNlZCBhZGRpdGlvbiB0byB3YXRjaGxpc3Rcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFJldmVydGVkUGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aKiui/meS6m+exu+Wei+eahOWbnumAgOWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfmiorpgJnkupvpoZ7liKXnmoTlm57pgIDliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdG5vcm06IHdpbmRvdy53Z1VMUygn5bi46KeE5Zue6YCAJywgJ+W4uOimj+WbnumAgCcpLFxuXHRcdFx0XHRcdFx0dmFuZDogd2luZG93LndnVUxTKCfnoLTlnY/lm57pgIAnLCAn56C05aOe5Zue6YCAJyksXG5cdFx0XHRcdFx0XHR0b3Jldjogd2luZG93LndnVUxTKCfigJzmgaLlpI3mraTniYjmnKzigJ0nLCAn44CM5oGi5b6p5q2k54mI5pys44CNJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy53YXRjaFJldmVydGVkRXhwaXJ5XG5cdFx0XHRcdC8vIElmIGFueSBvZiB0aGUgYWJvdmUgaXRlbXMgYXJlIHNlbGVjdGVkLCB3aGV0aGVyIHRvIGV4cGlyZSB0aGUgd2F0Y2hcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFJldmVydGVkRXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPlm57pgIDpobXpnaLml7bvvIzliqDlhaXliLDnm5Hop4bliJfooajnmoTmnJ/pmZAnLCAn55W25Zue6YCA6aCB6Z2i5pmC77yM5Yqg5YWl5Yiw55uj6KaW5riF5Zau55qE5pyf6ZmQJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm9mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQgKGJvb2xlYW4pXG5cdFx0XHRcdC8vIElmIHRvIG9mZmVyIGEgcHJvbXB0IGZvciBleHRyYSBzdW1tYXJ5IHJlYXNvbiBmb3Igbm9ybWFsIHJldmVydHMsIGRlZmF1bHQgdG8gdHJ1ZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29mZmVyUmVhc29uT25Ob3JtYWxSZXZlcnQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhOWbnumAgOaXtuivoumXrueQhueUsScsICfluLjopo/lm57pgIDmmYLoqaLllY/nkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+KAnOW4uOinhOKAneWbnumAgOaYr+S4remXtOeahOmCo+S4qlvlm57pgIBd6ZO+5o6l44CCJywgJ+OAjOW4uOimj+OAjeWbnumAgOaYr+S4remWk+eahOmCo+WAi1vlm57pgIBd6YCj57WQ44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2NvbmZpcm1PbkZsdWZmJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm57pgIDliY3opoHmsYLnoa7orqTvvIjmiYDmnInorr7lpIfvvIknLCAn5Zue6YCA5YmN6KaB5rGC56K66KqN77yI5omA5pyJ6KOd572u77yJJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WvueS6juS9v+eUqOenu+WKqOiuvuWkh+eahOeUqOaIt++8jOaIluiAheaEj+W/l+S4jeWdmuWumueahOOAgicsXG5cdFx0XHRcdFx0XHQn5bCN5pa85L2/55So6KGM5YuV6KOd572u55qE5L2/55So6ICF77yM5oiW6ICF5oSP5b+X5LiN5aCF5a6a55qE44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnNob3dSb2xsYmFja0xpbmtzIChhcnJheSlcblx0XHRcdFx0Ly8gV2hlcmUgVHdpbmtsZSBzaG91bGQgc2hvdyByb2xsYmFjayBsaW5rczpcblx0XHRcdFx0Ly8gZGlmZiwgb3RoZXJzLCBtaW5lLCBjb250cmlicywgaGlzdG9yeSwgcmVjZW50XG5cdFx0XHRcdC8vIE5vdGUgZnJvbSBUVE86IHxjb250cmlic3wgc2VlbXMgdG8gYmUgZXF1YWwgdG8gfG90aGVyc3wgKyB8bWluZXwsIGkuZS4gcmVkdW5kYW50LCBzbyBJIGxlZnQgaXQgb3V0IGhlcmVzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc2hvd1JvbGxiYWNrTGlua3MnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOi/meS6m+mhtemdouS4iuaYvuekuuWbnumAgOmTvuaOpScsICflnKjpgJnkupvpoIHpnaLkuIrpoa/npLrlm57pgIDpgKPntZAnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGRpZmY6IHdpbmRvdy53Z1VMUygn5beu5byCJywgJ+W3rueVsCcpLFxuXHRcdFx0XHRcdFx0aGlzdG9yeTogd2luZG93LndnVUxTKCfljoblj7LorrDlvZUnLCAn5q235Y+y6KiY6YyEJyksXG5cdFx0XHRcdFx0XHRvdGhlcnM6IHdpbmRvdy53Z1VMUygn5YW25a6D55So5oi355qE6LSh54yuJywgJ+WFtuWug+S9v+eUqOiAheeahOiyoueNuycpLFxuXHRcdFx0XHRcdFx0bWluZTogd2luZG93LndnVUxTKCfmiJHnmoTotKHnjK4nLCAn5oiR55qE6LKi5427JyksXG5cdFx0XHRcdFx0XHRyZWNlbnRjaGFuZ2VzOiB3aW5kb3cud2dVTFMoJ+acgOi/keabtOaUuScsICfov5HmnJ/orormm7QnKSxcblx0XHRcdFx0XHRcdHJlY2VudGNoYW5nZXNsaW5rZWQ6IHdpbmRvdy53Z1VMUygn55u45YWz5pu05pS5JywgJ+ebuOmXnOiuiuabtCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tUmV2ZXJ0U3VtbWFyeScsXG5cdFx0XHRcdFx0bGFiZWw6ICflm57pgIDnkIbnlLEnLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjmn6XnnIvlt67lvILml7blj6/pgInvvIzku4XlloTmhI/lm57pgIDjgIHluLjop4Tlm57pgIDjgIHmgaLlpI3mraTniYjmnKwnLFxuXHRcdFx0XHRcdFx0J+WcqOaqouimluW3rueVsOaZguWPr+mBuO+8jOWDheWWhOaEj+WbnumAgOOAgeW4uOimj+WbnumAgOOAgeaBouW+qeatpOeJiOacrCdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogJ+eQhueUsScsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2XJywgJ+mhr+ekuueahOaWh+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpCcsICflv6vpgJ/liKrpmaQnKSxcblx0XHRcdG1vZHVsZTogJ3NwZWVkeScsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3NwZWVkeVNlbGVjdGlvblN0eWxlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4DkuYjml7blgJnmiafooYzmoIforrDmiJbliKDpmaQnLCAn5LuA6bq85pmC5YCZ5Z+36KGM5qiZ6KiY5oiW5Yiq6ZmkJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGJ1dHRvbkNsaWNrOiB3aW5kb3cud2dVTFMoJ+W9k+aIkeeCueKAnOaPkOS6pOKAneaXticsICfnlbbmiJHpu57jgIzmj5DkuqTjgI3mmYInKSxcblx0XHRcdFx0XHRcdHJhZGlvQ2xpY2s6IHdpbmRvdy53Z1VMUygn5b2T5oiR54K55LiA5Liq6YCJ6aG55pe2JywgJ+eVtuaIkem7nuS4gOWAi+mBuOmgheaZgicpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hTcGVlZHlQYWdlcyAoYXJyYXkpXG5cdFx0XHRcdC8vIFdoZXRoZXIgdG8gYWRkIHNwZWVkeSB0YWdnZWQgcGFnZXMgdG8gd2F0Y2hsaXN0XG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hTcGVlZHlQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5Lul5LiL55CG55Sx5Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+Wwh+S7peS4i+eQhueUseWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdzZXQnLFxuXHRcdFx0XHRcdHNldFZhbHVlczogVHdpbmtsZS5jb25maWcuY29tbW9uU2V0cy5jc2RDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQ3JpdGVyaWFEaXNwbGF5T3JkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hTcGVlZHlFeHBpcnlcblx0XHRcdFx0Ly8gSWYgYW55IG9mIHRoZSBhYm92ZSBpdGVtcyBhcmUgc2VsZWN0ZWQsIHdoZXRoZXIgdG8gZXhwaXJlIHRoZSB3YXRjaFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoU3BlZWR5RXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPmoIforrDpobXpnaLml7bvvIzliqDlhaXliLDnm5Hop4bliJfooajnmoTmnJ/pmZAnLCAn55W25qiZ6KiY6aCB6Z2i5pmC77yM5Yqg5YWl5Yiw55uj6KaW5riF5Zau55qE5pyf6ZmQJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm1hcmtTcGVlZHlQYWdlc0FzUGF0cm9sbGVkIChib29sZWFuKVxuXHRcdFx0XHQvLyBJZiwgd2hlbiBhcHBseWluZyBzcGVlZHkgdGVtcGxhdGUgdG8gcGFnZSwgdG8gbWFyayB0aGUgcGFnZSBhcyBwYXRyb2xsZWQgKGlmIHRoZSBwYWdlIHdhcyByZWFjaGVkIGZyb20gTmV3UGFnZXMpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFya1NwZWVkeVBhZ2VzQXNQYXRyb2xsZWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOaXtuagh+iusOmhtemdouS4uuW3suW3oeafpe+8iOWmguWPr+iDve+8iScsICfmqJnoqJjmmYLmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcubm90aWZ5VXNlck9uU3BlZWR5RGVsZXRpb25Ob21pbmF0aW9uIChhcnJheSlcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHNob3VsZCByZXN1bHQgdGhhdCB0aGUgYXV0aG9yIG9mIHRoZSBwYWdlIGJlaW5nIG5vdGlmaWVkIG9mIG5vbWluYXRpb25cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heWcqOS9v+eUqOS7peS4i+eQhueUseaXtumAmuefpemhtemdouWIm+W7uuiAhScsICflg4XlnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLpgJrnn6XpoIHpnaLlu7rnq4vogIUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bC9566h5oKo5Zyo5a+56K+d5qGG5Lit6YCJ5oup6YCa55+l77yM6YCa55+l5LuN5Y+q5Lya5Zyo5L2/55So6L+Z5Lqb55CG55Sx5pe25Y+R5Ye644CCJyxcblx0XHRcdFx0XHRcdCflhJjnrqHmgqjlnKjlsI3oqbHmlrnloYrkuK3pgbjmk4fpgJrnn6XvvIzpgJrnn6Xku43lj6rmnIPlnKjkvb/nlKjpgJnkupvnkIbnlLHmmYLnmbzlh7rjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQ3JpdGVyaWFOb3RpZmljYXRpb24sXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZENyaXRlcmlhTm90aWZpY2F0aW9uRGlzcGxheU9yZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnByb21wdEZvclNwZWVkeURlbGV0aW9uU3VtbWFyeSAoYXJyYXkgb2Ygc3RyaW5ncylcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S9v+eUqOS7peS4i+eQhueUseWIoOmZpOaXtuWFgeiuuOe8lui+keWIoOmZpOeQhueUsScsICfkvb/nlKjku6XkuIvnkIbnlLHliKrpmaTmmYLlhYHoqLHnt6jovK/liKrpmaTnkIbnlLEnKSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWFEaXNwbGF5T3JkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcub3BlblVzZXJUYWxrUGFnZU9uU3BlZWR5RGVsZXRlIChhcnJheSBvZiBzdHJpbmdzKVxuXHRcdFx0XHQvLyBXaGF0IHR5cGVzIG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgcmVzdWx0IHVzZXIgdGFsayBwYWdlIHRvIGJlIG9wZW5lZCB3aGVuIHNwZWVkaWx5IGRlbGV0aW5nIChhZG1pbiBvbmx5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L2/55So5Lul5LiL55CG55Sx5pe25omT5byA55So5oi36K6o6K666aG1JywgJ+S9v+eUqOS7peS4i+eQhueUseaZguaJk+mWi+S9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlcixcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5kZWxldGVUYWxrUGFnZU9uRGVsZXRlIChib29sZWFuKVxuXHRcdFx0XHQvLyBJZiB0YWxrIHBhZ2UgaWYgZXhpc3RzIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQgKENTRCBHOCkgd2hlbiBzcGVkeWluZyBhIHBhZ2UgKGFkbWluIG9ubHkpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5Yu+6YCJ4oCc5Yig6Zmk6K6o6K666aG14oCdJywgJ+mgkOioreWLvumBuOOAjOWIqumZpOiojuirlumggeOAjScpLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlUmVkaXJlY3RzT25EZWxldGUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWLvumAieKAnOWIoOmZpOmHjeWumuWQkeKAnScsICfpoJDoqK3li77pgbjjgIzliKrpmaTph43mlrDlsI7lkJHjgI0nKSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlbGV0ZVN5c29wRGVmYXVsdFRvRGVsZXRlIChib29sZWFuKVxuXHRcdFx0XHQvLyBNYWtlIHRoZSBDU0Qgc2NyZWVuIGRlZmF1bHQgdG8gXCJkZWxldGVcIiBpbnN0ZWFkIG9mIFwidGFnXCIgKGFkbWluIG9ubHkpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOS4uuebtOaOpeWIoOmZpOiAjOS4jeaYr+agh+iusCcsICfpoJDoqK3ngrrnm7TmjqXliKrpmaTogIzkuI3mmK/mqJnoqJgnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5bey5pS+572u5b+r6YCf5Yig6Zmk5qCH6K6w77yM5YiZ5rC46L+c6buY6K6k5Li65Yig6Zmk5qih5byP44CCJyxcblx0XHRcdFx0XHRcdCfoi6Xlt7LmlL7nva7lv6vpgJ/liKrpmaTmqJnoqJjvvIzliYfmsLjpgaDpoJDoqK3ngrrliKrpmaTmqKHlvI/jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnNwZWVkeVdpbmRvd1dpZHRoIChpbnRlZ2VyKVxuXHRcdFx0XHQvLyBEZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgVHdpbmtsZSBTRCB3aW5kb3cgaW4gcGl4ZWxzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc3BlZWR5V2luZG93V2lkdGgnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpOWvueivneahhuWuveW6pu+8iOWDj+e0oO+8iScsICflv6vpgJ/liKrpmaTlsI3oqbHmlrnloYrlr6zluqbvvIjlg4/ntKDvvIknKSxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuc3BlZWR5V2luZG93V2lkdGggKGludGVnZXIpXG5cdFx0XHRcdC8vIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBUd2lua2xlIFNEIHdpbmRvdyBpbiBwaXhlbHNcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdzcGVlZHlXaW5kb3dIZWlnaHQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpOWvueivneahhumrmOW6pu+8iOWDj+e0oO+8iScsICflv6vpgJ/liKrpmaTlsI3oqbHmlrnloYrpq5jluqbvvIjlg4/ntKDvvIknKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5oKo5pyJ5LiA5Y+w5b6I5aSn55qE5pi+56S65Zmo77yM5oKo5Y+v5Lul5bCG5q2k6LCD6auY44CCJyxcblx0XHRcdFx0XHRcdCfoi6XmgqjmnInkuIDlj7DlvojlpKfnmoTpoa/npLrlmajvvIzmgqjlj6/ku6XlsIfmraToqr/pq5jjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbG9nU3BlZWR5Tm9taW5hdGlvbnMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOeUqOaIt+epuumXtOS4reiusOW9leaJgOacieW/q+mAn+WIoOmZpOaPkOWQjScsICflnKjkvb/nlKjogIXnqbrplpPkuK3oqJjpjITmiYDmnInlv6vpgJ/liKrpmaTmj5DlkI0nKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Z2e566h55CG5ZGY5peg5rOV6K6/6Zeu5Yiw5bey5Yig6Zmk55qE6LSh54yu77yM55So5oi356m66Ze05pel5b+X5o+Q5L6b5LqG5LiA5Liq5b6I5aW955qE5pa55rOV5p2l6K6w5b2V6L+Z5Lqb5Y6G5Y+y44CCJyxcblx0XHRcdFx0XHRcdCfpnZ7nrqHnkIblk6HnhKHms5XlrZjlj5bliLDlt7LliKrpmaTnmoTosqLnjbvvvIzkvb/nlKjogIXnqbrplpPml6Xoqozmj5DkvpvkuobkuIDlgIvlvojlpb3nmoTmlrnms5XkvoboqJjpjITpgJnkupvmrbflj7LjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc3BlZWR5TG9nUGFnZU5hbWUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOatpOmhteS/neeVmeaXpeW/lycsICflnKjmraTpoIHkv53nlZnml6XoqownKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo5q2k5qGG5Lit6L6T5YWl5a2Q6aG16Z2i5ZCN56ew77yM5oKo5bCG5ZyoVXNlcjo8aT7nlKjmiLflkI08L2k+LzxpPuWtkOmhtemdojwvaT7mib7liLBDU0Tml6Xlv5fjgILku4XlnKjlkK/nlKjml6Xlv5fml7blt6XkvZzjgIInLFxuXHRcdFx0XHRcdFx0J+WcqOatpOahhuS4rei8uOWFpeWtkOmggemdouWQjeeose+8jOaCqOWwh+WcqFVzZXI6PGk+5L2/55So6ICF5ZCN56ixPC9pPi88aT7lrZDpoIHpnaI8L2k+5om+5YiwQ1NE5pel6KqM44CC5YOF5Zyo5ZWf55So5pel6KqM5pmC5bel5L2c44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOS9v+eUqOS7peS4i+eQhueUseaXtuS4jeWBmuiusOW9lScsICflnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLkuI3lgZroqJjpjIQnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYSxcblx0XHRcdFx0XHRzZXREaXNwbGF5T3JkZXI6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlcixcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdlbmxhcmdlRzdJbnB1dCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5omp5aSnQ1NEIEc355qE5oyJ6ZKuJywgJ+aTtOWkp0NTRCBHN+eahOaMiemIlScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn5omp5Li66buY6K6k55qE5Lik5YCN5aSn44CCJywgJ+aTtOeCuumgkOioreeahOWFqeWAjeWkp+OAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfmoIforrAnLCAn5qiZ6KiYJyksXG5cdFx0XHRtb2R1bGU6ICd0YWcnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFRhZ2dlZFBhZ2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoTWVyZ2VEaXNjdXNzaW9ucycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5ZCI5bm26K6o6K665pe255uR6KeG6K6o6K666aG1JywgJ+WKoOWFpeWQiOS9teiojuirluaZguebo+imluiojuirlumggScpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrVGFnZ2VkUGFnZXNBc01pbm9yJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIbmoIforrDmoIforrDkuLrlsI/kv67mlLknLCAn5bCH5qiZ6KiY5qiZ6KiY54K65bCP5L+u5pS5JyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtUYWdnZWRQYWdlc0FzUGF0cm9sbGVkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqTli77pgInigJzmoIforrDpobXpnaLkuLrlt7Llt6Hmn6XigJ3moYYnLCAn6aCQ6Kit5Yu+6YG444CM5qiZ6KiY6aCB6Z2i54K65bey5beh5p+l44CN5qGGJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2dyb3VwQnlEZWZhdWx0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+m7mOiupOWLvumAieKAnOWQiOW5tuWIsHt7bXVsdGlwbGUgaXNzdWVzfX3igJ3lpI3pgInmoYYnLFxuXHRcdFx0XHRcdFx0J+mgkOioreWLvumBuOOAjOWQiOS9teWIsHt7bXVsdGlwbGUgaXNzdWVzfX3jgI3moLjlj5bmlrnloYonXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAndGFnQXJ0aWNsZVNvcnRPcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2h55uu5qCH6K6w55qE6buY6K6k5p+l55yL5pa55byPJywgJ+aineebruaomeiomOeahOmgkOioreaqouimluaWueW8jycpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRjYXQ6IHdpbmRvdy53Z1VMUygn5oyJ57G75Z6LJywgJ+aMiemhnuWIpScpLFxuXHRcdFx0XHRcdFx0YWxwaGE6ICfmjInlrZfmr40nLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tVGFnTGlzdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5p2h55uu57u05oqk5qCH6K6wJywgJ+iHquioguaineebrue2reitt+aomeiomCcpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn6L+Z5Lqb5Lya5Ye6546w5Zyo5YiX6KGo55qE5pyr5bC+44CCJywgJ+mAmeS6m+acg+WHuuePvuWcqOWIl+ihqOeahOacq+WwvuOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogd2luZG93LndnVUxTKCfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zlj7fvvIknLCAn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous6Jmf77yJJyksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2XJywgJ+mhr+ekuueahOaWh+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2N1c3RvbUZpbGVUYWdMaXN0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmlofku7bnu7TmiqTmoIforrAnLCAn6Ieq6KiC5qqU5qGI57at6K235qiZ6KiYJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfov5nkupvkvJrlh7rnjrDlnKjliJfooajnmoTmnKvlsL7jgIInLCAn6YCZ5Lqb5pyD5Ye654++5Zyo5YiX6KGo55qE5pyr5bC+44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2N1c3RvbUxpc3QnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiB3aW5kb3cud2dVTFMoJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOWPt++8iScsICfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zomZ/vvIknKSxcblx0XHRcdFx0XHRjdXN0b21MaXN0TGFiZWxUaXRsZTogd2luZG93LndnVUxTKCfmmL7npLrnmoTmloflrZcnLCAn6aGv56S655qE5paH5a2XJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tUmVkaXJlY3RUYWdMaXN0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnph43lrprlkJHnu7TmiqTmoIforrAnLCAn6Ieq6KiC6YeN5paw5bCO5ZCR57at6K235qiZ6KiYJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfov5nkupvkvJrlh7rnjrDlnKjliJfooajnmoTmnKvlsL7jgIInLCAn6YCZ5Lqb5pyD5Ye654++5Zyo5YiX6KGo55qE5pyr5bC+44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2N1c3RvbUxpc3QnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiB3aW5kb3cud2dVTFMoJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOWPt++8iScsICfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zomZ/vvIknKSxcblx0XHRcdFx0XHRjdXN0b21MaXN0TGFiZWxUaXRsZTogd2luZG93LndnVUxTKCfmmL7npLrnmoTmloflrZcnLCAn6aGv56S655qE5paH5a2XJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6ICflsI/kvZzlk4EnLFxuXHRcdFx0bW9kdWxlOiAnc3R1YicsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoU3R1YmJlZFBhZ2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtTdHViYmVkUGFnZXNBc01pbm9yJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIblsI/kvZzlk4HmoIforrDkuLrlsI/kv67mlLknLCAn5bCH5bCP5L2c5ZOB5qiZ6KiY54K65bCP5L+u5pS5JyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtTdHViYmVkUGFnZXNBc1BhdHJvbGxlZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5Yu+6YCJ4oCc5qCH6K6w6aG16Z2i5Li65bey5beh5p+l4oCd5qGGJywgJ+mgkOioreWLvumBuOOAjOaomeiomOmggemdoueCuuW3suW3oeafpeOAjeahhicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdzdHViQXJ0aWNsZVNvcnRPcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2h55uu5bCP5L2c5ZOB55qE6buY6K6k5p+l55yL5pa55byPJywgJ+aineebruWwj+S9nOWTgeeahOmgkOioreaqouimluaWueW8jycpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRjYXQ6IHdpbmRvdy53Z1VMUygn5oyJ57G75Z6LJywgJ+aMiemhnuWIpScpLFxuXHRcdFx0XHRcdFx0YWxwaGE6ICfmjInlrZfmr40nLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tU3R1Ykxpc3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieadoeebruWwj+S9nOWTgeagh+iusCcsICfoh6roqILmop3nm67lsI/kvZzlk4HmqJnoqJgnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+i/meS6m+S8muWHuueOsOWcqOWIl+ihqOeahOacq+WwvuOAgicsICfpgJnkupvmnIPlh7rnj77lnKjliJfooajnmoTmnKvlsL7jgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6IHdpbmRvdy53Z1VMUygn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous5Y+377yJJywgJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOiZn++8iScpLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RMYWJlbFRpdGxlOiB3aW5kb3cud2dVTFMoJ+aYvuekuueahOaWh+WtlycsICfpoa/npLrnmoTmloflrZcnKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogJ+mAmuWRiicsXG5cdFx0XHRtb2R1bGU6ICd0YWxrYmFjaycsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtUYWxrYmFja0FzTWlub3InLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwhumAmuWRiuagh+iusOS4uuWwj+S/ruaUuScsICflsIfpgJrlkYrmqJnoqJjngrrlsI/kv67mlLknKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnaW5zZXJ0VGFsa2JhY2tTaWduYXR1cmUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAmuWRiuaXtuWKoOWFpeetvuWQjScsICfpgJrlkYrmmYLliqDlhaXnsL3lkI0nKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAndGFsa2JhY2tIZWFkaW5nJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrlkYrmiYDnlKjnmoTlsI/oioLmoIfpopgnLCAn6YCa5ZGK5omA55So55qE5bCP56+A5qiZ6aGMJyksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFpbEhlYWRpbmcnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+KAnOacieaWsOmCruS7tuKAneaJgOeUqOeahOWwj+iKguagh+mimCcsICfjgIzmnInmlrDpg7Xku7bjgI3miYDnlKjnmoTlsI/nr4DmqJnpoYwnKSxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflj5bmtojpk77lhaUnLCAn5Y+W5raI6YCj5YWlJyksXG5cdFx0XHRtb2R1bGU6ICd1bmxpbmsnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy51bmxpbmtOYW1lc3BhY2VzIChhcnJheSlcblx0XHRcdFx0Ly8gSW4gd2hhdCBuYW1lc3BhY2VzIHVubGluayBzaG91bGQgaGFwcGVuLCBkZWZhdWx0IGluIDAgKGFydGljbGUpIGFuZCAxMDAgKHBvcnRhbClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd1bmxpbmtOYW1lc3BhY2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5bmtojku6XkuIvlkb3lkI3nqbrpl7TkuK3nmoTlj43lkJHpk77mjqUnLCAn5Y+W5raI5Lul5LiL5ZG95ZCN56m66ZaT5Lit55qE5Y+N5ZCR6YCj57WQJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+mBv+WFjemAieaLqeiuqOiuuumhte+8jOWboOi/meagt+S8muWvvOiHtFR3aW5rbGXor5Xlm77kv67mlLnorqjorrrlrZjmoaPjgIInLFxuXHRcdFx0XHRcdFx0J+iri+mBv+WFjemBuOaTh+iojuirlumgge+8jOWboOmAmeaoo+acg+WwjuiHtFR3aW5rbGXoqablnJbkv67mlLnoqI7oq5blrZjmqpTjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMubmFtZXNwYWNlc05vU3BlY2lhbCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCforablkYrnlKjmiLcnLCAn6K2m5ZGK5L2/55So6ICFJyksXG5cdFx0XHRtb2R1bGU6ICd3YXJuJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVmYXVsdFdhcm5pbmdHcm91cCAoaW50KVxuXHRcdFx0XHQvLyBpZiB0cnVlLCB3YXRjaCB0aGUgcGFnZSB3aGljaCBoYXMgYmVlbiBkaXNwYXRjaGVkIGFuIHdhcm5pbmcgb3Igbm90aWNlLCBpZiBmYWxzZSwgZGVmYXVsdCBhcHBsaWVzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVmYXVsdFdhcm5pbmdHcm91cCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k6K2m5ZGK57qn5YirJywgJ+mgkOioreitpuWRiue0muWIpScpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHQxOiAnMe+8muazqOaEjycsXG5cdFx0XHRcdFx0XHQyOiAnMu+8muitpuWRiicsXG5cdFx0XHRcdFx0XHQzOiB3aW5kb3cud2dVTFMoJ+WNleWxgue6p+aPkOmGkicsICfllq7lsaTntJrmj5DphpInKSxcblx0XHRcdFx0XHRcdDQ6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn6K2m5ZGKJywgJ+WWruWxpOe0muitpuWRiicpLFxuXHRcdFx0XHRcdFx0NTogd2luZG93LndnVUxTKCfoh6rlrprkuYnmj5DphpLmiJborablkYonLCAn6Ieq6KiC5o+Q6YaS5oiW6K2m5ZGKJyksXG5cdFx0XHRcdFx0XHQ2OiAn5omA5pyJ6K2m5ZGK5qih5p2/Jyxcblx0XHRcdFx0XHRcdDc6IHdpbmRvdy53Z1VMUygn6Ieq5Yqo6YCJ5oup5bGC57qnJywgJ+iHquWLlemBuOaTh+WxpOe0micpLFxuXHRcdFx0XHRcdFx0Ly8gOCB3YXMgdXNlZCBmb3IgYmxvY2sgdGVtcGxhdGVzIGJlZm9yZSAjMjYwXG5cdFx0XHRcdFx0XHQvLyA5IHdhcyBkZXByZWNhdGVkXG5cdFx0XHRcdFx0XHQvLyAxMCB3YXMgZGVwcmVjYXRlZFxuXHRcdFx0XHRcdFx0Ly8gMTEgd2FzIGRlcHJlY2F0ZWRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmNvbWJpbmVkU2luZ2xldE1lbnVzIChib29sZWFuKVxuXHRcdFx0XHQvLyBpZiB0cnVlLCBzaG93IG9uZSBtZW51IHdpdGggYm90aCBzaW5nbGUtaXNzdWUgbm90aWNlcyBhbmQgd2FybmluZ3MgaW5zdGVhZCBvZiB0d28gc2VwYXJhdGVseVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2NvbWJpbmVkU2luZ2xldE1lbnVzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIbkuKTkuKrljZXlsYLnuqfoj5zljZXlkIjlubbmiJDkuIDkuKonLCAn5bCH5YWp5YCL5Zau5bGk57Sa6YG45Zau5ZCI5L215oiQ5LiA5YCLJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+W9k+WQr+eUqOatpOmAiemhueaXtu+8jOaXoOiuuum7mOiupOitpuWRiue6p+WIq+mAieaLqeWNleWxgue6p+mAmuefpeaIluWNleWxgue6p+itpuWRiueahuWxnuS6juatpOmhueOAgicsXG5cdFx0XHRcdFx0XHQn55W25ZWf55So5q2k6YG46aCF5pmC77yM54Sh6KuW6aCQ6Kit6K2m5ZGK57Sa5Yil6YG45pOH5Zau5bGk57Sa6YCa55+l5oiW5Zau5bGk57Sa6K2m5ZGK55qG5bGs5pa85q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLndhdGNoV2FybmluZ3MgKHN0cmluZylcblx0XHRcdFx0Ly8gV2F0Y2hsaXN0IHNldHRpbmcgZm9yIHRoZSBwYWdlIHdoaWNoIGhhcyBiZWVuIGRpc3BhdGNoZWQgYW4gd2FybmluZyBvciBub3RpY2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFdhcm5pbmdzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCforablkYrml7bliqDlhaXnlKjmiLforqjorrrpobXliLDnm5Hop4bliJfooagnLCAn6K2m5ZGK5pmC5Yqg5YWl5L2/55So6ICF6KiO6KuW6aCB5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm9sZFNlbGVjdCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gaWYgdHJ1ZSwgdXNlIHRoZSBuYXRpdmUgc2VsZWN0IG1lbnUgcmF0aGVyIHRoZSBqcXVlcnkgY2hvc2VuLWJhc2VkIG9uZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29sZFNlbGVjdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L2/55So5LiN5Y+v5pCc57Si55qE57uP5YW46I+c5Y2VJywgJ+S9v+eUqOS4jeWPr+aQnOWwi+eahOe2k+WFuOmBuOWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjdXN0b21XYXJuaW5nTGlzdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6K2m5ZGK5qih5p2/JywgJ+iHquioguitpuWRiuaooeadvycpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XliqDlhaXmqKHmnb/miJbnlKjmiLflrZDpobXpnaLjgILoh6rlrprkuYnorablkYrkvJrlh7rnjrDlnKjorablkYrlr7nor53moYbkuK3igJzoh6rlrprkuYnorablkYrigJ3kuIDoioLjgIInLFxuXHRcdFx0XHRcdFx0J+aCqOWPr+S7peWKoOWFpeaooeadv+aIluS9v+eUqOiAheWtkOmggemdouOAguiHquioguitpuWRiuacg+WHuuePvuWcqOitpuWRiuWwjeipseaWueWhiuS4reOAjOiHquioguitpuWRiuOAjeS4gOevgOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogd2luZG93LndnVUxTKCfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zlj7fvvIknLCAn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous6Jmf77yJJyksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2X77yI5ZKM57yW6L6R5pGY6KaB77yJJywgJ+mhr+ekuueahOaWh+Wtl++8iOWSjOe3qOi8r+aRmOimge+8iScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WtmOW6n+iuqOiuuicsICflrZjlu6LoqI7oq5YnKSxcblx0XHRcdG1vZHVsZTogJ3hmZCcsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2xvZ1hmZE5vbWluYXRpb25zJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjnlKjmiLfnqbrpl7TkuK3orrDlvZXmiYDmnInlrZjlup/orqjorrrmj5DlkI0nLCAn5Zyo5L2/55So6ICF56m66ZaT5Lit6KiY6YyE5omA5pyJ5a2Y5bui6KiO6KuW5o+Q5ZCNJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivpeaXpeW/l+S+m+aCqOi/vei4quaJgOaciemAmui/h1R3aW5rbGXmj5DkuqTnmoTlrZjlup/orqjorronLFxuXHRcdFx0XHRcdFx0J+ipsuaXpeiqjOS+m+aCqOi/vei5pOaJgOaciemAj+mBjlR3aW5rbGXmj5DkuqTnmoTlrZjlu6LoqI7oq5YnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAneGZkTG9nUGFnZU5hbWUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOatpOmhteS/neeVmeaXpeW/lycsICflnKjmraTpoIHkv53nlZnml6XoqownKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo5q2k5qGG5Lit6L6T5YWl5a2Q6aG16Z2i5ZCN56ew77yM5oKo5bCG5ZyoVXNlcjo8aT7nlKjmiLflkI08L2k+LzxpPuWtkOmhtemdojwvaT7mib7liLBYRkTml6Xlv5fjgILku4XlnKjlkK/nlKjml6Xlv5fml7blt6XkvZzjgIInLFxuXHRcdFx0XHRcdFx0J+WcqOatpOahhuS4rei8uOWFpeWtkOmggemdouWQjeeose+8jOaCqOWwh+WcqFVzZXI6PGk+5L2/55So6ICF5ZCN56ixPC9pPi88aT7lrZDpoIHpnaI8L2k+5om+5YiwWEZE5pel6KqM44CC5YOF5Zyo5ZWf55So5pel6KqM5pmC5bel5L2c44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbm9Mb2dPblhmZE5vbWluYXRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOS9v+eUqOS7peS4i+eQhueUseaXtuS4jeWBmuiusOW9lScsICflnKjkvb/nlKjku6XkuIvnkIbnlLHmmYLkuI3lgZroqJjpjIQnKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMueGZkQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLnhmZENyaXRlcmlhRGlzcGxheU9yZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnhmZFdhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgYmVpbmcgbm9taW5hdGVkIGZvciBYZkQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAneGZkV2F0Y2hQYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXmj5DlkI3nmoTpobXpnaLliLDnm5Hop4bliJfooagnLCAn5Yqg5YWl5o+Q5ZCN55qE6aCB6Z2i5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnhmZFdhdGNoRGlzY3Vzc2lvbiAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgWGZEIHBhZ2UgKGZvciB0aG9zZSBwcm9jZXNzZXMgdGhhdCBjcmVhdGUgZGlzY3Vzc2lvbiBwYWdlcyBmb3IgZWFjaCBub21pbmF0aW9uKSxcblx0XHRcdFx0Ly8gb3IgdGhlIGxpc3QgcGFnZSBmb3IgdGhlIG90aGVyIHByb2Nlc3Nlcy5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd4ZmRXYXRjaERpc2N1c3Npb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWtmOW6n+iuqOiuuumhteWIsOebkeinhuWIl+ihqCcsICfliqDlhaXlrZjlu6LoqI7oq5bpoIHliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+W9k+aXpeeahOmhtemdouOAgicsICfnlbbml6XnmoTpoIHpnaLjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcueGZkV2F0Y2hVc2VyIChzdHJpbmcpXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGxpc3Qgc2V0dGluZyBvZiB0aGUgdXNlciB0YWxrIHBhZ2UgaWYgdGhleSByZWNlaXZlIGEgbm90aWZpY2F0aW9uLlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3hmZFdhdGNoVXNlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfliqDlhaXliJvlu7rogIXorqjorrrpobXliLDnm5Hop4bliJfooajvvIjlnKjpgJrnn6Xml7bvvIknLFxuXHRcdFx0XHRcdFx0J+WKoOWFpeW7uueri+iAheiojuirlumggeWIsOebo+imlua4heWWru+8iOWcqOmAmuefpeaZgu+8iSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrWGZkUGFnZXNBc1BhdHJvbGxlZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5pe25qCH6K6w6aG16Z2i5Li65bey5beh5p+l77yI5aaC5Y+v6IO977yJJywgJ+aomeiomOaZguaomeiomOmggemdoueCuuW3suW3oeafpe+8iOWmguWPr+iDve+8iScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfln7rkuo7mioDmnK/ljp/lm6DvvIzpobXpnaLku4XkvJrlnKjnlLFTcGVjaWFsOk5ld1BhZ2Vz5Yiw6L6+5pe26KKr5qCH6K6w5Li65bey5beh5p+l44CCJyxcblx0XHRcdFx0XHRcdCfln7rmlrzmioDooZPljp/lm6DvvIzpoIHpnaLlg4XmnIPlnKjnlLFTcGVjaWFsOk5ld1BhZ2Vz5Yiw6YGU5pmC6KKr5qiZ6KiY54K65bey5beh5p+l44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ0Z3ZENzZFRvWGZkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmj5DliKDnsbvlnovlop7liqDovazkuqToh6rlv6vpgJ/liKDpmaTlgJnpgIknLCAn5o+Q5Yiq6aGe5Yil5aKe5Yqg6L2J5Lqk6Ieq5b+r6YCf5Yiq6Zmk5YCZ6YG4JyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+ehruS/neaCqOWFheWIhuS6huino1tbUWl1d2VuOuW/q+mAn+WIoOmZpOaWuemSiF1d5omN5byA5ZCv5q2k5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCfoq4vnorrkv53mgqjlhYXliIbkuobop6NbW1FpdXdlbjrlv6vpgJ/liKrpmaTmlrnph51dXeaJjemWi+WVn+atpOWKn+iDveOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdhZmREZWZhdWx0Q2F0ZWdvcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOaPkOWIoOexu+WeiycsICfpoJDoqK3mj5DliKrpoZ7liKUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul6YCJ5oup4oCc55u45ZCM5LqO5LiK5qyh6YCJ5oup4oCd5bCG5L2/55SobG9jYWxTdG9yYWdl5p2l6K6w5b+G44CCJyxcblx0XHRcdFx0XHRcdCfoi6Xpgbjmk4fjgIznm7jlkIzmlrzkuIrmrKHpgbjmk4fjgI3lsIfkvb/nlKhsb2NhbFN0b3JhZ2XkvoboqJjmhrbjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczoge1xuXHRcdFx0XHRcdFx0ZGVsZXRlOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdFx0XHRcdHNhbWU6IHdpbmRvdy53Z1VMUygn55u45ZCM5LqO5LiK5qyh6YCJ5oupJywgJ+ebuOWQjOaWvOS4iuasoemBuOaThycpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYWZkRmFtZURlZmF1bHRSZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWFs+azqOW6puaPkOWIoOeQhueUsScsICfpoJDoqK3pl5zms6jluqbmj5DliKrnkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+eUqOS6juaJuemHj+aPkOWIoOOAgicsICfnlKjmlrzmibnmrKHmj5DliKrjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdhZmRTdWJzdHViRGVmYXVsdFJlYXNvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5bCP5bCP5L2c5ZOB5o+Q5Yig55CG55SxJywgJ+mgkOioreWwj+Wwj+S9nOWTgeaPkOWIqueQhueUsScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn55So5LqO5om56YeP5o+Q5Yig44CCJywgJ+eUqOaWvOaJueasoeaPkOWIquOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiB3aW5kb3cud2dVTFMoJ+WFs+mXreWtmOW6n+iuqOiuuicsICfpl5zplonlrZjlu6LoqI7oq5YnKSxcblx0XHRcdG1vZHVsZTogJ2Nsb3NlJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnWGZkQ2xvc2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOWtmOW6n+iuqOiuuuaYvuekuuWFs+mXreiuqOiuuuaMiemSricsICflnKjlrZjlu6LoqI7oq5bpoa/npLrpl5zplonoqI7oq5bmjInpiJUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6K+356Gu5L+d5oKo5YWF5YiG5LqG6KejW1tRaXV3ZW465Yig6Zmk5pa56ZKIXV3miY3lvIDlkK/mraTlip/og73jgIInLFxuXHRcdFx0XHRcdFx0J+iri+eiuuS/neaCqOWFheWIhuS6huino1tbUWl1d2VuOuWIqumZpOaWuemHnV1d5omN6ZaL5ZWf5q2k5Yqf6IO944CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGhpZGU6IHdpbmRvdy53Z1VMUygn5LiN5pi+56S6JywgJ+S4jemhr+ekuicpLFxuXHRcdFx0XHRcdFx0bm9uYWRtaW5vbmx5OiB3aW5kb3cud2dVTFMoJ+WPquWMheWQq+mdnueuoeeQhuWRmOWPr+S9v+eUqOmAiemhuScsICflj6rljIXlkKvpnZ7nrqHnkIblk6Hlj6/kvb/nlKjpgbjpoIUnKSxcblx0XHRcdFx0XHRcdGFsbDogd2luZG93LndnVUxTKCfmmL7npLrmiYDmnInpgInpobknLCAn6aGv56S65omA5pyJ6YG46aCFJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfkvrXniq/okZfkvZzmnYMnLCAn5L6154qv6JGX5L2c5qyKJyksXG5cdFx0XHRtb2R1bGU6ICdjb3B5dmlvJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuY29weXZpb1dhdGNoUGFnZSAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHBhZ2UgYmVpbmcgbm9taW5hdGVkIGZvciBYZkQuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY29weXZpb1dhdGNoUGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5o+Q5oql55qE6aG16Z2i5Yiw55uR6KeG5YiX6KGoJywgJ+WKoOWFpeaPkOWgseeahOmggemdouWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5jb3B5dmlvV2F0Y2hVc2VyIChzdHJpbmcpXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGxpc3Qgc2V0dGluZyBvZiB0aGUgdXNlciBpZiBoZSByZWNlaXZlcyBhIG5vdGlmaWNhdGlvbi5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjb3B5dmlvV2F0Y2hVc2VyJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WKoOWFpeWIm+W7uuiAheiuqOiuuumhteWIsOebkeinhuWIl+ihqO+8iOWcqOmAmuefpeaXtu+8iScsXG5cdFx0XHRcdFx0XHQn5Yqg5YWl5bu656uL6ICF6KiO6KuW6aCB5Yiw55uj6KaW5riF5Zau77yI5Zyo6YCa55+l5pmC77yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm1hcmtDb3B5dmlvUGFnZXNBc1BhdHJvbGxlZCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gSWYsIHdoZW4gYXBwbHlpbmcgY29weXZpbyB0ZW1wbGF0ZSB0byBwYWdlLCB0byBtYXJrIHRoZSBwYWdlIGFzIHBhdHJvbGxlZCAoaWYgdGhlIHBhZ2Ugd2FzIHJlYWNoZWQgZnJvbSBOZXdQYWdlcylcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOaXtuagh+iusOmhtemdouS4uuW3suW3oeafpe+8iOWmguWPr+iDve+8iScsICfmqJnoqJjmmYLmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Z+65LqO5oqA5pyv5Y6f5Zug77yM6aG16Z2i5LuF5Lya5Zyo55SxU3BlY2lhbDpOZXdQYWdlc+WIsOi+vuaXtuiiq+agh+iusOS4uuW3suW3oeafpeOAgicsXG5cdFx0XHRcdFx0XHQn5Z+65pa85oqA6KGT5Y6f5Zug77yM6aCB6Z2i5YOF5pyD5Zyo55SxU3BlY2lhbDpOZXdQYWdlc+WIsOmBlOaZguiiq+aomeiomOeCuuW3suW3oeafpeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfpmpDol48nLCAn6Zqx6JePJyksXG5cdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHQvLyB0d2lua2xlLmpzOiBwb3J0bGV0IHNldHVwXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncG9ydGxldEFyZWEnLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3BvcnRsZXRJZCcsXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncG9ydGxldE5hbWUnLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3BvcnRsZXRUeXBlJyxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdwb3J0bGV0TmV4dCcsXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIHR3aW5rbGVmbHVmZi5qczogZGVmaW5lcyBob3cgbWFueSByZXZpc2lvbiB0byBxdWVyeSBtYXhpbXVtLCBtYXhpbXVtIHBvc3NpYmxlIGlzIDUwLCBkZWZhdWx0IGlzIDUwXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncmV2ZXJ0TWF4UmV2aXNpb25zJyxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIHR3aW5rbGViYXRjaGRlbGV0ZS5qczogSG93IG1hbnkgcGFnZXMgc2hvdWxkIGJlIHByb2Nlc3NlZCBtYXhpbXVtXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYmF0Y2hNYXgnLFxuXHRcdFx0XHRcdHR5cGU6ICdpbnRlZ2VyJyxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIEhvdyBtYW55IHBhZ2VzIHNob3VsZCBiZSBwcm9jZXNzZWQgYXQgYSB0aW1lIGJ5IGRlcHJvZCBhbmQgYmF0Y2hkZWxldGUvcHJvdGVjdC91bmRlbGV0ZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2JhdGNoQ2h1bmtzJyxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdFx0YWRtaW5Pbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdOyAvLyBlbmQgb2YgVHdpbmtsZS5jb25maWcuc2VjdGlvbnNcblx0VHdpbmtsZS5jb25maWcuaW5pdCA9ICgpID0+IHtcblx0XHQvLyBjcmVhdGUgdGhlIGNvbmZpZyBwYWdlIGF0IFR3aW5rbGUuZ2V0UHJlZignY29uZmlnUGFnZScpXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSA9PT0gVHdpbmtsZS5nZXRQcmVmKCdjb25maWdQYWdlJykgJiYgbXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSA9PT0gJ3ZpZXcnKSB7XG5cdFx0XHRpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0d2lua2xlLWNvbmZpZycpKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gbWF5YmUgdGhlIHBhZ2UgaXMgbWlzY29uZmlndXJlZCwgb3Igc29tZXRoaW5nIC0gYnV0IGFueSBhdHRlbXB0IHRvIG1vZGlmeSBpdCB3aWxsIGJlIHBvaW50bGVzc1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY29udGVudGRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0d2lua2xlLWNvbmZpZy1jb250ZW50Jyk7XG5cdFx0XHRjb250ZW50ZGl2LnRleHRDb250ZW50ID0gJyc7IC8vIGNsZWFyIGNoaWxkcmVuXG5cdFx0XHQvLyBzdGFydCBhIHRhYmxlIG9mIGNvbnRlbnRzXG5cdFx0XHRjb25zdCB0b2N0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0dG9jdGFibGUuY2xhc3NOYW1lID0gJ3RvYyc7XG5cdFx0XHR0b2N0YWJsZS5zdHlsZS5tYXJnaW5MZWZ0ID0gJzAuNGVtJztcblx0XHRcdC8vIGNyZWF0ZSBUT0MgdGl0bGVcblx0XHRcdGNvbnN0IHRvY3RpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHR0b2N0aXRsZS5pZCA9ICd0b2N0aXRsZSc7XG5cdFx0XHRjb25zdCB0b2NoMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gyJyk7XG5cdFx0XHR0b2NoMi50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn55uu5b2VICcsICfnm67pjIQgJyk7XG5cdFx0XHR0b2N0aXRsZS5hcHBlbmRDaGlsZCh0b2NoMik7XG5cdFx0XHQvLyBhZGQgVE9DIHNob3cvaGlkZSBsaW5rXG5cdFx0XHRjb25zdCB0b2N0b2dnbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHR0b2N0b2dnbGUuY2xhc3NOYW1lID0gJ3RvY3RvZ2dsZSc7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1snKSk7XG5cdFx0XHRjb25zdCB0b2N0b2dnbGVsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0dG9jdG9nZ2xlbGluay5jbGFzc05hbWUgPSAnaW50ZXJuYWwnO1xuXHRcdFx0dG9jdG9nZ2xlbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnI3R3LXRvY3Nob3doaWRlJyk7XG5cdFx0XHR0b2N0b2dnbGVsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfpmpDol48nLCAn6Zqx6JePJyk7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQodG9jdG9nZ2xlbGluayk7XG5cdFx0XHR0b2N0b2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ10nKSk7XG5cdFx0XHR0b2N0aXRsZS5hcHBlbmRDaGlsZCh0b2N0b2dnbGUpO1xuXHRcdFx0dG9jdGFibGUuYXBwZW5kQ2hpbGQodG9jdGl0bGUpO1xuXHRcdFx0Ly8gY3JlYXRlIGl0ZW0gY29udGFpbmVyOiB0aGlzIGlzIHdoYXQgd2UgYWRkIHN0dWZmIHRvXG5cdFx0XHRjb25zdCB0b2N1bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7XG5cdFx0XHR0b2N0b2dnbGVsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHRcdCdjbGljaycsXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCAkdG9jdWwgPSAkKHRvY3VsKTtcblx0XHRcdFx0XHQkdG9jdWwudG9nZ2xlKCk7XG5cdFx0XHRcdFx0aWYgKCR0b2N1bC5maW5kKCc6dmlzaWJsZScpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dG9jdG9nZ2xlbGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn6ZqQ6JePJywgJ+maseiXjycpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0b2N0b2dnbGVsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfmmL7npLonLCAn6aGv56S6Jyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmYWxzZVxuXHRcdFx0KTtcblx0XHRcdHRvY3RhYmxlLmFwcGVuZENoaWxkKHRvY3VsKTtcblx0XHRcdGNvbnRlbnRkaXYuYXBwZW5kQ2hpbGQodG9jdGFibGUpO1xuXHRcdFx0Y29uc3QgY29udGVudGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2NyaXB0LXVybFxuXHRcdFx0Y29udGVudGZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLCAnamF2YXNjcmlwdDp2b2lkKDApJyk7IC8vIHdhcyAjdHctc2F2ZSAtIGNoYW5nZWQgdG8gdm9pZCgwKSB0byB3b3JrIGFyb3VuZCBDaHJvbWUgaXNzdWVcblx0XHRcdGNvbnRlbnRmb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIFR3aW5rbGUuY29uZmlnLnNhdmUsIHRydWUpO1xuXHRcdFx0Y29udGVudGRpdi5hcHBlbmRDaGlsZChjb250ZW50Zm9ybSk7XG5cdFx0XHRjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpO1xuXHRcdFx0Y29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuXHRcdFx0Y29udGVudGZvcm0uYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcblx0XHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdFx0aWYgKHNlY3Rpb24uaGlkZGVuIHx8IChzZWN0aW9uLmFkbWluT25seSAmJiAhTW9yZWJpdHMudXNlcklzU3lzb3ApKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGkuZS4gXCJjb250aW51ZVwiIGluIHRoaXMgY29udGV4dFxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGFkZCB0byBUT0Ncblx0XHRcdFx0Y29uc3QgdG9jbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuXHRcdFx0XHR0b2NsaS5jbGFzc05hbWUgPSAndG9jbGV2ZWwtMSc7XG5cdFx0XHRcdGNvbnN0IHRvY2EgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdHRvY2Euc2V0QXR0cmlidXRlKCdocmVmJywgYCMke3NlY3Rpb24ubW9kdWxlfWApO1xuXHRcdFx0XHR0b2NhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlY3Rpb24udGl0bGUpKTtcblx0XHRcdFx0dG9jbGkuYXBwZW5kQ2hpbGQodG9jYSk7XG5cdFx0XHRcdHRvY3VsLmFwcGVuZENoaWxkKHRvY2xpKTtcblx0XHRcdFx0bGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0XHRcdGxldCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0Y2VsbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAnMycpO1xuXHRcdFx0XHRjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDQnKTtcblx0XHRcdFx0aGVhZGluZy5zdHlsZS5ib3JkZXJCb3R0b20gPSAnMXB4IHNvbGlkICM4MDgwODAnO1xuXHRcdFx0XHRoZWFkaW5nLnN0eWxlLm1hcmdpblRvcCA9ICcwLjJlbSc7XG5cdFx0XHRcdGhlYWRpbmcuaWQgPSBzZWN0aW9uLm1vZHVsZTtcblx0XHRcdFx0aGVhZGluZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWN0aW9uLnRpdGxlKSk7XG5cdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoaGVhZGluZyk7XG5cdFx0XHRcdHJvdy5hcHBlbmRDaGlsZChjZWxsKTtcblx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZENoaWxkKHJvdyk7XG5cdFx0XHRcdGxldCByb3djb3VudCA9IDE7IC8vIGZvciByb3cgYmFuZGluZ1xuXHRcdFx0XHQvLyBhZGQgZWFjaCBvZiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIGZvcm1cblx0XHRcdFx0JChzZWN0aW9uLnByZWZlcmVuY2VzKS5lYWNoKChwcmVma2V5LCBwcmVmKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHByZWYuYWRtaW5Pbmx5ICYmICFNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGkuZS4gXCJjb250aW51ZVwiIGluIHRoaXMgY29udGV4dFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0XHRcdFx0cm93LnN0eWxlLm1hcmdpbkJvdHRvbSA9ICcwLjJlbSc7XG5cdFx0XHRcdFx0Ly8gY3JlYXRlIG9kZCByb3cgYmFuZGluZ1xuXHRcdFx0XHRcdGlmIChyb3djb3VudCsrICUgMiA9PT0gMCkge1xuXHRcdFx0XHRcdFx0cm93LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2IoMTI4IDEyOCAxMjgvLjEpJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0bGV0IGxhYmVsO1xuXHRcdFx0XHRcdGxldCBpbnB1dDtcblx0XHRcdFx0XHRjb25zdCBnb3RQcmVmID0gVHdpbmtsZS5nZXRQcmVmKHByZWYubmFtZSk7XG5cdFx0XHRcdFx0c3dpdGNoIChwcmVmLnR5cGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nOlxuXHRcdFx0XHRcdFx0XHQvLyBjcmVhdGUgYSBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRjZWxsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcyJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnY2hlY2tib3gnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuY2hlY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcmVmLmxhYmVsKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3N0cmluZyc6IC8vIGNyZWF0ZSBhbiBpbnB1dCBib3hcblx0XHRcdFx0XHRcdGNhc2UgJ2ludGVnZXInOlxuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBpbnB1dCBib3ggdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ2lkJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0aWYgKHByZWYudHlwZSA9PT0gJ2ludGVnZXInKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdzaXplJywgNik7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ251bWJlcicpO1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnc3RlcCcsICcxJyk7IC8vIGludGVnZXJzIG9ubHlcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGdvdFByZWYpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2VudW0nOiB7XG5cdFx0XHRcdFx0XHRcdC8vIGNyZWF0ZSBhIGNvbWJvIGJveFxuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdC8vIG5vdGU6IGR1cGxpY2F0ZXMgdGhlIGNvZGUgYWJvdmUsIHVuZGVyIHN0cmluZy9pbnRlZ2VyXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBpbnB1dCBib3ggdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGxldCBvcHRpb25FeGlzdHMgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBbZW51bXZhbHVlLCBlbnVtZGlzcGxheV0gb2YgT2JqZWN0LmVudHJpZXMocHJlZi5lbnVtVmFsdWVzKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgZW51bXZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmID09PSBlbnVtdmFsdWUgfHxcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhY2sgdG8gY29udmVydCBvbGQgYm9vbGVhbiB3YXRjaGxpc3QgcHJlZnNcblx0XHRcdFx0XHRcdFx0XHRcdC8vIHRvIGNvcnJlc3BvbmRpbmcgZW51bXMgKGFkZGVkIGluIHYyLjEpXG5cdFx0XHRcdFx0XHRcdFx0XHQodHlwZW9mIGdvdFByZWYgPT09ICdib29sZWFuJyAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoKGdvdFByZWYgJiYgZW51bXZhbHVlID09PSAneWVzJykgfHwgKCFnb3RQcmVmICYmIGVudW12YWx1ZSA9PT0gJ25vJykpKVxuXHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCAnc2VsZWN0ZWQnKTtcblx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbkV4aXN0cyA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlbnVtZGlzcGxheSkpO1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LmFwcGVuZENoaWxkKG9wdGlvbik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Ly8gQXBwZW5kIHVzZXItZGVmaW5lZCB2YWx1ZSB0byBvcHRpb25zXG5cdFx0XHRcdFx0XHRcdGlmICghb3B0aW9uRXhpc3RzKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBnb3RQcmVmKTtcblx0XHRcdFx0XHRcdFx0XHRvcHRpb24uc2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpO1xuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnb3RQcmVmKSk7XG5cdFx0XHRcdFx0XHRcdFx0aW5wdXQuYXBwZW5kQ2hpbGQob3B0aW9uKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGlucHV0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlICdzZXQnOiB7XG5cdFx0XHRcdFx0XHRcdC8vIGNyZWF0ZSBhIHNldCBvZiBjaGVjayBib3hlc1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgZmlyc3Qgb2YgYWxsXG5cdFx0XHRcdFx0XHRcdGNlbGwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgJzInKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpOyAvLyBub3QgcmVhbGx5IG5lY2Vzc2FyeSB0byB1c2UgYSBsYWJlbCBlbGVtZW50IGhlcmUsIGJ1dCB3ZSBkbyBpdCBmb3IgY29uc2lzdGVuY3kgb2Ygc3R5bGluZ1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgJHtwcmVmLmxhYmVsfe+8mmApKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5hcHBlbmRDaGlsZChsYWJlbCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNoZWNrZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0XHRcdGNoZWNrZGl2LnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzFlbSc7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHdvcmtlciA9IChpdGVta2V5LCBpdGVtdmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjaGVja2xhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTtcblx0XHRcdFx0XHRcdFx0XHRjaGVja2xhYmVsLnN0eWxlLm1hcmdpblJpZ2h0ID0gJzAuN2VtJztcblx0XHRcdFx0XHRcdFx0XHRjaGVja2xhYmVsLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjaGVjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2suc2V0QXR0cmlidXRlKCd0eXBlJywgJ2NoZWNrYm94Jyk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2suc2V0QXR0cmlidXRlKCdpZCcsIGAke3ByZWYubmFtZX1fJHtpdGVta2V5fWApO1xuXHRcdFx0XHRcdFx0XHRcdGNoZWNrLnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke3ByZWYubmFtZX1fJHtpdGVta2V5fWApO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChnb3RQcmVmICYmIGdvdFByZWYuaW5jbHVkZXMoaXRlbWtleSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNoZWNrLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBjYXRlciBmb3IgbGVnYWN5IGludGVnZXIgYXJyYXkgdmFsdWVzIGZvciB1bmxpbmtOYW1lc3BhY2VzICh0aGlzIGNhbiBiZSByZW1vdmVkIGEgZmV3IHllYXJzIGRvd24gdGhlIHRyYWNrLi4uKVxuXHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdHByZWYubmFtZSA9PT0gJ3VubGlua05hbWVzcGFjZXMnICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRnb3RQcmVmLmluY2x1ZGVzKE51bWJlci5wYXJzZUludChpdGVta2V5LCAxMCkpXG5cdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGVjay5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tsYWJlbC5hcHBlbmRDaGlsZChjaGVjayk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpdGVtdmFsdWUpKTtcblx0XHRcdFx0XHRcdFx0XHRjaGVja2Rpdi5hcHBlbmRDaGlsZChjaGVja2xhYmVsKTtcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0aWYgKHByZWYuc2V0RGlzcGxheU9yZGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gYWRkIGNoZWNrIGJveGVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZGlzcGxheSBvcmRlclxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBwcmVmLnNldERpc3BsYXlPcmRlcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0d29ya2VyKGl0ZW0sIHByZWYuc2V0VmFsdWVzW2l0ZW1dKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gYWRkIGNoZWNrIGJveGVzIGFjY29yZGluZyB0byB0aGUgb3JkZXIgaXQgZ2V0cyBmZWQgdG8gdXMgKHByb2JhYmx5IHN0cmljdCBhbHBoYWJldGljYWwpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBbaXRlbWtleSwgaXRlbXZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcmVmLnNldFZhbHVlcykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdvcmtlcihpdGVta2V5LCBpdGVtdmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGNoZWNrZGl2KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlICdjdXN0b21MaXN0Jzoge1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbGFiZWwgdG8gZmlyc3QgY29sdW1uXG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUudGV4dEFsaWduID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC41ZW0nO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBidXR0b24gdG8gc2Vjb25kIGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRcdFx0Y2VsbC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMWVtJztcblx0XHRcdFx0XHRcdFx0Y29uc3QgY3VzdG9tTGlzdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLnNldEF0dHJpYnV0ZSgnaWQnLCBwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGN1c3RvbUxpc3RCdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgVHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5kaXNwbGF5LCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdC8vIHVzZSBqUXVlcnkgZGF0YSBvbiB0aGUgYnV0dG9uIHRvIHN0b3JlIHRoZSBjdXJyZW50IGNvbmZpZyB2YWx1ZVxuXHRcdFx0XHRcdFx0XHQkKGN1c3RvbUxpc3RCdXR0b24pLmRhdGEoe1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBnb3RQcmVmLFxuXHRcdFx0XHRcdFx0XHRcdHByZWYsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn57yW6L6R6aG555uuJywgJ+e3qOi8r+mgheebricpKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQoY3VzdG9tTGlzdEJ1dHRvbik7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoYHR3aW5rbGVjb25maWc6IOacquefpeexu+Wei+eahOWxnuaApyAke3ByZWYubmFtZX1gLCB7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVjb25maWcnLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJvdy5hcHBlbmRDaGlsZChjZWxsKTtcblx0XHRcdFx0XHQvLyBhZGQgaGVscCB0aXBcblx0XHRcdFx0XHRjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRcdFx0XHRjZWxsLnN0eWxlLmZvbnRTaXplID0gJzkwJSc7XG5cdFx0XHRcdFx0Y2VsbC5zdHlsZS5jb2xvciA9ICdncmF5Jztcblx0XHRcdFx0XHRpZiAocHJlZi5oZWxwdGlwKSB7XG5cdFx0XHRcdFx0XHQvLyBjb252ZXJ0IG1lbnRpb25zIG9mIHRlbXBsYXRlcyBpbiB0aGUgaGVscHRpcCB0byBjbGlja2FibGUgbGlua3Ncblx0XHRcdFx0XHRcdGNlbGwuaW5uZXJIVE1MID0gcHJlZi5oZWxwdGlwXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0XHRcdC97eyguKz8pfX0vZyxcblx0XHRcdFx0XHRcdFx0XHRge3s8YSBocmVmPVwiJHttdy51dGlsLmdldFVybCgnVGVtcGxhdGU6Jyl9JDFcIiByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiPiQxPC9hPn19YFxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0XHRcdC9cXFtcXFsoLis/KV1dL2csXG5cdFx0XHRcdFx0XHRcdFx0YDxhIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKCcnKX0kMVwiIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JDE8L2E+YFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBhZGQgcmVzZXQgbGluayAoY3VzdG9tIGxpc3RzIGRvbid0IG5lZWQgdGhpcywgYXMgdGhlaXIgY29uZmlnIHZhbHVlIGlzbid0IGRpc3BsYXllZCBvbiB0aGUgZm9ybSlcblx0XHRcdFx0XHRpZiAocHJlZi50eXBlICE9PSAnY3VzdG9tTGlzdCcpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJlc2V0bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0XHRcdHJlc2V0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnI3R3LXJlc2V0Jyk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuc2V0QXR0cmlidXRlKCdpZCcsIGB0d2lua2xlLWNvbmZpZy1yZXNldC0ke3ByZWYubmFtZX1gKTtcblx0XHRcdFx0XHRcdHJlc2V0bGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZkxpbmssIGZhbHNlKTtcblx0XHRcdFx0XHRcdHJlc2V0bGluay5zdHlsZS5jc3NGbG9hdCA9ICdyaWdodCc7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuc3R5bGUubWFyZ2luID0gJzAgMC42ZW0nO1xuXHRcdFx0XHRcdFx0cmVzZXRsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn5aSN5L2NJywgJ+W+qeS9jScpKSk7XG5cdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKHJlc2V0bGluayk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJvdy5hcHBlbmRDaGlsZChjZWxsKTtcblx0XHRcdFx0XHRjb250YWluZXIuYXBwZW5kQ2hpbGQocm93KTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBmb290ZXJib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdGZvb3RlcmJveC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R3aW5rbGUtY29uZmlnLWJ1dHRvbnBhbmUnKTtcblx0XHRcdGZvb3RlcmJveC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI0JDQ0FERic7XG5cdFx0XHRmb290ZXJib3guc3R5bGUucGFkZGluZyA9ICcwLjVlbSc7XG5cdFx0XHRjb25zdCBzdWJtaXRCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRcdHN1Ym1pdEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R3aW5rbGUtY29uZmlnLXN1Ym1pdCcpO1xuXHRcdFx0c3VibWl0QnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdzdWJtaXQnKTtcblx0XHRcdHN1Ym1pdEJ1dHRvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aW5kb3cud2dVTFMoJ+S/neWtmOS/ruaUuScsICflhLLlrZjkv67mlLknKSkpO1xuXHRcdFx0Zm9vdGVyYm94LmFwcGVuZENoaWxkKHN1Ym1pdEJ1dHRvbik7XG5cdFx0XHRjb25zdCBmb290ZXJzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0Zm9vdGVyc3Bhbi5jbGFzc05hbWUgPSAncGxhaW5saW5rcyc7XG5cdFx0XHRmb290ZXJzcGFuLnN0eWxlLm1hcmdpbkxlZnQgPSAnMi40ZW0nO1xuXHRcdFx0Zm9vdGVyc3Bhbi5zdHlsZS5mb250U2l6ZSA9ICc5MCUnO1xuXHRcdFx0Y29uc3QgZm9vdGVyYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdGZvb3RlcmEuc2V0QXR0cmlidXRlKCdocmVmJywgJyN0dy1yZXNldC1hbGwnKTtcblx0XHRcdGZvb3RlcmEuc2V0QXR0cmlidXRlKCdpZCcsICd0d2lua2xlLWNvbmZpZy1yZXNldGFsbCcpO1xuXHRcdFx0Zm9vdGVyYS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIFR3aW5rbGUuY29uZmlnLnJlc2V0QWxsUHJlZnMsIGZhbHNlKTtcblx0XHRcdGZvb3RlcmEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCfmgaLlpI3pu5jorqQnLCAn5oGi5b6p6aCQ6KitJykpKTtcblx0XHRcdGZvb3RlcnNwYW4uYXBwZW5kQ2hpbGQoZm9vdGVyYSk7XG5cdFx0XHRmb290ZXJib3guYXBwZW5kQ2hpbGQoZm9vdGVyc3Bhbik7XG5cdFx0XHRjb250ZW50Zm9ybS5hcHBlbmRDaGlsZChmb290ZXJib3gpO1xuXHRcdFx0Ly8gc2luY2UgYWxsIHRoZSBzZWN0aW9uIGhlYWRlcnMgZXhpc3Qgbm93LCB3ZSBjYW4gdHJ5IGdvaW5nIHRvIHRoZSByZXF1ZXN0ZWQgYW5jaG9yXG5cdFx0XHRpZiAod2luZG93LmxvY2F0aW9uLmhhc2gpIHtcblx0XHRcdFx0Y29uc3QgbG9jID0gd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyc7XG5cdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gbG9jO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpLnVzZXIgJiZcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKS5pbmRleE9mKG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSkgPT09IDAgJiZcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKS5zbGljZSgtMykgPT09ICcuanMnXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdC8vIFN0eWxlZCBpbiB0d2lua2xlLmNzc1xuXHRcdFx0Ym94LnNldEF0dHJpYnV0ZSgnaWQnLCAndHdpbmtsZS1jb25maWctaGVhZGVyYm94Jyk7XG5cdFx0XHRsZXQgbGluaztcblx0XHRcdGNvbnN0IHNjcmlwdFBhZ2VOYW1lID0gbXcuY29uZmlnXG5cdFx0XHRcdC5nZXQoJ3dnUGFnZU5hbWUnKVxuXHRcdFx0XHQuc2xpY2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLmxhc3RJbmRleE9mKCcvJykgKyAxLFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKS5sYXN0SW5kZXhPZignLmpzJylcblx0XHRcdFx0KTtcblx0XHRcdGlmIChzY3JpcHRQYWdlTmFtZSA9PT0gJ3R3aW5rbGVvcHRpb25zJykge1xuXHRcdFx0XHQvLyBwbGFjZSBcIndoeSBub3QgdHJ5IHRoZSBwcmVmZXJlbmNlIHBhbmVsXCIgbm90aWNlXG5cdFx0XHRcdGJveC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2NvbmZpZy10d29wdC1ib3gnKTtcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgPiAwKSB7XG5cdFx0XHRcdFx0Ly8gcGFnZSBleGlzdHNcblx0XHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0XHRkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfov5npobXljIXlkKvmgqjnmoRUd2lua2xl5Y+C5pWw6K6+572u77yM5oKo5Y+v5L2/55SoJyxcblx0XHRcdFx0XHRcdFx0XHQn6YCZ6aCB5YyF5ZCr5oKo55qEVHdpbmtsZeWBj+WlveioreWumu+8jOaCqOWPr+S9v+eUqCdcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gcGFnZSBkb2VzIG5vdCBleGlzdFxuXHRcdFx0XHRcdGJveC5hcHBlbmRDaGlsZChcblx0XHRcdFx0XHRcdGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOWPr+mFjee9ruaCqOeahFR3aW5rbGXvvIzpgJrov4fkvb/nlKgnLCAn5oKo5Y+v6YWN572u5oKo55qEVHdpbmtsZe+8jOmAmumBjuS9v+eUqCcpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKFR3aW5rbGUuZ2V0UHJlZignY29uZmlnUGFnZScpKSk7XG5cdFx0XHRcdGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCdUd2lua2xl5Y+C5pWw6K6+572u6Z2i5p2/JywgJ1R3aW5rbGXlgY/lpb3oqK3lrprpnaLmnb8nKSkpO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQobGluayk7XG5cdFx0XHRcdGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aW5kb3cud2dVTFMoJ++8jOaIluebtOaOpee8lui+keacrOmhteOAgicsICfvvIzmiJbnm7TmjqXnt6jovK/mnKzpoIHjgIInKSkpO1xuXHRcdFx0XHQkKGJveCkuaW5zZXJ0QWZ0ZXIoJGJvZHkuZmluZCgnI2NvbnRlbnRTdWInKSk7XG5cdFx0XHR9IGVsc2UgaWYgKFsndmVjdG9yJywgJ3ZlY3Rvci0yMDIyJywgJ2dvbmdiaScsICdjaXRpemVuJywgJ2NvbW1vbiddLmluY2x1ZGVzKHNjcmlwdFBhZ2VOYW1lKSkge1xuXHRcdFx0XHQvLyBwbGFjZSBcIkxvb2tpbmcgZm9yIFR3aW5rbGUgb3B0aW9ucz9cIiBub3RpY2Vcblx0XHRcdFx0Ym94LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnY29uZmlnLXVzZXJza2luLWJveCcpO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iLpeaCqOaDs+mFjee9ruaCqOeahFR3aW5rbGXvvIzor7fkvb/nlKgnLCAn6Iul5oKo5oOz6YWN572u5oKo55qEVHdpbmtsZe+8jOiri+S9v+eUqCcpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKFR3aW5rbGUuZ2V0UHJlZignY29uZmlnUGFnZScpKSk7XG5cdFx0XHRcdGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCdUd2lua2xl5Y+C5pWw6K6+572u6Z2i5p2/JywgJ1R3aW5rbGXlgY/lpb3oqK3lrprpnaLmnb8nKSkpO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQobGluayk7XG5cdFx0XHRcdGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn44CCJykpO1xuXHRcdFx0XHQkKGJveCkuaW5zZXJ0QWZ0ZXIoJGJvZHkuZmluZCgnI2NvbnRlbnRTdWInKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQvLyBjdXN0b20gbGlzdC1yZWxhdGVkIHN0dWZmXG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cgPSB7fTtcblx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5hZGRSb3cgPSAoZGxndGFibGUsIHZhbHVlLCBsYWJlbCkgPT4ge1xuXHRcdGNvbnN0IGNvbnRlbnR0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0Ly8gXCJyZW1vdmVcIiBidXR0b25cblx0XHRsZXQgY29udGVudHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRjb25zdCByZW1vdmVCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRyZW1vdmVCdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuXHRcdHJlbW92ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0J2NsaWNrJyxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0JChjb250ZW50dHIpLnJlbW92ZSgpO1xuXHRcdFx0fSxcblx0XHRcdGZhbHNlXG5cdFx0KTtcblx0XHRyZW1vdmVCdXR0b24udGV4dENvbnRlbnQgPSAn56e76ZmkJztcblx0XHRjb250ZW50dGQuYXBwZW5kQ2hpbGQocmVtb3ZlQnV0dG9uKTtcblx0XHRjb250ZW50dHIuYXBwZW5kQ2hpbGQoY29udGVudHRkKTtcblx0XHQvLyB2YWx1ZSBpbnB1dCBib3hcblx0XHRjb250ZW50dGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuXHRcdGxldCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG5cdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKTtcblx0XHRpbnB1dC5jbGFzc05hbWUgPSAndHdpbmtsZS1jb25maWctY3VzdG9tbGlzdC12YWx1ZSc7XG5cdFx0aW5wdXQuc3R5bGUud2lkdGggPSAnOTclJztcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndmFsdWUnLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdGNvbnRlbnR0ZC5hcHBlbmRDaGlsZChpbnB1dCk7XG5cdFx0Y29udGVudHRyLmFwcGVuZENoaWxkKGNvbnRlbnR0ZCk7XG5cdFx0Ly8gbGFiZWwgaW5wdXQgYm94XG5cdFx0Y29udGVudHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG5cdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKTtcblx0XHRpbnB1dC5jbGFzc05hbWUgPSAndHdpbmtsZS1jb25maWctY3VzdG9tbGlzdC1sYWJlbCc7XG5cdFx0aW5wdXQuc3R5bGUud2lkdGggPSAnOTglJztcblx0XHRpZiAobGFiZWwpIHtcblx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndmFsdWUnLCBsYWJlbCk7XG5cdFx0fVxuXHRcdGNvbnRlbnR0ZC5hcHBlbmRDaGlsZChpbnB1dCk7XG5cdFx0Y29udGVudHRyLmFwcGVuZENoaWxkKGNvbnRlbnR0ZCk7XG5cdFx0ZGxndGFibGUuYXBwZW5kQ2hpbGQoY29udGVudHRyKTtcblx0fTtcblx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5kaXNwbGF5ID0gKGUpID0+IHtcblx0XHRjb25zdCAkcHJlZmJ1dHRvbiA9ICQoZS50YXJnZXQpO1xuXHRcdGNvbnN0IGN1cnZhbHVlID0gJHByZWZidXR0b24uZGF0YSgndmFsdWUnKTtcblx0XHRjb25zdCBjdXJwcmVmID0gJHByZWZidXR0b24uZGF0YSgncHJlZicpO1xuXHRcdGNvbnN0IGRpYWxvZyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNzIwLCA0MDApO1xuXHRcdGRpYWxvZy5zZXRUaXRsZShjdXJwcmVmLmxhYmVsKTtcblx0XHRkaWFsb2cuc2V0U2NyaXB0TmFtZSh3aW5kb3cud2dVTFMoJ1R3aW5rbGXlj4LmlbDorr7nva4nLCAnVHdpbmtsZeWBj+WlveioreWumicpKTtcblx0XHRjb25zdCBkaWFsb2djb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0Y29uc3QgZGxndGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpO1xuXHRcdGRsZ3RhYmxlLmNsYXNzTmFtZSA9ICd3aWtpdGFibGUnO1xuXHRcdGRsZ3RhYmxlLnN0eWxlLm1hcmdpbiA9ICcxLjRlbSAxZW0nO1xuXHRcdGRsZ3RhYmxlLnN0eWxlLndpZHRoID0gJzk3JSc7XG5cdFx0Y29uc3QgZGxndGJvZHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0Ym9keScpO1xuXHRcdC8vIGhlYWRlciByb3dcblx0XHRsZXQgZGxndHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuXHRcdC8vIHRvcC1sZWZ0IGNlbGxcblx0XHRsZXQgZGxndGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aCcpO1xuXHRcdGRsZ3RoLnN0eWxlLndpZHRoID0gJzUlJztcblx0XHRkbGd0ci5hcHBlbmRDaGlsZChkbGd0aCk7XG5cdFx0Ly8gdmFsdWUgY29sdW1uIGhlYWRlclxuXHRcdGRsZ3RoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGgnKTtcblx0XHRkbGd0aC5zdHlsZS53aWR0aCA9ICczNSUnO1xuXHRcdGRsZ3RoLnRleHRDb250ZW50ID0gY3VycHJlZi5jdXN0b21MaXN0VmFsdWVUaXRsZSA/PyB3aW5kb3cud2dVTFMoJ+aVsOWAvCcsICfmlbjlgLwnKTtcblx0XHRkbGd0ci5hcHBlbmRDaGlsZChkbGd0aCk7XG5cdFx0Ly8gbGFiZWwgY29sdW1uIGhlYWRlclxuXHRcdGRsZ3RoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGgnKTtcblx0XHRkbGd0aC5zdHlsZS53aWR0aCA9ICc2MCUnO1xuXHRcdGRsZ3RoLnRleHRDb250ZW50ID0gY3VycHJlZi5jdXN0b21MaXN0TGFiZWxUaXRsZSA/PyB3aW5kb3cud2dVTFMoJ+agh+etvicsICfmqJnnsaQnKTtcblx0XHRkbGd0ci5hcHBlbmRDaGlsZChkbGd0aCk7XG5cdFx0ZGxndGJvZHkuYXBwZW5kQ2hpbGQoZGxndHIpO1xuXHRcdC8vIGNvbnRlbnQgcm93c1xuXHRcdGxldCBnb3RSb3cgPSBmYWxzZTtcblx0XHRmb3IgKGNvbnN0IHYgb2YgY3VydmFsdWUpIHtcblx0XHRcdGdvdFJvdyA9IHRydWU7XG5cdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLmFkZFJvdyhkbGd0Ym9keSwgdi52YWx1ZSwgdi5sYWJlbCk7XG5cdFx0fVxuXHRcdC8vIGlmIHRoZXJlIGFyZSBubyB2YWx1ZXMgcHJlc2VudCwgYWRkIGEgYmxhbmsgcm93IHRvIHN0YXJ0IHRoZSB1c2VyIG9mZlxuXHRcdGlmICghZ290Um93KSB7XG5cdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLmFkZFJvdyhkbGd0Ym9keSk7XG5cdFx0fVxuXHRcdC8vIGZpbmFsIFwiYWRkXCIgYnV0dG9uXG5cdFx0Y29uc3QgZGxndGZvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0Zm9vdCcpO1xuXHRcdGRsZ3RyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcblx0XHRjb25zdCBkbGd0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0ZGxndGQuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgJzMnKTtcblx0XHRjb25zdCBhZGRCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRhZGRCdXR0b24uc3R5bGUubWluV2lkdGggPSAnOGVtJztcblx0XHRhZGRCdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuXHRcdGFkZEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0J2NsaWNrJyxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5hZGRSb3coZGxndGJvZHkpO1xuXHRcdFx0fSxcblx0XHRcdGZhbHNlXG5cdFx0KTtcblx0XHRhZGRCdXR0b24udGV4dENvbnRlbnQgPSAn5re75YqgJztcblx0XHRkbGd0ZC5hcHBlbmRDaGlsZChhZGRCdXR0b24pO1xuXHRcdGRsZ3RyLmFwcGVuZENoaWxkKGRsZ3RkKTtcblx0XHRkbGd0Zm9vdC5hcHBlbmRDaGlsZChkbGd0cik7XG5cdFx0ZGxndGFibGUuYXBwZW5kQ2hpbGQoZGxndGJvZHkpO1xuXHRcdGRsZ3RhYmxlLmFwcGVuZENoaWxkKGRsZ3Rmb290KTtcblx0XHRkaWFsb2djb250ZW50LmFwcGVuZENoaWxkKGRsZ3RhYmxlKTtcblx0XHQvLyBidXR0b25wYW5lIGJ1dHRvbnM6IFtTYXZlIGNoYW5nZXNdIFtSZXNldF0gW0NhbmNlbF1cblx0XHRsZXQgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdzdWJtaXQnKTsgLy8gc28gTW9yZWJpdHMuc2ltcGxlV2luZG93IHB1dHMgdGhlIGJ1dHRvbiBpbiB0aGUgYnV0dG9uIHBhbmVcblx0XHRidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuc2F2ZSgkcHJlZmJ1dHRvbiwgZGxndGJvZHkpO1xuXHRcdFx0XHRkaWFsb2cuY2xvc2UoKTtcblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0YnV0dG9uLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfkv53lrZjkv67mlLknLCAn5YSy5a2Y5L+u5pS5Jyk7XG5cdFx0ZGlhbG9nY29udGVudC5hcHBlbmRDaGlsZChidXR0b24pO1xuXHRcdGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuXHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7IC8vIHNvIE1vcmViaXRzLnNpbXBsZVdpbmRvdyBwdXRzIHRoZSBidXR0b24gaW4gdGhlIGJ1dHRvbiBwYW5lXG5cdFx0YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHQnY2xpY2snLFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLnJlc2V0KCRwcmVmYnV0dG9uLCBkbGd0Ym9keSk7XG5cdFx0XHR9LFxuXHRcdFx0ZmFsc2Vcblx0XHQpO1xuXHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn5aSN5L2NJywgJ+W+qeS9jScpO1xuXHRcdGRpYWxvZ2NvbnRlbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcblx0XHRidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRidXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ3N1Ym1pdCcpOyAvLyBzbyBNb3JlYml0cy5zaW1wbGVXaW5kb3cgcHV0cyB0aGUgYnV0dG9uIGluIHRoZSBidXR0b24gcGFuZVxuXHRcdGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0J2NsaWNrJyxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0ZGlhbG9nLmNsb3NlKCk7IC8vIHRoZSBldmVudCBwYXJhbWV0ZXIgb24gdGhpcyBmdW5jdGlvbiBzZWVtcyB0byBiZSBicm9rZW5cblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0YnV0dG9uLnRleHRDb250ZW50ID0gJ+WPlua2iCc7XG5cdFx0ZGlhbG9nY29udGVudC5hcHBlbmRDaGlsZChidXR0b24pO1xuXHRcdGRpYWxvZy5zZXRDb250ZW50KGRpYWxvZ2NvbnRlbnQpO1xuXHRcdGRpYWxvZy5kaXNwbGF5KCk7XG5cdH07XG5cdC8vIFJlc2V0cyB0aGUgZGF0YSB2YWx1ZSwgcmUtcG9wdWxhdGVzIGJhc2VkIG9uIHRoZSBuZXcgKGRlZmF1bHQpIHZhbHVlLCB0aGVuIHNhdmVzIHRoZVxuXHQvLyBvbGQgZGF0YSB2YWx1ZSBhZ2FpbiAobGVzcyBzdXJwcmlzaW5nIGJlaGF2aW91cilcblx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5yZXNldCA9IChidXR0b24sIHRib2R5KSA9PiB7XG5cdFx0Ly8gcmVzZXQgdmFsdWUgb24gYnV0dG9uXG5cdFx0Y29uc3QgJGJ1dHRvbiA9ICQoYnV0dG9uKTtcblx0XHRjb25zdCBjdXJwcmVmID0gJGJ1dHRvbi5kYXRhKCdwcmVmJyk7XG5cdFx0Y29uc3Qgb2xkdmFsdWUgPSAkYnV0dG9uLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0VHdpbmtsZS5jb25maWcucmVzZXRQcmVmKGN1cnByZWYpO1xuXHRcdC8vIHJlc2V0IGZvcm1cblx0XHRjb25zdCAkdGJvZHkgPSAkKHRib2R5KTtcblx0XHQkdGJvZHkuZmluZCgndHInKS5zbGljZSgxKS5yZW1vdmUoKTsgLy8gYWxsIHJvd3MgZXhjZXB0IHRoZSBmaXJzdCAoaGVhZGVyKSByb3dcblx0XHQvLyBhZGQgdGhlIG5ldyB2YWx1ZXNcblx0XHRjb25zdCBjdXJ2YWx1ZSA9ICRidXR0b24uZGF0YSgndmFsdWUnKTtcblx0XHRmb3IgKGNvbnN0IHYgb2YgY3VydmFsdWUpIHtcblx0XHRcdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuYWRkUm93KHRib2R5LCB2LnZhbHVlLCB2LmxhYmVsKTtcblx0XHR9XG5cdFx0Ly8gc2F2ZSB0aGUgb2xkIHZhbHVlXG5cdFx0JGJ1dHRvbi5kYXRhKCd2YWx1ZScsIG9sZHZhbHVlKTtcblx0fTtcblx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5zYXZlID0gKGJ1dHRvbiwgdGJvZHkpID0+IHtcblx0XHRjb25zdCByZXN1bHQgPSBbXTtcblx0XHRsZXQgY3VycmVudCA9IHt9O1xuXHRcdCQodGJvZHkpXG5cdFx0XHQuZmluZCgnaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuXHRcdFx0LmVhY2goKGlucHV0a2V5LCBpbnB1dCkgPT4ge1xuXHRcdFx0XHRpZiAoJChpbnB1dCkuaGFzQ2xhc3MoJ3R3aW5rbGUtY29uZmlnLWN1c3RvbWxpc3QtdmFsdWUnKSkge1xuXHRcdFx0XHRcdGN1cnJlbnQgPSB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogaW5wdXQudmFsdWUsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdXJyZW50LmxhYmVsID0gaW5wdXQudmFsdWU7XG5cdFx0XHRcdFx0Ly8gZXhjbHVkZSB0b3RhbGx5IGVtcHR5IHJvd3Ncblx0XHRcdFx0XHRpZiAoY3VycmVudC52YWx1ZSB8fCBjdXJyZW50LmxhYmVsKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBjdXJyZW50O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0JChidXR0b24pLmRhdGEoJ3ZhbHVlJywgcmVzdWx0KTtcblx0fTtcblx0Ly8gcmVzZXQvcmVzdG9yZSBkZWZhdWx0c1xuXHRUd2lua2xlLmNvbmZpZy5yZXNldFByZWZMaW5rID0gKGUpID0+IHtcblx0XHRjb25zdCB3YW50ZWRwcmVmID0gZS50YXJnZXQuaWQuc2xpY2UoMjEpOyAvLyBcInR3aW5rbGUtY29uZmlnLXJlc2V0LVwiIHByZWZpeCBpcyBzdHJpcHBlZFxuXHRcdC8vIHNlYXJjaCB0YWN0aWNzXG5cdFx0JChUd2lua2xlLmNvbmZpZy5zZWN0aW9ucykuZWFjaCgoc2VjdGlvbmtleSwgc2VjdGlvbikgPT4ge1xuXHRcdFx0aWYgKHNlY3Rpb24uaGlkZGVuIHx8IChzZWN0aW9uLmFkbWluT25seSAmJiAhTW9yZWJpdHMudXNlcklzU3lzb3ApKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlOyAvLyBjb250aW51ZTogc2tpcCBpbXBvc3NpYmlsaXRpZXNcblx0XHRcdH1cblxuXHRcdFx0bGV0IGZvdW5kaXQgPSBmYWxzZTtcblx0XHRcdCQoc2VjdGlvbi5wcmVmZXJlbmNlcykuZWFjaCgocHJlZmtleSwgcHJlZikgPT4ge1xuXHRcdFx0XHRpZiAocHJlZi5uYW1lICE9PSB3YW50ZWRwcmVmKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGNvbnRpbnVlXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRUd2lua2xlLmNvbmZpZy5yZXNldFByZWYocHJlZik7XG5cdFx0XHRcdGZvdW5kaXQgPSB0cnVlO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7IC8vIGJyZWFrXG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKGZvdW5kaXQpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBicmVha1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGZhbHNlOyAvLyBzdG9wIGxpbmsgZnJvbSBzY3JvbGxpbmcgcGFnZVxuXHR9O1xuXG5cdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZiA9IChwcmVmKSA9PiB7XG5cdFx0c3dpdGNoIChwcmVmLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2Jvb2xlYW4nOlxuXHRcdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtwcmVmLm5hbWV9YCkuY2hlY2tlZCA9IFR3aW5rbGUuZGVmYXVsdENvbmZpZ1twcmVmLm5hbWVdO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3N0cmluZyc6XG5cdFx0XHRjYXNlICdpbnRlZ2VyJzpcblx0XHRcdGNhc2UgJ2VudW0nOlxuXHRcdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtwcmVmLm5hbWV9YCkudmFsdWUgPSBUd2lua2xlLmRlZmF1bHRDb25maWdbcHJlZi5uYW1lXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzZXQnOlxuXHRcdFx0XHRmb3IgKGNvbnN0IFtpdGVta2V5XSBvZiBPYmplY3QuZW50cmllcyhwcmVmLnNldFZhbHVlcykpIHtcblx0XHRcdFx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7cHJlZi5uYW1lfV8ke2l0ZW1rZXl9YCkpIHtcblx0XHRcdFx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3ByZWYubmFtZX1fJHtpdGVta2V5fWApLmNoZWNrZWQgPVxuXHRcdFx0XHRcdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWdbcHJlZi5uYW1lXS5pbmNsdWRlcyhpdGVta2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdjdXN0b21MaXN0Jzpcblx0XHRcdFx0JChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtwcmVmLm5hbWV9YCkpLmRhdGEoJ3ZhbHVlJywgVHdpbmtsZS5kZWZhdWx0Q29uZmlnW3ByZWYubmFtZV0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGB0d2lua2xlY29uZmlnOiB1bmtub3duIGRhdGEgdHlwZSBmb3IgcHJlZmVyZW5jZSAke3ByZWYubmFtZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVjb25maWcnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNvbmZpZy5yZXNldEFsbFByZWZzID0gKCkgPT4ge1xuXHRcdC8vIG5vIGNvbmZpcm1hdGlvbiBtZXNzYWdlIC0gdGhlIHVzZXIgY2FuIGp1c3QgcmVmcmVzaC9jbG9zZSB0aGUgcGFnZSB0byBhYm9ydFxuXHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdGlmIChzZWN0aW9uLmhpZGRlbiB8fCAoc2VjdGlvbi5hZG1pbk9ubHkgJiYgIU1vcmViaXRzLnVzZXJJc1N5c29wKSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWU6IHNraXAgaW1wb3NzaWJpbGl0aWVzXG5cdFx0XHR9XG5cblx0XHRcdCQoc2VjdGlvbi5wcmVmZXJlbmNlcykuZWFjaCgocHJlZmtleSwgcHJlZikgPT4ge1xuXHRcdFx0XHRpZiAoIXByZWYuYWRtaW5Pbmx5IHx8IE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5jb25maWcucmVzZXRQcmVmKHByZWYpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0pO1xuXHRcdHJldHVybiBmYWxzZTsgLy8gc3RvcCBsaW5rIGZyb20gc2Nyb2xsaW5nIHBhZ2Vcblx0fTtcblxuXHRUd2lua2xlLmNvbmZpZy5zYXZlID0gKGUpID0+IHtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdHdpbmtsZS1jb25maWctY29udGVudCcpKTtcblx0XHRjb25zdCB1c2VyanMgPSBgJHttdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKVttdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpLnVzZXJdfToke213LmNvbmZpZy5nZXQoXG5cdFx0XHQnd2dVc2VyTmFtZSdcblx0XHQpfS90d2lua2xlb3B0aW9ucy5qc2A7XG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHVzZXJqcywgd2luZG93LndnVUxTKCfkv53lrZjlj4LmlbDorr7nva7liLAgJywgJ+WEsuWtmOWBj+WlveioreWumuWIsCAnKSArIHVzZXJqcyk7XG5cdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKGUudGFyZ2V0KTtcblx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuY29uZmlnLndyaXRlUHJlZnMpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcblx0VHdpbmtsZS5jb25maWcud3JpdGVQcmVmcyA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Ly8gdGhpcyBpcyB0aGUgb2JqZWN0IHdoaWNoIGdldHMgc2VyaWFsaXplZCBpbnRvIEpTT047IG9ubHlcblx0XHQvLyBwcmVmZXJlbmNlcyB0aGF0IHRoaXMgc2NyaXB0IGtub3dzIGFib3V0IGFyZSBrZXB0XG5cdFx0Y29uc3QgbmV3Q29uZmlnID0ge1xuXHRcdFx0b3B0aW9uc1ZlcnNpb246IDIuMSxcblx0XHR9O1xuXHRcdC8vIGEgY29tcGFyaXNvbiBmdW5jdGlvbiBpcyBuZWVkZWQgbGF0ZXIgb25cblx0XHQvLyBpdCBpcyBqdXN0IGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzIChpLmUuIGNvbXBhcmluZyBzdHJpbmdzLCBudW1iZXJzLCBib29sZWFucyxcblx0XHQvLyBhcnJheXMgb2Ygc3RyaW5ncywgYW5kIGFycmF5cyBvZiB7IHZhbHVlLCBsYWJlbCB9KVxuXHRcdC8vIGFuZCBpdCBpcyBub3QgdmVyeSByb2J1c3Q6IGUuZy4gY29tcGFyZShbMl0sIFtcIjJcIl0pID09PSB0cnVlLCBhbmRcblx0XHQvLyBjb21wYXJlKHt9LCB7fSkgPT09IGZhbHNlLCBidXQgaXQncyBnb29kIGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzIGhlcmVcblx0XHRjb25zdCBjb21wYXJlID0gKGEsIGIpID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG5cdFx0XHRcdGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0YS5zb3J0KCk7XG5cdFx0XHRcdGIuc29ydCgpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IFtpLCBlbGVtZW50XSBvZiBhLmVudHJpZXMoKSkge1xuXHRcdFx0XHRcdC8vIGNvbXBhcmlzb24gb2YgdGhlIHR3byBwcm9wZXJ0aWVzIG9mIGN1c3RvbSBsaXN0c1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCcgJiYgKGVsZW1lbnQubGFiZWwgIT09IGJbaV0ubGFiZWwgfHwgZWxlbWVudC52YWx1ZSAhPT0gYltpXS52YWx1ZSkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGVsZW1lbnQudG9TdHJpbmcoKSAhPT0gYltpXS50b1N0cmluZygpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGEgPT09IGI7XG5cdFx0fTtcblx0XHQkKFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zKS5lYWNoKChzZWN0aW9ua2V5LCBzZWN0aW9uKSA9PiB7XG5cdFx0XHRpZiAoc2VjdGlvbi5hZG1pbk9ubHkgJiYgIU1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gaS5lLiBcImNvbnRpbnVlXCIgaW4gdGhpcyBjb250ZXh0XG5cdFx0XHR9XG5cdFx0XHQvLyByZWFjaCBlYWNoIG9mIHRoZSBwcmVmZXJlbmNlcyBmcm9tIHRoZSBmb3JtXG5cdFx0XHQkKHNlY3Rpb24ucHJlZmVyZW5jZXMpLmVhY2goKHByZWZrZXksIHByZWYpID0+IHtcblx0XHRcdFx0bGV0IHVzZXJWYWx1ZTsgLy8gPSB1bmRlZmluZWRcblx0XHRcdFx0Ly8gb25seSByZWFkIGZvcm0gdmFsdWVzIGZvciB0aG9zZSBwcmVmcyB0aGF0IGhhdmUgdGhlbVxuXHRcdFx0XHRpZiAoIXByZWYuYWRtaW5Pbmx5IHx8IE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdFx0aWYgKCFzZWN0aW9uLmhpZGRlbikge1xuXHRcdFx0XHRcdFx0c3dpdGNoIChwcmVmLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0Y2FzZSAnYm9vbGVhbic6XG5cdFx0XHRcdFx0XHRcdFx0Ly8gcmVhZCBmcm9tIHRoZSBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJWYWx1ZSA9IGZvcm1bcHJlZi5uYW1lXS5jaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlICdzdHJpbmcnOiAvLyByZWFkIGZyb20gdGhlIGlucHV0IGJveCBvciBjb21ibyBib3hcblx0XHRcdFx0XHRcdFx0Y2FzZSAnZW51bSc6XG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gZm9ybVtwcmVmLm5hbWVdLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlICdpbnRlZ2VyJzpcblx0XHRcdFx0XHRcdFx0XHQvLyByZWFkIGZyb20gdGhlIGlucHV0IGJveFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJWYWx1ZSA9IE51bWJlci5wYXJzZUludChmb3JtW3ByZWYubmFtZV0udmFsdWUsIDEwKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoTnVtYmVyLmlzTmFOKHVzZXJWYWx1ZSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/neWtmCcsICflhLLlrZgnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfmgqjkuLogJywgJ+aCqOeCuiAnKSArIHByZWYubmFtZX0g5oyH5a6a55qE5YC877yIJHtwcmVmLnZhbHVlfSR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCfvvInkuI3lkIjms5XvvIzkvJrnu6fnu63kv53lrZjmk43kvZzvvIzkvYbmraTlgLzlsIbkvJrot7Pov4fjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCfvvInkuI3lkIjms5XvvIzmnIPnubznuozlhLLlrZjmk43kvZzvvIzkvYbmraTlgLzlsIfmnIPot7PpgY7jgIInXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCl9YFxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJWYWx1ZSA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlICdzZXQnOlxuXHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgZnJvbSB0aGUgc2V0IG9mIGNoZWNrIGJveGVzXG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gW107XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHByZWYuc2V0RGlzcGxheU9yZGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyByZWFkIG9ubHkgdGhvc2Uga2V5cyBzcGVjaWZpZWQgaW4gdGhlIGRpc3BsYXkgb3JkZXJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBwcmVmLnNldERpc3BsYXlPcmRlcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZm9ybVtgJHtwcmVmLm5hbWV9XyR7aXRlbX1gXS5jaGVja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlW3VzZXJWYWx1ZS5sZW5ndGhdID0gaXRlbTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyByZWFkIGFsbCB0aGUga2V5cyBpbiB0aGUgbGlzdCBvZiB2YWx1ZXNcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2l0ZW1rZXldIG9mIE9iamVjdC5lbnRyaWVzKHByZWYuc2V0VmFsdWVzKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZm9ybVtgJHtwcmVmLm5hbWV9XyR7aXRlbWtleX1gXS5jaGVja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlW3VzZXJWYWx1ZS5sZW5ndGhdID0gaXRlbWtleTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSAnY3VzdG9tTGlzdCc6XG5cdFx0XHRcdFx0XHRcdFx0Ly8gcmVhZCBmcm9tIHRoZSBqUXVlcnkgZGF0YSBzdG9yZWQgb24gdGhlIGJ1dHRvbiBvYmplY3Rcblx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSAkKGZvcm1bcHJlZi5uYW1lXSkuZGF0YSgndmFsdWUnKTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeShgdHdpbmtsZWNvbmZpZzog5pyq55+l5pWw5o2u57G75Z6L77yM5bGe5oCnICR7cHJlZi5uYW1lfWAsIHtcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVjb25maWcnLFxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoVHdpbmtsZS5wcmVmcykge1xuXHRcdFx0XHRcdFx0Ly8gUmV0YWluIHRoZSBoaWRkZW4gcHJlZmVyZW5jZXMgdGhhdCBtYXkgaGF2ZSBjdXN0b21pc2VkIGJ5IHRoZSB1c2VyIGZyb20gdHdpbmtsZW9wdGlvbnMuanNcblx0XHRcdFx0XHRcdC8vIHVuZGVmaW5lZCBpZiBub3Qgc2V0XG5cdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSBUd2lua2xlLnByZWZzW3ByZWYubmFtZV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIG9ubHkgc2F2ZSB0aG9zZSBwcmVmZXJlbmNlcyB0aGF0IGFyZSAqZGlmZmVyZW50KiBmcm9tIHRoZSBkZWZhdWx0XG5cdFx0XHRcdGlmICh1c2VyVmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhY29tcGFyZSh1c2VyVmFsdWUsIFR3aW5rbGUuZGVmYXVsdENvbmZpZ1twcmVmLm5hbWVdKSkge1xuXHRcdFx0XHRcdG5ld0NvbmZpZ1twcmVmLm5hbWVdID0gdXNlclZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHRjb25zdCBub3dpa2kgPSAnbm93aWtpJztcblx0XHRsZXQgdGV4dCA9IGAvLyA8JHtub3dpa2l9PlxcbiR7d2luZG93LndnVUxTKFxuXHRcdFx0YC8vIHR3aW5rbGVvcHRpb25zLmpz77ya55So5oi3VHdpbmtsZeWPguaVsOiuvue9ruaWh+S7tlxcbi8vXFxuLy8g5rOo77ya5L+u5pS55oKo55qE5Y+C5pWw6K6+572u5pyA566A5Y2V55qE5Yqe5rOV5piv5L2/55SoXFxuLy8gVHdpbmtsZeWPguaVsOiuvue9rumdouadv++8jOWcqFtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV3jgIJcXG4vL1xcbi8vIOi/meS4quaWh+S7tuaYr+iHquWKqOeUn+aIkOeahO+8jOaCqOaJgOWBmueahOS7u+S9leS/ruaUue+8iOmZpOS6hlxcbi8vIOS7peS4gOenjeWQiOazleeahEphdmFTY3JpcHTnmoTmlrnlvI/mnaXkv67mlLnov5nkupvlsZ7mgKflgLzvvInkvJpcXG4vLyDlnKjkuIvkuIDmrKHmgqjngrnlh7vigJzkv53lrZjigJ3ml7booqvopobnm5bjgIJcXG4vLyDkv67mlLnmraTmlofku7bml7bvvIzor7forrDlvpfkvb/nlKjlkIjms5XnmoRKYXZhU2NyaXB044CCXFxuYCxcblx0XHRcdGAvLyB0d2lua2xlb3B0aW9ucy5qc++8muS9v+eUqOiAhVR3aW5rbGXlj4PmlbjoqK3lrprmqpTmoYhcXG4vL1xcbi8vIOiou++8muS/ruaUueaCqOeahOWPg+aVuOioreWumuacgOewoeWWrueahOi+puazleaYr+S9v+eUqFxcbi8vIFR3aW5rbGXlj4PmlbjoqK3lrprpnaLmnb/vvIzlnKhbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1d44CCXFxuLy9cXG4vLyDpgJnlgIvmqpTmoYjmmK/oh6rli5XnlKLnlJ/nmoTvvIzmgqjmiYDlgZrnmoTku7vkvZXkv67mlLnvvIjpmaTkuoZcXG4vLyDku6XkuIDnqK7lkIjms5XnmoRKYXZhU2NyaXB055qE5pa55byP5L6G5L+u5pS56YCZ5Lqb5bGs5oCn5YC877yJ5pyDXFxuLy8g5Zyo5LiL5LiA5qyh5oKo6bue5pOK44CM5YSy5a2Y44CN5pmC6KKr6KaG6JOL44CCXFxuLy8g5L+u5pS55q2k5qqU5qGI5pmC77yM6KuL6KiY5b6X5L2/55So5ZCI5rOV55qESmF2YVNjcmlwdOOAglxcbmBcblx0XHQpfWA7XG5cdFx0dGV4dCArPVxuXHRcdFx0J1xcbndpbmRvdy5Ud2lua2xlID0gd2luZG93LlR3aW5rbGUgfHwge307XFxud2luZG93LlR3aW5rbGUucHJlZnMgPSB3aW5kb3cuVHdpbmtsZS5wcmVmcyB8fCB7fTtcXG53aW5kb3cuVHdpbmtsZS5wcmVmcyA9ICc7XG5cdFx0dGV4dCArPSBKU09OLnN0cmluZ2lmeShuZXdDb25maWcsIG51bGwsIDIpO1xuXHRcdHRleHQgKz0gYDtcXG5cXG4ke3dpbmRvdy53Z1VMUygnLy8gdHdpbmtsZW9wdGlvbnMuanPliLDmraTkuLrmraJcXG4nLCAnLy8gdHdpbmtsZW9wdGlvbnMuanPliLDmraTngrrmraJcXG4nKX0vLyA8LyR7bm93aWtpfT5gO1xuXHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShcblx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2YVHdpbmtsZeWPguaVsOiuvue9ru+8muadpeiHqltbJywgJ+WEsuWtmFR3aW5rbGXlgY/lpb3oqK3lrprvvJrkvoboh6pbWycpICtcblx0XHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtICtcblx0XHRcdFx0d2luZG93LndnVUxTKCddXeeahOiHquWKqOe8lui+kScsICddXeeahOiHquWLlee3qOi8rycpXG5cdFx0KTtcblx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRwYWdlb2JqLnNhdmUoVHdpbmtsZS5jb25maWcuc2F2ZVN1Y2Nlc3MpO1xuXHR9O1xuXHRUd2lua2xlLmNvbmZpZy5zYXZlU3VjY2VzcyA9IChwYWdlb2JqKSA9PiB7XG5cdFx0cGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5oiQ5YqfJyk7XG5cdFx0Y29uc3Qgbm90aWNlYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0bm90aWNlYm94LmNsYXNzTmFtZSA9ICdtdy1tZXNzYWdlLWJveCBtdy1tZXNzYWdlLWJveC1zdWNjZXNzJztcblx0XHRub3RpY2Vib3guc3R5bGUuZm9udFNpemUgPSAnMTAwJSc7XG5cdFx0bm90aWNlYm94LnN0eWxlLm1hcmdpblRvcCA9ICcyZW0nO1xuXHRcdG5vdGljZWJveC5pbm5lckhUTUwgPSBgPHA+PGI+JHt3aW5kb3cud2dVTFMoXG5cdFx0XHQn5oKo55qEVHdpbmtsZeWPguaVsOiuvue9ruW3suiiq+S/neWtmOOAgicsXG5cdFx0XHQn5oKo55qEVHdpbmtsZeWBj+WlveioreWumuW3suiiq+WEsuWtmOOAgidcblx0XHQpfTwvYj48L3A+PHA+JHt3aW5kb3cud2dVTFMoJ+imgeeci+WIsOi/meS6m+abtOaUue+8jOaCqOWPr+iDvemcgOimgScsICfopoHnnIvliLDpgJnkupvmm7TmlLnvvIzmgqjlj6/og73pnIDopoEnKX08YSBocmVmPVwiJHttdy51dGlsLmdldFVybChcblx0XHRcdCdRVzpCWVBBU1MnXG5cdFx0KX1cIiB0aXRsZT1cIlFXOkJZUEFTU1wiPjxiPiR7d2luZG93LndnVUxTKCfnu5Xov4fmtY/op4jlmajnvJPlrZgnLCAn57me6YGO54CP6Ka95Zmo5b+r5Y+WJyl9PC9iPjwvYT7jgII8L3A+YDtcblx0XHRNb3JlYml0cy5zdGF0dXMucm9vdC5hcHBlbmRDaGlsZChub3RpY2Vib3gpO1xuXHRcdGNvbnN0IG5vdGljZWNsZWFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKTtcblx0XHRub3RpY2VjbGVhci5zdHlsZS5jbGVhciA9ICdib3RoJztcblx0XHRNb3JlYml0cy5zdGF0dXMucm9vdC5hcHBlbmRDaGlsZChub3RpY2VjbGVhcik7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuY29uZmlnLmluaXQpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgImltcG9ydCAnLi9Ud2lua2xlLmxlc3MnO1xuXG4oYXN5bmMgZnVuY3Rpb24gdHdpbmtsZUxvYWQoKSB7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGUnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWFydicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xld2FybicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlYmxvY2snKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvZnJpZW5kbHl0YWxrYmFjaycpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlc3BlZWR5Jyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVjb3B5dmlvJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGV4ZmQnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWltYWdlJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVwcm90ZWN0Jyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL2ZyaWVuZGx5dGFnJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVzdHViJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVkaWZmJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGV1bmxpbmsnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWZsdWZmJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGViYXRjaGRlbGV0ZScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlYmF0Y2h1bmRlbGV0ZScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlYmF0Y2hwcm90ZWN0Jyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVjbG9zZScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlY29uZmlnJyk7XG59KSgpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxrQkFBQSxDQUFBO0FBQUEsSUFBQUMsZUFBQUMsTUFBQTtFQUFBLG1DQUFBO0FBQUE7SUFFQTtBQUNBLEtBQUMsU0FBU0MsUUFBUUMsR0FBQUMsU0FBRztBQUNwQixZQUFNQyxRQUFRRixFQUFFLE1BQU07QUFDdEIsWUFBTUcsV0FBVSxDQUFDO0FBQ2pCLE9BQUFGLFVBQUFHLFFBQU9DLFlBQVBKLFFBQU9JLFVBQVlGO0FBR25CLFVBQUksQ0FBQ0csU0FBU0MsY0FBYyxlQUFlLEtBQUssQ0FBQ0QsU0FBU0MsY0FBYyxXQUFXLEdBQUc7QUFDckZDLGdCQUFRQyxLQUFLLHFDQUFxQztBQUNsRDtNQUNEO0FBTUFOLGVBQVFPLGFBQWE7QUFFckJQLGVBQVFRLFlBQVk7QUFFcEJSLGVBQVFTLGVBQ1A7QUFDRFQsZUFBUVUsZ0JBQWdCLENBQUE7QUFReEJWLGVBQVFXLGtCQUFrQixDQUFDQyxNQUFNQyxTQUFTO0FBQ3pDYixpQkFBUVUsY0FBY1YsU0FBUVUsY0FBY0ksTUFBTSxJQUFJO1VBQ3JERjtVQUNBQztRQUNEO01BQ0Q7QUFDQWIsZUFBUWUsZ0JBQWdCLENBQUM7QUFTekJmLGVBQVFlLGdCQUFnQjs7UUFFdkJDLGtCQUFrQjtRQUNsQkMsaUJBQWlCO1FBQ2pCQyxpQkFBaUJmLFNBQVNnQixjQUFjLENBQUEsSUFBSyxDQUFDLE9BQU87O1FBRXJEQyxzQkFBc0IsQ0FBQTs7UUFFdEJDLGdCQUFnQjs7UUFFaEJDLGtCQUFrQjtRQUNsQkMsd0JBQXdCO1FBQ3hCQywyQkFBMkI7UUFDM0JDLG1CQUFtQjtRQUNuQkMsdUJBQXVCLENBQUE7O1FBRXZCQyxjQUFjLENBQUE7UUFDZEMsMEJBQTBCO1FBQzFCQyxpQkFBaUI7UUFDakJDLDBCQUEwQixDQUFDLE1BQU07UUFDakNDLG9CQUFvQixDQUFDLFFBQVEsUUFBUSxPQUFPO1FBQzVDQyxxQkFBcUI7UUFDckJDLDJCQUEyQjtRQUMzQkMsZ0JBQWdCO1FBQ2hCQyxtQkFBbUIsQ0FBQyxRQUFRLFFBQVE7UUFDcENDLHFCQUFxQixDQUFBOztRQUVyQkMsa0JBQWtCO1FBQ2xCQyxlQUFlO1FBQ2ZDLGVBQWU7O1FBRWZDLHFCQUFxQjtRQUNyQkMsb0JBQW9CO1FBQ3BCQyxxQkFBcUI7O1FBRXJCQyxzQkFBc0I7UUFDdEJDLGtCQUFrQixDQUFDLE1BQU0sTUFBTSxNQUFNLE1BQU0sSUFBSTtRQUMvQ0MsbUJBQW1CO1FBQ25CQyw0QkFBNEI7UUFDNUJDLGlCQUFpQjs7UUFFakJDLHNDQUFzQyxDQUNyQyxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLElBQUE7UUFFREMsd0JBQXdCLENBQ3ZCLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsSUFBQTtRQUVEQyxnQ0FBZ0MsQ0FBQTtRQUNoQ0MsZ0NBQWdDLENBQUE7UUFDaENDLHdCQUF3QjtRQUN4QkMseUJBQXlCO1FBQ3pCQyw0QkFBNEI7UUFDNUJDLG9CQUFvQjtRQUNwQkMsbUJBQW1CO1FBQ25CQyxzQkFBc0I7UUFDdEJDLG1CQUFtQjtRQUNuQkMseUJBQXlCLENBQUMsSUFBSTtRQUM5QkMsZ0JBQWdCOztRQUVoQkMsa0JBQWtCLENBQUMsS0FBSyxLQUFLLE1BQU0sS0FBSzs7UUFFeENDLHFCQUFxQjtRQUNyQkMsc0JBQXNCO1FBQ3RCQyxlQUFlO1FBQ2ZDLFdBQVc7UUFDWEMsbUJBQW1CLENBQUE7UUFDbkJDLHVCQUF1Qjs7UUFFdkJDLG1CQUFtQjtRQUNuQkMsZ0JBQWdCO1FBQ2hCQyxzQkFBc0IsQ0FBQTtRQUN0QkMsb0JBQW9CO1FBQ3BCQyxjQUFjO1FBQ2RDLGNBQWM7UUFDZEMseUJBQXlCO1FBQ3pCQyxhQUFheEUsU0FBU2dCO1FBQ3RCeUQsb0JBQW9CO1FBQ3BCQyxzQkFBc0I7UUFDdEJDLHlCQUF5QjtRQUN6QkMsVUFBVTVFLFNBQVNnQixjQUFjLFFBQVE7O1FBRXpDNkQsa0JBQWtCO1FBQ2xCQyxrQkFBa0I7UUFDbEJDLDZCQUE2Qjs7UUFFN0JDLG9CQUFvQjtRQUNwQkMsb0JBQW9COztRQUVwQkMsVUFBVTtRQUNWQyxhQUFhO1FBQ2JDLFlBQVk7UUFDWkMsc0JBQXNCQyxHQUFHQyxPQUFPQyxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDOURDLGFBQWE7O1FBRWJwRixXQUFXO1FBQ1hxRixtQkFBbUI7UUFDbkJDLHFCQUFxQjtRQUNyQkMsZ0JBQWdCOztRQUVoQkMsZ0JBQWdCO1FBQ2hCQyxrQkFBa0I7UUFDbEJDLHVCQUF1QjtRQUN2QkMsd0JBQXdCO1FBQ3hCQyw0QkFBNEI7UUFDNUJDLHFCQUFxQjtRQUNyQkMsZUFBZSxDQUFBO1FBQ2ZDLG1CQUFtQixDQUFBO1FBQ25CQyx1QkFBdUIsQ0FBQTs7UUFFdkJDLG1CQUFtQjtRQUNuQkMseUJBQXlCO1FBQ3pCQyw2QkFBNkI7UUFDN0JDLHNCQUFzQjtRQUN0QkMsZ0JBQWdCLENBQUE7O1FBRWhCQyxxQkFBcUI7UUFDckJDLHlCQUF5Qjs7UUFFekJDLGlCQUFpQi9HLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtRQUM1Q0MsYUFBYWpILE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtNQUM3QztBQUVBLGNBQVF4QixHQUFHQyxPQUFPQyxJQUFJLE1BQU0sR0FBQTtRQUMzQixLQUFLO1FBQ0wsS0FBSztBQUNKM0YsbUJBQVFlLGNBQWNvRyxjQUFjO0FBQ3BDbkgsbUJBQVFlLGNBQWNxRyxZQUFZO0FBQ2xDcEgsbUJBQVFlLGNBQWNzRyxjQUFjO0FBQ3BDckgsbUJBQVFlLGNBQWN1RyxjQUFjO0FBQ3BDdEgsbUJBQVFlLGNBQWN3RyxjQUFjO0FBQ3BDO1FBQ0QsS0FBSztBQUNKdkgsbUJBQVFlLGNBQWNvRyxjQUNyQnBILE1BQU15SCxLQUFLLDRCQUE0QixFQUFFMUcsU0FBUyxJQUMvQywrQkFDQTtBQUNKZCxtQkFBUWUsY0FBY3FHLFlBQVk7QUFDbENwSCxtQkFBUWUsY0FBY3NHLGNBQWM7QUFDcENySCxtQkFBUWUsY0FBY3VHLGNBQWM7QUFDcEN0SCxtQkFBUWUsY0FBY3dHLGNBQ3JCeEgsTUFBTXlILEtBQUssNEJBQTRCLEVBQUUxRyxTQUFTLElBQUksY0FBYztBQUNyRTtRQUNELEtBQUs7QUFDSmQsbUJBQVFlLGNBQWNvRyxjQUFjO0FBQ3BDbkgsbUJBQVFlLGNBQWNxRyxZQUFZO0FBQ2xDcEgsbUJBQVFlLGNBQWNzRyxjQUFjO0FBQ3BDckgsbUJBQVFlLGNBQWN1RyxjQUFjO0FBQ3BDdEgsbUJBQVFlLGNBQWN3RyxjQUFjO0FBQ3BDO1FBQ0Q7QUFDQ3ZILG1CQUFRZSxjQUFjb0csY0FBYztBQUNwQ25ILG1CQUFRZSxjQUFjcUcsWUFBWTtBQUNsQ3BILG1CQUFRZSxjQUFjc0csY0FBYztBQUNwQ3JILG1CQUFRZSxjQUFjdUcsY0FBYztBQUNwQ3RILG1CQUFRZSxjQUFjd0csY0FBYztNQUN0QztBQUNBdkgsZUFBUXlILFVBQVc1RyxVQUFTO0FBQzNCLFlBQUksT0FBT2IsU0FBUTBILFVBQVUsWUFBWTFILFNBQVEwSCxNQUFNN0csSUFBSSxNQUFNLFFBQVc7QUFDM0UsaUJBQU9iLFNBQVEwSCxNQUFNN0csSUFBSTtRQUMxQjtBQUVBLFlBQUksT0FBT1osT0FBTzBILGtCQUFrQixZQUFZMUgsT0FBTzBILGNBQWM5RyxJQUFJLE1BQU0sUUFBVztBQUN6RixpQkFBT1osT0FBTzBILGNBQWM5RyxJQUFJO1FBQ2pDO0FBQ0EsZUFBT2IsU0FBUWUsY0FBY0YsSUFBSTtNQUNsQztBQXdCQWIsZUFBUTRILGFBQWEsQ0FBQ0MsWUFBWUMsSUFBSUMsTUFBTUMsTUFBTUMsZUFBZTtBQUVoRSxjQUFNQyxPQUFPQyxTQUFTQyxjQUFjLFlBQVlDLEtBQUtSLFVBQVUsSUFBSUEsYUFBQSxJQUFBUyxPQUFpQlQsVUFBVSxDQUFFO0FBQ2hHLFlBQUksQ0FBQ0ssTUFBTTtBQUNWLGlCQUFPO1FBQ1I7QUFDQSxjQUFNSyxPQUFPSixTQUFTQyxjQUFBLElBQUFFLE9BQWtCUixFQUFFLENBQUU7QUFDNUMsWUFBSVMsTUFBTTtBQUNULGNBQUlBLEtBQUtDLGNBQWNELEtBQUtDLGVBQWVOLE1BQU07QUFDaEQsbUJBQU9LO1VBQ1I7QUFDQSxpQkFBTztRQUNSO0FBQ0EsWUFBSUU7QUFDSixZQUFJUixZQUFZO0FBQ2ZRLHFCQUFXTixTQUFTQyxjQUFBLElBQUFFLE9BQWtCTCxVQUFVLENBQUU7UUFDbkQ7QUFFQSxjQUFNUyxPQUFPakQsR0FBR0MsT0FBT0MsSUFBSSxNQUFNO0FBQ2pDLFlBQ0UrQyxTQUFTLFlBQVlBLFNBQVMsaUJBQzlCYixlQUFlLHFCQUFxQkEsZUFBZSxvQkFDbkQ7QUFDREcsaUJBQU87UUFDUjtBQUNBLFlBQUlXO0FBQ0osWUFBSUM7QUFDSixnQkFBUUYsTUFBQTtVQUNQLEtBQUs7VUFDTCxLQUFLO0FBRUosZ0JBQUliLGVBQWUsWUFBWUEsZUFBZSxxQkFBcUJBLGVBQWUsb0JBQW9CO0FBQ3JHQSwyQkFBYTtZQUNkO0FBQ0FjLDRCQUFnQjtBQUNoQixnQkFBSWQsZUFBZSxZQUFZO0FBQzlCYywrQkFBaUI7WUFDbEIsV0FBV1gsU0FBUyxRQUFRO0FBQzNCVywrQkFBaUI7WUFDbEIsT0FBTztBQUNOQSwrQkFBaUI7WUFDbEI7QUFDQUMsNEJBQWdCO0FBQ2hCO1VBQ0QsS0FBSztBQUNKRCw0QkFBZ0I7QUFDaEJDLDRCQUFnQjtBQUNoQjtVQUNELEtBQUs7QUFDSkQsNEJBQWdCO0FBQ2hCQyw0QkFBZ0I7QUFDaEI7VUFDRDtBQUNDZix5QkFBYTtBQUNiYyw0QkFBZ0I7QUFDaEI7UUFDRjtBQUVBLFlBQUlFO0FBQ0osWUFBSUM7QUFDSixZQUFJSixTQUFTLGVBQWU7QUFDM0JHLHFCQUFXVixTQUFTWSxjQUFjLEtBQUs7QUFDdkNELG9CQUFVWCxTQUFTWSxjQUFjLE9BQU87UUFDekMsT0FBTztBQUNORixxQkFBV1YsU0FBU1ksY0FBYyxLQUFLO0FBQ3ZDRCxvQkFBVVgsU0FBU1ksY0FBYyxJQUFJO1FBQ3RDO0FBQ0FGLGlCQUFTRyxhQUFhLG1CQUFBLEdBQUFWLE9BQXNCUixJQUFFLFFBQUEsQ0FBUTtBQU10RGUsaUJBQVNJLFlBQUEsR0FBQVgsT0FBZUssZUFBYSxlQUFBO0FBQ3JDRSxpQkFBU2YsS0FBS0E7QUFDZCxZQUFJVyxZQUFZQSxTQUFTRCxlQUFlTixNQUFNO0FBQzdDQSxlQUFLZ0IsYUFBYUwsVUFBVUosUUFBUTtRQUNyQyxPQUFPO0FBQ05QLGVBQUtpQixZQUFZTixRQUFRO1FBQzFCO0FBQ0FDLGdCQUFRaEIsS0FBQSxHQUFBUSxPQUFRUixJQUFFLFFBQUE7QUFDbEIsY0FBTXNCLEtBQUtqQixTQUFTWSxjQUFjLElBQUk7QUFDdEMsWUFBSUwsU0FBUyxZQUFZQSxTQUFTLGVBQWU7QUFDaERJLGtCQUFRRSxhQUFhLE9BQUEsR0FBQVYsT0FBVVIsSUFBRSxvQkFBQSxDQUFvQjtBQUNyRHNCLGFBQUdILFlBQVk7QUFDZkgsa0JBQVFHLFlBQVk7QUFHcEIsY0FBSU4sY0FBY1UsU0FBUyxzQkFBc0IsR0FBRztBQUNuRCxrQkFBTUMsU0FBU25CLFNBQVNZLGNBQWMsT0FBTztBQUM3Q08sbUJBQU94QixLQUFBLEdBQUFRLE9BQVFSLElBQUUsb0JBQUE7QUFDakJ3QixtQkFBT0wsWUFBWTtBQUNuQkssbUJBQU9OLGFBQWEsUUFBUSxVQUFVO0FBQ3RDTSxtQkFBT04sYUFBYSxtQkFBQSxHQUFBVixPQUFzQlIsSUFBRSxRQUFBLENBQVE7QUFDcERlLHFCQUFTTSxZQUFZRyxNQUFNO0FBRzNCLGtCQUFNQyxPQUFPcEIsU0FBU1ksY0FBYyxNQUFNO0FBQzFDUSxpQkFBS0osWUFBWWhCLFNBQVNxQixlQUFlekIsSUFBSSxDQUFDO0FBQzlDZSxvQkFBUUssWUFBWUksSUFBSTtBQUN4QixrQkFBTUUsSUFBSXRCLFNBQVNZLGNBQWMsR0FBRztBQUNwQ1UsY0FBRUMsT0FBTztBQUNUN0osY0FBRTRKLENBQUMsRUFBRUUsR0FBRyxTQUFVQyxPQUFNO0FBQ3ZCQSxnQkFBRUMsZUFBZTtZQUNsQixDQUFDO0FBQ0RmLG9CQUFRSyxZQUFZTSxDQUFDO1VBQ3RCO1FBQ0QsT0FBTztBQUVOWCxrQkFBUUssWUFBWWhCLFNBQVNxQixlQUFlekIsSUFBSSxDQUFDO1FBQ2xEO0FBQ0FjLGlCQUFTTSxZQUFZTCxPQUFPO0FBQzVCLFlBQUlGLGVBQWU7QUFDbEIsZ0JBQU1rQixXQUFXM0IsU0FBU1ksY0FBYyxLQUFLO0FBTTdDZSxtQkFBU2IsWUFBWUw7QUFDckJrQixtQkFBU1gsWUFBWUMsRUFBRTtBQUN2QlAsbUJBQVNNLFlBQVlXLFFBQVE7UUFDOUIsT0FBTztBQUNOakIsbUJBQVNNLFlBQVlDLEVBQUU7UUFDeEI7QUFDQSxlQUFPUDtNQUNSO0FBV0E3SSxlQUFRK0osaUJBQWlCLENBQUNDLE1BQU1qQyxNQUFNRCxJQUFJbUMsWUFBWTtBQUNyRCxZQUFJakssU0FBUXlILFFBQVEsYUFBYSxNQUFNLE1BQU07QUFDNUN6SCxtQkFBUTRILFdBQ1A1SCxTQUFReUgsUUFBUSxhQUFhLEdBQzdCekgsU0FBUXlILFFBQVEsV0FBVyxHQUMzQnpILFNBQVF5SCxRQUFRLGFBQWEsR0FDN0J6SCxTQUFReUgsUUFBUSxhQUFhLEdBQzdCekgsU0FBUXlILFFBQVEsYUFBYSxDQUM5QjtRQUNEO0FBQ0EsY0FBTXlDLE9BQU96RSxHQUFHMEUsS0FBS0osZUFDcEIvSixTQUFReUgsUUFBUSxXQUFXLEdBQzNCLE9BQU91QyxTQUFTLFdBQVdBLE9BQU8sS0FDbENqQyxNQUNBRCxJQUNBbUMsT0FDRDtBQUNBbEssY0FBTXlILEtBQUsscUNBQXFDLEVBQUU0QyxJQUFJLGdCQUFnQixTQUFTO0FBQy9FLFlBQUksT0FBT0osU0FBUyxZQUFZO0FBQy9CbkssWUFBRXFLLElBQUksRUFDSjFDLEtBQUssR0FBRyxFQUNSbUMsR0FBRyxTQUFVVSxRQUFPO0FBQ3BCTCxpQkFBSztBQUNMSyxlQUFHUixlQUFlO1VBQ25CLENBQUM7UUFDSDtBQUNBLFlBQUloSyxFQUFFeUssaUJBQWlCO0FBQ3RCekssWUFBRXlLLGdCQUFnQkMsYUFBYTtRQUNoQztBQUNBLGVBQU9MO01BQ1I7QUFJQSxZQUFNTSxZQUFZL0UsR0FBRzBFLEtBQUtNLE9BQUEsUUFBQW5DLE9BQWU3QyxHQUFHQyxPQUFPQyxJQUFJLFlBQVksR0FBQyxvQkFBQSxHQUFzQjtRQUN6RitFLFFBQVE7UUFDUkMsT0FBTztRQUNQQyxPQUFPO01BQ1IsQ0FBQztBQUVENUssZUFBUTBILFVBQVIxSCxTQUFRMEgsUUFBVSxDQUFDO0FBQ25CakMsU0FBR29GLE9BQ0RDLFVBQVVOLFNBQVMsRUFDbkJPLEtBQUssTUFBTTtBQUNYLGFBQUt0RixHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLHFCQUFxQixtQkFBbUIsR0FBRztVQUN0RWUsTUFBTTtVQUNOaUQsS0FBSztRQUNOLENBQUM7TUFDRixDQUFDLEVBQ0FDLE9BQU8sTUFBTTtBQUNickwsVUFBRUcsU0FBUW1MLElBQUk7TUFDZixDQUFDO0FBR0ZuTCxlQUFRbUwsT0FBTyxNQUFNO0FBR3BCLFlBQUlDLHdCQUF3QixDQUFDLFNBQVMsaUJBQWlCLFlBQVksaUJBQWlCLHFCQUFxQjtBQUN6RyxZQUFJakwsU0FBU2dCLGFBQWE7QUFDekJpSyxrQ0FBd0IsQ0FDdkIsR0FBR0EsdUJBQ0gsd0JBQ0EsZUFDQSxpQkFBQTtRQUVGO0FBQ0EsWUFDQzNGLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sTUFDdkMsQ0FBQ3lGLHNCQUFzQi9CLFNBQVM1RCxHQUFHQyxPQUFPQyxJQUFJLDRCQUE0QixDQUFDLEdBQzFFO0FBQ0Q7UUFDRDtBQUVBLFlBQUkxRixPQUFPb0wsUUFBUXBMLE9BQU9xTCxNQUFNO0FBQy9CO1FBQ0Q7QUFFQXRMLGlCQUFRdUwsWUFBWTtBQUNwQnBMLGlCQUFTcUwsS0FBS0MsSUFBSUMsZ0JBQWdCMUwsU0FBUXVMLFNBQVM7QUFDbkR2TCxpQkFBUWtCLGtCQUFrQixDQUFDLEdBQUdsQixTQUFReUgsUUFBUSxpQkFBaUIsR0FBRyxHQUFHekgsU0FBUXlILFFBQVEsc0JBQXNCLENBQUM7QUFHNUd6SCxpQkFBUVcsa0JBQWtCLENBQUNDLE1BQU1DLFNBQVM7QUFDekMsY0FBSSxDQUFDQSxRQUFRLENBQUNiLFNBQVFrQixnQkFBZ0JtSSxTQUFTeEksSUFBSSxHQUFHO0FBQ3JERCxpQkFBSztVQUNOO1FBQ0Q7QUFBQSxZQUFBK0ssWUFBQUMsMkJBRXFCNUwsU0FBUVUsYUFBQSxHQUFBbUw7QUFBQSxZQUFBO0FBQTdCLGVBQUFGLFVBQUFHLEVBQUEsR0FBQSxFQUFBRCxRQUFBRixVQUFBSSxFQUFBLEdBQUFDLFFBQTRDO0FBQUEsa0JBQWpDQyxVQUFBSixNQUFBSztBQUNWbE0scUJBQVFXLGdCQUFnQnNMLFFBQU9yTCxNQUFNcUwsUUFBT3BMLElBQUk7VUFDakQ7UUFBQSxTQUFBc0wsS0FBQTtBQUFBUixvQkFBQS9CLEVBQUF1QyxHQUFBO1FBQUEsVUFBQTtBQUFBUixvQkFBQVMsRUFBQTtRQUFBO0FBRUEsWUFBSXBNLFNBQVF5SCxRQUFRLGlCQUFpQixHQUFHO0FBQ3ZDaEMsYUFBRzBFLEtBQUtrQyxPQUNQLDZMQUNEO1FBQ0Q7QUFFQSxjQUFNQyxXQUFXLENBQUMsVUFBVSxhQUFhLEVBQUVqRCxTQUFTNUQsR0FBR0MsT0FBT0MsSUFBSSxNQUFNLENBQUM7QUFDekUsWUFBSTJHLFlBQVl0TSxTQUFReUgsUUFBUSxhQUFhLE1BQU0sVUFBVTFILE1BQU15SCxLQUFLLFlBQVksRUFBRTFHLFdBQVcsR0FBRztBQUNuR2YsZ0JBQU15SCxLQUFLLGFBQWEsRUFBRTRDLElBQUksZ0JBQWdCLFNBQVM7UUFDeEQ7TUFDRDtBQVNBcEssZUFBUXVNLGtCQUFrQixDQUFDQyxPQUFPQyxXQUFXO0FBQzVDLGVBQU9ELE1BQU1FLEtBQUtELE9BQU9DLE9BQU9GLE1BQU1HLFFBQVFGLE9BQU9FLFFBQVEsSUFBSTtNQUNsRTtBQUVBM00sZUFBUTRNLHlCQUEwQkMsY0FBYTtBQUM5QyxjQUFNQyxZQUFZak4sRUFBRWdOLFFBQVE7QUFDNUIsY0FBTTNDLE9BQU8vSixTQUFTNE0sU0FBUyxLQUFLRCxVQUFVRSxJQUFJLENBQUM7QUFDbkQ5QyxhQUFLbEIsYUFBYSxTQUFTLG1CQUFtQjtBQUM5Q2tCLGFBQUtsQixhQUFhLFFBQVF2RCxHQUFHMEUsS0FBS00sT0FBT3FDLFVBQVVFLElBQUksQ0FBQyxDQUFDO0FBQ3pEOUMsYUFBS2xCLGFBQWEsVUFBVSxRQUFRO0FBQ3BDa0IsYUFBS2xCLGFBQWEsT0FBTyxxQkFBcUI7QUFDOUM4RCxrQkFBVUcsS0FBSyxFQUFFQyxRQUFRLENBQUNoRCxNQUFNLEdBQUcsQ0FBQztNQUNyQztJQUNELEdBQUdpRCxNQUFNO0VBQUE7QUFBQSxDQUFBOztBQzdoQlQsSUFBQUMscUJBQUEsQ0FBQTtBQUFBLElBQUFDLGtCQUFBMU4sTUFBQTtFQUFBLHNDQUFBO0FBQUE7SUFHQTtBQUNBLEtBQUMsU0FBUzJOLFdBQVd6TixHQUFHO0FBQ3ZCLFlBQU1FLFFBQVFGLEVBQUUsTUFBTTtBQU10QkssY0FBUXFOLE1BQU0sTUFBTTtBQUNuQixjQUFNQyxXQUFXL0gsR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0I7QUFDbkQsWUFBSSxDQUFDNkgsVUFBVTtBQUNkO1FBQ0Q7QUFDQSxjQUFNQyxPQUFPaEksR0FBRzBFLEtBQUt1RCxZQUFZRixRQUFRO0FBQ3pDLGNBQU1iLFFBQVFjLE9BQ1h4TixPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsSUFDbkNoSCxPQUFPZ0gsTUFBTSxhQUFhLFlBQVk7QUFDekMvRyxnQkFBUTZKLGVBQ1AsTUFBTTtBQUNMN0osa0JBQVFxTixJQUFJSSxTQUFTSCxVQUFVQyxJQUFJO1FBQ3BDLEdBQ0F4TixPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FDdkIsVUFDQTBGLEtBQ0Q7TUFDRDtBQUNBek0sY0FBUXFOLElBQUlJLFdBQVcsQ0FBQ0MsS0FBS0gsU0FBUztBQUNyQyxZQUFJRyxRQUFRbkksR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQUc7QUFDeEMsZUFBS0YsR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYyxHQUFHO1lBQzVEZSxNQUFNO1lBQ05pRCxLQUFLO1VBQ04sQ0FBQztBQUNEO1FBQ0Q7QUFDQSxjQUFNNEMsU0FBUyxJQUFJMU4sU0FBUzJOLGFBQWEsS0FBSyxHQUFHO0FBQ2pERCxlQUFPRSxTQUFTOU4sT0FBT2dILE1BQU0sYUFBYSxZQUFZLENBQUM7QUFDdkQ0RyxlQUFPRyxjQUFjLFNBQVM7QUFDOUJILGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sR0FBRyxlQUFlO0FBQ2xFNEcsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxHQUFHLFNBQVM7QUFDdEUsY0FBTWlILE9BQU8sSUFBSS9OLFNBQVNnTyxVQUFVak8sUUFBUXFOLElBQUlJLFNBQVNTLFFBQVE7QUFDakUsY0FBTUMsYUFBYUgsS0FBS0ksT0FBTztVQUM5QnRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7VUFDeEN1SCxPQUFPdE8sUUFBUXFOLElBQUlJLFNBQVNjO1FBQzdCLENBQUM7QUFDREosbUJBQVdDLE9BQU87VUFDakJ0RyxNQUFNO1VBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sY0FBYyxZQUFZO1VBQzlDaUYsT0FBTztRQUNSLENBQUM7QUFDRG1DLG1CQUFXQyxPQUFPO1VBQ2pCdEcsTUFBTTtVQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1VBQ3BEaUYsT0FBTztRQUNSLENBQUM7QUFDRG1DLG1CQUFXQyxPQUFPO1VBQ2pCdEcsTUFBTTtVQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsZUFBZTtVQUNsRGlGLE9BQU87VUFDUHdDLFVBQVVqSixHQUFHMEUsS0FBS3VELFlBQVlFLEdBQUc7UUFDbEMsQ0FBQztBQUNEUyxtQkFBV0MsT0FBTztVQUNqQnRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztVQUNsRGlGLE9BQU87VUFDUHdDLFVBQVVqSixHQUFHMEUsS0FBS3VELFlBQVlFLEdBQUc7UUFDbEMsQ0FBQztBQUNETSxhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ051RyxPQUFPO1VBQ1BJLE9BQU87VUFDUDdHLElBQUk7UUFDTCxDQUFDO0FBQ0RvRyxhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ051RyxPQUFPO1VBQ1AxTixNQUFNO1FBQ1AsQ0FBQztBQUNEcU4sYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOdUcsT0FBTztRQUNSLENBQUM7QUFDREwsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOcUwsT0FBTzBCO1FBQ1IsQ0FBQztBQUNELGNBQU1nQixTQUFTVixLQUFLVyxPQUFPO0FBQzNCaEIsZUFBT2lCLFdBQVdGLE1BQU07QUFDeEJmLGVBQU9rQixRQUFRO0FBRWYsY0FBTUMsUUFBUTtVQUNidEUsUUFBUTtVQUNSdUUsTUFBTTtVQUNOQyxRQUFRO1VBQ1JDLFFBQVE7UUFDVDtBQUNBLFlBQUkxQixNQUFNO0FBQ1R1QixnQkFBTUksT0FBT3hCO1FBQ2QsT0FBTztBQUNOb0IsZ0JBQU1LLFVBQVV6QjtRQUNqQjtBQUNBLFlBQUl6TixTQUFTcUwsS0FBS0MsSUFBSXhMLE9BQU9nSCxNQUFNLGFBQWEsWUFBWSxHQUFHK0gsT0FBUU0sWUFBVztBQUNqRixnQkFBTUMsWUFBWUQsT0FBT0UsWUFBWSxFQUFFUixNQUFNUztBQUM3QyxjQUFJRixVQUFVek8sUUFBUTtBQUNyQixrQkFBTSxDQUFDNE8sS0FBSyxJQUFJSDtBQUNoQixnQkFBSUksV0FDRmxDLE9BQU94TixPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sSUFBSWhILE9BQU9nSCxNQUFNLE9BQU8sS0FBSyxLQUNsRWhILE9BQU9nSCxNQUFNLE9BQU8sS0FBSyxLQUN4QnlJLE1BQU1FLFVBQVUsT0FBTztBQUV6QkQsdUJBQVdELE1BQU1HLGdCQUFnQkgsTUFBTUksV0FBVyxNQUFNLE1BQU03UCxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7QUFDdkYsZ0JBQUl5SSxNQUFNRSxTQUFTO0FBQ2xCN1Asb0JBQU15SCxLQUFLLDJCQUEyQixFQUFFNEMsSUFBSSxTQUFTLE9BQU87WUFDN0Q7QUFDQXJLLGtCQUFNeUgsS0FBSywyQkFBMkIsRUFBRU8sS0FBSzRILE9BQU87VUFDckQ7UUFDRCxDQUFDLEVBQUVJLEtBQUs7QUFFUixjQUFNQyxNQUFNN0gsU0FBUzhILFlBQVksT0FBTztBQUN4Q0QsWUFBSUUsVUFBVSxVQUFVLE1BQU0sSUFBSTtBQUNsQ3RCLGVBQU91QixTQUFTQyxjQUFjSixHQUFHO01BQ2xDO0FBQ0E5UCxjQUFRcU4sSUFBSThDLFdBQVcsQ0FDdEI7UUFDQ25FLE9BQU87UUFDUHFDLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7TUFDakMsQ0FBQTtBQUVEL0csY0FBUXFOLElBQUlJLFNBQVMyQyxxQkFBc0IxRyxPQUFNO0FBQ2hEMUosZ0JBQVFxTixJQUFJSSxTQUFTNEMsZUFBZTNHLEVBQUU0RyxPQUFPdEUsS0FBSztNQUNuRDtBQUNBaE0sY0FBUXFOLElBQUlJLFNBQVM0QyxpQkFBa0JFLGdCQUFlO0FBQ3JEMVEsY0FBTXlILEtBQUssd0JBQXdCLEVBQUVPLEtBQUssS0FBS08sT0FBTyxVQUFBLHVCQUFBQSxPQUFpQ21JLFlBQVUsSUFBQSxDQUFJLENBQUM7TUFDdkc7QUFDQXZRLGNBQVFxTixJQUFJSSxTQUFTYyxpQkFBa0I3RSxPQUFNO0FBQzVDLGNBQU04RyxTQUFTOUcsRUFBRTRHLE9BQU90RTtBQUN4QixjQUFNeUUsUUFBUS9HLEVBQUU0RyxPQUFPdEM7QUFDdkIsY0FBTSxDQUFDMEMsUUFBUSxJQUFJelEsU0FBU2dPLFVBQVUwQyxZQUFZRixPQUFPLFdBQVc7QUFDcEUsWUFBSUcsWUFBWTtBQUNoQixjQUFNQyxjQUFjNUksU0FBU1ksY0FBYyxHQUFHO0FBQzlDZ0ksb0JBQVlwQyxNQUFNcUMsU0FBUztBQUMzQkQsb0JBQVlFLGNBQWNoUixPQUFPZ0gsTUFBTSxNQUFNLElBQUk7QUFDakRwSCxVQUFFa1IsV0FBVyxFQUFFcEgsR0FBRyxTQUFTLE1BQU07QUFDaEN6SixrQkFBUXFOLElBQUlJLFNBQVN1RCxRQUFRUCxLQUFLO1FBQ25DLENBQUM7QUFDRCxnQkFBUUQsUUFBQTtVQUNQLEtBQUs7QUFDSkksd0JBQVksSUFBSTNRLFNBQVNnTyxVQUFVZ0QsUUFBUTtjQUMxQ25KLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Y0FDdENwRyxNQUFNO1lBQ1AsQ0FBQztBQUNEaVEsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztjQUNwQ21LLFVBQVVuUixPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7Y0FDbkNnRCxTQUFTaEssT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQjtjQUM1RG9LLEtBQUs7Y0FDTEMsS0FBSztZQUNOLENBQUM7QUFDRFIsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztZQUNqQyxDQUFDO0FBQ0Q2SixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05GLElBQUk7Y0FDSnlHLE9BQU8sQ0FBQ3dDLFdBQVc7WUFDcEIsQ0FBQztBQUNERCxzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05GLElBQUk7Y0FDSjZHLE9BQU87WUFDUixDQUFDO0FBQ0RtQyx3QkFBWUEsVUFBVWpDLE9BQU87QUFDN0IrQixxQkFBU3BJLFdBQVcrSSxhQUFhVCxXQUFXRixRQUFRO0FBQ3BEO1VBQ0QsS0FBSztBQUNKRSx3QkFBWSxJQUFJM1EsU0FBU2dPLFVBQVVnRCxRQUFRO2NBQzFDbkosTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsV0FBVztjQUMxQ3BHLE1BQU07WUFDUCxDQUFDO0FBQ0RpUSxzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxXQUFXO2NBQzFDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLHlIQUNBLG1JQUNEO1lBQ0QsQ0FBQztBQUNENkosc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOb08sTUFBTSxDQUNMO2dCQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxVQUFVO2dCQUN4Q2lGLE9BQU9qTSxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7Z0JBQ2hDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLCtFQUNBLCtFQUNEO2NBQ0QsR0FDQTtnQkFDQ3NILE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFVBQVU7Z0JBQ3hDaUYsT0FBT2pNLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztnQkFDaENnRCxTQUFTaEssT0FBT2dILE1BQ2YsaUNBQ0EsaUNBQ0Q7Y0FDRCxHQUNBO2dCQUNDc0gsT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztnQkFDNUNpRixPQUFPO2dCQUNQakMsU0FBU2hLLE9BQU9nSCxNQUNmLHFEQUNBLG1EQUNEO2NBQ0QsR0FDQTtnQkFDQ3NILE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFVBQVU7Z0JBQ3hDaUYsT0FBTztnQkFDUGpDLFNBQVNoSyxPQUFPZ0gsTUFDZiwwQkFDQSwwQkFDRDtjQUNELEdBQ0E7Z0JBQ0NzSCxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxVQUFVO2dCQUN4Q2lGLE9BQU9qTSxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7Z0JBQ2hDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLDhDQUNBLGdEQUNEO2NBQ0QsQ0FBQTtZQUVGLENBQUM7QUFDRDZKLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTmlILE1BQU0sQ0FDTDtnQkFDQ1YsT0FBT3RPLE9BQU9nSCxNQUNiLCtDQUNBLGlEQUNEO2dCQUNBZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLGdDQUNBLGdDQUNEO2dCQUNBcEcsTUFBTTtnQkFDTnFMLE9BQU87Y0FDUixDQUFBO2NBRUR5QyxPQUFPO1lBQ1IsQ0FBQztBQUNEbUMsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztZQUNqQyxDQUFDO0FBQ0Q2SixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05GLElBQUk7Y0FDSnlHLE9BQU8sQ0FBQ3dDLFdBQVc7WUFDcEIsQ0FBQztBQUNERCxzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05GLElBQUk7Y0FDSjZHLE9BQU87WUFDUixDQUFDO0FBQ0RtQyx3QkFBWUEsVUFBVWpDLE9BQU87QUFDN0IrQixxQkFBU3BJLFdBQVcrSSxhQUFhVCxXQUFXRixRQUFRO0FBQ3BEO1VBQ0QsS0FBSztBQUNKRSx3QkFBWSxJQUFJM1EsU0FBU2dPLFVBQVVnRCxRQUFRO2NBQzFDbkosTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtjQUN0Q3BHLE1BQU07WUFDUCxDQUFDO0FBQ0RpUSxzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ05vSixTQUFTaEssT0FBT2dILE1BQU0sc0JBQXNCLHNCQUFzQjtjQUNsRWlGLE9BQU95RSxNQUFNL0MsSUFBSTFCO2NBQ2pCc0MsT0FBT3RPLFFBQVFxTixJQUFJSSxTQUFTMkM7WUFDN0IsQ0FBQztBQUNEUSxzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05GLElBQUk7Y0FDSjZHLE9BQU87WUFDUixDQUFDO0FBQ0RtQyxzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPO2NBQ1A2QyxVQUFVO2NBQ1ZuSCxTQUFTaEssT0FBT2dILE1BQU0scUJBQXFCLHFCQUFxQjtjQUNoRW9LLEtBQUs7Y0FDTEMsS0FBSztZQUNOLENBQUM7QUFDRFIsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztjQUNoQ3BHLE1BQU07Y0FDTm9KLFNBQVNoSyxPQUFPZ0gsTUFDZiw4RUFDQSw2RUFDRDtZQUNELENBQUM7QUFDRDZKLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTmlILE1BQU0sQ0FDTDtnQkFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsU0FBUztnQkFDdkNwRyxNQUFNO2dCQUNOb0osU0FBU2hLLE9BQU9nSCxNQUNmLHlGQUNBLDBGQUNEO2NBQ0QsQ0FBQTtZQUVGLENBQUM7QUFDRDZKLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTkYsSUFBSTtjQUNKeUcsT0FBTyxDQUFDd0MsV0FBVztZQUNwQixDQUFDO0FBQ0RELHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTkYsSUFBSTtjQUNKNkcsT0FBTztZQUNSLENBQUM7QUFDRG1DLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTnVHLE9BQU8sQ0FDTnRPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWSxHQUN2Q3BILEVBQUUsUUFBUSxFQUFFMlIsU0FBUyxtQkFBbUIsRUFBRXBILElBQUksVUFBVSxNQUFNLEVBQUUsQ0FBQyxHQUNqRW5LLE9BQU9nSCxNQUNOLG9FQUNBLG9FQUNELENBQUE7WUFFRixDQUFDO0FBQ0Q2Six3QkFBWUEsVUFBVWpDLE9BQU87QUFDN0JoUCxjQUFFLCtCQUErQmlSLFNBQVMsRUFBRXRFLE1BQU0sRUFBRVEsSUFBSTJELE1BQU0vQyxJQUFJMUIsS0FBSztBQUN2RTBFLHFCQUFTcEksV0FBVytJLGFBQWFULFdBQVdGLFFBQVE7QUFDcERELGtCQUFNYyxxQkFBcUIsSUFBSXRSLFNBQVNxTCxLQUFLMEYsUUFDNUNyUixFQUFFaVIsU0FBUyxFQUFFdEosS0FBSywwQkFBMEIsRUFBRWtLLEtBQUssRUFBRSxDQUFDLENBQ3ZEO0FBQ0F4UixvQkFBUXFOLElBQUlJLFNBQVM0QyxlQUFlSSxNQUFNL0MsSUFBSTFCLEtBQUs7QUFDbkQ7VUFJRDtBQUNDNEUsd0JBQVksSUFBSTNRLFNBQVNnTyxVQUFVZ0QsUUFBUTtjQUMxQ25KLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFNBQVM7Y0FDdkNwRyxNQUFNO1lBQ1AsQ0FBQztBQUNEaVEsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUNiLGdEQUNBLDhDQUNEO1lBQ0QsQ0FBQztBQUNENkosc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztjQUNwQ2dELFNBQVNoSyxPQUFPZ0gsTUFBTSxvQkFBb0Isa0JBQWtCO2NBQzVEaUYsT0FBT3pHLEdBQUcwRSxLQUFLd0gsY0FBYyxZQUFZLEtBQUs7Y0FDOUNuRCxPQUFRQSxXQUFVO0FBQ2pCLHNCQUFNO2tCQUFDdEM7Z0JBQUssSUFBSXNDLE1BQU1nQztBQUN0QixzQkFBTXRJLE9BQU9zRyxNQUFNZ0MsT0FBT3RDO0FBQzFCLG9CQUFJaEMsVUFBVSxJQUFJO0FBQ2pCaEUsdUJBQUswSixNQUFNbEQsV0FBVztBQUN0QnhHLHVCQUFLMkosT0FBT25ELFdBQVc7Z0JBQ3hCLE9BQU87QUFDTnhHLHVCQUFLMEosTUFBTWxELFdBQVc7QUFDdEJ4Ryx1QkFBSzJKLE9BQU9uRCxXQUFXeEcsS0FBSzBKLE1BQU0xRixVQUFVO2dCQUM3QztjQUNEO1lBQ0QsQ0FBQztBQUNENEUsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtjQUM5Q2dELFNBQVNoSyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7Y0FDMUNpRixPQUFPekcsR0FBRzBFLEtBQUt3SCxjQUFjLGlCQUFpQixLQUFLO2NBQ25EakQsVUFBVSxDQUFDakosR0FBRzBFLEtBQUt3SCxjQUFjLFlBQVk7Y0FDN0NuRCxPQUFRQSxXQUFVO0FBQ2pCLHNCQUFNO2tCQUFDdEM7Z0JBQUssSUFBSXNDLE1BQU1nQztBQUN0QixzQkFBTXRJLE9BQU9zRyxNQUFNZ0MsT0FBT3RDO0FBQzFCaEcscUJBQUsySixPQUFPbkQsV0FBV3hDLFVBQVU7Y0FDbEM7WUFDRCxDQUFDO0FBQ0Q0RSxzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO2NBQzVDZ0QsU0FBU2hLLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO2NBQ3BEaUYsT0FBT3pHLEdBQUcwRSxLQUFLd0gsY0FBYyxxQkFBcUIsS0FBSztjQUN2RGpELFVBQVUsQ0FBQ2pKLEdBQUcwRSxLQUFLd0gsY0FBYyxZQUFZLEtBQUtsTSxHQUFHMEUsS0FBS3dILGNBQWMsaUJBQWlCO1lBQzFGLENBQUM7QUFDRGIsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOb08sTUFBTSxDQUNMO2dCQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO2dCQUN4Q2lGLE9BQU87Y0FDUixHQUNBO2dCQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztnQkFDNUNpRixPQUFPO2NBQ1IsR0FDQTtnQkFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLGFBQWE7Z0JBQy9DaUYsT0FBTztnQkFDUHdDLFVBQVVqSixHQUFHMEUsS0FBS3VELFlBQVlpRCxNQUFNL0MsSUFBSTFCLEtBQUs7Y0FDOUMsR0FDQTtnQkFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxxQkFBcUIsbUJBQW1CO2dCQUM1RGlGLE9BQU87Y0FDUixHQUNBO2dCQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLGdCQUFnQixlQUFlO2dCQUNuRGlGLE9BQU87Z0JBQ1B3QyxVQUFVakosR0FBRzBFLEtBQUt1RCxZQUFZaUQsTUFBTS9DLElBQUkxQixLQUFLO2NBQzlDLENBQUE7WUFFRixDQUFDO0FBQ0QsZ0JBQUksQ0FBQ3pHLEdBQUcwRSxLQUFLdUQsWUFBWWpJLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLENBQUMsR0FBRztBQUM5RG1MLHdCQUFVeEMsT0FBTztnQkFDaEJ0RyxNQUFNO2dCQUNOaUgsTUFBTSxDQUNMO2tCQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sa0JBQWtCLGtCQUFrQjtrQkFDeERnRCxTQUFTaEssT0FBT2dILE1BQ2YsZ0NBQ0EsZ0NBQ0Q7a0JBQ0FwRyxNQUFNO2tCQUNOcUwsT0FBTztnQkFDUixDQUFBO2NBRUYsQ0FBQztZQUNGO0FBQ0E0RSxzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO1lBQ2pDLENBQUM7QUFDRDZKLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTkYsSUFBSTtjQUNKeUcsT0FBTyxDQUFDd0MsV0FBVztZQUNwQixDQUFDO0FBQ0RELHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTkYsSUFBSTtjQUNKNkcsT0FBTztZQUNSLENBQUM7QUFDRG1DLHdCQUFZQSxVQUFVakMsT0FBTztBQUM3QitCLHFCQUFTcEksV0FBVytJLGFBQWFULFdBQVdGLFFBQVE7QUFDcEQ7UUFDRjtBQUNBRCxjQUFNbUIsWUFBWSxJQUFJM1IsU0FBU3FMLEtBQUswRixRQUFRclIsRUFBRWlSLFNBQVMsRUFBRXRKLEtBQUssd0JBQXdCLEVBQUVrSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO01BQ2xHO0FBQ0F4UixjQUFRcU4sSUFBSUksU0FBU3VELFVBQVdoRCxVQUFTO0FBQ3hDLGNBQU02RCxTQUFTN1IsUUFBUXFOLElBQUlJLFNBQVNxRSxrQkFBa0I5RCxJQUFJO0FBQzFELFlBQUk2RCxXQUFXLFFBQVc7QUFDekI7UUFDRDtBQUNBLGNBQU1FLFFBQVE5UixTQUFTZ08sVUFBVStELGFBQWFoRSxJQUFJO0FBQ2xELFlBQUl2QjtBQUNKLGdCQUFRc0YsTUFBTTlCLFVBQUE7VUFDYixLQUFLO0FBQ0p4RCxvQkFBUTtBQUNSO1VBQ0QsS0FBSztBQUNKQSxvQkFBUTtBQUNSO1VBQ0QsS0FBSztBQUNKQSxvQkFBUTtBQUNSO1VBQ0QsS0FBSztBQUNKQSxvQkFBUTtBQUNSO1VBQ0Q7QUFDQ0Esb0JBQVFsSCxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDbEM7UUFDRjtBQUNBdUksYUFBSzRELFVBQVVLLFlBQUEsWUFBQTdKLE9BQXdCeUosT0FBTyxDQUFDLENBQUMsR0FBSXBGLEtBQUs7TUFDMUQ7QUFDQXpNLGNBQVFxTixJQUFJSSxTQUFTcUUsb0JBQXFCOUQsVUFBUztBQUNsRCxjQUFNK0QsUUFBUTlSLFNBQVNnTyxVQUFVK0QsYUFBYWhFLElBQUk7QUFDbEQsWUFBSTZELFNBQVM7QUFDYixZQUFJSyxVQUFVO0FBQ2QsY0FBTTtVQUFDeEU7UUFBRyxJQUFJcUU7QUFDZCxjQUFNSSxhQUFhQSxDQUFDMUYsT0FBTzJGLFVBQVU7QUFDcEMsY0FBSSxjQUFjakssS0FBS3NFLEtBQUssR0FBRztBQUM5QixpQkFBS2xILEdBQUd1RixPQUFPL0ssT0FBT2dILE1BQU0sZUFBZSxhQUFhLEdBQUc7Y0FDMURlLE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUFDO0FBQ0QsbUJBQU87VUFDUjtBQUNBLGNBQUlzSDtBQUNKLGNBQUk7QUFDSEEsb0JBQVEsSUFBSTlNLEdBQUcrTSxNQUFNN0YsS0FBSztVQUMzQixRQUFRO0FBQ1AsaUJBQUtsSCxHQUFHdUYsT0FBQSxHQUFBMUMsT0FFTnJJLE9BQU9nSCxNQUFNLEtBQUssR0FBRyxJQUNyQjBGLFFBQ0ExTSxPQUFPZ0gsTUFDTixnQ0FDQSw4QkFDRCxLQUNDcUwsUUFBUXJTLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjLElBQUksS0FDekQsR0FBQSxHQUNBO2NBQ0NlLE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUNEO0FBQ0EsbUJBQU87VUFDUjtBQUNBLGNBQUlzSCxNQUFNRSxjQUFjLElBQUk7QUFDM0IsaUJBQUtoTixHQUFHdUYsT0FBQSxHQUFBMUMsT0FFTnJJLE9BQU9nSCxNQUFNLEtBQUssR0FBRyxJQUNyQjBGLFFBQ0ExTSxPQUFPZ0gsTUFDTiwyQkFDQSx5QkFDRCxLQUNDcUwsUUFBUXJTLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjLElBQUksS0FDekQsR0FBQSxHQUNBO2NBQ0NlLE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUNEO0FBQ0EsbUJBQU87VUFDUjtBQUNBLGlCQUFPc0g7UUFDUjtBQUNBLFlBQUlHO0FBQ0osZ0JBQVFULE1BQU05QixVQUFBO1VBRWIsS0FBSyxRQUFRO0FBQ1osZ0JBQUk4QixNQUFNRixXQUFXLElBQUk7QUFDeEIsbUJBQUt0TSxHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLFdBQVcsU0FBUyxHQUFHO2dCQUNsRGUsTUFBTTtnQkFDTmlELEtBQUs7Y0FDTixDQUFDO0FBQ0Q7WUFDRDtBQUNBOEcsc0JBQUEsWUFBQXpKLE9BQXNCc0YsS0FBRyxRQUFBO0FBQ3pCbUUsc0JBQUEsaUJBQUF6SixPQUEyQixNQUFNRCxLQUFLdUYsR0FBRyxJQUFJLE9BQU8sRUFBRSxFQUFBdEYsT0FBR3NGLEtBQUcsU0FBQTtBQUM1RCxrQkFBTStFLFFBQVE5UyxFQUFFLHlCQUF5QnFPLElBQUksRUFBRTBFLElBQUksQ0FBQ0MsR0FBR2pKLE1BQU07QUFDNUQscUJBQU8vSixFQUFFK0osQ0FBQyxFQUFFb0QsSUFBSSxLQUFLO1lBQ3RCLENBQUM7QUFBQSxnQkFBQThGLGFBQUFsSCwyQkFDbUIrRyxLQUFBLEdBQUFJO0FBQUEsZ0JBQUE7QUFBcEIsbUJBQUFELFdBQUFoSCxFQUFBLEdBQUEsRUFBQWlILFNBQUFELFdBQUEvRyxFQUFBLEdBQUFDLFFBQTJCO0FBQUEsc0JBQWhCdUcsUUFBQVEsT0FBQTdHO0FBQ1Z3Ryx1QkFBT0wsV0FBV0UsT0FBTyxLQUFLO0FBQzlCLG9CQUFJLENBQUNHLE1BQU07QUFDVjtnQkFDRDtBQUNBTiwyQkFBQSxpQkFBQTlKLE9BQ0NvSyxLQUFLTSxnQkFBZ0IsRUFBRTNKLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFDL0MsRUFBQWYsT0FBR29LLEtBQUtNLGdCQUFnQixHQUFDLE1BQUE7Y0FDMUI7WUFBQSxTQUFBN0csS0FBQTtBQUFBMkcseUJBQUFsSixFQUFBdUMsR0FBQTtZQUFBLFVBQUE7QUFBQTJHLHlCQUFBMUcsRUFBQTtZQUFBO0FBQ0E2RixrQkFBTUYsU0FBU0UsTUFBTUYsT0FBT2tCLFFBQVEsVUFBVSxJQUFJO0FBQ2xEaEIsa0JBQU1GLFNBQVNFLE1BQU1GLE9BQU9rQixRQUFRLFVBQVUsTUFBTTtBQUNwRGIsdUJBQUEsS0FBQTlKLE9BQWdCMkosTUFBTUYsUUFBTSxJQUFBO0FBQzVCSyxzQkFBVUEsUUFBUWMsS0FBSztBQUN2QmQsc0JBQVVqUyxTQUFTZ1QsT0FBT0Msa0JBQWtCaEIsT0FBTztBQUNuREwsc0JBQVUsR0FBQXpKLE9BQUc4SixTQUFPLFlBQUEsRUFBYTlKLE9BQU8sV0FBVztBQUNuRDtVQUNEO1VBRUEsS0FBSyxZQUFZO0FBQ2hCLGdCQUFJK0ssUUFBUXBCLE1BQU1xQixRQUFRVixJQUFJelMsU0FBU2dULE9BQU9JLG9CQUFvQjtBQUNsRSxrQkFBTUMsWUFBWUgsTUFBTWhLLFNBQVMsUUFBUTtBQUN6QyxnQkFBSW1LLFdBQVc7QUFDZEgsb0JBQU1JLE9BQU9KLE1BQU1LLFFBQVEsUUFBUSxHQUFHLENBQUM7WUFDeEM7QUFDQSxnQkFDQ0wsTUFBTWhLLFNBQVMsS0FBSyxLQUNwQixDQUFDc0ssUUFDQTFULE9BQU9nSCxNQUNOLDJEQUNBLDZEQUNELENBQ0QsR0FDQztBQUNEO1lBQ0Q7QUFDQSxnQkFBSW9NLE1BQU12UyxVQUFVLEdBQUc7QUFDdEJ1UyxzQkFBUUEsTUFBTU8sS0FBSyxHQUFHO1lBQ3ZCLE9BQU87QUFDTlAsc0JBQVEsQ0FBQ0EsTUFBTVEsTUFBTSxHQUFHLEVBQUUsRUFBRUQsS0FBSyxHQUFHLEdBQUdQLE1BQU1RLE1BQU0sRUFBRSxDQUFDLEVBQUVELEtBQUssR0FBRztZQUNqRTtBQUNBeEIsdUJBQUEsaUJBQUE5SixPQUE0QnNGLEdBQUc7QUFDL0IsZ0JBQUlxRSxNQUFNNkIsVUFBVTtBQUNuQjFCLHlCQUFXO1lBQ1o7QUFDQUEsdUJBQVc7QUFDWCxnQkFBSWlCLE1BQU12UyxRQUFRO0FBQ2pCc1IseUJBQVdpQixRQUFRcFQsT0FBT2dILE1BQU0sT0FBTyxPQUFPO1lBQy9DO0FBQ0EsZ0JBQUlvTSxNQUFNdlMsVUFBVTBTLFdBQVc7QUFDOUJwQix5QkFBVztZQUNaO0FBQ0EsZ0JBQUlvQixXQUFXO0FBQ2RwQix5QkFBV25TLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1lBQ3ZEO0FBQ0EsZ0JBQUlvTSxNQUFNdlMsVUFBVTBTLFdBQVc7QUFDOUJwQix5QkFBVztZQUNaO0FBQ0EsZ0JBQUlILE1BQU1GLFFBQVE7QUFDakJLLHlCQUFXalMsU0FBU2dULE9BQU9ZLHFCQUFxQjlCLE1BQU1GLE1BQU07WUFDN0Q7QUFDQUssc0JBQVVqUyxTQUFTZ1QsT0FBT0Msa0JBQWtCaEIsT0FBTztBQUNuREEsdUJBQVcsT0FBTzlKLE9BQU8sSUFBSTtBQUM3QjhKLHNCQUFVQSxRQUFRYSxRQUFRLFVBQVUsTUFBTTtBQUMxQ2xCLHFCQUFBLGNBQUF6SixPQUNDMkosTUFBTTZCLFdBQVc3VCxPQUFPZ0gsTUFBTSxVQUFVLFVBQVUsSUFBSTJHLEtBQ3ZELFFBQUE7QUFDQW1FLHNCQUFVSztBQUNWO1VBQ0Q7VUFFQSxLQUFLLE9BQU87QUFDWCxnQkFBSSxDQUFDSCxNQUFNRixRQUFRO0FBQ2xCLG1CQUFLdE0sR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsR0FBRztnQkFDaERlLE1BQU07Z0JBQ05pRCxLQUFLO2NBQ04sQ0FBQztBQUNEO1lBQ0Q7QUFDQSxrQkFBTStJLGNBQWM3VCxTQUFTOFQsTUFBTUMsS0FDbEMsQ0FBQyxHQUFHclUsRUFBRSwrQkFBK0JxTyxJQUFJLENBQUMsRUFBRTBFLElBQUtDLE9BQU07QUFDdEQscUJBQU9oVCxFQUFFZ1QsQ0FBQyxFQUFFN0YsSUFBSSxFQUFFa0csS0FBSyxLQUFLO1lBQzdCLENBQUMsQ0FDRjtBQUNBLGdCQUFJLENBQUNjLFlBQVksQ0FBQyxHQUFHO0FBQ3BCLG1CQUFLdk8sR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVksR0FBRztnQkFDeERlLE1BQU07Z0JBQ05pRCxLQUFLO2NBQ04sQ0FBQztBQUNEO1lBQ0Q7QUFDQW1ILHVCQUFXLEtBQUs5SixPQUFPLFVBQVUsYUFBYTtBQUM5QyxnQkFBSSxDQUFDMEwsWUFBWTNLLFNBQVM0SSxNQUFNeEIsVUFBVSxHQUFHO0FBQzVDMkIseUJBQVcsT0FBTzlKLE9BQ2pCLFVBQ0EsZUFDQSxVQUFBLG1CQUFBQSxPQUNtQjJKLE1BQU14QixZQUFVLEtBQUEsQ0FDcEM7WUFDRDtBQUNBMkIsdUJBQUEsR0FBQTlKLE9BQWMwTCxZQUNacEIsSUFBSSxDQUFDdUIsTUFBTUMsVUFBVTtBQUNyQixxQkFBQSxHQUFBOUwsT0FBVThMLFFBQVEsR0FBQyxHQUFBLEVBQUE5TCxPQUFJNkwsSUFBSTtZQUM1QixDQUFDLEVBQ0FQLEtBQUssR0FBRyxHQUFDLGNBQUEsRUFBQXRMLE9BQWVuSSxTQUFTZ1QsT0FBT0Msa0JBQWtCbkIsTUFBTUYsTUFBTSxHQUFDLElBQUE7QUFDekUsZ0JBQUlFLE1BQU1vQyxXQUFXO0FBQ3BCakMseUJBQVc7WUFDWjtBQUNBQSx1QkFBVztBQUNYTCxxQkFBU0s7QUFDVDtVQUNEO1VBS0EsU0FBUztBQUNSLGdCQUFJLENBQUNILE1BQU1xQixRQUFReFMsVUFBVW1SLE1BQU1GLFdBQVcsSUFBSTtBQUNqRCxtQkFBS3RNLEdBQUd1RixPQUFPL0ssT0FBT2dILE1BQU0sV0FBVyxTQUFTLEdBQUc7Z0JBQ2xEZSxNQUFNO2dCQUNOaUQsS0FBSztjQUNOLENBQUM7QUFDRDtZQUNEO0FBQ0E4RyxzQkFBQSxNQUFBekosT0FBZ0IySixNQUFNNkIsV0FBVzdULE9BQU9nSCxNQUFNLFVBQVUsVUFBVSxJQUFJMkcsS0FBRyxPQUFBO0FBQ3pFbUUsc0JBQUEsaUJBQUF6SixPQUEyQixNQUFNRCxLQUFLdUYsR0FBRyxJQUFJLE9BQU8sRUFBRSxFQUFBdEYsT0FBR3NGLEdBQUc7QUFDNUQsZ0JBQUlxRSxNQUFNNkIsVUFBVTtBQUNuQi9CLHdCQUFVO1lBQ1g7QUFDQUEsc0JBQVU7QUFDVixrQkFBTXNCLFFBQVFwQixNQUFNcUIsUUFDbEJWLElBQUswQixPQUFNO0FBQ1gsc0JBQVFBLEdBQUE7Z0JBQ1AsS0FBSztBQUNKLHlCQUFPO2dCQUNSLEtBQUs7QUFDSix5QkFBTztnQkFDUixLQUFLO0FBQ0oseUJBQU87Z0JBQ1IsS0FBSztBQUNKLHlCQUFPO2dCQUNSLEtBQUs7QUFDSix5QkFBTztnQkFDUjtBQUNDLHlCQUFPO2NBQ1Q7WUFDRCxDQUFDLEVBQ0FWLEtBQUssR0FBRztBQUNWLGdCQUFJM0IsTUFBTVMsU0FBUyxJQUFJO0FBQ3RCQSxxQkFBT0wsV0FBV0osTUFBTVMsTUFBTSxJQUFJO0FBQ2xDLGtCQUFJLENBQUNBLE1BQU07QUFDVjtjQUNEO0FBQ0FOLHlCQUFBLGlCQUFBOUosT0FDQ29LLEtBQUtNLGdCQUFnQixFQUFFM0osU0FBUyxHQUFHLElBQUksT0FBTyxFQUMvQyxFQUFBZixPQUFHb0ssS0FBS00sZ0JBQWdCLEdBQUMsSUFBQTtBQUN6QixrQkFBSWYsTUFBTUwsT0FBTztBQUFBLG9CQUFBMkM7QUFDaEJuQywyQkFBQSxXQUFBOUosT0FBc0JvSyxLQUFLTSxnQkFBZ0IsR0FBQyxHQUFBLEVBQUExSyxPQUFJMkosTUFBTUwsT0FBSyxHQUFBLEVBQUF0SixRQUFBaU0sZ0JBQUl0QyxNQUFNSixZQUFBLFFBQUEwQyxrQkFBQSxTQUFBQSxnQkFBVSxJQUFFLFVBQUE7Y0FDbEY7QUFDQW5DLHlCQUFXO1lBQ1o7QUFDQSxnQkFBSWlCLE9BQU87QUFDVmpCLHlCQUFBLEtBQUE5SixPQUFnQitLLEtBQUs7WUFDdEI7QUFDQSxnQkFBSXBCLE1BQU1GLFdBQVcsSUFBSTtBQUN4QkUsb0JBQU1GLFNBQVNFLE1BQU1GLE9BQU9rQixRQUFRLFVBQVUsSUFBSTtBQUNsRGhCLG9CQUFNRixTQUFTRSxNQUFNRixPQUFPa0IsUUFBUSxVQUFVLE1BQU07QUFDcERiLDBCQUFZaUIsUUFBUSxNQUFNLFFBQVFwQixNQUFNRjtZQUN6QztBQUNBSyxzQkFBVUEsUUFBUWMsS0FBSztBQUN2QmQsc0JBQVVqUyxTQUFTZ1QsT0FBT0Msa0JBQWtCaEIsT0FBTztBQUNuREwsc0JBQVUsR0FBQXpKLE9BQUc4SixTQUFPLFlBQUEsRUFBYTlKLE9BQU8sV0FBVztBQUNuRDtVQUNEO1FBQ0Q7QUFDQSxlQUFPLENBQUN5SixRQUFRSyxPQUFPO01BQ3hCO0FBQ0FsUyxjQUFRcU4sSUFBSUksU0FBU1MsV0FBWXhFLE9BQU07QUFDdEMsY0FBTXNFLE9BQU90RSxFQUFFNEc7QUFDZixjQUFNeUIsUUFBUTlSLFNBQVNnTyxVQUFVK0QsYUFBYWhFLElBQUk7QUFDbEQsY0FBTTtVQUFDTjtRQUFHLElBQUlxRTtBQUNkLFlBQUlGO0FBQ0osWUFBSXlDO0FBQ0osZ0JBQVF2QyxNQUFNOUIsVUFBQTtVQUViLEtBQUssUUFBUTtBQUNaNEIscUJBQVM3UixRQUFRcU4sSUFBSUksU0FBU3FFLGtCQUFrQjlELElBQUk7QUFDcEQsZ0JBQUk2RCxXQUFXLFFBQVc7QUFDekI7WUFDRDtBQUNBeUMsc0JBQUEsR0FBQWxNLE9BQWFySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FBQyxxQkFBQSxFQUFBcUIsT0FBc0JzRixLQUFHLEdBQUEsRUFBQXRGLE9BQUlzRixLQUFHLElBQUE7QUFDckV6TixxQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztBQUM3Q3RVLHFCQUFTdVUsT0FBT0MsS0FBS3pHLElBQUk7QUFDekIvTixxQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVc7QUFDekMxVSxxQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM3VSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07QUFDbEUsa0JBQU04TixXQUFXLElBQUk1VSxTQUFTcUwsS0FBS2tILEtBQ2xDLHNCQUNBelMsT0FBT2dILE1BQU0sWUFBWSxVQUFVLENBQ3BDO0FBQ0E4TixxQkFBU0Msa0JBQWtCLElBQUk7QUFDL0JELHFCQUFTNUosS0FBSyxNQUFNO0FBQ25CLG9CQUFNcEQsT0FBT2dOLFNBQVNFLFlBQVk7QUFDbEMsb0JBQU1DLFlBQVk7QUFFbEIsa0JBQ0MsSUFBSUMsT0FBQSx1REFBQTdNLE9BQ29EbkksU0FBU2dULE9BQU9pQyxhQUN0RXhILEdBQ0QsR0FBQyxtQkFBQSxDQUNGLEVBQUV2RixLQUFLTixJQUFJLEdBQ1Y7QUFDRGdOLHlCQUNFTSxpQkFBaUIsRUFDakJDLE1BQU1yVixPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZSxDQUFDO0FBQ3REOUcseUJBQVN1VSxPQUFPYSxjQUNmeEQsT0FBTyxDQUFDLEdBQ1I5UixPQUFPZ0gsTUFDTix5QkFDQSx1QkFDRCxJQUNDaU8sWUFDQWpWLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxDQUNyQztBQUNBO2NBQ0Q7QUFDQThOLHVCQUFTUyxlQUFlLENBQUM7QUFDekJULHVCQUFTTSxpQkFBaUIsRUFBRVgsT0FBT3pVLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQ25FOE4sdUJBQVNVLGVBQWVqQixPQUFPO0FBQy9CTyx1QkFBU1csY0FBY3hWLFFBQVFLLFVBQVU7QUFDekN3VSx1QkFBU1ksY0FBQSxLQUFBck4sT0FBbUJ5SixPQUFPLENBQUMsQ0FBQyxDQUFFO0FBQ3ZDZ0QsdUJBQVN6RyxPQUFPO1lBQ2pCLENBQUM7QUFDRDtVQUNEO1VBRUEsS0FBSyxZQUFZO0FBQ2hCeUQscUJBQVM3UixRQUFRcU4sSUFBSUksU0FBU3FFLGtCQUFrQjlELElBQUk7QUFDcEQvTixxQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztBQUM3Q3RVLHFCQUFTdVUsT0FBT0MsS0FBS3pHLElBQUk7QUFDekIvTixxQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVc7QUFDekMxVSxxQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM3VSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07QUFDbEUsa0JBQU0yTyxVQUFVLElBQUl6VixTQUFTcUwsS0FBS2tILEtBQ2pDLHNCQUNBelMsT0FBT2dILE1BQU0sV0FBVyxTQUFTLENBQ2xDO0FBQ0EyTyxvQkFBUVosa0JBQWtCLElBQUk7QUFDOUJZLG9CQUFRekssS0FBSyxNQUFNO0FBQ2xCLG9CQUFNcEQsT0FBTzZOLFFBQVFYLFlBQVk7QUFFakMsa0JBQ0MsSUFBSUUsT0FBQSw2Q0FBQTdNLE9BQzBDbkksU0FBU2dULE9BQU9pQyxhQUM1RHhILEdBQ0QsR0FBQyxlQUFBLENBQ0YsRUFBRXZGLEtBQUtOLElBQUksR0FDVjtBQUNENk4sd0JBQVFQLGlCQUFpQixFQUFFQyxNQUFNclYsT0FBT2dILE1BQU0sV0FBVyxVQUFVLENBQUM7QUFDcEUsc0JBQU00TyxXQUFXO0FBQ2pCMVYseUJBQVN1VSxPQUFPYSxjQUNmeEQsT0FBTyxDQUFDLEdBQ1I5UixPQUFPZ0gsTUFDTiwwQkFDQSx3QkFDRCxJQUNDNE8sV0FDQTVWLE9BQU9nSCxNQUFNLGFBQWEsWUFBWSxDQUN4QztBQUNBO2NBQ0Q7QUFDQTJPLHNCQUFRUCxpQkFBaUIsRUFBRVgsT0FBT3pVLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQ2xFMk8sc0JBQVFILGVBQWV4VixPQUFPZ0gsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUNqRDJPLHNCQUFRRixjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3FWLHNCQUFRRCxjQUFBLE9BQUFyTixPQUFxQnlKLE9BQU8sQ0FBQyxDQUFDLENBQUU7QUFDeEM2RCxzQkFBUXRILE9BQU87WUFDaEIsQ0FBQztBQUNEO1VBQ0Q7VUFFQSxLQUFLLE9BQU87QUFDWHlELHFCQUFTN1IsUUFBUXFOLElBQUlJLFNBQVNxRSxrQkFBa0I5RCxJQUFJO0FBQ3BEL04scUJBQVMyTixhQUFhMkcsa0JBQWtCLEtBQUs7QUFDN0N0VSxxQkFBU3VVLE9BQU9DLEtBQUt6RyxJQUFJO0FBQ3pCLGtCQUFNNEgsYUFBYTtBQUNuQjNWLHFCQUFTcUwsS0FBS29KLGdCQUFnQkMsV0FBV2lCO0FBQ3pDM1YscUJBQVNxTCxLQUFLb0osZ0JBQWdCRSxTQUFTN1UsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ2xFLGtCQUFNOE8sVUFBVSxJQUFJNVYsU0FBU3FMLEtBQUtrSCxLQUFLb0QsWUFBWTdWLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQ25GOE8sb0JBQVFmLGtCQUFrQixJQUFJO0FBQzlCZSxvQkFBUU4sZUFBZXhWLE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxDQUFDO0FBQ3JEOE8sb0JBQVFMLGNBQWN4VixRQUFRSyxVQUFVO0FBQ3hDd1Ysb0JBQVFKLGNBQWM1RCxPQUFPLENBQUMsQ0FBQztBQUMvQmdFLG9CQUFRQyxhQUFhOVYsUUFBUXVILFFBQVEsZ0JBQWdCLENBQUM7QUFDdERzTyxvQkFBUXpILE9BQU87QUFDZjtVQUNEO1VBS0EsU0FBUztBQUNSeUQscUJBQVM3UixRQUFRcU4sSUFBSUksU0FBU3FFLGtCQUFrQjlELElBQUk7QUFDcEQsZ0JBQUk2RCxXQUFXLFFBQVc7QUFDekI7WUFDRDtBQUNBeUMsc0JBQUEsR0FBQWxNLE9BQWFySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FBQyxxQkFBQSxFQUFBcUIsT0FBc0JzRixLQUFHLEdBQUEsRUFBQXRGLE9BQUlzRixLQUFHLElBQUE7QUFDckUsZ0JBQUlxRSxNQUFNNkIsVUFBVTtBQUNuQlUsd0JBQVV2VSxPQUFPZ0gsTUFBTSxVQUFVLFNBQVM7WUFDM0M7QUFDQTlHLHFCQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUscUJBQVN1VSxPQUFPQyxLQUFLekcsSUFBSTtBQUN6Qi9OLHFCQUFTcUwsS0FBS29KLGdCQUFnQkMsV0FBVztBQUN6QzFVLHFCQUFTcUwsS0FBS29KLGdCQUFnQkUsU0FBUzdVLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtBQUNsRSxrQkFBTWdQLFVBQVUsSUFBSTlWLFNBQVNxTCxLQUFLa0gsS0FDakMsc0JBQ0F6UyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsQ0FDbEM7QUFDQWdQLG9CQUFRakIsa0JBQWtCLElBQUk7QUFDOUJpQixvQkFBUTlLLEtBQUssTUFBTTtBQUNsQixvQkFBTXBELE9BQU9rTyxRQUFRaEIsWUFBWTtBQUNqQyxvQkFBTWlCLFdBQVc7QUFFakIsa0JBQ0MsSUFBSWYsT0FBQSx1REFBQTdNLE9BQ29EbkksU0FBU2dULE9BQU9pQyxhQUN0RXhILEdBQ0QsR0FBQyxtQkFBQSxDQUNGLEVBQUV2RixLQUFLTixJQUFJLEdBQ1Y7QUFDRGtPLHdCQUNFWixpQkFBaUIsRUFDakJDLE1BQU1yVixPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZSxDQUFDO0FBQ3REOUcseUJBQVN1VSxPQUFPYSxjQUNmeEQsT0FBTyxDQUFDLEdBQ1I5UixPQUFPZ0gsTUFDTix5QkFDQSx1QkFDRCxJQUNDaVAsV0FDQWpXLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxDQUNyQztBQUNBO2NBQ0Q7QUFDQWdQLHNCQUFRVCxlQUFlLENBQUM7QUFDeEJTLHNCQUFRWixpQkFBaUIsRUFBRVgsT0FBT3pVLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQ2xFZ1Asc0JBQVFSLGVBQWVqQixPQUFPO0FBQzlCeUIsc0JBQVFQLGNBQWN4VixRQUFRSyxVQUFVO0FBQ3hDMFYsc0JBQVFOLGNBQUEsS0FBQXJOLE9BQW1CeUosT0FBTyxDQUFDLENBQUMsQ0FBRTtBQUN0Q2tFLHNCQUFRM0gsT0FBTztZQUNoQixDQUFDO0FBQ0Q7VUFDRDtRQUNEO01BQ0Q7QUFDQXBPLGNBQVFTLGdCQUFnQlQsUUFBUXFOLEtBQUssS0FBSztJQUMzQyxHQUFHSixNQUFNO0VBQUE7QUFBQSxDQUFBOztBQzk1QlQsSUFBQWdKLHNCQUFBLENBQUE7QUFBQSxJQUFBQyxtQkFBQXpXLE1BQUE7RUFBQSx1Q0FBQTtBQUFBO0lBR0E7QUFDQSxLQUFDLFNBQVMwVyxZQUFZeFcsR0FBRztBQUN4QixZQUFNRSxRQUFRRixFQUFFLE1BQU07QUFPdEIsWUFBTXlXLG1CQUFtQjdRLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CO0FBQzNEekYsY0FBUUksT0FBTyxNQUFNO0FBQ3BCLFlBQUlnVyxrQkFBa0I7QUFDckJwVyxrQkFBUTZKLGVBQ1A3SixRQUFRSSxLQUFLcU4sVUFDYixNQUNBLFdBQ0ExTixPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsQ0FDbkM7QUFDQSxjQUNDL0csUUFBUXVILFFBQVEsdUJBQXVCLEtBQ3ZDaEMsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTSxLQUN2Q0YsR0FBRzBFLEtBQUt3SCxjQUFjLFlBQVksS0FDbEMsQ0FBQ2xNLEdBQUcwRSxLQUFLd0gsY0FBYyxZQUFZLEdBQ2xDO0FBQ0R6UixvQkFBUUksS0FBS3FOLFNBQVM7VUFDdkI7UUFDRDtBQUdBLFlBQUlsSSxHQUFHQyxPQUFPQyxJQUFJLFVBQVUsTUFBTSxZQUFZO0FBQzdDLGdCQUFNNFEsa0JBQWtCeFcsTUFBTXlILEtBQUssc0JBQXNCLEVBQUVBLEtBQUsscUJBQXFCLEVBQUVnRixNQUFNO0FBQzdGLGNBQUkrSixnQkFBZ0J6VixRQUFRO0FBQzNCWixvQkFBUUksS0FBS2tXLG1CQUFtQkQsaUJBQWlCcFcsU0FBU3NXLFlBQVk7QUFDdEVGLDRCQUFnQm5NLElBQUksZUFBZSxNQUFNO1VBQzFDO1FBQ0Q7QUFDQSxZQUNDM0UsR0FBR0MsT0FBT0MsSUFBSSw0QkFBNEIsTUFBTSxjQUNoREYsR0FBR0MsT0FBT0MsSUFBSSx3QkFBd0IsTUFBTSxNQUMzQztBQUNELGdCQUFNK1EsYUFBYTNXLE1BQU15SCxLQUFLLHdCQUF3QixFQUFFZ0YsTUFBTTtBQUM5RCxjQUFJa0ssV0FBVzVWLFFBQVE7QUFDdEJaLG9CQUFRSSxLQUFLa1csbUJBQW1CRSxZQUFZalIsR0FBR0MsT0FBT0MsSUFBSSx3QkFBd0IsRUFBRWdSLGtCQUFrQjtBQUN0R0QsdUJBQVd0TSxJQUFJLGVBQWUsTUFBTTtVQUNyQztRQUNEO01BQ0Q7QUFDQWxLLGNBQVFJLEtBQUtrVyxxQkFBcUIsQ0FBQ0QsaUJBQWlCSyxhQUFhO0FBQ2hFTCx3QkFBZ0JNLFVBQ2ZoWCxFQUFFLFFBQVEsRUFBRWlYLEtBQ1gsU0FDQTdXLE9BQU9nSCxNQUNOLGlDQUNBLGdDQUNELENBQ0QsQ0FDRDtBQUNBLGNBQU04UCxhQUFBLGNBQUF6TyxPQUEyQjdDLEdBQUcwRSxLQUFLNk0sYUFBYUosUUFBUSxDQUFDO0FBQy9ELGNBQU1sTixPQUFPNk0sZ0JBQWdCTyxLQUFLLE1BQU07QUFDeEMsWUFBSXBOLEtBQUtMLFNBQVMsR0FBRyxHQUFHO0FBQ3ZCa04sMEJBQWdCTyxLQUFLLFFBQUEsR0FBQXhPLE9BQVdvQixNQUFJLEdBQUEsRUFBQXBCLE9BQUl5TyxVQUFVLENBQUU7UUFDckQsT0FBTztBQUNOUiwwQkFBZ0JPLEtBQUssUUFBQSxHQUFBeE8sT0FBV29CLE1BQUksR0FBQSxFQUFBcEIsT0FBSXlPLFVBQVUsQ0FBRTtRQUNyRDtNQUNEO0FBRUE3VyxjQUFRSSxLQUFLMlcsU0FBUztBQUN0Qi9XLGNBQVFJLEtBQUtxTixXQUFXLE1BQU07QUFDN0IsWUFDQzJJLHFCQUFxQjdRLEdBQUdDLE9BQU9DLElBQUksWUFBWSxLQUMvQyxDQUFDZ08sUUFBUTFULE9BQU9nSCxNQUFNLG9CQUFvQixrQkFBa0IsQ0FBQyxHQUM1RDtBQUNEO1FBQ0Q7QUFDQS9HLGdCQUFRSSxLQUFLMlcsU0FBUyxJQUFJOVcsU0FBUzJOLGFBQWEsS0FBSyxHQUFHO0FBQ3hELGNBQU07VUFBQ21KO1FBQU0sSUFBSS9XLFFBQVFJO0FBQ3pCMlcsZUFBT2xKLFNBQVM5TixPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsQ0FBQztBQUNuRGdRLGVBQU9qSixjQUFjLFNBQVM7QUFDOUJpSixlQUFPaEosY0FBY2hPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFHLGdCQUFnQjtBQUNuRWdRLGVBQU9oSixjQUFjaE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXLEdBQUcsZUFBZTtBQUM1RSxjQUFNaUgsT0FBTyxJQUFJL04sU0FBU2dPLFVBQVVqTyxRQUFRSSxLQUFLcU4sU0FBU1MsUUFBUTtBQUNsRSxjQUFNOEksY0FBY2hKLEtBQUtJLE9BQU87VUFDL0J0RyxNQUFNO1VBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7VUFDcERnRCxTQUFTaEssT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQjtRQUNqRSxDQUFDO0FBQ0QsY0FBTWtRLGFBQWFELFlBQVk1SSxPQUFPO1VBQ3JDdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOb0osU0FBU2hLLE9BQU9nSCxNQUNmLDRCQUNBLDBCQUNEO1VBQ0F1SCxPQUFPdE8sUUFBUUksS0FBS3FOLFNBQVN5SjtRQUM5QixDQUFDO0FBQ0QsY0FBTUMsZUFBZUMsT0FBT0MsU0FBU3JYLFFBQVF1SCxRQUFRLHFCQUFxQixHQUFHLENBQUM7QUFDOUUwUCxtQkFBVzdJLE9BQU87VUFDakJ0RyxNQUFNO1VBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1VBQ3RDaUYsT0FBTztVQUNQc0wsVUFBVUgsaUJBQWlCO1FBQzVCLENBQUM7QUFDREYsbUJBQVc3SSxPQUFPO1VBQ2pCdEcsTUFBTTtVQUNOdUcsT0FBTztVQUNQckMsT0FBTztVQUNQc0wsVUFBVUgsaUJBQWlCO1FBQzVCLENBQUM7QUFDREYsbUJBQVc3SSxPQUFPO1VBQ2pCdEcsTUFBTTtVQUNOdUcsT0FBTztVQUNQckMsT0FBTztVQUNQc0wsVUFBVUgsaUJBQWlCO1FBQzVCLENBQUM7QUFDRCxZQUFJblgsUUFBUXVILFFBQVEsc0JBQXNCLEdBQUc7QUFDNUMwUCxxQkFBVzdJLE9BQU87WUFDakJ0RyxNQUFNO1lBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO1lBQ3BDaUYsT0FBTztZQUNQc0wsVUFBVUgsaUJBQWlCLEtBQUtBLGlCQUFpQjtVQUNsRCxDQUFDO1FBQ0YsT0FBTztBQUNORixxQkFBVzdJLE9BQU87WUFDakJ0RyxNQUFNO1lBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO1lBQ3BDaUYsT0FBTztZQUNQc0wsVUFBVUgsaUJBQWlCO1VBQzVCLENBQUM7QUFDREYscUJBQVc3SSxPQUFPO1lBQ2pCdEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztZQUNwQ2lGLE9BQU87WUFDUHNMLFVBQVVILGlCQUFpQjtVQUM1QixDQUFDO1FBQ0Y7QUFDQSxZQUFJblgsUUFBUXVILFFBQVEsbUJBQW1CLEVBQUUzRyxRQUFRO0FBQ2hEcVcscUJBQVc3SSxPQUFPO1lBQ2pCdEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsTUFBTTtZQUNuQ2lGLE9BQU87WUFDUHNMLFVBQVVILGlCQUFpQjtVQUM1QixDQUFDO1FBQ0Y7QUFDQUYsbUJBQVc3SSxPQUFPO1VBQ2pCdEcsTUFBTTtVQUNOdUcsT0FBTztVQUNQckMsT0FBTztVQUNQc0wsVUFBVUgsaUJBQWlCO1FBQzVCLENBQUM7QUFDREgsb0JBQVk1SSxPQUFPO1VBQ2xCdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOMk4sT0FBT3RPLFFBQVFJLEtBQUtxTixTQUFTOEo7UUFDOUIsQ0FBQztBQUNEdkosYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtVQUNsQ2lGLE9BQU96RyxHQUFHMEUsS0FBS3dILGNBQWMsWUFBWSxLQUFLO1VBQzlDK0YsTUFBTTtVQUNOek4sU0FBU2hLLE9BQU9nSCxNQUFNLG9CQUFvQixrQkFBa0I7VUFDNUQwUSxhQUFhMVgsT0FBT2dILE1BQ25CLG9DQUNBLGtDQUNEO1FBQ0QsQ0FBQztBQUNEaUgsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOdUcsT0FBTztVQUNQSSxPQUFPO1VBQ1A3RyxJQUFJO1FBQ0wsQ0FBQztBQUNELGNBQU04UCxPQUFPMUosS0FBS0ksT0FBTztVQUN4QnRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07UUFDbkMsQ0FBQztBQUNEMlEsYUFBS3RKLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDcENwRyxNQUFNO1VBQ05vSixTQUFTaEssT0FBT2dILE1BQU0sWUFBWSxVQUFVO1FBQzdDLENBQUM7QUFDRCxjQUFNOEosY0FBYzVJLFNBQVNZLGNBQWMsR0FBRztBQUM5Q2xKLFVBQUVrUixXQUFXLEVBQUVwSCxHQUFHLFNBQVMsTUFBTTtBQUNoQ3pKLGtCQUFRSSxLQUFLdVgsVUFBVTNHLFFBQVF0QyxNQUFNO1FBQ3RDLENBQUM7QUFFRG1DLG9CQUFZcEMsTUFBTXFDLFNBQVM7QUFDM0JELG9CQUFZRSxjQUFjaFIsT0FBT2dILE1BQU0sTUFBTSxJQUFJO0FBQ2pEMlEsYUFBS3RKLE9BQU87VUFDWHRHLE1BQU07VUFDTkYsSUFBSTtVQUNKeUcsT0FBTyxDQUFDd0MsV0FBVztRQUNwQixDQUFDO0FBQ0Q2RyxhQUFLdEosT0FBTztVQUNYdEcsTUFBTTtVQUNORixJQUFJO1VBQ0o2RyxPQUFPO1FBQ1IsQ0FBQztBQUNEaUosYUFBS3RKLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU87UUFDUixDQUFDO0FBQ0QsY0FBTUssU0FBU1YsS0FBS1csT0FBTztBQUMzQm9JLGVBQU9uSSxXQUFXRixNQUFNO0FBQ3hCcUksZUFBT2xJLFFBQVE7QUFDZkgsZUFBT3VJLFdBQVdqUCxPQUFPMEc7QUFDekJBLGVBQU9rRCxZQUFZLElBQUkzUixTQUFTcUwsS0FBSzBGLFFBQVFyUixFQUFFK08sTUFBTSxFQUFFcEgsS0FBSyw0QkFBNEIsRUFBRWtLLEtBQUssRUFBRSxDQUFDLENBQUM7QUFFbkcsWUFBSS9CLFVBQVU7QUFDZCxZQUFJWCxRQUFRLENBQUM7QUFDYixjQUFNOEksV0FBV3JTLEdBQUcwRSxLQUFLd0gsY0FBYyxpQkFBaUI7QUFDeEQsWUFBSW1HLFVBQVU7QUFFYixjQUFJLENBQUNyUyxHQUFHMEUsS0FBS3dILGNBQWMsWUFBWSxLQUFLbE0sR0FBRzBFLEtBQUt3SCxjQUFjLFlBQVksR0FBRztBQUVoRjNDLG9CQUFRO2NBQ1B0RSxRQUFRO2NBQ1JxTixRQUFRdFMsR0FBRzBFLEtBQUt3SCxjQUFjLFlBQVk7Y0FDMUNxRyxNQUFNO2NBQ05DLFdBQVdIO2NBQ1hJLFNBQVM7Y0FDVEMsT0FBTztjQUNQQyxRQUFRO1lBQ1Q7QUFDQSxnQkFBSWpZLFNBQVNxTCxLQUFLQyxJQUNqQnhMLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjLEdBQzNDK0gsT0FDQ00sWUFBVztBQUNYLG9CQUFNK0ksYUFBYXhZLEVBQUV5UCxPQUFPRSxZQUFZLENBQUMsRUFBRWhJLEtBQUssZUFBZSxFQUFFLENBQUMsRUFBRThRLGFBQWEsTUFBTTtBQUN2RixrQkFBSUQsY0FBY0EsZUFBZTVTLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFHO0FBQzdEZ0ssMkJBQVcxUCxPQUFPZ0gsTUFDakIseUJBQ0Esd0JBQ0Q7QUFDQWxILHNCQUFNeUgsS0FBSyxnQ0FBZ0MsRUFBRU8sS0FBQSxNQUFBTyxPQUFXcUgsT0FBTyxDQUFFO2NBQ2xFO1lBQ0QsQ0FDRCxFQUFFSSxLQUFLO1VBQ1I7QUFFQSxnQkFBTXdJLGFBQWNDLG1CQUFrQjtBQUNyQyxrQkFBTUMsVUFBVSxJQUFJdFksU0FBU3VZLEtBQUtGLGFBQWE7QUFDL0MsZ0JBQUlBLGlCQUFpQkMsUUFBUUUsUUFBUSxLQUFLRixRQUFRRyxJQUFJLElBQUksT0FBTyxFQUFFQyxTQUFTLG9CQUFJQyxLQUFLLENBQUMsR0FBRztBQUN4Rm5KLHlCQUFXMVAsT0FBT2dILE1BQ2pCLDZCQUNBLDJCQUNEO0FBQ0FsSCxvQkFBTXlILEtBQUssZ0NBQWdDLEVBQUVPLEtBQUEsTUFBQU8sT0FBV3FILE9BQU8sQ0FBRTtZQUNsRTtVQUNEO0FBQ0EsY0FBSW9KLGVBQWV0VCxHQUFHMEUsS0FBS3dILGNBQWMsY0FBYztBQUV2RCxjQUFJb0gsY0FBYztBQUNqQlIsdUJBQVdRLFlBQVk7VUFDeEIsT0FBTztBQUNOL0osb0JBQVE7Y0FDUHRFLFFBQVE7Y0FDUnNOLE1BQU07Y0FDTkksUUFBUTtjQUNSWSxRQUFRbEI7WUFDVDtBQUNBLGdCQUFJM1gsU0FBU3FMLEtBQUtDLElBQUl4TCxPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsR0FBRytILE9BQVFNLFlBQVc7QUFDNUV5Siw2QkFBZWxaLEVBQUV5UCxPQUFPRSxZQUFZLENBQUMsRUFBRWhJLEtBQUssZUFBZSxFQUFFc1AsS0FBSyxXQUFXO0FBQzdFeUIseUJBQVdRLFlBQVk7WUFDeEIsQ0FBQyxFQUFFaEosS0FBSztVQUNUO1FBQ0Q7QUFDQSxjQUFNNEUsT0FBT0EsTUFBTTtBQUVsQixnQkFBTTNFLE1BQU03SCxTQUFTOEgsWUFBWSxPQUFPO0FBQ3hDRCxjQUFJRSxVQUFVLFVBQVUsTUFBTSxJQUFJO0FBQ2xDdEIsaUJBQU91SSxXQUFXL0csY0FBY0osR0FBRztRQUNwQztBQUNBMkUsYUFBSztNQUNOO0FBTUF6VSxjQUFRSSxLQUFLMlksV0FBVztRQUN2QkMsUUFBUSxDQUNQO1VBQ0MvSSxVQUFVbFEsT0FBT2dILE1BQU0sY0FBYyxZQUFZO1VBQ2pEZ0ksTUFBTTtZQUNMLGdCQUFnQjtjQUNma0ssUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE1BQU07Z0JBQ25DdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLFlBQVksU0FBUztjQUM1QztjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFFBQVE7Z0JBQ3ZDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGNBQWMsV0FBVztjQUNoRDtZQUNEO1lBQ0EsY0FBYztjQUNia1MsUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7Z0JBQ2hEdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0I7Y0FDekQ7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7Z0JBQ3BEdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLG9CQUNBLGtCQUNEO2NBQ0Q7WUFDRDtZQUNBLGFBQWE7Y0FDWmtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQjtnQkFDMUR1TixTQUFTdlUsT0FBT2dILE1BQ2YsdUJBQ0EscUJBQ0Q7Y0FDRDtjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFBTSxvQkFBb0Isa0JBQWtCO2dCQUMxRHVOLFNBQVN2VSxPQUFPZ0gsTUFDZix1QkFDQSxxQkFDRDtjQUNEO1lBQ0Q7WUFDQSxZQUFZO2NBQ1hrUyxRQUFRO2dCQUNQNUssT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtnQkFDOUN1TixTQUFTdlUsT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7Y0FDdkQ7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0sY0FBYyxZQUFZO2dCQUM5Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZTtjQUN2RDtZQUNEO1lBQ0EsY0FBYztjQUNia1MsUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Z0JBQ3RDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztjQUMvQztjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Z0JBQ3RDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztjQUMvQztZQUNEO1lBQ0EsVUFBVTtjQUNUa1MsUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7Z0JBQzlDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO2NBQ3ZEO2NBQ0FtUyxRQUFRO2dCQUNQN0ssT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtnQkFDOUN1TixTQUFTdlUsT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7Y0FDdkQ7WUFDRDtZQUNBLFdBQVc7Y0FDVmtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2dCQUN0Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7Y0FDL0M7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2dCQUN0Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7Y0FDL0M7WUFDRDtZQUNBLGVBQWU7Y0FDZGtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO2dCQUM1Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztjQUNyRDtjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7Z0JBQ3hDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtjQUNqRDtZQUNEO1lBQ0EsYUFBYTtjQUNaa1MsUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Z0JBQ3RDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztjQUMvQztjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Z0JBQ3RDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztjQUMvQztZQUNEO1lBQ0EsZ0JBQWdCO2NBQ2ZrUyxRQUFRO2dCQUNQNUssT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztnQkFDcEN1TixTQUFTdlUsT0FBT2dILE1BQU0sV0FBVyxTQUFTO2NBQzNDO2NBQ0FtUyxRQUFRO2dCQUNQN0ssT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztnQkFDcEN1TixTQUFTdlUsT0FBT2dILE1BQU0sV0FBVyxTQUFTO2NBQzNDO1lBQ0Q7WUFDQSxXQUFXO2NBQ1ZrUyxRQUFRO2dCQUNQNUssT0FBT3RPLE9BQU9nSCxNQUNiLHNCQUNBLG9CQUNEO2dCQUNBdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtjQUNqRDtjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFDYixzQkFDQSxvQkFDRDtnQkFDQXVOLFNBQVN2VSxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7Y0FDakQ7WUFDRDtVQUNEO1FBQ0QsR0FDQTtVQUNDa0osVUFBVWxRLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtVQUNyQ2dJLE1BQU07WUFDTCxXQUFXO2NBQ1ZrSyxRQUFRO2dCQUNQNUssT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtnQkFDOUN1TixTQUFTdlUsT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7Y0FDdkQ7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2dCQUN0Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7Y0FDL0M7WUFDRDtZQUNBLGFBQWE7Y0FDWmtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQjtnQkFDdER1TixTQUFTdlUsT0FBT2dILE1BQ2YscUJBQ0EsbUJBQ0Q7Y0FDRDtjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFBTSxrQkFBa0IsZ0JBQWdCO2dCQUN0RHVOLFNBQVN2VSxPQUFPZ0gsTUFDZixxQkFDQSxtQkFDRDtjQUNEO1lBQ0Q7VUFDRDtRQUNELEdBQ0E7VUFDQ2tKLFVBQVVsUSxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7VUFDL0NnSSxNQUFNO1lBQ0wsV0FBVztjQUNWa0ssUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFDYiwrQkFDQSw2QkFDRDtnQkFDQXVOLFNBQVN2VSxPQUFPZ0gsTUFDZixrQ0FDQSxnQ0FDRDtjQUNEO2NBQ0FtUyxRQUFRO2dCQUNQN0ssT0FBT3RPLE9BQU9nSCxNQUNiLCtCQUNBLDZCQUNEO2dCQUNBdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLGtDQUNBLGdDQUNEO2NBQ0Q7WUFDRDtZQUNBLFlBQVk7Y0FDWGtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO2dCQUMxQ3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7Y0FDbkQ7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO2dCQUMxQ3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7Y0FDbkQ7WUFDRDtZQUNBLGdCQUFnQjtjQUNma1MsUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZTtnQkFDcER1TixTQUFTdlUsT0FBT2dILE1BQ2Ysb0JBQ0Esa0JBQ0Q7Y0FDRDtjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZTtnQkFDcER1TixTQUFTdlUsT0FBT2dILE1BQ2Ysb0JBQ0Esa0JBQ0Q7Y0FDRDtZQUNEO1VBQ0Q7UUFDRCxHQUNBO1VBQ0NrSixVQUFVbFEsT0FBT2dILE1BQU0sUUFBUSxNQUFNO1VBQ3JDZ0ksTUFBTTtZQUNMLHVCQUF1QjtjQUN0QmtLLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0sY0FBYyxZQUFZO2dCQUM5Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZTtjQUN2RDtjQUNBbVMsUUFBUTtnQkFDUDdLLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Z0JBQ2xDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztjQUMzQztZQUNEO1VBQ0Q7UUFDRCxHQUNBO1VBQ0NrSixVQUFVbFEsT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQjtVQUNqRWdJLE1BQU07WUFDTCxVQUFVO2NBQ1RrSyxRQUFRO2dCQUNQNUssT0FBT3RPLE9BQU9nSCxNQUFNLHVCQUF1QixxQkFBcUI7Z0JBQ2hFdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLDBCQUNBLHdCQUNEO2NBQ0Q7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0sdUJBQXVCLHFCQUFxQjtnQkFDaEV1TixTQUFTdlUsT0FBT2dILE1BQ2YsMEJBQ0Esd0JBQ0Q7Y0FDRDtZQUNEO1lBQ0EsVUFBVTtjQUNUa1MsUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCO2dCQUN4RHVOLFNBQVN2VSxPQUFPZ0gsTUFDZixzQkFDQSxvQkFDRDtjQUNEO2NBQ0FtUyxRQUFRO2dCQUNQN0ssT0FBT3RPLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUI7Z0JBQ3hEdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLHNCQUNBLG9CQUNEO2NBQ0Q7WUFDRDtZQUNBLFdBQVc7Y0FDVmtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQ2IscUJBQ0EsbUJBQ0Q7Z0JBQ0F1TixTQUFTdlUsT0FBT2dILE1BQU0sZUFBZSxhQUFhO2NBQ25EO2NBQ0FtUyxRQUFRO2dCQUNQN0ssT0FBT3RPLE9BQU9nSCxNQUNiLDRCQUNBLDBCQUNEO2dCQUNBdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGVBQWUsYUFBYTtjQUNuRDtZQUNEO1lBQ0EsYUFBYTtjQUNaa1MsUUFBUTtnQkFDUDVLLE9BQU90TyxPQUFPZ0gsTUFBTSx3QkFBd0Isc0JBQXNCO2dCQUNsRXVOLFNBQVN2VSxPQUFPZ0gsTUFDZiwyQkFDQSx5QkFDRDtjQUNEO2NBQ0FtUyxRQUFRO2dCQUNQN0ssT0FBT3RPLE9BQU9nSCxNQUFNLHdCQUF3QixzQkFBc0I7Z0JBQ2xFdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLDJCQUNBLHlCQUNEO2NBQ0Q7WUFDRDtZQUNBLGVBQWU7Y0FDZGtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO2dCQUN4Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7Y0FDakQ7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO2dCQUN4Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7Y0FDakQ7WUFDRDtZQUNBLFVBQVU7Y0FDVGtTLFFBQVE7Z0JBQ1A1SyxPQUFPO2dCQUNQaUcsU0FBUztjQUNWO2NBQ0E0RSxRQUFRO2dCQUNQN0ssT0FBTztnQkFDUGlHLFNBQVM7Y0FDVjtZQUNEO1VBQ0Q7UUFDRCxHQUNBO1VBQ0NyRSxVQUFVbFEsT0FBT2dILE1BQU0sZUFBZSxhQUFhO1VBQ25EZ0ksTUFBTTtZQUNMLGNBQWM7Y0FDYmtLLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7Z0JBQ3BEdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLG9CQUNBLGtCQUNEO2NBQ0Q7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7Z0JBQ3BEdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLG9CQUNBLGtCQUNEO2NBQ0Q7WUFDRDtZQUNBLFVBQVU7Y0FDVGtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO2dCQUN4Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7Y0FDakQ7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO2dCQUMxQ3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7Y0FDbkQ7WUFDRDtZQUNBLGtCQUFrQjtjQUNqQmtTLFFBQVE7Z0JBQ1A1SyxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7Z0JBQ3BEdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLG9CQUNBLGtCQUNEO2NBQ0Q7Y0FDQW1TLFFBQVE7Z0JBQ1A3SyxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7Z0JBQ3BEdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLG9CQUNBLGtCQUNEO2NBQ0Q7WUFDRDtVQUNEO1FBQ0QsQ0FBQTtRQUVEb1MsY0FBYztVQUNiLGdCQUFnQjtZQUNmOUssT0FBT3RPLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUI7WUFDeER1TixTQUFTdlUsT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQjtVQUNqRTtVQUNBLFVBQVU7WUFDVHNILE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7WUFDaER1TixTQUFTdlUsT0FBT2dILE1BQU0sZUFBZSxhQUFhO1VBQ25EO1VBQ0EsaUJBQWlCO1lBQ2hCc0gsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtZQUN0Q3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7VUFDL0M7VUFDQSxvQkFBb0I7WUFDbkJzSCxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1lBQ2xDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztVQUMzQztVQUNBLGFBQWE7WUFDWnNILE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7WUFDNUN1TixTQUFTdlUsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7VUFDckQ7VUFDQSxXQUFXO1lBQ1ZzSCxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1lBQ2xDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztVQUMzQztVQUNBLGNBQWM7WUFDYnNILE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7WUFDNUN1TixTQUFTdlUsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7VUFDckQ7VUFDQSxhQUFhO1lBQ1pzSCxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1lBQ2xDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztVQUMzQztVQUNBLFVBQVU7WUFDVHNILE9BQU90TyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7WUFDMUN1TixTQUFTdlUsT0FBT2dILE1BQU0sZUFBZSxhQUFhO1VBQ25EO1VBQ0Esb0JBQW9CO1lBQ25Cc0gsT0FBT3RPLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1lBQ3BEdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLG9CQUFvQixrQkFBa0I7VUFDN0Q7VUFDQSxpQkFBaUI7WUFDaEJzSCxPQUFPdE8sT0FBT2dILE1BQ2IsMEJBQ0Esd0JBQ0Q7WUFDQXVOLFNBQVN2VSxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7VUFDakQ7VUFDQSxjQUFjO1lBQ2JzSCxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1lBQ3RDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztVQUMvQztVQUNBLG9CQUFvQjtZQUNuQnNILE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7WUFDNUN1TixTQUFTdlUsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7VUFDckQ7VUFDQSxlQUFlO1lBQ2RzSCxPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO1lBQzVDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1VBQ3JEO1VBQ0EsZUFBZTtZQUNkc0gsT0FBT3RPLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtZQUMxQ3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7VUFDbkQ7VUFDQSxtQkFBbUI7WUFDbEJzSCxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7WUFDcER1TixTQUFTdlUsT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQjtVQUM3RDtRQUNEO1FBQ0FxUyxZQUFZO1VBQ1gsVUFBVTtZQUNUL0ssT0FBT3RPLE9BQU9nSCxNQUFNLHFCQUFxQixtQkFBbUI7WUFDNUR1TixTQUFTdlUsT0FBT2dILE1BQ2Ysd0JBQ0Esc0JBQ0Q7VUFDRDtVQUNBLGFBQWE7WUFDWnNILE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDbEN1TixTQUFTdlUsT0FBT2dILE1BQU0sV0FBVyxTQUFTO1lBQzFDc1MsMEJBQTBCO1VBQzNCO1VBQ0EsVUFBVTtZQUNUaEwsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ3VOLFNBQVN2VSxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7VUFDM0M7VUFDQSxpQkFBaUI7WUFDaEJzSCxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxXQUFXO1lBQzNDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGVBQWUsY0FBYztVQUNwRDtVQUNBLFlBQVk7WUFDWHNILE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7WUFDdEN1TixTQUFTdlUsT0FBT2dILE1BQU0sYUFBYSxXQUFXO1VBQy9DO1FBQ0Q7TUFDRDtBQUVBL0csY0FBUUksS0FBS2taLGVBQWU7QUFDNUJ0WixjQUFRSSxLQUFLbVosY0FBYztBQUMzQnZaLGNBQVFJLEtBQUtvWixjQUFjO0FBQzNCeFosY0FBUUksS0FBS3FOLFNBQVN5SixrQkFBa0IsU0FBU0EsZ0JBQWdCeE4sR0FBRztBQUNuRSxjQUFNO1VBQUNzQztRQUFLLElBQUl0QyxFQUFFNEc7QUFDbEIsY0FBTTtVQUFDbUo7UUFBUyxJQUFJL1AsRUFBRTRHLE9BQU90STtBQUM3QnlSLGtCQUFVeEMsYUFBYWpMO0FBQ3ZCLFlBQUkwTixlQUFlRCxVQUFVek47QUFDN0IsWUFBSTJOO0FBQ0osWUFBSUQsY0FBYztBQUNqQixjQUFJMU4sVUFBVSxlQUFlO0FBRTVCMk4sOEJBQWtCLElBQUkxRSxPQUFPMVAsR0FBRzBFLEtBQUtpTCxhQUFhd0UsWUFBWSxDQUFDO1VBQ2hFLE9BQU87QUFDTkEsMkJBQWVBLGFBQWEzRyxRQUFRLGFBQWEsRUFBRTtBQUNuRDRHLDhCQUFrQixJQUFJMUUsT0FBQSxHQUFBN00sT0FBVTdDLEdBQUcwRSxLQUFLaUwsYUFBYXdFLFlBQVksR0FBQyxVQUFBLENBQVU7VUFDN0U7UUFDRDtBQUNBLGVBQU9ELFVBQVVHLGNBQWMsR0FBRztBQUNqQ0gsb0JBQVVJLFlBQVlKLFVBQVVLLFVBQVU7UUFDM0M7QUFDQSxZQUFJeEMsV0FBVztBQUVmLGNBQU15QyxnQkFBZ0JBLENBQUNDLFVBQVVDLFdBQVdDLGdCQUFnQnBOLE1BQU1kLFVBQVU7QUFHM0UsZ0JBQU1tTyxRQUFRck4sSUFBSWlHLFFBQVEsU0FBUyxFQUFFO0FBR3JDLGNBQUltSCxrQkFBa0J2YSxFQUFFeWEsT0FBT0MsUUFBUSxFQUFFQyxhQUFhLFVBQVU7QUFDL0QsZ0JBQUlDLGtCQUFrQixJQUFJdGEsU0FBU2dPLFVBQVVnRCxRQUFRO2NBQ3BEbkosTUFBTTtjQUNOdUcsT0FBTztZQUNSLENBQUM7QUFDRGtNLDhCQUFrQkEsZ0JBQWdCNUwsT0FBTztBQUN6Q3NMLHNCQUFVaFIsWUFBWXNSLGVBQWU7QUFDckNOLHdCQUFZTTtVQUNiO0FBQ0EsbUJBQUFDLE1BQUEsR0FBQUMsa0JBQXdDQyxPQUFPQyxRQUFRWCxRQUFRLEdBQUFRLE1BQUFDLGdCQUFBN1osUUFBQTRaLE9BQUc7QUFBbEUsa0JBQVcsQ0FBQ0ksU0FBU0MsY0FBYyxJQUFBSixnQkFBQUQsR0FBQTtBQUVsQyxnQkFBSSxDQUFDLENBQUNMLFNBQVMsQ0FBQ1UsZUFBZS9OLEdBQUcsR0FBRztBQUNwQztZQUNEO0FBQ0Esa0JBQU1nTyxNQUFNLE9BQU9GLFlBQVksV0FBV0EsVUFBVUMsZUFBZTdPO0FBQ25FLGtCQUFNK08sV0FBV0QsTUFBTVg7QUFDdkIsa0JBQU1hLE9BQU8sSUFBSS9hLFNBQVNnTyxVQUFVZ0QsUUFBUTtjQUMzQ25KLE1BQU07Y0FDTnVHLE9BQUEsS0FBQWpHLE9BQVkyUyxVQUFRLE1BQUEsRUFBQTNTLE9BQU8rUixRQUFRVSxlQUFlL04sR0FBRyxFQUFFdUIsUUFBUXdNLGVBQWV4TSxLQUFLO2NBQ25GckMsT0FBTytPO1lBQ1IsQ0FBQztBQUVELGdCQUFJLENBQUN6RCxZQUFZb0MsZ0JBQWdCQyxnQkFBZ0J4UixLQUFLNFMsUUFBUSxHQUFHO0FBQ2hFQyxtQkFBS0MsS0FBSzNELFdBQVc7QUFDckJBLHlCQUFXO1lBQ1o7QUFDQSxrQkFBTTRELGVBQWVqQixVQUFVaFIsWUFBWStSLEtBQUtyTSxPQUFPLENBQUM7QUFDeERoUCxjQUFFdWIsWUFBWSxFQUFFRCxLQUFLLGVBQWVKLGNBQWM7VUFDbkQ7UUFDRDtBQUNBLGdCQUFRN08sT0FBQTtVQUNQLEtBQUs7VUFDTCxLQUFLO0FBQ0orTiwwQkFBYy9aLFFBQVFJLEtBQUsyWSxTQUFTL00sS0FBSyxHQUFHeU4sV0FBVyxJQUFJO0FBQzNEO1VBQ0QsS0FBSyxrQkFBa0I7QUFDdEIsa0JBQU0wQixtQkFBbUI7Y0FDeEIsR0FBR25iLFFBQVFJLEtBQUsyWSxTQUFTSTtjQUN6QixHQUFHblosUUFBUUksS0FBSzJZLFNBQVNLO1lBQzFCO0FBQ0Esa0JBQU1nQyx3QkFBd0IsQ0FBQztBQUFBLGdCQUFBQyxhQUFBM1AsMkJBQ2JnUCxPQUFPWSxLQUFLSCxnQkFBZ0IsRUFBRUksS0FBSyxDQUFBLEdBQUFDO0FBQUEsZ0JBQUE7QUFBckQsbUJBQUFILFdBQUF6UCxFQUFBLEdBQUEsRUFBQTRQLFNBQUFILFdBQUF4UCxFQUFBLEdBQUFDLFFBQXdEO0FBQUEsc0JBQTdDZ1AsTUFBQVUsT0FBQXhQO0FBQ1ZvUCxzQ0FBc0JOLEdBQUcsSUFBSUssaUJBQWlCTCxHQUFHO2NBQ2xEO1lBQUEsU0FBQTdPLEtBQUE7QUFBQW9QLHlCQUFBM1IsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUFvUCx5QkFBQW5QLEVBQUE7WUFBQTtBQUNBNk4sMEJBQWNxQix1QkFBdUIzQixXQUFXLElBQUk7QUFDcEQ7VUFDRDtVQUNBLEtBQUs7QUFDSk0sMEJBQWMvWixRQUFRdUgsUUFBUSxtQkFBbUIsR0FBR2tTLFdBQVcsSUFBSTtBQUNuRTtVQUNELEtBQUs7QUFDSixxQkFBQWdDLE1BQUEsR0FBQUMsT0FBa0IsQ0FBQyxVQUFVLFFBQVEsR0FBQUQsTUFBQUMsS0FBQTlhLFFBQUE2YSxPQUFHO0FBQXhDLG9CQUFXRSxNQUFBRCxLQUFBRCxHQUFBO0FBQUEsa0JBQUFHLGFBQUFsUSwyQkFDZTFMLFFBQVFJLEtBQUsyWSxTQUFTQyxNQUFBLEdBQUE2QztBQUFBLGtCQUFBO0FBQS9DLHFCQUFBRCxXQUFBaFEsRUFBQSxHQUFBLEVBQUFpUSxTQUFBRCxXQUFBL1AsRUFBQSxHQUFBQyxRQUF1RDtBQUFBLHdCQUE1Q2dRLGFBQUFELE9BQUE3UDtBQUNWK04sZ0NBQWMrQixXQUFXL00sTUFBTTBLLFdBQVcsTUFBTWtDLEdBQUc7Z0JBQ3BEO2NBQUEsU0FBQTFQLEtBQUE7QUFBQTJQLDJCQUFBbFMsRUFBQXVDLEdBQUE7Y0FBQSxVQUFBO0FBQUEyUCwyQkFBQTFQLEVBQUE7Y0FBQTtZQUNEO0FBQ0E2TiwwQkFBYy9aLFFBQVFJLEtBQUsyWSxTQUFTSSxjQUFjTSxXQUFXLElBQUk7QUFDakVNLDBCQUFjL1osUUFBUUksS0FBSzJZLFNBQVNLLFlBQVlLLFdBQVcsSUFBSTtBQUMvRE0sMEJBQWMvWixRQUFRdUgsUUFBUSxtQkFBbUIsR0FBR2tTLFdBQVcsSUFBSTtBQUNuRTtVQUNELEtBQUs7VUFDTCxLQUFLO0FBQUEsZ0JBQUFzQyxhQUFBclEsMkJBR3FCMUwsUUFBUUksS0FBSzJZLFNBQVNDLE1BQUEsR0FBQWdEO0FBQUEsZ0JBQUE7QUFBL0MsbUJBQUFELFdBQUFuUSxFQUFBLEdBQUEsRUFBQW9RLFNBQUFELFdBQUFsUSxFQUFBLEdBQUFDLFFBQXVEO0FBQUEsc0JBQTVDZ1EsYUFBQUUsT0FBQWhRO0FBQ1Ysb0JBQUlpUSxXQUFXLElBQUloYyxTQUFTZ08sVUFBVWdELFFBQVE7a0JBQzdDbkosTUFBTTtrQkFDTnVHLE9BQU95TixXQUFXN0w7Z0JBQ25CLENBQUM7QUFDRGdNLDJCQUFXQSxTQUFTdE4sT0FBTztBQUMzQjhLLDBCQUFVeFEsWUFBWWdULFFBQVE7QUFFOUJsQyw4QkFBYytCLFdBQVcvTSxNQUFNa04sVUFBVSxLQUFLO2NBQy9DO1lBQUEsU0FBQWhRLEtBQUE7QUFBQThQLHlCQUFBclMsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUE4UCx5QkFBQTdQLEVBQUE7WUFBQTtBQUNBO1VBQ0QsS0FBSyxhQUFhO0FBRWpCLGtCQUFNZ1EsZ0JBQWdCQSxNQUFNO0FBQzNCLG9CQUFNQyxXQUFXbmMsUUFBUUksS0FBS29aLFlBQVl6RSxZQUFZO0FBRXRELG9CQUFNLENBQUNxSCxNQUFNLElBQUlwYyxRQUFRSSxLQUFLdVgsVUFBVTBFLGVBQWVGLFFBQVE7QUFFL0Qsb0JBQU1HLFNBQVM7Z0JBQ2Q3QyxXQUFXQztnQkFDWDZDLFNBQVM3UyxFQUFFNEcsT0FBT3RJLEtBQUt1VSxRQUFRdlE7Y0FDaEM7QUFDQSxvQkFBTTJQLE1BQUEsUUFBQXZULE9BQWNwSSxRQUFRSSxLQUFLdVgsVUFBVTZFLHVCQUF1QkwsVUFBVUcsUUFBUUYsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUFBLGtCQUFBSyxhQUFBL1EsMkJBRXJFMUwsUUFBUUksS0FBSzJZLFNBQVNDLE1BQUEsR0FBQTBEO0FBQUEsa0JBQUE7QUFBL0MscUJBQUFELFdBQUE3USxFQUFBLEdBQUEsRUFBQThRLFNBQUFELFdBQUE1USxFQUFBLEdBQUFDLFFBQXVEO0FBQUEsd0JBQTVDZ1EsYUFBQVksT0FBQTFRO0FBQ1Ysc0JBQUlpUSxXQUFXLElBQUloYyxTQUFTZ08sVUFBVWdELFFBQVE7b0JBQzdDbkosTUFBTTtvQkFDTnVHLE9BQU95TixXQUFXN0w7a0JBQ25CLENBQUM7QUFDRGdNLDZCQUFXQSxTQUFTdE4sT0FBTztBQUMzQjhLLDRCQUFVeFEsWUFBWWdULFFBQVE7QUFFOUJsQyxnQ0FBYytCLFdBQVcvTSxNQUFNa04sVUFBVSxPQUFPTixHQUFHO2dCQUNwRDtjQUFBLFNBQUExUCxLQUFBO0FBQUF3USwyQkFBQS9TLEVBQUF1QyxHQUFBO2NBQUEsVUFBQTtBQUFBd1EsMkJBQUF2USxFQUFBO2NBQUE7QUFFQWxNLHNCQUFRSSxLQUFLcU4sU0FBU2tQLG9CQUFvQmpULENBQUM7WUFDNUM7QUFDQSxnQkFBSTFKLFFBQVFJLEtBQUtvWixhQUFhO0FBQzdCMEMsNEJBQWM7WUFDZixPQUFPO0FBQ04sb0JBQU1VLGdCQUFnQixJQUFJM2MsU0FBU3FMLEtBQUtrSCxLQUFBLGFBQUFwSyxPQUMxQmdPLGdCQUFnQixHQUM3QnJXLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUNoQztBQUNBNlYsNEJBQWM5SCxrQkFBa0IsTUFBTSxLQUFLO0FBQzNDOEgsNEJBQWMzUixLQUNaNFIsYUFBWTtBQUNaN2Msd0JBQVFJLEtBQUtvWixjQUFjcUQ7QUFDM0JYLDhCQUFjO2NBQ2YsR0FDQSxNQUFNO0FBSUwsc0JBQU1ZLGtCQUFrQm5kLEVBQUUsVUFBVSxFQUNsQ2lYLEtBQUssTUFBTSxnQ0FBZ0MsRUFDM0MxTSxJQUFJLFNBQVMsTUFBTSxFQUNuQnJDLEtBQ0E5SCxPQUFPZ0gsTUFDTiw2Q0FDQSw2Q0FDRCxDQUNEO0FBQ0QrVixnQ0FBZ0I5VCxhQUFhbkosTUFBTXlILEtBQUssZ0NBQWdDLENBQUM7QUFHekVvQyxrQkFBRTRHLE9BQU90SSxLQUFLNEosVUFBVW1MLGFBQWE7Y0FDdEMsQ0FDRDtZQUNEO0FBQ0E7VUFDRDtVQUNBO0FBQ0MsaUJBQUt4WCxHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLHNCQUFzQixvQkFBb0IsR0FBRztjQUN4RWUsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRDtRQUNGO0FBR0EsWUFBSWlCLFVBQVUsYUFBYTtBQUUxQm5NLGdCQUFNeUgsS0FBSyxpQ0FBaUMsRUFBRTBWLE9BQU87QUFDckRoZCxrQkFBUUksS0FBS3FOLFNBQVNrUCxvQkFBb0JqVCxDQUFDO1FBQzVDO01BQ0Q7QUFDQTFKLGNBQVFJLEtBQUtxTixTQUFTa1Asc0JBQXVCalQsT0FBTTtBQUVsRHpKLGlCQUFTZ08sVUFBVWdQLDRCQUE0QnZULEVBQUU0RyxPQUFPdEksS0FBS3VVLFNBQVMsSUFBSTtBQUMxRXRjLGlCQUFTZ08sVUFBVWlQLGtCQUFrQnhULEVBQUU0RyxPQUFPdEksS0FBS3VVLE9BQU87QUFFMUR2YyxnQkFBUUksS0FBS3FOLFNBQVM4SixtQkFBbUI3TixDQUFDO0FBRTFDLFlBQUksQ0FBQzFKLFFBQVF1SCxRQUFRLFdBQVcsR0FBRztBQUNsQzFILGdCQUNFeUgsS0FBSyx3QkFBd0IsRUFDN0I2VixRQUFRO1lBQ1JDLE9BQU87WUFDUEMsU0FBU3BkLFNBQVNrZCxRQUFRRyxTQUFTQztZQUNuQ0MsZ0JBQWdCdmQsU0FBU2tkLFFBQVFNO1lBQ2pDQyxVQUFVO2NBQ1RDLFdBQVcxZCxTQUFTa2QsUUFBUVM7WUFDN0I7VUFDRCxDQUFDLEVBQ0FDLE9BQU83ZCxRQUFRSSxLQUFLcU4sU0FBUzhKLGtCQUFrQjtBQUNqRDFYLGdCQUFNeUgsS0FBSyxvQkFBb0IsRUFBRW1DLEdBQUcsV0FBV3hKLFNBQVNrZCxRQUFRVyxTQUFTLEVBQUVDLFFBQVEsT0FBTztBQUMxRnhZLGFBQUcwRSxLQUFLa0M7Ozs7O1lBS1A7VUFDRDtRQUNEO01BQ0Q7QUFDQW5NLGNBQVFJLEtBQUtxTixTQUFTOEoscUJBQXNCN04sT0FBTTtBQUNqRCxjQUFNdU4sYUFBYXZOLEVBQUU0RyxPQUFPdEMsS0FBS2lKLFdBQVdqTDtBQUM1QyxjQUFNO1VBQUNBO1FBQUssSUFBSXRDLEVBQUU0RyxPQUFPdEMsS0FBS3lMO0FBRzlCLGNBQU11RSxtQkFBbUI7VUFDeEIsV0FBV2plLE9BQU9nSCxNQUFNLHNCQUFzQixxQkFBcUI7VUFDbkUsVUFBVWhILE9BQU9nSCxNQUFNLHlCQUF5Qix5QkFBeUI7UUFDMUU7QUFDQSxZQUFJLENBQUMsZ0JBQWdCLGNBQWMsa0JBQWtCLGFBQWEsRUFBRW9DLFNBQVM4TixVQUFVLEdBQUc7QUFDekYsY0FBSStHLGlCQUFpQmhTLEtBQUssR0FBRztBQUM1QixnQkFBSWhNLFFBQVFJLEtBQUtrWixpQkFBaUIsTUFBTTtBQUN2Q3RaLHNCQUFRSSxLQUFLa1osZUFBZTVQLEVBQUU0RyxPQUFPdEMsS0FBS3VPLFFBQVF2UTtZQUNuRDtBQUNBdEMsY0FBRTRHLE9BQU90QyxLQUFLdU8sUUFBUTBCLGFBQWE7QUFDbkN2VSxjQUFFNEcsT0FBT3RDLEtBQUt1TyxRQUFRdlEsUUFBUTtBQUU5Qi9MLHFCQUFTZ08sVUFBVWdQLDRCQUE0QnZULEVBQUU0RyxPQUFPdEMsS0FBS3VPLFNBQVMsS0FBSztBQUMzRXRjLHFCQUFTZ08sVUFBVWlRLHFCQUFxQnhVLEVBQUU0RyxPQUFPdEMsS0FBS3VPLFNBQVN5QixpQkFBaUJoUyxLQUFLLENBQUM7VUFDdkYsV0FBV3RDLEVBQUU0RyxPQUFPdEMsS0FBS3VPLFFBQVEwQixZQUFZO0FBQzVDLGdCQUFJamUsUUFBUUksS0FBS2taLGlCQUFpQixNQUFNO0FBQ3ZDNVAsZ0JBQUU0RyxPQUFPdEMsS0FBS3VPLFFBQVF2USxRQUFRaE0sUUFBUUksS0FBS2taO0FBQzNDdFosc0JBQVFJLEtBQUtrWixlQUFlO1lBQzdCO0FBQ0E1UCxjQUFFNEcsT0FBT3RDLEtBQUt1TyxRQUFRMEIsYUFBYTtBQUNuQ2hlLHFCQUFTZ08sVUFBVWdQLDRCQUE0QnZULEVBQUU0RyxPQUFPdEMsS0FBS3VPLFNBQVMsSUFBSTtBQUMxRXRjLHFCQUFTZ08sVUFBVWlQLGtCQUFrQnhULEVBQUU0RyxPQUFPdEMsS0FBS3VPLE9BQU87VUFDM0Q7UUFDRDtBQUVBMWMsY0FBTXlILEtBQUsscUJBQXFCLEVBQUUwVixPQUFPO01BQzFDO0FBQ0FoZCxjQUFRSSxLQUFLdVgsWUFBWTtRQUN4QndHLG9CQUFvQkEsQ0FBQ0MsY0FBYzdCLFNBQVMxSyxRQUFRd00sVUFBVUMsV0FBVztBQUN4RSxjQUFJelcsT0FBTyxLQUFLTyxPQUFPLFVBQVVnVyxZQUFZO0FBRTdDLGNBQUk3QixTQUFTO0FBQ1oxVSxvQkFBQSxNQUFBTyxPQUFjbVUsT0FBTztVQUN0QjtBQUNBLGNBQUkxSyxRQUFRO0FBRVhoSyxvQkFBQSxNQUFBTyxPQUFjeUosTUFBTTtVQUNyQjtBQUNBaEssa0JBQVEsVUFBVU8sT0FBTyxRQUFRO0FBQ2pDLGNBQUksQ0FBQ2tXLFFBQVE7QUFDWnpXLG9CQUFRLFVBQVVPLE9BQU8sSUFBSTtVQUM5QjtBQUNBUCxrQkFBUTtBQUNSLGlCQUFPQTtRQUNSO1FBQ0EwVyxhQUFhQSxDQUFDdlEsTUFBTXdRLGlCQUFpQjtBQUNwQyxnQkFBTXpNLFFBQVE5UixTQUFTZ08sVUFBVStELGFBQWFoRSxJQUFJO0FBRWxEd1EsMkJBQUFBLGVBQWlCek0sTUFBTTBIO0FBQ3ZCLGdCQUFNZ0YsZ0JBQWdCMU0sTUFBTXdLO0FBQzVCLGdCQUFNbUMsZUFBZTFlLFFBQVFJLEtBQUt1WCxVQUFVd0csbUJBQzNDSyxjQUNBQyxlQUNBMU0sTUFBTUYsUUFDTkUsTUFBTWtGLGVBQWUsUUFDdEI7QUFDQWpKLGVBQUs0RCxVQUFVSyxZQUFZeU0sY0FBQSxhQUFBdFcsT0FBMkJnTyxnQkFBZ0IsQ0FBRTtRQUN6RTs7UUFHQXBGLFNBQVVoRCxVQUFTO0FBQ2xCLGNBQUlBLEtBQUtpSixXQUFXakwsVUFBVSxhQUFhO0FBRTFDLGtCQUFNNFEsZ0JBQWdCLElBQUkzYyxTQUFTcUwsS0FBS2tILEtBQUEsYUFBQXBLLE9BQzFCZ08sZ0JBQWdCLEdBQzdCclcsT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQ2hDO0FBQ0E2ViwwQkFBYzlILGtCQUFrQixNQUFNLEtBQUs7QUFHM0M4SCwwQkFBYzNSLEtBQU00UixhQUFZO0FBQy9CN2Msc0JBQVFJLEtBQUtvWixjQUFjcUQ7QUFDM0Isb0JBQU1WLFdBQVdVLFFBQVE5SCxZQUFZO0FBRXJDLG9CQUFNLENBQUNxSCxNQUFNLElBQUlwYyxRQUFRSSxLQUFLdVgsVUFBVTBFLGVBQWVGLFFBQVE7QUFDL0Qsb0JBQU1HLFNBQVM7Z0JBQ2Q3QyxXQUFXekwsS0FBS3lMLFVBQVV6TjtnQkFDMUJ1USxTQUFTdk8sS0FBS3VPLFFBQVF2UTtnQkFDdEIyUyxhQUFhaGYsRUFBRXFPLEtBQUt5TCxTQUFTLEVBQzNCblMsS0FBQSxpQkFBQWMsT0FBc0J6SSxFQUFFcU8sS0FBS3lMLFNBQVMsRUFBRTNNLElBQUksR0FBQyxJQUFBLENBQUksRUFDakRtTyxLQUFLLGFBQWE7Y0FDckI7QUFDQSxvQkFBTSxDQUFDRixRQUFRLElBQUkvYSxRQUFRSSxLQUFLdVgsVUFBVTZFLHVCQUF1QkwsVUFBVUcsUUFBUUYsTUFBTTtBQUN6RnBjLHNCQUFRSSxLQUFLdVgsVUFBVTRHLFlBQVl2USxNQUFNK00sUUFBUTtBQUdqRCxrQkFBSS9NLEtBQUt5TCxVQUFVek4sVUFBVStPLFVBQVU7QUFDdEMsc0JBQU1qTCxNQUFNN0gsU0FBUzhILFlBQVksT0FBTztBQUN4Q0Qsb0JBQUlFLFVBQVUsVUFBVSxNQUFNLElBQUk7QUFDbENoQyxxQkFBS2lKLFdBQVcvRyxjQUFjSixHQUFHO2NBQ2xDO1lBQ0QsQ0FBQztVQUNGLE9BQU87QUFDTjlQLG9CQUFRSSxLQUFLdVgsVUFBVTRHLFlBQVl2USxJQUFJO1VBQ3hDO1FBQ0Q7Ozs7Ozs7OztRQVNBcU8sZ0JBQWlCRixjQUFhO0FBQzdCLGdCQUFNeUMsYUFDTDtBQUNELGdCQUFNQyxVQUFVLENBQUM7QUFDakIsZ0JBQU16QyxTQUFTO1lBQ2Q1RCxNQUFNLElBQUl2WSxTQUFTdVksS0FBSyxDQUFDO1lBQ3pCMVEsTUFBTTtVQUNQO0FBQ0EsY0FBSWdYO0FBQ0osa0JBQVFBLFVBQVVGLFdBQVdHLEtBQUs1QyxRQUFRLE9BQU8sTUFBTTtBQUN0RCxrQkFBTSxDQUFBLEVBQUdwQixRQUFRLElBQUkrRDtBQUNyQixrQkFBTUUsZUFBZSxJQUFJL2UsU0FBU3VZLEtBQUEsR0FBQXBRLE9BQzlCMFcsUUFBUSxDQUFDLEdBQUMsR0FBQSxFQUFBMVcsT0FBSTBXLFFBQVEsQ0FBQyxHQUFDLEdBQUEsRUFBQTFXLE9BQUkwVyxRQUFRLENBQUMsR0FBQyxHQUFBLEVBQUExVyxPQUFJMFcsUUFBUSxDQUFDLEdBQUMsR0FBQSxFQUFBMVcsT0FBSTBXLFFBQVEsQ0FBQyxHQUFDLFFBQUEsQ0FDdEU7QUFDQSxnQkFBSSxFQUFFL0QsWUFBWThELFlBQVlBLFFBQVE5RCxRQUFRLEVBQUVwQyxTQUFTcUcsWUFBWSxHQUFHO0FBQ3ZFSCxzQkFBUTlELFFBQVEsSUFBSWlFO1lBQ3JCO0FBQ0EsZ0JBQUksQ0FBQzVDLE9BQU81RCxLQUFLeUcsUUFBUUQsWUFBWSxHQUFHO0FBQ3ZDNUMscUJBQU81RCxPQUFPd0c7QUFDZDVDLHFCQUFPdFUsT0FBT2lUO1lBQ2Y7VUFDRDtBQUNBLGlCQUFPLENBQUNxQixRQUFReUMsT0FBTztRQUN4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQW1CQXJDLHdCQUF3QkEsQ0FBQ0wsVUFBVUcsUUFBUUYsUUFBUTVELE1BQU0wRyxhQUFhO0FBQ3JFLGNBQUkvRTtBQUNKLGNBQUksT0FBT2hTLEtBQUtpVSxPQUFPdFUsSUFBSSxHQUFHO0FBRTdCcVMsb0JBQVEvQyxPQUFPQyxTQUFTK0UsT0FBT3RVLEtBQUtpTCxRQUFRLFlBQVksSUFBSSxHQUFHLEVBQUU7VUFDbEUsV0FBV3FKLE9BQU90VSxNQUFNO0FBQ3ZCcVMsb0JBQVE7VUFDVDtBQUNBLGdCQUFNZ0Ysb0JBQW9CeGYsRUFBRSxPQUFPLEVBQUVpWCxLQUFLLE1BQU0sZ0NBQWdDO0FBQ2hGLGNBQUlRLE9BQU9nSSxNQUFNakYsS0FBSyxHQUFHO0FBRXhCQSxvQkFBUTtVQUNULFdBQVdBLFFBQVEsS0FBS0EsUUFBUSxHQUFHO0FBRWxDLGtCQUFNMUssVUFBVTFQLE9BQU9nSCxNQUN0Qiw0QkFDQSwwQkFDRDtBQUNBLGdCQUFJbVksVUFBVTtBQUNiQSx1QkFBUzlKLE1BQU0zRixPQUFPO1lBQ3ZCLE9BQU87QUFDTixtQkFBS2xLLEdBQUd1RixPQUFPMkUsU0FBUztnQkFDdkIzSCxNQUFNO2dCQUNOaUQsS0FBSztjQUNOLENBQUM7WUFDRjtBQUNBO1VBQ0QsT0FBTztBQUNOeU4scUJBQUFBLE9BQVMsb0JBQUlJLEtBQUs7QUFDbEIsa0JBQU15RyxjQUFjLElBQUlwZixTQUFTdVksS0FBSzRELE9BQU81RCxLQUFLOEcsUUFBUSxDQUFDLEVBQUU1RyxJQUM1RHRCLE9BQU9DLFNBQVNyWCxRQUFRdUgsUUFBUSxvQkFBb0IsR0FBRyxFQUFFLEdBQ3pELEtBQ0Q7QUFDQSxnQkFBSThYLFlBQVlKLFFBQVF6RyxJQUFJLEdBQUc7QUFDOUIsa0JBQUkyQixVQUFVLEdBQUc7QUFDaEJBLHdCQUFRO0FBR1Isb0JBQUksQ0FBQytFLFVBQVU7QUFDZCx3QkFBTUssUUFBUTVmLEVBQUUsS0FBSyxFQUNuQmlYLEtBQUssUUFBUSxHQUFHLEVBQ2hCL08sS0FBSzlILE9BQU9nSCxNQUFNLGNBQWMsWUFBWSxDQUFDLEVBQzdDbUQsSUFBSSxlQUFlLE1BQU0sRUFDekJULEdBQUcsU0FBUyxNQUFNO0FBQ2xCeEosNkJBQVNxTCxLQUFLb0osZ0JBQWdCQyxXQUFXO0FBQ3pDM1UsNEJBQVFJLEtBQUsyVyxPQUFPeUksTUFBTTtBQUMxQnhmLDRCQUFRcU4sSUFBSUksU0FBUzJJLGdCQUFnQjtBQUNyQ3ZXLDBCQUFNeUgsS0FBSyxrQkFBa0IsRUFBRXdGLElBQUl3UCxPQUFPQyxPQUFPO0FBQ2pEMWMsMEJBQU15SCxLQUFLLG9CQUFvQixFQUFFd1EsS0FBSyxXQUFXLElBQUk7a0JBQ3RELENBQUM7QUFFRix3QkFBTTJILGFBQWE5ZixFQUFFLE9BQU8sRUFDMUJ1SyxJQUFJLFNBQVMsTUFBTSxFQUNuQnJDLEtBQ0F1TyxtQkFDQ3JXLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLElBQzdDcVYsT0FBT3RVLE9BQ1AvSCxPQUFPZ0gsTUFDTixzQkFDQSxvQkFDRCxDQUNGO0FBQ0QwWSw2QkFBV3JSLE9BQU9tUixNQUFNLENBQUMsQ0FBQztBQUMxQkosb0NBQWtCL1EsT0FBT3FSLFVBQVU7Z0JBQ3BDO2NBQ0QsT0FBTztBQUVOdEYseUJBQVM7Y0FDVjtZQUNELE9BQU87QUFFTkEsc0JBQVE7WUFDVDtVQUNEO0FBQ0FnRiw0QkFBa0JuUyxRQUNqQnJOLEVBQUEsUUFBQXlJLE9BQ1NySSxPQUFPZ0gsTUFBTSxPQUFPLEtBQUssR0FBQyxtQ0FBQSxFQUFBcUIsT0FBb0NySSxPQUFPZ0gsTUFDNUUsTUFDQSxJQUNELENBQUMsRUFBQXFCLE9BQUcrUixPQUFLLG9CQUFBLENBQ1YsQ0FDRDtBQUVBdGEsZ0JBQU15SCxLQUFLLGlDQUFpQyxFQUFFMFYsT0FBTztBQUNyRG1DLDRCQUFrQk8sWUFBWTdmLE1BQU15SCxLQUFLLGdDQUFnQyxDQUFDO0FBQzFFLGNBQUl5VCxXQUFXdUIsT0FBTzdDLFVBQVUxRyxRQUFRLFdBQVcsSUFBSTtBQUl2RCxjQUFJdUosT0FBT3FDLGVBQWUsQ0FBQ3JDLE9BQU9xQyxZQUFBLFFBQUF2VyxPQUFvQitSLEtBQUssQ0FBQSxHQUFLO0FBQy9EWSx1QkFBVztVQUNaO0FBQ0FBLHNCQUFZWjtBQUNaLGlCQUFPLENBQUNZLFVBQVVaLEtBQUs7UUFDeEI7UUFDQXdGLE1BQU85QyxhQUFZO0FBQ2xCLGdCQUFNaFYsT0FBT2dWLFFBQVE5SCxZQUFZO0FBQ2pDLGdCQUFNbUssV0FBV3JDLFFBQVExSCxpQkFBaUI7QUFDMUMsZ0JBQU1tSCxTQUFTTyxRQUFRK0Msc0JBQXNCO0FBQzdDLGNBQUk7WUFBQ2pCO1VBQVcsSUFBSXJDO0FBQ3BCLGdCQUFNdUQsaUJBQWlCN2YsUUFBUUksS0FBS3VYLFVBQVUwRSxlQUFleFUsSUFBSTtBQUNqRSxnQkFBTSxDQUFDdVUsUUFBUXlDLE9BQU8sSUFBSWdCO0FBQzFCLGdCQUFNQyxNQUFNLElBQUk3ZixTQUFTdVksS0FBS3FFLFFBQVFrRCxZQUFZLENBQUM7QUFDbkQvZixrQkFBUUksS0FBS29aLGNBQWNxRDtBQUMzQixjQUFJUCxPQUFPckYsZUFBZSxhQUFhO0FBRXRDLGtCQUFNK0ksbUJBQW1CaGdCLFFBQVFJLEtBQUt1WCxVQUFVNkUsdUJBQy9DM1UsTUFDQXlVLFFBQ0FGLFFBQ0EwRCxLQUNBWixRQUNEO0FBRUEsZ0JBQ0M1QyxPQUFPN0MsY0FBY3VHLGlCQUFpQixDQUFDLEtBQ3ZDLENBQUN2TSxRQUNBMVQsT0FBT2dILE1BQU0sWUFBWSxXQUFXLElBQ25DaVosaUJBQWlCLENBQUMsSUFDbEJqZ0IsT0FBT2dILE1BQU0sWUFBWSxVQUFVLENBQ3JDLEdBQ0M7QUFDRG1ZLHVCQUFTOUosTUFBTXJWLE9BQU9nSCxNQUFNLFFBQVEsT0FBTyxDQUFDO0FBQzVDO1lBQ0Q7QUFFQSxhQUFDdVYsT0FBTzdDLFNBQVMsSUFBSXVHO0FBQ3JCckIsMEJBQWNyQyxPQUFPcUMsWUFBQSxRQUFBdlcsT0FBb0I0WCxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7VUFDN0QsV0FDQzFELE9BQU83QyxhQUFhb0YsV0FDcEIsSUFBSTVlLFNBQVN1WSxLQUFLcUcsUUFBUXZDLE9BQU83QyxTQUFTLENBQUMsRUFBRWYsSUFBSSxHQUFHLEtBQUssRUFBRXVHLFFBQVFhLEdBQUcsS0FDdEUsQ0FBQ3JNLFFBQ0ExVCxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYyxJQUMxQ3VWLE9BQU83QyxZQUNQMVosT0FBT2dILE1BQU0sbUJBQW1CLGlCQUFpQixDQUNuRCxHQUNDO0FBQ0RtWSxxQkFBUzlKLE1BQU1yVixPQUFPZ0gsTUFBTSxRQUFRLE9BQU8sQ0FBQztBQUM1QztVQUNEO0FBQ0FxVixpQkFBTzVELEtBQUtFLElBQUksR0FBRyxRQUFRO0FBQzNCLGNBQ0MwRCxPQUFPNUQsS0FBS3lHLFFBQVFhLEdBQUcsS0FDdkIsQ0FBQ3JNLFFBQ0ExVCxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsSUFDOUJxVixPQUFPdFUsT0FDUC9ILE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUIsQ0FDbkQsR0FDQztBQUNEbVkscUJBQVM5SixNQUFNclYsT0FBT2dILE1BQU0sUUFBUSxPQUFPLENBQUM7QUFDNUM7VUFDRDtBQUdBLGdCQUFNa1osZ0JBQWlCbEYsY0FBYTtBQUNuQyxhQUFDQSxRQUFRLElBQUlBLFNBQVNtRixNQUFNLEdBQUc7QUFDL0IsZ0JBQUlDO0FBQ0osb0JBQVFwRixTQUFTcEgsTUFBTSxFQUFFLEdBQUE7Y0FDeEIsS0FBSztBQUNKd00seUJBQVM7QUFDVDtjQUNELEtBQUs7QUFDSkEseUJBQVM7QUFDVDtjQUVEO0FBQ0NBLHlCQUFTO0FBQ1Q7WUFDRjtBQUNBLG1CQUFBLEdBQUEvWCxPQUFVK1gsUUFBTSxHQUFBLEVBQUEvWCxPQUFJbkksU0FBU2dULE9BQU9ZLHFCQUFxQjhLLFlBQVl0USxLQUFLLENBQUM7VUFDNUU7QUFDQSxjQUFJaUc7QUFDSixjQUFJZ0ksT0FBT3JGLGVBQWUsVUFBVTtBQUNuQzNDLHNCQUFVMkwsY0FBYzNELE9BQU83QyxTQUFTO1VBQ3pDLE9BQU87QUFFTixnQkFBSTZDLE9BQU9yRixlQUFlLGlCQUFpQixDQUFDLE9BQU85TyxLQUFLbVUsT0FBTzdDLFNBQVMsR0FBRztBQUMxRSxrQkFBSTJHLE1BQU05RCxPQUFPN0MsVUFBVTlGLE1BQU0sRUFBRTtBQUNuQyxrQkFBSXlNLFFBQVEsS0FBSztBQUNoQkEsc0JBQU05RCxPQUFPN0MsVUFBVTlGLE1BQU0sRUFBRTtjQUNoQztBQUVBLGtCQUFJLEtBQUt4TCxLQUFLaVksR0FBRyxHQUFHO0FBQ25COUQsdUJBQU9yRixhQUFBLFFBQUE3TyxPQUFxQmdZLEdBQUc7Y0FDaEM7WUFDRDtBQUVBOUwsc0JBQ0NxSyxZQUFZckssV0FBWXFLLFlBQVlyQyxPQUFPckYsVUFBVSxLQUFLMEgsWUFBWXJDLE9BQU9yRixVQUFVLEVBQUUzQztBQUUxRkEsd0JBQUFBLFVBQVkyTCxjQUFjM0QsT0FBTzdDLFNBQVM7QUFDMUMsZ0JBQUlrRixZQUFZdEYsNkJBQTZCLFFBQVFpRCxPQUFPQyxTQUFTO0FBQ3BFLGtCQUFJRCxPQUFPN0MsY0FBYyxVQUFVO0FBRWxDbkYsMkJBQUEsSUFBQWxNLE9BQWVySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FBQyxTQUFBLEVBQUFxQixPQUFVa1UsT0FBT0MsU0FBTyxLQUFBO2NBQ2hFLFdBQVdELE9BQU83QyxjQUFjLFdBQVc7QUFFMUNuRiwyQkFBQSxJQUFBbE0sT0FBZXJJLE9BQU9nSCxNQUFNLEtBQUssR0FBRyxHQUFDLGNBQUEsRUFBQXFCLE9BQWVrVSxPQUFPQyxTQUFPLElBQUE7Y0FDbkUsT0FBTztBQUNOakksMkJBQUEsR0FBQWxNLE9BQWNySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFBSXVWLE9BQU9DLFNBQU8sSUFBQTtjQUM1RDtZQUNEO1VBQ0Q7QUFDQU0sa0JBQVF0SCxlQUFlakIsT0FBTztBQUM5QnVJLGtCQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxrQkFBUS9HLGFBQWE5VixRQUFRdUgsUUFBUSxlQUFlLENBQUM7QUFFckQsZ0JBQU04WSxjQUFjcmdCLFFBQVFJLEtBQUt1WCxVQUFVd0csbUJBQzFDN0IsT0FBTzdDLFdBQ1A2QyxPQUFPQyxTQUNQRCxPQUFPekssUUFDUHlLLE9BQU9yRixlQUFlLFFBQ3ZCO0FBQ0EsY0FBSXFKLGdCQUFnQjtBQUNwQixjQUFJQyxnQkFBZ0I7QUFFcEIsY0FBSSxDQUFDNUIsWUFBWS9WLFdBQVdmLEtBQUtqSCxRQUFRO0FBRXhDLGtCQUFNNGYsV0FBVzNZLEtBQUs0WSxNQUFNLGNBQWM7QUFDMUMsZ0JBQUlELFlBQVlBLFNBQVM1ZixXQUFXLEdBQUc7QUFFdEMsb0JBQU04ZixrQkFBa0JaLElBQUlhLGlCQUFpQjtBQUM3Q0osOEJBQWdCO0FBRWhCRCw4QkFBZ0JFLFNBQVNJLFFBQVEsRUFBRUMsS0FBSyxDQUFDQyxLQUFLQyxRQUFRO0FBQ3JELHVCQUNDLGlCQUFpQjVZLEtBQUsyWSxHQUFHLEtBQ3pCSixnQkFBZ0J2WSxLQUFLMlksR0FBRyxLQUN4QixRQUFRUCxnQkFBZ0JDLFNBQVM1ZixTQUFTLElBQUltZ0IsU0FBUztjQUV6RCxDQUFDO1lBQ0Y7VUFDRDtBQUNBLGNBQUlULGVBQWU7QUFFbEJ6RCxvQkFBUXZILGVBQWVpTCxnQkFBZ0IsQ0FBQztBQUN4QzFELG9CQUFRcEgsY0FBQSxPQUFBck4sT0FBcUJpWSxXQUFXLENBQUU7QUFDMUN4RCxvQkFBUXpPLE9BQU87VUFDaEIsT0FBTztBQUNOLGdCQUFJdVEsWUFBWS9WLFNBQVM7QUFFeEJpVSxzQkFBUW1FLG1CQUFtQnJDLFlBQVkvVixPQUFPO1lBQy9DLE9BQU87QUFDTjNJLHVCQUFTdVUsT0FBT3lNLEtBQ2ZsaEIsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCaEgsT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQixDQUNwRDtBQUNBOFYsc0JBQVFtRSxtQkFBbUJsQixJQUFJb0IsWUFBWSxDQUFDLENBQUM7WUFDOUM7QUFDQXJFLG9CQUFRc0Usa0JBQWtCZCxXQUFXO0FBQ3JDeEQsb0JBQVF1RSxXQUFXO1VBQ3BCO1FBQ0Q7TUFDRDtBQUNBcGhCLGNBQVFJLEtBQUtxTixTQUFTUyxXQUFZeEUsT0FBTTtBQUN2QyxjQUFNMlgsZUFBQSxhQUFBalosT0FBNEJnTyxnQkFBZ0I7QUFFbEQsY0FBTWtHLFNBQVNyYyxTQUFTZ08sVUFBVStELGFBQWF0SSxFQUFFNEcsTUFBTTtBQUN2RCxZQUFJZ00sT0FBT0MsU0FBUztBQUNuQixjQUFJLGNBQWNwVSxLQUFLbVUsT0FBT0MsT0FBTyxHQUFHO0FBQ3ZDLGlCQUFLaFgsR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZSxHQUFHO2NBQzlEZSxNQUFNO2NBQ05pRCxLQUFLO1lBQ04sQ0FBQztBQUNEO1VBQ0Q7QUFDQSxjQUFJO0FBQ0gsa0JBQU13UixVQUFVLElBQUloWCxHQUFHK00sTUFBTWdLLE9BQU9DLE9BQU87QUFDM0NELG1CQUFPQyxVQUFVQSxRQUFRekosZ0JBQWdCO0FBQ3pDLGdCQUFJeUosUUFBUStFLFlBQVksR0FBRztBQUMxQmhGLHFCQUFPQyxXQUFBLElBQUFuVSxPQUFlbVUsUUFBUStFLFlBQVksQ0FBQztZQUM1QztVQUNELFFBQVE7QUFDUEMsa0JBQ0N4aEIsT0FBT2dILE1BQ04scURBQ0EsbURBQ0QsQ0FDRDtBQUNBO1VBQ0Q7UUFDRDtBQVFBLGNBQU15YSxjQUFjN2hCLEVBQUUrSixFQUFFNEcsT0FBT21KLFNBQVMsRUFBRW5TLEtBQUEsaUJBQUFjLE9BQXNCekksRUFBRStKLEVBQUU0RyxPQUFPbUosU0FBUyxFQUFFM00sSUFBSSxHQUFDLElBQUEsQ0FBSTtBQUMvRndQLGVBQU9xQyxjQUFjNkMsWUFBWXZHLEtBQUssYUFBYTtBQUNuRCxZQUFJcUIsT0FBT3FDLGdCQUFnQixRQUFXO0FBQ3JDLGVBQUtwWixHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxHQUFHO1lBQ3BEZSxNQUFNO1lBQ05pRCxLQUFLO1VBQ04sQ0FBQztBQUNEO1FBQ0Q7QUFDQTlLLGlCQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUsaUJBQVN1VSxPQUFPQyxLQUFLL0ssRUFBRTRHLE1BQU07QUFDN0JyUSxpQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVcwTTtBQUN6Q3BoQixpQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM3VSxPQUFPZ0gsTUFBTSxnQkFBZ0IsZ0JBQWdCO0FBQ3BGLGNBQU0wYSxjQUFjLElBQUl4aEIsU0FBU3FMLEtBQUtrSCxLQUFLNk8sY0FBY3RoQixPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsQ0FBQztBQUM1RjBhLG9CQUFZQyxzQkFBc0JwRixNQUFNO0FBQ3hDbUYsb0JBQVkzTSxrQkFBa0IsTUFBTSxLQUFLO0FBQ3pDMk0sb0JBQVl4VyxLQUFLakwsUUFBUUksS0FBS3VYLFVBQVVnSSxJQUFJO01BQzdDO0FBQ0EzZixjQUFRUyxnQkFBZ0JULFFBQVFJLE1BQU0sTUFBTTtJQUM3QyxHQUFHNk0sTUFBTTtFQUFBO0FBQUEsQ0FBQTs7QUMxNENULElBQUEwVTtBQUFBLElBRU1wVztBQUZOLElBQUFxVyxXQUFBbmlCLE1BQUE7RUFBQSwrQkFBQTtBQUFBO0FBQUFraUIsd0JBQXdCRSxRQUFBLGlCQUFBO0FBRWxCdFcsV0FBQSxHQUFjb1csa0JBQUFHLFdBQVUsMEJBQTBCO0VBQUE7QUFBQSxDQUFBOztBQ0Z4RCxJQUFBQyx1QkFBQSxDQUFBO0FBQUEsSUFJQUM7QUFKQSxJQUFBQyxvQkFBQXhpQixNQUFBO0VBQUEsd0NBQUE7QUFBQTtBQUdBbWlCLGFBQUE7QUFDQUkseUJBQTRCSCxRQUFBLGlCQUFBO0lBRTVCO0FBQ0EsS0FBQyxTQUFTSyxhQUFhdmlCLEdBQUc7QUFDekIsWUFBTUUsUUFBUUYsRUFBRSxNQUFNO0FBQ3RCLFVBQUl5VztBQUNKLFVBQUkrTDtBQUNKLFlBQU1DLDBCQUEwQjtRQUMvQixHQUFHN2MsR0FBR0MsT0FBT0MsSUFBSSx1QkFBdUI7TUFDekM7QUFDQTJjLDhCQUF3QixDQUFDLElBQUlyaUIsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3hELFlBQU1zYixrQkFBa0I7UUFDdkI3UyxPQUFPelAsT0FBT2dILE1BQU0sTUFBTSxJQUFJO1FBQzlCdWIsU0FBU3ZpQixPQUFPZ0gsTUFBTSxRQUFRLE1BQU07UUFDcEN3YixTQUFTeGlCLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtNQUNyQztBQU1BL0csY0FBUXdQLFFBQVEsTUFBTTtBQUNyQjRHLDJCQUFtQjdRLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CO0FBSXJELGFBQ0V4RixTQUFTZ0IsZUFBZSxDQUFDc0UsR0FBRzBFLEtBQUt1RCxZQUFZNEksa0JBQWtCLElBQUksTUFDcEVBLHFCQUNDLENBQUNuVyxTQUFTdWlCLEdBQUdDLFFBQVFyTSxnQkFBZ0IsS0FBS25XLFNBQVN1aUIsR0FBR0UsVUFBVXRNLGdCQUFnQixJQUNoRjtBQUNEcFcsa0JBQVE2SixlQUNQN0osUUFBUXdQLE1BQU0vQixVQUNkMU4sT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCLFlBQ0FoSCxPQUFPZ0gsTUFBTSxVQUFVLFNBQVMsQ0FDakM7UUFDRDtNQUNEO0FBQ0EvRyxjQUFRd1AsTUFBTS9CLFdBQVcsTUFBTTtBQUM5QixZQUNDMkkscUJBQXFCN1EsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEtBQy9DLENBQUNnTyxRQUNBMVQsT0FBT2dILE1BQ04sMEJBQ0Esd0JBQ0QsQ0FDRCxHQUNDO0FBQ0Q7UUFDRDtBQUNBL0csZ0JBQVF3UCxNQUFNbVQsbUJBQW1CO0FBQ2pDM2lCLGdCQUFRd1AsTUFBTW9ULHNCQUFzQixDQUFDO0FBQ3JDNWlCLGdCQUFRd1AsTUFBTXFULHlCQUF5QixDQUFDO0FBQ3hDLGNBQU1sVixTQUFTLElBQUkxTixTQUFTMk4sYUFBYSxLQUFLLEdBQUc7QUFFakRELGVBQU9FLFNBQ045TixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFBSXFQLG1CQUFtQnJXLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUNsRjtBQUNBNEcsZUFBT0csY0FBYyxTQUFTO0FBQzlCSCxlQUFPSSxjQUFjaE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNLEdBQUcsVUFBVTtBQUM3RDRHLGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sR0FBRyxpQkFBaUI7QUFDcEU0RyxlQUFPSSxjQUFjaE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXLEdBQUcsZ0JBQWdCO0FBQzdFLGNBQU1pSCxPQUFPLElBQUkvTixTQUFTZ08sVUFBVWpPLFFBQVF3UCxNQUFNL0IsU0FBU1MsUUFBUTtBQUNuRSxjQUFNNFUsY0FBYzlVLEtBQUtJLE9BQU87VUFDL0J0RyxNQUFNO1VBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ25DLENBQUM7QUFDRCtiLG9CQUFZMVUsT0FBTztVQUNsQnRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjJOLE9BQU90TyxRQUFRd1AsTUFBTS9CLFNBQVNzVjtVQUM5QmhVLE1BQU0sQ0FDTDtZQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxPQUFPO1lBQ25DaUYsT0FBTztZQUNQakMsU0FBU2hLLE9BQU9nSCxNQUNmLGtDQUNBLGlDQUNEO1lBQ0FpYyxRQUFRLENBQUMvaUIsU0FBU2dCO1lBQ2xCZ2lCLFNBQVNoakIsU0FBU2dCO1VBQ25CLEdBQ0E7WUFDQ29OLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDbENpRixPQUFPO1lBQ1BqQyxTQUFTaEssT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQjtZQUN4RGljLFFBQVEsQ0FBQy9pQixTQUFTZ0I7WUFDbEJnaUIsU0FBU2pqQixRQUFRdUgsUUFBUSx3QkFBd0I7O1VBQ2xELEdBQ0E7WUFDQzhHLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsZUFBZTtZQUNuRGlGLE9BQU87WUFDUGpDLFNBQVNoSyxPQUFPZ0gsTUFDZixzRUFDQSxxRUFDRDs7WUFFQWljLFFBQVEsQ0FBQy9pQixTQUFTZ0I7WUFDbEJnaUIsU0FBU2hqQixTQUFTZ0IsZUFBZSxDQUFDaEIsU0FBU3VpQixHQUFHQyxRQUFRck0sZ0JBQWdCO1lBQ3RFNUgsVUFBVXZPLFNBQVN1aUIsR0FBR0MsUUFBUXJNLGdCQUFnQjtVQUMvQyxHQUNBO1lBQ0MvSCxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxTQUFTO1lBQ3RDaUYsT0FBTztZQUNQakMsU0FBU2hLLE9BQU9nSCxNQUNmLDRCQUNBLDRCQUNEO1lBQ0FpYyxRQUFRO1lBQ1JDLFNBQVMsQ0FBQ2hqQixTQUFTZ0I7VUFDcEIsR0FDQTtZQUNDb04sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsU0FBUztZQUN0Q2lGLE9BQU87WUFDUGpDLFNBQVNoSyxPQUFPZ0gsTUFBTSxvQkFBb0Isb0JBQW9CO1lBQzlEaWMsUUFBUTtVQUNULEdBQ0E7WUFDQzNVLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFNBQVM7WUFDdkNpRixPQUFPO1lBQ1BqQyxTQUFTaEssT0FBT2dILE1BQU0sYUFBYSxZQUFZO1lBQy9DaWMsUUFBUSxDQUFDL2lCLFNBQVNnQjtVQUNuQixDQUFBO1FBRUYsQ0FBQztBQWFELGNBQU1paUIsWUFBWWpqQixTQUFTdWlCLEdBQUdXLE1BQU01ZCxHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQixDQUFDO0FBQ3ZFLFlBQUl5ZCxhQUFhQSxjQUFjM2QsR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0IsR0FBRztBQUNuRSxnQkFBTTJkLGVBQWVwVixLQUFLSSxPQUFPO1lBQ2hDdEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztZQUM1Q3BHLE1BQU07VUFDUCxDQUFDO0FBQ0R5aUIsdUJBQWFoVixPQUFPO1lBQ25CdEcsTUFBTTtZQUNOMkcsT0FBTztZQUNQSixPQUFPLENBQUN0SCxNQUFNLGlCQUFpQixlQUFlLENBQUM7VUFDaEQsQ0FBQztBQUNEcWMsdUJBQWFoVixPQUFPO1lBQ25CdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOMk4sT0FBT3RPLFFBQVF3UCxNQUFNL0IsU0FBUzRWO1lBQzlCdFUsTUFBTSxDQUNMO2NBQ0NrVSxTQUFTampCLFFBQVF1SCxRQUFRLGtCQUFrQjtjQUMzQzhHLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7Y0FDeENpRixPQUFPO2NBQ1BqQyxTQUFTOUosU0FBU3VpQixHQUFHQyxRQUFRbGQsR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0IsQ0FBQyxJQUM3RDFGLE9BQU9nSCxNQUFNLGNBQWMsWUFBWSxJQUN2Q2hILE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0IsSUFDaER4QixHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQjtZQUNyQyxDQUFBO1VBRUYsQ0FBQztRQUNGO0FBQ0F1SSxhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1VBQzlCcEcsTUFBTTtRQUNQLENBQUM7QUFDRHFOLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07VUFDbENwRyxNQUFNO1FBQ1AsQ0FBQztBQUNEcU4sYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtVQUNsQ3BHLE1BQU07UUFDUCxDQUFDO0FBQ0RxTixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxTQUFTO1VBQ3RDcEcsTUFBTTtRQUNQLENBQUM7QUFDRHFOLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDdENwRyxNQUFNO1FBQ1AsQ0FBQztBQUNEcU4sYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOdUcsT0FBTztRQUNSLENBQUM7QUFDRCxjQUFNSyxTQUFTVixLQUFLVyxPQUFPO0FBQzNCaEIsZUFBT2lCLFdBQVdGLE1BQU07QUFDeEJmLGVBQU9rQixRQUFRO0FBQ2ZILGVBQU8xRyxPQUFPMEc7QUFDZDFPLGdCQUFRd1AsTUFBTThULGNBQWMsTUFBTTtBQUNqQyxjQUFJdGpCLFFBQVF3UCxNQUFNK1QsY0FBYztBQUMvQixrQkFBTUMsUUFBUTdqQixFQUFFK08sTUFBTTtBQUN0QnpPLHFCQUFTZ08sVUFBVXdWLHFCQUFxQkQsTUFBTWxjLEtBQUssOEJBQThCLEVBQUVvYyxPQUFPLEdBQUcsSUFBSTtBQUNqRyxnQkFBSXpqQixTQUFTZ0IsYUFBYTtBQUN6QmhCLHVCQUFTZ08sVUFBVXdWLHFCQUNsQkQsTUFBTWxjLEtBQUssa0NBQWtDLEVBQUVvYyxPQUFPLEdBQ3RELElBQ0Q7WUFDRDtVQUNEO0FBR0EsY0FBSXZCLG9CQUFvQi9MLGtCQUFrQjtBQUN6Q3pXLGNBQUUrTyxNQUFNLEVBQ05wSCxLQUFLLGtDQUFrQyxFQUN2Q3dRLEtBQUssV0FBVzlYLFFBQVF3UCxNQUFNbVQsaUJBQWlCalQsWUFBWSxFQUFFO1VBQ2hFO0FBRUExUCxrQkFBUXdQLE1BQU1tVSxzQkFBc0I7QUFFcEMsZ0JBQU03VCxNQUFNN0gsU0FBUzhILFlBQVksT0FBTztBQUN4Q0QsY0FBSUUsVUFBVSxVQUFVLE1BQU0sSUFBSTtBQUNsQyxjQUFJdEIsT0FBT2tWLFdBQVdsVixPQUFPa1YsUUFBUVgsU0FBUztBQUU3Q3ZVLG1CQUFPa1YsUUFBUTFULGNBQWNKLEdBQUc7VUFDakMsT0FBTztBQUNOcEIsbUJBQU9tVixXQUFXLENBQUMsRUFBRTNULGNBQWNKLEdBQUc7VUFDdkM7UUFDRCxDQUFDO01BQ0Y7QUFFQTlQLGNBQVF3UCxNQUFNc1UsY0FBYyxDQUFDO0FBRzdCOWpCLGNBQVF3UCxNQUFNdVUsa0JBQWtCLENBQUM5SSxNQUFNK0ksT0FBTztBQUM3QyxZQUFJLENBQUNDLFNBQVMsSUFBSWhKLEtBQUtuTSxNQUFNUztBQUM3QixjQUFNLENBQUMyVSxRQUFRLElBQUlqSixLQUFLbk0sTUFBTXFWO0FBSTlCLFlBQUlsSixLQUFLbk0sTUFBTVMsT0FBTzNPLFNBQVMsS0FBS3FqQixVQUFVRyxTQUFTaE8sa0JBQWtCO0FBQ3hFLFdBQUEsRUFBRzZOLFNBQVMsSUFBSWhKLEtBQUtuTSxNQUFNUztRQUM1QjtBQUVBdlAsZ0JBQVF3UCxNQUFNc1UsWUFBWUksU0FBU3ZqQixJQUFJLElBQUlzYTtBQUMzQ2piLGdCQUFRd1AsTUFBTStULGVBQWUsQ0FBQyxDQUFDVyxTQUFTRztBQUN4QyxZQUFJcmtCLFFBQVF3UCxNQUFNK1QsY0FBYztBQUMvQnZqQixrQkFBUXdQLE1BQU04VSxZQUNiLENBQUMsQ0FBQ0osU0FBU0ssb0JBQ1hMLFNBQVNLLGlCQUNQN1IsSUFBS2hKLE9BQU07QUFDWCxtQkFBT0EsRUFBRThhO1VBQ1YsQ0FBQyxFQUNBcmIsU0FBUyxLQUFLO1FBQ2xCLE9BQU87QUFDTm5KLGtCQUFRd1AsTUFBTThVLFlBQVk7UUFDM0I7QUFDQSxZQUFJTCxXQUFXO0FBRWRBLG9CQUFVUSxjQUFjUixVQUFVUyxrQkFBa0I7QUFDcERULG9CQUFVVSxZQUFZVixVQUFVVyxhQUFhO1FBQzlDO0FBRUE1a0IsZ0JBQVF3UCxNQUFNbVQsbUJBQW1Cc0I7QUFDakM5QiwwQkFBa0JuaUIsUUFBUXdQLE1BQU1tVCxvQkFBb0IzaUIsUUFBUXdQLE1BQU1tVCxpQkFBaUJ5QjtBQVFuRnBrQixnQkFBUXdQLE1BQU1xVixjQUFjLENBQUMsQ0FBQzVKLEtBQUtuTSxNQUFNZ1csVUFBVWxrQjtBQUNuRFosZ0JBQVF3UCxNQUFNdVYsV0FBVy9rQixRQUFRd1AsTUFBTXFWLGVBQWU1SixLQUFLbk0sTUFBTWdXO0FBRWpFOWtCLGdCQUFRd1AsTUFBTXdWLGFBQWFobEIsUUFBUXdQLE1BQU1xVixjQUFjNUosS0FBS25NLE1BQU1nVyxVQUFVLENBQUMsRUFBRUcsUUFBUTtBQUN2RixZQUFJLE9BQU9qQixPQUFPLFlBQVk7QUFDN0IsaUJBQU9BLEdBQUc7UUFDWDtNQUNEO0FBQ0Foa0IsY0FBUXdQLE1BQU04VCxnQkFBaUJVLFFBQU87QUFDckMsY0FBTWxWLFFBQVE7VUFDYkcsUUFBUTtVQUNSekUsUUFBUTtVQUNSdUUsTUFBTTtVQUNObVcsUUFBUTtVQUNSQyxTQUFTO1VBQ1RDLFNBQUEsUUFBQWhkLE9BQWlCZ08sZ0JBQWdCO1VBQ2pDcEgsUUFBUTtVQUNScVcsU0FBU2pQO1FBQ1Y7QUFFQSxZQUFJN1EsR0FBRzBFLEtBQUt1RCxZQUFZNEksa0JBQWtCLElBQUksR0FBRztBQUNoRHRILGdCQUFNSSxPQUFPa0g7UUFDZCxPQUFPO0FBQ050SCxnQkFBTUssVUFBVWlIO0FBRWhCdEgsZ0JBQU13VyxTQUFTO1FBQ2hCO0FBQ0EsYUFBSy9aLElBQUk5RixJQUFJcUosS0FBSyxFQUFFeVcsS0FDbEJ0SyxVQUFTO0FBQ1RqYixrQkFBUXdQLE1BQU11VSxnQkFBZ0I5SSxNQUFNK0ksRUFBRTtRQUN2QyxHQUNDNU8sV0FBVTtBQUNWblYsbUJBQVN1VSxPQUFPQyxLQUFLNVUsTUFBTXlILEtBQUssK0JBQStCLEVBQUVrSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzFFdlIsbUJBQVN1VSxPQUFPcFUsS0FBS0wsT0FBT2dILE1BQU0sWUFBWSxXQUFXLEdBQUdxTyxLQUFLO1FBQ2xFLENBQ0Q7TUFDRDtBQUNBcFYsY0FBUXdQLE1BQU0vQixTQUFTK1gsZUFBZ0JDLGNBQWE7QUFDbkR6bEIsZ0JBQVF3UCxNQUFNN1AsRUFBRThsQixRQUFRLEVBQUUzTixLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFBQSxZQUFBNE4sYUFBQWhhLDJCQUMxQi9MLEVBQUU4bEIsUUFBUSxFQUFFRSxlQUFlLENBQUEsR0FBQUM7QUFBQSxZQUFBO0FBQTVDLGVBQUFGLFdBQUE5WixFQUFBLEdBQUEsRUFBQWdhLFNBQUFGLFdBQUE3WixFQUFBLEdBQUFDLFFBQStDO0FBQUEsa0JBQXBDK1osS0FBQUQsT0FBQTVaO0FBR1ZoTSxvQkFBUXdQLE1BQU03UCxFQUFFOGxCLFFBQVEsRUFBRTNOLEtBQUssTUFBTSxDQUFDLEVBQUUrTixHQUFHbGxCLElBQUksSUFBSWtsQixHQUFHN1o7VUFDdkQ7UUFBQSxTQUFBQyxLQUFBO0FBQUF5WixxQkFBQWhjLEVBQUF1QyxHQUFBO1FBQUEsVUFBQTtBQUFBeVoscUJBQUF4WixFQUFBO1FBQUE7TUFDRDtBQUNBbE0sY0FBUXdQLE1BQU0vQixTQUFTNFYsaUJBQWtCM1osT0FBTTtBQUM5QyxjQUFNOFosUUFBUTdqQixFQUFFK0osRUFBRTRHLE9BQU90QyxJQUFJO0FBQzdCLGNBQU04WCxXQUFXdEMsTUFBTWxjLEtBQUssZ0JBQWdCO0FBRzVDLGNBQU15ZSxZQUFZM1A7QUFDbEIsWUFBSTBQLFNBQVNFLEdBQUcsVUFBVSxHQUFHO0FBQzVCNVAsNkJBQW1CblcsU0FBU3VpQixHQUFHVyxNQUFNNWQsR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0IsQ0FBQztRQUN6RSxPQUFPO0FBQ04yUSw2QkFBbUI3USxHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQjtRQUN0RDtBQUdBLGNBQU13Z0Isa0JBQWtCaG1CLFNBQVN1aUIsR0FBR0MsUUFBUWxkLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLENBQUM7QUFDL0UrZCxjQUNFbGMsS0FBSyxtQ0FBbUMsRUFDeEN3USxLQUFLLFlBQVltTyxlQUFlLEVBQ2hDbk8sS0FBSyxXQUFXLENBQUNtTyxlQUFlO0FBRWxDLGNBQU1DLGlCQUFpQkEsTUFBTTtBQU01QixnQkFBTUMsV0FBV2xlLFNBQVNDLGNBQWMsa0JBQWtCLEVBQUU0UixXQUFXc007QUFDdkVELG1CQUFTRSxZQUFZRixTQUFTRSxVQUFVdFQsUUFBUWdULFdBQVczUCxnQkFBZ0I7QUFFM0VvTixnQkFBTWxjLEtBQUssa0NBQWtDLEVBQUV3USxLQUFLLFdBQVc5WCxRQUFRdUgsUUFBUSx3QkFBd0IsQ0FBQztBQUN4RyxjQUFJNGEsb0JBQW9CL0wsa0JBQWtCO0FBQ3pDb04sa0JBQ0VsYyxLQUFLLGtDQUFrQyxFQUN2Q3dRLEtBQUssV0FBVzlYLFFBQVF3UCxNQUFNbVQsaUJBQWlCalQsWUFBWSxFQUFFO1VBQ2hFO0FBRUExUCxrQkFBUXdQLE1BQU0vQixTQUFTc1YsY0FBY3JaLENBQUM7UUFDdkM7QUFDQSxZQUFJMUosUUFBUXdQLE1BQU1zVSxZQUFZMU4sZ0JBQWdCLEdBQUc7QUFDaERwVyxrQkFBUXdQLE1BQU11VSxnQkFBZ0IvakIsUUFBUXdQLE1BQU1zVSxZQUFZMU4sZ0JBQWdCLEdBQUc4UCxjQUFjO1FBQzFGLE9BQU87QUFDTmxtQixrQkFBUXdQLE1BQU04VCxjQUFjNEMsY0FBYztRQUMzQztNQUNEO0FBQ0FsbUIsY0FBUXdQLE1BQU0vQixTQUFTc1YsZ0JBQWlCclosT0FBTTtBQUM3QyxZQUFJNGM7QUFDSixZQUFJekQ7QUFDSixZQUFJRDtBQUNKLFlBQUkyRDtBQUNKLFlBQUlDO0FBQ0osY0FBTWhELFFBQVE3akIsRUFBRStKLEVBQUU0RyxPQUFPdEMsSUFBSTtBQUU3QixjQUFNeVksU0FBU2pELE1BQU1sYyxLQUFLLGdDQUFnQztBQUMxRCxZQUFJb2YsV0FBV0QsT0FBT1QsR0FBRyxVQUFVO0FBQ25DLGNBQU1XLFlBQVluRCxNQUFNbGMsS0FBSyxtQ0FBbUM7QUFDaEUsWUFBSXNmLGNBQWNELFVBQVVYLEdBQUcsVUFBVTtBQUN6QyxjQUFNYSxPQUFPckQsTUFBTWxjLEtBQUssOEJBQThCO0FBQ3RELGNBQU13ZixTQUFTRCxLQUFLYixHQUFHLFVBQVU7QUFDakMsY0FBTWUsV0FBV3ZELE1BQU1sYyxLQUFLLGtDQUFrQztBQUM5RCxjQUFNMGYsV0FBV3hELE1BQU1sYyxLQUFLLGtDQUFrQztBQUM5RCxjQUFNMmYsYUFBYUQsU0FBU2hCLEdBQUcsVUFBVTtBQUN6QyxjQUFNa0IsV0FBVzFELE1BQU1sYyxLQUFLLGtDQUFrQztBQUM5RCxjQUFNNmYsYUFBYUQsU0FBU2xCLEdBQUcsVUFBVTtBQUN6QyxZQUFJb0IsYUFBYUgsYUFBYWpuQixRQUFRd1AsTUFBTTZYLHFCQUFxQnJuQixRQUFRd1AsTUFBTThYO0FBQy9FLFlBQUk1ZCxFQUFFNEcsT0FBT3RFLFVBQVUsV0FBVztBQUNqQyxjQUFJLENBQUNoTSxRQUFRd1AsTUFBTW1ULGtCQUFrQjtBQUNwQ3VFLHFCQUFTcFAsS0FBSyxXQUFXLEtBQUs7QUFDOUIsaUJBQUt2UyxHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLFdBQVcsVUFBVSxHQUFHO2NBQ25EZSxNQUFNO2NBQ05pRCxLQUFLO1lBQ04sQ0FBQztBQUNEO1VBQ0Q7QUFDQTBiLGlCQUFPM08sS0FBSyxXQUFXLEtBQUs7QUFDNUI0TyxxQkFBVztBQUNYQyxvQkFBVTdPLEtBQUssV0FBVyxLQUFLO0FBQy9COE8sd0JBQWM7QUFDZEMsZUFBSy9PLEtBQUssV0FBVyxLQUFLO0FBQzFCaVAsbUJBQVNqUCxLQUFLLFdBQVcsS0FBSztBQUM5QmtQLG1CQUFTbFAsS0FBSyxXQUFXLEtBQUs7UUFDL0IsT0FBTztBQUNOb1AsbUJBQVNwUCxLQUFLLFdBQVcsS0FBSztRQUMvQjtBQUNBa1AsaUJBQVNsUCxLQUFLLFlBQVksQ0FBQzRPLFlBQVksQ0FBQ0UsV0FBVztBQUVuRCxjQUFNVyxRQUFRO1VBQ2JsWixPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ25DO0FBQ0EsWUFBSW9iLG9CQUFvQi9MLGtCQUFrQjtBQUN6Q3BXLGtCQUFRd1AsTUFBTWdZLGlCQUFpQkQsUUFBUXZuQixRQUFRd1AsTUFBTW1UO0FBRXJENEUsZ0JBQU14WSxPQUFPLENBQ1o7WUFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtZQUN0Q2lGLE9BQU87WUFDUHNMLFVBQVU7VUFDWCxDQUFBO0FBR0QsY0FDQyxDQUFDOFAsV0FBV3ZHLEtBQU00RyxRQUFPO0FBQ3hCLG1CQUFPQSxHQUFHcFosVUFBVWtaLE1BQU1sWjtVQUMzQixDQUFDLEdBQ0E7QUFDRCtZLHVCQUFXQSxXQUFXeG1CLE1BQU0sSUFBSTJtQjtVQUNqQztBQUVBLGNBQUlOLFlBQVk7QUFDZmpuQixvQkFBUXdQLE1BQU1nWSxpQkFBaUJELE1BQU1uSixlQUFlbmUsU0FBU2dULE9BQU95VSxXQUNuRTFuQixRQUFRd1AsTUFBTW1ULGlCQUFpQmdGLE1BQ2hDLElBQ0csbUJBQ0E7VUFDSixXQUFXM25CLFFBQVF3UCxNQUFNK1QsY0FBYztBQUN0Q3ZqQixvQkFBUXdQLE1BQU1nWSxpQkFBaUJELE1BQU1uSixlQUFlbmUsU0FBU2dULE9BQU95VSxXQUNuRTFuQixRQUFRd1AsTUFBTW1ULGlCQUFpQmdGLE1BQ2hDLElBQ0csa0JBQ0E7VUFDSixPQUFPO0FBQ04zbkIsb0JBQVF3UCxNQUFNZ1ksaUJBQWlCRCxNQUFNbkosZUFBZTtVQUNyRDtRQUNELE9BQU87QUFFTmdKLHVCQUFhQSxXQUFXUSxPQUFRSCxRQUFPO0FBQ3RDLG1CQUFPQSxHQUFHcFosVUFBVWtaLE1BQU1sWjtVQUMzQixDQUFDO1FBQ0Y7QUFDQXJPLGdCQUFRd1AsTUFBTS9CLFNBQVMrWCxhQUFhM2xCLE1BQU15SCxLQUFLLDRCQUE0QixDQUFDO0FBQzVFdEgsZ0JBQVF3UCxNQUFNL0IsU0FBUytYLGFBQWEzbEIsTUFBTXlILEtBQUssK0JBQStCLENBQUM7QUFDL0V0SCxnQkFBUXdQLE1BQU0vQixTQUFTK1gsYUFBYTNsQixNQUFNeUgsS0FBSywwQkFBMEIsQ0FBQztBQUMxRXRILGdCQUFRd1AsTUFBTS9CLFNBQVMrWCxhQUFhM2xCLE1BQU15SCxLQUFLLDhCQUE4QixDQUFDO0FBQzlFLFlBQUlvZixVQUFVO0FBQ2JKLHlCQUFlLElBQUlybUIsU0FBU2dPLFVBQVVnRCxRQUFRO1lBQzdDbkosTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtZQUM5QnBHLE1BQU07VUFDUCxDQUFDO0FBQ0QybEIsdUJBQWFsWSxPQUFPO1lBQ25CdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztZQUNwQ3VILE9BQU90TyxRQUFRd1AsTUFBTS9CLFNBQVNvYTtZQUM5QjlZLE1BQU0vTyxRQUFRd1AsTUFBTS9CLFNBQVNxYSxzQkFBc0JWLFVBQVU7VUFDOUQsQ0FBQztBQUNEeEUsZ0NBQXNCLElBQUkzaUIsU0FBU2dPLFVBQVVnRCxRQUFRO1lBQ3BEbkosTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ3BHLE1BQU07VUFDUCxDQUFDO0FBQ0RpaUIsOEJBQW9CeFUsT0FBTztZQUMxQnRHLE1BQU07WUFDTm5ILE1BQU07WUFDTjBOLE9BQU87VUFDUixDQUFDO0FBQ0R1VSw4QkFBb0J4VSxPQUFPO1lBQzFCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOME4sT0FBTztVQUNSLENBQUM7QUFDRHVVLDhCQUFvQnhVLE9BQU87WUFDMUJ0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO1lBQ3BDdUgsT0FBT3RPLFFBQVF3UCxNQUFNL0IsU0FBU3NhO1lBQzlCaFosTUFBTSxDQUNMO2NBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLElBQUk7Y0FDL0JpRixPQUFPO2NBQ1BzTCxVQUFVO1lBQ1gsR0FDQTtjQUNDakosT0FBT3RPLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztjQUNoQ2lGLE9BQU87WUFDUixHQUNBO2NBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO2NBQ2hDaUYsT0FBTztZQUNSLEdBQ0E7Y0FDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Y0FDbENpRixPQUFPO1lBQ1IsR0FDQTtjQUNDcUMsT0FBTztjQUNQckMsT0FBTztZQUNSLEdBQ0E7Y0FDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Y0FDbENpRixPQUFPO1lBQ1IsR0FDQTtjQUNDcUMsT0FBTztjQUNQckMsT0FBTztZQUNSLEdBQ0E7Y0FDQ3FDLE9BQU87Y0FDUHJDLE9BQU87WUFDUixHQUNBO2NBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO2NBQzlCaUYsT0FBTztZQUNSLEdBQ0E7Y0FDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDOUJpRixPQUFPO1lBQ1IsR0FDQTtjQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztjQUNoQ2lGLE9BQU87WUFDUixHQUNBO2NBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO2NBQ2hDaUYsT0FBTztZQUNSLEdBQ0E7Y0FDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7Y0FDaENpRixPQUFPO1lBQ1IsR0FDQTtjQUNDcUMsT0FBTztjQUNQckMsT0FBTztZQUNSLEdBQ0E7Y0FDQ3FDLE9BQU87Y0FDUHJDLE9BQU87WUFDUixHQUNBO2NBQ0NxQyxPQUFPO2NBQ1ByQyxPQUFPO1lBQ1IsQ0FBQTtVQUVGLENBQUM7QUFDRDRXLDhCQUFvQnhVLE9BQU87WUFDMUJ0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxRQUFRO1lBQ3ZDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLDZGQUNBLDJGQUNEO1lBQ0FpRixPQUFPaE0sUUFBUXdQLE1BQU1vVCxvQkFBb0IrRSxVQUFVM25CLFFBQVF3UCxNQUFNcVQsdUJBQXVCbUY7VUFDekYsQ0FBQztBQUNELGNBQUlmLFlBQVk7QUFFZnJFLGdDQUFvQnhVLE9BQU87Y0FDMUJ0RyxNQUFNO2NBQ05tZ0IsVUFBVTtjQUNWdG5CLE1BQU07Y0FDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Y0FDbENpRixPQUFPO2NBQ1BqQyxTQUFTaEssT0FBT2dILE1BQU0sWUFBWSxVQUFVO1lBQzdDLENBQUM7QUFDRCxrQkFBTXlGLEtBQUtvVyxvQkFBb0J4VSxPQUFPO2NBQ3JDdEcsTUFBTTtjQUNObWdCLFVBQVU7Y0FDVnRuQixNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2NBQ3RDaUYsT0FBTztjQUNQakMsU0FBU2hLLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtZQUNqRCxDQUFDO0FBQ0QscUJBQUFtaEIsTUFBQSxHQUFBQyxtQkFBNkJ6TixPQUFPQyxRQUFReUgsdUJBQXVCLEdBQUE4RixNQUFBQyxpQkFBQXZuQixRQUFBc25CLE9BQUc7QUFBdEUsb0JBQVcsQ0FBQ0UsUUFBUXpuQixJQUFJLElBQUF3bkIsaUJBQUFELEdBQUE7QUFFdkIsa0JBQUlFLFVBQVUsS0FBS0EsU0FBUyxLQUFLO0FBQ2hDNWIsbUJBQUc0QixPQUFPO2tCQUNUdEcsTUFBTTtrQkFDTnVHLE9BQU8xTjtrQkFDUHFMLE9BQU9vYztnQkFDUixDQUFDO2NBQ0Y7WUFDRDtVQUNEO0FBQ0EsZ0JBQU1DLGVBQWUsQ0FDcEI7WUFDQ3BGLFNBQVNqakIsUUFBUXdQLE1BQU1vVCxvQkFBb0IwRjtZQUMzQ2phLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7WUFDdENwRyxNQUFNO1lBQ05xTCxPQUFPO1VBQ1IsR0FDQTtZQUNDaVgsU0FBU2pqQixRQUFRd1AsTUFBTW9ULG9CQUFvQjJGO1lBQzNDbGEsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtZQUN0Q3BHLE1BQU07WUFDTnFMLE9BQU87VUFDUixHQUNBO1lBQ0NpWCxTQUFTampCLFFBQVF3UCxNQUFNb1Qsb0JBQW9CNkI7WUFDM0NwVyxPQUFPdE8sT0FBT2dILE1BQU0sY0FBYyxZQUFZO1lBQzlDcEcsTUFBTTtZQUNOcUwsT0FBTztZQUNQakMsU0FBU2tkLGFBQ05sbkIsT0FBT2dILE1BQ1AsbUNBQ0Esa0NBQ0QsSUFDQztVQUNKLENBQUE7QUFFRCxjQUFJL0csUUFBUXdQLE1BQU0rVCxjQUFjO0FBQy9COEUseUJBQWFBLGFBQWF6bkIsTUFBTSxJQUFJO2NBQ25DcWlCLFNBQVNqakIsUUFBUXdQLE1BQU1vVCxvQkFBb0I0RjtjQUMzQ25hLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Y0FDbENwRyxNQUFNO2NBQ05xTCxPQUFPO1lBQ1I7VUFDRCxPQUFPO0FBQ05xYyx5QkFBYUEsYUFBYXpuQixNQUFNLElBQUk7Y0FDbkNxaUIsU0FBU2pqQixRQUFRd1AsTUFBTW9ULG9CQUFvQitCO2NBQzNDdFcsT0FBT3RPLE9BQU9nSCxNQUFNLG1CQUFtQixrQkFBa0I7Y0FDekRwRyxNQUFNO2NBQ05xTCxPQUFPO1lBQ1I7VUFDRDtBQUNBcWMsdUJBQWFBLGFBQWF6bkIsTUFBTSxLQUM5QjtZQUNBcWlCLFNBQVNqakIsUUFBUXdQLE1BQU1vVCxvQkFBb0I2RjtZQUMzQ3BhLE9BQU90TyxPQUFPZ0gsTUFBTSxpQkFBaUIsa0JBQWtCO1lBQ3ZEcEcsTUFBTTtZQUNOcUwsT0FBTztVQUNSLEdBQ0E7WUFDQ2lYLFNBQVM7WUFDVDVVLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7WUFDaERwRyxNQUFNO1lBQ05xTCxPQUFPO1VBQ1I7QUFDRDRXLDhCQUFvQnhVLE9BQU87WUFDMUJ0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ05vTyxNQUFNc1o7VUFDUCxDQUFDO0FBQ0R6Riw4QkFBb0J4VSxPQUFPO1lBQzFCdEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsYUFBYTtZQUNoRHBHLE1BQU07WUFDTm9KLFNBQVNoSyxPQUFPZ0gsTUFDZix3QkFDQSxzQkFDRDtZQUNBaUYsT0FBT2hNLFFBQVF3UCxNQUFNb1Qsb0JBQW9CL1E7VUFDMUMsQ0FBQztBQUNEK1EsOEJBQW9CeFUsT0FBTztZQUMxQnRHLE1BQU07WUFDTm5ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7WUFDaEMwSCxPQUFPO1lBQ1AxRSxTQUFTaEssT0FBT2dILE1BQ2YseUJBQ0EsdUJBQ0Q7VUFDRCxDQUFDO0FBQ0Q2Yiw4QkFBb0J4VSxPQUFPO1lBQzFCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOMk4sT0FBT3RPLFFBQVF3UCxNQUFNL0IsU0FBU2liO1lBQzlCamEsT0FBTztZQUNQTSxNQUFNLENBQ0w7Y0FDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztjQUNwQ2tjLFNBQVM7Y0FDVGpYLE9BQU9qTSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87WUFDckMsQ0FBQTtVQUVGLENBQUM7QUFDRDZiLDhCQUFvQnhVLE9BQU87WUFDMUJ0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ04yTixPQUFPdE8sUUFBUXdQLE1BQU0vQixTQUFTaWI7WUFDOUJqYSxPQUFPO1lBQ1BNLE1BQU0sQ0FDTDtjQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2NBQ3RDa2MsU0FBUztjQUNUalgsT0FBT2pNLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtZQUN2QyxDQUFBO1VBRUYsQ0FBQztBQUNENmIsOEJBQW9CeFUsT0FBTztZQUMxQnRHLE1BQU07WUFDTm5ILE1BQU07WUFDTjJOLE9BQU90TyxRQUFRd1AsTUFBTS9CLFNBQVNpYjtZQUM5QmphLE9BQU87WUFDUE0sTUFBTSxDQUNMO2NBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLFFBQVE7Y0FDckNrYyxTQUFTO2NBQ1RqWCxPQUFPak0sT0FBT2dILE1BQU0sU0FBUyxRQUFRO1lBQ3RDLENBQUE7VUFFRixDQUFDO0FBQ0Q2Yiw4QkFBb0J4VSxPQUFPO1lBQzFCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOMk4sT0FBT3RPLFFBQVF3UCxNQUFNL0IsU0FBU2liO1lBQzlCamEsT0FBTztZQUNQTSxNQUFNLENBQ0w7Y0FDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztjQUN4Q2tjLFNBQVM7Y0FDVGpYLE9BQU9qTSxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7WUFDekMsQ0FBQTtVQUVGLENBQUM7QUFFRCxjQUFJb2Isb0JBQW9CL0wsa0JBQWtCO0FBQ3pDd00sZ0NBQW9CeFUsT0FBTztjQUMxQnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTnFMLE9BQU87WUFDUixDQUFDO1VBQ0Y7UUFDRDtBQUNBLFlBQUk0YSxhQUFhO0FBQ2hCL0QsbUNBQXlCLElBQUk1aUIsU0FBU2dPLFVBQVVnRCxRQUFRO1lBQ3ZEbkosTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ3BHLE1BQU07VUFDUCxDQUFDO0FBQ0RraUIsaUNBQXVCelUsT0FBTztZQUM3QnRHLE1BQU07WUFDTm5ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7WUFDMUN1SCxPQUFPdE8sUUFBUXdQLE1BQU0vQixTQUFTa2I7WUFDOUI1WixNQUFNL08sUUFBUXdQLE1BQU0vQixTQUFTcWEsc0JBQXNCVixZQUFZLElBQUk7WUFDbkVwYixPQUFPaE0sUUFBUXdQLE1BQU1xVCx1QkFBdUI5SDtVQUM3QyxDQUFDO0FBQ0Q4SCxpQ0FBdUJ6VSxPQUFPO1lBQzdCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ2lGLE9BQU87WUFDUGpDLFNBQVNoSyxPQUFPZ0gsTUFDZixtQ0FDQSxpQ0FDRDtVQUNELENBQUM7QUFFRDhiLGlDQUF1QnpVLE9BQU87WUFDN0J0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1lBQ2xDaUYsT0FBTztZQUNQakMsU0FBU2hLLE9BQU9nSCxNQUNmLHdCQUNBLHVCQUNEO1VBQ0QsQ0FBQztBQUNELGNBQUksQ0FBQzJmLFVBQVU7QUFDZDdELG1DQUF1QnpVLE9BQU87Y0FDN0J0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPO2NBQ1ByQyxPQUFPO2NBQ1BqQyxTQUFTaEssT0FBT2dILE1BQU0sdUJBQXVCLHFCQUFxQjtZQUNuRSxDQUFDO1VBQ0Y7QUFDQThiLGlDQUF1QnpVLE9BQU87WUFDN0J0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sZUFBZSxhQUFhO1lBQ2hEZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLCtCQUNBLDZCQUNEO1lBQ0FpRixPQUFPaE0sUUFBUXdQLE1BQU1xVCx1QkFBdUIrRjtZQUM1Q3BSLE1BQU07VUFDUCxDQUFDO0FBQ0QsY0FBSWtQLFVBQVU7QUFDYjdELG1DQUF1QnpVLE9BQU87Y0FDN0J0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ05vTyxNQUFNLENBQ0w7Z0JBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7Z0JBQ2hEa2MsU0FBU2pqQixRQUFRd1AsTUFBTXFULHVCQUF1QmdHO2dCQUM5QzllLFNBQVNoSyxPQUFPZ0gsTUFDZix1QkFDQSxxQkFDRDtjQUNELENBQUE7WUFFRixDQUFDO1VBQ0YsT0FBTztBQUNOOGIsbUNBQXVCelUsT0FBTztjQUM3QnRHLE1BQU07Y0FDTmlILE1BQU0sQ0FDTDtnQkFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtnQkFDOUNwRyxNQUFNO2dCQUNOc2lCLFNBQVNqakIsUUFBUXdQLE1BQU1xVCx1QkFBdUJpRztnQkFDOUMvZSxTQUFTaEssT0FBT2dILE1BQ2YsNkJBQ0EsNEJBQ0Q7Y0FDRCxHQUNBO2dCQUNDc0gsT0FBT3RPLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtnQkFDMUNwRyxNQUFNO2dCQUNOc2lCLFNBQVNqakIsUUFBUXdQLE1BQU1xVCx1QkFBdUJrRztnQkFDOUNoZixTQUFTaEssT0FBT2dILE1BQ2YsOEJBQ0EsNkJBQ0Q7Y0FDRCxHQUNBO2dCQUNDc0gsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtnQkFDdENwRyxNQUFNO2dCQUNOc2lCLFNBQVNqakIsUUFBUXdQLE1BQU1xVCx1QkFBdUJtRztnQkFDOUNqZixTQUFTaEssT0FBT2dILE1BQ2YsNEJBQ0EsMkJBQ0Q7Y0FDRCxDQUFBO1lBRUYsQ0FBQztVQUNGO0FBQ0EsZ0JBQU1raUIsZUFBZXRwQixFQUFFLEtBQUssRUFBRWlYLEtBQUssTUFBTSwyQkFBMkIsRUFBRS9PLEtBQUs5SCxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztBQUNuR2tpQix1QkFBYUMsSUFBSSxPQUFPLEVBQUV6ZixHQUFHLFNBQVMsTUFBTTtBQUMzQ3pKLG9CQUFRd1AsTUFBTS9CLFNBQVN1RCxRQUFRd1MsTUFBTSxDQUFDLENBQUM7VUFDeEMsQ0FBQztBQUNEeUYsdUJBQWEvZSxJQUFJO1lBQ2hCNEcsUUFBUTtVQUNULENBQUM7QUFDRCtSLGlDQUF1QnpVLE9BQU87WUFDN0J0RyxNQUFNO1lBQ05GLElBQUk7WUFDSnlHLE9BQU8sQ0FBQzRhLGFBQWEsQ0FBQyxDQUFDO1VBQ3hCLENBQUM7QUFDRHBHLGlDQUF1QnpVLE9BQU87WUFDN0J0RyxNQUFNO1lBQ05GLElBQUk7WUFDSjZHLE9BQU87VUFDUixDQUFDO1FBQ0Y7QUFDQSxZQUFJcVksUUFBUTtBQUNYUCw4QkFBb0IsSUFBSXRtQixTQUFTZ08sVUFBVWdELFFBQVE7WUFDbERuSixNQUFNO1lBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxTQUFTO1lBQ3RDcEcsTUFBTTtVQUNQLENBQUM7QUFDRDRsQiw0QkFBa0JuWSxPQUFPO1lBQ3hCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFlBQVksWUFBWTtZQUM1Q2dJLE1BQU0sQ0FDTDtjQUNDVixPQUFBLG9CQUFBakcsT0FBMkJySSxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQztjQUMzRGlGLE9BQU87WUFDUixHQUNBO2NBQ0NxQyxPQUFBLGtCQUFBakcsT0FBeUJySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztjQUNyRGlGLE9BQU87Y0FDUG1kLFVBQVUsQ0FDVDtnQkFDQ3hvQixNQUFNO2dCQUNObUgsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFdBQVc7Y0FDM0MsR0FDQTtnQkFDQ3BHLE1BQU07Z0JBQ05tSCxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztnQkFDaENnSSxNQUFNLENBQ0w7a0JBQ0NqSCxNQUFNO2tCQUNOa0UsT0FBTztrQkFDUHFDLE9BQUEsYUFBQWpHLE9BQW9CckksT0FBT2dILE1BQU0sWUFBWSxVQUFVLENBQUM7a0JBQ3hEdVEsVUFBVTtnQkFDWCxHQUNBO2tCQUNDeFAsTUFBTTtrQkFDTmtFLE9BQU87a0JBQ1BxQyxPQUFBLFlBQUFqRyxPQUFtQnJJLE9BQU9nSCxNQUFNLFdBQVcsU0FBUyxDQUFDO2dCQUN0RCxHQUNBO2tCQUNDZSxNQUFNO2tCQUNOa0UsT0FBTztrQkFDUHFDLE9BQUEsZUFBQWpHLE9BQXNCckksT0FBT2dILE1BQU0sU0FBUyxPQUFPLENBQUM7Z0JBQ3JELENBQUE7Y0FFRixHQUNBO2dCQUNDcEcsTUFBTTtnQkFDTm1ILE1BQU07Z0JBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO2dCQUN4Q2dELFNBQVNoSyxPQUFPZ0gsTUFDZixtREFDQSxpREFDRDtjQUNELENBQUE7WUFFRixHQUNBO2NBQ0NzSCxPQUFBLDZCQUFBakcsT0FBb0NySSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FBQztjQUNsRWlGLE9BQU87Y0FDUG1kLFVBQVUsQ0FDVDtnQkFDQ3JoQixNQUFNO2dCQUNOaUgsTUFBTSxDQUNMO2tCQUNDcE8sTUFBTTtrQkFDTnFMLE9BQU87a0JBQ1BxQyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxVQUFVO2dCQUMxQyxDQUFBO2NBRUYsR0FDQTtnQkFDQ3BHLE1BQU07Z0JBQ05tSCxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztjQUNyQyxDQUFBO1lBRUYsQ0FBQTtVQUVGLENBQUM7UUFDRjtBQUNBLFlBQUlvZ0IsWUFBWTtBQUNmWCxrQ0FBd0IsSUFBSXZtQixTQUFTZ08sVUFBVWdELFFBQVE7WUFDdERuSixNQUFNO1lBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1lBQ3RDcEcsTUFBTTtVQUNQLENBQUM7QUFDRDZsQixnQ0FBc0JwWSxPQUFPO1lBQzVCdEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsYUFBYTtZQUNoRHBHLE1BQU07WUFDTnFMLE9BQU9oTSxRQUFRd1AsTUFBTWdYLHNCQUFzQjNVO1VBQzVDLENBQUM7UUFDRjtBQUNBLFlBQUl1WDtBQUNKLFlBQUk5QyxjQUFjO0FBQ2pCLFdBQUM4QyxRQUFRLElBQUk1RixNQUFNbGMsS0FBSywrQkFBK0I7QUFDdkQ4aEIsbUJBQVM5Z0IsV0FBVytJLGFBQWFpVixhQUFhM1gsT0FBTyxHQUFHeWEsUUFBUTtRQUNqRSxPQUFPO0FBQ041RixnQkFBTWxjLEtBQUssK0JBQStCLEVBQUUraEIsS0FBSztRQUNsRDtBQUNBLFlBQUl6RyxxQkFBcUI7QUFDeEIsV0FBQ3dHLFFBQVEsSUFBSTVGLE1BQU1sYyxLQUFLLHNDQUFzQztBQUM5RDhoQixtQkFBUzlnQixXQUFXK0ksYUFBYXVSLG9CQUFvQmpVLE9BQU8sR0FBR3lhLFFBQVE7QUFDdkU1RixnQkFBTWxjLEtBQUssMkJBQTJCLEVBQUVnaUIsS0FBSztBQUM3QzlGLGdCQUFNbGMsS0FBSyx5QkFBeUIsRUFBRTZWLFFBQVE7WUFDN0NDLE9BQU87WUFDUDNGLGFBQWExWCxPQUFPZ0gsTUFBTSxnQkFBZ0IsZUFBZTtZQUN6RDJXLFVBQVU7Y0FDVDZMLGNBQWNBLE1BQU07QUFDbkIsdUJBQU94cEIsT0FBT2dILE1BQU0sY0FBYyxZQUFZO2NBQy9DO1lBQ0Q7WUFDQXlpQix3QkFBd0I7WUFDeEJDLG9CQUFvQjtZQUNwQkMsTUFBTTtjQUNMQyxLQUFLcGtCLEdBQUcwRSxLQUFLMmYsV0FBVyxLQUFLO2NBQzdCQyxVQUFVO2NBQ1ZDLE9BQU87Y0FDUDdPLE1BQU9xQixZQUFXO0FBQ2pCLHNCQUFNN1AsUUFBUWxILEdBQUcrTSxNQUFNeVgsWUFBWXpOLE9BQU8wTixJQUFJO0FBQzlDLG9CQUFJLENBQUN2ZCxPQUFPO0FBQ1g7Z0JBQ0Q7QUFDQSx1QkFBTztrQkFDTmpDLFFBQVE7a0JBQ1J5RSxRQUFRO2tCQUNSRixNQUFNO2tCQUNOa2IsUUFBUXhkLE1BQU1BO2tCQUNkeWQsYUFBYXpkLE1BQU04RjtrQkFDbkI0WCxTQUFTO2dCQUNWO2NBQ0Q7Y0FDQUMsZ0JBQWlCblAsVUFBUztBQUN6Qix1QkFBTztrQkFDTm9QLFNBQVNwUCxLQUFLbk0sTUFBTXdiLFNBQVM1WCxJQUFLRixVQUFTO0FBQzFDLDBCQUFNL0YsUUFBUWxILEdBQUcrTSxNQUFNeVgsWUFBWXZYLEtBQUsvRixPQUFPK0YsS0FBS2hHLEVBQUUsRUFBRStkLE9BQU87QUFDL0QsMkJBQU87c0JBQ04zaUIsSUFBSTZFO3NCQUNKNUUsTUFBTTRFO29CQUNQO2tCQUNELENBQUM7Z0JBQ0Y7Y0FDRDtZQUNEO1lBQ0ErZCxtQkFBb0JDLFlBQVc7QUFDOUIscUJBQU85cUIsRUFBRSxLQUFLLEVBQ1prSSxLQUFLNGlCLE9BQU81aUIsSUFBSSxFQUNoQitPLEtBQUs7Z0JBQ0xwTixNQUFNakUsR0FBRzBFLEtBQUtNLE9BQU9rZ0IsT0FBTzVpQixJQUFJO2dCQUNoQ3lJLFFBQVE7Z0JBQ1JvYSxLQUFLO2NBQ04sQ0FBQztZQUNIO1VBQ0QsQ0FBQztBQUNEbEgsZ0JBQU1sYyxLQUFLLDhCQUE4QixFQUFFNlYsUUFBUTtZQUNsREMsT0FBTztZQUNQQyxTQUFTcGQsU0FBU2tkLFFBQVFHLFNBQVNxTjtZQUNuQ2pOLFVBQVU7Y0FDVEMsV0FBVzFkLFNBQVNrZCxRQUFRUztZQUM3QjtZQUNBSixnQkFBZ0J2ZCxTQUFTa2QsUUFBUU07WUFDakNoRyxhQUFhMVgsT0FBT2dILE1BQU0sa0JBQWtCLGlCQUFpQjtVQUM5RCxDQUFDO0FBQ0R4QixhQUFHMEUsS0FBS2tDOzs7Ozs7WUFNUDtVQUNEO1FBQ0QsT0FBTztBQUNOcVgsZ0JBQU1sYyxLQUFLLHNDQUFzQyxFQUFFK2hCLEtBQUs7QUFDeEQ3RixnQkFBTWxjLEtBQUssMkJBQTJCLEVBQUUraEIsS0FBSztBQUU3QzdGLGdCQUFNbGMsS0FBSyx5QkFBeUIsRUFBRXdGLElBQUksSUFBSSxFQUFFaVIsUUFBUSxRQUFRO0FBQ2hFeUYsZ0JBQU1sYyxLQUFLLDhCQUE4QixFQUFFd0YsSUFBSSxJQUFJLEVBQUVpUixRQUFRLFFBQVE7UUFDdEU7QUFDQSxZQUFJOEUsd0JBQXdCO0FBQzNCLFdBQUN1RyxRQUFRLElBQUk1RixNQUFNbGMsS0FBSyx5Q0FBeUM7QUFDakU4aEIsbUJBQVM5Z0IsV0FBVytJLGFBQWF3Uix1QkFBdUJsVSxPQUFPLEdBQUd5YSxRQUFRO0FBQzFFMWYsWUFBRTRHLE9BQU90QyxLQUFLaEcsS0FBSzRKLFlBQVksSUFBSTNSLFNBQVNxTCxLQUFLMEYsUUFDaERyUixFQUFFK0osRUFBRTRHLE9BQU90QyxLQUFLaEcsSUFBSSxFQUFFVixLQUFLLDBCQUEwQixFQUFFa0ssS0FBSyxFQUFFLENBQUMsQ0FDaEU7UUFDRCxPQUFPO0FBQ05nUyxnQkFBTWxjLEtBQUsseUNBQXlDLEVBQUUraEIsS0FBSztRQUM1RDtBQUNBLFlBQUk5QyxtQkFBbUI7QUFDdEIsV0FBQzZDLFFBQVEsSUFBSTVGLE1BQU1sYyxLQUFLLG9DQUFvQztBQUM1RDhoQixtQkFBUzlnQixXQUFXK0ksYUFBYWtWLGtCQUFrQjVYLE9BQU8sR0FBR3lhLFFBQVE7UUFDdEUsT0FBTztBQUNONUYsZ0JBQU1sYyxLQUFLLG9DQUFvQyxFQUFFK2hCLEtBQUs7UUFDdkQ7QUFDQSxZQUFJN0MsdUJBQXVCO0FBQzFCLFdBQUM0QyxRQUFRLElBQUk1RixNQUFNbGMsS0FBSyx3Q0FBd0M7QUFDaEU4aEIsbUJBQVM5Z0IsV0FBVytJLGFBQWFtVixzQkFBc0I3WCxPQUFPLEdBQUd5YSxRQUFRO1FBQzFFLE9BQU87QUFDTjVGLGdCQUFNbGMsS0FBSyx3Q0FBd0MsRUFBRStoQixLQUFLO1FBQzNEO0FBRUEsWUFBSXJwQixRQUFRd1AsTUFBTW1ULGtCQUFrQjtBQUduQyxnQkFBTWlJLFdBQVd6SSxvQkFBb0IvTDtBQUNyQ25XLG1CQUFTdVUsT0FBT0MsS0FBSzVVLE1BQU15SCxLQUFLLCtCQUErQixFQUFFa0ssS0FBSyxFQUFFLENBQUMsQ0FBQztBQUMxRSxjQUFJcVosWUFBQSxHQUFBemlCLE9BQWVnTyxrQkFBZ0IsSUFBQSxFQUFBaE8sT0FDbENwSSxRQUFRd1AsTUFBTW1ULGlCQUFpQmpULFlBQVksS0FDeEMzUCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFDM0JoSCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FDL0I7QUFFQSxjQUFJL0csUUFBUXdQLE1BQU1tVCxpQkFBaUJoVCxlQUFlM1AsUUFBUXdQLE1BQU1tVCxpQkFBaUIvUyxVQUFVO0FBQzFGLGdCQUFJZ2IsVUFBVTtBQUNiQywyQkFBYTlxQixPQUFPZ0gsTUFBTSxTQUFTLE9BQU87WUFDM0MsT0FBTztBQUdOLG9CQUFNK2pCLHFCQUFxQm5yQixFQUFFLFFBQVEsRUFBRXlPLE9BQ3RDek8sRUFBQSwyQ0FBQXlJLE9BQzRDN0MsR0FBRzBFLEtBQUtNLE9BQU8sZUFBZTtnQkFDeEVDLFFBQVE7Z0JBQ1JnSSxNQUFNMlA7Z0JBQ05yYSxNQUFNO2NBQ1AsQ0FBQyxHQUFDLElBQUEsRUFBQU0sT0FDRG5JLFNBQVN1aUIsR0FBR1csTUFBTS9NLGdCQUFnQixNQUFNK0wsa0JBQWtCLFFBQVFBLGlCQUNuRSxPQUFBLENBQ0QsQ0FDRDtBQUNBMEksMkJBQ0M5cUIsT0FBT2dILE1BQU0sT0FBTyxLQUFLLElBQ3pCK2pCLG1CQUFtQkMsS0FBSyxJQUN4QmhyQixPQUFPZ0gsTUFBTSxTQUFTLE9BQU87WUFDL0I7VUFDRDtBQUNBLGNBQUkvRyxRQUFRd1AsTUFBTW1ULGlCQUFpQmdGLFdBQVcsWUFBWTtBQUN6RGtELHlCQUFhOXFCLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUMzQyxXQUFXLElBQUk5RyxTQUFTdVksS0FBS3hZLFFBQVF3UCxNQUFNbVQsaUJBQWlCZ0YsTUFBTSxFQUFFbFAsUUFBUSxHQUFHO0FBQzlFb1MseUJBQUEsR0FBQXppQixPQUNDckksT0FBT2dILE1BQU0sUUFBUSxNQUFNLElBQzNCLElBQUk5RyxTQUFTdVksS0FBS3hZLFFBQVF3UCxNQUFNbVQsaUJBQWlCZ0YsTUFBTSxFQUFFcUQsU0FBUyxLQUFLLEdBQ3hFLEdBQUE7VUFDRDtBQUNBLGNBQUlDLFVBQVVsckIsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3pDLGNBQUk2akIsVUFBVTtBQUNiSyx1QkFBV2xyQixPQUFPZ0gsTUFBTSxRQUFRLE1BQU07QUFDdEMsZ0JBQUkvRyxRQUFRd1AsTUFBTW1ULGlCQUFpQmpULFlBQVksVUFBYXVYLFlBQVk7QUFDdkVnRSx5QkFBV2xyQixPQUFPZ0gsTUFBTSxTQUFTLE9BQU87WUFDekMsV0FBVy9HLFFBQVF3UCxNQUFNbVQsaUJBQWlCalQsWUFBWSxNQUFNLENBQUN1WCxZQUFZO0FBQ3hFZ0UseUJBQVdsckIsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1lBQ3pDO0FBQ0Fra0IsdUJBQVc7VUFDWixPQUFPO0FBQ05BLHVCQUNDbHJCLE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxLQUM1QmtnQixhQUFhLE9BQU8sTUFDckJsbkIsT0FBT2dILE1BQU0sT0FBTyxLQUFLO1VBQzNCO0FBQ0E5RyxtQkFBU3VVLE9BQU9wVSxLQUFLeXFCLFdBQVdJLE9BQU87QUFFdkNqckIsa0JBQVF3UCxNQUFNL0IsU0FBU3lkLFlBQVl4aEIsR0FBRzFKLFFBQVF3UCxNQUFNbVQsZ0JBQWdCO1FBQ3JFO0FBSUEsWUFBSTNpQixRQUFRd1AsTUFBTXFWLGFBQWE7QUFFOUIsZ0JBQU1zRyxlQUFlLENBQUE7QUFDckIsZ0JBQU1DLGdCQUFnQnpyQixFQUFFLFFBQVEsRUFBRXlPLE9BQ2pDek8sRUFBQSwyQ0FBQXlJLE9BQzRDN0MsR0FBRzBFLEtBQUtNLE9BQU8sZUFBZTtZQUN4RUMsUUFBUTtZQUNSZ0ksTUFBTTREO1lBQ050TyxNQUFNO1VBQ1AsQ0FBQyxHQUFDLElBQUEsRUFBQU0sT0FBS3JJLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFDLE9BQUEsQ0FDcEMsQ0FDRDtBQUNBLGNBQUkvRyxRQUFRd1AsTUFBTW1ULGtCQUFrQjtBQUNuQ3dJLHlCQUFhQSxhQUFhdnFCLE1BQU0sSUFBSWIsT0FBT2dILE1BQU0sUUFBUSxNQUFNO1VBQ2hFLE9BQU87QUFDTixrQkFBTSxDQUFDc2tCLGVBQWUsSUFBSXJyQixRQUFRd1AsTUFBTXVWO0FBQ3hDLGtCQUFNdUcsY0FBY0QsZ0JBQWdCN2dCLFdBQVcsWUFBWXhLLFFBQVF3UCxNQUFNdVYsU0FBUyxDQUFDLElBQUlzRztBQUN2RkYseUJBQWFBLGFBQWF2cUIsTUFBTSxLQUM5QixJQUFBd0gsT0FDQW5JLFNBQVN1aUIsR0FBR0MsUUFBUXJNLGdCQUFnQixJQUNqQ3JXLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxJQUMzQmhILE9BQU9nSCxNQUFNLE1BQU0sS0FBSyxHQUM1QixJQUFBLEdBQ0FwSCxFQUFFLEtBQUssRUFBRWtJLEtBQUssSUFBSTVILFNBQVN1WSxLQUFLOFMsWUFBWUMsU0FBUyxFQUFFUCxTQUFTLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBQSxJQUFBNWlCLE9BQ3JFa2pCLFlBQVlsSCxJQUFJLEVBQUFoYyxPQUFHckksT0FBT2dILE1BQU0sTUFBTSxJQUFJLENBQUMsR0FDL0NwSCxFQUFFLEtBQUssRUFBRWtJLEtBQUs1SCxTQUFTZ1QsT0FBT3VZLFdBQVdGLFlBQVloUCxPQUFPbVAsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUN6RSxnQkFBSUosZ0JBQWdCN2dCLFdBQVcsV0FBVztBQUN6QzJnQiwyQkFBYUEsYUFBYXZxQixNQUFNLElBQUEsSUFBQXdILE9BQzNCLElBQUluSSxTQUFTdVksS0FBSzZTLGdCQUFnQkUsU0FBUyxFQUFFUCxTQUFTLEtBQUssR0FBQyxJQUFBO1lBQ2xFLE9BQU87QUFFTkcsMkJBQWFBLGFBQWF2cUIsTUFBTSxJQUFBLElBQUF3SCxPQUMzQixJQUFJbkksU0FBU3VZLEtBQUs4UyxZQUFZaFAsT0FBT3FMLE1BQU0sRUFBRXFELFNBQVMsS0FBSyxDQUFDLEVBQUE1aUIsT0FBR3JJLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxDQUFDO1lBQzdGO1VBQ0Q7QUFDQTlHLG1CQUFTdVUsT0FBT0MsS0FBSzVVLE1BQU15SCxLQUFLLDhCQUE4QixFQUFFa0ssS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN6RXZSLG1CQUFTdVUsT0FBT3BVLEtBQUsrcUIsY0FBY0MsY0FBYyxDQUFDLENBQUM7UUFDcEQ7QUFFQSxZQUFJMUUsVUFBVTtBQUNiMW1CLGtCQUFRd1AsTUFBTS9CLFNBQVNvYSxjQUFjbmUsQ0FBQztRQUN2QyxXQUFXa2QsYUFBYTtBQUN2QjVtQixrQkFBUXdQLE1BQU0vQixTQUFTa2IsZ0JBQWdCamYsQ0FBQztRQUN6QztNQUNEO0FBK0JBMUosY0FBUXdQLE1BQU1nWSxtQkFBbUI7O1FBRWhDLFlBQVk7VUFDWGdCLFdBQVc7VUFDWGIsUUFBUTtVQUNSK0QsbUJBQW1CO1VBQ25CcEQsVUFBVTtVQUNWcUQsV0FBVztVQUNYQyxhQUFhO1VBQ2J0WCxTQUFTdlUsT0FBT2dILE1BQU0sUUFBUSxNQUFNO1VBQ3BDc1MsMEJBQTBCO1FBQzNCO1FBQ0EsaUJBQWlCO1VBQ2hCbVAsV0FBVztVQUNYYixRQUFRO1VBQ1IrRCxtQkFBbUI7VUFDbkJwRCxVQUFVO1VBQ1ZxRCxXQUFXO1VBQ1hDLGFBQWE7VUFDYnRYLFNBQVN2VSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07VUFDcENzUywwQkFBMEI7UUFDM0I7UUFDQSxrQkFBa0I7VUFDakJvTCxhQUFhO1VBQ2JrSCxXQUFXO1VBQ1hDLGFBQWE7VUFDYnRYLFNBQVN2VSxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztVQUNwRHNTLDBCQUEwQjtRQUMzQjtRQUNBLGFBQWE7VUFDWm1QLFdBQVc7VUFDWGIsUUFBUTtVQUNSVyxVQUFVO1VBQ1ZxRCxXQUFXO1VBQ1g5WixRQUFROVIsT0FBT2dILE1BQU0sd0JBQXdCLHNCQUFzQjtVQUNuRXVOLFNBQVN2VSxPQUFPZ0gsTUFBTSw2QkFBNkIsMkJBQTJCO1FBQy9FO1FBQ0EsY0FBYztVQUNieWhCLFdBQVc7VUFDWEYsVUFBVTtVQUNWcUQsV0FBVztVQUNYOVosUUFBUTlSLE9BQU9nSCxNQUFNLHlCQUF5Qix1QkFBdUI7VUFDckV1TixTQUFTdlUsT0FBT2dILE1BQ2YsOEJBQ0EsNEJBQ0Q7UUFDRDtRQUNBLGtCQUFrQjtVQUNqQnloQixXQUFXO1VBQ1hiLFFBQVE7VUFDUlcsVUFBVTtVQUNWelcsUUFBUTlSLE9BQU9nSCxNQUNkLG1DQUNBLGlDQUNEO1VBQ0F1TixTQUFTdlUsT0FBT2dILE1BQ2Ysd0NBQ0Esc0NBQ0Q7UUFDRDtRQUNBLHFCQUFxQjtVQUNwQnloQixXQUFXO1VBQ1hiLFFBQVE7VUFDUlcsVUFBVTtVQUNWcUQsV0FBVztVQUNYOVosUUFBUTlSLE9BQU9nSCxNQUFNLDBCQUEwQix3QkFBd0I7VUFDdkV1TixTQUFTdlUsT0FBT2dILE1BQU0sK0JBQStCLDZCQUE2QjtVQUNsRnFYLGNBQWM7UUFDZjtRQUNBLGFBQWE7VUFDWm9LLFdBQVc7VUFDWEYsVUFBVTtVQUNWcUQsV0FBVztVQUNYOVosUUFBUTlSLE9BQU9nSCxNQUFNLHFCQUFxQixtQkFBbUI7VUFDN0R1TixTQUFTdlUsT0FBT2dILE1BQU0sMEJBQTBCLHdCQUF3QjtRQUN6RTtRQUNBLGFBQWE7VUFDWnloQixXQUFXO1VBQ1hGLFVBQVU7VUFDVnFELFdBQVc7VUFDWDlaLFFBQVE5UixPQUFPZ0gsTUFBTSxvQkFBb0IsbUJBQW1CO1VBQzVEdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLHlCQUF5Qix3QkFBd0I7UUFDeEU7UUFDQSxhQUFhO1VBQ1p5aEIsV0FBVztVQUNYYixRQUFRO1VBQ1JXLFVBQVU7VUFDVnFELFdBQVc7VUFDWDlaLFFBQVE5UixPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZTtVQUNyRHVOLFNBQVN2VSxPQUFPZ0gsTUFBTSxzQkFBc0Isb0JBQW9CO1FBQ2pFO1FBQ0EsbUJBQW1CO1VBQ2xCeWhCLFdBQVc7VUFDWGIsUUFBUTtVQUNSVyxVQUFVO1VBQ1ZxRCxXQUFXO1VBQ1g5WixRQUFROVIsT0FBT2dILE1BQU0scUJBQXFCLG1CQUFtQjtVQUM3RHVOLFNBQVN2VSxPQUFPZ0gsTUFDZiwwQkFDQSx3QkFDRDtRQUNEO1FBQ0EsZ0JBQWdCO1VBQ2Z5aEIsV0FBVztVQUNYYixRQUFRO1VBQ1IrRCxtQkFBbUI7VUFDbkJwRCxVQUFVO1VBQ1Z6VyxRQUFROVIsT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQjtVQUMvRHVOLFNBQVN2VSxPQUFPZ0gsTUFBTSwyQkFBMkIseUJBQXlCO1VBQzFFcVgsY0FBYztRQUNmOztRQUVBLGFBQWE7VUFDWnVKLFFBQVE7VUFDUitELG1CQUFtQjtVQUNuQjdaLFFBQUEscUJBQUF6SixPQUE2QnJJLE9BQU9nSCxNQUFNLGFBQWEsU0FBUyxHQUFDLE1BQUE7VUFDakV1TixTQUFTdlUsT0FBT2dILE1BQ2YsOEJBQ0EsZ0NBQ0Q7UUFDRDtRQUNBLHFCQUFxQjtVQUNwQnloQixXQUFXO1VBQ1hiLFFBQVE7VUFDUitELG1CQUFtQjtVQUNuQnBELFVBQVU7VUFDVnpXLFFBQUEsNkJBQUF6SixPQUFxQ3JJLE9BQU9nSCxNQUFNLFdBQVcsV0FBVyxHQUFDLE1BQUE7VUFDekV1TixTQUFTdlUsT0FBT2dILE1BQ2YsOEJBQ0EsZ0NBQ0Q7UUFDRDtRQUNBLHdCQUF3QjtVQUN2QnloQixXQUFXO1VBQ1hiLFFBQVE7VUFDUitELG1CQUFtQjtVQUNuQnBELFVBQVU7VUFDVnpXLFFBQUEsZ0NBQUF6SixPQUF3Q3JJLE9BQU9nSCxNQUFNLGFBQWEsYUFBYSxHQUFDLE1BQUE7VUFDaEZ1TixTQUFTdlUsT0FBT2dILE1BQ2YsOEJBQ0EsZ0NBQ0Q7UUFDRDtRQUNBLGtCQUFrQjtVQUNqQnloQixXQUFXO1VBQ1hiLFFBQVE7VUFDUitELG1CQUFtQjtVQUNuQnBELFVBQVU7VUFDVnpXLFFBQUEsMEJBQUF6SixPQUFrQ3JJLE9BQU9nSCxNQUFNLGdCQUFnQixnQkFBZ0IsR0FBQyxNQUFBO1VBQ2hGdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLDhCQUNBLGdDQUNEO1FBQ0Q7O1FBRUEsZUFBZTtVQUNkNGdCLFFBQVE7VUFDUjlWLFFBQVE7VUFDUnlXLFVBQVU7VUFDVnVELGFBQWE7VUFDYkMsYUFBYTtVQUNiQyxLQUFLLEtBQUszakIsT0FBTyxJQUFJO1FBQ3RCO1FBQ0EsaUJBQWlCO1VBQ2hCdWYsUUFBUTtVQUNSbUUsYUFBYTtVQUNieEQsVUFBVTtVQUNWdUQsYUFBYTtVQUNibEgsV0FBVztVQUNYOVMsUUFBUTtVQUNSa2EsS0FBSztRQUNOO1FBQ0FDLGdCQUFnQjtVQUNmckUsUUFBUTtVQUNSbUUsYUFBYTtVQUNieEQsVUFBVTtVQUNWdUQsYUFBYTtVQUNiaGEsUUFBUTtVQUNSa2EsS0FBSyxLQUFLM2pCLE9BQU8sSUFBSTtRQUN0QjtRQUNBLDBCQUEwQjtVQUN6Qm9nQixXQUFXO1VBQ1hiLFFBQVE7VUFDUitELG1CQUFtQjtVQUNuQnBELFVBQVU7VUFDVnVELGFBQWE7VUFDYmhhLFFBQVE7VUFDUmthLEtBQUssS0FBSzNqQixPQUFPLElBQUk7UUFDdEI7UUFDQSxnQkFBZ0I7VUFDZnVmLFFBQVE7VUFDUm1FLGFBQWE7VUFDYnhELFVBQVU7VUFDVnVELGFBQWE7VUFDYmhhLFFBQVE7VUFDUmthLEtBQUssS0FBSzNqQixPQUFPLElBQUk7UUFDdEI7UUFDQSxxQkFBcUI7VUFDcEJ1ZixRQUFRO1VBQ1IrRCxtQkFBbUI7VUFDbkI3WixRQUFROVIsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1VBQ3JDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUNoRGdsQixLQUFLLEtBQUszakIsT0FBTyxJQUFJO1FBQ3RCOztRQUVBNmpCLFVBQVU7VUFDVHpELFdBQVc7VUFDWGIsUUFBUTtVQUNSVyxVQUFVO1VBQ1ZxRCxXQUFXO1VBQ1g5WixRQUFROVIsT0FBT2dILE1BQU0sWUFBWSxVQUFVO1VBQzNDdU4sU0FBU3ZVLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1VBQ3REcVgsY0FBYztRQUNmO1FBQ0E4TixTQUFTO1VBQ1IxRCxXQUFXO1VBQ1hiLFFBQVE7VUFDUlcsVUFBVTtVQUNWcUQsV0FBVztVQUNYOVosUUFBUTlSLE9BQU9nSCxNQUFNLDJCQUEyQix5QkFBeUI7VUFDekV1TixTQUFTdlUsT0FBT2dILE1BQ2YsZ0NBQ0EsOEJBQ0Q7VUFDQXFYLGNBQWM7UUFDZjtRQUNBK04sU0FBUztVQUNSM0QsV0FBVztVQUNYYixRQUFRO1VBQ1JXLFVBQVU7VUFDVnFELFdBQVc7VUFDWDlaLFFBQVE5UixPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7VUFDakR1TixTQUFTdlUsT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQjtVQUM1RHFYLGNBQWM7UUFDZjtRQUNBLGVBQWU7VUFDZG9LLFdBQVc7VUFDWGIsUUFBUTtVQUNSVyxVQUFVO1VBQ1ZxRCxXQUFXO1VBQ1hDLGFBQWE7VUFDYi9aLFFBQVE5UixPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7VUFDM0N1TixTQUFTdlUsT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7VUFDdERxWCxjQUFjO1FBQ2Y7UUFDQSxpQkFBaUI7VUFDaEJvSyxXQUFXO1VBQ1hiLFFBQVE7VUFDUitELG1CQUFtQjtVQUNuQnBELFVBQVU7VUFDVnNELGFBQWE7VUFDYi9aLFFBQVE5UixPQUFPZ0gsTUFDZCxxQ0FDQSxvQ0FDRDtVQUNBdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLCtCQUNBLDZCQUNEO1VBQ0FxWCxjQUFjO1FBQ2Y7UUFDQSxXQUFXO1VBQ1ZvSyxXQUFXO1VBQ1hiLFFBQVE7VUFDUitELG1CQUFtQjtVQUNuQnBELFVBQVU7VUFDVnNELGFBQWE7VUFDYi9aLFFBQVE5UixPQUFPZ0gsTUFDZCxtQ0FDQSxrQ0FDRDtVQUNBdU4sU0FBU3ZVLE9BQU9nSCxNQUNmLCtCQUNBLDZCQUNEO1VBQ0FxWCxjQUFjO1FBQ2Y7UUFDQSxvQkFBb0I7VUFDbkJvSyxXQUFXO1VBQ1hiLFFBQVE7VUFDUitELG1CQUFtQjtVQUNuQnBELFVBQVU7VUFDVnpXLFFBQUEsNEJBQUF6SixPQUFvQ3JJLE9BQU9nSCxNQUFNLFVBQVUsVUFBVSxHQUFDLE1BQUE7VUFDdEV1TixTQUFTdlUsT0FBT2dILE1BQU0sZUFBZSxlQUFlO1FBQ3JEOztRQUVBLGFBQWE7VUFDWnloQixXQUFXO1VBQ1hiLFFBQVE7VUFDUlcsVUFBVTtVQUNWcUQsV0FBVztVQUNYQyxhQUFhO1VBQ2J0WCxTQUFTdlUsT0FBT2dILE1BQ2YseUJBQ0EsdUJBQ0Q7UUFDRDtRQUNBLGtCQUFrQjtVQUNqQnloQixXQUFXO1VBQ1hiLFFBQVE7VUFDUlcsVUFBVTtVQUNWcUQsV0FBVztVQUNYQyxhQUFhO1VBQ2J0WCxTQUFTdlUsT0FBT2dILE1BQ2YsMkJBQ0EseUJBQ0Q7UUFDRDtNQUNEO0FBQ0EvRyxjQUFRd1AsTUFBTW1VLHdCQUF3QixNQUFNO0FBQUEsWUFBQXlJLGFBQUExZ0IsMkJBRXhCMUwsUUFBUXVILFFBQVEsdUJBQXVCLENBQUEsR0FBQThrQjtBQUFBLFlBQUE7QUFBMUQsZUFBQUQsV0FBQXhnQixFQUFBLEdBQUEsRUFBQXlnQixTQUFBRCxXQUFBdmdCLEVBQUEsR0FBQUMsUUFBNkQ7QUFBQSxrQkFBbER6RCxPQUFBZ2tCLE9BQUFyZ0I7QUFDVixrQkFBTXNnQixTQUFBLEdBQUFsa0IsT0FBWUMsS0FBSzJELE9BQUssR0FBQSxFQUFBNUQsT0FBSUMsS0FBS2dHLEtBQUs7QUFDMUNyTyxvQkFBUXdQLE1BQU1nWSxpQkFBaUI4RSxNQUFNLElBQUk7Y0FDeEM5RCxXQUFXO2NBQ1hGLFVBQVU7Y0FDVixHQUFHdG9CLFFBQVF3UCxNQUFNZ1ksaUJBQWlCbmYsS0FBSzJELEtBQUs7Y0FDNUM2RixRQUFReEosS0FBS2dHO2NBQ2IrUCxjQUFjL1YsS0FBSzJEO1lBQ3BCO0FBQ0EsZ0JBQUloTSxRQUFRd1AsTUFBTWdZLGlCQUFpQm5mLEtBQUsyRCxLQUFLLE1BQU0sUUFBVztBQUM3RGhNLHNCQUFRd1AsTUFBTWdZLGlCQUFpQm5mLEtBQUsyRCxLQUFLLElBQUk7Z0JBQzVDMmYsV0FBVztnQkFDWEMsYUFBYTtnQkFDYlcsUUFBUTtjQUNUO1lBQ0Q7VUFDRDtRQUFBLFNBQUF0Z0IsS0FBQTtBQUFBbWdCLHFCQUFBMWlCLEVBQUF1QyxHQUFBO1FBQUEsVUFBQTtBQUFBbWdCLHFCQUFBbGdCLEVBQUE7UUFBQTtBQUVBLGlCQUFBc2dCLE1BQUEsR0FBQUMsbUJBQWlDL1IsT0FBT0MsUUFBUTNhLFFBQVF3UCxNQUFNZ1ksZ0JBQWdCLEdBQUFnRixNQUFBQyxpQkFBQTdyQixRQUFBNHJCLE9BQUc7QUFBakYsZ0JBQVcsQ0FBQ0UsUUFBUUMsUUFBUSxJQUFBRixpQkFBQUQsR0FBQTtBQUMzQkcsbUJBQVNyWSxZQUFUcVksU0FBU3JZLFVBQVlxWSxTQUFTOWE7QUFDOUI4YSxtQkFBU1osTUFBTVksU0FBU1osUUFBUSxTQUFZLFFBQVFZLFNBQVNaO0FBQzdEWSxtQkFBU0MsZUFBVEQsU0FBU0MsYUFBZTNzQixTQUFTZ1QsT0FBT3lVLFdBQVdpRixTQUFTaEYsTUFBTTtBQUNsRSxjQUFJLENBQUMzbkIsUUFBUXdQLE1BQU0rVCxnQkFBZ0JvSixTQUFTQyxZQUFZO0FBQ3ZERCxxQkFBU2hGLFNBQVM7VUFDbkIsT0FBTztBQUNOZ0YscUJBQVNoRixXQUFUZ0YsU0FBU2hGLFNBQVc7VUFDckI7QUFDQTNuQixrQkFBUXdQLE1BQU1nWSxpQkFBaUJrRixNQUFNLElBQUlDO1FBQzFDO01BQ0Q7QUFLQTNzQixjQUFRd1AsTUFBTThYLGNBQWMsQ0FDM0I7UUFDQ2paLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07UUFDbENnSSxNQUFNO1VBQ0w7WUFBQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsWUFBWTtZQUFHaUYsT0FBTztVQUFVO1VBQ3BFO1lBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sZ0JBQWdCLGFBQWE7WUFDakRpRixPQUFPO1VBQ1I7VUFDQTtZQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztZQUFHaUYsT0FBTztZQUFrQjZnQixNQUFNO1VBQUk7VUFDL0U7WUFBQ3hlLE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7WUFBR2lGLE9BQU87VUFBVztVQUNsRTtZQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztZQUFHaUYsT0FBTztVQUFZO1VBQy9EO1lBQUNxQyxPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO1lBQUdpRixPQUFPO1VBQWdCO1VBQ3ZFO1lBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7WUFDbERpRixPQUFPO1VBQ1I7VUFDQTtZQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtZQUFHaUYsT0FBTztVQUFXO1VBQzVEO1lBQUNxQyxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxPQUFPO1lBQUdpRixPQUFPO1VBQVc7VUFDekQ7WUFBQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7WUFBR2lGLE9BQU87WUFBYXNMLFVBQVU7VUFBSTtVQUNwRTtZQUNDakosT0FBT3RPLE9BQU9nSCxNQUFNLHFCQUFxQixtQkFBbUI7WUFDNURpRixPQUFPO1VBQ1I7VUFDQTtZQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtZQUFHaUYsT0FBTztVQUFjOztVQUUvRDtZQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtZQUFHaUYsT0FBTztVQUFVO1VBQy9EO1lBQUNxQyxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7WUFBR2lGLE9BQU87VUFBUztVQUN4RTtZQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsYUFBYTtZQUFHaUYsT0FBTztVQUFTO1VBQ3BFO1lBQUNxQyxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO1lBQUdpRixPQUFPO1VBQWE7VUFDbEU7WUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFDYix3QkFDQSx1QkFDRDtZQUNBaUYsT0FBTztVQUNSO1VBQ0E7WUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFDYixzQkFDQSxxQkFDRDtZQUNBaUYsT0FBTztVQUNSO1VBQ0E7WUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxrQkFBa0IsZ0JBQWdCO1lBQ3REaUYsT0FBTztVQUNSO1FBQUE7TUFFRixHQUNBO1FBQ0N1Z0IsUUFBUTtRQUNSbGUsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsUUFBUTtNQUN4QyxHQUNBO1FBQ0NzSCxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxTQUFTO1FBQ3RDZ0ksTUFBTSxDQUNMO1VBQUNWLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFdBQVc7VUFBR2lGLE9BQU87UUFBVyxHQUNoRTtVQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsV0FBVztVQUFHaUYsT0FBTztRQUFtQixHQUN4RTtVQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsVUFBVTtVQUFHaUYsT0FBTztRQUFnQixHQUNuRTtVQUFDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsVUFBVTtVQUFHaUYsT0FBTztRQUFrQixHQUNyRTtVQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsY0FBYztVQUNoRGlGLE9BQU87UUFDUixDQUFBO01BRUYsR0FDQTtRQUNDcUMsT0FBTztRQUNQVSxNQUFNLENBQ0w7VUFBQ1YsT0FBTztVQUFlckMsT0FBTztVQUFlOGYsYUFBYTtRQUFJLEdBQzlEO1VBQUN6ZCxPQUFPO1VBQWdCckMsT0FBTztVQUFnQjhmLGFBQWE7UUFBSSxHQUNoRTtVQUFDemQsT0FBTztVQUFpQnJDLE9BQU87VUFBaUI4ZixhQUFhO1FBQUksR0FDbEU7VUFDQ3pkLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGVBQWU7VUFDbERpRixPQUFPO1VBQ1A4ZixhQUFhO1FBQ2QsR0FDQTtVQUNDemQsT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsZUFBZTtVQUNsRGlGLE9BQU87VUFDUDBmLG1CQUFtQjtRQUNwQixDQUFBO01BRUYsQ0FBQTtBQUVEMXJCLGNBQVF3UCxNQUFNNlgscUJBQXFCLENBQ2xDO1FBQ0NoWixPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO1FBQzFDZ0ksTUFBTSxDQUNMO1VBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxpQkFBaUIsY0FBYztVQUNuRGlGLE9BQU87VUFDUHNMLFVBQVU7UUFDWCxHQUNBO1VBQ0NqSixPQUFPdE8sT0FBT2dILE1BQU0sa0JBQWtCLGVBQWU7VUFDckRpRixPQUFPO1FBQ1IsQ0FBQTtNQUVGLENBQUE7QUFFRGhNLGNBQVF3UCxNQUFNL0IsU0FBU3FhLHdCQUF3QixDQUFDdEQsT0FBT3NJLGtCQUFrQjtBQUN4RSxlQUFPbnRCLEVBQUUrUyxJQUFJOFIsT0FBUTRDLGdCQUFlO0FBRW5DLGNBQUlBLFdBQVdtRixRQUFRO0FBQ3RCLGdCQUFJTyxlQUFlO0FBQ2xCLGtCQUFJQyxZQUFZcHRCLEVBQUUrUyxJQUFJMVMsUUFBUXVILFFBQVEsdUJBQXVCLEdBQUljLFVBQVM7QUFDekUsb0JBQUlySSxRQUFRd1AsTUFBTWdZLGlCQUFpQm5mLEtBQUsyRCxLQUFLLEVBQUV1Z0IsUUFBUTtBQUN0RCx5QkFBT2xrQixLQUFLMkQ7Z0JBQ2I7Y0FDRCxDQUFDO0FBQ0QrZ0IsMEJBQVk5c0IsU0FBUzhULE1BQU1DLEtBQUsrWSxTQUFTO0FBQ3pDM0YseUJBQVdyWSxPQUFPcFAsRUFBRStTLElBQUlxYSxXQUFZaFMsY0FBYTtBQUNoRCx1QkFBTztrQkFDTjFNLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE1BQU07a0JBQ25DaUYsT0FBTytPO2dCQUNSO2NBQ0QsQ0FBQztZQUNGLE9BQU87QUFDTnFNLHlCQUFXclksT0FBT3BQLEVBQUUrUyxJQUFJMVMsUUFBUXVILFFBQVEsdUJBQXVCLEdBQUljLFVBQVM7QUFDM0UsdUJBQU87a0JBQ05nRyxPQUFPaEcsS0FBS2dHO2tCQUNackMsT0FBQSxHQUFBNUQsT0FBVUMsS0FBSzJELE9BQUssR0FBQSxFQUFBNUQsT0FBSUMsS0FBS2dHLEtBQUs7Z0JBQ25DO2NBQ0QsQ0FBQztZQUNGO1VBQ0Q7QUFDQSxnQkFBTVUsT0FBT3BQLEVBQUUrUyxJQUFJMFUsV0FBV3JZLE1BQU9pZSxpQkFBZ0I7QUFDcEQsZ0JBQUksQ0FBQ0YsaUJBQWlCRSxZQUFZSCxNQUFNO0FBQ3ZDO1lBQ0Q7QUFDQSxvQkFBUUcsWUFBWWhoQixPQUFBO2NBQ25CLEtBQUs7QUFDSixvQkFBSSxDQUFDL0wsU0FBU3VpQixHQUFHQyxRQUFRck0sZ0JBQWdCLEdBQUc7QUFDM0M7Z0JBQ0Q7QUFDQTRXLDRCQUFZMVYsV0FBVyxDQUFDclgsU0FBU3VpQixHQUFHVyxNQUFNL00sZ0JBQWdCO0FBQzFEO2NBQ0Q7QUFDQztZQUNGO0FBQ0Esa0JBQU02VyxnQkFBZ0JqdEIsUUFBUXdQLE1BQU1nWSxpQkFBaUJ3RixZQUFZaGhCLEtBQUs7QUFDdEUsZ0JBQUlraEI7QUFDSixnQkFBSUQsY0FBY3ZCLG1CQUFtQjtBQUNwQ3dCLHFDQUF1Qmx0QixRQUFRd1AsTUFBTStUO1lBQ3RDLFdBQVcwSixjQUFjbkIsYUFBYTtBQUNyQ29CLHFDQUF1QixDQUFDbHRCLFFBQVF3UCxNQUFNK1Q7WUFDdkMsT0FBTztBQUNOMkoscUNBQXVCO1lBQ3hCO0FBQ0EsZ0JBQUksRUFBRUQsY0FBYzdPLGdCQUFnQjBPLGtCQUFrQkksc0JBQXNCO0FBQzNFLG9CQUFNOU8sZUFBZTZPLGNBQWM3TyxnQkFBZ0I0TyxZQUFZaGhCO0FBQy9ELHFCQUFPO2dCQUNOcUMsUUFBUXllLGdCQUFBLEtBQUExa0IsT0FBcUJnVyxjQUFZLE1BQUEsSUFBUyxNQUFNNE8sWUFBWTNlO2dCQUNwRXJDLE9BQU9naEIsWUFBWWhoQjtnQkFDbkJpUCxNQUFNLENBQ0w7a0JBQ0N0YSxNQUFNO2tCQUNOcUwsT0FBT29TO2dCQUNSLENBQUE7Z0JBRUQ5RyxVQUFVLENBQUMsQ0FBQzBWLFlBQVkxVjtnQkFDeEI5SSxVQUFVLENBQUMsQ0FBQ3dlLFlBQVl4ZTtjQUN6QjtZQUNEO1VBQ0QsQ0FBQztBQUNELGNBQUlPLEtBQUtuTyxRQUFRO0FBQ2hCLG1CQUFPO2NBQ055TixPQUFPK1ksV0FBVy9ZO2NBQ2xCVTtZQUNEO1VBQ0Q7UUFDRCxDQUFDO01BQ0Y7QUFDQS9PLGNBQVF3UCxNQUFNL0IsU0FBU29hLGdCQUFpQm5lLE9BQU07QUFDN0MsY0FBTTtVQUFDc0U7UUFBSSxJQUFJdEUsRUFBRTRHO0FBQ2pCLGNBQU13SyxNQUFNOU0sS0FBSzBlLE9BQU8xZ0I7QUFDeEIsWUFBSSxDQUFDOE8sS0FBSztBQUNUO1FBQ0Q7QUFDQTlhLGdCQUFRd1AsTUFBTS9CLFNBQVN5ZCxZQUFZeGhCLEdBQUcxSixRQUFRd1AsTUFBTWdZLGlCQUFpQjFNLEdBQUcsQ0FBQztBQUN6RSxZQUFJOU0sS0FBSytNLFVBQVU7QUFDbEIvTSxlQUFLK00sU0FBUy9PLFFBQVFoTSxRQUFRd1AsTUFBTWdZLGlCQUFpQjFNLEdBQUcsRUFBRXNELGdCQUFnQnREO0FBQzFFOWEsa0JBQVF3UCxNQUFNL0IsU0FBU2tiLGdCQUFnQmpmLENBQUM7UUFDekM7TUFDRDtBQUNBMUosY0FBUXdQLE1BQU0vQixTQUFTc2EsZ0JBQWlCcmUsT0FBTTtBQUM3QyxjQUFNO1VBQUNpZTtRQUFNLElBQUlqZSxFQUFFNEcsT0FBT3RDO0FBQzFCLFlBQUl0RSxFQUFFNEcsT0FBT3RFLFVBQVUsVUFBVTtBQUNoQy9MLG1CQUFTZ08sVUFBVXdWLHFCQUFxQmtFLE9BQU9yZixZQUFZLElBQUk7UUFDaEUsT0FBTztBQUNOckksbUJBQVNnTyxVQUFVd1YscUJBQXFCa0UsT0FBT3JmLFlBQVksS0FBSztBQUNoRXFmLGlCQUFPM2IsUUFBUXRDLEVBQUU0RyxPQUFPdEU7UUFDekI7TUFDRDtBQUNBaE0sY0FBUXdQLE1BQU0yZCxXQUFXLENBQUE7QUFDekJudEIsY0FBUXdQLE1BQU0vQixTQUFTaWIsbUJBQW1CLFdBQVk7QUFDckQsY0FBTTdXLFNBQVMsS0FBSzdELEtBQUs2RCxPQUFPN0YsTUFBTStHLFFBQ3JDLElBQUlrQyxPQUFBLGlCQUFBN00sT0FBd0JwSSxRQUFRd1AsTUFBTTJkLFNBQVN6WixLQUFLLEdBQUcsR0FBQyxRQUFBLENBQVEsR0FDcEUsRUFDRDtBQUNBMVQsZ0JBQVF3UCxNQUFNMmQsV0FBV250QixRQUFRd1AsTUFBTTJkLFNBQVN2RixPQUFRL0IsUUFBTztBQUM5RCxpQkFBT0EsT0FBTyxLQUFLN1o7UUFDcEIsQ0FBQztBQUNELFlBQUksS0FBS2lYLFNBQVM7QUFDakJqakIsa0JBQVF3UCxNQUFNMmQsU0FBU250QixRQUFRd1AsTUFBTTJkLFNBQVN2c0IsTUFBTSxJQUFJLEtBQUtvTDtRQUM5RDtBQUNBLGNBQU1vaEIsaUJBQWlCcHRCLFFBQVF3UCxNQUFNMmQsU0FBU3paLEtBQUssR0FBRztBQUN0RCxZQUFJMVQsUUFBUXdQLE1BQU0yZCxTQUFTdnNCLFFBQVE7QUFDbEMsZUFBS29OLEtBQUs2RCxPQUFPN0YsUUFBQSxHQUFBNUQsT0FBV3lKLFFBQU0sT0FBQSxFQUFBekosT0FBUXJJLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxDQUFDLEVBQUFxQixPQUFHZ2xCLGdCQUFjLE1BQUE7UUFDcEYsT0FBTztBQUNOLGVBQUtwZixLQUFLNkQsT0FBTzdGLFFBQVE2RjtRQUMxQjtNQUNEO0FBRUE3UixjQUFRd1AsTUFBTS9CLFNBQVN5ZCxjQUFjLENBQUN4aEIsR0FBR3VSLFNBQVM7QUFDakQsY0FBTTtVQUFDak47UUFBSSxJQUFJdEUsRUFBRTRHO0FBQ2pCLFlBQUk7VUFBQ3FYO1FBQU0sSUFBSTFNO0FBRWYsWUFBSSxDQUFDQSxLQUFLb1MsbUJBQW1CO0FBQzVCLGNBQUl6VSxLQUFLMFUsTUFBTTNGLE1BQU0sR0FBRztBQUN2QkEscUJBQVMsSUFBSS9PLEtBQUsrTyxNQUFNLEVBQUU0RixZQUFZO0FBQ3RDdmYsaUJBQUt3ZixjQUFjeGhCLFFBQVE7VUFDNUIsT0FBTztBQUNOZ0MsaUJBQUt3ZixjQUFjeGhCLFFBQVFpUCxLQUFLME0sVUFBVTtVQUMzQztBQUNBM1osZUFBSzJaLE9BQU8zYixRQUFRMmI7QUFDcEIsY0FBSTNaLEtBQUt3ZixjQUFjeGhCLFVBQVUsVUFBVTtBQUMxQy9MLHFCQUFTZ08sVUFBVXdWLHFCQUFxQnpWLEtBQUsyWixPQUFPcmYsWUFBWSxJQUFJO1VBQ3JFLE9BQU87QUFDTnJJLHFCQUFTZ08sVUFBVXdWLHFCQUFxQnpWLEtBQUsyWixPQUFPcmYsWUFBWSxLQUFLO1VBQ3RFO1FBQ0Q7QUFFQTJTLGFBQUt3SixjQUFjeEosS0FBS3dKLGdCQUFnQixTQUFZLFFBQVF4SixLQUFLd0o7QUFDakV4SixhQUFLMEosWUFBWTFKLEtBQUswSixjQUFjLFNBQVksUUFBUTFKLEtBQUswSjtBQUU3RCxZQUFJM2tCLFFBQVF3UCxNQUFNOFUsYUFBYSxTQUFTbmMsS0FBS2lPLGdCQUFnQixHQUFHO0FBQy9ENkUsZUFBS3VOLFlBQVk7UUFDbEI7QUFDQTdvQixVQUFFcU8sSUFBSSxFQUNKMUcsS0FBSyw0QkFBNEIsRUFDakNBLEtBQUssV0FBVyxFQUNoQm1tQixLQUFLLENBQUNDLElBQUk3SCxPQUFPO0FBRWpCLGNBQUk1SyxLQUFLb1MscUJBQXFCcFMsS0FBSzRLLEdBQUdsbEIsSUFBSSxNQUFNLFFBQVc7QUFDMUQ7VUFDRDtBQUNBLGNBQUlrbEIsR0FBR2xsQixTQUFTLFlBQVk7QUFDM0I7VUFDRDtBQUNBLGdCQUFNZ3RCLFFBQVExUyxLQUFLNEssR0FBR2xsQixJQUFJLE1BQU0sTUFBTSxDQUFDLENBQUNzYSxLQUFLNEssR0FBR2xsQixJQUFJO0FBQ3BEaEIsWUFBRWttQixFQUFFLEVBQUUvTixLQUFLLFdBQVc2VixLQUFLO1FBQzVCLENBQUM7QUFDRixZQUFJMVMsS0FBSzJTLGlCQUFpQjNTLEtBQUtwSixRQUFRO0FBQ3RDN0QsZUFBSzZELE9BQU83RixRQUFBLEdBQUE1RCxPQUFXNlMsS0FBS3BKLFFBQU0sR0FBQSxFQUFBekosT0FBSTRGLEtBQUs2RCxPQUFPN0YsS0FBSztRQUN4RCxPQUFPO0FBQ05nQyxlQUFLNkQsT0FBTzdGLFFBQVFpUCxLQUFLcEosVUFBVTtRQUNwQztBQUVBLFlBQUk3RCxLQUFLNmYsa0JBQWtCO0FBQzFCLGdCQUFNQyxjQUFjbnVCLEVBQUVxTyxJQUFJLEVBQUUxRyxLQUFLLHlCQUF5QjtBQUMxRCxnQkFBTXltQixtQkFBbUJwdUIsRUFBRXFPLElBQUksRUFBRTFHLEtBQUssOEJBQThCO0FBR3BFLGNBQUksQ0FBQzJULEtBQUtvUyxtQkFBbUI7QUFDNUJTLHdCQUFZaGhCLElBQUksSUFBSSxFQUFFaVIsUUFBUSxRQUFRO0FBQ3RDZ1EsNkJBQWlCamhCLElBQUksSUFBSSxFQUFFaVIsUUFBUSxRQUFRO1VBQzVDO0FBRUEsY0FBSTlDLEtBQUsrUyxjQUFjO0FBQ3RCLGdCQUFJL1MsS0FBSytTLGFBQWF2YixTQUFTLENBQUNxYixZQUFZaGhCLElBQUksRUFBRWxNLFFBQVE7QUFDekQsb0JBQU02UixRQUFRd0ksS0FBSytTLGFBQWF2YixNQUFNQyxJQUFLdWIsUUFBTztBQUNqRCx1QkFBT0EsR0FBR3hoQjtjQUNYLENBQUM7QUFBQSxrQkFBQXloQixhQUFBeGlCLDJCQUdrQitHLEtBQUEsR0FBQTBiO0FBQUEsa0JBQUE7QUFBbkIscUJBQUFELFdBQUF0aUIsRUFBQSxHQUFBLEVBQUF1aUIsU0FBQUQsV0FBQXJpQixFQUFBLEdBQUFDLFFBQTBCO0FBQUEsd0JBQWYwRyxPQUFBMmIsT0FBQW5pQjtBQUNWLHNCQUFJLENBQUM4aEIsWUFBWXhtQixLQUFBLGlCQUFBYyxPQUFzQnpJLEVBQUV5dUIsZUFBZTViLElBQUksR0FBQyxJQUFBLENBQUksRUFBRTVSLFFBQVE7QUFDMUUsMEJBQU15dEIsWUFBWSxJQUFJQyxPQUFPOWIsTUFBTUEsTUFBTSxNQUFNLElBQUk7QUFDbkRzYixnQ0FBWTFmLE9BQU9pZ0IsU0FBUztrQkFDN0I7Z0JBQ0Q7Y0FBQSxTQUFBcGlCLEtBQUE7QUFBQWlpQiwyQkFBQXhrQixFQUFBdUMsR0FBQTtjQUFBLFVBQUE7QUFBQWlpQiwyQkFBQWhpQixFQUFBO2NBQUE7QUFDQTRoQiwwQkFBWWhoQixJQUFJLENBQUMsR0FBR2doQixZQUFZaGhCLElBQUksR0FBRyxJQUFBLEdBQUdrVixtQkFBQXVNLGVBQWM5YixLQUFLLENBQUMsQ0FBQyxFQUFFc0wsUUFBUSxRQUFRO1lBQ2xGO0FBQ0EsZ0JBQUk5QyxLQUFLK1MsYUFBYVEsWUFBWTtBQUNqQ1QsK0JBQ0VqaEIsSUFBSSxDQUFDLEdBQUdpaEIsaUJBQWlCamhCLElBQUksR0FBRyxJQUFBLEdBQUdrVixtQkFBQXVNLGVBQWN0VCxLQUFLK1MsYUFBYVEsVUFBVSxDQUFDLENBQUMsRUFDL0V6USxRQUFRLFFBQVE7WUFDbkI7VUFDRDtRQUNEO01BQ0Q7QUFDQS9kLGNBQVF3UCxNQUFNL0IsU0FBU2tiLGtCQUFtQmpmLE9BQU07QUFDL0MsY0FBTTtVQUFDc0U7UUFBSSxJQUFJdEUsRUFBRTRHO0FBQ2pCLGNBQU07VUFBQ3RFO1FBQUssSUFBSWdDLEtBQUsrTTtBQUNyQixjQUFNNFIsV0FBVzNzQixRQUFRd1AsTUFBTWdZLGlCQUFpQnhiLEtBQUs7QUFDckQsY0FBTTBhLFdBQVcvbUIsRUFBRXFPLElBQUksRUFBRTFHLEtBQUssZ0NBQWdDLEVBQUUwZSxHQUFHLFVBQVU7QUFDN0UsY0FBTWlCLGFBQWF0bkIsRUFBRXFPLElBQUksRUFBRTFHLEtBQUssa0NBQWtDLEVBQUUwZSxHQUFHLFVBQVU7QUFDakYsY0FBTVksY0FBY2puQixFQUFFcU8sSUFBSSxFQUFFMUcsS0FBSyxtQ0FBbUMsRUFBRTBlLEdBQUcsVUFBVTtBQUVuRixZQUFJLENBQUNVLFVBQVU7QUFDZCxjQUFJaUcsU0FBU0MsY0FBY0QsU0FBU2QsYUFBYTtBQUNoRCxnQkFBSTdyQixRQUFRd1AsTUFBTWlmLHlCQUF5QixNQUFNO0FBQ2hEenVCLHNCQUFRd1AsTUFBTWlmLHVCQUF1QnpnQixLQUFLZ2EsZ0JBQWdCaGMsU0FBUztZQUNwRTtBQUNBZ0MsaUJBQUtnYSxnQkFBZ0IxZixXQUFXbUcsTUFBTUksVUFBVTtBQUNoRGIsaUJBQUtnYSxnQkFBZ0JoYyxRQUFRO1VBQzlCLFdBQVdnQyxLQUFLZ2EsZ0JBQWdCMWYsV0FBV21HLE1BQU1JLFlBQVksUUFBUTtBQUNwRSxnQkFBSTdPLFFBQVF3UCxNQUFNaWYseUJBQXlCLE1BQU07QUFDaER6Z0IsbUJBQUtnYSxnQkFBZ0JoYyxRQUFRaE0sUUFBUXdQLE1BQU1pZjtBQUMzQ3p1QixzQkFBUXdQLE1BQU1pZix1QkFBdUI7WUFDdEM7QUFDQXpnQixpQkFBS2dhLGdCQUFnQjFmLFdBQVdtRyxNQUFNSSxVQUFVO1VBQ2pEO0FBQ0EsY0FBSTdPLFFBQVF3UCxNQUFNaWYsc0JBQXNCO0FBQ3ZDemdCLGlCQUFLMlosT0FBTzNiLFFBQVFoTSxRQUFRd1AsTUFBTWlmO1VBQ25DO0FBQ0F4dUIsbUJBQVNnTyxVQUFVd1YscUJBQXFCelYsS0FBSzhhLE9BQU94Z0IsWUFBWSxDQUFDcWtCLFNBQVNkLFdBQVc7QUFFckY1ckIsbUJBQVNnTyxVQUFVd1YscUJBQXFCelYsS0FBSythLGlCQUFpQnpnQixZQUFZMmUsVUFBVTtBQUNwRmhuQixtQkFBU2dPLFVBQVV3VixxQkFBcUJ6VixLQUFLZ2Isa0JBQWtCMWdCLFlBQVkyZSxVQUFVO1FBQ3RGLFdBQVdMLGFBQWE7QUFFdkIzbUIsbUJBQVNnTyxVQUFVd1YscUJBQ2xCelYsS0FBSzZhLGVBQWV2Z0IsWUFDcEIsQ0FBQ3FrQixTQUFTQyxjQUFjLENBQUNELFNBQVNkLFdBQ25DO1FBQ0Q7QUFFQTVyQixpQkFBU2dPLFVBQVV3VixxQkFBcUJ6VixLQUFLdU8sUUFBUWpVLFlBQVlxa0IsWUFBWSxDQUFDLENBQUNBLFNBQVNoQixTQUFTO0FBQ2pHMXJCLGlCQUFTZ08sVUFBVXdWLHFCQUFxQnpWLEtBQUs0YSxhQUFhdGdCLFlBQVlxa0IsWUFBWSxDQUFDLENBQUNBLFNBQVNmLFdBQVc7QUFFeEcsWUFBSWUsU0FBU2YsYUFBYTtBQUN6QjVkLGVBQUs0YSxhQUFhNWMsUUFBUWhNLFFBQVF3UCxNQUFNZ1ksaUJBQWlCeFosS0FBSzBlLE9BQU8xZ0IsS0FBSyxFQUFFNkYsVUFBVTtRQUN2RixPQUFPO0FBQ043RCxlQUFLNGEsYUFBYTVjLFFBQVE7UUFDM0I7QUFFQS9MLGlCQUFTZ08sVUFBVXdWLHFCQUFxQnpWLEtBQUswZ0IsS0FBS3BtQixZQUFZMmUsY0FBYyxDQUFDUCxRQUFRO0FBQ3JGMVksYUFBS2hHLEtBQUs0SixVQUFVbUwsYUFBYTtNQUNsQztBQUNBL2MsY0FBUXdQLE1BQU1pZix1QkFBdUI7QUFDckN6dUIsY0FBUXdQLE1BQU0vQixTQUFTdUQsVUFBV2hELFVBQVM7QUFDMUMsY0FBTXNPLFNBQVM7VUFDZEMsU0FBU3ZPLEtBQUt1TyxRQUFRdlE7VUFDdEI2YyxnQkFBZ0I3YSxLQUFLNmEsaUJBQWlCN2EsS0FBSzZhLGVBQWU1RixVQUFVO1VBQ3BFd0IsYUFBYXpXLEtBQUt5VyxZQUFZeEIsWUFBWWpWLEtBQUs4YSxTQUFTOWEsS0FBSzhhLE9BQU83RixVQUFVO1VBQzlFMEUsUUFBUTNaLEtBQUtnYSxrQkFBa0JoYSxLQUFLZ2EsZ0JBQWdCaGMsUUFBUWdDLEtBQUsyWixPQUFPM2I7VUFDeEUyWSxXQUFXM2tCLFFBQVF3UCxNQUFNK1QsZUFBZXZWLEtBQUt3YSxVQUFVdkYsVUFBVWpWLEtBQUsyVyxVQUFVMUI7VUFDaEYySixZQUFZM3NCLFNBQVNnVCxPQUFPeVUsV0FDM0IxWixLQUFLZ2Esa0JBQWtCaGEsS0FBS2dhLGdCQUFnQmhjLFFBQVFnQyxLQUFLMlosT0FBTzNiLEtBQ2pFO1VBQ0E2RixRQUFRN0QsS0FBSzRhLGFBQWE1YztVQUMxQitPLFVBQVUvTSxLQUFLK00sU0FBUy9PO1VBQ3hCMEQsU0FBUy9QLEVBQUVxTyxJQUFJLEVBQUUxRyxLQUFLLGtDQUFrQyxFQUFFMGUsR0FBRyxVQUFVO1VBQ3ZFNkgsa0JBQWtCbHVCLEVBQUVxTyxLQUFLNmYsZ0JBQWdCLEVBQUUvZ0IsSUFBSSxLQUFLLENBQUE7VUFDcEQ2aEIsdUJBQXVCaHZCLEVBQUVxTyxLQUFLMmdCLHFCQUFxQixFQUFFN2hCLElBQUksS0FBSyxDQUFBO1VBQzlEeWIsU0FBU3ZhLEtBQUt1YSxRQUFRdEYsWUFBWWpWLEtBQUsrYSxtQkFBbUIvYSxLQUFLK2EsaUJBQWlCOUYsVUFBVTtVQUMxRnFGLFVBQVV0YSxLQUFLc2EsU0FBU3JGLFlBQVlqVixLQUFLZ2Isb0JBQW9CaGIsS0FBS2diLGtCQUFrQi9GLFVBQVU7VUFDOUZ5TCxNQUFNMWdCLEtBQUswZ0IsS0FBSzFpQjtRQUNqQjtBQUNBLGNBQU00aUIsZUFBZTV1QixRQUFRd1AsTUFBTS9CLFNBQVNvaEIsdUJBQXVCdlMsTUFBTTtBQUN6RXRPLGFBQUs0RCxVQUFVSyxZQUFZMmMsY0FBQSxhQUFBeG1CLE9BQTJCZ08sa0JBQWdCLFdBQUEsQ0FBVztNQUNsRjtBQUNBcFcsY0FBUXdQLE1BQU0vQixTQUFTUyxXQUFZeEUsT0FBTTtBQUFBLFlBQUFvbEI7QUFDeEMsY0FBTXhTLFNBQVNyYyxTQUFTZ08sVUFBVStELGFBQWF0SSxFQUFFNEcsTUFBTTtBQUN2RCxjQUFNa1QsUUFBUTdqQixFQUFFK0osRUFBRTRHLE1BQU07QUFDeEIsY0FBTXllLFVBQVV2TCxNQUFNbGMsS0FBSyxnQ0FBZ0MsRUFBRTBlLEdBQUcsVUFBVTtBQUMxRSxjQUFNZ0osU0FBU3hMLE1BQU1sYyxLQUFLLG1DQUFtQyxFQUFFMGUsR0FBRyxVQUFVO0FBQzVFLGNBQU1pSixZQUFZekwsTUFBTWxjLEtBQUssa0NBQWtDLEVBQUUwZSxHQUFHLFVBQVU7QUFDOUUsY0FBTWtKLFFBQVExTCxNQUFNbGMsS0FBSyw4QkFBOEIsRUFBRTBlLEdBQUcsVUFBVTtBQUN0RSxjQUFNbUosWUFBWTNMLE1BQU1sYyxLQUFLLGtDQUFrQyxFQUFFMGUsR0FBRyxVQUFVO0FBQzlFLGNBQU1vSixZQUFZNUwsTUFBTWxjLEtBQUssa0NBQWtDLEVBQUUwZSxHQUFHLFVBQVU7QUFDOUUsWUFBSXFDLGVBQWUsQ0FBQztBQUNwQixZQUFJZ0gsa0JBQWtCLENBQUM7QUFDdkIsWUFBSUMsaUJBQWlCLENBQUM7QUFDdEJ0dkIsZ0JBQVF3UCxNQUFNL0IsU0FBUytYLGFBQWFoQyxNQUFNbGMsS0FBSyw0QkFBNEIsQ0FBQztBQUM1RXRILGdCQUFRd1AsTUFBTS9CLFNBQVMrWCxhQUFhaEMsTUFBTWxjLEtBQUssK0JBQStCLENBQUM7QUFDL0V0SCxnQkFBUXdQLE1BQU0vQixTQUFTK1gsYUFBYWhDLE1BQU1sYyxLQUFLLDBCQUEwQixDQUFDO0FBQzFFdEgsZ0JBQVF3UCxNQUFNL0IsU0FBUytYLGFBQWFoQyxNQUFNbGMsS0FBSyw4QkFBOEIsQ0FBQztBQUM5RStnQix1QkFBZXJvQixRQUFRd1AsTUFBTW9UO0FBQzdCME0seUJBQWlCdHZCLFFBQVF3UCxNQUFNZ1g7QUFDL0IsY0FBTStJLGFBQWEsQ0FBQyxDQUFDbEgsYUFBYW1IO0FBQ2xDSCwwQkFBa0JydkIsUUFBUXdQLE1BQU1xVDtBQUNoQ3dNLHdCQUFnQjVLLGNBQWMsQ0FBQyxFQUFFNEssZ0JBQWdCNUssZUFBZTRELGFBQWE1RDtBQUM3RTRLLHdCQUFnQjFLLFlBQVksQ0FBQyxDQUFDMEQsYUFBYTFEO0FBRTNDLGVBQU8wRCxhQUFhbUY7QUFDcEIsZUFBT25GLGFBQWFtSDtBQUVwQixZQUFJUCxXQUFXO0FBQ2Q1Ryx1QkFBYTNZLFVBQVU7QUFDdkIyZiwwQkFBZ0IzZixVQUFVO1FBQzNCO0FBQ0EyZix3QkFBZ0J4QixtQkFBbUJySyxNQUFNbGMsS0FBSyx5QkFBeUIsRUFBRXdGLElBQUksS0FBSyxDQUFBO0FBQ2xGdWlCLHdCQUFnQlYsd0JBQXdCbkwsTUFBTWxjLEtBQUssOEJBQThCLEVBQUV3RixJQUFJLEtBQUssQ0FBQTtBQUU1RnViLHFCQUFhd0YsbUJBQW1Cd0IsZ0JBQWdCeEIsaUJBQWlCbmEsS0FBSyxHQUFHO0FBQ3pFMlUscUJBQWFzRyx3QkFBd0JVLGdCQUFnQlYsc0JBQXNCamIsS0FBSyxHQUFHO0FBRW5GLFNBQUFvYixtQkFBQU8saUJBQWdCL2EsWUFBaEJ3YSxpQkFBZ0J4YSxVQUFZK1QsYUFBYXhXO0FBQ3pDd2Qsd0JBQWdCMUgsU0FBUzBILGdCQUFnQnJILG1CQUFtQkssYUFBYVY7QUFDekUwSCx3QkFBZ0IzQyxTQUFTcUMsVUFBVXpTLE9BQU9vUSxTQUFTO0FBR25ELGNBQU0rQyxvQkFBb0JBLENBQUNDLFdBQVdDLFVBQVU7QUFDL0MsZ0JBQU1DLFFBQVFGLFVBQVVHLE9BQU8sQ0FBQ0MsS0FBSy9rQixRQUFRO0FBQzVDLG1CQUFRK2tCLE9BQU94VCxPQUFPdlIsSUFBSTVCLFNBQVM0QixHQUFHO1VBQ3ZDLEdBQUcsQ0FBQztBQUNKLGNBQUk2a0IsUUFBUSxHQUFHO0FBQ2QsZ0JBQUluZ0IsVUFBQSxHQUFBckgsT0FBYXJJLE9BQU9nSCxNQUFNLGVBQWUsYUFBYSxHQUFDLEtBQUEsRUFBQXFCLE9BQU1zbkIsVUFBVWhjLEtBQzFFLE9BQ0QsR0FBQyxLQUFBO0FBQ0RqRSx1QkFBV2tnQixTQUFTO0FBQ3BCLGlCQUFLcHFCLEdBQUd1RixPQUFPMkUsU0FBUztjQUN2QjNILE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUFDO0FBQ0QsbUJBQU87VUFDUjtRQUNEO0FBQ0EsWUFBSW1rQixPQUFPO0FBQ1YsY0FBSTVTLE9BQU92UixJQUFJbkssV0FBVyxHQUFHO0FBQzVCLGlCQUFLMkUsR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxpQkFBaUIsaUJBQWlCLEdBQUc7Y0FDaEVlLE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUFDO0FBQ0Q7VUFDRDtBQUNBLGNBQ0Mwa0Isa0JBQ0MsQ0FBQyxnQkFBZ0IsWUFBWSxHQUM3QjF2QixPQUFPZ0gsTUFDTix5Q0FDQSx1Q0FDRCxDQUNELEdBQ0M7QUFDRDtVQUNEO0FBQ0EsY0FDQzBvQixrQkFDQyxDQUFDLGdCQUFnQixlQUFlLEdBQ2hDMXZCLE9BQU9nSCxNQUNOLDRDQUNBLDBDQUNELENBQ0QsR0FDQztBQUNEO1VBQ0Q7QUFDQSxjQUNDMG9CLGtCQUNDLENBQUMsY0FBYyxlQUFlLEdBQzlCMXZCLE9BQU9nSCxNQUFNLG9CQUFvQixrQkFBa0IsQ0FDcEQsR0FDQztBQUNEO1VBQ0Q7QUFDQSxjQUFJdVYsT0FBT3ZSLElBQUk1QixTQUFTLFlBQVksS0FBS21ULE9BQU95VCxZQUFZL2MsS0FBSyxNQUFNLElBQUk7QUFDMUUsaUJBQUt6TixHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLG1CQUFtQixtQkFBbUIsR0FBRztjQUNwRWUsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRDtVQUNEO1FBQ0Q7QUFDQSxZQUFJZ2tCLFNBQVM7QUFDWixjQUFJMUcsYUFBYTNZLFNBQVM7QUFDekIsZ0JBQUkyWSxhQUFhNUQsZUFBZSxDQUFDNEQsYUFBYXNHLHNCQUFzQnhsQixTQUFTLEdBQUcsR0FBRztBQUNsRixtQkFBSzVELEdBQUd1RixPQUNQL0ssT0FBT2dILE1BQ04seUNBQ0EsdUNBQ0QsR0FDQTtnQkFDQ2UsTUFBTTtnQkFDTmlELEtBQUs7Y0FDTixDQUNEO0FBQ0E7WUFDRDtBQUNBLGdCQUFJLENBQUNzZCxhQUFhc0cseUJBQXlCLENBQUN0RyxhQUFhd0Ysa0JBQWtCO0FBQzFFLGtCQUFJLENBQUN4RixhQUFhRSxXQUFXLENBQUNGLGFBQWFDLFVBQVU7QUFFcEQscUJBQUsvaUIsR0FBR3VGLE9BQ1AvSyxPQUFPZ0gsTUFDTixrREFDQSxnREFDRCxHQUNBO2tCQUNDZSxNQUFNO2tCQUNOaUQsS0FBSztnQkFDTixDQUNEO0FBQ0E7Y0FDRCxXQUNDLENBQUMwSSxRQUNBMVQsT0FBT2dILE1BQ04sb0NBQ0Esa0NBQ0QsQ0FDRCxHQUNDO0FBQ0Q7Y0FDRDtZQUNEO1VBQ0Q7QUFDQSxjQUFJLENBQUNzaEIsYUFBYVYsUUFBUTtBQUN6QixpQkFBS3BpQixHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxHQUFHO2NBQ3BEZSxNQUFNO2NBQ05pRCxLQUFLO1lBQ04sQ0FBQztBQUNEO1VBQ0QsV0FBVzlLLFNBQVNnVCxPQUFPeVUsV0FBV1csYUFBYVYsTUFBTSxLQUFLLENBQUMzbkIsUUFBUXdQLE1BQU0rVCxjQUFjO0FBQzFGLGlCQUFLaGUsR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYyxHQUFHO2NBQzVEZSxNQUFNO2NBQ05pRCxLQUFLO1lBQ04sQ0FBQztBQUNEO1VBQ0Q7QUFDQSxjQUFJLENBQUNzZCxhQUFheFcsUUFBUTtBQUN6QixpQkFBS3RNLEdBQUd1RixPQUFPL0ssT0FBT2dILE1BQU0sWUFBWSxVQUFVLEdBQUc7Y0FDcERlLE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUFDO0FBQ0Q7VUFDRDtBQUNBOUssbUJBQVMyTixhQUFhMkcsa0JBQWtCLEtBQUs7QUFDN0N0VSxtQkFBU3VVLE9BQU9DLEtBQUsvSyxFQUFFNEcsTUFBTTtBQUM3QixnQkFBTTBmLGdCQUFnQixJQUFJL3ZCLFNBQVN1VSxPQUFPelUsT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQUM7QUFDdEVzaEIsdUJBQWE3ZCxTQUFTO0FBQ3RCNmQsdUJBQWFqRSxPQUFPaE87QUFFcEJpUyx1QkFBYXpELFdBQVd5RCxhQUFhMUQsWUFBWSxTQUFZO0FBQzdEMEQsdUJBQWEzRCxnQkFBZ0IyRCxhQUFhNUQsY0FBYyxTQUFZO0FBeUJwRSxnQkFBTTNWLFFBQVE7WUFDYkcsUUFBUTtZQUNSekUsUUFBUTtZQUNSdUUsTUFBTTtZQUNObVcsUUFBUTtZQUNSQyxTQUFTO1lBQ1RDLFNBQUEsUUFBQWhkLE9BQWlCaWdCLGFBQWFqRSxJQUFJO1VBQ25DO0FBRUEsY0FBSTdlLEdBQUcwRSxLQUFLdUQsWUFBWTZhLGFBQWFqRSxNQUFNLElBQUksR0FBRztBQUNqRHRWLGtCQUFNSSxPQUFPbVosYUFBYWpFO1VBQzNCLE9BQU87QUFDTnRWLGtCQUFNSyxVQUFVa1osYUFBYWpFO0FBQzdCdFYsa0JBQU1DLFFBQVE7QUFDZEQsa0JBQU13VyxTQUFTO0FBQ2Z4VyxrQkFBTXVXLFVBQVVnRCxhQUFhakU7QUFDN0J0VixrQkFBTStkLE9BQU87QUFDYi9kLGtCQUFNaEgsT0FBTztVQUNkO0FBQ0EsZUFBS3lELElBQUk5RixJQUFJcUosS0FBSyxFQUFFeVcsS0FBTXRLLFVBQVM7QUFDbEMsZ0JBQUksQ0FBQ3pMLEtBQUssSUFBSXlMLEtBQUtuTSxNQUFNUztBQU96QixnQkFBSTBMLEtBQUtuTSxNQUFNUyxPQUFPM08sU0FBUyxLQUFLNE8sTUFBTTRVLFNBQVNoTyxrQkFBa0I7QUFDcEUsZUFBQSxFQUFHNUcsS0FBSyxJQUFJeUwsS0FBS25NLE1BQU1TO1lBQ3hCO0FBQ0Esa0JBQU0sQ0FBQ3VWLFNBQVMsSUFBSTdKLEtBQUtuTSxNQUFNZ1c7QUFDL0Isa0JBQU1WLE9BQU9uSixLQUFLbk0sTUFBTXFWLFFBQVFsSixLQUFLbk0sTUFBTXFWLE1BQU0sQ0FBQyxJQUFJO0FBQ3RELGtCQUFNYyxRQUFRaEssS0FBS25NLE1BQU1nVyxVQUFVbGtCLFNBQVNra0IsVUFBVUcsUUFBUTtBQUM5RCxnQkFBSUEsVUFBVWpsQixRQUFRd1AsTUFBTXdWLGNBQWMsQ0FBQyxDQUFDeFYsVUFBVSxDQUFDLENBQUN4UCxRQUFRd1AsTUFBTW1ULGtCQUFrQjtBQUN2RixrQkFBSWxULFVBQVU0WSxhQUFhakUsT0FBT3JrQixPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7QUFDekUsa0JBQUl5SSxPQUFPO0FBQ1ZDLDJCQUFXMVAsT0FBT2dILE1BQU0sUUFBUSxNQUFNO2NBQ3ZDLE9BQU87QUFDTjBJLDJCQUFXMVAsT0FBT2dILE1BQU0sU0FBUyxPQUFPO2NBQ3pDO0FBQ0Esa0JBQUlrcEIsWUFBWTtBQUNoQixrQkFBSW5MLFVBQVV4SSxPQUFPbVAsVUFBVTtBQUM5QixvQkFBSTNHLFVBQVV4SSxPQUFPbVAsYUFBYSxZQUFZO0FBQzdDd0UsOEJBQVlsd0IsT0FBT2dILE1BQU0sT0FBTyxLQUFLO2dCQUN0QyxPQUFPO0FBQ04sd0JBQU1tcEIsYUFBYSxJQUFJandCLFNBQVN1WSxLQUFLc00sVUFBVXhJLE9BQU9xTCxNQUFNO0FBQzVEc0ksZ0NBQ0VDLFdBQVd2WCxTQUFTLG9CQUFJQyxLQUFLLENBQUMsSUFBSTdZLE9BQU9nSCxNQUFNLE9BQU8sS0FBSyxJQUFJLFFBQ2hFbXBCLFdBQVdsRixTQUFTO2dCQUN0QjtjQUNELE9BQU87QUFFTmlGLDRCQUFBLElBQUE3bkIsT0FBZ0IsSUFBSW5JLFNBQVN1WSxLQUFLc00sVUFBVXlHLFNBQVMsRUFBRVAsU0FBUyxDQUFDO2NBQ2xFO0FBQ0F2Yix5QkFBQSxJQUFBckgsT0FBZTBjLFVBQVVWLElBQUksRUFBQWhjLE9BQUdySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQyxFQUFBcUIsT0FBRzBjLFVBQVU1UyxPQUFPLEVBQUE5SixPQUFHckksT0FBT2dILE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBQXFCLE9BQ3BHaWEsZ0JBQWdCeUMsVUFBVXRhLE1BQU0sQ0FDakMsRUFBQXBDLE9BQUc2bkIsU0FBUyxFQUFBN25CLE9BQUdySSxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCLENBQUM7QUFDakUsa0JBQUksQ0FBQzBNLFFBQVFoRSxPQUFPLEdBQUc7QUFDdEJ4UCx5QkFBU3VVLE9BQU95TSxLQUNmbGhCLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUMzQmhILE9BQU9nSCxNQUFNLFVBQVUsU0FBUyxDQUNqQztBQUNBO2NBQ0Q7QUFDQXNoQiwyQkFBYS9GLFVBQVU7WUFDeEI7QUFDQSxrQkFBTTZOLHFCQUFxQixDQUMxQixnQkFDQSxhQUNBLHFCQUNBLHNCQUNBLGFBQ0Esa0JBQ0EsV0FBQTtBQUVELGdCQUFJQyxvQkFBb0IsQ0FBQTtBQUN4QixnQkFBSWhNLFFBQVFua0IsU0FBU2dULE9BQU95VSxXQUFXVyxhQUFhVixNQUFNLEdBQUc7QUFDNUR5SSxrQ0FBb0JoTSxLQUFLaU0sT0FBT3pJLE9BQVFwRCxXQUFVO0FBQ2pELHVCQUFPMkwsbUJBQW1CaG5CLFNBQVNxYixLQUFLO2NBQ3pDLENBQUM7WUFDRjtBQUVBNkQseUJBQWFpSSxPQUFPdHdCLFFBQVFLO0FBQzVCZ29CLHlCQUFha0ksUUFBUWhyQixHQUFHNmUsS0FBS29NLE9BQU8vcUIsSUFBSSxXQUFXO0FBQ25ELGtCQUFNZ3JCLFFBQVEsSUFBSXh3QixTQUFTcUwsS0FBS0MsSUFBSXhMLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFHc2hCLGNBQWMsTUFBTTtBQUNyRjJILDRCQUFjL08sS0FBSyxJQUFJO0FBQ3ZCLGtCQUFJK04sUUFBUTtBQUNYaHZCLHdCQUFRd1AsTUFBTS9CLFNBQVNpakIsZUFBZXJCLGVBQWU7Y0FDdEQ7QUFDQSxrQkFBSUUsWUFBWTtBQUNmLHNCQUFNb0IsVUFBVSxJQUFJMXdCLFNBQVNxTCxLQUFLa0gsS0FDakMsc0JBQ0F6UyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FDNUI7QUFDQTRwQix3QkFBUTdiLGtCQUFrQixJQUFJO0FBQzlCNmIsd0JBQVFqUCxzQkFBc0IyRyxZQUFZO0FBQzFDc0ksd0JBQVExbEIsS0FBS2pMLFFBQVF3UCxNQUFNL0IsU0FBU21qQixZQUFZO2NBQ2pEO0FBQ0Esa0JBQUlSLGtCQUFrQnh2QixTQUFTLEdBQUc7QUFDakMsc0JBQU1pd0IscUJBQXFCLElBQUk1d0IsU0FBU3VVLE9BQU96VSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztBQUMzRSxvQkFDQzBNLFFBQ0MxVCxPQUFPZ0gsTUFBTSxhQUFhLFlBQVksSUFDckNxcEIsa0JBQWtCMWMsS0FBSyxHQUFHLElBQzFCM1QsT0FBT2dILE1BQU0sbUJBQW1CLGlCQUFpQixDQUNuRCxHQUNDO0FBQ0Qsd0JBQU0rcEIsZ0JBQWdCO29CQUNyQnRtQixRQUFRO29CQUNSNFosTUFBTWlFLGFBQWFqRTtvQkFDbkJwSCxRQUFRb1Qsa0JBQWtCMWMsS0FBSyxHQUFHO29CQUNsQzdCLFFBQVE5UixPQUFPZ0gsTUFBTSxhQUFhLFlBQVk7b0JBQzlDd3BCLE9BQU90VixLQUFLbk0sTUFBTTBoQixPQUFPTztvQkFDekJULE1BQU10d0IsUUFBUUs7a0JBQ2Y7QUFDQSx3QkFBTTJ3QixRQUFRLElBQUkvd0IsU0FBU3FMLEtBQUtDLElBQy9CeEwsT0FBT2dILE1BQU0sUUFBUSxNQUFNLEdBQzNCK3BCLGVBQ0EsTUFBTTtBQUNMRCx1Q0FBbUI1UCxLQUFBLE1BQUE3WSxPQUFXZ29CLGtCQUFrQjFjLEtBQUssR0FBRyxDQUFDLENBQUU7a0JBQzVELENBQ0Q7QUFDQXNkLHdCQUFNbmhCLEtBQUs7Z0JBQ1osT0FBTztBQUNOZ2hCLHFDQUFtQnpiLE1BQU1yVixPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsQ0FBQztnQkFDN0Q7Y0FDRDtZQUNELENBQUM7QUFDRDBwQixrQkFBTTVnQixLQUFLO1VBQ1osQ0FBQztRQUNGLFdBQVdtZixRQUFRO0FBQ2xCL3VCLG1CQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUsbUJBQVN1VSxPQUFPQyxLQUFLL0ssRUFBRTRHLE1BQU07QUFDN0J0USxrQkFBUXdQLE1BQU0vQixTQUFTaWpCLGVBQWVyQixlQUFlO1FBQ3REO0FBQ0EsWUFBSUgsU0FBU0MsV0FBVztBQUN2Qmx2QixtQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztBQUM3Q3RVLG1CQUFTdVUsT0FBT0MsS0FBSy9LLEVBQUU0RyxNQUFNO0FBQzdCLGdCQUFNMmdCLFdBQUEsUUFBQTdvQixPQUFtQjdDLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLENBQUM7QUFDNUQsZ0JBQU1nYyxjQUFjLElBQUl4aEIsU0FBU3FMLEtBQUtrSCxLQUNyQ3llLFVBQ0FseEIsT0FBT2dILE1BQU0sWUFBWSxZQUFZLENBQ3RDO0FBQ0EwYSxzQkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4Q21GLHNCQUFZeFcsS0FBS2pMLFFBQVF3UCxNQUFNL0IsU0FBU3lqQixXQUFXO1FBQ3BEO0FBQ0EsWUFBSTlCLFdBQVc7QUFDZCxjQUFJLENBQUNFLGVBQWV6ZCxRQUFRO0FBQzNCLGlCQUFLdE0sR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVksR0FBRztjQUN4RGUsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRDtVQUNEO0FBQ0E5SyxtQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztBQUM3Q3RVLG1CQUFTdVUsT0FBT0MsS0FBSy9LLEVBQUU0RyxNQUFNO0FBQzdCLGdCQUFNNmdCLHVCQUF1QixJQUFJbHhCLFNBQVN1VSxPQUFPelUsT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQUM7QUFDakZ1b0IseUJBQWU5a0IsU0FBUztBQUN4QjhrQix5QkFBZWxMLE9BQU83ZSxHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQjtBQUV4RDZwQix5QkFBZWdCLE9BQU90d0IsUUFBUUs7QUFDOUJpdkIseUJBQWVpQixRQUFRaHJCLEdBQUc2ZSxLQUFLb00sT0FBTy9xQixJQUFJLFdBQVc7QUFDckQsZ0JBQU0yckIsZUFBZSxJQUFJbnhCLFNBQVNxTCxLQUFLQyxJQUN0Q3hMLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxHQUMvQnVvQixnQkFDQSxNQUFNO0FBQ0w2QixpQ0FBcUJsUSxLQUFLLElBQUk7VUFDL0IsQ0FDRDtBQUNBbVEsdUJBQWF2aEIsS0FBSztRQUNuQjtBQUNBLFlBQUksQ0FBQ2tmLFdBQVcsQ0FBQ0MsVUFBVSxDQUFDRSxTQUFTLENBQUNDLGFBQWEsQ0FBQ0MsV0FBVztBQUM5RCxlQUFLN3BCLEdBQUd1RixPQUFPL0ssT0FBT2dILE1BQU0saUJBQWlCLGVBQWUsR0FBRztZQUM5RGUsTUFBTTtZQUNOaUQsS0FBSztVQUNOLENBQUM7UUFDRjtNQUNEO0FBQ0EvSyxjQUFRd1AsTUFBTS9CLFNBQVN5akIsY0FBZXJVLGFBQVk7QUFDakQsY0FBTVAsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QyxjQUFNVixXQUFXckMsUUFBUTFILGlCQUFpQjtBQUMxQyxZQUFJbUgsT0FBT3VILFdBQVcxYSxTQUFTLEtBQUssR0FBRztBQUN0QyxnQkFBTW1uQixPQUFPLENBQUE7QUFBQyxjQUFBZSxjQUFBM2xCLDJCQUNJNFEsT0FBT3ZSLEdBQUEsR0FBQXVtQjtBQUFBLGNBQUE7QUFBekIsaUJBQUFELFlBQUF6bEIsRUFBQSxHQUFBLEVBQUEwbEIsVUFBQUQsWUFBQXhsQixFQUFBLEdBQUFDLFFBQThCO0FBQUEsb0JBQW5CZixNQUFBdW1CLFFBQUF0bEI7QUFDVixrQkFBSXVsQixVQUFBLEtBQUFucEIsT0FBZTJDLEdBQUc7QUFDdEIsc0JBQVFBLEtBQUE7Z0JBQ1AsS0FBSztBQUNKO2dCQUNELEtBQUs7QUFDSndtQiw2QkFBQSxXQUFBbnBCLE9BQXNCa1UsT0FBT3lULFlBQVkvYyxLQUFLLENBQUM7QUFDL0N1ZSw2QkFBQSxXQUFBbnBCLE9BQXNCa1UsT0FBT2tWLFFBQVF4ZSxLQUFLLENBQUM7QUFDM0Msc0JBQUlzSixPQUFPbVYsWUFBWXplLEtBQUssR0FBRztBQUM5QnVlLCtCQUFBLGtCQUFBbnBCLE9BQTZCa1UsT0FBT21WLFlBQVl6ZSxLQUFLLENBQUM7a0JBQ3ZEO0FBQ0F1ZSw2QkFBVztBQUNYQSw2QkFBVztBQUNYQSw2QkFBVztBQUNYO2dCQUNELEtBQUs7QUFDSkEsNkJBQVc7QUFDWEEsNkJBQUEsaUJBQUFucEIsT0FBNEJrVSxPQUFPb1YsYUFBYSxRQUFRLEVBQUU7QUFDMUQsc0JBQUlwVixPQUFPcVYsWUFBWTNlLEtBQUssR0FBRztBQUM5QnVlLCtCQUFBLGtCQUFBbnBCLE9BQTZCa1UsT0FBT3FWLFlBQVkzZSxLQUFLLENBQUM7a0JBQ3ZEO0FBQ0F1ZSw2QkFBVztBQUNYO2dCQUNEO0FBQ0MsdUJBQUtoc0IsR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxhQUFhLGFBQWEsR0FBRztvQkFDeERlLE1BQU07b0JBQ05pRCxLQUFLO2tCQUNOLENBQUM7QUFDRDtjQUNGO0FBQ0F3bUIseUJBQVc7QUFDWGpCLG1CQUFLQSxLQUFLMXZCLE1BQU0sSUFBSTJ3QjtZQUNyQjtVQUFBLFNBQUF0bEIsS0FBQTtBQUFBb2xCLHdCQUFBM25CLEVBQUF1QyxHQUFBO1VBQUEsVUFBQTtBQUFBb2xCLHdCQUFBbmxCLEVBQUE7VUFBQTtBQUNBLGdCQUFNckUsT0FBT3lvQixLQUFLNWMsS0FBSyxJQUFJO0FBQzNCbUosa0JBQVErVSxZQUFZL3BCLElBQUk7QUFDeEJnVixrQkFBUXRILGVBQWV4VixPQUFPZ0gsTUFBTSxlQUFlLGVBQWUsQ0FBQztBQUNuRThWLGtCQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxrQkFBUWdWLEtBQUssTUFBTTtBQUNsQjV4QixxQkFBU3VVLE9BQU95TSxLQUFLbGhCLE9BQU9nSCxNQUFNLFNBQVMsU0FBUyxHQUFHLElBQUk7QUFDM0RtWSxxQkFBUzFLLE9BQU96VSxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQztBQUNoRDhWLG9CQUFRNVIsS0FBS2pMLFFBQVF3UCxNQUFNL0IsU0FBU3FrQixlQUFlO1VBQ3BELENBQUM7UUFDRixPQUFPO0FBQ045eEIsa0JBQVF3UCxNQUFNL0IsU0FBU3FrQixnQkFBZ0JqVixPQUFPO1FBQy9DO01BQ0Q7QUFDQTdjLGNBQVF3UCxNQUFNL0IsU0FBU3FrQixrQkFBbUJqVixhQUFZO0FBQ3JELGNBQU1QLFNBQVNPLFFBQVErQyxzQkFBc0I7QUFDN0MsY0FBTVYsV0FBV3JDLFFBQVExSCxpQkFBaUI7QUFDMUMsWUFBSW1ILE9BQU91SCxXQUFXMWEsU0FBUyxTQUFTLEdBQUc7QUFDMUMsY0FBSTBULFFBQVFrVixPQUFPLEdBQUc7QUFDckJsVixvQkFBUW1WLGtCQUFrQixTQUFTLFlBQVk7QUFDL0NuVixvQkFBUW9WLGtCQUFrQixTQUFTLFlBQVk7VUFDaEQsT0FBTztBQUNOcFYsb0JBQVFxVixvQkFBb0IsU0FBUyxZQUFZO1VBQ2xEO0FBQ0FyVixrQkFBUXRILGVBQWV4VixPQUFPZ0gsTUFBTSxhQUFhLGFBQWEsQ0FBQztBQUMvRDhWLGtCQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxrQkFBUXNWLFFBQVEsTUFBTTtBQUNyQmx5QixxQkFBU3VVLE9BQU95TSxLQUNmbGhCLE9BQU9nSCxNQUFNLFNBQVMsU0FBUyxHQUMvQjhWLFFBQVFrVixPQUFPLElBQUloeUIsT0FBT2dILE1BQU0sUUFBUSxNQUFNLElBQUloSCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FDaEY7QUFDQW1ZLHFCQUFTK0IsS0FBSyxNQUFNO1VBQ3JCLENBQUM7UUFDRixPQUFPO0FBQ04vQixtQkFBUytCLEtBQUssTUFBTTtRQUNyQjtNQUNEO0FBQ0FqaEIsY0FBUXdQLE1BQU0vQixTQUFTaWpCLGlCQUFrQjBCLGNBQWE7QUFHckQsY0FBTS9RLGVBQUEsYUFBQWpaLE9BQTRCN0MsR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0IsQ0FBQztBQUNyRSxjQUFNNlcsU0FBUztVQUNkLEdBQUc4VjtVQUNIelQsYUFBYTNlLFFBQVF3UCxNQUFNZ1ksaUJBQWlCNEssU0FBU3JYLFFBQVE7VUFDN0RzWCxrQkFBa0JyeUIsUUFBUXdQLE1BQU1nWSxpQkFBaUI0SyxTQUFTMUYsVUFBVTBGLFNBQVNyWCxRQUFRLEVBQUV6RztVQUN2RnpDLFFBQVE3UixRQUFRd1AsTUFBTXFULHVCQUF1QitGO1VBQzdDbkUsYUFBYXprQixRQUFRd1AsTUFBTXFULHVCQUF1QmlHO1VBQ2xEUCxTQUFTdm9CLFFBQVF3UCxNQUFNcVQsdUJBQXVCa0c7VUFDOUNULFVBQVV0b0IsUUFBUXdQLE1BQU1xVCx1QkFBdUJtRztRQUNoRDtBQUNBL29CLGlCQUFTcUwsS0FBS29KLGdCQUFnQkMsV0FBVzBNO0FBQ3pDcGhCLGlCQUFTcUwsS0FBS29KLGdCQUFnQkUsU0FBUzdVLE9BQU9nSCxNQUM3QyxtQkFDQSxrQkFDRDtBQUNBLGNBQU0wYSxjQUFjLElBQUl4aEIsU0FBU3FMLEtBQUtrSCxLQUFLNk8sY0FBY3RoQixPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsQ0FBQztBQUM1RjBhLG9CQUFZQyxzQkFBc0JwRixNQUFNO0FBQ3hDbUYsb0JBQVl4VyxLQUFLakwsUUFBUXdQLE1BQU0vQixTQUFTa1MsSUFBSTtNQUM3QztBQUNBM2YsY0FBUXdQLE1BQU0vQixTQUFTbWpCLGVBQWdCRCxhQUFZO0FBQ2xELGNBQU1yVSxTQUFTcVUsUUFBUS9RLHNCQUFzQjtBQUM3QyxZQUFJL1gsT0FBTzhvQixRQUFRNWIsWUFBWTtBQUMvQixjQUFNaWIsZ0JBQWdCVyxRQUFReGIsaUJBQWlCO0FBQy9DLGNBQU1tZCxXQUFXL3NCLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CO0FBQ25ELGNBQU04c0IsYUFBYXR5QixTQUFTZ1QsT0FBT3VZLFdBQVdsUCxPQUFPcUwsTUFBTTtBQUMzRCxjQUFNelYsVUFBQSxhQUFBOUosT0FBdUJuSSxTQUFTZ1QsT0FBT3lVLFdBQVdwTCxPQUFPcUwsTUFBTSxJQUFJLFVBQVU0SyxZQUFVLEtBQUE7QUFDN0YsY0FBTUMsY0FBYzNxQixLQUFLcVksTUFBTSxxQkFBcUI7QUFDcEQsWUFBSXVTLFFBQVE7QUFDWixZQUFJN2UsV0FBVztBQUNmLGNBQU04ZSxRQUFRLElBQUl6ZCxPQUFBLDBDQUFBN00sT0FDeUJuSSxTQUFTMHlCLGNBQ2xETCxRQUNELEdBQUMsb0NBQUEsR0FDRCxHQUNEO0FBQUEsWUFBQU0sY0FBQWxuQiwyQkFDb0I4bUIsV0FBQSxHQUFBSztBQUFBLFlBQUE7QUFBcEIsZUFBQUQsWUFBQWhuQixFQUFBLEdBQUEsRUFBQWluQixVQUFBRCxZQUFBL21CLEVBQUEsR0FBQUMsUUFBaUM7QUFBQSxnQkFBeEJnbkIsVUFBQUQsUUFBQTdtQjtBQUNSLGdCQUFJMG1CLE1BQU0zVCxLQUFLK1QsT0FBTyxHQUFHO0FBQ3hCbGYseUJBQVcseUJBQXlCekwsS0FBSzJxQixPQUFPO0FBQ2hEQSx3QkFBVUEsUUFBUUMsUUFBUTtBQUMxQixrQkFBSUMsVUFBVUYsUUFBUS9mLFFBQ3JCLHFFQUNBLEtBQUEzSyxPQUFLOEosU0FBTyxNQUFBLEVBQU85SixPQUFPLElBQUksQ0FDL0I7QUFDQSxrQkFBSTBxQixZQUFZRSxTQUFTO0FBQ3hCQSwwQkFBVSxHQUFBNXFCLE9BQUcwcUIsU0FBTyxTQUFBLEVBQUExcUIsT0FBVThKLFNBQU8sTUFBQSxFQUFPOUosT0FBTyxJQUFJO2NBQ3hEO0FBQ0EwcUIsd0JBQUEsR0FBQTFxQixPQUFhNHFCLFNBQU8sSUFBQTtBQUNwQlAsc0JBQVE7QUFDUjtZQUNEO1VBQ0Q7UUFBQSxTQUFBeG1CLEtBQUE7QUFBQTJtQixzQkFBQWxwQixFQUFBdUMsR0FBQTtRQUFBLFVBQUE7QUFBQTJtQixzQkFBQTFtQixFQUFBO1FBQUE7QUFDQSxZQUFJLENBQUN1bUIsT0FBTztBQUNYekMsd0JBQWM1dkIsS0FBS0wsT0FBT2dILE1BQU0sYUFBYSxXQUFXLENBQUM7QUFDekQ7UUFDRDtBQUNBYyxlQUFPMnFCLFlBQVk5ZSxLQUFLLEVBQUU7QUFDMUIsWUFBSVk7QUFDSixZQUFJVixVQUFVO0FBQ2JVLG9CQUFVdlUsT0FBT2dILE1BQU0sVUFBVSxRQUFRO1FBQzFDLE9BQU87QUFDTnVOLG9CQUFBLE1BQUFsTSxPQUFnQmtxQixVQUFRLE1BQUE7QUFDeEIsY0FBSXJ5QixTQUFTZ1QsT0FBT3lVLFdBQVdwTCxPQUFPcUwsTUFBTSxHQUFHO0FBQzlDclQsdUJBQVd2VSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDekMsT0FBTztBQUNOdU4sdUJBQVd2VSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksSUFBSXdyQjtVQUN2QztRQUNEO0FBQ0E1QixnQkFBUXBiLGVBQWVqQixPQUFPO0FBQzlCcWMsZ0JBQVFuYixjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3N3QixnQkFBUWlCLFlBQVkvcEIsSUFBSTtBQUN4QjhvQixnQkFBUWtCLEtBQUs7TUFDZDtBQUNBN3hCLGNBQVF3UCxNQUFNL0IsU0FBU29oQix5QkFBMEJ2UyxZQUFXO0FBQzNELFlBQUl6VSxPQUFPO0FBQ1gsY0FBTThrQixXQUFXM3NCLFFBQVF3UCxNQUFNZ1ksaUJBQWlCbEwsT0FBT3ZCLFFBQVE7QUFDL0QsWUFBSTRSLFNBQVNkLGFBQWE7QUFDekJoa0Isa0JBQVF5VSxPQUFPdkI7UUFDaEIsT0FBTztBQUNObFQsa0JBQVEsU0FBU08sT0FBT2tVLE9BQU92QixRQUFRO0FBQ3ZDLGNBQUl1QixPQUFPQyxXQUFXb1EsU0FBU2hCLFdBQVc7QUFDekM5akIsb0JBQUEsU0FBQU8sT0FBaUJrVSxPQUFPQyxPQUFPO1VBQ2hDO0FBQ0EsY0FBSSxDQUFDLGtCQUFrQndDLEtBQUt6QyxPQUFPcUwsTUFBTSxHQUFHO0FBQzNDLGdCQUFJckwsT0FBT3NRLFlBQVk7QUFDdEIva0Isc0JBQVE7WUFDVCxXQUFXLENBQUN5VSxPQUFPdU0sZ0JBQWdCO0FBR2xDaGhCLHNCQUFBLFNBQUFPLE9BQWlCbkksU0FBU2dULE9BQU91WSxXQUFXbFAsT0FBT3FMLE1BQU0sQ0FBQztZQUMzRDtVQUNEO0FBQ0EsY0FBSSxDQUFDM25CLFFBQVF3UCxNQUFNK1QsZ0JBQWdCLENBQUNqSCxPQUFPcUksV0FBVztBQUNyRDljLG9CQUFRO1VBQ1Q7QUFDQSxjQUFJeVUsT0FBT3pLLFFBQVE7QUFDbEJoSyxvQkFBQSxXQUFBTyxPQUFtQmtVLE9BQU96SyxNQUFNO1VBQ2pDO0FBQ0EsY0FBSXlLLE9BQU9tSSxhQUFhO0FBQ3ZCNWMsb0JBQVE7VUFDVDtBQUdBLGNBQUl5VSxPQUFPNU0sU0FBUztBQUNuQixnQkFBSTRNLE9BQU91UixpQkFBaUJqdEIsVUFBVTBiLE9BQU9xUyxzQkFBc0IvdEIsUUFBUTtBQUMxRSxvQkFBTXF5QixlQUFnQmxmLFdBQVU7QUFDL0Isb0JBQUlBLE1BQU1uVCxTQUFTLEdBQUc7QUFDckIseUJBQU9tVCxNQUFNTCxLQUFLLEdBQUc7Z0JBQ3RCO0FBQ0Esc0JBQU1sQyxPQUFPdUMsTUFBTW1mLElBQUk7QUFDdkIsdUJBQUEsR0FBQTlxQixPQUFVMkwsTUFBTUwsS0FBSyxHQUFHLEdBQUMsR0FBQSxFQUFBdEwsT0FBSW9KLElBQUk7Y0FDbEM7QUFDQTNKLHNCQUFRO0FBQ1Isa0JBQUl5VSxPQUFPdVIsaUJBQWlCanRCLFFBQVE7QUFDbkNpSCx3QkFBQSxNQUFBTyxPQUFjNnFCLGFBQ2IzVyxPQUFPdVIsaUJBQWlCbmIsSUFBS3lnQixPQUFNO0FBQ2xDLHlCQUFBLE1BQUEvcUIsT0FBYStxQixHQUFDLElBQUE7Z0JBQ2YsQ0FBQyxDQUNGLENBQUM7QUFDRHRyQix3QkFBUXlVLE9BQU9xUyxzQkFBc0IvdEIsU0FBUyxTQUFTO2NBQ3hEO0FBQ0Esa0JBQUkwYixPQUFPcVMsc0JBQXNCL3RCLFFBQVE7QUFFeEMsc0JBQU13eUIsaUJBQWlCOVcsT0FBT3FTLHNCQUFzQmpjLElBQUs5SyxRQUFPO0FBQy9ELHlCQUFPd2Esd0JBQXdCeGEsRUFBRTtnQkFDbEMsQ0FBQztBQUNEQyx3QkFBQSxHQUFBTyxPQUNDckksT0FBT2dILE1BQU0sdUJBQXVCLHFCQUFxQixJQUN6RGtzQixhQUFhRyxjQUFjLEdBQzVCLEdBQUE7Y0FDRDtZQUNELFdBQVc5VyxPQUFPb1MsTUFBTTtBQUN2QjdtQixzQkFBQSxTQUFBTyxPQUFpQmtVLE9BQU9vUyxJQUFJO1lBQzdCLE9BQU87QUFDTixrQkFBSXBTLE9BQU9pTSxTQUFTO0FBQ25CMWdCLHdCQUFRO2NBQ1Q7QUFDQSxrQkFBSXlVLE9BQU9nTSxVQUFVO0FBQ3BCemdCLHdCQUFRO2NBQ1Q7WUFDRDtVQUNEO1FBQ0Q7QUFDQSxZQUFJOGtCLFNBQVNaLEtBQUs7QUFDakJsa0Isa0JBQUEsUUFBQU8sT0FBZ0J1a0IsU0FBU1osR0FBRztRQUM3QjtBQUNBLGVBQUEsR0FBQTNqQixPQUFVUCxNQUFJLElBQUE7TUFDZjtBQUNBN0gsY0FBUXdQLE1BQU0vQixTQUFTa1MsT0FBUTlDLGFBQVk7QUFDMUMsY0FBTVAsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QyxjQUFNcEgsT0FBTyxJQUFJdlksU0FBU3VZLEtBQUtxRSxRQUFRa0QsWUFBWSxDQUFDO0FBQ3BELGNBQU07VUFBQ3BCO1FBQVcsSUFBSXJDO0FBQ3RCLFlBQUl6VTtBQUNKeVUsZUFBT3NRLGFBQWEzc0IsU0FBU2dULE9BQU95VSxXQUFXcEwsT0FBT3FMLE1BQU07QUFDNUQsWUFBSTNuQixRQUFRdUgsUUFBUSwyQkFBMkIsS0FBSytVLE9BQU92QixhQUFhLGVBQWV1QixPQUFPc1EsWUFBWTtBQUN6RzNzQixtQkFBU3VVLE9BQU95TSxLQUNmbGhCLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QmhILE9BQU9nSCxNQUNOLDBCQUNBLHdCQUNELENBQ0Q7QUFDQWMsaUJBQUEsR0FBQU8sT0FBVW9RLEtBQUswSSxZQUFZLEdBQUMsSUFBQTtRQUM3QixPQUFPO0FBQ05yWixpQkFBT2dWLFFBQVE5SCxZQUFZO0FBQzNCLGdCQUFNMkwsa0JBQWtCbEksS0FBS21JLGlCQUFpQjtBQUM5QyxjQUFJMFM7QUFDSixjQUFJQztBQUNKLGtCQUFRRCxzQkFBc0IzUyxnQkFBZ0IzQixLQUFLbFgsSUFBSSxPQUFPLE1BQU07QUFDbkV5ckIsb0NBQXdCRDtVQUN6QjtBQUlBLGdCQUFNRSxrQkFBa0IxckIsS0FBSzJyQixZQUFZLE1BQU0sSUFBSTtBQUNuRCxjQUFJM3JCLEtBQUtqSCxTQUFTLEdBQUc7QUFDcEJpSCxvQkFBUTtVQUNUO0FBQ0EsY0FBSSxDQUFDeXJCLHlCQUF5QkEsc0JBQXNCcGYsVUFBVXFmLGlCQUFpQjtBQUM5RXR6QixxQkFBU3VVLE9BQU95TSxLQUNmbGhCLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QmhILE9BQU9nSCxNQUFNLG9CQUFvQixrQkFBa0IsQ0FDcEQ7QUFDQWMsb0JBQUEsR0FBQU8sT0FBV29RLEtBQUswSSxZQUFZLEdBQUMsSUFBQTtVQUM5QjtRQUNEO0FBQ0E1RSxlQUFPcUwsU0FBU3JMLE9BQU8wTCxvQkFBb0IsU0FBWTFMLE9BQU9xTCxTQUFTckwsT0FBTzBMO0FBQzlFbmdCLGdCQUFRN0gsUUFBUXdQLE1BQU0vQixTQUFTb2hCLHVCQUF1QnZTLE1BQU07QUFFNUQsWUFBSWhJLFVBQVVnSSxPQUFPK1Y7QUFDckIsWUFBSTFULFlBQVl0Riw2QkFBNkIsUUFBUWlELE9BQU9DLFNBQVM7QUFDcEVqSSxxQkFBQSxHQUFBbE0sT0FBY3JJLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUFDLEtBQUEsRUFBQXFCLE9BQU1rVSxPQUFPQyxTQUFPLElBQUE7UUFDM0Q7QUFDQU0sZ0JBQVErVSxZQUFZL3BCLElBQUk7QUFDeEJnVixnQkFBUXRILGVBQWVqQixPQUFPO0FBQzlCdUksZ0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLGdCQUFRL0csYUFBYTlWLFFBQVF1SCxRQUFRLG1CQUFtQixDQUFDO0FBQ3pEc1YsZ0JBQVFnVixLQUFLO01BQ2Q7QUFDQTd4QixjQUFRUyxnQkFBZ0JULFFBQVF3UCxPQUFPLE9BQU87SUFDL0MsR0FBR3ZDLE1BQU07RUFBQTtBQUFBLENBQUE7O0FDNy9FVCxJQUFBd21CLDJCQUFBLENBQUE7QUFBQSxJQUFBQyx3QkFBQWowQixNQUFBO0VBQUEsNENBQUE7QUFBQTtJQUdBO0FBQ0EsS0FBQyxTQUFTazBCLGlCQUFpQmgwQixHQUFHO0FBQzdCLFlBQU1FLFFBQVFGLEVBQUUsTUFBTTtBQU90QkssY0FBUTR6QixXQUFXLE1BQU07QUFDeEIsWUFBSSxDQUFDcnVCLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLEdBQUc7QUFDekM7UUFDRDtBQUNBekYsZ0JBQVE2SixlQUNQN0osUUFBUTR6QixTQUFTbm1CLFVBQ2pCLE1BQ0EscUJBQ0ExTixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FDNUI7TUFDRDtBQUNBL0csY0FBUTR6QixTQUFTbm1CLFdBQVcsTUFBTTtBQUNqQyxZQUNDbEksR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0IsTUFBTUYsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEtBQ2xFLENBQUNnTyxRQUFRMVQsT0FBT2dILE1BQU0scUJBQXFCLG1CQUFtQixDQUFDLEdBQzlEO0FBQ0Q7UUFDRDtBQUNBLGNBQU00RyxTQUFTLElBQUkxTixTQUFTMk4sYUFBYSxLQUFLLEdBQUc7QUFDakRELGVBQU9FLFNBQVM5TixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztBQUM1QzRHLGVBQU9HLGNBQWMsU0FBUztBQUM5QkgsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0IsR0FBRyxtQkFBbUI7QUFDMUY0RyxlQUFPSSxjQUFjaE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNLEdBQUcsb0JBQW9CO0FBQ3ZFNEcsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxHQUFHLG1CQUFtQjtBQUNoRixjQUFNaUgsT0FBTyxJQUFJL04sU0FBU2dPLFVBQVVqTyxRQUFRNHpCLFNBQVMxbEIsUUFBUTtBQUM3REYsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOb08sTUFBTSxDQUNMO1lBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7WUFDMUNpRixPQUFPO1lBQ1BpWCxTQUFTO1VBQ1YsR0FDQTtZQUNDNVUsT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsY0FBYztZQUNqRGlGLE9BQU87VUFDUixHQUNBO1lBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO1lBQ3hDaUYsT0FBTztVQUNSLEdBQ0E7WUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDbENpRixPQUFPO1VBQ1IsR0FDQTtZQUNDcUMsT0FBTztZQUNQckMsT0FBTztVQUNSLEdBQ0E7WUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7WUFDdENpRixPQUFPO1VBQ1IsQ0FBQTtVQUVEc0MsT0FBT3RPLFFBQVE0ekIsU0FBU0M7UUFDekIsQ0FBQztBQUNEN2xCLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU87VUFDUDFOLE1BQU07UUFDUCxDQUFDO0FBQ0QsY0FBTWtRLGNBQWM1SSxTQUFTWSxjQUFjLEdBQUc7QUFDOUNsSixVQUFFa1IsV0FBVyxFQUFFcEgsR0FBRyxTQUFTLE1BQU07QUFDaEN6SixrQkFBUTR6QixTQUFTNWlCLFFBQVF0QyxNQUFNO1FBQ2hDLENBQUM7QUFFRG1DLG9CQUFZcEMsTUFBTXFDLFNBQVM7QUFDM0JELG9CQUFZRSxjQUFjaFIsT0FBT2dILE1BQU0sTUFBTSxJQUFJO0FBQ2pEaUgsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNORixJQUFJO1VBQ0p5RyxPQUFPLENBQUN3QyxXQUFXO1FBQ3BCLENBQUM7QUFDRDdDLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTkYsSUFBSTtVQUNKNkcsT0FBTztRQUNSLENBQUM7QUFDRFQsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtRQUNQLENBQUM7QUFDRCxjQUFNNEcsU0FBU1YsS0FBS1csT0FBTztBQUMzQmhCLGVBQU9pQixXQUFXRixNQUFNO0FBQ3hCZixlQUFPa0IsUUFBUTtBQUNmSCxlQUFPa0QsWUFBWSxJQUFJM1IsU0FBU3FMLEtBQUswRixRQUFRclIsRUFBRStPLE1BQU0sRUFBRXBILEtBQUssaUNBQWlDLEVBQUVrSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBRXhHLGNBQU0xQixNQUFNN0gsU0FBUzhILFlBQVksT0FBTztBQUN4Q0QsWUFBSUUsVUFBVSxVQUFVLE1BQU0sSUFBSTtBQUNsQ3RCLGVBQU9vbEIsU0FBUyxDQUFDLEVBQUU1akIsY0FBY0osR0FBRztBQUVwQyxjQUFNaEIsUUFBUTtVQUNidEUsUUFBUTtVQUNSc04sTUFBTTtVQUNORCxRQUFBLGFBQUF6UCxPQUFxQjdDLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLENBQUM7VUFDeERzdUIsU0FBUztVQUNUQyxTQUFTO1FBQ1Y7QUFDQSxjQUFNQyxhQUFhLElBQUloMEIsU0FBU3FMLEtBQUtDLElBQ3BDeEwsT0FBT2dILE1BQU0sWUFBWSxVQUFVLEdBQ25DK0gsT0FDQTlPLFFBQVE0ekIsU0FBU25tQixTQUFTeW1CLFlBQzNCO0FBQ0FELG1CQUFXcGtCLEtBQUs7TUFDakI7QUFDQTdQLGNBQVE0ekIsU0FBU08sU0FBUztBQUMxQm4wQixjQUFRNHpCLFNBQVNubUIsU0FBU3ltQixlQUFnQjlrQixZQUFXO0FBQ3BELGNBQU1nbEIsTUFBTXowQixFQUFFeVAsT0FBT2lsQixPQUFPLENBQUMsRUFBRS9zQixLQUFLLElBQUk7QUFDeEMsWUFBSThzQixJQUFJeHpCLFFBQVE7QUFDZlosa0JBQVE0ekIsU0FBU08sU0FDaEI1dUIsR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0IsSUFBSTFGLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztBQUM1RSxnQkFBTTRpQixNQUFNeUssSUFBSXZzQixLQUFLO0FBQ3JCLGdCQUFNZ0ssU0FBU3RNLEdBQUcwRSxLQUFLd0gsY0FBYyxVQUFVa1ksR0FBRztBQUNsRDNwQixrQkFBUTR6QixTQUFTTyxVQUFVdGlCLFNBQUEsSUFBQXpKLE9BQWFuSSxTQUFTZ1QsT0FBT0Msa0JBQWtCckIsTUFBTSxDQUFDLElBQUs7UUFDdkY7QUFDQWhTLGNBQU15SCxLQUFLLGtDQUFrQyxFQUFFTyxLQUFLN0gsUUFBUTR6QixTQUFTTyxNQUFNO01BQzVFO0FBQ0EsVUFBSUcsWUFBWTtBQUNoQixVQUFJQyxlQUFlO0FBQ25CLFVBQUlDLGVBQWU7QUFDbkJ4MEIsY0FBUTR6QixTQUFTQyxlQUFnQm5xQixPQUFNO0FBQ3RDLGNBQU1zQyxRQUFRdEMsRUFBRTRHLE9BQU9ta0I7QUFDdkIsY0FBTXpzQixPQUFPMEIsRUFBRTRHLE9BQU90QztBQUN0QixjQUFNLENBQUMwQyxRQUFRLElBQUl6USxTQUFTZ08sVUFBVTBDLFlBQVkzSSxNQUFNLFdBQVc7QUFDbkUsWUFBSUEsS0FBSzBzQixTQUFTO0FBQ2pCSCx5QkFBZXZzQixLQUFLMHNCLFFBQVExb0I7UUFDN0I7QUFDQSxZQUFJaEUsS0FBS3lILFNBQVM7QUFDakIra0IseUJBQWV4c0IsS0FBS3lILFFBQVF6RDtRQUM3QjtBQUNBLFlBQUloRSxLQUFLd0ssTUFBTTtBQUNkOGhCLHNCQUFZdHNCLEtBQUt3SyxLQUFLeEc7UUFDdkI7QUFDQSxZQUFJNEUsWUFBWSxJQUFJM1EsU0FBU2dPLFVBQVVnRCxRQUFRO1VBQzlDbkosTUFBTTtVQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtVQUN0Q3BHLE1BQU07UUFDUCxDQUFDO0FBQ0RxSCxhQUFLNEosVUFBVW1MLGFBQWE7QUFDNUIsZ0JBQVEvUSxPQUFBO1VBQ1AsS0FBSztBQUNKNEUsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNOdUcsT0FBTztjQUNQSSxPQUFPO2NBQ1A3RyxJQUFJO1lBQ0wsQ0FBQztBQUNEZ0osc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsU0FBUztjQUN2Q2dELFNBQVNoSyxPQUFPZ0gsTUFBTSxpQkFBaUIsaUJBQWlCO2NBQ3hEaUYsT0FBT3NvQjtjQUNQSyxVQUFVO1lBQ1gsQ0FBQztBQUNEL2pCLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Y0FDdENnRCxTQUFTaEssT0FBT2dILE1BQ2YseUJBQ0EsdUJBQ0Q7Y0FDQWlGLE9BQU91b0I7WUFDUixDQUFDO0FBQ0Q7VUFDRCxLQUFLLFVBQVU7QUFDZCxrQkFBTUssY0FBY2hrQixVQUFVeEMsT0FBTztjQUNwQ3RHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU87WUFDUixDQUFDO0FBQ0QscUJBQUF3bUIsTUFBQSxHQUFBQyxtQkFBNkJwYSxPQUFPQyxRQUFRM2EsUUFBUTR6QixTQUFTbUIsWUFBWSxHQUFBRixNQUFBQyxpQkFBQWwwQixRQUFBaTBCLE9BQUc7QUFBNUUsb0JBQVcsQ0FBQ0csUUFBUS9aLElBQUksSUFBQTZaLGlCQUFBRCxHQUFBO0FBQ3ZCRCwwQkFBWXhtQixPQUFPO2dCQUNsQnRHLE1BQU07Z0JBQ051RyxPQUFPNE0sS0FBSzVNO2dCQUNackMsT0FBT2dwQjtnQkFDUDFkLFVBQVUsQ0FBQyxDQUFDMkQsS0FBS2dhO2NBQ2xCLENBQUM7WUFDRjtBQUNBcmtCLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Y0FDdENnRCxTQUFTaEssT0FBT2dILE1BQU0scUJBQXFCLG1CQUFtQjtjQUM5RGlGLE9BQU91b0I7WUFDUixDQUFDO0FBQ0Q7VUFDRDtVQUNBLEtBQUs7QUFDSjNqQixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ051RyxPQUFPO2NBQ1BJLE9BQU87Y0FDUDdHLElBQUk7WUFDTCxDQUFDO0FBQ0RnSixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO2NBQ3BDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLG1DQUNBLGlDQUNEO2NBQ0FpRixPQUFPc29CO2NBQ1BLLFVBQVU7WUFDWCxDQUFDO0FBQ0QvakIsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtjQUN0Q2dELFNBQVNoSyxPQUFPZ0gsTUFDZix5QkFDQSx1QkFDRDtjQUNBaUYsT0FBT3VvQjtZQUNSLENBQUM7QUFDRDtVQUNELEtBQUs7QUFDSjNqQixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sY0FBYyxZQUFZO2NBQzlDZ0QsU0FBU2hLLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1lBQ3JELENBQUM7QUFDRDtVQUNELEtBQUs7QUFDSjZKLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87Y0FDcENnRCxTQUFTaEssT0FBT2dILE1BQ2YsbUNBQ0EsaUNBQ0Q7Y0FDQWlGLE9BQU9zb0I7Y0FDUEssVUFBVTtZQUNYLENBQUM7QUFDRC9qQixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2NBQ3RDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLHlCQUNBLHVCQUNEO2NBQ0FpRixPQUFPdW9CO1lBQ1IsQ0FBQztBQUNEO1VBR0Q7QUFDQzNqQixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ051RyxPQUFPO2NBQ1BJLE9BQU87Y0FDUDdHLElBQUk7WUFDTCxDQUFDO0FBQ0RnSixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2NBQ3RDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLHlCQUNBLHVCQUNEO2NBQ0FpRixPQUFPdW9CO1lBQ1IsQ0FBQztBQUNEO1FBQ0Y7QUFDQSxZQUFJdm9CLFVBQVUsVUFBVTtBQUN2QjRFLG9CQUFVeEMsT0FBTztZQUNoQnRHLE1BQU07WUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7WUFDNUNwRyxNQUFNO1lBQ05vSixTQUFTaEssT0FBT2dILE1BQ2YsOEJBQ0EsNEJBQ0Q7VUFDRCxDQUFDO1FBQ0Y7QUFDQTZKLG9CQUFZQSxVQUFVakMsT0FBTztBQUM3QjNHLGFBQUtxSixhQUFhVCxXQUFXRixRQUFRO0FBQ3JDLFlBQUkxSSxLQUFLeUgsU0FBUztBQUNqQnpILGVBQUt5SCxRQUFRekQsUUFBUXdvQjtRQUN0QjtBQUNBMzBCLGNBQU15SCxLQUFLLGtDQUFrQyxFQUFFTyxLQUFLN0gsUUFBUTR6QixTQUFTTyxNQUFNO01BQzVFO0FBQ0FuMEIsY0FBUTR6QixTQUFTbUIsZUFBZTtRQUMvQkcsTUFBTTtVQUNMN21CLE9BQUEsWUFBQWpHLE9BQW1CckksT0FBT2dILE1BQU0sWUFBWSxVQUFVLEdBQUMsR0FBQTtVQUN2RDBGLE9BQU8xTSxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7VUFDaERvdUIsU0FBUyxHQUFBL3NCLE9BQUdySSxPQUFPZ0gsTUFDbEIsaURBQ0EsK0NBQ0QsR0FBQyxNQUFBLEVBQU9xQixPQUFPLElBQUk7VUFDbkJndEIsYUFBYXIxQixPQUFPZ0gsTUFDbkIseUNBQ0EsdUNBQ0Q7VUFDQWt1QixpQkFBaUI7UUFDbEI7UUFDQUksS0FBSztVQUNKaG5CLE9BQU87VUFDUDVCLE9BQU8xTSxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZTtVQUNwRG91QixTQUFTLEdBQUEvc0IsT0FBR3JJLE9BQU9nSCxNQUNsQixpREFDQSwrQ0FDRCxHQUFDLE1BQUEsRUFBT3FCLE9BQU8sSUFBSTtVQUNuQmd0QixhQUFhcjFCLE9BQU9nSCxNQUNuQix5Q0FDQSx1Q0FDRDtRQUNEO1FBQ0F1dUIsS0FBSztVQUNKam5CLE9BQU87VUFDUDVCLE9BQU8xTSxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZTtVQUNwRG91QixTQUFTLEdBQUEvc0IsT0FBR3JJLE9BQU9nSCxNQUNsQixpREFDQSwrQ0FDRCxHQUFDLE1BQUEsRUFBT3FCLE9BQU8sSUFBSTtVQUNuQmd0QixhQUFhcjFCLE9BQU9nSCxNQUNuQix5Q0FDQSx1Q0FDRDtRQUNEO01BQ0Q7QUFDQS9HLGNBQVE0ekIsU0FBUzFsQixXQUFZeEUsT0FBTTtBQUNsQyxjQUFNc0UsT0FBT3RFLEVBQUU0RztBQUNmLGNBQU0sQ0FBQ3dqQixRQUFRLElBQUk5bEIsS0FBS3VuQixXQUFXLFVBQVU7QUFDN0MsWUFBSS9pQjtBQUNKLFlBQUkvQztBQUNKLGNBQU1pbEIsVUFBVTFtQixLQUFLMG1CLFFBQVExb0I7QUFDN0IsWUFBSW9wQjtBQUNKLFlBQUl0QixhQUFhLFVBQVU7QUFDMUJ0aEIsaUJBQU94RSxLQUFLNG1CLFlBQVk1b0I7QUFDeEIsV0FBQztZQUFDb3BCO1VBQVcsSUFBSXAxQixRQUFRNHpCLFNBQVNtQixhQUFhdmlCLElBQUk7UUFDcEQsT0FBTztBQUVOQSxpQkFBT3hFLEtBQUt3RSxPQUFPeEUsS0FBS3dFLEtBQUt4RyxRQUFRekcsR0FBR0MsT0FBT0MsSUFBSSxZQUFZO0FBQy9ELGNBQUl1SSxLQUFLeUIsU0FBUztBQUNqQkEsc0JBQVV6QixLQUFLeUIsUUFBUXpELE1BQU1nSCxLQUFLO1VBQ25DO0FBQ0EsY0FBSThnQixhQUFhLFFBQVE7QUFDeEJzQiwwQkFBY3IxQixPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7VUFDaEQsV0FBVytzQixhQUFhLE9BQU87QUFDOUJzQiwwQkFBQSxHQUFBaHRCLE9BQWlCckksT0FBT2dILE1BQU0sT0FBTyxLQUFLLEdBQUMsS0FBQSxFQUFBcUIsT0FBTW9LLElBQUksRUFBQXBLLE9BQUdzc0IsVUFBQSxJQUFBdHNCLE9BQWNzc0IsT0FBTyxJQUFLLElBQUUsSUFBQSxFQUFBdHNCLE9BQUtySSxPQUFPZ0gsTUFDL0YsUUFDQSxNQUNELENBQUM7VUFDRixPQUFPO0FBRU5xdUIsMEJBQUEsR0FBQWh0QixPQUFpQnJJLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFDLE1BQUE7QUFDN0MsZ0JBQUkrc0IsYUFBYSxXQUFXLENBQUMsSUFBSTdlLE9BQUEsUUFBQTdNLE9BQWVuSSxTQUFTdTFCLGVBQWUsQ0FBQyxHQUFDLEdBQUEsR0FBSyxHQUFHLEVBQUVydEIsS0FBS3FLLElBQUksR0FBRztBQUMvRjRpQiw2QkFBZTtZQUNoQjtBQUNBQSwyQkFBQSxHQUFBaHRCLE9BQWtCb0ssUUFBUWtpQixVQUFBLElBQUF0c0IsT0FBY3NzQixPQUFPLElBQUssS0FBRyxLQUFBO1VBQ3hEO1FBQ0Q7QUFDQXowQixpQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztBQUM3Q3RVLGlCQUFTdVUsT0FBT0MsS0FBS3pHLElBQUk7QUFDekIsY0FBTXluQix1QkFBQSxHQUFBcnRCLE9BQ0w3QyxHQUFHQyxPQUFPQyxJQUFJLHVCQUF1QixFQUFFRixHQUFHQyxPQUFPQyxJQUFJLGdCQUFnQixFQUFFaXdCLFNBQVMsR0FDakYsR0FBQSxFQUFBdHRCLE9BQUk3QyxHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQixDQUFDO0FBQ3ZDeEYsaUJBQVNxTCxLQUFLb0osZ0JBQWdCQyxXQUFXOGdCO0FBQ3pDeDFCLGlCQUFTcUwsS0FBS29KLGdCQUFnQkUsU0FBUzdVLE9BQU9nSCxNQUM3QyxvQkFDQSxvQkFDRDtBQUNBLGNBQU1jLE9BQUEsT0FBQU8sT0FBY3BJLFFBQVE0ekIsU0FBUytCLGtCQUFrQjdCLFVBQVV0aEIsTUFBTWtpQixTQUFTamxCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDM0YsY0FBTW1tQixXQUFXLElBQUkzMUIsU0FBU3FMLEtBQUtrSCxLQUFLaWpCLHNCQUFzQjExQixPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQztBQUM5RjZ1QixpQkFBU3JnQixlQUFlNmYsV0FBVztBQUNuQ1EsaUJBQVNwZ0IsY0FBY3hWLFFBQVFLLFVBQVU7QUFDekN1MUIsaUJBQVNuZ0IsY0FBYzVOLElBQUk7QUFDM0IrdEIsaUJBQVNDLGdCQUFnQixVQUFVO0FBQ25DRCxpQkFBU0UsYUFBYTkxQixRQUFRdUgsUUFBUSxxQkFBcUIsQ0FBQztBQUM1RHF1QixpQkFBUzlnQixrQkFBa0IsSUFBSTtBQUMvQjhnQixpQkFBU3huQixPQUFPO01BQ2pCO0FBQ0FwTyxjQUFRNHpCLFNBQVM1aUIsVUFBV2hELFVBQVM7QUFDcEMsY0FBTSxDQUFDOGxCLFFBQVEsSUFBSTlsQixLQUFLdW5CLFdBQVcsVUFBVTtBQUM3QyxjQUFNYixVQUFVMW1CLEtBQUswbUIsUUFBUTFvQjtBQUM3QixZQUFJd0c7QUFDSixZQUFJL0M7QUFDSixZQUFJcWtCLGFBQWEsVUFBVTtBQUMxQnRoQixpQkFBT3hFLEtBQUs0bUIsWUFBWTVvQjtRQUN6QixPQUFPO0FBRU53RyxpQkFBT3hFLEtBQUt3RSxPQUFPeEUsS0FBS3dFLEtBQUt4RyxRQUFRekcsR0FBR0MsT0FBT0MsSUFBSSxZQUFZO0FBQy9ELGNBQUl1SSxLQUFLeUIsU0FBUztBQUNqQkEsc0JBQVV6QixLQUFLeUIsUUFBUXpELE1BQU1nSCxLQUFLO1VBQ25DO1FBQ0Q7QUFDQSxjQUFNLENBQUMraUIsVUFBVSxJQUFJLzFCLFFBQVE0ekIsU0FBUytCLGtCQUFrQjdCLFVBQVV0aEIsTUFBTWtpQixTQUFTamxCLE9BQU87QUFDeEZ6QixhQUFLNEQsVUFBVUssWUFBWThqQixZQUFBLGFBQUEzdEIsT0FBeUI3QyxHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQixDQUFDLENBQUU7TUFDMUY7QUFFQXpGLGNBQVE0ekIsU0FBUytCLG9CQUFvQixDQUFDN0IsVUFBVXRoQixNQUFNa2lCLFNBQVNqbEIsWUFBWTtBQUMxRSxZQUFJNUg7QUFDSixZQUFJNEU7QUFDSixZQUFJMG9CO0FBQ0osWUFBSXJCLGFBQWEsVUFBVTtBQUMxQixXQUFDO1lBQUNybkI7VUFBSyxJQUFJek0sUUFBUTR6QixTQUFTbUIsYUFBYXZpQixJQUFJO0FBQzdDMmlCLG9CQUFVbDFCLFNBQVNnVCxPQUFPK2lCLFlBQVloMkIsUUFBUTR6QixTQUFTbUIsYUFBYXZpQixJQUFJLEVBQUUyaUIsU0FBUyxZQUFZVCxPQUFPO0FBQ3RHN3NCLGlCQUFBLE1BQUFPLE9BQWFxRSxPQUFLLE9BQUEsRUFBQXJFLE9BQVErc0IsT0FBTztRQUNsQyxXQUFXckIsYUFBYSxPQUFPO0FBQzlCcm5CLGtCQUFRK0YsT0FBT3pTLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztBQUM1Q291QixvQkFBVSxLQUFLL3NCLE9BQ2QsVUFBQSx1QkFBQUEsT0FDdUJvSyxJQUFJLEVBQUFwSyxPQUFHc3NCLFVBQUEsSUFBQXRzQixPQUFjc3NCLE9BQU8sSUFBSyxJQUFFLFFBQUEsRUFBQXRzQixPQUFTcUgsUUFBUXVELEtBQUssR0FBQyxJQUFBLENBQ2xGO0FBQ0FuTCxpQkFBTyxLQUFLTyxPQUNYLFVBQUEsdUJBQUFBLE9BQ3VCb0ssSUFBSSxFQUFBcEssT0FBR3NzQixVQUFBLElBQUF0c0IsT0FBY3NzQixPQUFPLElBQUssSUFBRSxRQUFBLEVBQUF0c0IsT0FBU3FILFFBQVF1RCxLQUFLLEdBQUMsSUFBQSxDQUNsRjtRQUNELE9BQU87QUFDTm5MLGlCQUFPO0FBQ1AsY0FBSWlzQixhQUFhLFFBQVE7QUFDeEJybkIsb0JBQVF6TSxRQUFRdUgsUUFBUSxhQUFhO0FBQ3JDNHRCLHNCQUFVLDZCQUFBL3NCLE9BQTZCc3NCLFNBQU8sUUFBQSxFQUFTdHNCLE9BQU8sS0FBSyxNQUFNO0FBQ3pFUCxvQkFBQSxHQUFBTyxPQUFXcEksUUFBUXVILFFBQVEsYUFBYSxHQUFDLGdDQUFBLEVBQUFhLE9BQWlDc3NCLE9BQU87VUFDbEYsT0FBTztBQUdOam9CLG9CQUFRek0sUUFBUXVILFFBQVEsaUJBQWlCLEVBQUV3TCxRQUFRLDJCQUEyQixJQUFJO0FBQ2xGb2lCLHNCQUFBLGNBQUEvc0IsT0FBd0JvSyxJQUFJLEVBQUFwSyxPQUFHc3NCLFVBQUEsSUFBQXRzQixPQUFjc3NCLE9BQU8sSUFBSyxFQUFFO0FBQzNEN3NCLG9CQUFBLEdBQUFPLE9BQVdwSSxRQUFRdUgsUUFBUSxpQkFBaUIsRUFBRXdMLFFBQzdDLDJCQUNBLElBQ0QsR0FBQyxpQkFBQSxFQUFBM0ssT0FBa0JvSyxJQUFJLEVBQUFwSyxPQUFHc3NCLFVBQUEsSUFBQXRzQixPQUFjc3NCLE9BQU8sSUFBSyxFQUFFO1VBQ3ZEO0FBQ0FTLHFCQUFXLFNBQVMvc0IsT0FBTyxLQUFLLE1BQU07QUFDdENQLGtCQUFRLFNBQVNPLE9BQU8sS0FBSyxNQUFNO0FBQ25DLGNBQUlxSCxTQUFTO0FBQ1owbEIsdUJBQUEsS0FBQS9zQixPQUFnQnFILE9BQU87QUFDdkI1SCxvQkFBUSxLQUFBTyxPQUFLcUgsU0FBTyxNQUFBLEVBQU9ySCxPQUFPLElBQUk7VUFDdkMsV0FBV3BJLFFBQVF1SCxRQUFRLHlCQUF5QixHQUFHO0FBQ3RETSxvQkFBUSxPQUFPTyxPQUFPLElBQUk7VUFDM0I7UUFDRDtBQUNBLGVBQU8sQ0FBQ1AsTUFBTTRFLE9BQU8wb0IsT0FBTztNQUM3QjtBQUNBbjFCLGNBQVFTLGdCQUFnQlQsUUFBUTR6QixVQUFVLFVBQVU7SUFDckQsR0FBRzNtQixNQUFNO0VBQUE7QUFBQSxDQUFBOztBQ3ZjVCxJQUFBZ3BCLHdCQUFBLENBQUE7QUFBQSxJQUVBQztBQUZBLElBQUFDLHFCQUFBMTJCLE1BQUE7RUFBQSx5Q0FBQTtBQUFBO0FBRUF5MkIseUJBQTRCclUsUUFBQSxpQkFBQTtJQUU1QjtBQUNBLEtBQUMsU0FBU3VVLGNBQWN6MkIsR0FBRztBQUMxQixZQUFNRSxRQUFRRixFQUFFLE1BQU07QUFZdEJLLGNBQVFxMkIsU0FBUyxNQUFNO0FBSXRCLFlBQUk5d0IsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsSUFBSSxLQUFLLENBQUNGLEdBQUdDLE9BQU9DLElBQUksYUFBYSxHQUFHO0FBQzVFO1FBQ0Q7QUFDQXpGLGdCQUFRNkosZUFDUDdKLFFBQVFxMkIsT0FBTzVvQixVQUNmMU4sT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCLFVBQ0E5RyxTQUFTZ0IsY0FBY2xCLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxJQUFJaEgsT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQ3RGO01BQ0Q7QUFFQS9HLGNBQVFxMkIsT0FBTzVvQixXQUFXLE1BQU07QUFDL0J6TixnQkFBUXEyQixPQUFPQyxXQUNkcjJCLFNBQVNnQixjQUFjakIsUUFBUXEyQixPQUFPNW9CLFNBQVM4b0IsZ0JBQWdCdjJCLFFBQVFxMkIsT0FBTzVvQixTQUFTK29CLGNBQ3ZGLElBQ0Q7TUFDRDtBQUVBeDJCLGNBQVFxMkIsT0FBT3RmLFNBQVM7QUFFeEIvVyxjQUFRcTJCLE9BQU9JLFNBQVMsQ0FBQyxDQUFDeHVCLFNBQVNDLGNBQWMsZ0JBQWdCO0FBRWpFbEksY0FBUXEyQixPQUFPSyxPQUFPO1FBQ3JCQyxtQkFBbUI7O1FBRW5CQyxpQkFBaUI7O1FBRWpCQyxxQkFBcUI7O1FBRXJCQyx5QkFBeUI7O1FBRXpCQyxvQkFBb0I7O1FBRXBCQyx3QkFBd0I7O1FBRXhCQyxrQkFBa0I7O1FBRWxCQyxzQkFBc0I7Ozs7UUFJdEJDLFNBQVVULFVBQVM7QUFDbEIsaUJBQ0NBLFNBQVMxMkIsUUFBUXEyQixPQUFPSyxLQUFLQyxxQkFDN0JELFNBQVMxMkIsUUFBUXEyQixPQUFPSyxLQUFLRyx1QkFDN0JILFNBQVMxMkIsUUFBUXEyQixPQUFPSyxLQUFLRSxtQkFDN0JGLFNBQVMxMkIsUUFBUXEyQixPQUFPSyxLQUFLSTtRQUUvQjs7UUFFQU0saUJBQWtCVixVQUFTO0FBQzFCLGlCQUNDQSxTQUFTMTJCLFFBQVFxMkIsT0FBT0ssS0FBS0MscUJBQzdCRCxTQUFTMTJCLFFBQVFxMkIsT0FBT0ssS0FBS0csdUJBQzdCSCxTQUFTMTJCLFFBQVFxMkIsT0FBT0ssS0FBS0ksMkJBQzdCSixTQUFTMTJCLFFBQVFxMkIsT0FBT0ssS0FBS0ssc0JBQzdCTCxTQUFTMTJCLFFBQVFxMkIsT0FBT0ssS0FBS00sMEJBQzdCTixTQUFTMTJCLFFBQVFxMkIsT0FBT0ssS0FBS087UUFFL0I7O1FBRUFJLFlBQWFYLFVBQVM7QUFDckIsaUJBQ0NBLFNBQVMxMkIsUUFBUXEyQixPQUFPSyxLQUFLSyxzQkFDN0JMLFNBQVMxMkIsUUFBUXEyQixPQUFPSyxLQUFLRyx1QkFDN0JILFNBQVMxMkIsUUFBUXEyQixPQUFPSyxLQUFLTSwwQkFDN0JOLFNBQVMxMkIsUUFBUXEyQixPQUFPSyxLQUFLSTtRQUUvQjtNQUNEO0FBRUE5MkIsY0FBUXEyQixPQUFPQyxhQUFjZ0Isa0JBQWlCO0FBQzdDdDNCLGdCQUFRcTJCLE9BQU90ZixTQUFTLElBQUk5VyxTQUFTMk4sYUFDcEM1TixRQUFRdUgsUUFBUSxtQkFBbUIsR0FDbkN2SCxRQUFRdUgsUUFBUSxvQkFBb0IsQ0FDckM7QUFDQSxjQUFNO1VBQUN3UDtRQUFNLElBQUkvVyxRQUFRcTJCO0FBQ3pCdGYsZUFBT2xKLFNBQVM5TixPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsQ0FBQztBQUNwRGdRLGVBQU9qSixjQUFjLFNBQVM7QUFDOUJpSixlQUFPaEosY0FBY2hPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxHQUFHLFFBQVE7QUFDL0RnUSxlQUFPaEosY0FBY2hPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFHLGtCQUFrQjtBQUNyRWdRLGVBQU9oSixjQUFjaE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXLEdBQUcsaUJBQWlCO0FBQzlFLGNBQU1pSCxPQUFPLElBQUkvTixTQUFTZ08sVUFDekJxcEIsY0FDQXQzQixRQUFRdUgsUUFBUSxzQkFBc0IsTUFBTSxlQUFlLFdBQVcsSUFDdkU7QUFDQSxZQUFJdEgsU0FBU2dCLGFBQWE7QUFDekIrTSxlQUFLSSxPQUFPO1lBQ1h0RyxNQUFNO1lBQ05pSCxNQUFNLENBQ0w7Y0FDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztjQUN4Q2lGLE9BQU87Y0FDUHJMLE1BQU07Y0FDTm9KLFNBQVNoSyxPQUFPZ0gsTUFBTSxvQkFBb0Isa0JBQWtCO2NBQzVEa2MsU0FBUyxFQUFFampCLFFBQVFxMkIsT0FBT0ksVUFBVXoyQixRQUFRdUgsUUFBUSw0QkFBNEI7Y0FDaEYrRyxPQUFRQSxXQUFVO0FBQ2pCLHNCQUFNaXBCLFFBQVFqcEIsTUFBTWdDLE9BQU90QztBQUMzQixzQkFBTXdwQixXQUFXbHBCLE1BQU1nQyxPQUFPMlM7QUFFOUIsb0JBQUlzVSxNQUFNM0IsVUFBVTtBQUNuQjJCLHdCQUFNM0IsU0FBU3BuQixXQUFXZ3BCO0FBQzFCRCx3QkFBTTNCLFNBQVMzUyxVQUFVLENBQUN1VSxZQUFZeDNCLFFBQVF1SCxRQUFRLHdCQUF3QjtnQkFDL0U7QUFFQWd3QixzQkFBTUUsVUFBVWpwQixXQUFXZ3BCO0FBQzNCRCxzQkFBTUUsVUFBVXhVLFVBQVUsQ0FBQ3VVO0FBRTNCRCxzQkFBTUcsWUFBWWxwQixXQUFXZ3BCO0FBQzdCRCxzQkFBTUcsWUFBWXpVLFVBQVU7QUFFNUJzVSxzQkFBTUksYUFBYW5wQixXQUFXZ3BCO0FBQzlCRCxzQkFBTUksYUFBYTFVLFVBQVU7QUFFN0JzVSxzQkFBTXpzQixPQUFPMEQsV0FBVyxDQUFDZ3BCO0FBQ3pCRCxzQkFBTXpzQixPQUFPbVksVUFBVXVVO0FBRXZCRCxzQkFBTXRQLFNBQVN6WixXQUFXLENBQUNncEI7QUFDM0JELHNCQUFNdFAsU0FBU2hGLFVBQVU7QUFFekJzVSxzQkFBTUssUUFBUTNVLFVBQVU7QUFDeEJqakIsd0JBQVFxMkIsT0FBTzVvQixTQUFTb3FCLFlBQVlOLEtBQUs7QUFDekNqcEIsc0JBQU13cEIsZ0JBQWdCO2NBQ3ZCO1lBQ0QsQ0FBQTtVQUVGLENBQUM7QUFDRCxnQkFBTUMsZ0JBQWdCL3BCLEtBQUtJLE9BQU87WUFDakN0RyxNQUFNO1lBQ05uSCxNQUFNO1VBQ1AsQ0FBQztBQUNEbzNCLHdCQUFjM3BCLE9BQU87WUFDcEJ0RyxNQUFNO1lBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1VBQ3ZDLENBQUM7QUFDRCxjQUFJeEIsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsSUFBSSxNQUFNLEtBQUtGLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sR0FBRztBQUU3RnN5QiwwQkFBYzNwQixPQUFPO2NBQ3BCdEcsTUFBTTtjQUNOaUgsTUFBTSxDQUNMO2dCQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO2dCQUNwQ2lGLE9BQU87Z0JBQ1ByTCxNQUFNO2dCQUNOb0osU0FBU2hLLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUI7Z0JBQzFEa2MsU0FBU2pqQixRQUFRdUgsUUFBUSx3QkFBd0I7Z0JBQ2pEK0csT0FBUUEsV0FBVTtBQUNqQkEsd0JBQU13cEIsZ0JBQWdCO2dCQUN2QjtjQUNELENBQUE7WUFFRixDQUFDO1VBQ0Y7QUFDQUMsd0JBQWMzcEIsT0FBTztZQUNwQnRHLE1BQU07WUFDTmlILE1BQU0sQ0FDTDtjQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxRQUFRO2NBQ3JDaUYsT0FBTztjQUNQckwsTUFBTTtjQUNOb0osU0FBU2hLLE9BQU9nSCxNQUFNLGNBQWMsYUFBYTtjQUNqRGtjLFNBQVNqakIsUUFBUXVILFFBQVEseUJBQXlCO2NBQ2xEK0csT0FBUUEsV0FBVTtBQUNqQkEsc0JBQU13cEIsZ0JBQWdCO2NBQ3ZCO1lBQ0QsQ0FBQTtVQUVGLENBQUM7QUFDREMsd0JBQWMzcEIsT0FBTztZQUNwQnRHLE1BQU07WUFDTmlILE1BQU0sQ0FDTDtjQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO2NBQzFDaUYsT0FBTztjQUNQckwsTUFBTTtjQUNOb0osU0FBU2hLLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUI7Y0FDMUR1SCxPQUFRQSxXQUFVO0FBQ2pCdE8sd0JBQVFxMkIsT0FBTzVvQixTQUFTb3FCLFlBQVl2cEIsTUFBTWdDLE9BQU90QyxJQUFJO0FBQ3JETSxzQkFBTXdwQixnQkFBZ0I7Y0FDdkI7WUFDRCxDQUFBO1VBRUYsQ0FBQztBQUNEQyx3QkFBYzNwQixPQUFPO1lBQ3BCdEcsTUFBTTtZQUNOaUgsTUFBTSxDQUNMO2NBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFVBQVU7Y0FDekNpRixPQUFPO2NBQ1ByTCxNQUFNO2NBQ05vSixTQUFTaEssT0FBT2dILE1BQ2YsMENBQ0Esd0NBQ0Q7Y0FDQWtjLFNBQVM7WUFDVixDQUFBO1VBRUYsQ0FBQztRQUNGO0FBQ0EsY0FBTStVLGFBQWFocUIsS0FBS0ksT0FBTztVQUM5QnRHLE1BQU07VUFDTm5ILE1BQU07UUFDUCxDQUFDO0FBQ0QsWUFBSVYsU0FBU2dCLGFBQWE7QUFDekIrMkIscUJBQVc1cEIsT0FBTztZQUNqQnRHLE1BQU07WUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDdkMsQ0FBQztRQUNGO0FBQ0FpeEIsbUJBQVc1cEIsT0FBTztVQUNqQnRHLE1BQU07VUFDTmlILE1BQU0sQ0FDTDtZQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO1lBQzVDaUYsT0FBTztZQUNQckwsTUFBTTtZQUNOb0osU0FBU2hLLE9BQU9nSCxNQUNmLG1DQUNBLGlDQUNEO1lBQ0FrYyxTQUNDLENBQUNoakIsU0FBU2dCLGVBQ1YsRUFBRWpCLFFBQVFxMkIsT0FBT0ksVUFBVXoyQixRQUFRdUgsUUFBUSw0QkFBNEI7WUFDeEUrRyxPQUFRQSxXQUFVO0FBQ2pCQSxvQkFBTXdwQixnQkFBZ0I7WUFDdkI7VUFDRCxHQUNBO1lBQ0N6cEIsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ2lGLE9BQU87WUFDUHJMLE1BQU07WUFDTm9KLFNBQVNoSyxPQUFPZ0gsTUFDZixpQ0FDQSwrQkFDRDtVQUNELEdBQ0E7WUFDQ3NILE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7WUFDaERpRixPQUFPO1lBQ1ByTCxNQUFNO1lBQ05vSixTQUFTaEssT0FBT2dILE1BQ2YsaUVBQ0EsK0RBQ0Q7VUFDRCxHQUNBO1lBQ0NzSCxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1lBQ3RDaUYsT0FBTztZQUNQckwsTUFBTTtZQUNOb0osU0FBU2hLLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUI7WUFDMUR1SCxPQUFRQSxXQUFVO0FBQ2pCdE8sc0JBQVFxMkIsT0FBTzVvQixTQUFTb3FCLFlBQVl2cEIsTUFBTWdDLE9BQU90QyxJQUFJO0FBQ3JETSxvQkFBTXdwQixnQkFBZ0I7WUFDdkI7VUFDRCxDQUFBO1FBRUYsQ0FBQztBQUNEOXBCLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTkYsSUFBSTtRQUNMLENBQUM7QUFDRG9HLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFDYixvQ0FDQSxrQ0FDRDtRQUNELENBQUM7QUFDRCxZQUFJL0csUUFBUXVILFFBQVEsc0JBQXNCLE1BQU0sY0FBYztBQUM3RHlHLGVBQUtJLE9BQU87WUFDWHRHLE1BQU07WUFDTmlCLFdBQVc7VUFDWixDQUFDO1FBQ0Y7QUFFQSxjQUFNMkYsU0FBU1YsS0FBS1csT0FBTztBQUMzQm9JLGVBQU9uSSxXQUFXRixNQUFNO0FBQ3hCcUksZUFBT2xJLFFBQVE7QUFDZjdPLGdCQUFRcTJCLE9BQU81b0IsU0FBU29xQixZQUFZbnBCLE1BQU07QUFFMUMxTyxnQkFBUXEyQixPQUFPNW9CLFNBQVN3cUIsbUJBQW1CO01BQzVDO0FBQ0FqNEIsY0FBUXEyQixPQUFPNW9CLFNBQVN5cUIsVUFBV2xxQixVQUFTO0FBQzNDLFlBQUkwb0IsT0FBTzEyQixRQUFRcTJCLE9BQU9LLEtBQUtPO0FBQy9CLFlBQUlqcEIsS0FBS21xQixZQUFZLENBQUNucUIsS0FBS21xQixTQUFTbFYsU0FBUztBQUM1QyxjQUFJalYsS0FBSzBwQixZQUFZelUsU0FBUztBQUM3QnlULG1CQUFPMTJCLFFBQVFxMkIsT0FBT0ssS0FBS0c7VUFDNUIsT0FBTztBQUNOSCxtQkFBTzEyQixRQUFRcTJCLE9BQU9LLEtBQUtDO1VBQzVCO1FBQ0QsV0FBVzNvQixLQUFLaWEsU0FBU2hGLFNBQVM7QUFDakN5VCxpQkFBTzEyQixRQUFRcTJCLE9BQU9LLEtBQUtLO1FBQzVCLE9BQU87QUFDTkwsaUJBQU8xMkIsUUFBUXEyQixPQUFPSyxLQUFLTztRQUM1QjtBQUNBLFlBQUlqM0IsUUFBUXVILFFBQVEsc0JBQXNCLE1BQU0sY0FBYztBQUM3RG12QjtRQUNEO0FBQ0EsZUFBT0E7TUFDUjtBQUNBMTJCLGNBQVFxMkIsT0FBTzVvQixTQUFTb3FCLGNBQWU3cEIsVUFBUztBQUMvQyxjQUFNdUUsWUFBWWhOLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CO0FBRW5ELGNBQU1peEIsT0FBTzEyQixRQUFRcTJCLE9BQU81b0IsU0FBU3lxQixRQUFRbHFCLElBQUk7QUFDakQsY0FBTW9xQixjQUFjcDRCLFFBQVFxMkIsT0FBT0ssS0FBS1MsUUFBUVQsSUFBSTtBQUNwRCxZQUFJMEIsYUFBYTtBQUNoQnY0QixnQkFBTXlILEtBQUssdUJBQXVCLEVBQUVnaUIsS0FBSztBQUN6Q3pwQixnQkFBTXlILEtBQUssb0JBQW9CLEVBQUUraEIsS0FBSztBQUN0Q3hwQixnQkFBTXlILEtBQUsseUJBQXlCLEVBQUVPLEtBQUs5SCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztRQUN4RSxPQUFPO0FBQ05sSCxnQkFBTXlILEtBQUssdUJBQXVCLEVBQUUraEIsS0FBSztBQUN6Q3hwQixnQkFBTXlILEtBQUssb0JBQW9CLEVBQUVnaUIsS0FBSztBQUN0Q3pwQixnQkFBTXlILEtBQUsseUJBQXlCLEVBQUVPLEtBQUs5SCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztRQUN4RTtBQUNBLGNBQU02SixZQUFZLElBQUkzUSxTQUFTZ08sVUFBVWdELFFBQVE7VUFDaERuSixNQUFNO1VBQ05uSCxNQUFNO1FBQ1AsQ0FBQztBQUNELFlBQ0MrMUIsU0FBUzEyQixRQUFRcTJCLE9BQU9LLEtBQUtNLDBCQUM3Qk4sU0FBUzEyQixRQUFRcTJCLE9BQU9LLEtBQUtJLHlCQUM1QjtBQUNELGdCQUFNdUIsZUFBZXI0QixRQUFRcTJCLE9BQU9LLEtBQUtTLFFBQVFULElBQUksSUFBSSxrQkFBa0I7QUFDM0U5bEIsb0JBQVV4QyxPQUFPO1lBQ2hCdEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUMvQyxDQUFDO0FBQ0Q2SixvQkFBVXhDLE9BQU87WUFDaEJ0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ04wTixPQUFPK3BCLGNBQWNyNEIsT0FBT2dILE1BQU0sUUFBUSxNQUFNLElBQUloSCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDL0V1SCxPQUFRQSxXQUFVO0FBQ2pCdE8sc0JBQVFxMkIsT0FBTzVvQixTQUFTNHFCLFlBQVksRUFBRS9wQixLQUFLO0FBQzNDQSxvQkFBTXdwQixnQkFBZ0I7WUFDdkI7VUFDRCxDQUFDO1FBQ0Y7QUFDQSxjQUFNUSxrQkFBa0J0NEIsUUFBUXEyQixPQUFPSyxLQUFLVyxXQUFXWCxJQUFJLElBQUksYUFBYTtBQUM1RSxZQUFJMEIsYUFBYTtBQUNoQnhuQixvQkFBVXhDLE9BQU87WUFDaEJ0RyxNQUFNO1lBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxNQUFNO1VBQ3BDLENBQUM7QUFDRDZKLG9CQUFVeEMsT0FBTztZQUNoQnRHLE1BQU13d0I7WUFDTjMzQixNQUFNO1lBQ05vTyxNQUFNL08sUUFBUXEyQixPQUFPa0MsZ0JBQWdCdjRCLFFBQVFxMkIsT0FBT21DLGlCQUFpQjlCLElBQUk7VUFDMUUsQ0FBQztRQUNGO0FBQ0EsZ0JBQVFua0IsV0FBQTtVQUNQLEtBQUs7QUFFSjNCLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7WUFDL0IsQ0FBQztBQUNENkosc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTXd3QjtjQUNOMzNCLE1BQU07Y0FDTm9PLE1BQU0vTyxRQUFRcTJCLE9BQU9rQyxnQkFBZ0J2NEIsUUFBUXEyQixPQUFPb0MsYUFBYS9CLElBQUk7WUFDdEUsQ0FBQztBQUNEO1VBQ0QsS0FBSztBQUVKOWxCLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLE9BQU87WUFDbkMsQ0FBQztBQUNENkosc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTXd3QjtjQUNOMzNCLE1BQU07Y0FDTm9PLE1BQU0vTyxRQUFRcTJCLE9BQU9rQyxnQkFBZ0J2NEIsUUFBUXEyQixPQUFPcUMsVUFBVWhDLElBQUk7WUFDbkUsQ0FBQztBQUNEO1VBQ0QsS0FBSztBQUVKLGdCQUFJbnhCLEdBQUcwRSxLQUFLdUQsWUFBWWpJLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLENBQUMsR0FBRztBQUM3RG1MLHdCQUFVeEMsT0FBTztnQkFDaEJ0RyxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsUUFBUTtjQUN0QyxDQUFDO0FBQ0Q2Six3QkFBVXhDLE9BQU87Z0JBQ2hCdEcsTUFBTXd3QjtnQkFDTjMzQixNQUFNO2dCQUNOb08sTUFBTS9PLFFBQVFxMkIsT0FBT2tDLGdCQUFnQnY0QixRQUFRcTJCLE9BQU9zQyxjQUFjakMsSUFBSTtjQUN2RSxDQUFDO1lBQ0Y7QUFDQTtVQUNELEtBQUs7QUFFSjlsQixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1lBQy9CLENBQUM7QUFDRDZKLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU13d0I7Y0FDTjMzQixNQUFNO2NBQ05vTyxNQUFNL08sUUFBUXEyQixPQUFPa0MsZ0JBQWdCdjRCLFFBQVFxMkIsT0FBT3VDLFVBQVVsQyxJQUFJO1lBQ25FLENBQUM7QUFDRCxnQkFBSSxDQUFDMTJCLFFBQVFxMkIsT0FBT0ssS0FBS1MsUUFBUVQsSUFBSSxHQUFHO0FBQ3ZDOWxCLHdCQUFVeEMsT0FBTztnQkFDaEJ0RyxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUNiLHFDQUNBLG1DQUNEO2NBQ0QsQ0FBQztZQUNGO0FBQ0E7VUFDRCxLQUFLO0FBRUo2SixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1lBQy9CLENBQUM7QUFDRDZKLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU13d0I7Y0FDTjMzQixNQUFNO2NBQ05vTyxNQUFNL08sUUFBUXEyQixPQUFPa0MsZ0JBQWdCdjRCLFFBQVFxMkIsT0FBT3dDLGNBQWNuQyxJQUFJO1lBQ3ZFLENBQUM7QUFDRDtVQUNELEtBQUs7QUFFSjlsQixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ051RyxPQUFPO1lBQ1IsQ0FBQztBQUNEdUMsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTXd3QjtjQUNOMzNCLE1BQU07Y0FDTm9PLE1BQU0vTyxRQUFRcTJCLE9BQU9rQyxnQkFBZ0J2NEIsUUFBUXEyQixPQUFPeUMsV0FBV3BDLElBQUk7WUFDcEUsQ0FBQztBQUNEO1VBQ0QsTUFBS25rQixZQUFZLE1BQU0sS0FBS0EsY0FBYztBQUV6QzNCLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7WUFDakMsQ0FBQztBQUNENkosc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTXd3QjtjQUNOMzNCLE1BQU07Y0FDTm9PLE1BQU0vTyxRQUFRcTJCLE9BQU9rQyxnQkFBZ0J2NEIsUUFBUXEyQixPQUFPMEMsVUFBVXJDLElBQUk7WUFDbkUsQ0FBQztBQUNEO1VBQ0Q7QUFDQztRQUNGO0FBRUEsWUFBSXNDLGtCQUFrQmg1QixRQUFRcTJCLE9BQU80QztBQUNyQyxZQUFJLENBQUNqNUIsUUFBUXEyQixPQUFPSyxLQUFLUyxRQUFRVCxJQUFJLEdBQUc7QUFDdkNzQyw0QkFBa0IsQ0FBQyxHQUFHaDVCLFFBQVFxMkIsT0FBT21DLGlCQUFpQixJQUFBLEdBQUd0QyxtQkFBQTNILGVBQWN5SyxlQUFlLENBQUM7UUFDeEY7QUFDQXBvQixrQkFBVXhDLE9BQU87VUFDaEJ0RyxNQUFNO1VBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1FBQy9CLENBQUM7QUFDRDZKLGtCQUFVeEMsT0FBTztVQUNoQnRHLE1BQU13d0I7VUFDTjMzQixNQUFNO1VBQ05vTyxNQUFNL08sUUFBUXEyQixPQUFPa0MsZ0JBQWdCUyxpQkFBaUJ0QyxJQUFJO1FBQzNELENBQUM7QUFDRCxZQUFJLENBQUMxMkIsUUFBUXEyQixPQUFPSyxLQUFLUyxRQUFRVCxJQUFJLEdBQUc7QUFDdkM5bEIsb0JBQVV4QyxPQUFPO1lBQ2hCdEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUNiLDZCQUNBLDJCQUNEO1VBQ0QsQ0FBQztRQUNGO0FBQ0EsWUFBSXhCLEdBQUdDLE9BQU9DLElBQUksY0FBYyxLQUFLeEYsU0FBU2dCLGFBQWE7QUFDMUQyUCxvQkFBVXhDLE9BQU87WUFDaEJ0RyxNQUFNO1lBQ051RyxPQUFPO1VBQ1IsQ0FBQztBQUNEdUMsb0JBQVV4QyxPQUFPO1lBQ2hCdEcsTUFBTXd3QjtZQUNOMzNCLE1BQU07WUFDTm9PLE1BQU0vTyxRQUFRcTJCLE9BQU9rQyxnQkFBZ0J2NEIsUUFBUXEyQixPQUFPNkMsY0FBY3hDLElBQUk7VUFDdkUsQ0FBQztRQUNGO0FBQ0EsY0FBTSxDQUFDaG1CLFFBQVEsSUFBSXpRLFNBQVNnTyxVQUFVMEMsWUFBWTNDLE1BQU0sV0FBVztBQUNuRUEsYUFBS3FELGFBQWFULFVBQVVqQyxPQUFPLEdBQUcrQixRQUFRO0FBRTlDLFlBQUkwbkIsZUFBZXA0QixRQUFRcTJCLE9BQU9JLFFBQVE7QUFDekMsZ0JBQU0sQ0FBQzBDLFlBQVksSUFBSXQ1QixNQUFNeUgsS0FBSywrQkFBK0I7QUFDakUsY0FBSTZ4QixjQUFjO0FBQ2pCLGdCQUFJbjVCLFFBQVF1SCxRQUFRLHNCQUFzQixNQUFNLGNBQWM7QUFFN0Q0eEIsMkJBQWFDLE1BQU07QUFDbkJELDJCQUFhN3dCLFdBQVdXLFlBQVlrd0IsYUFBYWhRLFFBQVE7WUFDMUQ7QUFDQWdRLHlCQUFhaFEsU0FBU2poQixjQUFjLE9BQU8sRUFBRThELFFBQVFxdEIsbUJBQ3BEeDVCLE1BQU15SCxLQUFLLGdCQUFnQixFQUFFTyxLQUFLLENBQ25DLEVBQUVrTCxRQUFRLE9BQU8sR0FBRztVQUNyQjtRQUNEO0FBRUEsWUFBSTlLLFNBQVNDLGNBQWMsbUJBQW1CLEtBQUtsSSxRQUFRdUgsUUFBUSxnQkFBZ0IsR0FBRztBQUNyRlUsbUJBQVNDLGNBQWMsbUJBQW1CLEVBQUV1RyxRQUMzQztBQUNEeEcsbUJBQVNDLGNBQWMsbUJBQW1CLEVBQUVveEIsT0FBTyxDQUFDLEVBQUU3cUIsUUFBUTtRQUMvRDtBQUNBLFlBQUksQ0FBQzJwQixlQUFlN3lCLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLE1BQU0sWUFBWTtBQUN2RTVGLGdCQUFNeUgsS0FBSyxvQkFBb0IsRUFBRStoQixLQUFLO0FBQ3RDeHBCLGdCQUFNeUgsS0FBSyxrQkFBa0IsRUFBRWl5QixNQUFNO0FBQ3JDLGdCQUFNOXBCLFVBQVUsQ0FDZjFQLE9BQU9nSCxNQUFNLHNCQUFzQixvQkFBb0IsR0FDdkR4QixHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQixHQUNsQzFGLE9BQU9nSCxNQUFNLG9CQUFvQixrQkFBa0IsR0FDbkRwSCxFQUFFLEtBQUssRUFDTGlYLEtBQUs7WUFDTHRHLFFBQVE7WUFDUm9hLEtBQUs7WUFDTGxoQixNQUFNakUsR0FBRzBFLEtBQUtNLE9BQU8sY0FBYztVQUNwQyxDQUFDLEVBQ0ExQyxLQUFLOUgsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWMsQ0FBQyxFQUFFLENBQUMsR0FDdEQsR0FBQTtBQUVEbEgsZ0JBQU15SCxLQUFLLGtCQUFrQixFQUFFOEcsT0FBT3FCLE9BQU87QUFDN0N4UCxtQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztRQUM5QyxPQUFPO0FBQ050VSxtQkFBUzJOLGFBQWEyRyxrQkFBa0IsSUFBSTtRQUM3QztNQUNEO0FBQ0F2VSxjQUFRcTJCLE9BQU81b0IsU0FBU3dxQixxQkFBcUIsTUFBTTtBQUNsRCxjQUFNbnBCLFFBQVE7VUFDYnRFLFFBQVE7VUFDUnlFLFFBQVE7VUFDUkYsTUFBTTtVQUNObVcsUUFBUTtVQUNSc1UsVUFBVTs7VUFFVnBVLFNBQVM3ZixHQUFHQyxPQUFPQyxJQUFJLFlBQVk7VUFDbkNnMEIsUUFBUTs7VUFFUnRVLFNBQVM7O1FBRVY7QUFFQSxZQUFJbGxCLFNBQVNxTCxLQUFLQyxJQUFJeEwsT0FBT2dILE1BQU0sV0FBVyxTQUFTLEdBQUcrSCxPQUFRTSxZQUFXO0FBQzVFLGdCQUFNc3FCLFdBQVd0cUIsT0FBT0UsWUFBWTtBQUNwQyxnQkFBTXFxQixXQUFXRCxTQUFTNXFCLE1BQU1nVyxVQUFVbGtCO0FBQzFDLGNBQUkrNEIsVUFBVTtBQUNiLGdCQUFJbHFCLFVBQVUxUCxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7QUFDdkMsZ0JBQUkyeUIsU0FBU0UsVUFBVTtBQUN0Qm5xQix5QkFBVzFQLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtZQUNuQztBQUNBMEksdUJBQUEsR0FBQXJILE9BQWN1eEIsVUFBUSxHQUFBO0FBRXRCLGdCQUFJQSxZQUFZLEdBQUc7QUFDbEI5NUIsb0JBQU15SCxLQUFLLHVCQUF1QixFQUFFNEMsSUFBSSxTQUFTLFNBQVM7WUFDM0Q7QUFFQSxrQkFBTUYsT0FBTy9KLFNBQVM0TSxTQUFTLEtBQUs5TSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztBQUNoRWlELGlCQUFLbEIsYUFDSixRQUNBdkQsR0FBRzBFLEtBQUtNLE9BQU8sZUFBZTtjQUM3QmlJLE1BQU1qTixHQUFHQyxPQUFPQyxJQUFJLFlBQVk7WUFDakMsQ0FBQyxDQUNGO0FBQ0F1RSxpQkFBS2xCLGFBQWEsVUFBVSxRQUFRO0FBQ3BDa0IsaUJBQUtsQixhQUFhLE9BQU8scUJBQXFCO0FBQzlDakosa0JBQU15SCxLQUFLLHVCQUF1QixFQUFFTyxLQUFLNEgsT0FBTztBQUNoRDVQLGtCQUFNeUgsS0FBSyx1QkFBdUIsRUFBRThHLE9BQU9wRSxJQUFJO1VBQ2hEO1FBQ0QsQ0FBQyxFQUFFNkYsS0FBSztNQUNUO0FBQ0E3UCxjQUFRcTJCLE9BQU9rQyxrQkFBa0IsQ0FBQ3hwQixNQUFNMm5CLFNBQVM7QUFFaEQsY0FBTTBCLGNBQWNwNEIsUUFBUXEyQixPQUFPSyxLQUFLUyxRQUFRVCxJQUFJO0FBQ3BELGNBQU16TyxXQUFXam9CLFFBQVFxMkIsT0FBT0ssS0FBS1csV0FBV1gsSUFBSTtBQUNwRCxjQUFNVSxrQkFBa0JwM0IsUUFBUXEyQixPQUFPSyxLQUFLVSxnQkFBZ0JWLElBQUk7QUFDaEUsY0FBTW1ELHNCQUF1Qm53QixPQUFNO0FBQ2xDL0osWUFBRStKLEVBQUU0RyxPQUFPdEMsSUFBSSxFQUFFMUcsS0FBSyxPQUFPLEVBQUV3USxLQUFLLFlBQVksSUFBSTtBQUNwRG5ZLFlBQUUrSixFQUFFNEcsT0FBT3RDLElBQUksRUFBRThyQixTQUFTLEVBQUU1dkIsSUFBSSxTQUFTLE1BQU07QUFDL0N2SyxZQUFFK0osRUFBRTRHLE1BQU0sRUFBRW9ULE9BQU8sRUFBRXhaLElBQUksU0FBUyxPQUFPLEVBQUU1QyxLQUFLLE9BQU8sRUFBRXdRLEtBQUssWUFBWSxLQUFLO0FBQy9FblksWUFBRStKLEVBQUU0RyxNQUFNLEVBQUVvVCxPQUFPLEVBQUVwYyxLQUFLLFlBQVksRUFBRSxDQUFDLEVBQUV5eUIsTUFBTTtBQUNqRHJ3QixZQUFFb3VCLGdCQUFnQjtRQUNuQjtBQUNBLGNBQU1rQyx3QkFBeUJ0d0IsT0FBTTtBQUNwQyxnQkFBTTJ1QixlQUFlcjRCLFFBQVFxMkIsT0FBT0ssS0FBS1MsUUFBUVQsSUFBSSxJQUFJLGtCQUFrQjtBQUMzRTEyQixrQkFBUXEyQixPQUFPNW9CLFNBQVM0cUIsWUFBWSxFQUFFM3VCLENBQUM7QUFDdkNBLFlBQUVvdUIsZ0JBQWdCO1FBQ25CO0FBQ0EsZUFBT21DLE1BQU1DLFVBQVV4bkIsSUFBSXluQixLQUFLcHJCLE1BQU9xckIsaUJBQWdCO0FBQ3RELGdCQUFNQyxZQUFZO1lBQ2pCLEdBQUdEO1VBQ0o7QUFDQSxjQUFJblMsVUFBVTtBQUNiLGdCQUFJb1MsVUFBVUMsa0JBQWtCO0FBQy9CLHFCQUFPO1lBQ1I7QUFDQSxnQkFBSUQsVUFBVUUsMEJBQTBCO0FBQ3ZDRix3QkFBVWxSLFdBQVc7WUFDdEI7VUFDRCxPQUFPO0FBQ04sZ0JBQUlrUixVQUFVRyxnQkFBZ0I7QUFDN0IscUJBQU87WUFDUjtBQUNBLGdCQUFJSCxVQUFVSSx3QkFBd0I7QUFDckNKLHdCQUFVbFIsV0FBVztZQUN0QjtVQUNEO0FBQ0EsY0FBSWlQLGFBQWE7QUFDaEIsZ0JBQUlpQyxVQUFVSyxlQUFlO0FBQzVCLHFCQUFPO1lBQ1I7QUFDQSxnQkFBSUwsVUFBVU0sdUJBQXVCO0FBQ3BDTix3QkFBVWxSLFdBQVc7WUFDdEI7VUFDRCxPQUFPO0FBQ04sZ0JBQUlrUixVQUFVTyxjQUFjO0FBQzNCLHFCQUFPO1lBQ1I7QUFDQSxnQkFBSVAsVUFBVVEsc0JBQXNCO0FBQ25DUix3QkFBVWxSLFdBQVc7WUFDdEI7VUFDRDtBQUNBLGNBQUk1akIsR0FBR0MsT0FBT0MsSUFBSSxjQUFjLEtBQUs0MEIsVUFBVVMsa0JBQWtCO0FBQ2hFLG1CQUFPO1VBQ1I7QUFDQSxjQUNDVCxVQUFVVSxvQkFDVixDQUFDVixVQUFVVSxpQkFBaUI1eEIsU0FBUzVELEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLENBQUMsR0FDdEU7QUFDRCxtQkFBTztVQUNSLFdBQ0M0MEIsVUFBVVcsb0JBQ1ZYLFVBQVVXLGlCQUFpQjd4QixTQUFTNUQsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsQ0FBQyxHQUNyRTtBQUNELG1CQUFPO1VBQ1I7QUFDQSxjQUFJNDBCLFVBQVVsUixZQUFZLENBQUNpTyxpQkFBaUI7QUFDM0NpRCxzQkFBVWxSLFlBQUEsR0FBVytNLG1CQUFBM0gsZUFBYzhMLFVBQVVsUixVQUFVO2NBQ3REcmhCLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU8rcEIsY0FBY3I0QixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFBSWhILE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtjQUMvRXVILE9BQU8wckI7WUFDUixDQUFDO0FBRURLLHNCQUFVL3JCLFFBQVF1ckI7VUFDbkI7QUFDQSxjQUFJekIsYUFBYTtBQUNoQixrQkFBTTZDLGdCQUFnQlosVUFBVS9yQjtBQUNoQytyQixzQkFBVS9yQixRQUFTNUUsT0FBTTtBQUN4QixrQkFBSXVlLFVBQVU7QUFDYix1QkFBT2dULGNBQWN2eEIsQ0FBQztjQUN2QjtBQUNBLG9CQUFNd3hCLHNCQUFzQmw3QixRQUFRcTJCLE9BQU84RSxjQUFjenhCLEVBQUU0RyxPQUFPdEUsS0FBSztBQUN2RW5NLG9CQUNFeUgsS0FBSyxxQkFBcUIsRUFDMUJ3USxLQUNBLFdBQ0E5WCxRQUFRdUgsUUFBUSxnQ0FBZ0MsRUFBRTRCLFNBQVMreEIsbUJBQW1CLENBQy9FO0FBQ0Qsa0JBQUlELGVBQWU7QUFDbEIsdUJBQU9BLGNBQWN2eEIsQ0FBQztjQUN2QjtZQUNEO1VBQ0Q7QUFDQSxpQkFBTzJ3QjtRQUNSLENBQUM7TUFDRjtBQUNBcjZCLGNBQVFxMkIsT0FBT21DLGtCQUFrQixDQUNoQztRQUNDbnFCLE9BQUEsUUFBQWpHLE9BQWVuSSxTQUFTZ0IsY0FBYyxjQUFjLEVBQUU7UUFDdEQrSyxPQUFPO1FBQ1BqQyxTQUFTO1FBQ1RvZixVQUFVO1VBQ1R4b0IsTUFBTTtVQUNObUgsTUFBTTtVQUNOdUcsT0FBTztVQUNQbUosTUFBTTtRQUNQO01BQ0QsQ0FBQTtBQUVEeFgsY0FBUXEyQixPQUFPdUMsV0FBVyxDQUN6QjtRQUNDdnFCLE9BQU87UUFDUHJDLE9BQU87UUFDUGpDLFNBQ0M7TUFDRixHQUNBO1FBQ0NzRSxPQUFPO1FBQ1ByQyxPQUFPO1FBQ1BqQyxTQUNDO1FBQ0RvZixVQUFVO1VBQ1R4b0IsTUFBTTtVQUNObUgsTUFBTTtVQUNOdUcsT0FBTztVQUNQdEUsU0FBUztRQUNWO01BQ0QsQ0FBQTtBQUVEL0osY0FBUXEyQixPQUFPb0MsY0FBYyxDQUM1QjtRQUNDcHFCLE9BQU87UUFDUHJDLE9BQU87UUFDUGpDLFNBQ0M7TUFDRixHQUNBO1FBQ0NzRSxPQUFPO1FBQ1ByQyxPQUFPO1FBQ1BqQyxTQUNDO1FBQ0RvZixVQUFVO1VBQ1R4b0IsTUFBTTtVQUNObUgsTUFBTTtVQUNOdUcsT0FBTztVQUNQdEUsU0FBUztVQUNUeU4sTUFBTTtRQUNQO01BQ0QsR0FDQTtRQUNDbkosT0FBTztRQUNQckMsT0FBTztRQUNQakMsU0FDQztNQUNGLENBQUE7QUFFRC9KLGNBQVFxMkIsT0FBT3dDLGVBQWUsQ0FDN0I7UUFDQ3hxQixPQUFPO1FBQ1ByQyxPQUFPO1FBQ1BqQyxTQUFTO01BQ1YsQ0FBQTtBQUVEL0osY0FBUXEyQixPQUFPeUMsWUFBWSxDQUMxQjtRQUNDenFCLE9BQU87UUFDUHJDLE9BQU87UUFDUGpDLFNBQVM7TUFDVixDQUFBO0FBRUQvSixjQUFRcTJCLE9BQU9xQyxXQUFXLENBQ3pCO1FBQ0NycUIsT0FBTztRQUNQckMsT0FBTztRQUNQakMsU0FBUztNQUNWLENBQUE7QUFFRC9KLGNBQVFxMkIsT0FBTzRDLGNBQWMsQ0FDNUI7UUFDQzVxQixPQUFPO1FBQ1ByQyxPQUFPO1FBQ1BqQyxTQUNDO01BQ0YsR0FDQTtRQUNDc0UsT0FBTztRQUNQckMsT0FBTztRQUNQakMsU0FDQztNQUNGLEdBQ0E7UUFDQ3NFLE9BQU87UUFDUHJDLE9BQU87UUFDUGpDLFNBQ0M7TUFDRixHQUNBO1FBQ0NzRSxPQUFPO1FBQ1ByQyxPQUFPO1FBQ1BqQyxTQUNDO1FBQ0RvZixVQUFVLENBQ1Q7VUFDQ3hvQixNQUFNO1VBQ05tSCxNQUFNO1VBQ051RyxPQUFPO1VBQ1BtSixNQUFNO1FBQ1AsQ0FBQTtRQUVEK2lCLDBCQUEwQjtNQUMzQixHQUNBO1FBQ0Nsc0IsT0FBTztRQUNQckMsT0FBTztRQUNQakMsU0FDQztNQUNGLEdBQ0E7UUFDQ3NFLE9BQU87UUFDUHJDLE9BQU87UUFDUGpDLFNBQ0M7UUFDRG9mLFVBQVU7VUFDVHhvQixNQUFNO1VBQ05tSCxNQUFNO1VBQ051RyxPQUFPO1VBQ1BtSixNQUFNO1FBQ1A7UUFDQW1qQix1QkFBdUI7TUFDeEIsR0FDQTtRQUNDdHNCLE9BQU87UUFDUHJDLE9BQU87UUFDUGpDLFNBQ0M7TUFDRixHQUNBO1FBQ0NzRSxPQUFPO1FBQ1ByQyxPQUFPO1FBQ1BqQyxTQUFTO01BQ1YsR0FDQTtRQUNDc0UsT0FBTztRQUNQckMsT0FBTztRQUNQakMsU0FDQztNQUNGLENBQUE7QUFFRC9KLGNBQVFxMkIsT0FBTzZDLGVBQWUsQ0FDN0I7UUFDQzdxQixPQUFPO1FBQ1ByQyxPQUFPO1FBQ1BqQyxTQUNDO1FBQ0RvZixVQUFVO1VBQ1R4b0IsTUFBTTtVQUNObUgsTUFBTTtVQUNOdUcsT0FBTztVQUNQVSxNQUFNLENBQ0w7WUFDQ1YsT0FBTztZQUNQckMsT0FBTztVQUNSLEdBQ0E7WUFDQ3FDLE9BQU87WUFDUHJDLE9BQU87VUFDUixHQUNBO1lBQ0NxQyxPQUFPO1lBQ1ByQyxPQUFPO1VBQ1IsR0FDQTtZQUNDcUMsT0FBTztZQUNQckMsT0FBTztVQUNSLEdBQ0E7WUFDQ3FDLE9BQU87WUFDUHJDLE9BQU87VUFDUixHQUNBO1lBQ0NxQyxPQUFPO1lBQ1ByQyxPQUFPO1VBQ1IsQ0FBQTtRQUVGO01BQ0QsR0FDQTtRQUNDcUMsT0FBTztRQUNQckMsT0FBTztRQUNQakMsU0FDQztRQUNEb2YsVUFBVTtVQUNUeG9CLE1BQU07VUFDTm1ILE1BQU07VUFDTnVHLE9BQU87VUFDUFUsTUFBTSxDQUNMO1lBQ0NWLE9BQU87WUFDUHJDLE9BQU87VUFDUixHQUNBO1lBQ0NxQyxPQUFPO1lBQ1ByQyxPQUFPO1VBQ1IsR0FDQTtZQUNDcUMsT0FBTztZQUNQckMsT0FBTztVQUNSLEdBQ0E7WUFDQ3FDLE9BQU87WUFDUHJDLE9BQU87VUFDUixHQUNBO1lBQ0NxQyxPQUFPO1lBQ1ByQyxPQUFPO1VBQ1IsR0FDQTtZQUNDcUMsT0FBTztZQUNQckMsT0FBTztVQUNSLENBQUE7UUFFRjtNQUNELENBQUE7QUFFRGhNLGNBQVFxMkIsT0FBTzhFLGdCQUFnQjtRQUM5QnRwQixRQUFRO1FBQ1JvVyxVQUFVO1FBQ1YsbUJBQW1CO1FBQ25CbVQsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLElBQUk7UUFDSkMsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLElBQUk7UUFDSkMsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLElBQUk7UUFDSkMsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLElBQUk7UUFDSkMsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLElBQUk7UUFDSkMsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLElBQUk7UUFDSkMsSUFBSTtRQUNKQyxJQUFJO1FBQ0pDLElBQUk7UUFDSkMsSUFBSTtNQUNMO0FBQ0F6OEIsY0FBUXEyQixPQUFPMWUsWUFBWTtRQUMxQitrQiwwQkFBMkJwZ0IsWUFBVztBQUNyQyxjQUFJcWdCO0FBQ0osY0FBSUM7QUFDSixjQUFJQztBQUNKLGNBQUl2Z0IsT0FBT3dnQixZQUFZbDhCLFNBQVMsR0FBRztBQUNsQys3QixtQkFBTztBQUNQcmdCLG1CQUFPeWdCLFdBQVcsQ0FBQztBQUFBLGdCQUFBQyxjQUFBdHhCLDJCQUNTNFEsT0FBT3dnQixZQUFZbmlCLFFBQVEsQ0FBQSxHQUFBc2lCO0FBQUEsZ0JBQUE7QUFBdkQsbUJBQUFELFlBQUFweEIsRUFBQSxHQUFBLEVBQUFxeEIsVUFBQUQsWUFBQW54QixFQUFBLEdBQUFDLFFBQTBEO0FBQUEsc0JBQS9DLENBQUNvSSxPQUFPZ3BCLElBQUksSUFBQUQsUUFBQWp4QjtBQUN0QixvQkFBSWt4QixTQUFTLE1BQU07QUFDbEJQLDBCQUFBLElBQUF2MEIsT0FBWTgwQixLQUFLQyxZQUFZLENBQUM7Z0JBQy9CO0FBQ0FQLDZCQUFhdGdCLE9BQU84Z0IsZUFBZWxwQixLQUFLLEtBQUssQ0FBQTtBQUM3QywyQkFBV21wQixNQUFNVCxZQUFZO0FBQzVCLHNCQUFJLE9BQU9BLFdBQVdTLEVBQUUsTUFBTSxVQUFVO0FBQ3ZDViw0QkFBQSxJQUFBdjBCLE9BQVl3MEIsV0FBV1MsRUFBRSxDQUFDO2tCQUMzQjtnQkFDRDtBQUNBL2dCLHVCQUFPeWdCLFdBQVc7a0JBQ2pCLEdBQUd6Z0IsT0FBT3lnQjtrQkFDVixHQUFHLzhCLFFBQVFxMkIsT0FBT2lILHNCQUFzQkosTUFBTU4sVUFBVTtnQkFDekQ7Y0FDRDtZQUFBLFNBQUEzd0IsS0FBQTtBQUFBK3dCLDBCQUFBdHpCLEVBQUF1QyxHQUFBO1lBQUEsVUFBQTtBQUFBK3dCLDBCQUFBOXdCLEVBQUE7WUFBQTtBQUNBeXdCLG9CQUFRO1VBQ1QsT0FBTztBQUNOQyx5QkFBYXRnQixPQUFPOGdCLGVBQWUsQ0FBQyxLQUFLLENBQUE7QUFDekNULG1CQUFPO0FBQ1AsZ0JBQUlyZ0IsT0FBT21ZLE9BQU8sQ0FBQyxNQUFNLFVBQVU7QUFDbENrSSxzQkFBQSxJQUFBdjBCLE9BQVlrVSxPQUFPbVksT0FBTyxDQUFDLENBQUM7WUFDN0I7QUFDQSxpQkFBS29JLEtBQUtELFlBQVk7QUFDckIsa0JBQUksT0FBT0EsV0FBV0MsQ0FBQyxNQUFNLFVBQVU7QUFDdENGLHdCQUFBLElBQUF2MEIsT0FBWXcwQixXQUFXQyxDQUFDLENBQUM7Y0FDMUI7WUFDRDtBQUNBRixvQkFBUTtBQUNScmdCLG1CQUFPeWdCLFdBQVcvOEIsUUFBUXEyQixPQUFPaUgsc0JBQXNCaGhCLE9BQU93Z0IsWUFBWSxDQUFDLEdBQUdGLFVBQVU7VUFDekY7QUFDQSxpQkFBTyxDQUFDRCxNQUFNcmdCLE9BQU95Z0IsUUFBUTtRQUM5QjtRQUNBUSxlQUFlQSxDQUFDOXdCLE9BQU8wUCxVQUFVMU8sYUFBYTtBQUM3QyxnQkFBTXFCLFFBQVE7WUFDYnRFLFFBQVE7WUFDUnNOLE1BQU07WUFDTjBsQixLQUFLO1lBQ0wzMUIsTUFBTXNVO1lBQ05zaEIsY0FBYztZQUNkaHhCO1VBQ0Q7QUFDQSxnQkFBTWl4QixrQkFBa0IsSUFBSXo5QixTQUFTdVUsT0FBT3pVLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQzVFLGdCQUFNNDJCLE9BQU0sSUFBSTE5QixTQUFTcUwsS0FBS0MsSUFDN0J4TCxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsR0FDL0IrSCxPQUNDOHVCLFlBQVc7QUFDWCxrQkFBTS9yQixTQUFTd25CLG1CQUNkMTVCLEVBQUVpK0IsT0FBT3ZKLE9BQU8sRUFBRW5zQixjQUFjLE1BQU0sRUFBRTIxQixXQUFXLENBQUMsRUFBRXhYLFNBQVMsRUFDN0QvZSxLQUFLLGdCQUFnQixFQUNyQk8sS0FBSyxFQUNMa0wsUUFBUSxPQUFPLEdBQUcsQ0FDckI7QUFDQSxnQkFBSWxCLFFBQVE7QUFDWDZyQiw4QkFBZ0J6YyxLQUFLLElBQUk7WUFDMUIsT0FBTztBQUNOeWMsOEJBQWdCdDlCLEtBQUtMLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLENBQUM7WUFDcEU7QUFDQTBHLHFCQUFTb0UsTUFBTTtVQUNoQixHQUNBNnJCLGVBQ0Q7QUFDQUMsZUFBSTl0QixLQUFLO1FBQ1Y7UUFDQWl1QixPQUFPO1VBQ05uZSxNQUFPckQsWUFBVztBQUNqQixnQkFBSXpLO0FBQ0osZ0JBQUksQ0FBQ3lLLE9BQU93Z0IsWUFBWWw4QixVQUFVMGIsT0FBT3dnQixZQUFZLENBQUMsTUFBTSxNQUFNO0FBQ2pFanJCLHVCQUFTa3NCLE9BQU9oK0IsT0FBT2dILE1BQU0sV0FBVyxTQUFTLEdBQUcsRUFBRTtBQUN0RC9HLHNCQUFRcTJCLE9BQU8xZSxVQUFVbW1CLE1BQU1FLFdBQVduc0IsUUFBUXlLLE1BQU07WUFDekQsT0FBTztBQUNOLG9CQUFNLENBQUNxZ0IsSUFBSSxJQUFJMzhCLFFBQVFxMkIsT0FBTzFlLFVBQVUra0IseUJBQXlCcGdCLE1BQU07QUFDdkV0YyxzQkFBUXEyQixPQUFPMWUsVUFBVTRsQixjQUFjaDRCLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFHazNCLE1BQU9zQixrQkFBaUI7QUFDM0Ysb0JBQUkzaEIsT0FBTzRoQixrQkFBa0I7QUFDNUJELGlDQUFlRixPQUNkaCtCLE9BQU9nSCxNQUNOLHlCQUNBLHVCQUNELEdBQ0FrM0IsWUFDRDtnQkFDRDtBQUNBaitCLHdCQUFRcTJCLE9BQU8xZSxVQUFVbW1CLE1BQU1FLFdBQVdDLGNBQWMzaEIsTUFBTTtjQUMvRCxDQUFDO1lBQ0Y7VUFDRDtVQUNBMGhCLFlBQVlBLENBQUNuc0IsUUFBUXlLLFdBQVc7QUFDL0Isa0JBQU02aEIsV0FBVyxJQUFJbCtCLFNBQVNxTCxLQUFLa0gsS0FDbENqTixHQUFHQyxPQUFPQyxJQUFJLFlBQVksR0FDMUIxRixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FDNUI7QUFDQSxnQkFBSThLLFdBQVcsTUFBTTtBQUNwQixxQkFBTzVSLFNBQVN1VSxPQUFPWSxNQUN0QnJWLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUMzQmhILE9BQU9nSCxNQUFNLFdBQVcsVUFBVSxDQUNuQztZQUNELFdBQVcsQ0FBQzhLLFVBQVUsQ0FBQ0EsT0FBT21CLEtBQUssR0FBRztBQUNyQyxxQkFBTy9TLFNBQVN1VSxPQUFPWSxNQUN0QnJWLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUMzQmhILE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0IsQ0FDaEQ7WUFDRDtBQUNBLGtCQUFNcTNCLGFBQWFBLE1BQU07QUFDeEJELHVCQUFTNW9CLGVBQWUxRCxNQUFNO0FBQzlCc3NCLHVCQUFTM29CLGNBQWN4VixRQUFRSyxVQUFVO0FBQ3pDODlCLHVCQUFTcm9CLGFBQWF3RyxPQUFPK2hCLEtBQUs7QUFDbENGLHVCQUFTSCxXQUFXLE1BQU07QUFDekJHLHlCQUFTaHBCLGlCQUFpQixFQUFFOEwsS0FBSyxJQUFJO0FBQ3JDamhCLHdCQUFRcTJCLE9BQU8xZSxVQUFVbW1CLE1BQU1RLFdBQVdoaUIsTUFBTTtjQUNqRCxDQUFDO1lBQ0Y7QUFHQSxnQkFBSUEsT0FBT2lpQixjQUFjO0FBQ3hCSix1QkFBU3pjLHNCQUFzQnBGLE1BQU07QUFDckM2aEIsdUJBQVNLLGVBQWUsTUFBTTtBQUM3QngrQix3QkFBUXEyQixPQUFPMWUsVUFBVW1tQixNQUFNVyxpQkFBaUJOLFFBQVE7QUFDeERDLDJCQUFXO2NBQ1osQ0FBQztZQUNGLE9BQU87QUFDTkEseUJBQVc7WUFDWjtVQUNEO1VBQ0FFLFlBQWFoaUIsWUFBVztBQUV2QixnQkFDQ0EsT0FBT29pQixrQkFDUHBpQixPQUFPcWlCLGVBQWUsUUFDdEIsQ0FBQzEyQixTQUFTQyxjQUFjLFVBQVUsRUFBRTAyQixVQUFVQyxTQUFTLEtBQUssR0FDM0Q7QUFDRCxvQkFBTWpKLFdBQVcsSUFBSTMxQixTQUFTcUwsS0FBS2tILEtBQUEsR0FBQXBLLE9BRWpDN0MsR0FBR0MsT0FBT0MsSUFBSSx1QkFBdUIsRUFBRUYsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLEdBQzlFLEdBQUEsRUFBQTJDLE9BQUk3QyxHQUFHQyxPQUFPQyxJQUFJLFNBQVMsQ0FBQyxHQUM1QjFGLE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxDQUM5QjtBQUNBNnVCLHVCQUFTcmdCLGVBQUEsZ0NBQUFuTixPQUErQ25JLFNBQVNzVyxjQUFZLE9BQUEsQ0FBTztBQUNwRnFmLHVCQUFTcGdCLGNBQWN4VixRQUFRSyxVQUFVO0FBQ3pDdTFCLHVCQUFTb0ksV0FBVztBQUdwQmMseUJBQVcsTUFBTTtBQUNoQjkrQix3QkFBUXEyQixPQUFPMWUsVUFBVW1tQixNQUFNaUIsZ0JBQWdCemlCLE1BQU07Y0FDdEQsR0FBRyxJQUFJO1lBQ1IsT0FBTztBQUNOdGMsc0JBQVFxMkIsT0FBTzFlLFVBQVVtbUIsTUFBTWlCLGdCQUFnQnppQixNQUFNO1lBQ3REO1VBQ0Q7VUFDQXlpQixpQkFBa0J6aUIsWUFBVztBQUU1QixnQkFBSUEsT0FBT3lpQixpQkFBaUI7QUFDM0Isb0JBQU1qd0IsUUFBUTtnQkFDYnRFLFFBQVE7Z0JBQ1JxTixRQUFRdFMsR0FBR0MsT0FBT0MsSUFBSSxZQUFZO2dCQUNsQ3FTLE1BQU07Z0JBQ05rbkIsU0FBUzs7Y0FDVjtBQUVBLG9CQUFNL0ssYUFBYSxJQUFJaDBCLFNBQVNxTCxLQUFLQyxJQUNwQ3hMLE9BQU9nSCxNQUFNLFlBQVksV0FBVyxHQUNwQytILE9BQ0E5TyxRQUFRcTJCLE9BQU8xZSxVQUFVbW1CLE1BQU1tQixxQkFDL0IsSUFBSWgvQixTQUFTdVUsT0FBT3pVLE9BQU9nSCxNQUFNLFNBQVMsUUFBUSxDQUFDLENBQ3BEO0FBQ0FrdEIseUJBQVczWCxTQUFTQTtBQUNwQjJYLHlCQUFXcGtCLEtBQUs7WUFDakI7QUFFQSxnQkFBSTBQO0FBQ0osZ0JBQUkyZjtBQUNKLGdCQUFJNWlCLE9BQU9xaUIsZUFBZSxNQUFNO0FBQy9CcGYsc0JBQVE1ZixFQUFFLEtBQUssRUFDYmlYLEtBQUssUUFBUSxHQUFHLEVBQ2hCL08sS0FBSzlILE9BQU9nSCxNQUFNLFlBQVksVUFBVSxDQUFDLEVBQ3pDbUQsSUFBSTtnQkFDSixhQUFhO2dCQUNiLGVBQWU7Y0FDaEIsQ0FBQyxFQUNBVCxHQUFHLFNBQVMsTUFBTTtBQUNsQnhKLHlCQUFTcUwsS0FBS29KLGdCQUFnQkMsV0FBVztBQUN6QzNVLHdCQUFRcTJCLE9BQU90ZixPQUFPeUksTUFBTTtBQUM1QmphLG1CQUFHQyxPQUFPMjVCLElBQUksZUFBZSxDQUFDO0FBQzlCbi9CLHdCQUFRbXlCLFFBQVExa0IsU0FBUztjQUMxQixDQUFDO0FBQ0Z5eEIseUJBQVd2L0IsRUFBRSxRQUFRLEVBQ25CdUssSUFBSTtnQkFDSixhQUFhO2dCQUNiLGVBQWU7Y0FDaEIsQ0FBQyxFQUNBckMsS0FBSzlILE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQ3ZDOUcsdUJBQVN1VSxPQUFPeU0sS0FBS2llLFNBQVMsQ0FBQyxHQUFHM2YsTUFBTSxDQUFDLENBQUM7WUFDM0M7QUFFQSxnQkFBSWhhLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sR0FBRztBQUM3QzhaLHNCQUFRNWYsRUFBRSxLQUFLLEVBQ2JpWCxLQUFLLFFBQVEsR0FBRyxFQUNoQi9PLEtBQUs5SCxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYyxDQUFDLEVBQ2pEbUQsSUFBSTtnQkFDSixlQUFlO2NBQ2hCLENBQUMsRUFDQVQsR0FBRyxTQUFTLE1BQU07QUFDbEJ4Six5QkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVc7QUFDekMzVSx3QkFBUXEyQixPQUFPdGYsT0FBT3lJLE1BQU07QUFDNUJ4Zix3QkFBUW8vQixPQUFPM3hCLFNBQUEsR0FBQXJGLE9BQ1hySSxPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsSUFBSTlHLFNBQVNzVyxjQUFZLE1BQUEsQ0FDbEU7Y0FDRCxDQUFDO0FBQ0Yyb0IseUJBQVd2L0IsRUFBRSxRQUFRLEVBQ25CdUssSUFBSTtnQkFDSixlQUFlO2NBQ2hCLENBQUMsRUFDQXJDLEtBQUs5SCxPQUFPZ0gsTUFBTSxlQUFlLGFBQWEsQ0FBQztBQUNqRDlHLHVCQUFTdVUsT0FBT3lNLEtBQUtpZSxTQUFTLENBQUMsR0FBRzNmLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLE9BQU87QUFDTkEsc0JBQVE1ZixFQUFFLEtBQUssRUFDYmlYLEtBQUssUUFBUSxHQUFHLEVBQ2hCL08sS0FBSzlILE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjLENBQUMsRUFDakRtRCxJQUFJO2dCQUNKLGVBQWU7Y0FDaEIsQ0FBQyxFQUNBVCxHQUFHLFNBQVMsTUFBTTtBQUNsQnhKLHlCQUFTcUwsS0FBS29KLGdCQUFnQkMsV0FBVztBQUN6QzNVLHdCQUFRcTJCLE9BQU90ZixPQUFPeUksTUFBTTtBQUM1QnhmLHdCQUFRby9CLE9BQU8zeEIsU0FDZDFOLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxJQUNwQzlHLFNBQVNzVyxlQUNUeFcsT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQzdCO2NBQ0QsQ0FBQztBQUNGbTRCLHlCQUFXdi9CLEVBQUUsUUFBUSxFQUFFa0ksS0FBSzlILE9BQU9nSCxNQUFNLGVBQWUsYUFBYSxDQUFDLEVBQUVtRCxJQUFJO2dCQUMzRSxlQUFlO2NBQ2hCLENBQUM7QUFDRGpLLHVCQUFTdVUsT0FBT3lNLEtBQUtpZSxTQUFTLENBQUMsR0FBRzNmLE1BQU0sQ0FBQyxDQUFDO1lBQzNDO0FBQ0FBLG9CQUFRNWYsRUFBRSxLQUFLLEVBQ2JpWCxLQUFLLFFBQVFyUixHQUFHMEUsS0FBS00sT0FBTyxpQ0FBaUMsQ0FBQyxFQUM5RDFDLEtBQUs5SCxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZSxDQUFDO0FBQ3JEOUcscUJBQVN1VSxPQUFPeU0sS0FBSyxNQUFNMUIsTUFBTSxDQUFDLENBQUM7VUFDcEM7VUFDQWtmLGtCQUFtQjVoQixhQUFZO0FBQzlCQSxvQkFBUTFILGlCQUFpQixFQUFFaXFCLE9BQU87QUFDbEMsa0JBQU1oYixPQUFPdkgsUUFBUXdpQixXQUFXO0FBQ2hDLGtCQUFNL2lCLFNBQVNPLFFBQVErQyxzQkFBc0I7QUFDN0Msa0JBQU05USxRQUFRO2NBQ2J0RSxRQUFRO2NBQ1J3RyxTQUFTO2NBQ1RzdUIsWUFBWXIvQixTQUFTc1c7WUFDdEI7QUFDQSxrQkFBTTlKLFFBQUEsYUFBQXJFLE9BQXFCZ2MsSUFBSTtBQUMvQixnQkFDQzlILE9BQU9xaUIsZUFBZSxRQUN0QjMrQixRQUFRdUgsUUFBUSxnQ0FBZ0MsRUFBRTRCLFNBQVNtVCxPQUFPcWlCLFVBQVUsR0FDM0U7QUFFRCxvQkFBTXBmLFFBQVE1ZixFQUFFLEtBQUssRUFDbkJpWCxLQUFLO2dCQUNMcE4sTUFBTWpFLEdBQUcwRSxLQUFLTSxPQUFPa0MsT0FBT3FDLEtBQUs7Z0JBQ2pDd0IsUUFBUTtnQkFDUm9hLEtBQUs7Y0FDTixDQUFDLEVBQ0F4Z0IsSUFBSTtnQkFDSixhQUFhO2dCQUNiLGVBQWU7Y0FDaEIsQ0FBQyxFQUNBckMsS0FBSzlILE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0IsSUFBSXFkLElBQUk7QUFDOUQsb0JBQU04YSxXQUFXdi9CLEVBQUUsUUFBUSxFQUN6QnVLLElBQUk7Z0JBQ0osYUFBYTtnQkFDYixlQUFlO2NBQ2hCLENBQUMsRUFDQXJDLEtBQUs5SCxPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsQ0FBQztBQUN6QzlHLHVCQUFTdVUsT0FBT3lNLEtBQUtpZSxTQUFTLENBQUMsR0FBRzNmLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLE9BQU87QUFFTixvQkFBTW1lLGtCQUFrQixJQUFJejlCLFNBQVN1VSxPQUNwQ3pVLE9BQU9nSCxNQUFNLFFBQVEsT0FBTyxJQUMzQnFkLE9BQ0Fya0IsT0FBT2dILE1BQU0sWUFBWSxVQUFVLEdBQ3BDaEgsT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQzVCO0FBQ0Esc0JBQVEvRyxRQUFRdUgsUUFBUSxrQkFBa0IsR0FBQTtnQkFDekMsS0FBSztBQUNKeEgseUJBQU93L0IsS0FBS2g2QixHQUFHMEUsS0FBS00sT0FBT2tDLE9BQU9xQyxLQUFLLEdBQUcsVUFBVSxxQkFBcUI7QUFDekU7Z0JBQ0QsS0FBSztBQUNKL08seUJBQU93L0IsS0FDTmg2QixHQUFHMEUsS0FBS00sT0FBT2tDLE9BQU9xQyxLQUFLLEdBQzNCLFVBQ0EsMEdBQ0Q7QUFDQTtnQkFHRDtBQUNDL08seUJBQU93L0IsS0FDTmg2QixHQUFHMEUsS0FBS00sT0FBT2tDLE9BQU9xQyxLQUFLLEdBQzNCL08sT0FBT1ksU0FBUyxzQkFBc0IsV0FBVyxxQkFDakRaLE9BQU9ZLFNBQVMsc0JBQ2IseUJBQ0Esc0ZBRUo7QUFDQTtjQUNGO0FBQ0ErOEIsOEJBQWdCemMsS0FBSyxJQUFJO1lBQzFCO1VBQ0Q7VUFDQWdlLHFCQUFzQjd2QixZQUFXO0FBQ2hDLGtCQUFNb3dCLFNBQVNwd0IsT0FBT2lsQixPQUFPO0FBQzdCLGtCQUFNb0wsWUFBWTkvQixFQUFFNi9CLE1BQU0sRUFBRWw0QixLQUFLLGNBQWM7QUFDL0Msa0JBQU1vNEIsUUFBUUQsVUFBVTcrQjtBQUN4QixrQkFBTTg4QixrQkFBa0J0dUIsT0FBTzhQO0FBQy9CLGdCQUFJLENBQUN3Z0IsT0FBTztBQUNYaEMsOEJBQWdCemMsS0FBS2xoQixPQUFPZ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQztBQUN0RDtZQUNEO0FBQ0EyMkIsNEJBQWdCbHBCLE9BQU8sSUFBSTtBQUMzQixnQkFBSXNLLFVBQVU7QUFDZCxrQkFBTTZnQixZQUFhQyxpQkFBZ0I7QUFDbEMsb0JBQU05ZixNQUFBLEdBQUExWCxPQUFTZ1AsT0FBT0MsU0FBVSxNQUFNLEVBQUV5SCxVQUFXNGdCLE9BQU8sRUFBRSxHQUFDLEdBQUE7QUFDN0RoQyw4QkFBZ0JtQyxPQUFPL2YsR0FBRztBQUMxQjhmLDBCQUFZMWdCLFNBQVNrZ0IsT0FBTztBQUM1QixrQkFBSXRnQixXQUFXNGdCLE9BQU87QUFDckJoQyxnQ0FBZ0J6YyxLQUFBLEdBQUE3WSxPQUFRMFgsS0FBRyxNQUFBLENBQU07QUFDakM3Zix5QkFBU3FMLEtBQUt3MEIsaUJBQWlCO2NBQ2hDO1lBQ0Q7QUFDQTcvQixxQkFBU3FMLEtBQUt5MEIsY0FBYztBQUM1Qk4sc0JBQVVoUyxLQUFLLENBQUN1UyxNQUFNaDBCLFVBQVU7QUFDL0Isb0JBQU1TLFFBQVE5TSxFQUFFcU0sS0FBSyxFQUFFNEssS0FBSyxPQUFPO0FBQ25DLG9CQUFNcEUsT0FBTyxJQUFJdlMsU0FBU3FMLEtBQUtrSCxLQUM5Qi9GLE9BQUEsR0FBQXJFLE9BQ0dySSxPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsSUFBSTBGLE9BQUssR0FBQSxDQUMvQztBQUNBK0YsbUJBQUsrQyxlQUFBLG9DQUFBbk4sT0FBbURuSSxTQUFTc1csY0FBWSxHQUFBLENBQUc7QUFDaEYvRCxtQkFBS2dELGNBQWN4VixRQUFRSyxVQUFVO0FBQ3JDbVMsbUJBQUt3ckIsV0FBVzJCLFNBQVM7WUFDMUIsQ0FBQztVQUNGO1FBQ0Q7UUFDQXZiLE1BQU07VUFDTHpFLE1BQU85QyxhQUFZO0FBQ2xCLGtCQUFNcUMsV0FBV3JDLFFBQVExSCxpQkFBaUI7QUFDMUMsZ0JBQUksQ0FBQzBILFFBQVFrVixPQUFPLEdBQUc7QUFDdEI3Uyx1QkFBUzlKLE1BQU1yVixPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYyxDQUFDO0FBQzNEO1lBQ0Q7QUFDQSxnQkFBSWMsT0FBT2dWLFFBQVE5SCxZQUFZO0FBQy9CLGtCQUFNdUgsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3Q1YscUJBQVMxSyxPQUFPelUsT0FBT2dILE1BQU0sYUFBYSxXQUFXLENBQUM7QUFFdEQsa0JBQU1rNUIsV0FBV3A0QixLQUFLa0wsUUFDckIsOEdBQ0EsRUFDRDtBQUNBLGdCQUNDbEwsU0FBU280QixZQUNULENBQUN4c0IsUUFDQTFULE9BQU9nSCxNQUNOLDJCQUNBLHlCQUNELENBQ0QsR0FDQztBQUNEbVksdUJBQVM5SixNQUFNclYsT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQixDQUFDO0FBQy9EO1lBQ0Q7QUFDQWMsbUJBQU9vNEI7QUFDUCxrQkFBTUMsVUFBVSx5Q0FBeUNuaEIsS0FBS2xYLElBQUk7QUFDbEUsZ0JBQ0NxNEIsV0FDQSxDQUFDenNCLFFBQ0ExVCxPQUFPZ0gsTUFDTixtQ0FDQSxpQ0FDRCxDQUNELEdBQ0M7QUFDRG1ZLHVCQUFTOUosTUFBTXJWLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLENBQUM7QUFDN0Q7WUFDRDtBQUNBLGtCQUFNbzVCLE1BQU0sNERBQTREcGhCLEtBQUtsWCxJQUFJO0FBQ2pGLGdCQUNDczRCLE9BQ0EsQ0FBQzFzQixRQUNBMVQsT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQ2xDbzVCLElBQUksQ0FBQyxJQUNMcGdDLE9BQU9nSCxNQUNOLDhCQUNBLDRCQUNELENBQ0YsR0FDQztBQUNEbVksdUJBQVM5SixNQUFNclYsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWMsQ0FBQztBQUMzRDtZQUNEO0FBR0Esa0JBQU1xNUIsWUFBWXBnQyxRQUFRcTJCLE9BQU8xZSxVQUFVK2tCLHlCQUF5QnBnQixNQUFNO0FBQzFFLGdCQUFJLENBQUNxZ0IsSUFBSSxJQUFJeUQ7QUFDYixhQUFBLEVBQUc5akIsT0FBT3lnQixRQUFRLElBQUlxRDtBQUN0QixrQkFBTWpDLFdBQVcsSUFBSWwrQixTQUFTcUwsS0FBS2tILEtBQUtqTixHQUFHQyxPQUFPQyxJQUFJLFlBQVksQ0FBQztBQUVuRSxnQkFBSXpGLFFBQVF1SCxRQUFRLDRCQUE0QixHQUFHO0FBQ2xENDJCLHVCQUFTa0MsT0FBTztZQUNqQjtBQUdBLGdCQUFJOTZCLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sSUFBSTtBQUU5Q2szQixxQkFBQSxjQUFBdjBCLE9BQXFCdTBCLE1BQUksY0FBQTtZQUMxQjtBQUVBOTBCLG1CQUFPQSxLQUFLa0wsUUFDWCxnSEFDQSxFQUNEO0FBQ0EsZ0JBQUl4TixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLEdBQUc7QUFFN0NvQyxxQkFBT0EsS0FBS2tMLFFBQ1gsNElBQ0EsRUFDRDtZQUNEO0FBQ0EsZ0JBQUl1SixPQUFPZ2tCLGFBQWE7QUFDdkIzRCxxQkFBQSxhQUFBdjBCLE9BQW9CdTBCLElBQUk7WUFDekI7QUFFQSxnQkFBSTREO0FBQ0osZ0JBQUlqa0IsT0FBT3dnQixZQUFZbDhCLFNBQVMsR0FBRztBQUNsQzIvQiw0QkFBY3hnQyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7QUFBQSxrQkFBQXk1QixjQUFBOTBCLDJCQUM1QjRRLE9BQU93Z0IsV0FBQSxHQUFBMkQ7QUFBQSxrQkFBQTtBQUExQixxQkFBQUQsWUFBQTUwQixFQUFBLEdBQUEsRUFBQTYwQixVQUFBRCxZQUFBMzBCLEVBQUEsR0FBQUMsUUFBdUM7QUFBQSx3QkFBNUJveEIsT0FBQXVELFFBQUF6MEI7QUFDVixzQkFBSWt4QixTQUFTLE1BQU07QUFDbEJxRCxtQ0FBQSxZQUFBbjRCLE9BQTJCODBCLEtBQUtDLFlBQVksR0FBQyxPQUFBLEVBQUEvMEIsT0FBUTgwQixLQUFLQyxZQUFZLEdBQUMsS0FBQTtrQkFDeEU7Z0JBQ0Q7Y0FBQSxTQUFBbHhCLEtBQUE7QUFBQXUwQiw0QkFBQTkyQixFQUFBdUMsR0FBQTtjQUFBLFVBQUE7QUFBQXUwQiw0QkFBQXQwQixFQUFBO2NBQUE7QUFDQXEwQiw0QkFBY0EsWUFBWTVzQixNQUFNLEdBQUcrc0IsS0FBS3R2QixJQUFJLEdBQUdtdkIsWUFBWTMvQixTQUFTLENBQUMsQ0FBQztBQUN0RTIvQiw2QkFBZTtZQUNoQixXQUFXamtCLE9BQU93Z0IsWUFBWSxDQUFDLE1BQU0sTUFBTTtBQUMxQ3lELDRCQUNDeGdDLE9BQU9nSCxNQUFNLHNCQUFzQixvQkFBb0IsSUFDdkR1VixPQUFPOGdCLGVBQWUsQ0FBQyxFQUFFLEdBQUc7WUFDOUIsT0FBTztBQUNObUQsNEJBQUEsR0FBQW40QixPQUFpQnJJLE9BQU9nSCxNQUN2QixVQUNBLFFBQ0QsR0FBQyxZQUFBLEVBQUFxQixPQUFha1UsT0FBT3dnQixZQUFZLENBQUMsRUFBRUssWUFBWSxHQUFDLE9BQUEsRUFBQS8wQixPQUFRa1UsT0FBT3dnQixZQUFZLENBQUMsRUFBRUssWUFBWSxHQUFDLEtBQUE7WUFDN0Y7QUFFQSxnQkFBSTdnQixPQUFPcWtCLE9BQU87QUFDakI5NEIscUJBQU84MEI7WUFDUixPQUFPO0FBRU4sb0JBQU1sYixjQUFjLElBQUl4aEIsU0FBU2tjLFNBQVMzSixLQUFLM0ssSUFBSTtBQUNuREEscUJBQU80WixZQUFZbWYscUJBQUEsR0FBQXg0QixPQUF3QnUwQixNQUFJLElBQUEsR0FBTTM4QixRQUFRTyxZQUFZLEVBQUVzZ0MsUUFBUTtZQUNwRjtBQUNBaGtCLG9CQUFRK1UsWUFBWS9wQixJQUFJO0FBQ3hCZ1Ysb0JBQVF0SCxlQUFlZ3JCLFdBQVc7QUFDbEMxakIsb0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLG9CQUFRL0csYUFBYXdHLE9BQU8raEIsS0FBSztBQUNqQ3hoQixvQkFBUWdWLEtBQUs3eEIsUUFBUXEyQixPQUFPMWUsVUFBVXlNLEtBQUswYyxXQUFXO1VBQ3ZEO1VBQ0FBLGFBQWNqa0IsYUFBWTtBQUN6QixrQkFBTVAsU0FBU08sUUFBUStDLHNCQUFzQjtBQUU3QyxnQkFBSXRELE9BQU95a0IsVUFBVTtBQUNwQixvQkFBTXR6QixXQUFZdXpCLGFBQVk7QUFDN0Isb0JBQUlDLGlCQUFpQkQsUUFBUTNCLFdBQVc7QUFFeEMsb0JBQUk0QixtQkFBbUIxN0IsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQUc7QUFDbkR4RiwyQkFBU3VVLE9BQU9wVSxLQUFBLEtBQUFnSSxPQUNWNjRCLGNBQWMsRUFBQTc0QixPQUFHckksT0FBT2dILE1BQU0sZUFBZSxhQUFhLENBQUMsQ0FDakU7QUFDQWs2QixtQ0FBaUI7Z0JBRWxCLFdBQ0NBLG1CQUFtQjE3QixHQUFHQyxPQUFPQyxJQUFJLFNBQVMsS0FDMUNGLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sR0FDdEM7QUFDRHhGLDJCQUFTdVUsT0FBT3BVLEtBQ2ZMLE9BQU9nSCxNQUNOLHVCQUNBLHNCQUNELENBQ0Q7QUFDQWs2QixtQ0FBaUI7Z0JBRWxCLFdBQVdBLG1CQUFtQixrQkFBa0Iza0IsT0FBT3dnQixZQUFZLENBQUMsTUFBTSxPQUFPO0FBQ2hGNzhCLDJCQUFTdVUsT0FBT3BVLEtBQ2ZMLE9BQU9nSCxNQUNOLHVCQUNBLHFCQUNELENBQ0Q7QUFDQWs2QixtQ0FBaUI7Z0JBQ2xCLE9BQU87QUFDTix3QkFBTUMsZUFBQSxhQUFBOTRCLE9BQTRCNjRCLGNBQWM7QUFDaEQsd0JBQU1FLGVBQWUsSUFBSWxoQyxTQUFTcUwsS0FBS2tILEtBQ3RDMHVCLGNBQUEsR0FBQTk0QixPQUNHckksT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQUlrNkIsZ0JBQWMsR0FBQSxDQUN6RDtBQUNBLHNCQUFJRztBQUNKQSwrQkFBYSxPQUFPaDVCLE9BQU8sVUFBQSxvQkFBQUEsT0FBOEJuSSxTQUFTc1csWUFBWSxDQUFFO0FBQ2hGNnFCLGdDQUFjLHdCQUF3Qmg1QixPQUFPLElBQUk7QUFDakQsc0JBQUltNEIsY0FBYztBQUNsQixzQkFBSWprQixPQUFPd2dCLFlBQVkzekIsU0FBUyxJQUFJLEdBQUc7QUFDdENvM0IsbUNBQWU7a0JBQ2hCLE9BQU87QUFFTkEsbUNBQUEsT0FBQW40QixPQUFzQm5JLFNBQVNzVyxjQUFZLElBQUE7a0JBQzVDO0FBQ0FncUIsaUNBQWU7QUFDZlksK0JBQWExckIsY0FBYzJyQixVQUFVO0FBQ3JDRCwrQkFBYTVyQixlQUFlZ3JCLFdBQVc7QUFDdkNZLCtCQUFhM3JCLGNBQWN4VixRQUFRSyxVQUFVO0FBQzdDOGdDLCtCQUFhdEwsZ0JBQWdCLFVBQVU7QUFDdkNzTCwrQkFBYXJzQixrQkFBa0IsTUFBTSxLQUFLO0FBQzFDcXNCLCtCQUFhL3lCLE9BQU87Z0JBQ3JCO0FBRUEsb0JBQUlrTyxPQUFPK2tCLGVBQWU7QUFDekJyaEMsMEJBQVFxMkIsT0FBTzFlLFVBQVV5TSxLQUFLa2QsU0FBU2hsQixRQUFRMmtCLGNBQWM7Z0JBQzlEO2NBQ0Q7QUFDQSxvQkFBTTlDLFdBQVcsSUFBSWwrQixTQUFTcUwsS0FBS2tILEtBQUt2UyxTQUFTc1csWUFBWTtBQUM3RDRuQix1QkFBU0ssZUFBZS93QixRQUFRO1lBRWpDLFdBQVc2TyxPQUFPK2tCLGVBQWU7QUFDaENyaEMsc0JBQVFxMkIsT0FBTzFlLFVBQVV5TSxLQUFLa2QsU0FBU2hsQixRQUFRLElBQUk7WUFDcEQ7VUFDRDs7Ozs7VUFLQWdsQixVQUFVQSxDQUFDaGxCLFFBQVEya0IsbUJBQW1CO0FBQ3JDLGtCQUFNTSxNQUFNLElBQUl0aEMsU0FBU3VoQyxnQkFBZ0J4aEMsUUFBUXVILFFBQVEsbUJBQW1CLENBQUM7QUFDN0VnNkIsZ0JBQUlFLGNBQUEseUVBQUFyNUIsT0FBdUZwSSxRQUFRdUgsUUFDbEcsWUFDRCxHQUFDLDJDQUFBLEVBQUFhLE9BQ0FuSSxTQUFTZ0IsY0FBYyxnQ0FBZ0MsRUFDeEQ7QUFDQSxnQkFBSXlnQyxhQUFBLFFBQUF0NUIsT0FBcUJuSSxTQUFTc1csY0FBWSxLQUFBO0FBQzlDLGdCQUFJK0YsT0FBT3FsQixRQUFRO0FBQ2xCRCw0QkFBQSxjQUFBdDVCLE9BQTRCa1UsT0FBT3FpQixXQUFXeEIsWUFBWSxHQUFDLE9BQUEsRUFBQS8wQixPQUFRa1UsT0FBT3FpQixXQUFXeEIsWUFBWSxHQUFDLFVBQUEsRUFBQS8wQixPQUNqR2tVLE9BQU9rQyxjQUNSLEtBQUE7WUFDRCxXQUFXbEMsT0FBT3dnQixZQUFZbDhCLFNBQVMsR0FBRztBQUN6QzhnQyw0QkFBYztBQUFBLGtCQUFBRSxjQUFBbDJCLDJCQUNLNFEsT0FBT3dnQixXQUFBLEdBQUErRTtBQUFBLGtCQUFBO0FBQTFCLHFCQUFBRCxZQUFBaDJCLEVBQUEsR0FBQSxFQUFBaTJCLFVBQUFELFlBQUEvMUIsRUFBQSxHQUFBQyxRQUF1QztBQUFBLHdCQUE1Qm94QixPQUFBMkUsUUFBQTcxQjtBQUNWMDFCLGdDQUFBLFlBQUF0NUIsT0FBMEI4MEIsS0FBS0MsWUFBWSxHQUFDLEdBQUEsRUFBQS8wQixPQUFJODBCLEtBQUtDLFlBQVksR0FBQyxLQUFBO2dCQUNuRTtjQUFBLFNBQUFseEIsS0FBQTtBQUFBMjFCLDRCQUFBbDRCLEVBQUF1QyxHQUFBO2NBQUEsVUFBQTtBQUFBMjFCLDRCQUFBMTFCLEVBQUE7Y0FBQTtBQUNBdzFCLDJCQUFhQSxXQUFXL3RCLE1BQU0sR0FBRytzQixLQUFLdHZCLElBQUksR0FBR3N3QixXQUFXOWdDLFNBQVMsQ0FBQyxDQUFDO0FBQ25FOGdDLDRCQUFjO1lBQ2YsV0FBV3BsQixPQUFPd2dCLFlBQVksQ0FBQyxNQUFNLE1BQU07QUFDMUM0RSw0QkFBYztZQUNmLE9BQU87QUFDTkEsNEJBQUEsWUFBQXQ1QixPQUEwQmtVLE9BQU93Z0IsWUFBWSxDQUFDLEVBQUVLLFlBQVksR0FBQyxPQUFBLEVBQUEvMEIsT0FBUWtVLE9BQU93Z0IsWUFBWSxDQUFDLEVBQUVLLFlBQVksR0FBQyxJQUFBO1lBQ3pHO0FBQ0EsZ0JBQUk3Z0IsT0FBT2drQixhQUFhO0FBQ3ZCb0IsNEJBQWMzaEMsT0FBT2dILE1BQU0sV0FBVyxTQUFTO1lBQ2hEO0FBQ0EsZ0JBQUlrNkIsZ0JBQWdCO0FBQ25CUyw0QkFBQSxhQUFBdDVCLE9BQTJCNjRCLGdCQUFjLElBQUE7WUFDMUM7QUFDQVMsMEJBQWMsTUFBTXQ1QixPQUFPLEtBQUssTUFBTTtBQUN0Q201QixnQkFBSWxoQyxhQUFhTCxRQUFRSztBQUN6QmtoQyxnQkFBSU8sSUFDSEosWUFDQTNoQyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sSUFDNUI5RyxTQUFTc1csZUFDVHhXLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxDQUN2QztVQUNEO1FBQ0Q7TUFDRDtBQUVBL0csY0FBUXEyQixPQUFPMEwsZ0JBQWdCLENBQUMvekIsTUFBTXltQixXQUFXO0FBQ2hELFlBQUltSSxhQUFhLENBQUE7QUFBQyxZQUFBb0YsY0FBQXQyQiwyQkFDRStvQixNQUFBLEdBQUF3TjtBQUFBLFlBQUE7QUFBcEIsZUFBQUQsWUFBQXAyQixFQUFBLEdBQUEsRUFBQXEyQixVQUFBRCxZQUFBbjJCLEVBQUEsR0FBQUMsUUFBNEI7QUFBQSxrQkFBakJFLFFBQUFpMkIsUUFBQWoyQjtBQUNWLGtCQUFNazJCLGdCQUFnQixDQUFBO0FBQ3RCLGdCQUFJQztBQUNKLG9CQUFRbjJCLE9BQUE7Y0FDUCxLQUFLO0FBQ0osb0JBQUlnQyxLQUFLLGNBQWMsR0FBRztBQUN6Qix3QkFBTW8wQixjQUFjcDBCLEtBQUssY0FBYyxFQUFFaEM7QUFDekMsc0JBQUksQ0FBQ28yQixlQUFlLENBQUNBLFlBQVlwdkIsS0FBSyxHQUFHO0FBQ3hDLHlCQUFLek4sR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxnQkFBZ0IsYUFBYSxHQUFHO3NCQUMzRGUsTUFBTTtzQkFDTmlELEtBQUs7b0JBQ04sQ0FBQztBQUNENnhCLGlDQUFhO0FBQ2I7QUFDQTtrQkFDRDtBQUNBc0YsZ0NBQWMsR0FBRyxJQUFJRTtnQkFDdEI7QUFDQTtjQUNELEtBQUs7QUFDSixvQkFBSXAwQixLQUFLLGlCQUFpQixHQUFHO0FBQzVCLHdCQUFNcTBCLFlBQVlyMEIsS0FBSyxpQkFBaUIsRUFBRWhDO0FBQzFDLHNCQUFJLENBQUNxMkIsYUFBYSxDQUFDQSxVQUFVcnZCLEtBQUssR0FBRztBQUNwQyx5QkFBS3pOLEdBQUd1RixPQUNQL0ssT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQixHQUN2RDtzQkFDQ2UsTUFBTTtzQkFDTmlELEtBQUs7b0JBQ04sQ0FDRDtBQUNBNnhCLGlDQUFhO0FBQ2I7QUFDQTtrQkFDRDtBQUNBc0YsZ0NBQWN4ckIsV0FBVzJyQjtnQkFDMUI7QUFDQTtjQUNELEtBQUs7QUFDSixvQkFBSXIwQixLQUFLLGlCQUFpQixHQUFHO0FBQzVCLHdCQUFNMEksV0FBVzFJLEtBQUssaUJBQWlCLEVBQUVoQztBQUN6QyxzQkFBSSxDQUFDMEssWUFBWSxDQUFDQSxTQUFTMUQsS0FBSyxHQUFHO0FBQ2xDLHlCQUFLek4sR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCLEdBQUc7c0JBQ2xFZSxNQUFNO3NCQUNOaUQsS0FBSztvQkFDTixDQUFDO0FBQ0Q2eEIsaUNBQWE7QUFDYjtBQUNBO2tCQUNEO0FBQ0FzRixnQ0FBY3hyQixXQUFXQTtnQkFDMUI7QUFDQTtjQUNELEtBQUs7QUFDSixvQkFBSTFJLEtBQUssaUJBQWlCLEdBQUc7QUFDNUJtMEIsNkJBQVduMEIsS0FBSyxpQkFBaUIsRUFBRWhDO0FBQ25DLHNCQUFJLENBQUNtMkIsWUFBWSxDQUFDQSxTQUFTbnZCLEtBQUssR0FBRztBQUNsQyx5QkFBS3pOLEdBQUd1RixPQUNQL0ssT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQixHQUN2RDtzQkFDQ2UsTUFBTTtzQkFDTmlELEtBQUs7b0JBQ04sQ0FDRDtBQUNBNnhCLGlDQUFhO0FBQ2I7QUFDQTtrQkFDRDtBQUNBc0YsZ0NBQWNJLFdBQVdILFNBQVNwdkIsUUFDakMsSUFBSWtDLE9BQUEsUUFBQTdNLE9BQWVuSSxTQUFTdTFCLGVBQWUsQ0FBQyxHQUFDLEdBQUEsR0FBSyxHQUFHLEdBQ3JELEVBQ0Q7Z0JBQ0Q7QUFDQTtjQUNELEtBQUs7QUFDSixvQkFBSXhuQixLQUFLLGFBQWEsR0FBRztBQUN4Qix3QkFBTXUwQixZQUFZdjBCLEtBQUssYUFBYSxFQUFFaEM7QUFDdEMsc0JBQUksQ0FBQ3UyQixXQUFXO0FBQ2YseUJBQUtoOUIsR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCLEdBQUc7c0JBQ2xFZSxNQUFNO3NCQUNOaUQsS0FBSztvQkFDTixDQUFDO0FBQ0Q2eEIsaUNBQWE7QUFDYjtBQUNBO2tCQUNEO0FBQ0FzRixnQ0FBYyxHQUFHLElBQUlLO2dCQUN0QjtBQUNBO2NBQ0QsS0FBSztBQUNKLG9CQUFJdjBCLEtBQUssYUFBYSxHQUFHO0FBQ3hCLHdCQUFNdTBCLFlBQVl2MEIsS0FBSyxhQUFhLEVBQUVoQztBQUN0QyxzQkFBSSxDQUFDdTJCLFdBQVc7QUFDZix5QkFBS2g5QixHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUIsR0FBRztzQkFDbEVlLE1BQU07c0JBQ05pRCxLQUFLO29CQUNOLENBQUM7QUFDRDZ4QixpQ0FBYTtBQUNiO0FBQ0E7a0JBQ0Q7QUFDQXNGLGdDQUFjLEdBQUcsSUFBSUs7Z0JBQ3RCO0FBQ0E7Y0FDRDtBQUNDO1lBQ0Y7QUFDQTNGLHVCQUFXQSxXQUFXaDhCLE1BQU0sSUFBSXNoQztVQUNqQztRQUFBLFNBQUFqMkIsS0FBQTtBQUFBKzFCLHNCQUFBdDRCLEVBQUF1QyxHQUFBO1FBQUEsVUFBQTtBQUFBKzFCLHNCQUFBOTFCLEVBQUE7UUFBQTtBQUNBLGVBQU8wd0I7TUFDUjtBQUVBNThCLGNBQVFxMkIsT0FBT2lILHdCQUF5QnFCLGdCQUFlO0FBQ3RELGNBQU01QixXQUFXLENBQUE7QUFDakIsZ0JBQVE0QixZQUFBO1VBQ1A7QUFDQztRQUNGO0FBQ0EsZUFBTzVCO01BQ1I7QUFDQS84QixjQUFRcTJCLE9BQU9tTSxtQkFBb0I5NEIsT0FBTTtBQUFBLFlBQUErNEI7QUFDeEMsY0FBTWhPLFdBQUFnTyxpQkFBVS80QixFQUFFNEcsT0FBT3RDLFVBQUEsUUFBQXkwQixtQkFBQSxTQUFBQSxpQkFBUS80QixFQUFFNEcsUUFBUWlsQixXQUFXLEtBQUs7QUFDM0QsWUFBSWQsT0FBTzd6QixXQUFXLEdBQUc7QUFDeEIsZUFBSzJFLEdBQUd1RixPQUFPL0ssT0FBT2dILE1BQU0sWUFBWSxVQUFVLEdBQUc7WUFDcERlLE1BQU07WUFDTmlELEtBQUs7VUFDTixDQUFDO0FBQ0QsaUJBQU87UUFDUjtBQUNBLGVBQU8wcEI7TUFDUjtBQUNBejBCLGNBQVFxMkIsT0FBTzVvQixTQUFTOG9CLGdCQUFpQjdzQixPQUFNO0FBQUEsWUFBQWc1QjtBQUM5QyxjQUFNMTBCLFFBQUEwMEIsa0JBQU9oNUIsRUFBRTRHLE9BQU90QyxVQUFBLFFBQUEwMEIsb0JBQUEsU0FBQUEsa0JBQVFoNUIsRUFBRTRHO0FBQ2hDLFlBQUk1RyxFQUFFNEcsT0FBT3hJLFNBQVMsY0FBYzRCLEVBQUU0RyxPQUFPeEksU0FBUyxVQUFVNEIsRUFBRTRHLE9BQU94SSxTQUFTLFVBQVU7QUFDM0Y7UUFDRDtBQUNBLGNBQU07VUFBQ3F3QjtRQUFRLElBQUlucUI7QUFDbkIsWUFBSW1xQixZQUFZQSxTQUFTbFYsU0FBUztBQUNqQ2pqQixrQkFBUXEyQixPQUFPNW9CLFNBQVMrb0IsYUFBYTlzQixDQUFDO0FBQ3RDO1FBQ0Q7QUFDQSxjQUFNK3FCLFNBQVN6MEIsUUFBUXEyQixPQUFPbU0saUJBQWlCOTRCLENBQUM7QUFDaEQsWUFBSSxDQUFDK3FCLFFBQVE7QUFDWjtRQUNEO0FBQ0EsY0FBTXFJLGNBQWNySSxPQUFPL2hCLElBQUsxRyxXQUFVO0FBQ3pDLGlCQUFPaE0sUUFBUXEyQixPQUFPOEUsY0FBY252QixLQUFLO1FBQzFDLENBQUM7QUFFRCxZQUFJMjJCO0FBQ0osWUFBSXpFO0FBQUEsWUFBQTBFLGNBQUFsM0IsMkJBQ2VveEIsV0FBQSxHQUFBK0Y7QUFBQSxZQUFBO0FBQW5CLGVBQUFELFlBQUFoM0IsRUFBQSxHQUFBLEVBQUFpM0IsVUFBQUQsWUFBQS8yQixFQUFBLEdBQUFDLFFBQWdDO0FBQUEsa0JBQXJCb3hCLE9BQUEyRixRQUFBNzJCO0FBQ1YsZ0JBQUloTSxRQUFRdUgsUUFBUSxrQkFBa0IsRUFBRTRCLFNBQVMrekIsSUFBSSxHQUFHO0FBQ3ZEeUYsMEJBQVkzaUMsUUFBUXVILFFBQVEsbUJBQW1CO1lBQ2hEO0FBQ0EsZ0JBQUl2SCxRQUFRdUgsUUFBUSxnQ0FBZ0MsRUFBRTRCLFNBQVMrekIsSUFBSSxHQUFHO0FBQ3JFZ0IsaUNBQW1CO1lBQ3BCO1VBQ0Q7UUFBQSxTQUFBanlCLEtBQUE7QUFBQTIyQixzQkFBQWw1QixFQUFBdUMsR0FBQTtRQUFBLFVBQUE7QUFBQTIyQixzQkFBQTEyQixFQUFBO1FBQUE7QUFDQSxjQUFNb1EsU0FBUztVQUNkbVk7VUFDQXFJO1VBQ0F1QixPQUFPc0U7VUFDUGpFLGdCQUFnQjF3QixLQUFLNG5CLFlBQVk1bkIsS0FBSzRuQixTQUFTM1M7VUFDL0M4YixpQkFBaUIvd0IsS0FBS3lwQixVQUFVeFU7VUFDaENzYixjQUFjdndCLEtBQUsycEIsYUFBYTFVO1VBQ2hDaWI7VUFDQWQsZ0JBQWdCcDlCLFFBQVFxMkIsT0FBTzBMLGNBQWMvekIsTUFBTXltQixNQUFNO1FBQzFEO0FBQ0EsWUFBSSxDQUFDblksT0FBTzhnQixnQkFBZ0I7QUFDM0I7UUFDRDtBQUNBbjlCLGlCQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUsaUJBQVN1VSxPQUFPQyxLQUFLekcsSUFBSTtBQUN6QmhPLGdCQUFRcTJCLE9BQU8xZSxVQUFVbW1CLE1BQU1uZSxLQUFLckQsTUFBTTtNQUMzQztBQUNBdGMsY0FBUXEyQixPQUFPNW9CLFNBQVMrb0IsZUFBZ0I5c0IsT0FBTTtBQUFBLFlBQUFvNUI7QUFDN0MsY0FBTTkwQixRQUFBODBCLGtCQUFPcDVCLEVBQUU0RyxPQUFPdEMsVUFBQSxRQUFBODBCLG9CQUFBLFNBQUFBLGtCQUFRcDVCLEVBQUU0RztBQUNoQyxZQUFJNUcsRUFBRTRHLE9BQU94SSxTQUFTLGNBQWM0QixFQUFFNEcsT0FBT3hJLFNBQVMsVUFBVTRCLEVBQUU0RyxPQUFPeEksU0FBUyxVQUFVO0FBQzNGO1FBQ0Q7QUFDQSxjQUFNMnNCLFNBQVN6MEIsUUFBUXEyQixPQUFPbU0saUJBQWlCOTRCLENBQUM7QUFDaEQsWUFBSSxDQUFDK3FCLFFBQVE7QUFDWjtRQUNEO0FBRUEsY0FBTXFJLGNBQWMsQ0FBQTtBQUFDLFlBQUFpRyxjQUFBcjNCLDJCQUNEK29CLE1BQUEsR0FBQXVPO0FBQUEsWUFBQTtBQUFwQixlQUFBRCxZQUFBbjNCLEVBQUEsR0FBQSxFQUFBbzNCLFVBQUFELFlBQUFsM0IsRUFBQSxHQUFBQyxRQUE0QjtBQUFBLGtCQUFqQkUsUUFBQWczQixRQUFBaDNCO0FBQ1Ysa0JBQU1reEIsT0FBT2w5QixRQUFRcTJCLE9BQU84RSxjQUFjbnZCLEtBQUs7QUFDL0M4d0Isd0JBQVlBLFlBQVlsOEIsTUFBTSxJQUFJczhCO1VBQ25DO1FBQUEsU0FBQWp4QixLQUFBO0FBQUE4MkIsc0JBQUFyNUIsRUFBQXVDLEdBQUE7UUFBQSxVQUFBO0FBQUE4MkIsc0JBQUE3MkIsRUFBQTtRQUFBO0FBRUEsWUFBSXkyQixZQUFZO0FBQ2hCLGlCQUFBTSxNQUFBLEdBQUFDLGVBQW1CcEcsYUFBQW1HLE1BQUFDLGFBQUF0aUMsUUFBQXFpQyxPQUFhO0FBQWhDLGdCQUFXL0YsT0FBQWdHLGFBQUFELEdBQUE7QUFDVixjQUFJampDLFFBQVF1SCxRQUFRLGtCQUFrQixFQUFFNEIsU0FBUyt6QixJQUFJLEdBQUc7QUFDdkR5Rix3QkFBWTNpQyxRQUFRdUgsUUFBUSxtQkFBbUI7QUFDL0M7QUFDQTtVQUNEO1FBQ0Q7QUFFQSxZQUFJNDdCLGFBQWE7QUFDakIsWUFBSW4xQixLQUFLbEQsT0FBT21ZLFNBQVM7QUFBQSxjQUFBbWdCLGNBQUExM0IsMkJBQ0xveEIsV0FBQSxHQUFBdUc7QUFBQSxjQUFBO0FBQW5CLGlCQUFBRCxZQUFBeDNCLEVBQUEsR0FBQSxFQUFBeTNCLFVBQUFELFlBQUF2M0IsRUFBQSxHQUFBQyxRQUFnQztBQUFBLG9CQUFyQm94QixPQUFBbUcsUUFBQXIzQjtBQUNWLGtCQUFJaE0sUUFBUXVILFFBQVEsc0NBQXNDLEVBQUU0QixTQUFTK3pCLElBQUksR0FBRztBQUMzRWlHLDZCQUFhO0FBQ2I7QUFDQTtjQUNEO1lBQ0Q7VUFBQSxTQUFBbDNCLEtBQUE7QUFBQW0zQix3QkFBQTE1QixFQUFBdUMsR0FBQTtVQUFBLFVBQUE7QUFBQW0zQix3QkFBQWwzQixFQUFBO1VBQUE7UUFDRDtBQUVBLFlBQUlvM0IsU0FBUztBQUNiLFlBQUl0akMsUUFBUXVILFFBQVEsc0JBQXNCLEdBQUc7QUFBQSxjQUFBZzhCLGNBQUE3M0IsMkJBQ3pCb3hCLFdBQUEsR0FBQTBHO0FBQUEsY0FBQTtBQUFuQixpQkFBQUQsWUFBQTMzQixFQUFBLEdBQUEsRUFBQTQzQixVQUFBRCxZQUFBMTNCLEVBQUEsR0FBQUMsUUFBZ0M7QUFBQSxvQkFBckJveEIsT0FBQXNHLFFBQUF4M0I7QUFDVixrQkFBSSxDQUFDaE0sUUFBUXVILFFBQVEseUJBQXlCLEVBQUU0QixTQUFTK3pCLElBQUksR0FBRztBQUMvRG9HLHlCQUFTO0FBQ1Q7QUFDQTtjQUNEO1lBQ0Q7VUFBQSxTQUFBcjNCLEtBQUE7QUFBQXMzQix3QkFBQTc1QixFQUFBdUMsR0FBQTtVQUFBLFVBQUE7QUFBQXMzQix3QkFBQXIzQixFQUFBO1VBQUE7UUFDRDtBQUVBLGNBQU1vUSxTQUFTO1VBQ2RtWTtVQUNBcUk7VUFDQXVCLE9BQU9zRTtVQUNQNUIsVUFBVW9DO1VBQ1Y5QixlQUFlaUM7VUFDZjNDLE9BQU8zeUIsS0FBSzJ5QixNQUFNMWQ7VUFDbEJxZCxhQUFhdHlCLEtBQUs0cEIsUUFBUTNVO1VBQzFCbWEsZ0JBQWdCcDlCLFFBQVFxMkIsT0FBTzBMLGNBQWMvekIsTUFBTXltQixNQUFNO1FBQzFEO0FBQ0EsWUFBSSxDQUFDblksT0FBTzhnQixnQkFBZ0I7QUFDM0I7UUFDRDtBQUNBbjlCLGlCQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUsaUJBQVN1VSxPQUFPQyxLQUFLekcsSUFBSTtBQUN6Qi9OLGlCQUFTcUwsS0FBS29KLGdCQUFnQkMsV0FBV3BQLEdBQUdDLE9BQU9DLElBQUksWUFBWTtBQUNuRXhGLGlCQUFTcUwsS0FBS29KLGdCQUFnQkUsU0FBUzdVLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtBQUNsRSxjQUFNMGEsY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FBS2pOLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFHMUYsT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQUM7QUFDcEcwYSxvQkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4Q21GLG9CQUFZeFcsS0FBS2pMLFFBQVFxMkIsT0FBTzFlLFVBQVV5TSxLQUFLekUsSUFBSTtNQUNwRDtBQUNBM2YsY0FBUVMsZ0JBQWdCVCxRQUFRcTJCLFFBQVEsUUFBUTtJQUNqRCxHQUFHcHBCLE1BQU07RUFBQTtBQUFBLENBQUE7O0FDN3VEVCxJQUFBdzJCLHlCQUFBLENBQUE7QUFBQSxJQUFBQyxzQkFBQWprQyxNQUFBO0VBQUEsMENBQUE7QUFBQTtJQUVBO0FBQ0EsS0FBQyxTQUFTa2tDLGlCQUFpQjtBQVExQjNqQyxjQUFRa2dDLFVBQVUsTUFBTTtBQU12QixZQUNDMzZCLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLElBQUksS0FDckMsQ0FBQ0YsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEtBQzNCRixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLE1BQ3RDd0MsU0FBU0MsY0FBYyxrQkFBa0IsS0FDeEMsQ0FBQ0QsU0FBU0MsY0FBYyxtQ0FBbUMsS0FBSyxDQUFDakksU0FBUzJqQyxlQUFlLElBQzNGO0FBQ0Q7UUFDRDtBQUNBNWpDLGdCQUFRNkosZUFDUDdKLFFBQVFrZ0MsUUFBUXp5QixVQUNoQjFOLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QixjQUNBaEgsT0FBT2dILE1BQU0sVUFBVSxRQUFRLEdBQy9CLEVBQ0Q7TUFDRDtBQUNBL0csY0FBUWtnQyxRQUFRenlCLFdBQVcsTUFBTTtBQUNoQyxjQUFNRSxTQUFTLElBQUkxTixTQUFTMk4sYUFBYSxLQUFLLEdBQUc7QUFDakRELGVBQU9FLFNBQVM5TixPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQztBQUNoRDRHLGVBQU9HLGNBQWMsU0FBUztBQUM5QkgsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFHLG1CQUFtQjtBQUN0RTRHLGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsR0FBRyxrQkFBa0I7QUFDL0UsY0FBTWlILE9BQU8sSUFBSS9OLFNBQVNnTyxVQUFVak8sUUFBUWtnQyxRQUFRenlCLFNBQVNTLFFBQVE7QUFDckVGLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDcENwRyxNQUFNO1FBQ1AsQ0FBQztBQUNEcU4sYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOaUgsTUFBTSxDQUNMO1lBQ0NWLE9BQU90TyxPQUFPZ0gsTUFDYiwrQkFDQSw2QkFDRDtZQUNBaUYsT0FBTztZQUNQckwsTUFBTTtZQUNOb0osU0FBU2hLLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1lBQ3REb2lCLFVBQVUsQ0FDVDtjQUNDeG9CLE1BQU07Y0FDTm1ILE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7Y0FDNUNnRCxTQUFTaEssT0FBT2dILE1BQ2YsdUJBQ0EscUJBQ0Q7WUFDRCxDQUFBO1VBRUYsR0FDQTtZQUNDc0gsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztZQUN4Q2lGLE9BQU87WUFDUHJMLE1BQU07WUFDTm9KLFNBQVNoSyxPQUFPZ0gsTUFDZixzQkFDQSxvQkFDRDtZQUNBa2MsU0FBUztVQUNWLENBQUE7UUFFRixDQUFDO0FBQ0RqVixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1FBQ1AsQ0FBQztBQUNELGNBQU00RyxTQUFTVixLQUFLVyxPQUFPO0FBQzNCaEIsZUFBT2lCLFdBQVdGLE1BQU07QUFDeEJmLGVBQU9rQixRQUFRO01BQ2hCO0FBQ0E3TyxjQUFRa2dDLFFBQVF2b0IsWUFBWTtRQUMzQmtzQixZQUFhaG5CLGFBQVk7QUFFeEIsZ0JBQU1oVixPQUFPZ1YsUUFBUTlILFlBQVk7QUFDakMsY0FBSWxOLEtBQUtzQixTQUFTLFlBQVksR0FBRztBQUNoQ2xKLHFCQUFTdVUsT0FBT1ksTUFDZnJWLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QmhILE9BQU9nSCxNQUNOLHlCQUNBLHVCQUNELENBQ0Q7VUFDRCxPQUFPO0FBQ04vRyxvQkFBUWtnQyxRQUFRdm9CLFVBQVVtc0IsZUFBZWpuQixPQUFPO0FBRWhELGtCQUFNNEUsY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FBS2pOLEdBQUdDLE9BQU9DLElBQUksWUFBWSxDQUFDO0FBQ3RFZ2Msd0JBQVlDLHNCQUFzQjdFLFFBQVErQyxzQkFBc0IsQ0FBQztBQUNqRTZCLHdCQUFZK2MsZUFBZXgrQixRQUFRa2dDLFFBQVF2b0IsVUFBVWdJLElBQUk7VUFDMUQ7UUFDRDtRQUNBQSxNQUFPOUMsYUFBWTtBQUVsQixnQkFBTVAsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QyxnQkFBTXFoQixpQkFBaUJwa0IsUUFBUXdpQixXQUFXO0FBRTFDLGdCQUFNNWQsY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FDckM4SixPQUFPeW5CLFNBQ1Boa0MsT0FBT2dILE1BQU0sV0FBVyxTQUFTLENBQ2xDO0FBQ0EwYSxzQkFBWTNNLGtCQUFrQixJQUFJO0FBQ2xDMk0sc0JBQVlDLHNCQUFzQnBGLE1BQU07QUFDeENtRixzQkFBWXhXLEtBQUtqTCxRQUFRa2dDLFFBQVF2b0IsVUFBVXFzQixXQUFXO0FBRXRELGNBQUkxbkIsT0FBT3hSLFFBQVE7QUFDbEIsa0JBQU1xMkIsZUFBZSxJQUFJbGhDLFNBQVNxTCxLQUFLa0gsS0FBQSxhQUFBcEssT0FDekI2NEIsY0FBYyxHQUFBLEdBQUE3NEIsT0FDeEJySSxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsSUFBSWs2QixnQkFBYyxHQUFBLENBQ3pEO0FBQ0Esa0JBQU1HLGFBQWEsT0FBT2g1QixPQUFPLFVBQUEsaUJBQUFBLE9BQTJCN0MsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQUMsSUFBQSxDQUFJO0FBQzNGMDdCLHlCQUFhMXJCLGNBQWMyckIsVUFBVTtBQUNyQ0QseUJBQWE1ckIsZUFDWnhWLE9BQU9nSCxNQUFNLFdBQVcsU0FBUyxJQUNoQ3hCLEdBQUdDLE9BQU9DLElBQUksWUFBWSxJQUMxQjFGLE9BQU9nSCxNQUFNLGFBQWEsVUFBVSxDQUN0QztBQUNBbzZCLHlCQUFhM3JCLGNBQWN4VixRQUFRSyxVQUFVO0FBQzdDOGdDLHlCQUFhdEwsZ0JBQWdCLFVBQVU7QUFDdkNzTCx5QkFBYXJyQixhQUFhOVYsUUFBUXVILFFBQVEsa0JBQWtCLENBQUM7QUFDN0Q0NUIseUJBQWFyc0Isa0JBQWtCLE1BQU0sS0FBSztBQUMxQ3FzQix5QkFBYS95QixPQUFPO1VBQ3JCO1FBQ0Q7UUFDQTAxQixnQkFBaUJqbkIsYUFBWTtBQUM1QixnQkFBTVAsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QyxnQkFBTXFrQixhQUNMMStCLEdBQUdDLE9BQU9DLElBQUksY0FBYyxLQUFLRixHQUFHQyxPQUFPQyxJQUFJLGFBQWEsS0FBS0YsR0FBR0MsT0FBT0MsSUFBSSxpQkFBaUI7QUFDakcsY0FBSXNGLE1BQU0sS0FBSzNDLE9BQ2QsVUFBQSxvQkFBQUEsT0FDb0JrVSxPQUFPNG5CLE9BQ3pCbnhCLFFBQVEsU0FBUyxXQUFXLEVBQzVCQSxRQUFRLFFBQVEsSUFBSSxFQUNwQkEsUUFBUSxnQkFBZ0IsTUFBTSxFQUM5QkEsUUFBUSxVQUFVLEVBQUUsR0FBQyxlQUFBLEVBQUEzSyxPQUFnQjY3QixZQUFVLElBQUEsQ0FDbEQ7QUFDQSxnQkFBTXA4QixPQUFPZ1YsUUFBUTlILFlBQVk7QUFDakMsZ0JBQU1vdkIsU0FBU3Q4QixLQUFLNFksTUFBTSxtRUFBbUU7QUFDN0YsY0FDQzBqQixVQUNBMXdCLFFBQ0MxVCxPQUFPZ0gsTUFDTiwwR0FDQSx1R0FDRCxDQUNELEdBQ0M7QUFDRGdFLGtCQUFBLEdBQUEzQyxPQUFTKzdCLE9BQU8sQ0FBQyxHQUFDLElBQUEsRUFBQS83QixPQUFLMkMsR0FBRztVQUMzQjtBQUNBLGNBQUl1UixPQUFPaWYsSUFBSTtBQUNkLGdCQUFJNkksWUFBWTtBQUNoQkEseUJBQWE7QUFDYixnQkFBSTluQixPQUFPK25CLGFBQWE7QUFDdkJELDJCQUFBLElBQUFoOEIsT0FBaUJrVSxPQUFPK25CLGFBQVcseUJBQUEsRUFBQWo4QixPQUEwQmtVLE9BQU8rbkIsYUFBVyxJQUFBO1lBQ2hGLE9BQU87QUFDTkQsMkJBQUEsMEJBQUFoOEIsT0FBdUM3QyxHQUFHQyxPQUFPQyxJQUFJLFlBQVksR0FBQyxJQUFBO1lBQ25FO0FBQ0EyK0IseUJBQWE7QUFDYnI1QixrQkFBQSxHQUFBM0MsT0FBU2c4QixXQUFTLElBQUEsRUFBQWg4QixPQUFLMkMsR0FBRztVQUMzQjtBQUNBOFIsa0JBQVErVSxZQUFZN21CLEdBQUc7QUFDdkI4UixrQkFBUXRILGVBQWV4VixPQUFPZ0gsTUFBTSxjQUFjLFdBQVcsQ0FBQztBQUM5RDhWLGtCQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxrQkFBUS9HLGFBQWE5VixRQUFRdUgsUUFBUSxrQkFBa0IsQ0FBQztBQUV4RHNWLGtCQUFRZ1YsS0FBSztBQUNiLGNBQUk3eEIsUUFBUXVILFFBQVEsNkJBQTZCLEdBQUc7QUFDbkRzVixvQkFBUXdqQixPQUFPO1VBQ2hCO1FBQ0Q7UUFDQTJELGFBQWNubkIsYUFBWTtBQUN6QixnQkFBTWhWLE9BQU9nVixRQUFROUgsWUFBWTtBQUNqQyxjQUFJdXZCLFNBQVM7QUFDYixnQkFBTTlyQixPQUFPLG9CQUFJSSxLQUFLO0FBQ3RCLGdCQUFNOEgsa0JBQWtCLElBQUl6TCxPQUFBLFdBQUE3TSxPQUNoQm9RLEtBQUsrckIsWUFBWSxJQUFJLEdBQUMsR0FBQSxFQUFBbjhCLE9BQUlvUSxLQUFLZ3NCLFdBQVcsR0FBQyxVQUFBLEdBQ3RELElBQ0Q7QUFDQSxjQUFJLENBQUM5akIsZ0JBQWdCM0IsS0FBS2xYLElBQUksR0FBRztBQUNoQ3k4QixxQkFBQSxTQUFBbDhCLE9BQWtCb1EsS0FBSytyQixZQUFZLElBQUksR0FBQyxHQUFBLEVBQUFuOEIsT0FBSW9RLEtBQUtnc0IsV0FBVyxHQUFDLEtBQUE7VUFDOUQ7QUFDQUYsb0JBQVUsT0FBT2w4QixPQUFPLFVBQUEsb0JBQUFBLE9BQThCN0MsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQUMsSUFBQSxDQUFJO0FBQ3JGb1gsa0JBQVFwSCxjQUFjNnVCLE1BQU07QUFDNUJ6bkIsa0JBQVF0SCxlQUFBLE9BQUFuTixPQUFzQjdDLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFDLElBQUEsQ0FBSTtBQUM3RG9YLGtCQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxrQkFBUWdaLGdCQUFnQixVQUFVO0FBQ2xDaFosa0JBQVF6TyxPQUFPO1FBQ2hCO01BQ0Q7QUFDQXBPLGNBQVFrZ0MsUUFBUXp5QixTQUFTUyxXQUFZeEUsT0FBTTtBQUMxQyxjQUFNNFMsU0FBU3JjLFNBQVNnTyxVQUFVK0QsYUFBYXRJLEVBQUU0RyxNQUFNO0FBQ3ZELFlBQUksQ0FBQ2dNLE9BQU80bkIsT0FBT2x4QixLQUFLLEdBQUc7QUFDMUIsZUFBS3pOLEdBQUd1RixPQUFPL0ssT0FBT2dILE1BQU0sV0FBVyxTQUFTLEdBQUc7WUFDbERlLE1BQU07WUFDTmlELEtBQUs7VUFDTixDQUFDO0FBQ0Q7UUFDRDtBQUNBOUssaUJBQVMyTixhQUFhMkcsa0JBQWtCLEtBQUs7QUFDN0N0VSxpQkFBU3VVLE9BQU9DLEtBQUsvSyxFQUFFNEcsTUFBTTtBQUM3QmdNLGVBQU95bkIsVUFBVTtBQUNqQjlqQyxpQkFBU3FMLEtBQUt5MEIsY0FBYztBQUU1QjkvQixpQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVdwUCxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDbkV4RixpQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM3VSxPQUFPZ0gsTUFDN0Msa0JBQ0Esa0JBQ0Q7QUFFQSxjQUFNMGEsY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FDckNqTixHQUFHQyxPQUFPQyxJQUFJLFlBQVksR0FDMUIxRixPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsQ0FDdEM7QUFDQTBhLG9CQUFZQyxzQkFBc0JwRixNQUFNO0FBQ3hDbUYsb0JBQVl4VyxLQUFLakwsUUFBUWtnQyxRQUFRdm9CLFVBQVVrc0IsVUFBVTtBQUNyRDVqQyxpQkFBU3FMLEtBQUt3MEIsaUJBQWlCO01BQ2hDO0FBQ0E5L0IsY0FBUVMsZ0JBQWdCVCxRQUFRa2dDLFNBQVMsU0FBUztJQUNuRCxHQUFHO0VBQUE7QUFBQSxDQUFBOztBQzFPSCxJQUFBdUUscUJBQUEsQ0FBQTtBQUFBLElBQUFDLGtCQUFBamxDLE1BQUE7RUFBQSxzQ0FBQTtBQUFBO0lBRUE7QUFDQSxLQUFDLFNBQVNrbEMsYUFBYTtBQVF0QjNrQyxjQUFRbWdDLE1BQU0sTUFBTTtBQU1uQixZQUNDNTZCLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLElBQUksS0FDckMsQ0FBQ0YsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEtBQzNCRixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLE1BQ3RDd0MsU0FBU0MsY0FBYyxrQkFBa0IsS0FDeEMsQ0FBQ0QsU0FBU0MsY0FBYyxtQ0FBbUMsS0FBSyxDQUFDakksU0FBUzJqQyxlQUFlLElBQzNGO0FBQ0Q7UUFDRDtBQUNBNWpDLGdCQUFRNkosZUFDUDdKLFFBQVFtZ0MsSUFBSTF5QixVQUNaMU4sT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCLFVBQ0FoSCxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FDaEM7TUFDRDtBQUNBL0csY0FBUW1nQyxJQUFJeUUsbUJBQW1CO0FBRS9CNWtDLGNBQVFtZ0MsSUFBSTBFLGlCQUFpQixNQUFNO0FBQ2xDLFlBQUk3a0MsUUFBUW1nQyxJQUFJeUUsa0JBQWtCO0FBQ2pDM2tDLG1CQUFTdVUsT0FBT2EsY0FDZnJWLFFBQVFtZ0MsSUFBSXlFLGtCQUNaN2tDLE9BQU9nSCxNQUNOLG1DQUNBLGlDQUNELENBQ0Q7QUFFQS9HLGtCQUFRbWdDLElBQUl5RSxtQkFBbUI7UUFDaEM7TUFDRDtBQUNBNWtDLGNBQVFtZ0MsSUFBSTF5QixXQUFXLE1BQU07QUFDNUIsY0FBTUUsU0FBUyxJQUFJMU4sU0FBUzJOLGFBQWEsS0FBSyxHQUFHO0FBQ2pERCxlQUFPRSxTQUFTOU4sT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQUM7QUFDaEQ0RyxlQUFPRyxjQUFjLFNBQVM7QUFDOUJILGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sR0FBRyxlQUFlO0FBQ2xFNEcsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxHQUFHLGNBQWM7QUFDM0UsY0FBTWlILE9BQU8sSUFBSS9OLFNBQVNnTyxVQUFVak8sUUFBUW1nQyxJQUFJMXlCLFNBQVNTLFFBQVE7QUFDakUsY0FBTUMsYUFBYUgsS0FBS0ksT0FBTztVQUM5QnRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDcEN1SCxPQUFPdE8sUUFBUW1nQyxJQUFJMXlCLFNBQVN5SjtRQUM3QixDQUFDO0FBQ0QvSSxtQkFBV0MsT0FBTztVQUNqQnRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDdEN1USxVQUFVL1IsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTTtVQUNqRHVHLE9BQU87UUFDUixDQUFDO0FBQ0RtQyxtQkFBV0MsT0FBTztVQUNqQnRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDdEN1USxVQUFVL1IsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTTtVQUNqRHVHLE9BQU87UUFDUixDQUFDO0FBQ0RnQyxhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ05pSCxNQUFNLENBQ0w7WUFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsYUFBYTtZQUNoRGlGLE9BQU87WUFDUHJMLE1BQU07WUFDTm9KLFNBQVNoSyxPQUFPZ0gsTUFDZixzQkFDQSxvQkFDRDtZQUNBa2MsU0FBUztVQUNWLENBQUE7UUFFRixDQUFDO0FBQ0RqVixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ051RyxPQUFPO1VBQ1AxTixNQUFNO1FBQ1AsQ0FBQztBQUNEcU4sYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtRQUNQLENBQUM7QUFDRCxjQUFNNEcsU0FBU1YsS0FBS1csT0FBTztBQUMzQmhCLGVBQU9pQixXQUFXRixNQUFNO0FBQ3hCZixlQUFPa0IsUUFBUTtBQUVmLGNBQU1pQixNQUFNN0gsU0FBUzhILFlBQVksT0FBTztBQUN4Q0QsWUFBSUUsVUFBVSxVQUFVLE1BQU0sSUFBSTtBQUNsQ3RCLGVBQU91QixTQUFTQyxjQUFjSixHQUFHO01BQ2xDO0FBQ0E5UCxjQUFRbWdDLElBQUkxeUIsU0FBU3lKLGtCQUFtQnhOLE9BQU07QUFDN0MsY0FBTTtVQUFDc0M7UUFBSyxJQUFJdEMsRUFBRTRHO0FBQ2xCLGNBQU07VUFBQ3RDO1FBQUksSUFBSXRFLEVBQUU0RztBQUNqQixjQUFNLENBQUNJLFFBQVEsSUFBSXpRLFNBQVNnTyxVQUFVMEMsWUFBWWpILEVBQUU0RyxPQUFPdEMsTUFBTSxXQUFXO0FBQzVFLFlBQUk0QyxZQUFZO0FBQ2hCLGNBQU1rMEIsbUJBQW1COTJCLEtBQUs5RixjQUFjLFVBQVU7QUFDdEQsWUFBSTY4QixZQUFZRCxtQkFBbUJBLGlCQUFpQjk0QixRQUFRO0FBQzVELGNBQU1nNUIsa0JBQW1CQyxhQUFZO0FBQ3BDLGtCQUFRQSxTQUFBO1lBQ1AsS0FBSztBQUNKRiwwQkFBWTFMLG1CQUFtQnB4QixTQUFTQyxjQUFjLGdCQUFnQixFQUFFNkksV0FBVyxFQUFFZ0MsUUFDcEYsT0FDQSxHQUNEO0FBQ0E7WUFDRCxLQUFLO0FBQ0pneUIsMEJBQVkva0MsUUFBUXVILFFBQVEsc0JBQXNCO0FBQ2xEO1lBQ0QsS0FBSztBQUNKdzlCLDBCQUFZL2tDLFFBQVF1SCxRQUFRLHlCQUF5QjtBQUNyRDtZQUNEO0FBQ0M7VUFDRjtBQUNBcUosb0JBQVV4QyxPQUFPO1lBQ2hCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztZQUNwQ2lGLE9BQU8rNEI7WUFDUGg3QixTQUFTaEssT0FBT2dILE1BQ2YscUZBQ0EsbUZBQ0Q7WUFDQTBRLGFBQWExWCxPQUFPZ0gsTUFDbkIseUNBQ0EsdUNBQ0Q7VUFDRCxDQUFDO1FBRUY7QUFFQSxnQkFBUWlGLE9BQUE7VUFDUCxLQUFLLE9BQU87QUFDWDRFLHdCQUFZLElBQUkzUSxTQUFTZ08sVUFBVWdELFFBQVE7Y0FDMUNuSixNQUFNO2NBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2NBQ3RDcEcsTUFBTTtZQUNQLENBQUM7QUFDRGlRLHNCQUFVeEMsT0FBTztjQUNoQnRHLE1BQU07Y0FDTmlILE1BQU0sQ0FDTDtnQkFDQ1YsT0FBTztnQkFDUHJDLE9BQU87Z0JBQ1ByTCxNQUFNO2dCQUNOc2lCLFNBQ0MxZCxHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLE1BQ3ZDRixHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQixNQUFNOztnQkFFekNzRSxTQUFTaEssT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7Z0JBQ3BEeUgsVUFBVWpKLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLE1BQU07Y0FDbkQsQ0FBQTtZQUVGLENBQUM7QUFDRCxrQkFBTXkvQixlQUFldDBCLFVBQVV4QyxPQUFPO2NBQ3JDdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztjQUN4Q3VILE9BQU90TyxRQUFRbWdDLElBQUkxeUIsU0FBUzAzQjtZQUM3QixDQUFDO0FBQ0QsZ0JBQUlDLFVBQVU7QUFDZCxnQkFBSXBsQyxRQUFRdUgsUUFBUSxvQkFBb0IsTUFBTSxRQUFRO0FBQ3JELGtCQUFJODlCLGFBQWFDLHdCQUF3QixRQUFXO0FBQ25ERCw2QkFBYUMsc0JBQXNCO2NBQ3BDLE9BQU87QUFDTkYsMEJBQVVDLGFBQWFDO2NBQ3hCO1lBQ0Q7QUFDQUoseUJBQWE5MkIsT0FBTztjQUNuQnRHLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDOUJpRixPQUFPO2NBQ1BzTCxVQUFVOHRCLFlBQVk7WUFDdkIsQ0FBQztBQUNERix5QkFBYTkyQixPQUFPO2NBQ25CdEcsTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtjQUM5QmlGLE9BQU87Y0FDUHNMLFVBQVU4dEIsWUFBWTtZQUN2QixDQUFDO0FBQ0QsZ0JBQUlwbEMsUUFBUXVILFFBQVEsYUFBYSxHQUFHO0FBQ25DMjlCLDJCQUFhOTJCLE9BQU87Z0JBQ25CdEcsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7Z0JBQzVDaUYsT0FBTztnQkFDUHNMLFVBQVU4dEIsWUFBWTtjQUN2QixDQUFDO1lBQ0Y7QUFDQUYseUJBQWE5MkIsT0FBTztjQUNuQnRHLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7Y0FDeENpRixPQUFPO2NBQ1BzTCxVQUFVOHRCLFlBQVk7WUFDdkIsQ0FBQztBQUNERix5QkFBYTkyQixPQUFPO2NBQ25CdEcsTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtjQUMxQ2lGLE9BQU87Y0FDUHNMLFVBQVU4dEIsWUFBWTtZQUN2QixDQUFDO0FBQ0RGLHlCQUFhOTJCLE9BQU87Y0FDbkJ0RyxNQUFNO2NBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO2NBQ3RDaUYsT0FBTztjQUNQc0wsVUFBVTh0QixZQUFZO1lBQ3ZCLENBQUM7QUFDRHgwQixzQkFBVXhDLE9BQU87Y0FDaEJ0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO2NBQ2xDaWMsUUFBUTtZQUNULENBQUM7QUFDRGdpQiw0QkFBZ0JJLE9BQU87QUFDdkJ4MEIsc0JBQVV4QyxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztjQUNwQ2dELFNBQVNoSyxPQUFPZ0gsTUFDZixtQ0FDQSxpQ0FDRDtjQUNBaWMsUUFBUTtZQUNULENBQUM7QUFDRHBTLHdCQUFZQSxVQUFVakMsT0FBTztBQUM3QitCLHFCQUFTcEksV0FBVytJLGFBQWFULFdBQVdGLFFBQVE7QUFDcEQsa0JBQU1aLE1BQU03SCxTQUFTOEgsWUFBWSxPQUFPO0FBQ3hDRCxnQkFBSUUsVUFBVSxVQUFVLE1BQU0sSUFBSTtBQUNsQ2hDLGlCQUFLdTNCLE9BQU9yMUIsY0FBY0osR0FBRztBQUM3QjtVQUNEO1VBQ0EsS0FBSztBQUNKYyx3QkFBWSxJQUFJM1EsU0FBU2dPLFVBQVVnRCxRQUFRO2NBQzFDbkosTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtjQUN0Q3BHLE1BQU07WUFDUCxDQUFDO0FBQ0Rxa0MsNEJBQWdCLEtBQUs7QUFDckJwMEIsd0JBQVlBLFVBQVVqQyxPQUFPO0FBQzdCK0IscUJBQVNwSSxXQUFXK0ksYUFBYVQsV0FBV0YsUUFBUTtBQUNwRDtVQUNEO0FBQ0NFLHdCQUFZLElBQUkzUSxTQUFTZ08sVUFBVWdELFFBQVE7Y0FDMUNuSixNQUFNO2NBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO2NBQ2hDcEcsTUFBTTtZQUNQLENBQUM7QUFDRGlRLHdCQUFZQSxVQUFVakMsT0FBTztBQUM3QitCLHFCQUFTcEksV0FBVytJLGFBQWFULFdBQVdGLFFBQVE7QUFDcEQ7UUFDRjtBQUVBMUMsYUFBS2xELE9BQU9tWSxVQUFVO0FBQ3RCalYsYUFBS2xELE9BQU8wRCxXQUFXO01BQ3hCO0FBQ0F4TyxjQUFRbWdDLElBQUkxeUIsU0FBUzAzQixzQkFBdUJ6N0IsT0FBTTtBQUNqRCxnQkFBUUEsRUFBRTRHLE9BQU90RSxPQUFBO1VBQ2hCLEtBQUs7QUFDSnRDLGNBQUU0RyxPQUFPdEMsS0FBS3czQixVQUFVQyxjQUFjQyxnQkFBZ0IsUUFBUTtBQUM5RGg4QixjQUFFNEcsT0FBT3RDLEtBQUsyM0IsYUFBYUYsY0FBYzM4QixhQUFhLFVBQVUsRUFBRTtBQUNsRVksY0FBRTRHLE9BQU90QyxLQUFLdzNCLFVBQVVJLHVCQUF1QkMsWUFBWTlsQyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07QUFDdEY7VUFDRCxLQUFLO0FBQ0oyQyxjQUFFNEcsT0FBT3RDLEtBQUt3M0IsVUFBVUMsY0FBY0MsZ0JBQWdCLFFBQVE7QUFDOURoOEIsY0FBRTRHLE9BQU90QyxLQUFLMjNCLGFBQWFGLGNBQWNDLGdCQUFnQixRQUFRO0FBQ2pFaDhCLGNBQUU0RyxPQUFPdEMsS0FBS3czQixVQUFVSSx1QkFBdUJDLFlBQVk7QUFDM0RuOEIsY0FBRTRHLE9BQU90QyxLQUFLODNCLFVBQVU5NUIsUUFBUXF0QixtQkFDL0JweEIsU0FBU0MsY0FBYyxnQkFBZ0IsRUFBRTZJLFdBQzFDLEVBQUVnQyxRQUFRLE9BQU8sR0FBRztBQUNwQjtVQUNELEtBQUs7QUFDSnJKLGNBQUU0RyxPQUFPdEMsS0FBS3czQixVQUFVQyxjQUFjMzhCLGFBQWEsVUFBVSxFQUFFO0FBQy9EWSxjQUFFNEcsT0FBT3RDLEtBQUsyM0IsYUFBYUYsY0FBYzM4QixhQUFhLFVBQVUsRUFBRTtBQUNsRVksY0FBRTRHLE9BQU90QyxLQUFLODNCLFVBQVU5NUIsUUFBUWhNLFFBQVF1SCxRQUFRLHNCQUFzQjtBQUN0RTtVQUNELEtBQUs7QUFDSm1DLGNBQUU0RyxPQUFPdEMsS0FBS3czQixVQUFVQyxjQUFjMzhCLGFBQWEsVUFBVSxFQUFFO0FBQy9EWSxjQUFFNEcsT0FBT3RDLEtBQUsyM0IsYUFBYUYsY0FBYzM4QixhQUFhLFVBQVUsRUFBRTtBQUNsRVksY0FBRTRHLE9BQU90QyxLQUFLODNCLFVBQVU5NUIsUUFBUWhNLFFBQVF1SCxRQUFRLHlCQUF5QjtBQUN6RTtVQUNEO0FBQ0NtQyxjQUFFNEcsT0FBT3RDLEtBQUt3M0IsVUFBVUMsY0FBYzM4QixhQUFhLFVBQVUsRUFBRTtBQUMvRFksY0FBRTRHLE9BQU90QyxLQUFLMjNCLGFBQWFGLGNBQWMzOEIsYUFBYSxVQUFVLEVBQUU7UUFDcEU7QUFDQSxZQUFJOUksUUFBUXVILFFBQVEsb0JBQW9CLE1BQU0sUUFBUTtBQUNyRDg5Qix1QkFBYUMsc0JBQXNCNTdCLEVBQUU0RyxPQUFPdEU7UUFDN0M7TUFDRDtBQUNBaE0sY0FBUW1nQyxJQUFJeG9CLFlBQVk7UUFDdkJvdUIsS0FBSztVQUNKcG1CLE1BQU9xbUIsa0JBQWlCO0FBQ3ZCLGtCQUFNMXBCLFNBQVMwcEIsYUFBYXBtQixzQkFBc0I7QUFDbEQ1ZixvQkFBUW1nQyxJQUFJeG9CLFVBQVVvdUIsSUFBSWpDLGVBQWVrQyxZQUFZO0FBRXJELGtCQUFNQyxrQkFBa0IsSUFBSWhtQyxTQUFTcUwsS0FBS2tILEtBQ3pDOEosT0FBT3luQixTQUNQaGtDLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxDQUN0QztBQUNBay9CLDRCQUFnQm54QixrQkFBa0IsSUFBSTtBQUN0Q214Qiw0QkFBZ0J2a0Isc0JBQXNCcEYsTUFBTTtBQUM1QzJwQiw0QkFBZ0JoN0IsS0FBS2pMLFFBQVFtZ0MsSUFBSXhvQixVQUFVb3VCLElBQUlHLFVBQVU7QUFFekQsZ0JBQUk1cEIsT0FBT3hSLFFBQVE7QUFFbEIsa0JBQUl3UixPQUFPNnBCLFlBQVk1Z0MsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQUc7QUFDbkR4Rix5QkFBU3VVLE9BQU9wVSxLQUFBLEdBQUFnSSxPQUNackksT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQUl1VixPQUFPNnBCLFNBQU8sR0FBQSxHQUN4RHBtQyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWEsQ0FDMUM7QUFDQXVWLHVCQUFPNnBCLFVBQVU7Y0FDbEIsT0FBTztBQUNOLHNCQUFNakYsZUFBQSxhQUFBOTRCLE9BQTRCa1UsT0FBTzZwQixPQUFPO0FBQ2hELHNCQUFNaEYsZUFBZSxJQUFJbGhDLFNBQVNxTCxLQUFLa0gsS0FDdEMwdUIsY0FBQSxHQUFBOTRCLE9BQ0dySSxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsSUFBSXVWLE9BQU82cEIsU0FBTyxHQUFBLENBQ3pEO0FBQ0Esc0JBQU0vRSxhQUFhLE9BQ2pCaDVCLE9BQU8sUUFBUSxFQUNmQSxPQUFBLFdBQUFBLE9BQWtCbkksU0FBU3NXLGNBQVksUUFBQSxHQUFVLElBQUk7QUFDdkQ0cUIsNkJBQWExckIsY0FBYzJyQixVQUFVO0FBQ3JDRCw2QkFBYTVyQixlQUFBLFVBQUFuTixPQUF5Qm5JLFNBQVNzVyxjQUFZLFVBQUEsQ0FBVTtBQUNyRTRxQiw2QkFBYTNyQixjQUFjeFYsUUFBUUssVUFBVTtBQUM3QzhnQyw2QkFBYXRMLGdCQUFnQixVQUFVO0FBQ3ZDc0wsNkJBQWFyckIsYUFBYTlWLFFBQVF1SCxRQUFRLGNBQWMsQ0FBQztBQUN6RDQ1Qiw2QkFBYXJzQixrQkFBa0IsTUFBTSxLQUFLO0FBQzFDcXNCLDZCQUFhL3lCLE9BQU87Y0FDckI7QUFFQSxrQkFBSWtPLE9BQU8ra0IsZUFBZTtBQUN6QnJoQyx3QkFBUW1nQyxJQUFJeG9CLFVBQVUycEIsU0FBU2hsQixRQUFRQSxPQUFPNnBCLE9BQU87Y0FDdEQ7WUFFRCxXQUFXN3BCLE9BQU8ra0IsZUFBZTtBQUNoQ3JoQyxzQkFBUW1nQyxJQUFJeG9CLFVBQVUycEIsU0FBU2hsQixRQUFRLElBQUk7WUFDNUM7VUFDRDtVQUNBd25CLGdCQUFpQmpuQixhQUFZO0FBQzVCLGdCQUFJaFYsT0FBT2dWLFFBQVE5SCxZQUFZO0FBQy9CLGtCQUFNdUgsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QyxnQkFBSTdVLE1BQUEsU0FBQTNDLE9BQWVuSSxTQUFTZ1QsT0FBT216QixpQkFBaUI5cEIsT0FBT3dwQixTQUFTLENBQUM7QUFDckUsZ0JBQUk3bEMsU0FBUzJqQyxlQUFlLEdBQUc7QUFDOUI3NEIscUJBQU87WUFDUjtBQUNBQSxtQkFBTyxXQUFXM0MsT0FBTyxVQUFVLGlCQUFpQjtBQUNwRCxnQkFBSWtVLE9BQU8rcEIsV0FBVztBQUNyQnQ3QixvQkFBQSxjQUFBM0MsT0FBb0IyQyxLQUFHLGNBQUE7QUFFdkIsa0JBQUlsRCxLQUFLMkwsUUFBUSxJQUFJLE1BQU0sR0FBRztBQUM3QnpJLHVCQUFPO2NBQ1I7WUFDRCxPQUFPO0FBQ05BLHFCQUFPO1lBQ1I7QUFFQSxrQkFBTWsxQixXQUFXcDRCLEtBQUtrTCxRQUNyQiw4RkFDQSxFQUNEO0FBQ0EsZ0JBQ0NsTCxTQUFTbzRCLFlBQ1R4c0IsUUFDQzFULE9BQU9nSCxNQUFNLHNCQUFzQixvQkFBb0IsQ0FDeEQsR0FDQztBQUNEYyxxQkFBT280QjtZQUNSO0FBQ0Esa0JBQU1xRyxvQkFBb0J6K0IsS0FBS2tMLFFBQzlCLDZHQUNBLEVBQ0Q7QUFDQSxnQkFDQ2xMLFNBQVN5K0IscUJBQ1Q3eUIsUUFDQzFULE9BQU9nSCxNQUNOLHlCQUNBLHVCQUNELENBQ0QsR0FDQztBQUNEYyxxQkFBT3krQjtZQUNSO0FBQ0Esa0JBQU1DLFlBQVkxK0IsS0FBS2tMLFFBQVEsOENBQThDLEVBQUU7QUFDL0UsZ0JBQ0NsTCxTQUFTMCtCLGFBQ1Q5eUIsUUFBUTFULE9BQU9nSCxNQUFNLHVCQUF1QixxQkFBcUIsQ0FBQyxHQUNqRTtBQUNEYyxxQkFBTzArQjtZQUNSO0FBRUEsZ0JBQUl2bUMsUUFBUXVILFFBQVEseUJBQXlCLEdBQUc7QUFDL0NzVixzQkFBUXdqQixPQUFPO1lBQ2hCO0FBRUEsa0JBQU01ZSxjQUFjLElBQUl4aEIsU0FBU2tjLFNBQVMzSixLQUFLM0ssSUFBSTtBQUNuREEsbUJBQU80WixZQUFZbWYscUJBQXFCNzFCLEtBQUsvSyxRQUFRTyxZQUFZLEVBQUVzZ0MsUUFBUTtBQUMzRWhrQixvQkFBUStVLFlBQVkvcEIsSUFBSTtBQUN4QmdWLG9CQUFRdEgsZUFBQSxHQUFBbk4sT0FDSnJJLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxJQUFJdVYsT0FBT3luQixTQUFPLEdBQUEsRUFBQTM3QixPQUFJbkksU0FBU3NXLGNBQVksSUFBQSxDQUNwRjtBQUNBc0csb0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLG9CQUFRL0csYUFBYTlWLFFBQVF1SCxRQUFRLGNBQWMsQ0FBQztBQUNwRHNWLG9CQUFRZ1YsS0FBSztVQUNkO1VBQ0FxVSxZQUFhcnBCLGFBQVk7QUFDeEIsZ0JBQUloVixPQUFPZ1YsUUFBUTlILFlBQVk7QUFDL0Isa0JBQU11SCxTQUFTTyxRQUFRK0Msc0JBQXNCO0FBQzdDLGdCQUFJOVgsT0FBTztBQUNYLGdCQUFJMCtCLEtBQUs7QUFDVCxvQkFBUWxxQixPQUFPaXBCLFFBQUE7Y0FDZCxLQUFLO2NBQ0wsS0FBSztBQUNKaUIscUJBQUtscUIsT0FBT2twQjtjQUViO0FBQ0MxOUIsdUJBQU93VSxPQUFPaXBCO0FBQ2Q7WUFDRjtBQUNBLGdCQUFJbjNCLFNBQVM7QUFDYixvQkFBUXRHLE1BQUE7Y0FDUCxLQUFLO2NBQ0wsS0FBSztjQUNMLEtBQUssU0FBUztBQUNiLHNCQUFNMitCLGNBQUEsc0JBQUFyK0IsT0FBb0M3QyxHQUFHQyxPQUFPQyxJQUNuRCxZQUNELEdBQUMsS0FBQSxFQUFBMkMsT0FBTU4sTUFBSSxpQ0FBQTtBQUNYLG9CQUFJa3JCLFVBQUEsU0FBQTVxQixPQUFtQm5JLFNBQVNzVyxjQUFZLE9BQUE7QUFDNUMsb0JBQUl6TyxTQUFTLFFBQVE7QUFDcEJrckIsNkJBQUEsbUJBQUE1cUIsT0FBOEJuSSxTQUFTc1csY0FBWSxJQUFBO2dCQUNwRDtBQUNBLG9CQUFJMU8sS0FBS3NCLFNBQVNzOUIsV0FBVyxHQUFHO0FBQy9CNStCLHlCQUFPQSxLQUFLa0wsUUFBUTB6QixhQUFBLEdBQUFyK0IsT0FBZ0I0cUIsU0FBTyxNQUFBLEVBQUE1cUIsT0FBT3ErQixXQUFXLENBQUU7QUFDL0Q1cEIsMEJBQVErVSxZQUFZL3BCLElBQUk7QUFDeEJ1RywyQkFBUztnQkFDVixPQUFPO0FBQ04sd0JBQU1zNEIsWUFBWTtBQUNsQix3QkFBTWhGLGFBQUEsT0FBQXQ1QixPQUFvQnMrQixTQUFTLEVBQUF0K0IsT0FBRyxtQkFBQUEsT0FDckM7b0JBQ0N1K0IsTUFBTTtvQkFDTkMsU0FDQztvQkFDREMsT0FBTztrQkFDUixFQUFFLytCLElBQUksR0FDUCxJQUFBLEVBQUFNLE9BQUs0cUIsU0FBTyxNQUFBLEVBQUE1cUIsT0FBT3ErQixhQUFXLHdCQUFBLEVBQUFyK0IsT0FBeUJuSSxTQUFTZ1QsT0FBT216QixpQkFDdEU5cEIsT0FBT3dwQixTQUNSLEdBQUMsUUFBQSxFQUFBMTlCLE9BQ0E7b0JBQ0N1K0IsTUFBTTtvQkFDTkMsU0FBUztvQkFDVEMsT0FBTztrQkFDUixFQUFFLytCLElBQUksR0FDUCxtQ0FBQSxFQUFvQ00sT0FBTyxJQUFJLENBQUM7QUFDaER5VSwwQkFBUXBILGNBQWNpc0IsVUFBVTtnQkFDakM7QUFDQTtjQUNEO2NBQ0E7QUFDQzdrQix3QkFBUXBILGNBQ1AsT0FBT3JOLE9BQ04sVUFDQSxlQUFBQSxPQUFlTixNQUFJLGNBQUEsRUFBQU0sT0FDbEJuSSxTQUFTc1csY0FDVixVQUFBLEVBQUFuTyxPQUFXbkksU0FBU2dULE9BQU9tekIsaUJBQWlCOXBCLE9BQU93cEIsU0FBUyxDQUFDLEVBQUExOUIsT0FDNURrVSxPQUFPcXBCLGFBQWEzeUIsS0FBSyxNQUFNLEtBQUssS0FBQSxjQUFBNUssT0FBbUJrVSxPQUFPcXBCLFlBQVksR0FDM0UsTUFBQSxFQUFBdjlCLE9BQU9vK0IsSUFBRSxNQUFBLEVBQU9wK0IsT0FBTyxJQUFJLENBQzVCLENBQ0Q7QUFDQTtZQUNGO0FBQ0F5VSxvQkFBUXRILGVBQUEsT0FBQW5OLE9BQXNCbkksU0FBU3NXLGNBQVksSUFBQSxDQUFJO0FBQ3ZEc0csb0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLG9CQUFRL0csYUFBYTlWLFFBQVF1SCxRQUFRLG9CQUFvQixDQUFDO0FBQzFEc1Ysb0JBQVFnWixnQkFBZ0IsVUFBVTtBQUNsQyxnQkFBSXpuQixRQUFRO0FBQ1h5TyxzQkFBUXpPLE9BQU87WUFDaEIsT0FBTztBQUNOeU8sc0JBQVFnVixLQUFLO1lBQ2Q7QUFDQTd4QixvQkFBUW1nQyxJQUFJeUUsbUJBQW1CO1VBQ2hDO1VBQ0FwRyxnQkFBaUJzSSxpQkFBZ0I7QUFDaENBLHdCQUFZM3hCLGlCQUFpQixFQUFFOEwsS0FBSyxJQUFJO0FBQ3hDLGtCQUFNM0UsU0FBU3dxQixZQUFZbG5CLHNCQUFzQjtBQUNqRHRELG1CQUFPNnBCLFVBQVVXLFlBQVl6SCxXQUFXO0FBRXhDLGtCQUFNMkcsZUFBZSxJQUFJL2xDLFNBQVNxTCxLQUFLa0gsS0FDdENqTixHQUFHQyxPQUFPQyxJQUFJLFlBQVksR0FDMUIxRixPQUFPZ0gsTUFBTSxlQUFlLGFBQWEsQ0FDMUM7QUFDQWkvQix5QkFBYWx4QixrQkFBa0IsS0FBSztBQUNwQ2t4Qix5QkFBYXRrQixzQkFBc0JwRixNQUFNO0FBQ3pDMHBCLHlCQUFhLzZCLEtBQUtqTCxRQUFRbWdDLElBQUl4b0IsVUFBVW91QixJQUFJbEMsVUFBVTtVQUN2RDtVQUNBQSxZQUFhbUMsa0JBQWlCO0FBQzdCLGtCQUFNOW1CLFdBQVc4bUIsYUFBYTd3QixpQkFBaUI7QUFFL0MsZ0JBQUksQ0FBQzZ3QixhQUFhalUsT0FBTyxHQUFHO0FBQzNCN1MsdUJBQVM5SixNQUFNclYsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWMsQ0FBQztBQUMzRDtZQUNEO0FBQ0Esa0JBQU1jLE9BQU9tK0IsYUFBYWp4QixZQUFZO0FBQ3RDLGtCQUFNb3JCLE1BQU0sNERBQTREcGhCLEtBQUtsWCxJQUFJO0FBQ2pGLGdCQUNDczRCLE9BQ0EsQ0FBQzFzQixRQUNBMVQsT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQ2xDbzVCLElBQUksQ0FBQyxJQUNMcGdDLE9BQU9nSCxNQUNOLHdCQUNBLHNCQUNELENBQ0YsR0FDQztBQUNEbVksdUJBQVM5SixNQUFNclYsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWMsQ0FBQztBQUMzRDtZQUNEO0FBQ0Esa0JBQU1tNUIsVUFBVSxtQ0FBbUNuaEIsS0FBS2xYLElBQUk7QUFDNUQsZ0JBQUlxNEIsU0FBUztBQUNaaGhCLHVCQUFTOUosTUFBTXJWLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLENBQUM7QUFDN0Q7WUFDRDtBQUNBL0csb0JBQVFtZ0MsSUFBSXhvQixVQUFVb3VCLElBQUlwbUIsS0FBS3FtQixZQUFZO1VBQzVDO1FBQ0Q7UUFDQWUsS0FBSztVQUNKcG5CLE1BQU9xbUIsa0JBQWlCO0FBQ3ZCLGtCQUFNMXBCLFNBQVMwcEIsYUFBYXBtQixzQkFBc0I7QUFDbEQ1ZixvQkFBUW1nQyxJQUFJeG9CLFVBQVVvdkIsSUFBSUMsYUFBYWhCLFlBQVk7QUFFbkQsa0JBQU12a0IsY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FDckM4SixPQUFPeW5CLFNBQ1Boa0MsT0FBT2dILE1BQU0sYUFBYSxXQUFXLENBQ3RDO0FBQ0EwYSx3QkFBWTNNLGtCQUFrQixJQUFJO0FBQ2xDMk0sd0JBQVlDLHNCQUFzQnBGLE1BQU07QUFDeENtRix3QkFBWXhXLEtBQUtqTCxRQUFRbWdDLElBQUl4b0IsVUFBVW92QixJQUFJYixVQUFVO0FBRXJELGdCQUFJNXBCLE9BQU94UixRQUFRO0FBRWxCLGtCQUFJd1IsT0FBTzZwQixZQUFZNWdDLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFHO0FBQ25EeEYseUJBQVN1VSxPQUFPcFUsS0FBQSxHQUFBZ0ksT0FDWnJJLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxJQUFJdVYsT0FBTzZwQixTQUFPLEdBQUEsR0FDeERwbUMsT0FBT2dILE1BQU0sZUFBZSxhQUFhLENBQzFDO0FBQ0E7Y0FDRDtBQUNBLG9CQUFNbTZCLGVBQUEsYUFBQTk0QixPQUE0QmtVLE9BQU82cEIsT0FBTztBQUNoRCxvQkFBTWhGLGVBQWUsSUFBSWxoQyxTQUFTcUwsS0FBS2tILEtBQ3RDMHVCLGNBQUEsR0FBQTk0QixPQUNHckksT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQUl1VixPQUFPNnBCLFNBQU8sR0FBQSxDQUN6RDtBQUNBLG9CQUFNL0UsYUFBYSxPQUFPaDVCLE9BQU8sVUFBQSxZQUFBQSxPQUFzQjdDLEdBQUdDLE9BQU9DLElBQUksU0FBUyxHQUFDLElBQUEsR0FBTSxRQUFRLElBQUk7QUFDakcwN0IsMkJBQWExckIsY0FBYzJyQixVQUFVO0FBQ3JDRCwyQkFBYTVyQixlQUFBLFVBQUFuTixPQUF5Qm5JLFNBQVNzVyxjQUFZLFVBQUEsQ0FBVTtBQUNyRTRxQiwyQkFBYTNyQixjQUFjeFYsUUFBUUssVUFBVTtBQUM3QzhnQywyQkFBYXRMLGdCQUFnQixVQUFVO0FBQ3ZDc0wsMkJBQWFyckIsYUFBYTlWLFFBQVF1SCxRQUFRLGNBQWMsQ0FBQztBQUN6RDQ1QiwyQkFBYXJzQixrQkFBa0IsTUFBTSxLQUFLO0FBQzFDcXNCLDJCQUFhL3lCLE9BQU87QUFFcEIsa0JBQUlrTyxPQUFPK2tCLGVBQWU7QUFDekJyaEMsd0JBQVFtZ0MsSUFBSXhvQixVQUFVMnBCLFNBQVNobEIsUUFBUUEsT0FBTzZwQixPQUFPO2NBQ3REO1lBRUQsV0FBVzdwQixPQUFPK2tCLGVBQWU7QUFDaENyaEMsc0JBQVFtZ0MsSUFBSXhvQixVQUFVMnBCLFNBQVNobEIsUUFBUSxJQUFJO1lBQzVDO1VBQ0Q7VUFDQTBxQixjQUFlbnFCLGFBQVk7QUFDMUIsa0JBQU1oVixPQUFPZ1YsUUFBUTlILFlBQVk7QUFDakMsa0JBQU11SCxTQUFTTyxRQUFRK0Msc0JBQXNCO0FBQzdDL0Msb0JBQVErVSxZQUNQLFNBQUF4cEIsT0FBU25JLFNBQVNnVCxPQUFPbXpCLGlCQUFpQjlwQixPQUFPd3BCLFNBQVMsR0FBQyxVQUFBLEVBQVcxOUIsT0FDckUsVUFBQSxnQkFBQUEsT0FDZ0JQLElBQUksQ0FDckIsQ0FDRDtBQUNBZ1Ysb0JBQVF0SCxlQUFBLEdBQUFuTixPQUNKckksT0FBT2dILE1BQU0sYUFBYSxXQUFXLElBQUl1VixPQUFPeW5CLFNBQU8sR0FBQSxFQUFBMzdCLE9BQUluSSxTQUFTc1csY0FBWSxJQUFBLENBQ3BGO0FBQ0FzRyxvQkFBUXJILGNBQWN4VixRQUFRSyxVQUFVO0FBQ3hDd2Msb0JBQVEvRyxhQUFhOVYsUUFBUXVILFFBQVEsY0FBYyxDQUFDO0FBQ3BEc1Ysb0JBQVFnWixnQkFBZ0IsVUFBVTtBQUNsQ2haLG9CQUFRZ1YsS0FBSztVQUNkO1VBQ0FxVSxZQUFhcnBCLGFBQVk7QUFFeEIsa0JBQU1QLFNBQVNPLFFBQVErQyxzQkFBc0I7QUFDN0MvQyxvQkFBUXBILGNBQ1AsT0FBT3JOLE9BQ04sVUFDQSxvQkFBQUEsT0FBb0I3QyxHQUFHQyxPQUFPQyxJQUFJLFNBQVMsR0FBQyxZQUFBLEVBQUEyQyxPQUMzQ2tVLE9BQU82cEIsU0FDUixVQUFBLEVBQUEvOUIsT0FBV25JLFNBQVNnVCxPQUFPbXpCLGlCQUFpQjlwQixPQUFPd3BCLFNBQVMsR0FBQyxRQUFBLEVBQVMxOUIsT0FBTyxJQUFJLENBQ2xGLENBQ0Q7QUFDQXlVLG9CQUFRdEgsZUFBQSxPQUFBbk4sT0FBc0JuSSxTQUFTc1csY0FBWSxJQUFBLENBQUk7QUFDdkRzRyxvQkFBUXJILGNBQWN4VixRQUFRSyxVQUFVO0FBQ3hDd2Msb0JBQVEvRyxhQUFhOVYsUUFBUXVILFFBQVEsb0JBQW9CLENBQUM7QUFDMURzVixvQkFBUWdaLGdCQUFnQixVQUFVO0FBQ2xDaFosb0JBQVF6TyxPQUFPLE1BQU07QUFDcEJwTyxzQkFBUW1nQyxJQUFJeUUsbUJBQW1CO1lBQ2hDLENBQUM7VUFDRjtVQUVBcEcsZ0JBQWlCc0ksaUJBQWdCO0FBQ2hDQSx3QkFBWTN4QixpQkFBaUIsRUFBRThMLEtBQUssSUFBSTtBQUN4QyxrQkFBTTNFLFNBQVN3cUIsWUFBWWxuQixzQkFBc0I7QUFDakR0RCxtQkFBTzZwQixVQUFVVyxZQUFZekgsV0FBVztBQUV4QyxrQkFBTTJHLGVBQWUsSUFBSS9sQyxTQUFTcUwsS0FBS2tILEtBQ3RDak4sR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQzFCMUYsT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQixDQUNoRDtBQUNBaS9CLHlCQUFhbHhCLGtCQUFrQixLQUFLO0FBQ3BDa3hCLHlCQUFhdGtCLHNCQUFzQnBGLE1BQU07QUFDekMwcEIseUJBQWEvNkIsS0FBS2pMLFFBQVFtZ0MsSUFBSXhvQixVQUFVb3ZCLElBQUlsRCxVQUFVO1VBQ3ZEO1VBQ0FBLFlBQWFtQyxrQkFBaUI7QUFDN0Isa0JBQU05bUIsV0FBVzhtQixhQUFhN3dCLGlCQUFpQjtBQUMvQyxnQkFBSSxDQUFDNndCLGFBQWFqVSxPQUFPLEdBQUc7QUFDM0I3Uyx1QkFBUzlKLE1BQU1yVixPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYyxDQUFDO0FBQzNEO1lBQ0Q7QUFDQSxrQkFBTWMsT0FBT20rQixhQUFhanhCLFlBQVk7QUFDdEMsa0JBQU1vckIsTUFBTSw0REFBNERwaEIsS0FBS2xYLElBQUk7QUFDakYsZ0JBQ0NzNEIsT0FDQSxDQUFDMXNCLFFBQ0ExVCxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsSUFDbENvNUIsSUFBSSxDQUFDLElBQ0xwZ0MsT0FBT2dILE1BQ04sd0JBQ0Esc0JBQ0QsQ0FDRixHQUNDO0FBQ0RtWSx1QkFBUzlKLE1BQU1yVixPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYyxDQUFDO0FBQzNEO1lBQ0Q7QUFDQS9HLG9CQUFRbWdDLElBQUl4b0IsVUFBVW92QixJQUFJcG5CLEtBQUtxbUIsWUFBWTtVQUM1QztRQUNEO1FBQ0ExRSxVQUFVQSxDQUFDaGxCLFFBQVEya0IsbUJBQW1CO0FBQ3JDLGdCQUFNVixjQUNMeGdDLE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxJQUM3QjlHLFNBQVNzVyxlQUNUeFcsT0FBT2dILE1BQU0sYUFBYSxXQUFXO0FBQ3RDLGdCQUFNdzZCLE1BQU0sSUFBSXRoQyxTQUFTdWhDLGdCQUFnQnhoQyxRQUFRdUgsUUFBUSxnQkFBZ0IsQ0FBQztBQUMxRWc2QixjQUFJRSxjQUFjMWhDLE9BQU9nSCxNQUFBLHlFQUFBcUIsT0FDaURwSSxRQUFRdUgsUUFDaEYsWUFDRCxHQUFDLDJDQUFBLEdBQUEsMEVBQUFhLE9BQ3lFcEksUUFBUXVILFFBQ2pGLFlBQ0QsR0FBQywyQ0FBQSxDQUNGO0FBQ0EsY0FBSTAvQjtBQUNKLGtCQUFRM3FCLE9BQU9pcEIsUUFBQTtZQUNkLEtBQUs7QUFDSjBCLDJCQUFhbG5DLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUNwQztZQUNELEtBQUs7QUFDSmtnQywyQkFBYWxuQyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7QUFDdEM7WUFDRCxLQUFLO0FBQ0prZ0MsMkJBQWFsbkMsT0FBT2dILE1BQU0sYUFBYSxXQUFXO0FBQ2xEO1lBQ0QsS0FBSztBQUNKa2dDLDJCQUFhbG5DLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztBQUM5QztZQUNELEtBQUs7QUFDSmtnQywyQkFBYWxuQyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7QUFDaEQ7WUFDRCxLQUFLO0FBQ0prZ0MsMkJBQWFsbkMsT0FBT2dILE1BQU0sVUFBVSxRQUFRO0FBQzVDO1lBQ0Q7QUFDQ2tnQywyQkFBYWxuQyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7QUFDNUM7VUFDRjtBQUVBLGNBQUkyNkIsYUFBQSxRQUFBdDVCLE9BQXFCbkksU0FBU3NXLGNBQVksSUFBQTtBQUM5QyxjQUFJaFIsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTSxHQUFHO0FBQzdDaThCLDBCQUFBLGdDQUFBdDVCLE9BQThDN0MsR0FBRzBFLEtBQUtpOUIsY0FDckQzaEMsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLENBQzNCLEdBQUMsS0FBQSxFQUFBMkMsT0FBTXJJLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUFDLElBQUE7VUFDaEM7QUFDQTI2Qix3QkFBQSxJQUFBdDVCLE9BQWtCNitCLFVBQVU7QUFDNUIsY0FBSTNxQixPQUFPaXBCLFdBQVcsU0FBUztBQUM5QjdELDBCQUFBLE1BQUF0NUIsT0FBb0JrVSxPQUFPa3BCLFdBQVMsSUFBQTtVQUNyQztBQUNBOUQsd0JBQWM7QUFDZCxjQUFJcGxCLE9BQU93cEIsV0FBVztBQUNyQnBFLDBCQUFBLE1BQUF0NUIsT0FDQ2tVLE9BQU9pcEIsV0FBVyxXQUFXeGxDLE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxJQUFJaEgsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3RGLE1BQUEsRUFBQXFCLE9BQU9uSSxTQUFTZ1QsT0FBT2swQixtQkFBbUI3cUIsT0FBT3dwQixTQUFTLENBQUM7QUFDM0RwRSx5QkFBYXpoQyxTQUFTZ1QsT0FBT0Msa0JBQWtCd3VCLFVBQVU7VUFDMUQ7QUFDQSxjQUFJcGxCLE9BQU9xcEIsY0FBYztBQUN4QmpFLDBCQUFBLE1BQUF0NUIsT0FDQ2tVLE9BQU9pcEIsV0FBVyxXQUFXeGxDLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxJQUFJaEgsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3BGLE1BQUEsRUFBQXFCLE9BQU9uSSxTQUFTZ1QsT0FBT2swQixtQkFBbUI3cUIsT0FBT3FwQixZQUFZLENBQUM7QUFDOURqRSx5QkFBYXpoQyxTQUFTZ1QsT0FBT0Msa0JBQWtCd3VCLFVBQVU7VUFDMUQ7QUFDQSxjQUFJVCxnQkFBZ0I7QUFDbkJTLDBCQUFBLGFBQUF0NUIsT0FBMkI2NEIsZ0JBQWMsSUFBQTtVQUMxQztBQUNBUyx3QkFBYyxNQUFNdDVCLE9BQU8sTUFBTSxLQUFLO0FBQ3RDbTVCLGNBQUlsaEMsYUFBYUwsUUFBUUs7QUFDekJraEMsY0FBSU8sSUFBSUosWUFBWW5CLFdBQVc7UUFDaEM7TUFDRDtBQUNBdmdDLGNBQVFtZ0MsSUFBSTF5QixTQUFTUyxXQUFZeEUsT0FBTTtBQUN0QyxjQUFNNFMsU0FBU3JjLFNBQVNnTyxVQUFVK0QsYUFBYXRJLEVBQUU0RyxNQUFNO0FBQ3ZELFlBQUlnTSxPQUFPaXBCLFdBQVcsV0FBV2pwQixPQUFPa3BCLFVBQVV4eUIsS0FBSyxNQUFNLElBQUk7QUFDaEUsZUFBS3pOLEdBQUd1RixPQUFPL0ssT0FBT2dILE1BQU0sWUFBWSxVQUFVLEdBQUc7WUFDcERlLE1BQU07WUFDTmlELEtBQUs7VUFDTixDQUFDO0FBQ0Q7UUFDRDtBQUNBOUssaUJBQVMyTixhQUFhMkcsa0JBQWtCLEtBQUs7QUFDN0N0VSxpQkFBU3VVLE9BQU9DLEtBQUsvSyxFQUFFNEcsTUFBTTtBQUM3QnRRLGdCQUFRbWdDLElBQUl5RSxtQkFBbUJ0b0IsT0FBT3dwQjtBQUN0QzdsQyxpQkFBU3VVLE9BQU80eUIsUUFBUXBuQyxRQUFRbWdDLElBQUkwRSxjQUFjO0FBQ2xELFlBQUksQ0FBQ3ZvQixPQUFPck0sVUFBVTtBQUNyQmhRLG1CQUFTdVUsT0FBT1ksTUFBTSxNQUFNLFFBQVE7QUFDcEM7UUFDRDtBQUNBLFlBQUkweEI7QUFDSixjQUFNdHVCLE9BQU8sSUFBSXZZLFNBQVN1WSxLQUFLO0FBQy9CLGdCQUFROEQsT0FBT3JNLFVBQUE7VUFDZCxLQUFLO0FBRUpxTSxtQkFBT3luQixVQUFBLHVCQUFBMzdCLE9BQWlDb1EsS0FBS3ZKLE9BQU8sY0FBYyxLQUFLLENBQUM7QUFDeEVxTixtQkFBTytrQixnQkFDTnJoQyxRQUFRdUgsUUFBUSxtQkFBbUIsS0FDbkMsQ0FBQ3ZILFFBQVF1SCxRQUFRLHNCQUFzQixFQUFFNEIsU0FBU21ULE9BQU9pcEIsTUFBTTtBQUNoRXRsQyxxQkFBU3FMLEtBQUt5MEIsY0FBYztBQUU1QjkvQixxQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVcySCxPQUFPeW5CO0FBQ2hEOWpDLHFCQUFTcUwsS0FBS29KLGdCQUFnQkUsU0FBUzdVLE9BQU9nSCxNQUM3QyxnQkFDQSxlQUNEO0FBRUErL0IsMEJBQWMsSUFBSTdtQyxTQUFTcUwsS0FBS2tILEtBQy9Cak4sR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQzFCMUYsT0FBT2dILE1BQU0sWUFBWSxVQUFVLENBQ3BDO0FBQ0ErL0Isd0JBQVlwbEIsc0JBQXNCcEYsTUFBTTtBQUN4QyxnQkFBSS9XLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLE1BQU0sWUFBWTtBQUN2RHFoQywwQkFBWU8sNEJBQTRCLElBQUk7WUFDN0M7QUFFQVAsd0JBQVl0SSxlQUFleCtCLFFBQVFtZ0MsSUFBSXhvQixVQUFVb3VCLElBQUl2SCxjQUFjO0FBQ25FditCLHFCQUFTcUwsS0FBS3cwQixpQkFBaUI7QUFDL0I7VUFDRCxLQUFLLE9BQU87QUFFWHhqQixtQkFBT3luQixVQUFBLHVCQUFBMzdCLE9BQWlDb1EsS0FBS3ZKLE9BQU8sY0FBYyxLQUFLLENBQUM7QUFDeEVxTixtQkFBTytrQixnQkFDTnJoQyxRQUFRdUgsUUFBUSxtQkFBbUIsS0FBSyxDQUFDdkgsUUFBUXVILFFBQVEsc0JBQXNCLEVBQUU0QixTQUFTLEtBQUs7QUFDaEdsSixxQkFBU3FMLEtBQUt5MEIsY0FBYztBQUU1QjkvQixxQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVcySCxPQUFPeW5CO0FBQ2hEOWpDLHFCQUFTcUwsS0FBS29KLGdCQUFnQkUsU0FBUzdVLE9BQU9nSCxNQUM3QyxnQkFDQSxlQUNEO0FBRUEsa0JBQU0wYSxjQUFjLElBQUl4aEIsU0FBU3FMLEtBQUtrSCxLQUNyQ2pOLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUMxQjFGLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxDQUNwQztBQUNBMGEsd0JBQVlDLHNCQUFzQnBGLE1BQU07QUFDeENtRix3QkFBWTRsQiw0QkFBNEIsSUFBSTtBQUM1QzVsQix3QkFBWStjLGVBQWV4K0IsUUFBUW1nQyxJQUFJeG9CLFVBQVVvdkIsSUFBSXZJLGNBQWM7QUFDbkV2K0IscUJBQVNxTCxLQUFLdzBCLGlCQUFpQjtBQUMvQjtVQUNEO1VBQ0E7QUFDQyxpQkFBS3Y2QixHQUFHdUYsT0FBTyxxQkFBcUI7Y0FDbkNoRCxNQUFNO2NBQ05pRCxLQUFLO1lBQ04sQ0FBQztBQUNEO1FBQ0Y7TUFDRDtBQUNBL0ssY0FBUVMsZ0JBQWdCVCxRQUFRbWdDLEtBQUssS0FBSztJQUMzQyxHQUFHO0VBQUE7QUFBQSxDQUFBOztBQ255QkgsSUFBQW1ILHVCQUFBLENBQUE7QUFBQSxJQUFBQyxvQkFBQTluQyxNQUFBO0VBQUEsd0NBQUE7QUFBQTtJQUVBO0FBQ0EsS0FBQyxTQUFTK25DLGVBQWU7QUFNeEJ4bkMsY0FBUXluQyxRQUFRLE1BQU07QUFDckIsWUFDQ2xpQyxHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLEtBQ3ZDLENBQUN3QyxTQUFTQyxjQUFjLGtCQUFrQixLQUMxQ0QsU0FBU0MsY0FBYyxtQ0FBbUMsR0FDekQ7QUFDRGxJLGtCQUFRNkosZUFDUDdKLFFBQVF5bkMsTUFBTWg2QixVQUNkMU4sT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCLFNBQ0FoSCxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsQ0FDcEM7UUFDRDtNQUNEO0FBQ0EvRyxjQUFReW5DLE1BQU1oNkIsV0FBVyxNQUFNO0FBQzlCLGNBQU1FLFNBQVMsSUFBSTFOLFNBQVMyTixhQUFhLEtBQUssR0FBRztBQUNqREQsZUFBT0UsU0FBUzlOLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxDQUFDO0FBQ3BENEcsZUFBT0csY0FBYyxTQUFTO0FBQzlCSCxlQUFPSSxjQUFjaE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRLEdBQUcsUUFBUTtBQUMvRDRHLGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sR0FBRyxpQkFBaUI7QUFDcEU0RyxlQUFPSSxjQUFjaE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXLEdBQUcsZ0JBQWdCO0FBQzdFLGNBQU1pSCxPQUFPLElBQUkvTixTQUFTZ08sVUFBVWpPLFFBQVF5bkMsTUFBTWg2QixTQUFTUyxRQUFRO0FBQ25FRixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ05pSCxNQUFNLENBQ0w7WUFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztZQUNwQ2lGLE9BQU87WUFDUHJMLE1BQU07WUFDTm9KLFNBQVNoSyxPQUFPZ0gsTUFDZixpREFDQSxpREFDRDtZQUNBa2MsU0FBU2pqQixRQUFRdUgsUUFBUSxrQkFBa0I7VUFDNUMsQ0FBQTtRQUVGLENBQUM7QUFDRCxjQUFNbWdDLFFBQVExNUIsS0FBS0ksT0FBTztVQUN6QnRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87UUFDckMsQ0FBQztBQUNEMmdDLGNBQU10NUIsT0FBTztVQUNadEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOb08sTUFBTSxDQUNMO1lBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCO1lBQ3hEaUYsT0FBTztZQUNQakMsU0FBU2hLLE9BQU9nSCxNQUNmLHFDQUNBLG1DQUNEO1lBQ0FvaUIsVUFBVTtjQUNUeG9CLE1BQU07Y0FDTm1ILE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87WUFDckM7VUFDRCxHQUNBO1lBQ0NzSCxPQUFPdE8sT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7WUFDbERpRixPQUFPO1lBQ1BpWCxTQUFTO1lBQ1RsWixTQUFTaEssT0FBT2dILE1BQU0sZUFBZSxhQUFhO1VBQ25ELEdBQ0E7WUFDQ3NILE9BQU90TyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCO1lBQ3hEaUYsT0FBTztZQUNQakMsU0FBU2hLLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUNqRCxHQUNBO1lBQ0NzSCxPQUFPdE8sT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQjtZQUMxRGlGLE9BQU87WUFDUGpDLFNBQVNoSyxPQUFPZ0gsTUFBTSxvQkFBb0Isa0JBQWtCO1VBQzdELEdBQ0E7WUFDQ3NILE9BQU90TyxPQUFPZ0gsTUFBTSx5QkFBeUIsdUJBQXVCO1lBQ3BFaUYsT0FBTztZQUNQakMsU0FBU2hLLE9BQU9nSCxNQUNmLG1IQUNBLGlIQUNEO1lBQ0FvaUIsVUFBVTtjQUNUeG9CLE1BQU07Y0FDTm1ILE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87Y0FDcEMwSCxPQUFPO2NBQ1BNLE1BQU0sQ0FDTDtnQkFDQ2pILE1BQU07Z0JBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO2dCQUNoQ2lGLE9BQU87Y0FDUixHQUNBO2dCQUNDbEUsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFDYixxQkFDQSxtQkFDRDtnQkFDQWlGLE9BQU87Y0FDUixHQUNBO2dCQUNDbEUsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFDYiw0REFDQSwwREFDRDtnQkFDQWlGLE9BQU87Y0FDUixHQUNBO2dCQUNDbEUsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxrQkFBa0IsZ0JBQWdCO2dCQUN0RGlGLE9BQU87Y0FDUixHQUNBO2dCQUNDbEUsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFDYixzQkFDQSxvQkFDRDtnQkFDQWlGLE9BQU87Y0FDUixDQUFBO1lBRUY7VUFDRCxHQUNBO1lBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQ2IsNEJBQ0EsMEJBQ0Q7WUFDQWlGLE9BQU87WUFDUGpDLFNBQVNoSyxPQUFPZ0gsTUFDZixzQkFDQSxvQkFDRDtVQUNELEdBQ0E7WUFDQ3NILE9BQU90TyxPQUFPZ0gsTUFDYixpQ0FDQSwrQkFDRDtZQUNBaUYsT0FBTztZQUNQakMsU0FBU2hLLE9BQU9nSCxNQUNmLHdFQUNBLHNFQUNEO1VBQ0QsQ0FBQTtRQUVGLENBQUM7QUFDRGlILGFBQUtJLE9BQU87VUFDWHRHLE1BQU07UUFDUCxDQUFDO0FBQ0QsY0FBTTRHLFNBQVNWLEtBQUtXLE9BQU87QUFDM0JoQixlQUFPaUIsV0FBV0YsTUFBTTtBQUN4QmYsZUFBT2tCLFFBQVE7QUFFZixjQUFNaUIsTUFBTTdILFNBQVM4SCxZQUFZLE9BQU87QUFDeENELFlBQUlFLFVBQVUsVUFBVSxNQUFNLElBQUk7QUFDbEN0QixlQUFPNUcsS0FBSyxDQUFDLEVBQUVvSSxjQUFjSixHQUFHO01BQ2pDO0FBQ0E5UCxjQUFReW5DLE1BQU1oNkIsU0FBU1MsV0FBWUksV0FBVTtBQUM1QyxZQUFJeEc7QUFDSixZQUFJZ0QsU0FBU3dELE1BQU1nQyxPQUFPeEYsT0FBT21ZO0FBQ2pDLGNBQU05UCxRQUFRN0UsTUFBTWdDLE9BQU94STtBQUFBLFlBQUE2L0IsY0FBQWo4QiwyQkFDUHlILEtBQUEsR0FBQXkwQjtBQUFBLFlBQUE7QUFBcEIsZUFBQUQsWUFBQS83QixFQUFBLEdBQUEsRUFBQWc4QixVQUFBRCxZQUFBOTdCLEVBQUEsR0FBQUMsUUFBMkI7QUFBQSxrQkFBaEIrN0IsUUFBQUQsUUFBQTU3QjtBQUNWLGdCQUFJNjdCLE1BQU01a0IsU0FBUztBQUNsQm5iLHFCQUFPKy9CLE1BQU1wVDtBQUNiO1lBQ0Q7VUFDRDtRQUFBLFNBQUF4b0IsS0FBQTtBQUFBMDdCLHNCQUFBaitCLEVBQUF1QyxHQUFBO1FBQUEsVUFBQTtBQUFBMDdCLHNCQUFBejdCLEVBQUE7UUFBQTtBQUNBLFlBQUk0N0I7QUFDSixnQkFBUWhnQyxNQUFBO1VBQ1AsS0FBSztBQUNKZ2dDLHNCQUFVO0FBQ1Y7VUFDRCxLQUFLO0FBQ0pBLHNCQUFVO0FBQ1Y7VUFDRCxLQUFLO0FBQ0pBLHNCQUFVO0FBQ1ZoOUIscUJBQVM7QUFDVDtVQUNELEtBQUs7QUFDSmc5QixzQkFBVTtBQUNWO1VBQ0QsS0FBSztBQUNKQSxzQkFBVTtBQUNWO1VBQ0QsS0FBSztBQUNKQSxzQkFBVTtBQUNWO1VBQ0Q7QUFDQyxrQkFBTSxJQUFJQyxNQUFNLHNDQUFzQztRQUN4RDtBQUNBLGNBQU0xRyxnQkFDTHJoQyxRQUFRdUgsUUFBUSxzQkFBc0IsS0FDdEMsQ0FBQ3ZILFFBQVF1SCxRQUFRLHlCQUF5QixFQUFFNEIsU0FBUzIrQixRQUFRRSxZQUFZLENBQUM7QUFDM0UsY0FBTXhwQixlQUFlMVc7QUFDckIsY0FBTXdVLFNBQVM7VUFDZHhVO1VBQ0EwVztVQUNBbWdCLFlBQVltSjtVQUNaekc7UUFDRDtBQUNBLFlBQUl5RyxZQUFZLE1BQU07QUFDckJ4ckIsaUJBQU8yckIsWUFBWTM1QixNQUFNZ0MsT0FBTyxnQkFBZ0IsRUFBRXRFO1FBQ25EO0FBQ0EsWUFBSTg3QixZQUFZLE1BQU07QUFDckIsZ0JBQU1JLFVBQVU1NUIsTUFBTWdDLE9BQU8sY0FBYyxFQUFFdEU7QUFDN0MsY0FBSSxDQUFDazhCLFNBQVM7QUFDYixpQkFBSzNpQyxHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUIsR0FBRztjQUNsRWUsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRCxtQkFBTztVQUNSO0FBQ0F1UixpQkFBTzRyQixVQUFVQTtRQUNsQjtBQUNBam9DLGlCQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUsaUJBQVN1VSxPQUFPQyxLQUFLbkcsTUFBTWdDLE1BQU07QUFDakNyUSxpQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVdwUCxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDbkV4RixpQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM3VSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07QUFFbEUsY0FBTTBhLGNBQWMsSUFBSXhoQixTQUFTcUwsS0FBS2tILEtBQ3JDak4sR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQzFCMUYsT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQ2hDO0FBQ0EwYSxvQkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4Q21GLG9CQUFZeFcsS0FBS2pMLFFBQVF5bkMsTUFBTTl2QixVQUFVcXZCLFlBQVk7QUFFckQsWUFBSWw4QixRQUFRO0FBQ1gyVyxzQkFBWStjLGVBQWV4K0IsUUFBUXluQyxNQUFNOXZCLFVBQVV3d0IsZ0JBQWdCO1FBQ3BFLE9BQU87QUFFTixjQUFJOUcsZUFBZTtBQUNsQi9rQixtQkFBT3FsQixTQUFTO0FBQ2hCM2hDLG9CQUFRcTJCLE9BQU8xZSxVQUFVeU0sS0FBS2tkLFNBQVNobEIsUUFBUSxJQUFJO1VBQ3BEO0FBRUEsY0FBSXhVLFNBQVMscUJBQXFCO0FBQ2pDLGtCQUFNc2dDLFdBQVduZ0MsU0FBU1ksY0FBYyxLQUFLO0FBQzdDdS9CLHFCQUFTbi9CLFlBQ1JoQixTQUFTcUIsZUFDUixLQUFLbEIsT0FBTyxVQUFBLG1CQUFBQSxPQUE2Qm5JLFNBQVNzVyxjQUFZLFFBQUEsR0FBVSxJQUFJLENBQzdFLENBQ0Q7QUFDQXRXLHFCQUFTdVUsT0FBT3lNLEtBQ2YsTUFDQWxoQixPQUFPZ0gsTUFDTixDQUFDLGtCQUFrQmtCLFNBQVNZLGNBQWMsSUFBSSxHQUFHdS9CLFFBQVEsR0FDekQsQ0FBQyxrQkFBa0JuZ0MsU0FBU1ksY0FBYyxJQUFJLEdBQUd1L0IsUUFBUSxDQUMxRCxDQUNEO1VBQ0Q7UUFDRDtNQUNEO0FBQ0Fwb0MsY0FBUXluQyxNQUFNOXZCLFlBQVk7UUFDekJxdkIsY0FBZW5xQixhQUFZO0FBQzFCLGNBQUloVixPQUFPZ1YsUUFBUTlILFlBQVk7QUFDL0IsZ0JBQU11SCxTQUFTTyxRQUFRK0Msc0JBQXNCO0FBRTdDL1gsaUJBQU9BLEtBQUtrTCxRQUNYLDRJQUNBLEVBQ0Q7QUFFQSxjQUFJdUosT0FBT3hVLFNBQVMscUJBQXFCO0FBQ3hDLGtCQUFNMlosY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FDckMsNkJBQ0F6UyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsQ0FDdEM7QUFDQTBhLHdCQUFZM00sa0JBQWtCLElBQUk7QUFDbEMyTSx3QkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4Q21GLHdCQUFZeFcsS0FBS2pMLFFBQVF5bkMsTUFBTTl2QixVQUFVMHdCLFNBQVM7VUFDbkQ7QUFDQSxjQUFJdDlCLE1BQU07QUFDVixrQkFBUXVSLE9BQU94VSxNQUFBO1lBQ2QsS0FBSztBQUNKaUQsb0JBQU0sS0FBSzNDLE9BQU8sVUFBVSx1QkFBdUI7QUFDbkQ7WUFDRCxLQUFLO0FBQ0oyQyxvQkFBTSxLQUFLM0MsT0FDVixVQUFBLEdBQUFBLE9BQ0drVSxPQUFPa0MsY0FBWSxVQUFBLEVBQUFwVyxPQUFXa1UsT0FBTzJyQixVQUN0Q2wxQixRQUFRLFNBQVMsV0FBVyxFQUM1QkEsUUFBUSxRQUFRLElBQUksRUFDcEJBLFFBQVEsZ0JBQWdCLE1BQU0sRUFDOUJBLFFBQVEsVUFBVSxFQUFFLEdBQUMsTUFBQSxDQUN4QjtBQUNBO1lBQ0QsS0FBSztBQUNKaEksb0JBQU0sS0FBSzNDLE9BQU8sVUFBQSxHQUFBQSxPQUFha1UsT0FBT2tDLGNBQVksVUFBQSxFQUFBcFcsT0FBV2tVLE9BQU80ckIsU0FBTyxNQUFBLENBQU07QUFDakY7WUFDRDtBQUNDbjlCLG9CQUFNLEtBQUszQyxPQUFPLFVBQUEsR0FBQUEsT0FBYWtVLE9BQU9rQyxjQUFZLFdBQUEsQ0FBVztBQUM3RDtVQUNGO0FBQ0EsZ0JBQU15aEIsV0FBV3A0QixLQUFLa0wsUUFDckIsOEZBQ0EsRUFDRDtBQUNBLGNBQ0NsTCxTQUFTbzRCLFlBQ1R4c0IsUUFBUTFULE9BQU9nSCxNQUFNLHNCQUFzQixvQkFBb0IsQ0FBQyxHQUMvRDtBQUNEYyxtQkFBT280QjtVQUNSO0FBQ0FwakIsa0JBQVErVSxZQUFZN21CLE1BQU1sRCxJQUFJO0FBQzlCLGNBQUl1dEIsY0FBY3IxQixPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7QUFDbkRxdUIseUJBQUEsWUFBQWh0QixPQUEyQmtVLE9BQU9xaUIsV0FBV3hCLFlBQVksR0FBQyxPQUFBLEVBQUEvMEIsT0FBUWtVLE9BQU9xaUIsV0FBV3hCLFlBQVksR0FBQyxJQUFBO0FBQ2pHL0gseUJBQWU7QUFDZnZZLGtCQUFRdEgsZUFBZTZmLFdBQVc7QUFDbEN2WSxrQkFBUXJILGNBQWN4VixRQUFRSyxVQUFVO0FBQ3hDd2Msa0JBQVEvRyxhQUFhOVYsUUFBUXVILFFBQVEsZUFBZSxDQUFDO0FBQ3JEc1Ysa0JBQVFnWixnQkFBZ0IsVUFBVTtBQUNsQ2haLGtCQUFRZ1YsS0FBSztRQUNkO1FBQ0FzVyxrQkFBbUJ0ckIsYUFBWTtBQUM5QixnQkFBTVAsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QyxnQkFBTXFoQixpQkFBaUJwa0IsUUFBUXdpQixXQUFXO0FBRTFDLGNBQUk0QixtQkFBbUIxN0IsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQUc7QUFDbkRvWCxvQkFDRTFILGlCQUFpQixFQUNqQi9VLEtBQUEsS0FBQWdJLE9BQVU2NEIsZ0JBQWMsR0FBQSxFQUFBNzRCLE9BQUlySSxPQUFPZ0gsTUFBTSxjQUFjLFlBQVksQ0FBQyxDQUFFO1VBQ3pFLE9BQU87QUFDTixrQkFBTW02QixlQUFBLGFBQUE5NEIsT0FBNEI2NEIsY0FBYztBQUNoRCxrQkFBTUUsZUFBZSxJQUFJbGhDLFNBQVNxTCxLQUFLa0gsS0FDdEMwdUIsY0FBQSxHQUFBOTRCLE9BQ0dySSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sR0FBQyxHQUFBLEVBQUFxQixPQUFJNjRCLGdCQUFjLEdBQUEsQ0FDcEQ7QUFDQSxrQkFBTUcsYUFBYSxPQUFPaDVCLE9BQ3pCLFVBQUEsTUFBQUEsT0FDTWtVLE9BQU9rQyxjQUFZLFlBQUEsRUFBQXBXLE9BQWFuSSxTQUFTc1csY0FBWSxRQUFBLEdBQzNELElBQ0Q7QUFDQTRxQix5QkFBYTFyQixjQUFjMnJCLFVBQVU7QUFDckNELHlCQUFhNXJCLGVBQ1p4VixPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsSUFDaEM5RyxTQUFTc1csZUFDVHhXLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxDQUNyQztBQUNBbzZCLHlCQUFhM3JCLGNBQWN4VixRQUFRSyxVQUFVO0FBQzdDOGdDLHlCQUFhdEwsZ0JBQWdCLFVBQVU7QUFDdkNzTCx5QkFBYXJyQixhQUFhOVYsUUFBUXVILFFBQVEsZUFBZSxDQUFDO0FBQzFENDVCLHlCQUFhcnNCLGtCQUFrQixNQUFNLEtBQUs7QUFDMUNxc0IseUJBQWEveUIsT0FBTztVQUNyQjtBQUVBLGNBQUlrTyxPQUFPK2tCLGVBQWU7QUFDekIva0IsbUJBQU9xbEIsU0FBUztBQUNoQjNoQyxvQkFBUXEyQixPQUFPMWUsVUFBVXlNLEtBQUtrZCxTQUFTaGxCLFFBQVEya0IsY0FBYztVQUM5RDtRQUNEO1FBQ0FvSCxXQUFZeHJCLGFBQVk7QUFDdkIsZ0JBQU1oVixPQUFPZ1YsUUFBUTlILFlBQVk7QUFFakM4SCxrQkFBUStVLFlBQVksR0FBQXhwQixPQUFHUCxNQUFJLFNBQUEsRUFBQU8sT0FBVW5JLFNBQVNzVyxjQUFZLFFBQUEsRUFBU25PLE9BQU8sSUFBSSxDQUFDO0FBQy9FeVUsa0JBQVF0SCxlQUFBLE9BQUFuTixPQUFzQm5JLFNBQVNzVyxjQUFZLElBQUEsQ0FBSTtBQUN2RHNHLGtCQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxrQkFBUWdaLGdCQUFnQixVQUFVO0FBQ2xDaFosa0JBQVFnVixLQUFLO1FBQ2Q7TUFDRDtBQUNBN3hCLGNBQVFTLGdCQUFnQlQsUUFBUXluQyxPQUFPLE9BQU87SUFDL0MsR0FBRztFQUFBO0FBQUEsQ0FBQTs7QUNyWEgsSUFBQWEseUJBQUEsQ0FBQTtBQUFBLElBQUFDLHNCQUFBOW9DLE1BQUE7RUFBQSwwQ0FBQTtBQUFBO0FBRUFtaUIsYUFBQTtJQUVBO0FBQ0EsS0FBQyxTQUFTNG1CLGVBQWU3b0MsR0FBRztBQUMzQixZQUFNRSxRQUFRRixFQUFFLE1BQU07QUFPdEJLLGNBQVFteUIsVUFBVSxNQUFNO0FBQ3ZCLFlBQUk1c0IsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsSUFBSSxLQUFLRixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLEdBQUc7QUFDdkY7UUFDRDtBQUNBekYsZ0JBQVE2SixlQUNQN0osUUFBUW15QixRQUFRMWtCLFVBQ2hCMU4sT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCLFVBQ0E5RyxTQUFTZ0IsY0FBY2xCLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxJQUFJaEgsT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQ3RGO01BQ0Q7QUFDQS9HLGNBQVFteUIsUUFBUTFrQixXQUFXLE1BQU07QUFDaEMsY0FBTUUsU0FBUyxJQUFJMU4sU0FBUzJOLGFBQWEsS0FBSyxHQUFHO0FBQ2pERCxlQUFPRSxTQUNONU4sU0FBU2dCLGNBQ05sQixPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsSUFDckNoSCxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FDbkM7QUFDQTRHLGVBQU9HLGNBQWMsU0FBUztBQUM5QkgsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFHLFNBQVM7QUFDNUQ0RyxlQUFPSSxjQUFjaE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNLEdBQUcsbUJBQW1CO0FBQ3RFNEcsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxHQUFHLGtCQUFrQjtBQUMvRSxjQUFNaUgsT0FBTyxJQUFJL04sU0FBU2dPLFVBQVVqTyxRQUFRbXlCLFFBQVExa0IsU0FBU1MsUUFBUTtBQUNyRSxjQUFNNFUsY0FBYzlVLEtBQUtJLE9BQU87VUFDL0J0RyxNQUFNO1VBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ25DLENBQUM7QUFDRCxZQUFJOUcsU0FBU2dCLGFBQWE7QUFDekI2aEIsc0JBQVkxVSxPQUFPO1lBQ2xCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOMk4sT0FBT3RPLFFBQVFteUIsUUFBUTFrQixTQUFTZzdCO1lBQ2hDMTVCLE1BQU0sQ0FDTDtjQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO2NBQ2xDaUYsT0FBTztjQUNQaVgsU0FBUztZQUNWLENBQUE7VUFFRixDQUFDO1FBQ0Y7QUFDQUgsb0JBQVkxVSxPQUFPO1VBQ2xCdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOMk4sT0FBT3RPLFFBQVFteUIsUUFBUTFrQixTQUFTZzdCO1VBQ2hDMTVCLE1BQU0sQ0FDTDtZQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1lBQ3RDaUYsT0FBTztZQUNQakMsU0FDQ2hLLE9BQU9nSCxNQUFNLHFCQUFxQixtQkFBbUIsS0FDcEQ5RyxTQUFTZ0IsY0FBYyxhQUFhO1lBQ3RDZ2lCLFNBQVMsQ0FBQ2hqQixTQUFTZ0I7VUFDcEIsR0FDQTtZQUNDb04sT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztZQUM1Q2lGLE9BQU87WUFDUGpDLFNBQVNoSyxPQUFPZ0gsTUFBTSxxQkFBcUIsbUJBQW1CO1lBQzlEeUgsVUFBVWpKLEdBQUdDLE9BQU9DLElBQUksYUFBYSxNQUFNLEtBQUtGLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLE1BQU07VUFDekYsQ0FBQTtRQUVGLENBQUM7QUFDRHVJLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7VUFDOUJwRyxNQUFNO1FBQ1AsQ0FBQztBQUNEcU4sYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOdUcsT0FBTztVQUNQMU4sTUFBTTtRQUNQLENBQUM7QUFDRHFOLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU87VUFDUDFOLE1BQU07UUFDUCxDQUFDO0FBQ0RxTixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1FBQ1AsQ0FBQztBQUNELGNBQU00RyxTQUFTVixLQUFLVyxPQUFPO0FBQzNCaEIsZUFBT2lCLFdBQVdGLE1BQU07QUFDeEJmLGVBQU9rQixRQUFRO0FBRWYsY0FBTWlCLE1BQU03SCxTQUFTOEgsWUFBWSxPQUFPO0FBQ3hDRCxZQUFJRSxVQUFVLFVBQVUsTUFBTSxJQUFJO0FBQ2xDdEIsZUFBT21WLFdBQVcsQ0FBQyxFQUFFM1QsY0FBY0osR0FBRztBQUV0QzlQLGdCQUFRbXlCLFFBQVF1VyxxQkFBcUI7TUFDdEM7QUFLQSxZQUFNQyxhQUFhcGpDLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sTUFBTUYsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTTtBQUl2R3pGLGNBQVFteUIsUUFBUXlXLDBCQUEwQixDQUFDO0FBQzNDNW9DLGNBQVFteUIsUUFBUTBXLDJCQUEyQixDQUFDO0FBQzVDN29DLGNBQVFteUIsUUFBUXVXLHVCQUF1QixNQUFNO0FBQzVDLGNBQU1wc0IsU0FBUztVQUNkck4sUUFBUTtVQUNSNjVCLGNBQWM7VUFDZHQrQixRQUFRO1VBQ1J1RSxNQUFNO1VBQ05tVyxRQUFRO1VBQ1JFLFNBQVM3ZixHQUFHQyxPQUFPQyxJQUFJLFlBQVk7VUFDbkNxUyxNQUFNO1VBQ05peEIsUUFBUTtVQUNSbHhCLFFBQVF0UyxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7UUFDbkM7QUFDQSxhQUFLOEYsSUFBSTlGLElBQUk2VyxNQUFNLEVBQUVpSixLQUFNeWpCLGlCQUFnQjtBQUMxQyxnQkFBTSxDQUFDQyxNQUFNLElBQUlELFlBQVlsNkIsTUFBTW82QjtBQUNuQyxnQkFBTTEyQixPQUFPdzJCLFlBQVlsNkIsTUFBTTJELE1BQU13MkIsTUFBTTtBQUMzQyxnQkFBTW5xQixVQUFVLENBQUM7QUFDakIsZ0JBQU1xcUIsV0FBVyxDQUFDO0FBRWxCbnBDLGtCQUFRbXlCLFFBQVFpWCxVQUFVNTJCLEtBQUs2MkIsbUJBQW1CNzJCLEtBQUs0MkIsWUFBWTtBQUFBLGNBQUFFLGNBQUE1OUIsMkJBQzFDOEcsS0FBSysyQixVQUFBLEdBQUFDO0FBQUEsY0FBQTtBQUE5QixpQkFBQUYsWUFBQTE5QixFQUFBLEdBQUEsRUFBQTQ5QixVQUFBRixZQUFBejlCLEVBQUEsR0FBQUMsUUFBMEM7QUFBQSxvQkFBL0J5OUIsYUFBQUMsUUFBQXg5QjtBQUNWLGtCQUFJdTlCLFdBQVd6aEMsU0FBUyxPQUFPO0FBQzlCZ1gsd0JBQVF5cUIsV0FBV3poQyxJQUFJLElBQUk7a0JBQzFCcVMsT0FBT292QixXQUFXcHZCO2tCQUNsQndOLFFBQVE0aEIsV0FBVzVoQjtrQkFDbkI4aEIsU0FBU0YsV0FBV0UsWUFBWTtnQkFDakM7Y0FDRDtZQUNEO1VBQUEsU0FBQXg5QixLQUFBO0FBQUFxOUIsd0JBQUE1L0IsRUFBQXVDLEdBQUE7VUFBQSxVQUFBO0FBQUFxOUIsd0JBQUFwOUIsRUFBQTtVQUFBO0FBRUEsY0FBSTg4QixZQUFZbDZCLE1BQU1nVyxVQUFVbGtCLFVBQVUsS0FBS29vQyxZQUFZbDZCLE1BQU1nVyxVQUFVLENBQUMsRUFBRXRhLFdBQVcsYUFBYTtBQUNyRyxhQUFDeEssUUFBUW15QixRQUFRdVgscUJBQXFCLElBQUlWLFlBQVlsNkIsTUFBTWdXO1VBQzdELFdBQVdra0IsWUFBWWw2QixNQUFNZ1csVUFBVWxrQixVQUFVLEdBQUc7QUFDbkQsYUFBQSxFQUFHWixRQUFRbXlCLFFBQVF1WCxxQkFBcUIsSUFBSVYsWUFBWWw2QixNQUFNZ1c7VUFDL0Q7QUFDQSxjQUFJOWtCLFFBQVFteUIsUUFBUXVYLHVCQUF1QjtBQUFBLGdCQUFBQyxjQUFBaitCLDJCQUNqQjFMLFFBQVFteUIsUUFBUXVYLHNCQUFzQnB0QixPQUFPc3RCLE9BQUEsR0FBQUM7QUFBQSxnQkFBQTtBQUF0RSxtQkFBQUYsWUFBQS85QixFQUFBLEdBQUEsRUFBQWkrQixVQUFBRixZQUFBOTlCLEVBQUEsR0FBQUMsUUFBK0U7QUFBQSxzQkFBcEV5OUIsYUFBQU0sUUFBQTc5QjtBQUNWLG9CQUFJdTlCLFdBQVd6aEMsU0FBUyxPQUFPO0FBQzlCcWhDLDJCQUFTSSxXQUFXemhDLElBQUksSUFBSTtvQkFDM0JxUyxPQUFPb3ZCLFdBQVdwdkI7b0JBQ2xCd04sUUFBUTRoQixXQUFXNWhCO29CQUNuQjhoQixTQUFTRixXQUFXRSxZQUFZO2tCQUNqQztnQkFDRDtjQUNEO1lBQUEsU0FBQXg5QixLQUFBO0FBQUEwOUIsMEJBQUFqZ0MsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUEwOUIsMEJBQUF6OUIsRUFBQTtZQUFBO1VBQ0Q7QUFFQWxNLGtCQUFRbXlCLFFBQVEyWCxnQkFBZ0IsQ0FBQyxDQUFDZCxZQUFZbDZCLE1BQU1nVyxVQUFVbGtCO0FBQzlEWixrQkFBUW15QixRQUFReVcsMEJBQTBCOXBCO0FBQzFDOWUsa0JBQVFteUIsUUFBUTBXLDJCQUEyQk07QUFDM0NucEMsa0JBQVFteUIsUUFBUTFrQixTQUFTczhCLDZCQUE2QjtRQUN2RCxDQUFDO01BQ0Y7QUFDQS9wQyxjQUFRbXlCLFFBQVExa0IsU0FBU3M4QiwrQkFBK0IsTUFBTTtBQUM3RCxjQUFNQyxxQkFBcUJ0dkIsT0FBT1ksS0FBS3RiLFFBQVFteUIsUUFBUXlXLHVCQUF1QixFQUFFaG9DLFdBQVc7QUFDM0YsWUFBSVosUUFBUW15QixRQUFRMlgsaUJBQWlCOXBDLFFBQVFteUIsUUFBUThYLGNBQWM7QUFDbEUsZ0JBQU1DLGNBQWN2cUMsRUFBRSxRQUFRO0FBQzlCLGNBQUlLLFFBQVFteUIsUUFBUTJYLGVBQWU7QUFDbENJLHdCQUFZOTdCLE9BQ1h6TyxFQUFBLDJDQUFBeUksT0FDNEM3QyxHQUFHMEUsS0FBS00sT0FBTyxlQUFlO2NBQ3hFQyxRQUFRO2NBQ1JnSSxNQUFNak4sR0FBR0MsT0FBT0MsSUFBSSxZQUFZO2NBQ2hDcUMsTUFBTTtZQUNQLENBQUMsR0FBQyxJQUFBLEVBQUFNLE9BQUtySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sR0FBQyxNQUFBLENBQ3BDLEdBQ0EvRyxRQUFRbXlCLFFBQVE4WCxlQUFldHFDLEVBQUUsUUFBUSxFQUFFb3JCLEtBQUssVUFBVSxJQUFJLElBQy9EO1VBQ0Q7QUFDQTlxQixtQkFBU3VVLE9BQU9DLEtBQUs1VSxNQUFNeUgsS0FBSyxnQ0FBZ0MsRUFBRSxDQUFDLENBQUM7QUFDcEVySCxtQkFBU3VVLE9BQU9wVSxLQUNmNHBDLHFCQUNHanFDLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxJQUMzQixDQUNBaEgsT0FBT2dILE1BQU0sU0FBUyxPQUFPLEdBQzdCcEgsRUFBQSxNQUFBeUksT0FDTyxJQUFJbkksU0FBU3VZLEtBQUt4WSxRQUFRbXlCLFFBQVF1WCxzQkFBc0JuZSxTQUFTLEVBQUVQLFNBQ3hFLEtBQ0QsR0FBQyxNQUFBLENBQ0YsRUFBRSxDQUFDLEdBQUEsSUFBQTVpQixPQUNDcEksUUFBUW15QixRQUFRdVgsc0JBQXNCdGxCLElBQUksRUFBQWhjLE9BQUdySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FBQyxHQUFBLEdBQ3pFLEdBQUcvRyxRQUFRbXlCLFFBQVFnWSw0QkFBNEJucUMsUUFBUW15QixRQUFRMFcsd0JBQXdCLENBQUEsR0FFMUZxQixZQUFZLENBQUMsQ0FDZDtRQUNEO0FBQ0FqcUMsaUJBQVN1VSxPQUFPQyxLQUFLNVUsTUFBTXlILEtBQUssOEJBQThCLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLFlBQUk4aUMsaUJBQWlCLENBQUE7QUFDckIsWUFBSUMsY0FBYztBQUNsQkQseUJBQWlCcHFDLFFBQVFteUIsUUFBUWdZLDRCQUE0Qm5xQyxRQUFRbXlCLFFBQVF5Vyx1QkFBdUI7QUFDcEcsWUFBSW9CLG9CQUFvQjtBQUN2Qkssd0JBQWM7UUFDZjtBQUNBcHFDLGlCQUFTdVUsT0FBTzYxQixXQUFXLEVBQUV0cUMsT0FBT2dILE1BQU0sVUFBVSxRQUFRLEdBQUdxakMsY0FBYztNQUM5RTtBQUNBcHFDLGNBQVFteUIsUUFBUTFrQixTQUFTZzdCLGVBQWdCLytCLE9BQU07QUFDOUMsWUFBSTRjO0FBQ0osWUFBSWdrQjtBQUNKLFlBQUlDO0FBQ0osZ0JBQVE3Z0MsRUFBRTRHLE9BQU9ta0IsUUFBQTtVQUNoQixLQUFLO0FBQ0puTywyQkFBZSxJQUFJcm1CLFNBQVNnTyxVQUFVZ0QsUUFBUTtjQUM3Q25KLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDOUJwRyxNQUFNO1lBQ1AsQ0FBQztBQUNEMmxCLHlCQUFhbFksT0FBTztjQUNuQnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87Y0FDcEN1SCxPQUFPdE8sUUFBUW15QixRQUFRMWtCLFNBQVMrOEI7Y0FDaEN6N0IsTUFBTXhKLEdBQUdDLE9BQU9DLElBQUksYUFBYSxJQUM5QnpGLFFBQVFteUIsUUFBUXNZLHVCQUNoQnpxQyxRQUFRbXlCLFFBQVF1WTtZQUNwQixDQUFDO0FBQ0RILHFCQUFTLElBQUl0cUMsU0FBU2dPLFVBQVVnRCxRQUFRO2NBQ3ZDbkosTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtjQUNsQ3BHLE1BQU07WUFDUCxDQUFDO0FBQ0Q0cEMsbUJBQU9uOEIsT0FBTztjQUNidEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBTztZQUNSLENBQUM7QUFDRGs4QixtQkFBT244QixPQUFPO2NBQ2J0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPO1lBQ1IsQ0FBQztBQUVELGdCQUFJOUksR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEdBQUc7QUFDakM4a0MscUJBQU9uOEIsT0FBTztnQkFDYnRHLE1BQU07Z0JBQ053RyxPQUFPdE8sUUFBUW15QixRQUFRd1ksV0FBV0M7Z0JBQ2xDNzdCLE1BQU0sQ0FDTDtrQkFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtrQkFDdENwRyxNQUFNO2tCQUNOb0osU0FBU2hLLE9BQU9nSCxNQUNmLG9CQUNBLGtCQUNEO2tCQUNBa2MsU0FBUztnQkFDVixDQUFBO2NBRUYsQ0FBQztBQUNEc25CLHFCQUFPbjhCLE9BQU87Z0JBQ2J0RyxNQUFNO2dCQUNObkgsTUFBTTtnQkFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87Z0JBQ3BDdUgsT0FBT3RPLFFBQVFteUIsUUFBUXdZLFdBQVdFO2dCQUNsQzk3QixNQUFNL08sUUFBUW15QixRQUFRMlksaUJBQWlCbGpCOztrQkFFckN6TixXQUFVO0FBQ1YsMkJBQU93dUIsY0FBY3h1QixNQUFNbk8sVUFBVTtrQkFDdEM7Z0JBQ0Q7Y0FDRCxDQUFDO0FBQ0R1K0IscUJBQU9uOEIsT0FBTztnQkFDYnRHLE1BQU07Z0JBQ05uSCxNQUFNO2dCQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztnQkFDcEN1SCxPQUFRQSxXQUFVO0FBQ2pCLHNCQUFJQSxNQUFNZ0MsT0FBT3RFLFVBQVUsVUFBVTtBQUNwQ2hNLDRCQUFRbXlCLFFBQVE0WSxlQUFlejhCLE1BQU1nQyxNQUFNO2tCQUM1QztBQUNBM1Esb0JBQUUscUJBQXFCQSxFQUFFMk8sTUFBTWdDLE1BQU0sRUFBRTA2QixRQUFRLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRS9uQixVQUMxRDNVLE1BQU1nQyxPQUFPMjZCLGlCQUFpQjtnQkFDaEM7O2dCQUdBbDhCLE1BQU0vTyxRQUFRbXlCLFFBQVErWTtjQUN2QixDQUFDO0FBQ0RYLHFCQUFPbjhCLE9BQU87Z0JBQ2J0RyxNQUFNO2dCQUNOd0csT0FBT3RPLFFBQVFteUIsUUFBUXdZLFdBQVdRO2dCQUNsQ3A4QixNQUFNLENBQ0w7a0JBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7a0JBQ3RDcEcsTUFBTTtrQkFDTm9KLFNBQVNoSyxPQUFPZ0gsTUFDZixxQkFDQSxtQkFDRDtrQkFDQWtjLFNBQVM7Z0JBQ1YsQ0FBQTtjQUVGLENBQUM7QUFDRHNuQixxQkFBT244QixPQUFPO2dCQUNidEcsTUFBTTtnQkFDTm5ILE1BQU07Z0JBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO2dCQUNwQ3VILE9BQU90TyxRQUFRbXlCLFFBQVF3WSxXQUFXUztnQkFDbENyOEIsTUFBTS9PLFFBQVFteUIsUUFBUTJZLGlCQUFpQmxqQjs7a0JBRXJDek4sV0FBVTtBQUNWLDJCQUNDQSxNQUFNbk8sVUFBVSxvQkFBb0IyOEIsY0FBY3h1QixNQUFNbk8sVUFBVTtrQkFFcEU7Z0JBQ0Q7Y0FDRCxDQUFDO0FBQ0R1K0IscUJBQU9uOEIsT0FBTztnQkFDYnRHLE1BQU07Z0JBQ05uSCxNQUFNO2dCQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztnQkFDcEN1SCxPQUFRQSxXQUFVO0FBQ2pCLHNCQUFJQSxNQUFNZ0MsT0FBT3RFLFVBQVUsVUFBVTtBQUNwQ2hNLDRCQUFRbXlCLFFBQVE0WSxlQUFlejhCLE1BQU1nQyxNQUFNO2tCQUM1QztnQkFDRDs7Z0JBRUF2QixNQUFNL08sUUFBUW15QixRQUFRK1k7Y0FDdkIsQ0FBQztZQUNGLE9BQU87QUFFTlgscUJBQU9uOEIsT0FBTztnQkFDYnRHLE1BQU07Z0JBQ05uSCxNQUFNO2dCQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztnQkFDcEN1SCxPQUFPdE8sUUFBUW15QixRQUFRd1ksV0FBV1U7Z0JBQ2xDdDhCLE1BQU0vTyxRQUFRbXlCLFFBQVEyWSxpQkFBaUJsakI7O2tCQUVyQ3pOLFdBQVU7QUFDViwyQkFBT0EsTUFBTW5PLFVBQVU7a0JBQ3hCO2dCQUNEO2NBQ0QsQ0FBQztBQUNEdStCLHFCQUFPbjhCLE9BQU87Z0JBQ2J0RyxNQUFNO2dCQUNObkgsTUFBTTtnQkFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87Z0JBQ3BDdUgsT0FBUUEsV0FBVTtBQUNqQixzQkFBSUEsTUFBTWdDLE9BQU90RSxVQUFVLFVBQVU7QUFDcENoTSw0QkFBUW15QixRQUFRNFksZUFBZXo4QixNQUFNZ0MsTUFBTTtrQkFDNUM7Z0JBQ0Q7O2dCQUVBdkIsTUFBTS9PLFFBQVFteUIsUUFBUStZO2NBQ3ZCLENBQUM7WUFDRjtBQUNBWCxtQkFBT244QixPQUFPO2NBQ2J0RyxNQUFNO2NBQ05pSCxNQUFNLENBQ0w7Z0JBQ0NwTyxNQUFNO2dCQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO2dCQUNsRGtjLFNBQVM7Y0FDVixDQUFBO1lBRUYsQ0FBQztBQUNEc25CLG1CQUFPbjhCLE9BQU87Y0FDYnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7WUFDN0MsQ0FBQztBQUNELGdCQUFJLENBQUN4QixHQUFHQyxPQUFPQyxJQUFJLGFBQWEsS0FBS0YsR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0IsTUFBTSxhQUFhO0FBRXpGO1lBQ0Q7VUFFRCxLQUFLO0FBQ0o2a0MscUJBQVMsSUFBSXJxQyxTQUFTZ08sVUFBVWdELFFBQVE7Y0FDdkNuSixNQUFNO2NBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO2NBQ2xDcEcsTUFBTTtZQUNQLENBQUM7QUFDRDJwQyxtQkFBT2w4QixPQUFPO2NBQ2J0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPO1lBQ1IsQ0FBQztBQUNEaThCLG1CQUFPbDhCLE9BQU87Y0FDYnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU87WUFDUixDQUFDO0FBQ0RpOEIsbUJBQU9sOEIsT0FBTztjQUNidEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztjQUN4Q2dJLE1BQU0vTyxRQUFRbXlCLFFBQVFtWjtjQUN0Qmg5QixPQUFPdE8sUUFBUW15QixRQUFRd1ksV0FBV1k7WUFDbkMsQ0FBQztBQUNEakIsbUJBQU9sOEIsT0FBTztjQUNidEcsTUFBTTtjQUNOaUgsTUFBTSxDQUNMO2dCQUNDcE8sTUFBTTtnQkFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCO2dCQUN4RGdELFNBQVNoSyxPQUFPZ0gsTUFDZixtQ0FDQSxpQ0FDRDtjQUNELEdBQ0E7Z0JBQ0NwRyxNQUFNO2dCQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLDRCQUE0QiwwQkFBMEI7Z0JBQzFFZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLDhCQUNBLDRCQUNEO2dCQUNBa2MsU0FBUzFkLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU07Y0FDakQsR0FDQTtnQkFDQzlFLE1BQU07Z0JBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO2dCQUM1Q2dELFNBQVNoSyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCO2dCQUMxRGtjLFNBQVM7Z0JBQ1RELFFBQVF0WixFQUFFNEcsT0FBT21rQixXQUFXO2NBQzdCLENBQUE7WUFFRixDQUFDO0FBQ0Q7VUFDRCxLQUFLO0FBQ0puTywyQkFBZSxJQUFJcm1CLFNBQVNnTyxVQUFVZ0QsUUFBUTtjQUM3Q25KLE1BQU07Y0FDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Y0FDbENwRyxNQUFNO1lBQ1AsQ0FBQztBQUNEMmxCLHlCQUFhbFksT0FBTztjQUNuQnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Y0FDdEN1SCxPQUFPdE8sUUFBUW15QixRQUFRMWtCLFNBQVMrOEI7Y0FDaEN6N0IsTUFBTXhKLEdBQUdDLE9BQU9DLElBQUksYUFBYSxJQUM5QnpGLFFBQVFteUIsUUFBUXFaLGtCQUNoQnhyQyxRQUFRbXlCLFFBQVF1WTtZQUNwQixDQUFDO0FBQ0RKLHFCQUFTLElBQUlycUMsU0FBU2dPLFVBQVVnRCxRQUFRO2NBQ3ZDbkosTUFBTTtjQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtjQUM5QnBHLE1BQU07WUFDUCxDQUFDO0FBQ0QycEMsbUJBQU9sOEIsT0FBTztjQUNidEcsTUFBTTtjQUNObkgsTUFBTTtjQUNOME4sT0FBTztZQUNSLENBQUM7QUFDRGk4QixtQkFBT2w4QixPQUFPO2NBQ2J0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPO1lBQ1IsQ0FBQztBQUNEaThCLG1CQUFPbDhCLE9BQU87Y0FDYnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7Y0FDaENnSSxNQUFNLENBQ0w7Z0JBQ0NWLE9BQU87Z0JBQ1BpSixVQUFVO2dCQUNWdEwsT0FBTztjQUNSLEdBQ0E7Z0JBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO2dCQUM5QmlGLE9BQU87Y0FDUixHQUNBO2dCQUNDcUMsT0FBTztnQkFDUHJDLE9BQU87Y0FDUixDQUFBO1lBRUYsQ0FBQztBQUNEcytCLG1CQUFPbDhCLE9BQU87Y0FDYnRHLE1BQU07Y0FDTm5ILE1BQU07Y0FDTjBOLE9BQU87WUFDUixDQUFDO0FBQ0Q7VUFDRDtBQUNDLGlCQUFLOUksR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWEsR0FBRztjQUMxRGUsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRDtRQUNGO0FBQ0EsWUFBSXFlO0FBQ0osWUFBSTlDLGNBQWM7QUFDakIsV0FBQzhDLFFBQVEsSUFBSXpwQixFQUFFK0osRUFBRTRHLE9BQU90QyxJQUFJLEVBQUUxRyxLQUFLLCtCQUErQjtBQUNsRThoQixtQkFBUzlnQixXQUFXK0ksYUFBYWlWLGFBQWEzWCxPQUFPLEdBQUd5YSxRQUFRO1FBQ2pFLE9BQU87QUFDTnpwQixZQUFFK0osRUFBRTRHLE9BQU90QyxJQUFJLEVBQUUxRyxLQUFLLCtCQUErQixFQUFFNEMsSUFBSSxXQUFXLE1BQU07UUFDN0U7QUFDQSxZQUFJb2dDLFFBQVE7QUFDWCxXQUFDbGhCLFFBQVEsSUFBSXpwQixFQUFFK0osRUFBRTRHLE9BQU90QyxJQUFJLEVBQUUxRyxLQUFLLHlCQUF5QjtBQUM1RDhoQixtQkFBUzlnQixXQUFXK0ksYUFBYWk1QixPQUFPMzdCLE9BQU8sR0FBR3lhLFFBQVE7UUFDM0QsT0FBTztBQUNOenBCLFlBQUUrSixFQUFFNEcsT0FBT3RDLElBQUksRUFBRTFHLEtBQUsseUJBQXlCLEVBQUU0QyxJQUFJLFdBQVcsTUFBTTtRQUN2RTtBQUNBLFlBQUlxZ0MsUUFBUTtBQUNYLFdBQUNuaEIsUUFBUSxJQUFJenBCLEVBQUUrSixFQUFFNEcsT0FBT3RDLElBQUksRUFBRTFHLEtBQUsseUJBQXlCO0FBQzVEOGhCLG1CQUFTOWdCLFdBQVcrSSxhQUFhazVCLE9BQU81N0IsT0FBTyxHQUFHeWEsUUFBUTtRQUMzRCxPQUFPO0FBQ056cEIsWUFBRStKLEVBQUU0RyxPQUFPdEMsSUFBSSxFQUFFMUcsS0FBSyx5QkFBeUIsRUFBRTRDLElBQUksV0FBVyxNQUFNO1FBQ3ZFO0FBQ0EsWUFBSVIsRUFBRTRHLE9BQU9ta0IsV0FBVyxXQUFXO0FBRWxDLGdCQUFNM2tCLE1BQU03SCxTQUFTOEgsWUFBWSxPQUFPO0FBQ3hDRCxjQUFJRSxVQUFVLFVBQVUsTUFBTSxJQUFJO0FBQ2xDdEcsWUFBRTRHLE9BQU90QyxLQUFLaUMsU0FBU0MsY0FBY0osR0FBRztBQUV4Q25RLFlBQUUrSixFQUFFNEcsT0FBT3RDLElBQUksRUFBRTFHLEtBQUssZ0NBQWdDLEVBQUVvYyxPQUFPLEVBQUV4WixJQUFJO1lBQ3BFMkUsU0FBUztZQUNUNDhCLGFBQWE7VUFDZCxDQUFDO1FBQ0Y7QUFFQXpyQyxnQkFBUW15QixRQUFRMWtCLFNBQVNzOEIsNkJBQTZCO01BQ3ZEO0FBRUEvcEMsY0FBUW15QixRQUFRd1ksYUFBYTtRQUM1QkMsWUFBYWxoQyxPQUFNO0FBQ2xCQSxZQUFFNEcsT0FBT3RDLEtBQUs2OEIsVUFBVXI4QixXQUFXLENBQUM5RSxFQUFFNEcsT0FBTzJTO0FBQzdDdlosWUFBRTRHLE9BQU90QyxLQUFLMDlCLFdBQVdsOUIsV0FBVyxDQUFDOUUsRUFBRTRHLE9BQU8yUyxXQUFXdlosRUFBRTRHLE9BQU90QyxLQUFLNjhCLFVBQVU3K0IsVUFBVTtBQUMzRnRDLFlBQUU0RyxPQUFPdEMsS0FBSzY4QixVQUFVcDhCLE1BQU1rOUIsUUFBUWppQyxFQUFFNEcsT0FBTzJTLFVBQVUsS0FBSztBQUM5RHZaLFlBQUU0RyxPQUFPdEMsS0FBSzA5QixXQUFXajlCLE1BQU1rOUIsUUFBUWppQyxFQUFFNEcsT0FBTzJTLFVBQVUsS0FBSztRQUNoRTtRQUNBNG5CLFdBQVluaEMsT0FBTTtBQUNqQkEsWUFBRTRHLE9BQU90QyxLQUFLMDlCLFdBQVdsOUIsV0FBVzlFLEVBQUU0RyxPQUFPdEUsVUFBVTtRQUN4RDtRQUNBbS9CLFlBQWF6aEMsT0FBTTtBQUVsQixjQUFJQSxFQUFFNEcsT0FBT3RDLEtBQUtvOUIsVUFBVTU4QixZQUFZLENBQUM5RSxFQUFFNEcsT0FBT3RDLEtBQUs2OEIsVUFBVXI4QixVQUFVO0FBQzFFOUUsY0FBRTRHLE9BQU90QyxLQUFLbzlCLFVBQVVwL0IsUUFBUXRDLEVBQUU0RyxPQUFPdEMsS0FBSzY4QixVQUFVNytCO0FBQ3hEdEMsY0FBRTRHLE9BQU90QyxLQUFLNDlCLFdBQVc1L0IsUUFBUXRDLEVBQUU0RyxPQUFPdEMsS0FBSzA5QixXQUFXMS9CO1VBQzNELFdBQVd0QyxFQUFFNEcsT0FBT3RDLEtBQUs2OEIsVUFBVXI4QixVQUFVO0FBQzVDOUUsY0FBRTRHLE9BQU90QyxLQUFLbzlCLFVBQVVwL0IsUUFBUTtBQUNoQ3RDLGNBQUU0RyxPQUFPdEMsS0FBSzQ5QixXQUFXNS9CLFFBQVE7VUFDbEM7QUFDQXRDLFlBQUU0RyxPQUFPdEMsS0FBS285QixVQUFVNThCLFdBQVcsQ0FBQzlFLEVBQUU0RyxPQUFPMlM7QUFDN0N2WixZQUFFNEcsT0FBT3RDLEtBQUs0OUIsV0FBV3A5QixXQUFXLENBQUM5RSxFQUFFNEcsT0FBTzJTLFdBQVd2WixFQUFFNEcsT0FBT3RDLEtBQUtvOUIsVUFBVXAvQixVQUFVO0FBQzNGdEMsWUFBRTRHLE9BQU90QyxLQUFLbzlCLFVBQVUzOEIsTUFBTWs5QixRQUFRamlDLEVBQUU0RyxPQUFPMlMsVUFBVSxLQUFLO0FBQzlEdlosWUFBRTRHLE9BQU90QyxLQUFLNDlCLFdBQVduOUIsTUFBTWs5QixRQUFRamlDLEVBQUU0RyxPQUFPMlMsVUFBVSxLQUFLO1FBQ2hFO1FBQ0Ftb0IsV0FBWTFoQyxPQUFNO0FBQ2pCQSxZQUFFNEcsT0FBT3RDLEtBQUs0OUIsV0FBV3A5QixXQUFXOUUsRUFBRTRHLE9BQU90RSxVQUFVO1FBQ3hEO1FBQ0FxL0IsYUFBYzNoQyxPQUFNO0FBQ25CQSxZQUFFNEcsT0FBT3RDLEtBQUs2OUIsYUFBYXI5QixXQUFXOUUsRUFBRTRHLE9BQU90RSxVQUFVO1FBQzFEO1FBQ0F1L0IsU0FBVTdoQyxPQUFNO0FBQ2ZBLFlBQUU0RyxPQUFPdEMsS0FBSzg5QixNQUFNdDlCLFdBQVc5RSxFQUFFNEcsT0FBT3RFLFVBQVUsVUFBVXRDLEVBQUU0RyxPQUFPdEUsVUFBVTtBQUMvRXRDLFlBQUU0RyxPQUFPdEMsS0FBS3E0QixVQUFVNzNCLFdBQVc5RSxFQUFFNEcsT0FBT3RFLFVBQVUsVUFBVXRDLEVBQUU0RyxPQUFPdEUsVUFBVTtBQUNuRnRDLFlBQUU0RyxPQUFPdEMsS0FBSys5QixXQUFXdjlCLFdBQVc5RSxFQUFFNEcsT0FBT3RFLFVBQVUsVUFBVXRDLEVBQUU0RyxPQUFPdEUsVUFBVTtRQUNyRjtNQUNEO0FBQ0FoTSxjQUFRbXlCLFFBQVE0WSxpQkFBa0J6NkIsWUFBVztBQUM1QyxjQUFNaWMsU0FBU3dSLE9BQ2RoK0IsT0FBT2dILE1BQ04sMEdBQ0EsdUdBQ0QsR0FDQSxFQUNEO0FBQ0EsWUFBSXdsQixRQUFRO0FBQ1gsZ0JBQU15ZixTQUFTL2pDLFNBQVNZLGNBQWMsUUFBUTtBQUM5Q21qQyxpQkFBT2xqQyxhQUFhLFNBQVN5akIsTUFBTTtBQUNuQ3lmLGlCQUFPajdCLGNBQWN3YjtBQUNyQmpjLGlCQUFPckgsWUFBWStpQyxNQUFNO0FBQ3pCMTdCLGlCQUFPdEUsUUFBUXVnQjtRQUNoQixPQUFPO0FBQ05qYyxpQkFBTzI2QixnQkFBZ0I7UUFDeEI7TUFDRDtBQUVBanJDLGNBQVFteUIsUUFBUTJZLG1CQUFtQixDQUNsQztRQUNDejhCLE9BQU87UUFDUHJDLE9BQU87TUFDUixHQUNBO1FBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxZQUFZO1FBQzdDaUYsT0FBTztNQUNSLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7UUFDOUNpRixPQUFPO01BQ1IsR0FDQTtRQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtRQUNsQ2lGLE9BQU87UUFDUHNMLFVBQVU7TUFDWCxHQUNBO1FBQ0NqSixPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO1FBQ3hDaUYsT0FBTztNQUNSLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7UUFDeENpRixPQUFPO01BQ1IsQ0FBQTtBQUlEaE0sY0FBUW15QixRQUFRK1ksb0JBQW9CLENBQ25DO1FBQ0M3OEIsT0FBTztRQUNQckMsT0FBTztNQUNSLEdBQ0E7UUFDQ3FDLE9BQU87UUFDUHJDLE9BQU87TUFDUixHQUNBO1FBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1FBQzlCaUYsT0FBTztNQUNSLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7UUFDOUJpRixPQUFPO01BQ1IsR0FDQTtRQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztRQUNoQ2lGLE9BQU87TUFDUixHQUNBO1FBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO1FBQ2hDaUYsT0FBTztNQUNSLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7UUFDaENpRixPQUFPO01BQ1IsR0FDQTtRQUNDcUMsT0FBTztRQUNQckMsT0FBTztNQUNSLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7UUFDaENpRixPQUFPO01BQ1IsR0FDQTtRQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsTUFBTTtRQUNuQ2lGLE9BQU87TUFDUixDQUFBO0FBRURoTSxjQUFRbXlCLFFBQVFzWSx1QkFBdUIsQ0FDdEM7UUFDQ3A4QixPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ2xDaUYsT0FBTztNQUNSLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7UUFDaENnSSxNQUFNLENBQ0w7VUFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUNwQ2lGLE9BQU87UUFDUixHQUNBO1VBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO1VBQzVDaUYsT0FBTztRQUNSLENBQUE7TUFFRixHQUNBO1FBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ2xDZ0ksTUFBTSxDQUNMO1VBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7VUFDNUNpRixPQUFPO1FBQ1IsQ0FBQTtNQUVGLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7UUFDaENnSSxNQUFNLENBQ0w7VUFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUNwQ2lGLE9BQU87UUFDUixHQUNBO1VBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO1VBQ3hDaUYsT0FBTztRQUNSLEdBQ0E7VUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7VUFDaERpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztVQUN4Q2lGLE9BQU87UUFDUixHQUNBO1VBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO1VBQzFDaUYsT0FBTztRQUNSLEdBQ0E7VUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxpQkFBaUIsZ0JBQWdCO1VBQ3JEaUYsT0FBTztRQUNSLENBQUE7TUFFRixHQUNBO1FBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ2xDZ0ksTUFBTSxDQUNMO1VBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDdENpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUM5Q2lGLE9BQU87UUFDUixHQUNBO1VBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO1VBQzFDaUYsT0FBTztRQUNSLEdBQ0E7VUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7VUFDNUNpRixPQUFPO1FBQ1IsQ0FBQTtNQUVGLENBQUEsRUFDQzRiLE9BQ0QsQ0FFQztRQUFDdlo7TUFBSyxNQUNGO0FBQ0osZUFBT3M2QixjQUFldDZCLFVBQVUsVUFBVUEsVUFBVTtNQUNyRCxDQUNEO0FBQ0FyTyxjQUFRbXlCLFFBQVE4Wiw0QkFBNEIsQ0FDM0M7UUFDQzU5QixPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ2xDZ0ksTUFBTSxDQUNMO1VBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDdENpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUM5Q2lGLE9BQU87UUFDUixHQUNBO1VBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO1VBQzFDaUYsT0FBTztRQUNSLEdBQ0E7VUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxpQkFBaUIsaUJBQWlCO1VBQ3REaUYsT0FBTztRQUNSLENBQUE7TUFFRixDQUFBO0FBRURoTSxjQUFRbXlCLFFBQVFxWixrQkFBa0IsQ0FDakMsR0FBR3hyQyxRQUFRbXlCLFFBQVFzWSxzQkFDbkIsR0FBR3pxQyxRQUFRbXlCLFFBQVE4Wix5QkFBQTtBQUVwQmpzQyxjQUFRbXlCLFFBQVF1WSx3QkFBd0IsQ0FDdkM7UUFDQ3I4QixPQUFPO1FBQ1ByQyxPQUFPO01BQ1IsR0FDQSxHQUFHaE0sUUFBUW15QixRQUFROFoseUJBQUE7QUFJcEJqc0MsY0FBUW15QixRQUFRK1osd0JBQXdCO1FBQ3ZDLGdCQUFnQjtVQUNmQyxNQUFNO1VBQ05DLE1BQU07VUFDTnY2QixRQUFRO1FBQ1Q7UUFDQSxjQUFjO1VBQ2JzNkIsTUFBTTtVQUNOQyxNQUFNO1VBQ052NkIsUUFBUTlSLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztRQUNsQztRQUNBLGVBQWU7VUFDZG9sQyxNQUFNO1VBQ05DLE1BQU07VUFDTnprQixRQUFRO1VBQ1I5VixRQUFROVIsT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQjtVQUMzRGdVLFVBQVU7UUFDWDtRQUNBLGdCQUFnQjtVQUNmb3hCLE1BQU07VUFDTkMsTUFBTTtVQUNOdjZCLFFBQVE5UixPQUFPZ0gsTUFBTSxhQUFhLFlBQVk7UUFDL0M7UUFDQSxXQUFXO1VBQ1ZvbEMsTUFBTTtVQUNOQyxNQUFNO1VBQ052NkIsUUFBUTlSLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztRQUMxQztRQUNBLHFCQUFxQjtVQUNwQm9sQyxNQUFNO1VBQ050NkIsUUFBUTlSLE9BQU9nSCxNQUFNLFVBQVUsU0FBUztVQUN4Q2dVLFVBQVU7UUFDWDtRQUNBLGVBQWU7VUFDZG94QixNQUFNO1VBQ050NkIsUUFBUTlSLE9BQU9nSCxNQUFNLGVBQWUsY0FBYztRQUNuRDtRQUNBLG9CQUFvQjtVQUNuQm9sQyxNQUFNO1VBQ050NkIsUUFBUTlSLE9BQU9nSCxNQUFNLGVBQWUsY0FBYztRQUNuRDtRQUNBLG9CQUFvQjs7VUFFbkJvbEMsTUFBTTtVQUNOeGtCLFFBQVE7VUFDUjlWLFFBQVE5UixPQUFPZ0gsTUFBTSxvQkFBb0Isa0JBQWtCO1VBQzNEZ1UsVUFBVTtRQUNYO1FBQ0EsZ0JBQWdCO1VBQ2ZveEIsTUFBTTtVQUNOdDZCLFFBQVE5UixPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7VUFDekNnVSxVQUFVO1FBQ1g7UUFDQSxxQkFBcUI7VUFDcEJveEIsTUFBTTtVQUNOdDZCLFFBQVE7VUFDUmtKLFVBQVU7UUFDWDtRQUNBLFdBQVc7VUFDVnF4QixNQUFNO1VBQ052NkIsUUFBUTtRQUNUO1FBQ0EsbUJBQW1CO1VBQ2xCdTZCLE1BQU07VUFDTnY2QixRQUFROVIsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1FBQ3RDO1FBQ0EscUJBQXFCO1VBQ3BCcWxDLE1BQU07VUFDTnY2QixRQUFROVIsT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ3BDO1FBQ0EsaUJBQWlCO1VBQ2hCcWxDLE1BQU07VUFDTnprQixRQUFRO1VBQ1I5VixRQUFROVIsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1FBQ3RDO1FBQ0FzbEMsV0FBVztVQUNWRixNQUFNO1VBQ05DLE1BQU07VUFDTkUsUUFBUTtVQUNSejZCLFFBQVE7VUFDUmtKLFVBQVU7UUFDWDtRQUNBLGFBQWE7VUFDWnV4QixRQUFRO1VBQ1J6NkIsUUFBUTtRQUNUO1FBQ0Esb0JBQW9CO1VBQ25CeTZCLFFBQVE7VUFDUno2QixRQUFROVIsT0FBT2dILE1BQU0sVUFBVSxRQUFRO1FBQ3hDO1FBQ0EsdUJBQXVCO1VBQ3RCdWxDLFFBQVE7VUFDUno2QixRQUFROVIsT0FBT2dILE1BQU0sVUFBVSxTQUFTO1FBQ3pDO1FBQ0Esc0JBQXNCO1VBQ3JCdWxDLFFBQVE7VUFDUjNrQixRQUFRO1VBQ1I5VixRQUFROVIsT0FBT2dILE1BQU0sYUFBYSxhQUFhO1FBQ2hEO01BQ0Q7QUFDQS9HLGNBQVFteUIsUUFBUW1aLGlCQUFpQixDQUNoQztRQUNDajlCLE9BQU90TyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7UUFDNUNpRixPQUFPO01BQ1IsR0FDQTtRQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtRQUM5Q2lGLE9BQU87TUFDUixHQUNBO1FBQ0NxQyxPQUFPO1FBQ1BVLE1BQU0sQ0FDTDtVQUNDVixPQUFBLG1CQUFBakcsT0FBMEJySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztVQUNsRGlGLE9BQU87UUFDUixHQUNBO1VBQ0NxQyxPQUFBLHFCQUFBakcsT0FBNEJySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztVQUNwRGlGLE9BQU87VUFDUHNMLFVBQVU7UUFDWCxHQUNBO1VBQ0NqSixPQUFPO1VBQ1ByQyxPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBQSxvQkFBQWpHLE9BQTJCckksT0FBT2dILE1BQU0sU0FBUyxPQUFPLENBQUM7VUFDekRpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBQSxxQkFBQWpHLE9BQTRCckksT0FBT2dILE1BQU0sTUFBTSxJQUFJLENBQUM7VUFDcERpRixPQUFPO1FBQ1IsQ0FBQTtNQUVGLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87UUFDcENnSSxNQUFNLENBQ0w7VUFDQ1YsT0FBQSx5QkFBQWpHLE9BQWdDckksT0FBT2dILE1BQU0sU0FBUyxRQUFRLENBQUM7VUFDL0RpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBQSxvQkFBQWpHLE9BQTJCckksT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQUM7VUFDdkRpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBQSxzQkFBQWpHLE9BQTZCckksT0FBT2dILE1BQU0sTUFBTSxJQUFJLENBQUM7VUFDckRpRixPQUFPO1FBQ1IsQ0FBQTtNQUVGLEdBQ0E7UUFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7UUFDdENnSSxNQUFNLENBQ0w7VUFDQ1YsT0FBQSx3QkFBQWpHLE9BQStCckksT0FBT2dILE1BQU0sTUFBTSxJQUFJLENBQUM7VUFDdkRpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBQSwwQkFBQWpHLE9BQWlDckksT0FBT2dILE1BQU0sTUFBTSxJQUFJLENBQUM7VUFDekRpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBQSxzQkFBQWpHLE9BQTZCckksT0FBT2dILE1BQU0sTUFBTSxJQUFJLENBQUM7VUFDckRpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBQSxnQkFBQWpHLE9BQXVCckksT0FBT2dILE1BQU0sTUFBTSxJQUFJLENBQUM7VUFDL0NpRixPQUFPO1FBQ1IsQ0FBQTtNQUVGLENBQUE7QUFFRGhNLGNBQVFteUIsUUFBUTFrQixTQUFTKzhCLGVBQWdCOWdDLE9BQU07QUFDOUMsY0FBTTtVQUFDc0U7UUFBSSxJQUFJdEUsRUFBRTRHO0FBQ2pCLGNBQU1pOEIsY0FBY3YrQixLQUFLNlY7QUFDekIsWUFBSUE7QUFBQSxZQUFBMm9CLGNBQUE5Z0MsMkJBQzRCNmdDLFdBQUEsR0FBQUU7QUFBQSxZQUFBO0FBQWhDLGVBQUFELFlBQUE1Z0MsRUFBQSxHQUFBLEVBQUE2Z0MsVUFBQUQsWUFBQTNnQyxFQUFBLEdBQUFDLFFBQTZDO0FBQUEsa0JBQWxDNGdDLG9CQUFBRCxRQUFBemdDO0FBQ1YsZ0JBQUksQ0FBQzBnQyxrQkFBa0J6cEIsU0FBUztBQUMvQjtZQUNEO0FBQ0FZLHlCQUFhNm9CLGtCQUFrQmpZO0FBQy9CO1VBQ0Q7UUFBQSxTQUFBeG9CLEtBQUE7QUFBQXVnQyxzQkFBQTlpQyxFQUFBdUMsR0FBQTtRQUFBLFVBQUE7QUFBQXVnQyxzQkFBQXRnQyxFQUFBO1FBQUE7QUFDQSxZQUFJMlgsZUFBZSxXQUFXO0FBRTdCLGdCQUFNeGIsT0FBT3JJLFFBQVFteUIsUUFBUStaLHNCQUFzQmwrQixLQUFLaUMsU0FBU2pFLEtBQUs7QUFDdEUsY0FBSXpHLEdBQUdDLE9BQU9DLElBQUksYUFBYSxHQUFHO0FBQ2pDLGdCQUFJNEMsS0FBSzhqQyxNQUFNO0FBQ2RuK0IsbUJBQUs0OEIsV0FBVzNuQixVQUFVO0FBQzFCampCLHNCQUFRbXlCLFFBQVF3WSxXQUFXQyxXQUFXO2dCQUNyQ3Q2QixRQUFRdEMsS0FBSzQ4QjtjQUNkLENBQUM7QUFDRDU4QixtQkFBSzY4QixVQUFVNytCLFFBQVEzRCxLQUFLOGpDO0FBQzVCbnNDLHNCQUFRbXlCLFFBQVF3WSxXQUFXRSxVQUFVO2dCQUNwQ3Y2QixRQUFRdEMsS0FBSzY4QjtjQUNkLENBQUM7WUFDRixPQUFPO0FBQ043OEIsbUJBQUs0OEIsV0FBVzNuQixVQUFVO0FBQzFCampCLHNCQUFRbXlCLFFBQVF3WSxXQUFXQyxXQUFXO2dCQUNyQ3Q2QixRQUFRdEMsS0FBSzQ4QjtjQUNkLENBQUM7WUFDRjtBQUNBLGdCQUFJdmlDLEtBQUsrakMsTUFBTTtBQUNkcCtCLG1CQUFLbTlCLFdBQVdsb0IsVUFBVTtBQUMxQmpqQixzQkFBUW15QixRQUFRd1ksV0FBV1EsV0FBVztnQkFDckM3NkIsUUFBUXRDLEtBQUttOUI7Y0FDZCxDQUFDO0FBQ0RuOUIsbUJBQUtvOUIsVUFBVXAvQixRQUFRM0QsS0FBSytqQztBQUM1QnBzQyxzQkFBUW15QixRQUFRd1ksV0FBV1MsVUFBVTtnQkFDcEM5NkIsUUFBUXRDLEtBQUtvOUI7Y0FDZCxDQUFDO1lBQ0YsT0FBTztBQUNOcDlCLG1CQUFLbTlCLFdBQVdsb0IsVUFBVTtBQUMxQmpqQixzQkFBUW15QixRQUFRd1ksV0FBV1EsV0FBVztnQkFDckM3NkIsUUFBUXRDLEtBQUttOUI7Y0FDZCxDQUFDO1lBQ0Y7QUFDQW45QixpQkFBSzA5QixXQUFXMS9CLFFBQVEzRCxLQUFLc2YsVUFBVTtBQUN2QzNaLGlCQUFLNDlCLFdBQVc1L0IsUUFBUTNELEtBQUtzZixVQUFVO1VBQ3hDLE9BQU87QUFDTixnQkFBSXRmLEtBQUtpa0MsUUFBUTtBQUNoQnQrQixtQkFBS3E5QixZQUFZci9CLFFBQVEzRCxLQUFLaWtDO0FBQzlCdHNDLHNCQUFRbXlCLFFBQVF3WSxXQUFXVSxZQUFZO2dCQUN0Qy82QixRQUFRdEMsS0FBS3E5QjtjQUNkLENBQUM7QUFDRHI5QixtQkFBSzY5QixhQUFhNy9CLFFBQVEzRCxLQUFLd2pDLGdCQUFnQjtZQUNoRDtBQUNBNzlCLGlCQUFLNjlCLGFBQWE3L0IsUUFBUTNELEtBQUtzZixVQUFVO1VBQzFDO0FBQ0EsZ0JBQU1nbEIsY0FBYzlvQixlQUFlLFlBQVk3VixLQUFLNCtCLGdCQUFnQjUrQixLQUFLNkQ7QUFDekUsY0FBSXhKLEtBQUt3SixRQUFRO0FBQ2hCODZCLHdCQUFZM2dDLFFBQVEzRCxLQUFLd0o7VUFDMUIsT0FBTztBQUNOODZCLHdCQUFZM2dDLFFBQVE7VUFDckI7QUFFQSxjQUFJekcsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEtBQUtGLEdBQUdDLE9BQU9DLElBQUksb0JBQW9CLE1BQU0sYUFBYTtBQUN4RixnQkFBSXVJLEtBQUtpQyxTQUFTakUsVUFBVSxhQUFhO0FBQ3hDZ0MsbUJBQUt1OUIsUUFBUXYvQixRQUFRO1lBQ3RCLE9BQU87QUFBQSxrQkFBQTZnQztBQUNONytCLG1CQUFLdTlCLFFBQVF2L0IsU0FBQTZnQyxpQkFBUXhrQyxLQUFLMFMsY0FBQSxRQUFBOHhCLG1CQUFBLFNBQUFBLGlCQUFZNytCLEtBQUtpQyxTQUFTakU7WUFDckQ7QUFDQWhNLG9CQUFRbXlCLFFBQVF3WSxXQUFXWSxRQUFRO2NBQ2xDajdCLFFBQVF0QyxLQUFLdTlCO1lBQ2QsQ0FBQztBQUNELGdCQUFJLFdBQVdwakMsS0FBSzZGLEtBQUtpQyxTQUFTakUsS0FBSyxHQUFHO0FBQ3pDZ0MsbUJBQUtxNEIsVUFBVXBqQixVQUFVO1lBQzFCLFdBQVcxZCxHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLElBQUk7QUFDckR1SSxtQkFBS3E0QixVQUFVcGpCLFVBQVU7WUFDMUI7VUFDRDtRQUNELFdBQVdqVixLQUFLaUMsU0FBU2pFLFVBQVUsYUFBYTtBQUUvQ2dDLGVBQUsyWixPQUFPM2IsUUFBUTtBQUNwQmdDLGVBQUsyWixPQUFPblosV0FBVztRQUN4QixPQUFPO0FBQ05SLGVBQUsyWixPQUFPM2IsUUFBUTtBQUNwQmdDLGVBQUsyWixPQUFPblosV0FBVztRQUN4QjtNQUNEO0FBQ0F4TyxjQUFRbXlCLFFBQVExa0IsU0FBU1MsV0FBWXhFLE9BQU07QUFDMUMsY0FBTXNFLE9BQU90RSxFQUFFNEc7QUFDZixjQUFNeUIsUUFBUTlSLFNBQVNnTyxVQUFVK0QsYUFBYWhFLElBQUk7QUFDbEQsWUFBSTgrQjtBQUNKLFlBQ0MvNkIsTUFBTThSLGVBQWUsU0FDcEI5UixNQUFNOFIsZUFBZSxhQUNyQnRlLEdBQUdDLE9BQU9DLElBQUksYUFBYSxLQUMzQkYsR0FBR0MsT0FBT0MsSUFBSSxvQkFBb0IsTUFBTSxhQUN4QztBQUNEcW5DLHNCQUFZO1lBQ1gvaEMsS0FBS2dILE1BQU13NUI7WUFDWDE1QixTQUNFRSxNQUFNdzVCLFlBQVksa0JBQ2xCeDVCLE1BQU13NUIsWUFBWSx1QkFDbEJ4NUIsTUFBTXc1QixZQUFZLGNBQ25CeDVCLE1BQU02NkIsZ0JBQ0g3NkIsTUFBTTY2QixnQkFDTjtZQUNKYixZQUFZaDZCLE1BQU04UixlQUFlLFlBQVk5UixNQUFNZzZCLGFBQWE7WUFDaEVELE9BQU8vNUIsTUFBTSs1QjtZQUNiekYsV0FBV3QwQixNQUFNczBCO1VBQ2xCO0FBQ0EsY0FBSXQwQixNQUFNOFIsZUFBZSxXQUFXO0FBQ25DLGdCQUFJOVIsTUFBTTY0QixZQUFZO0FBQ3JCa0Msd0JBQVVubEIsU0FBUzVWLE1BQU0yNUI7WUFDMUIsV0FBVzM1QixNQUFNbzVCLFlBQVk7QUFDNUIyQix3QkFBVW5sQixTQUFTNVYsTUFBTTY1QjtZQUMxQjtVQUNEO1FBQ0Q7QUFDQSxjQUFNbUIsY0FBYyxDQUFDO0FBQ3JCLFlBQUloN0IsTUFBTXlOLE9BQU87QUFDaEIsY0FBSXpOLE1BQU05QixhQUFhLGFBQWE7QUFDbkM4OEIsd0JBQVlqbEMsT0FBTztVQUNwQixXQUFXdkMsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEdBQUc7QUFDeEMsZ0JBQUlzTSxNQUFNNjRCLFlBQVk7QUFDckIsc0JBQVE3NEIsTUFBTTg0QixXQUFBO2dCQUNiLEtBQUs7QUFDSmtDLDhCQUFZamxDLE9BQU87QUFDbkJpbEMsOEJBQVlwbEIsU0FBUzVWLE1BQU0yNUI7QUFDM0I7Z0JBQ0QsS0FBSztBQUNKcUIsOEJBQVlqbEMsT0FBTztBQUNuQmlsQyw4QkFBWXBsQixTQUFTNVYsTUFBTTI1QjtBQUMzQjtnQkFDRCxLQUFLO0FBQ0pxQiw4QkFBWWpsQyxPQUFPO0FBQ25CaWxDLDhCQUFZcGxCLFNBQVM1VixNQUFNMjVCO0FBQzNCO2dCQUNELEtBQUs7QUFDSnFCLDhCQUFZamxDLE9BQU87QUFDbkJpbEMsOEJBQVlwbEIsU0FBUzVWLE1BQU0yNUI7QUFDM0I7Z0JBQ0QsS0FBSztBQUNKcUIsOEJBQVlqbEMsT0FBTztBQUNuQmlsQyw4QkFBWXBsQixTQUFTNVYsTUFBTTI1QjtBQUMzQjtjQUVGO1lBQ0QsV0FDQzM1QixNQUFNbzVCLGNBQ04sQ0FBQyxxQkFBcUIscUJBQXFCLFNBQVMsZ0JBQWdCLEVBQUVoaUMsU0FBUzRJLE1BQU1xNUIsU0FBUyxHQUM3RjtBQUNEMkIsMEJBQVlqbEMsT0FBTztBQUNuQmlsQywwQkFBWXBsQixTQUFTNVYsTUFBTTY1QjtZQUM1QjtVQUNELFdBQVc3NUIsTUFBTXM1QixnQkFBZ0IsT0FBTztBQUN2QzBCLHdCQUFZamxDLE9BQU87QUFDbkJpbEMsd0JBQVlwbEIsU0FBUzVWLE1BQU04NUI7VUFDNUI7UUFDRDtBQUNBLGdCQUFROTVCLE1BQU04UixZQUFBO1VBQ2IsS0FBSyxXQUFXO0FBRWY1akIscUJBQVNxTCxLQUFLb0osZ0JBQWdCQyxXQUFXcFAsR0FBR0MsT0FBT0MsSUFBSSxZQUFZO0FBQ25FeEYscUJBQVNxTCxLQUFLb0osZ0JBQWdCRSxTQUFTN1UsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ2xFLGdCQUFJaW1DLGVBQWU7QUFDbkIsZ0JBQUk3TztBQUNKLGtCQUFNOE8sVUFBVUEsTUFBTTtBQUNyQixrQkFBSTlPLFVBQVU7QUFDYkEseUJBQVNocEIsaUJBQWlCLEVBQUU4TCxLQUFLLElBQUk7Y0FDdEM7QUFDQSxrQkFBSTZyQixXQUFXO0FBQ2Q5c0Msd0JBQVFteUIsUUFBUXhhLFVBQVV1MUIsbUJBQW1CSixTQUFTO2NBQ3ZEO0FBQ0Esa0JBQUlDLGVBQWVBLFlBQVlqbEMsTUFBTTtBQUNwQyxzQkFBTXFsQyxVQUFVLElBQUlsdEMsU0FBU3FMLEtBQUtrSCxLQUNqQyxzQkFDQXpTLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxDQUM1QjtBQUNBb21DLHdCQUFRcjRCLGtCQUFrQixJQUFJO0FBQzlCcTRCLHdCQUFRenJCLHNCQUFzQnFyQixXQUFXO0FBQ3pDSSx3QkFBUWxpQyxLQUFLakwsUUFBUW15QixRQUFReGEsVUFBVWlaLFlBQVk7Y0FDcEQ7WUFDRDtBQUNBLGtCQUFNd2MsWUFBYXJnQyxVQUFTO0FBQzNCb3hCLHlCQUFXLElBQUlsK0IsU0FBU3FMLEtBQUtrSCxLQUM1QmpOLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUMxQjFGLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxDQUM1QjtBQUNBLGtCQUFJeEIsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEdBQUc7QUFDakMsb0JBQUlzTSxNQUFNNjRCLFlBQVk7QUFDckJ6TSwyQkFBU25NLGtCQUFrQmpnQixNQUFNODRCLFdBQVc5NEIsTUFBTTI1QixVQUFVO2dCQUM3RDtBQUNBLG9CQUFJMzVCLE1BQU1vNUIsWUFBWTtBQUVyQixzQkFBSXA1QixNQUFNcTVCLFdBQVc7QUFDcEJqTiw2QkFBU2xNLGtCQUFrQmxnQixNQUFNcTVCLFdBQVdyNUIsTUFBTTY1QixVQUFVO2tCQUM3RCxPQUFPO0FBQ04seUJBQUtybUMsR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVksR0FBRztzQkFDeERlLE1BQU07c0JBQ05pRCxLQUFLO29CQUNOLENBQUM7QUFDRDtrQkFDRDtnQkFDRDtBQUNBb3pCLHlCQUFTcm9CLGFBQWE5VixRQUFRdUgsUUFBUSxxQkFBcUIsQ0FBQztjQUM3RCxPQUFPO0FBQ040MkIseUJBQVNqTSxvQkFBb0JuZ0IsTUFBTXM1QixhQUFhdDVCLE1BQU04NUIsWUFBWTtBQUNsRTFOLHlCQUFTcm9CLGFBQWEsS0FBSztjQUM1QjtBQUNBLGtCQUFJL0QsTUFBTTY2QixlQUFlO0FBQ3hCek8seUJBQVM1b0IsZUFBZXhELE1BQU02NkIsYUFBYTtBQUMzQ3pPLHlCQUFTM29CLGNBQWN4VixRQUFRSyxVQUFVO2NBQzFDLE9BQU87QUFDTixxQkFBS2tGLEdBQUd1RixPQUNQL0ssT0FBT2dILE1BQ04sMEJBQ0Esd0JBQ0QsR0FDQTtrQkFDQ2UsTUFBTTtrQkFDTmlELEtBQUs7Z0JBQ04sQ0FDRDtBQUNBO2NBQ0Q7QUFDQSxrQkFBSSxDQUFDaWlDLGNBQWM7QUFDbEIvc0MseUJBQVMyTixhQUFhMkcsa0JBQWtCLEtBQUs7QUFDN0N0VSx5QkFBU3VVLE9BQU9DLEtBQUt6RyxJQUFJO0FBQ3pCZy9CLCtCQUFlO2NBQ2hCO0FBQ0E3Tyx1QkFBUzNvQixjQUFjeFYsUUFBUUssVUFBVTtBQUN6Qzg5Qix1QkFBU2hNLFFBQVFwbEIsSUFBSTtZQUN0QjtBQUNBLGdCQUFJZ0YsTUFBTTY0QixjQUFjNzRCLE1BQU1vNUIsY0FBYyxDQUFDNWxDLEdBQUdDLE9BQU9DLElBQUksYUFBYSxHQUFHO0FBQzFFMm5DLHdCQUFVSCxPQUFPO1lBQ2xCLE9BQU87QUFDTixtQkFBSzFuQyxHQUFHdUYsT0FDUC9LLE9BQU9nSCxNQUNOLG1EQUNBLGlEQUNELEdBQ0E7Z0JBQ0NlLE1BQU07Z0JBQ05pRCxLQUFLO2NBQ04sQ0FDRDtZQUNEO0FBQ0E7VUFDRDtVQUNBLEtBQUs7QUFFSjlLLHFCQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUscUJBQVN1VSxPQUFPQyxLQUFLekcsSUFBSTtBQUN6Qi9OLHFCQUFTcUwsS0FBS29KLGdCQUFnQkMsV0FBV3BQLEdBQUdDLE9BQU9DLElBQUksWUFBWTtBQUNuRXhGLHFCQUFTcUwsS0FBS29KLGdCQUFnQjI0QixpQkFBaUI7QUFDL0NwdEMscUJBQVNxTCxLQUFLb0osZ0JBQWdCRSxTQUFTN1UsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ2xFL0csb0JBQVFteUIsUUFBUXhhLFVBQVV1MUIsbUJBQW1CSixTQUFTO0FBQ3REO1VBQ0QsS0FBSyxXQUFXO0FBRWYsZ0JBQUlRO0FBQ0osZ0JBQUlDO0FBQ0osb0JBQVF4N0IsTUFBTTlCLFVBQUE7Y0FDYixLQUFLO2NBQ0wsS0FBSztBQUNKcTlCLDJCQUFXdnRDLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztBQUNwQztjQUNELEtBQUs7QUFDSnVtQywyQkFBV3Z0QyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07QUFDdEM7Y0FDRCxLQUFLO2NBQ0wsS0FBSztjQUNMLEtBQUs7Y0FDTCxLQUFLO2NBQ0wsS0FBSztjQUNMLEtBQUs7Y0FDTCxLQUFLO2NBQ0wsS0FBSztjQUNMLEtBQUs7QUFDSnVtQywyQkFBV3Z0QyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7QUFDcEM7Y0FDRCxLQUFLO2NBQ0wsS0FBSztjQUNMLEtBQUs7Y0FDTCxLQUFLO0FBQ0p1bUMsMkJBQVd2dEMsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3RDO2NBQ0QsS0FBSztjQUNMLEtBQUs7Y0FDTCxLQUFLO2NBQ0wsS0FBSztjQUNMLEtBQUs7Y0FDTCxLQUFLO2NBQ0wsS0FBSztBQUNKdW1DLDJCQUFXdnRDLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtBQUN0QztjQUdEO0FBQ0N1bUMsMkJBQVd2dEMsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3RDO1lBQ0Y7QUFDQSxvQkFBUWdMLE1BQU05QixVQUFBO2NBQ2IsS0FBSztBQUNKczlCLDZCQUFheHRDLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtBQUM1QztjQUNELEtBQUs7Y0FDTCxLQUFLO2NBQ0wsS0FBSztBQUNKd21DLDZCQUFheHRDLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtBQUN4QztjQUNELEtBQUs7Y0FDTCxLQUFLO0FBRUp3bUMsNkJBQWF4dEMsT0FBT2dILE1BQU0sU0FBUyxPQUFPO0FBQzFDO2NBQ0QsS0FBSztBQUNKd21DLDZCQUFheHRDLE9BQU9nSCxNQUFNLGFBQWEsYUFBYTtBQUNwRDtjQUNELEtBQUs7QUFDSndtQyw2QkFBYXh0QyxPQUFPZ0gsTUFBTSxhQUFhLFlBQVk7QUFDbkQ7Y0FDRCxLQUFLO0FBQ0p3bUMsNkJBQWF4dEMsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3hDO2NBQ0QsS0FBSztBQUNKd21DLDZCQUFheHRDLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtBQUNoRDtjQUNELEtBQUs7QUFDSndtQyw2QkFBYXh0QyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7QUFDNUM7Y0FDRCxLQUFLO0FBQ0p3bUMsNkJBQWF4dEMsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3hDO2NBQ0QsS0FBSztBQUNKd21DLDZCQUFheHRDLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztBQUMxQztjQUNELEtBQUs7QUFDSndtQyw2QkFBYXh0QyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7QUFDNUM7Y0FDRDtBQUNDd21DLDZCQUFhO0FBQ2I7WUFDRjtBQUNBLGdCQUFJMTdCLFNBQVMwN0I7QUFDYixnQkFBSXg3QixNQUFNRixXQUFXLElBQUk7QUFDeEIsa0JBQUkwN0IsZUFBZSxJQUFJO0FBQ3RCMTdCLDBCQUFVO2NBQ1g7QUFDQUEsd0JBQVVFLE1BQU1GO1lBQ2pCO0FBQ0EsZ0JBQUlBLFdBQVcsSUFBSTtBQUNsQkEsdUJBQVM1UixTQUFTZ1QsT0FBT0Msa0JBQWtCckIsTUFBTTtZQUNsRDtBQUNBLGtCQUFNMjdCLFlBQVk7Y0FDakIzN0I7Y0FDQXk3QjtjQUNBcjlCLFVBQVU4QixNQUFNOUI7Y0FDaEIwWCxRQUFRNVYsTUFBTTRWO1lBQ2Y7QUFDQTFuQixxQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztBQUM3Q3RVLHFCQUFTdVUsT0FBT0MsS0FBS3pHLElBQUk7QUFDekIsa0JBQU15L0IsVUFBVTtBQUVoQnh0QyxxQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVc4NEI7QUFDekN4dEMscUJBQVNxTCxLQUFLb0osZ0JBQWdCRSxTQUFTN1UsT0FBT2dILE1BQzdDLGdCQUNBLGVBQ0Q7QUFDQSxrQkFBTW9tQyxVQUFVLElBQUlsdEMsU0FBU3FMLEtBQUtrSCxLQUFLaTdCLFNBQVMxdEMsT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQUM7QUFDaEZvbUMsb0JBQVFyNEIsa0JBQWtCLElBQUk7QUFDOUJxNEIsb0JBQVF6ckIsc0JBQXNCOHJCLFNBQVM7QUFDdkNMLG9CQUFRbGlDLEtBQUtqTCxRQUFRbXlCLFFBQVF4YSxVQUFVKzFCLFdBQVc7QUFDbEQ7VUFDRDtVQUNBO0FBQ0MsaUJBQUtub0MsR0FBR3VGLE9BQU8sMEJBQTBCO2NBQ3hDaEQsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRDtRQUNGO01BQ0Q7QUFDQS9LLGNBQVFteUIsUUFBUXhhLFlBQVk7UUFDM0J1MUIsb0JBQXFCSixlQUFjO0FBQ2xDLGNBQUlBLFVBQVUvaEMsUUFBUSxRQUFRO0FBQzdCOUsscUJBQVN1VSxPQUFPeU0sS0FDZmxoQixPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsR0FDL0JoSCxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FDaEM7QUFDQTtVQUNEO0FBQ0EsZ0JBQU00bUMsV0FBV3BvQyxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDM0MsZ0JBQU1tb0MsZ0JBQWdCLElBQUkzdEMsU0FBU3FMLEtBQUtrSCxLQUFLbTdCLFVBQVU1dEMsT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQUM7QUFDbkY2bUMsd0JBQWNsc0Isc0JBQXNCb3JCLFNBQVM7QUFDN0NjLHdCQUFjM2lDLEtBQUtqTCxRQUFRbXlCLFFBQVF4YSxVQUFVazJCLFdBQVc7UUFDekQ7UUFDQUMsZUFBZUEsQ0FBQ3h4QixRQUFRelUsU0FBUztBQUNoQyxjQUFJa0Q7QUFDSixjQUFJdUo7QUFDSixnQkFBTXk1QixZQUNMO0FBQ0QsZ0JBQU1DLFlBQVlELFVBQVVodkIsS0FBS2xYLElBQUk7QUFDckMsY0FDQ21tQyxjQUNDMXhCLE9BQU92UixRQUFRLFVBQ2YwSSxRQUNDMVQsT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQ2xDaW5DLFVBQVUsQ0FBQyxJQUNYanVDLE9BQU9nSCxNQUNOLDJCQUNBLHlCQUNELENBQ0YsSUFDQTtBQUNEYyxtQkFBT0EsS0FBS2tMLFFBQVFnN0IsV0FBVyxFQUFFO1VBQ2xDO0FBQ0EsY0FBSXp4QixPQUFPdlIsUUFBUSxRQUFRO0FBQzFCdUosc0JBQVV2VSxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDMUMsT0FBTztBQUNOLGFBQUM7Y0FBQ2dFO1lBQUcsSUFBSXVSO0FBQ1QsZ0JBQUlBLE9BQU96SyxRQUFRO0FBQ2xCOUcscUJBQUEsV0FBQTNDLE9BQWtCa1UsT0FBT3pLLE1BQU07WUFDaEM7QUFDQSxnQkFBSXlLLE9BQU95dkIsY0FBY3p2QixPQUFPcUwsVUFBVSxDQUFDMW5CLFNBQVNnVCxPQUFPeVUsV0FBV3BMLE9BQU9xTCxNQUFNLEdBQUc7QUFDckY1YyxxQkFBTyxhQUFhM0MsT0FBTyxVQUFBLFdBQUFBLE9BQXFCa1UsT0FBT3FMLFFBQU0sSUFBQSxDQUFJO1lBQ2xFO0FBQ0EsZ0JBQUlyTCxPQUFPd3ZCLE9BQU87QUFDakIvZ0MscUJBQU87WUFDUjtBQUNBLGdCQUFJLDhCQUE4QjVDLEtBQUtOLElBQUksR0FBRztBQUc3QyxrQkFDQ0EsS0FBSzRZLE1BQ0osd0lBQ0QsR0FDQztBQUNEeGdCLHlCQUFTdVUsT0FBT3lNLEtBQ2YsOEJBQ0FsaEIsT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQ2hDO0FBQ0E7Y0FDRDtBQUNBYyxxQkFBT0EsS0FBS2tMLFFBQ1gsOENBQUEsdUJBQUEzSyxPQUN1QjJDLEtBQUcsSUFBQSxDQUMzQjtZQUNELE9BQU87QUFDTixrQkFBSXVSLE9BQU8rcEIsV0FBVztBQUNyQnQ3QixzQkFBQSxnQkFBQTNDLE9BQXNCMkMsS0FBRyxnQkFBQTtBQUV6QixvQkFBSWxELEtBQUsyTCxRQUFRLElBQUksTUFBTSxHQUFHO0FBQzdCekkseUJBQU87Z0JBQ1I7Y0FDRCxPQUFPO0FBQ05BLHNCQUFBLEtBQUEzQyxPQUFXMkMsS0FBRyxNQUFBO2NBQ2Y7QUFFQSxvQkFBTTBXLGNBQWMsSUFBSXhoQixTQUFTa2MsU0FBUzNKLEtBQUszSyxJQUFJO0FBQ25EQSxxQkFBTzRaLFlBQVltZixxQkFBcUI3MUIsS0FBSy9LLFFBQVFPLFlBQVksRUFBRXNnQyxRQUFRO1lBQzVFO0FBQ0F2c0Isc0JBQUEsT0FBQWxNLE9BQWlCa1UsT0FBT3ZSLEtBQUcsSUFBQTtVQUM1QjtBQUNBLGlCQUFPO1lBQ05sRDtZQUNBeU07VUFDRDtRQUNEO1FBQ0F1NUIsYUFBY0QsbUJBQWtCO0FBQy9CLGdCQUFNdHhCLFNBQVNzeEIsY0FBY2h1QixzQkFBc0I7QUFDbkQsZ0JBQU0vWCxPQUFPK2xDLGNBQWM3NEIsWUFBWTtBQUN2QyxnQkFBTWs1QixhQUFhanVDLFFBQVFteUIsUUFBUXhhLFVBQVVtMkIsY0FBY3h4QixRQUFRelUsSUFBSTtBQUN2RSxjQUFJb21DLGVBQWUsUUFBVztBQUM3QkwsMEJBQWN6NEIsaUJBQWlCLEVBQUU4TCxLQUFLLElBQUk7QUFDMUM7VUFDRDtBQUNBMnNCLHdCQUFjcjRCLGVBQWUwNEIsV0FBVzM1QixPQUFPO0FBQy9DczVCLHdCQUFjcDRCLGNBQWN4VixRQUFRSyxVQUFVO0FBQzlDdXRDLHdCQUFjOTNCLGFBQWE5VixRQUFRdUgsUUFBUSxvQkFBb0IsQ0FBQztBQUNoRXFtQyx3QkFBY2hjLFlBQVlxYyxXQUFXcG1DLElBQUk7QUFDekMrbEMsd0JBQWMvWCxnQkFBZ0IsVUFBVTtBQUN4QytYLHdCQUFjTSx1QkFBdUI7QUFDckNOLHdCQUFjL2IsS0FBSztRQUNwQjtRQUNBNmIsYUFBY1AsYUFBWTtBQUN6QixnQkFBTTd3QixTQUFTNndCLFFBQVF2dEIsc0JBQXNCO0FBQzdDLGNBQUkvWCxPQUFPc2xDLFFBQVFwNEIsWUFBWTtBQUMvQixnQkFBTWliLGdCQUFnQm1kLFFBQVFoNEIsaUJBQWlCO0FBQy9DLGdCQUFNZzVCLFFBQVEsSUFBSWw1QixPQUFBLDZCQUFBN00sT0FDWW5JLFNBQVNnVCxPQUFPaUMsYUFBYWpWLFNBQVNzVyxZQUFZLEdBQUMsc0JBQUEsR0FDaEYsR0FDRDtBQUNBLGdCQUFNeEwsTUFBTW9qQyxNQUFNcHZCLEtBQUtsWCxJQUFJO0FBQzNCLGdCQUFNdW1DLFVBQVVubUMsU0FBU1ksY0FBYyxHQUFHO0FBQzFDdWxDLGtCQUFRdGxDLGFBQWEsUUFBUXZELEdBQUcwRSxLQUFLTSxPQUFPNGlDLFFBQVFrQixZQUFZLENBQUMsQ0FBQztBQUNsRUQsa0JBQVFubEMsWUFBWWhCLFNBQVNxQixlQUFlNmpDLFFBQVFrQixZQUFZLENBQUMsQ0FBQztBQUNsRSxjQUFJdGpDLEtBQUs7QUFDUmlsQiwwQkFBYzVhLE1BQU0sQ0FDbkJnNUIsU0FDQXJ1QyxPQUFPZ0gsTUFBTSxxQkFBcUIsbUJBQW1CLENBQUEsQ0FDckQ7QUFDRDtVQUNEO0FBQ0EsY0FBSXVuQyxTQUFBLFVBQUFsbUMsT0FBbUJuSSxTQUFTc1csY0FBWSxVQUFBO0FBQzVDLGNBQUksSUFBSXRCLE9BQUEsSUFBQTdNLE9BQVc3QyxHQUFHMEUsS0FBS2lMLGFBQWFvNUIsTUFBTSxFQUFFdjdCLFFBQVEsUUFBUXc3QixPQUFPQyxJQUFBQyxvQkFBQUEsa0JBQUFDLHVCQUFBLENBQUEsSUFBQSxHQUFBLENBQUEsTUFBQSxDQUFBLEVBQUEsQ0FBUSxDQUFDLEdBQUksR0FBRyxFQUFFdm1DLEtBQUtOLElBQUksR0FBRztBQUNwR21vQiwwQkFBYzVhLE1BQU0sQ0FDbkJnNUIsU0FDQXJ1QyxPQUFPZ0gsTUFBTSxxQkFBcUIsbUJBQW1CLENBQUEsQ0FDckQ7QUFDRDtVQUNEO0FBQ0EsY0FBSTRuQztBQUNKLGtCQUFRcnlCLE9BQU9xTCxRQUFBO1lBQ2QsS0FBSztBQUNKZ25CLHNCQUFRNXVDLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUMvQjtZQUNELEtBQUs7QUFDSjRuQyxzQkFBUTtBQUNSO1lBQ0Q7QUFDQ0Esc0JBQVE7QUFDUjtVQUNGO0FBQ0FBLG1CQUFTcnlCLE9BQU9neEI7QUFDaEJnQixvQkFBQSxrQ0FBQWxtQyxPQUE0Q3JJLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxHQUFDLHVCQUFBLEVBQUFxQixPQUMzRSxNQUFNRCxLQUFLbEksU0FBU3NXLFlBQVksSUFBSSxPQUFPLEVBQzVDLEVBQUFuTyxPQUFHbkksU0FBU3NXLGNBQVksYUFBQTtBQUN4QiszQixvQkFBVSxHQUFBbG1DLE9BQ1RySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksSUFDdkI5RyxTQUFTZ1QsT0FBT1kscUJBQXFCODZCLEtBQUssS0FDekNyeUIsT0FBT3pLLFdBQVcsS0FBSyxNQUFBLElBQUF6SixPQUFVbkksU0FBU2dULE9BQU9tekIsaUJBQWlCOXBCLE9BQU96SyxNQUFNLENBQUMsSUFDbEYsTUFBQSxFQUFPekosT0FBTyxJQUFJO0FBQ2xCLGNBQUl3bUM7QUFDSixjQUFJdHlCLE9BQU9yTSxhQUFhLGFBQWE7QUFDcEMyK0Isa0JBQU07VUFDUCxPQUFPO0FBQ05BLGtCQUFNO1VBQ1A7QUFDQSxnQkFBTUMscUJBQXFCaG5DLEtBQUtqSDtBQUNoQ2lILGlCQUFPQSxLQUFLa0wsUUFBUTY3QixLQUFBLE9BQUF4bUMsT0FBWWttQyxRQUFNLElBQUEsQ0FBSTtBQUMxQyxjQUFJem1DLEtBQUtqSCxXQUFXaXVDLG9CQUFvQjtBQUN2QyxrQkFBTUMsV0FBVzdtQyxTQUFTWSxjQUFjLEdBQUc7QUFDM0NpbUMscUJBQVNobUMsYUFBYSxRQUFRdkQsR0FBRzBFLEtBQUtNLE9BQU8scUJBQXFCLENBQUM7QUFDbkV1a0MscUJBQVM3bEMsWUFBWWhCLFNBQVNxQixlQUFldkosT0FBT2dILE1BQU0sWUFBWSxVQUFVLENBQUMsQ0FBQztBQUNsRmlwQiwwQkFBYzVhLE1BQU0sQ0FDbkJyVixPQUFPZ0gsTUFDTixtQ0FDQSxpQ0FDRCxHQUNBK25DLFVBQ0EsR0FBQSxDQUNBO0FBQ0Q7VUFDRDtBQUNBOWUsd0JBQWN4YixPQUFPLFFBQVE7QUFDN0IyNEIsa0JBQVE1M0IsZUFBQSxNQUFBbk4sT0FDRG5JLFNBQVNzVyxjQUFZLE1BQUEsRUFBQW5PLE9BQU9ySSxPQUFPZ0gsTUFBTSxPQUFPLEtBQUssR0FBQyxJQUFBLEVBQUFxQixPQUFLbkksU0FBU3NXLGNBQVksSUFBQSxFQUFBbk8sT0FDckZrVSxPQUFPZ3hCLFFBQ1IsQ0FDRDtBQUNBSCxrQkFBUTMzQixjQUFjeFYsUUFBUUssVUFBVTtBQUN4QzhzQyxrQkFBUXZiLFlBQVkvcEIsSUFBSTtBQUN4QnNsQyxrQkFBUXRYLGdCQUFnQixVQUFVO0FBQ2xDc1gsa0JBQVF0YixLQUFLLE1BQU07QUFFbEIsa0JBQU1rZCxZQUFZL3VDLFFBQVF1SCxRQUFRLHFCQUFxQjtBQUl2RCxrQkFBTTgyQixRQUNMMFEsY0FBYyxTQUNiQSxjQUFjLGFBQWEsQ0FBQyxDQUFDMzNCLE9BQU9DLFNBQVM5UixHQUFHNmUsS0FBSzRxQixRQUFRdnBDLElBQUksY0FBYyxHQUFHLEVBQUU7QUFDdEYsZ0JBQUk0NEIsT0FBTztBQUNWLG9CQUFNNFEsY0FBYztnQkFDbkJ6a0MsUUFBUTtnQkFDUnFOLFFBQVF0UyxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7Z0JBQ2xDOHFCLE9BQU9ockIsR0FBRzZlLEtBQUtvTSxPQUFPL3FCLElBQUksWUFBWTtjQUN2QztBQUVBLGtCQUFJekYsUUFBUW15QixRQUFRaVgsWUFBWSxRQUFRMkYsY0FBYyxhQUFhQSxjQUFjLE9BQU87QUFDdkZFLDRCQUFZdG5CLFNBQVNvbkI7Y0FDdEI7QUFDQSxrQkFBSTl1QyxTQUFTcUwsS0FBS0MsSUFDakJ4TCxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCLEdBQ2pEa29DLFdBQ0QsRUFBRXAvQixLQUFLO1lBQ1I7VUFDRCxDQUFDO1FBQ0Y7UUFDQStnQixjQUFldWMsYUFBWTtBQUMxQixnQkFBTTd3QixTQUFTNndCLFFBQVF2dEIsc0JBQXNCO0FBQzdDLGNBQUkvWCxPQUFPc2xDLFFBQVFwNEIsWUFBWTtBQUMvQixnQkFBTWliLGdCQUFnQm1kLFFBQVFoNEIsaUJBQWlCO0FBQy9DLGdCQUFNcUwsV0FBVzNZLEtBQUtxWSxNQUFNLHdCQUF3QjtBQUNwRCxjQUFJTSxTQUFTNWYsV0FBVyxHQUFHO0FBQzFCLGtCQUFNc3VDLFlBQVlqbkMsU0FBU1ksY0FBYyxHQUFHO0FBQzVDcW1DLHNCQUFVcG1DLGFBQWEsUUFBUXZELEdBQUcwRSxLQUFLTSxPQUFPLHFCQUFxQixDQUFDO0FBQ3BFMmtDLHNCQUFVam1DLFlBQVloQixTQUFTcUIsZUFBZSxVQUFVLENBQUM7QUFDekQwbUIsMEJBQWM1YSxNQUFNLENBQ25CclYsT0FBT2dILE1BQ04sbUNBQ0EsaUNBQ0QsR0FDQW1vQyxXQUNBLEdBQUEsQ0FDQTtBQUNEO1VBQ0Q7QUFDQSxjQUFJQztBQUNKLGNBQUk1YyxhQUFhO0FBQ2pCLGNBQUlqVyxPQUFPeFUsU0FBUyxhQUFhO0FBQ2hDLGFBQUEsRUFBR3FuQyxXQUFXLElBQUkzdUI7VUFDbkIsT0FBTztBQUNOLGFBQUMydUIsV0FBVyxJQUFJM3VCO0FBQ2hCK1IseUJBQWF0eUIsU0FBU2dULE9BQU91WSxXQUFXbFAsT0FBT3FMLE1BQU07VUFDdEQ7QUFDQSxnQkFBTTZLLGNBQWMyYyxZQUFZanZCLE1BQU0scUJBQXFCO0FBQzNELGNBQUl1UyxRQUFRO0FBQ1osZ0JBQU0wYixRQUFRLElBQUlsNUIsT0FBQSw2QkFBQTdNLE9BQ1luSSxTQUFTMHlCLGNBQWMxeUIsU0FBU3NXLFlBQVksR0FBQyxzQkFBQSxHQUMxRSxHQUNEO0FBQUEsY0FBQTY0QixjQUFBMWpDLDJCQUNvQjhtQixXQUFBLEdBQUE2YztBQUFBLGNBQUE7QUFBcEIsaUJBQUFELFlBQUF4akMsRUFBQSxHQUFBLEVBQUF5akMsVUFBQUQsWUFBQXZqQyxFQUFBLEdBQUFDLFFBQWlDO0FBQUEsa0JBQXhCZ25CLFVBQUF1YyxRQUFBcmpDO0FBQ1Isa0JBQUltaUMsTUFBTXB2QixLQUFLK1QsT0FBTyxHQUFHO0FBQ3hCQSwwQkFBVUEsUUFBUUMsUUFBUTtBQUMxQixvQkFBSXpXLE9BQU94VSxTQUFTLGFBQWE7QUFDaENnckIsNkJBQVcseUJBQXlCMXFCLE9BQU8sTUFBTTtnQkFDbEQsT0FBTztBQUNOMHFCLDZCQUFXLGNBQUExcUIsT0FBY2tVLE9BQU94VSxNQUFJLEdBQUEsRUFBQU0sT0FDbkNuSSxTQUFTZ1QsT0FBT3lVLFdBQVdwTCxPQUFPcUwsTUFBTSxJQUFJLGFBQWE0SyxZQUMxRCxTQUFBLEVBQVVucUIsT0FBTyxNQUFNO2dCQUN4QjtBQUNBcXFCLHdCQUFRO0FBQ1I7Y0FDRDtZQUNEO1VBQUEsU0FBQXhtQixLQUFBO0FBQUFtakMsd0JBQUExbEMsRUFBQXVDLEdBQUE7VUFBQSxVQUFBO0FBQUFtakMsd0JBQUFsakMsRUFBQTtVQUFBO0FBQ0EsY0FBSSxDQUFDdW1CLE9BQU87QUFDWHpDLDBCQUFjNXZCLEtBQUtMLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxDQUFDO0FBQ3pEO1VBQ0Q7QUFDQSxjQUFJdVYsT0FBT3hVLFNBQVMsYUFBYTtBQUNoQ0QsbUJBQU8yWSxTQUFTLENBQUMsSUFBSWdTLFlBQVk5ZSxLQUFLLEVBQUU7VUFDekMsT0FBTztBQUNON0wsbUJBQU8ycUIsWUFBWTllLEtBQUssRUFBRSxJQUFJOE0sU0FBUyxDQUFDO1VBQ3pDO0FBQ0EsY0FBSWxNLFVBQVU7QUFDZCxjQUFJZ0ksT0FBT3hVLFNBQVMsYUFBYTtBQUNoQyxhQUFBLEVBQUdxbkMsV0FBVyxJQUFJM3VCO1VBQ25CLE9BQU87QUFDTixhQUFDMnVCLFdBQVcsSUFBSTN1QjtVQUNqQjtBQUNBLGtCQUFRbEUsT0FBT3hVLE1BQUE7WUFDZCxLQUFLO0FBQ0p3TSx3QkFBVXZVLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztBQUNuQztZQUNELEtBQUs7QUFDSnVOLHdCQUFVdlUsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3JDO1lBQ0QsS0FBSztBQUNKdU4sd0JBQVV2VSxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7QUFDekM7WUFDRCxLQUFLO0FBQ0p1Tix3QkFBVXZVLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztBQUNuQztZQUNELEtBQUs7QUFDSnVOLHdCQUFVdlUsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3JDO1lBQ0QsS0FBSztBQUNKdU4sd0JBQVV2VSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87QUFDdkM7WUFDRCxLQUFLO0FBQ0p1Tix3QkFBVXZVLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtBQUNyQztZQUNELEtBQUs7QUFDSnVOLHdCQUFVdlUsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ3JDO1lBQ0QsS0FBSztBQUNKdU4sd0JBQVV2VSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07QUFDckM7WUFDRDtBQUNDaXBCLDRCQUFjNXZCLEtBQUtMLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQ25EO1VBQ0Y7QUFDQSxjQUFJOUcsU0FBU2dULE9BQU95VSxXQUFXcEwsT0FBT3FMLE1BQU0sR0FBRztBQUM5Q3JULHNCQUFVaWUsYUFBYWplO1VBQ3hCLE9BQU87QUFDTkEsdUJBQVdpZTtVQUNaO0FBQ0E0YSxrQkFBUTUzQixlQUFBLE1BQUFuTixPQUFxQm5JLFNBQVNzVyxjQUFZLE1BQUEsRUFBQW5PLE9BQU9rTSxPQUFPLENBQUU7QUFDbEU2NEIsa0JBQVEzM0IsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEM4c0Msa0JBQVF2YixZQUFZL3BCLElBQUk7QUFDeEJzbEMsa0JBQVF0YixLQUFLO1FBQ2Q7TUFDRDtBQUNBN3hCLGNBQVFteUIsUUFBUWdZLDhCQUErQlcsc0JBQXFCO0FBQ25FLGNBQU1WLGlCQUFpQixDQUFBO0FBQ3ZCLFlBQUkxdkIsT0FBT1ksS0FBS3d2QixnQkFBZ0IsRUFBRWxxQyxXQUFXLEdBQUc7QUFDL0MsV0FBQ3dwQyxlQUFlQSxlQUFleHBDLE1BQU0sQ0FBQyxJQUFJakIsRUFBRSxLQUFLLEVBQUVrSSxLQUFLOUgsT0FBT2dILE1BQU0sT0FBTyxLQUFLLENBQUM7UUFDbkYsT0FBTztBQUNOLG1CQUFBdW9DLE1BQUEsR0FBQUMsbUJBQStCNzBCLE9BQU9DLFFBQVFtd0IsZ0JBQWdCLEdBQUF3RSxNQUFBQyxpQkFBQTN1QyxRQUFBMHVDLE9BQUc7QUFBakUsa0JBQVcsQ0FBQ3huQyxNQUFNNmtCLFFBQVEsSUFBQTRpQixpQkFBQUQsR0FBQTtBQUN6QixnQkFBSWpoQztBQUNKLG9CQUFRdkcsTUFBQTtjQUNQLEtBQUs7QUFDSnVHLHdCQUFRdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO0FBQy9CO2NBQ0QsS0FBSztBQUNKc0gsd0JBQVF0TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7QUFDL0I7Y0FDRCxLQUFLO0FBQ0pzSCx3QkFBUXRPLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUMvQjtjQUNELEtBQUs7QUFDSnNILHdCQUFRdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO0FBQy9CO2NBQ0Q7QUFDQ3NILHdCQUFRdkc7QUFDUjtZQUNGO0FBQ0EsZ0JBQUlxUztBQUNKLG9CQUFRd1MsU0FBU3hTLE9BQUE7Y0FDaEIsS0FBSztBQUNKQSx3QkFBUXBhLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztBQUN6QztjQUNELEtBQUs7QUFDSm9ULHdCQUFRcGEsT0FBT2dILE1BQU0sV0FBVyxTQUFTO0FBQ3pDO2NBQ0QsS0FBSztBQUNKb1Qsd0JBQVFwYSxPQUFPZ0gsTUFBTSxhQUFhLFlBQVk7QUFDOUM7Y0FDRCxLQUFLO0FBQ0pvVCx3QkFBUXBhLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtBQUMvQztjQUNELEtBQUs7QUFDSm9ULHdCQUFRcGEsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ25DO2NBQ0Q7QUFDQyxpQkFBQztrQkFBQ29UO2dCQUFLLElBQUl3UztBQUNYO1lBQ0Y7QUFDQSxhQUFDeWQsZUFBZUEsZUFBZXhwQyxNQUFNLENBQUMsSUFBSWpCLEVBQUUsS0FBSyxFQUFFa0ksS0FBQSxHQUFBTyxPQUFRaUcsT0FBSyxHQUFBLEVBQUFqRyxPQUFJK1IsS0FBSyxDQUFFO0FBQzNFLGdCQUFJbGEsU0FBU2dULE9BQU95VSxXQUFXaUYsU0FBU2hGLE1BQU0sR0FBRztBQUNoRHlpQiw2QkFBZUEsZUFBZXhwQyxNQUFNLElBQUliLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztZQUN0RSxPQUFPO0FBQ05xakMsNkJBQWVBLGVBQWV4cEMsTUFBTSxJQUFBLEdBQUF3SCxPQUNoQ3JJLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxJQUFJLElBQUk5RyxTQUFTdVksS0FBS21VLFNBQVNoRixNQUFNLEVBQUVxRCxTQUFTLEtBQUssR0FBQyxHQUFBO1lBQ3RGO0FBQ0EsZ0JBQUkyQixTQUFTOGMsU0FBUztBQUNyQlcsNkJBQWVBLGVBQWV4cEMsTUFBTSxJQUFJYixPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDcEU7VUFDRDtRQUNEO0FBQ0EsZUFBT3FqQztNQUNSO0FBQ0FwcUMsY0FBUVMsZ0JBQWdCVCxRQUFRbXlCLFNBQVMsU0FBUztJQUNuRCxHQUFHbGxCLE1BQU07RUFBQTtBQUFBLENBQUE7O0FDcnFEVCxJQUFBdWlDLHNCQUFBLENBQUE7QUFBQSxJQUFBQyxtQkFBQWh3QyxNQUFBO0VBQUEsdUNBQUE7QUFBQTtJQUVBO0FBQ0EsS0FBQyxTQUFTaXdDLFlBQVkvdkMsR0FBRztBQUN4QixZQUFNRSxRQUFRRixFQUFFLE1BQU07QUFPdEJLLGNBQVErSyxNQUFNLE1BQU07QUFFbkIsWUFBSTlLLFNBQVMyakMsZUFBZSxHQUFHO0FBQzlCNWpDLGtCQUFRK0ssSUFBSTJyQixPQUFPMzJCLE9BQU9nSCxNQUFNLE9BQU8sTUFBTTtBQUM3Qy9HLGtCQUFRK0ssSUFBSTRrQyxTQUFTO0FBQ3JCM3ZDLGtCQUFRNkosZUFDUDdKLFFBQVErSyxJQUFJMEMsVUFDWjFOLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QixnQkFDQWhILE9BQU9nSCxNQUFNLFNBQVMsUUFBUSxDQUMvQjtRQUVELFdBQ0N4QixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLEtBQ3ZDLENBQUN3QyxTQUFTQyxjQUFjLGtCQUFrQixLQUMxQ0QsU0FBU0MsY0FBYyxtQ0FBbUMsR0FDekQ7QUFDRGxJLGtCQUFRK0ssSUFBSTJyQixPQUFPMzJCLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUMxQy9HLGtCQUFRK0ssSUFBSTRrQyxTQUFTO0FBQ3JCM3ZDLGtCQUFRNkosZUFDUDdKLFFBQVErSyxJQUFJMEMsVUFDWjFOLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QixnQkFDQWhILE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxDQUM1QjtRQUVELFdBQ0UsQ0FBQyxHQUFHLEdBQUcsRUFBRW9DLFNBQVM1RCxHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixDQUFDLEtBQUtGLEdBQUdDLE9BQU9DLElBQUksaUJBQWlCLEtBQ3pGeEYsU0FBU3NXLGlCQUFpQnZXLFFBQVF1SCxRQUFRLGFBQWEsR0FDdEQ7QUFDRHZILGtCQUFRK0ssSUFBSTJyQixPQUFPMzJCLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUMxQy9HLGtCQUFRK0ssSUFBSTRrQyxTQUFTO0FBRXJCM3ZDLGtCQUFRK0ssSUFBSTZrQyxZQUNYcnFDLEdBQUdDLE9BQU9DLElBQUksaUJBQWlCLE1BQU1GLEdBQUdDLE9BQU9DLElBQUksY0FBYzs7VUFHakUsQ0FBQ0YsR0FBR0MsT0FBT0MsSUFBSSxhQUFhO0FBQzdCekYsa0JBQVE2SixlQUNQN0osUUFBUStLLElBQUkwQyxVQUNaMU4sT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCLGdCQUNBaEgsT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQzVCO1FBQ0Q7TUFDRDtBQUNBL0csY0FBUStLLElBQUk4a0MsY0FBYyxDQUFBO0FBQzFCN3ZDLGNBQVErSyxJQUFJMEMsV0FBVyxNQUFNO0FBQzVCLGNBQU1FLFNBQVMsSUFBSTFOLFNBQVMyTixhQUFhLEtBQUs1TixRQUFRK0ssSUFBSTRrQyxXQUFXLFlBQVksTUFBTSxHQUFHO0FBQzFGaGlDLGVBQU9HLGNBQWMsU0FBUztBQUM5QkgsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFHLGVBQWU7QUFDbEU0RyxlQUFPSSxjQUFjaE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXLEdBQUcsY0FBYztBQUMzRSxjQUFNaUgsT0FBTyxJQUFJL04sU0FBU2dPLFVBQVVqTyxRQUFRK0ssSUFBSTBDLFNBQVNTLFFBQVE7QUFDakVGLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7VUFDeENwRyxNQUFNO1VBQ042VyxNQUFNO1VBQ05sSixPQUFPLFNBQVNBLFFBQVE7QUFFdkJ3aEMsNkJBQWlCeG9DLEtBQUssYUFBYSxFQUFFbW1CLEtBQUssQ0FBQ0MsSUFBSWhrQixNQUFNO0FBQ3BELG9CQUFNcW1DLGdCQUFnQnJtQyxFQUFFKzdCO0FBR3hCc0ssNEJBQWNsSyxZQUFZa0ssY0FBY2gvQjtZQUN6QyxDQUFDO0FBQ0QsZ0JBQUksS0FBSy9FLE9BQU87QUFDZjhqQywrQkFBaUJ6bUIsS0FBSztBQUN0QjJtQiwwQkFBWTNtQixLQUFLO0FBQ2pCLG9CQUFNNG1CLGVBQWUsS0FBS2prQztBQUMxQixvQkFBTWtrQyxjQUFjLElBQUlqN0IsT0FBTzFQLEdBQUcwRSxLQUFLaUwsYUFBYSs2QixZQUFZLEdBQUcsR0FBRztBQUN0RUgsK0JBQWlCeG9DLEtBQUssT0FBTyxFQUFFbW1CLEtBQUssQ0FBQzBpQixRQUFRbC9CLFlBQVk7QUFDeEQsc0JBQU1tL0IsYUFBYW4vQixRQUFRRjtBQUMzQixzQkFBTXMvQixZQUFZSCxZQUFZbnhCLEtBQUtxeEIsVUFBVTtBQUM3QyxvQkFBSUMsV0FBVztBQUNkLHdCQUFNQyxRQUFRcm9DLFNBQVNzb0MsWUFBWTtBQUNuQyx3QkFBTSxDQUFDQyxRQUFRLElBQUl2L0IsUUFBUTRzQjtBQUMzQnlTLHdCQUFNRyxtQkFBbUJELFFBQVE7QUFDakNGLHdCQUFNSSxTQUFTRixVQUFVSCxVQUFVbjhCLEtBQUs7QUFDeENvOEIsd0JBQU1LLE9BQU9ILFVBQVVILFVBQVVuOEIsUUFBUSs3QixhQUFhcnZDLE1BQU07QUFDNUQsd0JBQU0sQ0FBQ2d3QyxjQUFjLElBQUlqeEMsRUFBRSxRQUFRLEVBQ2pDMlIsU0FBUyxZQUFZLEVBQ3JCcEgsSUFBSSxtQkFBbUIsV0FBVztBQUNwQ29tQyx3QkFBTU8saUJBQWlCRCxjQUFjO0FBQ3JDMy9CLDBCQUFRdzBCLGNBQWNoM0IsTUFBTUksVUFBVTtnQkFDdkM7Y0FDRCxDQUFDO1lBQ0YsT0FBTztBQUNOaWhDLCtCQUFpQnhtQixLQUFLO0FBQ3RCMG1CLDBCQUFZMW1CLEtBQUs7WUFDbEI7VUFDRDtRQUNELENBQUM7QUFDRCxnQkFBUXRwQixRQUFRK0ssSUFBSTRrQyxRQUFBO1VBQ25CLEtBQUs7QUFDSmhpQyxtQkFBT0UsU0FBUzlOLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBSWhEL0csb0JBQVErSyxJQUFJd1IsUUFBUXUwQixhQUFhLENBQUM7QUFBQSxnQkFBQUMsY0FBQXJsQywyQkFDZDFMLFFBQVErSyxJQUFJd1IsUUFBUXkwQixPQUFBLEdBQUFDO0FBQUEsZ0JBQUE7QUFBeEMsbUJBQUFGLFlBQUFubEMsRUFBQSxHQUFBLEVBQUFxbEMsVUFBQUYsWUFBQWxsQyxFQUFBLEdBQUFDLFFBQWlEO0FBQUEsc0JBQXRDMFksUUFBQXlzQixRQUFBamxDO0FBQUEsb0JBQUFrbEMsY0FBQXhsQywyQkFDYThZLE1BQU14WSxLQUFBLEdBQUFtbEM7QUFBQSxvQkFBQTtBQUE3Qix1QkFBQUQsWUFBQXRsQyxFQUFBLEdBQUEsRUFBQXVsQyxVQUFBRCxZQUFBcmxDLEVBQUEsR0FBQUMsUUFBb0M7QUFBQSwwQkFBekJxZCxXQUFBZ29CLFFBQUFubEM7QUFDVix3QkFBSW1kLFNBQVNuZCxPQUFPO0FBQUEsMEJBQUFvbEMsY0FBQTFsQywyQkFDQXlkLFNBQVNuZCxLQUFBLEdBQUFxbEM7QUFBQSwwQkFBQTtBQUE1Qiw2QkFBQUQsWUFBQXhsQyxFQUFBLEdBQUEsRUFBQXlsQyxVQUFBRCxZQUFBdmxDLEVBQUEsR0FBQUMsUUFBbUM7QUFBQSxnQ0FBeEJ6RCxPQUFBZ3BDLFFBQUFybEM7QUFDVmhNLGtDQUFRK0ssSUFBSXdSLFFBQVF1MEIsV0FBV3pvQyxLQUFLMEMsR0FBRyxJQUFJOzRCQUMxQ3VtQyxhQUFhanBDLEtBQUtpcEM7NEJBQ2xCQyxXQUFXLENBQUMsQ0FBQ2xwQyxLQUFLa3BDOzBCQUNuQjt3QkFDRDtzQkFBQSxTQUFBdGxDLEtBQUE7QUFBQW1sQyxvQ0FBQTFuQyxFQUFBdUMsR0FBQTtzQkFBQSxVQUFBO0FBQUFtbEMsb0NBQUFsbEMsRUFBQTtzQkFBQTtvQkFDRCxPQUFPO0FBQ05sTSw4QkFBUStLLElBQUl3UixRQUFRdTBCLFdBQVczbkIsU0FBU3BlLEdBQUcsSUFBSTt3QkFDOUN1bUMsYUFBYW5vQixTQUFTbW9CO3dCQUN0QkMsV0FBVyxDQUFDLENBQUNwb0IsU0FBU29vQjtzQkFDdkI7b0JBQ0Q7a0JBQ0Q7Z0JBQUEsU0FBQXRsQyxLQUFBO0FBQUFpbEMsOEJBQUF4bkMsRUFBQXVDLEdBQUE7Z0JBQUEsVUFBQTtBQUFBaWxDLDhCQUFBaGxDLEVBQUE7Z0JBQUE7Y0FDRDtZQUFBLFNBQUFELEtBQUE7QUFBQThrQywwQkFBQXJuQyxFQUFBdUMsR0FBQTtZQUFBLFVBQUE7QUFBQThrQywwQkFBQTdrQyxFQUFBO1lBQUE7QUFDQThCLGlCQUFLSSxPQUFPO2NBQ1h0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO2NBQ3BDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLG9DQUNBLGtDQUNEO2NBQ0F1SCxPQUFPdE8sUUFBUStLLElBQUl5bUM7Y0FDbkJ6aUMsTUFBTSxDQUNMO2dCQUNDakgsTUFBTTtnQkFDTmtFLE9BQU87Z0JBQ1BxQyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO2dCQUNoQ3VRLFVBQVV0WCxRQUFRdUgsUUFBUSxxQkFBcUIsTUFBTTtjQUN0RCxHQUNBO2dCQUNDTyxNQUFNO2dCQUNOa0UsT0FBTztnQkFDUHFDLE9BQU87Z0JBQ1BpSixVQUFVdFgsUUFBUXVILFFBQVEscUJBQXFCLE1BQU07Y0FDdEQsQ0FBQTtZQUVGLENBQUM7QUFDRCxnQkFBSSxDQUFDdkgsUUFBUStLLElBQUk2a0MsV0FBVztBQUMzQixvQkFBTTZCLGFBQWF4cEMsU0FBU1ksY0FBYyxLQUFLO0FBQy9DNG9DLHlCQUFXNUwsWUFBWTlsQyxPQUFPZ0gsTUFDN0IsK0JBQ0EsNkJBQ0Q7QUFDQWlILG1CQUFLSSxPQUFPO2dCQUNYdEcsTUFBTTtnQkFDTm5ILE1BQU07Z0JBQ04wTixPQUFPb2pDO2NBQ1IsQ0FBQztZQUNGO0FBQ0F6akMsaUJBQUtJLE9BQU87Y0FDWHRHLE1BQU07Y0FDTkYsSUFBSTtjQUNKbUIsV0FBVztjQUNYMEYsT0FBTztZQUNSLENBQUM7QUFDRFQsaUJBQUtJLE9BQU87Y0FDWHRHLE1BQU07Y0FDTmlILE1BQU0sQ0FDTDtnQkFDQ1YsT0FBT3RPLE9BQU9nSCxNQUNiLDhCQUNBLDRCQUNEO2dCQUNBaUYsT0FBTztnQkFDUHJMLE1BQU07Z0JBQ05vSixTQUFTaEssT0FBT2dILE1BQ2YseUVBQ0EsdUVBQ0Q7Z0JBQ0FrYyxTQUFTampCLFFBQVF1SCxRQUFRLGdCQUFnQjtjQUMxQyxDQUFBO1lBRUYsQ0FBQztBQUNEeUcsaUJBQUtJLE9BQU87Y0FDWHRHLE1BQU07Y0FDTnVHLE9BQU87Y0FDUDFOLE1BQU07Y0FDTm9KLFNBQVNoSyxPQUFPZ0gsTUFDZiwwREFDQSx3REFDRDtjQUNBeVEsTUFBTTtZQUNQLENBQUM7QUFDRDtVQUNELEtBQUs7QUFDSjdKLG1CQUFPRSxTQUFTOU4sT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQUM7QUFBQSxnQkFBQTJxQyxjQUFBaG1DLDJCQUM1QjFMLFFBQVErSyxJQUFJNnRCLFFBQUEsR0FBQStZO0FBQUEsZ0JBQUE7QUFBaEMsbUJBQUFELFlBQUE5bEMsRUFBQSxHQUFBLEVBQUErbEMsVUFBQUQsWUFBQTdsQyxFQUFBLEdBQUFDLFFBQTBDO0FBQUEsc0JBQS9CMFksUUFBQW10QixRQUFBM2xDO0FBQ1Ysb0JBQUl3WSxNQUFNb3RCLGVBQWU7QUFBQSxzQkFBQUMsY0FBQW5tQywyQkFDUDhZLE1BQU14WSxLQUFBLEdBQUE4bEM7QUFBQSxzQkFBQTtBQUF2Qix5QkFBQUQsWUFBQWptQyxFQUFBLEdBQUEsRUFBQWttQyxVQUFBRCxZQUFBaG1DLEVBQUEsR0FBQUMsUUFBOEI7QUFBQSw0QkFBbkIrWixLQUFBaXNCLFFBQUE5bEM7QUFDVjZaLHlCQUFHc0QsV0FBVzt3QkFDYnJoQixNQUFNO3dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTt3QkFDdENnRCxTQUFTaEssT0FBT2dILE1BQ2Ysb0JBQ0Esa0JBQ0Q7d0JBQ0FwRyxNQUFBLEdBQUF5SCxPQUFTeWQsR0FBRzdaLE1BQU0rRyxRQUFRLE1BQU0sR0FBRyxHQUFDLE1BQUE7c0JBQ3JDO29CQUNEO2tCQUFBLFNBQUE5RyxLQUFBO0FBQUE0bEMsZ0NBQUFub0MsRUFBQXVDLEdBQUE7a0JBQUEsVUFBQTtBQUFBNGxDLGdDQUFBM2xDLEVBQUE7a0JBQUE7Z0JBQ0Q7QUFDQThCLHFCQUFLSSxPQUFPO2tCQUNYdEcsTUFBTTtrQkFDTnVHLE9BQU9tVyxNQUFNMUo7Z0JBQ2QsQ0FBQztBQUNEOU0scUJBQUtJLE9BQU87a0JBQ1h0RyxNQUFNO2tCQUNObkgsTUFBTTtrQkFDTm9PLE1BQU15VixNQUFNeFk7Z0JBQ2IsQ0FBQztjQUNGO1lBQUEsU0FBQUMsS0FBQTtBQUFBeWxDLDBCQUFBaG9DLEVBQUF1QyxHQUFBO1lBQUEsVUFBQTtBQUFBeWxDLDBCQUFBeGxDLEVBQUE7WUFBQTtBQUNBLGdCQUFJbE0sUUFBUXVILFFBQVEsbUJBQW1CLEVBQUUzRyxRQUFRO0FBQ2hEb04sbUJBQUtJLE9BQU87Z0JBQ1h0RyxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsTUFBTTtjQUNwQyxDQUFDO0FBQ0RpSCxtQkFBS0ksT0FBTztnQkFDWHRHLE1BQU07Z0JBQ05uSCxNQUFNO2dCQUNOb08sTUFBTS9PLFFBQVF1SCxRQUFRLG1CQUFtQjtjQUMxQyxDQUFDO1lBQ0Y7QUFDQTtVQUNELEtBQUssWUFBWTtBQUNoQm9HLG1CQUFPRSxTQUFTOU4sT0FBT2dILE1BQU0sU0FBUyxRQUFRLENBQUM7QUFDL0Msa0JBQU04MUIsSUFBSTtBQUFBLGdCQUFBa1YsY0FBQXJtQywyQkFDVTFMLFFBQVErSyxJQUFJbXVCLFlBQUEsR0FBQThZO0FBQUEsZ0JBQUE7QUFBaEMsbUJBQUFELFlBQUFubUMsRUFBQSxHQUFBLEVBQUFvbUMsVUFBQUQsWUFBQWxtQyxFQUFBLEdBQUFDLFFBQThDO0FBQUEsc0JBQW5DMFksUUFBQXd0QixRQUFBaG1DO0FBQ1ZnQyxxQkFBS0ksT0FBTztrQkFDWHRHLE1BQU07a0JBQ05GLElBQUEsWUFBQVEsT0FBZ0J5MEIsQ0FBQztrQkFDakJ4dUIsT0FBT21XLE1BQU0xSjtnQkFDZCxDQUFDO0FBQ0Q5TSxxQkFBS0ksT0FBTztrQkFDWHRHLE1BQU07a0JBQ05uSCxNQUFNO2tCQUNOb08sTUFBTXlWLE1BQU14WSxNQUFNMEcsSUFBS3JLLFVBQVM7QUFDL0IsMkJBQU87c0JBQ04yRCxPQUFPM0QsS0FBSzBDO3NCQUNac0QsT0FBQSxLQUFBakcsT0FBWUMsS0FBSzBDLEtBQUcsS0FBQSxFQUFBM0MsT0FBTUMsS0FBS2lwQyxXQUFXO3NCQUMxQ25vQixVQUFVOWdCLEtBQUs4Z0I7b0JBQ2hCO2tCQUNELENBQUM7Z0JBQ0YsQ0FBQztjQUNGO1lBQUEsU0FBQWxkLEtBQUE7QUFBQThsQywwQkFBQXJvQyxFQUFBdUMsR0FBQTtZQUFBLFVBQUE7QUFBQThsQywwQkFBQTdsQyxFQUFBO1lBQUE7QUFDQSxnQkFBSWxNLFFBQVF1SCxRQUFRLHVCQUF1QixFQUFFM0csUUFBUTtBQUNwRG9OLG1CQUFLSSxPQUFPO2dCQUNYdEcsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE1BQU07Y0FDcEMsQ0FBQztBQUNEaUgsbUJBQUtJLE9BQU87Z0JBQ1h0RyxNQUFNO2dCQUNObkgsTUFBTTtnQkFDTm9PLE1BQU0vTyxRQUFRdUgsUUFBUSx1QkFBdUI7Y0FDOUMsQ0FBQztZQUNGO0FBQ0E7VUFDRDtVQUNBO0FBQ0MsaUJBQUtoQyxHQUFHdUYsT0FBQSxvQkFBQTFDLE9BQTJCcEksUUFBUStLLElBQUkyckIsSUFBSSxHQUFJO2NBQ3RENXVCLE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUFDO0FBQ0Q7UUFDRjtBQUNBLFlBQUk5QyxTQUFTZ3FDLGlCQUFpQixhQUFhLEVBQUVyeEMsUUFBUTtBQUNwRG9OLGVBQUtJLE9BQU87WUFDWHRHLE1BQU07WUFDTmlILE1BQU0sQ0FDTDtjQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO2NBQzFDaUYsT0FBTztjQUNQckwsTUFBTTtjQUNOc2lCLFNBQVNqakIsUUFBUXVILFFBQVEsNEJBQTRCO1lBQ3RELENBQUE7VUFFRixDQUFDO1FBQ0Y7QUFDQXlHLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTmlCLFdBQVc7UUFDWixDQUFDO0FBQ0QsY0FBTTJGLFNBQVNWLEtBQUtXLE9BQU87QUFDM0JoQixlQUFPaUIsV0FBV0YsTUFBTTtBQUN4QmYsZUFBT2tCLFFBQVE7QUFFZmloQywyQkFBbUJud0MsRUFBRStPLE1BQU0sRUFBRXBILEtBQUssY0FBYyxFQUFFb2MsT0FBTztBQUN6RHNzQixzQkFBY3J3QyxFQUFFK08sTUFBTSxFQUFFcEgsS0FBSyxJQUFJO0FBQ2pDb0gsZUFBT3dqQyxZQUFZblksTUFBTTtBQUN6QnJyQixlQUFPd2pDLFlBQVlDLGVBQWU7QUFDbEN6akMsZUFBT3dqQyxZQUFZRSxpQkFBaUIsWUFBYTFvQyxPQUFNO0FBQ3RELGNBQUlBLEVBQUVvUixRQUFRLFNBQVM7QUFFdEJwUixjQUFFQyxlQUFlO0FBQ2pCLG1CQUFPO1VBQ1I7UUFDRCxDQUFDO0FBQ0QsWUFBSTNKLFFBQVErSyxJQUFJNGtDLFdBQVcsV0FBVztBQUNyQzN2QyxrQkFBUStLLElBQUlzbkMscUJBQXFCLENBQUE7QUFDakMsY0FBSXJ5QyxRQUFRK0ssSUFBSTZrQyxXQUFXO0FBSTFCL3ZDLGtCQUNFeUgsS0FBSyxtQkFBbUIsRUFDeEJ3eUIsU0FBUyxFQUNUck0sS0FBSyxDQUFDQyxJQUFJaGtCLE1BQU07QUFHaEIsa0JBQUlBLEVBQUU0b0MsWUFBWSxNQUFNO0FBQ3ZCLHVCQUFPO2NBQ1I7QUFLQSxrQkFBSTVvQyxFQUFFWCxVQUFVeUssUUFBUSxNQUFNLE1BQU0sR0FBRztBQUN0QyxvQkFBSTlKLEVBQUVrMUIsVUFBVSxDQUFDLE1BQU0sWUFBWTtBQUNsQ2ovQixvQkFBRStKLENBQUMsRUFDRHBDLEtBQUssUUFBUSxFQUNibW1CLEtBQUssQ0FBQzBpQixRQUFRbC9CLFlBQVk7QUFDMUIsd0JBQUlBLFFBQVEydEIsVUFBVSxDQUFDLEVBQUVwckIsUUFBUSxNQUFNLE1BQU0sR0FBRztBQUMvQyw0QkFBTSsrQixTQUFTdGhDLFFBQVEydEIsVUFBVSxDQUFDLEVBQUVqckIsTUFBTSxPQUFPL1MsTUFBTSxFQUFFbVMsUUFBUSxNQUFNLEdBQUc7QUFDMUUvUyw4QkFBUStLLElBQUlzbkMsbUJBQW1CcnlDLFFBQVErSyxJQUFJc25DLG1CQUFtQnp4QyxNQUFNLElBQ25FMnhDO29CQUNGO2tCQUNELENBQUM7QUFDRix5QkFBTztnQkFDUjtBQUVBLHNCQUFNeG5DLE1BQU1yQixFQUFFazFCLFVBQVUsQ0FBQyxFQUFFanJCLE1BQU0sT0FBTy9TLE1BQU0sRUFBRW1TLFFBQVEsTUFBTSxHQUFHO0FBQ2pFL1Msd0JBQVErSyxJQUFJc25DLG1CQUFtQnJ5QyxRQUFRK0ssSUFBSXNuQyxtQkFBbUJ6eEMsTUFBTSxJQUFJbUs7Y0FDekU7WUFDRCxDQUFDO0FBRUYsZ0JBQUlsTCxNQUFNeUgsS0FBSyxvQkFBb0IsRUFBRTFHLFFBQVE7QUFDNUNaLHNCQUFRK0ssSUFBSXNuQyxtQkFBbUJyeUMsUUFBUStLLElBQUlzbkMsbUJBQW1CenhDLE1BQU0sSUFBSTtZQUN6RTtBQUNBLGdCQUFJZixNQUFNeUgsS0FBSyx5QkFBeUIsRUFBRTFHLFFBQVE7QUFDakRaLHNCQUFRK0ssSUFBSXNuQyxtQkFBbUJyeUMsUUFBUStLLElBQUlzbkMsbUJBQW1CenhDLE1BQU0sSUFBSTtZQUN6RTtVQUNEO0FBRUEsZ0JBQU02ZSxhQUFheFgsU0FBU1ksY0FBYyxNQUFNO0FBQ2hENFcscUJBQVdoUixNQUFNK2pDLFdBQVc7QUFDNUIveUIscUJBQVc3WCxLQUFLO0FBQ2hCNUgsa0JBQVErSyxJQUFJeUosU0FBUzs7O1lBR3BCaStCLFVBQVU7WUFDVkMsWUFBWTtVQUNiO0FBQ0E3eUMsZ0JBQU15SCxLQUFLLHNCQUFzQixFQUFFcXJDLE1BQU1sekIsVUFBVTtBQUVuRCxnQkFBTTNQLE1BQU03SCxTQUFTOEgsWUFBWSxPQUFPO0FBQ3hDRCxjQUFJRSxVQUFVLFVBQVUsTUFBTSxJQUFJO0FBQ2xDdEIsaUJBQU9ra0MsVUFBVTFpQyxjQUFjSixHQUFHO1FBQ25DLE9BQU87QUFBQSxjQUFBK2lDLGNBQUFubkMsMkJBRWlCekwsU0FBU2dPLFVBQVUwQyxZQUFZakMsUUFBUSxNQUFNLENBQUEsR0FBQW9rQztBQUFBLGNBQUE7QUFBcEUsaUJBQUFELFlBQUFqbkMsRUFBQSxHQUFBLEVBQUFrbkMsVUFBQUQsWUFBQWhuQyxFQUFBLEdBQUFDLFFBQXVFO0FBQUEsb0JBQTVEYSxXQUFBbW1DLFFBQUE5bUM7QUFDVittQyw0QkFBY3BtQyxRQUFRO1lBQ3ZCO1VBQUEsU0FBQVYsS0FBQTtBQUFBNG1DLHdCQUFBbnBDLEVBQUF1QyxHQUFBO1VBQUEsVUFBQTtBQUFBNG1DLHdCQUFBM21DLEVBQUE7VUFBQTtRQUNEO01BQ0Q7QUFHQSxVQUFJNGpDO0FBQ0osVUFBSUU7QUFDSmh3QyxjQUFRK0ssSUFBSXltQyxrQkFBbUI5bkMsT0FBTTtBQUNwQyxjQUFNO1VBQUNzRTtRQUFJLElBQUl0RSxFQUFFNEc7QUFDakIsY0FBTXNpQyxZQUFZbHBDLEVBQUU0RyxPQUFPdEU7QUFDM0JoTSxnQkFBUStLLElBQUk4a0MsY0FBYzdoQyxLQUFLdW5CLFdBQVcsTUFBTTtBQUNoRCxjQUFNdGIsWUFBWSxJQUFJaGEsU0FBU2dPLFVBQVVnRCxRQUFRO1VBQ2hEbkosTUFBTTtRQUNQLENBQUM7QUFFRCxjQUFNa3JDLGVBQWVBLENBQUNqb0MsS0FBS3VtQyxnQkFBZ0I7QUFDMUMsZ0JBQU0za0MsV0FBVztZQUNoQlgsT0FBT2pCO1lBQ1BzRCxPQUFBLEtBQUFqRyxPQUFZMkMsS0FBRyxNQUFBLEVBQUEzQyxPQUFPa3BDLFdBQVc7VUFDbEM7QUFDQSxjQUFJdHhDLFFBQVErSyxJQUFJOGtDLFlBQVkxbUMsU0FBUzRCLEdBQUcsR0FBRztBQUMxQzRCLHFCQUFTc1csVUFBVTtVQUNwQjtBQUNBLGtCQUFRbFksS0FBQTtZQUNQLEtBQUs7QUFDSjRCLHVCQUFTd2MsV0FBVyxDQUNuQjtnQkFDQ3hvQixNQUFNO2dCQUNObUgsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztnQkFDbERnRCxTQUFTaEssT0FBT2dILE1BQ2Ysd0NBQ0Esc0NBQ0Q7Y0FDRCxHQUNBO2dCQUNDcEcsTUFBTTtnQkFDTm1ILE1BQU07Z0JBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO2dCQUMxQ2dELFNBQVNoSyxPQUFPZ0gsTUFDZix3Q0FDQSxzQ0FDRDtjQUNELEdBQ0E7Z0JBQ0NwRyxNQUFNO2dCQUNObUgsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7Z0JBQzFDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLHdDQUNBLHNDQUNEO2NBQ0QsQ0FBQTtBQUVEO1lBQ0QsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLLFlBQVk7QUFDaEIsa0JBQUlrc0MsZUFBZTtBQUNuQixzQkFBUWxvQyxLQUFBO2dCQUNQLEtBQUs7QUFDSmtvQyxpQ0FBZTtBQUNmO2dCQUNELEtBQUs7QUFDSkEsaUNBQWU7QUFDZjtjQUVGO0FBRUF0bUMsdUJBQVN3YyxXQUFXLENBQ25CO2dCQUNDeG9CLE1BQU07Z0JBQ05tSCxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztnQkFDcENnRCxTQUFTaEssT0FBT2dILE1BQ2YsMkJBQ0EseUJBQ0Q7Y0FDRCxHQUNBO2dCQUNDZSxNQUFNO2dCQUNOaUgsTUFBTSxDQUNMO2tCQUNDcE8sTUFBTTtrQkFDTjBOLE9BQUEsTUFBQWpHLE9BQWE2cUMsWUFBWSxFQUFBN3FDLE9BQUdySSxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsQ0FBQztrQkFDaEVrYyxTQUFTO2tCQUNUbFosU0FBU2hLLE9BQU9nSCxNQUNmLGtCQUNBLGdCQUNEO2dCQUNELENBQUE7Y0FFRixDQUFBO0FBRUQsa0JBQUl4QixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLEdBQUc7QUFDN0NrSCx5QkFBU3djLFNBQVN4YyxTQUFTd2MsU0FBU3ZvQixNQUFNLElBQUk7a0JBQzdDRCxNQUFNO2tCQUNObUgsTUFBTTtrQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBQSxZQUFBcUIsT0FDRDJDLFFBQVEsYUFBYSxPQUFPLEtBQUcsVUFBQSxHQUFBLFlBQUEzQyxPQUMvQjJDLFFBQVEsYUFBYSxPQUFPLEtBQUcsVUFBQSxDQUM1QztrQkFDQWhCLFNBQVNoSyxPQUFPZ0gsTUFDZixvQ0FDQSxrQ0FDRDtnQkFDRDtjQUNEO0FBQ0E7WUFDRDtZQUNBLEtBQUs7QUFDSjRGLHVCQUFTd2MsV0FBVztnQkFDbkJ4b0IsTUFBTTtnQkFDTm1ILE1BQU07Z0JBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sY0FBYyxZQUFZO2dCQUM5Q2dELFNBQVNoSyxPQUFPZ0gsTUFBTSxzQkFBc0Isb0JBQW9CO2NBQ2pFO0FBQ0E7WUFDRCxLQUFLO0FBQ0o0Rix1QkFBU3djLFdBQVc7Z0JBQ25CeG9CLE1BQU07Z0JBQ05tSCxNQUFNO2dCQUNOaUgsTUFBTSxDQUNMO2tCQUNDVixPQUFBLGtCQUFBakcsT0FBeUJySSxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsQ0FBQztrQkFDN0RpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLHdCQUFBakcsT0FBK0JySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztrQkFDdkRpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLDhCQUFBakcsT0FBcUNySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztrQkFDakVpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLHVCQUFBakcsT0FBOEJySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztrQkFDdERpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLDBCQUFBakcsT0FBaUNySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztrQkFDekRpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLDBCQUFBakcsT0FBaUNySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztrQkFDN0RpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLDZCQUFBakcsT0FBb0NySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztrQkFDaEVpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLDJCQUFBakcsT0FBa0NySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztrQkFDOURpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLDRCQUFBakcsT0FBbUNySSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FBQztrQkFDakVpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLHdCQUFBakcsT0FBK0JySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztrQkFDdkRpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLDBCQUFBakcsT0FBaUNySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztrQkFDekRpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLGdDQUFBakcsT0FBdUNySSxPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQztrQkFDL0RpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFBLDJCQUFBakcsT0FBa0NySSxPQUFPZ0gsTUFBTSxPQUFPLEtBQUssQ0FBQztrQkFDNURpRixPQUFPO2dCQUNSLEdBQ0E7a0JBQ0NxQyxPQUFPO2tCQUNQckMsT0FBTztnQkFDUixHQUNBO2tCQUNDcUMsT0FBQSxzQkFBQWpHLE9BQTZCckksT0FBT2dILE1BQU0sV0FBVyxTQUFTLEdBQUMsU0FBQTtrQkFDL0RpRixPQUFPO2dCQUNSLENBQUE7Y0FFRjtBQUNBO1lBQ0QsS0FBSztBQUNKVyx1QkFBU3djLFdBQVcsQ0FDbkI7Z0JBQ0N4b0IsTUFBTTtnQkFDTm1ILE1BQU07Z0JBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO2NBQ25DLEdBQ0E7Z0JBQ0NwRyxNQUFNO2dCQUNObUgsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFDYixzQkFDQSxvQkFDRDtnQkFDQWdELFNBQVNoSyxPQUFPZ0gsTUFDZixxQkFDQSxtQkFDRDtjQUNELENBQUE7QUFFRDtZQUNELEtBQUs7QUFDSjRGLHVCQUFTd2MsV0FBVyxDQUNuQjtnQkFDQ3hvQixNQUFNO2dCQUNObUgsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87Z0JBQ3BDZ0QsU0FBU2hLLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztjQUNuQyxHQUNBO2dCQUNDcEcsTUFBTTtnQkFDTm1ILE1BQU07Z0JBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO2dCQUNwQ2dELFNBQVNoSyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7Y0FDbkMsR0FDQTtnQkFDQ3BHLE1BQU07Z0JBQ05tSCxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztnQkFDcENnRCxTQUFTaEssT0FBT2dILE1BQU0sT0FBTyxLQUFLO2NBQ25DLENBQUE7QUFFRDtZQUNELEtBQUs7QUFDSjRGLHVCQUFTd2MsV0FBVyxDQUNuQjtnQkFDQ3hvQixNQUFNO2dCQUNObUgsTUFBTTtnQkFDTnVHLE9BQU87Z0JBQ1B0RSxTQUFTaEssT0FBT2dILE1BQ2YscUJBQ0EsbUJBQ0Q7Y0FDRCxDQUFBO0FBRUQ7WUFDRDtBQUNDO1VBQ0Y7QUFDQSxpQkFBTzRGO1FBQ1I7QUFDQSxjQUFNdW1DLHNDQUFzQ0EsTUFBTTtBQUNqRGo1QixvQkFBVTdMLE9BQU87WUFDaEJ0RyxNQUFNO1lBQ05GLElBQUk7WUFDSnlHLE9BQU90TyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7VUFDM0MsQ0FBQztBQUNELGdCQUFNb3NDLFNBQVNsNUIsVUFBVTdMLE9BQU87WUFDL0J0RyxNQUFNO1lBQ05GLElBQUk7VUFDTCxDQUFDO0FBQ0QsZ0JBQU13ckMsYUFBYSxDQUFBO0FBQ25CLGdCQUFNQyxnQkFBZ0IzcEMsRUFBRTRHLE9BQU90QyxLQUFLc2xDLGFBQWEsY0FBYztBQUFBLGNBQUFDLGNBQUE3bkMsMkJBQzdDMUwsUUFBUStLLElBQUlzbkMsa0JBQUEsR0FBQW1CO0FBQUEsY0FBQTtBQUE5QixpQkFBQUQsWUFBQTNuQyxFQUFBLEdBQUEsRUFBQTRuQyxVQUFBRCxZQUFBMW5DLEVBQUEsR0FBQUMsUUFBa0Q7QUFBQSxvQkFBdkNmLE1BQUF5b0MsUUFBQXhuQztBQUNWLG9CQUFNVyxXQUFXO2dCQUNoQlgsT0FBT2pCO2dCQUNQc0QsT0FBQSxLQUFBakcsT0FBWTJDLEtBQUcsSUFBQSxFQUFBM0MsT0FDZHBJLFFBQVErSyxJQUFJd1IsUUFBUXUwQixXQUFXL2xDLEdBQUcsSUFBQSxLQUFBM0MsT0FDMUJwSSxRQUFRK0ssSUFBSXdSLFFBQVF1MEIsV0FBVy9sQyxHQUFHLEVBQUV1bUMsV0FBVyxJQUNwRCxFQUNKO2dCQUNBcnVCLFNBQVMsQ0FBQ293QixjQUFjbHFDLFNBQVM0QixHQUFHO2NBQ3JDO0FBQ0Fxb0MseUJBQVdBLFdBQVd4eUMsTUFBTSxJQUFJK0w7WUFDakM7VUFBQSxTQUFBVixLQUFBO0FBQUFzbkMsd0JBQUE3cEMsRUFBQXVDLEdBQUE7VUFBQSxVQUFBO0FBQUFzbkMsd0JBQUFybkMsRUFBQTtVQUFBO0FBQ0FpbkMsaUJBQU8va0MsT0FBTztZQUNidEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOb08sTUFBTXFrQztVQUNQLENBQUM7UUFDRjtBQUNBLFlBQUlSLGNBQWMsT0FBTztBQUd4QixnQkFBTWEsdUJBQXVCQSxDQUFDTixRQUFRaHFCLGFBQWE7QUFDbEQsa0JBQU1pcUIsYUFBYSxDQUFBO0FBQUMsZ0JBQUFNLGNBQUFob0MsMkJBQ0R5ZCxRQUFBLEdBQUF3cUI7QUFBQSxnQkFBQTtBQUFuQixtQkFBQUQsWUFBQTluQyxFQUFBLEdBQUEsRUFBQStuQyxVQUFBRCxZQUFBN25DLEVBQUEsR0FBQUMsUUFBNkI7QUFBQSxzQkFBbEJ6RCxPQUFBc3JDLFFBQUEzbkM7QUFDVixvQkFBSSxDQUFDaE0sUUFBUStLLElBQUlzbkMsbUJBQW1CbHBDLFNBQVNkLEtBQUswQyxHQUFHLEdBQUc7QUFDdkRxb0MsNkJBQVdBLFdBQVd4eUMsTUFBTSxJQUFJb3lDLGFBQWEzcUMsS0FBSzBDLEtBQUsxQyxLQUFLaXBDLFdBQVc7Z0JBQ3hFO2NBQ0Q7WUFBQSxTQUFBcmxDLEtBQUE7QUFBQXluQywwQkFBQWhxQyxFQUFBdUMsR0FBQTtZQUFBLFVBQUE7QUFBQXluQywwQkFBQXhuQyxFQUFBO1lBQUE7QUFDQWluQyxtQkFBTy9rQyxPQUFPO2NBQ2J0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ05vTyxNQUFNcWtDO1lBQ1AsQ0FBQztVQUNGO0FBQ0EsY0FBSXB6QyxRQUFRK0ssSUFBSXNuQyxtQkFBbUJ6eEMsU0FBUyxHQUFHO0FBQzlDc3lDLGdEQUFvQztVQUNyQztBQUNBLGNBQUlyVyxJQUFJO0FBQUEsY0FBQStXLGNBQUFsb0MsMkJBRVkxTCxRQUFRK0ssSUFBSXdSLFFBQVF5MEIsT0FBQSxHQUFBNkM7QUFBQSxjQUFBO0FBQXhDLGlCQUFBRCxZQUFBaG9DLEVBQUEsR0FBQSxFQUFBaW9DLFVBQUFELFlBQUEvbkMsRUFBQSxHQUFBQyxRQUFpRDtBQUFBLG9CQUF0QzBZLFFBQUFxdkIsUUFBQTduQztBQUNWaU8sd0JBQVU3TCxPQUFPO2dCQUNoQnRHLE1BQU07Z0JBQ05GLElBQUEsWUFBQVEsT0FBZ0J5MEIsQ0FBQztnQkFDakJ4dUIsT0FBT21XLE1BQU0xSjtjQUNkLENBQUM7QUFDRCxvQkFBTXE0QixTQUFTbDVCLFVBQVU3TCxPQUFPO2dCQUMvQnRHLE1BQU07Z0JBQ05GLElBQUEsWUFBQVEsT0FBZ0J5MEIsR0FBRztjQUNwQixDQUFDO0FBQ0Qsa0JBQUlyWSxNQUFNeFksTUFBTSxDQUFDLEVBQUVqQixLQUFLO0FBQ3ZCMG9DLHFDQUFxQk4sUUFBUTN1QixNQUFNeFksS0FBSztjQUN6QyxPQUFPO0FBQUEsb0JBQUE4bkMsY0FBQXBvQywyQkFDaUI4WSxNQUFNeFksS0FBQSxHQUFBK25DO0FBQUEsb0JBQUE7QUFBN0IsdUJBQUFELFlBQUFsb0MsRUFBQSxHQUFBLEVBQUFtb0MsVUFBQUQsWUFBQWpvQyxFQUFBLEdBQUFDLFFBQW9DO0FBQUEsMEJBQXpCcWQsV0FBQTRxQixRQUFBL25DO0FBQ1ZtbkMsMkJBQU8va0MsT0FBTztzQkFDYnRHLE1BQU07c0JBQ051RyxPQUFPLENBQUNwTyxTQUFTNE0sU0FBUyxLQUFLc2MsU0FBU3JPLEdBQUcsQ0FBQztvQkFDN0MsQ0FBQztBQUNEMjRCLHlDQUFxQk4sUUFBUWhxQixTQUFTbmQsS0FBSztrQkFDNUM7Z0JBQUEsU0FBQUMsS0FBQTtBQUFBNm5DLDhCQUFBcHFDLEVBQUF1QyxHQUFBO2dCQUFBLFVBQUE7QUFBQTZuQyw4QkFBQTVuQyxFQUFBO2dCQUFBO2NBQ0Q7WUFDRDtVQUFBLFNBQUFELEtBQUE7QUFBQTJuQyx3QkFBQWxxQyxFQUFBdUMsR0FBQTtVQUFBLFVBQUE7QUFBQTJuQyx3QkFBQTFuQyxFQUFBO1VBQUE7UUFDRCxPQUFPO0FBQUEsY0FBQThuQztBQUVOLGNBQUloMEMsUUFBUStLLElBQUlzbkMsbUJBQW1CenhDLFNBQVMsR0FBRztBQUM5Q3N5QyxnREFBb0M7QUFDcENqNUIsc0JBQVU3TCxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNORixJQUFJO2NBQ0p5RyxPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO1lBQ3pDLENBQUM7VUFDRjtBQUVBLFdBQUFpdEMsdUJBQUFoMEMsUUFBUStLLElBQUl3UixTQUFRMDNCLHFCQUFwQkQscUJBQW9CQyxtQkFBcUJ2NUIsT0FBT1ksS0FBS3RiLFFBQVErSyxJQUFJd1IsUUFBUXUwQixVQUFVLEVBQUV2MUIsS0FBSztBQUMxRixnQkFBTTYzQixhQUFhLENBQUE7QUFBQyxjQUFBYyxjQUFBeG9DLDJCQUNGMUwsUUFBUStLLElBQUl3UixRQUFRMDNCLGdCQUFBLEdBQUFFO0FBQUEsY0FBQTtBQUF0QyxpQkFBQUQsWUFBQXRvQyxFQUFBLEdBQUEsRUFBQXVvQyxVQUFBRCxZQUFBcm9DLEVBQUEsR0FBQUMsUUFBd0Q7QUFBQSxvQkFBN0NmLE1BQUFvcEMsUUFBQW5vQztBQUNWLGtCQUFJLENBQUNoTSxRQUFRK0ssSUFBSXNuQyxtQkFBbUJscEMsU0FBUzRCLEdBQUcsR0FBRztBQUNsRHFvQywyQkFBV0EsV0FBV3h5QyxNQUFNLElBQUlveUMsYUFBYWpvQyxLQUFLL0ssUUFBUStLLElBQUl3UixRQUFRdTBCLFdBQVcvbEMsR0FBRyxFQUFFdW1DLFdBQVc7Y0FDbEc7WUFDRDtVQUFBLFNBQUFybEMsS0FBQTtBQUFBaW9DLHdCQUFBeHFDLEVBQUF1QyxHQUFBO1VBQUEsVUFBQTtBQUFBaW9DLHdCQUFBaG9DLEVBQUE7VUFBQTtBQUNBK04sb0JBQVU3TCxPQUFPO1lBQ2hCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOb08sTUFBTXFrQztVQUNQLENBQUM7UUFDRjtBQUVBLFlBQUlwekMsUUFBUXVILFFBQVEsZUFBZSxFQUFFM0csUUFBUTtBQUM1Q3FaLG9CQUFVN0wsT0FBTztZQUNoQnRHLE1BQU07WUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE1BQU07VUFDcEMsQ0FBQztBQUNEa1Qsb0JBQVU3TCxPQUFPO1lBQ2hCdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOb08sTUFBTS9PLFFBQVF1SCxRQUFRLGVBQWUsRUFBRW1MLElBQUttVCxRQUFPO0FBQ2xEQSxpQkFBRzVDLFVBQVVqakIsUUFBUStLLElBQUk4a0MsWUFBWTFtQyxTQUFTMGMsR0FBRzdaLEtBQUs7QUFDdEQscUJBQU82WjtZQUNSLENBQUM7VUFDRixDQUFDO1FBQ0Y7QUFDQSxjQUFNdXVCLFlBQVl6MEMsRUFBRXFPLElBQUksRUFBRTFHLEtBQUssY0FBYztBQUM3QyxjQUFNK3NDLFdBQVdwNkIsVUFBVXRMLE9BQU87QUFDbEN5bEMsa0JBQVU3YSxNQUFNLEVBQUVuckIsT0FBT2ltQyxRQUFRO0FBRWpDdkUsMkJBQW1Cc0UsVUFBVTlzQyxLQUFLLGtDQUFrQyxFQUFFb2MsT0FBTztBQUM3RXNzQixzQkFBY29FLFVBQVU5c0MsS0FBSywyQkFBMkI7QUFDeEQwRyxhQUFLa2tDLFlBQVlsbUMsUUFBUTtBQUN6QmdDLGFBQUtra0MsWUFBWW5ZLE1BQU07QUFFdkJxYSxrQkFBVTlzQyxLQUFLLElBQUksRUFBRTRDLElBQUk7VUFDeEIsYUFBYTtRQUNkLENBQUM7QUFDRGtxQyxrQkFBVTlzQyxLQUFLLHNCQUFzQixFQUFFNEMsSUFBSTtVQUMxQyxjQUFjO1FBQ2YsQ0FBQztBQUNEa3FDLGtCQUFVOXNDLEtBQUssS0FBSyxFQUFFc2dCLE9BQU8saUNBQWlDLEVBQUUxZCxJQUFJO1VBQ25FLGNBQWM7UUFDZixDQUFDO0FBQUEsWUFBQW9xQyxjQUFBNW9DLDJCQUNzQnpMLFNBQVNnTyxVQUFVMEMsWUFBWTNDLE1BQU0sY0FBYyxDQUFBLEdBQUF1bUM7QUFBQSxZQUFBO0FBQTFFLGVBQUFELFlBQUExb0MsRUFBQSxHQUFBLEVBQUEyb0MsVUFBQUQsWUFBQXpvQyxFQUFBLEdBQUFDLFFBQTZFO0FBQUEsa0JBQWxFYSxXQUFBNG5DLFFBQUF2b0M7QUFDVittQywwQkFBY3BtQyxRQUFRO1VBQ3ZCO1FBQUEsU0FBQVYsS0FBQTtBQUFBcW9DLHNCQUFBNXFDLEVBQUF1QyxHQUFBO1FBQUEsVUFBQTtBQUFBcW9DLHNCQUFBcG9DLEVBQUE7UUFBQTtBQUFBLFlBQUFzb0MsY0FBQTlvQywyQkFDdUJ6TCxTQUFTZ08sVUFBVTBDLFlBQVkzQyxNQUFNLE1BQU0sQ0FBQSxHQUFBeW1DO0FBQUEsWUFBQTtBQUFsRSxlQUFBRCxZQUFBNW9DLEVBQUEsR0FBQSxFQUFBNm9DLFVBQUFELFlBQUEzb0MsRUFBQSxHQUFBQyxRQUFxRTtBQUFBLGtCQUExRGEsV0FBQThuQyxRQUFBem9DO0FBQ1YrbUMsMEJBQWNwbUMsUUFBUTtVQUN2QjtRQUFBLFNBQUFWLEtBQUE7QUFBQXVvQyxzQkFBQTlxQyxFQUFBdUMsR0FBQTtRQUFBLFVBQUE7QUFBQXVvQyxzQkFBQXRvQyxFQUFBO1FBQUE7QUFFQSxjQUFNdVQsYUFBYXhYLFNBQVNDLGNBQWMsZ0JBQWdCO0FBQzFEckksY0FBTXlILEtBQUssa0NBQWtDLEVBQUVtQyxHQUFHLFNBQVMsV0FBWTtBQUN0RSxjQUFJLEtBQUs5SSxTQUFTLFFBQVE7QUFDekJYLG9CQUFRK0ssSUFBSXlKLE9BQU9pK0IsWUFBWSxLQUFLeHZCLFVBQVUsSUFBSTtVQUNuRCxXQUFXLEtBQUt0aUIsU0FBUyxnQkFBZ0I7QUFDeENYLG9CQUFRK0ssSUFBSXlKLE9BQU9rK0IsY0FBYyxLQUFLenZCLFVBQVUsS0FBSztVQUN0RDtBQUNBLGdCQUFNeXhCLFlBQUEsS0FBQXRzQyxPQUFpQnBJLFFBQVErSyxJQUFJeUosT0FBT2krQixRQUFRLEVBQUFycUMsT0FBR3JJLE9BQU9nSCxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQy9FLGdCQUFNNHRDLGFBQUEsS0FBQXZzQyxPQUFrQnBJLFFBQVErSyxJQUFJeUosT0FBT2srQixVQUFVLEVBQUF0cUMsT0FBR3JJLE9BQU9nSCxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ2xGMFkscUJBQVcxTyxlQUNUL1EsUUFBUStLLElBQUl5SixPQUFPaStCLFdBQUEsS0FBQXJxQyxPQUFnQnNzQyxTQUFTLElBQUssT0FDakQxMEMsUUFBUStLLElBQUl5SixPQUFPaytCLGNBQWMxeUMsUUFBUStLLElBQUl5SixPQUFPaStCLFdBQVcsTUFBTSxRQUFRa0MsYUFBYTtRQUM3RixDQUFDO01BQ0Y7QUFNQSxZQUFNNUIsZ0JBQWlCcG1DLGNBQWE7QUFDbkMsY0FBTTNDLE9BQU8vSixTQUFTNE0sU0FBUyxLQUFLLEdBQUc7QUFDdkM3QyxhQUFLbEIsYUFBYSxTQUFTLG1CQUFtQjtBQUM5QyxjQUFNOHJDLFVBQVVqb0MsU0FBUzhuQjtBQUN6QnpxQixhQUFLbEIsYUFDSixRQUNBdkQsR0FBRzBFLEtBQUtNLFFBQ05xcUMsUUFBUXpyQyxTQUFTLEdBQUcsSUFBSSxLQUFLLGdCQUM1QnlyQyxRQUFRenJDLFNBQVMsR0FBRyxJQUFJeXJDLFFBQVFqaEMsTUFBTSxHQUFHaWhDLFFBQVFwaEMsUUFBUSxHQUFHLENBQUMsSUFBSW9oQyxRQUNwRSxDQUNEO0FBQ0E1cUMsYUFBS2xCLGFBQWEsVUFBVSxRQUFRO0FBQ3BDa0IsYUFBS2xCLGFBQWEsT0FBTyxxQkFBcUI7QUFDOUNuSixVQUFFZ04sUUFBUSxFQUFFK1csT0FBTyxFQUFFdFYsT0FBTyxDQUFDLEtBQVVwRSxJQUFJLENBQUM7TUFDN0M7QUFFQWhLLGNBQVErSyxJQUFJd1IsVUFBVSxDQUFDO0FBS3ZCdmMsY0FBUStLLElBQUl3UixRQUFReTBCLFVBQVUsQ0FDN0I7UUFDQ2wyQixLQUFLL2EsT0FBT2dILE1BQU0sV0FBVyxTQUFTO1FBQ3RDaUYsT0FBTyxDQUNOO1VBQ0M4TyxLQUFLL2EsT0FBT2dILE1BQU0sUUFBUSxNQUFNO1VBQ2hDaUYsT0FBTyxDQUNOO1lBQ0NqQixLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIseUJBQ0EsdUJBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsdUJBQ0EscUJBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsOEJBQ0EsNEJBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsK0JBQ0EsNkJBQ0Q7VUFDRCxDQUFBO1FBRUYsR0FDQTtVQUNDK1QsS0FBSy9hLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztVQUN0Q2lGLE9BQU8sQ0FDTjtZQUNDakIsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQ25CLG9CQUNBLGtCQUNEO1VBQ0QsR0FDQTtZQUNDZ0UsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQ25CLHlCQUNBLHVCQUNEO1VBQ0QsR0FDQTtZQUNDZ0UsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQ25CLGlDQUNBLDhCQUNEO1VBQ0QsQ0FBQTtRQUVGLEdBQ0E7VUFDQytULEtBQUsvYSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDbENpRixPQUFPLENBQ047WUFDQ2pCLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUNyRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxrQkFBa0IsZ0JBQWdCO1VBQzdELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtVQUM3QyxDQUFBO1FBRUYsR0FDQTtVQUNDK1QsS0FBSy9hLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtVQUN4Q2lGLE9BQU8sQ0FDTjtZQUNDakIsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQ25CLHNCQUNBLG9CQUNEO1VBQ0QsR0FDQTtZQUNDZ0UsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7VUFDM0QsQ0FBQTtRQUVGLENBQUE7TUFFRixHQUNBO1FBQ0MrVCxLQUFLL2EsT0FBT2dILE1BQU0sVUFBVSxRQUFRO1FBQ3BDaUYsT0FBTyxDQUNOO1VBQ0M4TyxLQUFLO1VBQ0w5TyxPQUFPLENBQ047WUFDQ2pCLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1lBQ3hEd3FDLFdBQVc7VUFDWixHQUNBO1lBQ0N4bUMsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQ25CLHFCQUNBLG1CQUNEO1VBQ0QsQ0FBQTtRQUVGLEdBQ0E7VUFDQytULEtBQUsvYSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07VUFDaENpRixPQUFPLENBQ047WUFDQ2pCLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUNyRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7VUFDL0MsR0FDQTtZQUNDZ0UsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0sYUFBYSxXQUFXO1VBQ25ELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUNuQixtQkFDQSxpQkFDRDtVQUNELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUNuQix3QkFDQSxzQkFDRDtVQUNELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUNuQiwrQkFDQSw2QkFDRDtVQUNELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1VBQzNELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUNuQix1QkFDQSxxQkFDRDtVQUNELENBQUE7UUFFRixHQUNBO1VBQ0MrVCxLQUFLL2EsT0FBT2dILE1BQU0sTUFBTSxJQUFJO1VBQzVCaUYsT0FBTztZQUNOO2NBQUNqQixLQUFLO2NBQXVCdW1DLGFBQWE7WUFBUzs7WUFDbkQ7Y0FBQ3ZtQyxLQUFLO2NBQVd1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Y0FBR3dxQyxXQUFXO1lBQUk7WUFDM0U7Y0FDQ3htQyxLQUFLO2NBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7WUFDdkQ7VUFBQTtRQUVGLEdBQ0E7VUFDQytULEtBQUsvYSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDbENpRixPQUFPLENBQ047WUFDQ2pCLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUNuQiw4QkFDQSw0QkFDRDtVQUNELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUNyRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsb0JBQ0Esa0JBQ0Q7VUFDRCxDQUFBO1FBRUYsR0FDQTtVQUNDK1QsS0FBSy9hLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztVQUM5QmlGLE9BQU8sQ0FDTjtZQUNDakIsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0sVUFBVSxRQUFRO1lBQzVDd3FDLFdBQVc7VUFDWixHQUNBO1lBQ0N4bUMsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0sZUFBZSxhQUFhO1VBQ3ZELENBQUE7UUFFRixHQUNBO1VBQ0MrVCxLQUFLL2EsT0FBT2dILE1BQU0sYUFBYSxXQUFXO1VBQzFDaUYsT0FBTyxDQUNOO1lBQ0NqQixLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsaUNBQ0EsK0JBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsMkJBQ0EseUJBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7VUFDdkQsR0FDQTtZQUNDZ0UsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQjtVQUM3RCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDN0MsR0FDQTtZQUNDZ0UsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQ25CLGdDQUNBLDhCQUNEO1VBQ0QsR0FDQTtZQUNDZ0UsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0sVUFBVSxRQUFRO1VBQzdDLEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUNuQixxQkFDQSxtQkFDRDtVQUNELENBQUE7UUFFRixHQUNBO1VBQ0MrVCxLQUFLL2EsT0FBT2dILE1BQU0sV0FBVyxTQUFTO1VBQ3RDaUYsT0FBTyxDQUNOO1lBQ0NqQixLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsc0JBQ0Esb0JBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIscUJBQ0EsbUJBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsbUJBQ0EsaUJBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsa0NBQ0EsZ0NBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsd0JBQ0Esc0JBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsbUJBQ0EsaUJBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsb0JBQ0Esa0JBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxrQkFBa0IsZ0JBQWdCO1VBQzdELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztVQUMvQyxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7VUFDakQsR0FDQTtZQUNDZ0UsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0sZUFBZSxhQUFhO1VBQ3ZELENBQUE7UUFFRixDQUFBO01BRUYsR0FDQTtRQUNDK1QsS0FBSy9hLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtRQUNwQ2lGLE9BQU8sQ0FDTjtVQUNDOE8sS0FBSy9hLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtVQUM1QmlGLE9BQU8sQ0FDTjtZQUNDakIsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQ25CLG1CQUNBLGlCQUNEO1lBQ0F3cUMsV0FBVztVQUNaLEdBQ0E7WUFDQ3htQyxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7VUFDN0MsQ0FBQTtRQUVGLEdBQ0E7VUFDQytULEtBQUsvYSxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7VUFDNUJpRixPQUFPLENBQ047WUFDQ2pCLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUNuQix3QkFDQSxzQkFDRDtVQUNELEdBQ0E7WUFDQ2dFLEtBQUs7WUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGVBQWUsYUFBYTtVQUN2RCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIscUJBQ0EsbUJBQ0Q7VUFDRCxHQUNBO1lBQ0NnRSxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIsd0JBQ0Esc0JBQ0Q7VUFDRCxDQUFBO1FBRUYsR0FDQTtVQUNDK1QsS0FBSy9hLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtVQUNoQ2lGLE9BQU8sQ0FDTjtZQUNDakIsS0FBSztZQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0sWUFBWSxVQUFVO1VBQ2pELENBQUE7UUFFRixHQUNBO1VBQ0MrVCxLQUFLL2EsT0FBT2dILE1BQU0sTUFBTSxJQUFJO1VBQzVCaUYsT0FBTyxDQUNOO1lBQ0NqQixLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7WUFDaER3cUMsV0FBVztVQUNaLEdBQ0E7WUFDQ3htQyxLQUFLO1lBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7WUFDNUN3cUMsV0FBVztVQUNaLENBQUE7UUFFRixDQUFBO01BRUYsR0FDQTtRQUNDejJCLEtBQUsvYSxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7UUFDeENpRixPQUFPLENBQ047VUFDQ2pCLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUNwRHdxQyxXQUFXO1FBQ1osR0FDQTtVQUNDeG1DLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUNwRHdxQyxXQUFXO1FBQ1osR0FDQTtVQUNDeG1DLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUNwRHdxQyxXQUFXO1FBQ1osR0FDQTtVQUNDeG1DLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1VBQ3hEd3FDLFdBQVc7UUFDWixHQUNBO1VBQ0N4bUMsS0FBSztVQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7VUFDMUR3cUMsV0FBVztRQUNaLENBQUE7TUFFRixDQUFBO0FBS0R2eEMsY0FBUStLLElBQUltdUIsZUFBZSxDQUMxQjtRQUNDcGUsS0FBSztRQUNMOU8sT0FBTyxDQUNOO1VBQ0NqQixLQUFLaEwsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1VBQ2xDdXFDLGFBQWF2eEMsT0FBT2dILE1BQ25CLG1DQUNBLGlDQUNEO1FBQ0QsR0FDQTtVQUNDZ0UsS0FBS2hMLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUNsQ3VxQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0I7UUFDN0QsR0FDQTtVQUNDZ0UsS0FBS2hMLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtVQUNwQ3VxQyxhQUFhdnhDLE9BQU9nSCxNQUNuQiwwQkFDQSx3QkFDRDtRQUNELEdBQ0E7VUFDQ2dFLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtRQUNyRCxHQUNBO1VBQ0NnRSxLQUFLaEwsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1VBQ2xDdXFDLGFBQWF2eEMsT0FBT2dILE1BQ25CLHNCQUNBLG9CQUNEO1FBQ0QsR0FDQTtVQUNDZ0UsS0FBS2hMLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUNsQ3VxQyxhQUFhdnhDLE9BQU9nSCxNQUNuQixxQkFDQSxtQkFDRDtRQUNELEdBQ0E7VUFDQ2dFLEtBQUtoTCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDbEN1cUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07UUFDekMsR0FDQTtVQUNDZ0UsS0FBS2hMLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUNsQ3VxQyxhQUFhdnhDLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztRQUNuRCxHQUNBO1VBQ0NnRSxLQUFLaEwsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1VBQ2xDdXFDLGFBQWF2eEMsT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQjtRQUM3RCxHQUNBO1VBQ0NnRSxLQUFLaEwsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1VBQ2xDdXFDLGFBQWF2eEMsT0FBT2dILE1BQ25CLHFCQUNBLG1CQUNEO1FBQ0QsR0FDQTtVQUNDZ0UsS0FBSztVQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQU0sZUFBZSxhQUFhO1FBQ3ZELEdBQ0E7VUFDQ2dFLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUNuQiw0QkFDQSwwQkFDRDtRQUNELEdBQ0E7VUFDQ2dFLEtBQUs7VUFDTHVtQyxhQUFhO1FBQ2QsR0FDQTtVQUNDdm1DLEtBQUs7VUFDTHVtQyxhQUFhO1FBQ2QsR0FDQTtVQUNDdm1DLEtBQUs7VUFDTHVtQyxhQUFhO1FBQ2QsR0FDQTtVQUNDdm1DLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUMxQ29pQixVQUFVLENBQ1Q7WUFDQ3hvQixNQUFNO1lBQ05tSCxNQUFNO1lBQ051RyxPQUFPO1lBQ1B0RSxTQUNDO1VBQ0YsQ0FBQTtRQUVGLEdBQ0E7VUFDQ2dCLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtRQUN6QyxDQUFBO01BRUYsR0FDQTtRQUNDK1QsS0FBSztRQUNMOU8sT0FBTyxDQUNOO1VBQ0NqQixLQUFLO1VBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCO1FBQy9ELEdBQ0E7VUFDQ2dFLEtBQUtoTCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDbEN1cUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztRQUN6RCxHQUNBO1VBQ0NnRSxLQUFLO1VBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7UUFDbkQsR0FDQTtVQUNDZ0UsS0FBSztVQUNMdW1DLGFBQWF2eEMsT0FBT2dILE1BQ25CLHNCQUNBLG9CQUNEO1FBQ0QsR0FDQTtVQUNDZ0UsS0FBS2hMLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtVQUNwQ3VxQyxhQUFhdnhDLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztRQUMvQyxHQUNBO1VBQ0NnRSxLQUFLaEwsT0FBT2dILE1BQU0sV0FBVyxTQUFTO1VBQ3RDdXFDLGFBQWF2eEMsT0FBT2dILE1BQU0sYUFBYSxXQUFXO1VBQ2xEb2lCLFVBQVUsQ0FDVDtZQUNDeG9CLE1BQU07WUFDTm1ILE1BQU07WUFDTnVHLE9BQU87WUFDUHRFLFNBQVM7VUFDVixHQUNBO1lBQ0NwSixNQUFNO1lBQ05tSCxNQUFNO1lBQ051RyxPQUFPO1lBQ1BtSixNQUFNO1VBQ1AsQ0FBQTtRQUVGLEdBQ0E7VUFDQ3pNLEtBQUtoTCxPQUFPZ0gsTUFBTSxXQUFXLE9BQU87VUFDcEN1cUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7UUFDakQsQ0FBQTtNQUVGLEdBQ0E7UUFDQytULEtBQUsvYSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07UUFDaENpRixPQUFPLENBQ047VUFDQ2pCLEtBQUtoTCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDbEN1cUMsYUFBYXZ4QyxPQUFPZ0gsTUFDbkIseUJBQ0EsdUJBQ0Q7UUFDRCxHQUNBO1VBQ0NnRSxLQUFLaEwsT0FBT2dILE1BQU0sV0FBVyxTQUFTO1VBQ3RDdXFDLGFBQWF2eEMsT0FBT2dILE1BQU0sVUFBVSxRQUFRO1FBQzdDLEdBQ0E7VUFDQ2dFLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLE1BQU0sTUFBTTtRQUN2QyxHQUNBO1VBQ0NnRSxLQUFLO1VBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztRQUN6RCxHQUNBO1VBQ0NnRSxLQUFLaEwsT0FBT2dILE1BQU0sWUFBWSxVQUFVO1VBQ3hDdXFDLGFBQWF2eEMsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1FBQzNDLEdBQ0E7VUFDQ2dFLEtBQUs7VUFDTHVtQyxhQUFhdnhDLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtRQUNqRCxHQUNBO1VBQ0NnRSxLQUFLO1VBQ0x1bUMsYUFBYXZ4QyxPQUFPZ0gsTUFBTSxvQkFBb0IsZ0JBQWdCO1FBQy9ELENBQUE7TUFFRixDQUFBO0FBR0QvRyxjQUFRK0ssSUFBSTZ0QixXQUFXLENBQ3RCO1FBQ0M5ZCxLQUFLL2EsT0FBT2dILE1BQU0sY0FBYyxZQUFZO1FBQzVDaUYsT0FBTyxDQUNOO1VBQ0NxQyxPQUFBLHVCQUFBakcsT0FBOEJySSxPQUFPZ0gsTUFDcEMsMkJBQ0EseUJBQ0QsQ0FBQztVQUNEaUYsT0FBTztRQUNSLENBQUE7TUFFRixHQUNBO1FBQ0M4TyxLQUFLL2EsT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ2hDaUYsT0FBTyxDQUNOO1VBQ0NxQyxPQUFBLGlCQUFBakcsT0FBd0JySSxPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsQ0FBQztVQUMzRGlGLE9BQU87UUFDUixHQUNBO1VBQ0NxQyxPQUFBLG9CQUFBakcsT0FBMkJySSxPQUFPZ0gsTUFDakMsb0JBQ0EsbUJBQ0QsQ0FBQztVQUNEaUYsT0FBTztVQUNQbWQsVUFBVSxDQUNUO1lBQ0NyaEIsTUFBTTtZQUNObkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ2dELFNBQVNoSyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztVQUNyRCxHQUNBO1lBQ0NlLE1BQU07WUFDTm5ILE1BQU07WUFDTjBOLE9BQU87WUFDUHRFLFNBQVNoSyxPQUFPZ0gsTUFBTSxnQkFBZ0IsZUFBZTtVQUN0RCxDQUFBO1FBRUYsR0FDQTtVQUNDc0gsT0FBQSxxQkFBQWpHLE9BQTRCckksT0FBT2dILE1BQ2xDLDJCQUNBLHlCQUNELENBQUM7VUFDRGlGLE9BQU87UUFDUixDQUFBO01BRUYsR0FDQTtRQUNDOE8sS0FBSy9hLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtRQUNwQ2lGLE9BQU8sQ0FDTjtVQUNDcUMsT0FBQSxnQkFBQWpHLE9BQXVCckksT0FBT2dILE1BQU0sZUFBZSxhQUFhLENBQUM7VUFDakVpRixPQUFPO1FBQ1IsR0FDQTtVQUNDcUMsT0FBQSxnQ0FBQWpHLE9BQXVDckksT0FBT2dILE1BQzdDLG1CQUNBLGlCQUNELENBQUM7VUFDRGlGLE9BQU87UUFDUixDQUFBO1FBRUQ0bEMsZUFBZTtNQUNoQixDQUFBO0FBRUQ1eEMsY0FBUStLLElBQUk0TSxZQUFZO1FBQ3ZCNEUsU0FBVU0sYUFBWTtBQUVyQixjQUFJZzRCLFdBQVdoNEIsUUFDYjlILFlBQVksRUFDWmhDLFFBQ0EsZ0hBQ0EsRUFDRDtBQUNELGdCQUFNdUosU0FBU08sUUFBUStDLHNCQUFzQjtBQUs3QyxnQkFBTWsxQixjQUFjQSxNQUFNO0FBQ3pCLGdCQUFJeDRCLE9BQU95NEIsYUFBYW4wQyxRQUFRO0FBRS9CaTBDLHlCQUFXQSxTQUFTOWhDLFFBQ25CLHNHQUNBLEVBQ0Q7QUFFQThoQyx5QkFBV0EsU0FBUzloQyxRQUNuQiwySUFDQSxJQUNEO1lBQ0Q7QUFFQSxrQkFBTWtnQixlQUFnQmxmLFdBQVU7QUFDL0Isa0JBQUlBLE1BQU1uVCxTQUFTLEdBQUc7QUFDckIsdUJBQU9tVCxNQUFNTCxLQUFLLEdBQUc7Y0FDdEI7QUFDQSxvQkFBTWxDLE9BQU91QyxNQUFNbWYsSUFBSTtBQUN2QixxQkFBQSxHQUFBOXFCLE9BQVUyTCxNQUFNTCxLQUFLLEdBQUcsR0FBQyxHQUFBLEVBQUF0TCxPQUFJb0osSUFBSTtZQUNsQztBQUNBLGtCQUFNd2pDLG1CQUFvQmpxQyxTQUFRO0FBQ2pDLGtCQUFJbEQsT0FBTztBQUVYLGtCQUFJa0QsSUFBSTVCLFNBQVMsR0FBRyxHQUFHO0FBQ3RCNEIsc0JBQU1BLElBQUk0SSxNQUFNLEdBQUc1SSxJQUFJeUksUUFBUSxHQUFHLENBQUM7Y0FDcEM7QUFDQTNMLHNCQUFRa0QsSUFBSTVCLFNBQVMsR0FBRyxJQUFJNEIsTUFBQSxZQUFBM0MsT0FBa0IyQyxLQUFHLEdBQUEsRUFBQTNDLE9BQUkyQyxHQUFHO0FBQ3hELHFCQUFBLEdBQUEzQyxPQUFVUCxNQUFJLE1BQUE7WUFDZjtBQUNBLGdCQUFJb3RDO0FBQ0osa0JBQU1DLFlBQVk1NEIsT0FBT2dVLEtBQUs1ZCxJQUFJc2lDLGdCQUFnQjtBQUNsRCxrQkFBTUcsY0FBYzc0QixPQUFPeTRCLGFBQWFyaUMsSUFBSXNpQyxnQkFBZ0I7QUFDNUQsZ0JBQUlFLFVBQVV0MEMsUUFBUTtBQUNyQnEwQyw0QkFBQSxLQUFBN3NDLE9BQW1CNnFCLGFBQWFpaUIsU0FBUyxDQUFDO0FBQzFDRCw2QkFBZUUsWUFBWXYwQyxTQUFBLE1BQUF3SCxPQUFlNnFCLGFBQWFraUIsV0FBVyxDQUFDLElBQUs7WUFDekUsT0FBTztBQUNORiw0QkFBQSxLQUFBN3NDLE9BQW1CNnFCLGFBQWFraUIsV0FBVyxDQUFDO1lBQzdDO0FBQ0FGLDJCQUFlbDFDLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUN0QyxnQkFBSXVWLE9BQU96SyxRQUFRO0FBQ2xCb2pDLDZCQUFBLElBQUE3c0MsT0FBbUJrVSxPQUFPekssTUFBTTtZQUNqQztBQUVBLGdCQUFJb2pDLFlBQVlyMEMsU0FBUyxLQUFLO0FBQzdCcTBDLDRCQUFjQSxZQUFZbGlDLFFBQVEsNEJBQTRCLElBQUk7WUFDbkU7QUFDQThKLG9CQUFRK1UsWUFBWWlqQixRQUFRO0FBQzVCaDRCLG9CQUFRdEgsZUFBZTAvQixXQUFXO0FBQ2xDcDRCLG9CQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxvQkFBUS9HLGFBQWE5VixRQUFRdUgsUUFBUSxrQkFBa0IsQ0FBQztBQUN4RHNWLG9CQUFRaVosYUFBYTkxQixRQUFRdUgsUUFBUSx3QkFBd0IsQ0FBQztBQUM5RHNWLG9CQUFRZ1osZ0JBQWdCLFVBQVU7QUFDbENoWixvQkFBUWdWLEtBQUssTUFBTTtBQUVsQixrQkFBSXZWLE9BQU84NEIsYUFBYTtBQUV2QixzQkFBTXhmLFdBQVcsSUFBSTMxQixTQUFTcUwsS0FBS2tILEtBQUEsUUFBQXBLLE9BQzFCa1UsT0FBTys0QixjQUFjLEdBQzdCdDFDLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxDQUNwQztBQUNBNnVCLHlCQUFTelUsa0JBQWtCLEdBQUEvWSxPQUFHa1UsT0FBTzg0QixZQUFZcGlDLEtBQUssR0FBQyxLQUFBLEVBQU01SyxPQUFPLElBQUksQ0FBQztBQUN6RXd0Qix5QkFBUzVVLG1CQUFBLFFBQUE1WSxPQUEyQmtVLE9BQU9nNUIsbUJBQWlCLE1BQUEsQ0FBTTtBQUNsRTFmLHlCQUFTcGdCLGNBQWN4VixRQUFRSyxVQUFVO0FBQ3pDdTFCLHlCQUFTOWYsYUFBYTlWLFFBQVF1SCxRQUFRLHVCQUF1QixDQUFDO0FBQzlEcXVCLHlCQUFTQyxnQkFBZ0IsVUFBVTtBQUNuQ0QseUJBQVN4VSxXQUFXO2NBQ3JCO0FBQ0Esa0JBQUk5RSxPQUFPaTVCLGVBQWU7QUFFekIsb0JBQUl0QyxlQUFlO0FBQ25CLG9CQUFJMzJCLE9BQU9rNUIsYUFBYSxjQUFjO0FBQ3JDdkMsaUNBQWU7Z0JBQ2hCLFdBQVczMkIsT0FBT2s1QixhQUFhLFlBQVk7QUFDMUN2QyxpQ0FBZTtnQkFDaEI7QUFDQSxzQkFBTXdDLFlBQVk7a0JBQ2pCbmxCLE1BQU0sQ0FBQzJpQixZQUFZO2tCQUNuQjhCLGNBQWMsQ0FBQTtrQkFDZFcsY0FBYyxDQUFBO2tCQUNkQyxhQUFhMTFDLFNBQVNzVztrQkFDdEI4K0IsZ0JBQWdCLzRCLE9BQU8rNEI7a0JBQ3ZCTyxxQkFBcUJ0NUIsT0FBT3M1QjtrQkFDNUJDLDJCQUEyQnY1QixPQUFPdTVCO2dCQUNuQztBQUNBLHNCQUFNeFQsWUFBWSxJQUFJcGlDLFNBQVNxTCxLQUFLa0gsS0FDbkM4SixPQUFPcTVCLGFBQUEsR0FBQXZ0QyxPQUNKckksT0FBT2dILE1BQU0sV0FBVyxTQUFTLElBQUl1VixPQUFPcTVCLGFBQVcsR0FBQSxDQUMzRDtBQUNBdFQsMEJBQVUzZ0Isc0JBQXNCK3pCLFNBQVM7QUFDekNwVCwwQkFBVXAzQixLQUFLakwsUUFBUStLLElBQUk0TSxVQUFVNEUsT0FBTztjQUM3QztBQUVBLGtCQUFJRCxPQUFPdzVCLFlBQVk7QUFFdEIsb0JBQUlDLG1CQUFtQixTQUFTM3RDLE9BQU8sVUFBQSxRQUFBQSxPQUFrQmtVLE9BQU93NUIsV0FBVzlpQyxLQUFLLENBQUMsQ0FBRTtBQUNuRixvQkFBSXNKLE9BQU8wNUIsWUFBWTtBQUN0QkQsc0NBQUEsTUFBQTN0QyxPQUEwQmtVLE9BQU8wNUIsVUFBVTtnQkFDNUM7QUFDQUQsb0NBQW9CO0FBQ3BCLHNCQUFNRSxlQUFlLElBQUloMkMsU0FBU3FMLEtBQUtrSCxLQUFBLFFBQUFwSyxPQUM5QmtVLE9BQU8rNEIsY0FBYyxHQUM3QnQxQyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsQ0FDcEM7QUFDQWt2Qyw2QkFBYXhnQyxjQUFjc2dDLGdCQUFnQjtBQUMzQ0UsNkJBQWExZ0MsZUFDWnhWLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxLQUN6QnVWLE9BQU8wNUIsYUFBQSxNQUFBNXRDLE9BQW1Ca1UsT0FBTzA1QixZQUFVLElBQUEsSUFBTyxHQUNyRDtBQUNBQyw2QkFBYXpnQyxjQUFjeFYsUUFBUUssVUFBVTtBQUM3QzQxQyw2QkFBYXBnQixnQkFBZ0IsVUFBVTtBQUN2Q29nQiw2QkFBYTduQyxPQUFPO2NBQ3JCO1lBQ0QsQ0FBQztBQUNELGdCQUFJa08sT0FBTytqQixRQUFRO0FBQ2xCeGpCLHNCQUFRd2pCLE9BQU87WUFDaEI7VUFDRDtBQUtBLGdCQUFNNlYsYUFBYUEsTUFBTTtBQUN4QixnQkFBSTU1QixPQUFPeTRCLGFBQWFuMEMsV0FBVyxHQUFHO0FBQ3JDazBDLDBCQUFZO0FBQ1o7WUFDRDtBQUNBNzBDLHFCQUFTdVUsT0FBT3lNLEtBQ2ZsaEIsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCaEgsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWMsQ0FDNUM7QUFDQSxrQkFBTW92QyxrQkFBa0IsQ0FBQTtBQUFDLGdCQUFBQyxjQUFBMXFDLDJCQUlQNFEsT0FBT3k0QixZQUFBLEdBQUFzQjtBQUFBLGdCQUFBO0FBQXpCLG1CQUFBRCxZQUFBeHFDLEVBQUEsR0FBQSxFQUFBeXFDLFVBQUFELFlBQUF2cUMsRUFBQSxHQUFBQyxRQUF1QztBQUFBLHNCQUE1QmYsTUFBQXNyQyxRQUFBcnFDO0FBQ1Ysc0JBQU1zcUMsU0FBUyxJQUFJcmhDLE9BQUEsU0FBQTdNLE9BQWdCbkksU0FBUzB5QixjQUFjNW5CLEdBQUcsR0FBQywyQkFBQSxDQUEyQjtBQUN6RixvQkFBSXVyQyxPQUFPbnVDLEtBQUswc0MsUUFBUSxHQUFHO0FBQzFCQSw2QkFBV0EsU0FBUzloQyxRQUFRdWpDLFFBQVEsRUFBRTtnQkFDdkMsT0FBTztBQUNOSCxrQ0FBZ0JBLGdCQUFnQnYxQyxNQUFNLElBQUEsWUFBQXdILE9BQWdCMkMsR0FBRztnQkFDMUQ7Y0FDRDtZQUFBLFNBQUFrQixLQUFBO0FBQUFtcUMsMEJBQUExc0MsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUFtcUMsMEJBQUFscUMsRUFBQTtZQUFBO0FBQ0EsZ0JBQUksQ0FBQ2lxQyxnQkFBZ0J2MUMsUUFBUTtBQUM1QmswQywwQkFBWTtBQUNaO1lBQ0Q7QUFFQSxrQkFBTW5YLE9BQU0sSUFBSTE5QixTQUFTcUwsS0FBS0MsSUFDN0J4TCxPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsR0FDbEM7Y0FDQ3lELFFBQVE7Y0FDUnNOLE1BQU07Y0FDTkQsUUFBUXMrQixnQkFBZ0J6aUMsS0FBSyxHQUFHO2NBQ2hDK2pCLFdBQVc7Y0FDWDhlLGFBQWE7Y0FDYkMsUUFBUTtjQUNSQyxTQUFTOztZQUNWLEdBQ0NybkMsWUFBVztBQUNYelAsZ0JBQUV5UCxPQUFPc25DLFdBQVcsRUFDbEJwdkMsS0FBSyxNQUFNLEVBQ1htbUIsS0FBSyxDQUFDa3BCLE1BQU1ua0MsU0FBUztBQUNyQixvQkFBSW9rQyxVQUFVO0FBQ2RqM0Msa0JBQUU2UyxJQUFJLEVBQ0psTCxLQUFLLElBQUksRUFDVG1tQixLQUFLLENBQUMwaUIsUUFBUWwvQixZQUFZO0FBQzFCLHdCQUFNbEcsTUFBTXBMLEVBQUVzUixPQUFPLEVBQUUyRixLQUFLLE9BQU8sRUFBRWpELE1BQU0sQ0FBQztBQUM1Qyx3QkFBTTJpQyxTQUFTLElBQUlyaEMsT0FBQSxTQUFBN00sT0FDVG5JLFNBQVMweUIsY0FDakI1bkIsR0FDRCxHQUFDLG1EQUFBLENBQ0Y7QUFDQSxzQkFBSXVyQyxPQUFPbnVDLEtBQUswc0MsUUFBUSxHQUFHO0FBQzFCQSwrQkFBV0EsU0FBUzloQyxRQUFRdWpDLFFBQVEsRUFBRTtBQUN0Q00sOEJBQVU7QUFDViwyQkFBTztrQkFDUjtnQkFDRCxDQUFDO0FBRUYsb0JBQUksQ0FBQ0EsU0FBUztBQUNiMzJDLDJCQUFTdVUsT0FBT3BVLEtBQ2ZMLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QmhILE9BQU9nSCxNQUFNLGNBQWMsWUFBWSxJQUN0Q3BILEVBQUU2UyxJQUFJLEVBQUVvRSxLQUFLLE9BQU8sRUFBRWpELE1BQU0sQ0FBQyxJQUM3QjVULE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUNqQztnQkFDRDtjQUNELENBQUM7QUFDRit0QywwQkFBWTtZQUNiLENBQ0Q7QUFDQW5YLGlCQUFJOXRCLEtBQUs7VUFDVjtBQUNBLGNBQUksQ0FBQ3lNLE9BQU9nVSxLQUFLMXZCLFFBQVE7QUFDeEJzMUMsdUJBQVc7QUFDWDtVQUNEO0FBQ0EsY0FBSVc7QUFDSixjQUFJQyxVQUFVO0FBQ2QsY0FBSXhtQixPQUFPLENBQUE7QUFDWCxnQkFBTXltQixnQkFBZ0IsQ0FBQTtBQUN0QixnQkFBTUMsd0JBQXdCLENBQUE7QUFPOUIsZ0JBQU1DLFNBQVUzRSxhQUFZO0FBQzNCLGdCQUFJNEUsYUFBYTtBQUNqQixnQkFBSTVFLFlBQVksbUJBQW1CQSxZQUFZLHNCQUFzQjtBQUNwRXVDLDBCQUFZLFNBQUF6c0MsT0FBU2txQyxTQUFPLFVBQUEsRUFBV2xxQyxPQUFPLFVBQVUsYUFBYTtZQUN0RSxPQUFPO0FBQ044dUMsNEJBQUEsS0FBQTl1QyxPQUFtQmtxQyxPQUFPO0FBRTFCLHNCQUFRQSxTQUFBO2dCQUNQLEtBQUs7QUFDSjRFLGdDQUFBLFlBQUE5dUMsT0FBMEJrVSxPQUFPNjZCLE1BQU07QUFDdkMsc0JBQUk3NkIsT0FBTzg2QixTQUFTO0FBQ25CRixrQ0FBQSxhQUFBOXVDLE9BQTJCa1UsT0FBTzg2QixPQUFPO2tCQUMxQztBQUNBLHNCQUFJOTZCLE9BQU8rNkIsU0FBUztBQUNuQkgsa0NBQUEsYUFBQTl1QyxPQUEyQmtVLE9BQU8rNkIsT0FBTztrQkFDMUM7QUFDQTtnQkFDRCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSztBQUNKLHNCQUFJLzZCLE9BQU9xNUIsYUFBYTtBQUV2QnI1QiwyQkFBT3E1QixjQUFjMTFDLFNBQVNnVCxPQUFPWSxxQkFDcEN5SSxPQUFPcTVCLFlBQVk1aUMsUUFBUSxNQUFNLEdBQUcsQ0FDckM7QUFDQW1rQyxrQ0FBQSxJQUFBOXVDLE9BQWtCa1UsT0FBT3E1QixXQUFXO0FBRXBDLHdCQUNDcHdDLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sTUFDdEM2VyxPQUFPODRCLGVBQWU5NEIsT0FBTys0QixpQkFDN0I7QUFDRCwwQkFBSSxDQUFDLzRCLE9BQU8rNEIsZ0JBQWdCO0FBRTNCLzRCLCtCQUFPKzRCLGlCQUNOL0MsWUFBWSxhQUFhaDJCLE9BQU9xNUIsY0FBY3B3QyxHQUFHQyxPQUFPQyxJQUFJLFNBQVM7QUFFdEU2VywrQkFBT2c1QixvQkFDTmhELFlBQVksYUFBYS9zQyxHQUFHQyxPQUFPQyxJQUFJLFNBQVMsSUFBSTZXLE9BQU9xNUI7QUFDNURyNUIsK0JBQU9zNUIsc0JBQ043MUMsT0FBT2dILE1BQU0sT0FBTyxLQUFLLElBQ3pCdVYsT0FBT2c1QixvQkFDUHYxQyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7c0JBQ3pCO0FBQ0Ftd0Msb0NBQUEsaUJBQUE5dUMsT0FBK0JrVSxPQUFPKzRCLGdCQUFjLEdBQUEsRUFBQWp0QyxPQUFJa1UsT0FBT3M1QixtQkFBbUI7b0JBQ25GO2tCQUNEO0FBQ0E7Z0JBQ0QsS0FBSztBQUNKc0IsZ0NBQUEsTUFBQTl1QyxPQUFvQmtVLE9BQU9nN0Isa0JBQWtCO0FBQzdDO2dCQUNELEtBQUs7QUFDSixzQkFBSWg3QixPQUFPaTdCLGVBQWUsUUFBUTtBQUNqQ0wsa0NBQUEsTUFBQTl1QyxPQUFvQmtVLE9BQU9pN0IsVUFBVTtrQkFDdEM7QUFDQTtnQkFDRCxLQUFLO0FBQ0osc0JBQUlqN0IsT0FBTzA1QixZQUFZO0FBRXRCMTVCLDJCQUFPMDVCLGFBQWEvMUMsU0FBU2dULE9BQU9ZLHFCQUNuQ3lJLE9BQU8wNUIsV0FBV2pqQyxRQUFRLE1BQU0sR0FBRyxDQUNwQztBQUNBdUosMkJBQU8rNEIsaUJBQWlCOXZDLEdBQUdDLE9BQU9DLElBQUksU0FBUztBQUMvQ3l4QyxrQ0FBQSxJQUFBOXVDLE9BQWtCa1UsT0FBTzA1QixVQUFVO2tCQUNwQztBQUNBO2dCQUNELEtBQUs7QUFDSixzQkFBSTE1QixPQUFPazdCLFNBQVM7QUFDbkJOLGtDQUFBLE1BQUE5dUMsT0FBb0JrVSxPQUFPazdCLE9BQU87a0JBQ25DO0FBQ0Esc0JBQUlsN0IsT0FBT203QixTQUFTO0FBQ25CUCxrQ0FBQSxNQUFBOXVDLE9BQW9Ca1UsT0FBT203QixPQUFPO2tCQUNuQztBQUNBLHNCQUFJbjdCLE9BQU9vN0IsU0FBUztBQUNuQlIsa0NBQUEsTUFBQTl1QyxPQUFvQmtVLE9BQU9vN0IsT0FBTztrQkFDbkM7QUFDQTtnQkFDRCxLQUFLO0FBQ0osc0JBQUlwN0IsT0FBT3E3QixlQUFlO0FBQ3pCVCxrQ0FBQSxXQUFBOXVDLE9BQXlCa1UsT0FBT3E3QixhQUFhO2tCQUM5QztBQUNBO2dCQUNEO0FBQ0M7Y0FDRjtBQUNBVCw0QkFBYyxXQUFXOXVDLE9BQU8sVUFBVSxlQUFlO0FBQ3pEMHVDLHlCQUFXSTtZQUNaO1VBQ0Q7QUFNQSxnQkFBTVUsbUJBQW1CQSxNQUFNO0FBQzlCLHFCQUFBQyxNQUFBLEdBQUFDLFFBQWtCeG5CLE1BQUF1bkIsTUFBQUMsTUFBQWwzQyxRQUFBaTNDLE9BQU07QUFBeEIsb0JBQVc5c0MsTUFBQStzQyxNQUFBRCxHQUFBO0FBQ1ZaLHFCQUFPbHNDLEdBQUc7WUFDWDtBQUdBLGtCQUFNMFcsY0FBYyxJQUFJeGhCLFNBQVNrYyxTQUFTM0osS0FBS3FpQyxRQUFRO0FBQ3ZELGtCQUFNa0Q7Ozs7Y0FBQSxHQUFBM3ZDLE9BSUZwSSxRQUFRTyxjQUFZLDBLQUFBOztBQUN4QnMwQyx1QkFBV3B6QixZQUFZbWYscUJBQXFCa1csU0FBU2lCLGNBQWMsRUFBRWxYLFFBQVE7QUFDN0VxVix1QkFBVztVQUNaO0FBQUEsY0FBQThCLGNBQUF0c0MsMkJBRWtCNFEsT0FBT2dVLElBQUEsR0FBQTJuQjtBQUFBLGNBQUE7QUFBekIsaUJBQUFELFlBQUFwc0MsRUFBQSxHQUFBLEVBQUFxc0MsVUFBQUQsWUFBQW5zQyxFQUFBLEdBQUFDLFFBQStCO0FBQUEsb0JBQXBCZixNQUFBa3RDLFFBQUFqc0M7QUFDVjZxQyxzQkFBUSxJQUFJNWhDLE9BQUEsU0FBQTdNLE9BQWdCMkMsS0FBRyxjQUFBLEdBQWdCLElBQUk7QUFFbkQsa0JBQUkvSyxRQUFRK0ssSUFBSTZrQyxhQUFhLENBQUNpSCxNQUFNOTNCLEtBQUs4MUIsUUFBUSxHQUFHO0FBQ25ELG9CQUNDOXBDLFFBQVEsaUJBQ1B4RixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLEtBQ3ZDZ08sUUFDQzFULE9BQU9nSCxNQUNOLHlCQUNBLHVCQUNELENBQ0QsSUFDQTtBQUNELHdCQUFNMGEsY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FDckMsMEJBQ0F6UyxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsQ0FDcEM7QUFDQTBhLDhCQUFZM00sa0JBQWtCLElBQUk7QUFDbEMyTSw4QkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4Q21GLDhCQUFZeFcsS0FBS2pMLFFBQVErSyxJQUFJNE0sVUFBVXVnQyxjQUFjO2dCQUN0RDtBQUdBLG9CQUFJbDRDLFFBQVErSyxJQUFJd1IsUUFBUXUwQixXQUFXL2xDLEdBQUcsS0FBSyxDQUFDL0ssUUFBUStLLElBQUl3UixRQUFRdTBCLFdBQVcvbEMsR0FBRyxFQUFFd21DLFdBQVc7QUFDMUZ3RixnQ0FBY0EsY0FBY24yQyxNQUFNLElBQUltSztnQkFDdkMsT0FBTztBQUNOdWxCLHVCQUFLQSxLQUFLMXZCLE1BQU0sSUFBSW1LO2dCQUNyQjtjQUNELFdBQVdBLFFBQVEsY0FBYztBQUNoQ3VsQixxQkFBS0EsS0FBSzF2QixNQUFNLElBQUltSztjQUNyQixPQUFPO0FBQ045Syx5QkFBU3VVLE9BQU9wVSxLQUNmTCxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FDdkJoSCxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsSUFBSWdFLE1BQU1oTCxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FDN0U7QUFFQSxvQkFBSSxDQUFDLFNBQVMsVUFBVSxFQUFFb0MsU0FBUzRCLEdBQUcsR0FBRztBQUN4Q3VSLHlCQUFPcTVCLGNBQWM7QUFDckJyNUIseUJBQU84NEIsY0FBYztBQUNyQjk0Qix5QkFBT2k1QixnQkFBZ0I7Z0JBQ3hCO2NBQ0Q7WUFDRDtVQUFBLFNBQUF0cEMsS0FBQTtBQUFBK3JDLHdCQUFBdHVDLEVBQUF1QyxHQUFBO1VBQUEsVUFBQTtBQUFBK3JDLHdCQUFBOXJDLEVBQUE7VUFBQTtBQUFBLGNBQUFpc0MsY0FBQXpzQywyQkFFa0I0USxPQUFPbzVCLFlBQUEsR0FBQTBDO0FBQUEsY0FBQTtBQUF6QixpQkFBQUQsWUFBQXZzQyxFQUFBLEdBQUEsRUFBQXdzQyxVQUFBRCxZQUFBdHNDLEVBQUEsR0FBQUMsUUFBdUM7QUFBQSxvQkFBNUJmLE1BQUFxdEMsUUFBQXBzQztBQUVWLGtCQUFJaE0sUUFBUStLLElBQUl3UixRQUFRdTBCLFdBQVcvbEMsR0FBRyxLQUFLLENBQUMvSyxRQUFRK0ssSUFBSXdSLFFBQVF1MEIsV0FBVy9sQyxHQUFHLEVBQUV3bUMsV0FBVztBQUMxRnlGLHNDQUFzQkEsc0JBQXNCcDJDLE1BQU0sSUFBSW1LO2NBQ3ZEO1lBQ0Q7VUFBQSxTQUFBa0IsS0FBQTtBQUFBa3NDLHdCQUFBenVDLEVBQUF1QyxHQUFBO1VBQUEsVUFBQTtBQUFBa3NDLHdCQUFBanNDLEVBQUE7VUFBQTtBQUNBLGdCQUFNbXNDLFNBQ0wsa0dBQWtHdDVCLEtBQ2pHODFCLFFBQ0Q7QUFDRCxjQUFJd0QsVUFBVXRCLGNBQWNuMkMsU0FBUyxHQUFHO0FBQ3ZDWCxxQkFBU3VVLE9BQU95TSxLQUNmbGhCLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QmhILE9BQU9nSCxNQUNOLG1DQUNBLGlDQUNELENBQ0Q7QUFDQSt2QyxzQkFBVTtBQUFBLGdCQUFBd0IsY0FBQTVzQywyQkFDUXFyQyxhQUFBLEdBQUF3QjtBQUFBLGdCQUFBO0FBQWxCLG1CQUFBRCxZQUFBMXNDLEVBQUEsR0FBQSxFQUFBMnNDLFVBQUFELFlBQUF6c0MsRUFBQSxHQUFBQyxRQUFpQztBQUFBLHNCQUF0QmYsTUFBQXd0QyxRQUFBdnNDO0FBQ1ZpckMsdUJBQU9sc0MsR0FBRztjQUNYO1lBQUEsU0FBQWtCLEtBQUE7QUFBQXFzQywwQkFBQTV1QyxFQUFBdUMsR0FBQTtZQUFBLFVBQUE7QUFBQXFzQywwQkFBQXBzQyxFQUFBO1lBQUE7QUFDQSxrQkFBTXNzQyxVQUFVLElBQUl2akMsT0FBQSxjQUFBN00sT0FDTGl3QyxPQUFPLENBQUMsR0FBQyxzREFBQSxHQUN2QixJQUNEO0FBQ0F4RCx1QkFBV0EsU0FBUzloQyxRQUFReWxDLFNBQUEsS0FBQXB3QyxPQUFjMHVDLFNBQU8sTUFBQSxDQUFNO0FBQ3ZEQSxzQkFBVTtBQUNWYyw2QkFBaUI7VUFDbEIsV0FBV3Q3QixPQUFPa0ksU0FBUyxDQUFDNnpCLFVBQVVyQixzQkFBc0JwMkMsU0FBU20yQyxjQUFjbjJDLFVBQVUsR0FBRztBQUMvRlgscUJBQVN1VSxPQUFPeU0sS0FDZmxoQixPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FDdkJoSCxPQUFPZ0gsTUFBTSwrQkFBK0IsNkJBQTZCLENBQzFFO0FBQ0ErdkMsdUJBQVc7QUFJWCxrQkFBTTJCLGlCQUFpQkEsTUFBTTtBQUFBLGtCQUFBQyxjQUFBaHRDLDJCQUNWcXJDLGFBQUEsR0FBQTRCO0FBQUEsa0JBQUE7QUFBbEIscUJBQUFELFlBQUE5c0MsRUFBQSxHQUFBLEVBQUErc0MsVUFBQUQsWUFBQTdzQyxFQUFBLEdBQUFDLFFBQWlDO0FBQUEsd0JBQXRCZixNQUFBNHRDLFFBQUEzc0M7QUFDVmlyQyx5QkFBT2xzQyxHQUFHO2dCQUNYO2NBQUEsU0FBQWtCLEtBQUE7QUFBQXlzQyw0QkFBQWh2QyxFQUFBdUMsR0FBQTtjQUFBLFVBQUE7QUFBQXlzQyw0QkFBQXhzQyxFQUFBO2NBQUE7QUFDQTRxQyx5QkFBVztBQUNYYywrQkFBaUI7WUFDbEI7QUFDQSxrQkFBTXpCLGtCQUFrQixDQUFBO0FBQUMsZ0JBQUF5QyxjQUFBbHRDLDJCQUdQc3JDLHFCQUFBLEdBQUE2QjtBQUFBLGdCQUFBO0FBQWxCLG1CQUFBRCxZQUFBaHRDLEVBQUEsR0FBQSxFQUFBaXRDLFVBQUFELFlBQUEvc0MsRUFBQSxHQUFBQyxRQUF5QztBQUFBLHNCQUE5QmYsTUFBQTh0QyxRQUFBN3NDO0FBQ1Ysc0JBQU1zcUMsU0FBUyxJQUFJcmhDLE9BQUEsVUFBQTdNLE9BQWlCbkksU0FBUzB5QixjQUFjNW5CLEdBQUcsR0FBQyw0QkFBQSxDQUE0QjtBQUMzRixvQkFBSXVyQyxPQUFPbnVDLEtBQUswc0MsUUFBUSxHQUFHO0FBQzFCaUMsNkJBQVdSLE9BQU92M0IsS0FBSzgxQixRQUFRLEVBQUUsQ0FBQztBQUNsQ0EsNkJBQVdBLFNBQVM5aEMsUUFBUXVqQyxRQUFRLEVBQUU7Z0JBQ3ZDLE9BQU87QUFDTkgsa0NBQWdCQSxnQkFBZ0J2MUMsTUFBTSxJQUFBLFlBQUF3SCxPQUFnQjJDLEdBQUc7Z0JBQzFEO2NBQ0Q7WUFBQSxTQUFBa0IsS0FBQTtBQUFBMnNDLDBCQUFBbHZDLEVBQUF1QyxHQUFBO1lBQUEsVUFBQTtBQUFBMnNDLDBCQUFBMXNDLEVBQUE7WUFBQTtBQUNBLGdCQUFJLENBQUNpcUMsZ0JBQWdCdjFDLFFBQVE7QUFDNUI2M0MsNkJBQWU7QUFDZjtZQUNEO0FBQ0Esa0JBQU05YSxPQUFNLElBQUkxOUIsU0FBU3FMLEtBQUtDLElBQzdCeEwsT0FBT2dILE1BQU0sV0FBVyxVQUFVLEdBQ2xDO2NBQ0N5RCxRQUFRO2NBQ1JzTixNQUFNO2NBQ05ELFFBQVFzK0IsZ0JBQWdCemlDLEtBQUssR0FBRztjQUNoQytqQixXQUFXO2NBQ1g4ZSxhQUFhO2NBQ2JDLFFBQVE7Y0FDUkMsU0FBUzs7WUFDVixHQUNDcm5DLFlBQVc7QUFDWHpQLGdCQUFFeVAsT0FBT3NuQyxXQUFXLEVBQ2xCcHZDLEtBQUssTUFBTSxFQUNYbW1CLEtBQUssQ0FBQ2twQixNQUFNbmtDLFNBQVM7QUFDckIsb0JBQUlpZ0IsUUFBUTtBQUNaOXlCLGtCQUFFNlMsSUFBSSxFQUNKbEwsS0FBSyxJQUFJLEVBQ1RtbUIsS0FBSyxDQUFDMGlCLFFBQVFsL0IsWUFBWTtBQUMxQix3QkFBTWxHLE1BQU1wTCxFQUFFc1IsT0FBTyxFQUFFMkYsS0FBSyxPQUFPLEVBQUVqRCxNQUFNLENBQUM7QUFDNUMsd0JBQU0yaUMsU0FBUyxJQUFJcmhDLE9BQUEsVUFBQTdNLE9BQ1JuSSxTQUFTMHlCLGNBQWM1bkIsR0FBRyxHQUFDLDRCQUFBLENBQ3RDO0FBQ0Esc0JBQUl1ckMsT0FBT251QyxLQUFLMHNDLFFBQVEsR0FBRztBQUMxQmlDLCtCQUFXUixPQUFPdjNCLEtBQUs4MUIsUUFBUSxFQUFFLENBQUM7QUFDbENBLCtCQUFXQSxTQUFTOWhDLFFBQVF1akMsUUFBUSxFQUFFO0FBQ3RDN2pCLDRCQUFRO0FBQ1IsMkJBQU87a0JBQ1I7Z0JBQ0QsQ0FBQztBQUVGLG9CQUFJLENBQUNBLE9BQU87QUFDWHh5QiwyQkFBU3VVLE9BQU9wVSxLQUNmTCxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FDdkJoSCxPQUFPZ0gsTUFBTSxjQUFjLFlBQVksSUFDdENwSCxFQUFFNlMsSUFBSSxFQUFFb0UsS0FBSyxPQUFPLEVBQUVqRCxNQUFNLENBQUMsSUFDN0I1VCxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FDakM7Z0JBQ0Q7Y0FDRCxDQUFDO0FBQ0YweEMsNkJBQWU7WUFDaEIsQ0FDRDtBQUNBOWEsaUJBQUk5dEIsS0FBSztVQUNWLE9BQU87QUFDTnlnQixtQkFBTyxDQUFDLEdBQUdBLE1BQU0sR0FBR3ltQixhQUFhO0FBQ2pDYSw2QkFBaUI7VUFDbEI7UUFDRDtRQUNBTSxnQkFBaUJyN0IsYUFBWTtBQUM1QkEsa0JBQVFwSCxjQUFjLE9BQU9yTixPQUFPLFVBQUEsa0JBQUFBLE9BQTRCbkksU0FBU3NXLGNBQVksSUFBQSxDQUFJLENBQUM7QUFDMUZzRyxrQkFBUXRILGVBQUEsT0FBQW5OLE9BQXNCbkksU0FBU3NXLGNBQVksSUFBQSxDQUFJO0FBQ3ZEc0csa0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLGtCQUFRZ1osZ0JBQWdCLFVBQVU7QUFDbENoWixrQkFBUXpPLE9BQU87UUFDaEI7UUFDQXVHLFVBQVdrSSxhQUFZO0FBQ3RCLGdCQUFNUCxTQUFTTyxRQUFRK0Msc0JBQXNCO0FBQzdDLGNBQUlpMUIsV0FBV2g0QixRQUFROUgsWUFBWTtBQUNuQyxjQUFJOGhDO0FBQ0osY0FBSUMsVUFBVTtBQUNkLGNBQUk3QixjQUFjO0FBQ2xCLGdCQUFNM2tCLE9BQU8sQ0FBQTtBQUNiLGNBQUl1TTtBQUNKLGVBQUtBLElBQUksR0FBR0EsSUFBSXZnQixPQUFPZ1UsS0FBSzF2QixRQUFRaThCLEtBQUs7QUFDeENnYSxvQkFBUSxJQUFJNWhDLE9BQUEsVUFBQTdNLE9BQWlCa1UsT0FBT2dVLEtBQUt1TSxDQUFDLEdBQUMsZUFBQSxHQUFpQixJQUFJO0FBQ2hFLGdCQUFJZ2EsTUFBTTkzQixLQUFLODFCLFFBQVEsR0FBRztBQUN6QjUwQyx1QkFBU3VVLE9BQU9wVSxLQUNmTCxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FDdkJoSCxPQUFPZ0gsTUFBTSxhQUFhLFlBQVksSUFDckN1VixPQUFPZ1UsS0FBS3VNLENBQUMsSUFDYjk4QixPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FDakM7WUFDRCxPQUFPO0FBQ051cEIsbUJBQUtBLEtBQUsxdkIsTUFBTSxJQUFJMGIsT0FBT2dVLEtBQUt1TSxDQUFDO1lBQ2xDO1VBQ0Q7QUFFQSxnQkFBTW9hLFNBQVNBLENBQUMzRSxTQUFTd0csYUFBYTtBQUNyQ2hDLHVCQUFBLE9BQUExdUMsT0FBa0JrcUMsT0FBTztBQUN6QixnQkFBSUEsWUFBWSxVQUFVO0FBQ3pCLGtCQUFJaDJCLE9BQU95OEIsYUFBYTtBQUN2QmpDLDJCQUFBLE1BQUExdUMsT0FBaUJrVSxPQUFPeThCLFdBQVc7Y0FDcEM7WUFDRCxZQUNFekcsWUFBWSxhQUFhQSxZQUFZLGNBQ3RDaDJCLE9BQU8wOEIsa0JBQ1AxOEIsT0FBTzI4QixpQkFDTjtBQUNEbkMseUJBQUEsTUFBQTF1QyxPQUFpQmtVLE9BQU8wOEIsY0FBYztBQUN0Q2xDLHlCQUFBLE1BQUExdUMsT0FBaUJrVSxPQUFPMjhCLGVBQWU7WUFDeEM7QUFDQW5DLHVCQUFXO0FBQ1gsZ0JBQUlnQyxXQUFXLEdBQUc7QUFDakIsa0JBQUlBLGFBQWF4b0IsS0FBSzF2QixTQUFTLEdBQUc7QUFDakNxMEMsK0JBQWU7Y0FDaEIsV0FBVzZELFdBQVd4b0IsS0FBSzF2QixTQUFTLEdBQUc7QUFDdENxMEMsK0JBQWU7Y0FDaEI7WUFDRDtBQUNBQSwyQkFBQSxRQUFBN3NDLE9BQXVCa3FDLFFBQVFucEMsU0FBUyxHQUFHLElBQUltcEMsVUFBQSxZQUFBbHFDLE9BQXNCa3FDLFNBQU8sR0FBQSxFQUFBbHFDLE9BQUlrcUMsT0FBTyxHQUFFLE1BQUE7VUFDMUY7QUFDQSxjQUFJLENBQUNoaUIsS0FBSzF2QixRQUFRO0FBQ2pCWCxxQkFBU3VVLE9BQU9wVSxLQUNmTCxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FDdkJoSCxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsQ0FDcEM7VUFDRDtBQUNBdXBCLGVBQUsvVSxLQUFLO0FBQ1YsbUJBQUEyOUIsT0FBQSxHQUFBQyxTQUFrQjdvQixNQUFBNG9CLE9BQUFDLE9BQUF2NEMsUUFBQXM0QyxRQUFNO0FBQXhCLGtCQUFXbnVDLE1BQUFvdUMsT0FBQUQsSUFBQTtBQUNWakMsbUJBQU9sc0MsR0FBRztVQUNYO0FBRUEsY0FBSThwQyxTQUFTcDBCLE1BQU0saUVBQWlFLEdBQUc7QUFFdEYsa0JBQU0yNEIsVUFBVXZFLFNBQVNwMEIsTUFBTSwrREFBK0Q7QUFDOUZvMEIsdUJBQVdBLFNBQVM5aEMsUUFBUXFtQyxRQUFRLENBQUMsR0FBR0EsUUFBUSxDQUFDLElBQUl0QyxVQUFVc0MsUUFBUSxDQUFDLElBQUlBLFFBQVEsQ0FBQyxDQUFDO1VBQ3ZGLE9BQU87QUFFTixrQkFBTUMsV0FBV3hFLFNBQVNwMEIsTUFBTSxxQkFBcUI7QUFDckQsZ0JBQUk2NEIsY0FBYztBQUNsQixnQkFBSUQsVUFBVTtBQUFBLGtCQUFBRSxjQUFBN3RDLDJCQUNPMnRDLFFBQUEsR0FBQUc7QUFBQSxrQkFBQTtBQUFwQixxQkFBQUQsWUFBQTN0QyxFQUFBLEdBQUEsRUFBQTR0QyxVQUFBRCxZQUFBMXRDLEVBQUEsR0FBQUMsUUFBOEI7QUFBQSxzQkFBckIydEMsVUFBQUQsUUFBQXh0QztBQUNSLHdCQUFNMHRDLFNBQVMsSUFBSXprQyxPQUFPaFYsU0FBU2dULE9BQU9pQyxhQUFhdWtDLE9BQU8sR0FBRyxLQUFLO0FBQ3RFNUUsNkJBQVdBLFNBQVM5aEMsUUFBUTJtQyxRQUFRLEVBQUU7QUFDdENELDRCQUFVQSxRQUFRem1DLEtBQUs7QUFDdkJzbUMsaUNBQUEsS0FBQWx4QyxPQUFvQnF4QyxPQUFPO2dCQUM1QjtjQUFBLFNBQUF4dEMsS0FBQTtBQUFBc3RDLDRCQUFBN3ZDLEVBQUF1QyxHQUFBO2NBQUEsVUFBQTtBQUFBc3RDLDRCQUFBcnRDLEVBQUE7Y0FBQTtZQUNEO0FBQ0Eyb0Msd0JBQUEsK0JBQUF6c0MsT0FBMkMwdUMsT0FBTyxFQUFBMXVDLE9BQUdreEMsYUFBVyxNQUFBO1VBQ2pFO0FBQ0FyRSwwQkFDRTNrQixLQUFLMXZCLFNBQVMsSUFBSWIsT0FBT2dILE1BQU0sTUFBTSxJQUFJLElBQUksaUNBQzlDaEgsT0FBT2dILE1BQU0sUUFBUSxPQUFPO0FBRTdCLGNBQUlrdUMsWUFBWXIwQyxTQUFTLEtBQUs7QUFDN0JxMEMsMEJBQWNBLFlBQVlsaUMsUUFBUSw0QkFBNEIsSUFBSTtVQUNuRTtBQUNBOEosa0JBQVErVSxZQUFZaWpCLFFBQVE7QUFDNUJoNEIsa0JBQVF0SCxlQUFlMC9CLFdBQVc7QUFDbENwNEIsa0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLGtCQUFRL0csYUFBYTlWLFFBQVF1SCxRQUFRLGtCQUFrQixDQUFDO0FBQ3hEc1Ysa0JBQVFpWixhQUFhOTFCLFFBQVF1SCxRQUFRLHdCQUF3QixDQUFDO0FBQzlEc1Ysa0JBQVFnWixnQkFBZ0IsVUFBVTtBQUNsQ2haLGtCQUFRZ1YsS0FBSztBQUNiLGNBQUl2VixPQUFPK2pCLFFBQVE7QUFDbEJ4akIsb0JBQVF3akIsT0FBTztVQUNoQjtRQUNEO1FBQ0FzWixNQUFPOThCLGFBQVk7QUFDbEIsY0FBSWhWLE9BQU9nVixRQUFROUgsWUFBWTtBQUMvQixnQkFBTXVILFNBQVNPLFFBQVErQyxzQkFBc0I7QUFDN0MsY0FBSXRMLFVBQVU7QUFFZCxjQUFJZ0ksT0FBT2dVLEtBQUsxdkIsUUFBUTtBQUN2QixnQkFBSTJ3QixVQUFVO0FBQ2QsZ0JBQUkybEI7QUFBQSxnQkFBQTBDLGNBQUFsdUMsMkJBQ2M0USxPQUFPZ1UsSUFBQSxHQUFBdXBCO0FBQUEsZ0JBQUE7QUFBekIsbUJBQUFELFlBQUFodUMsRUFBQSxHQUFBLEVBQUFpdUMsVUFBQUQsWUFBQS90QyxFQUFBLEdBQUFDLFFBQStCO0FBQUEsc0JBQXBCZixNQUFBOHVDLFFBQUE3dEM7QUFFVixvQkFBSSxDQUFDLGNBQWMsb0JBQW9CLDZCQUE2QixFQUFFN0MsU0FBUzRCLEdBQUcsR0FBRztBQUNwRmxELHlCQUFPQSxLQUFLa0wsUUFDWCxzRkFDQSxFQUNEO2dCQUNEO0FBQ0Esb0JBQUloSSxRQUFRLDRCQUE0QjtBQUN2Q2xELHlCQUFPQSxLQUFLa0wsUUFDWCx3RkFDQSxFQUNEO2dCQUNEO0FBQ0Fta0MsNkJBQWFuc0M7QUFDYix3QkFBUUEsS0FBQTtrQkFDUCxLQUFLO0FBQ0ptc0MsaUNBQUEsU0FBQTl1QyxPQUFzQjh1QyxVQUFVO0FBQ2hDLHdCQUFJNTZCLE9BQU93OUIsbUJBQW1CLElBQUk7QUFDakM1QyxvQ0FBQSxNQUFBOXVDLE9BQW9Ca1UsT0FBT3c5QixjQUFjO29CQUMxQztBQUNBO2tCQUNELEtBQUs7QUFDSix3QkFBSXg5QixPQUFPeTlCLGtCQUFrQixJQUFJO0FBQ2hDN0Msb0NBQUEsTUFBQTl1QyxPQUFvQmtVLE9BQU95OUIsYUFBYTtvQkFDekM7QUFDQSx3QkFBSXo5QixPQUFPMDlCLG9CQUFvQixJQUFJO0FBQ2xDOUMsb0NBQUEsV0FBQTl1QyxPQUF5QmtVLE9BQU8wOUIsZUFBZTtvQkFDaEQ7QUFDQTtrQkFDRCxLQUFLO0FBQ0osd0JBQUkxOUIsT0FBTzI5Qix1QkFBdUIsSUFBSTtBQUNyQy9DLG9DQUFBLE1BQUE5dUMsT0FBb0JrVSxPQUFPMjlCLGtCQUFrQjtvQkFDOUM7QUFDQSx3QkFBSTM5QixPQUFPNDlCLHNCQUFzQixJQUFJO0FBQ3BDaEQsb0NBQUEsTUFBQTl1QyxPQUFvQmtVLE9BQU80OUIsaUJBQWlCO29CQUM3QztBQUNBO2tCQUNELEtBQUs7a0JBRUwsS0FBSztBQUNKaEQsa0NBQUEsTUFBQTl1QyxPQUFvQmtVLE9BQUEsR0FBQWxVLE9BQVUyQyxJQUFJZ0ksUUFBUSxNQUFNLEdBQUcsR0FBQyxNQUFBLENBQUEsQ0FBTztBQUMzRDtrQkFDRCxLQUFLO0FBQ0pta0Msa0NBQUEsV0FBQTl1QyxPQUF5QmtVLE9BQU82OUIseUJBQXlCO0FBQ3pEO2tCQUNELEtBQUs7QUFDSmpELGtDQUFBLFVBQUE5dUMsT0FBd0I3QyxHQUFHQyxPQUFPQyxJQUFJLFlBQVksQ0FBQztBQUNuRDtrQkFDRDtBQUNDO2dCQUVGO0FBRUF5eEMsNkJBQUEsS0FBQTl1QyxPQUFrQjh1QyxZQUFVLE1BQUE7QUFDNUIzbEIsMkJBQVcybEI7QUFDWDVpQywyQkFBQSxLQUFBbE0sT0FBZ0IyQyxLQUFHLEtBQUE7Y0FDcEI7WUFBQSxTQUFBa0IsS0FBQTtBQUFBMnRDLDBCQUFBbHdDLEVBQUF1QyxHQUFBO1lBQUEsVUFBQTtBQUFBMnRDLDBCQUFBMXRDLEVBQUE7WUFBQTtBQUNBLGdCQUFJLENBQUNxbEIsU0FBUztBQUNiMVUsc0JBQ0UxSCxpQkFBaUIsRUFDakIvVSxLQUFLTCxPQUFPZ0gsTUFBTSxpQkFBaUIsZ0JBQWdCLENBQUM7QUFDdEQ7WUFDRDtBQUNBYyxtQkFBTzBwQixVQUFVMXBCO1VBQ2xCO0FBQ0FnVixrQkFBUStVLFlBQVkvcEIsSUFBSTtBQUN4QmdWLGtCQUFRdEgsZUFBZWpCLFFBQVFYLE1BQU0sR0FBRytzQixLQUFLdHZCLElBQUksR0FBR2tELFFBQVExVCxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3hFaWMsa0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLGtCQUFRL0csYUFBYTlWLFFBQVF1SCxRQUFRLGtCQUFrQixDQUFDO0FBQ3hEc1Ysa0JBQVFpWixhQUFhOTFCLFFBQVF1SCxRQUFRLHdCQUF3QixDQUFDO0FBQzlEc1Ysa0JBQVFnWixnQkFBZ0IsVUFBVTtBQUNsQ2haLGtCQUFRZ1YsS0FBSztBQUNiLGNBQUl2VixPQUFPK2pCLFFBQVE7QUFDbEJ4akIsb0JBQVF3akIsT0FBTztVQUNoQjtRQUNEO01BQ0Q7QUFDQXJnQyxjQUFRK0ssSUFBSTBDLFNBQVNTLFdBQVl4RSxPQUFNO0FBQ3RDLGNBQU1zRSxPQUFPdEUsRUFBRTRHO0FBQ2YsY0FBTWdNLFNBQVNyYyxTQUFTZ08sVUFBVStELGFBQWFoRSxJQUFJO0FBR25ELGNBQU15aEIsb0JBQW9CQSxDQUFDQyxXQUFXQyxVQUFVO0FBQy9DLGdCQUFNQyxRQUFRRixVQUFVRyxPQUFPLENBQUNDLEtBQUsva0IsUUFBUTtBQUM1QyxtQkFBUStrQixPQUFPeFQsT0FBT2dVLEtBQUtubkIsU0FBUzRCLEdBQUc7VUFDeEMsR0FBRyxDQUFDO0FBQ0osY0FBSTZrQixRQUFRLEdBQUc7QUFDZCxnQkFBSW5nQixVQUFBLEdBQUFySCxPQUFhckksT0FBT2dILE1BQU0sZUFBZSxhQUFhLEdBQUMsS0FBQSxFQUFBcUIsT0FBTXNuQixVQUFVaGMsS0FDMUUsT0FDRCxHQUFDLEtBQUE7QUFDRGpFLHVCQUFXa2dCLFNBQVM7QUFDcEIsaUJBQUtwcUIsR0FBR3VGLE9BQU8yRSxTQUFTO2NBQ3ZCM0gsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRCxtQkFBTztVQUNSO1FBQ0Q7QUFHQSxjQUFNcXZDLGlCQUFpQkEsQ0FBQ3J2QyxLQUFLc3ZDLFdBQVcvSSxjQUFjLFNBQVM7QUFDOUQsY0FBSWgxQixPQUFPZ1UsS0FBS25uQixTQUFTNEIsR0FBRyxLQUFLdVIsT0FBTys5QixTQUFTLEVBQUVybkMsS0FBSyxNQUFNLElBQUk7QUFDakUsaUJBQUt6TixHQUFHdUYsT0FBQSxHQUFBMUMsT0FBVXJJLE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxHQUFDLElBQUEsRUFBQXFCLE9BQUsyQyxLQUFHLEtBQUEsRUFBQTNDLE9BQU1rcEMsYUFBVyxHQUFBLEdBQUs7Y0FDN0V4cEMsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRCxtQkFBTztVQUNSO1FBQ0Q7QUFLQSxnQkFBUS9LLFFBQVErSyxJQUFJNGtDLFFBQUE7VUFDbkIsS0FBSztBQUNKcnpCLG1CQUFPeTRCLGVBQWUvbUMsS0FBS3NsQyxhQUFhLGNBQWM7QUFDdERoM0IsbUJBQU9vNUIsZUFBZXA1QixPQUFPZytCLGdCQUFnQixDQUFBO0FBQzdDLGdCQUNDaCtCLE9BQU9nVSxLQUFLbm5CLFNBQVMsT0FBTyxLQUM1Qm1ULE9BQU9nVSxLQUFLbm5CLFNBQVMsWUFBWSxLQUNqQ21ULE9BQU9nVSxLQUFLbm5CLFNBQVMsVUFBVSxHQUM5QjtBQUNELGtCQUNDc21CLGtCQUNDLENBQUMsU0FBUyxjQUFjLFVBQVUsR0FDbEMxdkIsT0FBT2dILE1BQ04sNkRBQ0EsMkRBQ0QsQ0FDRCxHQUNDO0FBQ0Q7Y0FDRDtBQUNBLGtCQUFJLENBQUN1VixPQUFPcTVCLGFBQWE7QUFDeEIscUJBQUtwd0MsR0FBR3VGLE9BQ1AvSyxPQUFPZ0gsTUFDTiwyQkFDQSx5QkFDRCxHQUNBO2tCQUNDZSxNQUFNO2tCQUNOaUQsS0FBSztnQkFDTixDQUNEO0FBQ0E7Y0FDRDtBQUNBLG1CQUFLdVIsT0FBT2k1QixpQkFBaUJqNUIsT0FBTzg0QixnQkFBZ0I5NEIsT0FBT3E1QixZQUFZeHNDLFNBQVMsR0FBRyxHQUFHO0FBQ3JGLHFCQUFLNUQsR0FBR3VGLE9BQ1AvSyxPQUFPZ0gsTUFDTiw4REFDQSw0REFDRCxHQUNBO2tCQUNDZSxNQUFNO2tCQUNOaUQsS0FBSztnQkFDTixDQUNEO0FBQ0E7Y0FDRDtZQUNEO0FBQ0EsZ0JBQ0NxdkMsZUFDQyx1QkFDQSxzQkFDQXI2QyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FDOUIsR0FDQztBQUNEO1lBQ0Q7QUFDQSxnQkFBSXF6QyxlQUFlLGlCQUFpQixVQUFVcjZDLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxDQUFDLEdBQUc7QUFDNUU7WUFDRDtBQUNBO1VBQ0QsS0FBSztBQUVKLGdCQUNDcXpDLGVBQWUsWUFBWSxnQkFBZ0JyNkMsT0FBT2dILE1BQU0sV0FBVyxTQUFTLENBQUMsS0FDN0VxekMsZUFDQyw0QkFDQSxnQ0FDQXI2QyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsQ0FDbEMsR0FDQztBQUNEO1lBQ0Q7QUFDQSxnQkFBSXF6QyxlQUFlLDBCQUEwQiwyQkFBMkIsR0FBRztBQUMxRTtZQUNEO0FBQ0E7VUFDRCxLQUFLO0FBQ0o7VUFDRDtBQUNDLGlCQUFLNzBDLEdBQUd1RixPQUFBLG9CQUFBMUMsT0FBMkJwSSxRQUFRK0ssSUFBSTJyQixJQUFJLEdBQUk7Y0FDdEQ1dUIsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRDtRQUNGO0FBR0EsWUFBSXVSLE9BQU9nVSxLQUFLMXZCLFdBQVcsTUFBTVosUUFBUStLLElBQUk0a0MsV0FBVyxhQUFhcnpCLE9BQU95NEIsYUFBYW4wQyxXQUFXLElBQUk7QUFDdkcsZUFBSzJFLEdBQUd1RixPQUFPL0ssT0FBT2dILE1BQU0sZUFBZSxhQUFhLEdBQUc7WUFDMURlLE1BQU07WUFDTmlELEtBQUs7VUFDTixDQUFDO0FBQ0Q7UUFDRDtBQUNBOUssaUJBQVMyTixhQUFhMkcsa0JBQWtCLEtBQUs7QUFDN0N0VSxpQkFBU3VVLE9BQU9DLEtBQUt6RyxJQUFJO0FBQ3pCL04saUJBQVNxTCxLQUFLb0osZ0JBQWdCQyxXQUFXMVUsU0FBU3NXO0FBQ2xEdFcsaUJBQVNxTCxLQUFLb0osZ0JBQWdCRSxTQUFTN1UsT0FBT2dILE1BQzdDLGtCQUNBLGtCQUNEO0FBQ0EsWUFBSS9HLFFBQVErSyxJQUFJNGtDLFdBQVcsWUFBWTtBQUN0QzF2QyxtQkFBU3FMLEtBQUtvSixnQkFBZ0IyNEIsaUJBQWlCO1FBQ2hEO0FBQ0EsY0FBTTVyQixjQUFjLElBQUl4aEIsU0FBU3FMLEtBQUtrSCxLQUNyQ3ZTLFNBQVNzVyxjQUNUeFcsT0FBT2dILE1BQU0sUUFBUSxNQUFNLElBQUkvRyxRQUFRK0ssSUFBSTJyQixJQUM1QztBQUNBalYsb0JBQVlDLHNCQUFzQnBGLE1BQU07QUFDeENtRixvQkFBWXhXLEtBQUtqTCxRQUFRK0ssSUFBSTRNLFVBQVUzWCxRQUFRK0ssSUFBSTRrQyxNQUFNLENBQUM7TUFDM0Q7QUFDQTN2QyxjQUFRUyxnQkFBZ0JULFFBQVErSyxLQUFLLEtBQUs7SUFDM0MsR0FBR2tDLE1BQU07RUFBQTtBQUFBLENBQUE7O0FDbHhFVCxJQUFBc3RDLHNCQUFBLENBQUE7QUFBQSxJQUVBQztBQUZBLElBQUFDLG1CQUFBaDdDLE1BQUE7RUFBQSx1Q0FBQTtBQUFBO0FBRUErNkMseUJBQTRCMzRCLFFBQUEsaUJBQUE7SUFFNUI7QUFDQSxLQUFDLFNBQVM2NEIsWUFBWS82QyxHQUFHO0FBUXhCSyxjQUFRMjZDLE9BQU8sTUFBTTtBQUNwQixZQUFJMTZDLFNBQVMyakMsZUFBZSxHQUFHO1FBRy9CLFdBQ0UsQ0FBQyxHQUFHLEdBQUcsRUFBRXo2QixTQUFTNUQsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLRixHQUFHQyxPQUFPQyxJQUFJLGlCQUFpQixLQUN6RnhGLFNBQVNzVyxpQkFBaUJ2VyxRQUFRdUgsUUFBUSxhQUFhLEdBQ3REO0FBQ0R2SCxrQkFBUTI2QyxLQUFLamtCLE9BQU87QUFDcEIxMkIsa0JBQVE2SixlQUFlN0osUUFBUTI2QyxLQUFLbHRDLFVBQVUsT0FBTyxnQkFBZ0IsT0FBTztRQUM3RTtNQUNEO0FBQ0F6TixjQUFRMjZDLEtBQUtsdEMsV0FBVyxNQUFNO0FBQzdCLFlBQUl4TixTQUFTMmpDLGVBQWUsR0FBRztRQUcvQixZQUNHcitCLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sS0FBS0YsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTSxRQUNwRkYsR0FBR0MsT0FBT0MsSUFBSSxpQkFBaUIsS0FDaEN4RixTQUFTc1csaUJBQWlCdlcsUUFBUXVILFFBQVEsYUFBYSxHQUN0RDtBQUNEdkgsa0JBQVEyNkMsS0FBS2prQixPQUFPMzJCLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUMzQy9HLGtCQUFRNkosZUFDUDdKLFFBQVEyNkMsS0FBS2x0QyxVQUNiLE9BQ0EsZ0JBQ0ExTixPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FDOUI7UUFDRDtNQUNEO0FBQ0EvRyxjQUFRMjZDLEtBQUtsdEMsV0FBVyxNQUFNO0FBQzdCLGNBQU1FLFNBQVMsSUFBSTFOLFNBQVMyTixhQUFhLEtBQUs1TixRQUFRMjZDLEtBQUtqa0IsU0FBUyxZQUFZLE1BQU0sR0FBRztBQUN6Ri9vQixlQUFPRyxjQUFjLFNBQVM7QUFDOUJILGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sR0FBRyxRQUFRO0FBQzdENEcsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxHQUFHLGdCQUFnQjtBQUNyRTRHLGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsR0FBRyxlQUFlO0FBQzVFLGNBQU1pSCxPQUFPLElBQUkvTixTQUFTZ08sVUFBVWpPLFFBQVEyNkMsS0FBS2x0QyxTQUFTUyxRQUFRO0FBQ2xFLFlBQUlqRyxTQUFTZ3FDLGlCQUFpQixhQUFhLEVBQUVyeEMsUUFBUTtBQUNwRG9OLGVBQUtJLE9BQU87WUFDWHRHLE1BQU07WUFDTmlILE1BQU0sQ0FDTDtjQUNDVixPQUFPdE8sT0FBT2dILE1BQU0sWUFBWSxVQUFVO2NBQzFDaUYsT0FBTztjQUNQckwsTUFBTTtjQUNOc2lCLFNBQVNqakIsUUFBUXVILFFBQVEsNkJBQTZCO1lBQ3ZELENBQUE7VUFFRixDQUFDO1FBQ0Y7QUFDQSxnQkFBUXZILFFBQVEyNkMsS0FBS2prQixNQUFBO1VBQ3BCLEtBQUs7VUFDTCxLQUFLO0FBQ0ovb0IsbUJBQU9FLFNBQVM5TixPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsQ0FBQztBQUNsRGlILGlCQUFLSSxPQUFPO2NBQ1h0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO2NBQ3BDZ0QsU0FBU2hLLE9BQU9nSCxNQUNmLG9DQUNBLGtDQUNEO2NBQ0F1SCxPQUFPdE8sUUFBUTI2QyxLQUFLbko7Y0FDcEJ6aUMsTUFBTSxDQUNMO2dCQUNDakgsTUFBTTtnQkFDTmtFLE9BQU87Z0JBQ1BxQyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO2dCQUNoQ3VRLFVBQVV0WCxRQUFRdUgsUUFBUSxzQkFBc0IsTUFBTTtjQUN2RCxHQUNBO2dCQUNDTyxNQUFNO2dCQUNOa0UsT0FBTztnQkFDUHFDLE9BQU87Z0JBQ1BpSixVQUFVdFgsUUFBUXVILFFBQVEsc0JBQXNCLE1BQU07Y0FDdkQsQ0FBQTtZQUVGLENBQUM7QUFDRHlHLGlCQUFLSSxPQUFPO2NBQ1h0RyxNQUFNO2NBQ05GLElBQUk7WUFDTCxDQUFDO0FBQ0Q7VUFDRDtBQUNDLGlCQUFLckMsR0FBR3VGLE9BQUEscUJBQUExQyxPQUE0QnBJLFFBQVEyNkMsS0FBS2prQixJQUFJLEdBQUk7Y0FDeEQ1dUIsTUFBTTtjQUNOaUQsS0FBSztZQUNOLENBQUM7QUFDRDtRQUNGO0FBQ0FpRCxhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1FBQ1AsQ0FBQztBQUNELGNBQU00RyxTQUFTVixLQUFLVyxPQUFPO0FBQzNCaEIsZUFBT2lCLFdBQVdGLE1BQU07QUFDeEJmLGVBQU9rQixRQUFRO0FBQ2YsWUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFMUYsU0FBU25KLFFBQVEyNkMsS0FBS2prQixJQUFJLEdBQUc7QUFFN0MsZ0JBQU01bUIsTUFBTTdILFNBQVM4SCxZQUFZLE9BQU87QUFDeENELGNBQUlFLFVBQVUsVUFBVSxNQUFNLElBQUk7QUFDbEN0QixpQkFBT2trQyxVQUFVMWlDLGNBQWNKLEdBQUc7UUFDbkM7TUFDRDtBQUNBOVAsY0FBUTI2QyxLQUFLOUssY0FBYyxDQUFBO0FBQzNCN3ZDLGNBQVEyNkMsS0FBS25KLGtCQUFtQjluQyxPQUFNO0FBQUEsWUFBQWt4QyxlQUFBQztBQUNyQyxjQUFNakksWUFBWWxwQyxFQUFFNEcsT0FBT3RFO0FBQzNCaE0sZ0JBQVEyNkMsS0FBSzlLLGNBQWNubUMsRUFBRTRHLE9BQU90QyxLQUFLdW5CLFdBQVcsYUFBYTtBQUNqRSxTQUFBc2xCLHlCQUFBRCxnQkFBQTU2QyxRQUFRMjZDLE1BQUs5SyxpQkFBQSxRQUFBZ0wsMEJBQUEsU0FBQUEsd0JBQWJELGNBQWEvSyxjQUFnQixDQUFBO0FBQzdCLGNBQU01MUIsWUFBWSxJQUFJaGEsU0FBU2dPLFVBQVVnRCxRQUFRO1VBQ2hEbkosTUFBTTtRQUNQLENBQUM7QUFFRCxjQUFNa3JDLGVBQWVBLENBQUNqb0MsS0FBS3VtQyxnQkFBZ0I7QUFDMUMsZ0JBQU0za0MsV0FBVztZQUNoQlgsT0FBT2pCO1lBQ1BzRCxPQUFBLEtBQUFqRyxPQUFZMkMsS0FBRyxNQUFBLEVBQUEzQyxPQUFPa3BDLFdBQVc7VUFDbEM7QUFDQSxjQUFJdHhDLFFBQVEyNkMsS0FBSzlLLFlBQVkxbUMsU0FBUzRCLEdBQUcsR0FBRztBQUMzQzRCLHFCQUFTc1csVUFBVTtVQUNwQjtBQUNBLGlCQUFPdFc7UUFDUjtBQUVBLFlBQUkzTSxRQUFRdUgsUUFBUSxnQkFBZ0IsRUFBRTNHLFFBQVE7QUFDN0NxWixvQkFBVTdMLE9BQU87WUFDaEJ0RyxNQUFNO1lBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxNQUFNO1VBQ3BDLENBQUM7QUFDRCxnQkFBTSt6QyxtQkFBbUIsQ0FBQTtBQUFDLGNBQUFDLGNBQUFydkMsMkJBQ1AxTCxRQUFRdUgsUUFBUSxnQkFBZ0IsQ0FBQSxHQUFBeXpDO0FBQUEsY0FBQTtBQUFuRCxpQkFBQUQsWUFBQW52QyxFQUFBLEdBQUEsRUFBQW92QyxVQUFBRCxZQUFBbHZDLEVBQUEsR0FBQUMsUUFBc0Q7QUFBQSxvQkFBM0N6RCxPQUFBMnlDLFFBQUFodkM7QUFDVjh1QywrQkFBaUJBLGlCQUFpQmw2QyxNQUFNLElBQUlveUMsYUFBYTNxQyxLQUFLMkQsT0FBTzNELEtBQUtnRyxLQUFLO1lBQ2hGO1VBQUEsU0FBQXBDLEtBQUE7QUFBQTh1Qyx3QkFBQXJ4QyxFQUFBdUMsR0FBQTtVQUFBLFVBQUE7QUFBQTh1Qyx3QkFBQTd1QyxFQUFBO1VBQUE7QUFDQStOLG9CQUFVN0wsT0FBTztZQUNoQnRHLE1BQU07WUFDTm5ILE1BQU07WUFDTm9PLE1BQU0rckM7VUFDUCxDQUFDO1FBQ0Y7QUFFQSxZQUFJbEksY0FBYyxPQUFPO0FBRXhCLGdCQUFNYSx1QkFBdUJBLENBQUNOLFFBQVFwL0IsVUFBVTtBQUMvQyxrQkFBTXEvQixhQUFhLENBQUE7QUFBQyxnQkFBQTZILGNBQUF2dkMsMkJBQ0ZxSSxLQUFBLEdBQUFtbkM7QUFBQSxnQkFBQTtBQUFsQixtQkFBQUQsWUFBQXJ2QyxFQUFBLEdBQUEsRUFBQXN2QyxVQUFBRCxZQUFBcHZDLEVBQUEsR0FBQUMsUUFBeUI7QUFBQSxzQkFBZGYsTUFBQW13QyxRQUFBbHZDO0FBQ1Ysc0JBQU1zbEMsY0FBY3R4QyxRQUFRMjZDLEtBQUtwK0IsUUFBUStULEtBQUt2bEIsR0FBRztBQUNqRHFvQywyQkFBV0EsV0FBV3h5QyxNQUFNLElBQUlveUMsYUFBYWpvQyxLQUFLdW1DLFdBQVc7Y0FDOUQ7WUFBQSxTQUFBcmxDLEtBQUE7QUFBQWd2QywwQkFBQXZ4QyxFQUFBdUMsR0FBQTtZQUFBLFVBQUE7QUFBQWd2QywwQkFBQS91QyxFQUFBO1lBQUE7QUFDQWluQyxtQkFBTy9rQyxPQUFPO2NBQ2J0RyxNQUFNO2NBQ05uSCxNQUFNO2NBQ05vTyxNQUFNcWtDO1lBQ1AsQ0FBQztVQUNGO0FBQ0EsY0FBSXZXLElBQUk7QUFFUixtQkFBQXNlLE9BQUEsR0FBQUMsbUJBQStCMWdDLE9BQU9DLFFBQVEzYSxRQUFRMjZDLEtBQUtwK0IsUUFBUTgrQixhQUFhLEdBQUFGLE9BQUFDLGlCQUFBeDZDLFFBQUF1NkMsUUFBRztBQUFuRixrQkFBVyxDQUFDMXVDLE9BQU8wb0IsT0FBTyxJQUFBaW1CLGlCQUFBRCxJQUFBO0FBQ3pCLGtCQUFNRyxZQUFZdDdDLFFBQVEyNkMsS0FBS3ArQixRQUFRZy9CLG9CQUFvQjl1QyxLQUFLO0FBQ2hFd04sc0JBQVU3TCxPQUFPO2NBQ2hCdEcsTUFBTTtjQUNORixJQUFBLFlBQUFRLE9BQWdCeTBCLENBQUM7Y0FDakJ4dUIsT0FBT2l0QztZQUNSLENBQUM7QUFDRCxrQkFBTW5JLFNBQVNsNUIsVUFBVTdMLE9BQU87Y0FDL0J0RyxNQUFNO2NBQ05GLElBQUEsWUFBQVEsT0FBZ0J5MEIsR0FBRztZQUNwQixDQUFDO0FBQ0QsZ0JBQUk1QyxNQUFNdWhCLFFBQVFybUIsT0FBTyxHQUFHO0FBQzNCc2UsbUNBQXFCTixRQUFRaGUsT0FBTztZQUNyQyxPQUFPO0FBQ04sdUJBQUFzbUIsT0FBQSxHQUFBQyxtQkFBcUNoaEMsT0FBT0MsUUFBUXdhLE9BQU8sR0FBQXNtQixPQUFBQyxpQkFBQTk2QyxRQUFBNjZDLFFBQUc7QUFBOUQsc0JBQVcsQ0FBQ0UsVUFBVUMsVUFBVSxJQUFBRixpQkFBQUQsSUFBQTtBQUMvQnRJLHVCQUFPL2tDLE9BQU87a0JBQ2J0RyxNQUFNO2tCQUNOdUcsT0FBTyxDQUFDcE8sU0FBUzRNLFNBQVMsS0FBSzh1QyxRQUFRLENBQUM7Z0JBQ3pDLENBQUM7QUFDRGxJLHFDQUFxQk4sUUFBUXlJLFVBQVU7Y0FDeEM7WUFDRDtVQUNEO1FBRUQsT0FBTztBQUNOLGdCQUFNeEksYUFBYSxDQUFBO0FBQ25CLG1CQUFBeUksT0FBQSxHQUFBQyxtQkFBaUNwaEMsT0FBT0MsUUFBUTNhLFFBQVEyNkMsS0FBS3ArQixRQUFRK1QsSUFBSSxHQUFBdXJCLE9BQUFDLGlCQUFBbDdDLFFBQUFpN0MsUUFBRztBQUE1RSxrQkFBVyxDQUFDOXdDLEtBQUt1bUMsV0FBVyxJQUFBd0ssaUJBQUFELElBQUE7QUFDM0J6SSx1QkFBV0EsV0FBV3h5QyxNQUFNLElBQUlveUMsYUFBYWpvQyxLQUFLdW1DLFdBQVc7VUFDOUQ7QUFDQXIzQixvQkFBVTdMLE9BQU87WUFDaEJ0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ05vTyxNQUFNcWtDO1VBQ1AsQ0FBQztRQUNGO0FBQ0EsY0FBTWdCLFlBQVl6MEMsRUFBRStKLEVBQUU0RyxPQUFPdEMsSUFBSSxFQUFFMUcsS0FBSyxpQkFBaUI7QUFDekQsY0FBTStzQyxXQUFXcDZCLFVBQVV0TCxPQUFPO0FBQ2xDeWxDLGtCQUFVN2EsTUFBTSxFQUFFbnJCLE9BQU9pbUMsUUFBUTtBQUVqQ0Qsa0JBQVU5c0MsS0FBSyxJQUFJLEVBQUU0QyxJQUFJO1VBQ3hCLGFBQWE7UUFDZCxDQUFDO0FBQ0RrcUMsa0JBQVU5c0MsS0FBSyxzQkFBc0IsRUFBRTRDLElBQUk7VUFDMUMsY0FBYztRQUNmLENBQUM7QUFDRGtxQyxrQkFBVTlzQyxLQUFLLEtBQUssRUFBRXNnQixPQUFPLGlDQUFpQyxFQUFFMWQsSUFBSTtVQUNuRSxjQUFjO1FBQ2YsQ0FBQztBQUFBLFlBQUE2eEMsY0FBQXJ3QywyQkFFc0J6TCxTQUFTZ08sVUFBVTBDLFlBQVlqSCxFQUFFNEcsT0FBT3RDLE1BQU0sYUFBYSxDQUFBLEdBQUFndUM7QUFBQSxZQUFBO0FBQWxGLGVBQUFELFlBQUFud0MsRUFBQSxHQUFBLEVBQUFvd0MsVUFBQUQsWUFBQWx3QyxFQUFBLEdBQUFDLFFBQXFGO0FBQUEsa0JBQTFFYSxXQUFBcXZDLFFBQUFod0M7QUFDVixrQkFBTVksWUFBWWpOLEVBQUVnTixRQUFRO0FBQzVCLGtCQUFNM0MsT0FBTy9KLFNBQVM0TSxTQUFTLEtBQUssR0FBRztBQUN2QzdDLGlCQUFLbEIsYUFBYSxTQUFTLG1CQUFtQjtBQUM5Q2tCLGlCQUFLbEIsYUFDSixRQUNBdkQsR0FBRzBFLEtBQUtNLE9BQUEsWUFBQW5DLE9BQW1CbkksU0FBU2dULE9BQU9ZLHFCQUFxQmxILFNBQVM4bkIsTUFBTSxDQUFDLENBQUUsQ0FDbkY7QUFDQXpxQixpQkFBS2xCLGFBQWEsVUFBVSxRQUFRO0FBQ3BDa0IsaUJBQUtsQixhQUFhLE9BQU8scUJBQXFCO0FBQzlDOEQsc0JBQVU4VyxPQUFPLEVBQUV0VixPQUFPLENBQUMsS0FBVXBFLElBQUksQ0FBQztVQUMzQztRQUFBLFNBQUFpQyxLQUFBO0FBQUE4dkMsc0JBQUFyeUMsRUFBQXVDLEdBQUE7UUFBQSxVQUFBO0FBQUE4dkMsc0JBQUE3dkMsRUFBQTtRQUFBO01BQ0Q7QUFFQWxNLGNBQVEyNkMsS0FBS3ArQixVQUFVLENBQUM7QUFHeEJ2YyxjQUFRMjZDLEtBQUtwK0IsUUFBUStULE9BQU87UUFDM0IsY0FBYztRQUNkLGFBQWE7UUFDYixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixlQUFlO1FBQ2YsZUFBZTtRQUNmLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGFBQWE7UUFDYixXQUFXO1FBQ1gsWUFBWTtRQUNaLGFBQWE7UUFDYixZQUFZO1FBQ1osWUFBWTtRQUNaLGNBQWM7UUFDZCxjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixpQkFBaUI7UUFDakIsZ0JBQWdCO1FBQ2hCLGNBQWM7UUFDZHFxQixNQUFNO1FBQ04sb0JBQW9CO1FBQ3BCLGFBQWE7UUFDYixlQUFlO1FBQ2YsV0FBVztRQUNYLFdBQVc7UUFDWCxlQUFlO1FBQ2YsZUFBZTtRQUNmLFdBQVc7UUFDWCxnQkFBZ0I7TUFDakI7QUFJQTM2QyxjQUFRMjZDLEtBQUtwK0IsUUFBUWcvQixzQkFBc0I7UUFDMUNVLFNBQVM7UUFDVEMsS0FBSztRQUNMQyxRQUFRO1FBQ1JDLEtBQUs7UUFDTEMsU0FBUztRQUNUQyxPQUFPO1FBQ1BDLE1BQU07UUFDTkMsS0FBSztNQUNOO0FBQ0F4OEMsY0FBUTI2QyxLQUFLcCtCLFFBQVE4K0IsZ0JBQWdCO1FBQ3BDWSxTQUFTLENBQUMsUUFBUSxhQUFhO1FBQy9CQyxLQUFLLENBQ0osYUFDQSxlQUNBLG1CQUNBLFlBQ0EsV0FDQSxvQkFDQSxXQUNBLGVBQ0EsZUFDQSxTQUFBO1FBRURDLFFBQVEsQ0FBQyxhQUFhLGFBQWEsWUFBWSxnQkFBZ0IsaUJBQWlCLGFBQWE7UUFDN0ZDLEtBQUssQ0FBQyxjQUFjLFlBQVksYUFBYTtRQUM3Q0MsU0FBUyxDQUFDLGdCQUFnQixhQUFhLGFBQWEsWUFBWSxnQkFBZ0IsZ0JBQWdCLGNBQWM7UUFDOUdDLE9BQU8sQ0FBQyxZQUFZO1FBQ3BCQyxNQUFNLENBQUMsV0FBVztRQUNsQkMsS0FBSyxDQUFDLGNBQWMsWUFBWSxjQUFjLGNBQWMsU0FBUztNQUN0RTtBQUVBeDhDLGNBQVEyNkMsS0FBS2hqQyxZQUFZO1FBQ3hCZ0ksTUFBTzlDLGFBQVk7QUFDbEIsZ0JBQU1QLFNBQVNPLFFBQVErQyxzQkFBc0I7QUFDN0MsY0FBSWkzQjtBQUNKLGNBQUk1QixjQUFjO0FBQ2xCLGNBQUkza0IsT0FBTyxDQUFBO0FBQ1gsZ0JBQU15bUIsZ0JBQWdCLENBQUE7QUFDdEIsY0FBSWxhO0FBRUosY0FBSWdZLFdBQVdoNEIsUUFBUTlILFlBQVk7QUFFbkMsZUFBSzhuQixJQUFJLEdBQUdBLElBQUl2Z0IsT0FBT2dVLEtBQUsxdkIsUUFBUWk4QixLQUFLO0FBQ3hDZ2Esb0JBQVEsSUFBSTVoQyxPQUFBLFVBQUE3TSxPQUFpQmtVLE9BQU9nVSxLQUFLdU0sQ0FBQyxHQUFDLGVBQUEsR0FBaUIsSUFBSTtBQUNoRSxnQkFBSWdhLE1BQU05M0IsS0FBSzgxQixRQUFRLEdBQUc7QUFDekI1MEMsdUJBQVN1VSxPQUFPeU0sS0FDZmxoQixPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FDdkJoSCxPQUFPZ0gsTUFBQSxXQUFBcUIsT0FDS2tVLE9BQU9nVSxLQUFLdU0sQ0FBQyxHQUFDLFFBQUEsR0FBQSxXQUFBejBCLE9BQ2RrVSxPQUFPZ1UsS0FBS3VNLENBQUMsR0FBQyxRQUFBLENBQzFCLENBQ0Q7WUFDRCxPQUFPO0FBQ052TSxxQkFBTyxDQUFDLEdBQUdBLE1BQU0sSUFBQSxHQUFHa3FCLG1CQUFBanNCLGVBQWNqUyxPQUFPZ1UsS0FBS3VNLENBQUMsQ0FBQyxDQUFDO1lBQ2xEO1VBQ0Q7QUFDQXZNLGlCQUFPLENBQUMsR0FBR0EsTUFBTSxHQUFHeW1CLGFBQWE7QUFDakN6bUIsZUFBSy9VLEtBQUs7QUFDVixnQkFBTWtoQyxZQUFZbnNCLEtBQUsxdkI7QUFDdkIsZ0JBQU1xMkMsU0FBU0EsQ0FBQzNFLFNBQVN3RyxhQUFhO0FBQ3JDakUsd0JBQUEsT0FBQXpzQyxPQUFtQmtxQyxTQUFPLElBQUE7QUFDMUIsZ0JBQUl3RyxXQUFXLEdBQUc7QUFDakIsa0JBQUlBLGFBQWEyRCxZQUFZLEdBQUc7QUFDL0J4SCwrQkFBZTtjQUNoQixXQUFXNkQsV0FBVzJELFlBQVksR0FBRztBQUNwQ3hILCtCQUFlO2NBQ2hCO1lBQ0Q7QUFDQUEsMkJBQWU7QUFDZkEsMkJBQWUzQyxRQUFRbnBDLFNBQVMsR0FBRyxJQUFJbXBDLFVBQUEsWUFBQWxxQyxPQUFzQmtxQyxTQUFPLEdBQUEsRUFBQWxxQyxPQUFJa3FDLE9BQU87QUFDL0UyQywyQkFBZTtVQUNoQjtBQUNBLG1CQUFBeUgsT0FBQSxHQUFBQyxTQUFrQnJzQixNQUFBb3NCLE9BQUFDLE9BQUEvN0MsUUFBQTg3QyxRQUFNO0FBQXhCLGtCQUFXM3hDLE1BQUE0eEMsT0FBQUQsSUFBQTtBQUNWekYsbUJBQU9sc0MsR0FBRztVQUNYO0FBQ0FrcUMseUJBQWVsMUMsT0FBT2dILE1BQU0sT0FBTyxLQUFLLElBQUkvRyxRQUFRMjZDLEtBQUtqa0I7QUFDekQ3WixrQkFBUStVLFlBQVlpakIsUUFBUTtBQUM1Qmg0QixrQkFBUXRILGVBQWUwL0IsV0FBVztBQUNsQ3A0QixrQkFBUXJILGNBQWN4VixRQUFRSyxVQUFVO0FBQ3hDd2Msa0JBQVEvRyxhQUFhOVYsUUFBUXVILFFBQVEsbUJBQW1CLENBQUM7QUFDekRzVixrQkFBUWlaLGFBQWE5MUIsUUFBUXVILFFBQVEseUJBQXlCLENBQUM7QUFDL0RzVixrQkFBUWdaLGdCQUFnQixVQUFVO0FBQ2xDaFosa0JBQVFnVixLQUFLO0FBQ2IsY0FBSXZWLE9BQU8rakIsUUFBUTtBQUNsQnhqQixvQkFBUXdqQixPQUFPO1VBQ2hCO1FBQ0Q7TUFDRDtBQUNBcmdDLGNBQVEyNkMsS0FBS2x0QyxTQUFTUyxXQUFZeEUsT0FBTTtBQUN2QyxjQUFNc0UsT0FBT3RFLEVBQUU0RztBQUNmLGNBQU1nTSxTQUFTLENBQUM7QUFDaEIsWUFBSXRPLEtBQUs0dUMsWUFBWTtBQUNwQnRnQyxpQkFBTytqQixTQUFTcnlCLEtBQUs0dUMsV0FBVzM1QjtRQUNqQztBQUNBLGdCQUFRampCLFFBQVEyNkMsS0FBS2prQixNQUFBO1VBQ3BCLEtBQUs7VUFDTCxLQUFLO0FBQ0pwYSxtQkFBT2dVLE9BQU90aUIsS0FBS3VuQixXQUFXLGFBQWE7QUFDM0NqWixtQkFBT2tJLFFBQVE7QUFDZjtVQUNEO0FBQ0MsaUJBQUtqZixHQUFHdUYsT0FBQSxxQkFBQTFDLE9BQTRCcEksUUFBUTI2QyxLQUFLamtCLElBQUksR0FBSTtjQUN4RDV1QixNQUFNO2NBQ05pRCxLQUFLO1lBQ04sQ0FBQztBQUNEO1FBQ0Y7QUFDQSxZQUFJLENBQUN1UixPQUFPZ1UsS0FBSzF2QixRQUFRO0FBQ3hCLGVBQUsyRSxHQUFHdUYsT0FBTyxlQUFlO1lBQzdCaEQsTUFBTTtZQUNOaUQsS0FBSztVQUNOLENBQUM7QUFDRDtRQUNEO0FBQ0E5SyxpQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztBQUM3Q3RVLGlCQUFTdVUsT0FBT0MsS0FBS3pHLElBQUk7QUFDekIvTixpQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVdwUCxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDbkV4RixpQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM3VSxPQUFPZ0gsTUFDN0Msa0JBQ0Esa0JBQ0Q7QUFDQSxZQUFJL0csUUFBUTI2QyxLQUFLamtCLFNBQVMsT0FBTztBQUNoQ3oyQixtQkFBU3FMLEtBQUtvSixnQkFBZ0IyNEIsaUJBQWlCO1FBQ2hEO0FBQ0EsY0FBTTVyQixjQUFjLElBQUl4aEIsU0FBU3FMLEtBQUtrSCxLQUNyQ2pOLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUMxQjFGLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxJQUFJL0csUUFBUTI2QyxLQUFLamtCLElBQzdDO0FBQ0FqVixvQkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4QyxnQkFBUXRjLFFBQVEyNkMsS0FBS2prQixNQUFBO1VBQ3BCLEtBQUs7VUFDTCxLQUFLO1VBRUwsS0FBSztBQUNKalYsd0JBQVl4VyxLQUFLakwsUUFBUTI2QyxLQUFLaGpDLFVBQVVnSSxJQUFJO0FBQzVDO1VBQ0QsS0FBSztVQUNMLEtBQUs7QUFDSjhCLHdCQUFZeFcsS0FBS2pMLFFBQVEyNkMsS0FBS2hqQyxVQUFVZ2lDLElBQUk7QUFDNUM7VUFDRDtBQUNDLGlCQUFLcDBDLEdBQUd1RixPQUFBLHFCQUFBMUMsT0FBNEJwSSxRQUFRMjZDLEtBQUtqa0IsSUFBSSxHQUFJO2NBQ3hENXVCLE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUFDO0FBQ0Q7UUFDRjtNQUNEO0FBQ0EvSyxjQUFRUyxnQkFBZ0JULFFBQVEyNkMsTUFBTSxNQUFNO0lBQzdDLEdBQUcxdEMsTUFBTTtFQUFBO0FBQUEsQ0FBQTs7QUN0YVQsSUFBQTR2QyxzQkFBQSxDQUFBO0FBQUEsSUFBQUMsbUJBQUFyOUMsTUFBQTtFQUFBLHVDQUFBO0FBQUE7SUFFQTtBQUNBLEtBQUMsU0FBU3M5QyxZQUFZcDlDLEdBQUc7QUFPeEJLLGNBQVFnOUMsT0FBTyxNQUFNO0FBQ3BCLFlBQUl6M0MsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsSUFBSSxLQUFLLENBQUNGLEdBQUdDLE9BQU9DLElBQUksYUFBYSxHQUFHO0FBQzVFO1FBQ0Q7QUFDQXpGLGdCQUFRNkosZUFDUHRFLEdBQUcwRSxLQUFLTSxPQUFPaEYsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQUc7VUFDM0N1M0MsTUFBTTtVQUNOQyxPQUFPO1FBQ1IsQ0FBQyxHQUNEbDlDLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QixlQUNBaEgsT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQ2hDO0FBRUEsWUFBSXhCLEdBQUdDLE9BQU9DLElBQUksYUFBYSxHQUFHO0FBQ2pDekYsa0JBQVE2SixlQUNQLE1BQU07QUFDTDdKLG9CQUFRZzlDLEtBQUs5dUMsU0FBUyxLQUFLO1VBQzVCLEdBQ0EsTUFDQSxZQUNBbk8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWUsQ0FDOUM7QUFDQS9HLGtCQUFRNkosZUFDUCxNQUFNO0FBQ0w3SixvQkFBUWc5QyxLQUFLOXVDLFNBQVMsSUFBSTtVQUMzQixHQUNBLE1BQ0EsZ0JBQ0FuTyxPQUFPZ0gsTUFBTSxrQkFBa0IsZ0JBQWdCLENBQ2hEO0FBQ0EvRyxrQkFBUTZKLGVBQ1B0RSxHQUFHMEUsS0FBS00sT0FBT2hGLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFHO1lBQzNDdTNDLE1BQU07WUFDTkMsT0FBTzEzQyxHQUFHQyxPQUFPQyxJQUFJLGFBQWE7VUFDbkMsQ0FBQyxHQUNEMUYsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCLGNBQ0FoSCxPQUFPZ0gsTUFBTSxlQUFlLGFBQWEsQ0FDMUM7UUFDRDtNQUNEO0FBQ0EvRyxjQUFRZzlDLEtBQUs5dUMsV0FBWWd2QyxRQUFPO0FBQy9CLFlBQUk5NEI7QUFDSixZQUFJODRCLElBQUk7QUFDUDk0QixpQkFBTzdlLEdBQUdDLE9BQU9DLElBQUksWUFBWTtRQUNsQyxPQUFPO0FBQ04sZ0JBQU0wM0MsT0FBT2wxQyxTQUFTQyxjQUFjLGtCQUFrQjtBQUN0RCxjQUFJLENBQUNpMUMsTUFBTTtBQUVWO1VBQ0Q7QUFDQS80QixpQkFBT3prQixFQUFFdzlDLElBQUksRUFBRTcxQyxLQUFLLEdBQUcsRUFBRWdGLE1BQU0sRUFBRXpFLEtBQUs7UUFDdkM7QUFDQSxjQUFNaUgsUUFBUTtVQUNiZ0osTUFBTTtVQUNOdE4sUUFBUTtVQUNScU4sUUFBUXRTLEdBQUdDLE9BQU9DLElBQUksWUFBWTtVQUNsQ3VTLFNBQVM7VUFDVEUsUUFBUSxDQUFDLE9BQU8sTUFBTTtVQUN0QkgsV0FBV3hTLEdBQUdDLE9BQU9DLElBQUksaUJBQWlCLElBQUk7VUFDOUMyM0MsUUFBUWg1QjtRQUNUO0FBQ0Fua0IsaUJBQVN1VSxPQUFPQyxLQUFLeE0sU0FBU0MsY0FBYyxrQkFBa0IsQ0FBQztBQUMvRCxjQUFNK3JCLGFBQWEsSUFBSWgwQixTQUFTcUwsS0FBS0MsSUFDcEN4TCxPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsR0FDckMrSCxPQUNBOU8sUUFBUWc5QyxLQUFLcmxDLFVBQVVnSSxJQUN4QjtBQUNBc1UsbUJBQVczWCxTQUFTO1VBQ25COEg7UUFDRDtBQUNBNlAsbUJBQVdwa0IsS0FBSztNQUNqQjtBQUNBN1AsY0FBUWc5QyxLQUFLcmxDLFlBQVk7UUFDeEJnSSxNQUFPdlUsVUFBUztBQUNmLGdCQUFNbzBCLFNBQVNwMEIsS0FBS3NyQztBQUNwQixnQkFBTXRrQyxRQUFRelMsRUFBRTYvQixNQUFNLEVBQUVsNEIsS0FBSyxLQUFLLEVBQUVzUCxLQUFLLE9BQU87QUFDaEQsY0FBSSxDQUFDeEUsT0FBTztBQUNYaEgsaUJBQUs4VCxTQUFTOUosTUFDYnJWLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLElBQzVDcUUsS0FBS2tSLE9BQU84SCxPQUNacmtCLE9BQU9nSCxNQUFNLGVBQWUsYUFBYSxDQUMzQztBQUNBO1VBQ0Q7QUFDQXMyQyxxQkFBVzkzQyxHQUFHMEUsS0FBS00sT0FBT2hGLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFHO1lBQ3REdTNDLE1BQU16M0MsR0FBR0MsT0FBT0MsSUFBSSxpQkFBaUI7WUFDckN3M0MsT0FBTzdxQztVQUNSLENBQUM7UUFDRjtNQUNEO0FBQ0FwUyxjQUFRUyxnQkFBZ0JULFFBQVFnOUMsTUFBTSxNQUFNO0lBQzdDLEdBQUcvdkMsTUFBTTtFQUFBO0FBQUEsQ0FBQTs7QUN2R1QsSUFBQXF3Qyx3QkFBQSxDQUFBO0FBQUEsSUFBQUMscUJBQUE5OUMsTUFBQTtFQUFBLHlDQUFBO0FBQUE7SUFFQTtBQUNBLEtBQUMsU0FBUys5QyxjQUFjNzlDLEdBQUc7QUFNMUJLLGNBQVFvL0IsU0FBUyxNQUFNO0FBQ3RCLFlBQ0M3NUIsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsSUFBSSxLQUNyQ0YsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLE1BQU16RixRQUFRdUgsUUFBUSxhQUFhLEtBQzdELENBQUN0SCxTQUFTZ0IsYUFDVDtBQUNEO1FBQ0Q7QUFDQWpCLGdCQUFRNkosZUFDUDdKLFFBQVFvL0IsT0FBTzN4QixVQUNmMU4sT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCLGFBQ0FoSCxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsQ0FDcEM7TUFDRDtBQUVBL0csY0FBUW8vQixPQUFPM3hCLFdBQVlnd0Msa0JBQWlCO0FBQzNDLGNBQU1DLFlBQVluNEMsR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTTtBQUN6RCxjQUFNa0ksU0FBUyxJQUFJMU4sU0FBUzJOLGFBQWEsS0FBSyxHQUFHO0FBQ2pERCxlQUFPRSxTQUNOOU4sT0FBT2dILE1BQU0sUUFBUSxNQUFNLEtBQ3pCMjJDLFlBQVkzOUMsT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQUksR0FDdEQ7QUFDQTRHLGVBQU9HLGNBQWMsU0FBUztBQUM5QkgsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFHLGtCQUFrQjtBQUNyRTRHLGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsR0FBRyxpQkFBaUI7QUFDOUUsY0FBTWlILE9BQU8sSUFBSS9OLFNBQVNnTyxVQUFVak8sUUFBUW8vQixPQUFPM3hCLFNBQVNTLFFBQVE7QUFHcEUsY0FBTXl2QyxpQkFBaUIxOUMsU0FBUzRNLFNBQy9CLFFBQUEsS0FBQXpFLE9BQ0tzMUMsWUFBWSxNQUFNLEVBQUUsRUFBQXQxQyxPQUFHbkksU0FBU3NXLFlBQVksRUFBQW5PLE9BQUdySSxPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsQ0FBQyxDQUN2RjtBQUNBLGNBQU02MkMsZ0JBQWdCMzlDLFNBQVM0TSxTQUFTLFFBQVE5TSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztBQUM1RSxjQUFNODJDLGtCQUFrQjU5QyxTQUFTNE0sU0FBUyxRQUFBLEtBQUF6RSxPQUFhbkksU0FBU3NXLGNBQVksSUFBQSxDQUFJO0FBQ2hGLGNBQU11bkMscUJBQXFCNzlDLFNBQVM0TSxTQUFTLFFBQUEsS0FBQXpFLE9BQWE3QyxHQUFHQyxPQUFPQyxJQUFJLFNBQVMsR0FBQyxJQUFBLENBQUk7QUFDdEYsWUFBSXM0QztBQUNKLFlBQUlMLFdBQVc7QUFDZEssMkJBQWlCOTlDLFNBQVM0TSxTQUFTLFFBQUEsVUFBQXpFLE9BQWtCbkksU0FBU3NXLGNBQVksUUFBQSxDQUFRO1FBQ25GLE9BQU87QUFDTnduQywyQkFBaUI5OUMsU0FBUzRNLFNBQVMsUUFBUTVNLFNBQVNzVyxZQUFZO1FBQ2pFO0FBQ0EsaUJBQUF5bkMsT0FBQSxHQUFBQyxRQUFtQixDQUFDTixnQkFBZ0JDLGVBQWVDLGlCQUFpQkUsZ0JBQWdCRCxrQkFBa0IsR0FBQUUsT0FBQUMsTUFBQXI5QyxRQUFBbzlDLFFBQUc7QUFBekcsZ0JBQVdiLE9BQUFjLE1BQUFELElBQUE7QUFDVmIsZUFBSzF1QyxNQUFNeXZDLGFBQWE7QUFDeEJmLGVBQUsxdUMsTUFBTTB2QyxZQUFZO1FBQ3hCO0FBQ0Fud0MsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOMkcsT0FBTztVQUNQSixPQUFPLENBQUEsR0FBQWpHLE9BRUxySSxPQUFPZ0gsTUFDTiwyQkFDQSx5QkFDRCxLQUNDMjJDLFlBQ0UzOUMsT0FBT2dILE1BQ1AsaUNBQ0EsK0JBQ0QsSUFDQyxLQUNKLE1BQUEsR0FDQTQyQyxnQkFDQTU5QyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sR0FDM0I2MkMsZUFDQSxLQUNBQyxpQkFDQTk5QyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sR0FDM0JnM0MsZ0JBQ0EsS0FDQUQsb0JBQ0EvOUMsT0FBT2dILE1BQU0sU0FBUyxPQUFPLEdBQzdCaEgsT0FBT2dILE1BQU0sV0FBVyxTQUFTLENBQUE7UUFFbkMsQ0FBQztBQUNEaUgsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOME4sT0FBTztVQUNQckMsT0FBT3l4QyxnQkFBZ0I7VUFDdkJqbUMsTUFBTTtRQUNQLENBQUM7QUFDRCxjQUFNMUksUUFBUTtVQUNidEUsUUFBUTtVQUNSdUUsTUFBTTtVQUNOcXZDLFNBQVM3NEMsR0FBR0MsT0FBT0MsSUFBSSxZQUFZO1VBQ25DNDRDLFNBQVM7O1VBRVRDLGFBQWF0K0MsUUFBUXVILFFBQVEsa0JBQWtCO1VBQy9DZzNDLGFBQWE7VUFDYnR2QyxRQUFRO1FBQ1Q7QUFDQSxZQUFJeXVDLFdBQVc7QUFDZDV1QyxnQkFBTUMsUUFBUTtBQUNkRCxnQkFBTTB2QyxVQUFVMXZDLE1BQU1zdkM7QUFDdEJ0dkMsZ0JBQU0ydkMsVUFBVTN2QyxNQUFNdXZDO0FBQ3RCdnZDLGdCQUFNNHZDLGNBQWM1dkMsTUFBTXd2QztRQUMzQixPQUFPO0FBQ054dkMsZ0JBQU02dkMsZ0JBQWdCO1FBQ3ZCO0FBQ0EsY0FBTTFxQixhQUFhLElBQUloMEIsU0FBU3FMLEtBQUtDLElBQ3BDeEwsT0FBT2dILE1BQU0sUUFBUSxNQUFNLEdBQzNCK0gsT0FDQTlPLFFBQVFvL0IsT0FBT3puQixVQUFVOUksUUFBUSt2QyxTQUNsQztBQUNBM3FCLG1CQUFXM1gsU0FBUztVQUNuQnRPO1VBQ0FMO1VBQ0E4NUIsT0FBT2lXO1FBQ1I7QUFDQXpwQixtQkFBV3BrQixLQUFLO0FBQ2hCLGNBQU03SCxPQUFPQyxTQUFTWSxjQUFjLEtBQUs7QUFDekNiLGFBQUt5RyxNQUFNb3dDLFVBQVU7QUFDckI1K0MsaUJBQVN1VSxPQUFPQyxLQUFLek0sSUFBSTtBQUN6QmlzQixtQkFBVy9VLFNBQVMxSyxPQUFPelUsT0FBT2dILE1BQU0sU0FBUyxPQUFPLENBQUM7QUFDekQ0RyxlQUFPaUIsV0FBVzVHLElBQUk7QUFDdEIyRixlQUFPa0IsUUFBUTtNQUNoQjtBQUNBN08sY0FBUW8vQixPQUFPM3hCLFNBQVNTLFdBQVlJLFdBQVU7QUFDN0MsY0FBTU4sT0FBT00sTUFBTWdDO0FBQ25CLGNBQU15QixRQUFROVIsU0FBU2dPLFVBQVUrRCxhQUFhaEUsSUFBSTtBQUNsRCxZQUFJLENBQUMrRCxNQUFNRixRQUFRO0FBQ2xCLGVBQUt0TSxHQUFHdUYsT0FBTy9LLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLEdBQUc7WUFDOURlLE1BQU07WUFDTmlELEtBQUs7VUFDTixDQUFDO0FBQ0Q7UUFDRDtBQUNBZ0gsY0FBTTZzQyxjQUFON3NDLE1BQU02c0MsWUFBYyxDQUFBO0FBQ3BCN3NDLGNBQU0rc0MsZUFBTi9zQyxNQUFNK3NDLGFBQWUsQ0FBQTtBQUNyQixjQUFNcnNDLFFBQVF4UyxTQUFTOFQsTUFBTUMsS0FBSyxDQUFDLEdBQUdqQyxNQUFNNnNDLFdBQVcsR0FBRzdzQyxNQUFNK3NDLFVBQVUsQ0FBQztBQUMzRSxZQUFJLENBQUNyc0MsTUFBTTdSLFFBQVE7QUFDbEIsZUFBSzJFLEdBQUd1RixPQUNQL0ssT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQixHQUN2RDtZQUNDZSxNQUFNO1lBQ05pRCxLQUFLO1VBQ04sQ0FDRDtBQUNBO1FBQ0Q7QUFDQTlLLGlCQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUsaUJBQVN1VSxPQUFPQyxLQUFLekcsSUFBSTtBQUN6QixjQUFNK3dDLFdBQVcsSUFBSTkrQyxTQUFTKytDLGVBQUEsS0FBQTUyQyxPQUU1QjJKLE1BQU02c0MsVUFBVWgrQyxTQUNiYixPQUFPZ0gsTUFBTSxNQUFNLElBQUksS0FDdkJnTCxNQUFNK3NDLFdBQVdsK0MsU0FBU2IsT0FBT2dILE1BQU0sU0FBUyxPQUFPLElBQUksTUFDM0RoSCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FDL0IsQ0FDRDtBQUNBZzRDLGlCQUFTRSxVQUFVLGlDQUFpQyxJQUFJO0FBQ3hERixpQkFBU0csWUFBWXpzQyxLQUFLO0FBQzFCLGNBQU02SixTQUFTO1VBQ2R6SyxRQUFRRSxNQUFNRjtVQUNka3RDO1FBQ0Q7QUFDQUEsaUJBQVNJLElBQUt4UixjQUFhO0FBQzFCLGdCQUFNbHNCLGNBQWMsSUFBSXhoQixTQUFTcUwsS0FBS2tILEtBQ3JDbTdCLFVBQ0E1dEMsT0FBT2dILE1BQU0sUUFBUSxNQUFNLElBQUk0bUMsV0FBVzV0QyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FDMUU7QUFDQTBhLHNCQUFZMjlCLFdBQVcsSUFBSTtBQUMzQjM5QixzQkFBWUMsc0JBQXNCO1lBQ2pDMjlCLGFBQWF0dEMsTUFBTTZzQyxVQUFVejFDLFNBQVN3a0MsUUFBUTtZQUM5QzJSLGNBQWN2dEMsTUFBTStzQyxXQUFXMzFDLFNBQVN3a0MsUUFBUTtZQUNoRCxHQUFHcnhCO1VBQ0osQ0FBQztBQUNEbUYsc0JBQVl4VyxLQUFLakwsUUFBUW8vQixPQUFPem5CLFVBQVU0bkMsZUFBZTtRQUMxRCxDQUFDO01BQ0Y7QUFDQXYvQyxjQUFRby9CLE9BQU96bkIsWUFBWTtRQUMxQjlJLFNBQVM7VUFDUit2QyxXQUFZeHZDLFlBQVc7QUFDdEIsa0JBQU1zcUIsV0FBV3RxQixPQUFPRSxZQUFZO0FBQ3BDLGdCQUFJa3dDLGNBQWM7QUFDbEIsZ0JBQUl6d0M7QUFDSixnQkFBSXlmO0FBQ0osZ0JBQUlxTztBQUNKLGdCQUFJenRCLE9BQU9rTixPQUFPbXJCLE9BQU87QUFDeEIsb0JBQU1xWCxhQUFhcGxCLFNBQVM1cUIsTUFBTWd3QyxXQUFXdmpDLEtBQUt2YixRQUFRcU0sZUFBZTtBQUN6RTBDLHFCQUFPLENBQUE7QUFDUCxtQkFBSzh0QixJQUFJLEdBQUdBLElBQUlpaUIsV0FBV2wrQyxRQUFRLEVBQUVpOEIsR0FBRztBQUV2Qzl0QixxQkFBS0EsS0FBS25PLE1BQU0sSUFBSTtrQkFDbkJ5TixPQUFPO2tCQUNQckMsT0FBTzh5QyxXQUFXamlCLENBQUMsRUFBRXB3QjtrQkFDckJ3VyxTQUFTO2dCQUNWO2NBQ0Q7QUFDQSxrQkFBSWxVLEtBQUtuTyxRQUFRO0FBQ2hCd08sdUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztrQkFDekJ0RyxNQUFNO2tCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtnQkFDbkMsQ0FBQztBQUNEeW5CLDZCQUFhLENBQUE7QUFBQyxvQkFBQWl4QixjQUFBL3pDLDJCQUNFMUwsUUFBUXVILFFBQVEsa0JBQWtCLENBQUEsR0FBQW00QztBQUFBLG9CQUFBO0FBQWxELHVCQUFBRCxZQUFBN3pDLEVBQUEsR0FBQSxFQUFBOHpDLFVBQUFELFlBQUE1ekMsRUFBQSxHQUFBQyxRQUFxRDtBQUFBLDBCQUExQ3NJLElBQUFzckMsUUFBQTF6QztBQUNWd2lCLCtCQUFXQSxXQUFXNXRCLE1BQU0sSUFDM0J3VCxNQUFNLE1BQ0hyVSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFDM0J4QixHQUFHQyxPQUFPQyxJQUFJLHVCQUF1QixFQUFFMk8sQ0FBQztrQkFDN0M7Z0JBQUEsU0FBQW5JLEtBQUE7QUFBQXd6Qyw4QkFBQS8xQyxFQUFBdUMsR0FBQTtnQkFBQSxVQUFBO0FBQUF3ekMsOEJBQUF2ekMsRUFBQTtnQkFBQTtBQUNBa0QsdUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztrQkFDekJ0RyxNQUFNO2tCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxJQUFJeW5CLFdBQVc5YSxLQUFLLEdBQUc7a0JBQ25FM0osU0FBU2hLLE9BQU9nSCxNQUNmLDBDQUNBLHdDQUNEO2dCQUNELENBQUM7QUFDRCxvQkFBSTJ5QixTQUFTLGdCQUFnQixLQUFLQSxTQUFTLGdCQUFnQixFQUFFb2xCLFlBQVk7QUFDeEUxdkMseUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztvQkFDekJ0RyxNQUFNO29CQUNOdUcsT0FDQ3RPLE9BQU9nSCxNQUFNLE9BQU8sS0FBSyxJQUN6QnhCLEdBQUdtWSxTQUFTaWlDLGNBQWM1d0MsS0FBS25PLE1BQU0sSUFDckNiLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtrQkFDakMsQ0FBQztnQkFDRjtBQUNBcUksdUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztrQkFDekJ0RyxNQUFNO2tCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtrQkFDOUJ1SCxPQUFRNUUsT0FBTTtBQUNiL0osc0JBQUVNLFNBQVNnTyxVQUFVMEMsWUFBWWpILEVBQUU0RyxPQUFPdEMsTUFBTSxZQUFZLENBQUMsRUFBRThKLEtBQUssV0FBVyxJQUFJO2tCQUNwRjtnQkFDRCxDQUFDO0FBQ0QxSSx1QkFBT2tOLE9BQU90TyxLQUFLSSxPQUFPO2tCQUN6QnRHLE1BQU07a0JBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO2tCQUNoQ3VILE9BQVE1RSxPQUFNO0FBQ2IvSixzQkFBRU0sU0FBU2dPLFVBQVUwQyxZQUFZakgsRUFBRTRHLE9BQU90QyxNQUFNLFlBQVksQ0FBQyxFQUFFOEosS0FBSyxXQUFXLEtBQUs7a0JBQ3JGO2dCQUNELENBQUM7QUFDRDFJLHVCQUFPa04sT0FBT3RPLEtBQUtJLE9BQU87a0JBQ3pCdEcsTUFBTTtrQkFDTm5ILE1BQU07a0JBQ05pL0MsbUJBQW1CO2tCQUNuQjd3QztnQkFDRCxDQUFDO0FBQ0R5d0MsOEJBQWM7Y0FDZixPQUFPO0FBQ05wd0MsdUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztrQkFDekJ0RyxNQUFNO2tCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtnQkFDM0MsQ0FBQztjQUNGO1lBQ0Q7QUFDQSxrQkFBTTYzQyxZQUFZbGxCLFNBQVM1cUIsTUFBTTh2QyxVQUFVcmpDLEtBQUt2YixRQUFRcU0sZUFBZTtBQUN2RSxnQkFBSXV5QyxVQUFVaCtDLFNBQVMsR0FBRztBQUN6Qm1PLHFCQUFPLENBQUE7QUFDUCxtQkFBSzh0QixJQUFJLEdBQUdBLElBQUkraEIsVUFBVWgrQyxRQUFRLEVBQUVpOEIsR0FBRztBQUV0Qzl0QixxQkFBS0EsS0FBS25PLE1BQU0sSUFBSTtrQkFDbkJ5TixPQUFPO2tCQUNQckMsT0FBTzR5QyxVQUFVL2hCLENBQUMsRUFBRXB3QjtrQkFDcEJ3VyxTQUFTO2dCQUNWO2NBQ0Q7QUFDQTdULHFCQUFPa04sT0FBT3RPLEtBQUtJLE9BQU87Z0JBQ3pCdEcsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDL0IsQ0FBQztBQUNEeW5CLDJCQUFhLENBQUE7QUFBQyxrQkFBQXF4QixjQUFBbjBDLDJCQUNFMUwsUUFBUXVILFFBQVEsa0JBQWtCLENBQUEsR0FBQXU0QztBQUFBLGtCQUFBO0FBQWxELHFCQUFBRCxZQUFBajBDLEVBQUEsR0FBQSxFQUFBazBDLFVBQUFELFlBQUFoMEMsRUFBQSxHQUFBQyxRQUFxRDtBQUFBLHdCQUExQ3NJLElBQUEwckMsUUFBQTl6QztBQUNWd2lCLDZCQUFXQSxXQUFXNXRCLE1BQU0sSUFDM0J3VCxNQUFNLE1BQ0hyVSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFDM0J4QixHQUFHQyxPQUFPQyxJQUFJLHVCQUF1QixFQUFFMk8sQ0FBQztnQkFDN0M7Y0FBQSxTQUFBbkksS0FBQTtBQUFBNHpDLDRCQUFBbjJDLEVBQUF1QyxHQUFBO2NBQUEsVUFBQTtBQUFBNHpDLDRCQUFBM3pDLEVBQUE7Y0FBQTtBQUNBa0QscUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztnQkFDekJ0RyxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxJQUFJeW5CLFdBQVc5YSxLQUFLLEdBQUc7Z0JBQ25FM0osU0FBU2hLLE9BQU9nSCxNQUNmLDBDQUNBLHdDQUNEO2NBQ0QsQ0FBQztBQUNELGtCQUFJMnlCLFNBQVMsZ0JBQWdCLEtBQUtBLFNBQVMsZ0JBQWdCLEVBQUVrbEIsV0FBVztBQUN2RXh2Qyx1QkFBT2tOLE9BQU90TyxLQUFLSSxPQUFPO2tCQUN6QnRHLE1BQU07a0JBQ051RyxPQUNDdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLLElBQ3pCeEIsR0FBR21ZLFNBQVNpaUMsY0FBYzV3QyxLQUFLbk8sTUFBTSxJQUNyQ2IsT0FBT2dILE1BQU0sUUFBUSxNQUFNO2dCQUM3QixDQUFDO2NBQ0Y7QUFDQXFJLHFCQUFPa04sT0FBT3RPLEtBQUtJLE9BQU87Z0JBQ3pCdEcsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Z0JBQzlCdUgsT0FBUTVFLE9BQU07QUFDYi9KLG9CQUFFTSxTQUFTZ08sVUFBVTBDLFlBQVlqSCxFQUFFNEcsT0FBT3RDLE1BQU0sV0FBVyxDQUFDLEVBQUU4SixLQUFLLFdBQVcsSUFBSTtnQkFDbkY7Y0FDRCxDQUFDO0FBQ0QxSSxxQkFBT2tOLE9BQU90TyxLQUFLSSxPQUFPO2dCQUN6QnRHLE1BQU07Z0JBQ051RyxPQUFPdE8sT0FBT2dILE1BQU0sT0FBTyxLQUFLO2dCQUNoQ3VILE9BQVE1RSxPQUFNO0FBQ2IvSixvQkFBRU0sU0FBU2dPLFVBQVUwQyxZQUFZakgsRUFBRTRHLE9BQU90QyxNQUFNLFdBQVcsQ0FBQyxFQUFFOEosS0FBSyxXQUFXLEtBQUs7Z0JBQ3BGO2NBQ0QsQ0FBQztBQUNEMUkscUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztnQkFDekJ0RyxNQUFNO2dCQUNObkgsTUFBTTtnQkFDTmkvQyxtQkFBbUI7Z0JBQ25CN3dDO2NBQ0QsQ0FBQztBQUNEeXdDLDRCQUFjO1lBQ2YsT0FBTztBQUNOcHdDLHFCQUFPa04sT0FBT3RPLEtBQUtJLE9BQU87Z0JBQ3pCdEcsTUFBTTtnQkFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7Y0FDdkMsQ0FBQztZQUNGO0FBQ0EsZ0JBQUl5NEMsYUFBYTtBQUNoQnB3QyxxQkFBT2tOLE9BQU90TyxLQUFLSSxPQUFPO2dCQUN6QnRHLE1BQU07Y0FDUCxDQUFDO1lBQ0Y7QUFDQSxrQkFBTTRHLFNBQVNVLE9BQU9rTixPQUFPdE8sS0FBS1csT0FBTztBQUN6Q1MsbUJBQU9rTixPQUFPM08sT0FBT2lCLFdBQVdGLE1BQU07QUFBQSxnQkFBQXF4QyxjQUFBcjBDLDJCQUNuQnpMLFNBQVNnTyxVQUFVMEMsWUFBWWpDLFFBQVEsV0FBVyxDQUFBLEdBQUFzeEM7QUFBQSxnQkFBQTtBQUFyRSxtQkFBQUQsWUFBQW4wQyxFQUFBLEdBQUEsRUFBQW8wQyxVQUFBRCxZQUFBbDBDLEVBQUEsR0FBQUMsUUFBd0U7QUFBQSxzQkFBN0Q5QixPQUFBZzJDLFFBQUFoMEM7QUFDVmhNLHdCQUFRME0sdUJBQXVCMUMsSUFBSTtjQUNwQztZQUFBLFNBQUFpQyxLQUFBO0FBQUE4ekMsMEJBQUFyMkMsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUE4ekMsMEJBQUE3ekMsRUFBQTtZQUFBO0FBQUEsZ0JBQUErekMsY0FBQXYwQywyQkFDbUJ6TCxTQUFTZ08sVUFBVTBDLFlBQVlqQyxRQUFRLFlBQVksQ0FBQSxHQUFBd3hDO0FBQUEsZ0JBQUE7QUFBdEUsbUJBQUFELFlBQUFyMEMsRUFBQSxHQUFBLEVBQUFzMEMsVUFBQUQsWUFBQXAwQyxFQUFBLEdBQUFDLFFBQXlFO0FBQUEsc0JBQTlEOUIsT0FBQWsyQyxRQUFBbDBDO0FBQ1ZoTSx3QkFBUTBNLHVCQUF1QjFDLElBQUk7Y0FDcEM7WUFBQSxTQUFBaUMsS0FBQTtBQUFBZzBDLDBCQUFBdjJDLEVBQUF1QyxHQUFBO1lBQUEsVUFBQTtBQUFBZzBDLDBCQUFBL3pDLEVBQUE7WUFBQTtVQUNEO1FBQ0Q7UUFDQXF6QyxpQkFBa0IxaUMsYUFBWTtBQUM3QixjQUFJc2pDLFVBQVV0akMsUUFBUTlILFlBQVk7QUFDbEMsZ0JBQU11SCxTQUFTTyxRQUFRK0Msc0JBQXNCO0FBQzdDLGdCQUFNNkIsY0FBYyxJQUFJeGhCLFNBQVNrYyxTQUFTM0osS0FBSzJ0QyxPQUFPO0FBQ3RELGNBQUlsTCxjQUFjO0FBQ2xCLGNBQUltTCxnQkFBZ0I7QUFDcEIsY0FBSXY0QztBQUVKLGNBQUl5VSxPQUFPZ2pDLGNBQWM7QUFDeEJ6M0MsbUJBQU80WixZQUFZNCtCLGdCQUFnQjk2QyxHQUFHQyxPQUFPQyxJQUFJLFNBQVMsR0FBRzFGLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxDQUFDLEVBQUU4NUIsUUFBUTtBQUUvRixnQkFBSWg1QixTQUFTczRDLFNBQVM7QUFDckJDLDhCQUFnQnJnRCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDNUMsT0FBTztBQUNOa3VDLDRCQUFjbDFDLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtBQUM3Q281Qyx3QkFBVXQ0QztZQUNYO1VBQ0Q7QUFFQSxjQUFJeVUsT0FBTytpQyxhQUFhO0FBQ3ZCeDNDLG1CQUFPNFosWUFBWTYrQixXQUFXcmdELFNBQVNzVyxZQUFZLEVBQUVzcUIsUUFBUTtBQUM3RGg1QixtQkFBTzRaLFlBQVk4K0IsZUFBZWg3QyxHQUFHQyxPQUFPQyxJQUFJLFNBQVMsQ0FBQyxFQUFFbzdCLFFBQVE7QUFFcEUsZ0JBQUloNUIsU0FBU3M0QyxTQUFTO0FBQ3JCQyw4QkFBZ0JBLGdCQUNicmdELE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxJQUNyQ2hILE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUMvQixPQUFPO0FBQ05rdUMsNkJBQWVBLGNBQUEsR0FBQTdzQyxPQUFpQjZzQyxhQUFXLEtBQUEsSUFBUSxNQUFNbDFDLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztBQUN0Rm81Qyx3QkFBVXQ0QztZQUNYO1VBQ0Q7QUFDQSxjQUFJdTRDLGVBQWU7QUFFbEJ2akMsb0JBQ0UxSCxpQkFBaUIsRUFDakJDLE1BQUEsR0FBQWhOLE9BQVNySSxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsSUFBSXE1QyxlQUFhLEdBQUEsQ0FBRztBQUNsRTlqQyxtQkFBT3lpQyxTQUFTeUIsY0FBYzNqQyxPQUFPO0FBQ3JDO1VBQ0Q7QUFDQUEsa0JBQVErVSxZQUFZL3BCLElBQUk7QUFDeEJnVixrQkFBUXRILGVBQ1AwL0IsY0FDQ2wxQyxPQUFPZ0gsTUFBTSxLQUFLLEdBQUcsSUFDckI5RyxTQUFTc1csZUFDVHhXLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxJQUN2QnVWLE9BQU96SyxNQUNUO0FBQ0FnTCxrQkFBUXJILGNBQWN4VixRQUFRSyxVQUFVO0FBQ3hDd2Msa0JBQVFnWixnQkFBZ0IsVUFBVTtBQUNsQ2haLGtCQUFRZ1YsS0FBS3ZWLE9BQU95aUMsU0FBUzBCLGVBQWVua0MsT0FBT3lpQyxTQUFTeUIsYUFBYTtRQUMxRTtNQUNEO0FBQ0F4Z0QsY0FBUVMsZ0JBQWdCVCxRQUFRby9CLFFBQVEsUUFBUTtJQUNqRCxHQUFHbnlCLE1BQU07RUFBQTtBQUFBLENBQUE7O0FDdllULElBQUF5ekMsdUJBQUEsQ0FBQTtBQUFBLElBQUFDLG9CQUFBbGhELE1BQUE7RUFBQSx3Q0FBQTtBQUFBO0lBR0E7QUFDQSxLQUFDLFNBQVNtaEQsYUFBYWpoRCxHQUFHO0FBQ3pCLFlBQU1FLFFBQVFGLEVBQUUsTUFBTTtBQVd0QkssY0FBUTZnRCxRQUFRLE1BQU07QUFLckIsWUFBSXQ3QyxHQUFHQyxPQUFPQyxJQUFJLHNCQUFzQixHQUFHO0FBRTFDLGNBQUlGLEdBQUdDLE9BQU9DLElBQUksYUFBYSxLQUFLRixHQUFHQyxPQUFPQyxJQUFJLGFBQWEsR0FBRztBQUVqRUYsZUFBR3U3QyxLQUFLLGVBQWUsRUFBRXBvQyxJQUFJLE1BQU07QUFDbEMxWSxzQkFBUTZnRCxNQUFNRSxTQUFTL0QsS0FBSztZQUM3QixDQUFDO1VBQ0YsV0FDQ3ozQyxHQUFHQyxPQUFPQyxJQUFJLFVBQVUsTUFBTSxVQUM5QkYsR0FBR0MsT0FBT0MsSUFBSSxjQUFjLEtBQzVCRixHQUFHQyxPQUFPQyxJQUFJLGlCQUFpQixNQUFNRixHQUFHQyxPQUFPQyxJQUFJLGNBQWMsR0FDaEU7QUFDRHpGLG9CQUFRNmdELE1BQU1FLFNBQVM5RCxNQUFNO1VBQzlCLFdBQVcxM0MsR0FBR0MsT0FBT0MsSUFBSSxVQUFVLE1BQU0sV0FBVztBQUNuRHpGLG9CQUFRNmdELE1BQU1FLFNBQVNsaUMsUUFBUTtVQUNoQztRQUNELFdBQVd0WixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLElBQUk7QUFDckR6RixrQkFBUTZnRCxNQUFNRyxXQUFXLENBQUNoaEQsUUFBUXVILFFBQVEsMEJBQTBCO0FBQ3BFdkgsa0JBQVE2Z0QsTUFBTWwvQyxrQkFBa0IzQixRQUFRdUgsUUFBUSxpQkFBaUI7QUFDakUsY0FBSWhDLEdBQUdDLE9BQU9DLElBQUksNEJBQTRCLE1BQU0saUJBQWlCO0FBQ3BFekYsb0JBQVE2Z0QsTUFBTUUsU0FBU0UsY0FBYztVQUN0QyxXQUNDMTdDLEdBQUdDLE9BQU9DLElBQUksNEJBQTRCLE1BQU0sbUJBQ2hERixHQUFHQyxPQUFPQyxJQUFJLDRCQUE0QixNQUFNLHVCQUMvQztBQUdERixlQUFHdTdDLEtBQUssa0JBQWtCLEVBQUVwb0MsSUFBS3JRLFVBQVM7QUFDekMsa0JBQUlBLEtBQUsyZCxHQUFHLEtBQUssR0FBRztBQUNuQmhtQix3QkFBUTZnRCxNQUFNRSxTQUFTRyxjQUFjO2NBQ3RDO1lBQ0QsQ0FBQztVQUNGO1FBQ0Q7TUFDRDtBQU9BbGhELGNBQVE2Z0QsTUFBTU0sY0FBYyxDQUFBO0FBQzVCbmhELGNBQVE2Z0QsTUFBTUcsV0FBVztBQUN6QmhoRCxjQUFRNmdELE1BQU1sL0Msa0JBQWtCO0FBRWhDM0IsY0FBUTZnRCxNQUFNTyxhQUFhcmhELE9BQU9nSCxNQUFNLFVBQVUsU0FBUztBQUUzRC9HLGNBQVE2Z0QsTUFBTVEsY0FBYztRQUMzQkMsU0FBU0EsQ0FBQzNWLE9BQU94VyxZQUFZO0FBQzVCLGdCQUFNOXJCLE9BQU9wQixTQUFTWSxjQUFjLE1BQU07QUFDMUNRLGVBQUtvRixNQUFNazlCLFFBQVFBO0FBQ25CdGlDLGVBQUtKLFlBQVloQixTQUFTcUIsZUFBZTZyQixPQUFPLENBQUM7QUFDakQsaUJBQU85ckI7UUFDUjtRQUNBazRDLFdBQVdBLENBQUM1VixPQUFPOWpDLFNBQVM7QUFDM0IsZ0JBQU1tQyxPQUFPL0IsU0FBU1ksY0FBYyxHQUFHO0FBQ3ZDbUIsZUFBS2YsWUFBWWpKLFFBQVE2Z0QsTUFBTVEsWUFBWUMsUUFBUSxTQUFTLEdBQUcsQ0FBQztBQUNoRXQzQyxlQUFLZixZQUFZakosUUFBUTZnRCxNQUFNUSxZQUFZQyxRQUFRM1YsT0FBTzlqQyxJQUFJLENBQUM7QUFDL0RtQyxlQUFLZixZQUFZakosUUFBUTZnRCxNQUFNUSxZQUFZQyxRQUFRLFNBQVMsR0FBRyxDQUFDO0FBQ2hFdDNDLGVBQUtSLE9BQU87QUFDWixpQkFBT1E7UUFDUjs7Ozs7Ozs7OztRQVVBdzNDLGVBQWVBLENBQUNDLFFBQVFDLFFBQVFDLEtBQUtudkMsU0FBUztBQUM3Q2l2QyxxQkFBQUEsU0FBVztBQUNYLGdCQUFNem1DLE9BQU8wbUMsU0FBUyxTQUFTO0FBQy9CLGdCQUFNRSxVQUFVMzVDLFNBQVNZLGNBQWNtUyxJQUFJO0FBQzNDMm1DLGdCQUFNdnFDLE9BQU9DLFNBQVNzcUMsS0FBSyxFQUFFO0FBQzdCLGNBQUlBLEtBQUs7QUFDUkMsb0JBQVE5NEMsYUFBYSxNQUFBLFlBQUFWLE9BQWtCdTVDLEdBQUcsQ0FBRTtVQUM3QyxPQUFPO0FBQ05DLG9CQUFROTRDLGFBQWEsTUFBTSxXQUFXO1VBQ3ZDO0FBQ0EsZ0JBQU0rNEMsV0FBVzU1QyxTQUFTWSxjQUFjLFFBQVE7QUFDaEQsZ0JBQU1pNUMsV0FBVzc1QyxTQUFTWSxjQUFjLFFBQVE7QUFDaEQsZ0JBQU1rNUMsV0FBVy9oRCxRQUFRNmdELE1BQU1RLFlBQVlFLFVBQVUsYUFBYSxJQUFJO0FBQ3RFLGdCQUFNUyxXQUFXaGlELFFBQVE2Z0QsTUFBTVEsWUFBWUUsVUFBVSxPQUFPeGhELE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxDQUFDO0FBQ3BGcEgsWUFBRW9pRCxRQUFRLEVBQUV0NEMsR0FBRyxTQUFVQyxPQUFNO0FBQzlCQSxjQUFFQyxlQUFlO0FBQ2pCM0osb0JBQVE2Z0QsTUFBTW9CLE9BQU8sUUFBUVIsUUFBUUUsS0FBS252QyxJQUFJO0FBQzlDeFMsb0JBQVE2Z0QsTUFBTXFCLGFBQWFOLE9BQU87VUFDbkMsQ0FBQztBQUNEamlELFlBQUVxaUQsUUFBUSxFQUFFdjRDLEdBQUcsU0FBVUMsT0FBTTtBQUM5QkEsY0FBRUMsZUFBZTtBQUNqQjNKLG9CQUFRNmdELE1BQU1vQixPQUFPLFFBQVFSLFFBQVFFLEtBQUtudkMsSUFBSTtBQUM5Q3hTLG9CQUFRNmdELE1BQU1xQixhQUFhTixPQUFPO1VBQ25DLENBQUM7QUFDREUsbUJBQVM3NEMsWUFBWSs0QyxRQUFRO0FBQzdCSCxtQkFBUzU0QyxZQUFZODRDLFFBQVE7QUFDN0IsZ0JBQU1JLFlBQVlULFNBQVMsTUFBTTtBQUNqQ0Usa0JBQVEzNEMsWUFBWTQ0QyxRQUFRO0FBQzVCRCxrQkFBUTM0QyxZQUFZaEIsU0FBU3FCLGVBQWU2NEMsU0FBUyxDQUFDO0FBQ3REUCxrQkFBUTM0QyxZQUFZNjRDLFFBQVE7QUFDNUIsaUJBQU9GO1FBQ1I7O1FBRUFRLHlCQUF5QkEsQ0FBQ0MsYUFBYVgsV0FBVztBQUVqRFcsd0JBQWMsT0FBT0EsZ0JBQWdCLFdBQVdBLGNBQWM5OEMsR0FBR0MsT0FBT0MsSUFBSTQ4QyxXQUFXO0FBQ3ZGLGdCQUFNcm5DLE9BQU8wbUMsU0FBUyxTQUFTO0FBQy9CLGdCQUFNWSx1QkFBdUJyNkMsU0FBU1ksY0FBY21TLElBQUk7QUFDeERzbkMsK0JBQXFCeDVDLGFBQWEsTUFBQSxnQkFBQVYsT0FBc0JpNkMsV0FBVyxDQUFFO0FBQ3JFQywrQkFBcUI3ekMsTUFBTTh6QyxhQUFhO0FBQ3hDLGdCQUFNQyx1QkFBdUJ4aUQsUUFBUTZnRCxNQUFNUSxZQUFZRSxVQUN0RCxlQUNBeGhELE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxDQUM5QjtBQUNBcEgsWUFBRTZpRCxvQkFBb0IsRUFBRS80QyxHQUFHLFNBQVVDLE9BQU07QUFDMUNBLGNBQUVDLGVBQWU7QUFDakIzSixvQkFBUTZnRCxNQUFNNEIsaUJBQWlCSixXQUFXO1VBQzNDLENBQUM7QUFDRCxjQUFJWCxRQUFRO0FBQ1hZLGlDQUFxQnI1QyxZQUFZaEIsU0FBU3FCLGVBQWUsR0FBRyxDQUFDO1VBQzlEO0FBQ0FnNUMsK0JBQXFCcjVDLFlBQVl1NUMsb0JBQW9CO0FBQ3JELGlCQUFPRjtRQUNSO01BQ0Q7QUFDQXRpRCxjQUFRNmdELE1BQU1FLFdBQVc7UUFDeEJFLGVBQWVBLE1BQU07QUFJcEIsZ0JBQU14K0IsVUFBVSxDQUFDLENBQUM1aUIsTUFBTXlILEtBQUsscUNBQXFDLEVBQUUsQ0FBQztBQUNyRSxjQUFJL0IsR0FBR0MsT0FBT3VzQixPQUFPLG9CQUFvQixLQUFLdFAsU0FBUztBQUV0RCxnQkFBSW5WLFdBQVcvSCxHQUFHQyxPQUFPQyxJQUFJLG9CQUFvQjtBQUNqRCxnQkFDQ3pGLFFBQVF1SCxRQUFRLG1CQUFtQixFQUFFNEIsU0FBUyxVQUFVLEtBQ3ZENUQsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLE1BQU02SCxZQUNoQ3ROLFFBQVF1SCxRQUFRLG1CQUFtQixFQUFFNEIsU0FBUyxRQUFRLEtBQ3RENUQsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLE1BQU02SCxZQUFZdE4sUUFBUXVILFFBQVEsbUJBQW1CLEVBQUU0QixTQUFTLE1BQU0sR0FDaEc7QUFDRCxvQkFBTXU1QyxRQUFRN2lELE1BQ1p5SCxLQUFLLGtCQUFrQixFQUN2QkEsS0FBSyxvREFBb0Q7QUFDM0RvN0Msb0JBQU1qMUIsS0FBSyxDQUFDdVMsTUFBTWxoQixZQUFZO0FBRzdCLHNCQUFNdE0sT0FBTzdTLEVBQUVtZixPQUFPLEVBQUV4WCxLQUFLLHlCQUF5QixFQUFFTyxLQUFLO0FBRTdELG9CQUFJNGEsU0FBUztBQUdablYsNkJBQVczTixFQUFFbWYsT0FBTyxFQUFFeFgsS0FBSyxvQ0FBb0MsRUFBRU8sS0FBSztnQkFDdkU7QUFHQWlYLHdCQUFRN1YsWUFDUGpKLFFBQVE2Z0QsTUFBTVEsWUFBWUcsY0FBY2wwQyxVQUFVLE1BQU13UixRQUFRNmpDLFFBQVFDLFNBQVNwd0MsSUFBSSxDQUN0RjtjQUNELENBQUM7WUFDRjtVQUNEO1FBQ0Q7UUFDQTB1QyxlQUFlQSxNQUFNO0FBQ3BCLGNBQ0UzN0MsR0FBR0MsT0FBT0MsSUFBSSw0QkFBNEIsTUFBTSxtQkFDaER6RixRQUFRdUgsUUFBUSxtQkFBbUIsRUFBRTRCLFNBQVMsZUFBZSxLQUM3RDVELEdBQUdDLE9BQU9DLElBQUksNEJBQTRCLE1BQU0seUJBQ2hEekYsUUFBUXVILFFBQVEsbUJBQW1CLEVBQUU0QixTQUFTLHFCQUFxQixHQUNuRTtBQUVELGdCQUFJdTVDLFFBQVE3aUQsTUFBTXlILEtBQUssaUVBQWlFO0FBR3hGbzdDLG9CQUFRQSxNQUNORyxJQUFJLCtDQUErQyxFQUNuRHY3QyxLQUFLLHNEQUFzRDtBQUM3RG83QyxrQkFBTWoxQixLQUFLLENBQUN1UyxNQUFNbGhCLFlBQVk7QUFHN0Isb0JBQU0yaUMsU0FBUzloRCxFQUFFbWYsT0FBTyxFQUFFeFgsS0FBSyxvQ0FBb0MsRUFBRU8sS0FBSztBQUMxRSxvQkFBTTJCLE9BQU83SixFQUFFbWYsT0FBTyxFQUFFeFgsS0FBSyxzQkFBc0IsRUFBRXNQLEtBQUssTUFBTTtBQUNoRSxvQkFBTStxQyxNQUFNcDhDLEdBQUcwRSxLQUFLd0gsY0FBYyxRQUFRakksSUFBSTtBQUM5QyxvQkFBTWdKLE9BQU9zTSxRQUFRNmpDLFFBQVFHO0FBQzdCaGtDLHNCQUFRN1YsWUFBWWpKLFFBQVE2Z0QsTUFBTVEsWUFBWUcsY0FBY0MsUUFBUSxNQUFNRSxLQUFLbnZDLElBQUksQ0FBQztZQUNyRixDQUFDO1VBQ0Y7UUFDRDtRQUNBcU0sU0FBU0EsTUFBTTtBQUNkLGNBQUk3ZSxRQUFRdUgsUUFBUSxtQkFBbUIsRUFBRTRCLFNBQVMsU0FBUyxHQUFHO0FBRTdELGtCQUFNNDVDLFdBQVdsakQsTUFBTXlILEtBQUssaUJBQWlCLEVBQUUwN0MsUUFBUTtBQUd2RCxnQkFBSSxDQUFDbmpELE1BQU15SCxLQUFLLGdCQUFnQixFQUFFMUcsUUFBUTtBQUN6QyxvQkFBTTBMLFFBQVF5MkMsU0FBU0UsTUFBTTtBQUM3QixvQkFBTXhCLFNBQVM5aEQsRUFBRTJNLEtBQUssRUFBRWhGLEtBQUssb0NBQW9DLEVBQUVPLEtBQUs7QUFBQSxrQkFBQXE3QyxjQUFBeDNDLDJCQUlyRHEzQyxRQUFBLEdBQUFJO0FBQUEsa0JBQUE7QUFBbkIscUJBQUFELFlBQUF0M0MsRUFBQSxHQUFBLEVBQUF1M0MsVUFBQUQsWUFBQXIzQyxFQUFBLEdBQUFDLFFBQTZCO0FBQUEsd0JBQWxCekQsT0FBQTg2QyxRQUFBbjNDO0FBQ1Ysc0JBQUlyTSxFQUFFMEksSUFBSSxFQUFFZixLQUFLLGNBQWMsRUFBRU8sS0FBSyxNQUFNNDVDLFFBQVE7QUFDbkRuMUMsMEJBQU1yRCxZQUFZakosUUFBUTZnRCxNQUFNUSxZQUFZRyxjQUFjQyxRQUFRLElBQUksQ0FBQztBQUN2RTtrQkFDRDtnQkFDRDtjQUFBLFNBQUF4MUMsS0FBQTtBQUFBaTNDLDRCQUFBeDVDLEVBQUF1QyxHQUFBO2NBQUEsVUFBQTtBQUFBaTNDLDRCQUFBaDNDLEVBQUE7Y0FBQTtZQUNEO0FBQUEsZ0JBQUFrM0MsY0FBQTEzQywyQkFFa0JxM0MsUUFBQSxHQUFBTTtBQUFBLGdCQUFBO0FBQWxCLG1CQUFBRCxZQUFBeDNDLEVBQUEsR0FBQSxFQUFBeTNDLFVBQUFELFlBQUF2M0MsRUFBQSxHQUFBQyxRQUE0QjtBQUFBLHNCQUFqQjYxQyxNQUFBMEIsUUFBQXIzQztBQUlWLHNCQUFNO2tCQUFDeEM7Z0JBQUksSUFBSW00QyxJQUFJejVDLGNBQWMsc0JBQXNCO0FBQ3ZELHNCQUFNKzBDLFFBQVE3bEMsT0FBT0MsU0FBUzlSLEdBQUcwRSxLQUFLd0gsY0FBYyxTQUFTakksSUFBSSxHQUFHLEVBQUU7QUFDdEUsb0JBQUksQ0FBQzROLE9BQU9nSSxNQUFNNjlCLEtBQUssR0FBRztBQUN6QjBFLHNCQUFJMTRDLFlBQVlqSixRQUFRNmdELE1BQU1RLFlBQVllLHdCQUF3Qm5GLE9BQU8sSUFBSSxDQUFDO2dCQUMvRTtjQUNEO1lBQUEsU0FBQWh4QyxLQUFBO0FBQUFtM0MsMEJBQUExNUMsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUFtM0MsMEJBQUFsM0MsRUFBQTtZQUFBO1VBQ0Q7UUFDRDtRQUNBOHdDLE1BQU1BLE1BQU07QUFFWCxnQkFBTXNHLGVBQWdCQyxZQUFXO0FBQ2hDLGtCQUFNQyxXQUFXN2pELEVBQUEsWUFBQXlJLE9BQWNtN0MsUUFBTSx1QkFBQSxDQUF1QixFQUFFajNDLE1BQU07QUFDcEUsZ0JBQUlrM0MsU0FBUzVpRCxRQUFRO0FBQ3BCLGtCQUFJNmlELGNBQUEsY0FBQXI3QyxPQUE0QjdDLEdBQUcwRSxLQUFLNk0sYUFBYTdXLFNBQVNzVyxZQUFZLEdBQUMsa0JBQUE7QUFFM0VrdEMsNkJBQWU7QUFDZkEsNkJBQWVGLFdBQVcsV0FBV2grQyxHQUFHQyxPQUFPQyxJQUFJLGFBQWEsSUFBSUYsR0FBR0MsT0FBT0MsSUFBSSxhQUFhO0FBQy9GLG9CQUFNK0QsT0FBT2c2QyxTQUFTNXNDLEtBQUssTUFBTTtBQUNqQyxrQkFBSXBOLEtBQUtMLFNBQVMsR0FBRyxHQUFHO0FBQ3ZCcTZDLHlCQUFTNXNDLEtBQUssUUFBQSxHQUFBeE8sT0FBV29CLE1BQUksR0FBQSxFQUFBcEIsT0FBSXE3QyxXQUFXLENBQUU7Y0FDL0MsT0FBTztBQUNORCx5QkFBUzVzQyxLQUFLLFFBQUEsR0FBQXhPLE9BQVdvQixNQUFJLEdBQUEsRUFBQXBCLE9BQUlxN0MsV0FBVyxDQUFFO2NBQy9DO1lBQ0Q7VUFDRDtBQUVBSCx1QkFBYSxRQUFRO0FBRXJCLGNBQUkvOUMsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEtBQUtGLEdBQUdDLE9BQU9DLElBQUksYUFBYSxNQUFNRixHQUFHQyxPQUFPQyxJQUFJLGFBQWEsR0FBRztBQUVsRyxrQkFBTWkrQyxXQUFXejdDLFNBQVNDLGNBQWMsa0JBQWtCLEVBQUVJO0FBQzVELGtCQUFNbTZDLG1CQUFtQnppRCxRQUFRNmdELE1BQU1RLFlBQVllLHdCQUF3QixhQUFhO0FBQ3hGc0IscUJBQVMxNkMsYUFBYXk1QyxrQkFBa0JpQixTQUFTNXBDLFVBQVU7QUFDM0QsZ0JBQUk5WixRQUFRdUgsUUFBUSxxQkFBcUIsRUFBRTNHLFNBQVMsR0FBRztBQUN0RDZoRCwrQkFBaUJ4NUMsWUFBWWhCLFNBQVNxQixlQUFlLE1BQU0sQ0FBQztBQUM1RCxvQkFBTXE2QyxnQkFBZ0IsSUFBSTFqRCxTQUFTZ08sVUFBVWdELFFBQVE7Z0JBQ3BEbkosTUFBTTtnQkFDTm5ILE1BQU07Y0FDUCxDQUFDO0FBQ0RnakQsNEJBQWN2MUMsT0FBTztnQkFDcEJ0RyxNQUFNO2dCQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtnQkFDdENpRixPQUFPO2NBQ1IsQ0FBQztBQUNEck0sZ0JBQUVLLFFBQVF1SCxRQUFRLHFCQUFxQixDQUFDLEVBQUVrbUIsS0FBSyxDQUFDbTJCLEdBQUdsNkMsTUFBTTtBQUN4RGk2Qyw4QkFBY3YxQyxPQUFPO2tCQUNwQnRHLE1BQU07a0JBQ051RyxPQUFPM0UsRUFBRTJFO2tCQUNUckMsT0FBT3RDLEVBQUVzQztnQkFDVixDQUFDO2NBQ0YsQ0FBQztBQUNEeTJDLCtCQUFpQng1QyxZQUFZMDZDLGNBQWNoMUMsT0FBTyxFQUFFa3ZCLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFO1VBQ0Q7QUFFQXlsQix1QkFBYSxRQUFRO0FBR3JCLGNBQUlyN0MsU0FBU0MsY0FBYyx1QkFBdUIsR0FBRztBQUVwRCxrQkFBTTI3QyxXQUFXNTdDLFNBQVNDLGNBQWMsa0JBQWtCLEVBQUVJO0FBQzVEdTdDLHFCQUFTNzZDLGFBQ1JoSixRQUFRNmdELE1BQU1RLFlBQVllLHdCQUF3QixhQUFhLEdBQy9EeUIsU0FBUy9wQyxVQUNWO1VBQ0QsV0FDQzlaLFFBQVF1SCxRQUFRLG1CQUFtQixFQUFFNEIsU0FBUyxNQUFNLEtBQ3BENUQsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLE1BQzFCRixHQUFHQyxPQUFPQyxJQUFJLGFBQWEsTUFBTUYsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEtBQzVEd0MsU0FBU0MsY0FBYyx1QkFBdUIsSUFDOUM7QUFjRCxrQkFBTXU1QyxTQUFTNWhELE1BQU15SCxLQUFLLGtCQUFrQixFQUFFQSxLQUFLLGNBQWMsRUFBRSxDQUFDLEVBQUVPO0FBQ3RFLGtCQUFNaThDLFNBQVM3N0MsU0FBU0MsY0FBYyxrQkFBa0IsRUFBRUk7QUFDMUR3N0MsbUJBQU85NkMsYUFBYWhKLFFBQVE2Z0QsTUFBTVEsWUFBWUcsY0FBY0MsTUFBTSxHQUFHcUMsT0FBT2hxQyxVQUFVO1VBQ3ZGO1FBQ0Q7UUFDQW1qQyxPQUFPQSxNQUFNO0FBRVosZ0JBQU14d0MsUUFBUXhFLFNBQVNDLGNBQWMsbUJBQW1CLEVBQUVJO0FBQzFEbUUsZ0JBQU16RCxhQUFhaEosUUFBUTZnRCxNQUFNUSxZQUFZZSx3QkFBd0IsY0FBYyxHQUFHMzFDLE1BQU1xTixVQUFVO1FBQ3ZHO01BQ0Q7QUFDQTlaLGNBQVE2Z0QsTUFBTXFCLGVBQWdCNTVDLGdCQUFlO0FBRTVDM0ksVUFBRTJJLFVBQVUsRUFDVnd4QixTQUFTLEVBQ1RyTSxLQUFLLENBQUNDLElBQUl5dkIsU0FBUztBQUNuQkEsZUFBS3RYLFlBQVlzWCxLQUFLcHNDO0FBQ3RCcFIsWUFBRXc5QyxJQUFJLEVBQUVqekMsSUFBSSxlQUFlLFFBQVEsRUFBRUEsSUFBSSxTQUFTLFVBQVU7UUFDN0QsQ0FBQztNQUNIO0FBQ0FsSyxjQUFRNmdELE1BQU1vQixTQUFTLENBQUNuNkMsTUFBTTI1QyxRQUFRRSxLQUFLbnZDLFNBQVM7QUFDbkQsWUFBSWpOLEdBQUcwRSxLQUFLODVDLGNBQWN0QyxNQUFNLEdBQUc7QUFDbENBLG1CQUFTeGhELFNBQVN1aUIsR0FBR3doQyxhQUFhdkMsTUFBTTtRQUN6QztBQUNBLGNBQU0vcUMsV0FBV2xFLFFBQVFqTixHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDbkQsY0FBTTJNLFFBQVF1dkMsT0FBT3A4QyxHQUFHQyxPQUFPQyxJQUFJLGlCQUFpQjtBQUNwRCxZQUFJNk8sVUFBVTtBQUNkLFlBQUlyTSxTQUFTZzhDLGtCQUFrQixlQUFlLEVBQUUsQ0FBQyxNQUFNLFFBQVc7QUFDakUzdkMsb0JBQVVyTSxTQUFTZzhDLGtCQUFrQixlQUFlLEVBQUUsQ0FBQyxFQUFFajRDO1FBQzFEO0FBQ0EsWUFBSWhNLFFBQVE2Z0QsTUFBTWwvQyxpQkFBaUI7QUFDbEMsZ0JBQU11aUQsZUFBZWo4QyxTQUFTWSxjQUFjLE1BQU07QUFDbEQsZUFBS3RELEdBQUd1RixPQUFPbzVDLGNBQWM7WUFDNUJDLFVBQVU7WUFDVjEzQyxPQUFBLEtBQUFyRSxPQUFZb0ssSUFBSTtZQUNoQnpILEtBQUEsZ0JBQUEzQyxPQUFxQnU1QyxHQUFHOztVQUN6QixDQUFDO0FBRUQxaEQsbUJBQVN1VSxPQUFPQyxLQUFLeXZDLFlBQVk7UUFDbEMsT0FBTztBQUNOamtELG1CQUFTdVUsT0FBT0MsS0FBS3hNLFNBQVNDLGNBQWMsa0JBQWtCLENBQUM7QUFDL0RySSxnQkFBTXlILEtBQUssV0FBVyxFQUFFMFYsT0FBTztRQUNoQztBQUNBLGNBQU1WLFNBQVM7VUFDZHhVO1VBQ0FzYyxNQUFNcTlCO1VBQ04yQyxZQUFZLENBQUMzQztVQUNiL3FDO1VBQ0F0RTtVQUNBa0M7UUFDRDtBQUNBLGNBQU14RixRQUFRO1VBQ2J0RSxRQUFRO1VBQ1JzTixNQUFNLENBQUMsUUFBUSxXQUFXO1VBQzFCRCxRQUFRbkI7VUFDUjJ0QyxlQUFlO1VBQ2Zyc0MsU0FBU2hZLFFBQVF1SCxRQUFRLG9CQUFvQjtVQUM3QzJRLFFBQVEsQ0FBQyxPQUFPLGFBQWEsTUFBTTtVQUNuQ29zQyxjQUFjO1VBQ2R6M0IsTUFBTTtVQUNOL2tCLE1BQU07UUFDUDtBQUNBLGNBQU1tc0IsYUFBYSxJQUFJaDBCLFNBQVNxTCxLQUFLQyxJQUNwQ3hMLE9BQU9nSCxNQUFNLGNBQWMsWUFBWSxHQUN2QytILE9BQ0E5TyxRQUFRNmdELE1BQU1scEMsVUFBVWdJLElBQ3pCO0FBQ0FzVSxtQkFBVzNYLFNBQVNBO0FBQ3BCMlgsbUJBQVdwa0IsS0FBSztNQUNqQjtBQUNBN1AsY0FBUTZnRCxNQUFNNEIsbUJBQW9COEIsWUFBVztBQUM1QyxZQUFJandDLFVBQVU7QUFDZCxZQUFJck0sU0FBU2c4QyxrQkFBa0IsZUFBZSxFQUFFLENBQUMsTUFBTSxRQUFXO0FBQ2pFM3ZDLG9CQUFVck0sU0FBU2c4QyxrQkFBa0IsZUFBZSxFQUFFLENBQUMsRUFBRWo0QztRQUMxRDtBQUNBL0wsaUJBQVN1VSxPQUFPQyxLQUFLeE0sU0FBU0MsY0FBYyxrQkFBa0IsQ0FBQztBQUMvRCxjQUFNNEcsUUFBUTtVQUNidEUsUUFBUTtVQUNSc04sTUFBTSxDQUFDLFFBQVEsV0FBVztVQUMxQkQsUUFBUXRTLEdBQUdDLE9BQU9DLElBQUksWUFBWTtVQUNsQ3VTLFNBQVM7VUFDVEQsV0FBV3dzQztVQUNYcnNDLFFBQVEsQ0FBQyxPQUFPLE1BQU07VUFDdEJqSixRQUFRO1VBQ1JxMUMsY0FBYztVQUNkejNCLE1BQU07VUFDTi9rQixNQUFNO1FBQ1A7QUFDQSxjQUFNbXNCLGFBQWEsSUFBSWgwQixTQUFTcUwsS0FBS0MsSUFDcEN4TCxPQUFPZ0gsTUFBTSxjQUFjLFlBQVksR0FDdkMrSCxPQUNBOU8sUUFBUTZnRCxNQUFNbHBDLFVBQVU2c0MsVUFDekI7QUFDQXZ3QixtQkFBVzNYLFNBQVM7VUFDbkJxbEMsS0FBSzRDO1VBQ0xqd0M7UUFDRDtBQUNBMmYsbUJBQVdwa0IsS0FBSztNQUNqQjtBQUNBN1AsY0FBUTZnRCxNQUFNbHBDLFlBQVk7UUFDekI2c0MsWUFBYXAxQyxZQUFXO0FBQ3ZCLGdCQUFNb3dCLFNBQVNwd0IsT0FBT3NuQztBQUN0QixnQkFBTStOLFlBQVlydEMsT0FBT0MsU0FBUzFYLEVBQUU2L0IsTUFBTSxFQUFFbDRCLEtBQUssTUFBTSxFQUFFc1AsS0FBSyxXQUFXLEdBQUcsRUFBRTtBQUM5RSxnQkFBTTh0QyxVQUFVL2tELEVBQUU2L0IsTUFBTSxFQUFFbDRCLEtBQUssTUFBTSxFQUFFc1AsS0FBSyxTQUFTO0FBQ3JELGdCQUFNK3RDLGdCQUFnQmhsRCxFQUFFNi9CLE1BQU0sRUFBRWw0QixLQUFLLEtBQUssRUFBRXNQLEtBQUssY0FBYztBQUMvRCxnQkFBTWd1QyxZQUFZamxELEVBQUU2L0IsTUFBTSxFQUFFbDRCLEtBQUssUUFBUSxFQUFFc1AsS0FBSyxXQUFXO0FBQzNELGdCQUFNaXVDLGdCQUFnQnp0QyxPQUFPQyxTQUFTMVgsRUFBRTYvQixNQUFNLEVBQUVsNEIsS0FBSyxLQUFLLEVBQUVzUCxLQUFLLE9BQU8sR0FBRyxFQUFFO0FBQzdFLGdCQUFNa3VDLGVBQWVubEQsRUFBRTYvQixNQUFNLEVBQUVsNEIsS0FBSyxLQUFLLEVBQUVzUCxLQUFLLE1BQU07QUFDdEQsZ0JBQU1tdUMscUJBQXFCLE9BQU9wbEQsRUFBRTYvQixNQUFNLEVBQUVsNEIsS0FBSyxLQUFLLEVBQUVzUCxLQUFLLFlBQVksTUFBTTtBQUMvRSxjQUFJaXVDLGtCQUFrQnoxQyxPQUFPa04sT0FBT3FsQyxLQUFLO0FBQ3hDdnlDLG1CQUFPOFAsU0FBUzlKLE1BQ2ZyVixPQUFPZ0gsTUFDTiwwQkFDQSx3QkFDRCxDQUNEO0FBQ0E7VUFDRDtBQUNBLGdCQUFNaStDLG1CQUFtQmpuQixPQUFBLEdBQUEzMUIsT0FDckJySSxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsR0FBQyxrQ0FBQSxHQUN2Q3FJLE9BQU9rTixPQUFPaEksT0FDZjtBQUNBLGNBQUkwd0MscUJBQXFCLE1BQU07QUFDOUI1MUMsbUJBQU84UCxTQUFTOUosTUFBTXJWLE9BQU9nSCxNQUFNLFVBQVUsU0FBUyxDQUFDO0FBQ3ZEO1VBQ0Q7QUFDQSxnQkFBTXVOLFVBQVV0VSxRQUFRNmdELE1BQU1vRSxjQUM3QmxsRCxPQUFPZ0gsTUFBTSxvQkFBb0Isa0JBQWtCLElBQUk4OUMsZUFDdkRFLHFCQUFxQixPQUFPRCxjQUM1QkUsZ0JBQ0Q7QUFDQSxnQkFBTWwyQyxRQUFRO1lBQ2J0RSxRQUFRO1lBQ1JpQyxPQUFPbEgsR0FBR0MsT0FBT0MsSUFBSSxZQUFZO1lBQ2pDNk87WUFDQWdjLE1BQU10d0IsUUFBUUs7WUFDZGt3QixPQUFPcTBCO1lBQ1BNLE1BQU1UO1lBQ05VLFdBQVdOO1lBQ1hPLGVBQWVWO1lBQ2ZXLGdCQUFnQlY7WUFDaEJXLE9BQU90bEQsUUFBUXVILFFBQVEsMEJBQTBCLEVBQUU0QixTQUFTLE9BQU8sSUFBSSxPQUFPO1lBQzlFbzhDLEtBQUs7VUFDTjtBQUVBLGNBQUl2bEQsUUFBUXVILFFBQVEsb0JBQW9CLEVBQUU0QixTQUFTLE9BQU8sR0FBRztBQUM1RCxrQkFBTXE4QyxnQkFBZ0J4bEQsUUFBUXVILFFBQVEscUJBQXFCO0FBQzNELGdCQUFJLENBQUNpK0MsaUJBQWlCQSxrQkFBa0IsTUFBTTtBQUM3QzEyQyxvQkFBTTIyQyxZQUFZO1lBQ25CLFdBQVdELGtCQUFrQixhQUFhQSxrQkFBa0IsZUFBZTtBQUMxRTEyQyxvQkFBTTIyQyxZQUFZO1lBQ25CLE9BQU87QUFDTjMyQyxvQkFBTTIyQyxZQUFZO0FBRWxCLGtCQUFJLE9BQU9ELGtCQUFrQixZQUFZQSxrQkFBa0IsT0FBTztBQUNqRTEyQyxzQkFBTXU2QixrQkFBa0JtYztjQUN6QjtZQUNEO1VBQ0Q7QUFDQXZsRCxtQkFBU3FMLEtBQUtvSixnQkFBZ0JDLFdBQVdwUCxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDbkV4RixtQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM7QUFDdkMsZ0JBQU1xZixhQUFhLElBQUloMEIsU0FBU3FMLEtBQUtDLElBQ3BDeEwsT0FBT2dILE1BQU0sVUFBVSxRQUFRLEdBQy9CK0gsT0FDQTlPLFFBQVE2Z0QsTUFBTWxwQyxVQUFVK3RDLFVBQ3hCdDJDLE9BQU84UCxRQUNSO0FBQ0ErVSxxQkFBVzNYLFNBQVNsTixPQUFPa047QUFDM0IyWCxxQkFBV3BrQixLQUFLO1FBQ2pCO1FBQ0E4UCxNQUFPdlEsWUFBVztBQUNqQixnQkFBTW93QixTQUFTcHdCLE9BQU9zbkM7QUFDdEIsY0FBSS8yQyxFQUFFNi9CLE1BQU0sRUFBRWw0QixLQUFLLFNBQVMsRUFBRXNQLEtBQUssTUFBTSxNQUFNLFFBQVc7QUFDekR4SCxtQkFBTzhQLFNBQVM5SixNQUFNLG1EQUFtRDtBQUN6RTtVQUNEO0FBQ0EsZ0JBQU1xdkMsWUFBWXJ0QyxPQUFPQyxTQUFTMVgsRUFBRTYvQixNQUFNLEVBQUVsNEIsS0FBSyxNQUFNLEVBQUVzUCxLQUFLLFdBQVcsR0FBRyxFQUFFO0FBQzlFLGdCQUFNOHRDLFVBQVUva0QsRUFBRTYvQixNQUFNLEVBQUVsNEIsS0FBSyxNQUFNLEVBQUVzUCxLQUFLLFNBQVM7QUFDckQsZ0JBQU0rdEMsZ0JBQWdCaGxELEVBQUU2L0IsTUFBTSxFQUFFbDRCLEtBQUssS0FBSyxFQUFFc1AsS0FBSyxjQUFjO0FBQy9ELGdCQUFNZ3VDLFlBQVlqbEQsRUFBRTYvQixNQUFNLEVBQUVsNEIsS0FBSyxRQUFRLEVBQUVzUCxLQUFLLFdBQVc7QUFDM0QsZ0JBQU0rdUMsT0FBT2htRCxFQUFFNi9CLE1BQU0sRUFBRWw0QixLQUFLLEtBQUs7QUFDakMsZ0JBQU07WUFBQzRYO1VBQVEsSUFBSTlQO0FBQ25CLGdCQUFNO1lBQUNrTjtVQUFNLElBQUlsTjtBQUNqQixjQUFJdTJDLEtBQUsva0QsU0FBUyxHQUFHO0FBQ3BCc2UscUJBQVM5SixNQUFNclYsT0FBT2dILE1BQU0saUJBQWlCLGVBQWUsQ0FBQztBQUM3RDtVQUNEO0FBQ0EsZ0JBQU0sQ0FBQ29FLEdBQUcsSUFBSXc2QztBQUNkLGdCQUFNQyxXQUFXejZDLElBQUlpTixhQUFhLE1BQU07QUFDeEMsY0FBSXFzQyxZQUFZbm9DLE9BQU9sSyxPQUFPO0FBQzdCblMscUJBQVN1VSxPQUFPWSxNQUNmclYsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCaEgsT0FBT2dILE1BQ04sQ0FDQyxvQkFDQTlHLFNBQVM0TSxTQUFTLFVBQVU0M0MsU0FBUyxHQUNyQyx1REFBQSxHQUVELENBQ0Msb0JBQ0F4a0QsU0FBUzRNLFNBQVMsVUFBVTQzQyxTQUFTLEdBQ3JDLHVEQUFBLENBRUYsQ0FDRDtBQUNBO1VBQ0Q7QUFFQSxjQUFJb0IsV0FBV3ZwQyxPQUFPOEgsUUFBUXBrQixRQUFRNmdELE1BQU1PO0FBQzVDLGNBQUlsdEMsUUFBUTtBQUNaLGNBQUlvSSxPQUFPbEssVUFBVXF5QyxXQUFXO0FBRy9Cbm9DLG1CQUFPOEgsT0FBT3doQztBQUNkQyx1QkFBV3ZwQyxPQUFPOEgsUUFBUXBrQixRQUFRNmdELE1BQU1PO1VBQ3pDLE9BQU87QUFDTm5oRCxxQkFBU3VVLE9BQU9wVSxLQUNmLE1BQ0FMLE9BQU9nSCxNQUNOLENBQ0MsV0FDQTlHLFNBQVM0TSxTQUFTLFVBQVU0M0MsU0FBUyxHQUNyQyxjQUNBeGtELFNBQVM0TSxTQUFTLFVBQVV5UCxPQUFPbEssS0FBSyxHQUN4QyxJQUFBLEdBRUQsQ0FDQyxXQUNBblMsU0FBUzRNLFNBQVMsVUFBVTQzQyxTQUFTLEdBQ3JDLGNBQ0F4a0QsU0FBUzRNLFNBQVMsVUFBVXlQLE9BQU9sSyxLQUFLLEdBQ3hDLEtBQUEsQ0FFRixDQUNEO0FBQ0EsZ0JBQUl3ekMsYUFBYXRwQyxPQUFPOEgsTUFBTTtBQUM3QixzQkFBUTlILE9BQU94VSxNQUFBO2dCQUNkLEtBQUs7QUFDSjdILDJCQUFTdVUsT0FBT3lNLEtBQUtsaEIsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQUcsQ0FDOUNoSCxPQUFPZ0gsTUFBTSxZQUFZLFVBQVUsR0FDbkM5RyxTQUFTNE0sU0FBUyxVQUFVZzVDLFFBQVEsR0FDcEM5bEQsT0FBT2dILE1BQ04sdUJBQ0EscUJBQ0QsQ0FBQSxDQUNBO0FBQ0Q7Z0JBQ0Q7QUFDQzlHLDJCQUFTdVUsT0FBT3BVLEtBQUssTUFBTSxDQUMxQkwsT0FBT2dILE1BQU0sWUFBWSxVQUFVLEdBQ25DOUcsU0FBUzRNLFNBQVMsVUFBVWc1QyxRQUFRLEdBQ3BDOWxELE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0IsQ0FBQSxDQUMvQztBQUNEO2NBQ0Y7WUFDRCxXQUNDdVYsT0FBT3hVLFNBQVM7O1lBRWhCOUgsUUFBUTZnRCxNQUFNTSxZQUFZaDRDLFNBQVNnQyxJQUFJaU4sYUFBYSxNQUFNLENBQUMsS0FDM0R1dEMsS0FBSy9rRCxTQUFTLEtBQ2Qra0QsS0FBSyxDQUFDLEVBQUV2dEMsYUFBYSxPQUFPLE1BQU1rRSxPQUFPbEssT0FDeEM7QUFDRG5TLHVCQUFTdVUsT0FBT3lNLEtBQ2ZsaEIsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCaEgsT0FBT2dILE1BQ04sQ0FDQyxZQUNBOUcsU0FBUzRNLFNBQVMsVUFBVSs0QyxRQUFRLEdBQ3BDLGtDQUFBLEdBRUQsQ0FDQyxZQUNBM2xELFNBQVM0TSxTQUFTLFVBQVUrNEMsUUFBUSxHQUNwQyxrQ0FBQSxDQUVGLENBQ0Q7QUFDQTF4QyxzQkFBUTtZQUNULE9BQU87QUFDTmpVLHVCQUFTdVUsT0FBT1ksTUFDZnJWLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QmhILE9BQU9nSCxNQUNOLENBQ0MsWUFDQTlHLFNBQVM0TSxTQUFTLFVBQVUrNEMsUUFBUSxHQUNwQyw4QkFBQSxHQUVELENBQ0MsWUFDQTNsRCxTQUFTNE0sU0FBUyxVQUFVKzRDLFFBQVEsR0FDcEMsOEJBQUEsQ0FFRixDQUNEO0FBQ0E7WUFDRDtVQUNEO0FBQ0EsY0FBSTVsRCxRQUFRNmdELE1BQU1NLFlBQVloNEMsU0FBU21ULE9BQU84SCxJQUFJLEdBQUc7QUFDcEQsb0JBQVE5SCxPQUFPeFUsTUFBQTtjQUNkLEtBQUs7QUFDSjdILHlCQUFTdVUsT0FBT3lNLEtBQUtsaEIsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQUcsQ0FDOUNoSCxPQUFPZ0gsTUFBTSxPQUFPLEtBQUssR0FDekI5RyxTQUFTNE0sU0FBUyxVQUFVZzVDLFFBQVEsR0FDcEM5bEQsT0FBT2dILE1BQ04sdUNBQ0EscUNBQ0QsQ0FBQSxDQUNBO0FBQ0RtTix3QkFBUTtBQUNSb0ksdUJBQU84SCxPQUFPdWhDLEtBQUssQ0FBQyxFQUFFdnRDLGFBQWEsTUFBTTtBQUN6Q2tFLHVCQUFPOG5DLGFBQWF1QixLQUFLLENBQUMsRUFBRXZ0QyxhQUFhLFlBQVksTUFBTTtBQUMzRDtjQUdELFNBQVM7QUFDUixzQkFBTTB0QyxPQUFPcnlDLFFBQ1oxVCxPQUFPZ0gsTUFDTiw0QkFDQSwwQkFDRCxJQUNDOCtDLFdBQ0E5bEQsT0FBT2dILE1BQ04saUNBQ0EsK0JBQ0QsQ0FDRjtBQUNBLG9CQUFJKytDLE1BQU07QUFDVDdsRCwyQkFBU3VVLE9BQU95TSxLQUFLbGhCLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUFHLENBQzlDaEgsT0FBT2dILE1BQU0sT0FBTyxLQUFLLEdBQ3pCOUcsU0FBUzRNLFNBQVMsVUFBVWc1QyxRQUFRLEdBQ3BDOWxELE9BQU9nSCxNQUNOLHlDQUNBLHVDQUNELENBQUEsQ0FDQTtBQUNEbU4sMEJBQVE7QUFDUm9JLHlCQUFPOEgsT0FBT3VoQyxLQUFLLENBQUMsRUFBRXZ0QyxhQUFhLE1BQU07QUFDekNrRSx5QkFBTzhuQyxhQUFhdUIsS0FBSyxDQUFDLEVBQUV2dEMsYUFBYSxZQUFZLE1BQU07QUFDM0R5dEMsNkJBQVd2cEMsT0FBTzhILFFBQVFwa0IsUUFBUTZnRCxNQUFNTztnQkFDekMsT0FBTztBQUNObmhELDJCQUFTdVUsT0FBT3BVLEtBQUssTUFBTSxDQUMxQkwsT0FBT2dILE1BQU0sT0FBTyxLQUFLLEdBQ3pCOUcsU0FBUzRNLFNBQVMsVUFBVWc1QyxRQUFRLEdBQ3BDOWxELE9BQU9nSCxNQUNOLHlDQUNBLHVDQUNELENBQUEsQ0FDQTtnQkFDRjtBQUNBO2NBQ0Q7WUFDRDtVQUNEO0FBQ0EsY0FBSTByQixRQUFRO0FBQ1osY0FBSTdDLFFBQVE7QUFDWixtQkFBU2lOLElBQUkzb0IsT0FBTzJvQixJQUFJOG9CLEtBQUsva0QsUUFBUSxFQUFFaThCLEdBQUc7QUFDekMsY0FBRWpOO0FBQ0YsZ0JBQUkrMUIsS0FBSzlvQixDQUFDLEVBQUV6a0IsYUFBYSxNQUFNLE1BQU1rRSxPQUFPOEgsTUFBTTtBQUNqRHFPLHNCQUFRb0s7QUFDUjtZQUNEO1VBQ0Q7QUFDQSxjQUFJLENBQUNwSyxPQUFPO0FBQ1h2VCxxQkFBUzlKLE1BQU0sQ0FDZHJWLE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0IsR0FDL0M5RyxTQUFTNE0sU0FBUyxVQUFVZzVDLFFBQVEsR0FDcEM5bEQsT0FBT2dILE1BQ04seUJBQ0EsdUJBQ0QsSUFDQ3hCLEdBQUdtWSxTQUFTaWlDLGNBQWMzL0MsUUFBUXVILFFBQVEsb0JBQW9CLENBQUMsSUFDL0R4SCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FBQSxDQUM5QjtBQUNEO1VBQ0Q7QUFDQSxjQUFJLENBQUM2b0IsT0FBTztBQUNYM3ZCLHFCQUFTdVUsT0FBT1ksTUFDZnJWLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QmhILE9BQU9nSCxNQUNOLDhEQUNBLDREQUNELENBQ0Q7QUFDQTtVQUNEO0FBQ0EsZ0JBQU1nL0MsZ0JBQWdCSixLQUFLbHpCLEtBQUs7QUFDaEMsY0FBSXV6QixnQ0FBZ0M7QUFDcEMsY0FBSTFwQyxPQUFPeFUsU0FBUyxVQUFVOG5CLFFBQVEsR0FBRztBQUN4QyxnQkFDQyxDQUFDbmMsUUFDQW95QyxXQUNDOWxELE9BQU9nSCxNQUFNLFdBQVcsU0FBUyxJQUNqQ3hCLEdBQUdtWSxTQUFTaWlDLGNBQWMvdkIsS0FBSyxJQUMvQjd2QixPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZSxDQUMvQyxHQUNDO0FBQ0Q5Ryx1QkFBU3VVLE9BQU95TSxLQUFLLE1BQU1saEIsT0FBT2dILE1BQU0sVUFBVSxTQUFTLENBQUM7QUFDNUQ7WUFDRDtBQUNBaS9DLDRDQUFnQztVQUNqQztBQUNBMXBDLGlCQUFPc1QsUUFBUUE7QUFDZnRULGlCQUFPM0ssU0FBU28wQyxjQUFjM3RDLGFBQWEsT0FBTztBQUNsRGtFLGlCQUFPMnBDLFdBQVdGLGNBQWMzdEMsYUFBYSxNQUFNO0FBQ25Ea0UsaUJBQU80cEMsaUJBQWlCSCxjQUFjM3RDLGFBQWEsWUFBWSxNQUFNO0FBQ3JFOEcsbUJBQVMxSyxPQUFPLENBQ2Z2VSxTQUFTNE0sU0FBUyxVQUFVdEgsR0FBR21ZLFNBQVNpaUMsY0FBYy92QixLQUFLLENBQUMsR0FDNUQ3dkIsT0FBT2dILE1BQU0sY0FBYyxZQUFZLEdBQ3ZDOUcsU0FBUzRNLFNBQVMsVUFBVXlQLE9BQU80cEMsaUJBQWlCbG1ELFFBQVE2Z0QsTUFBTU8sYUFBYTlrQyxPQUFPMnBDLFFBQVEsR0FDOUZsbUQsT0FBT2dILE1BQU0sYUFBYSxXQUFXLEdBQ3JDOUcsU0FBUzRNLFNBQVMsVUFBVXlQLE9BQU8zSyxNQUFNLENBQUEsQ0FDekM7QUFDRCxjQUFJMkM7QUFDSixjQUFJNnhDO0FBQ0osa0JBQVE3cEMsT0FBT3hVLE1BQUE7WUFDZCxLQUFLO0FBQ0p3TSx3QkFBVXRVLFFBQVE2Z0QsTUFBTW9FLGNBQUEsYUFBQTc4QyxPQUNWa1UsT0FBT3NULEtBQUssRUFBQXhuQixPQUFHckksT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQUMsRUFBQXFCLE9BQzNEa1UsT0FBTzRwQyxpQkFBaUJsbUQsUUFBUTZnRCxNQUFNTyxhQUFhOWtDLE9BQU8ycEMsUUFDM0QsRUFBQTc5QyxPQUFHckksT0FBT2dILE1BQU0sY0FBYyxZQUFZLENBQUMsR0FDM0N1VixPQUFPOG5DLGFBQWEsT0FBTzluQyxPQUFPOEgsSUFDbkM7QUFDQTtZQUdEO0FBQ0Msa0JBQUlwa0IsUUFBUXVILFFBQVEsMkJBQTJCLEdBQUc7QUFDakQ0K0MsZ0NBQWdCcG9CLE9BQUEsR0FBQTMxQixPQUNackksT0FBT2dILE1BQU0sWUFBWSxVQUFVLEdBQUMsZ0NBQUEsR0FDdkN1VixPQUFPaEksT0FDUjtBQUNBLG9CQUFJNnhDLGtCQUFrQixNQUFNO0FBQzNCam5DLDJCQUFTOUosTUFBTXJWLE9BQU9nSCxNQUFNLFdBQVcsVUFBVSxDQUFDO0FBQ2xEO2dCQUNEO0FBQ0FpL0MsZ0RBQWdDO2NBQ2pDO0FBQ0ExeEMsd0JBQVV0VSxRQUFRNmdELE1BQU1vRSxjQUFBLGFBQUE3OEMsT0FDVmtVLE9BQU9zVCxLQUFLLEVBQUF4bkIsT0FBR3JJLE9BQU9nSCxNQUFNLE9BQU8sS0FBSyxDQUFDLEdBQ3REdVYsT0FBTzhuQyxhQUFhLE9BQU85bkMsT0FBTzhILE1BQ2xDK2hDLGFBQ0Q7QUFDQTtVQUNGO0FBQ0EsY0FDQ25tRCxRQUFRdUgsUUFBUSxnQkFBZ0IsS0FDaEMsQ0FBQ3krQyxpQ0FDRCxDQUFDdnlDLFFBQVExVCxPQUFPZ0gsTUFBTSxjQUFjLFlBQVksQ0FBQyxHQUNoRDtBQUNEbVkscUJBQVM5SixNQUFNclYsT0FBT2dILE1BQU0sV0FBVyxVQUFVLENBQUM7QUFDbEQ7VUFDRDtBQUVBLGNBQ0MsQ0FBQy9HLFFBQVE2Z0QsTUFBTUcsWUFDZmhoRCxRQUFRdUgsUUFBUSxjQUFjLEVBQUU0QixTQUFTbVQsT0FBT3hVLElBQUksS0FDcEQsQ0FBQ3dVLE9BQU84bkMsY0FDUjcrQyxHQUFHQyxPQUFPQyxJQUFJLFlBQVksTUFBTTZXLE9BQU84SCxNQUN0QztBQUNEOUgsbUJBQU84cEMsYUFBYTtBQUVwQjlwQyxtQkFBT3pELGVBQWUxTixJQUFJaU4sYUFBYSxXQUFXO1VBQ25EO0FBQ0EsZ0JBQU10SixRQUFRO1lBQ2J0RSxRQUFRO1lBQ1JpQyxPQUFPNlAsT0FBTzVGO1lBQ2RwQztZQUNBZ2MsTUFBTXR3QixRQUFRSztZQUNka3dCLE9BQU9xMEI7WUFDUE0sTUFBTVQ7WUFDTlUsV0FBVzdvQyxPQUFPM0s7WUFDbEJ5ekMsZUFBZVY7WUFDZlcsZ0JBQWdCVjtZQUNoQlcsT0FBT3RsRCxRQUFRdUgsUUFBUSwwQkFBMEIsRUFBRTRCLFNBQVNtVCxPQUFPeFUsSUFBSSxJQUFJLE9BQU87WUFDbEZ5OUMsS0FBSztVQUNOO0FBRUEsY0FBSXZsRCxRQUFRdUgsUUFBUSxvQkFBb0IsRUFBRTRCLFNBQVNtVCxPQUFPeFUsSUFBSSxHQUFHO0FBQ2hFLGtCQUFNMDlDLGdCQUFnQnhsRCxRQUFRdUgsUUFBUSxxQkFBcUI7QUFDM0QsZ0JBQUksQ0FBQ2krQyxpQkFBaUJBLGtCQUFrQixNQUFNO0FBQzdDMTJDLG9CQUFNMjJDLFlBQVk7WUFDbkIsV0FBV0Qsa0JBQWtCLGFBQWFBLGtCQUFrQixlQUFlO0FBQzFFMTJDLG9CQUFNMjJDLFlBQVk7WUFDbkIsT0FBTztBQUNOMzJDLG9CQUFNMjJDLFlBQVk7QUFFbEIsa0JBQUksT0FBT0Qsa0JBQWtCLFlBQVlBLGtCQUFrQixPQUFPO0FBQ2pFMTJDLHNCQUFNdTZCLGtCQUFrQm1jO2NBQ3pCO1lBQ0Q7VUFDRDtBQUNBLGNBQUksQ0FBQ3hsRCxRQUFRNmdELE1BQU1sL0MsaUJBQWlCO0FBQ25DMUIscUJBQVNxTCxLQUFLb0osZ0JBQWdCQyxXQUFXMkgsT0FBTzVGO1VBQ2pEO0FBQ0F6VyxtQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM7QUFDdkMsZ0JBQU1xZixhQUFhLElBQUloMEIsU0FBU3FMLEtBQUtDLElBQ3BDeEwsT0FBT2dILE1BQU0sVUFBVSxRQUFRLEdBQy9CK0gsT0FDQTlPLFFBQVE2Z0QsTUFBTWxwQyxVQUFVK3RDLFVBQ3hCeG1DLFFBQ0Q7QUFDQStVLHFCQUFXM1gsU0FBU0E7QUFDcEIyWCxxQkFBV3BrQixLQUFLO1FBQ2pCO1FBQ0E2MUMsVUFBV3QyQyxZQUFXO0FBRXJCLGdCQUFNaTNDLE1BQU1qM0MsT0FBT2lsQixPQUFPO0FBQzFCLGdCQUFNaXlCLFFBQVEzbUQsRUFBRTBtRCxHQUFHLEVBQUUvK0MsS0FBSyxNQUFNO0FBQ2hDLGNBQUkzSCxFQUFFMG1ELEdBQUcsRUFBRS8rQyxLQUFLLFNBQVMsRUFBRTFHLFNBQVMsR0FBRztBQUN0Q3dPLG1CQUFPOFAsU0FBUzlKLE1BQ2ZyVixPQUFPZ0gsTUFBTSxzQkFBc0Isb0JBQW9CLENBQ3hEO1VBQ0QsV0FBV3UvQyxNQUFNMXZDLEtBQUssVUFBVSxNQUFNLElBQUk7QUFDekN4SCxtQkFBTzhQLFNBQVM5SixNQUNmclYsT0FBT2dILE1BQ04seUJBQ0EsdUJBQ0QsQ0FDRDtVQUNELE9BQU87QUFDTnFJLG1CQUFPOFAsU0FBUytCLEtBQUssSUFBSTtBQUN6QixrQkFBTTtjQUFDM0U7WUFBTSxJQUFJbE47QUFDakIsZ0JBQUlrTixPQUFPOHBDLGNBQWMsQ0FBQzlwQyxPQUFPOG5DLFlBQVk7QUFFNUNua0QsdUJBQVN1VSxPQUFPeU0sS0FBS2xoQixPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FBRyxDQUM5Q2hILE9BQU9nSCxNQUFNLFNBQVMsUUFBUSxHQUM5QjlHLFNBQVM0TSxTQUFTLFVBQVV5UCxPQUFPOEgsSUFBSSxHQUN2Q3JrQixPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FBQSxDQUM3QjtBQUNELG9CQUFNdy9DLGNBQWM7Z0JBQ25COTVDLE9BQUEsYUFBQXJFLE9BQW9Ca1UsT0FBTzhILElBQUk7Z0JBQy9CNVosUUFBUTtnQkFDUndHLFNBQVM7Z0JBQ1RzdUIsWUFBWWhqQixPQUFPNUYsU0FBUzNELFFBQVEsTUFBTSxHQUFHO2dCQUM3Q3l6QyxpQkFBaUJscUMsT0FBT2xLO2dCQUN4QnlHLGNBQWN5RCxPQUFPekQ7Z0JBQ3JCNHRDLHFCQUFxQm5xQyxPQUFPM0s7Z0JBQzVCN0osTUFBTXdVLE9BQU94VTtnQkFDYjhuQixPQUFPdFQsT0FBT3NUO2NBQ2Y7QUFDQSxzQkFBUTV2QixRQUFRdUgsUUFBUSxrQkFBa0IsR0FBQTtnQkFDekMsS0FBSztBQUNKeEgseUJBQU93L0IsS0FBS2g2QixHQUFHMEUsS0FBS00sT0FBTyxJQUFJZzhDLFdBQVcsR0FBRyxVQUFVLHFCQUFxQjtBQUM1RTtnQkFDRCxLQUFLO0FBQ0p4bUQseUJBQU93L0IsS0FDTmg2QixHQUFHMEUsS0FBS00sT0FBTyxJQUFJZzhDLFdBQVcsR0FDOUIsVUFDQSwwR0FDRDtBQUNBO2dCQUdEO0FBQ0N4bUQseUJBQU93L0IsS0FDTmg2QixHQUFHMEUsS0FBS00sT0FBTyxJQUFJZzhDLFdBQVcsR0FDOUJ4bUQsT0FBT1ksU0FBUyxzQkFBc0IsV0FBVyxxQkFDakRaLE9BQU9ZLFNBQVMsc0JBQ2IseUJBQ0Esc0ZBRUo7QUFDQTtjQUNGO1lBQ0Q7VUFDRDtRQUNEO01BQ0Q7QUFHQVgsY0FBUTZnRCxNQUFNb0UsZ0JBQWdCLENBQUN5QixlQUFlcDBCLFVBQVVxMEIsaUJBQWlCO0FBQ3hFLFlBQUlqNEMsU0FBU2c0QztBQUViLFlBQUlDLGNBQWM7QUFDakJqNEMsb0JBQUEsSUFBQXRHLE9BQWNuSSxTQUFTZ1QsT0FBT1kscUJBQXFCOHlDLFlBQVksQ0FBQztRQUNqRTtBQUlBLFlBQUksU0FBU3grQyxLQUFLdStDLGFBQWEsR0FBRztBQUNqQyxjQUFJcDBCLFVBQVU7QUFDYixrQkFBTXMwQixZQUFZQyxTQUFTQyxtQkFBbUJwNEMsT0FBT3FFLFFBQVEsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFblM7QUFDNUUsa0JBQU1tbUQsZUFBQSwyQkFBQTMrQyxPQUEwQ2txQixVQUFRLEdBQUEsRUFBQWxxQixPQUFJa3FCLFVBQVEsSUFBQTtBQUNwRSxrQkFBTTAwQixjQUFjSCxTQUFTQyxtQkFBbUJDLFlBQVksQ0FBQyxFQUFFbm1EO0FBQy9ELGdCQUFJZ21ELFlBQVlJLGVBQWUsS0FBSztBQUNuQyxvQkFBTXhELFdBQUEsZ0JBQUFwN0MsT0FBMkJrcUIsUUFBUSxFQUFBbHFCLE9BQUdySSxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQztBQUM1RSxrQkFBSTYvQyxZQUFZSSxjQUFjSCxTQUFTQyxtQkFBbUJ0RCxRQUFRLENBQUMsRUFBRTVpRCxVQUFVLEtBQUs7QUFDbkY4Tix5QkFBU3pPLFNBQVNnVCxPQUFPK2lCLFlBQVl0bkIsUUFBUSxTQUFTcTRDLGVBQWV2RCxRQUFRO2NBQzlFLE9BQU87QUFDTjkwQyx5QkFBU3pPLFNBQVNnVCxPQUFPK2lCLFlBQVl0bkIsUUFBUSxTQUFTcTRDLFlBQVk7Y0FDbkU7WUFDRCxPQUFPO0FBQ05yNEMsdUJBQVN6TyxTQUFTZ1QsT0FBTytpQixZQUFZdG5CLFFBQVEsU0FBUzRqQixRQUFRO1lBQy9EO1VBQ0QsT0FBTztBQUNONWpCLHFCQUFTek8sU0FBU2dULE9BQU8raUIsWUFBWXRuQixRQUFRLFNBQVMxTyxRQUFRNmdELE1BQU1PLFVBQVU7VUFDL0U7UUFDRDtBQUNBLGVBQU8xeUM7TUFDUjtBQUNBMU8sY0FBUVMsZ0JBQWdCVCxRQUFRNmdELE9BQU8sT0FBTztJQUMvQyxHQUFHNXpDLE1BQU07RUFBQTtBQUFBLENBQUE7O0FDdDVCVCxJQUFBZzZDLDZCQUFBLENBQUE7QUFBQSxJQUFBQywwQkFBQXpuRCxNQUFBO0VBQUEsOENBQUE7QUFBQTtJQUdBO0FBQ0EsS0FBQyxTQUFTMG5ELG1CQUFtQnhuRCxHQUFHO0FBQy9CLFlBQU1FLFFBQVFGLEVBQUUsTUFBTTtBQU10QkssY0FBUW9uRCxjQUFjLE1BQU07QUFDM0IsWUFDQ25uRCxTQUFTZ0IsZ0JBQ1BzRSxHQUFHQyxPQUFPQyxJQUFJLGlCQUFpQixLQUFLRixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixJQUFJLEtBQzFFRixHQUFHQyxPQUFPQyxJQUFJLDRCQUE0QixNQUFNLGlCQUNoREYsR0FBR0MsT0FBT0MsSUFBSSw0QkFBNEIsTUFBTSxvQkFDaEQ7QUFDRHpGLGtCQUFRNkosZUFDUDdKLFFBQVFvbkQsWUFBWTM1QyxVQUNwQjFOLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QixZQUNBaEgsT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQixDQUNoRDtRQUNEO01BQ0Q7QUFDQS9HLGNBQVFvbkQsWUFBWUMsY0FBYyxDQUFDO0FBRW5DLFVBQUlDO0FBQ0p0bkQsY0FBUW9uRCxZQUFZMzVDLFdBQVcsTUFBTTtBQUNwQzY1Qyx5QkFBaUI7QUFDakIsY0FBTTM1QyxTQUFTLElBQUkxTixTQUFTMk4sYUFBYSxLQUFLLEdBQUc7QUFDakRELGVBQU9FLFNBQVM5TixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQztBQUM1QzRHLGVBQU9HLGNBQWMsU0FBUztBQUM5QkgsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxHQUFHLHNCQUFzQjtBQUNuRixjQUFNaUgsT0FBTyxJQUFJL04sU0FBU2dPLFVBQVVqTyxRQUFRb25ELFlBQVkzNUMsU0FBU1MsUUFBUTtBQUN6RUYsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOaUgsTUFBTSxDQUNMO1lBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDbENwRyxNQUFNO1lBQ05xTCxPQUFPO1lBQ1BpWCxTQUFTO1lBQ1RrRyxVQUFVO2NBQ1RyaEIsTUFBTTtjQUNOaUgsTUFBTSxDQUNMO2dCQUNDVixPQUFPdE8sT0FBT2dILE1BQ2IscUJBQ0Esb0JBQ0Q7Z0JBQ0FwRyxNQUFNO2dCQUNOcUwsT0FBTztnQkFDUGlYLFNBQVM7Y0FDVixHQUNBO2dCQUNDNVUsT0FBT3RPLE9BQU9nSCxNQUFNLGdCQUFnQixnQkFBZ0I7Z0JBQ3BEcEcsTUFBTTtnQkFDTnFMLE9BQU87Z0JBQ1BpWCxTQUFTO2NBQ1YsR0FDQTtnQkFDQzVVLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7Z0JBQzlDcEcsTUFBTTtnQkFDTnFMLE9BQU87Z0JBQ1BpWCxTQUFTO2dCQUNUM1UsT0FBT3RPLFFBQVFvbkQsWUFBWTM1QyxTQUFTODVDO2dCQUNwQ3ArQixVQUFVO2tCQUNUcmhCLE1BQU07a0JBQ05pSCxNQUFNLENBQ0w7b0JBQ0NWLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7b0JBQ2hEcEcsTUFBTTtvQkFDTnFMLE9BQU87a0JBQ1IsR0FDQTtvQkFDQ3FDLE9BQU90TyxPQUFPZ0gsTUFDYixpQkFDQSxpQkFDRDtvQkFDQXBHLE1BQU07b0JBQ05xTCxPQUFPO2tCQUNSLEdBQ0E7b0JBQ0NxQyxPQUFPdE8sT0FBT2dILE1BQ2IsMEJBQ0Esd0JBQ0Q7b0JBQ0FwRyxNQUFNO29CQUNOcUwsT0FBTztrQkFDUixDQUFBO2dCQUVGO2NBQ0QsQ0FBQTtZQUVGO1VBQ0QsR0FDQTtZQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUI7WUFDeERwRyxNQUFNO1lBQ05xTCxPQUFPO1lBQ1BpWCxTQUFTO1VBQ1YsR0FDQTtZQUNDNVUsT0FBT3RPLE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0I7WUFDdERwRyxNQUFNO1lBQ05xTCxPQUFPO1lBQ1BpWCxTQUFTO1VBQ1YsQ0FBQTtRQUVGLENBQUM7QUFDRGpWLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU87VUFDUEksT0FBTztVQUNQTSxNQUFNL08sUUFBUW9uRCxZQUFZSTtVQUMxQmw1QyxPQUFPdE8sUUFBUW9uRCxZQUFZMzVDLFNBQVNnNkM7UUFDckMsQ0FBQztBQUNEejVDLGFBQUtJLE9BQU87VUFDWHpOLE1BQU07VUFDTm1ILE1BQU07VUFDTnVHLE9BQU87VUFDUG1KLE1BQU07UUFDUCxDQUFDO0FBQ0QsY0FBTTFJLFFBQVE7VUFDYnRFLFFBQVE7VUFDUnNOLE1BQU07VUFDTml4QixRQUFRO1VBQ1I3d0IsUUFBUTtRQUNUO0FBRUEsWUFBSTNTLEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU0sSUFBSTtBQUM5Q3FKLGdCQUFNNDRDLFlBQVk7QUFDbEI1NEMsZ0JBQU02NEMsV0FBV3BpRCxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDM0NxSixnQkFBTTg0QyxXQUFXNW5ELFFBQVF1SCxRQUFRLFVBQVU7UUFFNUMsV0FBV2hDLEdBQUdDLE9BQU9DLElBQUksNEJBQTRCLE1BQU0sZUFBZTtBQUN6RXFKLGdCQUFNNDRDLFlBQVk7QUFDbEI1NEMsZ0JBQU0rNEMsV0FBVzduRCxRQUFRdUgsUUFBUSxVQUFVO0FBQzNDLGNBQUloQyxHQUFHMEUsS0FBS3dILGNBQWMsUUFBUSxHQUFHO0FBQ3BDM0Msa0JBQU1nNUMsZUFBZXZpRCxHQUFHMEUsS0FBS3dILGNBQWMsV0FBVztBQUN0RDNDLGtCQUFNaTVDLFlBQVl4aUQsR0FBRzBFLEtBQUt3SCxjQUFjLFFBQVE7VUFDakQsT0FBTztBQUNOLGdCQUFJdTJDLFlBQVkzdUIsbUJBQW1CZ2tCLFNBQVM0SyxRQUFRLEVBQUUvbkMsTUFBTSxHQUFHO0FBQy9ELGdCQUFJOG5DLFVBQVVwbkQsU0FBUyxLQUFLb25ELFVBQVUsQ0FBQyxNQUFNLGdCQUFnQjtBQUM1RDtZQUNEO0FBQ0Esa0JBQU1FLGFBQWFGLFVBQVUsQ0FBQyxFQUFFOW5DLE1BQU0sR0FBRztBQUN6Q3BSLGtCQUFNZzVDLGVBQWV2aUQsR0FBR0MsT0FBT0MsSUFBSSxnQkFBZ0IsRUFBRXlpRCxXQUFXLENBQUMsRUFBRWxnQixZQUFZLENBQUM7QUFDaEYsZ0JBQUlrZ0IsV0FBV3RuRCxTQUFTLEtBQUtrTyxNQUFNZzVDLGlCQUFpQixRQUFXO0FBQzlEaDVDLG9CQUFNZzVDLGVBQWU7QUFDckJoNUMsb0JBQU1pNUMsWUFBWUMsVUFBVXowQyxPQUFPLENBQUMsRUFBRUcsS0FBSyxHQUFHO1lBQy9DLE9BQU87QUFDTnMwQywwQkFBWUEsVUFBVXowQyxPQUFPLENBQUM7QUFDOUJ5MEMsd0JBQVV6MEMsT0FBTyxHQUFHLEdBQUcyMEMsV0FBVzMwQyxPQUFPLENBQUMsRUFBRUcsS0FBSyxHQUFHLENBQUM7QUFDckQ1RSxvQkFBTWk1QyxZQUFZQyxVQUFVdDBDLEtBQUssR0FBRztZQUNyQztVQUNEO1FBRUQsV0FBV25PLEdBQUdDLE9BQU9DLElBQUksNEJBQTRCLE1BQU0sbUJBQW1CO0FBQzdFcUosZ0JBQU00NEMsWUFBWTtBQUNsQjU0QyxnQkFBTXE1QyxVQUFVO0FBQ2hCcjVDLGdCQUFNczVDLFdBQVdwb0QsUUFBUXVILFFBQVEsVUFBVTtRQUU1QyxPQUFPO0FBQ051SCxnQkFBTTQ0QyxZQUFZO0FBQ2xCNTRDLGdCQUFNK0ksU0FBU3RTLEdBQUdDLE9BQU9DLElBQUksWUFBWTtBQUN6Q3FKLGdCQUFNdTVDLFdBQVdyb0QsUUFBUXVILFFBQVEsVUFBVTtRQUM1QztBQUNBLGNBQU0rZ0QsWUFBWXJnRCxTQUFTWSxjQUFjLEtBQUs7QUFDOUN5L0Msa0JBQVU3NUMsTUFBTW93QyxVQUFVO0FBQzFCbHhDLGVBQU9pQixXQUFXMDVDLFNBQVM7QUFDM0Jyb0QsaUJBQVN1VSxPQUFPQyxLQUFLNnpDLFNBQVM7QUFDOUIzNkMsZUFBT2tCLFFBQVE7QUFDZjdPLGdCQUFRb25ELFlBQVkzMEMsUUFBUSxDQUFDO0FBQzdCLGNBQU15TSxXQUFXLElBQUlqZixTQUFTdVUsT0FBT3pVLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQ3JFLGNBQU1rdEIsYUFBYSxJQUFJaDBCLFNBQVNxTCxLQUFLQyxJQUNwQ3hMLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUMzQitILE9BQ0NNLFlBQVc7QUFDWCxnQkFBTWkzQyxNQUFNajNDLE9BQU9zbkM7QUFDbkIsZ0JBQU02UixTQUFTNW9ELEVBQUUwbUQsR0FBRyxFQUFFLytDLEtBQUssTUFBTSxFQUFFc2dCLE9BQU8saUJBQWlCO0FBQzNEMmdDLGlCQUFPOTZCLEtBQUssQ0FBQzBpQixRQUFRMzlCLFNBQVM7QUFDN0Isa0JBQU1nMkMsUUFBUTdvRCxFQUFFNlMsSUFBSTtBQUNwQixrQkFBTWhHLEtBQUtnOEMsTUFBTTV4QyxLQUFLLElBQUk7QUFDMUIsa0JBQU1uSyxRQUFRKzdDLE1BQU01eEMsS0FBSyxPQUFPO0FBQ2hDLGtCQUFNNnhDLFVBQVVELE1BQU01eEMsS0FBSyxVQUFVLE1BQU07QUFDM0Msa0JBQU04eEMsWUFBWUYsTUFBTWxoRCxLQUFLLGdDQUFnQztBQUM3RCxrQkFBTXFoRCxjQUFjRCxVQUFVOW5ELFNBQVM7QUFDdkMsa0JBQU00VyxPQUFPZ3hDLE1BQU1saEQsS0FBSyxLQUFLLEVBQUVzUCxLQUFLLE1BQU07QUFDMUMsa0JBQU1neUMsV0FBVyxDQUFBO0FBQ2pCLGdCQUFJSCxTQUFTO0FBQ1pHLHVCQUFTQSxTQUFTaG9ELE1BQU0sSUFBSWIsT0FBT2dILE1BQU0sT0FBTyxNQUFNO1lBQ3ZEO0FBQ0EsZ0JBQUk0aEQsYUFBYTtBQUNoQkMsdUJBQVNBLFNBQVNob0QsTUFBTSxJQUN2QmIsT0FBT2dILE1BQU0sUUFBUSxNQUFNLEtBQzFCMmhELFVBQVU5eEMsS0FBSyxRQUFRLE1BQU0sYUFDM0I3VyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUssSUFBQSxHQUFBcUIsT0FDdEIsSUFBSW5JLFNBQVN1WSxLQUFLa3dDLFVBQVU5eEMsS0FBSyxRQUFRLENBQUMsRUFBRW9VLFNBQVMsS0FBSyxHQUFDLFFBQUEsS0FDakVqckIsT0FBT2dILE1BQU0sTUFBTSxJQUFJO1lBQ3pCO0FBQ0EsZ0JBQUl5RixPQUFPLEtBQUs7QUFFZm84Qyx1QkFBU0EsU0FBU2hvRCxNQUFNLEtBQ3RCYixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFBSXloRCxNQUFNbGhELEtBQUssSUFBSSxFQUFFc1AsS0FBSyxNQUFNLEdBQzVEN1csT0FBT2dILE1BQU0sU0FBUyxPQUFPLElBQUl5aEQsTUFBTWxoRCxLQUFLLEtBQUssRUFBRXNQLEtBQUssTUFBTTtZQUNoRSxPQUFPO0FBQ05neUMsdUJBQVNBLFNBQVNob0QsTUFBTSxJQUFJMkUsR0FBR21ZLFNBQVNpaUMsY0FBY25vQyxJQUFJLElBQUl6WCxPQUFPZ0gsTUFBTSxNQUFNLEtBQUs7WUFDdkY7QUFDQS9HLG9CQUFRb25ELFlBQVkzMEMsTUFBTWhHLEtBQUssSUFBSTtjQUNsQzRCLE9BQU81QixTQUFTbThDLFNBQVNob0QsU0FBQSxJQUFBd0gsT0FBYXdnRCxTQUFTbDFDLEtBQUssR0FBRyxHQUFDLEdBQUEsSUFBTTtjQUM5RDFILE9BQU9TO2NBQ1B3VyxTQUFTO2NBQ1R4VSxPQUFPazZDLGNBQWMsZ0JBQWdCO1lBQ3RDO1VBQ0QsQ0FBQztBQUNELGdCQUFNRSxRQUFRejVDLE9BQU9rTixPQUFPdE87QUFDNUI2NkMsZ0JBQU16NkMsT0FBTztZQUNadEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUNyQyxDQUFDO0FBQ0Q4aEQsZ0JBQU16NkMsT0FBTztZQUNadEcsTUFBTTtZQUNOdUcsT0FBT3RPLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtZQUM5QnVILE9BQU9BLE1BQU07QUFDWjNPLGdCQUFFK08sTUFBTSxFQUNOcEgsS0FBSyxpQ0FBaUMsRUFDdENtbUIsS0FBSyxDQUFDbTJCLEdBQUdsNkMsTUFBTTtBQUNmQSxrQkFBRTB2QixNQUFNO2NBQ1QsQ0FBQztBQUVGdjVCLG9CQUFNeUgsS0FBSyw4QkFBOEIsRUFBRXdRLEtBQUssV0FBVyxJQUFJO1lBQ2hFO1VBQ0QsQ0FBQztBQUNEK3dDLGdCQUFNejZDLE9BQU87WUFDWnRHLE1BQU07WUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7WUFDaEN1SCxPQUFPQSxNQUFNO0FBQ1ozTyxnQkFBRStPLE1BQU0sRUFDTnBILEtBQUssMkJBQTJCLEVBQ2hDbW1CLEtBQUssQ0FBQ20yQixHQUFHbDZDLE1BQU07QUFDZkEsa0JBQUUwdkIsTUFBTTtjQUNULENBQUM7WUFDSDtVQUNELENBQUM7QUFFRHl2QixnQkFBTXo2QyxPQUFPO1lBQ1p0RyxNQUFNO1lBQ05uSCxNQUFNO1lBQ05pSCxJQUFJO1lBQ0pnNEMsbUJBQW1CO1lBQ25CN3dDLE1BQU0yTCxPQUFPK1osT0FBT3owQixRQUFRb25ELFlBQVkzMEMsS0FBSyxFQUFFQyxJQUFLaEosT0FBTTtBQUN6RCxxQkFBT0E7WUFDUixDQUFDO1VBQ0YsQ0FBQztBQUNEbS9DLGdCQUFNejZDLE9BQU87WUFDWnRHLE1BQU07VUFDUCxDQUFDO0FBQ0QsZ0JBQU00RyxTQUFTbTZDLE1BQU1sNkMsT0FBTztBQUM1QlMsaUJBQU9rTixPQUFPM08sT0FBT2lCLFdBQVdGLE1BQU07QUFBQSxjQUFBbzZDLGNBQUFwOUMsMkJBQ2Z6TCxTQUFTZ08sVUFBVTBDLFlBQVlqQyxRQUFRLE9BQU8sQ0FBQSxHQUFBcTZDO0FBQUEsY0FBQTtBQUFyRSxpQkFBQUQsWUFBQWw5QyxFQUFBLEdBQUEsRUFBQW05QyxVQUFBRCxZQUFBajlDLEVBQUEsR0FBQUMsUUFBd0U7QUFBQSxvQkFBN0RhLFdBQUFvOEMsUUFBQS84QztBQUNWZzlDLGlDQUFtQnI4QyxRQUFRO1lBQzVCO1VBQUEsU0FBQVYsS0FBQTtBQUFBNjhDLHdCQUFBcC9DLEVBQUF1QyxHQUFBO1VBQUEsVUFBQTtBQUFBNjhDLHdCQUFBNThDLEVBQUE7VUFBQTtRQUNELEdBQ0FnVCxRQUNEO0FBQ0ErVSxtQkFBVzNYLFNBQVM7VUFDbkJ0TztVQUNBTDtRQUNEO0FBQ0FzbUIsbUJBQVdwa0IsS0FBSztNQUNqQjtBQUNBLFlBQU1tNUMscUJBQXNCcjhDLGNBQWE7QUFDeEMsY0FBTTNDLE9BQU8vSixTQUFTNE0sU0FBUyxLQUFLLElBQUk7QUFDeEM3QyxhQUFLbEIsYUFBYSxTQUFTLHFCQUFxQjtBQUNoRGtCLGFBQUtsQixhQUFhLFFBQVF2RCxHQUFHMEUsS0FBS00sT0FBT29DLFNBQVNYLEtBQUssQ0FBQztBQUN4RGhDLGFBQUtsQixhQUFhLFVBQVUsUUFBUTtBQUNwQ2tCLGFBQUtsQixhQUFhLE9BQU8scUJBQXFCO0FBQzlDNkQsaUJBQVNzOEMsbUJBQW1CNzZDLE9BQU9wRSxJQUFJO01BQ3hDO0FBQ0FoSyxjQUFRb25ELFlBQVk4QixzQkFBdUJsN0MsVUFBUztBQUVuRCxjQUFNbTdDLFdBQVduN0MsS0FBS203QyxTQUFTMTJDO0FBQy9CLFlBQUkwMkMsb0JBQW9CQyxVQUFVO0FBQUEsY0FBQUMsY0FBQTM5QywyQkFFWHk5QyxRQUFBLEdBQUFHO0FBQUEsY0FBQTtBQUF0QixpQkFBQUQsWUFBQXo5QyxFQUFBLEdBQUEsRUFBQTA5QyxVQUFBRCxZQUFBeDlDLEVBQUEsR0FBQUMsUUFBZ0M7QUFBQSxvQkFBckJtRixVQUFBcTRDLFFBQUF0OUM7QUFDVmhNLHNCQUFRb25ELFlBQVkzMEMsTUFBTXhCLFFBQVFqRixLQUFLLEVBQUVpWCxVQUFVaFMsUUFBUWdTO1lBQzVEO1VBQUEsU0FBQWhYLEtBQUE7QUFBQW85Qyx3QkFBQTMvQyxFQUFBdUMsR0FBQTtVQUFBLFVBQUE7QUFBQW85Qyx3QkFBQW45QyxFQUFBO1VBQUE7UUFDRCxXQUFXaTlDLG9CQUFvQkksa0JBQWtCO0FBRWhEdnBELGtCQUFRb25ELFlBQVkzMEMsTUFBTTAyQyxTQUFTbjlDLEtBQUssRUFBRWlYLFVBQVVrbUMsU0FBU2xtQztRQUM5RDtBQUNBLGVBQU8sSUFBSWhqQixTQUFTZ08sVUFBVWdELFFBQVE7VUFDckNuSixNQUFNO1VBQ05uSCxNQUFNO1VBQ05pSCxJQUFJO1VBQ0pnNEMsbUJBQW1CO1VBQ25CN3dDLE1BQU0yTCxPQUFPK1osT0FBT3owQixRQUFRb25ELFlBQVkzMEMsS0FBSyxFQUFFQyxJQUFLaEosT0FBTTtBQUN6RCxtQkFBT0E7VUFDUixDQUFDO1FBQ0YsQ0FBQyxFQUFFaUYsT0FBTztNQUNYO0FBQ0EzTyxjQUFRb25ELFlBQVlJLG1CQUFtQixDQUN0QztRQUNDbjVDLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7UUFDaENpRixPQUFPO01BQ1IsR0FDQTtRQUNDcUMsT0FBT3RPLE9BQU9nSCxNQUNiLDhCQUNBLDRCQUNEO1FBQ0FpRixPQUFPak0sT0FBT2dILE1BQ2IsNENBQ0EsMENBQ0Q7TUFDRCxHQUNBO1FBQ0NzSCxPQUFPdE8sT0FBT2dILE1BQ2Isa0NBQ0EsaUNBQ0Q7UUFDQWlGLE9BQU9qTSxPQUFPZ0gsTUFBTSx5QkFBeUIsdUJBQXVCO01BQ3JFLEdBQ0E7UUFDQ3NILE9BQU90TyxPQUFPZ0gsTUFBTSxvQkFBb0Isa0JBQWtCO1FBQzFEaUYsT0FBT2pNLE9BQU9nSCxNQUNiLGtDQUNBLGdDQUNEO01BQ0QsR0FDQTtRQUNDc0gsT0FBT3RPLE9BQU9nSCxNQUNiLGdDQUNBLDhCQUNEO1FBQ0FpRixPQUFPak0sT0FBT2dILE1BQ2IsOENBQ0EsNENBQ0Q7TUFDRCxHQUNBO1FBQ0NzSCxPQUFPdE8sT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQjtRQUN0RGlGLE9BQU9qTSxPQUFPZ0gsTUFBTSxnQ0FBZ0MsOEJBQThCO01BQ25GLEdBQ0E7UUFDQ3NILE9BQU90TyxPQUFPZ0gsTUFDYiw2Q0FDQSx5Q0FDRDtRQUNBaUYsT0FBT2pNLE9BQU9nSCxNQUNiLDJEQUNBLHVEQUNEO01BQ0QsR0FDQTtRQUNDc0gsT0FBT3RPLE9BQU9nSCxNQUNiLHdCQUNBLHlCQUNEO1FBQ0FpRixPQUFPak0sT0FBT2dILE1BQ2Isb0RBQ0EscURBQ0Q7TUFDRCxHQUNBO1FBQ0NzSCxPQUFPdE8sT0FBT2dILE1BQU0sdUJBQXVCLHFCQUFxQjtRQUNoRWlGLE9BQU9qTSxPQUFPZ0gsTUFDYixzQ0FDQSxvQ0FDRDtNQUNELEdBQ0E7UUFDQ3NILE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7UUFDeENpRixPQUFPak0sT0FBT2dILE1BQU0sMEJBQTBCLHdCQUF3QjtNQUN2RSxDQUFBO0FBRUQvRyxjQUFRb25ELFlBQVkzNUMsU0FBU2c2Qyx1QkFBd0IvOUMsT0FBTTtBQUMxRCxZQUFJQSxFQUFFNEcsT0FBT3RDLEtBQUs2RCxPQUFPN0YsVUFBVSxJQUFJO0FBQ3RDdEMsWUFBRTRHLE9BQU90QyxLQUFLNkQsT0FBTzdGLFFBQVEvTCxTQUFTZ1QsT0FBT0Msa0JBQWtCeEosRUFBRTRHLE9BQU90QyxLQUFLNkQsT0FBTzdGLEtBQUs7UUFDMUY7QUFDQXRDLFVBQUU0RyxPQUFPdEMsS0FBSzZELE9BQU83RixTQUFTdEMsRUFBRTRHLE9BQU90RTtBQUN2Q3RDLFVBQUU0RyxPQUFPdEUsUUFBUTtNQUNsQjtBQUNBaE0sY0FBUW9uRCxZQUFZMzVDLFNBQVM4NUMsaUJBQWtCNzlDLE9BQU07QUFDcEQsY0FBTTtVQUFDc0U7UUFBSSxJQUFJdEUsRUFBRTRHO0FBQ2pCLFlBQUlrNUM7QUFDSixZQUFJOS9DLEVBQUU0RyxPQUFPMlMsU0FBUztBQUNyQmpWLGVBQUt5N0MseUJBQXlCeG1DLFVBQVVqVixLQUFLMDdDLGlCQUFpQnptQztBQUM5RGpWLGVBQUsyN0MscUJBQXFCMW1DLFVBQVVqVixLQUFLNDdDLFlBQVkzbUM7QUFDckRqVixlQUFLNjdDLGdCQUFnQjVtQyxVQUFValYsS0FBSzg3QyxZQUFZN21DO0FBR2hELGNBQUlxa0MsZ0JBQWdCO0FBQUEsZ0JBQUF5QyxjQUFBcitDLDJCQUNGMUwsUUFBUW9uRCxZQUFZMzBDLEtBQUEsR0FBQXUzQztBQUFBLGdCQUFBO0FBQXJDLG1CQUFBRCxZQUFBbitDLEVBQUEsR0FBQSxFQUFBbytDLFVBQUFELFlBQUFsK0MsRUFBQSxHQUFBQyxRQUE0QztBQUFBLHNCQUFqQytaLEtBQUFta0MsUUFBQWgrQztBQUVWLG9CQUFJNlosR0FBR3NELGFBQWEsUUFBUXRELEdBQUdva0MsV0FBVztBQUN6Q3BrQyxxQkFBR3NELFdBQVd0RCxHQUFHb2tDO2dCQUNsQjtjQUNEO1lBQUEsU0FBQWgrQyxLQUFBO0FBQUE4OUMsMEJBQUFyZ0QsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUE4OUMsMEJBQUE3OUMsRUFBQTtZQUFBO0FBQ0FzOUMsMEJBQWN4cEQsUUFBUW9uRCxZQUFZOEIsb0JBQW9CbDdDLElBQUk7QUFDMURuTyxrQkFBTXlILEtBQUssa0JBQWtCLEVBQUU0aUQsWUFBWVYsV0FBVztBQUFBLGdCQUFBVyxjQUFBeitDLDJCQUMvQnpMLFNBQVNnTyxVQUFVMEMsWUFBWTY0QyxhQUFhLE9BQU8sQ0FBQSxHQUFBWTtBQUFBLGdCQUFBO0FBQTFFLG1CQUFBRCxZQUFBditDLEVBQUEsR0FBQSxFQUFBdytDLFVBQUFELFlBQUF0K0MsRUFBQSxHQUFBQyxRQUE2RTtBQUFBLHNCQUFsRWEsV0FBQXk5QyxRQUFBcCtDO0FBQ1ZnOUMsbUNBQW1CcjhDLFFBQVE7Y0FDNUI7WUFBQSxTQUFBVixLQUFBO0FBQUFrK0MsMEJBQUF6Z0QsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUFrK0MsMEJBQUFqK0MsRUFBQTtZQUFBO0FBQUEsZ0JBQUFtK0MsY0FBQTMrQywyQkFDdUJ6TCxTQUFTZ08sVUFBVTBDLFlBQVk2NEMsYUFBYSxnQkFBZ0IsQ0FBQSxHQUFBYztBQUFBLGdCQUFBO0FBQW5GLG1CQUFBRCxZQUFBeitDLEVBQUEsR0FBQSxFQUFBMCtDLFVBQUFELFlBQUF4K0MsRUFBQSxHQUFBQyxRQUFzRjtBQUFBLHNCQUEzRWEsV0FBQTI5QyxRQUFBdCtDO0FBQ1ZnOUMsbUNBQW1CcjhDLFFBQVE7Y0FDNUI7WUFBQSxTQUFBVixLQUFBO0FBQUFvK0MsMEJBQUEzZ0QsRUFBQXVDLEdBQUE7WUFBQSxVQUFBO0FBQUFvK0MsMEJBQUFuK0MsRUFBQTtZQUFBO0FBQ0E7VUFDRDtBQUVBLGdCQUFNcStDLGNBQUEsdUNBQUFuaUQsT0FBcURySSxPQUFPZ0gsTUFBTSxVQUFVLFFBQVEsR0FBQyxXQUFBO0FBQzNGcEgsWUFBRStKLEVBQUU0RyxNQUFNLEVBQUVxaUMsTUFBTTRYLFdBQVc7QUFDN0IsZ0JBQU05M0MsUUFBUTlTLEVBQUVxTyxLQUFLeUUsS0FBSyxFQUN4QkMsSUFBSSxDQUFDZ2IsSUFBSTdILE9BQU87QUFDaEIsbUJBQU9BLEdBQUc3WjtVQUNYLENBQUMsRUFDQXZHLElBQUk7QUFDTixnQkFBTStrRCxnQkFBZ0IsSUFBSXZxRCxTQUFTKytDLGVBQWU7QUFDbER3TCx3QkFBY3ZMLFVBQVUsYUFBYWovQyxRQUFRdUgsUUFBUSxhQUFhLENBQUM7QUFDbkVpakQsd0JBQWN0TCxZQUFZenNDLEtBQUs7QUFDL0IrM0Msd0JBQWNyTCxJQUNaeFIsY0FBYTtBQUNiLGtCQUFNOGMsWUFBWWxsRCxHQUFHK00sTUFBTXlYLFlBQVk0akIsUUFBUTtBQUUvQyxnQkFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUV4a0MsU0FBU3NoRCxVQUFVbDRDLFNBQVMsR0FBRztBQUM1Q2k0Qyw0QkFBYy9KLGNBQWM7QUFDNUI7WUFDRDtBQUNBLGtCQUFNeHNCLGFBQWEsSUFBSWgwQixTQUFTcUwsS0FBS0MsSUFDcEN4TCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sSUFBSTRtQyxXQUFXNXRDLE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxHQUN6RTtjQUNDeUQsUUFBUTtjQUNSc04sTUFBTTtjQUNONHZDLFdBQVc7Y0FDWHh2QyxRQUFRO2NBQ1I2d0IsUUFBUTtjQUNSZ2YsV0FBQSxHQUFBMy9DLE9BQWNxaUQsVUFBVWgrQyxPQUFLLEdBQUE7Y0FDN0JxN0MsY0FBYzJDLFVBQVVsNEM7Y0FDeEJzMUMsVUFBVTtjQUNWNkMsY0FBYy9jOztZQUNmLEdBQ0N2K0IsWUFBVztBQUNYLG9CQUFNaTNDLE1BQU1qM0MsT0FBT3NuQztBQUNuQixvQkFBTTZSLFNBQVM1b0QsRUFBRTBtRCxHQUFHLEVBQUUvK0MsS0FBSyxNQUFNO0FBQ2pDLG9CQUFNcWpELGNBQWMsQ0FBQTtBQUNwQnBDLHFCQUFPOTZCLEtBQUssQ0FBQzBpQixRQUFRMzlCLFNBQVM7QUFDN0Isc0JBQU1nMkMsUUFBUTdvRCxFQUFFNlMsSUFBSTtBQUNwQixzQkFBTWhHLEtBQUtnOEMsTUFBTTV4QyxLQUFLLElBQUk7QUFDMUIsc0JBQU1uSyxRQUFRKzdDLE1BQU01eEMsS0FBSyxPQUFPO0FBQ2hDLHNCQUFNNnhDLFVBQVVELE1BQU01eEMsS0FBSyxVQUFVLE1BQU07QUFDM0Msc0JBQU04eEMsWUFBWUYsTUFBTWxoRCxLQUFLLGdDQUFnQztBQUM3RCxzQkFBTXFoRCxjQUFjRCxVQUFVOW5ELFNBQVM7QUFDdkMsc0JBQU00VyxPQUFPZ3hDLE1BQU1saEQsS0FBSyxLQUFLLEVBQUVzUCxLQUFLLE1BQU07QUFDMUMsc0JBQU1neUMsV0FBVyxDQUFBO0FBQ2pCLG9CQUFJSCxTQUFTO0FBQ1pHLDJCQUFTQSxTQUFTaG9ELE1BQU0sSUFBSTtnQkFDN0I7QUFDQSxvQkFBSStuRCxhQUFhO0FBQ2hCQywyQkFBU0EsU0FBU2hvRCxNQUFNLElBQ3ZCYixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sS0FDMUIyaEQsVUFBVTl4QyxLQUFLLFFBQVEsTUFBTSxhQUMzQjdXLE9BQU9nSCxNQUFNLE9BQU8sS0FBSyxJQUFBLEdBQUFxQixPQUN0QixJQUFJbkksU0FBU3VZLEtBQUtrd0MsVUFBVTl4QyxLQUFLLFFBQVEsQ0FBQyxFQUFFb1UsU0FBUyxLQUFLLEdBQUMsUUFBQSxLQUNqRWpyQixPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Z0JBQ3pCO0FBQ0Esb0JBQUl5RixPQUFPLEtBQUs7QUFFZm84QywyQkFBU0EsU0FBU2hvRCxNQUFNLEtBQ3RCYixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFBSXloRCxNQUFNbGhELEtBQUssSUFBSSxFQUFFc1AsS0FBSyxNQUFNLEdBQzVEN1csT0FBT2dILE1BQU0sU0FBUyxPQUFPLElBQUl5aEQsTUFBTWxoRCxLQUFLLEtBQUssRUFBRXNQLEtBQUssTUFBTTtnQkFDaEUsT0FBTztBQUNOZ3lDLDJCQUFTQSxTQUFTaG9ELE1BQU0sSUFDdkIyRSxHQUFHbVksU0FBU2lpQyxjQUFjbm9DLElBQUksSUFBSXpYLE9BQU9nSCxNQUFNLE1BQU0sS0FBSztnQkFDNUQ7QUFDQTRqRCw0QkFBWUEsWUFBWS9wRCxNQUFNLElBQUk7a0JBQ2pDeU4sT0FBTzVCLFNBQVNtOEMsU0FBU2hvRCxTQUFBLEtBQUF3SCxPQUFjd2dELFNBQVNsMUMsS0FBSyxJQUFJLEdBQUMsR0FBQSxJQUFNO2tCQUNoRTFILE9BQU9TO2tCQUNQd1csU0FBUztrQkFDVHhVLE9BQU9rNkMsY0FBYyxnQkFBZ0I7Z0JBQ3RDO2NBQ0QsQ0FBQztBQUNELGtCQUFJZ0MsWUFBWS9wRCxRQUFRO0FBQ3ZCLHNCQUFNZ3FELFlBQVl4N0MsT0FBT04sTUFBTTQ3QztBQUMvQjFxRCx3QkFBUW9uRCxZQUFZMzBDLE1BQU1tNEMsU0FBUyxFQUFFemhDLFdBQVc7a0JBQy9DcmhCLE1BQU07a0JBQ05uSCxNQUFNO2tCQUNOb0ksV0FBVztrQkFDWDYyQyxtQkFBbUI7a0JBQ25CN3dDLE1BQU00N0M7Z0JBQ1A7Y0FDRDtBQUNBSCw0QkFBYy9KLGNBQWM7WUFDN0IsR0FDQSxNQUNBLE1BQU07QUFDTCtKLDRCQUFjaEssY0FBYztZQUM3QixDQUNEO0FBQ0F2c0IsdUJBQVdwa0IsS0FBSztVQUNqQixHQUNBLE1BQU07QUFFTDI1QywwQkFBY3hwRCxRQUFRb25ELFlBQVk4QixvQkFBb0JsN0MsSUFBSTtBQUMxRG5PLGtCQUFNeUgsS0FBSyxrQkFBa0IsRUFBRTRpRCxZQUFZVixXQUFXO0FBQUEsZ0JBQUFxQixjQUFBbi9DLDJCQUMvQnpMLFNBQVNnTyxVQUFVMEMsWUFBWTY0QyxhQUFhLE9BQU8sQ0FBQSxHQUFBc0I7QUFBQSxnQkFBQTtBQUExRSxtQkFBQUQsWUFBQWovQyxFQUFBLEdBQUEsRUFBQWsvQyxVQUFBRCxZQUFBaC9DLEVBQUEsR0FBQUMsUUFBNkU7QUFBQSxzQkFBbEVhLFdBQUFtK0MsUUFBQTkrQztBQUNWZzlDLG1DQUFtQnI4QyxRQUFRO2NBQzVCO1lBQUEsU0FBQVYsS0FBQTtBQUFBNCtDLDBCQUFBbmhELEVBQUF1QyxHQUFBO1lBQUEsVUFBQTtBQUFBNCtDLDBCQUFBMytDLEVBQUE7WUFBQTtBQUFBLGdCQUFBNitDLGNBQUFyL0MsMkJBQ3VCekwsU0FBU2dPLFVBQVUwQyxZQUFZNjRDLGFBQWEsZ0JBQWdCLENBQUEsR0FBQXdCO0FBQUEsZ0JBQUE7QUFBbkYsbUJBQUFELFlBQUFuL0MsRUFBQSxHQUFBLEVBQUFvL0MsVUFBQUQsWUFBQWwvQyxFQUFBLEdBQUFDLFFBQXNGO0FBQUEsc0JBQTNFYSxXQUFBcStDLFFBQUFoL0M7QUFDVmc5QyxtQ0FBbUJyOEMsUUFBUTtjQUM1QjtZQUFBLFNBQUFWLEtBQUE7QUFBQTgrQywwQkFBQXJoRCxFQUFBdUMsR0FBQTtZQUFBLFVBQUE7QUFBQTgrQywwQkFBQTcrQyxFQUFBO1lBQUE7QUFDQW83Qyw2QkFBaUI7QUFFakJ6bkQsa0JBQU15SCxLQUFLLHlCQUF5QixFQUFFMFYsT0FBTztVQUM5QyxDQUNEO1FBQ0QsV0FBVyxDQUFDdFQsRUFBRTRHLE9BQU8yUyxTQUFTO0FBQUEsY0FBQWdvQyxjQUFBdi9DLDJCQUNaMUwsUUFBUW9uRCxZQUFZMzBDLEtBQUEsR0FBQXk0QztBQUFBLGNBQUE7QUFBckMsaUJBQUFELFlBQUFyL0MsRUFBQSxHQUFBLEVBQUFzL0MsVUFBQUQsWUFBQXAvQyxFQUFBLEdBQUFDLFFBQTRDO0FBQUEsb0JBQWpDK1osS0FBQXFsQyxRQUFBbC9DO0FBQ1Ysa0JBQUk2WixHQUFHc0QsVUFBVTtBQUloQnRELG1CQUFHb2tDLFlBQVlwa0MsR0FBR3NEO0FBQ2xCdEQsbUJBQUdzRCxXQUFXO2NBQ2Y7WUFDRDtVQUFBLFNBQUFsZCxLQUFBO0FBQUFnL0Msd0JBQUF2aEQsRUFBQXVDLEdBQUE7VUFBQSxVQUFBO0FBQUFnL0Msd0JBQUEvK0MsRUFBQTtVQUFBO0FBQ0FzOUMsd0JBQWN4cEQsUUFBUW9uRCxZQUFZOEIsb0JBQW9CbDdDLElBQUk7QUFDMURuTyxnQkFBTXlILEtBQUssa0JBQWtCLEVBQUU0aUQsWUFBWVYsV0FBVztBQUFBLGNBQUEyQixjQUFBei9DLDJCQUMvQnpMLFNBQVNnTyxVQUFVMEMsWUFBWTY0QyxhQUFhLE9BQU8sQ0FBQSxHQUFBNEI7QUFBQSxjQUFBO0FBQTFFLGlCQUFBRCxZQUFBdi9DLEVBQUEsR0FBQSxFQUFBdy9DLFVBQUFELFlBQUF0L0MsRUFBQSxHQUFBQyxRQUE2RTtBQUFBLG9CQUFsRWEsV0FBQXkrQyxRQUFBcC9DO0FBQ1ZnOUMsaUNBQW1CcjhDLFFBQVE7WUFDNUI7VUFBQSxTQUFBVixLQUFBO0FBQUFrL0Msd0JBQUF6aEQsRUFBQXVDLEdBQUE7VUFBQSxVQUFBO0FBQUFrL0Msd0JBQUFqL0MsRUFBQTtVQUFBO1FBQ0Q7TUFDRDtBQUNBbE0sY0FBUW9uRCxZQUFZMzVDLFNBQVNTLFdBQVlJLFdBQVU7QUFDbERyTyxpQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM3VSxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7QUFDeEUsY0FBTWlILE9BQU9NLE1BQU1nQztBQUNuQixjQUFNKzZDLGVBQWUxckQsRUFBRU0sU0FBU2dPLFVBQVUwQyxZQUFZM0MsTUFBTSxPQUFPLENBQUMsRUFBRTRaLE9BQU8sQ0FBQ3VvQixRQUFRbC9CLFlBQVk7QUFDakcsaUJBQU9BLFFBQVFnUyxXQUFXaFMsUUFBUWc0QyxtQkFBbUJ4NkMsTUFBTWs5QixVQUFVO1FBQ3RFLENBQUMsRUFBRS9xQztBQUNILFlBQ0N5cUQsZUFBZSxLQUNmLENBQUM1M0MsUUFDQTFULE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxJQUM5QnhCLEdBQUdtWSxTQUFTaWlDLGNBQWMwTCxZQUFZLElBQ3RDdHJELE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLENBQy9DLEdBQ0M7QUFDRDtRQUNEO0FBQ0EsY0FBTTBMLFFBQVF6RSxLQUFLdW5CLFdBQVcsT0FBTztBQUNyQyxjQUFNKzFCLFdBQVd0OUMsS0FBS3VuQixXQUFXLGdCQUFnQjtBQUNqRCxjQUFNMWpCLFNBQVM3RCxLQUFLNkQsT0FBTzdGO0FBQzNCLGNBQU11L0MsY0FBY3Y5QyxLQUFLdTlDLFlBQVl0b0M7QUFDckMsWUFBSTJtQztBQUNKLFlBQUlGO0FBQ0osWUFBSThCO0FBQ0osWUFBSS9CO0FBQ0osWUFBSUU7QUFDSixZQUFJRTtBQUNKLFlBQUkwQixhQUFhO0FBQ2hCM0Isd0JBQWM1N0MsS0FBSzQ3QyxZQUFZM21DO0FBQy9CeW1DLDZCQUFtQjE3QyxLQUFLMDdDLGlCQUFpQnptQztBQUN6Q3VvQyw0QkFBa0J4OUMsS0FBS3c5QyxnQkFBZ0J2b0M7QUFDdkMsY0FBSXVvQyxpQkFBaUI7QUFDcEIvQix1Q0FBMkJ6N0MsS0FBS3k3Qyx5QkFBeUJ4bUM7QUFDekQwbUMsbUNBQXVCMzdDLEtBQUsyN0MscUJBQXFCMW1DO0FBQ2pENG1DLDhCQUFrQjc3QyxLQUFLNjdDLGdCQUFnQjVtQztVQUN4QztRQUNEO0FBQ0EsY0FBTTZtQyxjQUFjOTdDLEtBQUs4N0MsWUFBWTdtQztBQUNyQyxjQUFNd29DLGNBQWN6OUMsS0FBS3k5QyxZQUFZeG9DO0FBQ3JDLFlBQUksQ0FBQ3BSLFFBQVE7QUFDWixlQUFLdE0sR0FBR3VGLE9BQU8vSyxPQUFPZ0gsTUFBTSxhQUFhLFdBQVcsR0FBRztZQUN0RGUsTUFBTTtZQUNOaUQsS0FBSztVQUNOLENBQUM7QUFDRDtRQUNEO0FBQ0E5SyxpQkFBUzJOLGFBQWEyRyxrQkFBa0IsS0FBSztBQUM3Q3RVLGlCQUFTdVUsT0FBT0MsS0FBS3pHLElBQUk7QUFDekIsWUFBSSxDQUFDeUUsT0FBTztBQUNYeFMsbUJBQVN1VSxPQUFPWSxNQUNmclYsT0FBT2dILE1BQU0sTUFBTSxJQUFJLEdBQ3ZCaEgsT0FBT2dILE1BQU0sZUFBZSxhQUFhLENBQzFDO0FBQ0E7UUFDRDtBQUNBLGNBQU0ya0QsY0FBYyxJQUFJenJELFNBQVMrK0MsZUFDaEN1TSxjQUNHeHJELE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxJQUMvQmhILE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxDQUN6QztBQUNBMmtELG9CQUFZek0sVUFBVSxhQUFhai9DLFFBQVF1SCxRQUFRLGFBQWEsQ0FBQztBQUVqRW1rRCxvQkFBWXpNLFVBQVUsaUNBQWlDc00sV0FBVztBQUNsRUcsb0JBQVl4TSxZQUFZenNDLEtBQUs7QUFDN0JpNUMsb0JBQVl2TSxJQUNWeFIsY0FBYTtBQUNiLGdCQUFNcnhCLFNBQVM7WUFDZDlKLE1BQU1tN0I7WUFDTjRkO1lBQ0EzQjtZQUNBRjtZQUNBSTtZQUNBMkIsYUFBYUEsZUFBZSxJQUFJeDJDLE9BQUEsSUFBQTdNLE9BQVduSSxTQUFTdTFCLGVBQWUsQ0FBQyxHQUFDLEdBQUEsR0FBSyxHQUFHLEVBQUVydEIsS0FBS3dsQyxRQUFRO1lBQzVGOTdCO1lBQ0E2NUM7VUFDRDtBQUNBLGdCQUFNanFDLGNBQWMsSUFBSXhoQixTQUFTcUwsS0FBS2tILEtBQ3JDbTdCLFVBQ0E1dEMsT0FBT2dILE1BQU0sV0FBVyxTQUFTLElBQUk0bUMsUUFDdEM7QUFDQWxzQixzQkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4QyxjQUFJaXZDLGFBQWE7QUFDaEI5cEMsd0JBQVlsTSxlQUFBLEdBQUFuTixPQUFrQnlKLFFBQU0sTUFBQSxDQUFNO0FBQzFDNFAsd0JBQVlqTSxjQUFjeFYsUUFBUUssVUFBVTtBQUM1Q29oQix3QkFBWXlzQix1QkFBdUI7QUFDbkN6c0Isd0JBQVl1YyxXQUFXaCtCLFFBQVFvbkQsWUFBWXp2QyxVQUFVZzBDLFVBQVVELFlBQVlsTCxhQUFhO1VBQ3pGLE9BQU87QUFDTnhnRCxvQkFBUW9uRCxZQUFZenZDLFVBQVVnMEMsU0FBU2xxQyxXQUFXO1VBQ25EO1FBQ0QsR0FDQSxNQUFNO0FBQ0wsY0FBSStwQyxpQkFBaUI7QUFDcEIsa0JBQU1JLGlCQUFpQixJQUFJM3JELFNBQVMrK0MsZUFDbkNqL0MsT0FBT2dILE1BQU0sV0FBVyxTQUFTLENBQ2xDO0FBQ0E2a0QsMkJBQWUzTSxVQUFVLGFBQWFqL0MsUUFBUXVILFFBQVEsYUFBYSxDQUFDO0FBQ3BFcWtELDJCQUFlM00sVUFBVSxpQ0FBaUMsSUFBSTtBQUM5RDJNLDJCQUFlMU0sWUFBWW9NLFFBQVE7QUFDbkNNLDJCQUFlek0sSUFBS3hSLGNBQWE7QUFDaEMsb0JBQU1yeEIsU0FBUztnQkFDZDlKLE1BQU1tN0I7Z0JBQ040ZCxhQUFhO2dCQUNiM0IsYUFBYUQ7Z0JBQ2JELGtCQUFrQkQ7Z0JBQ2xCSyxhQUFhRDtnQkFDYjRCLGFBQWE7Z0JBQ2I1NUM7Z0JBQ0E2NUMsYUFBYUU7Y0FDZDtBQUNBLG9CQUFNbnFDLGNBQWMsSUFBSXhoQixTQUFTcUwsS0FBS2tILEtBQ3JDbTdCLFVBQ0E1dEMsT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQUk0bUMsUUFDeEM7QUFDQWxzQiwwQkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4Q21GLDBCQUFZbE0sZUFBQSxHQUFBbk4sT0FBa0J5SixRQUFNLE1BQUEsQ0FBTTtBQUMxQzRQLDBCQUFZak0sY0FBY3hWLFFBQVFLLFVBQVU7QUFDNUNvaEIsMEJBQVl5c0IsdUJBQXVCO0FBQ25DenNCLDBCQUFZdWMsV0FBV2grQixRQUFRb25ELFlBQVl6dkMsVUFBVWcwQyxVQUFVRCxZQUFZbEwsYUFBYTtZQUN6RixDQUFDO1VBQ0Y7UUFDRCxDQUNEO01BQ0Q7QUFDQXhnRCxjQUFRb25ELFlBQVl6dkMsWUFBWTs7O1FBRy9CZzBDLFVBQVdFLHlCQUF3QjtBQUNsQyxnQkFBTXZ2QyxTQUFTdXZDLG9CQUFvQm5vQyxTQUNoQ21vQyxvQkFBb0Jub0MsT0FBTzlELHNCQUFzQixJQUNqRGlzQyxvQkFBb0Jqc0Msc0JBQXNCO0FBRzdDdEQsaUJBQU9vdkMsWUFBWWpMLGNBQWNvTCxtQkFBbUI7QUFDcEQsY0FBSS84QztBQUNKLGNBQUltbEI7QUFDSixjQUFJM1gsT0FBT3d0QyxhQUFhO0FBQ3ZCOXBELG9CQUFRb25ELFlBQVlDLGNBQWMsQ0FBQztBQUNuQ3Y0QyxvQkFBUTtjQUNQdEUsUUFBUTtjQUNSdUUsTUFBTTtjQUNONHZDLGVBQWU7Y0FDZkwsYUFBYSxDQUFDLENBQUM7Y0FDZkYsU0FBUzloQyxPQUFPOUo7Y0FDaEI2ckMsU0FBUzs7WUFDVjtBQUVBcHFCLHlCQUFhLElBQUloMEIsU0FBU3FMLEtBQUtDLElBQzlCeEwsT0FBT2dILE1BQU0sVUFBVSxRQUFRLEdBQy9CK0gsT0FDQTlPLFFBQVFvbkQsWUFBWXp2QyxVQUFVbTBDLG1CQUMvQjtBQUNBNzNCLHVCQUFXM1gsU0FBU0E7QUFDcEIyWCx1QkFBV3BrQixLQUFLO1VBQ2pCO0FBQ0EsY0FBSXlNLE9BQU9tdkMsYUFBYTtBQUN2QjM4QyxvQkFBUTtjQUNQdEUsUUFBUTtjQUNSdUUsTUFBTTtjQUNOeXZDLFNBQVNsaUMsT0FBTzlKO2NBQ2hCaXNDLFNBQVM7O1lBQ1Y7QUFFQXhxQix5QkFBYSxJQUFJaDBCLFNBQVNxTCxLQUFLQyxJQUM5QnhMLE9BQU9nSCxNQUFNLFlBQVksVUFBVSxHQUNuQytILE9BQ0E5TyxRQUFRb25ELFlBQVl6dkMsVUFBVW8wQyx3QkFDL0I7QUFDQTkzQix1QkFBVzNYLFNBQVNBO0FBQ3BCMlgsdUJBQVdwa0IsS0FBSztVQUNqQjtBQUNBLGNBQUl5TSxPQUFPaXZDLGFBQWE7QUFDdkIsZ0JBQUlqdkMsT0FBT290QyxrQkFBa0I7QUFDNUI1NkMsc0JBQVE7Z0JBQ1B0RSxRQUFRO2dCQUNScU4sUUFBUXlFLE9BQU85SjtnQkFDZnNGLE1BQU07Z0JBQ05rbkIsU0FBUzs7Y0FDVjtBQUVBL0ssMkJBQWEsSUFBSWgwQixTQUFTcUwsS0FBS0MsSUFDOUJ4TCxPQUFPZ0gsTUFBTSxXQUFXLFVBQVUsR0FDbEMrSCxPQUNBOU8sUUFBUW9uRCxZQUFZenZDLFVBQVVzbkIsbUJBQy9CO0FBQ0FoTCx5QkFBVzNYLFNBQVNBO0FBQ3BCMlgseUJBQVdwa0IsS0FBSztZQUNqQjtBQUNBLGdCQUFJeU0sT0FBT3N0QyxhQUFhO0FBQ3ZCLG9CQUFNYSxZQUFZbGxELEdBQUcrTSxNQUFNeVgsWUFBWXpOLE9BQU85SixJQUFJO0FBQ2xELGtCQUFJaTRDLGFBQWFBLFVBQVVsNEMsWUFBWSxNQUFNLEtBQUtrNEMsVUFBVWw0QyxjQUFjLEdBQUc7QUFDNUVrNEMsMEJBQVVsNEM7QUFDVnpELHdCQUFRO2tCQUNQdEUsUUFBUTtrQkFDUnFOLFFBQVE0eUMsVUFBVWxnQyxPQUFPO2dCQUMxQjtBQUNBMEosNkJBQWEsSUFBSWgwQixTQUFTcUwsS0FBS0MsSUFDOUJ4TCxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYyxHQUMzQytILE9BQ0E5TyxRQUFRb25ELFlBQVl6dkMsVUFBVTJtQixVQUMvQjtBQUNBckssMkJBQVczWCxTQUFTQTtBQUNwQjJYLDJCQUFXM1gsT0FBTzB2QyxXQUFXdkIsVUFBVWxnQyxPQUFPO0FBQzlDMEosMkJBQVdwa0IsS0FBSztjQUNqQjtZQUNEO1VBQ0Q7UUFDRDtRQUNBb3ZCLHFCQUFzQjd2QixZQUFXO0FBQ2hDLGdCQUFNaTNDLE1BQU1qM0MsT0FBT3NuQztBQUNuQixnQkFBTWprQyxRQUFROVMsRUFBRTBtRCxHQUFHLEVBQ2pCLytDLEtBQUssSUFBSSxFQUNUb0wsSUFBSSxDQUFDeTlCLFFBQVFsL0IsWUFBWTtBQUN6QixtQkFBT3RSLEVBQUVzUixPQUFPLEVBQUUyRixLQUFLLE9BQU87VUFDL0IsQ0FBQyxFQUNBblIsSUFBSTtBQUNOLGNBQUksQ0FBQ2dOLE1BQU03UixRQUFRO0FBQ2xCO1VBQ0Q7QUFDQSxnQkFBTXFyRCxrQkFBa0IsSUFBSWhzRCxTQUFTKytDLGVBQ3BDai9DLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxJQUM5QnFJLE9BQU9rTixPQUFPOUosT0FDZHpTLE9BQU9nSCxNQUFNLFNBQVMsUUFBUSxDQUNoQztBQUNBa2xELDBCQUFnQmhOLFVBQVUsYUFBYWovQyxRQUFRdUgsUUFBUSxhQUFhLENBQUM7QUFDckUwa0QsMEJBQWdCL00sWUFBWXpzQyxLQUFLO0FBQ2pDdzVDLDBCQUFnQjlNLElBQUt4UixjQUFhO0FBQ2pDLGtCQUFNbHNCLGNBQWMsSUFBSXhoQixTQUFTcUwsS0FBS2tILEtBQUttN0IsVUFBVTV0QyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sSUFBSTRtQyxRQUFRO0FBQzlGbHNCLHdCQUFZbE0sZUFBQSxxQkFBQW5OLE9BQ1VySSxPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsQ0FBQyxFQUFBcUIsT0FBR2dILE9BQU9rTixPQUFPOUosSUFBSSxFQUFBcEssT0FBR3JJLE9BQU9nSCxNQUNyRixTQUNBLFFBQ0QsQ0FBQyxDQUNGO0FBQ0EwYSx3QkFBWWpNLGNBQWN4VixRQUFRSyxVQUFVO0FBQzVDb2hCLHdCQUFZdWMsV0FBV2l1QixnQkFBZ0J4TCxlQUFld0wsZ0JBQWdCekwsYUFBYTtVQUNwRixDQUFDO1FBQ0Y7UUFDQWxpQixZQUFhbHZCLFlBQVc7QUFDdkIsZ0JBQU1pM0MsTUFBTWozQyxPQUFPc25DO0FBQ25CLGdCQUFNM2tCLFNBQVNweUIsRUFBRTBtRCxHQUFHLEVBQUUvK0MsS0FBSyxxQkFBcUIsRUFBRTFHLFNBQVM7QUFDM0QsY0FBSSxDQUFDbXhCLFFBQVE7QUFFWjtVQUNEO0FBQ0EsZ0JBQU12ZixPQUFPLElBQUl2UyxTQUFTcUwsS0FBS2tILEtBQzlCcEQsT0FBT2tOLE9BQU8wdkMsVUFDZGpzRCxPQUFPZ0gsTUFBTSxXQUFXLFNBQVMsSUFDaENxSSxPQUFPa04sT0FBTzlKLE9BQ2R6UyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FDL0I7QUFDQXlMLGVBQUsrQyxlQUFBLHFCQUFBbk4sT0FDaUJySSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FBQyxFQUFBcUIsT0FBR2dILE9BQU9rTixPQUFPOUosSUFBSSxFQUFBcEssT0FBR3JJLE9BQU9nSCxNQUNqRixzQkFDQSxvQkFDRCxDQUFDLENBQ0Y7QUFDQXlMLGVBQUtnRCxjQUFjeFYsUUFBUUssVUFBVTtBQUNyQ21TLGVBQUt3ckIsV0FBVztRQUNqQjtRQUNBOHRCLHFCQUFzQjE4QyxZQUFXO0FBQ2hDLGdCQUFNaTNDLE1BQU1qM0MsT0FBT3NuQztBQUNuQixnQkFBTWprQyxRQUFROVMsRUFBRTBtRCxHQUFHLEVBQ2pCLytDLEtBQUssSUFBSSxFQUNUb0wsSUFBSSxDQUFDeTlCLFFBQVFsL0IsWUFBWTtBQUN6QixtQkFBT3RSLEVBQUVzUixPQUFPLEVBQUUyRixLQUFLLE9BQU87VUFDL0IsQ0FBQyxFQUNBblIsSUFBSTtBQUNOLGNBQUksQ0FBQ2dOLE1BQU03UixRQUFRO0FBQ2xCO1VBQ0Q7QUFDQSxnQkFBTW0rQyxXQUFXLElBQUk5K0MsU0FBUysrQyxlQUFBLFNBQUE1MkMsT0FDcEJnSCxPQUFPa04sT0FBTzlKLElBQUksRUFBQXBLLE9BQUdySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQyxDQUMzRDtBQUNBZzRDLG1CQUFTRSxVQUFVLGFBQWFqL0MsUUFBUXVILFFBQVEsYUFBYSxDQUFDO0FBQzlEdzNDLG1CQUFTRyxZQUFZenNDLEtBQUs7QUFDMUJzc0MsbUJBQVNJLElBQUt4UixjQUFhO0FBQzFCLGtCQUFNbHNCLGNBQWMsSUFBSXhoQixTQUFTcUwsS0FBS2tILEtBQ3JDbTdCLFVBQUEsUUFBQXZsQyxPQUNRdWxDLFFBQVEsRUFBQXZsQyxPQUFHckksT0FBT2dILE1BQU0sU0FBUyxPQUFPLENBQUMsQ0FDbEQ7QUFDQSxrQkFBTXVWLFNBQVM7Y0FDZCxHQUFHbE4sT0FBT2tOO1lBQ1g7QUFDQUEsbUJBQU83UCxRQUFRa2hDO0FBQ2ZyeEIsbUJBQU95aUMsV0FBV0E7QUFDbEJ0OUIsd0JBQVlDLHNCQUFzQnBGLE1BQU07QUFDeENtRix3QkFBWXhXLEtBQUtqTCxRQUFRb25ELFlBQVl6dkMsVUFBVTRuQyxlQUFlO1VBQy9ELENBQUM7UUFDRjtRQUNBQSxpQkFBa0IxaUMsYUFBWTtBQUM3QixnQkFBTVAsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QyxjQUFJLENBQUMvQyxRQUFRa1YsT0FBTyxHQUFHO0FBRXRCelYsbUJBQU95aUMsU0FBUzBCLGNBQWM1akMsT0FBTztBQUNyQztVQUNEO0FBQ0EsY0FBSWhWO0FBQ0osY0FBSXlVLE9BQU83UCxTQUFTek0sUUFBUW9uRCxZQUFZQyxhQUFhO0FBQ3BEeC9DLG1CQUFPN0gsUUFBUW9uRCxZQUFZQyxZQUFZL3FDLE9BQU83UCxLQUFLO1VBQ3BELE9BQU87QUFDTjVFLG1CQUFPZ1YsUUFBUTlILFlBQVk7VUFDNUI7QUFDQSxnQkFBTW0zQyxXQUFXcmtEO0FBQ2pCLGdCQUFNNFosY0FBYyxJQUFJeGhCLFNBQVNrYyxTQUFTM0osS0FBSzNLLElBQUk7QUFDbkRBLGlCQUFPNFosWUFBWTYrQixXQUFXaGtDLE9BQU85SixJQUFJLEVBQUVxdUIsUUFBUTtBQUNuRDdnQyxrQkFBUW9uRCxZQUFZQyxZQUFZL3FDLE9BQU83UCxLQUFLLElBQUk1RTtBQUNoRCxjQUFJQSxTQUFTcWtELFVBQVU7QUFFdEI1dkMsbUJBQU95aUMsU0FBUzBCLGNBQWM1akMsT0FBTztBQUNyQztVQUNEO0FBQ0FBLGtCQUFRdEgsZUFDUHhWLE9BQU9nSCxNQUFNLFdBQVcsU0FBUyxJQUFJdVYsT0FBTzlKLE9BQU96UyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUssQ0FDN0U7QUFDQThWLGtCQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxrQkFBUStVLFlBQVkvcEIsSUFBSTtBQUN4QmdWLGtCQUFRZ1osZ0JBQWdCLFVBQVU7QUFDbENoWixrQkFBUXN2QyxzQkFBc0IsRUFBRTtBQUNoQ3R2QyxrQkFBUWdWLEtBQUt2VixPQUFPeWlDLFNBQVMwQixlQUFlbmtDLE9BQU95aUMsU0FBU3lCLGFBQWE7UUFDMUU7UUFDQXVMLDBCQUEyQjM4QyxZQUFXO0FBQ3JDLGdCQUFNaTNDLE1BQU1qM0MsT0FBT3NuQztBQUNuQixnQkFBTWprQyxRQUFROVMsRUFBRTBtRCxHQUFHLEVBQ2pCLytDLEtBQUssSUFBSSxFQUNUb0wsSUFBSSxDQUFDeTlCLFFBQVFsL0IsWUFBWTtBQUN6QixtQkFBT3RSLEVBQUVzUixPQUFPLEVBQUUyRixLQUFLLE9BQU87VUFDL0IsQ0FBQyxFQUNBblIsSUFBSTtBQUNOLGNBQUksQ0FBQ2dOLE1BQU03UixRQUFRO0FBQ2xCO1VBQ0Q7QUFDQSxnQkFBTW0rQyxXQUFXLElBQUk5K0MsU0FBUysrQyxlQUFBLFNBQUE1MkMsT0FDcEJnSCxPQUFPa04sT0FBTzlKLElBQUksRUFBQXBLLE9BQUdySSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQyxDQUMzRDtBQUNBZzRDLG1CQUFTRSxVQUFVLGFBQWFqL0MsUUFBUXVILFFBQVEsYUFBYSxDQUFDO0FBQzlEdzNDLG1CQUFTRyxZQUFZenNDLEtBQUs7QUFDMUJzc0MsbUJBQVNJLElBQUt4UixjQUFhO0FBQzFCLGtCQUFNbHNCLGNBQWMsSUFBSXhoQixTQUFTcUwsS0FBS2tILEtBQ3JDbTdCLFVBQUEsTUFBQXZsQyxPQUNNdWxDLFFBQVEsRUFBQXZsQyxPQUFHckksT0FBT2dILE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FDbEQ7QUFDQSxrQkFBTXVWLFNBQVM7Y0FDZCxHQUFHbE4sT0FBT2tOO1lBQ1g7QUFDQUEsbUJBQU83UCxRQUFRa2hDO0FBQ2ZyeEIsbUJBQU95aUMsV0FBV0E7QUFDbEJ0OUIsd0JBQVlDLHNCQUFzQnBGLE1BQU07QUFDeENtRix3QkFBWXhXLEtBQUtqTCxRQUFRb25ELFlBQVl6dkMsVUFBVXkwQyxvQkFBb0I7VUFDcEUsQ0FBQztRQUNGO1FBQ0FBLHNCQUF1QnZ2QyxhQUFZO0FBQ2xDLGdCQUFNUCxTQUFTTyxRQUFRK0Msc0JBQXNCO0FBQzdDLGNBQUksQ0FBQy9DLFFBQVFrVixPQUFPLEdBQUc7QUFFdEJ6VixtQkFBT3lpQyxTQUFTMEIsY0FBYzVqQyxPQUFPO0FBQ3JDO1VBQ0Q7QUFDQSxnQkFBTTRxQixRQUFRbnJCLE9BQU85SixLQUFLTyxRQUFRLElBQUlrQyxPQUFBLElBQUE3TSxPQUFXbkksU0FBU3UxQixlQUFlLENBQUMsR0FBQyxHQUFBLENBQUcsR0FBRyxFQUFFO0FBQ25GLGNBQUkzdEI7QUFDSixjQUFJeVUsT0FBTzdQLFNBQVN6TSxRQUFRb25ELFlBQVlDLGFBQWE7QUFDcER4L0MsbUJBQU83SCxRQUFRb25ELFlBQVlDLFlBQVkvcUMsT0FBTzdQLEtBQUs7VUFDcEQsT0FBTztBQUNONUUsbUJBQU9nVixRQUFROUgsWUFBWTtVQUM1QjtBQUNBLGdCQUFNbTNDLFdBQVdya0Q7QUFDakIsZ0JBQU00WixjQUFjLElBQUl4aEIsU0FBU2tjLFNBQVMzSixLQUFLM0ssSUFBSTtBQUNuREEsaUJBQU80WixZQUNMNCtCLGdCQUFnQjVZLE9BQU8xbkMsT0FBT2dILE1BQU0sYUFBYSxXQUFXLENBQUMsRUFDN0Q4NUIsUUFBUTtBQUNWN2dDLGtCQUFRb25ELFlBQVlDLFlBQVkvcUMsT0FBTzdQLEtBQUssSUFBSTVFO0FBQ2hELGNBQUlBLFNBQVNxa0QsVUFBVTtBQUN0QnJ2QyxvQkFDRTFILGlCQUFpQixFQUNqQkMsTUFBQSxLQUFBaE4sT0FDS3lVLFFBQVF3eEIsWUFBWSxHQUFDLE9BQUEsRUFBQWptQyxPQUFRcS9CLEtBQUssRUFBQXIvQixPQUFHckksT0FBT2dILE1BQU0sWUFBWSxVQUFVLENBQUMsQ0FDL0U7QUFDRHVWLG1CQUFPeWlDLFNBQVN5QixjQUFjM2pDLE9BQU87QUFDckM7VUFDRDtBQUNBQSxrQkFBUXRILGVBQ1B4VixPQUFPZ0gsTUFBTSxjQUFjLFlBQVksSUFDdEMwZ0MsUUFDQTFuQyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFDM0J1VixPQUFPekssTUFDVDtBQUNBZ0wsa0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLGtCQUFRK1UsWUFBWS9wQixJQUFJO0FBQ3hCZ1Ysa0JBQVFnWixnQkFBZ0IsVUFBVTtBQUNsQ2haLGtCQUFRc3ZDLHNCQUFzQixFQUFFO0FBQ2hDdHZDLGtCQUFRZ1YsS0FBS3ZWLE9BQU95aUMsU0FBUzBCLGVBQWVua0MsT0FBT3lpQyxTQUFTeUIsYUFBYTtRQUMxRTtNQUNEO0FBQ0F4Z0QsY0FBUVMsZ0JBQWdCVCxRQUFRb25ELGFBQWEsYUFBYTtJQUMzRCxHQUFHbjZDLE1BQU07RUFBQTtBQUFBLENBQUE7O0FDaDZCVCxJQUFBby9DLCtCQUFBLENBQUE7QUFBQSxJQUFBQyw0QkFBQTdzRCxNQUFBO0VBQUEsZ0RBQUE7QUFBQTtJQUVBO0FBQ0EsS0FBQyxTQUFTOHNELHFCQUFxQjVzRCxHQUFHO0FBTWpDSyxjQUFRd3NELGdCQUFnQixNQUFNO0FBQzdCLFlBQ0MsQ0FBQ3ZzRCxTQUFTZ0IsZUFDVixDQUFDc0UsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLEtBQzNCRixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNRixHQUFHQyxPQUFPQyxJQUFJLGdCQUFnQixFQUFFMmUsUUFDdkU3ZSxHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNRixHQUFHQyxPQUFPQyxJQUFJLGdCQUFnQixFQUFFZ25ELFNBQ3ZFO0FBQ0Q7UUFDRDtBQUNBenNELGdCQUFRNkosZUFDUDdKLFFBQVF3c0QsY0FBYy8rQyxVQUN0QjFOLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxHQUN2QixrQkFDQWhILE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxDQUM5QjtNQUNEO0FBQ0EvRyxjQUFRd3NELGNBQWMvK0MsV0FBVyxNQUFNO0FBQ3RDLGNBQU1FLFNBQVMsSUFBSTFOLFNBQVMyTixhQUFhLEtBQUssR0FBRztBQUNqREQsZUFBT0csY0FBYyxTQUFTO0FBQzlCSCxlQUFPRSxTQUFTOU4sT0FBT2dILE1BQU0sU0FBUyxPQUFPLENBQUM7QUFDOUM0RyxlQUFPSSxjQUFjaE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXLEdBQUcsd0JBQXdCO0FBQ3JGLGNBQU1pSCxPQUFPLElBQUkvTixTQUFTZ08sVUFBVWpPLFFBQVF3c0QsY0FBYy8rQyxTQUFTUyxRQUFRO0FBQzNFRixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ05pSCxNQUFNLENBQ0w7WUFDQ1YsT0FBT3RPLE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0I7WUFDdERwRyxNQUFNO1lBQ05xTCxPQUFPO1lBQ1BpWCxTQUFTO1VBQ1YsQ0FBQTtRQUVGLENBQUM7QUFDRGpWLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU87VUFDUG1KLE1BQU07UUFDUCxDQUFDO0FBQ0QsY0FBTTh3QyxZQUFZcmdELFNBQVNZLGNBQWMsS0FBSztBQUM5Q3kvQyxrQkFBVTc1QyxNQUFNb3dDLFVBQVU7QUFDMUJseEMsZUFBT2lCLFdBQVcwNUMsU0FBUztBQUMzQnJvRCxpQkFBU3VVLE9BQU9DLEtBQUs2ekMsU0FBUztBQUM5QjM2QyxlQUFPa0IsUUFBUTtBQUNmLGNBQU1DLFFBQVE7VUFDYnRFLFFBQVE7VUFDUms5QyxXQUFXO1VBQ1g1dkMsTUFBTTtVQUNOaXhCLFFBQVE7VUFDUmx4QixRQUFRdFMsR0FBR0MsT0FBT0MsSUFBSSxZQUFZO1VBQ2xDNGlELFVBQVVyb0QsUUFBUXVILFFBQVEsVUFBVTtRQUNyQztBQUNBLGNBQU0yWCxXQUFXLElBQUlqZixTQUFTdVUsT0FBT3pVLE9BQU9nSCxNQUFNLFVBQVUsUUFBUSxDQUFDO0FBQ3JFLGNBQU1rdEIsYUFBYSxJQUFJaDBCLFNBQVNxTCxLQUFLQyxJQUNwQ3hMLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUMzQitILE9BQ0NNLFlBQVc7QUFDWCxnQkFBTWkzQyxNQUFNajNDLE9BQU9zbkM7QUFDbkIsZ0JBQU02UixTQUFTNW9ELEVBQUUwbUQsR0FBRyxFQUFFLytDLEtBQUssZUFBZTtBQUMxQyxnQkFBTXlILE9BQU8sQ0FBQTtBQUNidzVDLGlCQUFPOTZCLEtBQUssQ0FBQzBpQixRQUFRMzlCLFNBQVM7QUFDN0Isa0JBQU1nMkMsUUFBUTdvRCxFQUFFNlMsSUFBSTtBQUNwQixrQkFBTS9GLFFBQVErN0MsTUFBTTV4QyxLQUFLLE9BQU87QUFDaEMsa0JBQU04eEMsWUFBWUYsTUFBTWxoRCxLQUFLLGtDQUFrQztBQUMvRCxrQkFBTXFoRCxjQUFjRCxVQUFVOW5ELFNBQVM7QUFDdkNtTyxpQkFBS0EsS0FBS25PLE1BQU0sSUFBSTtjQUNuQnlOLE9BQ0M1QixTQUNDazhDLGNBQUEsSUFBQXZnRCxPQUNNckksT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQUMsRUFBQXFCLE9BQ2hDc2dELFVBQVU5eEMsS0FBSyxRQUFRLE1BQU0sYUFDMUI3VyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUssSUFBQSxHQUFBcUIsT0FDdEIsSUFBSW5JLFNBQVN1WSxLQUFLa3dDLFVBQVU5eEMsS0FBSyxRQUFRLENBQUMsRUFBRW9VLFNBQy9DLEtBQ0QsR0FBQyxRQUFBLEVBQUE1aUIsT0FBU3JJLE9BQU9nSCxNQUFNLE1BQU0sSUFBSSxDQUFDLEdBQ3JDLEdBQUEsSUFDQztjQUNKaUYsT0FBT1M7Y0FDUHdXLFNBQVM7Y0FDVHhVLE9BQU9rNkMsY0FBYyxnQkFBZ0I7WUFDdEM7VUFDRCxDQUFDO0FBQ0R2NUMsaUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztZQUN6QnRHLE1BQU07WUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87VUFDckMsQ0FBQztBQUNEcUksaUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztZQUN6QnRHLE1BQU07WUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7WUFDOUJ1SCxPQUFRNUUsT0FBTTtBQUNiL0osZ0JBQUVNLFNBQVNnTyxVQUFVMEMsWUFBWWpILEVBQUU0RyxPQUFPdEMsTUFBTSxPQUFPLENBQUMsRUFBRThKLEtBQUssV0FBVyxJQUFJO1lBQy9FO1VBQ0QsQ0FBQztBQUNEMUksaUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztZQUN6QnRHLE1BQU07WUFDTnVHLE9BQU90TyxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7WUFDaEN1SCxPQUFRNUUsT0FBTTtBQUNiL0osZ0JBQUVNLFNBQVNnTyxVQUFVMEMsWUFBWWpILEVBQUU0RyxPQUFPdEMsTUFBTSxPQUFPLENBQUMsRUFBRThKLEtBQUssV0FBVyxLQUFLO1lBQ2hGO1VBQ0QsQ0FBQztBQUNEMUksaUJBQU9rTixPQUFPdE8sS0FBS0ksT0FBTztZQUN6QnRHLE1BQU07WUFDTm5ILE1BQU07WUFDTmkvQyxtQkFBbUI7WUFDbkI3d0M7VUFDRCxDQUFDO0FBQ0RLLGlCQUFPa04sT0FBT3RPLEtBQUtJLE9BQU87WUFDekJ0RyxNQUFNO1VBQ1AsQ0FBQztBQUNELGdCQUFNNEcsU0FBU1UsT0FBT2tOLE9BQU90TyxLQUFLVyxPQUFPO0FBQ3pDUyxpQkFBT2tOLE9BQU8zTyxPQUFPaUIsV0FBV0YsTUFBTTtRQUN2QyxHQUNBd1EsUUFDRDtBQUNBK1UsbUJBQVczWCxTQUFTO1VBQ25CdE87VUFDQUw7UUFDRDtBQUNBc21CLG1CQUFXcGtCLEtBQUs7TUFDakI7QUFDQTdQLGNBQVF3c0QsY0FBYy8rQyxTQUFTUyxXQUFZSSxXQUFVO0FBQ3BEck8saUJBQVNxTCxLQUFLb0osZ0JBQWdCRSxTQUFTN1UsT0FBT2dILE1BQU0sVUFBVSxRQUFRO0FBQ3RFLGNBQU1za0QsZUFBZTFyRCxFQUFFTSxTQUFTZ08sVUFBVTBDLFlBQVlyQyxNQUFNZ0MsUUFBUSxPQUFPLENBQUMsRUFBRXNYLE9BQU8sQ0FBQ3VvQixRQUFRbC9CLFlBQVk7QUFDekcsaUJBQU9BLFFBQVFnUyxXQUFXaFMsUUFBUWc0QyxtQkFBbUJ4NkMsTUFBTWs5QixVQUFVO1FBQ3RFLENBQUMsRUFBRS9xQztBQUNILFlBQ0N5cUQsZUFBZSxLQUNmLENBQUM1M0MsUUFDQTFULE9BQU9nSCxNQUFNLFdBQVcsU0FBUyxJQUNoQ3NrRCxlQUNBdHJELE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLENBQy9DLEdBQ0M7QUFDRDtRQUNEO0FBQ0EsY0FBTTBMLFFBQVFuRSxNQUFNZ0MsT0FBT2lsQixXQUFXLE9BQU87QUFDN0MsY0FBTTFqQixTQUFTdkQsTUFBTWdDLE9BQU91QixPQUFPN0Y7QUFDbkMsY0FBTTBnRCxhQUFhcCtDLE1BQU1nQyxPQUFPdUIsT0FBTzdGO0FBQ3ZDLFlBQUksQ0FBQzZGLFFBQVE7QUFDWixlQUFLdE0sR0FBR3VGLE9BQU8sWUFBWTtZQUMxQmhELE1BQU07WUFDTmlELEtBQUs7VUFDTixDQUFDO0FBQ0Q7UUFDRDtBQUNBOUssaUJBQVMyTixhQUFhMkcsa0JBQWtCLEtBQUs7QUFDN0N0VSxpQkFBU3VVLE9BQU9DLEtBQUtuRyxNQUFNZ0MsTUFBTTtBQUNqQyxZQUFJLENBQUNtQyxPQUFPO0FBQ1h4UyxtQkFBU3VVLE9BQU9ZLE1BQ2ZyVixPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FDdkJoSCxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZSxDQUM5QztBQUNBO1FBQ0Q7QUFDQSxjQUFNNGxELGdCQUFnQixJQUFJMXNELFNBQVMrK0MsZUFBZWovQyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sQ0FBQztBQUNoRjRsRCxzQkFBYzFOLFVBQVUsYUFBYWovQyxRQUFRdUgsUUFBUSxhQUFhLENBQUM7QUFDbkVvbEQsc0JBQWMxTixVQUFVLGlDQUFpQyxJQUFJO0FBQzdEME4sc0JBQWN6TixZQUFZenNDLEtBQUs7QUFDL0JrNkMsc0JBQWN4TixJQUFLeFIsY0FBYTtBQUMvQixnQkFBTXJ4QixTQUFTO1lBQ2Q5SixNQUFNbTdCO1lBQ04rZTtZQUNBNzZDO1lBQ0E4NkM7VUFDRDtBQUNBLGdCQUFNbHJDLGNBQWMsSUFBSXhoQixTQUFTcUwsS0FBS2tILEtBQUttN0IsVUFBVTV0QyxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sSUFBSTRtQyxRQUFRO0FBQzlGbHNCLHNCQUFZQyxzQkFBc0JwRixNQUFNO0FBQ3hDbUYsc0JBQVlsTSxlQUFBLEdBQUFuTixPQUFrQnlKLFFBQU0sT0FBQSxDQUFPO0FBQzNDNFAsc0JBQVlqTSxjQUFjeFYsUUFBUUssVUFBVTtBQUM1Q29oQixzQkFBWXlzQix1QkFBdUI7QUFDbkN6c0Isc0JBQVltckMsY0FBYyxDQUFDO0FBQzNCbnJDLHNCQUFZb3JDLGFBQWE3c0QsUUFBUXdzRCxjQUFjNzBDLFVBQVVnMEMsVUFBVWdCLGNBQWNuTSxhQUFhO1FBQy9GLENBQUM7TUFDRjtBQUNBeGdELGNBQVF3c0QsY0FBYzcwQyxZQUFZOzs7UUFHakNnMEMsVUFBV0UseUJBQXdCO0FBQ2xDLGdCQUFNdnZDLFNBQVN1dkMsb0JBQW9Cbm9DLFNBQ2hDbW9DLG9CQUFvQm5vQyxPQUFPOUQsc0JBQXNCLElBQ2pEaXNDLG9CQUFvQmpzQyxzQkFBc0I7QUFHN0N0RCxpQkFBT3F3QyxjQUFjbE0sY0FBY29MLG1CQUFtQjtBQUN0RCxjQUFJLzhDO0FBQ0osY0FBSW1sQjtBQUNKLGNBQUkzWCxPQUFPb3dDLFlBQVk7QUFDdEIsa0JBQU1JLGVBQWUsSUFBSXZuRCxHQUFHK00sTUFBTWdLLE9BQU85SixJQUFJLEVBQUV1NkMsWUFBWSxFQUFFajZDLGdCQUFnQjtBQUM3RSxnQkFBSWc2QyxpQkFBaUJ4d0MsT0FBTzlKLE1BQU07QUFDakMxRCxzQkFBUTtnQkFDUHRFLFFBQVE7Z0JBQ1JzTixNQUFNO2dCQUNOazFDLFNBQVM7Z0JBQ1RDLFVBQVU7Z0JBQ1ZwMUMsUUFBUWkxQztjQUNUO0FBQ0E3NEIsMkJBQWEsSUFBSWgwQixTQUFTcUwsS0FBS0MsSUFDOUJ4TCxPQUFPZ0gsTUFBTSxjQUFjLFlBQVksR0FDdkMrSCxPQUNBOU8sUUFBUXdzRCxjQUFjNzBDLFVBQVV1MUMsWUFDakM7QUFDQWo1Qix5QkFBVzNYLFNBQVNBO0FBQ3BCMlgseUJBQVczWCxPQUFPMHZDLFdBQVdjO0FBQzdCNzRCLHlCQUFXcGtCLEtBQUs7WUFDakI7VUFDRDtRQUNEO1FBQ0FxOUMsY0FBZTk5QyxZQUFXO0FBQ3pCLGdCQUFNaTNDLE1BQU1qM0MsT0FBT3NuQztBQUNuQixnQkFBTTNrQixTQUFTcHlCLEVBQUUwbUQsR0FBRyxFQUFFLytDLEtBQUsscUJBQXFCLEVBQUUxRyxTQUFTO0FBQzNELGdCQUFNdXNELFVBQVV4dEQsRUFBRTBtRCxHQUFHLEVBQUUvK0MsS0FBSyxLQUFLLEVBQUVzUCxLQUFLLE9BQU87QUFDL0MsY0FBSW1iLFVBQVUsQ0FBQ283QixTQUFTO0FBRXZCO1VBQ0Q7QUFDQSxnQkFBTTM2QyxPQUFPLElBQUl2UyxTQUFTcUwsS0FBS2tILEtBQzlCcEQsT0FBT2tOLE9BQU8wdkMsVUFDZGpzRCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU8sSUFBSXFJLE9BQU9rTixPQUFPOUosT0FBT3pTLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxDQUNsRjtBQUNBeUwsZUFBSytDLGVBQ0p4VixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sSUFDMUJxSSxPQUFPa04sT0FBTzlKLE9BQ2R6UyxPQUFPZ0gsTUFBTSxzQkFBc0Isb0JBQW9CLENBQ3pEO0FBQ0F5TCxlQUFLZ0QsY0FBY3hWLFFBQVFLLFVBQVU7QUFDckNtUyxlQUFLcTZDLGFBQWE7UUFDbkI7TUFDRDtBQUNBN3NELGNBQVFTLGdCQUFnQlQsUUFBUXdzRCxlQUFlLGVBQWU7SUFDL0QsR0FBR3YvQyxNQUFNO0VBQUE7QUFBQSxDQUFBOztBQzlPVCxJQUFBbWdELDhCQUFBLENBQUE7QUFBQSxJQUFBQywyQkFBQTV0RCxNQUFBO0VBQUEsK0NBQUE7QUFBQTtJQUdBO0FBQ0EsS0FBQyxTQUFTNnRELG9CQUFvQjN0RCxHQUFHO0FBT2hDSyxjQUFRdXRELGVBQWUsTUFBTTtBQUM1QixZQUNDdHRELFNBQVNnQixnQkFDUHNFLEdBQUdDLE9BQU9DLElBQUksYUFBYSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTBELFNBQVM1RCxHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixDQUFDLEtBQ3ZGRixHQUFHQyxPQUFPQyxJQUFJLG1CQUFtQixNQUFNLE1BQ3ZDRixHQUFHQyxPQUFPQyxJQUFJLDRCQUE0QixNQUFNLGdCQUNoRDtBQUNEekYsa0JBQVE2SixlQUFlN0osUUFBUXV0RCxhQUFhOS9DLFVBQVUsTUFBTSxhQUFhLFVBQVU7UUFDcEY7TUFDRDtBQUNBek4sY0FBUXV0RCxhQUFhbEcsY0FBYyxDQUFDO0FBQ3BDcm5ELGNBQVF1dEQsYUFBYTkvQyxXQUFXLE1BQU07QUFDckMsY0FBTUUsU0FBUyxJQUFJMU4sU0FBUzJOLGFBQWEsS0FBSyxHQUFHO0FBQ2pERCxlQUFPRSxTQUFTLElBQUk7QUFDcEJGLGVBQU9HLGNBQWMsU0FBUztBQUM5QkgsZUFBT0ksY0FBYyxRQUFRLFNBQVM7QUFDdENKLGVBQU9JLGNBQWNoTyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sR0FBRyxhQUFhO0FBQ2hFNEcsZUFBT0ksY0FBY2hPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxHQUFHLE9BQU87QUFDMUQsY0FBTWlILE9BQU8sSUFBSS9OLFNBQVNnTyxVQUFVak8sUUFBUXV0RCxhQUFhOS9DLFNBQVNTLFFBQVE7QUFDMUVGLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTndHLE9BQU90TyxRQUFRbXlCLFFBQVF3WSxXQUFXQztVQUNsQzc3QixNQUFNLENBQ0w7WUFDQ1YsT0FBTztZQUNQckMsT0FBTztZQUNQckwsTUFBTTtZQUNOb0osU0FBUztZQUNUa1osU0FBUztVQUNWLENBQUE7UUFFRixDQUFDO0FBQ0RqVixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ05uSCxNQUFNO1VBQ04wTixPQUFPO1VBQ1BDLE9BQU90TyxRQUFRbXlCLFFBQVF3WSxXQUFXRTtVQUNsQzk3QixNQUFNL08sUUFBUW15QixRQUFRMlk7UUFDdkIsQ0FBQztBQUNEOThCLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU87VUFDUEMsT0FBUUEsV0FBVTtBQUNqQixnQkFBSUEsTUFBTWdDLE9BQU90RSxVQUFVLFVBQVU7QUFDcENoTSxzQkFBUW15QixRQUFRNFksZUFBZXo4QixNQUFNZ0MsTUFBTTtZQUM1QztVQUNEO1VBQ0F2QixNQUFNL08sUUFBUW15QixRQUFRK1k7O1FBQ3ZCLENBQUM7QUFDRGw5QixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ053RyxPQUFPdE8sUUFBUW15QixRQUFRd1ksV0FBV1E7VUFDbENwOEIsTUFBTSxDQUNMO1lBQ0NWLE9BQU87WUFDUHJDLE9BQU87WUFDUHJMLE1BQU07WUFDTm9KLFNBQVM7WUFDVGtaLFNBQVM7VUFDVixDQUFBO1FBRUYsQ0FBQztBQUNEalYsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOME4sT0FBTztVQUNQQyxPQUFPdE8sUUFBUW15QixRQUFRd1ksV0FBV1M7VUFDbENyOEIsTUFBTS9PLFFBQVFteUIsUUFBUTJZLGlCQUFpQmxqQjs7WUFFckM0bEMsZUFBYztBQUNkLHFCQUFPQSxVQUFVeGhELFVBQVU7WUFDNUI7VUFDRDtRQUNELENBQUM7QUFDRGdDLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU87VUFDUEMsT0FBUUEsV0FBVTtBQUNqQixnQkFBSUEsTUFBTWdDLE9BQU90RSxVQUFVLFVBQVU7QUFDcENoTSxzQkFBUW15QixRQUFRNFksZUFBZXo4QixNQUFNZ0MsTUFBTTtZQUM1QztVQUNEO1VBQ0F2QixNQUFNL08sUUFBUW15QixRQUFRK1k7O1FBQ3ZCLENBQUM7QUFDRGw5QixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ053RyxPQUFRQSxXQUFVO0FBQ2pCQSxrQkFBTWdDLE9BQU90QyxLQUFLcTlCLFlBQVk3OEIsV0FBVyxDQUFDRixNQUFNZ0MsT0FBTzJTO0FBQ3ZEM1Usa0JBQU1nQyxPQUFPdEMsS0FBSzY5QixhQUFhcjlCLFdBQzlCLENBQUNGLE1BQU1nQyxPQUFPMlMsV0FBVzNVLE1BQU1nQyxPQUFPdEMsS0FBS3E5QixZQUFZci9CLFVBQVU7QUFDbEVzQyxrQkFBTWdDLE9BQU90QyxLQUFLcTlCLFlBQVk1OEIsTUFBTWs5QixRQUFRcjlCLE1BQU1nQyxPQUFPMlMsVUFBVSxLQUFLO0FBQ3hFM1Usa0JBQU1nQyxPQUFPdEMsS0FBSzY5QixhQUFhcDlCLE1BQU1rOUIsUUFBUXI5QixNQUFNZ0MsT0FBTzJTLFVBQVUsS0FBSztVQUMxRTtVQUNBbFUsTUFBTSxDQUNMO1lBQ0NWLE9BQU87WUFDUHJDLE9BQU87WUFDUHJMLE1BQU07WUFDTm9KLFNBQVM7WUFDVGtaLFNBQVM7VUFDVixDQUFBO1FBRUYsQ0FBQztBQUNEalYsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOME4sT0FBTztVQUNQQyxPQUFPdE8sUUFBUW15QixRQUFRd1ksV0FBV1U7VUFDbEN0OEIsTUFBTS9PLFFBQVFteUIsUUFBUTJZO1FBQ3ZCLENBQUM7QUFDRDk4QixhQUFLSSxPQUFPO1VBQ1h0RyxNQUFNO1VBQ05uSCxNQUFNO1VBQ04wTixPQUFPO1VBQ1BDLE9BQVFBLFdBQVU7QUFDakIsZ0JBQUlBLE1BQU1nQyxPQUFPdEUsVUFBVSxVQUFVO0FBQ3BDaE0sc0JBQVFteUIsUUFBUTRZLGVBQWV6OEIsTUFBTWdDLE1BQU07WUFDNUM7VUFDRDtVQUNBdkIsTUFBTS9PLFFBQVFteUIsUUFBUStZOztRQUN2QixDQUFDO0FBQ0RsOUIsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOdUcsT0FBTzs7UUFDUixDQUFDO0FBQ0RMLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU87VUFDUG1KLE1BQU07UUFDUCxDQUFDO0FBQ0QsY0FBTTFJLFFBQVE7VUFDYnRFLFFBQVE7VUFDUnNOLE1BQU07VUFDTkksUUFBUTtVQUNSNndCLFFBQVE7VUFDUjk1QixRQUFRO1FBQ1Q7QUFDQSxZQUFJMUosR0FBR0MsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTSxJQUFJO0FBRTlDcUosZ0JBQU00NEMsWUFBWTtBQUNsQjU0QyxnQkFBTTY0QyxXQUFXcGlELEdBQUdDLE9BQU9DLElBQUksWUFBWTtBQUMzQ3FKLGdCQUFNODRDLFdBQVc1bkQsUUFBUXVILFFBQVEsVUFBVTtRQUM1QyxXQUFXaEMsR0FBR0MsT0FBT0MsSUFBSSw0QkFBNEIsTUFBTSxlQUFlO0FBQ3pFcUosZ0JBQU00NEMsWUFBWTtBQUNsQjU0QyxnQkFBTWc1QyxlQUNMdmlELEdBQUcwRSxLQUFLd0gsY0FBYyxXQUFXLEtBQUt4SixTQUFTZ3FDLGlCQUFpQix3QkFBd0IsRUFBRSxDQUFDLEVBQUVqbUM7QUFDOUY4QyxnQkFBTWk1QyxZQUNMeGlELEdBQUcwRSxLQUFLd0gsY0FBYyxRQUFRLEtBQUt4SixTQUFTZ3FDLGlCQUFpQixvQkFBb0IsRUFBRSxDQUFDLEVBQUVqbUM7QUFDdkY4QyxnQkFBTSs0QyxXQUFXN25ELFFBQVF1SCxRQUFRLFVBQVU7UUFDNUMsT0FBTztBQUNOdUgsZ0JBQU00NEMsWUFBWTtBQUNsQjU0QyxnQkFBTStJLFNBQVN0UyxHQUFHQyxPQUFPQyxJQUFJLFlBQVk7QUFDekNxSixnQkFBTXU1QyxXQUFXcm9ELFFBQVF1SCxRQUFRLFVBQVU7UUFDNUM7QUFDQSxjQUFNK2dELFlBQVlyZ0QsU0FBU1ksY0FBYyxLQUFLO0FBQzlDeS9DLGtCQUFVNzVDLE1BQU1vd0MsVUFBVTtBQUMxQmx4QyxlQUFPaUIsV0FBVzA1QyxTQUFTO0FBQzNCcm9ELGlCQUFTdVUsT0FBT0MsS0FBSzZ6QyxTQUFTO0FBQzlCMzZDLGVBQU9rQixRQUFRO0FBQ2YsY0FBTXFRLFdBQVcsSUFBSWpmLFNBQVN1VSxPQUFPLFFBQVE7QUFDN0MsY0FBTXlmLGFBQWEsSUFBSWgwQixTQUFTcUwsS0FBS0MsSUFDcEMsU0FDQXVELE9BQ0NNLFlBQVc7QUFDWCxnQkFBTXNxQixXQUFXdHFCLE9BQU9FLFlBQVk7QUFDcEMsZ0JBQU1tRCxRQUFTaW5CLFNBQVM1cUIsU0FBUzRxQixTQUFTNXFCLE1BQU0yRCxTQUFVLENBQUE7QUFDMUQsZ0JBQU0xRCxPQUFPLENBQUE7QUFDYjBELGdCQUFNOEksS0FBS3ZiLFFBQVFxTSxlQUFlO0FBQUEsY0FBQW9oRCxjQUFBL2hELDJCQUNmK0csS0FBQSxHQUFBaTdDO0FBQUEsY0FBQTtBQUFuQixpQkFBQUQsWUFBQTdoRCxFQUFBLEdBQUEsRUFBQThoRCxVQUFBRCxZQUFBNWhELEVBQUEsR0FBQUMsUUFBMEI7QUFBQSxvQkFBZjBHLE9BQUFrN0MsUUFBQTFoRDtBQUNWLG9CQUFNNDhDLFdBQVcsQ0FBQTtBQUNqQixvQkFBTStFLFVBQVUsQ0FBQyxDQUFDbjdDLEtBQUttN0M7QUFDdkIsa0JBQUlDO0FBQ0osa0JBQUlELFNBQVM7QUFDWi9FLHlCQUFTQSxTQUFTaG9ELE1BQU0sSUFBSTtBQUM1Qmd0RCwyQkFBV3A3QyxLQUFLKzJCLFdBQ2QzaEIsT0FBUTJoQixnQkFBZTtBQUN2Qix5QkFBT0EsV0FBV3poQyxTQUFTLFlBQVl5aEMsV0FBV3B2QixVQUFVO2dCQUM3RCxDQUFDLEVBQ0ErWSxJQUFJO2NBQ1AsT0FBTztBQUNOLG9CQUFJMWdCLEtBQUttQyxVQUFVO0FBQ2xCaTBDLDJCQUFTQSxTQUFTaG9ELE1BQU0sSUFBSTtnQkFDN0I7QUFDQSxvQkFBSTRSLEtBQUtoRyxPQUFPLEdBQUc7QUFDbEJvOEMsMkJBQVNBLFNBQVNob0QsTUFBTSxLQUN0QixPQUFBd0gsT0FBT29LLEtBQUtxN0MsVUFBVSxDQUFDLEVBQUV6cEMsSUFBSSxHQUFBLFNBQUFoYyxPQUFhb0ssS0FBS3M3QyxVQUFVLENBQUMsRUFBRTFwQyxJQUFJO2dCQUNuRSxPQUFPO0FBQ053a0MsMkJBQVNBLFNBQVNob0QsTUFBTSxJQUFBLEdBQUF3SCxPQUFPN0MsR0FBR21ZLFNBQVNpaUMsY0FBY250QyxLQUFLczdDLFVBQVUsQ0FBQyxFQUFFdDJDLElBQUksR0FBQyxJQUFBO2dCQUNqRjtBQUNBbzJDLDJCQUFXcDdDLEtBQUsrMkIsV0FDZDNoQixPQUFRMmhCLGdCQUFlO0FBQ3ZCLHlCQUFPQSxXQUFXemhDLFNBQVMsVUFBVXloQyxXQUFXcHZCLFVBQVU7Z0JBQzNELENBQUMsRUFDQStZLElBQUk7Y0FDUDtBQUNBLGtCQUFJMDZCLFVBQVU7QUFDYmhGLHlCQUFTQSxTQUFTaG9ELE1BQU0sSUFBQSxHQUFBd0gsT0FBT3VsRCxVQUFVLE9BQU8sSUFBRSxLQUFBLEVBQUF2bEQsT0FDakR3bEQsU0FBU2ptQyxXQUFXLGFBQ2pCLFNBQUEsSUFBQXZmLE9BQ0ksSUFBSW5JLFNBQVN1WSxLQUFLbzFDLFNBQVNqbUMsTUFBTSxFQUFFcUQsU0FBUyxLQUFLLEdBQUMsV0FBQSxDQUMxRDtjQUNEO0FBQ0Esb0JBQU07Z0JBQUN2ZTtjQUFLLElBQUkrRjtBQUNoQnpELG1CQUFLQSxLQUFLbk8sTUFBTSxJQUFJO2dCQUNuQnlOLE9BQU81QixTQUFTbThDLFNBQVNob0QsU0FBUyxJQUFBLEtBQUF3SCxPQUFTd2dELFNBQVNsMUMsS0FBSyxJQUFJLEdBQUMsR0FBQSxJQUFNO2dCQUNwRTFILE9BQU9TO2dCQUNQd1csU0FBUztnQkFDVHhVLE9BQU9tL0MsV0FBVyxnQkFBZ0I7Y0FDbkM7WUFDRDtVQUFBLFNBQUEzaEQsS0FBQTtBQUFBd2hELHdCQUFBL2pELEVBQUF1QyxHQUFBO1VBQUEsVUFBQTtBQUFBd2hELHdCQUFBdmhELEVBQUE7VUFBQTtBQUNBOEIsZUFBS0ksT0FBTztZQUNYdEcsTUFBTTtZQUNOdUcsT0FBTztVQUNSLENBQUM7QUFDREwsZUFBS0ksT0FBTztZQUNYdEcsTUFBTTtZQUNOdUcsT0FBTztZQUNQQyxPQUFRQSxXQUFVO0FBQ2pCM08sZ0JBQUVNLFNBQVNnTyxVQUFVMEMsWUFBWXJDLE1BQU1nQyxPQUFPdEMsTUFBTSxPQUFPLENBQUMsRUFBRThKLEtBQUssV0FBVyxJQUFJO1lBQ25GO1VBQ0QsQ0FBQztBQUNEOUosZUFBS0ksT0FBTztZQUNYdEcsTUFBTTtZQUNOdUcsT0FBTztZQUNQQyxPQUFRQSxXQUFVO0FBQ2pCM08sZ0JBQUVNLFNBQVNnTyxVQUFVMEMsWUFBWXJDLE1BQU1nQyxPQUFPdEMsTUFBTSxPQUFPLENBQUMsRUFBRThKLEtBQUssV0FBVyxLQUFLO1lBQ3BGO1VBQ0QsQ0FBQztBQUNEOUosZUFBS0ksT0FBTztZQUNYdEcsTUFBTTtZQUNObkgsTUFBTTtZQUNOaS9DLG1CQUFtQjtZQUNuQjd3QztVQUNELENBQUM7QUFDRGYsZUFBS0ksT0FBTztZQUNYdEcsTUFBTTtVQUNQLENBQUM7QUFDRCxnQkFBTTRHLFNBQVNWLEtBQUtXLE9BQU87QUFDM0JoQixpQkFBT2lCLFdBQVdGLE1BQU07QUFFeEJBLGlCQUFPZzlCLFdBQVcxL0IsUUFBUTtBQUMxQjBDLGlCQUFPazlCLFdBQVc1L0IsUUFBUTtBQUMxQjBDLGlCQUFPbTlCLGFBQWE3L0IsUUFBUTtBQUFBLGNBQUEraEQsY0FBQXJpRCwyQkFDUnpMLFNBQVNnTyxVQUFVMEMsWUFBWWpDLFFBQVEsS0FBSyxDQUFBLEdBQUFzL0M7QUFBQSxjQUFBO0FBQWhFLGlCQUFBRCxZQUFBbmlELEVBQUEsR0FBQSxFQUFBb2lELFVBQUFELFlBQUFsaUQsRUFBQSxHQUFBQyxRQUFtRTtBQUFBLG9CQUF4RG1pRCxRQUFBRCxRQUFBaGlEO0FBQ1ZoTSxzQkFBUWdwRCxtQkFBbUJpRixLQUFLO1lBQ2pDO1VBQUEsU0FBQWhpRCxLQUFBO0FBQUE4aEQsd0JBQUFya0QsRUFBQXVDLEdBQUE7VUFBQSxVQUFBO0FBQUE4aEQsd0JBQUE3aEQsRUFBQTtVQUFBO1FBQ0QsR0FDQWdULFFBQ0Q7QUFDQStVLG1CQUFXcGtCLEtBQUs7TUFDakI7QUFDQTdQLGNBQVF1dEQsYUFBYVcsd0JBQXdCO0FBQzdDbHVELGNBQVF1dEQsYUFBYVksbUJBQW1CO0FBQ3hDbnVELGNBQVF1dEQsYUFBYTkvQyxTQUFTUyxXQUFZSSxXQUFVO0FBQ25Eck8saUJBQVNxTCxLQUFLb0osZ0JBQWdCRSxTQUFTO0FBQ3ZDLGNBQU01RyxPQUFPTSxNQUFNZ0M7QUFDbkIsY0FBTSs2QyxlQUFlMXJELEVBQUVNLFNBQVNnTyxVQUFVMEMsWUFBWTNDLE1BQU0sS0FBSyxDQUFDLEVBQUU0WixPQUFPLENBQUN1b0IsUUFBUWwvQixZQUFZO0FBQy9GLGlCQUFPQSxRQUFRZ1MsV0FBV2hTLFFBQVFnNEMsbUJBQW1CeDZDLE1BQU1rOUIsVUFBVTtRQUN0RSxDQUFDLEVBQUUvcUM7QUFDSCxZQUNDeXFELGVBQWUsS0FDZixDQUFDNTNDLFFBQUEsT0FBQXJMLE9BQWU3QyxHQUFHbVksU0FBU2lpQyxjQUFjMEwsWUFBWSxHQUFDLGtCQUFBLENBQWtCLEdBQ3hFO0FBQ0Q7UUFDRDtBQUNBLGNBQU10NUMsUUFBUTlSLFNBQVNnTyxVQUFVK0QsYUFBYWhFLElBQUk7QUFDbEQsWUFBSSxDQUFDK0QsTUFBTUYsUUFBUTtBQUNsQixlQUFLdE0sR0FBR3VGLE9BQU8sY0FBYztZQUM1QmhELE1BQU07WUFDTmlELEtBQUs7VUFDTixDQUFDO0FBQ0Q7UUFDRDtBQUNBOUssaUJBQVMyTixhQUFhMkcsa0JBQWtCLEtBQUs7QUFDN0N0VSxpQkFBU3VVLE9BQU9DLEtBQUt6RyxJQUFJO0FBQ3pCLFlBQUkrRCxNQUFNVSxNQUFNN1IsV0FBVyxHQUFHO0FBQzdCWCxtQkFBU3VVLE9BQU9ZLE1BQU0sU0FBUyxlQUFlO0FBQzlDO1FBQ0Q7QUFDQSxjQUFNNHBDLGlCQUFpQixJQUFJLytDLFNBQVMrK0MsZUFBZSxRQUFRO0FBQzNEQSx1QkFBZUMsVUFBVSxhQUFhai9DLFFBQVF1SCxRQUFRLGFBQWEsQ0FBQztBQUNwRXkzQyx1QkFBZUMsVUFBVSxpQ0FBaUMsSUFBSTtBQUM5REQsdUJBQWVFLFlBQVludEMsTUFBTVUsS0FBSztBQUN0Q3VzQyx1QkFBZUcsSUFBS3hSLGNBQWE7QUFDaEMsZ0JBQU03K0IsUUFBUTtZQUNidEUsUUFBUTtZQUNScU4sUUFBUTgxQjtZQUNSMStCLFFBQVE7VUFDVDtBQUNBLGdCQUFNZ2xCLGFBQWEsSUFBSWgwQixTQUFTcUwsS0FBS0MsSUFBQSxVQUFBbkQsT0FDMUJ1bEMsVUFBUSxPQUFBLEdBQ2xCNytCLE9BQ0E5TyxRQUFRdXRELGFBQWE1MUMsVUFBVWdJLE1BQy9CLE1BQ0FxL0IsZUFBZXdCLGFBQ2hCO0FBQ0F2c0IscUJBQVczWCxTQUFTO1lBQ25COUosTUFBTW03QjtZQUNOcVI7WUFDQSxHQUFHanRDO1VBQ0o7QUFDQWtpQixxQkFBV3BrQixLQUFLO1FBQ2pCLENBQUM7TUFDRjtBQUNBN1AsY0FBUXV0RCxhQUFhNTFDLFlBQVk7UUFDaENnSSxNQUFPdlEsWUFBVztBQUNqQixnQkFBTXNxQixXQUFXdHFCLE9BQU9FLFlBQVk7QUFDcEMsY0FBSW9xQixTQUFTNXFCLE1BQU02dkIsWUFBWTtBQUM5QnZ2QixtQkFBT2tOLE9BQU85SixPQUFPa25CLFNBQVM1cUIsTUFBTTZ2QixXQUFXLENBQUMsRUFBRTZIO1VBQ25EO0FBQ0EsZ0JBQU16VSxTQUFTLENBQUMySCxTQUFTNXFCLE1BQU0yRCxNQUFNLENBQUMsRUFBRWs3QztBQUN4QyxnQkFBTW43QyxPQUFPLElBQUl2UyxTQUFTcUwsS0FBS2tILEtBQUtwRCxPQUFPa04sT0FBTzlKLE1BQUEsT0FBQXBLLE9BQWFnSCxPQUFPa04sT0FBTzlKLElBQUksQ0FBRTtBQUNuRixjQUFJNDdDLGNBQWM7QUFDbEIsY0FBSXI4QixVQUFVM2lCLE9BQU9rTixPQUFPc3VCLFlBQVk7QUFDdkNwNEIsaUJBQUt3ZixrQkFBa0I1aUIsT0FBT2tOLE9BQU91dUIsV0FBV3o3QixPQUFPa04sT0FBT292QixVQUFVO0FBQ3hFMGlCLDBCQUFjO1VBQ2Y7QUFDQSxjQUFJcjhCLFVBQVUzaUIsT0FBT2tOLE9BQU82dUIsWUFBWTtBQUN2QzM0QixpQkFBS3lmLGtCQUFrQjdpQixPQUFPa04sT0FBTzh1QixXQUFXaDhCLE9BQU9rTixPQUFPc3ZCLFVBQVU7QUFDeEV3aUIsMEJBQWM7VUFDZjtBQUNBLGNBQUksQ0FBQ3I4QixVQUFVM2lCLE9BQU9rTixPQUFPK3hDLGNBQWM7QUFDMUM3N0MsaUJBQUswZixvQkFBb0I5aUIsT0FBT2tOLE9BQU8rdUIsYUFBYWo4QixPQUFPa04sT0FBT3V2QixZQUFZO0FBQzlFdWlCLDBCQUFjO1VBQ2Y7QUFDQSxjQUFJLENBQUNBLGFBQWE7QUFDakJudUQscUJBQVN1VSxPQUFPcFUsS0FBQSxRQUFBZ0ksT0FDUGdILE9BQU9rTixPQUFPOUosSUFBSSxHQUFBLE1BQUFwSyxPQUNwQjJwQixTQUFTLE9BQU8sT0FBSyxVQUFBLENBQzVCO0FBQ0EzaUIsbUJBQU9rTixPQUFPMGlDLGVBQWV3QixjQUFjcHhDLE1BQU07QUFDakQ7VUFDRDtBQUNBb0QsZUFBSytDLGVBQWVuRyxPQUFPa04sT0FBT3pLLE1BQU07QUFDeENXLGVBQUtnRCxjQUFjeFYsUUFBUUssVUFBVTtBQUNyQ21TLGVBQUsyZixRQUFRL2lCLE9BQU9rTixPQUFPMGlDLGVBQWV5QixlQUFlcnhDLE9BQU9rTixPQUFPMGlDLGVBQWV3QixhQUFhO1FBQ3BHO01BQ0Q7QUFDQXhnRCxjQUFRUyxnQkFBZ0JULFFBQVF1dEQsY0FBYyxjQUFjO0lBQzdELEdBQUd0Z0QsTUFBTTtFQUFBO0FBQUEsQ0FBQTs7QUNqV1QsSUFBQXFoRCx1QkFBQSxDQUFBO0FBQUEsSUFBQUMsb0JBQUE5dUQsTUFBQTtFQUFBLHdDQUFBO0FBQUE7SUFHQTtBQUNBLEtBQUMsU0FBUyt1RCxhQUFhN3VELEdBQUc7QUFDekIsWUFBTUUsUUFBUUYsRUFBRSxNQUFNO0FBT3RCSyxjQUFRd2YsUUFBUSxNQUFNO0FBQ3JCLFlBQ0N4ZixRQUFRdUgsUUFBUSxVQUFVLE1BQU0sVUFDaEMsQ0FBQywyQ0FBMkNZLEtBQUs1QyxHQUFHQyxPQUFPQyxJQUFJLFlBQVksQ0FBQyxHQUMzRTtBQUNEO1FBQ0Q7QUFDQUYsV0FBR3U3QyxLQUFLLGtCQUFrQixFQUFFcG9DLElBQUtyUSxVQUFTO0FBQ3pDLGNBQUlBLEtBQUt1TyxLQUFLLElBQUksTUFBTSxtQkFBbUI7QUFDMUM1VyxvQkFBUXdmLE1BQU11aEMsU0FBUztVQUN4QjtRQUNELENBQUM7TUFDRjtBQUNBL2dELGNBQVF3ZixNQUFNdWhDLFdBQVcsTUFBTTtBQUM5QixjQUFNTyxVQUFVQSxDQUFDM1YsT0FBT3hXLFlBQVk7QUFDbkMsZ0JBQU05ckIsT0FBT3BCLFNBQVNZLGNBQWMsTUFBTTtBQUMxQ1EsZUFBS29GLE1BQU1rOUIsUUFBUUE7QUFDbkJ0aUMsZUFBS0osWUFBWWhCLFNBQVNxQixlQUFlNnJCLE9BQU8sQ0FBQztBQUNqRCxpQkFBTzlyQjtRQUNSO0FBQ0F4SixjQUNFeUgsS0FDQSxpSUFDQSxjQUNELEVBQ0NtbUIsS0FBSyxDQUFDdlosT0FBT2pELFlBQVk7QUFDekJBLGtCQUFRMHhDLFFBQVFqdUIsVUFBVXhnQixRQUFRO1FBQ25DLENBQUM7QUFDRixjQUFNdTZDLFdBQVc7QUFDakIsY0FBTTUyQyxTQUFTaFksTUFBTXlILEtBQUssY0FBYyxFQUFFQSxLQUFBLEtBQUFjLE9BQVVxbUQsVUFBUSwwQkFBQSxFQUFBcm1ELE9BQTJCcW1ELFFBQVEsQ0FBRTtBQUNqRyxjQUFNQyxVQUFVem1ELFNBQVNZLGNBQWMsUUFBUTtBQUMvQyxjQUFNOGxELFVBQVUxbUQsU0FBU1ksY0FBYyxHQUFHO0FBQzFDOGxELGdCQUFRMWxELFlBQVlxNEMsUUFBUSxTQUFTLEdBQUcsQ0FBQztBQUN6Q3FOLGdCQUFRMWxELFlBQVlxNEMsUUFBUSxPQUFPdmhELE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxDQUFDLENBQUM7QUFDaEU0bkQsZ0JBQVExbEQsWUFBWXE0QyxRQUFRLFNBQVMsR0FBRyxDQUFDO0FBQ3pDb04sZ0JBQVF6bEQsWUFBWTBsRCxPQUFPO0FBQUEsWUFBQUMsY0FBQWxqRCwyQkFDTG1NLE1BQUEsR0FBQWczQztBQUFBLFlBQUE7QUFBdEIsZUFBQUQsWUFBQWhqRCxFQUFBLEdBQUEsRUFBQWlqRCxVQUFBRCxZQUFBL2lELEVBQUEsR0FBQUMsUUFBOEI7QUFBQSxrQkFBbkJnVCxVQUFBK3ZDLFFBQUE3aUQ7QUFDVixrQkFBTThpRCxlQUFlbnZELEVBQUVtZixPQUFPLEVBQzVCeFgsS0FBSyxzRUFBc0UsRUFDM0VzUCxLQUFLLE1BQU07QUFDYixnQkFBSWs0QyxpQkFBaUIsUUFBVztBQUMvQixrQkFBSXJpRCxRQUFRO0FBQ1osa0JBQUlxaUQsYUFBYTNsRCxTQUFTLFdBQVcsR0FBRztBQUN2Q3NELHdCQUFRcWlELGFBQWFuN0MsTUFBTSxJQUFJLEdBQUc7Y0FDbkMsT0FBTztBQUNOLHNCQUFNbzdDLElBQUlELGFBQWFydUMsTUFBTSxtQkFBbUIsSUFBSTtBQUNwRCxvQkFBSXN1QyxNQUFNLE1BQU07QUFDZixtQkFBQSxFQUFHdGlELEtBQUssSUFBSXNpRDtnQkFDYjtjQUNEO0FBQ0Esa0JBQUl0aUQsVUFBVSxNQUFNO0FBQ25CQSx3QkFBUTRzQixtQkFBbUI1c0IsS0FBSztBQUNoQ0Esd0JBQVFBLE1BQU1zRyxRQUFRLE1BQU0sR0FBRztBQUMvQixzQkFBTWk4QyxlQUFlcnZELEVBQUVtZixPQUFPLEVBQUV4WCxLQUFLLGdCQUFnQixFQUFFMm5ELFNBQVMsS0FBSztBQUNyRSxzQkFBTTtrQkFBQ3Y2QjtnQkFBTyxJQUFJNVYsUUFBUTZqQztBQUMxQixzQkFBTSxDQUFDeEYsSUFBSSxJQUFJcitCLFFBQVFtekIsaUJBQWlCLGNBQWM7QUFDdERrTCxxQkFBS2wwQyxZQUFZaEIsU0FBU3FCLGVBQWUsR0FBRyxDQUFDO0FBQzdDLHNCQUFNNGxELFVBQVVSLFFBQVFTLFVBQVUsSUFBSTtBQUN0Q0Qsd0JBQVFwMUMsV0FBV3RRLE9BQUEsSUFBQXBCLE9BQVdzc0IsT0FBTztBQUNyQy8wQixrQkFBRXV2RCxRQUFRcDFDLFVBQVUsRUFBRXJRLEdBQUcsU0FBUyxNQUFNO0FBQ3ZDekosMEJBQVF3ZixNQUFNL1IsU0FBU2hCLE9BQU9pb0IsU0FBU3M2QixZQUFZO0FBQ25ELHlCQUFPO2dCQUNSLENBQUM7QUFDRDdSLHFCQUFLbDBDLFlBQVlpbUQsT0FBTztjQUN6QjtZQUNEO1VBQ0Q7UUFBQSxTQUFBampELEtBQUE7QUFBQTJpRCxzQkFBQWxsRCxFQUFBdUMsR0FBQTtRQUFBLFVBQUE7QUFBQTJpRCxzQkFBQTFpRCxFQUFBO1FBQUE7TUFDRDtBQUVBbE0sY0FBUXdmLE1BQU00dkMsUUFBUSxDQUNyQjtRQUNDdDBDLEtBQUsvYSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07UUFDaENpRixPQUFPO1VBQ05xakQsSUFBSTtZQUNIaGhELE9BQU90TyxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDbEN5RCxRQUFRO1VBQ1Q7VUFDQThrRCxLQUFLO1lBQ0pqaEQsT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztZQUN4Q3lELFFBQVE7VUFDVDtVQUNBK2tELElBQUk7WUFDSGxoRCxPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7WUFDcER5RCxRQUFRO1VBQ1Q7VUFDQWdsRCxJQUFJO1lBQ0huaEQsT0FBT3RPLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1lBQ3BEeUQsUUFBUTtVQUNUO1FBQ0Q7TUFDRCxHQUNBO1FBQ0NzUSxLQUFLO1FBQ0w5TyxPQUFPO1VBQ055akQsR0FBRztZQUNGcGhELE9BQU87WUFDUDdELFFBQVE7WUFDUmtsRCxXQUFXO1VBQ1o7VUFDQUMsSUFBSTtZQUNIdGhELE9BQU87WUFDUDdELFFBQVE7VUFDVDtVQUNBb2xELElBQUk7WUFDSHZoRCxPQUFPdE8sT0FBT2dILE1BQU0scUJBQXFCLG1CQUFtQjtZQUM1RGlGLE9BQU9qTSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07WUFDbEN5RCxRQUFRO1VBQ1Q7VUFDQXFsRCxJQUFJO1lBQ0h4aEQsT0FBT3RPLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtZQUN0Q3lELFFBQVE7WUFDUjhNLFVBQVV0WCxRQUFRdUgsUUFBUSxVQUFVLE1BQU07VUFDM0M7VUFDQXVvRCxLQUFLO1lBQ0p6aEQsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ3lELFFBQVE7WUFDUmtsRCxXQUFXO1VBQ1o7UUFDRDtNQUNELEdBQ0E7UUFDQzUwQyxLQUFLL2EsT0FBT2dILE1BQU0sTUFBTSxJQUFJO1FBQzVCaUYsT0FBTztVQUNOK2pELEdBQUc7WUFDRjFoRCxPQUFPdE8sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1lBQzlCeUQsUUFBUTtZQUNSa2xELFdBQVc7WUFDWHA0QyxVQUFVdFgsUUFBUXVILFFBQVEsVUFBVSxNQUFNO1VBQzNDO1VBQ0F5b0QsSUFBSTtZQUNIM2hELE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7WUFDeEN5RCxRQUFRO1lBQ1JrbEQsV0FBVztVQUNaO1FBQ0Q7TUFDRCxHQUNBO1FBQ0M1MEMsS0FBSy9hLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtRQUNoQ2lGLE9BQU87VUFDTmlrRCxJQUFJO1lBQ0g1aEQsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ3lELFFBQVE7VUFDVDtVQUNBMGxELE1BQU07WUFDTDdoRCxPQUFPdE8sT0FBT2dILE1BQU0sa0JBQWtCLGVBQWU7WUFDckR5RCxRQUFRO1VBQ1Q7VUFDQTJsRCxLQUFLO1lBQ0o5aEQsT0FBT3RPLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1lBQ3BEeUQsUUFBUTtVQUNUO1VBQ0E0bEQsTUFBTTtZQUNML2hELE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7WUFDOUN5RCxRQUFRO1lBQ1JrbEQsV0FBVztVQUNaO1FBQ0Q7TUFDRCxHQUNBO1FBQ0M1MEMsS0FBSy9hLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtRQUNwQ2lGLE9BQU87VUFDTnFrRCxHQUFHO1lBQ0ZoaUQsT0FBT3RPLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtZQUNsQ3lELFFBQVE7VUFDVDtVQUNBOGxELEdBQUc7WUFDRmppRCxPQUFPO1lBQ1A3RCxRQUFRO1lBQ1JrbEQsV0FBVztVQUNaO1VBQ0FhLElBQUk7WUFDSGxpRCxPQUFPdE8sT0FBT2dILE1BQU0sU0FBUyxPQUFPO1lBQ3BDeUQsUUFBUTtZQUNSa2xELFdBQVc7VUFDWjtVQUNBWCxHQUFHO1lBQ0YxZ0QsT0FBT3RPLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtZQUM5QnlELFFBQVE7WUFDUmtsRCxXQUFXO1VBQ1o7VUFDQWMsT0FBTztZQUNObmlELE9BQU90TyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7WUFDOUJ5RCxRQUFRO1lBQ1JrbEQsV0FBVztVQUNaO1VBQ0FlLGVBQWU7WUFDZHBpRCxPQUFPdE8sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1lBQ2xDeUQsUUFBUTtZQUNSa2xELFdBQVc7VUFDWjtVQUNBZ0IsSUFBSTtZQUNIcmlELE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7WUFDeENpRixPQUFPak0sT0FBT2dILE1BQU0sT0FBTyxLQUFLO1lBQ2hDeUQsUUFBUTtVQUNUO1FBQ0Q7TUFDRCxDQUFBO0FBRUR4SyxjQUFRd2YsTUFBTS9SLFdBQVcsQ0FBQ2hCLE9BQU9pb0IsU0FBU2k4QixTQUFTO0FBQ2xELGNBQU1oakQsU0FBUyxJQUFJMU4sU0FBUzJOLGFBQWEsS0FBSyxHQUFHO0FBQ2pERCxlQUFPRSxTQUFBLFlBQUF6RixPQUEwQnFFLEtBQUssQ0FBRTtBQUN4Q2tCLGVBQU9HLGNBQWMsU0FBUztBQUM5QkgsZUFBT0ksY0FBYyxVQUFVLGtCQUFrQjtBQUNqREosZUFBT0ksY0FBYyxhQUFhLGlCQUFpQjtBQUNuRCxjQUFNQyxPQUFPLElBQUkvTixTQUFTZ08sVUFBVWpPLFFBQVF3ZixNQUFNL1IsU0FBU1MsUUFBUTtBQUNuRUYsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOdUcsT0FBTztVQUNQMU4sTUFBTTtVQUNOMk4sT0FBT3RPLFFBQVF3ZixNQUFNL1IsU0FBU21qRDtRQUMvQixDQUFDO0FBQ0Q1aUQsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNObkgsTUFBTTtVQUNOME4sT0FBTztVQUNQdEUsU0FBUztVQUNUaVosUUFBUTtRQUNULENBQUM7QUFDRGhWLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTm5ILE1BQU07VUFDTjBOLE9BQU87UUFDUixDQUFDO0FBQ0RMLGFBQUtJLE9BQU87VUFDWHRHLE1BQU07VUFDTmlILE1BQU0sQ0FDTDtZQUNDVixPQUFPO1lBQ1ByQyxPQUFPO1lBQ1ByTCxNQUFNO1lBQ04yTixPQUFPdE8sUUFBUXdmLE1BQU0vUixTQUFTb2pEO1lBQzlCNXRDLFNBQVMwdEM7VUFDVixDQUFBO1FBRUYsQ0FBQztBQUNELFlBQUksSUFBSXByRCxHQUFHK00sTUFBTTdGLEtBQUssRUFBRThGLFlBQVksTUFBTSxLQUFLLElBQUloTixHQUFHK00sTUFBTTdGLEtBQUssRUFBRThGLGNBQWMsR0FBRztBQUVuRnZFLGVBQUtJLE9BQU87WUFDWHRHLE1BQU07WUFDTmlILE1BQU0sQ0FDTDtjQUNDVixPQUFPO2NBQ1ByQyxPQUFPO2NBQ1ByTCxNQUFNO2NBQ05vSixTQUFTO2NBQ1RrWixTQUFTO2NBQ1QzVSxPQUFRNUUsT0FBTTtBQUNiQSxrQkFBRW91QixnQkFBZ0I7Y0FDbkI7WUFDRCxDQUFBO1VBRUYsQ0FBQztRQUNGO0FBQ0E5cEIsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtVQUNOaUgsTUFBTSxDQUNMO1lBQ0NWLE9BQU87WUFDUHJDLE9BQU87WUFDUHJMLE1BQU07WUFDTm9KLFNBQVM7WUFDVGtaLFNBQVM7WUFDVDNVLE9BQVE1RSxPQUFNO0FBQ2JBLGdCQUFFb3VCLGdCQUFnQjtZQUNuQjtVQUNELENBQUE7UUFFRixDQUFDO0FBQ0Q5cEIsYUFBS0ksT0FBTztVQUNYdEcsTUFBTTtRQUNQLENBQUM7QUFDRCxjQUFNNEcsU0FBU1YsS0FBS1csT0FBTztBQUMzQmhCLGVBQU9pQixXQUFXRixNQUFNO0FBQ3hCZixlQUFPa0IsUUFBUTtBQUNmLGNBQU0sQ0FBQzRLLFNBQVMsSUFBSS9LLE9BQU91akMsaUJBQWlCLFFBQVE7QUFDcEQsY0FBTTZlLGFBQWE7VUFDbEJya0Q7VUFDQWlvQixTQUFTdGQsT0FBT0MsU0FBU3FkLFNBQVMsRUFBRTtVQUNwQ2k4QjtRQUNEO0FBQ0FoeEQsVUFBRStPLE1BQU0sRUFBRXVNLEtBQUssY0FBYzYxQyxVQUFVO0FBRXZDLGNBQU0vMkMsZ0JBQWdCQSxDQUFDQyxVQUFVQyxjQUFjO0FBQzlDLG1CQUFBODJDLE9BQUEsR0FBQUMsbUJBQXdDdDJDLE9BQU9DLFFBQVFYLFFBQVEsR0FBQSsyQyxPQUFBQyxpQkFBQXB3RCxRQUFBbXdELFFBQUc7QUFBbEUsa0JBQVcsQ0FBQ24yQyxTQUFTQyxjQUFjLElBQUFtMkMsaUJBQUFELElBQUE7QUFDbEMsa0JBQU1qMkMsTUFBTSxPQUFPRixZQUFZLFdBQVdBLFVBQVVDLGVBQWU3TztBQUNuRSxrQkFBTWdQLE9BQU8sSUFBSS9hLFNBQVNnTyxVQUFVZ0QsUUFBUTtjQUMzQ25KLE1BQU07Y0FDTnVHLE9BQUEsR0FBQWpHLE9BQVUwUyxLQUFHLEdBQUEsRUFBQTFTLE9BQUl5UyxlQUFleE0sS0FBSztjQUNyQ3JDLE9BQU84TztjQUNQeEQsVUFBVXVELGVBQWV2RDtjQUN6QjlJLFVBQ0V4TyxRQUFRdUgsUUFBUSxVQUFVLE1BQU0sU0FBU3NULGVBQWU2MEMsYUFBYzcwQyxlQUFlck07WUFDeEYsQ0FBQztBQUNELGtCQUFNME0sZUFBZWpCLFVBQVVoUixZQUFZK1IsS0FBS3JNLE9BQU8sQ0FBQztBQUN4RGhQLGNBQUV1YixZQUFZLEVBQUVELEtBQUssZUFBZUosY0FBYztVQUNuRDtRQUNEO0FBQUEsWUFBQW8yQyxjQUFBdmxELDJCQUNvQjFMLFFBQVF3ZixNQUFNNHZDLEtBQUEsR0FBQThCO0FBQUEsWUFBQTtBQUFsQyxlQUFBRCxZQUFBcmxELEVBQUEsR0FBQSxFQUFBc2xELFVBQUFELFlBQUFwbEQsRUFBQSxHQUFBQyxRQUF5QztBQUFBLGtCQUE5QjBZLFFBQUEwc0MsUUFBQWxsRDtBQUNWLGdCQUFJaVEsV0FBVyxJQUFJaGMsU0FBU2dPLFVBQVVnRCxRQUFRO2NBQzdDbkosTUFBTTtjQUNOdUcsT0FBT21XLE1BQU0xSjtZQUNkLENBQUM7QUFDRG1CLHVCQUFXQSxTQUFTdE4sT0FBTztBQUMzQjhLLHNCQUFVeFEsWUFBWWdULFFBQVE7QUFFOUJsQywwQkFBY3lLLE1BQU14WSxPQUFPaVEsUUFBUTtVQUNwQztRQUFBLFNBQUFoUSxLQUFBO0FBQUFnbEQsc0JBQUF2bkQsRUFBQXVDLEdBQUE7UUFBQSxVQUFBO0FBQUFnbEQsc0JBQUEva0QsRUFBQTtRQUFBO0FBQ0EsY0FBTW9DLFFBQVFyRyxTQUFTOEgsWUFBWSxPQUFPO0FBQzFDekIsY0FBTTBCLFVBQVUsVUFBVSxNQUFNLElBQUk7QUFDcEN0QixlQUFPK0ssVUFBVXZKLGNBQWM1QixLQUFLO01BQ3JDO0FBQ0F0TyxjQUFRd2YsTUFBTS9SLFNBQVNvakQsbUJBQW9Cbm5ELE9BQU07QUFDaEQsY0FBTWluRCxPQUFPam5ELEVBQUU0RyxPQUFPMlM7QUFDdEIsY0FBTTBaLE9BQU9qekIsRUFBRTRHLE9BQU90QyxLQUFLeUwsVUFBVXpOO0FBQ3JDLGNBQU0yUyxjQUFjaGYsRUFBRStKLEVBQUU0RyxPQUFPdEMsS0FBS3lMLFNBQVMsRUFBRW5TLEtBQUEsaUJBQUFjLE9BQXNCdTBCLE1BQUksSUFBQSxDQUFJLEVBQUUxaEIsS0FBSyxhQUFhO0FBQ2pHLGNBQU07VUFBQzJhO1FBQVEsSUFBSWxzQixFQUFFNEcsT0FBT3RDO0FBQzVCLGNBQU07VUFBQ3lwQjtRQUFTLElBQUkvdEIsRUFBRTRHLE9BQU90QztBQUM3QixZQUFJMmlELFFBQVFoeUMsWUFBWW5VLFdBQVcsUUFBUTtBQUMxQyxjQUFJb3JCLFVBQVU7QUFDYkEscUJBQVMzUyxVQUFVO0FBQ25CMlMscUJBQVNwbkIsV0FBVztVQUNyQjtBQUNBaXBCLG9CQUFVeFUsVUFBVTtBQUNwQndVLG9CQUFVanBCLFdBQVc7UUFDdEIsT0FBTztBQUNOLGNBQUlvbkIsVUFBVTtBQUNiQSxxQkFBUzNTLFVBQVU7QUFDbkIyUyxxQkFBU3BuQixXQUFXO1VBQ3JCO0FBQ0FpcEIsb0JBQVV4VSxVQUFVO0FBQ3BCd1Usb0JBQVVqcEIsV0FBVztRQUN0QjtNQUNEO0FBQ0F4TyxjQUFRd2YsTUFBTS9SLFNBQVNtakQsY0FBZWxuRCxPQUFNO0FBQzNDLGNBQU1vbkQsYUFBYW54RCxFQUFFK0osRUFBRTRHLE9BQU90QyxJQUFJLEVBQUVpTixLQUFLLFlBQVk7QUFDckQsY0FBTTBELGNBQWNoZixFQUFFK0osRUFBRTRHLE1BQU0sRUFBRWhKLEtBQUEsaUJBQUFjLE9BQXNCc0IsRUFBRTRHLE9BQU90RSxPQUFLLElBQUEsQ0FBSSxFQUFFaVAsS0FBSyxhQUFhO0FBQzVGLGNBQU07VUFBQzAxQztRQUFJLElBQUlqbkQsRUFBRTRHLE9BQU90QztBQUN4QixjQUFNO1VBQUM0bkI7UUFBUSxJQUFJbHNCLEVBQUU0RyxPQUFPdEM7QUFDNUIsY0FBTTtVQUFDeXBCO1FBQVMsSUFBSS90QixFQUFFNEcsT0FBT3RDO0FBQzdCLFlBQUk4aUQsV0FBV0gsUUFBUWh5QyxZQUFZblUsV0FBVyxRQUFRO0FBQ3JEbW1ELGVBQUsxdEMsVUFBVTtBQUNmMHRDLGVBQUtuaUQsV0FBVztBQUNoQixjQUFJb25CLFVBQVU7QUFDYkEscUJBQVMzUyxVQUFVO0FBQ25CMlMscUJBQVNwbkIsV0FBVztVQUNyQjtBQUNBaXBCLG9CQUFVeFUsVUFBVTtBQUNwQndVLG9CQUFVanBCLFdBQVc7UUFDdEIsT0FBTztBQUNObWlELGVBQUsxdEMsVUFBVTtBQUNmMHRDLGVBQUtuaUQsV0FBVztBQUNoQixjQUFJbVEsWUFBWW5VLFdBQVcsUUFBUTtBQUNsQyxnQkFBSW9yQixVQUFVO0FBQ2JBLHVCQUFTM1MsVUFBVTtBQUNuQjJTLHVCQUFTcG5CLFdBQVc7WUFDckI7QUFDQWlwQixzQkFBVXhVLFVBQVU7QUFDcEJ3VSxzQkFBVWpwQixXQUFXO1VBQ3RCLE9BQU87QUFDTixnQkFBSW9uQixVQUFVO0FBQ2JBLHVCQUFTM1MsVUFBVTtBQUNuQjJTLHVCQUFTcG5CLFdBQVc7WUFDckI7QUFDQWlwQixzQkFBVXhVLFVBQVU7QUFDcEJ3VSxzQkFBVWpwQixXQUFXO1VBQ3RCO0FBQ0EsY0FBSTlFLEVBQUU0RyxPQUFPdEUsVUFBVSxNQUFNO0FBQzVCdEMsY0FBRTRHLE9BQU90QyxLQUFLbWpELFNBQVMxckIsY0FBY0MsZ0JBQWdCLFFBQVE7VUFDOUQsT0FBTztBQUNOaDhCLGNBQUU0RyxPQUFPdEMsS0FBS21qRCxTQUFTMXJCLGNBQWMzOEIsYUFBYSxVQUFVLEVBQUU7VUFDL0Q7UUFDRDtNQUNEO0FBQ0E5SSxjQUFRd2YsTUFBTS9SLFNBQVNTLFdBQVl4RSxPQUFNO0FBQ3hDLGNBQU1pekIsT0FBT2p6QixFQUFFNEcsT0FBT21KLFVBQVV6TjtBQUNoQyxjQUFNOGtELGFBQWFueEQsRUFBRStKLEVBQUU0RyxNQUFNLEVBQUUySyxLQUFLLFlBQVk7QUFDaEQsY0FBTTBELGNBQWNoZixFQUFFK0osRUFBRTRHLE9BQU9tSixTQUFTLEVBQUVuUyxLQUFBLGlCQUFBYyxPQUFzQnUwQixNQUFJLElBQUEsQ0FBSSxFQUFFMWhCLEtBQUssYUFBYTtBQUM1RixjQUFNMDFDLE9BQU9qbkQsRUFBRTRHLE9BQU9xZ0QsS0FBSzF0QztBQUMzQixjQUFNMlMsV0FBV2xzQixFQUFFNEcsT0FBT3NsQixZQUFZbHNCLEVBQUU0RyxPQUFPc2xCLFNBQVMzUztBQUN4RCxjQUFNd1UsWUFBWS90QixFQUFFNEcsT0FBT21uQixVQUFVeFU7QUFDckMsY0FBTTNHLFNBQVM7VUFDZDdQLE9BQU9xa0QsV0FBV3JrRDtVQUNsQmt3QjtVQUNBeTBCLFFBQVExbkQsRUFBRTRHLE9BQU84Z0QsT0FBT3BsRDtVQUN4Qm1sRCxVQUFVem5ELEVBQUU0RyxPQUFPNmdELFNBQVNubEQ7VUFDNUIwb0IsU0FBU284QixXQUFXcDhCO1VBQ3BCMjhCLGVBQWVQLFdBQVdPO1VBQzFCMXlDO1VBQ0FpWDtVQUNBNkI7UUFDRDtBQUNBeDNCLGlCQUFTMk4sYUFBYTJHLGtCQUFrQixLQUFLO0FBQzdDdFUsaUJBQVN1VSxPQUFPQyxLQUFLL0ssRUFBRTRHLE1BQU07QUFDN0JyUSxpQkFBU3FMLEtBQUtvSixnQkFBZ0JFLFNBQVM7QUFDdkMsWUFBSSs3QyxRQUFRaHlDLFlBQVluVSxXQUFXLFFBQVE7QUFDMUN4SyxrQkFBUXdmLE1BQU03SCxVQUFVMjVDLFFBQVFoMUMsTUFBTTtRQUN2QyxPQUFPO0FBQ04sa0JBQVFxQyxZQUFZblUsUUFBQTtZQUNuQixLQUFLO0FBQ0p4SyxzQkFBUXdmLE1BQU03SCxVQUFVNDVDLElBQUlqMUMsTUFBTTtBQUNsQztZQUNELEtBQUssUUFBUTtBQUNaLG9CQUFNbUYsY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FBSzhKLE9BQU83UCxPQUFPLFVBQVU7QUFDbkVnViwwQkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4Q21GLDBCQUFZeFcsS0FBS2pMLFFBQVF3ZixNQUFNN0gsVUFBVTY1QyxJQUFJO0FBQzdDO1lBQ0Q7WUFDQTtBQUNDLG1CQUFLanNELEdBQUd1RixPQUFBLGNBQUExQyxPQUFxQnUwQixJQUFJLEdBQUk7Z0JBQ3BDNzBCLE1BQU07Z0JBQ05pRCxLQUFLO2NBQ04sQ0FBQztVQUNIO1FBQ0Q7TUFDRDtBQUNBL0ssY0FBUXdmLE1BQU03SCxZQUFZO1FBQ3pCNDVDLEtBQU1qMUMsWUFBVztBQUNoQixjQUFJeE47QUFDSixjQUFJbWxCO0FBQ0poMEIsbUJBQVNxTCxLQUFLeTBCLGNBQWM7QUFDNUIsZ0JBQU12dEIsT0FBTyxJQUFJdlMsU0FBU3FMLEtBQUtrSCxLQUFLOEosT0FBTzdQLE9BQU8sTUFBTTtBQUN4RCxjQUFJNlAsT0FBT3FnQixTQUFTLE1BQU07QUFDekIzOEIsb0JBQVFxMkIsT0FBTzFlLFVBQVU0bEIsY0FBY2poQixPQUFPN1AsT0FBQSxZQUFBckUsT0FBbUJrVSxPQUFPNjBDLFVBQVEsSUFBQSxHQUFPdC9DLFlBQVc7QUFDakdBLHVCQUFTa3NCLE9BQU8seUJBQXlCbHNCLE1BQU07QUFDL0Msa0JBQUlBLFdBQVcsTUFBTTtBQUNwQlcscUJBQUsyQyxpQkFBaUIsRUFBRS9VLEtBQUssUUFBUTtBQUNyQ0osd0JBQVF3ZixNQUFNN0gsVUFBVTI1QyxRQUFRaDFDLE1BQU07Y0FDdkMsT0FBTztBQUNOOUoscUJBQUsrQyxlQUFlMUQsTUFBTTtBQUMxQlcscUJBQUtnRCxjQUFjeFYsUUFBUUssVUFBVTtBQUNyQ21TLHFCQUFLd3JCLFdBQVcsTUFBTTtBQUNyQnhyQix1QkFBSzJDLGlCQUFpQixFQUFFOEwsS0FBSyxJQUFJO0FBQ2pDamhCLDBCQUFRd2YsTUFBTTdILFVBQVUyNUMsUUFBUWgxQyxNQUFNO2dCQUN2QyxDQUFDO2NBQ0Y7WUFDRCxDQUFDO1VBQ0YsT0FBTztBQUNOOUosaUJBQUsrQyxlQUFBLFlBQUFuTixPQUEyQjdDLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFDLEdBQUEsRUFBQTJDLE9BQUlrVSxPQUFPN1AsT0FBSyxJQUFBLENBQUk7QUFDL0UrRixpQkFBS2dELGNBQWN4VixRQUFRSyxVQUFVO0FBQ3JDbVMsaUJBQUt3ckIsV0FBVyxNQUFNO0FBQ3JCeHJCLG1CQUFLMkMsaUJBQWlCLEVBQUU4TCxLQUFLLElBQUk7QUFDakNqaEIsc0JBQVF3ZixNQUFNN0gsVUFBVTI1QyxRQUFRaDFDLE1BQU07WUFDdkMsQ0FBQztVQUNGO0FBQ0EsY0FBSUEsT0FBT21iLFdBQVc7QUFDckIzb0Isb0JBQVE7Y0FDUHRFLFFBQVE7Y0FDUnFOLFFBQVF5RSxPQUFPN1A7Y0FDZnFMLE1BQU07Y0FDTmtuQixTQUFTOztZQUNWO0FBRUEvSyx5QkFBYSxJQUFJaDBCLFNBQVNxTCxLQUFLQyxJQUM5QixXQUNBdUQsT0FDQTlPLFFBQVF3ZixNQUFNN0gsVUFBVXNuQixtQkFDekI7QUFDQWhMLHVCQUFXM1gsU0FBU0E7QUFDcEIyWCx1QkFBV3BrQixLQUFLO1VBQ2pCO0FBQ0EsY0FBSXlNLE9BQU8wdkMsVUFBVTtBQUNwQixrQkFBTXZCLFlBQVlsbEQsR0FBRytNLE1BQU15WCxZQUFZek4sT0FBTzdQLEtBQUs7QUFDbkQsZ0JBQUlnK0MsYUFBYUEsVUFBVWw0QyxZQUFZLE1BQU0sS0FBS2s0QyxVQUFVbDRDLGNBQWMsR0FBRztBQUM1RWs0Qyx3QkFBVWw0QztBQUNWekQsc0JBQVE7Z0JBQ1B0RSxRQUFRO2dCQUNScU4sUUFBUTR5QyxVQUFVbGdDLE9BQU87Y0FDMUI7QUFDQTBKLDJCQUFhLElBQUloMEIsU0FBU3FMLEtBQUtDLElBQzlCLGdCQUNBdUQsT0FDQTlPLFFBQVF3ZixNQUFNN0gsVUFBVTJtQixVQUN6QjtBQUNBcksseUJBQVczWCxTQUFTQTtBQUNwQjJYLHlCQUFXN2tCLE9BQU9rTixPQUFPMHZDLFdBQVd2QixVQUFVbGdDLE9BQU87QUFDckQwSix5QkFBV3BrQixLQUFLO1lBQ2pCO1VBQ0Q7QUFDQTVQLG1CQUFTcUwsS0FBS3cwQixpQkFBaUI7UUFDaEM7UUFDQWIscUJBQXNCN3ZCLFlBQVc7QUFDaEMsZ0JBQU1pM0MsTUFBTWozQyxPQUFPc25DO0FBQ25CLGdCQUFNamtDLFFBQVE5UyxFQUFFMG1ELEdBQUcsRUFDakIvK0MsS0FBSyxJQUFJLEVBQ1RvTCxJQUFJLENBQUN5OUIsUUFBUWwvQixZQUFZO0FBQ3pCLG1CQUFPdFIsRUFBRXNSLE9BQU8sRUFBRTJGLEtBQUssT0FBTztVQUMvQixDQUFDLEVBQ0FuUixJQUFJO0FBQ04sY0FBSWdOLE1BQU03UixXQUFXLEdBQUc7QUFDdkI7VUFDRDtBQUNBLGdCQUFNcXJELGtCQUFrQixJQUFJaHNELFNBQVMrK0MsZUFDcENqL0MsT0FBT2dILE1BQU0sVUFBVSxRQUFRLElBQzlCcUksT0FBT2tOLE9BQU83UCxRQUNkMU0sT0FBT2dILE1BQU0sU0FBUyxRQUFRLENBQ2hDO0FBQ0FrbEQsMEJBQWdCaE4sVUFBVSxhQUFhai9DLFFBQVF1SCxRQUFRLG1CQUFtQixDQUFDO0FBQzNFMGtELDBCQUFnQi9NLFlBQVl6c0MsS0FBSztBQUNqQ3c1QywwQkFBZ0I5TSxJQUFLeFIsY0FBYTtBQUNqQyxrQkFBTWxzQixjQUFjLElBQUl4aEIsU0FBU3FMLEtBQUtrSCxLQUFLbTdCLFVBQVU1dEMsT0FBT2dILE1BQU0sU0FBUyxPQUFPLElBQUk0bUMsUUFBUTtBQUM5RmxzQix3QkFBWWxNLGVBQUEsb0JBQUFuTixPQUNTckksT0FBT2dILE1BQU0sV0FBVyxTQUFTLENBQUMsRUFBQXFCLE9BQUdnSCxPQUFPa04sT0FBTzdQLEtBQUssRUFBQXJFLE9BQUdySSxPQUFPZ0gsTUFDckYsU0FDQSxRQUNELENBQUMsQ0FDRjtBQUNBMGEsd0JBQVlqTSxjQUFjeFYsUUFBUUssVUFBVTtBQUM1Q29oQix3QkFBWXVjLFdBQVdpdUIsZ0JBQWdCeEwsZUFBZXdMLGdCQUFnQnpMLGFBQWE7VUFDcEYsQ0FBQztRQUNGO1FBQ0FsaUIsWUFBYWx2QixZQUFXO0FBQ3ZCLGdCQUFNaTNDLE1BQU1qM0MsT0FBT3NuQztBQUNuQixnQkFBTTNrQixTQUFTcHlCLEVBQUUwbUQsR0FBRyxFQUFFLytDLEtBQUsscUJBQXFCLEVBQUUxRyxTQUFTO0FBQzNELGNBQUksQ0FBQ214QixRQUFRO0FBRVo7VUFDRDtBQUNBLGdCQUFNdmYsT0FBTyxJQUFJdlMsU0FBU3FMLEtBQUtrSCxLQUM5QnBELE9BQU9rTixPQUFPMHZDLFVBQ2Rqc0QsT0FBT2dILE1BQU0sV0FBVyxTQUFTLElBQ2hDcUksT0FBT2tOLE9BQU83UCxRQUNkMU0sT0FBT2dILE1BQU0sU0FBUyxPQUFPLENBQy9CO0FBQ0F5TCxlQUFLK0MsZUFBQSxvQkFBQW5OLE9BQ2dCckksT0FBT2dILE1BQU0sU0FBUyxPQUFPLENBQUMsRUFBQXFCLE9BQUdnSCxPQUFPa04sT0FBTzdQLEtBQUssRUFBQXJFLE9BQUdySSxPQUFPZ0gsTUFDakYsc0JBQ0Esb0JBQ0QsQ0FBQyxDQUNGO0FBQ0F5TCxlQUFLZ0QsY0FBY3hWLFFBQVFLLFVBQVU7QUFDckNtUyxlQUFLd3JCLFdBQVc7UUFDakI7UUFDQXd6QixNQUFPMzBDLGFBQVk7QUFDbEIsZ0JBQU1xQyxXQUFXckMsUUFBUTFILGlCQUFpQjtBQUMxQyxjQUFJLENBQUMwSCxRQUFRa1YsT0FBTyxHQUFHO0FBQ3RCN1MscUJBQVM5SixNQUFNLGNBQWM7QUFDN0I7VUFDRDtBQUNBLGdCQUFNdk4sT0FBT2dWLFFBQVE5SCxZQUFZO0FBQ2pDLGdCQUFNdUgsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QyxnQkFBTTZ4QyxZQUFZbHNELEdBQUcrTSxNQUFNeVgsWUFBWXpOLE9BQU83UCxLQUFLO0FBQ25ELGNBQUlnbEQsVUFBVUMsZUFBZSxJQUFJLE1BQU0sR0FBRztBQUN6QyxrQkFBTUMsZ0JBQWdCLElBQUlwc0QsR0FBRytNLE1BQU1tL0MsVUFBVUcsWUFBWSxHQUFHSCxVQUFVQyxlQUFlLElBQUksQ0FBQztBQUMxRixrQkFBTTk3QixXQUFXLElBQUkzMUIsU0FBU3FMLEtBQUtrSCxLQUNsQ20vQyxjQUFjRSxTQUFTLEdBQ3ZCOXhELE9BQU9nSCxNQUFNLFNBQVMsT0FBTyxDQUM5QjtBQUNBLGtCQUFNOEssU0FBU3lLLE9BQU9xQyxZQUFZM1MsU0FBU3NRLE9BQU9xQyxZQUFZdFE7QUFDOUQsa0JBQU15akQsVUFBQSxtQkFBQTFwRCxPQUE2QjdDLEdBQUdDLE9BQ3BDQyxJQUFJLFlBQVksRUFDaEJ5YSxNQUFNLEdBQUcsRUFDVHZNLE1BQU0sQ0FBQyxFQUNQRCxLQUFLLEdBQUcsR0FBQyxHQUFBLEVBQUF0TCxPQUFJeUosUUFBTSxNQUFBO0FBQ3JCK2pCLHFCQUFTbThCLGVBQWVELE9BQU87QUFDL0JsOEIscUJBQVNyZ0IsZUFBQSxLQUFBbk4sT0FBb0I3QyxHQUFHQyxPQUFPQyxJQUFJLFlBQVksR0FBQyxHQUFBLEVBQUEyQyxPQUFJa1UsT0FBTzdQLE9BQUssS0FBQSxFQUFBckUsT0FBTXlKLE1BQU0sQ0FBRTtBQUN0RitqQixxQkFBU3BnQixjQUFjeFYsUUFBUUssVUFBVTtBQUN6Q3UxQixxQkFBU0MsZ0JBQWdCLFVBQVU7QUFDbkNELHFCQUFTNW9CLFFBQVE7VUFDbEI7QUFDQSxjQUFJZ2xELFVBQVVucUQsS0FBS2tMLFFBQ2xCLDRGQUNBLEVBQ0Q7QUFDQWkvQyxvQkFBVUEsUUFBUWovQyxRQUFRLDhEQUE4RCxFQUFFO0FBQzFGLGNBQUl1SixPQUFPcWdCLFNBQVMsTUFBTTtBQUN6QnExQixzQkFBVUEsUUFBUWovQyxRQUNqQixrSUFDQSxFQUNEO0FBQ0FpL0Msc0JBQVVBLFFBQVFqL0MsUUFDakIsbUVBQ0EsRUFDRDtVQUNEO0FBQ0EsY0FBSXVKLE9BQU9xZ0IsU0FBUyxpQkFBaUI7QUFDcEMsa0JBQU01eEIsTUFBTSxLQUNWM0MsT0FBTyxRQUFRLEVBQ2ZBLE9BQUEsK0JBQUFBLE9BQXNDN0MsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEdBQUMsR0FBQSxFQUFBMkMsT0FBSWtVLE9BQU83UCxPQUFLLE1BQUEsQ0FBTTtBQUV6RixrQkFBTWdWLGNBQWMsSUFBSXhoQixTQUFTa2MsU0FBUzNKLEtBQUt3L0MsT0FBTztBQUN0REEsc0JBQVV2d0MsWUFBWW1mLHFCQUFxQjcxQixLQUFLL0ssUUFBUU8sWUFBWSxFQUFFc2dDLFFBQVE7VUFDL0U7QUFDQSxjQUFJbXhCLFlBQVlucUQsTUFBTTtBQUNyQnFYLHFCQUFTOWUsS0FBSyxrQkFBa0I7QUFDaENKLG9CQUFRd2YsTUFBTTdILFVBQVUyNUMsUUFBUWgxQyxNQUFNO0FBQ3RDO1VBQ0Q7QUFDQSxnQkFBTWlrQixjQUFBLFlBQUFuNEIsT0FBMEI3QyxHQUFHQyxPQUFPQyxJQUFJLFlBQVksR0FBQyxHQUFBLEVBQUEyQyxPQUFJa1UsT0FBTzdQLE9BQUssSUFBQTtBQUMzRW9RLGtCQUFRK1UsWUFBWW9nQyxPQUFPO0FBQzNCbjFDLGtCQUFRdEgsZUFBZWdyQixXQUFXO0FBQ2xDMWpCLGtCQUFRckgsY0FBY3hWLFFBQVFLLFVBQVU7QUFDeEN3YyxrQkFBUWdaLGdCQUFnQixVQUFVO0FBQ2xDaFosa0JBQVFnVixLQUFLN3hCLFFBQVF3ZixNQUFNN0gsVUFBVXM2QyxZQUFZO1FBQ2xEO1FBQ0FBLGNBQWVwMUMsYUFBWTtBQUMxQixnQkFBTVAsU0FBU08sUUFBUStDLHNCQUFzQjtBQUM3QzVmLGtCQUFRd2YsTUFBTTdILFVBQVUyNUMsUUFBUWgxQyxNQUFNO1FBQ3ZDO1FBQ0FnMUMsU0FBVWgxQyxZQUFXO0FBQ3BCLGdCQUFNbUYsY0FBYyxJQUFJeGhCLFNBQVNxTCxLQUFLa0gsS0FBS2pOLEdBQUdDLE9BQU9DLElBQUksWUFBWSxHQUFHLE1BQU07QUFDOUVnYyxzQkFBWUMsc0JBQXNCcEYsTUFBTTtBQUN4Q21GLHNCQUFZbk0sZUFBZWdILE9BQU9vWSxPQUFPO0FBQ3pDalQsc0JBQVl4VyxLQUFLakwsUUFBUXdmLE1BQU03SCxVQUFVdTZDLFFBQVE7UUFDbEQ7UUFDQUEsVUFBV3IxQyxhQUFZO0FBQ3RCLGdCQUFNcUMsV0FBV3JDLFFBQVExSCxpQkFBaUI7QUFDMUMsY0FBSXROLE9BQU9nVixRQUFROUgsWUFBWTtBQUMvQixnQkFBTXVILFNBQVNPLFFBQVErQyxzQkFBc0I7QUFDN0MsY0FBSS9YLEtBQUtzQixTQUFTLFFBQVEsR0FBRztBQUM1QitWLHFCQUFTOUosTUFBTSxRQUFRO0FBQ3ZCO1VBQ0Q7QUFDQSxnQkFBTSs4QyxTQUFTdHFELEtBQUtzQixTQUFTLDJCQUEyQjtBQUN4RCxnQkFBTWlwRCxPQUFPdnFELEtBQUtzQixTQUFTLHlCQUF5QjtBQUNwRHRCLGlCQUFPQSxLQUFLa0wsUUFBUSwrQkFBK0IsRUFBRTtBQUNyRGxMLGlCQUFPQSxLQUFLa0wsUUFBUSw2QkFBNkIsRUFBRTtBQUNuRCxnQkFBTXMvQyxNQUFNeHFELEtBQUtxWSxNQUFNLFVBQVU7QUFDakMsZ0JBQU1BLFFBQVFteUMsSUFBSSxDQUFDLEVBQUVueUMsTUFBTSxJQUFJO0FBQy9CclksaUJBQUEsR0FBQU8sT0FBVThYLE1BQU0sQ0FBQyxHQUFDLFdBQUEsRUFBQTlYLE9BQVlrVSxPQUFPcWdCLE1BQUksTUFBQTtBQUN6QzkwQixrQkFBUXFZLE1BQU12TSxNQUFNLENBQUMsRUFBRUQsS0FBSyxJQUFJO0FBQ2hDLGdCQUFNN0IsU0FBU3lLLE9BQU9xQyxZQUFZM1MsU0FBU3NRLE9BQU9xQyxZQUFZdFE7QUFDOUR4RyxrQkFBQSxhQUFBTyxPQUFxQnlKLE1BQU07QUFDM0IsY0FBSXlLLE9BQU84MEMsUUFBUTtBQUNsQnZwRCxvQkFBQSxJQUFBTyxPQUFZbkksU0FBU2dULE9BQU9DLGtCQUFrQm9KLE9BQU84MEMsTUFBTSxDQUFDO1VBQzdELE9BQU87QUFDTnZwRCxvQkFBUTtVQUNUO0FBQ0EsY0FBSSxDQUFDNUgsU0FBU2dCLGFBQWE7QUFDMUI0RyxvQkFBUSxLQUFLTyxPQUFPLFFBQVEsRUFBRUEsT0FBTyxPQUFPO1VBQzdDO0FBQ0FQLGtCQUFRLE9BQU9PLE9BQU8sTUFBTSxZQUFZO0FBQ3hDLGNBQUlpcUQsSUFBSSxDQUFDLEdBQUc7QUFDWHhxRCxvQkFBQSxXQUFBTyxPQUFtQmlxRCxJQUFJMStDLE1BQU0sQ0FBQyxFQUFFRCxLQUFLLFVBQVUsQ0FBQztVQUNqRDtBQUNBLGNBQUkwK0MsTUFBTTtBQUNUdnFELG9CQUFRO1VBQ1Q7QUFDQSxjQUFJc3FELFFBQVE7QUFFWHRxRCxvQkFBUTtVQUNUO0FBQ0FnVixrQkFBUStVLFlBQVkvcEIsSUFBSTtBQUN4QmdWLGtCQUFRdEgsZUFBQSxNQUFBbk4sT0FBcUJrVSxPQUFPN1AsT0FBSyxNQUFBLEVBQUFyRSxPQUFPeUosTUFBTSxDQUFFO0FBQ3hEZ0wsa0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLGtCQUFRZ1osZ0JBQWdCLFVBQVU7QUFDbENoWixrQkFBUWdWLEtBQUs3eEIsUUFBUXdmLE1BQU03SCxVQUFVMjZDLFdBQVc7UUFDakQ7UUFDQUEsYUFBY3oxQyxhQUFZO0FBQ3pCLGdCQUFNUCxTQUFTTyxRQUFRK0Msc0JBQXNCO0FBQzdDamdCLFlBQUEsa0JBQUF5SSxPQUFvQmtVLE9BQU9vWSxTQUFPLFFBQUEsQ0FBUSxFQUFFeHFCLElBQUksU0FBUyxTQUFTO1FBQ25FO01BQ0Q7QUFDQWxLLGNBQVFTLGdCQUFnQlQsUUFBUXdmLE9BQU8sT0FBTztJQUMvQyxHQUFHdlMsTUFBTTtFQUFBO0FBQUEsQ0FBQTs7QUN6cEJULElBQUFzbEQsd0JBQUEsQ0FBQTtBQUFBLElBQUFDLHFCQUFBL3lELE1BQUE7RUFBQSx5Q0FBQTtBQUFBO0lBR0E7QUFDQSxLQUFDLFNBQVNnekQsY0FBYzl5RCxHQUFHO0FBQzFCLFlBQU1FLFFBQVFGLEVBQUUsTUFBTTtBQVF0QkssY0FBUXdGLFNBQVMsQ0FBQztBQUNsQnhGLGNBQVF3RixPQUFPa3RELGlCQUFpQjtRQUMvQkMsS0FBSzV5RCxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7UUFDMUM2ckQsSUFBSTd5RCxPQUFPZ0gsTUFBTSxZQUFZLFVBQVU7UUFDdkM4ckQsU0FBUzl5RCxPQUFPZ0gsTUFBTSxVQUFVLFFBQVE7UUFDeEMsVUFBVWhILE9BQU9nSCxNQUFNLGFBQWEsV0FBVztRQUMvQyxXQUFXaEgsT0FBT2dILE1BQU0sY0FBYyxZQUFZO1FBQ2xELFlBQVloSCxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7UUFDbkQsWUFBWWhILE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtNQUNwRDtBQUNBL0csY0FBUXdGLE9BQU9zdEQsYUFBYTtRQUMzQkMsYUFBYTtVQUNaQyxJQUFJanpELE9BQU9nSCxNQUFNLFNBQVMsTUFBTTtVQUNoQ3EwQixJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKUSxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKUCxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSk4sSUFBSTtVQUNKQyxJQUFJO1FBQ0w7UUFDQWczQix5QkFBeUIsQ0FDeEIsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxJQUFBO1FBRURDLHlCQUF5QjtVQUN4QkYsSUFBSWp6RCxPQUFPZ0gsTUFBTSxTQUFTLE1BQU07VUFDaENxMEIsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSlEsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSlAsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pOLElBQUk7VUFDSkMsSUFBSTtRQUNMO1FBQ0FrM0IscUNBQXFDLENBQ3BDLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsSUFBQTtRQUVEQyxrQkFBa0I7VUFDakJKLElBQUlqekQsT0FBT2dILE1BQU0sU0FBUyxNQUFNO1VBQ2hDcTBCLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pRLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pQLElBQUk7VUFDSkMsSUFBSTtVQUNKQyxJQUFJO1VBQ0pDLElBQUk7VUFDSkMsSUFBSTtVQUNKTixJQUFJO1VBQ0pDLElBQUk7UUFDTDtRQUNBbzNCLDhCQUE4QixDQUM3QixNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLElBQUE7UUFFREMsYUFBYTtVQUNaQyxRQUFReHpELE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtVQUMvQnlwRCxPQUFPendELE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtVQUM5QnlzRCxRQUFRenpELE9BQU9nSCxNQUFNLGFBQWEsV0FBVztVQUM3QzQvQixNQUFNNW1DLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztVQUN2QzYvQixTQUFTN21DLE9BQU9nSCxNQUFNLFlBQVksVUFBVTtVQUM1QzgvQixPQUFPOW1DLE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtRQUN2QztRQUNBMHNELHlCQUF5QixDQUFDLFVBQVUsU0FBUyxVQUFVLFFBQVEsV0FBVyxPQUFPO1FBQ2pGQyxxQkFBcUI7VUFDcEIsR0FBRzN6RCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07VUFDOUIsR0FBRztVQUNILEdBQUc7VUFDSCxHQUFHO1VBQ0gsR0FBRztVQUNILEdBQUc7VUFDSCxHQUFHO1VBQ0gsR0FBRztVQUNILEdBQUc7VUFDSCxHQUFHO1VBQ0gsSUFBSTtVQUNKLElBQUk7VUFDSixJQUFJO1VBQ0osSUFBSTtVQUNKLElBQUk7VUFDSixJQUFJO1VBQ0osS0FBSztVQUNMLEtBQUs7VUFDTCxLQUFLO1VBQ0wsS0FBSztVQUNMLEtBQUs7VUFDTCxLQUFLO1VBQ0wsS0FBSztVQUNMLEtBQUs7UUFDTjtNQUNEO0FBNEJBL0csY0FBUXdGLE9BQU9nYixXQUFXLENBQ3pCO1FBQ0MvVCxPQUFPMU0sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1FBQzlCNHNELFFBQVE7UUFDUkMsYUFBYTs7Ozs7VUFLWjtZQUNDanpELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLGFBQWE7WUFDL0NlLE1BQU07WUFDTityRCxZQUFZO2NBQ1g5ekQsUUFBUUEsT0FBT2dILE1BQU0sbUJBQW1CLGtCQUFrQjtjQUMxRCtzRCxLQUFLL3pELE9BQU9nSCxNQUFNLFVBQVUsT0FBTztjQUNuQzQ1QixPQUFPNWdDLE9BQU9nSCxNQUFNLFdBQVcsT0FBTztZQUN2QztVQUNEOztVQUVBO1lBQ0NwRyxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sc0JBQXNCLHFCQUFxQjtZQUMvRGUsTUFBTTtVQUNQOztVQUVBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQjtZQUN0RGd0RCxTQUFTaDBELE9BQU9nSCxNQUNmLDhCQUNBLDRCQUNEO1lBQ0FlLE1BQU07WUFDTmtzRCxXQUFXO2NBQ1YzbUQsS0FBS3ROLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtjQUM1QjNHLE1BQU07Y0FDTm9QLE9BQU96UCxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDOUI2c0IsVUFBVTtjQUNWeUMsUUFBUXQyQixPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDL0JtNUIsU0FBU25nQyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDaENvNUIsS0FBS3BnQyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDNUIwZ0MsT0FBTzFuQyxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDOUJvckIsU0FBU3B5QixPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDaENnRSxLQUFLaEwsT0FBT2dILE1BQU0sTUFBTSxJQUFJO2NBQzVCNHpDLE1BQU07Y0FDTnFDLE1BQU1qOUMsT0FBT2dILE1BQU0sTUFBTSxJQUFJO2NBQzdCcTRCLFFBQVFyL0IsT0FBT2dILE1BQU0sTUFBTSxJQUFJO2NBQy9CODVDLE9BQU87WUFDUjtVQUNEOztVQUVBO1lBQ0NsZ0QsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLHFCQUFxQixtQkFBbUI7WUFDNURndEQsU0FBU2gwRCxPQUFPZ0gsTUFDZiw4QkFDQSw0QkFDRDtZQUNBa3RELFdBQVc7WUFDWG5zRCxNQUFNO1lBQ05rc0QsV0FBVztjQUNWNU0sYUFBYXJuRCxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDcEN5bEQsZUFBZXpzRCxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7WUFDdkM7VUFDRDtRQUFBO01BRUYsR0FDQTtRQUNDMEYsT0FBTzFNLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtRQUM5QjRzRCxRQUFRO1FBQ1JDLGFBQWEsQ0FDWjtVQUNDanpELE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxrQkFBa0IsZ0JBQWdCO1VBQ3REZSxNQUFNO1VBQ04rckQsWUFBWTd6RCxRQUFRd0YsT0FBT2t0RDtRQUM1QixDQUFBO01BRUYsR0FDQTtRQUNDam1ELE9BQU8xTSxPQUFPZ0gsTUFBTSxRQUFRLE9BQU87UUFDbkM0c0QsUUFBUTtRQUNSTSxXQUFXO1FBQ1hMLGFBQWE7OztVQUdaO1lBQ0NqekQsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLHVCQUF1QixxQkFBcUI7WUFDaEVlLE1BQU07VUFDUDs7O1VBR0E7WUFDQ25ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCO1lBQ3hEZSxNQUFNO1VBQ1A7OztVQUdBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQ2IsdUJBQ0Esc0JBQ0Q7WUFDQWUsTUFBTTtZQUNOK3JELFlBQVk3ekQsUUFBUXdGLE9BQU9rdEQ7VUFDNUI7VUFDQTtZQUNDL3hELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFFBQVE7WUFDdkNndEQsU0FBU2gwRCxPQUFPZ0gsTUFDZix1Q0FDQSxvQ0FDRDtZQUNBZSxNQUFNO1lBQ05vc0Qsc0JBQXNCbjBELE9BQU9nSCxNQUM1Qix5QkFDQSx1QkFDRDtZQUNBb3RELHNCQUFzQnAwRCxPQUFPZ0gsTUFDNUIscUJBQ0EsbUJBQ0Q7VUFDRDtRQUFBO01BRUYsR0FDQTtRQUNDMEYsT0FBTzFNLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtRQUNsQzRzRCxRQUFRO1FBQ1JDLGFBQWE7OztVQUdaO1lBQ0NqekQsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsYUFBYTtZQUNoRGUsTUFBTTtVQUNQOzs7VUFHQTtZQUNDbkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1lBQ2xEZSxNQUFNO1lBQ04rckQsWUFBWTd6RCxRQUFRd0YsT0FBT2t0RDtVQUM1Qjs7O1VBR0E7WUFDQy94RCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQjtZQUM5RGUsTUFBTTtZQUNOK3JELFlBQVk3ekQsUUFBUXdGLE9BQU9rdEQ7VUFDNUI7UUFBQTtNQUVGLEdBQ0E7UUFDQ2ptRCxPQUFPMU0sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1FBQzlCNHNELFFBQVE7UUFDUkMsYUFBYSxDQUNaO1VBQ0NqekQsTUFBTTtVQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0I7VUFDdERlLE1BQU07VUFDTityRCxZQUFZN3pELFFBQVF3RixPQUFPa3REO1FBQzVCLEdBQ0E7VUFDQy94RCxNQUFNO1VBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sa0JBQWtCLGdCQUFnQjtVQUN0RGUsTUFBTTtVQUNOK3JELFlBQVk3ekQsUUFBUXdGLE9BQU9rdEQ7UUFDNUIsR0FDQTtVQUNDL3hELE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7VUFDOUNndEQsU0FBU2gwRCxPQUFPZ0gsTUFDZiw0QkFDQSwwQkFDRDtVQUNBa3RELFdBQVc7VUFDWG5zRCxNQUFNO1VBQ04rckQsWUFBWTd6RCxRQUFRd0YsT0FBT2t0RDtRQUM1QixDQUFBO01BRUYsR0FDQTtRQUNDam1ELE9BQU87O1FBRVBrbkQsUUFBUTtRQUNSQyxhQUFhOzs7VUFHWjtZQUNDanpELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFDYixxQ0FDQSxvQ0FDRDtZQUNBZ3RELFNBQVNoMEQsT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7WUFDdERlLE1BQU07VUFDUDs7O1VBR0E7WUFDQ25ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxvQkFBb0IsbUJBQW1CO1lBQzNEZSxNQUFNO1lBQ05rc0QsV0FBVztjQUNWOTJCLE1BQU1uOUIsT0FBT2dILE1BQU0sUUFBUSxNQUFNO2NBQ2pDcXRELE1BQU1yMEQsT0FBT2dILE1BQU0sUUFBUSxNQUFNO1lBQ2xDO1VBQ0Q7OztVQUdBO1lBQ0NwRyxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQ2IsNEJBQ0EsNEJBQ0Q7WUFDQWd0RCxTQUFTaDBELE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0I7WUFDeERlLE1BQU07VUFDUDs7O1VBR0E7WUFDQ25ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFDYiwwQkFDQSwyQkFDRDtZQUNBZ3RELFNBQVNoMEQsT0FBT2dILE1BQ2YsdURBQ0Esd0RBQ0Q7WUFDQWUsTUFBTTtVQUNQOzs7VUFHQTtZQUNDbkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGtCQUFrQixnQkFBZ0I7WUFDdERlLE1BQU07WUFDTmtzRCxXQUFXO2NBQ1Y5MkIsTUFBTW45QixPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Y0FDakNxdEQsTUFBTXIwRCxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07Y0FDakNzdEQsT0FBT3QwRCxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7WUFDekM7VUFDRDs7O1VBR0E7WUFDQ3BHLE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxtQkFBbUIsaUJBQWlCO1lBQ3hEZSxNQUFNO1lBQ05rc0QsV0FBVztjQUNWOTJCLE1BQU1uOUIsT0FBT2dILE1BQU0sUUFBUSxNQUFNO2NBQ2pDcXRELE1BQU1yMEQsT0FBT2dILE1BQU0sUUFBUSxNQUFNO2NBQ2pDc3RELE9BQU90MEQsT0FBT2dILE1BQU0sV0FBVyxTQUFTO1lBQ3pDO1VBQ0Q7OztVQUdBO1lBQ0NwRyxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0scUJBQXFCLG1CQUFtQjtZQUM1RGUsTUFBTTtZQUNOK3JELFlBQVk3ekQsUUFBUXdGLE9BQU9rdEQ7VUFDNUI7OztVQUdBO1lBQ0MveEQsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztZQUM1Q2d0RCxTQUFTaDBELE9BQU9nSCxNQUFNLHVCQUF1QixxQkFBcUI7WUFDbEVlLE1BQU07VUFDUDtVQUNBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGVBQWU7WUFDcERndEQsU0FBU2gwRCxPQUFPZ0gsTUFDZix5QkFDQSx3QkFDRDtZQUNBZSxNQUFNO1VBQ1A7Ozs7O1VBS0E7WUFDQ25ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztZQUNsRGUsTUFBTTtZQUNOa3NELFdBQVc7Y0FDVmhYLE1BQU1qOUMsT0FBT2dILE1BQU0sTUFBTSxJQUFJO2NBQzdCOFgsU0FBUzllLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtjQUNwQ28xQyxRQUFRcDhDLE9BQU9nSCxNQUFNLFdBQVcsVUFBVTtjQUMxQ3V0RCxNQUFNdjBELE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtjQUNqQ202QyxlQUFlbmhELE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtjQUMxQ3d0RCxxQkFBcUJ4MEQsT0FBT2dILE1BQU0sUUFBUSxNQUFNO1lBQ2pEO1VBQ0Q7VUFDQTtZQUNDcEcsTUFBTTtZQUNOME4sT0FBTztZQUNQMGxELFNBQVNoMEQsT0FBT2dILE1BQ2YsNkJBQ0EsMkJBQ0Q7WUFDQWUsTUFBTTtZQUNOb3NELHNCQUFzQjtZQUN0QkMsc0JBQXNCcDBELE9BQU9nSCxNQUFNLFNBQVMsT0FBTztVQUNwRDtRQUFBO01BRUYsR0FDQTtRQUNDMEYsT0FBTzFNLE9BQU9nSCxNQUFNLFFBQVEsTUFBTTtRQUNsQzRzRCxRQUFRO1FBQ1JDLGFBQWE7VUFDWjtZQUNDanpELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7WUFDaERlLE1BQU07WUFDTityRCxZQUFZO2NBQ1hXLGFBQWF6MEQsT0FBT2dILE1BQU0sWUFBWSxVQUFVO2NBQ2hEMHRELFlBQVkxMEQsT0FBT2dILE1BQU0sWUFBWSxVQUFVO1lBQ2hEO1VBQ0Q7OztVQUdBO1lBQ0NwRyxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7WUFDbERlLE1BQU07WUFDTmtzRCxXQUFXaDBELFFBQVF3RixPQUFPc3RELFdBQVdDO1lBQ3JDMkIsaUJBQWlCMTBELFFBQVF3RixPQUFPc3RELFdBQVdHO1VBQzVDOzs7VUFHQTtZQUNDdHlELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxxQkFBcUIsbUJBQW1CO1lBQzVEZSxNQUFNO1lBQ04rckQsWUFBWTd6RCxRQUFRd0YsT0FBT2t0RDtVQUM1Qjs7O1VBR0E7WUFDQy94RCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQjtZQUMxRGUsTUFBTTtVQUNQOzs7VUFHQTtZQUNDbkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLG9CQUFvQixrQkFBa0I7WUFDMURndEQsU0FBU2gwRCxPQUFPZ0gsTUFDZixpQ0FDQSxnQ0FDRDtZQUNBZSxNQUFNO1lBQ05rc0QsV0FBV2gwRCxRQUFRd0YsT0FBT3N0RCxXQUFXSTtZQUNyQ3dCLGlCQUFpQjEwRCxRQUFRd0YsT0FBT3N0RCxXQUFXSztVQUM1Qzs7VUFFQTtZQUNDeHlELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxxQkFBcUIsbUJBQW1CO1lBQzVEa3RELFdBQVc7WUFDWG5zRCxNQUFNO1lBQ05rc0QsV0FBV2gwRCxRQUFRd0YsT0FBT3N0RCxXQUFXTTtZQUNyQ3NCLGlCQUFpQjEwRCxRQUFRd0YsT0FBT3N0RCxXQUFXTztVQUM1Qzs7O1VBR0E7WUFDQzF5RCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sa0JBQWtCLGlCQUFpQjtZQUN2RGt0RCxXQUFXO1lBQ1huc0QsTUFBTTtZQUNOa3NELFdBQVdoMEQsUUFBUXdGLE9BQU9zdEQsV0FBV007WUFDckNzQixpQkFBaUIxMEQsUUFBUXdGLE9BQU9zdEQsV0FBV087VUFDNUM7OztVQUdBO1lBQ0MxeUQsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGVBQWUsYUFBYTtZQUNoRGt0RCxXQUFXO1lBQ1huc0QsTUFBTTtVQUNQO1VBQ0E7WUFDQ25ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGNBQWM7WUFDakRrdEQsV0FBVztZQUNYbnNELE1BQU07VUFDUDs7O1VBR0E7WUFDQ25ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztZQUNsRGd0RCxTQUFTaDBELE9BQU9nSCxNQUNmLDBCQUNBLHdCQUNEO1lBQ0FrdEQsV0FBVztZQUNYbnNELE1BQU07VUFDUDs7O1VBR0E7WUFDQ25ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxpQkFBaUIsZ0JBQWdCO1lBQ3JEZSxNQUFNO1VBQ1A7OztVQUdBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0saUJBQWlCLGdCQUFnQjtZQUNyRGd0RCxTQUFTaDBELE9BQU9nSCxNQUNmLHdCQUNBLHNCQUNEO1lBQ0FlLE1BQU07VUFDUDtVQUNBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sb0JBQW9CLG1CQUFtQjtZQUMzRGd0RCxTQUFTaDBELE9BQU9nSCxNQUNmLDRDQUNBLDJDQUNEO1lBQ0FlLE1BQU07VUFDUDtVQUNBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxTQUFTO1lBQ3hDZ3RELFNBQVNoMEQsT0FBT2dILE1BQ2YsK0RBQ0EsK0RBQ0Q7WUFDQWUsTUFBTTtVQUNQO1VBQ0E7WUFDQ25ILE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztZQUNsRGUsTUFBTTtZQUNOa3NELFdBQVdoMEQsUUFBUXdGLE9BQU9zdEQsV0FBV007WUFDckNzQixpQkFBaUIxMEQsUUFBUXdGLE9BQU9zdEQsV0FBV087VUFDNUM7VUFDQTtZQUNDMXlELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7WUFDaERndEQsU0FBU2gwRCxPQUFPZ0gsTUFBTSxhQUFhLFdBQVc7WUFDOUNlLE1BQU07VUFDUDtRQUFBO01BRUYsR0FDQTtRQUNDMkUsT0FBTzFNLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtRQUM5QjRzRCxRQUFRO1FBQ1JDLGFBQWEsQ0FDWjtVQUNDanpELE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7VUFDOUNlLE1BQU07VUFDTityRCxZQUFZN3pELFFBQVF3RixPQUFPa3REO1FBQzVCLEdBQ0E7VUFDQy94RCxNQUFNO1VBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7VUFDbERlLE1BQU07VUFDTityRCxZQUFZN3pELFFBQVF3RixPQUFPa3REO1FBQzVCLEdBQ0E7VUFDQy94RCxNQUFNO1VBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO1VBQzVDZSxNQUFNO1FBQ1AsR0FDQTtVQUNDbkgsTUFBTTtVQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLG1CQUFtQixpQkFBaUI7VUFDeERlLE1BQU07UUFDUCxHQUNBO1VBQ0NuSCxNQUFNO1VBQ04wTixPQUFPdE8sT0FBT2dILE1BQ2IsbUNBQ0Esa0NBQ0Q7VUFDQWUsTUFBTTtRQUNQLEdBQ0E7VUFDQ25ILE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7VUFDaERlLE1BQU07VUFDTityRCxZQUFZO1lBQ1hjLEtBQUs1MEQsT0FBT2dILE1BQU0sT0FBTyxLQUFLO1lBQzlCNnRELE9BQU87VUFDUjtRQUNELEdBQ0E7VUFDQ2owRCxNQUFNO1VBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxVQUFVO1VBQzNDZ3RELFNBQVNoMEQsT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7VUFDcERlLE1BQU07VUFDTm9zRCxzQkFBc0JuMEQsT0FBT2dILE1BQU0sY0FBYyxZQUFZO1VBQzdEb3RELHNCQUFzQnAwRCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87UUFDcEQsR0FDQTtVQUNDcEcsTUFBTTtVQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsVUFBVTtVQUMzQ2d0RCxTQUFTaDBELE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1VBQ3BEZSxNQUFNO1VBQ05vc0Qsc0JBQXNCbjBELE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUM3RG90RCxzQkFBc0JwMEQsT0FBT2dILE1BQU0sU0FBUyxPQUFPO1FBQ3BELEdBQ0E7VUFDQ3BHLE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7VUFDOUNndEQsU0FBU2gwRCxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztVQUNwRGUsTUFBTTtVQUNOb3NELHNCQUFzQm4wRCxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7VUFDN0RvdEQsc0JBQXNCcDBELE9BQU9nSCxNQUFNLFNBQVMsT0FBTztRQUNwRCxDQUFBO01BRUYsR0FDQTtRQUNDMEYsT0FBTztRQUNQa25ELFFBQVE7UUFDUkMsYUFBYSxDQUNaO1VBQ0NqekQsTUFBTTtVQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtVQUM5Q2UsTUFBTTtRQUNQLEdBQ0E7VUFDQ25ILE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7VUFDOUNlLE1BQU07UUFDUCxHQUNBO1VBQ0NuSCxNQUFNO1VBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sbUJBQW1CLGlCQUFpQjtVQUN4RGUsTUFBTTtRQUNQLEdBQ0E7VUFDQ25ILE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztVQUNsRGUsTUFBTTtVQUNOK3JELFlBQVk7WUFDWGMsS0FBSzUwRCxPQUFPZ0gsTUFBTSxPQUFPLEtBQUs7WUFDOUI2dEQsT0FBTztVQUNSO1FBQ0QsR0FDQTtVQUNDajBELE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxjQUFjLFdBQVc7VUFDN0NndEQsU0FBU2gwRCxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztVQUNwRGUsTUFBTTtVQUNOb3NELHNCQUFzQm4wRCxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7VUFDN0RvdEQsc0JBQXNCcDBELE9BQU9nSCxNQUFNLFNBQVMsT0FBTztRQUNwRCxDQUFBO01BRUYsR0FDQTtRQUNDMEYsT0FBTztRQUNQa25ELFFBQVE7UUFDUkMsYUFBYSxDQUNaO1VBQ0NqekQsTUFBTTtVQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGFBQWEsV0FBVztVQUM1Q2UsTUFBTTtRQUNQLEdBQ0E7VUFDQ25ILE1BQU07VUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7VUFDeENlLE1BQU07UUFDUCxHQUNBO1VBQ0NuSCxNQUFNO1VBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO1VBQzVDZSxNQUFNO1FBQ1AsR0FDQTtVQUNDbkgsTUFBTTtVQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1VBQ3BEZSxNQUFNO1FBQ1AsQ0FBQTtNQUVGLEdBQ0E7UUFDQzJFLE9BQU8xTSxPQUFPZ0gsTUFBTSxRQUFRLE1BQU07UUFDbEM0c0QsUUFBUTtRQUNSQyxhQUFhOzs7VUFHWjtZQUNDanpELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxrQkFBa0IsZ0JBQWdCO1lBQ3REZ3RELFNBQVNoMEQsT0FBT2dILE1BQ2YsbUNBQ0EsaUNBQ0Q7WUFDQWUsTUFBTTtZQUNOa3NELFdBQVdoMEQsUUFBUXdGLE9BQU9zdEQsV0FBV1k7VUFDdEM7UUFBQTtNQUVGLEdBQ0E7UUFDQ2puRCxPQUFPMU0sT0FBT2dILE1BQU0sUUFBUSxPQUFPO1FBQ25DNHNELFFBQVE7UUFDUkMsYUFBYTs7O1VBR1o7WUFDQ2p6RCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1lBQ3RDZSxNQUFNO1lBQ04rckQsWUFBWTtjQUNYLEdBQUc7Y0FDSCxHQUFHO2NBQ0gsR0FBRzl6RCxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87Y0FDaEMsR0FBR2hILE9BQU9nSCxNQUFNLFNBQVMsT0FBTztjQUNoQyxHQUFHaEgsT0FBT2dILE1BQU0sWUFBWSxTQUFTO2NBQ3JDLEdBQUc7Y0FDSCxHQUFHaEgsT0FBT2dILE1BQU0sVUFBVSxRQUFROzs7OztZQUtuQztVQUNEOzs7VUFHQTtZQUNDcEcsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1lBQ3BEZ3RELFNBQVNoMEQsT0FBT2dILE1BQ2YsdUNBQ0EscUNBQ0Q7WUFDQWUsTUFBTTtVQUNQOzs7VUFHQTtZQUNDbkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLG1CQUFtQixrQkFBa0I7WUFDekRlLE1BQU07WUFDTityRCxZQUFZN3pELFFBQVF3RixPQUFPa3REO1VBQzVCOzs7VUFHQTtZQUNDL3hELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxlQUFlLGFBQWE7WUFDaERlLE1BQU07VUFDUDtVQUNBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sV0FBVyxRQUFRO1lBQ3ZDZ3RELFNBQVNoMEQsT0FBT2dILE1BQ2YsMkNBQ0EseUNBQ0Q7WUFDQWUsTUFBTTtZQUNOb3NELHNCQUFzQm4wRCxPQUFPZ0gsTUFBTSxjQUFjLFlBQVk7WUFDN0RvdEQsc0JBQXNCcDBELE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1VBQ2xFO1FBQUE7TUFFRixHQUNBO1FBQ0MwRixPQUFPMU0sT0FBT2dILE1BQU0sUUFBUSxNQUFNO1FBQ2xDNHNELFFBQVE7UUFDUkMsYUFBYTtVQUNaO1lBQ0NqekQsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLG9CQUFvQixtQkFBbUI7WUFDM0RndEQsU0FBU2gwRCxPQUFPZ0gsTUFDZiw2QkFDQSwyQkFDRDtZQUNBZSxNQUFNO1VBQ1A7VUFDQTtZQUNDbkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLFdBQVcsU0FBUztZQUN4Q2d0RCxTQUFTaDBELE9BQU9nSCxNQUNmLCtEQUNBLCtEQUNEO1lBQ0FlLE1BQU07VUFDUDtVQUNBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sZ0JBQWdCLGNBQWM7WUFDbERlLE1BQU07WUFDTmtzRCxXQUFXaDBELFFBQVF3RixPQUFPc3RELFdBQVdRO1lBQ3JDb0IsaUJBQWlCMTBELFFBQVF3RixPQUFPc3RELFdBQVdXO1VBQzVDOzs7VUFHQTtZQUNDOXlELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztZQUNsRGUsTUFBTTtZQUNOK3JELFlBQVk3ekQsUUFBUXdGLE9BQU9rdEQ7VUFDNUI7Ozs7VUFJQTtZQUNDL3hELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztZQUNsRGd0RCxTQUFTaDBELE9BQU9nSCxNQUFNLFVBQVUsUUFBUTtZQUN4Q2UsTUFBTTtZQUNOK3JELFlBQVk3ekQsUUFBUXdGLE9BQU9rdEQ7VUFDNUI7OztVQUdBO1lBQ0MveEQsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUNiLHVCQUNBLHFCQUNEO1lBQ0FlLE1BQU07WUFDTityRCxZQUFZN3pELFFBQVF3RixPQUFPa3REO1VBQzVCO1VBQ0E7WUFDQy94RCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sb0JBQW9CLGtCQUFrQjtZQUMxRGd0RCxTQUFTaDBELE9BQU9nSCxNQUNmLDRDQUNBLDBDQUNEO1lBQ0FlLE1BQU07VUFDUDtVQUNBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sbUJBQW1CLGlCQUFpQjtZQUN4RGd0RCxTQUFTaDBELE9BQU9nSCxNQUNmLG9DQUNBLGtDQUNEO1lBQ0FlLE1BQU07VUFDUDtVQUNBO1lBQ0NuSCxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1lBQ3RDZ3RELFNBQVNoMEQsT0FBT2dILE1BQ2YsbUNBQ0EsaUNBQ0Q7WUFDQWUsTUFBTTtZQUNOK3JELFlBQVk7Y0FDWE4sUUFBUXh6RCxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7Y0FDL0I4dEQsTUFBTTkwRCxPQUFPZ0gsTUFBTSxXQUFXLFNBQVM7WUFDeEM7VUFDRDtVQUNBO1lBQ0NwRyxNQUFNO1lBQ04wTixPQUFPdE8sT0FBT2dILE1BQU0sYUFBYSxXQUFXO1lBQzVDZ3RELFNBQVNoMEQsT0FBT2dILE1BQU0sV0FBVyxTQUFTO1lBQzFDZSxNQUFNO1VBQ1A7VUFDQTtZQUNDbkgsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGNBQWMsWUFBWTtZQUM5Q2d0RCxTQUFTaDBELE9BQU9nSCxNQUFNLFdBQVcsU0FBUztZQUMxQ2UsTUFBTTtVQUNQO1FBQUE7TUFFRixHQUNBO1FBQ0MyRSxPQUFPMU0sT0FBT2dILE1BQU0sVUFBVSxRQUFRO1FBQ3RDNHNELFFBQVE7UUFDUkMsYUFBYSxDQUNaO1VBQ0NqekQsTUFBTTtVQUNOME4sT0FBT3RPLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlO1VBQ3BEZ3RELFNBQVNoMEQsT0FBT2dILE1BQ2Ysa0NBQ0EsZ0NBQ0Q7VUFDQWUsTUFBTTtVQUNOK3JELFlBQVk7WUFDWHhxQyxNQUFNdHBCLE9BQU9nSCxNQUFNLE9BQU8sS0FBSztZQUMvQit0RCxjQUFjLzBELE9BQU9nSCxNQUFNLGdCQUFnQixjQUFjO1lBQ3pEZ3VELEtBQUtoMUQsT0FBT2dILE1BQU0sVUFBVSxRQUFRO1VBQ3JDO1FBQ0QsQ0FBQTtNQUVGLEdBQ0E7UUFDQzBGLE9BQU8xTSxPQUFPZ0gsTUFBTSxTQUFTLE9BQU87UUFDcEM0c0QsUUFBUTtRQUNSQyxhQUFhOzs7VUFHWjtZQUNDanpELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxnQkFBZ0IsY0FBYztZQUNsRGUsTUFBTTtZQUNOK3JELFlBQVk3ekQsUUFBUXdGLE9BQU9rdEQ7VUFDNUI7OztVQUdBO1lBQ0MveEQsTUFBTTtZQUNOME4sT0FBT3RPLE9BQU9nSCxNQUNiLHVCQUNBLHFCQUNEO1lBQ0FlLE1BQU07WUFDTityRCxZQUFZN3pELFFBQVF3RixPQUFPa3REO1VBQzVCOzs7VUFHQTtZQUNDL3hELE1BQU07WUFDTjBOLE9BQU90TyxPQUFPZ0gsTUFBTSxvQkFBb0Isa0JBQWtCO1lBQzFEZ3RELFNBQVNoMEQsT0FBT2dILE1BQ2YsNENBQ0EsMENBQ0Q7WUFDQWUsTUFBTTtVQUNQO1FBQUE7TUFFRixHQUNBO1FBQ0MyRSxPQUFPMU0sT0FBT2dILE1BQU0sTUFBTSxJQUFJO1FBQzlCaWMsUUFBUTtRQUNSNHdDLGFBQWE7O1VBRVo7WUFDQ2p6RCxNQUFNO1lBQ05tSCxNQUFNO1VBQ1A7VUFDQTtZQUNDbkgsTUFBTTtZQUNObUgsTUFBTTtVQUNQO1VBQ0E7WUFDQ25ILE1BQU07WUFDTm1ILE1BQU07VUFDUDtVQUNBO1lBQ0NuSCxNQUFNO1lBQ05tSCxNQUFNO1VBQ1A7VUFDQTtZQUNDbkgsTUFBTTtZQUNObUgsTUFBTTtVQUNQOztVQUVBO1lBQ0NuSCxNQUFNO1lBQ05tSCxNQUFNO1VBQ1A7O1VBRUE7WUFDQ25ILE1BQU07WUFDTm1ILE1BQU07WUFDTm1zRCxXQUFXO1VBQ1o7O1VBRUE7WUFDQ3R6RCxNQUFNO1lBQ05tSCxNQUFNO1lBQ05tc0QsV0FBVztVQUNaO1FBQUE7TUFFRixDQUFBO0FBRURqMEQsY0FBUXdGLE9BQU9pUCxPQUFPLE1BQU07QUFFM0IsWUFBSWxQLEdBQUdDLE9BQU9DLElBQUksWUFBWSxNQUFNekYsUUFBUXVILFFBQVEsWUFBWSxLQUFLaEMsR0FBR0MsT0FBT0MsSUFBSSxVQUFVLE1BQU0sUUFBUTtBQUMxRyxjQUFJLENBQUN3QyxTQUFTQyxjQUFjLGlCQUFpQixHQUFHO0FBQy9DO1VBQ0Q7QUFDQSxnQkFBTThzRCxhQUFhL3NELFNBQVNDLGNBQWMseUJBQXlCO0FBQ25FOHNELHFCQUFXamtELGNBQWM7QUFFekIsZ0JBQU1ra0QsV0FBV2h0RCxTQUFTWSxjQUFjLEtBQUs7QUFDN0Nvc0QsbUJBQVNsc0QsWUFBWTtBQUNyQmtzRCxtQkFBU3htRCxNQUFNeW1ELGFBQWE7QUFFNUIsZ0JBQU1DLFdBQVdsdEQsU0FBU1ksY0FBYyxLQUFLO0FBQzdDc3NELG1CQUFTdnRELEtBQUs7QUFDZCxnQkFBTXd0RCxRQUFRbnRELFNBQVNZLGNBQWMsSUFBSTtBQUN6Q3VzRCxnQkFBTXJrRCxjQUFjaFIsT0FBT2dILE1BQU0sT0FBTyxLQUFLO0FBQzdDb3VELG1CQUFTbHNELFlBQVltc0QsS0FBSztBQUUxQixnQkFBTUMsWUFBWXB0RCxTQUFTWSxjQUFjLE1BQU07QUFDL0N3c0Qsb0JBQVV0c0QsWUFBWTtBQUN0QnNzRCxvQkFBVXBzRCxZQUFZaEIsU0FBU3FCLGVBQWUsR0FBRyxDQUFDO0FBQ2xELGdCQUFNZ3NELGdCQUFnQnJ0RCxTQUFTWSxjQUFjLEdBQUc7QUFDaER5c0Qsd0JBQWN2c0QsWUFBWTtBQUMxQnVzRCx3QkFBY3hzRCxhQUFhLFFBQVEsaUJBQWlCO0FBQ3BEd3NELHdCQUFjdmtELGNBQWNoUixPQUFPZ0gsTUFBTSxNQUFNLElBQUk7QUFDbkRzdUQsb0JBQVVwc0QsWUFBWXFzRCxhQUFhO0FBQ25DRCxvQkFBVXBzRCxZQUFZaEIsU0FBU3FCLGVBQWUsR0FBRyxDQUFDO0FBQ2xENnJELG1CQUFTbHNELFlBQVlvc0QsU0FBUztBQUM5QkosbUJBQVNoc0QsWUFBWWtzRCxRQUFRO0FBRTdCLGdCQUFNSSxRQUFRdHRELFNBQVNZLGNBQWMsSUFBSTtBQUN6Q3lzRCx3QkFBY2xqQixpQkFDYixTQUNBLE1BQU07QUFDTCxrQkFBTW9qQixTQUFTNzFELEVBQUU0MUQsS0FBSztBQUN0QkMsbUJBQU9DLE9BQU87QUFDZCxnQkFBSUQsT0FBT2x1RCxLQUFLLFVBQVUsRUFBRTFHLFFBQVE7QUFDbkMwMEQsNEJBQWN2a0QsY0FBY2hSLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtZQUNwRCxPQUFPO0FBQ051dUQsNEJBQWN2a0QsY0FBY2hSLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtZQUNwRDtVQUNELEdBQ0EsS0FDRDtBQUNBa3VELG1CQUFTaHNELFlBQVlzc0QsS0FBSztBQUMxQlAscUJBQVcvckQsWUFBWWdzRCxRQUFRO0FBQy9CLGdCQUFNUyxjQUFjenRELFNBQVNZLGNBQWMsTUFBTTtBQUVqRDZzRCxzQkFBWTVzRCxhQUFhLFVBQVUsb0JBQW9CO0FBQ3ZENHNELHNCQUFZdGpCLGlCQUFpQixVQUFVcHlDLFFBQVF3RixPQUFPcXNCLE1BQU0sSUFBSTtBQUNoRW1qQyxxQkFBVy9yRCxZQUFZeXNELFdBQVc7QUFDbEMsZ0JBQU16N0MsWUFBWWhTLFNBQVNZLGNBQWMsT0FBTztBQUNoRG9SLG9CQUFVeEwsTUFBTTJPLFFBQVE7QUFDeEJzNEMsc0JBQVl6c0QsWUFBWWdSLFNBQVM7QUFDakN0YSxZQUFFSyxRQUFRd0YsT0FBT2diLFFBQVEsRUFBRWlOLEtBQUssQ0FBQ2tvQyxZQUFZamhDLFlBQVk7QUFDeEQsZ0JBQUlBLFFBQVExUixVQUFXMFIsUUFBUXUvQixhQUFhLENBQUNoMEQsU0FBU2dCLGFBQWM7QUFDbkUscUJBQU87WUFDUjtBQUVBLGtCQUFNMjBELFFBQVEzdEQsU0FBU1ksY0FBYyxJQUFJO0FBQ3pDK3NELGtCQUFNN3NELFlBQVk7QUFDbEIsa0JBQU04c0QsT0FBTzV0RCxTQUFTWSxjQUFjLEdBQUc7QUFDdkNndEQsaUJBQUsvc0QsYUFBYSxRQUFBLElBQUFWLE9BQVlzc0IsUUFBUWkvQixNQUFNLENBQUU7QUFDOUNrQyxpQkFBSzVzRCxZQUFZaEIsU0FBU3FCLGVBQWVvckIsUUFBUWpvQixLQUFLLENBQUM7QUFDdkRtcEQsa0JBQU0zc0QsWUFBWTRzRCxJQUFJO0FBQ3RCTixrQkFBTXRzRCxZQUFZMnNELEtBQUs7QUFDdkIsZ0JBQUlFLE1BQU03dEQsU0FBU1ksY0FBYyxJQUFJO0FBQ3JDLGdCQUFJa3RELE9BQU85dEQsU0FBU1ksY0FBYyxJQUFJO0FBQ3RDa3RELGlCQUFLanRELGFBQWEsV0FBVyxHQUFHO0FBQ2hDLGtCQUFNRixVQUFVWCxTQUFTWSxjQUFjLElBQUk7QUFDM0NELG9CQUFRNkYsTUFBTXVuRCxlQUFlO0FBQzdCcHRELG9CQUFRNkYsTUFBTXduRCxZQUFZO0FBQzFCcnRELG9CQUFRaEIsS0FBSzhzQixRQUFRaS9CO0FBQ3JCL3FELG9CQUFRSyxZQUFZaEIsU0FBU3FCLGVBQWVvckIsUUFBUWpvQixLQUFLLENBQUM7QUFDMURzcEQsaUJBQUs5c0QsWUFBWUwsT0FBTztBQUN4Qmt0RCxnQkFBSTdzRCxZQUFZOHNELElBQUk7QUFDcEI5N0Msc0JBQVVoUixZQUFZNnNELEdBQUc7QUFDekIsZ0JBQUlJLFdBQVc7QUFFZnYyRCxjQUFFKzBCLFFBQVFrL0IsV0FBVyxFQUFFbm1DLEtBQUssQ0FBQzBvQyxTQUFTQyxTQUFTO0FBQzlDLGtCQUFJQSxLQUFLbkMsYUFBYSxDQUFDaDBELFNBQVNnQixhQUFhO0FBQzVDLHVCQUFPO2NBQ1I7QUFFQTYwRCxvQkFBTTd0RCxTQUFTWSxjQUFjLElBQUk7QUFDakNpdEQsa0JBQUlybkQsTUFBTTRuRCxlQUFlO0FBRXpCLGtCQUFJSCxhQUFhLE1BQU0sR0FBRztBQUN6Qkosb0JBQUlybkQsTUFBTTZuRCxrQkFBa0I7Y0FDN0I7QUFDQVAscUJBQU85dEQsU0FBU1ksY0FBYyxJQUFJO0FBQ2xDLGtCQUFJd0Y7QUFDSixrQkFBSTBEO0FBQ0osb0JBQU13a0QsVUFBVXYyRCxRQUFRdUgsUUFBUTZ1RCxLQUFLejFELElBQUk7QUFDekMsc0JBQVF5MUQsS0FBS3R1RCxNQUFBO2dCQUNaLEtBQUs7QUFFSml1RCx1QkFBS2p0RCxhQUFhLFdBQVcsR0FBRztBQUNoQ3VGLDBCQUFRcEcsU0FBU1ksY0FBYyxPQUFPO0FBQ3RDa0osMEJBQVE5SixTQUFTWSxjQUFjLE9BQU87QUFDdENrSix3QkFBTWpKLGFBQWEsUUFBUSxVQUFVO0FBQ3JDaUosd0JBQU1qSixhQUFhLE1BQU1zdEQsS0FBS3oxRCxJQUFJO0FBQ2xDb1Isd0JBQU1qSixhQUFhLFFBQVFzdEQsS0FBS3oxRCxJQUFJO0FBQ3BDLHNCQUFJNDFELFlBQVksTUFBTTtBQUNyQnhrRCwwQkFBTWtSLFVBQVU7a0JBQ2pCO0FBQ0E1VSx3QkFBTXBGLFlBQVk4SSxLQUFLO0FBQ3ZCMUQsd0JBQU1wRixZQUFZaEIsU0FBU3FCLGVBQWU4c0QsS0FBSy9uRCxLQUFLLENBQUM7QUFDckQwbkQsdUJBQUs5c0QsWUFBWW9GLEtBQUs7QUFDdEI7Z0JBQ0QsS0FBSztnQkFDTCxLQUFLO0FBRUowbkQsdUJBQUt0bkQsTUFBTStuRCxZQUFZO0FBQ3ZCVCx1QkFBS3RuRCxNQUFNZ29ELGVBQWU7QUFDMUJwb0QsMEJBQVFwRyxTQUFTWSxjQUFjLE9BQU87QUFDdEN3Rix3QkFBTXZGLGFBQWEsT0FBT3N0RCxLQUFLejFELElBQUk7QUFDbkMwTix3QkFBTXBGLFlBQVloQixTQUFTcUIsZUFBQSxHQUFBbEIsT0FBa0JndUQsS0FBSy9uRCxPQUFLLEdBQUEsQ0FBRyxDQUFDO0FBQzNEMG5ELHVCQUFLOXNELFlBQVlvRixLQUFLO0FBQ3RCeW5ELHNCQUFJN3NELFlBQVk4c0QsSUFBSTtBQUVwQkEseUJBQU85dEQsU0FBU1ksY0FBYyxJQUFJO0FBQ2xDa3RELHVCQUFLdG5ELE1BQU1nb0QsZUFBZTtBQUMxQjFrRCwwQkFBUTlKLFNBQVNZLGNBQWMsT0FBTztBQUN0Q2tKLHdCQUFNakosYUFBYSxRQUFRLE1BQU07QUFDakNpSix3QkFBTWpKLGFBQWEsTUFBTXN0RCxLQUFLejFELElBQUk7QUFDbENvUix3QkFBTWpKLGFBQWEsUUFBUXN0RCxLQUFLejFELElBQUk7QUFDcEMsc0JBQUl5MUQsS0FBS3R1RCxTQUFTLFdBQVc7QUFDNUJpSywwQkFBTWpKLGFBQWEsUUFBUSxDQUFDO0FBQzVCaUosMEJBQU1qSixhQUFhLFFBQVEsUUFBUTtBQUNuQ2lKLDBCQUFNakosYUFBYSxRQUFRLEdBQUc7a0JBQy9CO0FBRUEsc0JBQUl5dEQsU0FBUztBQUNaeGtELDBCQUFNakosYUFBYSxTQUFTeXRELE9BQU87a0JBQ3BDO0FBQ0FSLHVCQUFLOXNELFlBQVk4SSxLQUFLO0FBQ3RCO2dCQUNELEtBQUssUUFBUTtBQUlaZ2tELHVCQUFLdG5ELE1BQU0rbkQsWUFBWTtBQUN2QlQsdUJBQUt0bkQsTUFBTWdvRCxlQUFlO0FBQzFCcG9ELDBCQUFRcEcsU0FBU1ksY0FBYyxPQUFPO0FBQ3RDd0Ysd0JBQU12RixhQUFhLE9BQU9zdEQsS0FBS3oxRCxJQUFJO0FBQ25DME4sd0JBQU1wRixZQUFZaEIsU0FBU3FCLGVBQUEsR0FBQWxCLE9BQWtCZ3VELEtBQUsvbkQsT0FBSyxHQUFBLENBQUcsQ0FBQztBQUMzRDBuRCx1QkFBSzlzRCxZQUFZb0YsS0FBSztBQUN0QnluRCxzQkFBSTdzRCxZQUFZOHNELElBQUk7QUFFcEJBLHlCQUFPOXRELFNBQVNZLGNBQWMsSUFBSTtBQUNsQ2t0RCx1QkFBS3RuRCxNQUFNZ29ELGVBQWU7QUFDMUIxa0QsMEJBQVE5SixTQUFTWSxjQUFjLFFBQVE7QUFDdkNrSix3QkFBTWpKLGFBQWEsTUFBTXN0RCxLQUFLejFELElBQUk7QUFDbENvUix3QkFBTWpKLGFBQWEsUUFBUXN0RCxLQUFLejFELElBQUk7QUFDcEMsc0JBQUkrMUQsZUFBZTtBQUNuQiwyQkFBQUMsT0FBQSxHQUFBQyxvQkFBdUNsOEMsT0FBT0MsUUFBUXk3QyxLQUFLdkMsVUFBVSxHQUFBOEMsT0FBQUMsa0JBQUFoMkQsUUFBQSsxRCxRQUFHO0FBQXhFLDBCQUFXLENBQUNFLFdBQVdDLFdBQVcsSUFBQUYsa0JBQUFELElBQUE7QUFDakMsMEJBQU0zcUIsU0FBUy9qQyxTQUFTWSxjQUFjLFFBQVE7QUFDOUNtakMsMkJBQU9sakMsYUFBYSxTQUFTK3RELFNBQVM7QUFDdEMsd0JBQ0NOLFlBQVlNOztvQkFHWCxPQUFPTixZQUFZLGNBQ2pCQSxXQUFXTSxjQUFjLFNBQVcsQ0FBQ04sV0FBV00sY0FBYyxPQUNoRTtBQUNEN3FCLDZCQUFPbGpDLGFBQWEsWUFBWSxVQUFVO0FBQzFDNHRELHFDQUFlO29CQUNoQjtBQUNBMXFCLDJCQUFPL2lDLFlBQVloQixTQUFTcUIsZUFBZXd0RCxXQUFXLENBQUM7QUFDdkQva0QsMEJBQU05SSxZQUFZK2lDLE1BQU07a0JBQ3pCO0FBRUEsc0JBQUksQ0FBQzBxQixjQUFjO0FBQ2xCLDBCQUFNMXFCLFNBQVMvakMsU0FBU1ksY0FBYyxRQUFRO0FBQzlDbWpDLDJCQUFPbGpDLGFBQWEsU0FBU3l0RCxPQUFPO0FBQ3BDdnFCLDJCQUFPbGpDLGFBQWEsWUFBWSxVQUFVO0FBQzFDa2pDLDJCQUFPL2lDLFlBQVloQixTQUFTcUIsZUFBZWl0RCxPQUFPLENBQUM7QUFDbkR4a0QsMEJBQU05SSxZQUFZK2lDLE1BQU07a0JBQ3pCO0FBQ0ErcEIsdUJBQUs5c0QsWUFBWThJLEtBQUs7QUFDdEI7Z0JBQ0Q7Z0JBQ0EsS0FBSyxPQUFPO0FBR1hna0QsdUJBQUtqdEQsYUFBYSxXQUFXLEdBQUc7QUFDaEN1RiwwQkFBUXBHLFNBQVNZLGNBQWMsT0FBTztBQUN0Q3dGLHdCQUFNcEYsWUFBWWhCLFNBQVNxQixlQUFBLEdBQUFsQixPQUFrQmd1RCxLQUFLL25ELE9BQUssR0FBQSxDQUFHLENBQUM7QUFDM0QwbkQsdUJBQUs5c0QsWUFBWW9GLEtBQUs7QUFDdEIsd0JBQU0wb0QsV0FBVzl1RCxTQUFTWSxjQUFjLEtBQUs7QUFDN0NrdUQsMkJBQVN0b0QsTUFBTXVvRCxjQUFjO0FBQzdCLHdCQUFNQyxTQUFTQSxDQUFDQyxTQUFTQyxjQUFjO0FBQ3RDLDBCQUFNQyxhQUFhbnZELFNBQVNZLGNBQWMsT0FBTztBQUNqRHV1RCwrQkFBVzNvRCxNQUFNZzlCLGNBQWM7QUFDL0IyckIsK0JBQVczb0QsTUFBTUksVUFBVTtBQUMzQiwwQkFBTThlLFFBQVExbEIsU0FBU1ksY0FBYyxPQUFPO0FBQzVDOGtCLDBCQUFNN2tCLGFBQWEsUUFBUSxVQUFVO0FBQ3JDNmtCLDBCQUFNN2tCLGFBQWEsTUFBQSxHQUFBVixPQUFTZ3VELEtBQUt6MUQsTUFBSSxHQUFBLEVBQUF5SCxPQUFJOHVELE9BQU8sQ0FBRTtBQUNsRHZwQywwQkFBTTdrQixhQUFhLFFBQUEsR0FBQVYsT0FBV2d1RCxLQUFLejFELE1BQUksR0FBQSxFQUFBeUgsT0FBSTh1RCxPQUFPLENBQUU7QUFDcEQsd0JBQUlYLFdBQVdBLFFBQVFwdEQsU0FBUyt0RCxPQUFPLEdBQUc7QUFDekN2cEMsNEJBQU0xSyxVQUFVO29CQUNqQjtBQUVBLHdCQUNDbXpDLEtBQUt6MUQsU0FBUyxzQkFDZDQxRCxXQUNBQSxRQUFRcHRELFNBQVNpTyxPQUFPQyxTQUFTNi9DLFNBQVMsRUFBRSxDQUFDLEdBQzVDO0FBQ0R2cEMsNEJBQU0xSyxVQUFVO29CQUNqQjtBQUNBbTBDLCtCQUFXbnVELFlBQVkwa0IsS0FBSztBQUM1QnlwQywrQkFBV251RCxZQUFZaEIsU0FBU3FCLGVBQWU2dEQsU0FBUyxDQUFDO0FBQ3pESiw2QkFBUzl0RCxZQUFZbXVELFVBQVU7a0JBQ2hDO0FBQ0Esc0JBQUloQixLQUFLMUIsaUJBQWlCO0FBQUEsd0JBQUEyQyxjQUFBM3JELDJCQUVOMHFELEtBQUsxQixlQUFBLEdBQUE0QztBQUFBLHdCQUFBO0FBQXhCLDJCQUFBRCxZQUFBenJELEVBQUEsR0FBQSxFQUFBMHJELFVBQUFELFlBQUF4ckQsRUFBQSxHQUFBQyxRQUF5QztBQUFBLDhCQUE5QnpELE9BQUFpdkQsUUFBQXRyRDtBQUNWaXJELCtCQUFPNXVELE1BQU0rdEQsS0FBS3BDLFVBQVUzckQsSUFBSSxDQUFDO3NCQUNsQztvQkFBQSxTQUFBNEQsS0FBQTtBQUFBb3JELGtDQUFBM3RELEVBQUF1QyxHQUFBO29CQUFBLFVBQUE7QUFBQW9yRCxrQ0FBQW5yRCxFQUFBO29CQUFBO2tCQUNELE9BQU87QUFFTiw2QkFBQXFyRCxPQUFBLEdBQUFDLG9CQUFtQzk4QyxPQUFPQyxRQUFReTdDLEtBQUtwQyxTQUFTLEdBQUF1RCxPQUFBQyxrQkFBQTUyRCxRQUFBMjJELFFBQUc7QUFBbkUsNEJBQVcsQ0FBQ0wsU0FBU0MsU0FBUyxJQUFBSyxrQkFBQUQsSUFBQTtBQUM3Qk4sNkJBQU9DLFNBQVNDLFNBQVM7b0JBQzFCO2tCQUNEO0FBQ0FwQix1QkFBSzlzRCxZQUFZOHRELFFBQVE7QUFDekI7Z0JBQ0Q7Z0JBQ0EsS0FBSyxjQUFjO0FBRWxCaEIsdUJBQUt0bkQsTUFBTStuRCxZQUFZO0FBQ3ZCVCx1QkFBS3RuRCxNQUFNZ29ELGVBQWU7QUFDMUJwb0QsMEJBQVFwRyxTQUFTWSxjQUFjLE9BQU87QUFDdEN3Rix3QkFBTXZGLGFBQWEsT0FBT3N0RCxLQUFLejFELElBQUk7QUFDbkMwTix3QkFBTXBGLFlBQVloQixTQUFTcUIsZUFBQSxHQUFBbEIsT0FBa0JndUQsS0FBSy9uRCxPQUFLLEdBQUEsQ0FBRyxDQUFDO0FBQzNEMG5ELHVCQUFLOXNELFlBQVlvRixLQUFLO0FBQ3RCeW5ELHNCQUFJN3NELFlBQVk4c0QsSUFBSTtBQUVwQkEseUJBQU85dEQsU0FBU1ksY0FBYyxJQUFJO0FBQ2xDa3RELHVCQUFLdG5ELE1BQU1nb0QsZUFBZTtBQUMxQix3QkFBTWdCLG1CQUFtQnh2RCxTQUFTWSxjQUFjLFFBQVE7QUFDeEQ0dUQsbUNBQWlCM3VELGFBQWEsTUFBTXN0RCxLQUFLejFELElBQUk7QUFDN0M4MkQsbUNBQWlCM3VELGFBQWEsUUFBUXN0RCxLQUFLejFELElBQUk7QUFDL0M4MkQsbUNBQWlCM3VELGFBQWEsUUFBUSxRQUFRO0FBQzlDMnVELG1DQUFpQnJsQixpQkFBaUIsU0FBU3B5QyxRQUFRd0YsT0FBT2t5RCxXQUFXN29ELFNBQVMsS0FBSztBQUVuRmxQLG9CQUFFODNELGdCQUFnQixFQUFFeDhDLEtBQUs7b0JBQ3hCalAsT0FBT3VxRDtvQkFDUEg7a0JBQ0QsQ0FBQztBQUNEcUIsbUNBQWlCeHVELFlBQVloQixTQUFTcUIsZUFBZXZKLE9BQU9nSCxNQUFNLFFBQVEsTUFBTSxDQUFDLENBQUM7QUFDbEZndkQsdUJBQUs5c0QsWUFBWXd1RCxnQkFBZ0I7QUFDakM7Z0JBQ0Q7Z0JBQ0E7QUFDQyx1QkFBS2x5RCxHQUFHdUYsT0FBQSwwQkFBQTFDLE9BQWlDZ3VELEtBQUt6MUQsSUFBSSxHQUFJO29CQUNyRG1ILE1BQU07b0JBQ05pRCxLQUFLO2tCQUNOLENBQUM7QUFDRDtjQUNGO0FBQ0ErcUQsa0JBQUk3c0QsWUFBWThzRCxJQUFJO0FBRXBCQSxxQkFBTzl0RCxTQUFTWSxjQUFjLElBQUk7QUFDbENrdEQsbUJBQUt0bkQsTUFBTStqQyxXQUFXO0FBQ3RCdWpCLG1CQUFLdG5ELE1BQU1rOUIsUUFBUTtBQUNuQixrQkFBSXlxQixLQUFLckMsU0FBUztBQUVqQmdDLHFCQUFLbHdCLFlBQVl1d0IsS0FBS3JDLFFBQ3BCaGhELFFBQ0EsY0FBQSxjQUFBM0ssT0FDYzdDLEdBQUcwRSxLQUFLTSxPQUFPLFdBQVcsR0FBQyw2Q0FBQSxDQUMxQyxFQUNDd0ksUUFDQSxnQkFBQSxZQUFBM0ssT0FDWTdDLEdBQUcwRSxLQUFLTSxPQUFPLEVBQUUsR0FBQywyQ0FBQSxDQUMvQjtjQUNGO0FBRUEsa0JBQUk2ckQsS0FBS3R1RCxTQUFTLGNBQWM7QUFDL0Isc0JBQU02dkQsWUFBWTF2RCxTQUFTWSxjQUFjLEdBQUc7QUFDNUM4dUQsMEJBQVU3dUQsYUFBYSxRQUFRLFdBQVc7QUFDMUM2dUQsMEJBQVU3dUQsYUFBYSxNQUFBLHdCQUFBVixPQUE4Qmd1RCxLQUFLejFELElBQUksQ0FBRTtBQUNoRWczRCwwQkFBVXZsQixpQkFBaUIsU0FBU3B5QyxRQUFRd0YsT0FBT295RCxlQUFlLEtBQUs7QUFDdkVELDBCQUFVbHBELE1BQU1vcEQsV0FBVztBQUMzQkYsMEJBQVVscEQsTUFBTXFwRCxTQUFTO0FBQ3pCSCwwQkFBVTF1RCxZQUFZaEIsU0FBU3FCLGVBQWV2SixPQUFPZ0gsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ3ZFZ3ZELHFCQUFLOXNELFlBQVkwdUQsU0FBUztjQUMzQjtBQUNBN0Isa0JBQUk3c0QsWUFBWThzRCxJQUFJO0FBQ3BCOTdDLHdCQUFVaFIsWUFBWTZzRCxHQUFHO0FBQ3pCLHFCQUFPO1lBQ1IsQ0FBQztBQUNELG1CQUFPO1VBQ1IsQ0FBQztBQUNELGdCQUFNaUMsWUFBWTl2RCxTQUFTWSxjQUFjLEtBQUs7QUFDOUNrdkQsb0JBQVVqdkQsYUFBYSxNQUFNLDJCQUEyQjtBQUN4RGl2RCxvQkFBVXRwRCxNQUFNNm5ELGtCQUFrQjtBQUNsQ3lCLG9CQUFVdHBELE1BQU1vd0MsVUFBVTtBQUMxQixnQkFBTW1aLGVBQWUvdkQsU0FBU1ksY0FBYyxRQUFRO0FBQ3BEbXZELHVCQUFhbHZELGFBQWEsTUFBTSx1QkFBdUI7QUFDdkRrdkQsdUJBQWFsdkQsYUFBYSxRQUFRLFFBQVE7QUFDMUNrdkQsdUJBQWEvdUQsWUFBWWhCLFNBQVNxQixlQUFldkosT0FBT2dILE1BQU0sUUFBUSxNQUFNLENBQUMsQ0FBQztBQUM5RWd4RCxvQkFBVTl1RCxZQUFZK3VELFlBQVk7QUFDbEMsZ0JBQU1DLGFBQWFod0QsU0FBU1ksY0FBYyxNQUFNO0FBQ2hEb3ZELHFCQUFXbHZELFlBQVk7QUFDdkJrdkQscUJBQVd4cEQsTUFBTXltRCxhQUFhO0FBQzlCK0MscUJBQVd4cEQsTUFBTStqQyxXQUFXO0FBQzVCLGdCQUFNMGxCLFVBQVVqd0QsU0FBU1ksY0FBYyxHQUFHO0FBQzFDcXZELGtCQUFRcHZELGFBQWEsUUFBUSxlQUFlO0FBQzVDb3ZELGtCQUFRcHZELGFBQWEsTUFBTSx5QkFBeUI7QUFDcERvdkQsa0JBQVE5bEIsaUJBQWlCLFNBQVNweUMsUUFBUXdGLE9BQU8yeUQsZUFBZSxLQUFLO0FBQ3JFRCxrQkFBUWp2RCxZQUFZaEIsU0FBU3FCLGVBQWV2SixPQUFPZ0gsTUFBTSxRQUFRLE1BQU0sQ0FBQyxDQUFDO0FBQ3pFa3hELHFCQUFXaHZELFlBQVlpdkQsT0FBTztBQUM5Qkgsb0JBQVU5dUQsWUFBWWd2RCxVQUFVO0FBQ2hDdkMsc0JBQVl6c0QsWUFBWTh1RCxTQUFTO0FBRWpDLGNBQUloNEQsT0FBT3M5QyxTQUFTK2EsTUFBTTtBQUN6QixrQkFBTUMsTUFBTXQ0RCxPQUFPczlDLFNBQVMrYTtBQUM1QnI0RCxtQkFBT3M5QyxTQUFTK2EsT0FBTztBQUN2QnI0RCxtQkFBT3M5QyxTQUFTK2EsT0FBT0M7VUFDeEI7UUFDRCxXQUNDOXlELEdBQUdDLE9BQU9DLElBQUksbUJBQW1CLE1BQU1GLEdBQUdDLE9BQU9DLElBQUksZ0JBQWdCLEVBQUUyZSxRQUN2RTdlLEdBQUdDLE9BQU9DLElBQUksU0FBUyxFQUFFK04sUUFBUWpPLEdBQUdDLE9BQU9DLElBQUksWUFBWSxDQUFDLE1BQU0sS0FDbEVGLEdBQUdDLE9BQU9DLElBQUksWUFBWSxFQUFFa08sTUFBTSxFQUFFLE1BQU0sT0FDekM7QUFDRCxnQkFBTTJrRCxNQUFNcndELFNBQVNZLGNBQWMsS0FBSztBQUV4Q3l2RCxjQUFJeHZELGFBQWEsTUFBTSwwQkFBMEI7QUFDakQsY0FBSWtCO0FBQ0osZ0JBQU11dUQsaUJBQWlCaHpELEdBQUdDLE9BQ3hCQyxJQUFJLFlBQVksRUFDaEJrTyxNQUNBcE8sR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEVBQUUrdEIsWUFBWSxHQUFHLElBQUksR0FDL0NqdUIsR0FBR0MsT0FBT0MsSUFBSSxZQUFZLEVBQUUrdEIsWUFBWSxLQUFLLENBQzlDO0FBQ0QsY0FBSStrQyxtQkFBbUIsa0JBQWtCO0FBRXhDRCxnQkFBSXh2RCxhQUFhLFNBQVMsa0JBQWtCO0FBQzVDLGdCQUFJdkQsR0FBR0MsT0FBT0MsSUFBSSxhQUFhLElBQUksR0FBRztBQUVyQzZ5RCxrQkFBSXJ2RCxZQUNIaEIsU0FBU3FCLGVBQ1J2SixPQUFPZ0gsTUFDTiwwQkFDQSx3QkFDRCxDQUNELENBQ0Q7WUFDRCxPQUFPO0FBRU51eEQsa0JBQUlydkQsWUFDSGhCLFNBQVNxQixlQUNSdkosT0FBT2dILE1BQU0sc0JBQXNCLG9CQUFvQixDQUN4RCxDQUNEO1lBQ0Q7QUFDQWlELG1CQUFPL0IsU0FBU1ksY0FBYyxHQUFHO0FBQ2pDbUIsaUJBQUtsQixhQUFhLFFBQVF2RCxHQUFHMEUsS0FBS00sT0FBT3ZLLFFBQVF1SCxRQUFRLFlBQVksQ0FBQyxDQUFDO0FBQ3ZFeUMsaUJBQUtmLFlBQVloQixTQUFTcUIsZUFBZXZKLE9BQU9nSCxNQUFNLGlCQUFpQixlQUFlLENBQUMsQ0FBQztBQUN4RnV4RCxnQkFBSXJ2RCxZQUFZZSxJQUFJO0FBQ3BCc3VELGdCQUFJcnZELFlBQVloQixTQUFTcUIsZUFBZXZKLE9BQU9nSCxNQUFNLGFBQWEsV0FBVyxDQUFDLENBQUM7QUFDL0VwSCxjQUFFMjRELEdBQUcsRUFBRTU0QyxZQUFZN2YsTUFBTXlILEtBQUssYUFBYSxDQUFDO1VBQzdDLFdBQVcsQ0FBQyxVQUFVLGVBQWUsVUFBVSxXQUFXLFFBQVEsRUFBRTZCLFNBQVNvdkQsY0FBYyxHQUFHO0FBRTdGRCxnQkFBSXh2RCxhQUFhLFNBQVMscUJBQXFCO0FBQy9Dd3ZELGdCQUFJcnZELFlBQ0hoQixTQUFTcUIsZUFDUnZKLE9BQU9nSCxNQUFNLHNCQUFzQixvQkFBb0IsQ0FDeEQsQ0FDRDtBQUNBaUQsbUJBQU8vQixTQUFTWSxjQUFjLEdBQUc7QUFDakNtQixpQkFBS2xCLGFBQWEsUUFBUXZELEdBQUcwRSxLQUFLTSxPQUFPdkssUUFBUXVILFFBQVEsWUFBWSxDQUFDLENBQUM7QUFDdkV5QyxpQkFBS2YsWUFBWWhCLFNBQVNxQixlQUFldkosT0FBT2dILE1BQU0saUJBQWlCLGVBQWUsQ0FBQyxDQUFDO0FBQ3hGdXhELGdCQUFJcnZELFlBQVllLElBQUk7QUFDcEJzdUQsZ0JBQUlydkQsWUFBWWhCLFNBQVNxQixlQUFlLEdBQUcsQ0FBQztBQUM1QzNKLGNBQUUyNEQsR0FBRyxFQUFFNTRDLFlBQVk3ZixNQUFNeUgsS0FBSyxhQUFhLENBQUM7VUFDN0M7UUFDRDtNQUNEO0FBRUF0SCxjQUFRd0YsT0FBT2t5RCxhQUFhLENBQUM7QUFDN0IxM0QsY0FBUXdGLE9BQU9reUQsV0FBV2MsU0FBUyxDQUFDQyxVQUFVenNELE9BQU9xQyxVQUFVO0FBQzlELGNBQU1xcUQsWUFBWXp3RCxTQUFTWSxjQUFjLElBQUk7QUFFN0MsWUFBSTh2RCxZQUFZMXdELFNBQVNZLGNBQWMsSUFBSTtBQUMzQyxjQUFNK3ZELGVBQWUzd0QsU0FBU1ksY0FBYyxRQUFRO0FBQ3BEK3ZELHFCQUFhOXZELGFBQWEsUUFBUSxRQUFRO0FBQzFDOHZELHFCQUFheG1CLGlCQUNaLFNBQ0EsTUFBTTtBQUNMenlDLFlBQUUrNEQsU0FBUyxFQUFFMTdDLE9BQU87UUFDckIsR0FDQSxLQUNEO0FBQ0E0N0MscUJBQWE3bkQsY0FBYztBQUMzQjRuRCxrQkFBVTF2RCxZQUFZMnZELFlBQVk7QUFDbENGLGtCQUFVenZELFlBQVkwdkQsU0FBUztBQUUvQkEsb0JBQVkxd0QsU0FBU1ksY0FBYyxJQUFJO0FBQ3ZDLFlBQUlrSixRQUFROUosU0FBU1ksY0FBYyxPQUFPO0FBQzFDa0osY0FBTWpKLGFBQWEsUUFBUSxNQUFNO0FBQ2pDaUosY0FBTWhKLFlBQVk7QUFDbEJnSixjQUFNdEQsTUFBTTJPLFFBQVE7QUFDcEIsWUFBSXBSLE9BQU87QUFDVitGLGdCQUFNakosYUFBYSxTQUFTa0QsS0FBSztRQUNsQztBQUNBMnNELGtCQUFVMXZELFlBQVk4SSxLQUFLO0FBQzNCMm1ELGtCQUFVenZELFlBQVkwdkQsU0FBUztBQUUvQkEsb0JBQVkxd0QsU0FBU1ksY0FBYyxJQUFJO0FBQ3ZDa0osZ0JBQVE5SixTQUFTWSxjQUFjLE9BQU87QUFDdENrSixjQUFNakosYUFBYSxRQUFRLE1BQU07QUFDakNpSixjQUFNaEosWUFBWTtBQUNsQmdKLGNBQU10RCxNQUFNMk8sUUFBUTtBQUNwQixZQUFJL08sT0FBTztBQUNWMEQsZ0JBQU1qSixhQUFhLFNBQVN1RixLQUFLO1FBQ2xDO0FBQ0FzcUQsa0JBQVUxdkQsWUFBWThJLEtBQUs7QUFDM0IybUQsa0JBQVV6dkQsWUFBWTB2RCxTQUFTO0FBQy9CRixpQkFBU3h2RCxZQUFZeXZELFNBQVM7TUFDL0I7QUFDQTE0RCxjQUFRd0YsT0FBT2t5RCxXQUFXN29ELFVBQVduRixPQUFNO0FBQUEsWUFBQW12RCx1QkFBQUM7QUFDMUMsY0FBTUMsY0FBY3A1RCxFQUFFK0osRUFBRTRHLE1BQU07QUFDOUIsY0FBTTBvRCxXQUFXRCxZQUFZOTlDLEtBQUssT0FBTztBQUN6QyxjQUFNZytDLFVBQVVGLFlBQVk5OUMsS0FBSyxNQUFNO0FBQ3ZDLGNBQU1sRSxTQUFTLElBQUk5VyxTQUFTMk4sYUFBYSxLQUFLLEdBQUc7QUFDakRtSixlQUFPbEosU0FBU29yRCxRQUFRNXFELEtBQUs7QUFDN0IwSSxlQUFPakosY0FBYy9OLE9BQU9nSCxNQUFNLGVBQWUsYUFBYSxDQUFDO0FBQy9ELGNBQU1teUQsZ0JBQWdCanhELFNBQVNZLGNBQWMsS0FBSztBQUNsRCxjQUFNNHZELFdBQVd4d0QsU0FBU1ksY0FBYyxPQUFPO0FBQy9DNHZELGlCQUFTMXZELFlBQVk7QUFDckIwdkQsaUJBQVNocUQsTUFBTXFwRCxTQUFTO0FBQ3hCVyxpQkFBU2hxRCxNQUFNMk8sUUFBUTtBQUN2QixjQUFNKzdDLFdBQVdseEQsU0FBU1ksY0FBYyxPQUFPO0FBRS9DLFlBQUl1d0QsUUFBUW54RCxTQUFTWSxjQUFjLElBQUk7QUFFdkMsWUFBSXd3RCxRQUFRcHhELFNBQVNZLGNBQWMsSUFBSTtBQUN2Q3d3RCxjQUFNNXFELE1BQU0yTyxRQUFRO0FBQ3BCZzhDLGNBQU1ud0QsWUFBWW93RCxLQUFLO0FBRXZCQSxnQkFBUXB4RCxTQUFTWSxjQUFjLElBQUk7QUFDbkN3d0QsY0FBTTVxRCxNQUFNMk8sUUFBUTtBQUNwQmk4QyxjQUFNdG9ELGVBQUE4bkQsd0JBQWNJLFFBQVEvRSwwQkFBQSxRQUFBMkUsMEJBQUEsU0FBQUEsd0JBQXdCOTRELE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUMzRXF5RCxjQUFNbndELFlBQVlvd0QsS0FBSztBQUV2QkEsZ0JBQVFweEQsU0FBU1ksY0FBYyxJQUFJO0FBQ25Dd3dELGNBQU01cUQsTUFBTTJPLFFBQVE7QUFDcEJpOEMsY0FBTXRvRCxlQUFBK25ELHdCQUFjRyxRQUFROUUsMEJBQUEsUUFBQTJFLDBCQUFBLFNBQUFBLHdCQUF3Qi80RCxPQUFPZ0gsTUFBTSxNQUFNLElBQUk7QUFDM0VxeUQsY0FBTW53RCxZQUFZb3dELEtBQUs7QUFDdkJGLGlCQUFTbHdELFlBQVltd0QsS0FBSztBQUUxQixZQUFJRSxTQUFTO0FBQUEsWUFBQUMsY0FBQTd0RCwyQkFDR3N0RCxRQUFBLEdBQUFRO0FBQUEsWUFBQTtBQUFoQixlQUFBRCxZQUFBM3RELEVBQUEsR0FBQSxFQUFBNHRELFVBQUFELFlBQUExdEQsRUFBQSxHQUFBQyxRQUEwQjtBQUFBLGtCQUFmc0ksSUFBQW9sRCxRQUFBeHREO0FBQ1ZzdEQscUJBQVM7QUFDVHQ1RCxvQkFBUXdGLE9BQU9reUQsV0FBV2MsT0FBT1csVUFBVS9rRCxFQUFFcEksT0FBT29JLEVBQUUvRixLQUFLO1VBQzVEO1FBQUEsU0FBQXBDLEtBQUE7QUFBQXN0RCxzQkFBQTd2RCxFQUFBdUMsR0FBQTtRQUFBLFVBQUE7QUFBQXN0RCxzQkFBQXJ0RCxFQUFBO1FBQUE7QUFFQSxZQUFJLENBQUNvdEQsUUFBUTtBQUNadDVELGtCQUFRd0YsT0FBT2t5RCxXQUFXYyxPQUFPVyxRQUFRO1FBQzFDO0FBRUEsY0FBTU0sV0FBV3h4RCxTQUFTWSxjQUFjLE9BQU87QUFDL0N1d0QsZ0JBQVFueEQsU0FBU1ksY0FBYyxJQUFJO0FBQ25DLGNBQU02d0QsUUFBUXp4RCxTQUFTWSxjQUFjLElBQUk7QUFDekM2d0QsY0FBTTV3RCxhQUFhLFdBQVcsR0FBRztBQUNqQyxjQUFNNndELFlBQVkxeEQsU0FBU1ksY0FBYyxRQUFRO0FBQ2pEOHdELGtCQUFVbHJELE1BQU1tckQsV0FBVztBQUMzQkQsa0JBQVU3d0QsYUFBYSxRQUFRLFFBQVE7QUFDdkM2d0Qsa0JBQVV2bkIsaUJBQ1QsU0FDQSxNQUFNO0FBQ0xweUMsa0JBQVF3RixPQUFPa3lELFdBQVdjLE9BQU9XLFFBQVE7UUFDMUMsR0FDQSxLQUNEO0FBQ0FRLGtCQUFVNW9ELGNBQWM7QUFDeEIyb0QsY0FBTXp3RCxZQUFZMHdELFNBQVM7QUFDM0JQLGNBQU1ud0QsWUFBWXl3RCxLQUFLO0FBQ3ZCRCxpQkFBU3h3RCxZQUFZbXdELEtBQUs7QUFDMUJYLGlCQUFTeHZELFlBQVlrd0QsUUFBUTtBQUM3QlYsaUJBQVN4dkQsWUFBWXd3RCxRQUFRO0FBQzdCUCxzQkFBY2p3RCxZQUFZd3ZELFFBQVE7QUFFbEMsWUFBSW9CLFNBQVM1eEQsU0FBU1ksY0FBYyxRQUFRO0FBQzVDZ3hELGVBQU8vd0QsYUFBYSxRQUFRLFFBQVE7QUFDcEMrd0QsZUFBT3puQixpQkFDTixTQUNBLE1BQU07QUFDTHB5QyxrQkFBUXdGLE9BQU9reUQsV0FBVzdsQyxLQUFLa25DLGFBQWFJLFFBQVE7QUFDcERwaUQsaUJBQU95SSxNQUFNO1FBQ2QsR0FDQSxLQUNEO0FBQ0FxNkMsZUFBTzlvRCxjQUFjaFIsT0FBT2dILE1BQU0sUUFBUSxNQUFNO0FBQ2hEbXlELHNCQUFjandELFlBQVk0d0QsTUFBTTtBQUNoQ0EsaUJBQVM1eEQsU0FBU1ksY0FBYyxRQUFRO0FBQ3hDZ3hELGVBQU8vd0QsYUFBYSxRQUFRLFFBQVE7QUFDcEMrd0QsZUFBT3puQixpQkFDTixTQUNBLE1BQU07QUFDTHB5QyxrQkFBUXdGLE9BQU9reUQsV0FBV29DLE1BQU1mLGFBQWFJLFFBQVE7UUFDdEQsR0FDQSxLQUNEO0FBQ0FVLGVBQU85b0QsY0FBY2hSLE9BQU9nSCxNQUFNLE1BQU0sSUFBSTtBQUM1Q215RCxzQkFBY2p3RCxZQUFZNHdELE1BQU07QUFDaENBLGlCQUFTNXhELFNBQVNZLGNBQWMsUUFBUTtBQUN4Q2d4RCxlQUFPL3dELGFBQWEsUUFBUSxRQUFRO0FBQ3BDK3dELGVBQU96bkIsaUJBQ04sU0FDQSxNQUFNO0FBQ0xyN0IsaUJBQU95SSxNQUFNO1FBQ2QsR0FDQSxLQUNEO0FBQ0FxNkMsZUFBTzlvRCxjQUFjO0FBQ3JCbW9ELHNCQUFjandELFlBQVk0d0QsTUFBTTtBQUNoQzlpRCxlQUFPbkksV0FBV3NxRCxhQUFhO0FBQy9CbmlELGVBQU9sSSxRQUFRO01BQ2hCO0FBR0E3TyxjQUFRd0YsT0FBT2t5RCxXQUFXb0MsUUFBUSxDQUFDRCxRQUFRRSxVQUFVO0FBRXBELGNBQU1DLFVBQVVyNkQsRUFBRWs2RCxNQUFNO0FBQ3hCLGNBQU1aLFVBQVVlLFFBQVEvK0MsS0FBSyxNQUFNO0FBQ25DLGNBQU1nL0MsV0FBV0QsUUFBUS8rQyxLQUFLLE9BQU87QUFDckNqYixnQkFBUXdGLE9BQU8wMEQsVUFBVWpCLE9BQU87QUFFaEMsY0FBTWtCLFNBQVN4NkQsRUFBRW82RCxLQUFLO0FBQ3RCSSxlQUFPN3lELEtBQUssSUFBSSxFQUFFcU0sTUFBTSxDQUFDLEVBQUVxSixPQUFPO0FBRWxDLGNBQU1nOEMsV0FBV2dCLFFBQVEvK0MsS0FBSyxPQUFPO0FBQUEsWUFBQW0vQyxjQUFBMXVELDJCQUNyQnN0RCxRQUFBLEdBQUFxQjtBQUFBLFlBQUE7QUFBaEIsZUFBQUQsWUFBQXh1RCxFQUFBLEdBQUEsRUFBQXl1RCxVQUFBRCxZQUFBdnVELEVBQUEsR0FBQUMsUUFBMEI7QUFBQSxrQkFBZnNJLElBQUFpbUQsUUFBQXJ1RDtBQUNWaE0sb0JBQVF3RixPQUFPa3lELFdBQVdjLE9BQU91QixPQUFPM2xELEVBQUVwSSxPQUFPb0ksRUFBRS9GLEtBQUs7VUFDekQ7UUFBQSxTQUFBcEMsS0FBQTtBQUFBbXVELHNCQUFBMXdELEVBQUF1QyxHQUFBO1FBQUEsVUFBQTtBQUFBbXVELHNCQUFBbHVELEVBQUE7UUFBQTtBQUVBOHRELGdCQUFRLytDLEtBQUssU0FBU2cvQyxRQUFRO01BQy9CO0FBQ0FqNkQsY0FBUXdGLE9BQU9reUQsV0FBVzdsQyxPQUFPLENBQUNnb0MsUUFBUUUsVUFBVTtBQUNuRCxjQUFNcnJELFNBQVMsQ0FBQTtBQUNmLFlBQUlvUSxVQUFVLENBQUM7QUFDZm5mLFVBQUVvNkQsS0FBSyxFQUNMenlELEtBQUssb0JBQW9CLEVBQ3pCbW1CLEtBQUssQ0FBQzZzQyxVQUFVdm9ELFVBQVU7QUFDMUIsY0FBSXBTLEVBQUVvUyxLQUFLLEVBQUVrOUMsU0FBUyxpQ0FBaUMsR0FBRztBQUN6RG53QyxzQkFBVTtjQUNUOVMsT0FBTytGLE1BQU0vRjtZQUNkO1VBQ0QsT0FBTztBQUNOOFMsb0JBQVF6USxRQUFRMEQsTUFBTS9GO0FBRXRCLGdCQUFJOFMsUUFBUTlTLFNBQVM4UyxRQUFRelEsT0FBTztBQUNuQ0sscUJBQU9BLE9BQU85TixNQUFNLElBQUlrZTtZQUN6QjtVQUNEO1FBQ0QsQ0FBQztBQUNGbmYsVUFBRWs2RCxNQUFNLEVBQUU1K0MsS0FBSyxTQUFTdk0sTUFBTTtNQUMvQjtBQUVBMU8sY0FBUXdGLE9BQU9veUQsZ0JBQWlCbHVELE9BQU07QUFDckMsY0FBTTZ3RCxhQUFhN3dELEVBQUU0RyxPQUFPMUksR0FBRytMLE1BQU0sRUFBRTtBQUV2Q2hVLFVBQUVLLFFBQVF3RixPQUFPZ2IsUUFBUSxFQUFFaU4sS0FBSyxDQUFDa29DLFlBQVlqaEMsWUFBWTtBQUN4RCxjQUFJQSxRQUFRMVIsVUFBVzBSLFFBQVF1L0IsYUFBYSxDQUFDaDBELFNBQVNnQixhQUFjO0FBQ25FLG1CQUFPO1VBQ1I7QUFFQSxjQUFJdTVELFVBQVU7QUFDZDc2RCxZQUFFKzBCLFFBQVFrL0IsV0FBVyxFQUFFbm1DLEtBQUssQ0FBQzBvQyxTQUFTQyxTQUFTO0FBQzlDLGdCQUFJQSxLQUFLejFELFNBQVM0NUQsWUFBWTtBQUM3QixxQkFBTztZQUNSO0FBRUF2NkQsb0JBQVF3RixPQUFPMDBELFVBQVU5RCxJQUFJO0FBQzdCb0Usc0JBQVU7QUFDVixtQkFBTztVQUNSLENBQUM7QUFFRCxjQUFJQSxTQUFTO0FBQ1osbUJBQU87VUFDUjtRQUNELENBQUM7QUFFRCxlQUFPO01BQ1I7QUFFQXg2RCxjQUFRd0YsT0FBTzAwRCxZQUFhOUQsVUFBUztBQUNwQyxnQkFBUUEsS0FBS3R1RCxNQUFBO1VBQ1osS0FBSztBQUNKRyxxQkFBU0MsY0FBQSxJQUFBRSxPQUFrQmd1RCxLQUFLejFELElBQUksQ0FBRSxFQUFFc2lCLFVBQVVqakIsUUFBUWEsY0FBY3UxRCxLQUFLejFELElBQUk7QUFDakY7VUFDRCxLQUFLO1VBQ0wsS0FBSztVQUNMLEtBQUs7QUFDSnNILHFCQUFTQyxjQUFBLElBQUFFLE9BQWtCZ3VELEtBQUt6MUQsSUFBSSxDQUFFLEVBQUVxTCxRQUFRaE0sUUFBUWEsY0FBY3UxRCxLQUFLejFELElBQUk7QUFDL0U7VUFDRCxLQUFLO0FBQ0oscUJBQUE4NUQsT0FBQSxHQUFBQyxvQkFBd0JoZ0QsT0FBT0MsUUFBUXk3QyxLQUFLcEMsU0FBUyxHQUFBeUcsT0FBQUMsa0JBQUE5NUQsUUFBQTY1RCxRQUFHO0FBQXhELG9CQUFXLENBQUN2RCxPQUFPLElBQUF3RCxrQkFBQUQsSUFBQTtBQUNsQixrQkFBSXh5RCxTQUFTQyxjQUFBLElBQUFFLE9BQWtCZ3VELEtBQUt6MUQsTUFBSSxHQUFBLEVBQUF5SCxPQUFJOHVELE9BQU8sQ0FBRSxHQUFHO0FBQ3ZEanZELHlCQUFTQyxjQUFBLElBQUFFLE9BQWtCZ3VELEtBQUt6MUQsTUFBSSxHQUFBLEVBQUF5SCxPQUFJOHVELE9BQU8sQ0FBRSxFQUFFajBDLFVBQ2xEampCLFFBQVFhLGNBQWN1MUQsS0FBS3oxRCxJQUFJLEVBQUV3SSxTQUFTK3RELE9BQU87Y0FDbkQ7WUFDRDtBQUNBO1VBQ0QsS0FBSztBQUNKdjNELGNBQUVzSSxTQUFTQyxjQUFBLElBQUFFLE9BQWtCZ3VELEtBQUt6MUQsSUFBSSxDQUFFLENBQUMsRUFBRXNhLEtBQUssU0FBU2piLFFBQVFhLGNBQWN1MUQsS0FBS3oxRCxJQUFJLENBQUM7QUFDekY7VUFDRDtBQUNDLGlCQUFLNEUsR0FBR3VGLE9BQUEsbURBQUExQyxPQUEwRGd1RCxLQUFLejFELElBQUksR0FBSTtjQUM5RW1ILE1BQU07Y0FDTmlELEtBQUs7WUFDTixDQUFDO0FBQ0Q7UUFDRjtNQUNEO0FBQ0EvSyxjQUFRd0YsT0FBTzJ5RCxnQkFBZ0IsTUFBTTtBQUVwQ3g0RCxVQUFFSyxRQUFRd0YsT0FBT2diLFFBQVEsRUFBRWlOLEtBQUssQ0FBQ2tvQyxZQUFZamhDLFlBQVk7QUFDeEQsY0FBSUEsUUFBUTFSLFVBQVcwUixRQUFRdS9CLGFBQWEsQ0FBQ2gwRCxTQUFTZ0IsYUFBYztBQUNuRSxtQkFBTztVQUNSO0FBRUF0QixZQUFFKzBCLFFBQVFrL0IsV0FBVyxFQUFFbm1DLEtBQUssQ0FBQzBvQyxTQUFTQyxTQUFTO0FBQzlDLGdCQUFJLENBQUNBLEtBQUtuQyxhQUFhaDBELFNBQVNnQixhQUFhO0FBQzVDakIsc0JBQVF3RixPQUFPMDBELFVBQVU5RCxJQUFJO1lBQzlCO1VBQ0QsQ0FBQztBQUNELGlCQUFPO1FBQ1IsQ0FBQztBQUNELGVBQU87TUFDUjtBQUVBcDJELGNBQVF3RixPQUFPcXNCLE9BQVFub0IsT0FBTTtBQUM1QnpKLGlCQUFTdVUsT0FBT0MsS0FBS3hNLFNBQVNDLGNBQWMseUJBQXlCLENBQUM7QUFDdEUsY0FBTXl5RCxTQUFBLEdBQUF2eUQsT0FBWTdDLEdBQUdDLE9BQU9DLElBQUksdUJBQXVCLEVBQUVGLEdBQUdDLE9BQU9DLElBQUksZ0JBQWdCLEVBQUUyZSxJQUFJLEdBQUMsR0FBQSxFQUFBaGMsT0FBSTdDLEdBQUdDLE9BQU9DLElBQzNHLFlBQ0QsR0FBQyxvQkFBQTtBQUNELGNBQU1nYyxjQUFjLElBQUl4aEIsU0FBU3FMLEtBQUtrSCxLQUFLbW9ELFFBQVE1NkQsT0FBT2dILE1BQU0sWUFBWSxVQUFVLElBQUk0ekQsTUFBTTtBQUNoR2w1QyxvQkFBWUMsc0JBQXNCaFksRUFBRTRHLE1BQU07QUFDMUNtUixvQkFBWXhXLEtBQUtqTCxRQUFRd0YsT0FBT28xRCxVQUFVO0FBQzFDLGVBQU87TUFDUjtBQUNBNTZELGNBQVF3RixPQUFPbzFELGFBQWMvOUMsYUFBWTtBQUN4QyxjQUFNN08sT0FBTzZPLFFBQVErQyxzQkFBc0I7QUFHM0MsY0FBTWk3QyxZQUFZO1VBQ2pCQyxnQkFBZ0I7UUFDakI7QUFNQSxjQUFNQyxVQUFVQSxDQUFDeHhELEdBQUd5eEQsTUFBTTtBQUN6QixjQUFJL2dDLE1BQU11aEIsUUFBUWp5QyxDQUFDLEdBQUc7QUFDckIsZ0JBQUlBLEVBQUUzSSxXQUFXbzZELEVBQUVwNkQsUUFBUTtBQUMxQixxQkFBTztZQUNSO0FBQ0EySSxjQUFFZ1MsS0FBSztBQUNQeS9DLGNBQUV6L0MsS0FBSztBQUFBLGdCQUFBMC9DLGNBQUF2dkQsMkJBQ29CbkMsRUFBRW9SLFFBQVEsQ0FBQSxHQUFBdWdEO0FBQUEsZ0JBQUE7QUFBckMsbUJBQUFELFlBQUFydkQsRUFBQSxHQUFBLEVBQUFzdkQsVUFBQUQsWUFBQXB2RCxFQUFBLEdBQUFDLFFBQXdDO0FBQUEsc0JBQTdCLENBQUMrd0IsR0FBRzVyQixPQUFPLElBQUFpcUQsUUFBQWx2RDtBQUVyQixvQkFBSSxPQUFPaUYsWUFBWSxhQUFhQSxRQUFRNUMsVUFBVTJzRCxFQUFFbitCLENBQUMsRUFBRXh1QixTQUFTNEMsUUFBUWpGLFVBQVVndkQsRUFBRW4rQixDQUFDLEVBQUU3d0IsUUFBUTtBQUNsRyx5QkFBTztnQkFDUixXQUFXaUYsUUFBUTRnRCxTQUFTLE1BQU1tSixFQUFFbitCLENBQUMsRUFBRWcxQixTQUFTLEdBQUc7QUFDbEQseUJBQU87Z0JBQ1I7Y0FDRDtZQUFBLFNBQUE1bEQsS0FBQTtBQUFBZ3ZELDBCQUFBdnhELEVBQUF1QyxHQUFBO1lBQUEsVUFBQTtBQUFBZ3ZELDBCQUFBL3VELEVBQUE7WUFBQTtBQUNBLG1CQUFPO1VBQ1I7QUFDQSxpQkFBTzNDLE1BQU15eEQ7UUFDZDtBQUNBcjdELFVBQUVLLFFBQVF3RixPQUFPZ2IsUUFBUSxFQUFFaU4sS0FBSyxDQUFDa29DLFlBQVlqaEMsWUFBWTtBQUN4RCxjQUFJQSxRQUFRdS9CLGFBQWEsQ0FBQ2gwRCxTQUFTZ0IsYUFBYTtBQUMvQztVQUNEO0FBRUF0QixZQUFFKzBCLFFBQVFrL0IsV0FBVyxFQUFFbm1DLEtBQUssQ0FBQzBvQyxTQUFTQyxTQUFTO0FBQzlDLGdCQUFJK0U7QUFFSixnQkFBSSxDQUFDL0UsS0FBS25DLGFBQWFoMEQsU0FBU2dCLGFBQWE7QUFDNUMsa0JBQUksQ0FBQ3l6QixRQUFRMVIsUUFBUTtBQUNwQix3QkFBUW96QyxLQUFLdHVELE1BQUE7a0JBQ1osS0FBSztBQUVKcXpELGdDQUFZbnRELEtBQUtvb0QsS0FBS3oxRCxJQUFJLEVBQUVzaUI7QUFDNUI7a0JBQ0QsS0FBSztrQkFDTCxLQUFLO0FBQ0prNEMsZ0NBQVludEQsS0FBS29vRCxLQUFLejFELElBQUksRUFBRXFMO0FBQzVCO2tCQUNELEtBQUs7QUFFSm12RCxnQ0FBWS9qRCxPQUFPQyxTQUFTckosS0FBS29vRCxLQUFLejFELElBQUksRUFBRXFMLE9BQU8sRUFBRTtBQUNyRCx3QkFBSW9MLE9BQU9nSSxNQUFNKzdDLFNBQVMsR0FBRztBQUM1Qmw3RCwrQkFBU3VVLE9BQU9wVSxLQUNmTCxPQUFPZ0gsTUFBTSxNQUFNLElBQUksR0FBQSxHQUFBcUIsT0FDcEJySSxPQUFPZ0gsTUFBTSxPQUFPLEtBQUssSUFBSXF2RCxLQUFLejFELE1BQUksUUFBQSxFQUFBeUgsT0FBU2d1RCxLQUFLcHFELEtBQUssRUFBQTVELE9BQUdySSxPQUFPZ0gsTUFDckUseUJBQ0EsdUJBQ0QsQ0FBQyxDQUNGO0FBQ0FvMEQsa0NBQVk7b0JBQ2I7QUFDQTtrQkFDRCxLQUFLO0FBRUpBLGdDQUFZLENBQUE7QUFDWix3QkFBSS9FLEtBQUsxQixpQkFBaUI7QUFBQSwwQkFBQTBHLGNBQUExdkQsMkJBRU4wcUQsS0FBSzFCLGVBQUEsR0FBQTJHO0FBQUEsMEJBQUE7QUFBeEIsNkJBQUFELFlBQUF4dkQsRUFBQSxHQUFBLEVBQUF5dkQsVUFBQUQsWUFBQXZ2RCxFQUFBLEdBQUFDLFFBQXlDO0FBQUEsZ0NBQTlCekQsT0FBQWd6RCxRQUFBcnZEO0FBQ1YsOEJBQUlnQyxLQUFBLEdBQUE1RixPQUFRZ3VELEtBQUt6MUQsTUFBSSxHQUFBLEVBQUF5SCxPQUFJQyxJQUFJLENBQUEsRUFBSTRhLFNBQVM7QUFDekNrNEMsc0NBQVVBLFVBQVV2NkQsTUFBTSxJQUFJeUg7MEJBQy9CO3dCQUNEO3NCQUFBLFNBQUE0RCxLQUFBO0FBQUFtdkQsb0NBQUExeEQsRUFBQXVDLEdBQUE7c0JBQUEsVUFBQTtBQUFBbXZELG9DQUFBbHZELEVBQUE7c0JBQUE7b0JBQ0QsT0FBTztBQUVOLCtCQUFBb3ZELE9BQUEsR0FBQUMsb0JBQXdCN2dELE9BQU9DLFFBQVF5N0MsS0FBS3BDLFNBQVMsR0FBQXNILE9BQUFDLGtCQUFBMzZELFFBQUEwNkQsUUFBRztBQUF4RCw4QkFBVyxDQUFDcEUsT0FBTyxJQUFBcUUsa0JBQUFELElBQUE7QUFDbEIsNEJBQUl0dEQsS0FBQSxHQUFBNUYsT0FBUWd1RCxLQUFLejFELE1BQUksR0FBQSxFQUFBeUgsT0FBSTh1RCxPQUFPLENBQUEsRUFBSWowQyxTQUFTO0FBQzVDazRDLG9DQUFVQSxVQUFVdjZELE1BQU0sSUFBSXMyRDt3QkFDL0I7c0JBQ0Q7b0JBQ0Q7QUFDQTtrQkFDRCxLQUFLO0FBRUppRSxnQ0FBWXg3RCxFQUFFcU8sS0FBS29vRCxLQUFLejFELElBQUksQ0FBQyxFQUFFc2EsS0FBSyxPQUFPO0FBQzNDO2tCQUNEO0FBQ0MseUJBQUsxVixHQUFHdUYsT0FBQSw0QkFBQTFDLE9BQW1DZ3VELEtBQUt6MUQsSUFBSSxHQUFJO3NCQUN2RG1ILE1BQU07c0JBQ05pRCxLQUFLO29CQUNOLENBQUM7QUFDRDtnQkFDRjtjQUNELFdBQVcvSyxRQUFRd0gsT0FBTztBQUd6QjJ6RCw0QkFBWW43RCxRQUFRd0gsTUFBTTR1RCxLQUFLejFELElBQUk7Y0FDcEM7WUFDRDtBQUVBLGdCQUFJdzZELGNBQWMsVUFBYSxDQUFDSixRQUFRSSxXQUFXbjdELFFBQVFhLGNBQWN1MUQsS0FBS3oxRCxJQUFJLENBQUMsR0FBRztBQUNyRms2RCx3QkFBVXpFLEtBQUt6MUQsSUFBSSxJQUFJdzZEO1lBQ3hCO1VBQ0QsQ0FBQztRQUNGLENBQUM7QUFDRCxjQUFNSyxTQUFTO0FBQ2YsWUFBSTN6RCxPQUFBLE9BQUFPLE9BQWNvekQsUUFBTSxLQUFBLEVBQUFwekQsT0FBTXJJLE9BQU9nSCxNQUFBLHlGQUFBcUIsT0FDcURuSSxTQUFTc1csY0FBWSw0SEFBQSxHQUFBLDBGQUFBbk8sT0FDcEJuSSxTQUFTc1csY0FBWSw0SEFBQSxDQUNoSCxDQUFDO0FBQ0QxTyxnQkFDQztBQUNEQSxnQkFBUTR6RCxLQUFLQyxVQUFVYixXQUFXLE1BQU0sQ0FBQztBQUN6Q2h6RCxnQkFBQSxRQUFBTyxPQUFnQnJJLE9BQU9nSCxNQUFNLDhCQUE4Qiw0QkFBNEIsR0FBQyxPQUFBLEVBQUFxQixPQUFRb3pELFFBQU0sR0FBQTtBQUN0RzMrQyxnQkFBUStVLFlBQVkvcEIsSUFBSTtBQUN4QmdWLGdCQUFRdEgsZUFDUHhWLE9BQU9nSCxNQUFNLHNCQUFzQixvQkFBb0IsSUFDdEQ5RyxTQUFTc1csZUFDVHhXLE9BQU9nSCxNQUFNLFdBQVcsU0FBUyxDQUNuQztBQUNBOFYsZ0JBQVFySCxjQUFjeFYsUUFBUUssVUFBVTtBQUN4Q3djLGdCQUFRZ1osZ0JBQWdCLFVBQVU7QUFDbENoWixnQkFBUWdWLEtBQUs3eEIsUUFBUXdGLE9BQU9tMkQsV0FBVztNQUN4QztBQUNBMzdELGNBQVF3RixPQUFPbTJELGNBQWU5K0MsYUFBWTtBQUN6Q0EsZ0JBQVExSCxpQkFBaUIsRUFBRThMLEtBQUssSUFBSTtBQUNwQyxjQUFNMjZDLFlBQVkzekQsU0FBU1ksY0FBYyxLQUFLO0FBQzlDK3lELGtCQUFVN3lELFlBQVk7QUFDdEI2eUQsa0JBQVVudEQsTUFBTStqQyxXQUFXO0FBQzNCb3BCLGtCQUFVbnRELE1BQU13bkQsWUFBWTtBQUM1QjJGLGtCQUFVLzFCLFlBQUEsU0FBQXo5QixPQUFxQnJJLE9BQU9nSCxNQUNyQyxzQkFDQSxvQkFDRCxHQUFDLGFBQUEsRUFBQXFCLE9BQWNySSxPQUFPZ0gsTUFBTSxpQkFBaUIsZUFBZSxHQUFDLFdBQUEsRUFBQXFCLE9BQVk3QyxHQUFHMEUsS0FBS00sT0FDaEYsV0FDRCxHQUFDLHlCQUFBLEVBQUFuQyxPQUEwQnJJLE9BQU9nSCxNQUFNLFdBQVcsU0FBUyxHQUFDLGVBQUE7QUFDN0Q5RyxpQkFBU3VVLE9BQU94TSxLQUFLaUIsWUFBWTJ5RCxTQUFTO0FBQzFDLGNBQU1DLGNBQWM1ekQsU0FBU1ksY0FBYyxJQUFJO0FBQy9DZ3pELG9CQUFZcHRELE1BQU1xdEQsUUFBUTtBQUMxQjc3RCxpQkFBU3VVLE9BQU94TSxLQUFLaUIsWUFBWTR5RCxXQUFXO01BQzdDO0FBQ0E3N0QsY0FBUVMsZ0JBQWdCVCxRQUFRd0YsT0FBT2lQLElBQUk7SUFDNUMsR0FBR3hILE1BQU07RUFBQTtBQUFBLENBQUE7Ozt1Q0NwM0RSLGFBQTZCO0FBQzdCLFVBQU04dUQsUUFBQUMsUUFBQSxFQUFBejJDLEtBQUEsT0FBQS9sQixhQUFBLEdBQUFELGdCQUFBO0FBQ04sVUFBTXc4RCxRQUFBQyxRQUFBLEVBQUF6MkMsS0FBQSxPQUFBcFksZ0JBQUEsR0FBQUQsbUJBQUE7QUFDTixVQUFNNnVELFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUFyUCxpQkFBQSxHQUFBRCxvQkFBQTtBQUNOLFVBQU04bEQsUUFBQUMsUUFBQSxFQUFBejJDLEtBQUEsT0FBQXRELGtCQUFBLEdBQUFGLHFCQUFBO0FBQ04sVUFBTWc2QyxRQUFBQyxRQUFBLEVBQUF6MkMsS0FBQSxPQUFBbU8sc0JBQUEsR0FBQUQseUJBQUE7QUFDTixVQUFNc29DLFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUE0USxtQkFBQSxHQUFBRixzQkFBQTtBQUNOLFVBQU04bEMsUUFBQUMsUUFBQSxFQUFBejJDLEtBQUEsT0FBQW1lLG9CQUFBLEdBQUFELHVCQUFBO0FBQ04sVUFBTXM0QixRQUFBQyxRQUFBLEVBQUF6MkMsS0FBQSxPQUFBbWYsZ0JBQUEsR0FBQUQsbUJBQUE7QUFDTixVQUFNczNCLFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUFnaUIsa0JBQUEsR0FBQUQscUJBQUE7QUFDTixVQUFNeTBCLFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUFnakIsb0JBQUEsR0FBQUQsdUJBQUE7QUFDTixVQUFNeXpCLFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUFrcUIsaUJBQUEsR0FBQUQsb0JBQUE7QUFDTixVQUFNdXNCLFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUFrMUIsaUJBQUEsR0FBQUYsb0JBQUE7QUFDTixVQUFNd2hCLFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUF1M0IsaUJBQUEsR0FBQUQsb0JBQUE7QUFDTixVQUFNa2YsUUFBQUMsUUFBQSxFQUFBejJDLEtBQUEsT0FBQWc0QixtQkFBQSxHQUFBRCxzQkFBQTtBQUNOLFVBQU15ZSxRQUFBQyxRQUFBLEVBQUF6MkMsS0FBQSxPQUFBbzdCLGtCQUFBLEdBQUFELHFCQUFBO0FBQ04sVUFBTXFiLFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUEyaEMsd0JBQUEsR0FBQUQsMkJBQUE7QUFDTixVQUFNOFUsUUFBQUMsUUFBQSxFQUFBejJDLEtBQUEsT0FBQSttQywwQkFBQSxHQUFBRCw2QkFBQTtBQUNOLFVBQU0wUCxRQUFBQyxRQUFBLEVBQUF6MkMsS0FBQSxPQUFBOG5DLHlCQUFBLEdBQUFELDRCQUFBO0FBQ04sVUFBTTJPLFFBQUFDLFFBQUEsRUFBQXoyQyxLQUFBLE9BQUFncEMsa0JBQUEsR0FBQUQscUJBQUE7QUFDTixVQUFNeU4sUUFBQUMsUUFBQSxFQUFBejJDLEtBQUEsT0FBQWl0QyxtQkFBQSxHQUFBRCxzQkFBQTtFQUNQLENBQUE7QUFBQSxXQXJCZ0IwSixjQUFBO0FBQUEsV0FBQUMsYUFBQUMsTUFBQSxNQUFBQyxTQUFBO0VBQUE7QUFBQSxTQUFBSDtBQUFBLEdBQUEsRUFxQmI7IiwKICAibmFtZXMiOiBbInR3aW5rbGVfZXhwb3J0cyIsICJpbml0X3R3aW5rbGUiLCAiX19lc20iLCAidHdpbmtsZSIsICIkIiwgIl93aW5kb3ciLCAiJGJvZHkiLCAiVHdpbmtsZTIiLCAid2luZG93IiwgIlR3aW5rbGUiLCAiTW9yZWJpdHMiLCAidXNlcklzSW5Hcm91cCIsICJjb25zb2xlIiwgIndhcm4iLCAiY2hhbmdlVGFncyIsICJzdW1tYXJ5QWQiLCAiaGF0bm90ZVJlZ2V4IiwgImluaXRDYWxsYmFja3MiLCAiYWRkSW5pdENhbGxiYWNrIiwgImZ1bmMiLCAibmFtZSIsICJsZW5ndGgiLCAiZGVmYXVsdENvbmZpZyIsICJ1c2VyVGFsa1BhZ2VNb2RlIiwgImRpYWxvZ0xhcmdlRm9udCIsICJkaXNhYmxlZE1vZHVsZXMiLCAidXNlcklzU3lzb3AiLCAiZGlzYWJsZWRTeXNvcE1vZHVsZXMiLCAic3BpV2F0Y2hSZXBvcnQiLCAiZGVmYXVsdFRvQmxvY2s2NCIsICJkZWZhdWx0VG9QYXJ0aWFsQmxvY2tzIiwgImJsYW5rVGFsa3BhZ2VPbkluZGVmQmxvY2siLCAid2F0Y2hCbG9ja05vdGljZXMiLCAiY3VzdG9tQmxvY2tSZWFzb25MaXN0IiwgIm9wZW5UYWxrUGFnZSIsICJvcGVuVGFsa1BhZ2VPbkF1dG9SZXZlcnQiLCAicm9sbGJhY2tJblBsYWNlIiwgIm1hcmtSZXZlcnRlZFBhZ2VzQXNNaW5vciIsICJ3YXRjaFJldmVydGVkUGFnZXMiLCAid2F0Y2hSZXZlcnRlZEV4cGlyeSIsICJvZmZlclJlYXNvbk9uTm9ybWFsUmV2ZXJ0IiwgImNvbmZpcm1PbkZsdWZmIiwgInNob3dSb2xsYmFja0xpbmtzIiwgImN1c3RvbVJldmVydFN1bW1hcnkiLCAibm90aWZ5VXNlck9uRGVsaSIsICJkZWxpV2F0Y2hQYWdlIiwgImRlbGlXYXRjaFVzZXIiLCAid2F0Y2hSZXF1ZXN0ZWRQYWdlcyIsICJ3YXRjaFBQVGFnZ2VkUGFnZXMiLCAid2F0Y2hQcm90ZWN0ZWRQYWdlcyIsICJzcGVlZHlTZWxlY3Rpb25TdHlsZSIsICJ3YXRjaFNwZWVkeVBhZ2VzIiwgIndhdGNoU3BlZWR5RXhwaXJ5IiwgIm1hcmtTcGVlZHlQYWdlc0FzUGF0cm9sbGVkIiwgIndhdGNoU3BlZWR5VXNlciIsICJub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24iLCAid2FyblVzZXJPblNwZWVkeURlbGV0ZSIsICJwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnkiLCAib3BlblVzZXJUYWxrUGFnZU9uU3BlZWR5RGVsZXRlIiwgImRlbGV0ZVRhbGtQYWdlT25EZWxldGUiLCAiZGVsZXRlUmVkaXJlY3RzT25EZWxldGUiLCAiZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUiLCAic3BlZWR5V2luZG93SGVpZ2h0IiwgInNwZWVkeVdpbmRvd1dpZHRoIiwgImxvZ1NwZWVkeU5vbWluYXRpb25zIiwgInNwZWVkeUxvZ1BhZ2VOYW1lIiwgIm5vTG9nT25TcGVlZHlOb21pbmF0aW9uIiwgImVubGFyZ2VHN0lucHV0IiwgInVubGlua05hbWVzcGFjZXMiLCAiZGVmYXVsdFdhcm5pbmdHcm91cCIsICJjb21iaW5lZFNpbmdsZXRNZW51cyIsICJ3YXRjaFdhcm5pbmdzIiwgIm9sZFNlbGVjdCIsICJjdXN0b21XYXJuaW5nTGlzdCIsICJhdXRvTWVudUFmdGVyUm9sbGJhY2siLCAibG9nWGZkTm9taW5hdGlvbnMiLCAieGZkTG9nUGFnZU5hbWUiLCAibm9Mb2dPblhmZE5vbWluYXRpb24iLCAieGZkV2F0Y2hEaXNjdXNzaW9uIiwgInhmZFdhdGNoUGFnZSIsICJ4ZmRXYXRjaFVzZXIiLCAibWFya1hmZFBhZ2VzQXNQYXRyb2xsZWQiLCAiRndkQ3NkVG9YZmQiLCAiYWZkRGVmYXVsdENhdGVnb3J5IiwgImFmZEZhbWVEZWZhdWx0UmVhc29uIiwgImFmZFN1YnN0dWJEZWZhdWx0UmVhc29uIiwgIlhmZENsb3NlIiwgImNvcHl2aW9XYXRjaFBhZ2UiLCAiY29weXZpb1dhdGNoVXNlciIsICJtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQiLCAiYXV0b2xldmVsU3RhbGVEYXlzIiwgInJldmVydE1heFJldmlzaW9ucyIsICJiYXRjaE1heCIsICJiYXRjaENodW5rcyIsICJjb25maWdQYWdlIiwgInByb2plY3ROYW1lc3BhY2VOYW1lIiwgIm13IiwgImNvbmZpZyIsICJnZXQiLCAic2FuZGJveFBhZ2UiLCAiZGVsZXRpb25TdW1tYXJ5QWQiLCAicHJvdGVjdGlvblN1bW1hcnlBZCIsICJibG9ja1N1bW1hcnlBZCIsICJncm91cEJ5RGVmYXVsdCIsICJ3YXRjaFRhZ2dlZFBhZ2VzIiwgIndhdGNoTWVyZ2VEaXNjdXNzaW9ucyIsICJtYXJrVGFnZ2VkUGFnZXNBc01pbm9yIiwgIm1hcmtUYWdnZWRQYWdlc0FzUGF0cm9sbGVkIiwgInRhZ0FydGljbGVTb3J0T3JkZXIiLCAiY3VzdG9tVGFnTGlzdCIsICJjdXN0b21GaWxlVGFnTGlzdCIsICJjdXN0b21SZWRpcmVjdFRhZ0xpc3QiLCAid2F0Y2hTdHViYmVkUGFnZXMiLCAibWFya1N0dWJiZWRQYWdlc0FzTWlub3IiLCAibWFya1N0dWJiZWRQYWdlc0FzUGF0cm9sbGVkIiwgInN0dWJBcnRpY2xlU29ydE9yZGVyIiwgImN1c3RvbVN0dWJMaXN0IiwgIm1hcmtUYWxrYmFja0FzTWlub3IiLCAiaW5zZXJ0VGFsa2JhY2tTaWduYXR1cmUiLCAidGFsa2JhY2tIZWFkaW5nIiwgIndnVUxTIiwgIm1haWxIZWFkaW5nIiwgInBvcnRsZXRBcmVhIiwgInBvcnRsZXRJZCIsICJwb3J0bGV0TmFtZSIsICJwb3J0bGV0VHlwZSIsICJwb3J0bGV0TmV4dCIsICJmaW5kIiwgImdldFByZWYiLCAicHJlZnMiLCAiVHdpbmtsZUNvbmZpZyIsICJhZGRQb3J0bGV0IiwgIm5hdmlnYXRpb24iLCAiaWQiLCAidGV4dCIsICJ0eXBlIiwgIm5leHRub2RlaWQiLCAicm9vdCIsICJkb2N1bWVudCIsICJxdWVyeVNlbGVjdG9yIiwgInRlc3QiLCAiY29uY2F0IiwgIml0ZW0iLCAicGFyZW50Tm9kZSIsICJuZXh0bm9kZSIsICJza2luIiwgIm91dGVyTmF2Q2xhc3MiLCAiaW5uZXJEaXZDbGFzcyIsICJvdXRlck5hdiIsICJoZWFkaW5nIiwgImNyZWF0ZUVsZW1lbnQiLCAic2V0QXR0cmlidXRlIiwgImNsYXNzTmFtZSIsICJpbnNlcnRCZWZvcmUiLCAiYXBwZW5kQ2hpbGQiLCAidWwiLCAiaW5jbHVkZXMiLCAiY2hrYm94IiwgInNwYW4iLCAiY3JlYXRlVGV4dE5vZGUiLCAiYSIsICJocmVmIiwgIm9uIiwgImUiLCAicHJldmVudERlZmF1bHQiLCAiaW5uZXJEaXYiLCAiYWRkUG9ydGxldExpbmsiLCAidGFzayIsICJ0b29sdGlwIiwgImxpbmsiLCAidXRpbCIsICJjc3MiLCAiZXYiLCAiY29sbGFwc2libGVUYWJzIiwgImhhbmRsZVJlc2l6ZSIsICJzY3JpcHR1cmwiLCAiZ2V0VXJsIiwgImFjdGlvbiIsICJjdHlwZSIsICJoYXBweSIsICJsb2FkZXIiLCAiZ2V0U2NyaXB0IiwgImZhaWwiLCAibm90aWZ5IiwgInRhZyIsICJhbHdheXMiLCAibG9hZCIsICJhY3RpdmVTcGVjaWFsUGFnZUxpc3QiLCAidG9wIiwgInNlbGYiLCAidXNlckFnZW50IiwgIndpa2kiLCAiYXBpIiwgInNldEFwaVVzZXJBZ2VudCIsICJfaXRlcmF0b3IiLCAiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCAiX3N0ZXAiLCAicyIsICJuIiwgImRvbmUiLCAibW9kdWxlMiIsICJ2YWx1ZSIsICJlcnIiLCAiZiIsICJhZGRDU1MiLCAiaXNWZWN0b3IiLCAic29ydEJ5TmFtZXNwYWNlIiwgImZpcnN0IiwgInNlY29uZCIsICJucyIsICJ0aXRsZSIsICJnZW5lcmF0ZUJhdGNoUGFnZUxpbmtzIiwgImNoZWNrYm94IiwgIiRjaGVja2JveCIsICJodG1sTm9kZSIsICJ2YWwiLCAibmV4dCIsICJwcmVwZW5kIiwgImpRdWVyeSIsICJ0d2lua2xlYXJ2X2V4cG9ydHMiLCAiaW5pdF90d2lua2xlYXJ2IiwgInR3aW5rbGVhcnYiLCAiYXJ2IiwgInVzZXJuYW1lIiwgImlzSVAiLCAiaXNJUEFkZHJlc3MiLCAiY2FsbGJhY2siLCAidWlkIiwgIldpbmRvdyIsICJzaW1wbGVXaW5kb3ciLCAic2V0VGl0bGUiLCAic2V0U2NyaXB0TmFtZSIsICJhZGRGb290ZXJMaW5rIiwgImZvcm0iLCAicXVpY2tGb3JtIiwgImV2YWx1YXRlIiwgImNhdGVnb3JpZXMiLCAiYXBwZW5kIiwgImxhYmVsIiwgImV2ZW50IiwgImNoYW5nZUNhdGVnb3J5IiwgImRpc2FibGVkIiwgInN0eWxlIiwgInJlc3VsdCIsICJyZW5kZXIiLCAic2V0Q29udGVudCIsICJkaXNwbGF5IiwgInF1ZXJ5IiwgImxpc3QiLCAiYmtwcm9wIiwgImZvcm1hdCIsICJia2lwIiwgImJrdXNlcnMiLCAiYXBpb2JqIiwgImJsb2NrbGlzdCIsICJnZXRSZXNwb25zZSIsICJibG9ja3MiLCAiYmxvY2siLCAibWVzc2FnZSIsICJwYXJ0aWFsIiwgInJhbmdlc3RhcnQiLCAicmFuZ2VlbmQiLCAicG9zdCIsICJldnQiLCAiY3JlYXRlRXZlbnQiLCAiaW5pdEV2ZW50IiwgImNhdGVnb3J5IiwgImRpc3BhdGNoRXZlbnQiLCAibHRhX2xpc3QiLCAic29ja21hc3Rlcl9jaGFuZ2VkIiwgInNldF9zb2NrbWFzdGVyIiwgInRhcmdldCIsICJzb2NrbWFzdGVyIiwgInZhbHVlXyIsICJyb290XyIsICJvbGRfYXJlYSIsICJnZXRFbGVtZW50cyIsICJ3b3JrX2FyZWEiLCAicHJldmlld2xpbmsiLCAiY3Vyc29yIiwgInRleHRDb250ZW50IiwgInByZXZpZXciLCAiZWxlbWVudCIsICJzdWJsYWJlbCIsICJtaW4iLCAibWF4IiwgInJlcGxhY2VDaGlsZCIsICJhZGRDbGFzcyIsICJzcGlub3RpY2VwcmV2aWV3ZXIiLCAibGFzdCIsICJnZXRQYXJhbVZhbHVlIiwgImJhZGlkIiwgImdvb2RpZCIsICJwcmV2aWV3ZXIiLCAicmVhc29uIiwgImdldFJlcG9ydFdpa2l0ZXh0IiwgImlucHV0IiwgImdldElucHV0RGF0YSIsICJiZWdpblJlbmRlciIsICJjb21tZW50IiwgImNoZWNrVGl0bGUiLCAicmV2aWQiLCAicGFnZV8iLCAiVGl0bGUiLCAibmFtZXNwYWNlIiwgInBhZ2UiLCAicGFnZXMiLCAibWFwIiwgIm8iLCAiX2l0ZXJhdG9yMiIsICJfc3RlcDIiLCAiZ2V0UHJlZml4ZWRUZXh0IiwgInJlcGxhY2UiLCAidHJpbSIsICJzdHJpbmciLCAiYXBwZW5kUHVuY3R1YXRpb24iLCAidHlwZXMiLCAiYXJ2dHlwZSIsICJ0b0xvd2VyQ2FzZUZpcnN0Q2hhciIsICJoYXNTaGFyZWQiLCAic3BsaWNlIiwgImluZGV4T2YiLCAiY29uZmlybSIsICJqb2luIiwgInNsaWNlIiwgImhpZGVuYW1lIiwgInRvVXBwZXJDYXNlRmlyc3RDaGFyIiwgInNvY2twdXBwZXRzIiwgImFycmF5IiwgInVuaXEiLCAic29jayIsICJpbmRleCIsICJjaGVja3VzZXIiLCAidiIsICJfaW5wdXQkZ29vZGlkIiwgInN1bW1hcnkiLCAic2V0QnV0dG9uc0VuYWJsZWQiLCAic3RhdHVzIiwgImluaXQiLCAiYWN0aW9uQ29tcGxldGVkIiwgInJlZGlyZWN0IiwgIm5vdGljZSIsICJld2lwUGFnZSIsICJzZXRGb2xsb3dSZWRpcmVjdCIsICJnZXRQYWdlVGV4dCIsICIkZXdpcExpbmsiLCAiUmVnRXhwIiwgImVzY2FwZVJlZ0V4cCIsICJnZXRTdGF0dXNFbGVtZW50IiwgImVycm9yIiwgInByaW50VXNlclRleHQiLCAic2V0UGFnZVNlY3Rpb24iLCAic2V0RWRpdFN1bW1hcnkiLCAic2V0Q2hhbmdlVGFncyIsICJzZXRBcHBlbmRUZXh0IiwgInVhYVBhZ2UiLCAiJHVhYUxpbmsiLCAicmVwb3J0cGFnZSIsICJzcGlQYWdlIiwgInNldFdhdGNobGlzdCIsICJhaXZQYWdlIiwgIiRhaXZMaW5rIiwgInR3aW5rbGV3YXJuX2V4cG9ydHMiLCAiaW5pdF90d2lua2xld2FybiIsICJ0d2lua2xld2FybiIsICJyZWxldmFudFVzZXJOYW1lIiwgIiR2YW5kYWxUYWxrTGluayIsICJtYWtlVmFuZGFsVGFsa0xpbmsiLCAicGFnZU5hbWVOb3JtIiwgImFmVGFsa0xpbmsiLCAicGFnZV9wcmVmaXhlZHRpdGxlIiwgInBhZ2VuYW1lIiwgIndyYXBJbm5lciIsICJhdHRyIiwgImV4dHJhUGFyYW0iLCAicmF3dXJsZW5jb2RlIiwgImRpYWxvZyIsICJtYWluX3NlbGVjdCIsICJtYWluX2dyb3VwIiwgImNoYW5nZV9jYXRlZ29yeSIsICJkZWZhdWx0R3JvdXAiLCAiTnVtYmVyIiwgInBhcnNlSW50IiwgInNlbGVjdGVkIiwgImNoYW5nZV9zdWJjYXRlZ29yeSIsICJzaXplIiwgInBsYWNlaG9sZGVyIiwgIm1vcmUiLCAiY2FsbGJhY2tzIiwgInZhbnJldmlkIiwgInRpdGxlcyIsICJwcm9wIiwgInJ2c3RhcnRpZCIsICJydmxpbWl0IiwgInJ2ZGlyIiwgInJ2cHJvcCIsICJyZXZlcnRVc2VyIiwgImdldEF0dHJpYnV0ZSIsICJjaGVja1N0YWxlIiwgInZhbnRpbWVzdGFtcF8iLCAicmV2RGF0ZSIsICJkYXRlIiwgImlzVmFsaWQiLCAiYWRkIiwgImlzQmVmb3JlIiwgIkRhdGUiLCAidmFudGltZXN0YW1wIiwgInJldmlkcyIsICJtZXNzYWdlcyIsICJsZXZlbHMiLCAibGV2ZWwxIiwgImxldmVsMiIsICJzaW5nbGVub3RpY2UiLCAic2luZ2xld2FybiIsICJzdXBwcmVzc0FydGljbGVJblN1bW1hcnkiLCAicHJldl9hcnRpY2xlIiwgInByZXZfcmVhc29uIiwgInRhbGtwYWdlT2JqIiwgInN1Yl9ncm91cCIsICJvbGRfc3VidmFsdWUiLCAib2xkX3N1YnZhbHVlX3JlIiwgImhhc0NoaWxkTm9kZXMiLCAicmVtb3ZlQ2hpbGQiLCAiZmlyc3RDaGlsZCIsICJjcmVhdGVFbnRyaWVzIiwgImNvbnRlbnRzIiwgImNvbnRhaW5lciIsICJ3cmFwSW5PcHRncm91cCIsICJsZXZlbCIsICJjbGllbnQiLCAicHJvZmlsZSIsICJwbGF0Zm9ybSIsICJ3cmFwcGVyT3B0Z3JvdXAiLCAiX2kyIiwgIl9PYmplY3QkZW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJpdGVtS2V5IiwgIml0ZW1Qcm9wZXJ0aWVzIiwgImtleSIsICJ0ZW1wbGF0ZSIsICJlbGVtIiwgImRhdGEiLCAiZWxlbVJlbmRlcmVkIiwgInVuU29ydGVkU2luZ2xldHMiLCAic29ydGVkU2luZ2xldE1lc3NhZ2VzIiwgIl9pdGVyYXRvcjMiLCAia2V5cyIsICJzb3J0IiwgIl9zdGVwMyIsICJfaTMiLCAiX2FyciIsICJsdmwiLCAiX2l0ZXJhdG9yNCIsICJfc3RlcDQiLCAibGV2ZWxHcm91cCIsICJfaXRlcmF0b3I1IiwgIl9zdGVwNSIsICJvcHRncm91cCIsICJhdXRvbGV2ZWxQcm9jIiwgIndpa2l0ZXh0IiwgImxhdGVzdCIsICJkYXRlUHJvY2Vzc2luZyIsICJwYXJhbXMiLCAiYXJ0aWNsZSIsICJhdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0IiwgIl9pdGVyYXRvcjYiLCAiX3N0ZXA2IiwgInBvc3RDYXRlZ29yeUNsZWFudXAiLCAidXNlcnRhbGtfcGFnZSIsICJwYWdlb2JqIiwgIiRub1RhbGtQYWdlTm9kZSIsICJjbG9zZVByZXZpZXciLCAicmVtb3ZlIiwgInNldEVsZW1lbnRUb29sdGlwVmlzaWJpbGl0eSIsICJyZXNldEVsZW1lbnRMYWJlbCIsICJzZWxlY3QyIiwgIndpZHRoIiwgIm1hdGNoZXIiLCAibWF0Y2hlcnMiLCAib3B0Z3JvdXBGdWxsIiwgInRlbXBsYXRlUmVzdWx0IiwgImhpZ2hsaWdodFNlYXJjaE1hdGNoZXMiLCAibGFuZ3VhZ2UiLCAic2VhcmNoaW5nIiwgInF1ZXJ5SW50ZXJjZXB0b3IiLCAiY2hhbmdlIiwgImF1dG9TdGFydCIsICJ0cmlnZ2VyIiwgIm5vdExpbmtlZEFydGljbGUiLCAibm90QXJ0aWNsZSIsICJvdmVycmlkZUVsZW1lbnRMYWJlbCIsICJnZXRXYXJuaW5nV2lraXRleHQiLCAidGVtcGxhdGVOYW1lIiwgImlzQ3VzdG9tIiwgIm5vU2lnbiIsICJzaG93UHJldmlldyIsICJ0ZW1wbGF0ZW5hbWUiLCAibGlua2VkYXJ0aWNsZSIsICJ0ZW1wbGF0ZXRleHQiLCAibWVzc2FnZURhdGEiLCAiaGlzdG9yeV9yZSIsICJoaXN0b3J5IiwgImN1cnJlbnQiLCAiZXhlYyIsICJjdXJyZW50X2RhdGUiLCAiaXNBZnRlciIsICJzdGF0ZWxlbSIsICIkYXV0b2xldmVsTWVzc2FnZSIsICJpc05hTiIsICJhdXRvVGltZW91dCIsICJnZXRUaW1lIiwgIiRsaW5rIiwgImNsb3NlIiwgInN0YXR1c05vZGUiLCAiaW5zZXJ0QWZ0ZXIiLCAibWFpbiIsICJnZXRDYWxsYmFja1BhcmFtZXRlcnMiLCAid2FybmluZ0hpc3RvcnkiLCAibm93IiwgImdldExvYWRUaW1lIiwgInRlbXBsYXRlQW5kTGV2ZWwiLCAiY3VzdG9tUHJvY2VzcyIsICJzcGxpdCIsICJwcmVmaXgiLCAic3ViIiwgIndhcm5pbmdUZXh0IiwgInNlY3Rpb25FeGlzdHMiLCAic2VjdGlvbk51bWJlciIsICJzZWN0aW9ucyIsICJtYXRjaCIsICJkYXRlSGVhZGVyUmVnZXgiLCAibW9udGhIZWFkZXJSZWdleCIsICJyZXZlcnNlIiwgInNvbWUiLCAic2VjIiwgImlkeCIsICJzZXROZXdTZWN0aW9uVGl0bGUiLCAiaW5mbyIsICJtb250aEhlYWRlciIsICJzZXROZXdTZWN0aW9uVGV4dCIsICJuZXdTZWN0aW9uIiwgInVzZXJUYWxrUGFnZSIsICJnZXRGcmFnbWVudCIsICJhbGVydCIsICIkc2VsZWN0ZWRFbCIsICJxaXV3ZW5fcGFnZSIsICJzZXRDYWxsYmFja1BhcmFtZXRlcnMiLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAiaW5pdF9hcGkiLCAicmVxdWlyZSIsICJpbml0TXdBcGkiLCAidHdpbmtsZWJsb2NrX2V4cG9ydHMiLCAiaW1wb3J0X2V4dF9nYWRnZXQyIiwgImluaXRfdHdpbmtsZWJsb2NrIiwgInR3aW5rbGVibG9jayIsICJibG9ja2VkVXNlck5hbWUiLCAibWVudUZvcm1hdHRlZE5hbWVzcGFjZXMiLCAiYmxvY2tBY3Rpb25UZXh0IiwgInJlYmxvY2siLCAidW5ibG9jayIsICJpcCIsICJpc1JhbmdlIiwgInZhbGlkQ0lEUiIsICJjdXJyZW50QmxvY2tJbmZvIiwgImZpZWxkX2Jsb2NrX29wdGlvbnMiLCAiZmllbGRfdGVtcGxhdGVfb3B0aW9ucyIsICJhY3Rpb25maWVsZCIsICJjaGFuZ2VfYWN0aW9uIiwgImhpZGRlbiIsICJjaGVja2VkIiwgInNpeHR5Rm91ciIsICJnZXQ2NCIsICJibG9jazY0ZmllbGQiLCAiY2hhbmdlX2Jsb2NrNjQiLCAiZmV0Y2hVc2VySW5mbyIsICJpc1JlZ2lzdGVyZWQiLCAiJGZvcm0iLCAic2V0RWxlbWVudFZpc2liaWxpdHkiLCAicGFyZW50IiwgInRyYW5zZm9ybUJsb2NrUHJlc2V0cyIsICJibG9jazY0IiwgImFjdGlvbnR5cGUiLCAiZmV0Y2hlZERhdGEiLCAicHJvY2Vzc1VzZXJJbmZvIiwgImZuIiwgImJsb2NraW5mbyIsICJ1c2VyaW5mbyIsICJ1c2VycyIsICJ1c2VyIiwgInVzZXJpZCIsICJ1c2VySXNCb3QiLCAiZ3JvdXBtZW1iZXJzaGlwcyIsICJncm91cCIsICJkaXNhYmxldGFsayIsICJhbGxvd3VzZXJ0YWxrIiwgImhhcmRibG9jayIsICJhbm9ub25seSIsICJoYXNCbG9ja0xvZyIsICJsb2dldmVudHMiLCAiYmxvY2tMb2ciLCAiYmxvY2tMb2dJZCIsICJsb2dpZCIsICJsZXR5cGUiLCAibGVsaW1pdCIsICJsZXRpdGxlIiwgInVzdXNlcnMiLCAidXNwcm9wIiwgInRoZW4iLCAic2F2ZUZpZWxkc2V0IiwgImZpZWxkc2V0IiwgIl9pdGVyYXRvcjciLCAic2VyaWFsaXplQXJyYXkiLCAiX3N0ZXA3IiwgImVsIiwgIiRibG9jazY0IiwgInByaW9yTmFtZSIsICJpcyIsICJvcmlnaW5hbElzUmFuZ2UiLCAicmVnZW5lcmF0ZUZvcm0iLCAidGl0bGVCYXIiLCAibmV4dFNpYmxpbmciLCAibm9kZVZhbHVlIiwgImZpZWxkX3ByZXNldCIsICJmaWVsZF90YWdfb3B0aW9ucyIsICJmaWVsZF91bmJsb2NrX29wdGlvbnMiLCAiJGJsb2NrIiwgImJsb2NrQm94IiwgIiR0ZW1wbGF0ZSIsICJ0ZW1wbGF0ZUJveCIsICIkdGFnIiwgInRhZ0JveCIsICIkcHJvdGVjdCIsICIkcGFydGlhbCIsICJwYXJ0aWFsQm94IiwgIiR1bmJsb2NrIiwgInVuYmxvY2tCb3giLCAiYmxvY2tHcm91cCIsICJibG9ja0dyb3Vwc1BhcnRpYWwiLCAiYmxvY2tHcm91cHMiLCAicHJpb3IiLCAiYmxvY2tQcmVzZXRzSW5mbyIsICJiZyIsICJpc0luZmluaXR5IiwgImV4cGlyeSIsICJmaWx0ZXIiLCAiY2hhbmdlX3ByZXNldCIsICJmaWx0ZXJlZF9ibG9ja19ncm91cHMiLCAiY2hhbmdlX2V4cGlyeSIsICJ0ZW1wbGF0ZV9leHBpcnkiLCAibXVsdGlwbGUiLCAiX2k0IiwgIl9PYmplY3QkZW50cmllczIiLCAibnVtYmVyIiwgImJsb2Nrb3B0aW9ucyIsICJub2NyZWF0ZSIsICJub2VtYWlsIiwgImF1dG9ibG9jayIsICJ3YXRjaHVzZXIiLCAidG9nZ2xlX3NlZV9hbHNvcyIsICJjaGFuZ2VfdGVtcGxhdGUiLCAiYmxvY2tfcmVhc29uIiwgImJsYW5rX2R1cmF0aW9uIiwgIm5vdGFsayIsICJub2VtYWlsX3RlbXBsYXRlIiwgIm5vY3JlYXRlX3RlbXBsYXRlIiwgIiRwcmV2aWV3bGluayIsICJvZmYiLCAic3ViZ3JvdXAiLCAib2xkZmllbGQiLCAiaGlkZSIsICJzaG93IiwgImVycm9yTG9hZGluZyIsICJtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIiwgIm1pbmltdW1JbnB1dExlbmd0aCIsICJhamF4IiwgInVybCIsICJ3aWtpU2NyaXB0IiwgImRhdGFUeXBlIiwgImRlbGF5IiwgIm5ld0Zyb21UZXh0IiwgInRlcm0iLCAiYXBmcm9tIiwgImFwbmFtZXNwYWNlIiwgImFwbGltaXQiLCAicHJvY2Vzc1Jlc3VsdHMiLCAicmVzdWx0cyIsICJhbGxwYWdlcyIsICJ0b1RleHQiLCAidGVtcGxhdGVTZWxlY3Rpb24iLCAiY2hvaWNlIiwgInJlbCIsICJ3b3JkQmVnaW5uaW5nIiwgInNhbWVVc2VyIiwgInN0YXR1c1N0ciIsICIkcmFuZ2VibG9ja2xvZ2xpbmsiLCAiaHRtbCIsICJjYWxlbmRhciIsICJpbmZvU3RyIiwgInVwZGF0ZV9mb3JtIiwgImJsb2NrbG9naW5mbyIsICIkYmxvY2tsb2dsaW5rIiwgImxhc3RCbG9ja0FjdGlvbiIsICJibG9ja0FjdGlvbiIsICJ0aW1lc3RhbXAiLCAiZm9ybWF0VGltZSIsICJkdXJhdGlvbiIsICJmb3JSZWdpc3RlcmVkT25seSIsICJwYWdlUGFyYW0iLCAicmVhc29uUGFyYW0iLCAibm9uc3RhbmRhcmQiLCAiZm9yQW5vbk9ubHkiLCAic2lnIiwgImNoZWNrdXNlcmJsb2NrIiwgImJpb2Jsb2NrIiwgInVjYmxvY2siLCAibnBibG9jayIsICJfaXRlcmF0b3I4IiwgIl9zdGVwOCIsICJuZXdLZXkiLCAiY3VzdG9tIiwgIl9pNSIsICJfT2JqZWN0JGVudHJpZXMzIiwgInByZXNldCIsICJzZXR0aW5ncyIsICJpbmRlZmluaXRlIiwgIm1ldGEiLCAic2hvd190ZW1wbGF0ZSIsICJ0ZW1wbGF0ZXMiLCAiYmxvY2tQcmVzZXQiLCAiYmxvY2tTZXR0aW5ncyIsICJyZWdpc3RyYXRpb25SZXN0cmljdCIsICJzZWVBbHNvcyIsICJzZWVBbHNvTWVzc2FnZSIsICJ1c2VJbml0aWFsT3B0aW9ucyIsICJwYXJzZSIsICJ0b0dNVFN0cmluZyIsICJleHBpcnlfcHJlc2V0IiwgImVhY2giLCAiX2kiLCAiY2hlY2siLCAicHJlcGVuZFJlYXNvbiIsICJwYWdlcmVzdHJpY3Rpb25zIiwgIiRwYWdlU2VsZWN0IiwgIiRuYW1lc3BhY2VTZWxlY3QiLCAicmVzdHJpY3Rpb25zIiwgInByIiwgIl9pdGVyYXRvcjkiLCAiX3N0ZXA5IiwgImVzY2FwZVNlbGVjdG9yIiwgIm5ld09wdGlvbiIsICJPcHRpb24iLCAiZ2VuZXJhdGVBcnJheSIsICJuYW1lc3BhY2VzIiwgInByZXZfdGVtcGxhdGVfZXhwaXJ5IiwgImFyZWEiLCAibmFtZXNwYWNlcmVzdHJpY3Rpb25zIiwgInRlbXBsYXRlVGV4dCIsICJnZXRCbG9ja05vdGljZVdpa2l0ZXh0IiwgIl90ZW1wbGF0ZW9wdGlvbnMiLCAidG9CbG9jayIsICJ0b1dhcm4iLCAidG9QYXJ0aWFsIiwgInRvVGFnIiwgInRvUHJvdGVjdCIsICJ0b1VuYmxvY2siLCAidGVtcGxhdGVvcHRpb25zIiwgInVuYmxvY2tvcHRpb25zIiwgInRvQ2xvc2V2aXAiLCAiY2xvc2V2aXAiLCAiY2hlY2tJbmNvbXBhdGlibGUiLCAiY29uZmxpY3RzIiwgImV4dHJhIiwgImNvdW50IiwgInJlZHVjZSIsICJzdW0iLCAic3BwVXNlcm5hbWUiLCAic3RhdHVzRWxlbWVudCIsICJsb2dFeHBpcnkiLCAiZXhwaXJ5RGF0ZSIsICJncm91cHNDYW5CZVJlbW92ZWQiLCAiZ3JvdXBzVG9CZVJlbW92ZWQiLCAiZ3JvdXBzIiwgInRhZ3MiLCAidG9rZW4iLCAidG9rZW5zIiwgIm1iQXBpIiwgImlzc3VlX3RlbXBsYXRlIiwgInZpcFBhZ2UiLCAiY2xvc2VSZXF1ZXN0IiwgInJpZ2h0U3RhdHVzRWxlbWVudCIsICJyZXZva2VPcHRpb25zIiwgInVzZXJyaWdodHN0b2tlbiIsICJtckFwaSIsICJ1c2VyUGFnZSIsICJ0YWd1c2VycGFnZSIsICJ1bmJsb2NrU3RhdHVzRWxlbWVudCIsICJ1bmJsb2NrTWJBcGkiLCAiX2l0ZXJhdG9yMTAiLCAiX3N0ZXAxMCIsICJ0YWd0ZXh0IiwgInNwcFR5cGUiLCAic3BwRXZpZGVuY2UiLCAic3BtQ2hlY2tlZCIsICJzcG1FdmlkZW5jZSIsICJzZXRQYWdlVGV4dCIsICJzYXZlIiwgInByb3RlY3R1c2VycGFnZSIsICJleGlzdHMiLCAic2V0RWRpdFByb3RlY3Rpb24iLCAic2V0TW92ZVByb3RlY3Rpb24iLCAic2V0Q3JlYXRlUHJvdGVjdGlvbiIsICJwcm90ZWN0IiwgImZvcm1EYXRhIiwgInVzZXJ0YWxrX3N1bW1hcnkiLCAidXNlck5hbWUiLCAiZXhwaXJ5VGV4dCIsICJyZXF1ZXN0TGlzdCIsICJmb3VuZCIsICJ2aXBSZSIsICJwYWdlTmFtZVJlZ2V4IiwgIl9pdGVyYXRvcjExIiwgIl9zdGVwMTEiLCAicmVxdWVzdCIsICJ0cmltRW5kIiwgIm5ld1RleHQiLCAibWFrZVNlbnRlbmNlIiwgInBvcCIsICJwIiwgIm5hbWVzcGFjZU5hbWVzIiwgImRhdGVIZWFkZXJSZWdleExhc3QiLCAiZGF0ZUhlYWRlclJlZ2V4UmVzdWx0IiwgImxhc3RIZWFkZXJJbmRleCIsICJsYXN0SW5kZXhPZiIsICJmcmllbmRseXRhbGtiYWNrX2V4cG9ydHMiLCAiaW5pdF9mcmllbmRseXRhbGtiYWNrIiwgImZyaWVuZGx5dGFsa2JhY2siLCAidGFsa2JhY2siLCAiY2hhbmdlVGFyZ2V0IiwgInRidGFyZ2V0IiwgImVscXVlcnkiLCAiZWxsaW1pdCIsICJxaXV3ZW5fYXBpIiwgIm9wdG91dFN0YXR1cyIsICJvcHRvdXQiLCAiJGVsIiwgImdldFhNTCIsICJwcmV2X3BhZ2UiLCAicHJldl9zZWN0aW9uIiwgInByZXZfbWVzc2FnZSIsICJ2YWx1ZXMiLCAic2VjdGlvbiIsICJyZXF1aXJlZCIsICJub3RpY2Vib2FyZCIsICJfaTYiLCAiX09iamVjdCRlbnRyaWVzNCIsICJub3RpY2Vib2FyZHMiLCAibmJuYW1lIiwgImRlZmF1bHRTZWxlY3RlZCIsICJhZmZwIiwgImNvbnRlbnQiLCAiZWRpdFN1bW1hcnkiLCAic2JsIiwgInNobCIsICJnZXRDaGVja2VkIiwgIm5hbWVzcGFjZVJlZ2V4IiwgImZ1bGxVc2VyVGFsa1BhZ2VOYW1lIiwgInVzZXJfdGFsayIsICJnZXROb3RpY2VXaWtpdGV4dCIsICJ0YWxrcGFnZSIsICJzZXRDcmVhdGVPcHRpb24iLCAic2V0TWlub3JFZGl0IiwgIm5vdGljZXRleHQiLCAic2FmZVJlcGxhY2UiLCAidHdpbmtsZXNwZWVkeV9leHBvcnRzIiwgImltcG9ydF9leHRfZ2FkZ2V0MyIsICJpbml0X3R3aW5rbGVzcGVlZHkiLCAidHdpbmtsZXNwZWVkeSIsICJzcGVlZHkiLCAiaW5pdERpYWxvZyIsICJldmFsdWF0ZVN5c29wIiwgImV2YWx1YXRlVXNlciIsICJoYXNDU0QiLCAibW9kZSIsICJzeXNvcFNpbmdsZVN1Ym1pdCIsICJzeXNvcFJhZGlvQ2xpY2siLCAic3lzb3BNdWx0aXBsZVN1Ym1pdCIsICJzeXNvcE11bHRpcGxlUmFkaW9DbGljayIsICJ1c2VyTXVsdGlwbGVTdWJtaXQiLCAidXNlck11bHRpcGxlUmFkaW9DbGljayIsICJ1c2VyU2luZ2xlU3VibWl0IiwgInVzZXJTaW5nbGVSYWRpb0NsaWNrIiwgImlzU3lzb3AiLCAiaGFzU3VibWl0QnV0dG9uIiwgImlzTXVsdGlwbGUiLCAiY2FsbGJhY2tmdW5jIiwgImNGb3JtIiwgImNDaGVja2VkIiwgInJlZGlyZWN0cyIsICJkZWxtdWx0aXBsZSIsICJvcGVudXNlcnRhbGsiLCAic2FsdGluZyIsICJtb2RlQ2hhbmdlZCIsICJzdG9wUHJvcGFnYXRpb24iLCAiZGVsZXRlT3B0aW9ucyIsICJ0YWdPcHRpb25zIiwgInByaW9yRGVsZXRpb25Db3VudCIsICJnZXRNb2RlIiwgInRhZ19vbmx5IiwgImlzU3lzb3BNb2RlIiwgImV2YWx1YXRlVHlwZSIsICJyYWRpb09yQ2hlY2tib3giLCAiZ2VuZXJhdGVDc2RMaXN0IiwgImN1c3RvbVJhdGlvbmFsZSIsICJhcnRpY2xlTGlzdCIsICJ1c2VyTGlzdCIsICJ1c2VydGFsa0xpc3QiLCAiZmlsZUxpc3QiLCAiY2F0ZWdvcnlMaXN0IiwgImRyYWZ0TGlzdCIsICJ0YWxrTGlzdCIsICJnZW5lcmFsQ3JpdGVyaWEiLCAiZ2VuZXJhbExpc3QiLCAicmVkaXJlY3RMaXN0IiwgImN1c3RvbU9wdGlvbiIsICJjbGljayIsICJkZWNvZGVVUklDb21wb25lbnQiLCAibGFiZWxzIiwgImVtcHR5IiwgImxlYWN0aW9uIiwgImxlcHJvcCIsICJyZXNwb25zZSIsICJkZWxDb3VudCIsICJjb250aW51ZSIsICJvcGVuU3ViZ3JvdXBIYW5kbGVyIiwgImNoaWxkcmVuIiwgImZvY3VzIiwgInN1Ym1pdFN1Ymdyb3VwSGFuZGxlciIsICJBcnJheSIsICJwcm90b3R5cGUiLCAiY2FsbCIsICJjcml0RWxlbWVudCIsICJjcml0ZXJpb24iLCAiaGlkZVdoZW5NdWx0aXBsZSIsICJoaWRlU3ViZ3JvdXBXaGVuTXVsdGlwbGUiLCAiaGlkZVdoZW5TaW5nbGUiLCAiaGlkZVN1Ymdyb3VwV2hlblNpbmdsZSIsICJoaWRlV2hlblN5c29wIiwgImhpZGVTdWJncm91cFdoZW5TeXNvcCIsICJoaWRlV2hlblVzZXIiLCAiaGlkZVN1Ymdyb3VwV2hlblVzZXIiLCAiaGlkZVdoZW5SZWRpcmVjdCIsICJzaG93SW5OYW1lc3BhY2VzIiwgImhpZGVJbk5hbWVzcGFjZXMiLCAib3JpZ2luYWxFdmVudCIsICJub3JtYWxpemVkQ3JpdGVyaW9uIiwgIm5vcm1hbGl6ZUhhc2giLCAiZzEiLCAiZzIiLCAiZzMiLCAiZzQiLCAiZzUiLCAiZzYiLCAiZzciLCAiZzgiLCAiZzkiLCAiYTEiLCAiYTIiLCAiYTMiLCAicjEiLCAicjIiLCAiZjEiLCAiZjIiLCAiZjMiLCAiZjQiLCAiZjUiLCAibzEiLCAibzIiLCAibzMiLCAiZ2V0VGVtcGxhdGVDb2RlQW5kUGFyYW1zIiwgImNvZGUiLCAicGFyYW1ldGVycyIsICJpIiwgIm5vcm1hbGl6ZWRzIiwgInV0cGFyYW1zIiwgIl9pdGVyYXRvcjEyIiwgIl9zdGVwMTIiLCAibm9ybSIsICJ0b1VwcGVyQ2FzZSIsICJ0ZW1wbGF0ZVBhcmFtcyIsICJpXyIsICJnZXRVc2VyVGFsa1BhcmFtZXRlcnMiLCAicGFyc2VXaWtpdGV4dCIsICJwc3QiLCAiY29udGVudG1vZGVsIiwgInN0YXR1c0luZGljYXRvciIsICJhcGkyIiwgImFwaU9iaiIsICJjaGlsZE5vZGVzIiwgInN5c29wIiwgInByb21wdCIsICJkZWxldGVQYWdlIiwgImRlbGV0ZVJlYXNvbiIsICJwcm9tcHRGb3JTdW1tYXJ5IiwgInRoaXNwYWdlIiwgImRlbGV0ZU1haW4iLCAid2F0Y2giLCAiZGVsZXRlVGFsayIsICJvcGVuVXNlclRhbGsiLCAibG9va3VwQ3JlYXRpb24iLCAib3BlblVzZXJUYWxrUGFnZSIsICJkZWxldGVUYWxrUGFnZSIsICJub3JtYWxpemVkIiwgImNsYXNzTGlzdCIsICJjb250YWlucyIsICJzZXRUaW1lb3V0IiwgImRlbGV0ZVJlZGlyZWN0cyIsICJyZGxpbWl0IiwgImRlbGV0ZVJlZGlyZWN0c01haW4iLCAiJGJpZ3RleHQiLCAic2V0IiwgInVubGluayIsICJnZXRDcmVhdG9yIiwgInZhbmFydGljbGUiLCAib3BlbiIsICJ4bWxEb2MiLCAiJHNuYXBzaG90IiwgInRvdGFsIiwgIm9uc3VjY2VzcyIsICJhcGlvYmpJbm5lciIsICJ1cGRhdGUiLCAicmVtb3ZlQ2hlY2twb2ludCIsICJhZGRDaGVja3BvaW50IiwgIl9rZXkiLCAidGV4dE5vU2QiLCAiY29weXZpbyIsICJ4ZmQiLCAiYnVpbGREYXRhIiwgInBhdHJvbCIsICJyZXF1ZXN0c2FsdCIsICJlZGl0c3VtbWFyeSIsICJfaXRlcmF0b3IxMyIsICJfc3RlcDEzIiwgIk1hdGgiLCAiYmxhbmsiLCAiaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXMiLCAiZ2V0VGV4dCIsICJ0YWdDb21wbGV0ZSIsICJ1c2VydGFsayIsICJwYWdlT2JqIiwgImluaXRpYWxDb250cmliIiwgInRhbGtQYWdlTmFtZSIsICJ1c2VydGFsa3BhZ2UiLCAibm90aWZ5dGV4dCIsICJsb2dub21pbmF0aW9uIiwgImFkZFRvTG9nIiwgInVzbCIsICJ1c2Vyc3BhY2VMb2dnZXIiLCAiaW5pdGlhbFRleHQiLCAiYXBwZW5kVGV4dCIsICJmcm9tREkiLCAiX2l0ZXJhdG9yMTQiLCAiX3N0ZXAxNCIsICJsb2ciLCAiZ2V0UGFyYW1ldGVycyIsICJfaXRlcmF0b3IxNSIsICJfc3RlcDE1IiwgImN1cnJlbnRQYXJhbXMiLCAicmVkaW1hZ2UiLCAiZGJyYXRpb25hbGUiLCAib3RoZXJwYWdlIiwgImZpbGVuYW1lIiwgInJlZGlydHlwZSIsICJyZXNvbHZlQ3NkVmFsdWVzIiwgIl9lJHRhcmdldCRmb3JtIiwgIl9lJHRhcmdldCRmb3JtMiIsICJ3YXRjaFBhZ2UiLCAiX2l0ZXJhdG9yMTYiLCAiX3N0ZXAxNiIsICJfZSR0YXJnZXQkZm9ybTMiLCAiX2l0ZXJhdG9yMTciLCAiX3N0ZXAxNyIsICJfaTciLCAiX25vcm1hbGl6ZWRzIiwgIm5vdGlmeXVzZXIiLCAiX2l0ZXJhdG9yMTgiLCAiX3N0ZXAxOCIsICJjc2Rsb2ciLCAiX2l0ZXJhdG9yMTkiLCAiX3N0ZXAxOSIsICJ0d2lua2xlY29weXZpb19leHBvcnRzIiwgImluaXRfdHdpbmtsZWNvcHl2aW8iLCAidHdpbmtsZWNvcHl2aW8iLCAiaXNQYWdlUmVkaXJlY3QiLCAidHJ5VGFnZ2luZyIsICJ0YWdnaW5nQXJ0aWNsZSIsICJsb2dwYWdlIiwgImNvcHl2aW9MaXN0IiwgInJldmlzaW9uSWQiLCAic291cmNlIiwgIm9sZGNzZCIsICJzcGVlZHlUYWciLCAiZzRfcGFnZW5hbWUiLCAib3V0cHV0IiwgImdldFVUQ01vbnRoIiwgImdldFVUQ0RhdGUiLCAidHdpbmtsZXhmZF9leHBvcnRzIiwgImluaXRfdHdpbmtsZXhmZCIsICJ0d2lua2xleGZkIiwgImN1cnJlbnRSYXRpb25hbGUiLCAicHJpbnRSYXRpb25hbGUiLCAib2xkcmVhc29udGV4dGJveCIsICJvbGRyZWFzb24iLCAiYXBwZW5kUmVhc29uQm94IiwgInhmZF9jYXQiLCAiYWZkX2NhdGVnb3J5IiwgImNoYW5nZV9hZmRfY2F0ZWdvcnkiLCAiYWZkX2NhdCIsICJsb2NhbFN0b3JhZ2UiLCAiVHdpbmtsZV9hZmRDYXRlZ29yeSIsICJ4ZmRjYXQiLCAibWVyZ2VpbnRvIiwgInBhcmVudEVsZW1lbnQiLCAicmVtb3ZlQXR0cmlidXRlIiwgImZ3ZGNzZHJlYXNvbiIsICJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwgImlubmVySFRNTCIsICJ4ZmRyZWFzb24iLCAiYWZkIiwgInRhZ2dpbmdfcGFnZSIsICJkaXNjdXNzaW9uX3BhZ2UiLCAidG9kYXlzTGlzdCIsICJjcmVhdG9yIiwgImZvcm1hdFJlYXNvblRleHQiLCAibm9pbmNsdWRlIiwgInRleHROb05vdE1hbmRhcmluIiwgInRleHROb0FmYyIsICJ0byIsICJjb21tZW50VGV4dCIsICJzYWZlc3Vic3QiLCAiZmFtZSIsICJzdWJzdHViIiwgImJhdGNoIiwgInRhcmdldF9wYWdlIiwgImZmZCIsICJ0YWdnaW5nSW1hZ2UiLCAieGZkQ2F0TmFtZSIsICJ3aWtpVXJsZW5jb2RlIiwgImZvcm1hdFJlYXNvbkZvckxvZyIsICJvbkVycm9yIiwgInNldExvb2t1cE5vblJlZGlyZWN0Q3JlYXRvciIsICJ0d2lua2xlaW1hZ2VfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVpbWFnZSIsICJ0d2lua2xlaW1hZ2UiLCAiaW1hZ2UiLCAiZmllbGQiLCAiX2l0ZXJhdG9yMjAiLCAiX3N0ZXAyMCIsICJ0eXBlXyIsICJjc2Rjcml0IiwgIkVycm9yIiwgInRvTG93ZXJDYXNlIiwgImYxX3NvdXJjZSIsICJmNF90eXBlIiwgInVzZXJOb3RpZmljYXRpb24iLCAibm90ZURhdGEiLCAiaW1hZ2VMaXN0IiwgInR3aW5rbGVwcm90ZWN0X2V4cG9ydHMiLCAiaW5pdF90d2lua2xlcHJvdGVjdCIsICJ0d2lua2xlcHJvdGVjdCIsICJjaGFuZ2VBY3Rpb24iLCAiZmV0Y2hQcm90ZWN0aW9uTGV2ZWwiLCAiaXNUZW1wbGF0ZSIsICJjdXJyZW50UHJvdGVjdGlvbkxldmVscyIsICJwcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMiLCAiaW5kZXhwYWdlaWRzIiwgImlucHJvcCIsICJwcm90ZWN0RGF0YSIsICJwYWdlaWQiLCAicGFnZWlkcyIsICJwcmV2aW91cyIsICJ3YXRjaGVkIiwgIndhdGNobGlzdGV4cGlyeSIsICJfaXRlcmF0b3IyMSIsICJwcm90ZWN0aW9uIiwgIl9zdGVwMjEiLCAiY2FzY2FkZSIsICJwcmV2aW91c1Byb3RlY3Rpb25Mb2ciLCAiX2l0ZXJhdG9yMjIiLCAiZGV0YWlscyIsICJfc3RlcDIyIiwgImhhc1Byb3RlY3RMb2ciLCAic2hvd0xvZ0FuZEN1cnJlbnRQcm90ZWN0SW5mbyIsICJjdXJyZW50bHlQcm90ZWN0ZWQiLCAiaGFzU3RhYmxlTG9nIiwgIiRsaW5rTWFya3VwIiwgImZvcm1hdFByb3RlY3Rpb25EZXNjcmlwdGlvbiIsICJwcm90ZWN0aW9uTm9kZSIsICJzdGF0dXNMZXZlbCIsICJmaWVsZDEiLCAiZmllbGQyIiwgImNoYW5nZVByZXNldCIsICJwcm90ZWN0aW9uVHlwZXNBZG1pbiIsICJwcm90ZWN0aW9uVHlwZXNDcmVhdGUiLCAiZm9ybWV2ZW50cyIsICJlZGl0bW9kaWZ5IiwgImVkaXRsZXZlbCIsICJwcm90ZWN0aW9uTGV2ZWxzIiwgImRvQ3VzdG9tRXhwaXJ5IiwgImNsb3Nlc3QiLCAic2VsZWN0ZWRJbmRleCIsICJwcm90ZWN0aW9uTGVuZ3RocyIsICJtb3ZlbW9kaWZ5IiwgIm1vdmVsZXZlbCIsICJjcmVhdGVsZXZlbCIsICJwcm90ZWN0aW9uVGFncyIsICJ0YWd0eXBlIiwgInByb3RlY3Rpb25UeXBlcyIsICJtYXJnaW5SaWdodCIsICJlZGl0ZXhwaXJ5IiwgImNvbG9yIiwgIm1vdmVleHBpcnkiLCAiY3JlYXRlZXhwaXJ5IiwgInNtYWxsIiwgInNob3dleHBpcnkiLCAib3B0aW9uIiwgInByb3RlY3Rpb25UeXBlc0NyZWF0ZU9ubHkiLCAicHJvdGVjdGlvblByZXNldHNJbmZvIiwgImVkaXQiLCAibW92ZSIsICJ1bnByb3RlY3QiLCAiY3JlYXRlIiwgImFjdGlvbnR5cGVzIiwgIl9pdGVyYXRvcjIzIiwgIl9zdGVwMjMiLCAiYWN0aW9uX3R5cGVfdmFsdWUiLCAicmVhc29uRmllbGQiLCAicHJvdGVjdFJlYXNvbiIsICJfaXRlbSR0ZW1wbGF0ZSIsICJ0YWdwYXJhbXMiLCAiY2xvc2VwYXJhbXMiLCAic3RhdHVzSW5pdGVkIiwgImFsbERvbmUiLCAidGFnZ2luZ1BhZ2VJbml0aWFsIiwgInJwcFBhZ2UiLCAicHJvdGVjdEl0IiwgImZvbGxvd1JlZGlyZWN0IiwgInR5cGVuYW1lIiwgInR5cGVyZWFzb24iLCAicnBwcGFyYW1zIiwgInJwcE5hbWUiLCAiZmlsZVJlcXVlc3QiLCAicGFnZU5hbWUiLCAicHJvdGVjdGVkUGFnZSIsICJ0YWdnaW5nUGFnZSIsICJnZXRUYWdnZWRQYWdlIiwgIm9sZHRhZ19yZSIsICJyZV9yZXN1bHQiLCAibmV3VmVyc2lvbiIsICJzdXBwcmVzc1Byb3RlY3RXYXJuaW5nIiwgInJwcFJlIiwgInJwcExpbmsiLCAiZ2V0UGFnZU5hbWUiLCAibmV3dGFnIiwgIlN0cmluZyIsICJyYXciLCAiX3RlbXBsYXRlT2JqZWN0IiwgIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCAid29yZHMiLCAicmVnIiwgIm9yaWdpbmFsVGV4dExlbmd0aCIsICJsaW5rbm9kZSIsICJ3YXRjaFByZWYiLCAib3B0aW9ucyIsICJ3YXRjaF9xdWVyeSIsICJsaW5rbm9kZTIiLCAic2VjdGlvblRleHQiLCAiX2l0ZXJhdG9yMjQiLCAiX3N0ZXAyNCIsICJfaTgiLCAiX09iamVjdCRlbnRyaWVzNSIsICJmcmllbmRseXRhZ19leHBvcnRzIiwgImluaXRfZnJpZW5kbHl0YWciLCAiZnJpZW5kbHl0YWciLCAibW9kZUVuIiwgImNhblJlbW92ZSIsICJjaGVja2VkVGFncyIsICIkYWxsQ2hlY2tib3hEaXZzIiwgImxhYmVsX2VsZW1lbnQiLCAiJGFsbEhlYWRlcnMiLCAic2VhcmNoU3RyaW5nIiwgInNlYXJjaFJlZ2V4IiwgIl9pbmRleCIsICJsYWJlbF90ZXh0IiwgInNlYXJjaEhpdCIsICJyYW5nZSIsICJjcmVhdGVSYW5nZSIsICJ0ZXh0bm9kZSIsICJzZWxlY3ROb2RlQ29udGVudHMiLCAic2V0U3RhcnQiLCAic2V0RW5kIiwgInVuZGVybGluZV9zcGFuIiwgInN1cnJvdW5kQ29udGVudHMiLCAiZmxhdE9iamVjdCIsICJfaXRlcmF0b3IyNSIsICJ0YWdMaXN0IiwgIl9zdGVwMjUiLCAiX2l0ZXJhdG9yMjYiLCAiX3N0ZXAyNiIsICJfaXRlcmF0b3IyNyIsICJfc3RlcDI3IiwgImRlc2NyaXB0aW9uIiwgImV4Y2x1ZGVNSSIsICJ1cGRhdGVTb3J0T3JkZXIiLCAiZGl2RWxlbWVudCIsICJfaXRlcmF0b3IyOCIsICJfc3RlcDI4IiwgImJ1aWxkRmlsZW5hbWUiLCAiX2l0ZXJhdG9yMjkiLCAiX3N0ZXAyOSIsICJfaXRlcmF0b3IzMCIsICJfc3RlcDMwIiwgInF1ZXJ5U2VsZWN0b3JBbGwiLCAicXVpY2tmaWx0ZXIiLCAiYXV0b2NvbXBsZXRlIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiYWxyZWFkeVByZXNlbnRUYWdzIiwgInRhZ05hbWUiLCAiYm94VGFnIiwgImZvbnRTaXplIiwgIm51bUFkZGVkIiwgIm51bVJlbW92ZWQiLCAiYWZ0ZXIiLCAic29ydG9yZGVyIiwgIl9pdGVyYXRvcjMxIiwgIl9zdGVwMzEiLCAiZ2VuZXJhdGVMaW5rcyIsICJtYWtlQ2hlY2tib3giLCAib3RoZXJUYWdOYW1lIiwgIm1ha2VDaGVja2JveGVzRm9yQWxyZWFkeVByZXNlbnRUYWdzIiwgInN1YmRpdiIsICJjaGVja2JveGVzIiwgInVuQ2hlY2tlZFRhZ3MiLCAiZ2V0VW5jaGVja2VkIiwgIl9pdGVyYXRvcjMyIiwgIl9zdGVwMzIiLCAiZG9DYXRlZ29yeUNoZWNrYm94ZXMiLCAiX2l0ZXJhdG9yMzMiLCAiX3N0ZXAzMyIsICJfaXRlcmF0b3IzNCIsICJfc3RlcDM0IiwgIl9pdGVyYXRvcjM1IiwgIl9zdGVwMzUiLCAiX1R3aW5rbGUkdGFnJGFydGljbGUiLCAiYWxwaGFiZXRpY2FsTGlzdCIsICJfaXRlcmF0b3IzNiIsICJfc3RlcDM2IiwgIiR3b3JrYXJlYSIsICJyZW5kZXJlZCIsICJfaXRlcmF0b3IzNyIsICJfc3RlcDM3IiwgIl9pdGVyYXRvcjM4IiwgIl9zdGVwMzgiLCAiZmlyc3RQYXJ0IiwgInNlY29uZFBhcnQiLCAidGFnbmFtZSIsICJwYWdlVGV4dCIsICJwb3N0UmVtb3ZhbCIsICJ0YWdzVG9SZW1vdmUiLCAibWFrZVRlbXBsYXRlTGluayIsICJzdW1tYXJ5VGV4dCIsICJhZGRlZFRhZ3MiLCAicmVtb3ZlZFRhZ3MiLCAibWVyZ2VSZWFzb24iLCAiZGlzY3Vzc0FydGljbGUiLCAibm9uRGlzY3Vzc0FydGljbGUiLCAibWVyZ2VUYWdPdGhlciIsICJtZXJnZVRhZyIsICJuZXdQYXJhbXMiLCAidGFnc1RvUmVtYWluIiwgIm1lcmdlVGFyZ2V0IiwgInRhbGtEaXNjdXNzaW9uVGl0bGUiLCAidGFsa0Rpc2N1c3Npb25UaXRsZUxpbmtlZCIsICJtb3ZlUmVhc29uIiwgIm1vdmVUYWxrcGFnZVRleHQiLCAibW92ZVRhcmdldCIsICJtb3ZlVGFsa3BhZ2UiLCAicmVtb3ZlVGFncyIsICJnZXRSZWRpcmVjdHNGb3IiLCAiX2l0ZXJhdG9yMzkiLCAiX3N0ZXAzOSIsICJ0YWdfcmUiLCAibGhuYW1lc3BhY2UiLCAibGhzaG93IiwgImxobGltaXQiLCAicmVzcG9uc2VYTUwiLCAiX2lkeCIsICJyZW1vdmVkIiwgInRhZ1JlIiwgInRhZ1RleHQiLCAiZ3JvdXBhYmxlVGFncyIsICJncm91cGFibGVFeGlzdGluZ1RhZ3MiLCAiYWRkVGFnIiwgImN1cnJlbnRUYWciLCAiZXhwZXJ0IiwgImV4cGVydDIiLCAiZXhwZXJ0MyIsICJtaXNzaW5nSW5mb3JtYXRpb24iLCAibm90YWJpbGl0eSIsICJ0YXJnZXQxIiwgInRhcmdldDIiLCAidGFyZ2V0MyIsICJjbGVhbnVwUmVhc29uIiwgImFkZFVuZ3JvdXBlZFRhZ3MiLCAiX2k5IiwgIl90YWdzIiwgInRlbXBsYXRlc0FmdGVyIiwgIl9pdGVyYXRvcjQwIiwgIl9zdGVwNDAiLCAibm90YWJpbGl0eUxpc3QiLCAiX2l0ZXJhdG9yNDEiLCAiX3N0ZXA0MSIsICJtaVRlc3QiLCAiX2l0ZXJhdG9yNDIiLCAiX3N0ZXA0MiIsICJtaVJlZ2V4IiwgImFkZE5ld1RhZ3NUb01JIiwgIl9pdGVyYXRvcjQzIiwgIl9zdGVwNDMiLCAiX2l0ZXJhdG9yNDQiLCAiX3N0ZXA0NCIsICJ0YWdJbmRleCIsICJhbHRMYW5nRnJvbSIsICJyZXFBcnRpY2xlTGFuZyIsICJyZXFBcnRpY2xlVGl0bGUiLCAiX2kxMCIsICJfdGFnczIiLCAib2xkVGFncyIsICJwYWdlVGFncyIsICJvbGRQYWdlVGFncyIsICJfaXRlcmF0b3I0NSIsICJfc3RlcDQ1IiwgInBhZ2VUYWciLCAicGFnZVJlIiwgImZpbGUiLCAiX2l0ZXJhdG9yNDYiLCAiX3N0ZXA0NiIsICJub3djb21tb25zTmFtZSIsICJrZWVwbG9jYWxOYW1lIiwgImtlZXBsb2NhbFJlYXNvbiIsICJyZW5hbWVtZWRpYU5ld25hbWUiLCAicmVuYW1lbWVkaWFSZWFzb24iLCAiRG9Ob3RNb3ZlVG9Db21tb25zX3JlYXNvbiIsICJjaGVja1BhcmFtZXRlciIsICJwYXJhbWV0ZXIiLCAiZXhpc3RpbmdUYWdzIiwgInR3aW5rbGVzdHViX2V4cG9ydHMiLCAiaW1wb3J0X2V4dF9nYWRnZXQ0IiwgImluaXRfdHdpbmtsZXN0dWIiLCAidHdpbmtsZXN0dWIiLCAic3R1YiIsICJfVHdpbmtsZSRzdHViIiwgIl9Ud2lua2xlJHN0dWIkY2hlY2tlZCIsICJjdXN0b21jaGVja2JveGVzIiwgIl9pdGVyYXRvcjQ3IiwgIl9zdGVwNDciLCAiX2l0ZXJhdG9yNDgiLCAiX3N0ZXA0OCIsICJfaTExIiwgIl9PYmplY3QkZW50cmllczYiLCAidGFnQ2F0ZWdvcmllcyIsICJ0aXRsZU5hbWUiLCAidGFnQ2F0ZWdvcmllc0hlYWRlciIsICJpc0FycmF5IiwgIl9pMTIiLCAiX09iamVjdCRlbnRyaWVzNyIsICJzdWJ0aXRsZSIsICJzdWJjb250ZW50IiwgIl9pMTMiLCAiX09iamVjdCRlbnRyaWVzOCIsICJfaXRlcmF0b3I0OSIsICJfc3RlcDQ5IiwgImdlbmVyYWwiLCAiZ2VvIiwgIm90aGVycyIsICJiaW8iLCAic2NpZW5jZSIsICJzcG9ydCIsICJ0ZWNoIiwgImFydCIsICJ0b3RhbFRhZ3MiLCAiX2kxNCIsICJfdGFnczMiLCAicGF0cm9sUGFnZSIsICJ0d2lua2xlZGlmZl9leHBvcnRzIiwgImluaXRfdHdpbmtsZWRpZmYiLCAidHdpbmtsZWRpZmYiLCAiZGlmZiIsICJvbGRpZCIsICJtZSIsICJub2RlIiwgInJ2dXNlciIsICJsb2NhdGlvbiIsICJ0d2lua2xldW5saW5rX2V4cG9ydHMiLCAiaW5pdF90d2lua2xldW5saW5rIiwgInR3aW5rbGV1bmxpbmsiLCAicHJlc2V0UmVhc29uIiwgImZpbGVTcGFjZSIsICJsaW5rVGV4dEJlZm9yZSIsICJsaW5rVGV4dEFmdGVyIiwgImxpbmtQbGFpbkJlZm9yZSIsICJsaW5rVGVtcGxhdGVCZWZvcmUiLCAibGlua1BsYWluQWZ0ZXIiLCAiX2kxNSIsICJfYXJyMiIsICJmb250RmFtaWx5IiwgImZvbnRTdHlsZSIsICJibHRpdGxlIiwgImJsbGltaXQiLCAiYmxuYW1lc3BhY2UiLCAicmF3Y29udGludWUiLCAiaXV0aXRsZSIsICJpdWxpbWl0IiwgIml1bmFtZXNwYWNlIiwgImJsZmlsdGVycmVkaXIiLCAiYmFja2xpbmtzIiwgInBhZGRpbmciLCAiaW1hZ2V1c2FnZSIsICJ1bmxpbmtlciIsICJiYXRjaE9wZXJhdGlvbiIsICJzZXRPcHRpb24iLCAic2V0UGFnZUxpc3QiLCAicnVuIiwgInNldEJvdEVkaXQiLCAiZG9CYWNrbGlua3MiLCAiZG9JbWFnZXVzYWdlIiwgInVubGlua0JhY2tsaW5rcyIsICJoYXZlY29udGVudCIsICJfaXRlcmF0b3I1MCIsICJfc3RlcDUwIiwgImNvbnZlcnROdW1iZXIiLCAic2hpZnRDbGlja1N1cHBvcnQiLCAiX2l0ZXJhdG9yNTEiLCAiX3N0ZXA1MSIsICJfaXRlcmF0b3I1MiIsICJfc3RlcDUyIiwgIl9pdGVyYXRvcjUzIiwgIl9zdGVwNTMiLCAib2xkdGV4dCIsICJ3YXJuaW5nU3RyaW5nIiwgImNvbW1lbnRPdXRJbWFnZSIsICJyZW1vdmVMaW5rIiwgInJlbW92ZVRlbXBsYXRlIiwgIndvcmtlckZhaWx1cmUiLCAid29ya2VyU3VjY2VzcyIsICJ0d2lua2xlZmx1ZmZfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVmbHVmZiIsICJ0d2lua2xlZmx1ZmYiLCAiZmx1ZmYiLCAiaG9vayIsICJhZGRMaW5rcyIsICJza2lwVGFsayIsICJjb250cmlidXRpb25zIiwgInJlY2VudGNoYW5nZXMiLCAidHJ1c3RlZEJvdHMiLCAiaGlkZGVuTmFtZSIsICJsaW5rQnVpbGRlciIsICJzcGFuVGFnIiwgImJ1aWxkTGluayIsICJyb2xsYmFja0xpbmtzIiwgInZhbmRhbCIsICJpbmxpbmUiLCAicmV2IiwgInJldk5vZGUiLCAibm9ybU5vZGUiLCAidmFuZE5vZGUiLCAibm9ybUxpbmsiLCAidmFuZExpbmsiLCAicmV2ZXJ0IiwgImRpc2FibGVMaW5rcyIsICJzZXBhcmF0b3IiLCAicmVzdG9yZVRoaXNSZXZpc2lvbkxpbmsiLCAicmV2aXNpb25SZWYiLCAicmV2ZXJ0VG9SZXZpc2lvbk5vZGUiLCAiZm9udFdlaWdodCIsICJyZXZlcnRUb1JldmlzaW9uTGluayIsICJyZXZlcnRUb1JldmlzaW9uIiwgIiRsaXN0IiwgImRhdGFzZXQiLCAibXdSZXZpZCIsICJub3QiLCAidGFyZ2V0UGFnZSIsICJoaXN0TGlzdCIsICJ0b0FycmF5IiwgInNoaWZ0IiwgIl9pdGVyYXRvcjU0IiwgIl9zdGVwNTQiLCAiX2l0ZXJhdG9yNTUiLCAiX3N0ZXA1NSIsICJ3YXJuRnJvbVRhbGsiLCAieHRpdGxlIiwgInRhbGtMaW5rIiwgImV4dHJhUGFyYW1zIiwgIm9sZFRpdGxlIiwgInJldmVydHN1bW1hcnkiLCAiXyIsICJuZXdUaXRsZSIsICJudGl0bGUiLCAiaXNJUHY2QWRkcmVzcyIsICJzYW5pdGl6ZUlQdjYiLCAiZ2V0RWxlbWVudHNCeU5hbWUiLCAibm90aWZ5U3RhdHVzIiwgImF1dG9IaWRlIiwgInVzZXJIaWRkZW4iLCAiaW50ZXN0YWN0aW9ucyIsICJjdXJ0aW1lc3RhbXAiLCAib2xkcmV2IiwgInRvUmV2aXNpb24iLCAibGFzdHJldmlkIiwgInRvdWNoZWQiLCAibG9hZHRpbWVzdGFtcCIsICJjc3JmdG9rZW4iLCAicmV2ZXJ0VG9SZXZJRCIsICJyZXZlcnRUb1VzZXIiLCAicmV2ZXJ0VG9Vc2VySGlkZGVuIiwgIm9wdGlvbmFsX3N1bW1hcnkiLCAiZm9ybWF0U3VtbWFyeSIsICJ1bmRvIiwgInVuZG9hZnRlciIsICJiYXNldGltZXN0YW1wIiwgInN0YXJ0dGltZXN0YW1wIiwgIm1pbm9yIiwgImJvdCIsICJ3YXRjaE9yRXhwaXJ5IiwgIndhdGNobGlzdCIsICJjb21wbGV0ZSIsICJyZXZzIiwgImxhc3R1c2VyIiwgInVzZXJOb3JtIiwgImNvbnQiLCAiZ29vZF9yZXZpc2lvbiIsICJ1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiIsICJnb29kdXNlciIsICJnb29kdXNlckhpZGRlbiIsICJleHRyYV9zdW1tYXJ5IiwgIm5vdGlmeVVzZXIiLCAieG1sIiwgIiRlZGl0IiwgIndpbmRvd1F1ZXJ5IiwgInZhbmFydGljbGVyZXZpZCIsICJ2YW5hcnRpY2xlZ29vZHJldmlkIiwgImJ1aWx0SW5TdHJpbmciLCAiY3VzdG9tU3RyaW5nIiwgInJlc3VsdExlbiIsICJ1bmVzY2FwZSIsICJlbmNvZGVVUklDb21wb25lbnQiLCAiY29udHJpYnNMaW5rIiwgImNvbnRyaWJzTGVuIiwgInR3aW5rbGViYXRjaGRlbGV0ZV9leHBvcnRzIiwgImluaXRfdHdpbmtsZWJhdGNoZGVsZXRlIiwgInR3aW5rbGViYXRjaGRlbGV0ZSIsICJiYXRjaGRlbGV0ZSIsICJ1bmxpbmtDYWNoZSIsICJzdWJwYWdlc0xvYWRlZCIsICJ0b2dnbGVTdWJwYWdlcyIsICJkZWxldGVyZWFzb25saXN0IiwgImNoYW5nZV9jb21tb25fcmVhc29uIiwgImdlbmVyYXRvciIsICJnY210aXRsZSIsICJnY21saW1pdCIsICJnYXBsaW1pdCIsICJnYXBuYW1lc3BhY2UiLCAiZ2FwcHJlZml4IiwgInBhdGhTcGxpdCIsICJwYXRobmFtZSIsICJ0aXRsZVNwbGl0IiwgImdxcHBhZ2UiLCAiZ3FwbGltaXQiLCAiZ3BsbGltaXQiLCAic3RhdHVzZGl2IiwgIiRwYWdlcyIsICIkcGFnZSIsICJpc1JlZGlyIiwgIiRlZGl0cHJvdCIsICJpc1Byb3RlY3RlZCIsICJtZXRhZGF0YSIsICJmb3JtXyIsICJfaXRlcmF0b3I1NiIsICJfc3RlcDU2IiwgImdlbmVyYXRlQXJyb3dMaW5rcyIsICJuZXh0RWxlbWVudFNpYmxpbmciLCAiZ2VuZXJhdGVOZXdQYWdlTGlzdCIsICJlbGVtZW50cyIsICJOb2RlTGlzdCIsICJfaXRlcmF0b3I1NyIsICJfc3RlcDU3IiwgIkhUTUxJbnB1dEVsZW1lbnQiLCAibmV3UGFnZUxpc3QiLCAiZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzIiwgImRlbGV0ZV9yZWRpcmVjdHMiLCAiZGVsZXRlX3N1YnBhZ2VfdGFsa3MiLCAiZGVsZXRlX3RhbGsiLCAidW5saW5rX3N1YnBhZ2VzIiwgInVubGlua19wYWdlIiwgIl9pdGVyYXRvcjU4IiwgIl9zdGVwNTgiLCAic3ViZ3JvdXBfIiwgInJlcGxhY2VXaXRoIiwgIl9pdGVyYXRvcjU5IiwgIl9zdGVwNTkiLCAiX2l0ZXJhdG9yNjAiLCAiX3N0ZXA2MCIsICJsb2FkaW5nVGV4dCIsICJzdWJwYWdlTGlzdGVyIiwgInBhZ2VUaXRsZSIsICJwYWdlTmFtZUZ1bGwiLCAic3VicGFnZUxpc3QiLCAicGFnZU5hbWVfIiwgIl9pdGVyYXRvcjYxIiwgIl9zdGVwNjEiLCAiX2l0ZXJhdG9yNjIiLCAiX3N0ZXA2MiIsICJfaXRlcmF0b3I2MyIsICJfc3RlcDYzIiwgIl9pdGVyYXRvcjY0IiwgIl9zdGVwNjQiLCAibnVtUHJvdGVjdGVkIiwgInN1YnBhZ2VzIiwgImRlbGV0ZV9wYWdlIiwgImRlbGV0ZV9zdWJwYWdlcyIsICJ1bmxpbmtfZmlsZSIsICJwYWdlRGVsZXRlciIsICJkb0V4dHJhcyIsICJzdWJwYWdlRGVsZXRlciIsICJ0aGluZ1dpdGhQYXJhbWV0ZXJzIiwgInVubGlua0JhY2tsaW5rc01haW4iLCAidW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluIiwgInRhbGtQYWdlIiwgInJlZGlyZWN0RGVsZXRlciIsICJvbGRfdGV4dCIsICJzZXRNYXhDb25mbGljdFJldHJpZXMiLCAidW5saW5rSW1hZ2VJbnN0YW5jZXMiLCAidHdpbmtsZWJhdGNodW5kZWxldGVfZXhwb3J0cyIsICJpbml0X3R3aW5rbGViYXRjaHVuZGVsZXRlIiwgInR3aW5rbGViYXRjaHVuZGVsZXRlIiwgImJhdGNodW5kZWxldGUiLCAicHJvamVjdCIsICJ1bmRlbF90YWxrIiwgInBhZ2VVbmRlbGV0ZXIiLCAic2V0TWF4UmV0cmllcyIsICJ1bmRlbGV0ZVBhZ2UiLCAidGFsa3BhZ2VuYW1lIiwgImdldFRhbGtQYWdlIiwgImRydnByb3AiLCAiZHJ2bGltaXQiLCAidW5kZWxldGVUYWxrIiwgImRlbHJldnMiLCAidHdpbmtsZWJhdGNocHJvdGVjdF9leHBvcnRzIiwgImluaXRfdHdpbmtsZWJhdGNocHJvdGVjdCIsICJ0d2lua2xlYmF0Y2hwcm90ZWN0IiwgImJhdGNocHJvdGVjdCIsICJwcm90TGV2ZWwiLCAiX2l0ZXJhdG9yNjUiLCAiX3N0ZXA2NSIsICJtaXNzaW5nIiwgImVkaXRQcm90IiwgImltYWdlaW5mbyIsICJyZXZpc2lvbnMiLCAiX2l0ZXJhdG9yNjYiLCAiX3N0ZXA2NiIsICJsaW5rcyIsICJjdXJyZW50UHJvdGVjdENvdW50ZXIiLCAiY3VycmVudHByb3RlY3RvciIsICJ0YWtlbkFjdGlvbiIsICJjcmVhdGVtb2RpZnkiLCAidHdpbmtsZWNsb3NlX2V4cG9ydHMiLCAiaW5pdF90d2lua2xlY2xvc2UiLCAidHdpbmtsZWNsb3NlIiwgInNlbGVjdG9yIiwgImRlbE5vZGUiLCAiZGVsTGluayIsICJfaXRlcmF0b3I2NyIsICJfc3RlcDY3IiwgImhlYWRsaW5laHJlZiIsICJtIiwgInBhZ2Vub3RleGlzdCIsICJoYXNDbGFzcyIsICJ0bXBOb2RlIiwgImNsb25lTm9kZSIsICJjb2RlcyIsICJpciIsICJyZXAiLCAibmUiLCAibnEiLCAiayIsICJhZG1pbm9ubHkiLCAic2siLCAidGsiLCAicnIiLCAiZGFuIiwgImQiLCAiaWMiLCAic2QiLCAibHNzZCIsICJzdmciLCAiZHJlcCIsICJjIiwgInIiLCAiY3IiLCAibWVyZ2UiLCAibWVyZ2VhcHByb3ZlZCIsICJuYyIsICJub29wIiwgImNoYW5nZV9jb2RlIiwgImNoYW5nZV9vcGVyYXRpb24iLCAicmVzdWx0RGF0YSIsICJfaTE2IiwgIl9PYmplY3QkZW50cmllczkiLCAiX2l0ZXJhdG9yNjgiLCAiX3N0ZXA2OCIsICJzZHJlYXNvbiIsICJyZW1hcmsiLCAicGFyZW50U2VjdGlvbiIsICJ0YWxrZW5kIiwgImRlbCIsICJrZWVwIiwgInBhZ2V0aXRsZSIsICJnZXROYW1lc3BhY2VJZCIsICJ0YWxrcGFnZXRpdGxlIiwgImdldE1haW5UZXh0IiwgInRvU3RyaW5nIiwgInZmZGtlcHQiLCAic2V0UHJlcGVuZFRleHQiLCAibmV3dGV4dCIsICJrZWVwQ29tcGxldGUiLCAic2F2ZVRhbGsiLCAic2JlZ2luIiwgInNlbmQiLCAiYmFyIiwgImRpc2FibGVMaW5rIiwgInR3aW5rbGVjb25maWdfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVjb25maWciLCAidHdpbmtsZWNvbmZpZyIsICJ3YXRjaGxpc3RFbnVtcyIsICJ5ZXMiLCAibm8iLCAiZGVmYXVsdCIsICJjb21tb25TZXRzIiwgImNzZENyaXRlcmlhIiwgImRiIiwgImNzZENyaXRlcmlhRGlzcGxheU9yZGVyIiwgImNzZENyaXRlcmlhTm90aWZpY2F0aW9uIiwgImNzZENyaXRlcmlhTm90aWZpY2F0aW9uRGlzcGxheU9yZGVyIiwgImNzZEFuZERJQ3JpdGVyaWEiLCAiY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlciIsICJ4ZmRDcml0ZXJpYSIsICJkZWxldGUiLCAiZndkY3NkIiwgInhmZENyaXRlcmlhRGlzcGxheU9yZGVyIiwgIm5hbWVzcGFjZXNOb1NwZWNpYWwiLCAibW9kdWxlIiwgInByZWZlcmVuY2VzIiwgImVudW1WYWx1ZXMiLCAidGFiIiwgImhlbHB0aXAiLCAic2V0VmFsdWVzIiwgImFkbWluT25seSIsICJjdXN0b21MaXN0VmFsdWVUaXRsZSIsICJjdXN0b21MaXN0TGFiZWxUaXRsZSIsICJ2YW5kIiwgInRvcmV2IiwgIm1pbmUiLCAicmVjZW50Y2hhbmdlc2xpbmtlZCIsICJidXR0b25DbGljayIsICJyYWRpb0NsaWNrIiwgInNldERpc3BsYXlPcmRlciIsICJjYXQiLCAiYWxwaGEiLCAic2FtZSIsICJub25hZG1pbm9ubHkiLCAiYWxsIiwgImNvbnRlbnRkaXYiLCAidG9jdGFibGUiLCAibWFyZ2luTGVmdCIsICJ0b2N0aXRsZSIsICJ0b2NoMiIsICJ0b2N0b2dnbGUiLCAidG9jdG9nZ2xlbGluayIsICJ0b2N1bCIsICIkdG9jdWwiLCAidG9nZ2xlIiwgImNvbnRlbnRmb3JtIiwgInNlY3Rpb25rZXkiLCAidG9jbGkiLCAidG9jYSIsICJyb3ciLCAiY2VsbCIsICJib3JkZXJCb3R0b20iLCAibWFyZ2luVG9wIiwgInJvd2NvdW50IiwgInByZWZrZXkiLCAicHJlZiIsICJtYXJnaW5Cb3R0b20iLCAiYmFja2dyb3VuZENvbG9yIiwgImdvdFByZWYiLCAidGV4dEFsaWduIiwgInBhZGRpbmdSaWdodCIsICJvcHRpb25FeGlzdHMiLCAiX2kxNyIsICJfT2JqZWN0JGVudHJpZXMxMCIsICJlbnVtdmFsdWUiLCAiZW51bWRpc3BsYXkiLCAiY2hlY2tkaXYiLCAicGFkZGluZ0xlZnQiLCAid29ya2VyIiwgIml0ZW1rZXkiLCAiaXRlbXZhbHVlIiwgImNoZWNrbGFiZWwiLCAiX2l0ZXJhdG9yNjkiLCAiX3N0ZXA2OSIsICJfaTE4IiwgIl9PYmplY3QkZW50cmllczExIiwgImN1c3RvbUxpc3RCdXR0b24iLCAibGlzdERpYWxvZyIsICJyZXNldGxpbmsiLCAicmVzZXRQcmVmTGluayIsICJjc3NGbG9hdCIsICJtYXJnaW4iLCAiZm9vdGVyYm94IiwgInN1Ym1pdEJ1dHRvbiIsICJmb290ZXJzcGFuIiwgImZvb3RlcmEiLCAicmVzZXRBbGxQcmVmcyIsICJoYXNoIiwgImxvYyIsICJib3giLCAic2NyaXB0UGFnZU5hbWUiLCAiYWRkUm93IiwgImRsZ3RhYmxlIiwgImNvbnRlbnR0ciIsICJjb250ZW50dGQiLCAicmVtb3ZlQnV0dG9uIiwgIl9jdXJwcmVmJGN1c3RvbUxpc3RWYSIsICJfY3VycHJlZiRjdXN0b21MaXN0TGEiLCAiJHByZWZidXR0b24iLCAiY3VydmFsdWUiLCAiY3VycHJlZiIsICJkaWFsb2djb250ZW50IiwgImRsZ3Rib2R5IiwgImRsZ3RyIiwgImRsZ3RoIiwgImdvdFJvdyIsICJfaXRlcmF0b3I3MCIsICJfc3RlcDcwIiwgImRsZ3Rmb290IiwgImRsZ3RkIiwgImFkZEJ1dHRvbiIsICJtaW5XaWR0aCIsICJidXR0b24iLCAicmVzZXQiLCAidGJvZHkiLCAiJGJ1dHRvbiIsICJvbGR2YWx1ZSIsICJyZXNldFByZWYiLCAiJHRib2R5IiwgIl9pdGVyYXRvcjcxIiwgIl9zdGVwNzEiLCAiaW5wdXRrZXkiLCAid2FudGVkcHJlZiIsICJmb3VuZGl0IiwgIl9pMTkiLCAiX09iamVjdCRlbnRyaWVzMTIiLCAidXNlcmpzIiwgIndyaXRlUHJlZnMiLCAibmV3Q29uZmlnIiwgIm9wdGlvbnNWZXJzaW9uIiwgImNvbXBhcmUiLCAiYiIsICJfaXRlcmF0b3I3MiIsICJfc3RlcDcyIiwgInVzZXJWYWx1ZSIsICJfaXRlcmF0b3I3MyIsICJfc3RlcDczIiwgIl9pMjAiLCAiX09iamVjdCRlbnRyaWVzMTMiLCAibm93aWtpIiwgIkpTT04iLCAic3RyaW5naWZ5IiwgInNhdmVTdWNjZXNzIiwgIm5vdGljZWJveCIsICJub3RpY2VjbGVhciIsICJjbGVhciIsICJQcm9taXNlIiwgInJlc29sdmUiLCAidHdpbmtsZUxvYWQiLCAiX3R3aW5rbGVMb2FkIiwgImFwcGx5IiwgImFyZ3VtZW50cyJdCn0K +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWFydi5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGV3YXJuLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvYXBpLnRzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZWJsb2NrLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvZnJpZW5kbHl0YWxrYmFjay5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGVzcGVlZHkuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlY29weXZpby5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGV4ZmQuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlaW1hZ2UuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlcHJvdGVjdC5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL2ZyaWVuZGx5dGFnLmpzIiwgInNyYy9Ud2lua2xlL21vZHVsZXMvdHdpbmtsZXN0dWIuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlZGlmZi5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGV1bmxpbmsuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlZmx1ZmYuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlYmF0Y2hkZWxldGUuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlYmF0Y2h1bmRlbGV0ZS5qcyIsICJzcmMvVHdpbmtsZS9tb2R1bGVzL3R3aW5rbGViYXRjaHByb3RlY3QuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlY2xvc2UuanMiLCAic3JjL1R3aW5rbGUvbW9kdWxlcy90d2lua2xlY29uZmlnLmpzIiwgInNyYy9Ud2lua2xlL1R3aW5rbGUuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGUuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdGNvbnN0IFR3aW5rbGUgPSB7fTtcblx0d2luZG93LlR3aW5rbGUgfHw9IFR3aW5rbGU7IC8vIGFsbG93IGdsb2JhbCBhY2Nlc3Ncblx0Ly8gV3JhcCB3aXRoIGFub255bW91cyBmdW5jdGlvblxuXHQvLyBDaGVjayBpZiBhY2NvdW50IGlzIGV4cGVyaWVuY2VkIGVub3VnaCB0byB1c2UgVHdpbmtsZVxuXHRpZiAoIU1vcmViaXRzLnVzZXJJc0luR3JvdXAoJ2F1dG9jb25maXJtZWQnKSAmJiAhTW9yZWJpdHMudXNlcklzSW5Hcm91cCgnY29uZmlybWVkJykpIHtcblx0XHRjb25zb2xlLndhcm4oJ1tUd2lua2xlXSDpnZ7noa7orqTnlKjmiLfmiJboh6rliqjnoa7orqTnlKjmiLfvvIxUd2lua2xl5LiN5Lya6L+Q6KGM44CCJyk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdC8qKlxuXHQgKiBUd2lua2xlLXNwZWNpZmljIGRhdGEgc2hhcmVkIGJ5IG11bHRpcGxlIG1vZHVsZXNcblx0ICogTGlrZWx5IGN1c3RvbWl6ZWQgcGVyIGluc3RhbGxhdGlvblxuXHQgKi9cblx0Ly8gQ3VzdG9tIGNoYW5nZSB0YWcocykgdG8gYmUgYXBwbGllZCB0byBhbGwgVHdpbmtsZSBhY3Rpb25zLCBjcmVhdGUgYXQgU3BlY2lhbDpUYWdzXG5cdFR3aW5rbGUuY2hhbmdlVGFncyA9ICdUd2lua2xlJztcblx0Ly8gQXZhaWxhYmxlIGZvciBhY3Rpb25zIHRoYXQgZG9uJ3QgKHlldCkgc3VwcG9ydCB0YWdzXG5cdFR3aW5rbGUuc3VtbWFyeUFkID0gJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknO1xuXHQvLyBWYXJpb3VzIGhhdG5vdGUgdGVtcGxhdGVzLCB1c2VkIHdoZW4gdGFnZ2luZyAoY3NkL3hmZC90YWcvcHJvZC9wcm90ZWN0KSB0byBlbnN1cmUgb3JkZXJcblx0VHdpbmtsZS5oYXRub3RlUmVnZXggPVxuXHRcdCcoPzpTaG9ydFsgX11kZXNjcmlwdGlvbil8KD86UmVsbGlua3xIYXRub3RlfEhBVCl8KD86TWFpbnxb57uG57SwXVvoioLnr4BdfE1haW5bIF9dYXJ0aWNsZXN85Li7W+adoeainV3nm658SHVycmljYW5lWyBfXW1haW58W+adoeainV3nm6585Li7fFvpoIHpobVd6Z2ifOS4u1vpoIHpobVd6Z2ifOS4u1vpoIHpobVdfOS4u1vpoYzpophd55uufE1haW5bIF9dYXJ0aWNsZXxBUCl8KD86V3Jvbmd0aXRsZXxDb3JyZWN0WyBfXXRpdGxlKXwoPzrkuLvmnaHnm67mtojmrafkuYl85Li75qKd55uu5raI5q2n576pfOa2iOatp+S5iemTvuaOpXzmtojmrafnvqnpj4jmjqV85raI5q2n576p6YCj57WQfOa2iOi/nnzmtojpgKN85raI5q2n5LmJ6L+e57uTfERpc2FtYkxpbmt8Tm90ZXJlZnxEYWJsaW5rKXwoPzpEaXN0aW5ndWlzaHzkuI3mmK98Tm90fOaPkOekunzmt7fmt4Z85YiG5YilfOWIhuWIq3zljYDliKV85Yy65YirfOacrOadoeebrueahOS4u+mimOS4jeaYr3zmnKzmop3nm67nmoTkuLvpoYzkuI3mmK985pys5p2h55uu5Li76aKY5LiN5pivfOacrOaineebruS4u+mhjOS4jeaYr3zmnaHnm67kuLvpopjkuI3mmK985qKd55uu5Li76aGM5LiN5pivfOS4u+mimOS4jeaYr3zkuLvpoYzkuI3mmK98Q29uZnVzZWR85Yy65YiGfOWNgOWIhnxDb25mdXNpb258Q29uZnVzZXxSZWRpcmVjdE5PVHxNaXNzcGVsbGluZyl8KD86RGlzdGluZ3Vpc2gyfFNlbGZEaXN0aW5ndWlzaHxOb3QyfOS4jeaYrzIpfCg/OkZvcil8KD86RGV0YWlsc3xGdXJ0aGVyfFNlZXzlj6bop4F85Y+m6KaLfE1vcmV855u46Zec5qKd55uufOebuOWFs+adoeebrnxEZXRhaWx86KeBfOimi3zmm7TlpJrotYTmlpl85pu05aSa6LOH5paZfEZ1cnRoZXJbIF9daW5mb3JtYXRpb2585pu05aSa6LWE6K6vfOabtOWkmuizh+ioinxNb3JlWyBfXWluZm9ybWF0aW9ufOabtOWkmuS/oeaBryl8KD86U2VsZnJlZil8KD86QWJvdXR8T3RoZXJ1c2VzNHzlhbPkuo586Zec5pa8KXwoPzpPdGhlclsgX111c2VzfE90aGVydXNlfOadoeebrua2iOatp+S5iXzmop3nm67mtojmrafnvql85LuW55SofE90aGVydXNlcyl8KD86T3RoZXJbIF9ddXNlcyBsaXN0fE90aGVydXNlbGlzdHzkuLvmop3nm67mtojmrafnvqnliJfooah85Li75p2h55uu5raI5q2n5LmJ5YiX6KGofE90aGVydXNlc2xpc3R8QWJvdXRsaXN0fEFib3V0WyBfXWxpc3R8T3RoZXJ1c2VzWyBfXWxpc3QpfCg/OlJlZGlyZWN0fOmHjeWumuWQkeiHs+atpHxSZWRpcmVjdHNbIF9daGVyZXxSZWRpcmVjdFsgX110byl8KD86UmVkaXJlY3QyfOS4u+aineebrua2iOatp+e+qTJ85Li75p2h55uu5raI5q2n5LmJMnxSZWRpcnzph43lrprlkJHoh7PmraQyKXwoPzpSZWRpcmVjdDMpfCg/OlJlZGlyZWN0NCl8KD86UmVkaXJlY3QtZGlzdGluZ3Vpc2gpfCg/OlJlZGlyZWN0LXN5bm9ueW0pfCg/OlJlZGlyZWN0LW11bHRpKXwoPzpTZWVbIF9dV2lrdGlvbmFyeXxTZWV3aWt0KXwoPzpTZWVhbHNvfOWPgueci3zlj4PnnIt8U2VlWyBfXWFsc2985Y+C6KeBfOWPg+imi3xBbHNvKXwoPzpTZWVbIF9dYWxzbzJ8U2VlYWxzbzJ85LiN6L2J5o+b5Y+D6KaLfOS4jei9rOaNouWPguingSl8KD86T3RoZXJbIF9dcGxhY2VzKXwoPzpDb250cmFzdHzlsI3mr5R85a+55q+UKSc7XG5cdFR3aW5rbGUuaW5pdENhbGxiYWNrcyA9IFtdO1xuXHQvKipcblx0ICogQWRkcyBhIGNhbGxiYWNrIHRvIGV4ZWN1dGUgd2hlbiBUd2lua2xlIGhhcyBsb2FkZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmNcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSAtIG5hbWUgb2YgbW9kdWxlIHVzZWQgdG8gY2hlY2sgaWYgaXMgZGlzYWJsZWQuXG5cdCAqIElmIG5hbWUgaXMgbm90IGdpdmVuLCBtb2R1bGUgaXMgbG9hZGVkIHVuY29uZGl0aW9uYWxseS5cblx0ICovXG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrID0gKGZ1bmMsIG5hbWUpID0+IHtcblx0XHRUd2lua2xlLmluaXRDYWxsYmFja3NbVHdpbmtsZS5pbml0Q2FsbGJhY2tzLmxlbmd0aF0gPSB7XG5cdFx0XHRmdW5jLFxuXHRcdFx0bmFtZSxcblx0XHR9O1xuXHR9O1xuXHRUd2lua2xlLmRlZmF1bHRDb25maWcgPSB7fTtcblx0LyoqXG5cdCAqIFRoaXMgaG9sZHMgdGhlIGRlZmF1bHQgc2V0IG9mIHByZWZlcmVuY2VzIHVzZWQgYnkgVHdpbmtsZS5cblx0ICogSXQgaXMgaW1wb3J0YW50IHRoYXQgYWxsIG5ldyBwcmVmZXJlbmNlcyBhZGRlZCBoZXJlLCBlc3BlY2lhbGx5IGFkbWluLW9ubHkgb25lcywgYXJlIGFsc28gYWRkZWQgdG9cblx0ICogfFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zfCBpbiB0d2lua2xlY29uZmlnLmpzLCBzbyB0aGV5IGFyZSBjb25maWd1cmFibGUgdmlhIHRoZSBUd2lua2xlIHByZWZlcmVuY2VzIHBhbmVsLlxuXHQgKiBGb3IgaGVscCBvbiB0aGUgYWN0dWFsIHByZWZlcmVuY2VzLCBzZWUgdGhlIGNvbW1lbnRzIGluIHR3aW5rbGVjb25maWcuanMuXG5cdCAqXG5cdCAqIEZvcm1lcmx5IFR3aW5rbGUuZGVmYXVsdENvbmZpZy50d2lua2xlXG5cdCAqL1xuXHRUd2lua2xlLmRlZmF1bHRDb25maWcgPSB7XG5cdFx0Ly8gR2VuZXJhbFxuXHRcdHVzZXJUYWxrUGFnZU1vZGU6ICd0YWInLFxuXHRcdGRpYWxvZ0xhcmdlRm9udDogZmFsc2UsXG5cdFx0ZGlzYWJsZWRNb2R1bGVzOiBNb3JlYml0cy51c2VySXNTeXNvcCA/IFtdIDogWydibG9jayddLFxuXHRcdC8vIGRlZmF1bHQgdG8gZGlzYWJsZSBibG9jayBmb3Igbm9uLXN5c29wLCBpZiBlbmFibGUgbWFudWFsbHksIHRoZXkgY2FuIG9ubHkgdXNlIGl0IHRvIHRhZyB1c2VycGFnZVxuXHRcdGRpc2FibGVkU3lzb3BNb2R1bGVzOiBbXSxcblx0XHQvLyBBUlZcblx0XHRzcGlXYXRjaFJlcG9ydDogJ3llcycsXG5cdFx0Ly8gQmxvY2tcblx0XHRkZWZhdWx0VG9CbG9jazY0OiBmYWxzZSxcblx0XHRkZWZhdWx0VG9QYXJ0aWFsQmxvY2tzOiBmYWxzZSxcblx0XHRibGFua1RhbGtwYWdlT25JbmRlZkJsb2NrOiBmYWxzZSxcblx0XHR3YXRjaEJsb2NrTm90aWNlczogJ3llcycsXG5cdFx0Y3VzdG9tQmxvY2tSZWFzb25MaXN0OiBbXSxcblx0XHQvLyBGbHVmZiAocmV2ZXJ0IGFuZCByb2xsYmFjaylcblx0XHRvcGVuVGFsa1BhZ2U6IFtdLFxuXHRcdG9wZW5UYWxrUGFnZU9uQXV0b1JldmVydDogZmFsc2UsXG5cdFx0cm9sbGJhY2tJblBsYWNlOiBmYWxzZSxcblx0XHRtYXJrUmV2ZXJ0ZWRQYWdlc0FzTWlub3I6IFsndmFuZCddLFxuXHRcdHdhdGNoUmV2ZXJ0ZWRQYWdlczogWydub3JtJywgJ3ZhbmQnLCAndG9yZXYnXSxcblx0XHR3YXRjaFJldmVydGVkRXhwaXJ5OiAneWVzJyxcblx0XHRvZmZlclJlYXNvbk9uTm9ybWFsUmV2ZXJ0OiB0cnVlLFxuXHRcdGNvbmZpcm1PbkZsdWZmOiBmYWxzZSxcblx0XHRzaG93Um9sbGJhY2tMaW5rczogWydkaWZmJywgJ290aGVycyddLFxuXHRcdGN1c3RvbVJldmVydFN1bW1hcnk6IFtdLFxuXHRcdC8vIERJICh0d2lua2xlaW1hZ2UpXG5cdFx0bm90aWZ5VXNlck9uRGVsaTogdHJ1ZSxcblx0XHRkZWxpV2F0Y2hQYWdlOiAnZGVmYXVsdCcsXG5cdFx0ZGVsaVdhdGNoVXNlcjogJ2RlZmF1bHQnLFxuXHRcdC8vIFByb3RlY3Rcblx0XHR3YXRjaFJlcXVlc3RlZFBhZ2VzOiAneWVzJyxcblx0XHR3YXRjaFBQVGFnZ2VkUGFnZXM6ICdkZWZhdWx0Jyxcblx0XHR3YXRjaFByb3RlY3RlZFBhZ2VzOiAnZGVmYXVsdCcsXG5cdFx0Ly8gQ1NEXG5cdFx0c3BlZWR5U2VsZWN0aW9uU3R5bGU6ICdidXR0b25DbGljaycsXG5cdFx0d2F0Y2hTcGVlZHlQYWdlczogWydnMScsICdnMycsICdnNCcsICdnNycsICdnOCddLFxuXHRcdHdhdGNoU3BlZWR5RXhwaXJ5OiAneWVzJyxcblx0XHRtYXJrU3BlZWR5UGFnZXNBc1BhdHJvbGxlZDogZmFsc2UsXG5cdFx0d2F0Y2hTcGVlZHlVc2VyOiAnMSBtb250aCcsXG5cdFx0Ly8gdGhlc2UgbmV4dCB0d28gc2hvdWxkIHByb2JhYmx5IGJlIGlkZW50aWNhbCBieSBkZWZhdWx0XG5cdFx0bm90aWZ5VXNlck9uU3BlZWR5RGVsZXRpb25Ob21pbmF0aW9uOiBbXG5cdFx0XHQnZGInLFxuXHRcdFx0J2cxJyxcblx0XHRcdCdnMicsXG5cdFx0XHQnZzMnLFxuXHRcdFx0J2c0Jyxcblx0XHRcdCdnNScsXG5cdFx0XHQnZzYnLFxuXHRcdFx0J2c3Jyxcblx0XHRcdCdnOCcsXG5cdFx0XHQnZzknLFxuXHRcdFx0J2ExJyxcblx0XHRcdCdhMicsXG5cdFx0XHQnYTMnLFxuXHRcdFx0J3IxJyxcblx0XHRcdCdyMicsXG5cdFx0XHQnZjEnLFxuXHRcdFx0J2YyJyxcblx0XHRcdCdmMycsXG5cdFx0XHQnZjQnLFxuXHRcdFx0J2Y1Jyxcblx0XHRcdCdvMScsXG5cdFx0XHQnbzInLFxuXHRcdFx0J28zJyxcblx0XHRdLFxuXHRcdHdhcm5Vc2VyT25TcGVlZHlEZWxldGU6IFtcblx0XHRcdCdkYicsXG5cdFx0XHQnZzEnLFxuXHRcdFx0J2cyJyxcblx0XHRcdCdnMycsXG5cdFx0XHQnZzQnLFxuXHRcdFx0J2c1Jyxcblx0XHRcdCdnNicsXG5cdFx0XHQnZzcnLFxuXHRcdFx0J2c4Jyxcblx0XHRcdCdnOScsXG5cdFx0XHQnYTEnLFxuXHRcdFx0J2EyJyxcblx0XHRcdCdhMycsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRcdCdmMScsXG5cdFx0XHQnZjInLFxuXHRcdFx0J2YzJyxcblx0XHRcdCdmNCcsXG5cdFx0XHQnZjUnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdF0sXG5cdFx0cHJvbXB0Rm9yU3BlZWR5RGVsZXRpb25TdW1tYXJ5OiBbXSxcblx0XHRvcGVuVXNlclRhbGtQYWdlT25TcGVlZHlEZWxldGU6IFtdLFxuXHRcdGRlbGV0ZVRhbGtQYWdlT25EZWxldGU6IHRydWUsXG5cdFx0ZGVsZXRlUmVkaXJlY3RzT25EZWxldGU6IHRydWUsXG5cdFx0ZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGU6IGZhbHNlLFxuXHRcdHNwZWVkeVdpbmRvd0hlaWdodDogNTAwLFxuXHRcdHNwZWVkeVdpbmRvd1dpZHRoOiA4MDAsXG5cdFx0bG9nU3BlZWR5Tm9taW5hdGlvbnM6IHRydWUsXG5cdFx0c3BlZWR5TG9nUGFnZU5hbWU6ICdDU0Tml6Xlv5cnLFxuXHRcdG5vTG9nT25TcGVlZHlOb21pbmF0aW9uOiBbJ28xJ10sXG5cdFx0ZW5sYXJnZUc3SW5wdXQ6IGZhbHNlLFxuXHRcdC8vIFVubGlua1xuXHRcdHVubGlua05hbWVzcGFjZXM6IFsnMCcsICc2JywgJzEwJywgJzExOCddLFxuXHRcdC8vIFdhcm5cblx0XHRkZWZhdWx0V2FybmluZ0dyb3VwOiAnMScsXG5cdFx0Y29tYmluZWRTaW5nbGV0TWVudXM6IGZhbHNlLFxuXHRcdHdhdGNoV2FybmluZ3M6ICd5ZXMnLFxuXHRcdG9sZFNlbGVjdDogZmFsc2UsXG5cdFx0Y3VzdG9tV2FybmluZ0xpc3Q6IFtdLFxuXHRcdGF1dG9NZW51QWZ0ZXJSb2xsYmFjazogZmFsc2UsXG5cdFx0Ly8gWGZEXG5cdFx0bG9nWGZkTm9taW5hdGlvbnM6IHRydWUsXG5cdFx0eGZkTG9nUGFnZU5hbWU6ICdYZkTml6Xlv5cnLFxuXHRcdG5vTG9nT25YZmROb21pbmF0aW9uOiBbXSxcblx0XHR4ZmRXYXRjaERpc2N1c3Npb246ICdkZWZhdWx0Jyxcblx0XHR4ZmRXYXRjaFBhZ2U6ICdkZWZhdWx0Jyxcblx0XHR4ZmRXYXRjaFVzZXI6ICdkZWZhdWx0Jyxcblx0XHRtYXJrWGZkUGFnZXNBc1BhdHJvbGxlZDogdHJ1ZSxcblx0XHRGd2RDc2RUb1hmZDogTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0YWZkRGVmYXVsdENhdGVnb3J5OiAnZGVsZXRlJyxcblx0XHRhZmRGYW1lRGVmYXVsdFJlYXNvbjogJ+ayoeaciei2s+Wkn+eahOWPr+mdoOadpea6kOivgeaYjuatpOadoeebruespuWQiFtbUWl1d2VuOuaUtuW9leagh+WHhnzmlLblvZXmoIflh4ZdXScsXG5cdFx0YWZkU3Vic3R1YkRlZmF1bHRSZWFzb246ICfov4fmnJ/lsI/lsI/kvZzlk4EnLFxuXHRcdFhmZENsb3NlOiBNb3JlYml0cy51c2VySXNTeXNvcCA/ICdhbGwnIDogJ2hpZGUnLFxuXHRcdC8vIENvcHl2aW9cblx0XHRjb3B5dmlvV2F0Y2hQYWdlOiAneWVzJyxcblx0XHRjb3B5dmlvV2F0Y2hVc2VyOiAneWVzJyxcblx0XHRtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQ6IHRydWUsXG5cdFx0Ly8gSGlkZGVuIHByZWZlcmVuY2VzXG5cdFx0YXV0b2xldmVsU3RhbGVEYXlzOiAzLFxuXHRcdHJldmVydE1heFJldmlzaW9uczogNTAsXG5cdFx0Ly8gaW50ZW50aW9uYWxseSBsaW1pdGVkXG5cdFx0YmF0Y2hNYXg6IDUwMDAsXG5cdFx0YmF0Y2hDaHVua3M6IDUwLFxuXHRcdGNvbmZpZ1BhZ2U6ICdIZWxwOlR3aW5rbGUv5Y+C5pWw6K6+572uJyxcblx0XHRwcm9qZWN0TmFtZXNwYWNlTmFtZTogbXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJylbNF0sXG5cdFx0c2FuZGJveFBhZ2U6ICdRaXV3ZW465rKZ55uSJyxcblx0XHQvLyBEZXByZWNhdGVkIG9wdGlvbnMsIGFzIGEgZmFsbGJhY2sgZm9yIGFkZC1vbiBzY3JpcHRzL21vZHVsZXNcblx0XHRzdW1tYXJ5QWQ6ICfvvIhbW0g6VFd8VHdpbmtsZV1d77yJJyxcblx0XHRkZWxldGlvblN1bW1hcnlBZDogJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknLFxuXHRcdHByb3RlY3Rpb25TdW1tYXJ5QWQ6ICfvvIhbW0g6VFd8VHdpbmtsZV1d77yJJyxcblx0XHRibG9ja1N1bW1hcnlBZDogJ++8iFtbSDpUV3xUd2lua2xlXV3vvIknLFxuXHRcdC8vIFRhZ1xuXHRcdGdyb3VwQnlEZWZhdWx0OiB0cnVlLFxuXHRcdHdhdGNoVGFnZ2VkUGFnZXM6ICd5ZXMnLFxuXHRcdHdhdGNoTWVyZ2VEaXNjdXNzaW9uczogJ3llcycsXG5cdFx0bWFya1RhZ2dlZFBhZ2VzQXNNaW5vcjogZmFsc2UsXG5cdFx0bWFya1RhZ2dlZFBhZ2VzQXNQYXRyb2xsZWQ6IHRydWUsXG5cdFx0dGFnQXJ0aWNsZVNvcnRPcmRlcjogJ2NhdCcsXG5cdFx0Y3VzdG9tVGFnTGlzdDogW10sXG5cdFx0Y3VzdG9tRmlsZVRhZ0xpc3Q6IFtdLFxuXHRcdGN1c3RvbVJlZGlyZWN0VGFnTGlzdDogW10sXG5cdFx0Ly8gU3R1YlxuXHRcdHdhdGNoU3R1YmJlZFBhZ2VzOiBmYWxzZSxcblx0XHRtYXJrU3R1YmJlZFBhZ2VzQXNNaW5vcjogZmFsc2UsXG5cdFx0bWFya1N0dWJiZWRQYWdlc0FzUGF0cm9sbGVkOiB0cnVlLFxuXHRcdHN0dWJBcnRpY2xlU29ydE9yZGVyOiAnY2F0Jyxcblx0XHRjdXN0b21TdHViTGlzdDogW10sXG5cdFx0Ly8gVGFsa2JhY2tcblx0XHRtYXJrVGFsa2JhY2tBc01pbm9yOiB0cnVlLFxuXHRcdGluc2VydFRhbGtiYWNrU2lnbmF0dXJlOiB0cnVlLFxuXHRcdC8vIGFsd2F5cyBzaWduIHRhbGtiYWNrIHRlbXBsYXRlc1xuXHRcdHRhbGtiYWNrSGVhZGluZzogd2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJyksXG5cdFx0bWFpbEhlYWRpbmc6IHdpbmRvdy53Z1VMUygn5oKo5pyJ5paw6YKu5Lu277yBJywgJ+aCqOacieaWsOmDteS7tu+8gScpLFxuXHR9O1xuXHQvLyBub3cgc29tZSBza2luIGRlcGVuZGVudCBjb25maWcuXG5cdHN3aXRjaCAobXcuY29uZmlnLmdldCgnc2tpbicpKSB7XG5cdFx0Y2FzZSAndmVjdG9yJzpcblx0XHRjYXNlICd2ZWN0b3ItMjAyMic6XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldEFyZWEgPSAncmlnaHQtbmF2aWdhdGlvbic7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldElkID0gJ3AtdHdpbmtsZSc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5hbWUgPSAnVFcnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRUeXBlID0gJ21lbnUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXROZXh0ID0gJ3Atc2VhcmNoJztcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2dvbmdiaSc6XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldEFyZWEgPVxuXHRcdFx0XHQkYm9keS5maW5kKCcjcGFnZS10b29scyAuc2lkZWJhci1pbm5lcicpLmxlbmd0aCA+IDBcblx0XHRcdFx0XHQ/ICcjcGFnZS10b29scyAuc2lkZWJhci1pbm5lcidcblx0XHRcdFx0XHQ6ICcjcGFnZS1tb3JlIC5zaWRlYmFyLWlubmVyJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0SWQgPSAncC10d2lua2xlJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmFtZSA9ICdUd2lua2xlJztcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0VHlwZSA9IG51bGw7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5leHQgPVxuXHRcdFx0XHQkYm9keS5maW5kKCcjcGFnZS10b29scyAuc2lkZWJhci1pbm5lcicpLmxlbmd0aCA+IDAgPyAncGFnZS1tb3JlJyA6IG51bGw7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdjaXRpemVuJzpcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0QXJlYSA9ICcjcGFnZS1hY3Rpb25zLW1vcmVfX2NhcmQnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRJZCA9ICdwLXR3aW5rbGUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXROYW1lID0gJ1R3aW5rbGUnO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRUeXBlID0gJ25hdic7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5leHQgPSAncC10Yic7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRBcmVhID0gbnVsbDtcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0SWQgPSAncC1jYWN0aW9ucyc7XG5cdFx0XHRUd2lua2xlLmRlZmF1bHRDb25maWcucG9ydGxldE5hbWUgPSBudWxsO1xuXHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnLnBvcnRsZXRUeXBlID0gbnVsbDtcblx0XHRcdFR3aW5rbGUuZGVmYXVsdENvbmZpZy5wb3J0bGV0TmV4dCA9IG51bGw7XG5cdH1cblx0VHdpbmtsZS5nZXRQcmVmID0gKG5hbWUpID0+IHtcblx0XHRpZiAodHlwZW9mIFR3aW5rbGUucHJlZnMgPT09ICdvYmplY3QnICYmIFR3aW5rbGUucHJlZnNbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIFR3aW5rbGUucHJlZnNbbmFtZV07XG5cdFx0fVxuXHRcdC8vIE9sZCBwcmVmZXJlbmNlcyBmb3JtYXQsIHVzZWQgYmVmb3JlIHR3aW5rbGVvcHRpb25zLmpzIHdhcyBhIHRoaW5nXG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cuVHdpbmtsZUNvbmZpZyA9PT0gJ29iamVjdCcgJiYgd2luZG93LlR3aW5rbGVDb25maWdbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIHdpbmRvdy5Ud2lua2xlQ29uZmlnW25hbWVdO1xuXHRcdH1cblx0XHRyZXR1cm4gVHdpbmtsZS5kZWZhdWx0Q29uZmlnW25hbWVdO1xuXHR9O1xuXHQvKipcblx0ICogKioqKioqKioqKioqKioqKiBUd2lua2xlLmFkZFBvcnRsZXQoKSAqKioqKioqKioqKioqKioqXG5cdCAqXG5cdCAqIEFkZHMgYSBwb3J0bGV0IG1lbnUgdG8gb25lIG9mIHRoZSBuYXZpZ2F0aW9uIGFyZWFzIG9uIHRoZSBwYWdlLlxuXHQgKiBUaGlzIGlzIG5lY2Vzc2FyaWx5IHF1aXRlIGEgaGFjayBzaW5jZSBza2lucywgbmF2aWdhdGlvbiBhcmVhcywgYW5kXG5cdCAqIHBvcnRsZXQgbWVudSB0eXBlcyBhbGwgd29yayBzbGlnaHRseSBkaWZmZXJlbnQuXG5cdCAqXG5cdCAqIEF2YWlsYWJsZSBuYXZpZ2F0aW9uIGFyZWFzIGRlcGVuZCBvbiB0aGUgc2tpbiB1c2VkLlxuXHQgKiBWZWN0b3I6XG5cdCAqIC0gRm9yIGVhY2ggb3B0aW9uLCB0aGUgb3V0ZXIgbmF2IGNsYXNzIGNvbnRhaW5zIFwidmVjdG9yLW1lbnVcIiwgdGhlIGlubmVyIGRpdiBjbGFzcyBpcyBcInZlY3Rvci1tZW51LWNvbnRlbnRcIiwgYW5kIHRoZSB1bCBpcyBcInZlY3Rvci1tZW51LWNvbnRlbnQtbGlzdFwiXG5cdCAqIC0gXCJtdy1wYW5lbFwiLCBvdXRlciBuYXYgY2xhc3MgY29udGFpbnMgXCJ2ZWN0b3ItbWVudS1wb3J0YWxcIi4gRXhpc3RpbmcgcG9ydGxldHMvZWxlbWVudHM6IFwicC1sb2dvXCIsIFwicC1uYXZpZ2F0aW9uXCIsIFwicC1pbnRlcmFjdGlvblwiLCBcInAtdGJcIiwgXCJwLWNvbGwtcHJpbnRfZXhwb3J0XCJcblx0ICogLSBcImxlZnQtbmF2aWdhdGlvblwiLCBvdXRlciBuYXYgY2xhc3MgY29udGFpbnMgXCJ2ZWN0b3ItbWVudS10YWJzXCIgb3IgXCJ2ZWN0b3ItbWVudS1kcm9wZG93blwiLiBFeGlzdGluZyBwb3J0bGV0czogXCJwLW5hbWVzcGFjZXNcIiwgXCJwLXZhcmlhbnRzXCIgKG1lbnUpXG5cdCAqIC0gXCJyaWdodC1uYXZpZ2F0aW9uXCIsIG91dGVyIG5hdiBjbGFzcyBjb250YWlucyBcInZlY3Rvci1tZW51LXRhYnNcIiBvciBcInZlY3Rvci1tZW51LWRyb3Bkb3duXCIuIEV4aXN0aW5nIHBvcnRsZXRzOiBcInAtdmlld3NcIiwgXCJwLWNhY3Rpb25zXCIgKG1lbnUpLCBcInAtc2VhcmNoXCJcblx0ICogLSBTcGVjaWFsIGxheW91dCBvZiBwLXBlcnNvbmFsIHBvcnRsZXQgKHBhcnQgb2YgXCJoZWFkXCIpIHRocm91Z2ggc3BlY2lhbGl6ZWQgc3R5bGVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmF2aWdhdGlvbiAtLSBpZCBvZiB0aGUgdGFyZ2V0IG5hdmlnYXRpb24gYXJlYSAoc2tpbiBkZXBlbmRhbnQsIG9uIHZlY3RvciBlaXRoZXIgb2YgXCJsZWZ0LW5hdmlnYXRpb25cIiwgXCJyaWdodC1uYXZpZ2F0aW9uXCIsIG9yIFwibXctcGFuZWxcIilcblx0ICogQHBhcmFtIHtzdHJpbmd9IGlkIC0tIGlkIG9mIHRoZSBwb3J0bGV0IG1lbnUgdG8gY3JlYXRlLCBwcmVmZXJhYmx5IHN0YXJ0IHdpdGggXCJwLVwiLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtLSBuYW1lIG9mIHRoZSBwb3J0bGV0IG1lbnUgdG8gY3JlYXRlLiBWaXNpYmlsaXR5IGRlcGVuZHMgb24gdGhlIGNsYXNzIHVzZWQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIC0tIHR5cGUgb2YgcG9ydGxldC4gQ3VycmVudGx5IG9ubHkgdXNlZCBmb3IgdGhlIHZlY3RvciBub24tc2lkZWJhciBwb3J0bGV0cywgcGFzcyBcIm1lbnVcIiB0byBtYWtlIHRoaXMgcG9ydGxldCBhIGRyb3AgZG93biBtZW51LlxuXHQgKiBAcGFyYW0ge05vZGV9IG5leHRub2RlaWQgLS0gdGhlIGlkIG9mIHRoZSBub2RlIGJlZm9yZSB3aGljaCB0aGUgbmV3IGl0ZW0gc2hvdWxkIGJlIGFkZGVkLCBzaG91bGQgYmUgYW5vdGhlciBpdGVtIGluIHRoZSBzYW1lIGxpc3QsIG9yIHVuZGVmaW5lZCB0byBwbGFjZSBpdCBhdCB0aGUgZW5kLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHtOb2RlfSAtLSB0aGUgRE9NIG5vZGUgb2YgdGhlIG5ldyBpdGVtIChhIERJViBlbGVtZW50KSBvciBudWxsXG5cdCAqL1xuXHRUd2lua2xlLmFkZFBvcnRsZXQgPSAobmF2aWdhdGlvbiwgaWQsIHRleHQsIHR5cGUsIG5leHRub2RlaWQpID0+IHtcblx0XHQvLyBzYW5pdHkgY2hlY2tzLCBhbmQgZ2V0IHJlcXVpcmVkIERPTSBub2Rlc1xuXHRcdGNvbnN0IHJvb3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKC9eKD86I3xcXC4pLy50ZXN0KG5hdmlnYXRpb24pID8gbmF2aWdhdGlvbiA6IGAjJHtuYXZpZ2F0aW9ufWApO1xuXHRcdGlmICghcm9vdCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGNvbnN0IGl0ZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtpZH1gKTtcblx0XHRpZiAoaXRlbSkge1xuXHRcdFx0aWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiBpdGVtLnBhcmVudE5vZGUgPT09IHJvb3QpIHtcblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0bGV0IG5leHRub2RlO1xuXHRcdGlmIChuZXh0bm9kZWlkKSB7XG5cdFx0XHRuZXh0bm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke25leHRub2RlaWR9YCk7XG5cdFx0fVxuXHRcdC8vIHZlcmlmeS9ub3JtYWxpemUgaW5wdXRcblx0XHRjb25zdCBza2luID0gbXcuY29uZmlnLmdldCgnc2tpbicpO1xuXHRcdGlmIChcblx0XHRcdChza2luICE9PSAndmVjdG9yJyAmJiBza2luICE9PSAndmVjdG9yLTIwMjInKSB8fFxuXHRcdFx0KG5hdmlnYXRpb24gIT09ICdsZWZ0LW5hdmlnYXRpb24nICYmIG5hdmlnYXRpb24gIT09ICdyaWdodC1uYXZpZ2F0aW9uJylcblx0XHQpIHtcblx0XHRcdHR5cGUgPSBudWxsOyAvLyBtZW51IHN1cHBvcnRlZCBvbmx5IGluIHZlY3RvcidzICNsZWZ0LW5hdmlnYXRpb24gJiAjcmlnaHQtbmF2aWdhdGlvblxuXHRcdH1cblx0XHRsZXQgb3V0ZXJOYXZDbGFzcztcblx0XHRsZXQgaW5uZXJEaXZDbGFzcztcblx0XHRzd2l0Y2ggKHNraW4pIHtcblx0XHRcdGNhc2UgJ3ZlY3Rvcic6XG5cdFx0XHRjYXNlICd2ZWN0b3ItMjAyMic6XG5cdFx0XHRcdC8vIFhYWDogcG9ydGFsIGRvZXNuJ3Qgd29ya1xuXHRcdFx0XHRpZiAobmF2aWdhdGlvbiAhPT0gJ3BvcnRhbCcgJiYgbmF2aWdhdGlvbiAhPT0gJ2xlZnQtbmF2aWdhdGlvbicgJiYgbmF2aWdhdGlvbiAhPT0gJ3JpZ2h0LW5hdmlnYXRpb24nKSB7XG5cdFx0XHRcdFx0bmF2aWdhdGlvbiA9ICdtdy1wYW5lbCc7XG5cdFx0XHRcdH1cblx0XHRcdFx0b3V0ZXJOYXZDbGFzcyA9ICdtdy1wb3J0bGV0IHZlY3Rvci1tZW51Jztcblx0XHRcdFx0aWYgKG5hdmlnYXRpb24gPT09ICdtdy1wYW5lbCcpIHtcblx0XHRcdFx0XHRvdXRlck5hdkNsYXNzICs9ICcgdmVjdG9yLW1lbnUtcG9ydGFsJztcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlID09PSAnbWVudScpIHtcblx0XHRcdFx0XHRvdXRlck5hdkNsYXNzICs9ICcgdmVjdG9yLW1lbnUtZHJvcGRvd24gdmVjdG9yLWRyb3Bkb3duIHZlY3Rvci1tZW51LWRyb3Bkb3duLW5vaWNvbic7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0b3V0ZXJOYXZDbGFzcyArPSAnIHZlY3Rvci1tZW51LXRhYnMnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlubmVyRGl2Q2xhc3MgPSAndmVjdG9yLW1lbnUtY29udGVudCB2ZWN0b3ItZHJvcGRvd24tY29udGVudCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZ29uZ2JpJzpcblx0XHRcdFx0b3V0ZXJOYXZDbGFzcyA9ICdtdy1wb3J0bGV0Jztcblx0XHRcdFx0aW5uZXJEaXZDbGFzcyA9ICdtdy1wb3J0bGV0LWJvZHknO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2NpdGl6ZW4nOlxuXHRcdFx0XHRvdXRlck5hdkNsYXNzID0gJ213LXBvcnRsZXQnO1xuXHRcdFx0XHRpbm5lckRpdkNsYXNzID0gJ213LXBvcnRsZXQtdHdpbmtsZSc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0bmF2aWdhdGlvbiA9ICdjb2x1bW4tb25lJztcblx0XHRcdFx0b3V0ZXJOYXZDbGFzcyA9ICdwb3J0bGV0Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdC8vIEJ1aWxkIHRoZSBET00gZWxlbWVudHMuXG5cdFx0bGV0IG91dGVyTmF2O1xuXHRcdGxldCBoZWFkaW5nO1xuXHRcdGlmIChza2luID09PSAndmVjdG9yLTIwMjInKSB7XG5cdFx0XHRvdXRlck5hdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0aGVhZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dGVyTmF2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbmF2Jyk7XG5cdFx0XHRoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDMnKTtcblx0XHR9XG5cdFx0b3V0ZXJOYXYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBgJHtpZH0tbGFiZWxgKTtcblx0XHQvLyBUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIHVzZWQgaGVyZSAob3V0ZXJOYXZDbGFzcyk6XG5cdFx0Ly8gKiBtdy1wb3J0bGV0IHZlY3Rvci1tZW51IHZlY3Rvci1tZW51LSpcblx0XHQvLyAqIG13LXBvcnRsZXRcblx0XHQvLyAqIGNvbHVtbi1vbmVcblx0XHQvLyBWZWN0b3IgZ2V0dGluZyB2ZWN0b3ItbWVudS1lbXB0eSBGSVhNRSBUT0RPXG5cdFx0b3V0ZXJOYXYuY2xhc3NOYW1lID0gYCR7b3V0ZXJOYXZDbGFzc30gZW1wdHlQb3J0bGV0YDtcblx0XHRvdXRlck5hdi5pZCA9IGlkO1xuXHRcdGlmIChuZXh0bm9kZSAmJiBuZXh0bm9kZS5wYXJlbnROb2RlID09PSByb290KSB7XG5cdFx0XHRyb290Lmluc2VydEJlZm9yZShvdXRlck5hdiwgbmV4dG5vZGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyb290LmFwcGVuZENoaWxkKG91dGVyTmF2KTtcblx0XHR9XG5cdFx0aGVhZGluZy5pZCA9IGAke2lkfS1sYWJlbGA7XG5cdFx0Y29uc3QgdWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpO1xuXHRcdGlmIChza2luID09PSAndmVjdG9yJyB8fCBza2luID09PSAndmVjdG9yLTIwMjInKSB7XG5cdFx0XHRoZWFkaW5nLnNldEF0dHJpYnV0ZSgnZm9yJywgYCR7aWR9LWRyb3Bkb3duLWNoZWNrYm94YCk7XG5cdFx0XHR1bC5jbGFzc05hbWUgPSAndmVjdG9yLW1lbnUtY29udGVudC1saXN0Jztcblx0XHRcdGhlYWRpbmcuY2xhc3NOYW1lID0gJ3ZlY3Rvci1tZW51LWhlYWRpbmcgdmVjdG9yLWRyb3Bkb3duLWxhYmVsJztcblx0XHRcdC8vIGFkZCBpbnZpc2libGUgY2hlY2tib3ggdG8ga2VlcCBtZW51IG9wZW4gd2hlbiBjbGlja2VkXG5cdFx0XHQvLyBzaW1pbGFyIHRvIHRoZSBwLWNhY3Rpb25zIChcIk1vcmVcIikgbWVudVxuXHRcdFx0aWYgKG91dGVyTmF2Q2xhc3MuaW5jbHVkZXMoJ3ZlY3Rvci1tZW51LWRyb3Bkb3duJykpIHtcblx0XHRcdFx0Y29uc3QgY2hrYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcblx0XHRcdFx0Y2hrYm94LmlkID0gYCR7aWR9LWRyb3Bkb3duLWNoZWNrYm94YDtcblx0XHRcdFx0Y2hrYm94LmNsYXNzTmFtZSA9ICd2ZWN0b3ItbWVudS1jaGVja2JveCB2ZWN0b3ItZHJvcGRvd24tY2hlY2tib3gnO1xuXHRcdFx0XHRjaGtib3guc2V0QXR0cmlidXRlKCd0eXBlJywgJ2NoZWNrYm94Jyk7XG5cdFx0XHRcdGNoa2JveC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsIGAke2lkfS1sYWJlbGApO1xuXHRcdFx0XHRvdXRlck5hdi5hcHBlbmRDaGlsZChjaGtib3gpO1xuXHRcdFx0XHQvLyBWZWN0b3IgZ2V0cyBpdHMgdGl0bGUgaW4gYSBzcGFuOyBhbGwgb3RoZXJzIGV4Y2VwdFxuXHRcdFx0XHQvLyBnb25nYmkgaGF2ZSBubyB0aXRsZSwgYW5kIGl0IGhhcyBubyBzcGFuXG5cdFx0XHRcdGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHRcdHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuXHRcdFx0XHRoZWFkaW5nLmFwcGVuZENoaWxkKHNwYW4pO1xuXHRcdFx0XHRjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0XHRhLmhyZWYgPSAnIyc7XG5cdFx0XHRcdCQoYSkub24oJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRoZWFkaW5nLmFwcGVuZENoaWxkKGEpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBCYXNpY2FsbHkganVzdCBHb25nYmlcblx0XHRcdGhlYWRpbmcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuXHRcdH1cblx0XHRvdXRlck5hdi5hcHBlbmRDaGlsZChoZWFkaW5nKTtcblx0XHRpZiAoaW5uZXJEaXZDbGFzcykge1xuXHRcdFx0Y29uc3QgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdC8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgdXNlZCBoZXJlIChpbm5lckRpdkNsYXNzKTpcblx0XHRcdC8vICogdmVjdG9yLW1lbnUtY29udGVudFxuXHRcdFx0Ly8gKiBtdy1wb3J0bGV0LWJvZHlcblx0XHRcdC8vICogbXctcG9ydGxldC10d2lua2xlXG5cdFx0XHQvLyAqIHBvcnRsZXRcblx0XHRcdGlubmVyRGl2LmNsYXNzTmFtZSA9IGlubmVyRGl2Q2xhc3M7XG5cdFx0XHRpbm5lckRpdi5hcHBlbmRDaGlsZCh1bCk7XG5cdFx0XHRvdXRlck5hdi5hcHBlbmRDaGlsZChpbm5lckRpdik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dGVyTmF2LmFwcGVuZENoaWxkKHVsKTtcblx0XHR9XG5cdFx0cmV0dXJuIG91dGVyTmF2O1xuXHR9O1xuXHQvKipcblx0ICogKioqKioqKioqKioqKioqKiBUd2lua2xlLmFkZFBvcnRsZXRMaW5rKCkgKioqKioqKioqKioqKioqKlxuXHQgKiBCdWlsZHMgYSBwb3J0bGV0IG1lbnUgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQsIGFuZCBhZGQgdGhlIHBvcnRsZXQgbGluay5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IHRhc2sgLS0gRWl0aGVyIGEgVVJMIGZvciB0aGUgcG9ydGxldCBsaW5rIG9yIGEgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRcblx0ICogQHBhcmFtIHtzdHJpbmd9IGlkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b29sdGlwXG5cdCAqIEByZXR1cm4ge09iamVjdH0gbGlua1xuXHQgKi9cblx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayA9ICh0YXNrLCB0ZXh0LCBpZCwgdG9vbHRpcCkgPT4ge1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3BvcnRsZXRBcmVhJykgIT09IG51bGwpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldChcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0QXJlYScpLFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3BvcnRsZXRJZCcpLFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3BvcnRsZXROYW1lJyksXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldFR5cGUnKSxcblx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0TmV4dCcpXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRjb25zdCBsaW5rID0gbXcudXRpbC5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncG9ydGxldElkJyksXG5cdFx0XHR0eXBlb2YgdGFzayA9PT0gJ3N0cmluZycgPyB0YXNrIDogJyMnLFxuXHRcdFx0dGV4dCxcblx0XHRcdGlkLFxuXHRcdFx0dG9vbHRpcFxuXHRcdCk7XG5cdFx0JGJvZHkuZmluZCgnLmNsaWVudC1qcyAuc2tpbi12ZWN0b3IgI3AtY2FjdGlvbnMnKS5jc3MoJ21hcmdpbi1yaWdodCcsICdpbml0aWFsJyk7XG5cdFx0aWYgKHR5cGVvZiB0YXNrID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHQkKGxpbmspXG5cdFx0XHRcdC5maW5kKCdhJylcblx0XHRcdFx0Lm9uKCdjbGljaycsIChldikgPT4ge1xuXHRcdFx0XHRcdHRhc2soKTtcblx0XHRcdFx0XHRldi5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKCQuY29sbGFwc2libGVUYWJzKSB7XG5cdFx0XHQkLmNvbGxhcHNpYmxlVGFicy5oYW5kbGVSZXNpemUoKTtcblx0XHR9XG5cdFx0cmV0dXJuIGxpbms7XG5cdH07XG5cdC8qKlxuXHQgKiAqKioqKioqKioqKioqKioqIEdlbmVyYWwgaW5pdGlhbGl6YXRpb24gY29kZSAqKioqKioqKioqKioqKioqXG5cdCAqL1xuXHRjb25zdCBzY3JpcHR1cmwgPSBtdy51dGlsLmdldFVybChgVXNlcjoke213LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKX0vdHdpbmtsZW9wdGlvbnMuanNgLCB7XG5cdFx0YWN0aW9uOiAncmF3Jyxcblx0XHRjdHlwZTogJ3RleHQvamF2YXNjcmlwdCcsXG5cdFx0aGFwcHk6ICd5ZXMnLFxuXHR9KTtcblx0Ly8gUmV0cmlldmUgdGhlIHVzZXIncyBUd2lua2xlIHByZWZlcmVuY2VzICh3aW5kb3cuVHdpbmtsZS5wcmVmcylcblx0VHdpbmtsZS5wcmVmcyB8fD0ge307XG5cdG13LmxvYWRlclxuXHRcdC5nZXRTY3JpcHQoc2NyaXB0dXJsKVxuXHRcdC5mYWlsKCgpID0+IHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5pyq6IO95Yqg6L295oKo55qEVHdpbmtsZeWPguaVsOiuvue9ricsICfmnKrog73ovInlhaXmgqjnmoRUd2lua2xl5YGP5aW96Kit5a6aJyksIHtcblx0XHRcdFx0dHlwZTogJ2Vycm9yJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZScsXG5cdFx0XHR9KTtcblx0XHR9KVxuXHRcdC5hbHdheXMoKCkgPT4ge1xuXHRcdFx0JChUd2lua2xlLmxvYWQpO1xuXHRcdH0pO1xuXHQvLyBEZXZlbG9wZXJzOiB5b3UgY2FuIGltcG9ydCBjdXN0b20gVHdpbmtsZSBtb2R1bGVzIGhlcmVcblx0Ly8gRm9yIGV4YW1wbGUsIG13LmxvYWRlci5sb2FkKHNjcmlwdHBhdGhiZWZvcmUgKyBcIlVzZXI6VW5jbGVEb3VnZ2llL21vcmViaXRzLXRlc3QuanNcIiArIHNjcmlwdHBhdGhhZnRlcik7XG5cdFR3aW5rbGUubG9hZCA9ICgpID0+IHtcblx0XHQvLyBEb24ndCBhY3RpdmF0ZSBvbiBzcGVjaWFsIHBhZ2VzIG90aGVyIHRoYW4gdGhvc2UgbGlzdGVkIGhlcmUsIHNvXG5cdFx0Ly8gdGhhdCBvdGhlcnMgbG9hZCBmYXN0ZXIsIGVzcGVjaWFsbHkgdGhlIHdhdGNobGlzdC5cblx0XHRsZXQgYWN0aXZlU3BlY2lhbFBhZ2VMaXN0ID0gWydCbG9jaycsICdDb250cmlidXRpb25zJywgJ0FidXNlTG9nJywgJ1JlY2VudGNoYW5nZXMnLCAnUmVjZW50Y2hhbmdlc2xpbmtlZCddOyAvLyB3Z1JlbGV2YW50VXNlck5hbWUgZGVmaW5lZCBmb3Igbm9uLXN5c29wcyBvbiBTcGVjaWFsOkJsb2NrXG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRhY3RpdmVTcGVjaWFsUGFnZUxpc3QgPSBbXG5cdFx0XHRcdC4uLmFjdGl2ZVNwZWNpYWxQYWdlTGlzdCxcblx0XHRcdFx0J0RlbGV0ZWRDb250cmlidXRpb25zJyxcblx0XHRcdFx0J1ByZWZpeGluZGV4Jyxcblx0XHRcdFx0J0Jyb2tlblJlZGlyZWN0cycsXG5cdFx0XHRdO1xuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAtMSAmJlxuXHRcdFx0IWFjdGl2ZVNwZWNpYWxQYWdlTGlzdC5pbmNsdWRlcyhtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBQcmV2ZW50IGNsaWNramFja2luZ1xuXHRcdGlmICh3aW5kb3cudG9wICE9PSB3aW5kb3cuc2VsZikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBTZXQgY3VzdG9tIEFwaS1Vc2VyLUFnZW50IGhlYWRlciwgZm9yIHNlcnZlci1zaWRlIGxvZ2dpbmcgcHVycG9zZXNcblx0XHRUd2lua2xlLnVzZXJBZ2VudCA9ICdUd2lua2xlLzEuMSc7XG5cdFx0TW9yZWJpdHMud2lraS5hcGkuc2V0QXBpVXNlckFnZW50KFR3aW5rbGUudXNlckFnZW50KTtcblx0XHRUd2lua2xlLmRpc2FibGVkTW9kdWxlcyA9IFsuLi5Ud2lua2xlLmdldFByZWYoJ2Rpc2FibGVkTW9kdWxlcycpLCAuLi5Ud2lua2xlLmdldFByZWYoJ2Rpc2FibGVkU3lzb3BNb2R1bGVzJyldO1xuXHRcdC8vIFJlZGVmaW5lIGFkZEluaXRDYWxsYmFjayBzbyB0aGF0IGFueSBtb2R1bGVzIGJlaW5nIGxvYWRlZCBub3cgb24gYXJlIGRpcmVjdGx5XG5cdFx0Ly8gaW5pdGlhbGlzZWQgcmF0aGVyIHRoYW4gYWRkZWQgdG8gaW5pdENhbGxiYWNrcyBhcnJheVxuXHRcdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrID0gKGZ1bmMsIG5hbWUpID0+IHtcblx0XHRcdGlmICghbmFtZSB8fCAhVHdpbmtsZS5kaXNhYmxlZE1vZHVsZXMuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdFx0ZnVuYygpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Ly8gSW5pdGlhbGlzZSBtb2R1bGVzIHRoYXQgd2VyZSBzYXZlZCBpbiBpbml0Q2FsbGJhY2tzIGFycmF5XG5cdFx0Zm9yIChjb25zdCBtb2R1bGUgb2YgVHdpbmtsZS5pbml0Q2FsbGJhY2tzKSB7XG5cdFx0XHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhtb2R1bGUuZnVuYywgbW9kdWxlLm5hbWUpO1xuXHRcdH1cblx0XHQvLyBJbmNyZWFzZXMgdGV4dCBzaXplIGluIFR3aW5rbGUgZGlhbG9ncywgaWYgc28gY29uZmlndXJlZFxuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2RpYWxvZ0xhcmdlRm9udCcpKSB7XG5cdFx0XHRtdy51dGlsLmFkZENTUyhcblx0XHRcdFx0Jy5tb3JlYml0cy1kaWFsb2ctY29udGVudCwubW9yZWJpdHMtZGlhbG9nLWZvb3Rlcmxpbmtze2ZvbnQtc2l6ZToxMDAlIWltcG9ydGFudH0ubW9yZWJpdHMtZGlhbG9nIGlucHV0LC5tb3JlYml0cy1kaWFsb2cgc2VsZWN0LC5tb3JlYml0cy1kaWFsb2ctY29udGVudCBidXR0b257Zm9udC1zaXplOmluaGVyaXQgIWltcG9ydGFudH0nXG5cdFx0XHQpO1xuXHRcdH1cblx0XHQvLyBIaWRlIHRoZSBsaW5nZXJpbmcgc3BhY2UgaWYgdGhlIFRXIG1lbnUgaXMgZW1wdHlcblx0XHRjb25zdCBpc1ZlY3RvciA9IFsndmVjdG9yJywgJ3ZlY3Rvci0yMDIyJ10uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnc2tpbicpKTtcblx0XHRpZiAoaXNWZWN0b3IgJiYgVHdpbmtsZS5nZXRQcmVmKCdwb3J0bGV0VHlwZScpID09PSAnbWVudScgJiYgJGJvZHkuZmluZCgnI3AtdHdpbmtsZScpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0JGJvZHkuZmluZCgnI3AtY2FjdGlvbnMnKS5jc3MoJ21hcmdpbi1yaWdodCcsICdpbml0aWFsJyk7XG5cdFx0fVxuXHR9O1xuXHQvKipcblx0ICogVHdpbmtsZS1zcGVjaWZpYyB1dGlsaXR5IGZ1bmN0aW9ucyBzaGFyZWQgYnkgbXVsdGlwbGUgbW9kdWxlc1xuXHQgKlxuXHQgKiBAcGFyYW0geyp9IGZpcnN0XG5cdCAqIEBwYXJhbSB7Kn0gc2Vjb25kXG5cdCAqL1xuXHQvLyBVc2VkIGluIGJhdGNoLCB1bmxpbmssIGFuZCBkZXByb2QgdG8gc29ydCBwYWdlcyBieSBuYW1lc3BhY2UsIGFzXG5cdC8vIGpzb24gZm9ybWF0dmVyc2lvbj0yIHNvcnRzIGJ5IHBhZ2VpZCBpbnN0ZWFkICgjMTI1MSlcblx0VHdpbmtsZS5zb3J0QnlOYW1lc3BhY2UgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuXHRcdHJldHVybiBmaXJzdC5ucyAtIHNlY29uZC5ucyB8fCAoZmlyc3QudGl0bGUgPiBzZWNvbmQudGl0bGUgPyAxIDogLTEpO1xuXHR9O1xuXHQvLyBVc2VkIGluIHVubGluayBsaXN0aW5ncyB0byBsaW5rIHRoZSBwYWdlIHRpdGxlXG5cdFR3aW5rbGUuZ2VuZXJhdGVCYXRjaFBhZ2VMaW5rcyA9IChjaGVja2JveCkgPT4ge1xuXHRcdGNvbnN0ICRjaGVja2JveCA9ICQoY2hlY2tib3gpO1xuXHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsICRjaGVja2JveC52YWwoKSk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3R3LWJhdGNocGFnZS1saW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybCgkY2hlY2tib3gudmFsKCkpKTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdCRjaGVja2JveC5uZXh0KCkucHJlcGVuZChbbGluaywgJyAnXSk7XG5cdH07XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYXJ2LmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWFydigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZWFydi5qczogQVJWIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJBUlZcIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicywgZXRjLilcblx0ICovXG5cdFR3aW5rbGUuYXJ2ID0gKCkgPT4ge1xuXHRcdGNvbnN0IHVzZXJuYW1lID0gbXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyk7XG5cdFx0aWYgKCF1c2VybmFtZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBpc0lQID0gbXcudXRpbC5pc0lQQWRkcmVzcyh1c2VybmFtZSk7XG5cdFx0Y29uc3QgdGl0bGUgPSBpc0lQXG5cdFx0XHQ/IHdpbmRvdy53Z1VMUygn5oql5ZGKSVDnu5nnrqHnkIblkZgnLCAn5aCx5ZGKSVDntabnrqHnkIblk6EnKVxuXHRcdFx0OiB3aW5kb3cud2dVTFMoJ+aKpeWRiueUqOaIt+e7meeuoeeQhuS6uuWRmCcsICfloLHlkYrkvb/nlKjogIXntabnrqHnkIbkurrlk6EnKTtcblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmFydi5jYWxsYmFjayh1c2VybmFtZSwgaXNJUCk7XG5cdFx0XHR9LFxuXHRcdFx0d2luZG93LndnVUxTKCflkYrnirYnLCAn5ZGK54uAJyksXG5cdFx0XHQndHctYXJ2Jyxcblx0XHRcdHRpdGxlXG5cdFx0KTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2sgPSAodWlkLCBpc0lQKSA9PiB7XG5cdFx0aWYgKHVpZCA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+S9oOS4jeaDs+aKpeWRiuS9oOiHquW3se+8jOWvueWQp++8nycsICfkvaDkuI3mg7PloLHlkYrkvaDoh6rlt7HvvIzlsI3lkKfvvJ8nKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGVhcnYnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjAwLCA1MDApO1xuXHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aKpeWRiueUqOaIt+e7meeuoeeQhuS6uuWRmCcsICfloLHlkYrkvb/nlKjogIXntabnrqHnkIbkurrlk6EnKSk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+WRiueKtuiuvue9ricsICflkYrni4DoqK3lrponKSwgJ0g6VFcvUFJFRiNhcnYnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVyPlkYrni4AnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmFydi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgY2F0ZWdvcmllcyA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NhdGVnb3J5Jyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqeaKpeWRiuexu+Wei++8micsICfpgbjmk4floLHlkYrpoZ7liKXvvJonKSxcblx0XHRcdGV2ZW50OiBUd2lua2xlLmFydi5jYWxsYmFjay5jaGFuZ2VDYXRlZ29yeSxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+egtOWdj++8iFFXOlZJUO+8iScsICfnoLTlo57vvIhRVzpWSVDvvIknKSxcblx0XHRcdHZhbHVlOiAnYWl2Jyxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e8lui+keS6ieiuru+8iFFXOkVXSVDvvIknLCAn57eo6Lyv54it6K2w77yIUVc6RVdJUO+8iScpLFxuXHRcdFx0dmFsdWU6ICdld2lwJyxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+WQje+8iFFXOlVBQe+8iScsICfkvb/nlKjogIXlkI3nqLHvvIhRVzpVQUHvvIknKSxcblx0XHRcdHZhbHVlOiAndXNlcm5hbWUnLFxuXHRcdFx0ZGlzYWJsZWQ6IG13LnV0aWwuaXNJUEFkZHJlc3ModWlkKSxcblx0XHR9KTtcblx0XHRjYXRlZ29yaWVzLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WCgOWEoeiwg+afpe+8iFFXOlNQSe+8iScsICflgoDlhKHoqr/mn6XvvIhRVzpTUEnvvIknKSxcblx0XHRcdHZhbHVlOiAnc3BpJyxcblx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHVpZCksXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRsYWJlbDogJycsXG5cdFx0XHRzdHlsZTogJ2NvbG9yOiAjZjAwJyxcblx0XHRcdGlkOiAndHdpbmtsZS1hcnYtYmxvY2t3YXJuaW5nJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICdXb3JrIGFyZWEnLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRsYWJlbDogJ+aPkOS6pCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2hpZGRlbicsXG5cdFx0XHRuYW1lOiAndWlkJyxcblx0XHRcdHZhbHVlOiB1aWQsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIHVzZXIgaXMgYmxvY2tlZCwgdXBkYXRlIG5vdGljZVxuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0bGlzdDogJ2Jsb2NrcycsXG5cdFx0XHRia3Byb3A6ICdyYW5nZXxmbGFncycsXG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHR9O1xuXHRcdGlmIChpc0lQKSB7XG5cdFx0XHRxdWVyeS5ia2lwID0gdWlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5ia3VzZXJzID0gdWlkO1xuXHRcdH1cblx0XHRuZXcgTW9yZWJpdHMud2lraS5hcGkod2luZG93LndnVUxTKCfmo4Dmn6XnlKjmiLfnmoTlsIHnpoHnirbmgIEnLCAn5qqi5p+l5L2/55So6ICF55qE5bCB6Y6W54uA5oWLJyksIHF1ZXJ5LCAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBibG9ja2xpc3QgPSBhcGlvYmouZ2V0UmVzcG9uc2UoKS5xdWVyeS5ibG9ja3M7XG5cdFx0XHRpZiAoYmxvY2tsaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBbYmxvY2tdID0gYmxvY2tsaXN0O1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9XG5cdFx0XHRcdFx0KGlzSVAgPyB3aW5kb3cud2dVTFMoJ+atpElQ5Zyw5Z2AJywgJ+atpElQ5L2N5Z2AJykgOiB3aW5kb3cud2dVTFMoJ+atpOi0puWPtycsICfmraTos6zomZ8nKSkgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bey57uP6KKrJywgJ+W3sue2k+iiqycpICtcblx0XHRcdFx0XHQoYmxvY2sucGFydGlhbCA/ICfpg6jliIYnIDogJycpO1xuXHRcdFx0XHQvLyBTdGFydCBhbmQgZW5kIGRpZmZlciwgcmFuZ2UgYmxvY2tlZFxuXHRcdFx0XHRtZXNzYWdlICs9IGJsb2NrLnJhbmdlc3RhcnQgPT09IChibG9jay5yYW5nZWVuZCA/ICfmrrUnIDogJycpICsgd2luZG93LndnVUxTKCflsIHnpoHjgIInLCAn5bCB6Y6W44CCJyk7XG5cdFx0XHRcdGlmIChibG9jay5wYXJ0aWFsKSB7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtYXJ2LWJsb2Nrd2FybmluZycpLmNzcygnY29sb3InLCAnYmxhY2snKTsgLy8gTGVzcyBzZXZlcmVcblx0XHRcdFx0fVxuXHRcdFx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS1hcnYtYmxvY2t3YXJuaW5nJykudGV4dChtZXNzYWdlKTtcblx0XHRcdH1cblx0XHR9KS5wb3N0KCk7XG5cdFx0Ly8gV2UgbXVzdCBpbml0IHRoZVxuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5jYXRlZ29yeS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2Lmx0YV9saXN0ID0gW1xuXHRcdHtcblx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+mAieaLqScsICfoq4vpgbjmk4cnKSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmFydi5jYWxsYmFjay5zb2NrbWFzdGVyX2NoYW5nZWQgPSAoZSkgPT4ge1xuXHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLnNldF9zb2NrbWFzdGVyKGUudGFyZ2V0LnZhbHVlKTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2suc2V0X3NvY2ttYXN0ZXIgPSAoc29ja21hc3RlcikgPT4ge1xuXHRcdCRib2R5LmZpbmQoJ2NvZGUudHctYXJ2LXNvY2ttYXN0ZXInKS50ZXh0KCd7eycuY29uY2F0KCdzdWJzdDonLCBgU29ja3N1c3BlY3Rub3RpY2V8MT0ke3NvY2ttYXN0ZXJ9fX1gKSk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmNoYW5nZUNhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRjb25zdCB2YWx1ZV8gPSBlLnRhcmdldC52YWx1ZTtcblx0XHRjb25zdCByb290XyA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyb290XywgJ3dvcmtfYXJlYScpO1xuXHRcdGxldCB3b3JrX2FyZWEgPSBudWxsO1xuXHRcdGNvbnN0IHByZXZpZXdsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdHByZXZpZXdsaW5rLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblx0XHRwcmV2aWV3bGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn6aKE6KeIJywgJ+mgkOimvScpO1xuXHRcdCQocHJldmlld2xpbmspLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLnByZXZpZXcocm9vdF8pO1xuXHRcdH0pO1xuXHRcdHN3aXRjaCAodmFsdWVfKSB7XG5cdFx0XHRjYXNlICdld2lwJzpcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aKpeWRiue8lui+keS6ieiuricsICfloLHlkYrnt6jovK/niK3orbAnKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkeW5pbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ebuOWFs+mhtemdou+8micsICfnm7jpl5zpoIHpnaLvvJonKSxcblx0XHRcdFx0XHRzdWJsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLvvJonLCAn6aCB6Z2i77yaJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflpoLkuI3luIzmnJvorqnmiqXlkYrpk77mjqXliLDpobXpnaLvvIzor7fnlZnnqbonLCAn5aaC5LiN5biM5pyb6K6T5aCx5ZGK6YCj57WQ5Yiw6aCB6Z2i77yM6KuL55WZ56m6JyksXG5cdFx0XHRcdFx0bWluOiAxLFxuXHRcdFx0XHRcdG1heDogMTAsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivhOiuuu+8micsICfoqZXoq5bvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiAnYXJ2cHJldmlldycsXG5cdFx0XHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGVhcnYtcHJldmlld2JveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAndXNlcm5hbWUnOlxuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oql5ZGK5LiN5b2T55So5oi35ZCNJywgJ+WgseWRiuS4jeeVtuS9v+eUqOiAheWQjeeosScpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5b2T55So5oi35ZCN57G75Z6LJywgJ+S4jeeVtuS9v+eUqOiAheWQjeeosemhnuWIpScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmsYLpl7vnmb7np5HkuI3lhYHorrjkvb/nlKjluKbmnInor6/lr7zmgKfjgIHlrqPkvKDmgKfjgIHkvq7ovrHmgKfmiJbnoLTlnY/mgKfnmoTnlKjmiLflkI3jgILmraTlpJbvvIzkvb/nlKjln5/lkI3lj4rpgq7nrrHlnLDlnYDnmoTnlKjmiLflkI3kuqbooqvnpoHmraLjgILov5nkupvlh4bliJnkv7HlupTlupTnlKjoh7PnlKjmiLflkI3lj4rnrb7lkI3jgILlnKjlhbbku5bor63oqIDkuK3kuI3lvZPnmoTnlKjmiLflkI3miJbpgJrov4fplJnmi7zjgIHmm7/ku6PjgIHmmpfnpLrjgIHmi4blrZfmiJbku7vkvZXpl7TmjqXmlrnms5Xovr7miJDnmoTpnZ7lpqXlvZPnlKjmiLflkI3lkIzmoLfop4bkuLrov53op4TjgIInLFxuXHRcdFx0XHRcdFx0J+axguiBnueZvuenkeS4jeWFgeioseS9v+eUqOW4tuacieiqpOWwjuaAp+OAgeWuo+WCs+aAp+OAgeS+rui+seaAp+aIluegtOWjnuaAp+eahOS9v+eUqOiAheWQjeeoseOAguatpOWklu+8jOS9v+eUqOWfn+WQjeWPiumbu+WtkOS/oeeuseS9jeWdgOeahOS9v+eUqOiAheWQjeeoseS6puiiq+emgeatouOAgumAmeS6m+a6luWJh+S/seaHieaHieeUqOiHs+S9v+eUqOiAheWQjeeoseWPiuewveWQjeOAguWcqOWFtuS7luiqnuiogOS4reS4jeeVtueahOS9v+eUqOiAheWQjeeoseaIlumAmumBjumMr+aLvOOAgeabv+S7o+OAgeaal+ekuuOAgeaLhuWtl+aIluS7u+S9lemWk+aOpeaWueazlemBlOaIkOeahOmdnuWmpeeVtuS9v+eUqOiAheWQjeeoseWQjOaoo+imlueCuumBleimj+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ2dHlwZScsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor6/lr7zmgKfnlKjmiLflkI0nLCAn6Kqk5bCO5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+ivr+WvvOaApycsICfoqqTlsI7mgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfor6/lr7zmgKfnlKjmiLflkI3pmpDlkKvnnYDkuI7otKHnjK7ogIXnm7jlhbPmiJbor6/lr7zku5bkurrnmoTkuovmg4XjgILkvovlpoLvuLDkuI3lrp7op4LngrnjgIHmmpfnpLrotKblj7fmi6XmnInnibnlrprmnYPpmZDmiJbmmpfnpLror6XotKblj7flubbpnZ7nlLHkuIDkurrmi6XmnInogIzmmK/nlLHkuIDkuKrnu4TnvqTjgIHkuIDkuKrpobnnm67miJbkuIDkuKrpm4bkvZPov5DkvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfoqqTlsI7mgKfkvb/nlKjogIXlkI3nqLHpmrHlkKvokZfoiIfosqLnjbvogIXnm7jpl5zmiJboqqTlsI7ku5bkurrnmoTkuovmg4XjgILkvovlpoLvuLDkuI3lr6bop4Dpu57jgIHmmpfnpLros6zomZ/mk4HmnInnibnlrprmrIrpmZDmiJbmmpfnpLroqbLos6zomZ/kuKbpnZ7nlLHkuIDkurrmk4HmnInogIzmmK/nlLHkuIDlgIvnvqTntYTjgIHkuIDlgIvoqIjnlavmiJbkuIDlgIvpm4bpq5TpgYvkvZzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflrqPkvKDmgKfnlKjmiLflkI0nLCAn5a6j5YKz5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+Wuo+S8oOaApycsICflrqPlgrPmgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflrqPkvKDmgKfnlKjmiLflkI3kvJrkuo7msYLpl7vnmb7np5HkuIrotbfmjqjplIDkuIDkuKrnu4TnvqTmiJbkuIDpl7Tlhazlj7jnmoTkvZznlKjjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflrqPlgrPmgKfkvb/nlKjogIXlkI3nqLHmnIPmlrzmsYLogZ7nmb7np5HkuIrotbfmjqjpirfkuIDlgIvnvqTntYTmiJbkuIDplpPlhazlj7jnmoTkvZznlKjjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmpfnpLrlubbpnZ7nlLHkuIDkurrmi6XmnIknLCAn5pqX56S65Lim6Z2e55Sx5LiA5Lq65pOB5pyJJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnc2hhcmVkJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmr4/kuKrotKblj7flj6rlj6/ku6Xku6PooajkuKrkurrvvIjlrrnorrjkuIDkupvkvovlpJbmg4XlhrXvvInvvIzmiYDmnInkuI7ku5bkurrliIbkuqvotKblj7fnmoTooYzkuLrvvIjljIXmi6zliIbkuqvotKblj7flr4bnoIHvvInlnYfooqvnpoHmraLjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfmr4/lgIvos6zomZ/lj6rlj6/ku6Xku6PooajlgIvkurrvvIjlrrnoqLHkuIDkupvkvovlpJbmg4Xms4HvvInvvIzmiYDmnInoiIfku5bkurrliIbkuqvos6zomZ/nmoTooYzngrrvvIjljIXmi6zliIbkuqvos6zomZ/lr4bnorzvvInlnYfooqvnpoHmraLjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvq7ovrHmgKfnlKjmiLflkI0nLCAn5L6u6L6x5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAn5L6u6L6x5oCnJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkvq7ovrHmgKfnlKjmiLflkI3ku6TljY/osIPnvJbovpHlj5jlvpflm7Dpmr7vvIznlJroh7Pml6Dlj6/og73jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfkvq7ovrHmgKfkvb/nlKjogIXlkI3nqLHku6TljZToqr/nt6jovK/ororlvpflm7Dpm6PvvIznlJroh7PnhKHlj6/og73jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnoLTlnY/mgKfnlKjmiLflkI0nLCAn56C05aOe5oCn5L2/55So6ICF5ZCN56ixJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+egtOWdj+aApycsICfnoLTlo57mgKcnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnoLTlnY/mgKfnlKjmiLflkI3ljIXmi6zkurrouqvmlLvlh7vjgIHkvKrlhpLku5bkurrmiJblhbbku5bkuIDliIfmnInnnYDmuIXmmbDlj6/op4HnmoTnoLTlnY/msYLpl7vnmb7np5HmhI/lm77nmoTnlKjmiLflkI3jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfnoLTlo57mgKfkvb/nlKjogIXlkI3nqLHljIXmi6zkurrouqvmlLvmk4rjgIHlgb3lhpLku5bkurrmiJblhbbku5bkuIDliIfmnInokZfmuIXmmbDlj6/opovnmoTnoLTlo57msYLogZ7nmb7np5HmhI/lnJbnmoTkvb/nlKjogIXlkI3nqLHjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6aG16Z2i5LiK6ZqQ6JeP55So5oi35ZCN77yI6ZyA55uR552j55qE55So5oi35ZCN6K+35Yu/5LqO56uZ5YaF5oql5ZGK77yM5Yu+6YCJ5q2k6aG55bm25LiN5p6E5oiQ6IO95Zyo56uZ5YaF5oql5ZGK55qE55CG55Sx77yJJyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK6Zqx6JeP5L2/55So6ICF5ZCN56ix77yI6ZyA55uj552j55qE5L2/55So6ICF5ZCN56ix6KuL5Yu/5pa856uZ5YWn5aCx5ZGK77yM5Yu+6YG45q2k6aCF5Lim5LiN5qeL5oiQ6IO95Zyo56uZ5YWn5aCx5ZGK55qE55CG55Sx77yJJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeeUqOaIt+WQjeS4jeW9k+ivt+WLvumAieatpOmhue+8jOazqOaEj++8muivt+iAg+iZkeengeS4i+iBlOezu+euoeeQhuWRmOWkhOeQhuOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+iLpeS9v+eUqOiAheWQjeeoseS4jeeVtuiri+WLvumBuOatpOmghe+8jOazqOaEj++8muiri+iAg+aFruengeS4i+iBr+e1oeeuoeeQhuWToeiZleeQhuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2hpZGVuYW1lJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdoaWRlbmFtZScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0c3R5bGU6ICdmb250LXdlaWdodDogYm9sZDsnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor4TorrrvvJonLCAn6KmV6KuW77yaJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ2FydnByZXZpZXcnLFxuXHRcdFx0XHRcdGxhYmVsOiBbcHJldmlld2xpbmtdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXByZXZpZXdib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3NwaSc6XG5cdFx0XHRcdHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5HotbflgoDlhKHosIPmn6UnLCAn55m86LW35YKA5YSh6Kq/5p+lJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzb2NrbWFzdGVyJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+S4u+i0puWPt+eahOeUqOaIt+WQje+8iOS4jeWQq1VzZXI65YmN57yA77yJJywgJ+S4u+izrOiZn+eahOS9v+eUqOiAheWQjeeose+8iOS4jeWQq1VzZXI65a2X6aaW77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6IHJvb3RfLnVpZC52YWx1ZSxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5hcnYuY2FsbGJhY2suc29ja21hc3Rlcl9jaGFuZ2VkLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXNwaW5vdGljZWJveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkeW5pbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvY2twdXBwZXQnLFxuXHRcdFx0XHRcdGxhYmVsOiAn5YKA5YShJyxcblx0XHRcdFx0XHRzdWJsYWJlbDogJ+WCgOWEoe+8micsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflgoDlhKHnmoTnlKjmiLflkI3vvIjkuI3lkKtVc2VyOuWJjee8gO+8iScsICflgoDlhKHnmoTkvb/nlKjogIXlkI3nqLHvvIjkuI3lkKtVc2VyOuWtl+mmlu+8iScpLFxuXHRcdFx0XHRcdG1pbjogMixcblx0XHRcdFx0XHRtYXg6IDksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivgeaNru+8micsICforYnmk5rvvJonKSxcblx0XHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L6T5YWl6IO95aSf55So5p2l5L2T546w6L+Z5Lqb55So5oi35Y+v6IO95rul55So5aSa6YeN6LSm5Y+355qE6K+B5o2u77yM6L+Z6YCa5bi45YyF5ous6Iy26aaG5Y+R6KiA44CB6aG16Z2i5Y6G5Y+y5oiW5YW25LuW5pyJ5YWz55qE5L+h5oGv44CC6K+36YG/5YWN5Zyo5q2k5aSE5o+Q5L6b6Z2e5LiO5YKA5YSh5oiW5rul55So5aSa6YeN6LSm5Y+355u45YWz55qE5YW25LuW6K6o6K6644CCJyxcblx0XHRcdFx0XHRcdCfovLjlhaXog73lpKDnlKjkvobpq5Tnj77pgJnkupvkvb/nlKjogIXlj6/og73mv6vnlKjlpJrph43os6zomZ/nmoTorYnmk5rvvIzpgJnpgJrluLjljIXmi6zojLbppKjnmbzoqIDjgIHpoIHpnaLmrbflj7LmiJblhbbku5bmnInpl5znmoTos4foqIrjgILoq4vpgb/lhY3lnKjmraTomZXmj5DkvpvpnZ7oiIflgoDlhKHmiJbmv6vnlKjlpJrph43os6zomZ/nm7jpl5znmoTlhbbku5boqI7oq5bjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fmsYLnlKjmiLfmn6XmoLgnLCAn6KuL5rGC5L2/55So6ICF5p+l5qC4JyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdjaGVja3VzZXInLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOaIt+afpeaguOaYr+S4gOenjeeUqOS6juiOt+WPluWCgOWEoeaMh+aOp+ebuOWFs+aKgOacr+ivgeaNrueahOW3peWFt++8jOiLpeayoeacieato+W9k+eQhueUseWImeS4jeS8muS9v+eUqO+8jOaCqOW/hemhu+WcqOivgeaNruWtl+auteWFheWIhuino+mHiuS4uuS7gOS5iOmcgOimgeS9v+eUqOivpeW3peWFt+OAgueUqOaIt+afpeaguOS4jeS8mueUqOS6juWFrOW8gOi/nuaOpeeUqOaIt+i0puWPt+S9v+eUqOeahElQ5Zyw5Z2A44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So6ICF5p+l5qC45piv5LiA56iu55So5pa8542y5Y+W5YKA5YSh5oyH5o6n55u46Zec5oqA6KGT6K2J5pOa55qE5bel5YW377yM6Iul5rKS5pyJ5q2j55W255CG55Sx5YmH5LiN5pyD5L2/55So77yM5oKo5b+F6aCI5Zyo6K2J5pOa5qyE5L2N5YWF5YiG6Kej6YeL54K65LuA6bq86ZyA6KaB5L2/55So6Kmy5bel5YW344CC5L2/55So6ICF5p+l5qC45LiN5pyD55So5pa85YWs6ZaL6YCj5o6l5L2/55So6ICF6LOs6Jmf5L2/55So55qESVDkvY3lnYDjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ2FydnByZXZpZXcnLFxuXHRcdFx0XHRcdGxhYmVsOiBbcHJldmlld2xpbmtdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0d2lua2xlYXJ2LXByZXZpZXdib3gnLFxuXHRcdFx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRsYWJlbDogW1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fkvb/nlKjluLjor4blhrPlrprmmK/lkKbku6UnLCAn6KuL5L2/55So5bi46K2Y5rG65a6a5piv5ZCm5LulJyksXG5cdFx0XHRcdFx0XHQkKCc8Y29kZT4nKS5hZGRDbGFzcygndHctYXJ2LXNvY2ttYXN0ZXInKS5jc3MoJ21hcmdpbicsICcycHg7JylbMF0sXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfpgJrnn6XnlKjmiLfjgILov5nkuI3mmK/lv4XpobvnmoTvvIzlr7nkuo7mtonlj4rmlrDnlKjmiLfnmoTmiqXlkYrogIzoqIDvvIzpgJrnn6Xku5bku6zog73orqnmiqXlkYrmmL7lvpfmm7TlhazlubPvvIzkvYbmmK/orrjlpJrmg4XlhrXkuIvvvIjlpoLplb/mnJ/noLTlnY/ogIXvvInpgJrnn6Xmm7Tlj6/og73pgILlvpflhbblj43jgIInLFxuXHRcdFx0XHRcdFx0XHQn6YCa55+l5L2/55So6ICF44CC6YCZ5LiN5piv5b+F6aCI55qE77yM5bCN5pa85raJ5Y+K5paw5L2/55So6ICF55qE5aCx5ZGK6ICM6KiA77yM6YCa55+l5LuW5YCR6IO96K6T5aCx5ZGK6aGv5b6X5pu05YWs5bmz77yM5L2G5piv6Kix5aSa5oOF5rOB5LiL77yI5aaC6ZW35pyf56C05aOe6ICF77yJ6YCa55+l5pu05Y+v6IO96YGp5b6X5YW25Y+N44CCJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhID0gd29ya19hcmVhLnJlbmRlcigpO1xuXHRcdFx0XHQkKCdpbnB1dDp0ZXh0W25hbWU9c29ja3B1cHBldF0nLCB3b3JrX2FyZWEpLmZpcnN0KCkudmFsKHJvb3RfLnVpZC52YWx1ZSk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRyb290Xy5zcGlub3RpY2VwcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KFxuXHRcdFx0XHRcdCQod29ya19hcmVhKS5maW5kKCcjdHdpbmtsZWFydi1zcGlub3RpY2Vib3gnKS5sYXN0KClbMF1cblx0XHRcdFx0KTtcblx0XHRcdFx0VHdpbmtsZS5hcnYuY2FsbGJhY2suc2V0X3NvY2ttYXN0ZXIocm9vdF8udWlkLnZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGNhc2UgJ2Fpdic6ICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oql5ZGK55So5oi356C05Z2PJywgJ+WgseWRiuS9v+eUqOiAheegtOWjnicpLFxuXHRcdFx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmj5DmiqXlgoDlhKHlupTkvJjlhYjlj5HpgIHoh7PlgoDlhKHosIPmn6XvvIzpmaTpnZ7nm7jlhbPnmoTotKblj7fmnInpq5jpopHnjofjgIHmtonlj4rlpJrkuKrpobXpnaLnrYnntKfmgKXkuKXph43nmoTnoLTlnY/ooYzkuLrjgIInLFxuXHRcdFx0XHRcdFx0J+aPkOWgseWCgOWEoeaHieWEquWFiOeZvOmAgeiHs+WCgOWEoeiqv+afpe+8jOmZpOmdnuebuOmXnOeahOizrOiZn+aciemrmOmgu+eOh+OAgea2ieWPiuWkmuWAi+mggemdouetiee3iuaApeWatOmHjeeahOegtOWjnuihjOeCuuOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55u45YWz6aG16Z2i77yaJywgJ+ebuOmXnOmggemdou+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5aaC5LiN5biM5pyb6K6p5oql5ZGK6ZO+5o6l5Yiw6aG16Z2i77yM6K+355WZ56m6JywgJ+WmguS4jeW4jOacm+iuk+WgseWRiumAo+e1kOWIsOmggemdou+8jOiri+eVmeepuicpLFxuXHRcdFx0XHRcdHZhbHVlOiBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSB8fCAnJyxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB7dmFsdWV9ID0gZXZlbnQudGFyZ2V0O1xuXHRcdFx0XHRcdFx0Y29uc3Qgcm9vdCA9IGV2ZW50LnRhcmdldC5mb3JtO1xuXHRcdFx0XHRcdFx0aWYgKHZhbHVlID09PSAnJykge1xuXHRcdFx0XHRcdFx0XHRyb290LmJhZGlkLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0cm9vdC5nb29kaWQuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cm9vdC5iYWRpZC5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRyb290Lmdvb2RpZC5kaXNhYmxlZCA9IHJvb3QuYmFkaWQudmFsdWUgPT09ICcnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdiYWRpZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+X5Yiw56C05Z2P55qE5L+u6K6i54mI5pys77yaJywgJ+WPl+WIsOegtOWjnueahOS/ruiogueJiOacrO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn55WZ56m65Lul55Wl6L+H5beu5byCJywgJ+eVmeepuuS7peeVpemBjuW3rueVsCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGVyZXZpZCcpIHx8ICcnLFxuXHRcdFx0XHRcdGRpc2FibGVkOiAhbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qge3ZhbHVlfSA9IGV2ZW50LnRhcmdldDtcblx0XHRcdFx0XHRcdGNvbnN0IHJvb3QgPSBldmVudC50YXJnZXQuZm9ybTtcblx0XHRcdFx0XHRcdHJvb3QuZ29vZGlkLmRpc2FibGVkID0gdmFsdWUgPT09ICcnO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdnb29kaWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+egtOWdj+WJjeeahOS/ruiuoueJiOacrO+8micsICfnoLTlo57liY3nmoTkv67oqILniYjmnKzvvJonKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+eVmeepuuS7peeVpei/h+W3ruW8gueahOi+g+aXqeeJiOacrCcsICfnlZnnqbrku6XnlaXpgY7lt67nlbDnmoTovIPml6nniYjmnKwnKSxcblx0XHRcdFx0XHR2YWx1ZTogbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlZ29vZHJldmlkJykgfHwgJycsXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6ICFtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSB8fCBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGVyZXZpZCcpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ2dHlwZScsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflt7Llj5Hlh7rmnIDlkI7orablkYonLCAn5bey55m85Ye65pyA5b6M6K2m5ZGKJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnZmluYWwnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6L+H5pyf5ZCO6ZqP5Y2z56C05Z2PJywgJ+WwgemOlumBjuacn+W+jOmaqOWNs+egtOWjnicpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3Bvc3RibG9jaycsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmL7ogIzmmJPop4HnmoTnuq/noLTlnY/nlKjmiLcnLCAn6aGv6ICM5piT6KaL55qE57SU56C05aOe5L2/55So6ICFJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAndmFuZGFsb25seScsXG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkOiBtdy51dGlsLmlzSVBBZGRyZXNzKHJvb3RfLnVpZC52YWx1ZSksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmL7ogIzmmJPop4HnmoRzcGFtYm905oiW5aSx56qD6LSm5Y+3JywgJ+mhr+iAjOaYk+imi+eahHNwYW1ib3TmiJblpLHnq4ros6zomZ8nKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdzcGFtYm90Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S7heeUqOadpeaVo+WPkeW5v+WRiuWuo+S8oOeahOeUqOaItycsICflg4XnlKjkvobmlaPnmbzlu6PlkYrlrqPlgrPnmoTkvb/nlKjogIUnKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdwcm9tb29ubHknLFxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZDogbXcudXRpbC5pc0lQQWRkcmVzcyhyb290Xy51aWQudmFsdWUpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFtdy51dGlsLmlzSVBBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSkge1xuXHRcdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuWPiue8lui+keaRmOimgemakOiXj+eUqOaIt+WQjScsICflnKjpoIHpnaLkuIrlj4rnt6jovK/mkZjopoHpmrHol4/kvb/nlKjogIXlkI3nqLEnKSxcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Iul55So5oi35ZCN5LiN5b2T6K+35Yu+6YCJ5q2k6aG577yM5rOo5oSP77ya6K+36ICD6JmR56eB5LiL6IGU57O7566h55CG5ZGY5aSE55CG44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6Xkvb/nlKjogIXlkI3nqLHkuI3nlbboq4vli77pgbjmraTpoIXvvIzms6jmhI/vvJroq4vogIPmha7np4HkuIvoga/ntaHnrqHnkIblk6HomZXnkIbjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnaGlkZW5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnaGlkZW5hbWUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivhOiuuu+8micsICfoqZXoq5bvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiAnYXJ2cHJldmlldycsXG5cdFx0XHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGVhcnYtcHJldmlld2JveCcsXG5cdFx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyb290Xy5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KCQod29ya19hcmVhKS5maW5kKCcjdHdpbmtsZWFydi1wcmV2aWV3Ym94JykubGFzdCgpWzBdKTtcblx0fTtcblx0VHdpbmtsZS5hcnYuY2FsbGJhY2sucHJldmlldyA9IChmb3JtKSA9PiB7XG5cdFx0Y29uc3QgcmVhc29uID0gVHdpbmtsZS5hcnYuY2FsbGJhY2suZ2V0UmVwb3J0V2lraXRleHQoZm9ybSk7XG5cdFx0aWYgKHJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRsZXQgdGl0bGU7XG5cdFx0c3dpdGNoIChpbnB1dC5jYXRlZ29yeSkge1xuXHRcdFx0Y2FzZSAndmlwJzpcblx0XHRcdFx0dGl0bGUgPSAnUWl1d2VuX3RhbGs65oql5ZGK5b2T5YmN56C05Z2PJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdld2lwJzpcblx0XHRcdFx0dGl0bGUgPSAnUWl1d2VuX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd1c2VybmFtZSc6XG5cdFx0XHRcdHRpdGxlID0gJ1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3BpJzpcblx0XHRcdFx0dGl0bGUgPSAnUWl1d2VuX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aXRsZSA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGZvcm0ucHJldmlld2VyLmJlZ2luUmVuZGVyKGBfX05PVE9DX18ke3JlYXNvblswXX1gLCB0aXRsZSk7XG5cdH07XG5cdFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0ID0gKGZvcm0pID0+IHtcblx0XHRjb25zdCBpbnB1dCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0bGV0IHJlYXNvbiA9ICcnO1xuXHRcdGxldCBjb21tZW50ID0gJyc7XG5cdFx0Y29uc3Qge3VpZH0gPSBpbnB1dDtcblx0XHRjb25zdCBjaGVja1RpdGxlID0gKHRpdGxlLCByZXZpZCkgPT4ge1xuXHRcdFx0aWYgKC9odHRwcz86XFwvXFwvLy50ZXN0KHRpdGxlKSkge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+mhtemdouWQjeensOS4jeiDveS9v+eUqOe9keWdgOOAgicsICfpoIHpnaLlkI3nqLHkuI3og73kvb/nlKjntrLlnYDjgIInKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGxldCBwYWdlXztcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHBhZ2VfID0gbmV3IG13LlRpdGxlKHRpdGxlKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShcblx0XHRcdFx0XHRgJHtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCcJywgJ+OAjCcpICtcblx0XHRcdFx0XHRcdHRpdGxlICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+KAneS4jeaYr+S4gOS4quacieaViOeahOmhtemdouWQjeensO+8jOWmguimgeS9v+eUqOW3ruW8gumTvuaOpeivt+aUvuWcqOKAnOivhOiuuuKAnScsXG5cdFx0XHRcdFx0XHRcdCfjgI3kuI3mmK/kuIDlgIvmnInmlYjnmoTpoIHpnaLlkI3nqLHvvIzlpoLopoHkvb/nlKjlt67nlbDpgKPntZDoq4vmlL7lnKjjgIzoqZXoq5bjgI0nXG5cdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdChyZXZpZCA/IHdpbmRvdy53Z1VMUygn77yM5oiW5q2j56Gu6L6T5YWl4oCc5L+u6K6i54mI5pys4oCdJywgJ++8jOaIluato+eiuui8uOWFpeOAjOS/ruiogueJiOacrOOAjScpIDogJycpXG5cdFx0XHRcdFx0feOAgmAsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFnZV8ubmFtZXNwYWNlID09PSAtMSkge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShcblx0XHRcdFx0XHRgJHtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCcJywgJ+OAjCcpICtcblx0XHRcdFx0XHRcdHRpdGxlICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+KAneWxnuS6jueJueauiumhtemdou+8jOWmguimgeS9v+eUqOW3ruW8gumTvuaOpeivt+aUvuWcqOKAnOivhOiuuuKAnScsXG5cdFx0XHRcdFx0XHRcdCfjgI3lsazmlrznibnmrorpoIHpnaLvvIzlpoLopoHkvb/nlKjlt67nlbDpgKPntZDoq4vmlL7lnKjjgIzoqZXoq5bjgI0nXG5cdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdChyZXZpZCA/IHdpbmRvdy53Z1VMUygn77yM5oiW5q2j56Gu6L6T5YWl4oCc5L+u6K6i54mI5pys4oCdJywgJ++8jOaIluato+eiuui8uOWFpeOAjOS/ruiogueJiOacrOOAjScpIDogJycpXG5cdFx0XHRcdFx0feOAgmAsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcGFnZV87XG5cdFx0fTtcblx0XHRsZXQgcGFnZTtcblx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHQvLyBSZXBvcnQgM1JSXG5cdFx0XHRjYXNlICdld2lwJzoge1xuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uID09PSAnJykge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5oKo5b+F6aG75oyH5a6a55CG55SxJywgJ+aCqOW/hemgiOaMh+WumueQhueUsScpLCB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVhc29uICs9IGA9PSDnvJbovpHmiJjkuL7miqXvvIgke3VpZH3vvIkgPT1cXG5gO1xuXHRcdFx0XHRyZWFzb24gKz0gYCogJycne3t2YW5kYWx8JHsvWz1dLy50ZXN0KHVpZCkgPyAnMT0nIDogJyd9JHt1aWR9fX0nJydcXG5gO1xuXHRcdFx0XHRjb25zdCBwYWdlcyA9ICQoJ2lucHV0OnRleHRbbmFtZT1wYWdlXScsIGZvcm0pLm1hcCgobywgZSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAkKGUpLnZhbCgpIHx8IG51bGw7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHBhZ2VfIG9mIHBhZ2VzKSB7XG5cdFx0XHRcdFx0cGFnZSA9IGNoZWNrVGl0bGUocGFnZV8sIGZhbHNlKTtcblx0XHRcdFx0XHRpZiAoIXBhZ2UpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29tbWVudCArPSBgKiB7e3BhZ2VsaW5rc3wke1xuXHRcdFx0XHRcdFx0cGFnZS5nZXRQcmVmaXhlZFRleHQoKS5pbmNsdWRlcygnPScpID8gJzE9JyA6ICcnXG5cdFx0XHRcdFx0fSR7cGFnZS5nZXRQcmVmaXhlZFRleHQoKX19fVxcbmA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5wdXQucmVhc29uID0gaW5wdXQucmVhc29uLnJlcGxhY2UoL1xcblxcbisvZywgJ1xcbicpO1xuXHRcdFx0XHRpbnB1dC5yZWFzb24gPSBpbnB1dC5yZWFzb24ucmVwbGFjZSgvXFxyP1xcbi9nLCAnXFxuKjonKTsgLy8gaW5kZW50IG5ld2xpbmVzXG5cdFx0XHRcdGNvbW1lbnQgKz0gYCogJHtpbnB1dC5yZWFzb259XFxuYDtcblx0XHRcdFx0Y29tbWVudCA9IGNvbW1lbnQudHJpbSgpO1xuXHRcdFx0XHRjb21tZW50ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGNvbW1lbnQpO1xuXHRcdFx0XHRyZWFzb24gKz0gYCR7Y29tbWVudH1cXG4qIOaPkOaKpeS6uu+8mn5+YC5jb25jYXQoJ35+XFxuKiDlpITnkIbvvJonKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBSZXBvcnQgaW5hcHByb3ByaWF0ZSB1c2VybmFtZVxuXHRcdFx0Y2FzZSAndXNlcm5hbWUnOiB7XG5cdFx0XHRcdGxldCB0eXBlcyA9IGlucHV0LmFydnR5cGUubWFwKE1vcmViaXRzLnN0cmluZy50b0xvd2VyQ2FzZUZpcnN0Q2hhcik7XG5cdFx0XHRcdGNvbnN0IGhhc1NoYXJlZCA9IHR5cGVzLmluY2x1ZGVzKCdzaGFyZWQnKTtcblx0XHRcdFx0aWYgKGhhc1NoYXJlZCkge1xuXHRcdFx0XHRcdHR5cGVzLnNwbGljZSh0eXBlcy5pbmRleE9mKCdzaGFyZWQnKSwgMSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHR5cGVzLmluY2x1ZGVzKCfkvq7ovrHmgKcnKSAmJlxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Lil6YeN55qE5L6u6L6x5oCn55So5oi35ZCN5ZKM6ZKI5a+554m55a6a5Liq5Lq655qE5L6u6L6x5oCn55So5oi35ZCN5LiN5bqU5Zyo5YWs5byA6aG16Z2i5oql5ZGK77yM6ICM5piv5bqU5b2T56eB5LiL6IGU57O755uR552j5ZGY5aSE55CG44CC5piv5ZCm57un57ut77yfJyxcblx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWatOmHjeeahOS+rui+seaAp+S9v+eUqOiAheWQjeeoseWSjOmHneWwjeeJueWumuWAi+S6uueahOS+rui+seaAp+S9v+eUqOiAheWQjeeoseS4jeaHieWcqOWFrOmWi+mggemdouWgseWRiu+8jOiAjOaYr+aHieeVtuengeS4i+iBr+e1oeebo+edo+WToeiZleeQhuOAguaYr+WQpue5vOe6jO+8nydcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZXMubGVuZ3RoIDw9IDIpIHtcblx0XHRcdFx0XHR0eXBlcyA9IHR5cGVzLmpvaW4oJ+WSjCcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHR5cGVzID0gW3R5cGVzLnNsaWNlKDAsIC0xKS5qb2luKCfjgIEnKSwgdHlwZXMuc2xpY2UoLTEpXS5qb2luKCflkownKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ICs9IGAqe3t1c2VyLXVhYXwxPSR7dWlkfWA7XG5cdFx0XHRcdGlmIChpbnB1dC5oaWRlbmFtZSkge1xuXHRcdFx0XHRcdGNvbW1lbnQgKz0gJ3xoaWRlbmFtZT0xJztcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ICs9ICd9fSAmbmRhc2g7ICc7XG5cdFx0XHRcdGlmICh0eXBlcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9IHR5cGVzICsgd2luZG93LndnVUxTKCfnlKjmiLflkI0nLCAn5L2/55So6ICF5ZCN56ixJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVzLmxlbmd0aCAmJiBoYXNTaGFyZWQpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9ICfvvIwnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChoYXNTaGFyZWQpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9IHdpbmRvdy53Z1VMUygn5pqX56S66K+l6LSm5Y+35bm26Z2e55Sx5LiA5Lq65oul5pyJJywgJ+aal+ekuuipsuizrOiZn+S4pumdnueUseS4gOS6uuaTgeaciScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlcy5sZW5ndGggfHwgaGFzU2hhcmVkKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSAn44CCJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSBNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIoaW5wdXQucmVhc29uKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGNvbW1lbnQpO1xuXHRcdFx0XHRjb21tZW50ICs9ICctLX5+Jy5jb25jYXQoJ35+Jyk7XG5cdFx0XHRcdGNvbW1lbnQgPSBjb21tZW50LnJlcGxhY2UoL1xccj9cXG4vZywgJ1xcbio6Jyk7IC8vIGluZGVudCBuZXdsaW5lc1xuXHRcdFx0XHRyZWFzb24gPSBgPT0g5LiN5b2T55So5oi35ZCN5oql5ZGK77yIJHtcblx0XHRcdFx0XHRpbnB1dC5oaWRlbmFtZSA/IHdpbmRvdy53Z1VMUygn5bey6ZqQ6JeP55So5oi35ZCNJywgJ+W3sumaseiXj+S9v+eUqOiAheWQjeeosScpIDogdWlkXG5cdFx0XHRcdH3vvIkgPT1cXG5gO1xuXHRcdFx0XHRyZWFzb24gKz0gY29tbWVudDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBRVzpTUElcblx0XHRcdGNhc2UgJ3NwaSc6IHtcblx0XHRcdFx0aWYgKCFpbnB1dC5yZWFzb24pIHtcblx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+i+k+WFpeivgeaNruOAgicsICfoq4vovLjlhaXorYnmk5rjgIInKSwge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWFydicsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHNvY2twdXBwZXRzID0gTW9yZWJpdHMuYXJyYXkudW5pcShcblx0XHRcdFx0XHRbLi4uJCgnaW5wdXQ6dGV4dFtuYW1lPXNvY2twdXBwZXRdJywgZm9ybSldLm1hcCgobykgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuICQobykudmFsKCkudHJpbSgpIHx8IG51bGw7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKCFzb2NrcHVwcGV0c1swXSkge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5oKo5rKh5pyJ5oyH5a6a5Lu75L2V5YKA5YSh44CCJywgJ+aCqOaykuacieaMh+WumuS7u+S9leWCgOWEoeOAgicpLCB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYXJ2Jyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCArPSAne3snLmNvbmNhdCgnc3Vic3Q6JywgJ1NQSSByZXBvcnR8Jyk7XG5cdFx0XHRcdGlmICghc29ja3B1cHBldHMuaW5jbHVkZXMoaW5wdXQuc29ja21hc3RlcikpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9ICcxPXt7Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdCcjaWZleGlzdDp7eycsXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGBGVUxMUEFHRU5BTUV9fXx8JHtpbnB1dC5zb2NrbWFzdGVyfX19fGBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbW1lbnQgKz0gYCR7c29ja3B1cHBldHNcblx0XHRcdFx0XHQubWFwKChzb2NrLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGAke2luZGV4ICsgMn09JHtzb2NrfWA7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuam9pbignfCcpfVxcbnxldmlkZW5jZT0ke01vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihpbnB1dC5yZWFzb24pfVxcbmA7XG5cdFx0XHRcdGlmIChpbnB1dC5jaGVja3VzZXIpIHtcblx0XHRcdFx0XHRjb21tZW50ICs9ICd8Y2hlY2t1c2VyPXllcyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29tbWVudCArPSAnfX0nO1xuXHRcdFx0XHRyZWFzb24gPSBjb21tZW50O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVwb3J0IHVzZXIgZm9yIHZhbmRhbGlzbVxuXHRcdFx0LyogY2FzZSAnYWl2JzogKi9cblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0aWYgKCFpbnB1dC5hcnZ0eXBlLmxlbmd0aCAmJiBpbnB1dC5yZWFzb24gPT09ICcnKSB7XG5cdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfmgqjlv4XpobvmjIflrprnkIbnlLEnLCAn5oKo5b+F6aCI5oyH5a6a55CG55SxJyksIHtcblx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVhcnYnLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZWFzb24gKz0gYD09ICR7aW5wdXQuaGlkZW5hbWUgPyB3aW5kb3cud2dVTFMoJ+W3sumakOiXj+eUqOaIt+WQjScsICflt7LpmrHol4/kvb/nlKjogIXlkI3nqLEnKSA6IHVpZH0gPT1cXG5gO1xuXHRcdFx0XHRyZWFzb24gKz0gYCogJycne3t2YW5kYWx8JHsvWz1dLy50ZXN0KHVpZCkgPyAnMT0nIDogJyd9JHt1aWR9YDtcblx0XHRcdFx0aWYgKGlucHV0LmhpZGVuYW1lKSB7XG5cdFx0XHRcdFx0cmVhc29uICs9ICd8aGlkZW5hbWU9MSc7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVhc29uICs9IFwifX0nJydcXG5cIjtcblx0XHRcdFx0Y29uc3QgdHlwZXMgPSBpbnB1dC5hcnZ0eXBlXG5cdFx0XHRcdFx0Lm1hcCgodikgPT4ge1xuXHRcdFx0XHRcdFx0c3dpdGNoICh2KSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2ZpbmFsJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+W3suWPkeWHuuacgOWQjuitpuWRiic7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3Bvc3RibG9jayc6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICflsIHnpoHov4fmnJ/lkI7pmo/ljbPnoLTlnY8nO1xuXHRcdFx0XHRcdFx0XHRjYXNlICdzcGFtYm90Jzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+aYvuiAjOaYk+ingeeahHNwYW1ib3TmiJblpLHnqoPotKblj7cnO1xuXHRcdFx0XHRcdFx0XHRjYXNlICd2YW5kYWxvbmx5Jzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ+aYvuiAjOaYk+ingeeahOe6r+egtOWdj+eUqOaItyc7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3Byb21vb25seSc6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICfku4XnlKjmnaXmlaPlj5Hlub/lkYrlrqPkvKDnmoTnlKjmiLcnO1xuXHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAn5pyq55+l55CG55SxJztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5qb2luKCfvvIwnKTtcblx0XHRcdFx0aWYgKGlucHV0LnBhZ2UgIT09ICcnKSB7XG5cdFx0XHRcdFx0cGFnZSA9IGNoZWNrVGl0bGUoaW5wdXQucGFnZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0aWYgKCFwYWdlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbW1lbnQgKz0gYCoge3twYWdlbGlua3N8JHtcblx0XHRcdFx0XHRcdHBhZ2UuZ2V0UHJlZml4ZWRUZXh0KCkuaW5jbHVkZXMoJz0nKSA/ICcxPScgOiAnJ1xuXHRcdFx0XHRcdH0ke3BhZ2UuZ2V0UHJlZml4ZWRUZXh0KCl9fX1gO1xuXHRcdFx0XHRcdGlmIChpbnB1dC5iYWRpZCkge1xuXHRcdFx0XHRcdFx0Y29tbWVudCArPSBg77yIe3tkaWZmfCR7cGFnZS5nZXRQcmVmaXhlZFRleHQoKX18JHtpbnB1dC5iYWRpZH18JHtpbnB1dC5nb29kaWQgPz8gJyd9fGRpZmZ9fe+8iWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbW1lbnQgKz0gJ1xcbic7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVzKSB7XG5cdFx0XHRcdFx0Y29tbWVudCArPSBgKiAke3R5cGVzfWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGlucHV0LnJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRpbnB1dC5yZWFzb24gPSBpbnB1dC5yZWFzb24ucmVwbGFjZSgvXFxuXFxuKy9nLCAnXFxuJyk7XG5cdFx0XHRcdFx0aW5wdXQucmVhc29uID0gaW5wdXQucmVhc29uLnJlcGxhY2UoL1xccj9cXG4vZywgJ1xcbio6Jyk7IC8vIGluZGVudCBuZXdsaW5lc1xuXHRcdFx0XHRcdGNvbW1lbnQgKz0gKHR5cGVzID8gJ+OAgicgOiAnKiAnKSArIGlucHV0LnJlYXNvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb21tZW50ID0gY29tbWVudC50cmltKCk7XG5cdFx0XHRcdGNvbW1lbnQgPSBNb3JlYml0cy5zdHJpbmcuYXBwZW5kUHVuY3R1YXRpb24oY29tbWVudCk7XG5cdFx0XHRcdHJlYXNvbiArPSBgJHtjb21tZW50fVxcbiog5Y+R546w5Lq677yafn5gLmNvbmNhdCgnfn5cXG4qIOWkhOeQhu+8micpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFtyZWFzb24sIGNvbW1lbnRdO1xuXHR9O1xuXHRUd2lua2xlLmFydi5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRjb25zdCB7dWlkfSA9IGlucHV0O1xuXHRcdGxldCByZWFzb247XG5cdFx0bGV0IHN1bW1hcnk7XG5cdFx0c3dpdGNoIChpbnB1dC5jYXRlZ29yeSkge1xuXHRcdFx0Ly8gUmVwb3J0IDNSUlxuXHRcdFx0Y2FzZSAnZXdpcCc6IHtcblx0XHRcdFx0cmVhc29uID0gVHdpbmtsZS5hcnYuY2FsbGJhY2suZ2V0UmVwb3J0V2lraXRleHQoZm9ybSk7XG5cdFx0XHRcdGlmIChyZWFzb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdW1tYXJ5ID0gYCR7d2luZG93LndnVUxTKCfmiqXlkYonLCAn5aCx5ZGKJyl9W1tTcGVjaWFsOkNvbnRyaWJzLyR7dWlkfXwke3VpZH1dXWA7XG5cdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9ICdRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb8nO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+aKpeWRiuWujOaIkCcsICfloLHlkYrlrozmiJAnKTtcblx0XHRcdFx0Y29uc3QgZXdpcFBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdCdRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb8nLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5aSE55CGRVdJUOivt+axgicsICfomZXnkIZFV0lQ6KuL5rGCJylcblx0XHRcdFx0KTtcblx0XHRcdFx0ZXdpcFBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdGV3aXBQYWdlLmxvYWQoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRleHQgPSBld2lwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRcdGNvbnN0ICRld2lwTGluayA9ICc8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpFV0lQXCI+UVc6RVdJUDwvYT4nO1xuXHRcdFx0XHRcdC8vIGNoZWNrIGlmIHVzZXIgaGFzIGFscmVhZHkgYmVlbiByZXBvcnRlZFxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdG5ldyBSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdGA9PT1cXFxccypcXFxce1xcXFx7XFxcXHMqKD86W1Z2XWFuZGFsKVxcXFxzKlxcXFx8XFxcXHMqKD86MT0pP1xcXFxzKiR7TW9yZWJpdHMuc3RyaW5nLmVzY2FwZVJlZ0V4cChcblx0XHRcdFx0XHRcdFx0XHR1aWRcblx0XHRcdFx0XHRcdFx0KX1cXFxccypcXFxcfVxcXFx9XFxcXHMqPT09YFxuXHRcdFx0XHRcdFx0KS50ZXN0KHRleHQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRld2lwUGFnZVxuXHRcdFx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0XHRcdC5lcnJvcih3aW5kb3cud2dVTFMoJ+aKpeWRiuW3suWtmOWcqO+8jOWwhuS4jeS8muWKoOWFpeaWsOeahCcsICfloLHlkYrlt7LlrZjlnKjvvIzlsIfkuI3mnIPliqDlhaXmlrDnmoQnKSk7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMucHJpbnRVc2VyVGV4dChcblx0XHRcdFx0XHRcdFx0cmVhc29uWzFdLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aCqOi+k+WFpeeahOivhOiuuuW3suWcqOS4i+aWueaPkOS+m++8jOaCqOWPr+S7peWwhuWFtuWKoOWFpeWIsCcsXG5cdFx0XHRcdFx0XHRcdFx0J+aCqOi8uOWFpeeahOipleirluW3suWcqOS4i+aWueaPkOS+m++8jOaCqOWPr+S7peWwh+WFtuWKoOWFpeWIsCdcblx0XHRcdFx0XHRcdFx0KSArXG5cdFx0XHRcdFx0XHRcdFx0JGV3aXBMaW5rICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suWtmOWcqOeahOWwj+iKguS4re+8micsICflt7LlrZjlnKjnmoTlsI/nr4DkuK3vvJonKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZXdpcFBhZ2Uuc2V0UGFnZVNlY3Rpb24oMCk7XG5cdFx0XHRcdFx0ZXdpcFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+WKoOWFpeaWsOaKpeWRiuKApicsICfliqDlhaXmlrDloLHlkYrigKYnKSk7XG5cdFx0XHRcdFx0ZXdpcFBhZ2Uuc2V0RWRpdFN1bW1hcnkoc3VtbWFyeSk7XG5cdFx0XHRcdFx0ZXdpcFBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdGV3aXBQYWdlLnNldEFwcGVuZFRleHQoYFxcbiR7cmVhc29uWzBdfWApO1xuXHRcdFx0XHRcdGV3aXBQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBSZXBvcnQgaW5hcHByb3ByaWF0ZSB1c2VybmFtZVxuXHRcdFx0Y2FzZSAndXNlcm5hbWUnOiB7XG5cdFx0XHRcdHJlYXNvbiA9IFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0KGZvcm0pO1xuXHRcdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSAnUWl1d2VuX3RhbGs6566h55CG5ZGY5ZGK56S65p2/Jztcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKCfmiqXlkYrlrozmiJAnLCAn5aCx5ZGK5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHVhYVBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdCdRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb8nLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5aSE55CGVUFB6K+35rGCJywgJ+iZleeQhlVBQeiri+axgicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHVhYVBhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHVhYVBhZ2UubG9hZCgoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdGV4dCA9IHVhYVBhZ2UuZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0XHQvLyBjaGVjayBpZiB1c2VyIGhhcyBhbHJlYWR5IGJlZW4gcmVwb3J0ZWRcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRuZXcgUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRgXFxcXHtcXFxce1xcXFxzKnVzZXItdWFhXFxcXHMqXFxcXHxcXFxccyooMVxcXFxzKj1cXFxccyopPyR7TW9yZWJpdHMuc3RyaW5nLmVzY2FwZVJlZ0V4cChcblx0XHRcdFx0XHRcdFx0XHR1aWRcblx0XHRcdFx0XHRcdFx0KX1cXFxccyooXFxcXHx8XFxcXH0pYFxuXHRcdFx0XHRcdFx0KS50ZXN0KHRleHQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR1YWFQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+W3suiiq+WIl+WFpeOAgicsICfkvb/nlKjogIXlt7LooqvliJflhaXjgIInKSk7XG5cdFx0XHRcdFx0XHRjb25zdCAkdWFhTGluayA9ICc8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIvd2lraS9RVzpVQUFcIj5RVzpVQUE8L2E+Jztcblx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5wcmludFVzZXJUZXh0KFxuXHRcdFx0XHRcdFx0XHRyZWFzb25bMV0sXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oKo6L6T5YWl55qE6K+E6K665bey5Zyo5LiL5pa55o+Q5L6b77yM5oKo5Y+v5Lul5bCG5YW25omL5bel5Yqg5YWlJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo6Ly45YWl55qE6KmV6KuW5bey5Zyo5LiL5pa55o+Q5L6b77yM5oKo5Y+v5Lul5bCH5YW25omL5bel5Yqg5YWlJ1xuXHRcdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdFx0XHQkdWFhTGluayArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuIror6XnlKjmiLfnmoTmiqXlkYrkuK3vvJonLCAn5LiK6Kmy5L2/55So6ICF55qE5aCx5ZGK5Lit77yaJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHVhYVBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+WKoOWFpeaWsOaKpeWRiuKApicsICfliqDlhaXmlrDloLHlkYrigKYnKSk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+aWsOaPkOaKpScsICfmlrDmj5DloLEnKSk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0dWFhUGFnZS5zZXRBcHBlbmRUZXh0KGBcXG5cXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHR1YWFQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBRVzpTUElcblx0XHRcdGNhc2UgJ3NwaSc6IHtcblx0XHRcdFx0cmVhc29uID0gVHdpbmtsZS5hcnYuY2FsbGJhY2suZ2V0UmVwb3J0V2lraXRleHQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFx0XHRjb25zdCByZXBvcnRwYWdlID0gJ1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadvyc7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gcmVwb3J0cGFnZTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKCfmiqXlkYrlrozmiJAnLCAn5aCx5ZGK5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHNwaVBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHJlcG9ydHBhZ2UsIHdpbmRvdy53Z1VMUygn5oqT5Y+W6K6o6K666aG16Z2iJywgJ+aKk+WPluiojuirlumggemdoicpKTtcblx0XHRcdFx0c3BpUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0c3BpUGFnZS5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+WKoOWFpeaWsOaPkOaKpScsICfliqDlhaXmlrDmj5DloLEnKSk7XG5cdFx0XHRcdHNwaVBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRzcGlQYWdlLnNldEFwcGVuZFRleHQocmVhc29uWzBdKTtcblx0XHRcdFx0c3BpUGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdzcGlXYXRjaFJlcG9ydCcpKTtcblx0XHRcdFx0c3BpUGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlcG9ydCB1c2VyIGZvciB2YW5kYWxpc21cblx0XHRcdC8qIGNhc2UgJ2Fpdic6ICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdHJlYXNvbiA9IFR3aW5rbGUuYXJ2LmNhbGxiYWNrLmdldFJlcG9ydFdpa2l0ZXh0KGZvcm0pO1xuXHRcdFx0XHRpZiAocmVhc29uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0c3VtbWFyeSA9IGAke3dpbmRvdy53Z1VMUygn5oql5ZGKJywgJ+WgseWRiicpfVtbU3BlY2lhbDpDb250cmlicy8ke3VpZH18JHt1aWR9XV1gO1xuXHRcdFx0XHRpZiAoaW5wdXQuaGlkZW5hbWUpIHtcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfmiqXlkYrkuIDlkI3nlKjmiLcnLCAn5aCx5ZGK5LiA5ZCN5L2/55So6ICFJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gJ1FpdXdlbl90YWxrOuaKpeWRiuW9k+WJjeegtOWdjyc7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5oql5ZGK5a6M5oiQJywgJ+WgseWRiuWujOaIkCcpO1xuXHRcdFx0XHRjb25zdCBhaXZQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHQnUWl1d2VuX3RhbGs65oql5ZGK5b2T5YmN56C05Z2PJyxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WkhOeQhlZJUOivt+axgicsICfomZXnkIZWSVDoq4vmsYInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhaXZQYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHRhaXZQYWdlLmxvYWQoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRleHQgPSBhaXZQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Y29uc3QgJGFpdkxpbmsgPSAnPGEgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiL3dpa2kvUVc6VklQXCI+UVc6VklQPC9hPic7XG5cdFx0XHRcdFx0Ly8gY2hlY2sgaWYgdXNlciBoYXMgYWxyZWFkeSBiZWVuIHJlcG9ydGVkXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChcblx0XHRcdFx0XHRcdFx0YD09PVxcXFxzKlxcXFx7XFxcXHtcXFxccyooPzpbVnZdYW5kYWwpXFxcXHMqXFxcXHxcXFxccyooPzoxPSk/XFxcXHMqJHtNb3JlYml0cy5zdHJpbmcuZXNjYXBlUmVnRXhwKFxuXHRcdFx0XHRcdFx0XHRcdHVpZFxuXHRcdFx0XHRcdFx0XHQpfVxcXFxzKlxcXFx9XFxcXH1cXFxccyo9PT1gXG5cdFx0XHRcdFx0XHQpLnRlc3QodGV4dClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGFpdlBhZ2Vcblx0XHRcdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdFx0XHQuZXJyb3Iod2luZG93LndnVUxTKCfmiqXlkYrlt7LlrZjlnKjvvIzlsIbkuI3kvJrliqDlhaXmlrDnmoQnLCAn5aCx5ZGK5bey5a2Y5Zyo77yM5bCH5LiN5pyD5Yqg5YWl5paw55qEJykpO1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLnByaW50VXNlclRleHQoXG5cdFx0XHRcdFx0XHRcdHJlYXNvblsxXSxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovpPlhaXnmoTor4Torrrlt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIblhbbliqDlhaXliLAnLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjovLjlhaXnmoToqZXoq5blt7LlnKjkuIvmlrnmj5DkvpvvvIzmgqjlj6/ku6XlsIflhbbliqDlhaXliLAnXG5cdFx0XHRcdFx0XHRcdCkgK1xuXHRcdFx0XHRcdFx0XHRcdCRhaXZMaW5rICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suWtmOWcqOeahOWwj+iKguS4re+8micsICflt7LlrZjlnKjnmoTlsI/nr4DkuK3vvJonKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRQYWdlU2VjdGlvbigwKTtcblx0XHRcdFx0XHRhaXZQYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5zdGF0dXMod2luZG93LndnVUxTKCfliqDlhaXmlrDmiqXlkYrigKYnLCAn5Yqg5YWl5paw5aCx5ZGK4oCmJykpO1xuXHRcdFx0XHRcdGFpdlBhZ2Uuc2V0RWRpdFN1bW1hcnkoc3VtbWFyeSk7XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0YWl2UGFnZS5zZXRBcHBlbmRUZXh0KGBcXG4ke3JlYXNvblswXX1gKTtcblx0XHRcdFx0XHRhaXZQYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmFydiwgJ2FydicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXdhcm4uanMgKi9cbihmdW5jdGlvbiB0d2lua2xld2FybigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZXdhcm4uanM6IFdhcm4gbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIldhcm5cIilcblx0ICogQWN0aXZlIG9uOiBBbnkgcGFnZSB3aXRoIHJlbGV2YW50IHVzZXIgbmFtZSAodXNlcnNwYWNlLCBjb250cmlicyxcblx0ICogZXRjLiksIGFzIHdlbGwgYXMgdGhlIHJvbGxiYWNrIHN1Y2Nlc3MgcGFnZVxuXHQgKi9cblx0Y29uc3QgcmVsZXZhbnRVc2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRUd2lua2xlLndhcm4gPSAoKSA9PiB7XG5cdFx0aWYgKHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFjayxcblx0XHRcdFx0J+itpuWRiicsXG5cdFx0XHRcdCd0dy13YXJuJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCforablkYrmiJbmj5DphpLnlKjmiLcnLCAn6K2m5ZGK5oiW5o+Q6YaS5L2/55So6ICFJylcblx0XHRcdCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignYXV0b01lbnVBZnRlclJvbGxiYWNrJykgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMyAmJlxuXHRcdFx0XHRtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ZhbmFydGljbGUnKSAmJlxuXHRcdFx0XHQhbXcudXRpbC5nZXRQYXJhbVZhbHVlKCdub2F1dG93YXJuJylcblx0XHRcdCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2soKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gTW9kaWZ5IFVSTCBvZiB0YWxrIHBhZ2Ugb24gcm9sbGJhY2sgc3VjY2VzcyBwYWdlcywgbWFrZXMgdXNlIG9mIGFcblx0XHQvLyBjdXN0b20gbWVzc2FnZSBib3ggaW4gW1tNZWRpYVdpa2k6Um9sbGJhY2stc3VjY2Vzc11dXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICdyb2xsYmFjaycpIHtcblx0XHRcdGNvbnN0ICR2YW5kYWxUYWxrTGluayA9ICRib2R5LmZpbmQoJyNtdy1yb2xsYmFjay1zdWNjZXNzJykuZmluZCgnLm13LXVzZXJ0b29sbGlua3MgYScpLmZpcnN0KCk7XG5cdFx0XHRpZiAoJHZhbmRhbFRhbGtMaW5rLmxlbmd0aCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4ubWFrZVZhbmRhbFRhbGtMaW5rKCR2YW5kYWxUYWxrTGluaywgTW9yZWJpdHMucGFnZU5hbWVOb3JtKTtcblx0XHRcdFx0JHZhbmRhbFRhbGtMaW5rLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQWJ1c2VMb2cnICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0FidXNlRmlsdGVyVmFyaWFibGVzJykgIT09IG51bGxcblx0XHQpIHtcblx0XHRcdGNvbnN0IGFmVGFsa0xpbmsgPSAkYm9keS5maW5kKCcubXctdXNlcnRvb2xsaW5rcy10YWxrJykuZmlyc3QoKTtcblx0XHRcdGlmIChhZlRhbGtMaW5rLmxlbmd0aCkge1xuXHRcdFx0XHRUd2lua2xlLndhcm4ubWFrZVZhbmRhbFRhbGtMaW5rKGFmVGFsa0xpbmssIG13LmNvbmZpZy5nZXQoJ3dnQWJ1c2VGaWx0ZXJWYXJpYWJsZXMnKS5wYWdlX3ByZWZpeGVkdGl0bGUpO1xuXHRcdFx0XHRhZlRhbGtMaW5rLmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0VHdpbmtsZS53YXJuLm1ha2VWYW5kYWxUYWxrTGluayA9ICgkdmFuZGFsVGFsa0xpbmssIHBhZ2VuYW1lKSA9PiB7XG5cdFx0JHZhbmRhbFRhbGtMaW5rLndyYXBJbm5lcihcblx0XHRcdCQoJzxzcGFuPicpLmF0dHIoXG5cdFx0XHRcdCd0aXRsZScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5aaC5p6c5ZCI6YCC77yM5oKo5Y+v5Lul55SoVHdpbmtsZeWcqOivpeeUqOaIt+iuqOiuuumhteS4iuWBmuWHuuitpuWRiuOAgicsXG5cdFx0XHRcdFx0J+WmguaenOWQiOmBqe+8jOaCqOWPr+S7peeUqFR3aW5rbGXlnKjoqbLkvb/nlKjogIXoqI7oq5bpoIHkuIrlgZrlh7rorablkYrjgIInXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHRcdGNvbnN0IGV4dHJhUGFyYW0gPSBgdmFuYXJ0aWNsZT0ke213LnV0aWwucmF3dXJsZW5jb2RlKHBhZ2VuYW1lKX1gO1xuXHRcdGNvbnN0IGhyZWYgPSAkdmFuZGFsVGFsa0xpbmsuYXR0cignaHJlZicpO1xuXHRcdGlmIChocmVmLmluY2x1ZGVzKCc/JykpIHtcblx0XHRcdCR2YW5kYWxUYWxrTGluay5hdHRyKCdocmVmJywgYCR7aHJlZn0mJHtleHRyYVBhcmFtfWApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkdmFuZGFsVGFsa0xpbmsuYXR0cignaHJlZicsIGAke2hyZWZ9PyR7ZXh0cmFQYXJhbX1gKTtcblx0XHR9XG5cdH07XG5cdC8vIFVzZWQgdG8gY2xvc2Ugd2luZG93IHdoZW4gc3dpdGNoaW5nIHRvIEFSViBpbiBhdXRvbGV2ZWxcblx0VHdpbmtsZS53YXJuLmRpYWxvZyA9IG51bGw7XG5cdFR3aW5rbGUud2Fybi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRyZWxldmFudFVzZXJOYW1lID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgJiZcblx0XHRcdCFjb25maXJtKHdpbmRvdy53Z1VMUygn5oKo5bCG6KaB6K2m5ZGK6Ieq5bex77yB5oKo56Gu5a6a6KaB57un57ut5ZCX77yfJywgJ+aCqOWwh+imgeitpuWRiuiHquW3se+8geaCqOeiuuWumuimgee5vOe6jOWXju+8nycpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLndhcm4uZGlhbG9nID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDQ0MCk7XG5cdFx0Y29uc3Qge2RpYWxvZ30gPSBUd2lua2xlLndhcm47XG5cdFx0ZGlhbG9nLnNldFRpdGxlKHdpbmRvdy53Z1VMUygn6K2m5ZGK44CB5o+Q6YaS55So5oi3JywgJ+itpuWRiuOAgeaPkOmGkuS9v+eUqOiAhScpKTtcblx0XHRkaWFsb2cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdGRpYWxvZy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6K2m5ZGK6K6+572uJywgJ+itpuWRiuioreWumicpLCAnSDpUVy9QUkVGI3dhcm4nKTtcblx0XHRkaWFsb2cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjd2FybicpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUud2Fybi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgbWFpbl9zZWxlY3QgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup6KaB5Y+R6YCB55qE6K2m5ZGK5oiW5o+Q6YaS57G75Z6LJywgJ+mBuOaTh+imgeWCs+mAgeeahOitpuWRiuaIluaPkOmGkumhnuWIpScpLFxuXHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfpppblhYjpgInmi6nkuIDnu4TvvIzlho3pgInmi6nlhbfkvZPnmoTorablkYrmqKHmnb/jgIInLCAn6aaW5YWI6YG45pOH5LiA57WE77yM5YaN6YG45pOH5YW36auU55qE6K2m5ZGK5qih5p2/44CCJyksXG5cdFx0fSk7XG5cdFx0Y29uc3QgbWFpbl9ncm91cCA9IG1haW5fc2VsZWN0LmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdtYWluX2dyb3VwJyxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3orr7nva7pu5jorqTpgInmi6nnmoTpgInpobknLFxuXHRcdFx0XHQn5oKo5Y+v5ZyoVHdpbmtsZeWBj+WlveioreWumuS4reioreWumumgkOioremBuOaTh+eahOmBuOmghSdcblx0XHRcdCksXG5cdFx0XHRldmVudDogVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSxcblx0XHR9KTtcblx0XHRjb25zdCBkZWZhdWx0R3JvdXAgPSBOdW1iZXIucGFyc2VJbnQoVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0V2FybmluZ0dyb3VwJyksIDYpO1xuXHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5Yqo6YCJ5oup5bGC57qnJywgJ+iHquWLlemBuOaTh+WxpOe0micpLFxuXHRcdFx0dmFsdWU6ICdhdXRvbGV2ZWwnLFxuXHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gNyxcblx0XHR9KTtcblx0XHRtYWluX2dyb3VwLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdGxhYmVsOiAnMe+8muaPkOmGkicsXG5cdFx0XHR2YWx1ZTogJ2xldmVsMScsXG5cdFx0XHRzZWxlY3RlZDogZGVmYXVsdEdyb3VwID09PSAxLFxuXHRcdH0pO1xuXHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6ICcy77ya6K2m5ZGKJyxcblx0XHRcdHZhbHVlOiAnbGV2ZWwyJyxcblx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDIsXG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY29tYmluZWRTaW5nbGV0TWVudXMnKSkge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn5raI5oGvJywgJ+WWruWxpOe0muioiuaBrycpLFxuXHRcdFx0XHR2YWx1ZTogJ3NpbmdsZWNvbWJpbmVkJyxcblx0XHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gMyB8fCBkZWZhdWx0R3JvdXAgPT09IDQsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2V5bGC57qn5o+Q6YaSJywgJ+WWruWxpOe0muaPkOmGkicpLFxuXHRcdFx0XHR2YWx1ZTogJ3NpbmdsZW5vdGljZScsXG5cdFx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDMsXG5cdFx0XHR9KTtcblx0XHRcdG1haW5fZ3JvdXAuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WNleWxgue6p+itpuWRiicsICfllq7lsaTntJrorablkYonKSxcblx0XHRcdFx0dmFsdWU6ICdzaW5nbGV3YXJuJyxcblx0XHRcdFx0c2VsZWN0ZWQ6IGRlZmF1bHRHcm91cCA9PT0gNCxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21XYXJuaW5nTGlzdCcpLmxlbmd0aCkge1xuXHRcdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6K2m5ZGKJywgJ+iHquioguitpuWRiicpLFxuXHRcdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDUsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0bWFpbl9ncm91cC5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogJ+aJgOacieitpuWRiuaooeadvycsXG5cdFx0XHR2YWx1ZTogJ2tpdGNoZW5zaW5rJyxcblx0XHRcdHNlbGVjdGVkOiBkZWZhdWx0R3JvdXAgPT09IDYsXG5cdFx0fSk7XG5cdFx0bWFpbl9zZWxlY3QuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ3N1Yl9ncm91cCcsXG5cdFx0XHRldmVudDogVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9zdWJjYXRlZ29yeSxcblx0XHR9KTsgLy8gV2lsbCBiZSBlbXB0eSB0byBiZWdpbiB3aXRoLlxuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAnYXJ0aWNsZScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLpk77mjqUnLCAn6aCB6Z2i6YCj57WQJyksXG5cdFx0XHR2YWx1ZTogbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlJykgfHwgJycsXG5cdFx0XHRzaXplOiA1MCxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn57uZ5qih5p2/5Lit5Yqg5YWl5LiA6aG16Z2i6ZO+5o6l77yM5Y+v55WZ56m644CCJywgJ+e1puaooeadv+S4reWKoOWFpeS4gOmggemdoumAo+e1kO+8jOWPr+eVmeepuuOAgicpLFxuXHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+S7hemZkOS4gOS4qu+8jOWLv+S9v+eUqOe9keWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZmJyxcblx0XHRcdFx0J+WDhemZkOS4gOWAi++8jOWLv+S9v+eUqOe2suWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZmJ1xuXHRcdFx0KSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0aWQ6ICd0d2lua2xlLXdhcm4td2FybmluZy1tZXNzYWdlcycsXG5cdFx0fSk7XG5cdFx0Y29uc3QgbW9yZSA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRuYW1lOiAncmVhc29uR3JvdXAnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K2m5ZGK5L+h5oGvJywgJ+itpuWRiuizh+ioiicpLFxuXHRcdH0pO1xuXHRcdG1vcmUuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj6/pgInkv6Hmga/vvJonLCAn5Y+v6YG46LOH6KiK77yaJyksXG5cdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn55CG55Sx5oiW5piv6ZmE5Yqg5L+h5oGvJywgJ+eQhueUseaIluaYr+mZhOWKoOizh+ioiicpLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHByZXZpZXdsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdCQocHJldmlld2xpbmspLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFR3aW5rbGUud2Fybi5jYWxsYmFja3MucHJldmlldyhyZXN1bHQpOyAvLyB8cmVzdWx0fCBpcyBkZWZpbmVkIGJlbG93XG5cdFx0fSk7XG5cblx0XHRwcmV2aWV3bGluay5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cdFx0cHJldmlld2xpbmsudGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+mihOiniCcsICfpoJDopr0nKTtcblx0XHRtb3JlLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGlkOiAnd2FybmluZ3ByZXZpZXcnLFxuXHRcdFx0bGFiZWw6IFtwcmV2aWV3bGlua10sXG5cdFx0fSk7XG5cdFx0bW9yZS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3R3aW5rbGV3YXJuLXByZXZpZXdib3gnLFxuXHRcdFx0c3R5bGU6ICdkaXNwbGF5OiBub25lJyxcblx0XHR9KTtcblx0XHRtb3JlLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdGxhYmVsOiAn5o+Q5LqkJyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdGRpYWxvZy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0ZGlhbG9nLmRpc3BsYXkoKTtcblx0XHRyZXN1bHQubWFpbl9ncm91cC5yb290ID0gcmVzdWx0O1xuXHRcdHJlc3VsdC5wcmV2aWV3ZXIgPSBuZXcgTW9yZWJpdHMud2lraS5wcmV2aWV3KCQocmVzdWx0KS5maW5kKCdkaXYjdHdpbmtsZXdhcm4tcHJldmlld2JveCcpLmxhc3QoKVswXSk7XG5cdFx0Ly8gUG90ZW50aWFsIG5vdGljZXMgZm9yIHN0YWxlbmVzcyBhbmQgbWlzc2VkIHJldmVydHNcblx0XHRsZXQgbWVzc2FnZSA9ICcnO1xuXHRcdGxldCBxdWVyeSA9IHt9O1xuXHRcdGNvbnN0IHZhbnJldmlkID0gbXcudXRpbC5nZXRQYXJhbVZhbHVlKCd2YW5hcnRpY2xlcmV2aWQnKTtcblx0XHRpZiAodmFucmV2aWQpIHtcblx0XHRcdC8vIElmIHlvdSB0cmllZCByZXZlcnRpbmcsIGNoZWNrIGlmICp5b3UqIGFjdHVhbGx5IHJldmVydGVkXG5cdFx0XHRpZiAoIW13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgnbm9hdXRvd2FybicpICYmIG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFuYXJ0aWNsZScpKSB7XG5cdFx0XHRcdC8vIFZpYSBmbHVmZiBsaW5rXG5cdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHR0aXRsZXM6IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFuYXJ0aWNsZScpLFxuXHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdHJ2c3RhcnRpZDogdmFucmV2aWQsXG5cdFx0XHRcdFx0cnZsaW1pdDogMixcblx0XHRcdFx0XHRydmRpcjogJ25ld2VyJyxcblx0XHRcdFx0XHRydnByb3A6ICd1c2VyJyxcblx0XHRcdFx0fTtcblx0XHRcdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5qOA5p+l5oKo5piv5ZCm5oiQ5Yqf5Zue6YCA6K+l6aG16Z2iJywgJ+aqouafpeaCqOaYr+WQpuaIkOWKn+WbnumAgOipsumggemdoicpLFxuXHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHJldmVydFVzZXIgPSAkKGFwaW9iai5nZXRSZXNwb25zZSgpKS5maW5kKCdyZXZpc2lvbnMgcmV2JylbMV0uZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRcdFx0XHRpZiAocmV2ZXJ0VXNlciAmJiByZXZlcnRVc2VyICE9PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpIHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WFtuS7luS6uuWbnumAgOS6huivpemhtemdou+8jOW5tuWPr+iDveW3sue7j+itpuWRiuivpeeUqOaIt+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WFtuS7luS6uuWbnumAgOS6huipsumggemdou+8jOS4puWPr+iDveW3sue2k+itpuWRiuipsuS9v+eUqOiAheOAgidcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi13YXJuaW5nLW1lc3NhZ2VzJykudGV4dChg6K2m5ZGK77yaJHttZXNzYWdlfWApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBDb25maXJtIGVkaXQgd2Fzbid0IHRvbyBvbGQgZm9yIGEgd2FybmluZ1xuXHRcdFx0Y29uc3QgY2hlY2tTdGFsZSA9ICh2YW50aW1lc3RhbXBfKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJldkRhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZSh2YW50aW1lc3RhbXBfKTtcblx0XHRcdFx0aWYgKHZhbnRpbWVzdGFtcF8gJiYgcmV2RGF0ZS5pc1ZhbGlkKCkgJiYgcmV2RGF0ZS5hZGQoMjQsICdob3VycycpLmlzQmVmb3JlKG5ldyBEYXRlKCkpKSB7XG5cdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L+Z56yU57yW6L6R5piv5ZyoMjTlsI/ml7bliY3lgZrlh7rnmoTvvIznjrDlnKjorablkYrlj6/og73lt7Lov4fml7bjgIInLFxuXHRcdFx0XHRcdFx0J+mAmeethue3qOi8r+aYr+WcqDI05bCP5pmC5YmN5YGa5Ye655qE77yM54++5Zyo6K2m5ZGK5Y+v6IO95bey6YGO5pmC44CCJ1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi13YXJuaW5nLW1lc3NhZ2VzJykudGV4dChg6K2m5ZGK77yaJHttZXNzYWdlfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0bGV0IHZhbnRpbWVzdGFtcCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgndmFudGltZXN0YW1wJyk7XG5cdFx0XHQvLyBQcm92aWRlZCBmcm9tIGEgZmx1ZmYgbW9kdWxlLWJhc2VkIHJldmVydCwgbm8gQVBJIGxvb2t1cCBuZWNlc3Nhcnlcblx0XHRcdGlmICh2YW50aW1lc3RhbXApIHtcblx0XHRcdFx0Y2hlY2tTdGFsZSh2YW50aW1lc3RhbXApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnMnLFxuXHRcdFx0XHRcdHJ2cHJvcDogJ3RpbWVzdGFtcCcsXG5cdFx0XHRcdFx0cmV2aWRzOiB2YW5yZXZpZCxcblx0XHRcdFx0fTtcblx0XHRcdFx0bmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn6I635Y+W54mI5pys5pe26Ze05oizJywgJ+WPluW+l+eJiOacrOaZgumWk+aIsycpLCBxdWVyeSwgKGFwaW9iaikgPT4ge1xuXHRcdFx0XHRcdHZhbnRpbWVzdGFtcCA9ICQoYXBpb2JqLmdldFJlc3BvbnNlKCkpLmZpbmQoJ3JldmlzaW9ucyByZXYnKS5hdHRyKCd0aW1lc3RhbXAnKTtcblx0XHRcdFx0XHRjaGVja1N0YWxlKHZhbnRpbWVzdGFtcCk7XG5cdFx0XHRcdH0pLnBvc3QoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgaW5pdCA9ICgpID0+IHtcblx0XHRcdC8vIFdlIG11c3QgaW5pdCB0aGUgZmlyc3QgY2hvaWNlIChHZW5lcmFsIE5vdGUpO1xuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5tYWluX2dyb3VwLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHR9O1xuXHRcdGluaXQoKTtcblx0fTtcblx0Ly8gVGhpcyBpcyBhbGwgdGhlIG1lc3NhZ2VzIHRoYXQgbWlnaHQgYmUgZGlzcGF0Y2hlZCBieSB0aGUgY29kZVxuXHQvLyBFYWNoIG9mIHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlcyByZXF1aXJlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246XG5cdC8vICAgbGFiZWwgKHJlcXVpcmVkKTogQSBzaG9ydCBkZXNjcmlwdGlvbiBkaXNwbGF5ZWQgaW4gdGhlIGRpYWxvZ1xuXHQvLyAgIHN1bW1hcnkgKHJlcXVpcmVkKTogVGhlIGVkaXQgc3VtbWFyeSB1c2VkLiBJZiBhbiBhcnRpY2xlIG5hbWUgaXMgZW50ZXJlZCwgdGhlIHN1bW1hcnkgaXMgcG9zdGZpeGVkIHdpdGggXCJvbiBbW2FydGljbGVdXVwiLCBhbmQgaXQgaXMgYWx3YXlzIHBvc3RmaXhlZCB3aXRoIFwiLiAkc3VtbWFyeUFkXCJcblx0Ly8gICBzdXBwcmVzc0FydGljbGVJblN1bW1hcnkgKG9wdGlvbmFsKTogU2V0IHRvIHRydWUgdG8gc3VwcHJlc3Mgc2hvd2luZyB0aGUgYXJ0aWNsZSBuYW1lIGluIHRoZSBlZGl0IHN1bW1hcnkuIFVzZWZ1bCBpZiB0aGUgd2FybmluZyByZWxhdGVzIHRvIGF0dGFjayBwYWdlcywgb3Igc29tZSBzdWNoLlxuXHRUd2lua2xlLndhcm4ubWVzc2FnZXMgPSB7XG5cdFx0bGV2ZWxzOiBbXG5cdFx0XHR7XG5cdFx0XHRcdGNhdGVnb3J5OiB3aW5kb3cud2dVTFMoJ+S4jeWQjOexu+Wei+eahOmdnuW7uuiuvue8lui+kScsICfkuI3lkIzpoZ7liKXnmoTpnZ7lu7roqK3nt6jovK8nKSxcblx0XHRcdFx0bGlzdDoge1xuXHRcdFx0XHRcdCd1dy1jb3B5cmlnaHQnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L6154qv6JGX5L2c5p2DJywgJ+S+teeKr+eJiOasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS+teeKr+iRl+S9nOadgycsICfms6jmhI/vvJrkvrXniq/niYjmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh5L6154qv6JGX5L2c5p2DJywgJ+WkmuasoeS+teeKr+eJiOasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWkmuasoeS+teeKr+iRl+S9nOadgycsICforablkYrvvJrlpJrmrKHkvrXniq/niYjmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctY3J5c3RhbCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXoh4bmtYvmiJbmnKrnoa7orqTnmoTmtojmga8nLCAn5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6IeG5rWL5oiW5pyq56Gu6K6k55qE5raI5oGvJywgJ+azqOaEj++8muWKoOWFpeiHhua4rOaIluacqueiuuiqjeeahOioiuaBrycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflpJrmrKHliqDlhaXoh4bmtYvmiJbmnKrnoa7orqTnmoTmtojmga8nLCAn5aSa5qyh5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5aSa5qyh5Yqg5YWl6IeG5rWL5oiW5pyq56Gu6K6k55qE5raI5oGvJyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5aSa5qyh5Yqg5YWl6IeG5ris5oiW5pyq56K66KqN55qE6KiK5oGvJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1kZWxldGUnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5oGw5b2T5Zyw56e76Zmk6aG16Z2i5YaF5a6544CB5qih5p2/5oiW6LWE5paZJywgJ+S4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muS4jeaBsOW9k+WcsOenu+mZpOmhtemdouWGheWuueOAgeaooeadv+aIlui1hOaWmScsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muS4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN5oGw5b2T5Zyw56e76Zmk6aG16Z2i5YaF5a6544CB5qih5p2/5oiW6LWE5paZJywgJ+S4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4jeaBsOW9k+WcsOenu+mZpOmhtemdouWGheWuueOAgeaooeadv+aIlui1hOaWmScsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muS4jeaBsOeVtuWcsOenu+mZpOmggemdouWFp+WuueOAgeaooeadv+aIluizh+aWmSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctaW1hZ2UnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5Lit5Yqg5YWl5LiN5b2T5Zu+54mHJywgJ+WcqOmggemdouS4reWKoOWFpeS4jeeVtuWclueJhycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOmhtemdouS4reWKoOWFpeS4jeW9k+WbvueJhycsICfms6jmhI/vvJrlnKjpoIHpnaLkuK3liqDlhaXkuI3nlbblnJbniYcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5Lit5Yqg5YWl5LiN5b2T5Zu+54mHJywgJ+WcqOmggemdouS4reWKoOWFpeS4jeeVtuWclueJhycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWcqOmhtemdouS4reWKoOWFpeS4jeW9k+WbvueJhycsICforablkYrvvJrlnKjpoIHpnaLkuK3liqDlhaXkuI3nlbblnJbniYcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctbmV3cGFnZSc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rkuI3lvZPpobXpnaInLCAn5bu656uL5LiN55W26aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yib5bu65LiN5b2T6aG16Z2iJywgJ+azqOaEj++8muW7uueri+S4jeeVtumggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rkuI3lvZPpobXpnaInLCAn5bu656uL5LiN55W26aCB6Z2iJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yib5bu65LiN5b2T6aG16Z2iJywgJ+itpuWRiu+8muW7uueri+S4jeeVtumggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1ub3InOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5Yqg5YWl5Y6f5Yib56CU56m2JywgJ+WcqOaineebruS4reWKoOWFpeWOn+WJteeglOepticpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebruS4reWKoOWFpeWOn+WIm+eglOepticsICfms6jmhI/vvJrlnKjmop3nm67kuK3liqDlhaXljp/libXnoJTnqbYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5Yqg5YWl5Y6f5Yib56CU56m2JywgJ+WcqOaineebruS4reWKoOWFpeWOn+WJteeglOepticpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWcqOadoeebruS4reWKoOWFpeWOn+WIm+eglOepticsICforablkYrvvJrlnKjmop3nm67kuK3liqDlhaXljp/libXnoJTnqbYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctb3Bvdic6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov53lj43lrqLop4Lljp/liJknLCAn6YGV5Y+N5a6i6KeA5Y6f5YmHJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya6L+d5Y+N5a6i6KeC5Y6f5YiZJywgJ+azqOaEj++8mumBleWPjeWuouingOWOn+WJhycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov53lj43lrqLop4Lljp/liJknLCAn6YGV5Y+N5a6i6KeA5Y6f5YmHJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya6L+d5Y+N5a6i6KeC5Y6f5YiZJywgJ+itpuWRiu+8mumBleWPjeWuouingOWOn+WJhycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1yZWRpcmVjdCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rnoLTlnY/mgKfnmoTph43lrprlkJEnLCAn5bu656uL56C05aOe5oCn55qE6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yib5bu656C05Z2P5oCn55qE6YeN5a6a5ZCRJywgJ+azqOaEj++8muW7uueri+egtOWjnuaAp+eahOmHjeWumuWQkScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rmgbbmhI/ph43lrprlkJEnLCAn5bu656uL5oOh5oSP6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Yib5bu65oG25oSP6YeN5a6a5ZCRJywgJ+itpuWRiu+8muW7uueri+aDoeaEj+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy11cGxvYWQnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiK5Lyg5LiN5b2T5Zu+5YOPJywgJ+S4iuWCs+S4jeeVtuWcluWDjycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4iuS8oOS4jeW9k+WbvuWDjycsICfms6jmhI/vvJrkuIrlgrPkuI3nlbblnJblg48nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiK5Lyg5LiN5b2T5Zu+5YOPJywgJ+S4iuWCs+S4jeeVtuWcluWDjycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4iuS8oOS4jeW9k+WbvuWDjycsICforablkYrvvJrkuIrlgrPkuI3nlbblnJblg48nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdmFuZGFsaXNtJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aYjuaYvueahOegtOWdjycsICfmmI7poa/nmoTnoLTlo54nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrmmI7mmL7noLTlnY8nLCAn5rOo5oSP77ya5piO6aGv56C05aOeJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aYjuaYvueahOegtOWdjycsICfmmI7poa/nmoTnoLTlo54nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrmmI7mmL7noLTlnY8nLCAn6K2m5ZGK77ya5piO6aGv56C05aOeJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LXRkZWwnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6Zeu6aKY5LuN5pyq6Kej5Yaz55qE5oOF5Ya15LiL56e76Zmk57u05oqk5oCn5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5ZWP6aGM5LuN5pyq6Kej5rG655qE5oOF5rOB5LiL56e76Zmk57at6K235oCn5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muenu+mZpOe7tOaKpOaAp+aooeadvycsICfms6jmhI/vvJrnp7vpmaTntq3orbfmgKfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo6Zeu6aKY5LuN5pyq6Kej5Yaz55qE5oOF5Ya15LiL56e76Zmk57u05oqk5oCn5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5ZWP6aGM5LuN5pyq6Kej5rG655qE5oOF5rOB5LiL56e76Zmk57at6K235oCn5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muenu+mZpOe7tOaKpOaAp+aooeadvycsICforablkYrvvJrnp7vpmaTntq3orbfmgKfmqKHmnb8nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGNhdGVnb3J5OiB3aW5kb3cud2dVTFMoJ+WinuWKoOW5v+WRiicsICflop7liqDlu6PlkYonKSxcblx0XHRcdFx0bGlzdDoge1xuXHRcdFx0XHRcdCd1dy1zcGFtJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WinuWKoOS4jeWQiOmAgueahOWklumDqOmTvuaOpScsICflop7liqDkuI3lkIjpgannmoTlpJbpg6jpgKPntZAnKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrlop7liqDkuI3lkIjpgILnmoTlpJbpg6jpk77mjqUnLCAn5rOo5oSP77ya5aKe5Yqg5LiN5ZCI6YGp55qE5aSW6YOo6YCj57WQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WinuWKoOWeg+WcvumTvuaOpScsICflop7liqDlnoPlnL7pgKPntZAnKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlop7liqDlnoPlnL7pk77mjqUnLCAn6K2m5ZGK77ya5aKe5Yqg5Z6D5Zy+6YCj57WQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LWFkdmVydCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKnnlKjmsYLpl7vnmb7np5HmnaXlj5HluIPlub/lkYrmiJbmjqjlub8nLCAn5Yip55So5rGC6IGe55m+56eR5L6G55m85biD5buj5ZGK5oiW5o6o5bujJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yip55So5rGC6Ze755m+56eR5p2l5Y+R5biD5bm/5ZGK5oiW5o6o5bm/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yip55So5rGC6IGe55m+56eR5L6G55m85biD5buj5ZGK5oiW5o6o5bujJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKnnlKjmsYLpl7vnmb7np5HmnaXlj5HluIPlub/lkYrmiJbmjqjlub8nLCAn5Yip55So5rGC6IGe55m+56eR5L6G55m85biD5buj5ZGK5oiW5o6o5bujJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yip55So5rGC6Ze755m+56eR5p2l5Y+R5biD5bm/5ZGK5oiW5o6o5bm/Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yip55So5rGC6IGe55m+56eR5L6G55m85biD5buj5ZGK5oiW5o6o5bujJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0Y2F0ZWdvcnk6IHdpbmRvdy53Z1VMUygn5Yqg5o+S5LiN5a6e44CB6K+96LCk5paH5a2XJywgJ+WKoOaPkuS4jeWvpuOAgeiqueisl+aWh+WtlycpLFxuXHRcdFx0XHRsaXN0OiB7XG5cdFx0XHRcdFx0J3V3LWJpb2cnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5Lyg6K6w5Lit5Yqg5YWl5rKh5pyJ5Y+v6Z2g5p2l5rqQ5L2Q6K+B6ICM5LiU5Y+v6IO95byV5Y+R5LqJ6K6u55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5YKz6KiY5Lit5Yqg5YWl5rKS5pyJ5Y+v6Z2g5L6G5rqQ5L2Q6K2J6ICM5LiU5Y+v6IO95byV55m854it6K2w55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWcqOS6uueJqeS8oOiusOS4reWKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeiAjOS4lOWPr+iDveW8leWPkeS6ieiurueahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWcqOS6uueJqeWCs+iomOS4reWKoOWFpeaykuacieWPr+mdoOS+hua6kOS9kOitieiAjOS4lOWPr+iDveW8leeZvOeIreitsOeahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5Lyg6K6w5Lit5Yqg5YWl5rKh5pyJ5Y+v6Z2g5p2l5rqQ5L2Q6K+B6ICM5LiU5Y+v6IO95byV5Y+R5LqJ6K6u55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5Zyo5Lq654mp5YKz6KiY5Lit5Yqg5YWl5rKS5pyJ5Y+v6Z2g5L6G5rqQ5L2Q6K2J6ICM5LiU5Y+v6IO95byV55m854it6K2w55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWcqOS6uueJqeS8oOiusOS4reWKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeiAjOS4lOWPr+iDveW8leWPkeS6ieiurueahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWcqOS6uueJqeWCs+iomOS4reWKoOWFpeaykuacieWPr+mdoOS+hua6kOS9kOitieiAjOS4lOWPr+iDveW8leeZvOeIreitsOeahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctZXJyb3InOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWF5oSP5Yqg5YWl5LiN5a6e5YaF5a65JywgJ+aVheaEj+WKoOWFpeS4jeWvpuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muaVheaEj+WKoOWFpeS4jeWunuWGheWuuScsICfms6jmhI/vvJrmlYXmhI/liqDlhaXkuI3lr6blhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pWF5oSP5Yqg5YWl5LiN5a6e5YaF5a65JywgJ+aVheaEj+WKoOWFpeS4jeWvpuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muaVheaEj+WKoOWFpeS4jeWunuWGheWuuScsICforablkYrvvJrmlYXmhI/liqDlhaXkuI3lr6blhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdW5zb3VyY2VkJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeeahOWGheWuuScsICfliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrliqDlhaXmsqHmnInlj6/pnaDmnaXmupDkvZDor4HnmoTlhoXlrrknLFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeayoeacieWPr+mdoOadpea6kOS9kOivgeeahOWGheWuuScsICfliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrliqDlhaXmsqHmnInlj6/pnaDmnaXmupDkvZDor4HnmoTlhoXlrrknLFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrliqDlhaXmspLmnInlj6/pnaDkvobmupDkvZDorYnnmoTlhaflrrknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRjYXRlZ29yeTogd2luZG93LndnVUxTKCfnv7vor5Hlk4HotKgnLCAn57+76K2v5ZOB6LOqJyksXG5cdFx0XHRcdGxpc3Q6IHtcblx0XHRcdFx0XHQndXctcm91Z2h0cmFuc2xhdGlvbic6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmgqjnv7vor5HnmoTotKjph4/mnInlvoXmlLnlloQnLCAn5oKo57+76K2v55qE6LOq6YeP5pyJ5b6F5pS55ZaEJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5oKo57+76K+R55qE6LSo6YeP5pyJ5b6F5pS55ZaEJywgJ+azqOaEj++8muaCqOe/u+itr+eahOizqumHj+acieW+heaUueWWhCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnspfliqPnv7vor5EnLCAn57KX5Yqj57+76K2vJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya57KX5Yqj57+76K+RJywgJ+itpuWRiu+8mueyl+WKo+e/u+itrycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0Y2F0ZWdvcnk6IHdpbmRvdy53Z1VMUygn6Z2e6IO95o6l5Y+X5LiU6L+d5Y+N5pa56ZKI55qE5Y2V5pa56Z2i6KGM5Li65oiW5pON5L2cJywgJ+mdnuiDveaOpeWPl+S4lOmBleWPjeaWuemHneeahOWWruaWuemdouihjOeCuuaIluaTjeS9nCcpLFxuXHRcdFx0XHRsaXN0OiB7XG5cdFx0XHRcdFx0J3V3LWFmZCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaR7e2FmZH1977yI6aG16Z2i5a2Y5bqf6K6o6K6677yJ5qih5p2/JywgJ+enu+mZpHt7YWZkfX3vvIjpoIHpnaLlrZjlu6LoqI7oq5bvvInmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrnp7vpmaR7e2FmZH1977yI6aG16Z2i5a2Y5bqf6K6o6K6677yJ5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya56e76Zmke3thZmR9fe+8iOmggemdouWtmOW7ouiojuirlu+8ieaooeadvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e76Zmke3thZmR9fe+8iOmhtemdouWtmOW6n+iuqOiuuu+8ieaooeadvycsICfnp7vpmaR7e2FmZH1977yI6aCB6Z2i5a2Y5bui6KiO6KuW77yJ5qih5p2/JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya56e76Zmke3thZmR9fe+8iOmhtemdouWtmOW6n+iuqOiuuu+8ieaooeadvycsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muenu+mZpHt7YWZkfX3vvIjpoIHpnaLlrZjlu6LoqI7oq5bvvInmqKHmnb8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0J3V3LW1vcyc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3mgbDlvZPnmoTmnaHnm67moLzlvI/jgIHml6XmnJ/jgIHor63oqIDnrYknLCAn5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5LiN5oGw5b2T55qE5p2h55uu5qC85byP44CB5pel5pyf44CB6K+t6KiA562JJyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3mgbDlvZPnmoTmnaHnm67moLzlvI/jgIHml6XmnJ/jgIHor63oqIDnrYknLCAn5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5LiN5oGw5b2T55qE5p2h55uu5qC85byP44CB5pel5pyf44CB6K+t6KiA562JJyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5LiN5oGw55W255qE5qKd55uu5qC85byP44CB5pel5pyf44CB6Kqe6KiA562JJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1tb3ZlJzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aXoOaVheenu+WKqOadoeebri/mlrDlkI3np7DkuI3nrKblkIjlkb3lkI3op4TojIMnLFxuXHRcdFx0XHRcdFx0XHRcdCfnhKHmlYXnp7vli5Xmop3nm64v5paw5ZCN56ix5LiN56ym5ZCI5ZG95ZCN6KaP56+EJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4jeaBsOW9k+WcsOenu+WKqOmhtemdoicsICfms6jmhI/vvJrkuI3mgbDnlbblnLDnp7vli5XpoIHpnaInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oqK6aG16Z2i56e75Yqo5Yiw5LiN5oGw5b2T44CB6L+d5Y+N5ZG95ZCN5bi46KeE5oiW6L+d5Y+N5YWx6K+G55qE5qCH6aKYJyxcblx0XHRcdFx0XHRcdFx0XHQn5oqK6aCB6Z2i56e75YuV5Yiw5LiN5oGw55W244CB6YGV5Y+N5ZG95ZCN5bi46KaP5oiW6YGV5Y+N5YWx6K2Y55qE5qiZ6aGMJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4jeaBsOW9k+WcsOenu+WKqOmhtemdoicsICforablkYrvvJrkuI3mgbDnlbblnLDnp7vli5XpoIHpnaInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctc3BlZWR5Jzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+enu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKDpmaTvvInmqKHmnb8nLCAn56e76Zmke3tkZWxldGV9fe+8iOW/q+mAn+WIqumZpO+8ieaooeadvycpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muenu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKDpmaTvvInmqKHmnb8nLFxuXHRcdFx0XHRcdFx0XHRcdCfms6jmhI/vvJrnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yiq6Zmk77yJ5qih5p2/J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yig6Zmk77yJ5qih5p2/JywgJ+enu+mZpHt7ZGVsZXRlfX3vvIjlv6vpgJ/liKrpmaTvvInmqKHmnb8nKSxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCforablkYrvvJrnp7vpmaR7e2RlbGV0ZX1977yI5b+r6YCf5Yig6Zmk77yJ5qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya56e76Zmke3tkZWxldGV9fe+8iOW/q+mAn+WIqumZpO+8ieaooeadvydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdGFsa3BhZ2UnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N6K6o6K666aG16KeE6IyDJywgJ+mBleWPjeiojuirlumggeimj+evhCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8mui/neWPjeiuqOiuuumhteinhOiMgycsICfms6jmhI/vvJrpgZXlj43oqI7oq5bpoIHopo/nr4QnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N6K6o6K666aG16KeE6IyDJywgJ+mBleWPjeiojuirlumggeimj+evhCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8mui/neWPjeiuqOiuuumhteinhOiMgycsICforablkYrvvJrpgZXlj43oqI7oq5bpoIHopo/nr4QnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctdHB2Jzoge1xuXHRcdFx0XHRcdFx0bGV2ZWwxOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L+u5pS55LuW5Lq655WZ6KiAJyxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJ+azqOaEj++8muS/ruaUueS7luS6uueVmeiogCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGV2ZWwyOiB7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5L+u5pS55LuW5Lq655WZ6KiAJyxcblx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJ+itpuWRiu+8muS/ruaUueS7luS6uueVmeiogCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRjYXRlZ29yeTogd2luZG93LndnVUxTKCflr7nlhbbku5bnlKjmiLflkozmnaHnm67nmoTmgIHluqYnLCAn5bCN5YW25LuW55So5oi25ZKM5qKd55uu55qE5oWL5bqmJyksXG5cdFx0XHRcdGxpc3Q6IHtcblx0XHRcdFx0XHQndXctaWxsZWdhbCc6IHtcblx0XHRcdFx0XHRcdGxldmVsMToge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTlhoXlrrknLCAn5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn5rOo5oSP77ya5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxldmVsMjoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTlhoXlrrknLCAn5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65JyksXG5cdFx0XHRcdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdFx0XHQn6K2m5ZGK77ya5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE5YWn5a65J1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd1dy1vd24nOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li75byg5p2h55uu5omA5pyJ5p2DJywgJ+S4u+W8teaineebruaJgOacieasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4u+W8oOadoeebruaJgOacieadgycsICfms6jmhI/vvJrkuLvlvLXmop3nm67miYDmnInmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li75byg5p2h55uu55qE5omA5pyJ5p2DJywgJ+S4u+W8teaineebrueahOaJgOacieasiicpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muS4u+W8oOadoeebrueahOaJgOacieadgycsICforablkYrvvJrkuLvlvLXmop3nm67nmoTmiYDmnInmrIonKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndXctc29jaWFsbWVkaWEnOiB7XG5cdFx0XHRcdFx0XHRsZXZlbDE6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5rGC6Ze755m+56eR5b2T5L2c56S+5Lqk5aqS5L2T5L2/55SoJywgJ+Wwh+axguiBnueZvuenkeeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWwhuaxgumXu+eZvuenkeW9k+S9nOekvuS6pOWqkuS9k+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+azqOaEj++8muWwh+axguiBnueZvuenkeeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRsZXZlbDI6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5rGC6Ze755m+56eR5b2T5L2c56S+5Lqk5aqS5L2T5L2/55SoJywgJ+Wwh+axguiBnueZvuenkeeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCcpLFxuXHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWwhuaxgumXu+eZvuenkeW9k+S9nOekvuS6pOWqkuS9k+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+itpuWRiu+8muWwh+axguiBnueZvuenkeeVtuS9nOekvuS6pOWqkumrlOS9v+eUqCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XSxcblx0XHRzaW5nbGVub3RpY2U6IHtcblx0XHRcdCd1dy0ycmVkaXJlY3QnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOenu+WKqOmhtemdouWQjuW6lOivpeS/ruWkjeWPjOmHjemHjeWumuWQkScsICflnKjnp7vli5XpoIHpnaLlvozmh4noqbLkv67lvqnpm5nph43ph43lrprlkJEnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrlnKjnp7vliqjpobXpnaLlkI7lupTor6Xkv67lpI3lj4zph43ph43lrprlkJEnLCAn5rOo5oSP77ya5Zyo56e75YuV6aCB6Z2i5b6M5oeJ6Kmy5L+u5b6p6ZuZ6YeN6YeN5a6a5ZCRJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWFpdic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Li+5oql5LqL6aG55bm25LiN5piv56C05Z2P6KGM5Li6JywgJ+iIieWgseS6i+mgheS4puS4jeaYr+egtOWjnuihjOS4uicpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muS4jeaBsOW9k+WcsOS4vuaKpeegtOWdjycsICfms6jmhI/vvJrkuI3mgbDnlbblnLDoiInloLHnoLTlo54nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXJ0aWNsZXNpZyc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit562+5ZCNJywgJ+WcqOaineebruS4reewveWQjScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebruS4reetvuWQjScsICfms6jmhI/vvJrlnKjmop3nm67kuK3nsL3lkI0nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXV0b2Jpb2dyYXBoeSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu66Ieq5LygJywgJ+W7uueri+iHquWCsycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWIm+W7uuiHquS8oCcsICfms6jmhI/vvJrlu7rnq4voh6rlgrMnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctYmFkY2F0Jzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXplJnor6/nmoTpobXpnaLliIbnsbsnLCAn5Yqg5YWl6Yyv6Kqk55qE6aCB6Z2i5YiG6aGeJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Yqg5YWl6ZSZ6K+v55qE6aG16Z2i5YiG57G7JywgJ+azqOaEj++8muWKoOWFpemMr+iqpOeahOmggemdouWIhumhnicpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1iaXRlJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvKTlrrPmlrDmiYsnLCAn5YK35a6z5paw5omLJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5Lyk5a6z5paw5omLJywgJ+azqOaEj++8muWCt+Wus+aWsOaJiycpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1jaGluZXNlJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fkvb/nlKjmoIflh4bmsYnor63msp/pgJonLCAn6KuL5L2/55So5qiZ5rqW5ryi6Kqe5rqd6YCaJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya6K+35L2/55So5qCH5YeG5rGJ6K+t5rKf6YCaJywgJ+azqOaEj++8muiri+S9v+eUqOaomea6lua8ouiqnua6nemAmicpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy1jcG1vdmUnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WJqui0tOenu+WKqCcsICfliarosrznp7vli5UnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrliarotLTnp7vliqgnLCAn5rOo5oSP77ya5Ymq6LK856e75YuVJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWRhYic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5raI5q2n5LmJ6aG15qC85byP6ZSZ6K+vJywgJ+a2iOatp+e+qemggeagvOW8j+mMr+iqpCcpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8mua2iOatp+S5iemhteagvOW8j+mUmeivrycsICfms6jmhI/vvJrmtojmrafnvqnpoIHmoLzlvI/pjK/oqqQnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctbmV3cGFnZS1kcmFmdCc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyA6L+R5Yib5bu655qE6aG16Z2i6KKr56e75Yqo5Yiw6I2J56i/JywgJ+acgOi/keW7uueri+eahOmggemdouiiq+enu+WLleWIsOiNieeovycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muacgOi/keWIm+W7uueahOmhtemdouiiq+enu+WKqOWIsOiNieeovycsICfms6jmhI/vvJrmnIDov5Hlu7rnq4vnmoTpoIHpnaLooqvnp7vli5XliLDojYnnqL8nKSxcblx0XHRcdH0sXG5cdFx0XHQndXctc2VsZnJldmVydCc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5oSf6LCi5oKo6Ieq6KGM5Zue6YCA6Ieq5bex55qE5rWL6K+V77yM5Lul5ZCO5LiN6KaB5YaN6L+Z5qC35YGa5LqGJyxcblx0XHRcdFx0XHQn5oSf6Kyd5oKo6Ieq6KGM5Zue6YCA6Ieq5bex55qE5ris6Kmm77yM5Lul5b6M5LiN6KaB5YaN6YCZ5qij5YGa5LqGJ1xuXHRcdFx0XHQpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWbnumAgOS4quS6uueahOa1i+ivlScsICfms6jmhI/vvJrlm57pgIDlgIvkurrnmoTmuKzoqaYnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctc3Vic3R1Yic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yib5bu65bCP5bCP5L2c5ZOBJywgJ+W7uueri+Wwj+Wwj+S9nOWTgScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muWIm+W7uuWwj+Wwj+S9nOWTgScsICforablkYrvvJrlu7rnq4vlsI/lsI/kvZzlk4EnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctdGFsa2luYXJ0aWNsZSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu6aG15Lit55WZ5LiL5oSP6KeBJywgJ+WcqOaineebrumggeS4reeVmeS4i+aEj+imiycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWcqOadoeebrumhteS4reeVmeS4i+aEj+ingScsICfms6jmhI/vvJrlnKjmop3nm67poIHkuK3nlZnkuIvmhI/oposnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctdW5zaWduZWQnOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ayoeacieWcqOiuqOiuuumhteS4iuetvuWQjScsICfmspLmnInlnKjoqI7oq5bpoIHkuIrnsL3lkI0nKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCfms6jmhI/vvJrmsqHmnInlnKjorqjorrrpobXkuIrnrb7lkI0nLCAn5rOo5oSP77ya5rKS5pyJ5Zyo6KiO6KuW6aCB5LiK57C95ZCNJyksXG5cdFx0XHR9LFxuXHRcdFx0J3V3LXdyb25nY3NkJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTnkIbnlLHkuI3lvZMnLCAn5b+r6YCf5Yiq6Zmk55CG55Sx5LiN55W2JyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5rOo5oSP77ya5b+r6YCf5Yig6Zmk55CG55Sx5LiN5b2TJywgJ+azqOaEj++8muW/q+mAn+WIqumZpOeQhueUseS4jeeVticpLFxuXHRcdFx0fSxcblx0XHRcdCd1dy13cm9uZ3N1bW1hcnknOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqOe8lui+keaRmOimgeWItumAoOS4jemAguW9k+eahOWGheWuuScsICflnKjnt6jovK/mkZjopoHoo73pgKDkuI3pgannlbbnmoTlhaflrrknKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlnKjnvJbovpHmkZjopoHliLbpgKDkuI3pgILlvZPnmoTlhoXlrrknLCAn6K2m5ZGK77ya5Zyo57eo6Lyv5pGY6KaB6KO96YCg5LiN6YGp55W255qE5YWn5a65JyksXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0c2luZ2xld2Fybjoge1xuXHRcdFx0J3V3LTNycic6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi35r2c5Zyo6L+d5Y+N5Zue6YCA5LiN6L+H5LiJ5Y6f5YiZ55qE5Y+v6IO95oCnJywgJ+eUqOaItua9m+WcqOmBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJh+eahOWPr+iDveaApycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+itpuWRiu+8mueUqOaIt+a9nOWcqOi/neWPjeWbnumAgOS4jei/h+S4ieWOn+WImeeahOWPr+iDveaApycsXG5cdFx0XHRcdFx0J+itpuWRiu+8mueUqOaItua9m+WcqOmBleWPjeWbnumAgOS4jemBjuS4ieWOn+WJh+eahOWPr+iDveaApydcblx0XHRcdFx0KSxcblx0XHRcdH0sXG5cdFx0XHQndXctYXR0YWNrJzoge1xuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkurrouqvmlLvlh7snLCAn5Lq66Lqr5pS75pOKJyksXG5cdFx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn6K2m5ZGK77ya5Lq66Lqr5pS75Ye7JywgJ+itpuWRiu+8muS6uui6q+aUu+aTiicpLFxuXHRcdFx0XHRzdXBwcmVzc0FydGljbGVJblN1bW1hcnk6IHRydWUsXG5cdFx0XHR9LFxuXHRcdFx0J3V3LWNvaSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yip55uK5Yay56qBJywgJ+WIqeebiuihneeqgScpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+azqOaEj++8muWIqeebiuWGsueqgScsICfms6jmhI/vvJrliKnnm4rooZ3nqoEnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctZmFrZXNvdXJjZSc6IHtcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Jma5p6E5pWw5o2u5rqQ5oiW5byV5paHJywgJ+iZm+ani+izh+aWmeS+hua6kOaIluW8leaWhycpLFxuXHRcdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+itpuWRiu+8muiZmuaehOaVsOaNrua6kOaIluW8leaWhycsICforablkYrvvJromZvmp4vos4fmlpnkvobmupDmiJblvJXmlocnKSxcblx0XHRcdH0sXG5cdFx0XHQndXctcGluZm8nOiB7XG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W8oOi0tOS7luS6uumakOengScsICflvLXosrzku5bkurrpmrHnp4EnKSxcblx0XHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCforablkYrvvJrlvKDotLTku5bkurrpmpDnp4EnLCAn6K2m5ZGK77ya5by16LK85LuW5Lq66Zqx56eBJyksXG5cdFx0XHR9LFxuXHRcdH0sXG5cdH07XG5cdC8vIFVzZWQgcmVwZWF0ZWRseSBiZWxvdyBhY3Jvc3MgbWVudSByZWJ1aWxkc1xuXHRUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLnByZXZfcmVhc29uID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gbnVsbDtcblx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSA9IGZ1bmN0aW9uIGNoYW5nZV9jYXRlZ29yeShlKSB7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHtzdWJfZ3JvdXB9ID0gZS50YXJnZXQucm9vdDtcblx0XHRzdWJfZ3JvdXAubWFpbl9ncm91cCA9IHZhbHVlO1xuXHRcdGxldCBvbGRfc3VidmFsdWUgPSBzdWJfZ3JvdXAudmFsdWU7XG5cdFx0bGV0IG9sZF9zdWJ2YWx1ZV9yZTtcblx0XHRpZiAob2xkX3N1YnZhbHVlKSB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICdraXRjaGVuc2luaycpIHtcblx0XHRcdFx0Ly8gRXhhY3QgbWF0Y2ggcG9zc2libGUgaW4ga2l0Y2hlbnNpbmsgbWVudVxuXHRcdFx0XHRvbGRfc3VidmFsdWVfcmUgPSBuZXcgUmVnRXhwKG13LnV0aWwuZXNjYXBlUmVnRXhwKG9sZF9zdWJ2YWx1ZSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b2xkX3N1YnZhbHVlID0gb2xkX3N1YnZhbHVlLnJlcGxhY2UoL1xcZCooaW0pPyQvLCAnJyk7XG5cdFx0XHRcdG9sZF9zdWJ2YWx1ZV9yZSA9IG5ldyBSZWdFeHAoYCR7bXcudXRpbC5lc2NhcGVSZWdFeHAob2xkX3N1YnZhbHVlKX0oXFxcXGQqPykkYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlIChzdWJfZ3JvdXAuaGFzQ2hpbGROb2RlcygpKSB7XG5cdFx0XHRzdWJfZ3JvdXAucmVtb3ZlQ2hpbGQoc3ViX2dyb3VwLmZpcnN0Q2hpbGQpO1xuXHRcdH1cblx0XHRsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHQvLyB3b3JrZXIgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBjb21ibyBib3ggZW50cmllc1xuXHRcdGNvbnN0IGNyZWF0ZUVudHJpZXMgPSAoY29udGVudHMsIGNvbnRhaW5lciwgd3JhcEluT3B0Z3JvdXAsIHZhbCA9IHZhbHVlKSA9PiB7XG5cdFx0XHQvLyBsZXZlbDItPjIsIHNpbmdsZXdhcm4tPicnOyBhbHNvIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlXG5cdFx0XHQvLyBzY2FsZWQgbGV2ZWxzIGZyb20gc2luZ2xlbm90aWNlLCBzaW5nbGV3YXJuLCBhbmQgY3VzdG9tXG5cdFx0XHRjb25zdCBsZXZlbCA9IHZhbC5yZXBsYWNlKC9eXFxEKy9nLCAnJyk7XG5cdFx0XHQvLyBkdWUgdG8gYW4gYXBwYXJlbnQgaU9TIGJ1Zywgd2UgaGF2ZSB0byBhZGQgYW4gb3B0aW9uLWdyb3VwIHRvIHByZXZlbnQgdHJ1bmNhdGlvbiBvZiB0ZXh0XG5cdFx0XHQvLyAoc2VhcmNoIFdUOlRXIGFyY2hpdmVzIGZvciBcIlByb2JsZW0gc2VsZWN0aW5nIHdhcm5pbmdzIG9uIGFuIGlQaG9uZVwiKVxuXHRcdFx0aWYgKHdyYXBJbk9wdGdyb3VwICYmICQuY2xpZW50LnByb2ZpbGUoKS5wbGF0Zm9ybSA9PT0gJ2lwaG9uZScpIHtcblx0XHRcdFx0bGV0IHdyYXBwZXJPcHRncm91cCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0XHRsYWJlbDogJ+WPr+eUqOaooeadvycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3cmFwcGVyT3B0Z3JvdXAgPSB3cmFwcGVyT3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRcdGNvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyT3B0Z3JvdXApO1xuXHRcdFx0XHRjb250YWluZXIgPSB3cmFwcGVyT3B0Z3JvdXA7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IFtpdGVtS2V5LCBpdGVtUHJvcGVydGllc10gb2YgT2JqZWN0LmVudHJpZXMoY29udGVudHMpKSB7XG5cdFx0XHRcdC8vIFNraXAgaWYgdGhlIGN1cnJlbnQgdGVtcGxhdGUgZG9lc24ndCBoYXZlIGEgdmVyc2lvbiBmb3IgdGhlIGN1cnJlbnQgbGV2ZWxcblx0XHRcdFx0aWYgKCEhbGV2ZWwgJiYgIWl0ZW1Qcm9wZXJ0aWVzW3ZhbF0pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qga2V5ID0gdHlwZW9mIGl0ZW1LZXkgPT09ICdzdHJpbmcnID8gaXRlbUtleSA6IGl0ZW1Qcm9wZXJ0aWVzLnZhbHVlO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZSA9IGtleSArIGxldmVsO1xuXHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogYHt7JHt0ZW1wbGF0ZX19fTogJHtsZXZlbCA/IGl0ZW1Qcm9wZXJ0aWVzW3ZhbF0ubGFiZWwgOiBpdGVtUHJvcGVydGllcy5sYWJlbH1gLFxuXHRcdFx0XHRcdHZhbHVlOiB0ZW1wbGF0ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdC8vIFNlbGVjdCBpdGVtIGJlc3QgY29ycmVzcG9uZGluZyB0byBwcmV2aW91cyBzZWxlY3Rpb25cblx0XHRcdFx0aWYgKCFzZWxlY3RlZCAmJiBvbGRfc3VidmFsdWUgJiYgb2xkX3N1YnZhbHVlX3JlLnRlc3QodGVtcGxhdGUpKSB7XG5cdFx0XHRcdFx0ZWxlbS5kYXRhLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRzZWxlY3RlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZWxlbVJlbmRlcmVkID0gY29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW0ucmVuZGVyKCkpO1xuXHRcdFx0XHQkKGVsZW1SZW5kZXJlZCkuZGF0YSgnbWVzc2FnZURhdGEnLCBpdGVtUHJvcGVydGllcyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRzd2l0Y2ggKHZhbHVlKSB7XG5cdFx0XHRjYXNlICdzaW5nbGVub3RpY2UnOlxuXHRcdFx0Y2FzZSAnc2luZ2xld2Fybic6XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS53YXJuLm1lc3NhZ2VzW3ZhbHVlXSwgc3ViX2dyb3VwLCB0cnVlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzaW5nbGVjb21iaW5lZCc6IHtcblx0XHRcdFx0Y29uc3QgdW5Tb3J0ZWRTaW5nbGV0cyA9IHtcblx0XHRcdFx0XHQuLi5Ud2lua2xlLndhcm4ubWVzc2FnZXMuc2luZ2xlbm90aWNlLFxuXHRcdFx0XHRcdC4uLlR3aW5rbGUud2Fybi5tZXNzYWdlcy5zaW5nbGV3YXJuLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBzb3J0ZWRTaW5nbGV0TWVzc2FnZXMgPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModW5Tb3J0ZWRTaW5nbGV0cykuc29ydCgpKSB7XG5cdFx0XHRcdFx0c29ydGVkU2luZ2xldE1lc3NhZ2VzW2tleV0gPSB1blNvcnRlZFNpbmdsZXRzW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3JlYXRlRW50cmllcyhzb3J0ZWRTaW5nbGV0TWVzc2FnZXMsIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnY3VzdG9tJzpcblx0XHRcdFx0Y3JlYXRlRW50cmllcyhUd2lua2xlLmdldFByZWYoJ2N1c3RvbVdhcm5pbmdMaXN0JyksIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAna2l0Y2hlbnNpbmsnOlxuXHRcdFx0XHRmb3IgKGNvbnN0IGx2bCBvZiBbJ2xldmVsMScsICdsZXZlbDInXSkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgbGV2ZWxHcm91cCBvZiBUd2lua2xlLndhcm4ubWVzc2FnZXMubGV2ZWxzKSB7XG5cdFx0XHRcdFx0XHRjcmVhdGVFbnRyaWVzKGxldmVsR3JvdXAubGlzdCwgc3ViX2dyb3VwLCB0cnVlLCBsdmwpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjcmVhdGVFbnRyaWVzKFR3aW5rbGUud2Fybi5tZXNzYWdlcy5zaW5nbGVub3RpY2UsIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS53YXJuLm1lc3NhZ2VzLnNpbmdsZXdhcm4sIHN1Yl9ncm91cCwgdHJ1ZSk7XG5cdFx0XHRcdGNyZWF0ZUVudHJpZXMoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21XYXJuaW5nTGlzdCcpLCBzdWJfZ3JvdXAsIHRydWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2xldmVsMSc6XG5cdFx0XHRjYXNlICdsZXZlbDInOlxuXHRcdFx0XHQvLyBDcmVhdGVzIHN1Ymdyb3VwIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVyZSBpcyBhbnl0aGluZyB0byBwbGFjZSBpbiBpdDtcblx0XHRcdFx0Ly8gbGVhdmVzIFwiUmVtb3ZhbCBvZiBkZWxldGlvbiB0YWdzXCIgZW1wdHkgZm9yIGxldmVsIDJcblx0XHRcdFx0Zm9yIChjb25zdCBsZXZlbEdyb3VwIG9mIFR3aW5rbGUud2Fybi5tZXNzYWdlcy5sZXZlbHMpIHtcblx0XHRcdFx0XHRsZXQgb3B0Z3JvdXAgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ29wdGdyb3VwJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBsZXZlbEdyb3VwLmNhdGVnb3J5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG9wdGdyb3VwID0gb3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRcdFx0c3ViX2dyb3VwLmFwcGVuZENoaWxkKG9wdGdyb3VwKTtcblx0XHRcdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdFx0XHRjcmVhdGVFbnRyaWVzKGxldmVsR3JvdXAubGlzdCwgb3B0Z3JvdXAsIGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2F1dG9sZXZlbCc6IHtcblx0XHRcdFx0Ly8gQ2hlY2sgdXNlciBwYWdlIHRvIGRldGVybWluZSBhcHByb3ByaWF0ZSBsZXZlbFxuXHRcdFx0XHRjb25zdCBhdXRvbGV2ZWxQcm9jID0gKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHdpa2l0ZXh0ID0gVHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Ly8gaGlzdG9yeSBub3QgbmVlZGVkIGZvciBhdXRvbGV2ZWxcblx0XHRcdFx0XHRjb25zdCBbbGF0ZXN0XSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZGF0ZVByb2Nlc3Npbmcod2lraXRleHQpO1xuXHRcdFx0XHRcdC8vIFBzZXVkby1wYXJhbXMgd2l0aCBvbmx5IHdoYXQncyBuZWVkZWQgdG8gcGFyc2UgdGhlIGxldmVsIGkuZS4gbm8gbWVzc2FnZURhdGFcblx0XHRcdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRzdWJfZ3JvdXA6IG9sZF9zdWJ2YWx1ZSxcblx0XHRcdFx0XHRcdGFydGljbGU6IGUudGFyZ2V0LnJvb3QuYXJ0aWNsZS52YWx1ZSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGNvbnN0IGx2bCA9IGBsZXZlbCR7VHdpbmtsZS53YXJuLmNhbGxiYWNrcy5hdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0KHdpa2l0ZXh0LCBwYXJhbXMsIGxhdGVzdClbMV19YDtcblx0XHRcdFx0XHQvLyBJZGVudGljYWwgdG8gbGV2ZWwxLCBldGMuIGFib3ZlIGJ1dCBleHBsaWNpdGx5IHByb3ZpZGVzIHRoZSBsZXZlbFxuXHRcdFx0XHRcdGZvciAoY29uc3QgbGV2ZWxHcm91cCBvZiBUd2lua2xlLndhcm4ubWVzc2FnZXMubGV2ZWxzKSB7XG5cdFx0XHRcdFx0XHRsZXQgb3B0Z3JvdXAgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0Z3JvdXAnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogbGV2ZWxHcm91cC5jYXRlZ29yeSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0b3B0Z3JvdXAgPSBvcHRncm91cC5yZW5kZXIoKTtcblx0XHRcdFx0XHRcdHN1Yl9ncm91cC5hcHBlbmRDaGlsZChvcHRncm91cCk7XG5cdFx0XHRcdFx0XHQvLyBjcmVhdGUgdGhlIG9wdGlvbnNcblx0XHRcdFx0XHRcdGNyZWF0ZUVudHJpZXMobGV2ZWxHcm91cC5saXN0LCBvcHRncm91cCwgZmFsc2UsIGx2bCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIFRyaWdnZXIgc3ViY2F0ZWdvcnkgY2hhbmdlLCBhZGQgc2VsZWN0IG1lbnUsIGV0Yy5cblx0XHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2sucG9zdENhdGVnb3J5Q2xlYW51cChlKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKFR3aW5rbGUud2Fybi50YWxrcGFnZU9iaikge1xuXHRcdFx0XHRcdGF1dG9sZXZlbFByb2MoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCB1c2VydGFsa19wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfWAsXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOi9veS4iuasoeitpuWRiicsICfovInlhaXkuIrmrKHorablkYonKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dXNlcnRhbGtfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdFx0dXNlcnRhbGtfcGFnZS5sb2FkKFxuXHRcdFx0XHRcdFx0KHBhZ2VvYmopID0+IHtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gcGFnZW9iajsgLy8gVXBkYXRlIHRhbGtwYWdlT2JqXG5cdFx0XHRcdFx0XHRcdGF1dG9sZXZlbFByb2MoKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIENhdGNoIGFuZCB3YXJuIGlmIHRoZSB0YWxrcGFnZSBjYW4ndCBsb2FkLFxuXHRcdFx0XHRcdFx0XHQvLyBtb3N0IGxpa2VseSBiZWNhdXNlIGl0J3MgYSBjcm9zcy1uYW1lc3BhY2UgcmVkaXJlY3Rcblx0XHRcdFx0XHRcdFx0Ly8gU3VwZXJzZWRlcyB0aGUgdHlwaWNhbCAkYXV0b2xldmVsTWVzc2FnZSBhZGRlZCBpbiBhdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0XG5cdFx0XHRcdFx0XHRcdGNvbnN0ICRub1RhbGtQYWdlTm9kZSA9ICQoJzxzdHJvbmc+Jylcblx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCAndHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlJylcblx0XHRcdFx0XHRcdFx0XHQuY3NzKCdjb2xvcicsICcjZjAwJylcblx0XHRcdFx0XHRcdFx0XHQudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0J+aXoOazleWKoOi9veeUqOaIt+iuqOiuuumhte+8jOi/meWPr+iDveaYr+WboOS4uuWug+aYr+i3qOWRveWQjeepuumXtOmHjeWumuWQke+8jOiHquWKqOmAieaLqeitpuWRiue6p+WIq+WwhuS4jeS8mui/kOS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCfnhKHms5XovInlhaXkvb/nlKjogIXoqI7oq5bpoIHvvIzpgJnlj6/og73mmK/lm6DngrrlroPmmK/ot6jlkb3lkI3nqbrplpPph43mlrDlsI7lkJHvvIzoh6rli5Xpgbjmk4forablkYrntJrliKXlsIfkuI3mnIPpgYvkvZzjgIInXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0JG5vVGFsa1BhZ2VOb2RlLmluc2VydEJlZm9yZSgkYm9keS5maW5kKCcjdHdpbmtsZS13YXJuLXdhcm5pbmctbWVzc2FnZXMnKSk7XG5cdFx0XHRcdFx0XHRcdC8vIElmIGEgcHJldmlldyB3YXMgb3BlbmVkIHdoaWxlIGluIGEgZGlmZmVyZW50IG1vZGUsIGNsb3NlIGl0XG5cdFx0XHRcdFx0XHRcdC8vIFNob3VsZCBudWxsaWZ5IHRoZSBuZWVkIHRvIGNhdGNoIHRoZSBlcnJvciBpbiBwcmV2aWV3IGNhbGxiYWNrXG5cdFx0XHRcdFx0XHRcdGUudGFyZ2V0LnJvb3QucHJldmlld2VyLmNsb3NlUHJldmlldygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ3R3aW5rbGV3YXJu77ya5pyq55+l55qE6K2m5ZGK57uEJywgJ3R3aW5rbGV3YXJu77ya5pyq55+l55qE6K2m5ZGK57WEJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZXdhcm4nLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdC8vIFRyaWdnZXIgc3ViY2F0ZWdvcnkgY2hhbmdlLCBhZGQgc2VsZWN0IG1lbnUsIGV0Yy5cblx0XHQvLyBIZXJlIGJlY2F1c2Ugb2YgdGhlIGFzeW5jIGxvYWQgZm9yIGF1dG9sZXZlbFxuXHRcdGlmICh2YWx1ZSAhPT0gJ2F1dG9sZXZlbCcpIHtcblx0XHRcdC8vIHJlc2V0IGFueSBhdXRvbGV2ZWwtc3BlY2lmaWMgbWVzc2FnZXMgd2hpbGUgd2UncmUgaGVyZVxuXHRcdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtd2Fybi1hdXRvbGV2ZWwtbWVzc2FnZScpLnJlbW92ZSgpO1xuXHRcdFx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLnBvc3RDYXRlZ29yeUNsZWFudXAoZSk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLndhcm4uY2FsbGJhY2sucG9zdENhdGVnb3J5Q2xlYW51cCA9IChlKSA9PiB7XG5cdFx0Ly8gY2xlYXIgb3ZlcnJpZGRlbiBsYWJlbCBvbiBhcnRpY2xlIHRleHRib3hcblx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5KGUudGFyZ2V0LnJvb3QuYXJ0aWNsZSwgdHJ1ZSk7XG5cdFx0TW9yZWJpdHMucXVpY2tGb3JtLnJlc2V0RWxlbWVudExhYmVsKGUudGFyZ2V0LnJvb3QuYXJ0aWNsZSk7XG5cdFx0Ly8gVHJpZ2dlciBjdXN0b20gbGFiZWwvY2hhbmdlIG9uIG1haW4gY2F0ZWdvcnkgY2hhbmdlXG5cdFx0VHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9zdWJjYXRlZ29yeShlKTtcblx0XHQvLyBVc2Ugc2VsZWN0MiB0byBtYWtlIHRoZSBzZWxlY3QgbWVudSBzZWFyY2hhYmxlXG5cdFx0aWYgKCFUd2lua2xlLmdldFByZWYoJ29sZFNlbGVjdCcpKSB7XG5cdFx0XHQkYm9keVxuXHRcdFx0XHQuZmluZCgnc2VsZWN0W25hbWU9c3ViX2dyb3VwXScpXG5cdFx0XHRcdC5zZWxlY3QyKHtcblx0XHRcdFx0XHR3aWR0aDogJzEwMCUnLFxuXHRcdFx0XHRcdG1hdGNoZXI6IE1vcmViaXRzLnNlbGVjdDIubWF0Y2hlcnMub3B0Z3JvdXBGdWxsLFxuXHRcdFx0XHRcdHRlbXBsYXRlUmVzdWx0OiBNb3JlYml0cy5zZWxlY3QyLmhpZ2hsaWdodFNlYXJjaE1hdGNoZXMsXG5cdFx0XHRcdFx0bGFuZ3VhZ2U6IHtcblx0XHRcdFx0XHRcdHNlYXJjaGluZzogTW9yZWJpdHMuc2VsZWN0Mi5xdWVyeUludGVyY2VwdG9yLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jaGFuZ2UoVHdpbmtsZS53YXJuLmNhbGxiYWNrLmNoYW5nZV9zdWJjYXRlZ29yeSk7XG5cdFx0XHQkYm9keS5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb24nKS5vbigna2V5ZG93bicsIE1vcmViaXRzLnNlbGVjdDIuYXV0b1N0YXJ0KS50cmlnZ2VyKCdmb2N1cycpO1xuXHRcdFx0bXcudXRpbC5hZGRDU1MoXG5cdFx0XHRcdC8qIEluY3JlYXNlIGhlaWdodDtcblx0XHRcdFx0ICogUmVkdWNlIHBhZGRpbmc7XG5cdFx0XHRcdCAqIEFkanVzdCBmb250IHNpemUuXG5cdFx0XHRcdCAqICovXG5cdFx0XHRcdCcuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItZHJvcGRvd24gLnNlbGVjdDItcmVzdWx0cz4uc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25ze21heC1oZWlnaHQ6MzUwcHh9LnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1yZXN1bHRzX19ncm91cCwuc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbntwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MXB4fS5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1kcm9wZG93biAuc2VsZWN0Mi1yZXN1bHRzLC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0aW9uIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWR7Zm9udC1zaXplOjEzcHh9J1xuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUud2Fybi5jYWxsYmFjay5jaGFuZ2Vfc3ViY2F0ZWdvcnkgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IG1haW5fZ3JvdXAgPSBlLnRhcmdldC5mb3JtLm1haW5fZ3JvdXAudmFsdWU7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGUudGFyZ2V0LmZvcm0uc3ViX2dyb3VwO1xuXHRcdC8vIFRhZ3MgdGhhdCBkb24ndCB0YWtlIGEgbGlua2VkIGFydGljbGUsIGJ1dCBzb21ldGhpbmcgZWxzZSAob2Z0ZW4gYSB1c2VybmFtZSkuXG5cdFx0Ly8gVGhlIHZhbHVlIG9mIGVhY2ggdGFnIGlzIHRoZSBsYWJlbCBuZXh0IHRvIHRoZSBpbnB1dCBmaWVsZFxuXHRcdGNvbnN0IG5vdExpbmtlZEFydGljbGUgPSB7XG5cdFx0XHQndXctYml0ZSc6IHdpbmRvdy53Z1VMUygn6KKr4oCc5ZKs5Yiw4oCd55qE55So5oi377yI5LiN5ZCrVXNlcjrvvIkgJywgJ+iiq+OAjOWSrOWIsOOAjeeahOS9v+eUqOiAhe+8iOS4jeWQq1VzZXI677yJICcpLFxuXHRcdFx0J3V3LWFpdic6IHdpbmRvdy53Z1VMUygn5Y+v6YCJ6L6T5YWl6KKr6K2m5ZGK55qE55So5oi35ZCN77yI5LiN5ZCrVXNlcjrvvIkgJywgJ+WPr+mBuOi8uOWFpeiiq+itpuWRiueahOS9v+eUqOiAheWQjeeose+8iOS4jeWQq1VzZXI677yJICcpLFxuXHRcdH07XG5cdFx0aWYgKFsnc2luZ2xlbm90aWNlJywgJ3NpbmdsZXdhcm4nLCAnc2luZ2xlY29tYmluZWQnLCAna2l0Y2hlbnNpbmsnXS5pbmNsdWRlcyhtYWluX2dyb3VwKSkge1xuXHRcdFx0aWYgKG5vdExpbmtlZEFydGljbGVbdmFsdWVdKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlID09PSBudWxsKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS53YXJuLnByZXZfYXJ0aWNsZSA9IGUudGFyZ2V0LmZvcm0uYXJ0aWNsZS52YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmFydGljbGUubm90QXJ0aWNsZSA9IHRydWU7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uYXJ0aWNsZS52YWx1ZSA9ICcnO1xuXHRcdFx0XHQvLyBjaGFuZ2UgZm9ybSBsYWJlbHMgYWNjb3JkaW5nIHRvIHRoZSB3YXJuaW5nIHNlbGVjdGVkXG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VG9vbHRpcFZpc2liaWxpdHkoZS50YXJnZXQuZm9ybS5hcnRpY2xlLCBmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5vdmVycmlkZUVsZW1lbnRMYWJlbChlLnRhcmdldC5mb3JtLmFydGljbGUsIG5vdExpbmtlZEFydGljbGVbdmFsdWVdKTtcblx0XHRcdH0gZWxzZSBpZiAoZS50YXJnZXQuZm9ybS5hcnRpY2xlLm5vdEFydGljbGUpIHtcblx0XHRcdFx0aWYgKFR3aW5rbGUud2Fybi5wcmV2X2FydGljbGUgIT09IG51bGwpIHtcblx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLmFydGljbGUudmFsdWUgPSBUd2lua2xlLndhcm4ucHJldl9hcnRpY2xlO1xuXHRcdFx0XHRcdFR3aW5rbGUud2Fybi5wcmV2X2FydGljbGUgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uYXJ0aWNsZS5ub3RBcnRpY2xlID0gZmFsc2U7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VG9vbHRpcFZpc2liaWxpdHkoZS50YXJnZXQuZm9ybS5hcnRpY2xlLCB0cnVlKTtcblx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnJlc2V0RWxlbWVudExhYmVsKGUudGFyZ2V0LmZvcm0uYXJ0aWNsZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGFkZCBiaWcgcmVkIG5vdGljZSwgd2FybmluZyB1c2VycyBhYm91dCBob3cgdG8gdXNlIHt7dXctW2NvaS1ddXNlcm5hbWV9fSBhcHByb3ByaWF0ZWx5XG5cdFx0JGJvZHkuZmluZCgnI3R3LXdhcm4tcmVkLW5vdGljZScpLnJlbW92ZSgpO1xuXHR9O1xuXHRUd2lua2xlLndhcm4uY2FsbGJhY2tzID0ge1xuXHRcdGdldFdhcm5pbmdXaWtpdGV4dDogKHRlbXBsYXRlTmFtZSwgYXJ0aWNsZSwgcmVhc29uLCBpc0N1c3RvbSwgbm9TaWduKSA9PiB7XG5cdFx0XHRsZXQgdGV4dCA9ICd7eycuY29uY2F0KCdzdWJzdDonLCB0ZW1wbGF0ZU5hbWUpO1xuXHRcdFx0Ly8gYWRkIGxpbmtlZCBhcnRpY2xlIGZvciB1c2VyIHdhcm5pbmdzXG5cdFx0XHRpZiAoYXJ0aWNsZSkge1xuXHRcdFx0XHR0ZXh0ICs9IGB8MT0ke2FydGljbGV9YDtcblx0XHRcdH1cblx0XHRcdGlmIChyZWFzb24pIHtcblx0XHRcdFx0Ly8gYWRkIGV4dHJhIG1lc3NhZ2Vcblx0XHRcdFx0dGV4dCArPSBgfDI9JHtyZWFzb259YDtcblx0XHRcdH1cblx0XHRcdHRleHQgKz0gJ3xzdWJzdD0nLmNvbmNhdCgnc3Vic3Q6Jyk7XG5cdFx0XHRpZiAoIW5vU2lnbikge1xuXHRcdFx0XHR0ZXh0ICs9ICd8c2lnPX5+Jy5jb25jYXQoJ35+Jyk7XG5cdFx0XHR9XG5cdFx0XHR0ZXh0ICs9ICd9fSc7XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9LFxuXHRcdHNob3dQcmV2aWV3OiAoZm9ybSwgdGVtcGxhdGVuYW1lKSA9PiB7XG5cdFx0XHRjb25zdCBpbnB1dCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0XHQvLyBQcm92aWRlZCBvbiBhdXRvbGV2ZWwsIG5vdCBvdGhlcndpc2Vcblx0XHRcdHRlbXBsYXRlbmFtZSB8fD0gaW5wdXQuc3ViX2dyb3VwO1xuXHRcdFx0Y29uc3QgbGlua2VkYXJ0aWNsZSA9IGlucHV0LmFydGljbGU7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZXRleHQgPSBUd2lua2xlLndhcm4uY2FsbGJhY2tzLmdldFdhcm5pbmdXaWtpdGV4dChcblx0XHRcdFx0dGVtcGxhdGVuYW1lLFxuXHRcdFx0XHRsaW5rZWRhcnRpY2xlLFxuXHRcdFx0XHRpbnB1dC5yZWFzb24sXG5cdFx0XHRcdGlucHV0Lm1haW5fZ3JvdXAgPT09ICdjdXN0b20nXG5cdFx0XHQpO1xuXHRcdFx0Zm9ybS5wcmV2aWV3ZXIuYmVnaW5SZW5kZXIodGVtcGxhdGV0ZXh0LCBgVXNlcl90YWxrOiR7cmVsZXZhbnRVc2VyTmFtZX1gKTsgLy8gRm9yY2Ugd2lraXRleHQvY29ycmVjdCB1c2VybmFtZVxuXHRcdH0sXG5cblx0XHQvLyBKdXN0IGEgcGFzcy10aHJvdWdoIHVubGVzcyB0aGUgYXV0b2xldmVsIG9wdGlvbiB3YXMgc2VsZWN0ZWRcblx0XHRwcmV2aWV3OiAoZm9ybSkgPT4ge1xuXHRcdFx0aWYgKGZvcm0ubWFpbl9ncm91cC52YWx1ZSA9PT0gJ2F1dG9sZXZlbCcpIHtcblx0XHRcdFx0Ly8gQWx3YXlzIGdldCBhIG5ldywgdXBkYXRlZCB0YWxrcGFnZSBmb3IgYXV0b2xldmVsIHByb2Nlc3Npbmdcblx0XHRcdFx0Y29uc3QgdXNlcnRhbGtfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0YFVzZXJfdGFsazoke3JlbGV2YW50VXNlck5hbWV9YCxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOi9veS4iuasoeitpuWRiicsICfovInlhaXkuIrmrKHorablkYonKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VydGFsa19wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0Ly8gV2lsbCBmYWlsIHNpbGVudGx5IGlmIHRoZSB0YWxrIHBhZ2UgaXMgYSBjcm9zcy1ucyByZWRpcmVjdCxcblx0XHRcdFx0Ly8gcmVtb3ZhbCBvZiB0aGUgcHJldmlldyBib3ggaGFuZGxlZCB3aGVuIGxvYWRpbmcgdGhlIG1lbnVcblx0XHRcdFx0dXNlcnRhbGtfcGFnZS5sb2FkKChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqID0gcGFnZW9iajsgLy8gVXBkYXRlIHRhbGtwYWdlT2JqXG5cdFx0XHRcdFx0Y29uc3Qgd2lraXRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRcdFx0Ly8gaGlzdG9yeSBub3QgbmVlZGVkIGZvciBhdXRvbGV2ZWxcblx0XHRcdFx0XHRjb25zdCBbbGF0ZXN0XSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZGF0ZVByb2Nlc3Npbmcod2lraXRleHQpO1xuXHRcdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdFx0XHRcdHN1Yl9ncm91cDogZm9ybS5zdWJfZ3JvdXAudmFsdWUsXG5cdFx0XHRcdFx0XHRhcnRpY2xlOiBmb3JtLmFydGljbGUudmFsdWUsXG5cdFx0XHRcdFx0XHRtZXNzYWdlRGF0YTogJChmb3JtLnN1Yl9ncm91cClcblx0XHRcdFx0XHRcdFx0LmZpbmQoYG9wdGlvblt2YWx1ZT1cIiR7JChmb3JtLnN1Yl9ncm91cCkudmFsKCl9XCJdYClcblx0XHRcdFx0XHRcdFx0LmRhdGEoJ21lc3NhZ2VEYXRhJyksXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRjb25zdCBbdGVtcGxhdGVdID0gVHdpbmtsZS53YXJuLmNhbGxiYWNrcy5hdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0KHdpa2l0ZXh0LCBwYXJhbXMsIGxhdGVzdCk7XG5cdFx0XHRcdFx0VHdpbmtsZS53YXJuLmNhbGxiYWNrcy5zaG93UHJldmlldyhmb3JtLCB0ZW1wbGF0ZSk7XG5cdFx0XHRcdFx0Ly8gSWYgdGhlIHRlbXBsYXRlcyBoYXZlIGRpdmVyZ2VkLCBmYWtlIGEgY2hhbmdlIGV2ZW50XG5cdFx0XHRcdFx0Ly8gdG8gcmVsb2FkIHRoZSBtZW51IHdpdGggdGhlIHVwZGF0ZWQgcGFnZW9ialxuXHRcdFx0XHRcdGlmIChmb3JtLnN1Yl9ncm91cC52YWx1ZSAhPT0gdGVtcGxhdGUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdFx0XHRcdFx0ZXZ0LmluaXRFdmVudCgnY2hhbmdlJywgdHJ1ZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRmb3JtLm1haW5fZ3JvdXAuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRUd2lua2xlLndhcm4uY2FsbGJhY2tzLnNob3dQcmV2aWV3KGZvcm0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogVXNlZCBpbiB0aGUgbWFpbiBhbmQgYXV0b2xldmVsIGxvb3BzIHRvIGRldGVybWluZSB3aGVuIHRvIHdhcm5cblx0XHQgKiBhYm91dCBleGNlc3NpdmVseSByZWNlbnQsIHN0YWxlLCBvciBpZGVudGljYWwgd2FybmluZ3MuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gd2lraXRleHQgIFRoZSB0ZXh0IG9mIGEgdXNlcidzIHRhbGsgcGFnZSwgZnJvbSBnZXRQYWdlVGV4dCgpXG5cdFx0ICogQHJldHVybnMge09iamVjdFtdfSAtIEFycmF5IG9mIG9iamVjdHM6IGxhdGVzdCBjb250YWlucyBtb3N0IHJlY2VudFxuXHRcdCAqIHdhcm5pbmcgYW5kIGRhdGU7IGhpc3RvcnkgbGlzdHMgYWxsIHByaW9yIHdhcm5pbmdzXG5cdFx0ICovXG5cdFx0ZGF0ZVByb2Nlc3Npbmc6ICh3aWtpdGV4dCkgPT4ge1xuXHRcdFx0Y29uc3QgaGlzdG9yeV9yZSA9XG5cdFx0XHRcdC88IS0tXFxzP1RlbXBsYXRlOihbdVVddy0uKj8pXFxzPy0tPi4qPyhcXGR7NH0p5bm0KFxcZHsxLDJ9KeaciChcXGR7MSwyfSnml6UgXFwoW+aXpeS4gOS6jOS4ieWbm+S6lOWFrV1cXCkgKFxcZHsxLDJ9KTooXFxkezEsMn0pIFxcKENTVFxcKS9nO1xuXHRcdFx0Y29uc3QgaGlzdG9yeSA9IHt9O1xuXHRcdFx0Y29uc3QgbGF0ZXN0ID0ge1xuXHRcdFx0XHRkYXRlOiBuZXcgTW9yZWJpdHMuZGF0ZSgwKSxcblx0XHRcdFx0dHlwZTogJycsXG5cdFx0XHR9O1xuXHRcdFx0bGV0IGN1cnJlbnQ7XG5cdFx0XHR3aGlsZSAoKGN1cnJlbnQgPSBoaXN0b3J5X3JlLmV4ZWMod2lraXRleHQpKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRjb25zdCBbLCB0ZW1wbGF0ZV0gPSBjdXJyZW50O1xuXHRcdFx0XHRjb25zdCBjdXJyZW50X2RhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZShcblx0XHRcdFx0XHRgJHtjdXJyZW50WzJdfS0ke2N1cnJlbnRbM119LSR7Y3VycmVudFs0XX0gJHtjdXJyZW50WzVdfToke2N1cnJlbnRbNl19IChDU1QpYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoISh0ZW1wbGF0ZSBpbiBoaXN0b3J5KSB8fCBoaXN0b3J5W3RlbXBsYXRlXS5pc0JlZm9yZShjdXJyZW50X2RhdGUpKSB7XG5cdFx0XHRcdFx0aGlzdG9yeVt0ZW1wbGF0ZV0gPSBjdXJyZW50X2RhdGU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFsYXRlc3QuZGF0ZS5pc0FmdGVyKGN1cnJlbnRfZGF0ZSkpIHtcblx0XHRcdFx0XHRsYXRlc3QuZGF0ZSA9IGN1cnJlbnRfZGF0ZTtcblx0XHRcdFx0XHRsYXRlc3QudHlwZSA9IHRlbXBsYXRlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW2xhdGVzdCwgaGlzdG9yeV07XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBNYWluIGxvb3AgZm9yIGRlY2lkaW5nIHdoYXQgdGhlIGxldmVsIHNob3VsZCBpbmNyZW1lbnQgdG8uIE1vc3Qgb2Zcblx0XHQgKiB0aGlzIGlzIHJlYWxseSBqdXN0IGVycm9yIGNhdGNoaW5nIGFuZCB1cGRhdGluZyB0aGUgc3Vic2VxdWVudCBkYXRhLlxuXHRcdCAqIE1heSBwcm9kdWNlIHVwIHRvIHR3byBub3RpY2VzIGluIGEgdHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlcyBkaXZcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB3aWtpdGV4dCAgVGhlIHRleHQgb2YgYSB1c2VyJ3MgdGFsayBwYWdlLCBmcm9tIGdldFBhZ2VUZXh0KCkgKHJlcXVpcmVkKVxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgIFBhcmFtcyBvYmplY3Q6IHN1Yl9ncm91cCBpcyB0aGUgdGVtcGxhdGUgKHJlcXVpcmVkKTtcblx0XHQgKiBhcnRpY2xlIGlzIHRoZSB1c2VyLXByb3ZpZGVkIGFydGljbGUgKGZvcm0uYXJ0aWNsZSkgdXNlZCB0byBsaW5rIEFSViBvbiByZWNlbnQgbGV2ZWwyIHdhcm5pbmdzO1xuXHRcdCAqIG1lc3NhZ2VEYXRhIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIGdldHRpbmcgdGhlIGZ1bGwgdGVtcGxhdGUsIGFzIGl0J3Ncblx0XHQgKiB1c2VkIHRvIGVuc3VyZSBhIHZhbGlkIHRlbXBsYXRlIG9mIHRoYXQgbGV2ZWwgZXhpc3RzXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGxhdGVzdCAgRmlyc3QgZWxlbWVudCBvZiB0aGUgYXJyYXkgcmV0dXJuZWQgZnJvbVxuXHRcdCAqIGRhdGVQcm9jZXNzaW5nLiBQcm92aWRlZCBoZXJlIHJhdGhlciB0aGFuIHByb2Nlc3NlZCB3aXRoaW4gdG8gYXZvaWRcblx0XHQgKiByZXBlYXRlZCBjYWxsIHRvIGRhdGVQcm9jZXNzaW5nXG5cdFx0ICogQHBhcmFtIHsoRGF0ZXxNb3JlYml0cy5kYXRlKX0gZGF0ZSAgRGF0ZSBmcm9tIHdoaWNoIHN0YWxlbmVzcyBpcyBkZXRlcm1pbmVkXG5cdFx0ICogQHBhcmFtIHtNb3JlYml0cy5zdGF0dXN9IHN0YXRlbGVtICBTdGF0dXMgZWxlbWVudCwgb25seSB1c2VkIGZvciBoYW5kbGluZyBlcnJvciBpbiBmaW5hbCBleGVjdXRpb25cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtBcnJheX0gLSBBcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBmdWxsIHRlbXBsYXRlIGFuZCBqdXN0IHRoZSB3YXJuaW5nIGxldmVsXG5cdFx0ICovXG5cdFx0YXV0b2xldmVsUGFyc2VXaWtpdGV4dDogKHdpa2l0ZXh0LCBwYXJhbXMsIGxhdGVzdCwgZGF0ZSwgc3RhdGVsZW0pID0+IHtcblx0XHRcdGxldCBsZXZlbDsgLy8gdW5kZWZpbmVkIHJhdGhlciB0aGFuICcnIG1lYW5zIHRoZSBpc05hTiBiZWxvdyB3aWxsIHJldHVybiB0cnVlXG5cdFx0XHRpZiAoL1xcZD8kLy50ZXN0KGxhdGVzdC50eXBlKSkge1xuXHRcdFx0XHQvLyBsZXZlbDEtMlxuXHRcdFx0XHRsZXZlbCA9IE51bWJlci5wYXJzZUludChsYXRlc3QudHlwZS5yZXBsYWNlKC8uKihcXGQpPyQvLCAnJDEnKSwgMTApO1xuXHRcdFx0fSBlbHNlIGlmIChsYXRlc3QudHlwZSkge1xuXHRcdFx0XHRsZXZlbCA9IDE7IC8vIHNpbmdsZW5vdGljZSBvciBub3QgZm91bmRcblx0XHRcdH1cblx0XHRcdGNvbnN0ICRhdXRvbGV2ZWxNZXNzYWdlID0gJCgnPGRpdj4nKS5hdHRyKCdpZCcsICd0d2lua2xlLXdhcm4tYXV0b2xldmVsLW1lc3NhZ2UnKTtcblx0XHRcdGlmIChOdW1iZXIuaXNOYU4obGV2ZWwpKSB7XG5cdFx0XHRcdC8vIE5vIHByaW9yIHdhcm5pbmdzIGZvdW5kLCB0aGlzIGlzIHRoZSBmaXJzdFxuXHRcdFx0XHRsZXZlbCA9IDE7XG5cdFx0XHR9IGVsc2UgaWYgKGxldmVsID4gMiB8fCBsZXZlbCA8IDEpIHtcblx0XHRcdFx0Ly8gU2hvdWxkbid0IGhhcHBlblxuXHRcdFx0XHRjb25zdCBtZXNzYWdlID0gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfml6Dms5Xop6PmnpDkuIrmrKHnmoTorablkYrlsYLnuqfvvIzor7fmiYvliqjpgInmi6nkuIDkuKrorablkYrlsYLnuqfjgIInLFxuXHRcdFx0XHRcdCfnhKHms5Xop6PmnpDkuIrmrKHnmoTorablkYrlsaTntJrvvIzoq4vmiYvli5Xpgbjmk4fkuIDlgIvorablkYrlsaTntJrjgIInXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChzdGF0ZWxlbSkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKG1lc3NhZ2UpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KG1lc3NhZ2UsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGV3YXJuJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRlIHx8PSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRjb25zdCBhdXRvVGltZW91dCA9IG5ldyBNb3JlYml0cy5kYXRlKGxhdGVzdC5kYXRlLmdldFRpbWUoKSkuYWRkKFxuXHRcdFx0XHRcdE51bWJlci5wYXJzZUludChUd2lua2xlLmdldFByZWYoJ2F1dG9sZXZlbFN0YWxlRGF5cycpLCAxMCksXG5cdFx0XHRcdFx0J2RheSdcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKGF1dG9UaW1lb3V0LmlzQWZ0ZXIoZGF0ZSkpIHtcblx0XHRcdFx0XHRpZiAobGV2ZWwgPT09IDIpIHtcblx0XHRcdFx0XHRcdGxldmVsID0gMjtcblx0XHRcdFx0XHRcdC8vIEJhc2ljYWxseSBpbmRpY2F0ZXMgd2hldGhlciB3ZSdyZSBpbiB0aGUgZmluYWwgTWFpbiBldmFsdWF0aW9uIG9yIG5vdCxcblx0XHRcdFx0XHRcdC8vIGFuZCB0aHVzIHdoZXRoZXIgd2UgY2FuIGNvbnRpbnVlIG9yIG5lZWQgdG8gZGlzcGxheSB0aGUgd2FybmluZyBhbmQgbGlua1xuXHRcdFx0XHRcdFx0aWYgKCFzdGF0ZWxlbSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCAkbGluayA9ICQoJzxhPicpXG5cdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCAnIycpXG5cdFx0XHRcdFx0XHRcdFx0LnRleHQod2luZG93LndnVUxTKCfljZXlh7vmraTlpITmiZPlvIDlkYrnirblt6XlhbcnLCAn6bue5pOK5q2k6JmV5omT6ZaL5ZGK54uA5bel5YW3JykpXG5cdFx0XHRcdFx0XHRcdFx0LmNzcygnZm9udC13ZWlnaHQnLCAnYm9sZCcpXG5cdFx0XHRcdFx0XHRcdFx0Lm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUud2Fybi5kaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUuYXJ2LmNhbGxiYWNrKHJlbGV2YW50VXNlck5hbWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0JGJvZHkuZmluZCgnaW5wdXRbbmFtZT1wYWdlXScpLnZhbChwYXJhbXMuYXJ0aWNsZSk7IC8vIFRhcmdldCBwYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHQkYm9keS5maW5kKCdpbnB1dFt2YWx1ZT1maW5hbF0nKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7IC8vIFZhbmRhbGlzbSBhZnRlciBmaW5hbFxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXR1c05vZGUgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0LmNzcygnY29sb3InLCAnI2YwMCcpXG5cdFx0XHRcdFx0XHRcdFx0LnRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRyZWxldmFudFVzZXJOYW1lICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnIDlkI7mlLbliLDkuobkuIDkuKrlsYLnuqcy6K2m5ZGK77yIJywgJ+acgOW+jOaUtuWIsOS6huS4gOWAi+WxpOe0mjLorablkYrvvIgnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxhdGVzdC50eXBlICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCfvvInvvIzmiYDku6XlsIblhbbmiqXlkYrnu5nnrqHnkIbkurrlkZjkvJrmr5TovoPlpb3vvJsnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCfvvInvvIzmiYDku6XlsIflhbbloLHlkYrntabnrqHnkIbkurrlk6HmnIPmr5TovIPlpb3vvJsnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRzdGF0dXNOb2RlLmFwcGVuZCgkbGlua1swXSk7XG5cdFx0XHRcdFx0XHRcdCRhdXRvbGV2ZWxNZXNzYWdlLmFwcGVuZChzdGF0dXNOb2RlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gQXV0b21hdGljYWxseSBpbmNyZWFzZSBzZXZlcml0eVxuXHRcdFx0XHRcdFx0bGV2ZWwgKz0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gUmVzZXQgd2FybmluZyBsZXZlbCBpZiBtb3N0LXJlY2VudCB3YXJuaW5nIGlzIHRvbyBvbGRcblx0XHRcdFx0XHRsZXZlbCA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdCRhdXRvbGV2ZWxNZXNzYWdlLnByZXBlbmQoXG5cdFx0XHRcdCQoXG5cdFx0XHRcdFx0YDxkaXY+JHt3aW5kb3cud2dVTFMoJ+WwhuWPkemAgScsICflsIfnmbzpgIEnKX08c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPiR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+Wxgue6pycsXG5cdFx0XHRcdFx0XHQn5bGk57SaJ1xuXHRcdFx0XHRcdCl9JHtsZXZlbH08L3NwYW4+6K2m5ZGK5qih5p2/44CCPC9kaXY+YFxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdFx0Ly8gUGxhY2UgYWZ0ZXIgdGhlIHN0YWxlIGFuZCBvdGhlci11c2VyLXJldmVydGVkICh0ZXh0LW9ubHkpIG1lc3NhZ2VzXG5cdFx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS13YXJuLWF1dG9sZXZlbC1tZXNzYWdlJykucmVtb3ZlKCk7IC8vIGNsZWFuIHNsYXRlXG5cdFx0XHQkYXV0b2xldmVsTWVzc2FnZS5pbnNlcnRBZnRlcigkYm9keS5maW5kKCcjdHdpbmtsZS13YXJuLXdhcm5pbmctbWVzc2FnZXMnKSk7XG5cdFx0XHRsZXQgdGVtcGxhdGUgPSBwYXJhbXMuc3ViX2dyb3VwLnJlcGxhY2UoLyguKilcXGQkLywgJyQxJyk7XG5cdFx0XHQvLyBWYWxpZGF0ZSB3YXJuaW5nIGxldmVsLCBmYWxsaW5nIGJhY2sgdG8gdGhlIHV3LWdlbmVyaWMgc2VyaWVzLlxuXHRcdFx0Ly8gT25seSBhIGZldyBpdGVtcyBhcmUgbWlzc2luZyBhIGxldmVsLCBhbmQgaW4gYWxsIGJ1dCBhIGhhbmRmdWxcblx0XHRcdC8vIG9mIGNhc2VzLCB0aGUgdXctZ2VuZXJpYyBzZXJpZXMgaXMgZXhwbGljaXRseSB1c2VkIGVsc2V3aGVyZS5cblx0XHRcdGlmIChwYXJhbXMubWVzc2FnZURhdGEgJiYgIXBhcmFtcy5tZXNzYWdlRGF0YVtgbGV2ZWwke2xldmVsfWBdKSB7XG5cdFx0XHRcdHRlbXBsYXRlID0gJ3V3LWdlbmVyaWMnO1xuXHRcdFx0fVxuXHRcdFx0dGVtcGxhdGUgKz0gbGV2ZWw7XG5cdFx0XHRyZXR1cm4gW3RlbXBsYXRlLCBsZXZlbF07XG5cdFx0fSxcblx0XHRtYWluOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHN0YXRlbGVtID0gcGFnZW9iai5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0bGV0IHttZXNzYWdlRGF0YX0gPSBwYXJhbXM7XG5cdFx0XHRjb25zdCB3YXJuaW5nSGlzdG9yeSA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZGF0ZVByb2Nlc3NpbmcodGV4dCk7XG5cdFx0XHRjb25zdCBbbGF0ZXN0LCBoaXN0b3J5XSA9IHdhcm5pbmdIaXN0b3J5O1xuXHRcdFx0Y29uc3Qgbm93ID0gbmV3IE1vcmViaXRzLmRhdGUocGFnZW9iai5nZXRMb2FkVGltZSgpKTtcblx0XHRcdFR3aW5rbGUud2Fybi50YWxrcGFnZU9iaiA9IHBhZ2VvYmo7IC8vIFVwZGF0ZSB0YWxrcGFnZU9iaiwganVzdCBpbiBjYXNlXG5cdFx0XHRpZiAocGFyYW1zLm1haW5fZ3JvdXAgPT09ICdhdXRvbGV2ZWwnKSB7XG5cdFx0XHRcdC8vIFt0ZW1wbGF0ZSwgbGV2ZWxdXG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlQW5kTGV2ZWwgPSBUd2lua2xlLndhcm4uY2FsbGJhY2tzLmF1dG9sZXZlbFBhcnNlV2lraXRleHQoXG5cdFx0XHRcdFx0dGV4dCxcblx0XHRcdFx0XHRwYXJhbXMsXG5cdFx0XHRcdFx0bGF0ZXN0LFxuXHRcdFx0XHRcdG5vdyxcblx0XHRcdFx0XHRzdGF0ZWxlbVxuXHRcdFx0XHQpO1xuXHRcdFx0XHQvLyBPbmx5IGlmIHRoZXJlJ3MgYSBjaGFuZ2UgZnJvbSB0aGUgcHJpb3IgZGlzcGxheS9sb2FkXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRwYXJhbXMuc3ViX2dyb3VwICE9PSB0ZW1wbGF0ZUFuZExldmVsWzBdICYmXG5cdFx0XHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhuWPkemAgee7meeUqOaIt3t7JywgJ+Wwh+eZvOmAgee1puS9v+eUqOiAhXt7JykgK1xuXHRcdFx0XHRcdFx0XHR0ZW1wbGF0ZUFuZExldmVsWzBdICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCd9feaooeadv++8jOWlveWQl++8nycsICd9feaooeadv++8jOWlveWXju+8nycpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iCcsICfkvb/nlKjogIXlj5bmtognKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIFVwZGF0ZSBwYXJhbXMgbm93IHRoYXQgd2UndmUgc2VsZWN0ZWQgYSB3YXJuaW5nXG5cdFx0XHRcdFtwYXJhbXMuc3ViX2dyb3VwXSA9IHRlbXBsYXRlQW5kTGV2ZWw7XG5cdFx0XHRcdG1lc3NhZ2VEYXRhID0gcGFyYW1zLm1lc3NhZ2VEYXRhW2BsZXZlbCR7dGVtcGxhdGVBbmRMZXZlbFsxXX1gXTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdHBhcmFtcy5zdWJfZ3JvdXAgaW4gaGlzdG9yeSAmJlxuXHRcdFx0XHRuZXcgTW9yZWJpdHMuZGF0ZShoaXN0b3J5W3BhcmFtcy5zdWJfZ3JvdXBdKS5hZGQoMSwgJ2RheScpLmlzQWZ0ZXIobm93KSAmJlxuXHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+i/kTI05bCP5pe25YaF5LiA5Liq5ZCM5qC355qEICcsICfov5EyNOWwj+aZguWFp+S4gOWAi+WQjOaoo+eahCAnKSArXG5cdFx0XHRcdFx0XHRwYXJhbXMuc3ViX2dyb3VwICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOaooeadv+W3suiiq+WPkeWHuuOAglxcbuaYr+WQpue7p+e7re+8nycsICcg5qih5p2/5bey6KKr55m85Ye644CCXFxu5piv5ZCm57m857qM77yfJylcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raIJywgJ+S9v+eUqOiAheWPlua2iCcpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGF0ZXN0LmRhdGUuYWRkKDEsICdtaW51dGUnKTsgLy8gYWZ0ZXIgbG9uZyBkZWJhdGUsIG9uZSBtaW51dGUgaXMgbWF4XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGxhdGVzdC5kYXRlLmlzQWZ0ZXIobm93KSAmJlxuXHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+i/kTHliIbpkp/lhoUgJywgJ+i/kTHliIbpkJjlhacgJykgK1xuXHRcdFx0XHRcdFx0bGF0ZXN0LnR5cGUgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5qih5p2/5bey6KKr5Y+R5Ye644CCXFxu5piv5ZCm57un57ut77yfJywgJyDmqKHmnb/lt7Looqvnmbzlh7rjgIJcXG7mmK/lkKbnubznuozvvJ8nKVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfnlKjmiLflj5bmtognLCAn5L2/55So6ICF5Y+W5raIJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBidWlsZCB0aGUgZWRpdCBzdW1tYXJ5XG5cdFx0XHQvLyBGdW5jdGlvbiB0byBoYW5kbGUgZ2VuZXJhdGlvbiBvZiBzdW1tYXJ5IHByZWZpeCBmb3IgY3VzdG9tIHRlbXBsYXRlc1xuXHRcdFx0Y29uc3QgY3VzdG9tUHJvY2VzcyA9ICh0ZW1wbGF0ZSkgPT4ge1xuXHRcdFx0XHRbdGVtcGxhdGVdID0gdGVtcGxhdGUuc3BsaXQoJ3wnKTtcblx0XHRcdFx0bGV0IHByZWZpeDtcblx0XHRcdFx0c3dpdGNoICh0ZW1wbGF0ZS5zbGljZSgtMSkpIHtcblx0XHRcdFx0XHRjYXNlICcxJzpcblx0XHRcdFx0XHRcdHByZWZpeCA9ICfms6jmhI8nO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnMic6XG5cdFx0XHRcdFx0XHRwcmVmaXggPSAn6K2m5ZGKJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8vIGZhbGxzIHRocm91Z2hcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0cHJlZml4ID0gJ+aPkOmGkic7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYCR7cHJlZml4fe+8miR7TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKG1lc3NhZ2VEYXRhLmxhYmVsKX1gO1xuXHRcdFx0fTtcblx0XHRcdGxldCBzdW1tYXJ5O1xuXHRcdFx0aWYgKHBhcmFtcy5tYWluX2dyb3VwID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRzdW1tYXJ5ID0gY3VzdG9tUHJvY2VzcyhwYXJhbXMuc3ViX2dyb3VwKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIE5vcm1hbGl6ZSBraXRjaGVuc2luayB0byB0aGUgMS0yIHN0eWxlXG5cdFx0XHRcdGlmIChwYXJhbXMubWFpbl9ncm91cCA9PT0gJ2tpdGNoZW5zaW5rJyAmJiAhL15EKyQvLnRlc3QocGFyYW1zLnN1Yl9ncm91cCkpIHtcblx0XHRcdFx0XHRsZXQgc3ViID0gcGFyYW1zLnN1Yl9ncm91cC5zbGljZSgtMSk7XG5cdFx0XHRcdFx0aWYgKHN1YiA9PT0gJ20nKSB7XG5cdFx0XHRcdFx0XHRzdWIgPSBwYXJhbXMuc3ViX2dyb3VwLnNsaWNlKC0zKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gRG9uJ3Qgb3ZlcndyaXRlIHV3LTNyciwgdGVjaG5pY2FsbHkgdW5uZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoL1xcZC8udGVzdChzdWIpKSB7XG5cdFx0XHRcdFx0XHRwYXJhbXMubWFpbl9ncm91cCA9IGBsZXZlbCR7c3VifWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIHNpbmdsZXQgfHwgbGV2ZWwxLTIsIG5vIG5lZWQgdG8gL15cXEQrJC8udGVzdChwYXJhbXMubWFpbl9ncm91cClcblx0XHRcdFx0c3VtbWFyeSA9XG5cdFx0XHRcdFx0bWVzc2FnZURhdGEuc3VtbWFyeSB8fCAobWVzc2FnZURhdGFbcGFyYW1zLm1haW5fZ3JvdXBdICYmIG1lc3NhZ2VEYXRhW3BhcmFtcy5tYWluX2dyb3VwXS5zdW1tYXJ5KTtcblx0XHRcdFx0Ly8gTm90IGluIFR3aW5rbGUud2Fybi5tZXNzYWdlcywgYXNzdW1lIGN1c3RvbSB0ZW1wbGF0ZVxuXHRcdFx0XHRzdW1tYXJ5IHx8PSBjdXN0b21Qcm9jZXNzKHBhcmFtcy5zdWJfZ3JvdXApO1xuXHRcdFx0XHRpZiAobWVzc2FnZURhdGEuc3VwcHJlc3NBcnRpY2xlSW5TdW1tYXJ5ICE9PSB0cnVlICYmIHBhcmFtcy5hcnRpY2xlKSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5zdWJfZ3JvdXAgPT09ICd1dy1haXYnKSB7XG5cdFx0XHRcdFx0XHQvLyB0aGVzZSB0ZW1wbGF0ZXMgcmVxdWlyZSBhIHVzZXJuYW1lXG5cdFx0XHRcdFx0XHRzdW1tYXJ5ICs9IGDvvIgke3dpbmRvdy53Z1VMUygn5a+55LqOJywgJ+WwjeaWvCcpfVtbVXNlcjoke3BhcmFtcy5hcnRpY2xlfV1d77yJYDtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5zdWJfZ3JvdXAgPT09ICd1dy1iaXRlJykge1xuXHRcdFx0XHRcdFx0Ly8gdGhpcyB0ZW1wbGF0ZSByZXF1aXJlcyBhIHVzZXJuYW1lXG5cdFx0XHRcdFx0XHRzdW1tYXJ5ICs9IGDvvIwke3dpbmRvdy53Z1VMUygn5LqOJywgJ+aWvCcpfVtbVXNlciB0YWxrOiR7cGFyYW1zLmFydGljbGV9XV1gO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5ICs9IGAke3dpbmRvdy53Z1VMUygn77yM5LqOW1snLCAn77yM5pa8W1snKSArIHBhcmFtcy5hcnRpY2xlfV1dYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hXYXJuaW5ncycpKTtcblx0XHRcdC8vIEdldCBhY3R1YWwgd2FybmluZyB0ZXh0XG5cdFx0XHRjb25zdCB3YXJuaW5nVGV4dCA9IFR3aW5rbGUud2Fybi5jYWxsYmFja3MuZ2V0V2FybmluZ1dpa2l0ZXh0KFxuXHRcdFx0XHRwYXJhbXMuc3ViX2dyb3VwLFxuXHRcdFx0XHRwYXJhbXMuYXJ0aWNsZSxcblx0XHRcdFx0cGFyYW1zLnJlYXNvbixcblx0XHRcdFx0cGFyYW1zLm1haW5fZ3JvdXAgPT09ICdjdXN0b20nXG5cdFx0XHQpO1xuXHRcdFx0bGV0IHNlY3Rpb25FeGlzdHMgPSBmYWxzZTtcblx0XHRcdGxldCBzZWN0aW9uTnVtYmVyID0gMDtcblx0XHRcdC8vIE9ubHkgY2hlY2sgc2VjdGlvbnMgaWYgdGhlcmUgYXJlIHNlY3Rpb25zIG9yIHRoZXJlJ3MgYSBjaGFuY2Ugd2Ugd29uJ3QgY3JlYXRlIG91ciBvd25cblx0XHRcdGlmICghbWVzc2FnZURhdGEuaGVhZGluZyAmJiB0ZXh0Lmxlbmd0aCkge1xuXHRcdFx0XHQvLyBHZXQgYWxsIHNlY3Rpb25zXG5cdFx0XHRcdGNvbnN0IHNlY3Rpb25zID0gdGV4dC5tYXRjaCgvXig9PSopLitcXDEvZ20pO1xuXHRcdFx0XHRpZiAoc2VjdGlvbnMgJiYgc2VjdGlvbnMubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRcdFx0Ly8gRmluZCB0aGUgaW5kZXggb2YgdGhlIHNlY3Rpb24gaGVhZGVyIGluIHF1ZXN0aW9uXG5cdFx0XHRcdFx0Y29uc3QgZGF0ZUhlYWRlclJlZ2V4ID0gbm93Lm1vbnRoSGVhZGVyUmVnZXgoKTtcblx0XHRcdFx0XHRzZWN0aW9uTnVtYmVyID0gMDtcblx0XHRcdFx0XHQvLyBGaW5kIHRoaXMgbW9udGgncyBzZWN0aW9uIGFtb25nIEwyIHNlY3Rpb25zLCBwcmVmZXJyaW5nIHRoZSBib3R0b20tbW9zdFxuXHRcdFx0XHRcdHNlY3Rpb25FeGlzdHMgPSBzZWN0aW9ucy5yZXZlcnNlKCkuc29tZSgoc2VjLCBpZHgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdC9eKD09KVtePV0uK1xcMS9tLnRlc3Qoc2VjKSAmJlxuXHRcdFx0XHRcdFx0XHRkYXRlSGVhZGVyUmVnZXgudGVzdChzZWMpICYmXG5cdFx0XHRcdFx0XHRcdHR5cGVvZiAoc2VjdGlvbk51bWJlciA9IHNlY3Rpb25zLmxlbmd0aCAtIDEgLSBpZHgpID09PSAnbnVtYmVyJ1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHNlY3Rpb25FeGlzdHMpIHtcblx0XHRcdFx0Ly8gYXBwZW5kIHRvIGV4aXN0aW5nIHNlY3Rpb25cblx0XHRcdFx0cGFnZW9iai5zZXRQYWdlU2VjdGlvbihzZWN0aW9uTnVtYmVyICsgMSk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0QXBwZW5kVGV4dChgXFxuXFxuJHt3YXJuaW5nVGV4dH1gKTtcblx0XHRcdFx0cGFnZW9iai5hcHBlbmQoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChtZXNzYWdlRGF0YS5oZWFkaW5nKSB7XG5cdFx0XHRcdFx0Ly8gY3JlYXRlIG5ldyBzZWN0aW9uXG5cdFx0XHRcdFx0cGFnZW9iai5zZXROZXdTZWN0aW9uVGl0bGUobWVzc2FnZURhdGEuaGVhZGluZyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw5b2T5pyI55qE5LqM57qn5qCH6aKY77yM5bCG5Yib5bu65paw55qEJywgJ+acquaJvuWIsOeVtuaciOeahOS6jOe0muaomemhjO+8jOWwh+W7uueri+aWsOeahCcpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRwYWdlb2JqLnNldE5ld1NlY3Rpb25UaXRsZShub3cubW9udGhIZWFkZXIoMCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VvYmouc2V0TmV3U2VjdGlvblRleHQod2FybmluZ1RleHQpO1xuXHRcdFx0XHRwYWdlb2JqLm5ld1NlY3Rpb24oKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLndhcm4uY2FsbGJhY2suZXZhbHVhdGUgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHVzZXJUYWxrUGFnZSA9IGBVc2VyX3RhbGs6JHtyZWxldmFudFVzZXJOYW1lfWA7XG5cdFx0Ly8gcmVhc29uLCBtYWluX2dyb3VwLCBzdWJfZ3JvdXAsIGFydGljbGVcblx0XHRjb25zdCBwYXJhbXMgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGUudGFyZ2V0KTtcblx0XHRpZiAocGFyYW1zLmFydGljbGUpIHtcblx0XHRcdGlmICgvaHR0cHM/OlxcL1xcLy8udGVzdChwYXJhbXMuYXJ0aWNsZSkpIHtcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfigJzpobXpnaLpk77mjqXigJ3kuI3og73kvb/nlKjnvZHlnYDjgIInLCAn44CM6aCB6Z2i6YCj57WQ44CN5LiN6IO95L2/55So57ay5Z2A44CCJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAnd2FybicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBhcnRpY2xlID0gbmV3IG13LlRpdGxlKHBhcmFtcy5hcnRpY2xlKTtcblx0XHRcdFx0cGFyYW1zLmFydGljbGUgPSBhcnRpY2xlLmdldFByZWZpeGVkVGV4dCgpO1xuXHRcdFx0XHRpZiAoYXJ0aWNsZS5nZXRGcmFnbWVudCgpKSB7XG5cdFx0XHRcdFx0cGFyYW1zLmFydGljbGUgKz0gYCMke2FydGljbGUuZ2V0RnJhZ21lbnQoKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0YWxlcnQoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+KAnOmhtemdoumTvuaOpeKAneS4jeWQiOazle+8jOS7heiDvei+k+WFpeS4gOS4qumhtemdouWQjeensO+8jOWLv+S9v+eUqOe9keWdgOOAgVtbIF1d77yM5Y+v5L2/55SoU3BlY2lhbDpEaWZm44CCJyxcblx0XHRcdFx0XHRcdCfjgIzpoIHpnaLpgKPntZDjgI3kuI3lkIjms5XvvIzlg4Xog73ovLjlhaXkuIDlgIvpoIHpnaLlkI3nqLHvvIzli7/kvb/nlKjntrLlnYDjgIFbWyBdXe+8jOWPr+S9v+eUqFNwZWNpYWw6RGlmZuOAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gVGhlIGF1dG9sZXZlbCBvcHRpb24gd2lsbCBhbHJlYWR5IGtub3cgYnkgbm93IGlmIGEgdXNlciB0YWxrIHBhZ2Vcblx0XHQvLyBpcyBhIGNyb3NzLW5hbWVzcGFjZSByZWRpcmVjdCAodmlhICEhVHdpbmtsZS53YXJuLnRhbGtwYWdlT2JqKSwgc29cblx0XHQvLyB0ZWNobmljYWxseSB3ZSBjb3VsZCBhbGVydCBhbiBlcnJvciBoZXJlLCBidXQgdGhlIHVzZXIgd2lsbCBoYXZlXG5cdFx0Ly8gYWxyZWFkeSBpZ25vcmVkIHRoZSBib2xkIHJlZCBlcnJvciBhYm92ZS4gTW9yZW92ZXIsIHRoZXkgcHJvYmFibHlcblx0XHQvLyAqZG9uJ3QqIHdhbnQgdG8gYWN0dWFsbHkgaXNzdWUgYSB3YXJuaW5nLCBzbyB0aGUgZXJyb3IgaGFuZGxpbmdcblx0XHQvLyBhZnRlciB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgaXMgcHJvYmFibHkgcHJlZmVyYWJsZVxuXHRcdC8vIEZpbmQgdGhlIHNlbGVjdGVkIDxvcHRpb24+IGVsZW1lbnQgc28gd2UgY2FuIGZldGNoIHRoZSBkYXRhIHN0cnVjdHVyZVxuXHRcdGNvbnN0ICRzZWxlY3RlZEVsID0gJChlLnRhcmdldC5zdWJfZ3JvdXApLmZpbmQoYG9wdGlvblt2YWx1ZT1cIiR7JChlLnRhcmdldC5zdWJfZ3JvdXApLnZhbCgpfVwiXWApO1xuXHRcdHBhcmFtcy5tZXNzYWdlRGF0YSA9ICRzZWxlY3RlZEVsLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0aWYgKHBhcmFtcy5tZXNzYWdlRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+mAieaLqeitpuWRiuaooeadv+OAgicsICfoq4vpgbjmk4forablkYrmqKHmnb/jgIInKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3dhcm4nLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZS50YXJnZXQpO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gdXNlclRhbGtQYWdlO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn6K2m5ZGK5a6M5oiQ77yM5bCG5Zyo5Yeg56eS5ZCO5Yi35pawJywgJ+itpuWRiuWujOaIkO+8jOWwh+WcqOW5vuenkuW+jOmHjeaWsOaVtOeQhicpO1xuXHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZSh1c2VyVGFsa1BhZ2UsIHdpbmRvdy53Z1VMUygn55So5oi36K6o6K666aG15L+u5pS5JywgJ+S9v+eUqOiAheiojuirlumggeS/ruaUuScpKTtcblx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRxaXV3ZW5fcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLndhcm4uY2FsbGJhY2tzLm1haW4pO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLndhcm4sICd3YXJuJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiaW1wb3J0IHtpbml0TXdBcGl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbmNvbnN0IGFwaTogbXcuQXBpID0gaW5pdE13QXBpKCdtb3JlYml0cy5qczsgVHdpbmtsZS8xLjEnKTtcblxuZXhwb3J0IHthcGl9O1xuIiwgIi8qIGVzbGludC1kaXNhYmxlIG5vLWpxdWVyeS9uby1tYXAtdXRpbCAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7YXBpfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge2dlbmVyYXRlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWJsb2NrLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWJsb2NrKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdGxldCByZWxldmFudFVzZXJOYW1lO1xuXHRsZXQgYmxvY2tlZFVzZXJOYW1lO1xuXHRjb25zdCBtZW51Rm9ybWF0dGVkTmFtZXNwYWNlcyA9IHtcblx0XHQuLi5tdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKSxcblx0fTtcblx0bWVudUZvcm1hdHRlZE5hbWVzcGFjZXNbMF0gPSB3aW5kb3cud2dVTFMoJ++8iOadoeebru+8iScsICfvvIjmop3nm67vvIknKTtcblx0Y29uc3QgYmxvY2tBY3Rpb25UZXh0ID0ge1xuXHRcdGJsb2NrOiB3aW5kb3cud2dVTFMoJ+WwgeemgScsICflsIHpjpYnKSxcblx0XHRyZWJsb2NrOiB3aW5kb3cud2dVTFMoJ+mHjeaWsOWwgeemgScsICfph43mlrDlsIHpjpYnKSxcblx0XHR1bmJsb2NrOiB3aW5kb3cud2dVTFMoJ+ino+mZpOWwgeemgScsICfop6PpmaTlsIHpjpYnKSxcblx0fTtcblx0LyoqXG5cdCAqIHR3aW5rbGVibG9jay5qczogQmxvY2sgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIkJsb2NrXCIpXG5cdCAqIEFjdGl2ZSBvbjogQW55IHBhZ2Ugd2l0aCByZWxldmFudCB1c2VyIG5hbWUgKHVzZXJzcGFjZSwgY29udHJpYnMsIGV0Yy4pXG5cdCAqL1xuXHRUd2lua2xlLmJsb2NrID0gKCkgPT4ge1xuXHRcdHJlbGV2YW50VXNlck5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHQvLyBzaG91bGQgc2hvdyBvbiBDb250cmlidXRpb25zIG9yIEJsb2NrIHBhZ2VzLCBhbnl3aGVyZSB0aGVyZSdzIGEgcmVsZXZhbnQgdXNlclxuXHRcdC8vIElnbm9yZSByYW5nZXMgd2lkZXIgdGhhbiB0aGUgQ0lEUiBsaW1pdFxuXHRcdC8vIEVuYWJsZSBmb3Igbm9uLWFkbWluc1xuXHRcdGlmIChcblx0XHRcdChNb3JlYml0cy51c2VySXNTeXNvcCB8fCAhbXcudXRpbC5pc0lQQWRkcmVzcyhyZWxldmFudFVzZXJOYW1lLCB0cnVlKSkgJiZcblx0XHRcdHJlbGV2YW50VXNlck5hbWUgJiZcblx0XHRcdCghTW9yZWJpdHMuaXAuaXNSYW5nZShyZWxldmFudFVzZXJOYW1lKSB8fCBNb3JlYml0cy5pcC52YWxpZENJRFIocmVsZXZhbnRVc2VyTmFtZSkpXG5cdFx0KSB7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwgeemgScsICflsIHpjpYnKSxcblx0XHRcdFx0J3R3LWJsb2NrJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCflsIHnpoHnm7jlhbPnlKjmiLcnLCAn5bCB6Y6W55u46Zec5L2/55So6ICFJylcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdHJlbGV2YW50VXNlck5hbWUgPT09IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSAmJlxuXHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5oKo5Y2z5bCG5a+56Ieq5bex5omn6KGM5bCB56aB55u45YWz5pON5L2c77yB56Gu6K6k6KaB57un57ut5ZCX77yfJyxcblx0XHRcdFx0XHQn5oKo5Y2z5bCH5bCN6Ieq5bex5Z+36KGM5bCB6Y6W55u46Zec5pON5L2c77yB56K66KqN6KaB57m857qM5ZeO77yfJ1xuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbyA9IHVuZGVmaW5lZDtcblx0XHRUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMgPSB7fTtcblx0XHRUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMgPSB7fTtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDY1MCwgNTMwKTtcblx0XHQvLyBuZWVkIHRvIGJlIHZlcmJvc2UgYWJvdXQgd2hvIHdlJ3JlIGJsb2NraW5nXG5cdFx0V2luZG93LnNldFRpdGxlKFxuXHRcdFx0d2luZG93LndnVUxTKCflsIHnpoHmiJblkJEnLCAn5bCB6Y6W5oiW5ZCRJykgKyByZWxldmFudFVzZXJOYW1lICsgd2luZG93LndnVUxTKCflj5Hlh7rlsIHnpoHmqKHmnb8nLCAn55m85Ye65bCB6Y6W5qih5p2/Jylcblx0XHQpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflsIHnpoHmlrnpkognLCAn5bCB6Y6W5pa56YedJyksICdRVzpCTE9DSycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5bCB56aB6K6+572uJywgJ+WwgemOluioreWumicpLCAnSDpUVy9QUkVGI2Jsb2NrJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI2Jsb2NrJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5ibG9jay5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Y29uc3QgYWN0aW9uZmllbGQgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pON5L2c57G75Z6LJywgJ+aTjeS9nOmhnuWIpScpLFxuXHRcdH0pO1xuXHRcdGFjdGlvbmZpZWxkLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bmFtZTogJ2FjdGlvbnR5cGUnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbixcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgeeUqOaItycsICflsIHpjpbkvb/nlKjogIUnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn55So6YCJ5oup55qE6YCJ6aG55YWo56uZ5bCB56aB55u45YWz55So5oi377yM6Iul5pyq5Yu+6YCJ6YOo5YiG5bCB56aB5YiZ5Li65YWo56uZ5bCB56aB44CCJyxcblx0XHRcdFx0XHRcdCfnlKjpgbjmk4fnmoTpgbjpoIXlhajnq5nlsIHpjpbnm7jpl5zkvb/nlKjogIXvvIzoi6XmnKrli77pgbjpg6jliIblsIHpjpbliYfngrrlhajnq5nlsIHpjpbjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRoaWRkZW46ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0XHRjaGVja2VkOiBNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mDqOWIhuWwgeemgScsICfpg6jliIblsIHpjpYnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BhcnRpYWwnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5ZCv55So6YOo5YiG5bCB56aB5Y+K6YOo5YiG5bCB56aB5qih5p2/44CCJywgJ+WVn+eUqOmDqOWIhuWwgemOluWPiumDqOWIhuWwgemOluaooeadv+OAgicpLFxuXHRcdFx0XHRcdGhpZGRlbjogIU1vcmViaXRzLnVzZXJJc1N5c29wLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignZGVmYXVsdFRvUGFydGlhbEJsb2NrcycpLCAvLyBPdmVycmlkZGVuIGlmIGFscmVhZHkgYmxvY2tlZFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5bCB56aB5qih5p2/5Yiw55So5oi36K6o6K666aG1JywgJ+WKoOWFpeWwgemOluaooeadv+WIsOS9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndGVtcGxhdGUnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XmiafooYzlsIHnpoHnmoTnrqHnkIblkZjlv5jorrDlj5Hlh7rlsIHnpoHmqKHmnb/vvIzmiJbkvaDlsIHnpoHkuobnlKjmiLfogIzmsqHmnInnu5nlhbblj5Hlh7rmqKHmnb/vvIzliJnkvaDlj6/ku6XnlKjmraTmnaXlj5Hlh7rlkIjpgILnmoTmqKHmnb/jgILli77pgInpg6jliIblsIHnpoHku6Xkvb/nlKjpg6jliIblsIHnpoHmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+iLpeWft+ihjOWwgemOlueahOeuoeeQhuWToeW/mOiomOeZvOWHuuWwgemOluaooeadv++8jOaIluS9oOWwgemOluS6huS9v+eUqOiAheiAjOaykuaciee1puWFtueZvOWHuuaooeadv++8jOWJh+S9oOWPr+S7peeUqOatpOS+hueZvOWHuuWQiOmBqeeahOaooeadv+OAguWLvumBuOmDqOWIhuWwgemOluS7peS9v+eUqOmDqOWIhuWwgemOluaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdC8vIERpc2FsbG93IHdoZW4gdmlld2luZyB0aGUgYmxvY2sgZGlhbG9nIG9uIGFuIElQIHJhbmdlXG5cdFx0XHRcdFx0aGlkZGVuOiAhTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0XHRcdFx0Y2hlY2tlZDogTW9yZWJpdHMudXNlcklzU3lzb3AgJiYgIU1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSksXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IE1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd0YWcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflsIbnlKjmiLfpobXmm7/mjaLmiJDnm7jlhbPnmoTmoIforrDmqKHmnb/vvIzku4XpmZDmsLjkuYXlsIHnpoHkvb/nlKjjgIInLFxuXHRcdFx0XHRcdFx0J+Wwh+S9v+eUqOiAhemggemdouabv+aPm+aIkOebuOmXnOeahOaomeiomOaooeadv++8jOWDhemZkOawuOS5heWwgemOluS9v+eUqOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0XHRjaGVja2VkOiAhTW9yZWJpdHMudXNlcklzU3lzb3AsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTnlKjmiLfpobUnLCAn5L+d6K235L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcm90ZWN0Jyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpOeUqOaIt+mhte+8jOS7hemZkOawuOS5heWwgeemgeS9v+eUqOOAgicsICflhajkv53orbfkvb/nlKjogIXpoIHpnaLvvIzlg4XpmZDmsLjkuYXlsIHpjpbkvb/nlKjjgIInKSxcblx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfop6PpmaTlsIHnpoHnlKjmiLcnLCAn6Kej6Zmk5bCB6Y6W5L2/55So6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1bmJsb2NrJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+ino+mZpOWwgeemgeebuOWFs+eUqOaIt+OAgicsICfop6PpmaTlsIHpjpbnm7jpl5zkvb/nlKjogIXjgIInKSxcblx0XHRcdFx0XHRoaWRkZW46ICFNb3JlYml0cy51c2VySXNTeXNvcCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0LyoqXG5cdFx0ICogQWRkIG9wdGlvbiBmb3IgSVB2NiByYW5nZXMgc21hbGxlciB0aGFuIC82NCB0byB1cGdyYWRlIHRvIHRoZSA2NFxuXHRcdCAqIENJRFIuIFRoaXMgaXMgb25lIG9mIHRoZSBmZXcgcGxhY2VzIHdoZXJlIHdlIHdhbnRcblx0XHQgKiB3Z1JlbGV2YW50VXNlck5hbWUgc2luY2UgdGhpcyBkZXBlbmRzIGVudGlyZWx5IG9uIHRoZSBvcmlnaW5hbCB1c2VyLlxuXHRcdCAqIEluIHRoZW9yeSwgd2Ugc2hvdWxkbid0IHVzZSBNb3JlYml0cy5pcC5nZXQ2NCBoZXJlIHNpbmNlIHNpbmNlIHdlIHdhbnRcblx0XHQgKiB0byBleGNsdWRlIGZ1bmN0aW9uYWxseS1lcXVpdmFsZW50IC82NHMuICBUaGF0J2QgYmU6XG5cdFx0ICogLy8gaWYgKG13LnV0aWwuaXNJUHY2QWRkcmVzcyhtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSwgdHJ1ZSkgJiZcblx0XHQgKiAvLyAobXcudXRpbC5pc0lQdjZBZGRyZXNzKG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSB8fCBwYXJzZUludChtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKS5yZXBsYWNlKC9eKC4rPylcXC8/KFxcZHsxLDN9KT8kLywgJyQyJyksIDEwKSA+IDY0KSkge1xuXHRcdCAqIEluIHByYWN0aWNlLCB0aG91Z2gsIHNpbmNlIGZ1bmN0aW9uYWxseS1lcXVpdmFsZW50IHJhbmdlcyBhcmVcblx0XHQgKiAobWlzKXRyZWF0ZWQgYXMgc2VwYXJhdGUgYnkgTWVkaWFXaWtpJ3MgbG9nZ2luZyxcblx0XHQgKiB1c2luZyBNb3JlYml0cy5pcC5nZXQ2NCBwcm92aWRlcyBhIG1vZGljdW0gb2YgcmVsaWVmIGluIHRoaXNlIGNhc2UuXG5cdFx0ICovXG5cdFx0Y29uc3Qgc2l4dHlGb3VyID0gTW9yZWJpdHMuaXAuZ2V0NjQobXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJykpO1xuXHRcdGlmIChzaXh0eUZvdXIgJiYgc2l4dHlGb3VyICE9PSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSkge1xuXHRcdFx0Y29uc3QgYmxvY2s2NGZpZWxkID0gZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazmjaLkuLovNjTmrrXlsIHnpoEnLCAn6L2J5o+b54K6LzY05q615bCB6Y6WJyksXG5cdFx0XHRcdG5hbWU6ICdmaWVsZF82NCcsXG5cdFx0XHR9KTtcblx0XHRcdGJsb2NrNjRmaWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0c3R5bGU6ICdtYXJnaW4tYm90dG9tOiAwLjVlbScsXG5cdFx0XHRcdGxhYmVsOiBbd2dVTFMoJ+ebtOaOpeWwgeemgS82NOauteacieebiuaXoOWus+OAgicsICfnm7TmjqXlsIHpjpYvNjTmrrXmnInnm4rnhKHlrrPjgIInKV0sXG5cdFx0XHR9KTtcblx0XHRcdGJsb2NrNjRmaWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAnYmxvY2s2NCcsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9ibG9jazY0LFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0VG9CbG9jazY0JyksXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlLnmiJDlsIHnpoEvNjQnLCAn5pS55oiQ5bCB6Y6WLzY0JyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2Jsb2NrNjQnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogTW9yZWJpdHMuaXAuaXNSYW5nZShtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSlcblx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+WwhuS4jeS8muWPkemAgeaooeadv+mAmuefpeOAgicsICflsIfkuI3mnIPnmbzpgIHmqKHmnb/pgJrnn6XjgIInKVxuXHRcdFx0XHRcdFx0XHQ6IHdpbmRvdy53Z1VMUygn5Lu75L2V5qih5p2/5bCG5Lya5Y+R6YCB57uZ5Y6f5aeLSVDvvJonLCAn5Lu75L2V5qih5p2/5bCH5pyD55m86YCB57Wm5Y6f5aeLSVDvvJonKSArXG5cdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aooeadv+mAiemhuScsICfmqKHmnb/pgbjpoIUnKSxcblx0XHRcdG5hbWU6ICdmaWVsZF90ZW1wbGF0ZV9vcHRpb25zJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCJ6aG5JywgJ+WwgemOlumBuOmghScpLFxuXHRcdFx0bmFtZTogJ2ZpZWxkX2Jsb2NrX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnlKjmiLfpobUnLCAn5qiZ6KiY5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfdGFnX29wdGlvbnMnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfop6PpmaTlsIHnpoHpgInpobknLCAn6Kej6Zmk5bCB6Y6W6YG46aCFJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfdW5ibG9ja19vcHRpb25zJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdGxhYmVsOiAn5o+Q5LqkJyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRyZXN1bHQucm9vdCA9IHJlc3VsdDtcblx0XHRUd2lua2xlLmJsb2NrLmZldGNoVXNlckluZm8oKCkgPT4ge1xuXHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRcdGNvbnN0ICRmb3JtID0gJChyZXN1bHQpO1xuXHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGFnXScpLnBhcmVudCgpLCB0cnVlKTtcblx0XHRcdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KFxuXHRcdFx0XHRcdFx0JGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cHJvdGVjdF0nKS5wYXJlbnQoKSxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBUb2dnbGUgaW5pdGlhbCBwYXJ0aWFsIHN0YXRlIGRlcGVuZGluZyBvbiBwcmlvciBibG9jayB0eXBlLFxuXHRcdFx0Ly8gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdFRvUGFydGlhbEJsb2NrcyBwcmVmXG5cdFx0XHRpZiAoYmxvY2tlZFVzZXJOYW1lID09PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRcdCQocmVzdWx0KVxuXHRcdFx0XHRcdC5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpXG5cdFx0XHRcdFx0LnByb3AoJ2NoZWNrZWQnLCBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJycpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gY2xlYW4gdXAgcHJlc2V0IGRhdGEgKGRlZmF1bHRzLCBldGMuKSwgZG9uZSBleGFjdGx5IG9uY2UsIG11c3QgYmUgYmVmb3JlIFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbiBpcyBjYWxsZWRcblx0XHRcdFR3aW5rbGUuYmxvY2sudHJhbnNmb3JtQmxvY2tQcmVzZXRzKCk7XG5cdFx0XHQvLyBpbml0IHRoZSBjb250cm9scyBhZnRlciB1c2VyIGFuZCBibG9jayBpbmZvIGhhdmUgYmVlbiBmZXRjaGVkXG5cdFx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0aWYgKHJlc3VsdC5ibG9jazY0ICYmIHJlc3VsdC5ibG9jazY0LmNoZWNrZWQpIHtcblx0XHRcdFx0Ly8gQ2FsbHMgdGhlIHNhbWUgY2hhbmdlX2FjdGlvbiBldmVudCBvbmNlIGZpbmlzaGVkXG5cdFx0XHRcdHJlc3VsdC5ibG9jazY0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdC5hY3Rpb250eXBlWzBdLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblx0Ly8gU3RvcmUgZmV0Y2hlZCB1c2VyIGRhdGEsIG9ubHkgcmVsZXZhbnQgaWYgc3dpdGNoaW5nIElQdjYgdG8gYSAvNjRcblx0VHdpbmtsZS5ibG9jay5mZXRjaGVkRGF0YSA9IHt9O1xuXHQvLyBQcm9jZXNzZXMgdGhlIGRhdGEgZnJvbSBhIGEgcXVlcnkgcmVzcG9uc2UsIHNlcGFyYXRlZCBmcm9tXG5cdC8vIFR3aW5rbGUuYmxvY2suZmV0Y2hVc2VySW5mbyB0byBhbGxvdyByZXByb2Nlc3Npbmcgb2YgYWxyZWFkeS1mZXRjaGVkIGRhdGFcblx0VHdpbmtsZS5ibG9jay5wcm9jZXNzVXNlckluZm8gPSAoZGF0YSwgZm4pID0+IHtcblx0XHRsZXQgW2Jsb2NraW5mb10gPSBkYXRhLnF1ZXJ5LmJsb2Nrcztcblx0XHRjb25zdCBbdXNlcmluZm9dID0gZGF0YS5xdWVyeS51c2Vycztcblx0XHQvLyBJZiBhbiBJUCBpcyBibG9ja2VkICphbmQqIHJhbmdlYmxvY2tlZCwgdGhlIGFib3ZlIGZpbmRzXG5cdFx0Ly8gd2hpY2hldmVyIGJsb2NrIGlzIG1vcmUgcmVjZW50LCBub3QgbmVjZXNzYXJpbHkgY29ycmVjdC5cblx0XHQvLyBUaHJlZSBzZWVtcy4uLiB1bmxpa2VseVxuXHRcdGlmIChkYXRhLnF1ZXJ5LmJsb2Nrcy5sZW5ndGggPiAxICYmIGJsb2NraW5mby51c2VyICE9PSByZWxldmFudFVzZXJOYW1lKSB7XG5cdFx0XHRbLCBibG9ja2luZm9dID0gZGF0YS5xdWVyeS5ibG9ja3M7XG5cdFx0fVxuXHRcdC8vIENhY2hlIHJlc3BvbnNlLCB1c2VkIHdoZW4gdG9nZ2xpbmcgLzY0IGJsb2Nrc1xuXHRcdFR3aW5rbGUuYmxvY2suZmV0Y2hlZERhdGFbdXNlcmluZm8ubmFtZV0gPSBkYXRhO1xuXHRcdFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkID0gISF1c2VyaW5mby51c2VyaWQ7XG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkKSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCA9XG5cdFx0XHRcdCEhdXNlcmluZm8uZ3JvdXBtZW1iZXJzaGlwcyAmJlxuXHRcdFx0XHR1c2VyaW5mby5ncm91cG1lbWJlcnNoaXBzXG5cdFx0XHRcdFx0Lm1hcCgoZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUuZ3JvdXA7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuaW5jbHVkZXMoJ2JvdCcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2lua2xlLmJsb2NrLnVzZXJJc0JvdCA9IGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoYmxvY2tpbmZvKSB7XG5cdFx0XHQvLyBoYW5kbGUgZnJ1c3RyYXRpbmcgc3lzdGVtIG9mIGludmVydGVkIGJvb2xlYW4gdmFsdWVzXG5cdFx0XHRibG9ja2luZm8uZGlzYWJsZXRhbGsgPSBibG9ja2luZm8uYWxsb3d1c2VydGFsayA9PT0gdW5kZWZpbmVkO1xuXHRcdFx0YmxvY2tpbmZvLmhhcmRibG9jayA9IGJsb2NraW5mby5hbm9ub25seSA9PT0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHQvLyB3aWxsIHVuZGVmaW5lIGlmIG5vIGJsb2NrcyBwcmVzZW50XG5cdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvID0gYmxvY2tpbmZvO1xuXHRcdGJsb2NrZWRVc2VyTmFtZSA9IFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbyAmJiBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8udXNlcjtcblx0XHQvLyBTZW1pLWJ1c3RlZCBvbiByYW5nZXMuXG5cdFx0Ly8gQmFzaWNhbGx5LCBsb2dldmVudHMgZG9lc24ndCB0cmVhdCBmdW5jdGlvbmFsbHktZXF1aXZhbGVudCByYW5nZXNcblx0XHQvLyBhcyBlcXVpdmFsZW50LCBtZWFuaW5nIGFueSBmdW5jdGlvbmFsbHktZXF1aXZhbGVudCBJUCByYW5nZSBpc1xuXHRcdC8vIG1pc2ludGVycHJldGVkIGJ5IHRoZSBsb2cgdGhyb3VnaG91dC4gIFdpdGhvdXQgbG9nZXZlbnRzXG5cdFx0Ly8gcmVkaXJlY3RpbmcgKGxpa2UgU3BlY2lhbDpCbG9jayBkb2VzKSB3ZSB3b3VsZCBuZWVkIGEgZnVuY3Rpb24gdG9cblx0XHQvLyBwYXJzZSByYW5nZXMsIHdoaWNoIGlzIGEgcGFpbi4gIElQVXRpbHMgaGFzIHRoZSBjb2RlLCBidXQgaXQnZCBiZSBhXG5cdFx0Ly8gbG90IG9mIGNydWZ0IGZvciBvbmUgcHVycG9zZS5cblx0XHRUd2lua2xlLmJsb2NrLmhhc0Jsb2NrTG9nID0gISFkYXRhLnF1ZXJ5LmxvZ2V2ZW50cy5sZW5ndGg7XG5cdFx0VHdpbmtsZS5ibG9jay5ibG9ja0xvZyA9IFR3aW5rbGUuYmxvY2suaGFzQmxvY2tMb2cgJiYgZGF0YS5xdWVyeS5sb2dldmVudHM7XG5cdFx0Ly8gVXNlZCBsYXRlciB0byBjaGVjayBpZiBibG9jayBzdGF0dXMgY2hhbmdlZCB3aGlsZSBmaWxsaW5nIG91dCB0aGUgZm9ybVxuXHRcdFR3aW5rbGUuYmxvY2suYmxvY2tMb2dJZCA9IFR3aW5rbGUuYmxvY2suaGFzQmxvY2tMb2cgPyBkYXRhLnF1ZXJ5LmxvZ2V2ZW50c1swXS5sb2dpZCA6IGZhbHNlO1xuXHRcdGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJldHVybiBmbigpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5mZXRjaFVzZXJJbmZvID0gKGZuKSA9PiB7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdGxpc3Q6ICdibG9ja3N8dXNlcnN8bG9nZXZlbnRzJyxcblx0XHRcdGxldHlwZTogJ2Jsb2NrJyxcblx0XHRcdGxlbGltaXQ6IDIsXG5cdFx0XHRsZXRpdGxlOiBgVXNlcjoke3JlbGV2YW50VXNlck5hbWV9YCxcblx0XHRcdGJrcHJvcDogJ2V4cGlyeXxyZWFzb258ZmxhZ3N8cmVzdHJpY3Rpb25zfHJhbmdlfHVzZXInLFxuXHRcdFx0dXN1c2VyczogcmVsZXZhbnRVc2VyTmFtZSxcblx0XHR9O1xuXHRcdC8vIGJrdXNlcnMgZG9lc24ndCBjYXRjaCBzaW5nbGUgSVBzIGJsb2NrZWQgYXMgcGFydCBvZiBhIHJhbmdlIGJsb2NrXG5cdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MocmVsZXZhbnRVc2VyTmFtZSwgdHJ1ZSkpIHtcblx0XHRcdHF1ZXJ5LmJraXAgPSByZWxldmFudFVzZXJOYW1lO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5ia3VzZXJzID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRcdC8vIGdyb3VwbWVtYmVyc2hpcHMgb25seSByZWxldmFudCBmb3IgcmVnaXN0ZXJlZCB1c2Vyc1xuXHRcdFx0cXVlcnkudXNwcm9wID0gJ2dyb3VwbWVtYmVyc2hpcHMnO1xuXHRcdH1cblx0XHR2b2lkIGFwaS5nZXQocXVlcnkpLnRoZW4oXG5cdFx0XHQoZGF0YSkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLnByb2Nlc3NVc2VySW5mbyhkYXRhLCBmbik7XG5cdFx0XHR9LFxuXHRcdFx0KGVycm9yKSA9PiB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiY3VycmVudGJsb2NrXCJdIHNwYW4nKS5sYXN0KClbMF0pO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybih3aW5kb3cud2dVTFMoJ+aKk+WPlueUqOaIt+S/oeaBr+WHuumUmScsICfmipPlj5bkvb/nlKjogIXos4foqIrlh7rpjK8nKSwgZXJyb3IpO1xuXHRcdFx0fVxuXHRcdCk7XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0ID0gKGZpZWxkc2V0KSA9PiB7XG5cdFx0VHdpbmtsZS5ibG9ja1skKGZpZWxkc2V0KS5wcm9wKCduYW1lJyldID0ge307XG5cdFx0Zm9yIChjb25zdCBlbCBvZiAkKGZpZWxkc2V0KS5zZXJpYWxpemVBcnJheSgpKSB7XG5cdFx0XHQvLyBuYW1lc3BhY2VzIGFuZCBwYWdlcyBmb3IgcGFydGlhbCBibG9ja3MgYXJlIG92ZXJ3cml0dGVuXG5cdFx0XHQvLyBoZXJlLCBidXQgd2UncmUgaGFuZGxpbmcgdGhlbSBlbHNld2hlcmUgc28gdGhhdCdzIGZpbmVcblx0XHRcdFR3aW5rbGUuYmxvY2tbJChmaWVsZHNldCkucHJvcCgnbmFtZScpXVtlbC5uYW1lXSA9IGVsLnZhbHVlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfYmxvY2s2NCA9IChlKSA9PiB7XG5cdFx0Y29uc3QgJGZvcm0gPSAkKGUudGFyZ2V0LmZvcm0pO1xuXHRcdGNvbnN0ICRibG9jazY0ID0gJGZvcm0uZmluZCgnW25hbWU9YmxvY2s2NF0nKTtcblx0XHQvLyBTaG93L2hpZGUgYmxvY2s2NCBidXR0b25cblx0XHQvLyBTaW5nbGUgSVB2Niwgb3IgSVB2NiByYW5nZSBzbWFsbGVyIHRoYW4gYSAvNjRcblx0XHRjb25zdCBwcmlvck5hbWUgPSByZWxldmFudFVzZXJOYW1lO1xuXHRcdGlmICgkYmxvY2s2NC5pcygnOmNoZWNrZWQnKSkge1xuXHRcdFx0cmVsZXZhbnRVc2VyTmFtZSA9IE1vcmViaXRzLmlwLmdldDY0KG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVsZXZhbnRVc2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdH1cblx0XHQvLyBObyB0ZW1wbGF0ZXMgZm9yIHJhbmdlcywgYnV0IGlmIHRoZSBvcmlnaW5hbCB1c2VyIGlzIGEgc2luZ2xlIElQLCBvZmZlciB0aGUgb3B0aW9uXG5cdFx0Ly8gKGRvbmUgc2VwYXJhdGVseSBpbiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmlzc3VlX3RlbXBsYXRlKVxuXHRcdGNvbnN0IG9yaWdpbmFsSXNSYW5nZSA9IE1vcmViaXRzLmlwLmlzUmFuZ2UobXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJykpO1xuXHRcdCRmb3JtXG5cdFx0XHQuZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGVtcGxhdGVdJylcblx0XHRcdC5wcm9wKCdkaXNhYmxlZCcsIG9yaWdpbmFsSXNSYW5nZSlcblx0XHRcdC5wcm9wKCdjaGVja2VkJywgIW9yaWdpbmFsSXNSYW5nZSk7XG5cdFx0Ly8gUmVmZXRjaC9yZXByb2Nlc3MgdXNlciBpbmZvIHRoZW4gcmVnZW5lcmF0ZSB0aGUgbWFpbiBjb250ZW50XG5cdFx0Y29uc3QgcmVnZW5lcmF0ZUZvcm0gPSAoKSA9PiB7XG5cdFx0XHQvLyBUd2VhayB0aXRsZWJhciB0ZXh0LiAgSW4gdGhlb3J5LCB3ZSBjb3VsZCBzYXZlIHRoZSBkaWFsb2dcblx0XHRcdC8vIGF0IGluaXRpYWxpemF0aW9uIGFuZCB0aGVuIHVzZSBgLnNldFRpdGxlYCBvclxuXHRcdFx0Ly8gYGRpYWxvZygnb3B0aW9uJywgJ3RpdGxlJylgLCBidXQgaW4gcHJhY3RpY2UgdGhhdCBzd2FsbG93c1xuXHRcdFx0Ly8gdGhlIHNjcmlwdE5hbWUgYW5kIHJlcXVpcmVzIGAuZGlzcGxheWBpbmcsIHdoaWNoIGp1bXBzIHRoZVxuXHRcdFx0Ly8gd2luZG93LiAgSXQncyBqdXN0IGEgbGluZSBvZiB0ZXh0LCBzbyB0aGlzIGlzIGZpbmUuXG5cdFx0XHRjb25zdCB0aXRsZUJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy51aS1kaWFsb2ctdGl0bGUnKS5maXJzdENoaWxkLm5leHRTaWJsaW5nO1xuXHRcdFx0dGl0bGVCYXIubm9kZVZhbHVlID0gdGl0bGVCYXIubm9kZVZhbHVlLnJlcGxhY2UocHJpb3JOYW1lLCByZWxldmFudFVzZXJOYW1lKTtcblx0XHRcdC8vIENvcnJlY3QgcGFydGlhbCBzdGF0ZVxuXHRcdFx0JGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cGFydGlhbF0nKS5wcm9wKCdjaGVja2VkJywgVHdpbmtsZS5nZXRQcmVmKCdkZWZhdWx0VG9QYXJ0aWFsQmxvY2tzJykpO1xuXHRcdFx0aWYgKGJsb2NrZWRVc2VyTmFtZSA9PT0gcmVsZXZhbnRVc2VyTmFtZSkge1xuXHRcdFx0XHQkZm9ybVxuXHRcdFx0XHRcdC5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpXG5cdFx0XHRcdFx0LnByb3AoJ2NoZWNrZWQnLCBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJycpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gU2V0IGNvbnRlbnQgYXBwcm9wcmlhdGVseVxuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfYWN0aW9uKGUpO1xuXHRcdH07XG5cdFx0aWYgKFR3aW5rbGUuYmxvY2suZmV0Y2hlZERhdGFbcmVsZXZhbnRVc2VyTmFtZV0pIHtcblx0XHRcdFR3aW5rbGUuYmxvY2sucHJvY2Vzc1VzZXJJbmZvKFR3aW5rbGUuYmxvY2suZmV0Y2hlZERhdGFbcmVsZXZhbnRVc2VyTmFtZV0sIHJlZ2VuZXJhdGVGb3JtKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5mZXRjaFVzZXJJbmZvKHJlZ2VuZXJhdGVGb3JtKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX2FjdGlvbiA9IChlKSA9PiB7XG5cdFx0bGV0IGZpZWxkX3ByZXNldDtcblx0XHRsZXQgZmllbGRfdGVtcGxhdGVfb3B0aW9ucztcblx0XHRsZXQgZmllbGRfYmxvY2tfb3B0aW9ucztcblx0XHRsZXQgZmllbGRfdGFnX29wdGlvbnM7XG5cdFx0bGV0IGZpZWxkX3VuYmxvY2tfb3B0aW9ucztcblx0XHRjb25zdCAkZm9ybSA9ICQoZS50YXJnZXQuZm9ybSk7XG5cdFx0Ly8gTWFrZSBpZnMgc2hvcnRlclxuXHRcdGNvbnN0ICRibG9jayA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPWJsb2NrXScpO1xuXHRcdGxldCBibG9ja0JveCA9ICRibG9jay5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCAkdGVtcGxhdGUgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT10ZW1wbGF0ZV0nKTtcblx0XHRsZXQgdGVtcGxhdGVCb3ggPSAkdGVtcGxhdGUuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgJHRhZyA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXRhZ10nKTtcblx0XHRjb25zdCB0YWdCb3ggPSAkdGFnLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0ICRwcm90ZWN0ID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cHJvdGVjdF0nKTtcblx0XHRjb25zdCAkcGFydGlhbCA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXBhcnRpYWxdJyk7XG5cdFx0Y29uc3QgcGFydGlhbEJveCA9ICRwYXJ0aWFsLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0ICR1bmJsb2NrID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dW5ibG9ja10nKTtcblx0XHRjb25zdCB1bmJsb2NrQm94ID0gJHVuYmxvY2suaXMoJzpjaGVja2VkJyk7XG5cdFx0bGV0IGJsb2NrR3JvdXAgPSBwYXJ0aWFsQm94ID8gVHdpbmtsZS5ibG9jay5ibG9ja0dyb3Vwc1BhcnRpYWwgOiBUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzO1xuXHRcdGlmIChlLnRhcmdldC52YWx1ZSA9PT0gJ3VuYmxvY2snKSB7XG5cdFx0XHRpZiAoIVR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mbykge1xuXHRcdFx0XHQkdW5ibG9jay5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+eUqOaIt+ayoeacieiiq+WwgeemgScsICfkvb/nlKjogIXmspLmnInooqvlsIHpjpYnKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0JGJsb2NrLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRibG9ja0JveCA9IGZhbHNlO1xuXHRcdFx0JHRlbXBsYXRlLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHR0ZW1wbGF0ZUJveCA9IGZhbHNlO1xuXHRcdFx0JHRhZy5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0JHByb3RlY3QucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHRcdCRwYXJ0aWFsLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCR1bmJsb2NrLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0fVxuXHRcdCRwYXJ0aWFsLnByb3AoJ2Rpc2FibGVkJywgIWJsb2NrQm94ICYmICF0ZW1wbGF0ZUJveCk7XG5cdFx0Ly8gQWRkIGN1cnJlbnQgYmxvY2sgcGFyYW1ldGVycyBhcyBkZWZhdWx0IHByZXNldFxuXHRcdGNvbnN0IHByaW9yID0ge1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b2T5YmN5bCB56aBJywgJ+ebruWJjeWwgemOlicpLFxuXHRcdH07XG5cdFx0aWYgKGJsb2NrZWRVc2VyTmFtZSA9PT0gcmVsZXZhbnRVc2VyTmFtZSkge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvLnByaW9yID0gVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvO1xuXHRcdFx0Ly8gdmFsdWUgbm90IGEgdmFsaWQgdGVtcGxhdGUgc2VsZWN0aW9uLCBjaG9zZW4gYmVsb3cgYnkgc2V0dGluZyB0ZW1wbGF0ZU5hbWVcblx0XHRcdHByaW9yLmxpc3QgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflvZPliY3lsIHnpoHorr7nva4nLCAn55uu5YmN5bCB6Y6W6Kit5a6aJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcmlvcicsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdFx0Ly8gQXJyYXlzIG9mIG9iamVjdHMgYXJlIGFubm95aW5nIHRvIGNoZWNrXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFibG9ja0dyb3VwLnNvbWUoKGJnKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGJnLmxhYmVsID09PSBwcmlvci5sYWJlbDtcblx0XHRcdFx0fSlcblx0XHRcdCkge1xuXHRcdFx0XHRibG9ja0dyb3VwW2Jsb2NrR3JvdXAubGVuZ3RoXSA9IHByaW9yO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQWx3YXlzIGVuc3VyZSBwcm9wZXIgdGVtcGxhdGUgZXhpc3RzL2lzIHNlbGVjdGVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzXG5cdFx0XHRpZiAocGFydGlhbEJveCkge1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm8ucHJpb3IudGVtcGxhdGVOYW1lID0gTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoXG5cdFx0XHRcdFx0VHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeVxuXHRcdFx0XHQpXG5cdFx0XHRcdFx0PyAndXctcGJsb2NraW5kZWYnXG5cdFx0XHRcdFx0OiAndXctcGJsb2NrJztcblx0XHRcdH0gZWxzZSBpZiAoVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQpIHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvLnByaW9yLnRlbXBsYXRlTmFtZSA9IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KFxuXHRcdFx0XHRcdFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5leHBpcnlcblx0XHRcdFx0KVxuXHRcdFx0XHRcdD8gJ3V3LWJsb2NraW5kZWYnXG5cdFx0XHRcdFx0OiAndXctYmxvY2snO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvLnByaW9yLnRlbXBsYXRlTmFtZSA9ICd1dy1hYmxvY2snO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBCdXQgZmlyc3QgcmVtb3ZlIGFueSBwcmlvciBwcmlvclxuXHRcdFx0YmxvY2tHcm91cCA9IGJsb2NrR3JvdXAuZmlsdGVyKChiZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYmcubGFiZWwgIT09IHByaW9yLmxhYmVsO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRib2R5LmZpbmQoJ1tuYW1lPWZpZWxkX2Jsb2NrX29wdGlvbnNdJykpO1xuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRib2R5LmZpbmQoJ1tuYW1lPWZpZWxkX3RlbXBsYXRlX29wdGlvbnNdJykpO1xuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suc2F2ZUZpZWxkc2V0KCRib2R5LmZpbmQoJ1tuYW1lPWZpZWxkX3RhZ19vcHRpb25zXScpKTtcblx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCgkYm9keS5maW5kKCdbbmFtZT1maWVsZF91bmJsb2NrX29wdGlvbnNdJykpO1xuXHRcdGlmIChibG9ja0JveCkge1xuXHRcdFx0ZmllbGRfcHJlc2V0ID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6kJywgJ+mgkOiorScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfcHJlc2V0Jyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfcHJlc2V0LmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRuYW1lOiAncHJlc2V0Jyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup6buY6K6k77yaJywgJ+mBuOaTh+mgkOiore+8micpLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfcHJlc2V0LFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmZpbHRlcmVkX2Jsb2NrX2dyb3VwcyhibG9ja0dyb3VwKSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucyA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgemAiemhuScsICflsIHpjpbpgbjpoIUnKSxcblx0XHRcdFx0bmFtZTogJ2ZpZWxkX2Jsb2NrX29wdGlvbnMnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnY3VycmVudGJsb2NrJyxcblx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0bmFtZTogJ2hhc2Jsb2NrbG9nJyxcblx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0bmFtZTogJ2V4cGlyeV9wcmVzZXQnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov4fmnJ/ml7bpl7TvvJonLCAn6YGO5pyf5pmC6ZaT77yaJyksXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9leHBpcnksXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYknLCAn6Ieq6KiCJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnaW5maW5pdHknLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnM+Wwj+aXticsICcz5bCP5pmCJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzMgaG91cnMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMTLlsI/ml7YnLCAnMTLlsI/mmYInKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMTIgaG91cnMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcx5aSpJyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMSBkYXknLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMzHlsI/ml7YnLCAnMzHlsI/mmYInKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMzEgaG91cnMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcy5aSpJyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMiBkYXlzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiAnM+WkqScsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzMgZGF5cycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCcx5ZGoJywgJzHpgLEnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMSB3ZWVrJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzLlkagnLCAnMumAsScpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcyIHdlZWtzJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzHkuKrmnIgnLCAnMeWAi+aciCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcxIG1vbnRoJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzPkuKrmnIgnLCAnM+WAi+aciCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICczIG1vbnRocycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCc25Liq5pyIJywgJzblgIvmnIgnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnNiBtb250aHMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcx5bm0Jyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMSB5ZWFyJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiAnMuW5tCcsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJzIgeWVhcnMnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICcz5bm0Jyxcblx0XHRcdFx0XHRcdHZhbHVlOiAnMyB5ZWFycycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnZXhwaXJ5Jyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6L+H5pyf5pe26Ze0JywgJ+iHquiogumBjuacn+aZgumWkycpLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqOebuOWvueaXtumXtO+8jOWmguKAnDEgbWludXRl4oCd5oiW4oCcMTkgZGF5c+KAne+8m+aIlue7neWvueaXtumXtO+8jOKAnHl5eXltbWRkaGhtbeKAne+8iOWmguKAnDIwMDYwMjAxMTQwNeKAneaYrzIwMDblubQy5pyIMeaXpTE0OjA1IFVUQ+OAgu+8iScsXG5cdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqOebuOWwjeaZgumWk++8jOWmguOAjDEgbWludXRl44CN5oiW44CMMTkgZGF5c+OAje+8m+aIlue1leWwjeaZgumWk++8jOOAjHl5eXltbWRkaGhtbeOAje+8iOWmguOAjDIwMDYwMjAxMTQwNeOAjeaYrzIwMDblubQy5pyIMeaXpTE0OjA1IFVUQ+OAgu+8iSdcblx0XHRcdFx0KSxcblx0XHRcdFx0dmFsdWU6IFR3aW5rbGUuYmxvY2suZmllbGRfYmxvY2tfb3B0aW9ucy5leHBpcnkgfHwgVHdpbmtsZS5ibG9jay5maWVsZF90ZW1wbGF0ZV9vcHRpb25zLnRlbXBsYXRlX2V4cGlyeSxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKHBhcnRpYWxCb3gpIHtcblx0XHRcdFx0Ly8gUGFydGlhbCBibG9ja1xuXHRcdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2VyZXN0cmljdGlvbnMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mhtemdouWwgeemgScsICfpoIHpnaLlsIHpjpYnKSxcblx0XHRcdFx0XHR2YWx1ZTogJycsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmnIDlpJoxMOS4qumhtemdouOAgicsICfmnIDlpJoxMOWAi+mggemdouOAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgbnMgPSBmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdFx0bmFtZTogJ25hbWVzcGFjZXJlc3RyaWN0aW9ucycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZG95ZCN56m66Ze05bCB56aBJywgJ+WRveWQjeepuumWk+WwgemOlicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+aMh+WumuWwgeemgeeahOWRveWQjeepuumXtOOAgicsICfmjIflrprlsIHpjpbnmoTlkb3lkI3nqbrplpPjgIInKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvciAoY29uc3QgW251bWJlciwgbmFtZV0gb2YgT2JqZWN0LmVudHJpZXMobWVudUZvcm1hdHRlZE5hbWVzcGFjZXMpKSB7XG5cdFx0XHRcdFx0Ly8gSWdub3JlIC0xOiBTcGVjaWFsOyAtMjogTWVkaWE7IGFuZCAyMzAwLTIzMDM6IEdhZGdldCAodGFsaykgYW5kIEdhZGdldCBkZWZpbml0aW9uICh0YWxrKVxuXHRcdFx0XHRcdGlmIChudW1iZXIgPj0gMCAmJiBudW1iZXIgPCA4MzApIHtcblx0XHRcdFx0XHRcdG5zLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogbmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IG51bWJlcixcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYmxvY2tvcHRpb25zID0gW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zLm5vY3JlYXRlLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+emgeatouWIm+W7uui0puWPtycsICfnpoHmraLlu7rnq4vos6zomZ8nKSxcblx0XHRcdFx0XHRuYW1lOiAnbm9jcmVhdGUnLFxuXHRcdFx0XHRcdHZhbHVlOiAnMScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMubm9lbWFpbCxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlLXlrZDpgq7ku7blgZznlKgnLCAn6Zu75a2Q6YO15Lu25YGc55SoJyksXG5cdFx0XHRcdFx0bmFtZTogJ25vZW1haWwnLFxuXHRcdFx0XHRcdHZhbHVlOiAnMScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMuZGlzYWJsZXRhbGssXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LiN6IO957yW6L6R6Ieq5bex55qE6K6o6K666aG1JywgJ+S4jeiDvee3qOi8r+iHquW3seeahOiojuirlumggScpLFxuXHRcdFx0XHRcdG5hbWU6ICdkaXNhYmxldGFsaycsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0XHR0b29sdGlwOiBwYXJ0aWFsQm94XG5cdFx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6Iul5L2/55So6YOo5YiG5bCB56aB77yM5LiN5bqU6YCJ5oup5q2k6aG577yM6Zmk6Z2e5oKo5Lmf5oOz6KaB56aB5q2i57yW6L6R55So5oi36K6o6K666aG144CCJyxcblx0XHRcdFx0XHRcdFx0XHQn6Iul5L2/55So6YOo5YiG5bCB6Y6W77yM5LiN5oeJ6YG45pOH5q2k6aCF77yM6Zmk6Z2e5oKo5Lmf5oOz6KaB56aB5q2i57eo6Lyv5L2/55So6ICF6KiO6KuW6aCB44CCJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQ6ICcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XTtcblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmlzUmVnaXN0ZXJlZCkge1xuXHRcdFx0XHRibG9ja29wdGlvbnNbYmxvY2tvcHRpb25zLmxlbmd0aF0gPSB7XG5cdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zLmF1dG9ibG9jayxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rliqjlsIHnpoEnLCAn6Ieq5YuV5bCB6Y6WJyksXG5cdFx0XHRcdFx0bmFtZTogJ2F1dG9ibG9jaycsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJsb2Nrb3B0aW9uc1tibG9ja29wdGlvbnMubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMuaGFyZGJsb2NrLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mYu+atoueZu+W9leeUqOaIt+S9v+eUqOivpUlQ5Zyw5Z2A57yW6L6RJywgJ+mYu+atoueZu+WFpeS9v+eUqOiAheS9v+eUqOipsklQ5L2N5Z2A57eo6LyvJyksXG5cdFx0XHRcdFx0bmFtZTogJ2hhcmRibG9jaycsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGJsb2Nrb3B0aW9uc1tibG9ja29wdGlvbnMubGVuZ3RoXSA9XG5cdFx0XHRcdCh7XG5cdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5ibG9jay5maWVsZF9ibG9ja19vcHRpb25zLndhdGNodXNlcixcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnm5Hop4bor6XnlKjmiLfnmoTnlKjmiLfpobXlkozorqjorrrpobUnLCAn55uj6KaW6Kmy5L2/55So6ICF55qE5L2/55So6ICF6aCB6Z2i5ZKM6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNodXNlcicsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5b2T5YmN55qE56C05Z2P5Lit55qE6K+35rGCJywgJ+aomeiomOeVtuWJjeeahOegtOWjnuS4reeahOiri+axgicpLFxuXHRcdFx0XHRcdG5hbWU6ICdjbG9zZXZpcCcsXG5cdFx0XHRcdFx0dmFsdWU6ICcxJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdibG9ja29wdGlvbnMnLFxuXHRcdFx0XHRsaXN0OiBibG9ja29wdGlvbnMsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55CG55Sx77yI55So5LqO5bCB56aB5pel5b+X77yJ77yaJywgJ+eQhueUse+8iOeUqOaWvOWwgemOluaXpeiqjO+8ie+8micpLFxuXHRcdFx0XHRuYW1lOiAncmVhc29uJyxcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfor7fogIPomZHlnKjpu5jorqTnmoTmtojmga/kuK3liqDlhaXmnInnlKjnmoTor6bnu4bkv6Hmga/jgIInLFxuXHRcdFx0XHRcdCfoq4vogIPmha7lnKjpoJDoqK3nmoToqIrmga/kuK3liqDlhaXmnInnlKjnmoToqbPntLDos4foqIrjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnMucmVhc29uLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnZmlsZXJsb2dfbGFiZWwnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj4Lop4HvvJonLCAn5Y+D6KaL77yaJyksXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zdHlsZTpub3JtYWwgIWltcG9ydGFudCcsXG5cdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5Zyo5bCB56aB55CG55Sx5Lit5qCH5riF54m55q6K5oOF5Ya15Lul5L6b5YW25LuW566h55CG5ZGY5Y+C6ICDJyxcblx0XHRcdFx0XHQn5Zyo5bCB6Y6W55CG55Sx5Lit5qiZ5riF54m55q6K5oOF5rOB5Lul5L6b5YW25LuW566h55CG5ZOh5Y+D6ICDJ1xuXHRcdFx0XHQpLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF9ibG9ja19vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdmaWx0ZXJfc2VlX2Fsc28nLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6NXB4Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+i/h+a7pOWZqOaXpeW/lycsICfpgY7mv77lmajml6XoqownKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn6L+H5ruk5Zmo5pel5b+XJywgJ+mBjua/vuWZqOaXpeiqjCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2RlbGV0ZWRfc2VlX2Fsc28nLFxuXHRcdFx0XHRldmVudDogVHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6NXB4Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suWIoOmZpOeahOe8lui+kScsICflt7LliKrpmaTnmoTnt6jovK8nKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn5bey5Yig6Zmk55qE57yW6L6RJywgJ+W3suWIqumZpOeahOe3qOi8rycpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX2Jsb2NrX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2ZpbHRlcl9zZWVfYWxzbycsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnRvZ2dsZV9zZWVfYWxzb3MsXG5cdFx0XHRcdHN0eWxlOiAnZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1yaWdodDo1cHgnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5oi36K6o6K666aG1JywgJ+S9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogZmFsc2UsXG5cdFx0XHRcdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCfnlKjmiLforqjorrrpobUnLCAn5L2/55So6ICF6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAnZmlsdGVyX3NlZV9hbHNvJyxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudG9nZ2xlX3NlZV9hbHNvcyxcblx0XHRcdFx0c3R5bGU6ICdkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luLXJpZ2h0OjVweCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfov4fljrvnmoTlsIHnpoHorrDlvZUnLCAn6YGO5Y6755qE5bCB6Y6W6KiY6YyEJyksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+i/h+WOu+eahOWwgeemgeiusOW9lScsICfpgY7ljrvnmoTlsIHpjpboqJjpjIQnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0XHQvLyBZZXQtYW5vdGhlci1sb2dldmVudHMtZG9lc24ndC1oYW5kbGUtcmFuZ2VzLXdlbGxcblx0XHRcdGlmIChibG9ja2VkVXNlck5hbWUgPT09IHJlbGV2YW50VXNlck5hbWUpIHtcblx0XHRcdFx0ZmllbGRfYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoaWRkZW4nLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWJsb2NrJyxcblx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHRlbXBsYXRlQm94KSB7XG5cdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qih5p2/6YCJ6aG5JywgJ+aooeadv+mBuOmghScpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfdGVtcGxhdGVfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdG5hbWU6ICd0ZW1wbGF0ZScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqeiuqOiuuumhteaooeadv++8micsICfpgbjmk4foqI7oq5bpoIHmqKHmnb/vvJonKSxcblx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlLFxuXHRcdFx0XHRsaXN0OiBUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmZpbHRlcmVkX2Jsb2NrX2dyb3VwcyhibG9ja0dyb3VwLCB0cnVlKSxcblx0XHRcdFx0dmFsdWU6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy50ZW1wbGF0ZSxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnYXJ0aWNsZScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mTvuaOpemhtemdoicsICfpgKPntZDpoIHpnaInKSxcblx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+WPr+S7pemaj+mAmuefpemTvuaOpemhtemdou+8jOS+i+WmguegtOWdj+eahOebruagh+OAguayoeacieadoeebrumcgOimgemTvuaOpeWImeivt+eVmeepuuOAgicsXG5cdFx0XHRcdFx0J+WPr+S7pemaqOmAmuefpemAo+e1kOmggemdou+8jOS+i+WmguegtOWjnueahOebruaomeOAguaykuacieaineebrumcgOimgemAo+e1kOWJh+iri+eVmeepuuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0Ly8gT25seSB2aXNpYmxlIGlmIHBhcnRpYWwgYW5kIG5vdCBibG9ja2luZ1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRuYW1lOiAnYXJlYScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwgeemgeiMg+WbtCcsICflsIHpjpbnr4TlnI0nKSxcblx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+mYu+atoueUqOaIt+e8lui+keeahOmhtemdouaIluWRveWQjeepuumXtOeahOWPr+mAieivtOaYjuOAgicsXG5cdFx0XHRcdFx0J+mYu+atouS9v+eUqOiAhee3qOi8r+eahOmggemdouaIluWRveWQjeepuumWk+eahOWPr+mBuOiqquaYjuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKCFibG9ja0JveCkge1xuXHRcdFx0XHRmaWVsZF90ZW1wbGF0ZV9vcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAndGVtcGxhdGVfZXhwaXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogJ+Wwgeemgeacn+mZkO+8micsXG5cdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5bCB56aB5pe26ZW/77yM5aaCMjTlsI/ml7bjgIEy5ZGo44CB5peg6ZmQ5pyf562J44CCJywgJ+WwgemOluaZgumVt++8jOWmgjI05bCP5pmC44CBMumAseOAgeeEoemZkOacn+etieOAgicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bmFtZTogJ2Jsb2NrX3JlYXNvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+KAnOeUseS6juKApuKApuaCqOW3suiiq+WwgeemgeKAnScsICfjgIznlLHmlrzigKbigKbmgqjlt7LooqvlsIHpjpbjgI0nKSxcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCflj6/pgInnmoTnkIbnlLHvvIznlKjkuo7mm7/mjaLpu5jorqTnkIbnlLHjgILlj6rlnKjluLjop4TlsIHnpoHmqKHmnb/kuK3mnInmlYjjgIInLFxuXHRcdFx0XHRcdCflj6/pgbjnmoTnkIbnlLHvvIznlKjmlrzmm7/mj5vpoJDoqK3nkIbnlLHjgILlj6rlnKjluLjopo/lsIHpjpbmqKHmnb/kuK3mnInmlYjjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHZhbHVlOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYmxvY2tfcmVhc29uLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0pO1xuXHRcdFx0aWYgKGJsb2NrQm94KSB7XG5cdFx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdG5hbWU6ICdibGFua19kdXJhdGlvbicsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3lnKjmqKHmnb/kuK3ljIXlkKvlsIHnpoHmnJ/pmZAnLCAn5LiN5Zyo5qih5p2/5Lit5YyF5ZCr5bCB6Y6W5pyf6ZmQJyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ibGFua19kdXJhdGlvbixcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmqKHmnb/lsIbkvJrmmL7npLrigJzkuIDmrrXml7bpl7TigJ3ogIzkuI3mmK/lhbfkvZPml7bplb8nLFxuXHRcdFx0XHRcdFx0XHRcdCfmqKHmnb/lsIfmnIPpoa/npLrjgIzkuIDmrrXmmYLplpPjgI3ogIzkuI3mmK/lhbfpq5TmmYLplbcnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73nvJbovpHoh6rlt7HnmoTorqjorrrpobUnLCAn5LiN6IO957eo6Lyv6Ieq5bex55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub3RhbGsnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm90YWxrLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOatpOWcqOWwgeemgeaooeadv+S4reaMh+aYjuivpeeUqOaIt+e8lui+keiuqOiuuumhteeahOadg+mZkOW3suiiq+enu+mZpCcsXG5cdFx0XHRcdFx0XHRcdFx0J+eUqOatpOWcqOWwgemOluaooeadv+S4reaMh+aYjuipsuS9v+eUqOiAhee3qOi8r+iojuirlumggeeahOasiumZkOW3suiiq+enu+mZpCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S4jeiDveWPkemAgeeUteWtkOmCruS7ticsICfkuI3og73lgrPpgIHpm7vlrZDpg7Xku7YnKSxcblx0XHRcdFx0XHRcdFx0bmFtZTogJ25vZW1haWxfdGVtcGxhdGUnLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiBUd2lua2xlLmJsb2NrLmZpZWxkX3RlbXBsYXRlX29wdGlvbnMubm9lbWFpbF90ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHnpoHmqKHmnb/kuK3mjIfmmI7or6XnlKjmiLflj5HpgIHnlLXlrZDpgq7ku7bnmoTmnYPpmZDlt7Looqvnp7vpmaQnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHpjpbmqKHmnb/kuK3mjIfmmI7oqbLkvb/nlKjogIXlgrPpgIHpm7vlrZDpg7Xku7bnmoTmrIrpmZDlt7Looqvnp7vpmaQnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuI3og73liJvlu7rotKblj7cnLCAn5LiN6IO95bu656uL6LOs6JmfJyksXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub2NyZWF0ZV90ZW1wbGF0ZScsXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub2NyZWF0ZV90ZW1wbGF0ZSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHnpoHmqKHmnb/kuK3mjIfmmI7or6XnlKjmiLfliJvlu7rotKblj7fnmoTmnYPpmZDlt7Looqvnp7vpmaQnLFxuXHRcdFx0XHRcdFx0XHRcdCfnlKjmraTlnKjlsIHpjpbmqKHmnb/kuK3mjIfmmI7oqbLkvb/nlKjogIXlu7rnq4vos6zomZ/nmoTmrIrpmZDlt7Looqvnp7vpmaQnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgJHByZXZpZXdsaW5rID0gJCgnPGE+JykuYXR0cignaWQnLCAndHdpbmtsZWJsb2NrLXByZXZpZXctbGluaycpLnRleHQod2luZG93LndnVUxTKCfpooTop4gnLCAn6aCQ6Ka9JykpO1xuXHRcdFx0JHByZXZpZXdsaW5rLm9mZignY2xpY2snKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sucHJldmlldygkZm9ybVswXSk7XG5cdFx0XHR9KTtcblx0XHRcdCRwcmV2aWV3bGluay5jc3Moe1xuXHRcdFx0XHRjdXJzb3I6ICdwb2ludGVyJyxcblx0XHRcdH0pO1xuXHRcdFx0ZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0aWQ6ICdibG9ja3ByZXZpZXcnLFxuXHRcdFx0XHRsYWJlbDogWyRwcmV2aWV3bGlua1swXV0sXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3RlbXBsYXRlX29wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdGlkOiAndHdpbmtsZWJsb2NrLXByZXZpZXdib3gnLFxuXHRcdFx0XHRzdHlsZTogJ2Rpc3BsYXk6IG5vbmUnLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmICh0YWdCb3gpIHtcblx0XHRcdGZpZWxkX3RhZ19vcHRpb25zID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w55So5oi36aG1JywgJ+aomeiomOS9v+eUqOiAhemggemdoicpLFxuXHRcdFx0XHRuYW1lOiAnZmllbGRfdGFnX29wdGlvbnMnLFxuXHRcdFx0fSk7XG5cdFx0XHRmaWVsZF90YWdfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRuYW1lOiAndGFnJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup55So5oi36aG15qih5p2/77yaJywgJ+mBuOaTh+S9v+eUqOiAhemggemdouaooeadv++8micpLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IGB7e0Jsb2NrZWQgdXNlcn1977yaJHt3aW5kb3cud2dVTFMoJ+S4gOiIrOawuOS5heWwgeemgScsICfkuIDoiKzmsLjkuYXlsIHpjpYnKX1gLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdCbG9ja2VkIHVzZXInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IGB7e1NvY2twdXBwZXR9fe+8miR7d2luZG93LndnVUxTKCflgoDlhKHotKblj7cnLCAn5YKA5YSh6LOs6JmfJyl9YCxcblx0XHRcdFx0XHRcdHZhbHVlOiAnU29ja3B1cHBldCcsXG5cdFx0XHRcdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3NwcFVzZXJuYW1lJyxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S4u+i0puWPt+eUqOaIt+WQje+8micsICfkuLvos6zomZ/kvb/nlKjogIXlkI3nqLHvvJonKSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzcHBUeXBlJyxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnirbmgIHvvJonLCAn54uA5oWL77yaJyksXG5cdFx0XHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdibG9ja2VkJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGBibG9ja2VkIC0gJHt3aW5kb3cud2dVTFMoJ+S7heS+neihjOS4uuivgeaNruiupOWumicsICflg4Xkvp3ooYzngrrorYnmk5roqo3lrponKX1gLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3Byb3ZlbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBgcHJvdmVuIC0gJHt3aW5kb3cud2dVTFMoJ+e7j+WCgOWEoeiwg+afpeehruiupCcsICfntpPlgoDlhKHoqr/mn6Xnorroqo0nKX1gLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnY29uZmlybWVkJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGBjb25maXJtZWQgLSAke3dpbmRvdy53Z1VMUygn57uP5p+l5qC456Gu6K6kJywgJ+e2k+afpeaguOeiuuiqjScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnc3BwRXZpZGVuY2UnLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qC55o2u4oCm4oCm56Gu5a6a77yaJywgJ+agueaTmuKApuKApueiuuWumu+8micpLFxuXHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfnuq/mloflrZfmiJbmmK/luKZbW11d55qE6ZO+5o6l77yM5L6L5aaC77yaW1tTcGVjaWFsOuWbuuWumumTvuaOpS94eHh4eHh4eHznlKjmiLfmn6XmoLhdXScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn57SU5paH5a2X5oiW5piv5bi2W1tdXeeahOmAo+e1kO+8jOS+i+Wmgu+8mltbU3BlY2lhbDrlm7rlrprpk77mjqUveHh4eHh4eHh855So5oi25p+l5qC4XV0nXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogYHt7U29ja3B1cHBldGVlcnxibG9ja2VkfX3vvJoke3dpbmRvdy53Z1VMUygn5YKA5YSh5Li76LSm5Y+3JywgJ+WCgOWEoeS4u+izrOiZnycpfWAsXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ1NvY2twdXBwZXRlZXInLFxuXHRcdFx0XHRcdFx0c3ViZ3JvdXA6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnc3BtQ2hlY2tlZCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnc3BtQ2hlY2tlZCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e7j+eUqOaIt+afpeaguOehruiupCcsICfntpPkvb/nlKjogIXmn6XmoLjnorroqo0nKSxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzcG1FdmlkZW5jZScsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpop3lpJbnkIbnlLHvvJonLCAn6aGN5aSW55CG55Sx77yaJyksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKHVuYmxvY2tCb3gpIHtcblx0XHRcdGZpZWxkX3VuYmxvY2tfb3B0aW9ucyA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ino+mZpOWwgeemgemAiemhuScsICfop6PpmaTlsIHpjpbpgbjpoIUnKSxcblx0XHRcdFx0bmFtZTogJ2ZpZWxkX3VuYmxvY2tfb3B0aW9ucycsXG5cdFx0XHR9KTtcblx0XHRcdGZpZWxkX3VuYmxvY2tfb3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnkIbnlLHvvIjnlKjkuo7lsIHnpoHml6Xlv5fvvInvvJonLCAn55CG55Sx77yI55So5pa85bCB6Y6W5pel6KqM77yJ77yaJyksXG5cdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHR2YWx1ZTogVHdpbmtsZS5ibG9jay5maWVsZF91bmJsb2NrX29wdGlvbnMucmVhc29uLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGxldCBvbGRmaWVsZDtcblx0XHRpZiAoZmllbGRfcHJlc2V0KSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3ByZXNldFwiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfcHJlc2V0LnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF9wcmVzZXRcIl0nKS5oaWRlKCk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZF9ibG9ja19vcHRpb25zKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX2Jsb2NrX29wdGlvbnNcIl0nKTtcblx0XHRcdG9sZGZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZpZWxkX2Jsb2NrX29wdGlvbnMucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF82NFwiXScpLnNob3coKTtcblx0XHRcdCRmb3JtLmZpbmQoJ1tuYW1lPXBhZ2VyZXN0cmljdGlvbnNdJykuc2VsZWN0Mih7XG5cdFx0XHRcdHdpZHRoOiAnMTAwJScsXG5cdFx0XHRcdHBsYWNlaG9sZGVyOiB3aW5kb3cud2dVTFMoJ+i+k+WFpeimgemYu+atoueUqOaIt+e8lui+keeahOmhtemdoicsICfovLjlhaXopoHpmLvmraLkvb/nlKjogIXnt6jovK/nmoTpoIHpnaInKSxcblx0XHRcdFx0bGFuZ3VhZ2U6IHtcblx0XHRcdFx0XHRlcnJvckxvYWRpbmc6ICgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cud2dVTFMoJ+aQnOe0ouivjeaxh+S4jeWujOaVtOaIluaXoOaViCcsICfmkJzlsIvoqZ7lvZnkuI3lrozmlbTmiJbnhKHmlYgnKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoOiAxMCxcblx0XHRcdFx0bWluaW11bUlucHV0TGVuZ3RoOiAxLFxuXHRcdFx0XHRhamF4OiB7XG5cdFx0XHRcdFx0dXJsOiBtdy51dGlsLndpa2lTY3JpcHQoJ2FwaScpLFxuXHRcdFx0XHRcdGRhdGFUeXBlOiAnanNvbicsXG5cdFx0XHRcdFx0ZGVsYXk6IDEwMCxcblx0XHRcdFx0XHRkYXRhOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCB0aXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhcmFtcy50ZXJtKTtcblx0XHRcdFx0XHRcdGlmICghdGl0bGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdFx0XHRcdFx0bGlzdDogJ2FsbHBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0YXBmcm9tOiB0aXRsZS50aXRsZSxcblx0XHRcdFx0XHRcdFx0YXBuYW1lc3BhY2U6IHRpdGxlLm5hbWVzcGFjZSxcblx0XHRcdFx0XHRcdFx0YXBsaW1pdDogJzEwJyxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwcm9jZXNzUmVzdWx0czogKGRhdGEpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdHM6IGRhdGEucXVlcnkuYWxscGFnZXMubWFwKChwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYWdlLnRpdGxlLCBwYWdlLm5zKS50b1RleHQoKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWQ6IHRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGV4dDogdGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRlbXBsYXRlU2VsZWN0aW9uOiAoY2hvaWNlKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuICQoJzxhPicpXG5cdFx0XHRcdFx0XHQudGV4dChjaG9pY2UudGV4dClcblx0XHRcdFx0XHRcdC5hdHRyKHtcblx0XHRcdFx0XHRcdFx0aHJlZjogbXcudXRpbC5nZXRVcmwoY2hvaWNlLnRleHQpLFxuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0XHRyZWw6ICdub29wZW5lciBub3JlZmVycmVyJyxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9LFxuXHRcdFx0fSk7XG5cdFx0XHQkZm9ybS5maW5kKCdbbmFtZT1uYW1lc3BhY2VyZXN0cmljdGlvbnNdJykuc2VsZWN0Mih7XG5cdFx0XHRcdHdpZHRoOiAnMTAwJScsXG5cdFx0XHRcdG1hdGNoZXI6IE1vcmViaXRzLnNlbGVjdDIubWF0Y2hlcnMud29yZEJlZ2lubmluZyxcblx0XHRcdFx0bGFuZ3VhZ2U6IHtcblx0XHRcdFx0XHRzZWFyY2hpbmc6IE1vcmViaXRzLnNlbGVjdDIucXVlcnlJbnRlcmNlcHRvcixcblx0XHRcdFx0fSxcblx0XHRcdFx0dGVtcGxhdGVSZXN1bHQ6IE1vcmViaXRzLnNlbGVjdDIuaGlnaGxpZ2h0U2VhcmNoTWF0Y2hlcyxcblx0XHRcdFx0cGxhY2Vob2xkZXI6IHdpbmRvdy53Z1VMUygn6YCJ5oup6KaB56aB5q2i55So5oi357yW6L6R55qE5ZG95ZCN56m66Ze0JywgJ+mBuOaTh+imgeemgeatouS9v+eUqOiAhee3qOi8r+eahOWRveWQjeepuumWkycpLFxuXHRcdFx0fSk7XG5cdFx0XHRtdy51dGlsLmFkZENTUyhcblx0XHRcdFx0LyogUmVkdWNlIHBhZGRpbmc7XG5cdFx0XHRcdCAqIEFkanVzdCBmb250IHNpemU7XG5cdFx0XHRcdCAqIFJlbW92ZSBibGFjayBib3JkZXI7XG5cdFx0XHRcdCAqIE1ha2UgdGhlIHRpbnkgY3Jvc3MgbGFyZ2VyXG5cdFx0XHRcdCAqL1xuXHRcdFx0XHQnLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb257cGFkZGluZy10b3A6MXB4O3BhZGRpbmctYm90dG9tOjFweH0uc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItZHJvcGRvd24gLnNlbGVjdDItcmVzdWx0cywuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdGlvbiAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVke2ZvbnQtc2l6ZToxM3B4fS5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZXtib3JkZXI6MXB4IHNvbGlkICNhYWF9LnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZXtmb250LXNpemU6MTI1JX0nXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkZm9ybS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGRfYmxvY2tfb3B0aW9uc1wiXScpLmhpZGUoKTtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF82NFwiXScpLmhpZGUoKTtcblx0XHRcdC8vIENsZWFyIHNlbGVjdDIgb3B0aW9uc1xuXHRcdFx0JGZvcm0uZmluZCgnW25hbWU9cGFnZXJlc3RyaWN0aW9uc10nKS52YWwobnVsbCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0XHQkZm9ybS5maW5kKCdbbmFtZT1uYW1lc3BhY2VyZXN0cmljdGlvbnNdJykudmFsKG51bGwpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXHRcdH1cblx0XHRpZiAoZmllbGRfdGVtcGxhdGVfb3B0aW9ucykge1xuXHRcdFx0W29sZGZpZWxkXSA9ICRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF90ZW1wbGF0ZV9vcHRpb25zXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZF90ZW1wbGF0ZV9vcHRpb25zLnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0XHRlLnRhcmdldC5mb3JtLnJvb3QucHJldmlld2VyID0gbmV3IE1vcmViaXRzLndpa2kucHJldmlldyhcblx0XHRcdFx0JChlLnRhcmdldC5mb3JtLnJvb3QpLmZpbmQoJyN0d2lua2xlYmxvY2stcHJldmlld2JveCcpLmxhc3QoKVswXVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3RlbXBsYXRlX29wdGlvbnNcIl0nKS5oaWRlKCk7XG5cdFx0fVxuXHRcdGlmIChmaWVsZF90YWdfb3B0aW9ucykge1xuXHRcdFx0W29sZGZpZWxkXSA9ICRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF90YWdfb3B0aW9uc1wiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfdGFnX29wdGlvbnMucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3RhZ19vcHRpb25zXCJdJykuaGlkZSgpO1xuXHRcdH1cblx0XHRpZiAoZmllbGRfdW5ibG9ja19vcHRpb25zKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJGZvcm0uZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkX3VuYmxvY2tfb3B0aW9uc1wiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGRfdW5ibG9ja19vcHRpb25zLnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRmb3JtLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF91bmJsb2NrX29wdGlvbnNcIl0nKS5oaWRlKCk7XG5cdFx0fVxuXHRcdC8vIEFueSBibG9jaywgaW5jbHVkaW5nIHJhbmdlc1xuXHRcdGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8pIHtcblx0XHRcdC8vIGZhbHNlIGZvciBhbiBpcCBjb3ZlcmVkIGJ5IGEgcmFuZ2Ugb3IgYSBzbWFsbGVyIHJhbmdlIHdpdGhpbiBhIGxhcmdlciByYW5nZTtcblx0XHRcdC8vIHRydWUgZm9yIGEgdXNlciwgc2luZ2xlIGlwIGJsb2NrLCBvciB0aGUgZXhhY3QgcmFuZ2UgZm9yIGEgcmFuZ2UgYmxvY2tcblx0XHRcdGNvbnN0IHNhbWVVc2VyID0gYmxvY2tlZFVzZXJOYW1lID09PSByZWxldmFudFVzZXJOYW1lO1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoJGJvZHkuZmluZCgnZGl2W25hbWU9XCJjdXJyZW50YmxvY2tcIl0gc3BhbicpLmxhc3QoKVswXSk7XG5cdFx0XHRsZXQgc3RhdHVzU3RyID0gYCR7cmVsZXZhbnRVc2VyTmFtZX3lt7Looqske1xuXHRcdFx0XHRUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8ucGFydGlhbCA9PT0gJydcblx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn6YOo5YiG5bCB56aBJywgJ+mDqOWIhuWwgemOlicpXG5cdFx0XHRcdFx0OiB3aW5kb3cud2dVTFMoJ+WFqOermeWwgeemgScsICflhajnq5nlsIHpjpYnKVxuXHRcdFx0fWA7XG5cdFx0XHQvLyBSYW5nZSBibG9ja2VkXG5cdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnJhbmdlc3RhcnQgIT09IFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5yYW5nZWVuZCkge1xuXHRcdFx0XHRpZiAoc2FtZVVzZXIpIHtcblx0XHRcdFx0XHRzdGF0dXNTdHIgKz0gd2luZG93LndnVUxTKCfvvIjmrrXlsIHnpoHvvIknLCAn77yI5q615bCB6Y6W77yJJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gQ2hhbmdlIG9yZGVyXG5cdFx0XHRcdFx0Ly8gTGluayB0byB0aGUgZnVsbCByYW5nZVxuXHRcdFx0XHRcdGNvbnN0ICRyYW5nZWJsb2NrbG9nbGluayA9ICQoJzxzcGFuPicpLmFwcGVuZChcblx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdGA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOkxvZycsIHtcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb246ICd2aWV3Jyxcblx0XHRcdFx0XHRcdFx0XHRwYWdlOiBibG9ja2VkVXNlck5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcblx0XHRcdFx0XHRcdFx0fSl9XCI+JHtcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5pcC5nZXQ2NChyZWxldmFudFVzZXJOYW1lKSA9PT0gYmxvY2tlZFVzZXJOYW1lID8gJy82NCcgOiBibG9ja2VkVXNlck5hbWVcblx0XHRcdFx0XHRcdFx0fTwvYT4pYFxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c3RhdHVzU3RyICs9XG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ++8iOS9jeS6jicsICfvvIjkvY3mlrwnKSArXG5cdFx0XHRcdFx0XHQkcmFuZ2VibG9ja2xvZ2xpbmsuaHRtbCgpICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q615bCB56aB5YaF77yJJywgJ+auteWwgemOluWFp++8iScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLmV4cGlyeSA9PT0gJ2luZmluaXR5Jykge1xuXHRcdFx0XHRzdGF0dXNTdHIgKz0gd2luZG93LndnVUxTKCfvvIjml6DpmZDmnJ/vvIknLCAn77yI54Sh6ZmQ5pyf77yJJyk7XG5cdFx0XHR9IGVsc2UgaWYgKG5ldyBNb3JlYml0cy5kYXRlKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5leHBpcnkpLmlzVmFsaWQoKSkge1xuXHRcdFx0XHRzdGF0dXNTdHIgKz0gYCR7XG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfvvIjnu4jmraLkuo4nLCAn77yI57WC5q2i5pa8JykgK1xuXHRcdFx0XHRcdG5ldyBNb3JlYml0cy5kYXRlKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5leHBpcnkpLmNhbGVuZGFyKCd1dGMnKVxuXHRcdFx0XHR977yJYDtcblx0XHRcdH1cblx0XHRcdGxldCBpbmZvU3RyID0gd2luZG93LndnVUxTKCfmraTooajljZXlsIYnLCAn5q2k6KGo5Zau5bCHJyk7XG5cdFx0XHRpZiAoc2FtZVVzZXIpIHtcblx0XHRcdFx0aW5mb1N0ciArPSB3aW5kb3cud2dVTFMoJ+abtOaUueWwgeemgScsICforormm7TlsIHpjpYnKTtcblx0XHRcdFx0aWYgKFR3aW5rbGUuYmxvY2suY3VycmVudEJsb2NrSW5mby5wYXJ0aWFsID09PSB1bmRlZmluZWQgJiYgcGFydGlhbEJveCkge1xuXHRcdFx0XHRcdGluZm9TdHIgKz0gd2luZG93LndnVUxTKCfkuLrpg6jliIblsIHnpoEnLCAn54K66YOo5YiG5bCB6Y6WJyk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvLnBhcnRpYWwgPT09ICcnICYmICFwYXJ0aWFsQm94KSB7XG5cdFx0XHRcdFx0aW5mb1N0ciArPSB3aW5kb3cud2dVTFMoJ+S4uuWFqOermeWwgeemgScsICfngrrlhajnq5nlsIHpjpYnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpbmZvU3RyICs9ICfjgIInO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aW5mb1N0ciArPVxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5LiK6aKd5aSW55qEJywgJ+WKoOS4iumhjeWklueahCcpICtcblx0XHRcdFx0XHQocGFydGlhbEJveCA/ICfpg6jliIYnIDogJycpICtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwgeemgeOAgicsICflsIHpjpbjgIInKTtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKHN0YXR1c1N0ciwgaW5mb1N0cik7XG5cdFx0XHQvLyBEZWZhdWx0IHRvIHRoZSBjdXJyZW50IGJsb2NrIGNvbmRpdGlvbnMgb24gaW50aWFsIGZvcm0gZ2VuZXJhdGlvblxuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay51cGRhdGVfZm9ybShlLCBUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8pO1xuXHRcdH1cblx0XHQvLyBUaGlzIGlzIHdoZXJlIFQxNDY2MjggcmVhbGx5IGNvbWVzIGludG8gcGxheTogYSByYW5nZWJsb2NrIHdpbGxcblx0XHQvLyBvbmx5IHJldHVybiB0aGUgY29ycmVjdCBibG9jayBsb2cgaWYgd2dSZWxldmFudFVzZXJOYW1lIGlzIHRoZVxuXHRcdC8vIGV4YWN0IHJhbmdlLCBub3QgbWVyZWx5IGEgZnVudGlvbmFsIGVxdWl2YWxlbnRcblx0XHRpZiAoVHdpbmtsZS5ibG9jay5oYXNCbG9ja0xvZykge1xuXHRcdFx0Ly8gQWRkIG1vcmUgZGV0YWlsc1xuXHRcdFx0Y29uc3QgYmxvY2tsb2dpbmZvID0gW107XG5cdFx0XHRjb25zdCAkYmxvY2tsb2dsaW5rID0gJCgnPHNwYW4+JykuYXBwZW5kKFxuXHRcdFx0XHQkKFxuXHRcdFx0XHRcdGA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOkxvZycsIHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3ZpZXcnLFxuXHRcdFx0XHRcdFx0cGFnZTogcmVsZXZhbnRVc2VyTmFtZSxcblx0XHRcdFx0XHRcdHR5cGU6ICdibG9jaycsXG5cdFx0XHRcdFx0fSl9XCI+JHt3aW5kb3cud2dVTFMoJ+WwgeemgeaXpeW/lycsICflsIHpjpbml6XoqownKX08L2E+KWBcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmN1cnJlbnRCbG9ja0luZm8pIHtcblx0XHRcdFx0YmxvY2tsb2dpbmZvW2Jsb2NrbG9naW5mby5sZW5ndGhdID0gd2luZG93LndnVUxTKCflsIHnpoHor6bmg4UnLCAn5bCB6Y6W6Kmz5oOFJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBbbGFzdEJsb2NrQWN0aW9uXSA9IFR3aW5rbGUuYmxvY2suYmxvY2tMb2c7XG5cdFx0XHRcdGNvbnN0IGJsb2NrQWN0aW9uID0gbGFzdEJsb2NrQWN0aW9uLmFjdGlvbiA9PT0gJ3VuYmxvY2snID8gVHdpbmtsZS5ibG9jay5ibG9ja0xvZ1sxXSA6IGxhc3RCbG9ja0FjdGlvbjtcblx0XHRcdFx0YmxvY2tsb2dpbmZvW2Jsb2NrbG9naW5mby5sZW5ndGhdID1cblx0XHRcdFx0XHQoYOatpCR7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5pcC5pc1JhbmdlKHJlbGV2YW50VXNlck5hbWUpXG5cdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCdJUOiMg+WbtCcsICdJUOevhOWcjScpXG5cdFx0XHRcdFx0XHRcdDogd2luZG93LndnVUxTKCfnlKjmiLcnLCAn5L2/55So6ICFJylcblx0XHRcdFx0XHR95pu+5ZyoYCxcblx0XHRcdFx0XHQkKCc8Yj4nKS50ZXh0KG5ldyBNb3JlYml0cy5kYXRlKGJsb2NrQWN0aW9uLnRpbWVzdGFtcCkuY2FsZW5kYXIoJ3V0YycpKVswXSxcblx0XHRcdFx0XHRg6KKrJHtibG9ja0FjdGlvbi51c2VyfSR7d2luZG93LndnVUxTKCflsIHnpoEnLCAn5bCB6Y6WJyl9YCxcblx0XHRcdFx0XHQkKCc8Yj4nKS50ZXh0KE1vcmViaXRzLnN0cmluZy5mb3JtYXRUaW1lKGJsb2NrQWN0aW9uLnBhcmFtcy5kdXJhdGlvbikpWzBdKTtcblx0XHRcdFx0aWYgKGxhc3RCbG9ja0FjdGlvbi5hY3Rpb24gPT09ICd1bmJsb2NrJykge1xuXHRcdFx0XHRcdGJsb2NrbG9naW5mb1tibG9ja2xvZ2luZm8ubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRg77yMJHtuZXcgTW9yZWJpdHMuZGF0ZShsYXN0QmxvY2tBY3Rpb24udGltZXN0YW1wKS5jYWxlbmRhcigndXRjJyl96Kej5bCBYDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBibG9jayBvciByZWJsb2NrXG5cdFx0XHRcdFx0YmxvY2tsb2dpbmZvW2Jsb2NrbG9naW5mby5sZW5ndGhdID1cblx0XHRcdFx0XHRcdGDvvIwke25ldyBNb3JlYml0cy5kYXRlKGJsb2NrQWN0aW9uLnBhcmFtcy5leHBpcnkpLmNhbGVuZGFyKCd1dGMnKX0ke3dpbmRvdy53Z1VMUygn6L+H5pyfJywgJ+mBjuacnycpfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiaGFzYmxvY2tsb2dcIl0gc3BhbicpLmxhc3QoKVswXSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMud2FybihibG9ja2xvZ2luZm8sICRibG9ja2xvZ2xpbmtbMF0pO1xuXHRcdH1cblx0XHQvLyBNYWtlIHN1cmUgYWxsIHRoZSBmaWVsZHMgYXJlIGNvcnJlY3QgYmFzZWQgb24gaW5pdGlhbCBkZWZhdWx0c1xuXHRcdGlmIChibG9ja0JveCkge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfcHJlc2V0KGUpO1xuXHRcdH0gZWxzZSBpZiAodGVtcGxhdGVCb3gpIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlKGUpO1xuXHRcdH1cblx0fTtcblx0LyoqXG5cdCAqIEtlZXAgYWxwaGFiZXRpemVkIGJ5IGtleSBuYW1lLCBUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzIGVzdGFibGlzaGVzXG5cdCAqICAgIHRoZSBvcmRlciB0aGV5IHdpbGwgYXBwZWFyIGluIHRoZSBpbnRlcmZhY2Vcblx0ICpcblx0ICogQmxvY2sgcHJlc2V0IGZvcm1hdCwgYWxsIGtleXMgYWNjZXB0IG9ubHkgJ3RydWUnIChvbWl0IGZvciBmYWxzZSkgZXhjZXB0IHdoZXJlIG5vdGVkOlxuXHQgKiA8dGl0bGUgb2YgYmxvY2sgdGVtcGxhdGU+IDoge1xuXHQgKiAgIGF1dG9ibG9jazogPGF1dG9ibG9jayBhbnkgSVAgYWRkcmVzc2VzIHVzZWQgKGZvciByZWdpc3RlcmVkIHVzZXJzIG9ubHkpPlxuXHQgKiAgIGRpc2FibGV0YWxrOiA8ZGlzYWJsZSB1c2VyIGZyb20gZWRpdGluZyB0aGVpciBvd24gdGFsayBwYWdlIHdoaWxlIGJsb2NrZWQ+XG5cdCAqICAgZXhwaXJ5OiA8c3RyaW5nIC0gZXhwaXJ5IHRpbWVzdGFtcCwgY2FuIGluY2x1ZGUgcmVsYXRpdmUgdGltZXMgbGlrZSBcIjUgbW9udGhzXCIsIFwiMiB3ZWVrc1wiIGV0Yz5cblx0ICogICBmb3JBbm9uT25seTogPHNob3cgYmxvY2sgb3B0aW9uIGluIHRoZSBpbnRlcmZhY2Ugb25seSBpZiB0aGUgcmVsZXZhbnQgdXNlciBpcyBhbiBJUD5cblx0ICogICBmb3JSZWdpc3RlcmVkT25seTogPHNob3cgYmxvY2sgb3B0aW9uIGluIHRoZSBpbnRlcmZhY2Ugb25seSBpZiB0aGUgcmVsZXZhbnQgdXNlciBpcyByZWdpc3RlcmVkPlxuXHQgKiAgIGxhYmVsOiA8c3RyaW5nIC0gbGFiZWwgZm9yIHRoZSBvcHRpb24gb2YgdGhlIGRyb3Bkb3duIGluIHRoZSBpbnRlcmZhY2UgKGtlZXAgYnJpZWYpPlxuXHQgKiAgIG5vZW1haWw6IHByZXZlbnQgdGhlIHVzZXIgZnJvbSBzZW5kaW5nIGVtYWlsIHRocm91Z2ggU3BlY2lhbDpFbWFpbHVzZXJcblx0ICogICBwYWdlUGFyYW06IDxzZXQgaWYgdGhlIGFzc29jaWF0ZWQgYmxvY2sgdGVtcGxhdGUgYWNjZXB0cyBhIHBhZ2UgcGFyYW1ldGVyPlxuXHQgKiAgIHByZXBlbmRSZWFzb246IDxzdHJpbmcgLSBwcmVwZW5kcyB0aGUgdmFsdWUgb2YgJ3JlYXNvbicgdG8gdGhlIGVuZCBvZiB0aGUgZXhpc3RpbmcgcmVhc29uLCBuYW1lbHkgZm9yIHdoZW4gcmV2b2tpbmcgdGFsayBwYWdlIGFjY2Vzcz5cblx0ICogICBub2NyZWF0ZTogPGJsb2NrIGFjY291bnQgY3JlYXRpb24gZnJvbSB0aGUgdXNlcidzIElQIChmb3IgYW5vbnltb3VzIHVzZXJzIG9ubHkpPlxuXHQgKiAgIG5vbnN0YW5kYXJkOiA8dGVtcGxhdGUgZG9lcyBub3QgY29uZm9ybSB0byBzdGV3YXJkc2hpcCBvZiBbW2Vud2lraTpXaWtpUHJvamVjdCBVc2VyIFdhcm5pbmdzXV0gYW5kIG1heSBub3QgYWNjZXB0IHN0YW5kYXJkIHBhcmFtZXRlcnM+XG5cdCAqICAgcmVhc29uOiA8c3RyaW5nIC0gYmxvY2sgcmF0aW9uYWxlLCBhcyB3b3VsZCBhcHBlYXIgaW4gdGhlIGJsb2NrIGxvZyxcblx0ICogICAgICAgICAgICBhbmQgdGhlIGVkaXQgc3VtbWFyeSBmb3Igd2hlbiBhZGRpbmcgYmxvY2sgdGVtcGxhdGUsIHVubGVzcyAnc3VtbWFyeScgaXMgc2V0PlxuXHQgKiAgIHJlYXNvblBhcmFtOiA8c2V0IGlmIHRoZSBhc3NvY2lhdGVkIGJsb2NrIHRlbXBsYXRlIGFjY2VwdHMgYSByZWFzb24gcGFyYW1ldGVyPlxuXHQgKiAgIHNpZzogPHN0cmluZyAtIHNldCB0byB+fn5+IGlmIGJsb2NrIHRlbXBsYXRlIGRvZXMgbm90IGFjY2VwdCBcInRydWVcIiBhcyB0aGUgdmFsdWUsIG9yIHNldCBudWxsIHRvIG9taXQgc2lnIHBhcmFtIGFsdG9nZXRoZXI+XG5cdCAqICAgc3VtbWFyeTogPHN0cmluZyAtIGVkaXQgc3VtbWFyeSBmb3Igd2hlbiBhZGRpbmcgYmxvY2sgdGVtcGxhdGUgdG8gdXNlcidzIHRhbGsgcGFnZSwgaWYgbm90IHNldCwgJ3JlYXNvbicgaXMgdXNlZD5cblx0ICogICBzdXBwcmVzc0FydGljbGVJblN1bW1hcnk6IDxzZXQgdG8gc3VwcHJlc3Mgc2hvd2luZyB0aGUgYXJ0aWNsZSBuYW1lIGluIHRoZSBlZGl0IHN1bW1hcnksIGFzIHdpdGggYXR0YWNrIHBhZ2VzPlxuXHQgKiAgIHRlbXBsYXRlTmFtZTogPHN0cmluZyAtIG5hbWUgb2YgdGVtcGxhdGUgdG8gdXNlIChpbnN0ZWFkIG9mIGtleSBuYW1lKSwgZW50cnkgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlIFRlbXBsYXRlcyBsaXN0LlxuXHQgKiAgICAgICAgICAgICAgICAgIChlLmcuIHVzZSBhbm90aGVyIHRlbXBsYXRlIGJ1dCB3aXRoIGRpZmZlcmVudCBibG9jayBvcHRpb25zKT5cblx0ICogICB1c2VJbml0aWFsT3B0aW9uczogPHdoZW4gcHJlc2V0IGlzIGNob3Nlbiwgb25seSBjaGFuZ2UgZ2l2ZW4gYmxvY2sgb3B0aW9ucywgbGVhdmUgb3RoZXJzIGFzIHRoZXkgd2VyZT5cblx0ICpcblx0ICogV0FSTklORzogJ2Fub25vbmx5JyBhbmQgJ2FsbG93dXNlcnRhbGsnIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cdCAqICAgVG8gZGlzYWJsZSwgc2V0ICdoYXJkYmxvY2snIGFuZCAnZGlzYWJsZXRhbGsnLCByZXNwZWN0aXZlbHlcblx0ICovXG5cdFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mbyA9IHtcblx0XHQvLyB1dy1wcmVmaXhlZFxuXHRcdCd1dy1ibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+lJywgJ+WwgemOlumAmuefpScpLFxuXHRcdFx0c3VwcHJlc3NBcnRpY2xlSW5TdW1tYXJ5OiB0cnVlLFxuXHRcdH0sXG5cdFx0J3V3LWJsb2NraW5kZWYnOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpScsICflsIHpjpbpgJrnn6UnKSxcblx0XHRcdHN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeTogdHJ1ZSxcblx0XHR9LFxuXHRcdCd1dy1ibG9ja25vdGFsayc6IHtcblx0XHRcdGRpc2FibGV0YWxrOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muemgeatoue8lui+keiuqOiuuumhtScsICflsIHpjpbpgJrnn6XvvJrnpoHmraLnt6jovK/oqI7oq5bpoIEnKSxcblx0XHRcdHN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeTogdHJ1ZSxcblx0XHR9LFxuXHRcdCd1dy0zYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfov53lj41bW1FXOjNSUnzlm57pgIDkuI3ov4fkuInljp/liJldXScsICfpgZXlj41bW1FXOjNSUnzlm57pgIDkuI3pgY7kuInljp/liYddXScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrov53lj41bW1FXOjNSUnzlm57pgIDkuI3ov4fkuInljp/liJldXScsICflsIHpjpbpgJrnn6XvvJrpgZXlj41bW1FXOjNSUnzlm57pgIDkuI3pgY7kuInljp/liYddXScpLFxuXHRcdH0sXG5cdFx0J3V3LWFkYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmlaPlj5FbW1FXOlNPQVB85pWj5Y+R5bm/5ZGK5oiW5a6j5LygXV0nLCAn5pWj55m8W1tRVzpTT0FQfOaVo+eZvOW7o+WRiuaIluWuo+WCs11dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmlaPlj5FbW1FXOlNPQVB85pWj5Y+R5bm/5ZGK5oiW5a6j5LygXV0nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5pWj55m8W1tRVzpTT0FQfOaVo+eZvOW7o+WRiuaIluWuo+WCs11dJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1hdHRhY2tibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW1FXOkNJVnzooYzkuLrml6DnpLxdXeaIlltbUVc6TlBBfOS6uui6q+aUu+WHu11dJyxcblx0XHRcdFx0J1tbUVc6Q0lWfOihjOeCuueEoeemrl1d5oiWW1tRVzpOUEF85Lq66Lqr5pS75pOKXV0nXG5cdFx0XHQpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77yaW1tRVzpDSVZ86KGM5Li65peg56S8XV3miJZbW1FXOk5QQXzkurrouqvmlLvlh7tdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJpbW1FXOkNJVnzooYzngrrnhKHnpq5dXeaIlltbUVc6TlBBfOS6uui6q+aUu+aTil1dJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1jb3B5cmlnaHRibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+aMgee7rVtbUVc6Q09QWVZJT3zkvrXniq/okZfkvZzmnYNdXScsICfmjIHnuoxbW1FXOkNPUFlWSU985L6154qv6JGX5L2c5qyKXV0nKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5oyB57utW1tRVzpDT1BZVklPfOS+teeKr+iRl+S9nOadg11dJywgJ+WwgemOlumAmuefpe+8muaMgee6jFtbUVc6Q09QWVZJT3zkvrXniq/okZfkvZzmrIpdXScpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2tpbmRlZicsXG5cdFx0fSxcblx0XHQndXctZGJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5oyB57utW1tRVzpWQU585Yig6Zmk5YaF5a65XV0nLCAn5oyB57qMW1tRVzpWQU585Yiq6Zmk5YWn5a65XV0nKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5oyB57utW1tRVzpWQU585Yig6Zmk5YaF5a65XV0nLCAn5bCB6Y6W6YCa55+l77ya5oyB57qMW1tRVzpWQU585Yiq6Zmk5YWn5a65XV0nKSxcblx0XHR9LFxuXHRcdCd1dy1oYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCdbW1FXOumqmuaJsHzpqprmibBdXeWFtuS7lueUqOaItycsICdbW1FXOumot+aTvnzpqLfmk75dXeWFtuS7luS9v+eUqOiAhScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJpbW1FXOumqmuaJsHzpqprmibBdXeWFtuS7lueUqOaItycsICflsIHpjpbpgJrnn6XvvJpbW1FXOumot+aTvnzpqLfmk75dXeWFtuS7luS9v+eUqOiAhScpLFxuXHRcdH0sXG5cdFx0J3V3LXZibG9jayc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJzEgZGF5Jyxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cGFnZVBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ1tbUVc6VkFOfOegtOWdj11dJywgJ1tbUVc6VkFOfOegtOWjnl1dJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8mltbUVc6VkFOfOegtOWdj11dJywgJ+WwgemOlumAmuefpe+8mltbUVc6VkFOfOegtOWjnl1dJyksXG5cdFx0fSxcblx0XHQndXctaWxsZWdhbGJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5oyB57ut5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE6Z2e5rOV5YaF5a65JywgJ+aMgee6jOWKoOWFpeS4jeespuWQiOS4reWci+WDueWAvOingOeahOmdnuazleWFp+WuuScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5bCB56aB6YCa55+l77ya5oyB57ut5Yqg5YWl5LiN56ym5ZCI5Lit5Zu95Lu35YC86KeC55qE6Z2e5rOV5YaF5a65Jyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muaMgee6jOWKoOWFpeS4jeespuWQiOS4reWci+WDueWAvOingOeahOmdnuazleWFp+WuuSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHQndXctc29ja2Jsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSB3ZWVrJyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5rul55SoW1tRVzpTT0NLfOWkmuS4qui0puWPt11dJywgJ+a/q+eUqFtbUVc6U09DS3zlpJrlgIvos6zomZ9dXScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrmu6XnlKhbW1FXOlNPQ0t85aSa5Liq6LSm5Y+3XV0nLCAn5bCB6Y6W6YCa55+l77ya5r+r55SoW1tRVzpTT0NLfOWkmuWAi+izrOiZn11dJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy1ibG9jaycsXG5cdFx0fSxcblx0XHQvLyB1dy11LXByZWZpeGVkXG5cdFx0J3V3LXVibG9jayc6IHtcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0cmVhc29uOiBge3t1dy11YmxvY2t9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+S4jeW9k+eUqOaIt+WQjeOAgei9r+WwgeemgScsICfkuI3nlbbkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbUVc6VXznlKjmiLflkI3mlrnpkohdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW1FXOlV85L2/55So6ICF5ZCN56ix5pa56YedXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1pbGxlZ2FsJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogYHt7dXctdWJsb2NrLWlsbGVnYWx9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+S4jeWQiOinhOeahOeUqOaIt+WQjScsICfkuI3lkIjopo/nmoTkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbUVc6VXznlKjmiLflkI3mlrnpkohdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW1FXOlV85L2/55So6ICF5ZCN56ix5pa56YedXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1zdWdnZXN0aXZlJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogYHt7dXctdWJsb2NrLXN1Z2dlc3RpdmV9fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+ivr+WvvOOAgea3t+a3huaAp+eUqOaIt+WQjScsICfoqqTlsI7jgIHmt7fmt4bmgKfkvb/nlKjogIXlkI3nqLEnKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbUVc6VXznlKjmiLflkI3mlrnpkohdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW1FXOlV85L2/55So6ICF5ZCN56ix5pa56YedXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1zcGFtJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogYHt7dXctdWJsb2NrLXNwYW19fTwhLS0gJHt3aW5kb3cud2dVTFMoJ+Wuo+S8oOaAp+eUqOaIt+WQjeaIluWuo+S8oOaAp+e8lui+kScsICflrqPlgrPmgKfkvb/nlKjogIXlkI3nqLHmiJblrqPlgrPmgKfnt6jovK8nKX0gLS0+YCxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOeahOeUqOaIt+WQjei/neWPjVtbUVc6VXznlKjmiLflkI3mlrnpkohdXScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjnmoTkvb/nlKjogIXlkI3nqLHpgZXlj41bW1FXOlV85L2/55So6ICF5ZCN56ix5pa56YedXV0nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0Ly8gb3RoZXIgYmxvY2sgdGVtcGxhdGVzXG5cdFx0J3JhbmdlIGJsb2NrJzoge1xuXHRcdFx0ZXhwaXJ5OiAnMSB3ZWVrJyxcblx0XHRcdHJlYXNvbjogJ3t7cmFuZ2UgYmxvY2t9fScsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0Zm9yQW5vbk9ubHk6IHRydWUsXG5cdFx0XHRzaWc6ICd+ficuY29uY2F0KCd+ficpLFxuXHRcdH0sXG5cdFx0J2Jsb2NrZWQgcHJveHknOiB7XG5cdFx0XHRleHBpcnk6ICcyIHllYXJzJyxcblx0XHRcdGZvckFub25Pbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRub25zdGFuZGFyZDogdHJ1ZSxcblx0XHRcdGhhcmRibG9jazogdHJ1ZSxcblx0XHRcdHJlYXNvbjogJ3t7YmxvY2tlZCBwcm94eX19Jyxcblx0XHRcdHNpZzogbnVsbCxcblx0XHR9LFxuXHRcdGNoZWNrdXNlcmJsb2NrOiB7XG5cdFx0XHRleHBpcnk6ICcxIHdlZWsnLFxuXHRcdFx0Zm9yQW5vbk9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdG5vbnN0YW5kYXJkOiB0cnVlLFxuXHRcdFx0cmVhc29uOiAne3tjaGVja3VzZXJibG9ja319Jyxcblx0XHRcdHNpZzogJ35+Jy5jb25jYXQoJ35+JyksXG5cdFx0fSxcblx0XHQnY2hlY2t1c2VyYmxvY2stYWNjb3VudCc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRub25zdGFuZGFyZDogdHJ1ZSxcblx0XHRcdHJlYXNvbjogJ3t7Y2hlY2t1c2VyYmxvY2stYWNjb3VudH19Jyxcblx0XHRcdHNpZzogJ35+Jy5jb25jYXQoJ35+JyksXG5cdFx0fSxcblx0XHQnc2Nob29sIGJsb2NrJzoge1xuXHRcdFx0ZXhwaXJ5OiAnMSB3ZWVrJyxcblx0XHRcdGZvckFub25Pbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRub25zdGFuZGFyZDogdHJ1ZSxcblx0XHRcdHJlYXNvbjogJ3t7c2Nob29sIGJsb2NrfX0nLFxuXHRcdFx0c2lnOiAnfn4nLmNvbmNhdCgnfn4nKSxcblx0XHR9LFxuXHRcdCdCb3QgYmxvY2sgbWVzc2FnZSc6IHtcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+acuuWZqOS6uuaVhemanCcsICfmqZ/lmajkurrmlYXpmpwnKSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUygn5bCB56aB6YCa55+l77ya5py65Zmo5Lq65pWF6ZqcJywgJ+WwgemOlumAmuefpe+8muapn+WZqOS6uuaVhemanCcpLFxuXHRcdFx0c2lnOiAnfn4nLmNvbmNhdCgnfn4nKSxcblx0XHR9LFxuXHRcdC8vIG90aGVyIGJsb2NrIHJlYXNvbnNcblx0XHRiaW9ibG9jazoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6L+d5Y+N55Sf6ICF5Lyg6K6w5pa56ZKIJywgJ+mBleWPjeeUn+iAheWCs+iomOaWuemHnScpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrov53lj43nlJ/ogIXkvKDorrDmlrnpkognLCAn5bCB6Y6W6YCa55+l77ya6YGV5Y+N55Sf6ICF5YKz6KiY5pa56YedJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy12YmxvY2snLFxuXHRcdH0sXG5cdFx0dWNibG9jazoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5bGh5qyh5aKe5Yqg5rKh5pyJW1tRVzpSU3zlj6/pnaDmnaXmupBdXeeahOi1hOaWmScsICflsaLmrKHlop7liqDmspLmnIlbW1FXOlJTfOWPr+mdoOS+hua6kF1d55qE6LOH5paZJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrlsaHmrKHlop7liqDmsqHmnIlbW1FXOlJTfOWPr+mdoOadpea6kF1d55qE6LWE5paZJyxcblx0XHRcdFx0J+WwgemOlumAmuefpe+8muWxouasoeWinuWKoOaykuaciVtbUVc6UlN85Y+v6Z2g5L6G5rqQXV3nmoTos4fmlpknXG5cdFx0XHQpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2snLFxuXHRcdH0sXG5cdFx0bnBibG9jazoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5Zyo5p2h55uu5Lit5aKe5Yqg5peg5oSP5LmJ5paH5a2XJywgJ+WcqOaineebruS4reWinuWKoOeEoeaEj+e+qeaWh+WtlycpLFxuXHRcdFx0c3VtbWFyeTogd2luZG93LndnVUxTKCflsIHnpoHpgJrnn6XvvJrlnKjmnaHnm67kuK3lop7liqDml6DmhI/kuYnmloflrZcnLCAn5bCB6Y6W6YCa55+l77ya5Zyo5qKd55uu5Lit5aKe5Yqg54Sh5oSP576p5paH5a2XJyksXG5cdFx0XHR0ZW1wbGF0ZU5hbWU6ICd1dy12YmxvY2snLFxuXHRcdH0sXG5cdFx0J3BvaW50LWJsb2NrJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnMSBkYXknLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRwYWdlUGFyYW06IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63miZPliLbluqbmk6bovrnnkIMnLCAn5oyB57qM5omT5Yi25bqm5pOm6YKK55CDJyksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaMgee7reaJk+WItuW6puaTpui+ueeQgycsICflsIHpjpbpgJrnn6XvvJrmjIHnuozmiZPliLbluqbmk6bpgornkIMnKSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LWJsb2NrJyxcblx0XHR9LFxuXHRcdCdzb2NrLWNvbnRyaWJzJzoge1xuXHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0Zm9yUmVnaXN0ZXJlZE9ubHk6IHRydWUsXG5cdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdHJlYXNvblBhcmFtOiB0cnVlLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfnoa7orqTkuLpbW1FXOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEgLSDmoLnmja7nlKjmiLfotKHnjK7noa7lrponLFxuXHRcdFx0XHQn56K66KqN54K6W1tRVzpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShIC0g5qC55pOa5L2/55So6ICF6LKi542756K65a6aJ1xuXHRcdFx0KSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muehruiupOS4ultbUVc6U09DS3zlgoDlhKFdXeaIluecn+S6uuWCgOWEoScsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrnorroqo3ngrpbW1FXOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEnXG5cdFx0XHQpLFxuXHRcdFx0dGVtcGxhdGVOYW1lOiAndXctYmxvY2tpbmRlZicsXG5cdFx0fSxcblx0XHQnc29jay1jdSc6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0bm9jcmVhdGU6IHRydWUsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn56Gu6K6k5Li6W1tRVzpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShIC0g55So5oi35p+l5qC456Gu6K6kJyxcblx0XHRcdFx0J+eiuuiqjeeCultbUVc6U09DS3zlgoDlhKFdXeaIluecn+S6uuWCgOWEoSAtIOS9v+eUqOiAheafpeaguOeiuuiqjSdcblx0XHRcdCksXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrnoa7orqTkuLpbW1FXOlNPQ0t85YKA5YShXV3miJbnnJ/kurrlgoDlhKEnLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya56K66KqN54K6W1tRVzpTT0NLfOWCgOWEoV1d5oiW55yf5Lq65YKA5YShJ1xuXHRcdFx0KSxcblx0XHRcdHRlbXBsYXRlTmFtZTogJ3V3LWJsb2NraW5kZWYnLFxuXHRcdH0sXG5cdFx0J3V3LXVibG9jay1hdHRhY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRmb3JSZWdpc3RlcmVkT25seTogdHJ1ZSxcblx0XHRcdG5vY3JlYXRlOiB0cnVlLFxuXHRcdFx0cmVhc29uOiBge3t1dy11YmxvY2stYXR0YWNrfX08IS0tICR7d2luZG93LndnVUxTKCfmlLvlh7vmgKfnlKjmiLflkI0nLCAn5pS75pOK5oCn5L2/55So6ICF5ZCN56ixJyl9IC0tPmAsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoJ+WwgeemgemAmuefpe+8muaUu+WHu+aAp+eUqOaIt+WQjScsICflsIHpjpbpgJrnn6XvvJrmlLvmk4rmgKfkvb/nlKjogIXlkI3nqLEnKSxcblx0XHR9LFxuXHRcdC8vIEJlZ2luIHBhcnRpYWwgYmxvY2sgdGVtcGxhdGVzLCBhY2Nlc3NlZCBpbiBUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzUGFydGlhbFxuXHRcdCd1dy1wYmxvY2snOiB7XG5cdFx0XHRhdXRvYmxvY2s6IHRydWUsXG5cdFx0XHRleHBpcnk6ICcxIGRheScsXG5cdFx0XHRub2NyZWF0ZTogZmFsc2UsXG5cdFx0XHRwYWdlUGFyYW06IGZhbHNlLFxuXHRcdFx0cmVhc29uUGFyYW06IHRydWUsXG5cdFx0XHRzdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCflsIHnpoHpgJrnn6XvvJrmgqjlt7LooqvnpoHmraLnvJbovpHmsYLpl7vnmb7np5HnmoTpg6jliIbljLrln58nLFxuXHRcdFx0XHQn5bCB6Y6W6YCa55+l77ya5oKo5bey6KKr56aB5q2i57eo6Lyv5rGC6IGe55m+56eR55qE6YOo5YiG5Y2A5Z+fJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdCd1dy1wYmxvY2tpbmRlZic6IHtcblx0XHRcdGF1dG9ibG9jazogdHJ1ZSxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdG5vY3JlYXRlOiBmYWxzZSxcblx0XHRcdHBhZ2VQYXJhbTogZmFsc2UsXG5cdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdHN1bW1hcnk6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WwgeemgemAmuefpe+8muaCqOW3suiiq+awuOS5heemgeatoue8lui+keaxgumXu+eZvuenkeeahOmDqOWIhuWMuuWfnycsXG5cdFx0XHRcdCflsIHpjpbpgJrnn6XvvJrmgqjlt7LooqvmsLjkuYXnpoHmraLnt6jovK/msYLogZ7nmb7np5HnmoTpg6jliIbljYDln58nXG5cdFx0XHQpLFxuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYmxvY2sudHJhbnNmb3JtQmxvY2tQcmVzZXRzID0gKCkgPT4ge1xuXHRcdC8vIE1lcmdlIGN1c3RvbSByZWFzb25cblx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21CbG9ja1JlYXNvbkxpc3QnKSkge1xuXHRcdFx0Y29uc3QgbmV3S2V5ID0gYCR7aXRlbS52YWx1ZX18JHtpdGVtLmxhYmVsfWA7XG5cdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bbmV3S2V5XSA9IHtcblx0XHRcdFx0YXV0b2Jsb2NrOiB0cnVlLFxuXHRcdFx0XHRub2NyZWF0ZTogdHJ1ZSxcblx0XHRcdFx0Li4uVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2l0ZW0udmFsdWVdLFxuXHRcdFx0XHRyZWFzb246IGl0ZW0ubGFiZWwsXG5cdFx0XHRcdHRlbXBsYXRlTmFtZTogaXRlbS52YWx1ZSxcblx0XHRcdH07XG5cdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2l0ZW0udmFsdWVdID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0VHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2l0ZW0udmFsdWVdID0ge1xuXHRcdFx0XHRcdHBhZ2VQYXJhbTogdHJ1ZSxcblx0XHRcdFx0XHRyZWFzb25QYXJhbTogdHJ1ZSxcblx0XHRcdFx0XHRjdXN0b206IHRydWUsXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIHN1cHBseSBzZW5zaWJsZSBkZWZhdWx0c1xuXHRcdGZvciAoY29uc3QgW3ByZXNldCwgc2V0dGluZ3NdIG9mIE9iamVjdC5lbnRyaWVzKFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mbykpIHtcblx0XHRcdHNldHRpbmdzLnN1bW1hcnkgfHw9IHNldHRpbmdzLnJlYXNvbjtcblx0XHRcdHNldHRpbmdzLnNpZyA9IHNldHRpbmdzLnNpZyA9PT0gdW5kZWZpbmVkID8gJ3llcycgOiBzZXR0aW5ncy5zaWc7XG5cdFx0XHRzZXR0aW5ncy5pbmRlZmluaXRlIHx8PSBNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShzZXR0aW5ncy5leHBpcnkpO1xuXHRcdFx0aWYgKCFUd2lua2xlLmJsb2NrLmlzUmVnaXN0ZXJlZCAmJiBzZXR0aW5ncy5pbmRlZmluaXRlKSB7XG5cdFx0XHRcdHNldHRpbmdzLmV4cGlyeSA9ICcxIGRheSc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZXR0aW5ncy5leHBpcnkgfHw9ICcxIGRheSc7XG5cdFx0XHR9XG5cdFx0XHRUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bcHJlc2V0XSA9IHNldHRpbmdzO1xuXHRcdH1cblx0fTtcblx0Ly8gVGhlc2UgYXJlIHRoZSBncm91cHMgb2YgcHJlc2V0cyBhbmQgZGVmaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIuIEZvciBlYWNoIGxpc3QgaXRlbTpcblx0Ly8gICBsYWJlbDogPHN0cmluZywgdGhlIGRlc2NyaXB0aW9uIHRoYXQgd2lsbCBiZSB2aXNpYmxlIGluIHRoZSBkcm9wZG93bj5cblx0Ly8gICB2YWx1ZTogPHN0cmluZywgdGhlIGtleSBvZiBhIHByZXNldCBpbiBibG9ja1ByZXNldHNJbmZvPlxuXHQvLyAgIG1ldGE6IDxib29sZWFuLCBzaG93IGluIHRlbXBsYXRlcyBvbmx5PlxuXHRUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aZrumAmuWwgeemgScsICfmma7pgJrlsIHpjpYnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+mAmueUqOWwgeemge+8iOiHquWumuS5ieeQhueUse+8iScsICfpgJrnlKjlsIHpjpbvvIjoh6roqILnkIbnlLHvvIknKSwgdmFsdWU6ICd1dy1ibG9jayd9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyf5bCB56aB77yI6Ieq5a6a5LmJ55CG55Sx77yJJywgJ+eEoemZkOacn+WwgemOlu+8iOiHquiogueQhueUse+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndXctYmxvY2tpbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfnpoHmraLnvJbovpHorqjorrrpobUnLCAn56aB5q2i57eo6Lyv6KiO6KuW6aCBJyksIHZhbHVlOiAndXctYmxvY2tub3RhbGsnLCBtZXRhOiB0cnVlfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+i/neWPjeWbnumAgOS4jei/h+S4ieWOn+WImScsICfpgZXlj43lm57pgIDkuI3pgY7kuInljp/liYcnKSwgdmFsdWU6ICd1dy0zYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+aVo+WPkeW5v+WRiuaIluWuo+S8oCcsICfmlaPnmbzlu6PlkYrmiJblrqPlgrMnKSwgdmFsdWU6ICd1dy1hZGJsb2NrJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfooYzkuLrml6DnpLzmiJbkurrouqvmlLvlh7snLCAn6KGM54K654Sh56au5oiW5Lq66Lqr5pS75pOKJyksIHZhbHVlOiAndXctYXR0YWNrYmxvY2snfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WkmuasoeWKoOWFpeS+teeKr+iRl+S9nOadg+eahOWGheWuuScsICflpJrmrKHliqDlhaXkvrXniq/okZfkvZzmrIrnmoTlhaflrrknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3V3LWNvcHlyaWdodGJsb2NrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoOaVheWIoOmZpOWGheWuuScsICfnhKHmlYXliKrpmaTlhaflrrknKSwgdmFsdWU6ICd1dy1kYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+mqmuaJsOeUqOaItycsICfpqLfmk77kvb/nlKjogIUnKSwgdmFsdWU6ICd1dy1oYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+egtOWdjycsICfnoLTlo54nKSwgdmFsdWU6ICd1dy12YmxvY2snLCBzZWxlY3RlZDogdHJ1ZX0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjIHnu63liqDlhaXkuI3nrKblkIjkuK3lm73ku7flgLzop4LnmoTpnZ7ms5XlhoXlrrknLCAn5oyB57qM5Yqg5YWl5LiN56ym5ZCI5Lit5ZyL5YO55YC86KeA55qE6Z2e5rOV5YWn5a65JyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy1pbGxlZ2FsYmxvY2snLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5rul55So5aSa5Liq6LSm5Y+3JywgJ+a/q+eUqOWkmuWAi+izrOiZnycpLCB2YWx1ZTogJ3V3LXNvY2tibG9jayd9LFxuXHRcdFx0XHQvLyBvdGhlciBibG9jayByZWFzb25zXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfov53lj43nlJ/ogIXkvKDorrDmlrnpkognLCAn6YGV5Y+N55Sf6ICF5YKz6KiY5pa56YedJyksIHZhbHVlOiAnYmlvYmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+WxoeasoeWinuWKoOayoeacieWPr+mdoOadpea6kOeahOi1hOaWmScsICflsaLmrKHlop7liqDmspLmnInlj6/pnaDkvobmupDnmoTos4fmlpknKSwgdmFsdWU6ICd1Y2Jsb2NrJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCflnKjmnaHnm67kuK3lop7liqDml6DmhI/kuYnmloflrZcnLCAn5Zyo5qKd55uu5Lit5aKe5Yqg54Sh5oSP576p5paH5a2XJyksIHZhbHVlOiAnbnBibG9jayd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5oyB57ut5omT5Yi25bqm5pOm6L6555CDJywgJ+aMgee6jOaJk+WItuW6puaTpumCiueQgycpLCB2YWx1ZTogJ3BvaW50LWJsb2NrJ30sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ehruiupOS4uuWCgOWEoeaIluecn+S6uuWCgOWEoe+8iOagueaNrueUqOaIt+i0oeeMruehruWumu+8iScsXG5cdFx0XHRcdFx0XHQn56K66KqN54K65YKA5YSh5oiW55yf5Lq65YKA5YSh77yI5qC55pOa5L2/55So6ICF6LKi542756K65a6a77yJJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6ICdzb2NrLWNvbnRyaWJzJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn56Gu6K6k5Li65YKA5YSh5oiW55yf5Lq65YKA5YSh77yI55So5oi35p+l5qC456Gu6K6k77yJJyxcblx0XHRcdFx0XHRcdCfnorroqo3ngrrlgoDlhKHmiJbnnJ/kurrlgoDlhKHvvIjkvb/nlKjogIXmn6XmoLjnorroqo3vvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogJ3NvY2stY3UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5py65Zmo5Lq65Y+R55Sf5pWF6Zqc5bm25b+F6aG757Sn5oCl5YGc5q2iJywgJ+apn+WZqOS6uueZvOeUn+aVhemanOS4puW/hemgiOe3iuaApeWBnOatoicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnQm90IGJsb2NrIG1lc3NhZ2UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGN1c3RvbTogdHJ1ZSxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieWwgeemgeeQhueUsScsICfoh6roqILlsIHpjpbnkIbnlLEnKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+WQjeWwgeemgScsICfkvb/nlKjogIXlkI3nqLHlsIHpjpYnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+i/neWPjeeUqOaIt+WQjeaWuemSiCcsICfpgZXlj43kvb/nlKjogIXlkI3nqLHmlrnph50nKSwgdmFsdWU6ICd1dy11YmxvY2snfSxcblx0XHRcdFx0e2xhYmVsOiB3aW5kb3cud2dVTFMoJ+S4jeWQiOinhOeahOeUqOaIt+WQjScsICfkuI3lkIjopo/nmoTkvb/nlKjogIXlkI3nqLEnKSwgdmFsdWU6ICd1dy11YmxvY2staWxsZWdhbCd9LFxuXHRcdFx0XHR7bGFiZWw6IHdpbmRvdy53Z1VMUygn5a6j5Lyg5oCn55So5oi35ZCNJywgJ+Wuo+WCs+aAp+S9v+eUqOiAheWQjeeosScpLCB2YWx1ZTogJ3V3LXVibG9jay1zcGFtJ30sXG5cdFx0XHRcdHtsYWJlbDogd2luZG93LndnVUxTKCfmlLvlh7vmgKfnlKjmiLflkI0nLCAn5pS75pOK5oCn5L2/55So6ICF5ZCN56ixJyksIHZhbHVlOiAndXctdWJsb2NrLWF0dGFjayd9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5re35reG5oCn5oiW6K+v5a+85oCn55So5oi35ZCNJywgJ+a3t+a3huaAp+aIluiqpOWwjuaAp+S9v+eUqOiAheWQjeeosScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndXctdWJsb2NrLXN1Z2dlc3RpdmUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAn5YW25LuW5qih5p2/Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e2xhYmVsOiAncmFuZ2UgYmxvY2snLCB2YWx1ZTogJ3JhbmdlIGJsb2NrJywgZm9yQW5vbk9ubHk6IHRydWV9LFxuXHRcdFx0XHR7bGFiZWw6ICdzY2hvb2wgYmxvY2snLCB2YWx1ZTogJ3NjaG9vbCBibG9jaycsIGZvckFub25Pbmx5OiB0cnVlfSxcblx0XHRcdFx0e2xhYmVsOiAnYmxvY2tlZCBwcm94eScsIHZhbHVlOiAnYmxvY2tlZCBwcm94eScsIGZvckFub25Pbmx5OiB0cnVlfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+afpeaguOWwgeemge+8iOS4u+eUqOaIt++8iScsICfkvb/nlKjogIXmn6XmoLjlsIHpjpbvvIjkuLvkvb/nlKjogIXvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2NoZWNrdXNlcmJsb2NrJyxcblx0XHRcdFx0XHRmb3JBbm9uT25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+afpeaguOWwgeemge+8iOWtkOeUqOaIt++8iScsICfkvb/nlKjogIXmn6XmoLjlsIHpjpbvvIjlrZDkvb/nlKjogIXvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2NoZWNrdXNlcmJsb2NrLWFjY291bnQnLFxuXHRcdFx0XHRcdGZvclJlZ2lzdGVyZWRPbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmJsb2NrLmJsb2NrR3JvdXBzUGFydGlhbCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfluLjop4Hpg6jliIblsIHnpoHnkIbnlLEnLCAn5bi46KaL6YOo5YiG5bCB6Y6W55CG55SxJyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrnlKjpg6jliIblsIHnpoHvvIjoh6rlrprkuYnnkIbnlLHvvIknLCAn6YCa55So6YOo5YiG5bCB6Y6W77yI6Ieq6KiC55CG55Sx77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd1dy1wYmxvY2snLFxuXHRcdFx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyf6YOo5YiG5bCB56aB77yI6Ieq5a6a5LmJ55CG55Sx77yJJywgJ+eEoemZkOacn+mDqOWIhuWwgemOlu+8iOiHquiogueQhueUse+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndXctcGJsb2NraW5kZWYnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmZpbHRlcmVkX2Jsb2NrX2dyb3VwcyA9IChncm91cCwgc2hvd190ZW1wbGF0ZSkgPT4ge1xuXHRcdHJldHVybiAkLm1hcChncm91cCwgKGJsb2NrR3JvdXApID0+IHtcblx0XHRcdC8vIEFkZCBjdXN0b20gcmVhc29uXG5cdFx0XHRpZiAoYmxvY2tHcm91cC5jdXN0b20pIHtcblx0XHRcdFx0aWYgKHNob3dfdGVtcGxhdGUpIHtcblx0XHRcdFx0XHRsZXQgdGVtcGxhdGVzID0gJC5tYXAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21CbG9ja1JlYXNvbkxpc3QnKSwgKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdGlmIChUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9baXRlbS52YWx1ZV0uY3VzdG9tKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpdGVtLnZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRlbXBsYXRlcyA9IE1vcmViaXRzLmFycmF5LnVuaXEodGVtcGxhdGVzKTtcblx0XHRcdFx0XHRibG9ja0dyb3VwLmxpc3QgPSAkLm1hcCh0ZW1wbGF0ZXMsICh0ZW1wbGF0ZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogdGVtcGxhdGUsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGJsb2NrR3JvdXAubGlzdCA9ICQubWFwKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tQmxvY2tSZWFzb25MaXN0JyksIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogaXRlbS5sYWJlbCxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGAke2l0ZW0udmFsdWV9fCR7aXRlbS5sYWJlbH1gLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbGlzdCA9ICQubWFwKGJsb2NrR3JvdXAubGlzdCwgKGJsb2NrUHJlc2V0KSA9PiB7XG5cdFx0XHRcdGlmICghc2hvd190ZW1wbGF0ZSAmJiBibG9ja1ByZXNldC5tZXRhKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN3aXRjaCAoYmxvY2tQcmVzZXQudmFsdWUpIHtcblx0XHRcdFx0XHRjYXNlICdyYW5nZSBibG9jayc6XG5cdFx0XHRcdFx0XHRpZiAoIU1vcmViaXRzLmlwLmlzUmFuZ2UocmVsZXZhbnRVc2VyTmFtZSkpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YmxvY2tQcmVzZXQuc2VsZWN0ZWQgPSAhTW9yZWJpdHMuaXAuZ2V0NjQocmVsZXZhbnRVc2VyTmFtZSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgYmxvY2tTZXR0aW5ncyA9IFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tibG9ja1ByZXNldC52YWx1ZV07XG5cdFx0XHRcdGxldCByZWdpc3RyYXRpb25SZXN0cmljdDtcblx0XHRcdFx0aWYgKGJsb2NrU2V0dGluZ3MuZm9yUmVnaXN0ZXJlZE9ubHkpIHtcblx0XHRcdFx0XHRyZWdpc3RyYXRpb25SZXN0cmljdCA9IFR3aW5rbGUuYmxvY2suaXNSZWdpc3RlcmVkO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGJsb2NrU2V0dGluZ3MuZm9yQW5vbk9ubHkpIHtcblx0XHRcdFx0XHRyZWdpc3RyYXRpb25SZXN0cmljdCA9ICFUd2lua2xlLmJsb2NrLmlzUmVnaXN0ZXJlZDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZWdpc3RyYXRpb25SZXN0cmljdCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCEoYmxvY2tTZXR0aW5ncy50ZW1wbGF0ZU5hbWUgJiYgc2hvd190ZW1wbGF0ZSkgJiYgcmVnaXN0cmF0aW9uUmVzdHJpY3QpIHtcblx0XHRcdFx0XHRjb25zdCB0ZW1wbGF0ZU5hbWUgPSBibG9ja1NldHRpbmdzLnRlbXBsYXRlTmFtZSB8fCBibG9ja1ByZXNldC52YWx1ZTtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0bGFiZWw6IChzaG93X3RlbXBsYXRlID8gYHt7JHt0ZW1wbGF0ZU5hbWV9fX06IGAgOiAnJykgKyBibG9ja1ByZXNldC5sYWJlbCxcblx0XHRcdFx0XHRcdHZhbHVlOiBibG9ja1ByZXNldC52YWx1ZSxcblx0XHRcdFx0XHRcdGRhdGE6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICd0ZW1wbGF0ZS1uYW1lJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdGVtcGxhdGVOYW1lLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiAhIWJsb2NrUHJlc2V0LnNlbGVjdGVkLFxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ6ICEhYmxvY2tQcmVzZXQuZGlzYWJsZWQsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRpZiAobGlzdC5sZW5ndGgpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRsYWJlbDogYmxvY2tHcm91cC5sYWJlbCxcblx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV9wcmVzZXQgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IGtleSA9IGZvcm0ucHJlc2V0LnZhbHVlO1xuXHRcdGlmICgha2V5KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudXBkYXRlX2Zvcm0oZSwgVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2tleV0pO1xuXHRcdGlmIChmb3JtLnRlbXBsYXRlKSB7XG5cdFx0XHRmb3JtLnRlbXBsYXRlLnZhbHVlID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2tleV0udGVtcGxhdGVOYW1lIHx8IGtleTtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2hhbmdlX3RlbXBsYXRlKGUpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5jaGFuZ2VfZXhwaXJ5ID0gKGUpID0+IHtcblx0XHRjb25zdCB7ZXhwaXJ5fSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0aWYgKGUudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGV4cGlyeS5wYXJlbnROb2RlLCB0cnVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5KGV4cGlyeS5wYXJlbnROb2RlLCBmYWxzZSk7XG5cdFx0XHRleHBpcnkudmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suc2VlQWxzb3MgPSBbXTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay50b2dnbGVfc2VlX2Fsc29zID0gZnVuY3Rpb24gKCkge1xuXHRcdGNvbnN0IHJlYXNvbiA9IHRoaXMuZm9ybS5yZWFzb24udmFsdWUucmVwbGFjZShcblx0XHRcdG5ldyBSZWdFeHAoYCg8IS0tICko5Y+C6KeBfOWPg+imiykke1R3aW5rbGUuYmxvY2suc2VlQWxzb3Muam9pbign44CBJyl9KCAtLT4pYCksXG5cdFx0XHQnJ1xuXHRcdCk7XG5cdFx0VHdpbmtsZS5ibG9jay5zZWVBbHNvcyA9IFR3aW5rbGUuYmxvY2suc2VlQWxzb3MuZmlsdGVyKChlbCkgPT4ge1xuXHRcdFx0cmV0dXJuIGVsICE9PSB0aGlzLnZhbHVlO1xuXHRcdH0pO1xuXHRcdGlmICh0aGlzLmNoZWNrZWQpIHtcblx0XHRcdFR3aW5rbGUuYmxvY2suc2VlQWxzb3NbVHdpbmtsZS5ibG9jay5zZWVBbHNvcy5sZW5ndGhdID0gdGhpcy52YWx1ZTtcblx0XHR9XG5cdFx0Y29uc3Qgc2VlQWxzb01lc3NhZ2UgPSBUd2lua2xlLmJsb2NrLnNlZUFsc29zLmpvaW4oJ+OAgScpO1xuXHRcdGlmIChUd2lua2xlLmJsb2NrLnNlZUFsc29zLmxlbmd0aCkge1xuXHRcdFx0dGhpcy5mb3JtLnJlYXNvbi52YWx1ZSA9IGAke3JlYXNvbn08IS0tICR7d2luZG93LndnVUxTKCflj4Lop4EnLCAn5Y+D6KaLJyl9JHtzZWVBbHNvTWVzc2FnZX0gLS0+YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5mb3JtLnJlYXNvbi52YWx1ZSA9IHJlYXNvbjtcblx0XHR9XG5cdH07XG5cdC8vIE5vIGRzXG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2sudXBkYXRlX2Zvcm0gPSAoZSwgZGF0YSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGxldCB7ZXhwaXJ5fSA9IGRhdGE7XG5cdFx0Ly8gZG9uJ3Qgb3ZlcnJpZGUgb3JpZ2luYWwgZXhwaXJ5IGlmIHVzZUluaXRpYWxPcHRpb25zIGlzIHNldFxuXHRcdGlmICghZGF0YS51c2VJbml0aWFsT3B0aW9ucykge1xuXHRcdFx0aWYgKERhdGUucGFyc2UoZXhwaXJ5KSkge1xuXHRcdFx0XHRleHBpcnkgPSBuZXcgRGF0ZShleHBpcnkpLnRvR01UU3RyaW5nKCk7XG5cdFx0XHRcdGZvcm0uZXhwaXJ5X3ByZXNldC52YWx1ZSA9ICdjdXN0b20nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9ybS5leHBpcnlfcHJlc2V0LnZhbHVlID0gZGF0YS5leHBpcnkgfHwgJ2N1c3RvbSc7XG5cdFx0XHR9XG5cdFx0XHRmb3JtLmV4cGlyeS52YWx1ZSA9IGV4cGlyeTtcblx0XHRcdGlmIChmb3JtLmV4cGlyeV9wcmVzZXQudmFsdWUgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VmlzaWJpbGl0eShmb3JtLmV4cGlyeS5wYXJlbnROb2RlLCB0cnVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VmlzaWJpbGl0eShmb3JtLmV4cGlyeS5wYXJlbnROb2RlLCBmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGJvb2xlYW4tZmxpcHBlZCBvcHRpb25zLCBtb3JlIGF0IFtbbXc6QVBJOkJsb2NrXV1cblx0XHRkYXRhLmRpc2FibGV0YWxrID0gZGF0YS5kaXNhYmxldGFsayA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBkYXRhLmRpc2FibGV0YWxrO1xuXHRcdGRhdGEuaGFyZGJsb2NrID0gZGF0YS5oYXJkYmxvY2sgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogZGF0YS5oYXJkYmxvY2s7XG5cdFx0Ly8gZGlzYWJsZSBhdXRvYmxvY2sgaWYgYmxvY2tpbmcgYSBib3Rcblx0XHRpZiAoVHdpbmtsZS5ibG9jay51c2VySXNCb3QgfHwgL2JvdFxcYi9pLnRlc3QocmVsZXZhbnRVc2VyTmFtZSkpIHtcblx0XHRcdGRhdGEuYXV0b2Jsb2NrID0gZmFsc2U7XG5cdFx0fVxuXHRcdCQoZm9ybSlcblx0XHRcdC5maW5kKCdbbmFtZT1maWVsZF9ibG9ja19vcHRpb25zXScpXG5cdFx0XHQuZmluZCgnOmNoZWNrYm94Jylcblx0XHRcdC5lYWNoKChfaSwgZWwpID0+IHtcblx0XHRcdFx0Ly8gZG9uJ3Qgb3ZlcnJpZGUgb3JpZ2luYWwgb3B0aW9ucyBpZiB1c2VJbml0aWFsT3B0aW9ucyBpcyBzZXRcblx0XHRcdFx0aWYgKGRhdGEudXNlSW5pdGlhbE9wdGlvbnMgJiYgZGF0YVtlbC5uYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChlbC5uYW1lID09PSAnY2xvc2V2aXAnKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGNoZWNrID0gZGF0YVtlbC5uYW1lXSA9PT0gJycgfHwgISFkYXRhW2VsLm5hbWVdO1xuXHRcdFx0XHQkKGVsKS5wcm9wKCdjaGVja2VkJywgY2hlY2spO1xuXHRcdFx0fSk7XG5cdFx0aWYgKGRhdGEucHJlcGVuZFJlYXNvbiAmJiBkYXRhLnJlYXNvbikge1xuXHRcdFx0Zm9ybS5yZWFzb24udmFsdWUgPSBgJHtkYXRhLnJlYXNvbn3vvJske2Zvcm0ucmVhc29uLnZhbHVlfWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcm0ucmVhc29uLnZhbHVlID0gZGF0YS5yZWFzb24gfHwgJyc7XG5cdFx0fVxuXHRcdC8vIENsZWFyIGFuZC9vciBzZXQgYW55IHBhcnRpYWwgcGFnZSBvciBuYW1lc3BhY2UgcmVzdHJpY3Rpb25zXG5cdFx0aWYgKGZvcm0ucGFnZXJlc3RyaWN0aW9ucykge1xuXHRcdFx0Y29uc3QgJHBhZ2VTZWxlY3QgPSAkKGZvcm0pLmZpbmQoJ1tuYW1lPXBhZ2VyZXN0cmljdGlvbnNdJyk7XG5cdFx0XHRjb25zdCAkbmFtZXNwYWNlU2VsZWN0ID0gJChmb3JtKS5maW5kKCdbbmFtZT1uYW1lc3BhY2VyZXN0cmljdGlvbnNdJyk7XG5cdFx0XHQvLyBSZXNwZWN0IHVzZUluaXRpYWxPcHRpb25zIGJ5IGNsZWFyaW5nIGRhdGEgd2hlbiBzd2l0Y2hpbmcgcHJlc2V0c1xuXHRcdFx0Ly8gSW4gcHJhY3RpY2UsIHRoaXMgd2lsbCBhbHdheXMgY2xlYXIsIHNpbmNlIG5vIHBhcnRpYWwgcHJlc2V0cyB1c2UgaXRcblx0XHRcdGlmICghZGF0YS51c2VJbml0aWFsT3B0aW9ucykge1xuXHRcdFx0XHQkcGFnZVNlbGVjdC52YWwobnVsbCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0XHRcdCRuYW1lc3BhY2VTZWxlY3QudmFsKG51bGwpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQWRkIGFueSBwcmVzZXQgb3B0aW9uczsgaW4gcHJhY3RpY2UsIGp1c3QgdXNlZCBmb3IgcHJpb3IgYmxvY2sgc2V0dGluZ3Ncblx0XHRcdGlmIChkYXRhLnJlc3RyaWN0aW9ucykge1xuXHRcdFx0XHRpZiAoZGF0YS5yZXN0cmljdGlvbnMucGFnZXMgJiYgISRwYWdlU2VsZWN0LnZhbCgpLmxlbmd0aCkge1xuXHRcdFx0XHRcdGNvbnN0IHBhZ2VzID0gZGF0YS5yZXN0cmljdGlvbnMucGFnZXMubWFwKChwcikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHByLnRpdGxlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8vIHNpbmNlIHBhZ2UgcmVzdHJpY3Rpb25zIHVzZSBhbiBhamF4IHNvdXJjZSwgd2Vcblx0XHRcdFx0XHQvLyBzaG9ydC1jaXJjdWl0IHRoYXQgYW5kIGp1c3QgYWRkIGEgbmV3IG9wdGlvblxuXHRcdFx0XHRcdGZvciAoY29uc3QgcGFnZSBvZiBwYWdlcykge1xuXHRcdFx0XHRcdFx0aWYgKCEkcGFnZVNlbGVjdC5maW5kKGBvcHRpb25bdmFsdWU9JyR7JC5lc2NhcGVTZWxlY3RvcihwYWdlKX0nXWApLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuZXdPcHRpb24gPSBuZXcgT3B0aW9uKHBhZ2UsIHBhZ2UsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRcdFx0XHQkcGFnZVNlbGVjdC5hcHBlbmQobmV3T3B0aW9uKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0JHBhZ2VTZWxlY3QudmFsKFsuLi4kcGFnZVNlbGVjdC52YWwoKSwgLi4uZ2VuZXJhdGVBcnJheShwYWdlcyldKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5yZXN0cmljdGlvbnMubmFtZXNwYWNlcykge1xuXHRcdFx0XHRcdCRuYW1lc3BhY2VTZWxlY3Rcblx0XHRcdFx0XHRcdC52YWwoWy4uLiRuYW1lc3BhY2VTZWxlY3QudmFsKCksIC4uLmdlbmVyYXRlQXJyYXkoZGF0YS5yZXN0cmljdGlvbnMubmFtZXNwYWNlcyldKVxuXHRcdFx0XHRcdFx0LnRyaWdnZXIoJ2NoYW5nZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNoYW5nZV90ZW1wbGF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGZvcm0udGVtcGxhdGU7XG5cdFx0Y29uc3Qgc2V0dGluZ3MgPSBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bdmFsdWVdO1xuXHRcdGNvbnN0IGJsb2NrQm94ID0gJChmb3JtKS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1ibG9ja10nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCBwYXJ0aWFsQm94ID0gJChmb3JtKS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wYXJ0aWFsXScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0IHRlbXBsYXRlQm94ID0gJChmb3JtKS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT10ZW1wbGF0ZV0nKS5pcygnOmNoZWNrZWQnKTtcblx0XHQvLyBCbG9jayBmb3JtIGlzIG5vdCBwcmVzZW50XG5cdFx0aWYgKCFibG9ja0JveCkge1xuXHRcdFx0aWYgKHNldHRpbmdzLmluZGVmaW5pdGUgfHwgc2V0dGluZ3Mubm9uc3RhbmRhcmQpIHtcblx0XHRcdFx0aWYgKFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnkgPT09IG51bGwpIHtcblx0XHRcdFx0XHRUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ID0gZm9ybS50ZW1wbGF0ZV9leHBpcnkudmFsdWUgfHwgJyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9ybS50ZW1wbGF0ZV9leHBpcnkucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdFx0XHRmb3JtLnRlbXBsYXRlX2V4cGlyeS52YWx1ZSA9ICdpbmZpbml0eSc7XG5cdFx0XHR9IGVsc2UgaWYgKGZvcm0udGVtcGxhdGVfZXhwaXJ5LnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5ICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0Zm9ybS50ZW1wbGF0ZV9leHBpcnkudmFsdWUgPSBUd2lua2xlLmJsb2NrLnByZXZfdGVtcGxhdGVfZXhwaXJ5O1xuXHRcdFx0XHRcdFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnkgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0udGVtcGxhdGVfZXhwaXJ5LnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cdFx0XHR9XG5cdFx0XHRpZiAoVHdpbmtsZS5ibG9jay5wcmV2X3RlbXBsYXRlX2V4cGlyeSkge1xuXHRcdFx0XHRmb3JtLmV4cGlyeS52YWx1ZSA9IFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5ub3RhbGsucGFyZW50Tm9kZSwgIXNldHRpbmdzLm5vbnN0YW5kYXJkKTtcblx0XHRcdC8vIFBhcnRpYWxcblx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VmlzaWJpbGl0eShmb3JtLm5vZW1haWxfdGVtcGxhdGUucGFyZW50Tm9kZSwgcGFydGlhbEJveCk7XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5ub2NyZWF0ZV90ZW1wbGF0ZS5wYXJlbnROb2RlLCBwYXJ0aWFsQm94KTtcblx0XHR9IGVsc2UgaWYgKHRlbXBsYXRlQm94KSB7XG5cdFx0XHQvLyBPbmx5IHByZXNlbnQgaWYgYmxvY2sgJiYgdGVtcGxhdGUgZm9ybXMgYm90aCB2aXNpYmxlXG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoXG5cdFx0XHRcdGZvcm0uYmxhbmtfZHVyYXRpb24ucGFyZW50Tm9kZSxcblx0XHRcdFx0IXNldHRpbmdzLmluZGVmaW5pdGUgJiYgIXNldHRpbmdzLm5vbnN0YW5kYXJkXG5cdFx0XHQpO1xuXHRcdH1cblx0XHQvLyBPbmx5IHBhcnRpY3VsYXJseSByZWxldmFudCBpZiB0ZW1wbGF0ZSBmb3JtIGlzIHByZXNlbnRcblx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5hcnRpY2xlLnBhcmVudE5vZGUsIHNldHRpbmdzICYmICEhc2V0dGluZ3MucGFnZVBhcmFtKTtcblx0XHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFZpc2liaWxpdHkoZm9ybS5ibG9ja19yZWFzb24ucGFyZW50Tm9kZSwgc2V0dGluZ3MgJiYgISFzZXR0aW5ncy5yZWFzb25QYXJhbSk7XG5cdFx0Ly8gQXBwbHkgcmVhc29uIGZyb20gYmxvY2tQcmVzZXRzSW5mb1xuXHRcdGlmIChzZXR0aW5ncy5yZWFzb25QYXJhbSkge1xuXHRcdFx0Zm9ybS5ibG9ja19yZWFzb24udmFsdWUgPSBUd2lua2xlLmJsb2NrLmJsb2NrUHJlc2V0c0luZm9bZm9ybS5wcmVzZXQudmFsdWVdLnJlYXNvbiB8fCAnJztcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9ybS5ibG9ja19yZWFzb24udmFsdWUgPSAnJztcblx0XHR9XG5cdFx0Ly8gUGFydGlhbCBibG9ja1xuXHRcdE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50VmlzaWJpbGl0eShmb3JtLmFyZWEucGFyZW50Tm9kZSwgcGFydGlhbEJveCAmJiAhYmxvY2tCb3gpO1xuXHRcdGZvcm0ucm9vdC5wcmV2aWV3ZXIuY2xvc2VQcmV2aWV3KCk7XG5cdH07XG5cdFR3aW5rbGUuYmxvY2sucHJldl90ZW1wbGF0ZV9leHBpcnkgPSBudWxsO1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnByZXZpZXcgPSAoZm9ybSkgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHtcblx0XHRcdGFydGljbGU6IGZvcm0uYXJ0aWNsZS52YWx1ZSxcblx0XHRcdGJsYW5rX2R1cmF0aW9uOiBmb3JtLmJsYW5rX2R1cmF0aW9uID8gZm9ybS5ibGFua19kdXJhdGlvbi5jaGVja2VkIDogZmFsc2UsXG5cdFx0XHRkaXNhYmxldGFsazogZm9ybS5kaXNhYmxldGFsay5jaGVja2VkIHx8IChmb3JtLm5vdGFsayA/IGZvcm0ubm90YWxrLmNoZWNrZWQgOiBmYWxzZSksXG5cdFx0XHRleHBpcnk6IGZvcm0udGVtcGxhdGVfZXhwaXJ5ID8gZm9ybS50ZW1wbGF0ZV9leHBpcnkudmFsdWUgOiBmb3JtLmV4cGlyeS52YWx1ZSxcblx0XHRcdGhhcmRibG9jazogVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQgPyBmb3JtLmF1dG9ibG9jay5jaGVja2VkIDogZm9ybS5oYXJkYmxvY2suY2hlY2tlZCxcblx0XHRcdGluZGVmaW5pdGU6IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KFxuXHRcdFx0XHRmb3JtLnRlbXBsYXRlX2V4cGlyeSA/IGZvcm0udGVtcGxhdGVfZXhwaXJ5LnZhbHVlIDogZm9ybS5leHBpcnkudmFsdWVcblx0XHRcdCksXG5cdFx0XHRyZWFzb246IGZvcm0uYmxvY2tfcmVhc29uLnZhbHVlLFxuXHRcdFx0dGVtcGxhdGU6IGZvcm0udGVtcGxhdGUudmFsdWUsXG5cdFx0XHRwYXJ0aWFsOiAkKGZvcm0pLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXBhcnRpYWxdJykuaXMoJzpjaGVja2VkJyksXG5cdFx0XHRwYWdlcmVzdHJpY3Rpb25zOiAkKGZvcm0ucGFnZXJlc3RyaWN0aW9ucykudmFsKCkgfHwgW10sXG5cdFx0XHRuYW1lc3BhY2VyZXN0cmljdGlvbnM6ICQoZm9ybS5uYW1lc3BhY2VyZXN0cmljdGlvbnMpLnZhbCgpIHx8IFtdLFxuXHRcdFx0bm9lbWFpbDogZm9ybS5ub2VtYWlsLmNoZWNrZWQgfHwgKGZvcm0ubm9lbWFpbF90ZW1wbGF0ZSA/IGZvcm0ubm9lbWFpbF90ZW1wbGF0ZS5jaGVja2VkIDogZmFsc2UpLFxuXHRcdFx0bm9jcmVhdGU6IGZvcm0ubm9jcmVhdGUuY2hlY2tlZCB8fCAoZm9ybS5ub2NyZWF0ZV90ZW1wbGF0ZSA/IGZvcm0ubm9jcmVhdGVfdGVtcGxhdGUuY2hlY2tlZCA6IGZhbHNlKSxcblx0XHRcdGFyZWE6IGZvcm0uYXJlYS52YWx1ZSxcblx0XHR9O1xuXHRcdGNvbnN0IHRlbXBsYXRlVGV4dCA9IFR3aW5rbGUuYmxvY2suY2FsbGJhY2suZ2V0QmxvY2tOb3RpY2VXaWtpdGV4dChwYXJhbXMpO1xuXHRcdGZvcm0ucHJldmlld2VyLmJlZ2luUmVuZGVyKHRlbXBsYXRlVGV4dCwgYFVzZXJfdGFsazoke3JlbGV2YW50VXNlck5hbWV9L1dpa2l0ZXh0YCk7IC8vIEZvcmNlIHdpa2l0ZXh0L2NvcnJlY3QgdXNlcm5hbWVcblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShlLnRhcmdldCk7XG5cdFx0Y29uc3QgJGZvcm0gPSAkKGUudGFyZ2V0KTtcblx0XHRjb25zdCB0b0Jsb2NrID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9YmxvY2tdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgdG9XYXJuID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9dGVtcGxhdGVdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0Y29uc3QgdG9QYXJ0aWFsID0gJGZvcm0uZmluZCgnW25hbWU9YWN0aW9udHlwZV1bdmFsdWU9cGFydGlhbF0nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCB0b1RhZyA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXRhZ10nKS5pcygnOmNoZWNrZWQnKTtcblx0XHRjb25zdCB0b1Byb3RlY3QgPSAkZm9ybS5maW5kKCdbbmFtZT1hY3Rpb250eXBlXVt2YWx1ZT1wcm90ZWN0XScpLmlzKCc6Y2hlY2tlZCcpO1xuXHRcdGNvbnN0IHRvVW5ibG9jayA9ICRmb3JtLmZpbmQoJ1tuYW1lPWFjdGlvbnR5cGVdW3ZhbHVlPXVuYmxvY2tdJykuaXMoJzpjaGVja2VkJyk7XG5cdFx0bGV0IGJsb2Nrb3B0aW9ucyA9IHt9O1xuXHRcdGxldCB0ZW1wbGF0ZW9wdGlvbnMgPSB7fTtcblx0XHRsZXQgdW5ibG9ja29wdGlvbnMgPSB7fTtcblx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCgkZm9ybS5maW5kKCdbbmFtZT1maWVsZF9ibG9ja19vcHRpb25zXScpKTtcblx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCgkZm9ybS5maW5kKCdbbmFtZT1maWVsZF90ZW1wbGF0ZV9vcHRpb25zXScpKTtcblx0XHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnNhdmVGaWVsZHNldCgkZm9ybS5maW5kKCdbbmFtZT1maWVsZF90YWdfb3B0aW9uc10nKSk7XG5cdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5zYXZlRmllbGRzZXQoJGZvcm0uZmluZCgnW25hbWU9ZmllbGRfdW5ibG9ja19vcHRpb25zXScpKTtcblx0XHRibG9ja29wdGlvbnMgPSBUd2lua2xlLmJsb2NrLmZpZWxkX2Jsb2NrX29wdGlvbnM7XG5cdFx0dW5ibG9ja29wdGlvbnMgPSBUd2lua2xlLmJsb2NrLmZpZWxkX3VuYmxvY2tfb3B0aW9ucztcblx0XHRjb25zdCB0b0Nsb3NldmlwID0gISFibG9ja29wdGlvbnMuY2xvc2V2aXA7XG5cdFx0dGVtcGxhdGVvcHRpb25zID0gVHdpbmtsZS5ibG9jay5maWVsZF90ZW1wbGF0ZV9vcHRpb25zO1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5kaXNhYmxldGFsayA9ICEhKHRlbXBsYXRlb3B0aW9ucy5kaXNhYmxldGFsayB8fCBibG9ja29wdGlvbnMuZGlzYWJsZXRhbGspO1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5oYXJkYmxvY2sgPSAhIWJsb2Nrb3B0aW9ucy5oYXJkYmxvY2s7XG5cdFx0Ly8gcmVtb3ZlIGV4dHJhbmVvdXNcblx0XHRkZWxldGUgYmxvY2tvcHRpb25zLmV4cGlyeV9wcmVzZXQ7XG5cdFx0ZGVsZXRlIGJsb2Nrb3B0aW9ucy5jbG9zZXZpcDtcblx0XHQvLyBQYXJ0aWFsIEFQSSByZXF1aXJlcyB0aGlzIHRvIGJlIGdvbmUsIG5vdCBmYWxzZSBvciAwXG5cdFx0aWYgKHRvUGFydGlhbCkge1xuXHRcdFx0YmxvY2tvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuXHRcdFx0dGVtcGxhdGVvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuXHRcdH1cblx0XHR0ZW1wbGF0ZW9wdGlvbnMucGFnZXJlc3RyaWN0aW9ucyA9ICRmb3JtLmZpbmQoJ1tuYW1lPXBhZ2VyZXN0cmljdGlvbnNdJykudmFsKCkgfHwgW107XG5cdFx0dGVtcGxhdGVvcHRpb25zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucyA9ICRmb3JtLmZpbmQoJ1tuYW1lPW5hbWVzcGFjZXJlc3RyaWN0aW9uc10nKS52YWwoKSB8fCBbXTtcblx0XHQvLyBGb3JtYXQgZm9yIEFQSSBoZXJlIHJhdGhlciB0aGFuIGluIHNhdmVGaWVsZHNldFxuXHRcdGJsb2Nrb3B0aW9ucy5wYWdlcmVzdHJpY3Rpb25zID0gdGVtcGxhdGVvcHRpb25zLnBhZ2VyZXN0cmljdGlvbnMuam9pbignfCcpO1xuXHRcdGJsb2Nrb3B0aW9ucy5uYW1lc3BhY2VyZXN0cmljdGlvbnMgPSB0ZW1wbGF0ZW9wdGlvbnMubmFtZXNwYWNlcmVzdHJpY3Rpb25zLmpvaW4oJ3wnKTtcblx0XHQvLyB1c2UgYmxvY2sgc2V0dGluZ3MgYXMgd2FybiBvcHRpb25zIHdoZXJlIG5vdCBzdXBwbGllZFxuXHRcdHRlbXBsYXRlb3B0aW9ucy5zdW1tYXJ5IHx8PSBibG9ja29wdGlvbnMucmVhc29uO1xuXHRcdHRlbXBsYXRlb3B0aW9ucy5leHBpcnkgPSB0ZW1wbGF0ZW9wdGlvbnMudGVtcGxhdGVfZXhwaXJ5IHx8IGJsb2Nrb3B0aW9ucy5leHBpcnk7XG5cdFx0dGVtcGxhdGVvcHRpb25zLnByZXNldCA9IHRvQmxvY2sgPyBwYXJhbXMucHJlc2V0IDogbnVsbDtcblx0XHQvLyBDaGVjayB0YWdzXG5cdFx0Ly8gR2l2ZW4gYW4gYXJyYXkgb2YgaW5jb21wYXRpYmxlIHRhZ3MsIGNoZWNrIGlmIHdlIGhhdmUgdHdvIG9yIG1vcmUgc2VsZWN0ZWRcblx0XHRjb25zdCBjaGVja0luY29tcGF0aWJsZSA9IChjb25mbGljdHMsIGV4dHJhKSA9PiB7XG5cdFx0XHRjb25zdCBjb3VudCA9IGNvbmZsaWN0cy5yZWR1Y2UoKHN1bSwgdGFnKSA9PiB7XG5cdFx0XHRcdHJldHVybiAoc3VtICs9IHBhcmFtcy50YWcuaW5jbHVkZXModGFnKSk7XG5cdFx0XHR9LCAwKTtcblx0XHRcdGlmIChjb3VudCA+IDEpIHtcblx0XHRcdFx0bGV0IG1lc3NhZ2UgPSBgJHt3aW5kb3cud2dVTFMoJ+ivt+WcqOS7peS4i+agh+etvuS4reaLqeS4gOS9v+eUqCcsICfoq4vlnKjku6XkuIvmqJnnsaTkuK3mk4fkuIDkvb/nlKgnKX3vvJp7eyR7Y29uZmxpY3RzLmpvaW4oXG5cdFx0XHRcdFx0J31944CBe3snXG5cdFx0XHRcdCl9fX3jgIJgO1xuXHRcdFx0XHRtZXNzYWdlICs9IGV4dHJhIHx8ICcnO1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShtZXNzYWdlLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdGlmICh0b1RhZykge1xuXHRcdFx0aWYgKHBhcmFtcy50YWcubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+36Iez5bCR6YCJ5oup5LiA5Liq55So5oi36aG15qCH6K6w77yBJywgJ+iri+iHs+WwkemBuOaTh+S4gOWAi+S9v+eUqOiAhemggemdouaomeiomO+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNoZWNrSW5jb21wYXRpYmxlKFxuXHRcdFx0XHRcdFsnQmxvY2tlZCB1c2VyJywgJ1NvY2twdXBwZXQnXSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQne3tTb2NrcHVwcGV0fX3lt7LmtrXnm5Z7e0Jsb2NrZWQgdXNlcn1955qE5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCd7e1NvY2twdXBwZXR9feW3sua2teiTi3t7QmxvY2tlZCB1c2VyfX3nmoTlip/og73jgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjaGVja0luY29tcGF0aWJsZShcblx0XHRcdFx0XHRbJ0Jsb2NrZWQgdXNlcicsICdTb2NrcHVwcGV0ZWVyJ10sXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J3t7U29ja3B1cHBldGVlcn195bey5ra155uWe3tCbG9ja2VkIHVzZXJ9feeahOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQne3tTb2NrcHVwcGV0ZWVyfX3lt7LmtrXok4t7e0Jsb2NrZWQgdXNlcn1955qE5Yqf6IO944CCJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0Y2hlY2tJbmNvbXBhdGlibGUoXG5cdFx0XHRcdFx0WydTb2NrcHVwcGV0JywgJ1NvY2twdXBwZXRlZXInXSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+S7juS4u+i0puWPt+WSjOWIhui6q+i0puWPt+S4remAieaLqeS4gOS4quOAgicsICfoq4vlvp7kuLvos6zomZ/lkozliIbouqvos6zomZ/kuK3pgbjmk4fkuIDlgIvjgIInKVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50YWcuaW5jbHVkZXMoJ1NvY2twdXBwZXQnKSAmJiBwYXJhbXMuc3BwVXNlcm5hbWUudHJpbSgpID09PSAnJykge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+aPkOS+m+WCgOWEoei0puWPt+eahOS4u+i0puWPt+eUqOaIt+WQje+8gScsICfoq4vmj5DkvpvlgoDlhKHos6zomZ/nmoTkuLvos6zomZ/kvb/nlKjogIXlkI3nqLHvvIEnKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAodG9CbG9jaykge1xuXHRcdFx0aWYgKGJsb2Nrb3B0aW9ucy5wYXJ0aWFsKSB7XG5cdFx0XHRcdGlmIChibG9ja29wdGlvbnMuZGlzYWJsZXRhbGsgJiYgIWJsb2Nrb3B0aW9ucy5uYW1lc3BhY2VyZXN0cmljdGlvbnMuaW5jbHVkZXMoJzMnKSkge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6YOo5YiG5bCB56aB5peg5rOV6Zi75q2i57yW6L6R6Ieq5bex55qE6K6o6K666aG177yM6Zmk6Z2e5Lmf5bCB56aB5LqGVXNlciB0YWxr5ZG95ZCN56m66Ze077yBJyxcblx0XHRcdFx0XHRcdFx0J+mDqOWIhuWwgemOlueEoeazlemYu+atoue3qOi8r+iHquW3seeahOiojuirlumgge+8jOmZpOmdnuS5n+WwgemOluS6hlVzZXIgdGFsa+WRveWQjeepuumWk++8gSdcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWJsb2Nrb3B0aW9ucy5uYW1lc3BhY2VyZXN0cmljdGlvbnMgJiYgIWJsb2Nrb3B0aW9ucy5wYWdlcmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRcdFx0aWYgKCFibG9ja29wdGlvbnMubm9lbWFpbCAmJiAhYmxvY2tvcHRpb25zLm5vY3JlYXRlKSB7XG5cdFx0XHRcdFx0XHQvLyBCbGFuayBlbnRyaWVzIHRlY2huaWNhbGx5IGFsbG93ZWRcblx0XHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ayoeaciemAieaLqemhtemdouaIluWRveWQjeepuumXtO+8jOS5n+ayoeacieWBnOeUqOeUteWtkOmCruS7tuaIluemgeatouWIm+W7uui0puWPt++8m+ivt+mAieaLqeiHs+WwkeS4gOS4qumAiemhueS7peW6lOeUqOmDqOWIhuWwgeemge+8gScsXG5cdFx0XHRcdFx0XHRcdFx0J+aykuaciemBuOaTh+mggemdouaIluWRveWQjeepuumWk++8jOS5n+aykuacieWBnOeUqOmbu+WtkOmDteS7tuaIluemgeatouW7uueri+izrOiZn++8m+iri+mBuOaTh+iHs+WwkeS4gOWAi+mBuOmgheS7peaHieeUqOmDqOWIhuWwgemOlu+8gSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlsIbopoHov5vooYzlsIHnpoHvvIzkvYbmsqHmnInpmLvmraLku7vkvZXpobXpnaLmiJblkb3lkI3nqbrpl7TnmoTnvJbovpHvvIznoa7lrpropoHnu6fnu63vvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCfmgqjlsIfopoHpgLLooYzlsIHpjpbvvIzkvYbmspLmnInpmLvmraLku7vkvZXpoIHpnaLmiJblkb3lkI3nqbrplpPnmoTnt6jovK/vvIznorrlrpropoHnubznuozvvJ8nXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghYmxvY2tvcHRpb25zLmV4cGlyeSkge1xuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+aPkOS+m+i/h+acn+aXtumXtO+8gScsICfoq4vmj5DkvpvpgY7mnJ/mmYLplpPvvIEnKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlYmxvY2snLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSBlbHNlIGlmIChNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShibG9ja29wdGlvbnMuZXhwaXJ5KSAmJiAhVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQpIHtcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfnpoHmraLml6DpmZDmnJ/lsIHnpoFJUOWcsOWdgO+8gScsICfnpoHmraLnhKHpmZDmnJ/lsIHpjpZJUOS9jeWdgO+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWJsb2Nrb3B0aW9ucy5yZWFzb24pIHtcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCfor7fmj5DkvpvlsIHnpoHnkIbnlLHvvIEnLCAn6KuL5o+Q5L6b5bCB6Y6W55CG55Sx77yBJyksIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0XHRjb25zdCBzdGF0dXNFbGVtZW50ID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+aJp+ihjOWwgeemgScsICfln7fooYzlsIHpjpYnKSk7XG5cdFx0XHRibG9ja29wdGlvbnMuYWN0aW9uID0gJ2Jsb2NrJztcblx0XHRcdGJsb2Nrb3B0aW9ucy51c2VyID0gcmVsZXZhbnRVc2VyTmFtZTtcblx0XHRcdC8vIGJvb2xlYW4tZmxpcHBlZCBvcHRpb25zXG5cdFx0XHRibG9ja29wdGlvbnMuYW5vbm9ubHkgPSBibG9ja29wdGlvbnMuaGFyZGJsb2NrID8gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHRcdGJsb2Nrb3B0aW9ucy5hbGxvd3VzZXJ0YWxrID0gYmxvY2tvcHRpb25zLmRpc2FibGV0YWxrID8gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHRcdC8qKlxuXHRcdFx0ICogQ2hlY2sgaWYgYmxvY2sgc3RhdHVzIGNoYW5nZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgZm9ybS5cblx0XHRcdCAqIFRoZXJlJ3MgYSBsb3QgdG8gY29uc2lkZXIgaGVyZS4gbGlzdD1ibG9ja3MgcHJvdmlkZXMgdGhlXG5cdFx0XHQgKiBjdXJyZW50IGJsb2NrIHN0YXR1cywgYnV0IHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gaXNzdWVzIHdpdGhcblx0XHRcdCAqIHJlbHlpbmcgb24gaXQuIEZpcnN0LCB0aGUgaWQgZG9lc24ndCB1cGRhdGUgb24gYSByZWJsb2NrLFxuXHRcdFx0ICogbWVhbmluZyB0aGUgaW5kaXZpZHVhbCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgY29tcGFyZWQuIFRoaXNcblx0XHRcdCAqIGNhbiBiZSBkb25lIHJvdWdobHkgd2l0aCBKU09OLnN0cmluZ2lmeSAtIHdlIGNhbiB0aGFua2Z1bGx5XG5cdFx0XHQgKiByZWx5IG9uIG9yZGVyIGZyb20gdGhlIHNlcnZlciwgYWx0aG91Z2ggc29ydGluZyB3b3VsZCBiZVxuXHRcdFx0ICogZmluZSBpZiBub3QgLSBidXQgZmFsc2V5IHZhbHVlcyBhcmUgcHJvYmxlbWF0aWMgYW5kIGlzXG5cdFx0XHQgKiBub24taWRlYWwuIE1vcmUgaW1wb3J0YW50bHksIGxpc3Q9YmxvY2tzIHdvbid0IGluZGljYXRlIGlmIGFcblx0XHRcdCAqIG5vbi1ibG9ja2VkIHVzZXIgaXMgYmxvY2tlZCB0aGVuIHVuYmxvY2tlZC4gVGhpcyBzaG91bGQgYmVcblx0XHRcdCAqIGV4Y2VlZGluZ3kgcmFyZSwgYnV0IHJlZ2FyZGxlc3MsIHdlIHRodXMgbmVlZCB0byBjaGVja1xuXHRcdFx0ICogbGlzdD1sb2dldmVudHMsIHdoaWNoIGhhcyBhIG5pY2VseSB1cGRhdGluZyBsb2dpZFxuXHRcdFx0ICogcGFyYW1ldGVyLiBXZSBjYW4ndCByZWx5IGp1c3Qgb24gdGhhdCwgdGhvdWdoLCBzaW5jZSBpdFxuXHRcdFx0ICogZG9lc24ndCBhY2NvdW50IGZvciBibG9ja3MgdGhhdCBoYXZlIGV4cGlyZWQgb24gdGhlaXIgb3duLlxuXHRcdFx0ICogQXMgc3VjaCwgd2UgdXNlIGJvdGguIFVzaW5nIHNvbWUgdGVybmFyaWVzLCB0aGUgbG9naWRcblx0XHRcdCAqIHZhcmlhYmxlcyBhcmUgZmFsc2UgaWYgdGhlcmUncyBubyBsb2dldmVudHMsIHNvIGlmIHRoZXlcblx0XHRcdCAqIGFyZW4ndCBlcXVhbCB3ZSBkZWZpbnRlbHkgaGF2ZSBhIGNoYW5nZWQgZW50cnkgKHNlbmRcblx0XHRcdCAqIGNvbmZpcm1hdGlvbikuIElmIHRoZXkgYXJlIGVxdWFsLCB0aGVuIGVpdGhlciB0aGUgdXNlciB3YXNcblx0XHRcdCAqIG5ldmVyIGJsb2NrZWQgKHRoZSBibG9jayBzdGF0dXNlcyB3aWxsIGJlIGVxdWFsLCBub1xuXHRcdFx0ICogY29uZmlybWF0aW9uKSBvciB0aGVyZSdzIG5vIG5ldyBibG9jaywgaW4gd2hpY2ggY2FzZSBlaXRoZXJcblx0XHRcdCAqIGEgYmxvY2sgZXhwaXJlZCAoZGlmZmVyZW50IHN0YXR1c2VzLCBjb25maXJtYXRpb24pIG9yIHRoZVxuXHRcdFx0ICogc2FtZSBibG9jayBpcyBzdGlsbCBhY3RpdmUgKHNhbWUgc3RhdHVzLCBubyBjb25maXJtYXRpb24pLlxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0bGlzdDogJ2Jsb2Nrc3xsb2dldmVudHMnLFxuXHRcdFx0XHRsZXR5cGU6ICdibG9jaycsXG5cdFx0XHRcdGxlbGltaXQ6IDEsXG5cdFx0XHRcdGxldGl0bGU6IGBVc2VyOiR7YmxvY2tvcHRpb25zLnVzZXJ9YCxcblx0XHRcdH07XG5cdFx0XHQvLyBia3VzZXJzIGRvZXNuJ3QgY2F0Y2ggc2luZ2xlIElQcyBibG9ja2VkIGFzIHBhcnQgb2YgYSByYW5nZSBibG9ja1xuXHRcdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MoYmxvY2tvcHRpb25zLnVzZXIsIHRydWUpKSB7XG5cdFx0XHRcdHF1ZXJ5LmJraXAgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHF1ZXJ5LmJrdXNlcnMgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdFx0cXVlcnkubGlzdCArPSAnfHVzZXJzJztcblx0XHRcdFx0cXVlcnkudXNwcm9wID0gJ2dyb3Vwcyc7XG5cdFx0XHRcdHF1ZXJ5LnVzdXNlcnMgPSBibG9ja29wdGlvbnMudXNlcjtcblx0XHRcdFx0cXVlcnkubWV0YSA9ICd0b2tlbnMnO1xuXHRcdFx0XHRxdWVyeS50eXBlID0gJ3VzZXJyaWdodHMnO1xuXHRcdFx0fVxuXHRcdFx0dm9pZCBhcGkuZ2V0KHF1ZXJ5KS50aGVuKChkYXRhKSA9PiB7XG5cdFx0XHRcdGxldCBbYmxvY2tdID0gZGF0YS5xdWVyeS5ibG9ja3M7XG5cdFx0XHRcdC8vIEFzIHdpdGggdGhlIGluaXRpYWwgZGF0YSBmZXRjaCwgaWYgYW4gSVAgaXMgYmxvY2tlZFxuXHRcdFx0XHQvLyAqYW5kKiByYW5nZWJsb2NrZWQsIHRoaXMgd291bGQgb25seSBncmFiIHdoaWNoZXZlclxuXHRcdFx0XHQvLyBibG9jayBpcyBtb3JlIHJlY2VudCwgd2hpY2ggd291bGQgbGlrZWx5IG1lYW4gYVxuXHRcdFx0XHQvLyBtaXNtYXRjaC4gIEhvd2V2ZXIsIGlmIHRoZSByYW5nZWJsb2NrIGlzIHVwZGF0ZWRcblx0XHRcdFx0Ly8gd2hpbGUgZmlsbGluZyBvdXQgdGhlIGZvcm0sIHRoaXMgd29uJ3QgZGV0ZWN0IHRoYXQsXG5cdFx0XHRcdC8vIGJ1dCB0aGF0J3MgcHJvYmFibHkgZmluZS5cblx0XHRcdFx0aWYgKGRhdGEucXVlcnkuYmxvY2tzLmxlbmd0aCA+IDEgJiYgYmxvY2sudXNlciAhPT0gcmVsZXZhbnRVc2VyTmFtZSkge1xuXHRcdFx0XHRcdFssIGJsb2NrXSA9IGRhdGEucXVlcnkuYmxvY2tzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IFtsb2dldmVudHNdID0gZGF0YS5xdWVyeS5sb2dldmVudHM7XG5cdFx0XHRcdGNvbnN0IHVzZXIgPSBkYXRhLnF1ZXJ5LnVzZXJzID8gZGF0YS5xdWVyeS51c2Vyc1swXSA6IG51bGw7XG5cdFx0XHRcdGNvbnN0IGxvZ2lkID0gZGF0YS5xdWVyeS5sb2dldmVudHMubGVuZ3RoID8gbG9nZXZlbnRzLmxvZ2lkIDogZmFsc2U7XG5cdFx0XHRcdGlmIChsb2dpZCAhPT0gVHdpbmtsZS5ibG9jay5ibG9ja0xvZ0lkIHx8ICEhYmxvY2sgIT09ICEhVHdpbmtsZS5ibG9jay5jdXJyZW50QmxvY2tJbmZvKSB7XG5cdFx0XHRcdFx0bGV0IG1lc3NhZ2UgPSBibG9ja29wdGlvbnMudXNlciArIHdpbmRvdy53Z1VMUygn55qE5bCB56aB54q25oCB5bey6KKr5L+u5pS544CCJywgJ+eahOWwgemOlueLgOaFi+W3suiiq+S/ruaUueOAgicpO1xuXHRcdFx0XHRcdGlmIChibG9jaykge1xuXHRcdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoJ+aWsOeKtuaAge+8micsICfmlrDni4DmhYvvvJonKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoJ+acgOaWsOaXpeW/l++8micsICfmnIDmlrDml6XoqozvvJonKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bGV0IGxvZ0V4cGlyeSA9ICcnO1xuXHRcdFx0XHRcdGlmIChsb2dldmVudHMucGFyYW1zLmR1cmF0aW9uKSB7XG5cdFx0XHRcdFx0XHRpZiAobG9nZXZlbnRzLnBhcmFtcy5kdXJhdGlvbiA9PT0gJ2luZmluaXR5Jykge1xuXHRcdFx0XHRcdFx0XHRsb2dFeHBpcnkgPSB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGV4cGlyeURhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZShsb2dldmVudHMucGFyYW1zLmV4cGlyeSk7XG5cdFx0XHRcdFx0XHRcdGxvZ0V4cGlyeSArPVxuXHRcdFx0XHRcdFx0XHRcdChleHBpcnlEYXRlLmlzQmVmb3JlKG5ldyBEYXRlKCkpID8gd2luZG93LndnVUxTKCfov4fmnJ/kuo4nLCAn6YGO5pyf5pa8JykgOiAn55u05YiwJykgK1xuXHRcdFx0XHRcdFx0XHRcdGV4cGlyeURhdGUuY2FsZW5kYXIoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gbm8gZHVyYXRpb24sIGFjdGlvbj11bmJsb2NrLCBqdXN0IHNob3cgdGltZXN0YW1wXG5cdFx0XHRcdFx0XHRsb2dFeHBpcnkgPSBg5pa8JHtuZXcgTW9yZWJpdHMuZGF0ZShsb2dldmVudHMudGltZXN0YW1wKS5jYWxlbmRhcigpfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1lc3NhZ2UgKz0gYOeUsSR7bG9nZXZlbnRzLnVzZXJ9JHt3aW5kb3cud2dVTFMoJ+S7peKAnCcsICfku6XjgIwnKX0ke2xvZ2V2ZW50cy5jb21tZW50fSR7d2luZG93LndnVUxTKCfigJ0nLCAn44CNJyl9JHtcblx0XHRcdFx0XHRcdGJsb2NrQWN0aW9uVGV4dFtsb2dldmVudHMuYWN0aW9uXVxuXHRcdFx0XHRcdH0ke2xvZ0V4cGlyeX0ke3dpbmRvdy53Z1VMUygn77yM5L2g5oOz6KaB5Lul5L2g55qE6K6+572u5pu05pS55bCB56aB5ZCX77yfJywgJ++8jOS9oOaDs+imgeS7peS9oOeahOioreWumuiuiuabtOWwgemOluWXju+8nycpfWA7XG5cdFx0XHRcdFx0aWYgKCFjb25maXJtKG1lc3NhZ2UpKSB7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmiafooYzlsIHnpoEnLCAn5Z+36KGM5bCB6Y6WJyksXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raI5pON5L2cJywgJ+S9v+eUqOiAheWPlua2iOaTjeS9nCcpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRibG9ja29wdGlvbnMucmVibG9jayA9IDE7IC8vIFdyaXRpbmcgb3ZlciBhIGJsb2NrIHdpbGwgZmFpbCBvdGhlcndpc2Vcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBncm91cHNDYW5CZVJlbW92ZWQgPSBbXG5cdFx0XHRcdFx0J2F1dG9yZXZpZXdlcicsXG5cdFx0XHRcdFx0J2NvbmZpcm1lZCcsXG5cdFx0XHRcdFx0J3JucnN2ZXJpZnktZXhlbXB0Jyxcblx0XHRcdFx0XHQnbWFzc21lc3NhZ2Utc2VuZGVyJyxcblx0XHRcdFx0XHQncGF0cm9sbGVyJyxcblx0XHRcdFx0XHQndGVtcGxhdGVlZGl0b3InLFxuXHRcdFx0XHRcdCd0cmFuc3dpa2knLFxuXHRcdFx0XHRdO1xuXHRcdFx0XHRsZXQgZ3JvdXBzVG9CZVJlbW92ZWQgPSBbXTtcblx0XHRcdFx0aWYgKHVzZXIgJiYgTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoYmxvY2tvcHRpb25zLmV4cGlyeSkpIHtcblx0XHRcdFx0XHRncm91cHNUb0JlUmVtb3ZlZCA9IHVzZXIuZ3JvdXBzLmZpbHRlcigoZ3JvdXApID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBncm91cHNDYW5CZVJlbW92ZWQuaW5jbHVkZXMoZ3JvdXApO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGV4ZWN1dGUgYmxvY2tcblx0XHRcdFx0YmxvY2tvcHRpb25zLnRhZ3MgPSBUd2lua2xlLmNoYW5nZVRhZ3M7XG5cdFx0XHRcdGJsb2Nrb3B0aW9ucy50b2tlbiA9IG13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJyk7XG5cdFx0XHRcdGNvbnN0IG1iQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn5omn6KGM5bCB56aBJywgJ+Wft+ihjOWwgemOlicpLCBibG9ja29wdGlvbnMsICgpID0+IHtcblx0XHRcdFx0XHRzdGF0dXNFbGVtZW50LmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdGlmICh0b1dhcm4pIHtcblx0XHRcdFx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suaXNzdWVfdGVtcGxhdGUodGVtcGxhdGVvcHRpb25zKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRvQ2xvc2V2aXApIHtcblx0XHRcdFx0XHRcdGNvbnN0IHZpcFBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHQnUWl1d2VuX3RhbGs65oql5ZGK5b2T5YmN56C05Z2PJyxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflhbPpl63or7fmsYInLCAn6Zec6ZaJ6KuL5rGCJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR2aXBQYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHRcdFx0dmlwUGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMoYmxvY2tvcHRpb25zKTtcblx0XHRcdFx0XHRcdHZpcFBhZ2UubG9hZChUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmNsb3NlUmVxdWVzdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChncm91cHNUb0JlUmVtb3ZlZC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByaWdodFN0YXR1c0VsZW1lbnQgPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn56e76Zmk5p2D6ZmQJywgJ+enu+mZpOasiumZkCcpKTtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivpeeUqOaIt+acieS7peS4i+adg+mZkO+8micsICfoqbLkvb/nlKjogIXmnInku6XkuIvmrIrpmZDvvJonKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRncm91cHNUb0JlUmVtb3ZlZC5qb2luKCfjgIEnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ++8jOaCqOaYr+WQpuaDs+imgeWQjOaXtuenu+mZpOi/meS6m+adg+mZkO+8nycsICfvvIzmgqjmmK/lkKbmg7PopoHlkIzmmYLnp7vpmaTpgJnkupvmrIrpmZDvvJ8nKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmV2b2tlT3B0aW9ucyA9IHtcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb246ICd1c2VycmlnaHRzJyxcblx0XHRcdFx0XHRcdFx0XHR1c2VyOiBibG9ja29wdGlvbnMudXNlcixcblx0XHRcdFx0XHRcdFx0XHRyZW1vdmU6IGdyb3Vwc1RvQmVSZW1vdmVkLmpvaW4oJ3wnKSxcblx0XHRcdFx0XHRcdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn55So5oi35bey6KKr5peg6ZmQ5pyf5bCB56aBJywgJ+S9v+eUqOiAheW3suiiq+eEoemZkOacn+WwgemOlicpLFxuXHRcdFx0XHRcdFx0XHRcdHRva2VuOiBkYXRhLnF1ZXJ5LnRva2Vucy51c2VycmlnaHRzdG9rZW4sXG5cdFx0XHRcdFx0XHRcdFx0dGFnczogVHdpbmtsZS5jaGFuZ2VUYWdzLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRjb25zdCBtckFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+enu+mZpOadg+mZkCcsICfnp7vpmaTmrIrpmZAnKSxcblx0XHRcdFx0XHRcdFx0XHRyZXZva2VPcHRpb25zLFxuXHRcdFx0XHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdHJpZ2h0U3RhdHVzRWxlbWVudC5pbmZvKGDlt7Lnp7vpmaQke2dyb3Vwc1RvQmVSZW1vdmVkLmpvaW4oJ+OAgScpfWApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0bXJBcGkucG9zdCgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmlnaHRTdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn55So5oi35Y+W5raI5pON5L2c44CCJywgJ+S9v+eUqOiAheWPlua2iOaTjeS9nOOAgicpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRtYkFwaS5wb3N0KCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2UgaWYgKHRvV2Fybikge1xuXHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRcdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suaXNzdWVfdGVtcGxhdGUodGVtcGxhdGVvcHRpb25zKTtcblx0XHR9XG5cdFx0aWYgKHRvVGFnIHx8IHRvUHJvdGVjdCkge1xuXHRcdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRcdGNvbnN0IHVzZXJQYWdlID0gYFVzZXI6JHttdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKX1gO1xuXHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHR1c2VyUGFnZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDmiJbkv53miqTnlKjmiLfpobUnLCAn5qiZ6KiY5oiW5L+d6K235L2/55So6ICF6aCB6Z2iJylcblx0XHRcdCk7XG5cdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5ibG9jay5jYWxsYmFjay50YWd1c2VycGFnZSk7XG5cdFx0fVxuXHRcdGlmICh0b1VuYmxvY2spIHtcblx0XHRcdGlmICghdW5ibG9ja29wdGlvbnMucmVhc29uKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+35o+Q5L6b6Kej6Zmk5bCB56aB55CG55Sx77yBJywgJ+iri+aPkOS+m+ino+mZpOWwgemOlueQhueUse+8gScpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZS50YXJnZXQpO1xuXHRcdFx0Y29uc3QgdW5ibG9ja1N0YXR1c0VsZW1lbnQgPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn5omn6KGM6Kej6Zmk5bCB56aBJywgJ+Wft+ihjOino+mZpOWwgemOlicpKTtcblx0XHRcdHVuYmxvY2tvcHRpb25zLmFjdGlvbiA9ICd1bmJsb2NrJztcblx0XHRcdHVuYmxvY2tvcHRpb25zLnVzZXIgPSBtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKTtcblx0XHRcdC8vIGV4ZWN1dGUgdW5ibG9ja1xuXHRcdFx0dW5ibG9ja29wdGlvbnMudGFncyA9IFR3aW5rbGUuY2hhbmdlVGFncztcblx0XHRcdHVuYmxvY2tvcHRpb25zLnRva2VuID0gbXcudXNlci50b2tlbnMuZ2V0KCdjc3JmVG9rZW4nKTtcblx0XHRcdGNvbnN0IHVuYmxvY2tNYkFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfmiafooYzop6PpmaTlsIHnpoEnLCAn5Z+36KGM6Kej6Zmk5bCB6Y6WJyksXG5cdFx0XHRcdHVuYmxvY2tvcHRpb25zLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0dW5ibG9ja1N0YXR1c0VsZW1lbnQuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0XHR1bmJsb2NrTWJBcGkucG9zdCgpO1xuXHRcdH1cblx0XHRpZiAoIXRvQmxvY2sgJiYgIXRvV2FybiAmJiAhdG9UYWcgJiYgIXRvUHJvdGVjdCAmJiAhdG9VbmJsb2NrKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+e7mVR3aW5rbGXngrnkuovlgZrvvIEnLCAn6KuL57WmVHdpbmtsZem7nuS6i+WBmu+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWJsb2NrJyxcblx0XHRcdH0pO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay50YWd1c2VycGFnZSA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRjb25zdCBzdGF0ZWxlbSA9IHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdGlmIChwYXJhbXMuYWN0aW9udHlwZS5pbmNsdWRlcygndGFnJykpIHtcblx0XHRcdGNvbnN0IHRhZ3MgPSBbXTtcblx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHBhcmFtcy50YWcpIHtcblx0XHRcdFx0bGV0IHRhZ3RleHQgPSBge3ske3RhZ31gO1xuXHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdGNhc2UgJ0Jsb2NrZWQgdXNlcic6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdTb2NrcHVwcGV0Jzpcblx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gYFxcbnwgMSA9ICR7cGFyYW1zLnNwcFVzZXJuYW1lLnRyaW0oKX1gO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSBgXFxufCAyID0gJHtwYXJhbXMuc3BwVHlwZS50cmltKCl9YDtcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMuc3BwRXZpZGVuY2UudHJpbSgpKSB7XG5cdFx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gYFxcbnwgZXZpZGVuY2UgPSAke3BhcmFtcy5zcHBFdmlkZW5jZS50cmltKCl9YDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRhZ3RleHQgKz0gJ1xcbnwgbG9ja2VkID0gbm8nO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxufCBub3RibG9ja2VkID0gbm8nO1xuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxuJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ1NvY2twdXBwZXRlZXInOlxuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxufCAxID0gYmxvY2tlZCc7XG5cdFx0XHRcdFx0XHR0YWd0ZXh0ICs9IGBcXG58IGNoZWNrZWQgPSAke3BhcmFtcy5zcG1DaGVja2VkID8gJ3llcycgOiAnJ31gO1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5zcG1FdmlkZW5jZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dGFndGV4dCArPSBgXFxufCBldmlkZW5jZSA9ICR7cGFyYW1zLnNwbUV2aWRlbmNlLnRyaW0oKX1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGFndGV4dCArPSAnXFxuJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+acquefpeeahOeUqOaIt+mhteaooeadv++8gScsICfmnKrnn6XnmoTkvb/nlKjogIXpoIHpnaLmqKHmnb/vvIEnKSwge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVibG9jaycsXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRhZ3RleHQgKz0gJ319Jztcblx0XHRcdFx0dGFnc1t0YWdzLmxlbmd0aF0gPSB0YWd0ZXh0O1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgdGV4dCA9IHRhZ3Muam9pbignXFxuJyk7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+agh+iusOiiq+awuOS5heWwgeemgeeahOeUqOaIt+mhtScsICfmqJnoqJjooqvmsLjkuYXlsIHpjpbnmoTkvb/nlKjogIXpoIHpnaInKSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgoKSA9PiB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKHdpbmRvdy53Z1VMUygn5qCH6K6w55So5oi36aG1JywgJ+aomeiomOS9v+eUqOiAhemggemdoicpLCAn5a6M5oiQJyk7XG5cdFx0XHRcdHN0YXRlbGVtLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+ato+WcqOS/neaKpOmhtemdoicsICfmraPlnKjkv53orbfpoIHpnaInKSk7XG5cdFx0XHRcdHBhZ2VvYmoubG9hZChUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnByb3RlY3R1c2VycGFnZSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5wcm90ZWN0dXNlcnBhZ2UocGFnZW9iaik7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLnByb3RlY3R1c2VycGFnZSA9IChwYWdlb2JqKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRjb25zdCBzdGF0ZWxlbSA9IHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdGlmIChwYXJhbXMuYWN0aW9udHlwZS5pbmNsdWRlcygncHJvdGVjdCcpKSB7XG5cdFx0XHRpZiAocGFnZW9iai5leGlzdHMoKSkge1xuXHRcdFx0XHRwYWdlb2JqLnNldEVkaXRQcm90ZWN0aW9uKCdzeXNvcCcsICdpbmRlZmluaXRlJyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0TW92ZVByb3RlY3Rpb24oJ3N5c29wJywgJ2luZGVmaW5pdGUnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlUHJvdGVjdGlvbignc3lzb3AnLCAnaW5kZWZpbml0ZScpO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+iiq+awuOS5heWwgeemgeeahOeUqOaIt+mhtScsICfooqvmsLjkuYXlsIHpjpbnmoTkvb/nlKjogIXpoIHpnaInKSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmoucHJvdGVjdCgoKSA9PiB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5oqk55So5oi36aG1JywgJ+S/neitt+S9v+eUqOiAhemggemdoicpLFxuXHRcdFx0XHRcdHBhZ2VvYmouZXhpc3RzKCkgPyB3aW5kb3cud2dVTFMoJ+W3suWFqOS/neaKpCcsICflt7Llhajkv53orbcnKSA6IHdpbmRvdy53Z1VMUygn5bey55m957q45L+d5oqkJywgJ+W3sueZvee0meS/neittycpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHN0YXRlbGVtLmluZm8oJ+WFqOmDqOWujOaIkCcpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0YXRlbGVtLmluZm8oJ+WFqOmDqOWujOaIkCcpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5ibG9jay5jYWxsYmFjay5pc3N1ZV90ZW1wbGF0ZSA9IChmb3JtRGF0YSkgPT4ge1xuXHRcdC8vIFVzZSB3Z1JlbGV2YW50VXNlck5hbWUgdG8gZW5zdXJlIHRoZSBibG9jayB0ZW1wbGF0ZSBnb2VzIHRvIGEgc2luZ2xlIElQIGFuZCBub3QgdG8gdGhlXG5cdFx0Ly8gXCJ0YWxrIHBhZ2VcIiBvZiBhbiBJUCByYW5nZSAod2hpY2ggZG9lcyBub3QgZXhpc3QpXG5cdFx0Y29uc3QgdXNlclRhbGtQYWdlID0gYFVzZXJfdGFsazoke213LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpfWA7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0Li4uZm9ybURhdGEsXG5cdFx0XHRtZXNzYWdlRGF0YTogVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW2Zvcm1EYXRhLnRlbXBsYXRlXSxcblx0XHRcdHVzZXJ0YWxrX3N1bW1hcnk6IFR3aW5rbGUuYmxvY2suYmxvY2tQcmVzZXRzSW5mb1tmb3JtRGF0YS5wcmVzZXQgfHwgZm9ybURhdGEudGVtcGxhdGVdLnN1bW1hcnksXG5cdFx0XHRyZWFzb246IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ibG9ja19yZWFzb24sXG5cdFx0XHRkaXNhYmxldGFsazogVHdpbmtsZS5ibG9jay5maWVsZF90ZW1wbGF0ZV9vcHRpb25zLm5vdGFsayxcblx0XHRcdG5vZW1haWw6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub2VtYWlsX3RlbXBsYXRlLFxuXHRcdFx0bm9jcmVhdGU6IFR3aW5rbGUuYmxvY2suZmllbGRfdGVtcGxhdGVfb3B0aW9ucy5ub2NyZWF0ZV90ZW1wbGF0ZSxcblx0XHR9O1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gdXNlclRhbGtQYWdlO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdCflrozmiJDvvIzlsIblnKjlh6Dnp5LlkI7liqDovb3nlKjmiLforqjorrrpobUnLFxuXHRcdFx0J+WujOaIkO+8jOWwh+WcqOW5vuenkuW+jOi8ieWFpeS9v+eUqOiAheiojuirlumggSdcblx0XHQpO1xuXHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZSh1c2VyVGFsa1BhZ2UsIHdpbmRvdy53Z1VMUygn55So5oi36K6o6K666aG15L+u5pS5JywgJ+S9v+eUqOiAheiojuirlumggeS/ruaUuScpKTtcblx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuYmxvY2suY2FsbGJhY2subWFpbik7XG5cdH07XG5cdFR3aW5rbGUuYmxvY2suY2FsbGJhY2suY2xvc2VSZXF1ZXN0ID0gKHZpcFBhZ2UpID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSB2aXBQYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdGxldCB0ZXh0ID0gdmlwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdGNvbnN0IHN0YXR1c0VsZW1lbnQgPSB2aXBQYWdlLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRjb25zdCB1c2VyTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdGNvbnN0IGV4cGlyeVRleHQgPSBNb3JlYml0cy5zdHJpbmcuZm9ybWF0VGltZShwYXJhbXMuZXhwaXJ5KTtcblx0XHRjb25zdCBjb21tZW50ID0gYHt7QmxvY2tlZHwke01vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpID8gJ2luZGVmJyA6IGV4cGlyeVRleHR9fX3jgIJgO1xuXHRcdGNvbnN0IHJlcXVlc3RMaXN0ID0gdGV4dC5zcGxpdCgvKD89XFxuPT09Lis9PT1cXHMqXFxuKS8pO1xuXHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdGxldCBoaWRlbmFtZSA9IGZhbHNlO1xuXHRcdGNvbnN0IHZpcFJlID0gbmV3IFJlZ0V4cChcblx0XHRcdGB7e1xcXFxzKltWdl1hbmRhbFxcXFxzKlxcXFx8XFxcXHMqKDFcXFxccyo9XFxcXHMqKT8ke01vcmViaXRzLnBhZ2VOYW1lUmVnZXgoXG5cdFx0XHRcdHVzZXJOYW1lXG5cdFx0XHQpfVxcXFxzKihcXFxcfFxcXFxzKmhpZGVuYW1lXFxcXHMqPVtefF0rKT99fWAsXG5cdFx0XHQnbSdcblx0XHQpO1xuXHRcdGZvciAobGV0IHJlcXVlc3Qgb2YgcmVxdWVzdExpc3QpIHtcblx0XHRcdGlmICh2aXBSZS5leGVjKHJlcXVlc3QpKSB7XG5cdFx0XHRcdGhpZGVuYW1lID0gL1xcfFxccypoaWRlbmFtZVxccyo9W158XSsvLnRlc3QocmVxdWVzdCk7XG5cdFx0XHRcdHJlcXVlc3QgPSByZXF1ZXN0LnRyaW1FbmQoKTtcblx0XHRcdFx0bGV0IG5ld1RleHQgPSByZXF1ZXN0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L14oXFwqXFxzKuWkhOeQhu+8milbIFxcdF0qKDwhLS0g6Z2e566h55CG5ZOh5YOF5Y+v5qiZ6KiY5bey5Z+36KGM55qE5bCB56aB77yM6Yed5bCN5o+Q5aCx55qE5oSP6KaL6KuL5pS+5Zyo5LiL5LiA6KGMIC0tPik/WyBcXHRdKiQvbSxcblx0XHRcdFx0XHRgJDEke2NvbW1lbnR9LS1+fmAuY29uY2F0KCd+ficpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChyZXF1ZXN0ID09PSBuZXdUZXh0KSB7XG5cdFx0XHRcdFx0bmV3VGV4dCA9IGAke3JlcXVlc3R9XFxuKiDlpITnkIbvvJoke2NvbW1lbnR9LS1+fmAuY29uY2F0KCd+ficpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlcXVlc3QgPSBgJHtuZXdUZXh0fVxcbmA7XG5cdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZm91bmQpIHtcblx0XHRcdHN0YXR1c0VsZW1lbnQud2Fybih3aW5kb3cud2dVTFMoJ+ayoeacieaJvuWIsOebuOWFs+eahOivt+axgicsICfmspLmnInmib7liLDnm7jpl5znmoToq4vmsYInKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRleHQgPSByZXF1ZXN0TGlzdC5qb2luKCcnKTtcblx0XHRsZXQgc3VtbWFyeTtcblx0XHRpZiAoaGlkZW5hbWUpIHtcblx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+agh+iusOS4uuW3suWkhOeQhicsICfmqJnoqJjngrrlt7LomZXnkIYnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VtbWFyeSA9IGAvKiAke3VzZXJOYW1lfSAqLyBgO1xuXHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpKSB7XG5cdFx0XHRcdHN1bW1hcnkgKz0gd2luZG93LndnVUxTKCfkuI3pmZDmnJ/lsIHnpoEnLCAn5LiN6ZmQ5pyf5bCB6Y6WJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdW1tYXJ5ICs9IHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpICsgZXhwaXJ5VGV4dDtcblx0XHRcdH1cblx0XHR9XG5cdFx0dmlwUGFnZS5zZXRFZGl0U3VtbWFyeShzdW1tYXJ5KTtcblx0XHR2aXBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHR2aXBQYWdlLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdHZpcFBhZ2Uuc2F2ZSgpO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLmdldEJsb2NrTm90aWNlV2lraXRleHQgPSAocGFyYW1zKSA9PiB7XG5cdFx0bGV0IHRleHQgPSAne3snO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gVHdpbmtsZS5ibG9jay5ibG9ja1ByZXNldHNJbmZvW3BhcmFtcy50ZW1wbGF0ZV07XG5cdFx0aWYgKHNldHRpbmdzLm5vbnN0YW5kYXJkKSB7XG5cdFx0XHR0ZXh0ICs9IHBhcmFtcy50ZW1wbGF0ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGV4dCArPSAnc3Vic3Q6Jy5jb25jYXQocGFyYW1zLnRlbXBsYXRlKTtcblx0XHRcdGlmIChwYXJhbXMuYXJ0aWNsZSAmJiBzZXR0aW5ncy5wYWdlUGFyYW0pIHtcblx0XHRcdFx0dGV4dCArPSBgfHBhZ2U9JHtwYXJhbXMuYXJ0aWNsZX1gO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCEvdGU/bXB8XlxccyokfG1pbi8uZXhlYyhwYXJhbXMuZXhwaXJ5KSkge1xuXHRcdFx0XHRpZiAocGFyYW1zLmluZGVmaW5pdGUpIHtcblx0XHRcdFx0XHR0ZXh0ICs9ICd8aW5kZWY9eWVzJztcblx0XHRcdFx0fSBlbHNlIGlmICghcGFyYW1zLmJsYW5rX2R1cmF0aW9uKSB7XG5cdFx0XHRcdFx0Ly8gTm8gZXhwaXJ5IGNoZWNrc1xuXHRcdFx0XHRcdC8vIEJsb2NrIHRlbXBsYXRlIHdhbnRzIGEgZHVyYXRpb24sIG5vdCBkYXRlXG5cdFx0XHRcdFx0dGV4dCArPSBgfHRpbWU9JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0VGltZShwYXJhbXMuZXhwaXJ5KX1gOyAvLyBmb3JtYXRUaW1lXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghVHdpbmtsZS5ibG9jay5pc1JlZ2lzdGVyZWQgJiYgIXBhcmFtcy5oYXJkYmxvY2spIHtcblx0XHRcdFx0dGV4dCArPSAnfGFub249eWVzJztcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMucmVhc29uKSB7XG5cdFx0XHRcdHRleHQgKz0gYHxyZWFzb249JHtwYXJhbXMucmVhc29ufWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLmRpc2FibGV0YWxrKSB7XG5cdFx0XHRcdHRleHQgKz0gJ3xub3RhbGs9eWVzJztcblx0XHRcdH1cblx0XHRcdC8vIEN1cnJlbnRseSwgYWxsIHBhcnRpYWwgYmxvY2sgdGVtcGxhdGVzIGFyZSBcInN0YW5kYXJkXCJcblx0XHRcdC8vIEJ1aWxkaW5nIHRoZSB0ZW1wbGF0ZSwgaG93ZXZlciwgdGFrZXMgYSBmYWlyIGJpdCBvZiBsb2dpY1xuXHRcdFx0aWYgKHBhcmFtcy5wYXJ0aWFsKSB7XG5cdFx0XHRcdGlmIChwYXJhbXMucGFnZXJlc3RyaWN0aW9ucy5sZW5ndGggfHwgcGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBtYWtlU2VudGVuY2UgPSAoYXJyYXkpID0+IHtcblx0XHRcdFx0XHRcdGlmIChhcnJheS5sZW5ndGggPCAzKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhcnJheS5qb2luKCflkownKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNvbnN0IGxhc3QgPSBhcnJheS5wb3AoKTtcblx0XHRcdFx0XHRcdHJldHVybiBgJHthcnJheS5qb2luKCfjgIEnKX3lkowke2xhc3R9YDtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHRleHQgKz0gJ3xhcmVhPeafkOS6myc7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5wYWdlcmVzdHJpY3Rpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGV4dCArPSBg6aCB6Z2i77yIJHttYWtlU2VudGVuY2UoXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5wYWdlcmVzdHJpY3Rpb25zLm1hcCgocCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBgW1s6JHtwfV1dYDtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCl9YDtcblx0XHRcdFx0XHRcdHRleHQgKz0gcGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGggPyAn77yJ5ZKM5p+Q5LqbJyA6ICfvvIknO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocGFyYW1zLm5hbWVzcGFjZXJlc3RyaWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdC8vIDEgPT4gVGFsaywgMiA9PiBVc2VyLCBldGMuXG5cdFx0XHRcdFx0XHRjb25zdCBuYW1lc3BhY2VOYW1lcyA9IHBhcmFtcy5uYW1lc3BhY2VyZXN0cmljdGlvbnMubWFwKChpZCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbWVudUZvcm1hdHRlZE5hbWVzcGFjZXNbaWRdO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ZXh0ICs9IGAke1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ1tbSGVscDrlkb3lkI3nqbrpl7R85ZG95ZCN56m66Ze0XV3vvIgnLCAnW1tIZWxwOuWRveWQjeepuumWk3zlkb3lkI3nqbrplpNdXe+8iCcpICtcblx0XHRcdFx0XHRcdFx0bWFrZVNlbnRlbmNlKG5hbWVzcGFjZU5hbWVzKVxuXHRcdFx0XHRcdFx0fe+8iWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtcy5hcmVhKSB7XG5cdFx0XHRcdFx0dGV4dCArPSBgfGFyZWE9JHtwYXJhbXMuYXJlYX1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9lbWFpbCkge1xuXHRcdFx0XHRcdFx0dGV4dCArPSAnfGVtYWlsPXllcyc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9jcmVhdGUpIHtcblx0XHRcdFx0XHRcdHRleHQgKz0gJ3xhY2NvdW50Y3JlYXRlPXllcyc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzZXR0aW5ncy5zaWcpIHtcblx0XHRcdHRleHQgKz0gYHxzaWc9JHtzZXR0aW5ncy5zaWd9YDtcblx0XHR9XG5cdFx0cmV0dXJuIGAke3RleHR9fX1gO1xuXHR9O1xuXHRUd2lua2xlLmJsb2NrLmNhbGxiYWNrLm1haW4gPSAocGFnZW9iaikgPT4ge1xuXHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0Y29uc3QgZGF0ZSA9IG5ldyBNb3JlYml0cy5kYXRlKHBhZ2VvYmouZ2V0TG9hZFRpbWUoKSk7XG5cdFx0Y29uc3Qge21lc3NhZ2VEYXRhfSA9IHBhcmFtcztcblx0XHRsZXQgdGV4dDtcblx0XHRwYXJhbXMuaW5kZWZpbml0ZSA9IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2JsYW5rVGFsa3BhZ2VPbkluZGVmQmxvY2snKSAmJiBwYXJhbXMudGVtcGxhdGUgIT09ICd1dy1sYmxvY2snICYmIHBhcmFtcy5pbmRlZmluaXRlKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5qC55o2u5Y+C5pWw6K6+572u5riF56m66K6o6K666aG15bm25Li65pel5pyf5Yib5bu65pawMue6p+agh+mimCcsXG5cdFx0XHRcdFx0J+agueaTmuWBj+WlveioreWumua4heepuuiojuirlumggeS4pueCuuaXpeacn+W7uueri+aWsDLntJrmqJnpoYwnXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHR0ZXh0ID0gYCR7ZGF0ZS5tb250aEhlYWRlcigpfVxcbmA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBkYXRlSGVhZGVyUmVnZXggPSBkYXRlLm1vbnRoSGVhZGVyUmVnZXgoKTtcblx0XHRcdGxldCBkYXRlSGVhZGVyUmVnZXhMYXN0O1xuXHRcdFx0bGV0IGRhdGVIZWFkZXJSZWdleFJlc3VsdDtcblx0XHRcdHdoaWxlICgoZGF0ZUhlYWRlclJlZ2V4TGFzdCA9IGRhdGVIZWFkZXJSZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRkYXRlSGVhZGVyUmVnZXhSZXN1bHQgPSBkYXRlSGVhZGVyUmVnZXhMYXN0O1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgZGF0ZUhlYWRlclJlZ2V4UmVzdWx0IGlzIG51bGwgdGhlbiBsYXN0SGVhZGVySW5kZXggaXMgbmV2ZXIgY2hlY2tlZC4gSWYgaXQgaXMgbm90IG51bGwgYnV0XG5cdFx0XHQvLyBcXG49PSBpcyBub3QgZm91bmQsIHRoZW4gdGhlIGRhdGUgaGVhZGVyIG11c3QgYmUgYXQgdGhlIHZlcnkgc3RhcnQgb2YgdGhlIHBhZ2UuIGxhc3RJbmRleE9mXG5cdFx0XHQvLyByZXR1cm5zIC0xIGluIHRoaXMgY2FzZSwgc28gbGFzdEhlYWRlckluZGV4IGdldHMgc2V0IHRvIDAgYXMgZGVzaXJlZC5cblx0XHRcdGNvbnN0IGxhc3RIZWFkZXJJbmRleCA9IHRleHQubGFzdEluZGV4T2YoJ1xcbj09JykgKyAxO1xuXHRcdFx0aWYgKHRleHQubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0ZXh0ICs9ICdcXG5cXG4nO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFkYXRlSGVhZGVyUmVnZXhSZXN1bHQgfHwgZGF0ZUhlYWRlclJlZ2V4UmVzdWx0LmluZGV4ICE9PSBsYXN0SGVhZGVySW5kZXgpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnKrmib7liLDlvZPmnIjnmoTkuoznuqfmoIfpopjvvIzlsIbliJvlu7rmlrDnmoQnLCAn5pyq5om+5Yiw55W25pyI55qE5LqM57Sa5qiZ6aGM77yM5bCH5bu656uL5paw55qEJylcblx0XHRcdFx0KTtcblx0XHRcdFx0dGV4dCArPSBgJHtkYXRlLm1vbnRoSGVhZGVyKCl9XFxuYDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cGFyYW1zLmV4cGlyeSA9IHBhcmFtcy50ZW1wbGF0ZV9leHBpcnkgPT09IHVuZGVmaW5lZCA/IHBhcmFtcy5leHBpcnkgOiBwYXJhbXMudGVtcGxhdGVfZXhwaXJ5O1xuXHRcdHRleHQgKz0gVHdpbmtsZS5ibG9jay5jYWxsYmFjay5nZXRCbG9ja05vdGljZVdpa2l0ZXh0KHBhcmFtcyk7XG5cdFx0Ly8gYnVpbGQgdGhlIGVkaXQgc3VtbWFyeVxuXHRcdGxldCBzdW1tYXJ5ID0gcGFyYW1zLnVzZXJ0YWxrX3N1bW1hcnk7XG5cdFx0aWYgKG1lc3NhZ2VEYXRhLnN1cHByZXNzQXJ0aWNsZUluU3VtbWFyeSAhPT0gdHJ1ZSAmJiBwYXJhbXMuYXJ0aWNsZSkge1xuXHRcdFx0c3VtbWFyeSArPSBgJHt3aW5kb3cud2dVTFMoJ++8jOS6jicsICfvvIzmlrwnKX1bWzoke3BhcmFtcy5hcnRpY2xlfV1dYDtcblx0XHR9XG5cdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkpO1xuXHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hCbG9ja05vdGljZXMnKSk7XG5cdFx0cGFnZW9iai5zYXZlKCk7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmxvY2ssICdibG9jaycpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gZnJpZW5kbHl0YWxrYmFjay5qcyAqL1xuKGZ1bmN0aW9uIGZyaWVuZGx5dGFsa2JhY2soJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIGZyaWVuZGx5dGFsa2JhY2suanM6IFRhbGtiYWNrIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJUQlwiKVxuXHQgKiBBY3RpdmUgb246IEFueSBwYWdlIHdpdGggcmVsZXZhbnQgdXNlciBuYW1lICh1c2Vyc3BhY2UsIGNvbnRyaWJzLCBldGMuKSBleGNlcHQgSVAgcmFuZ2VzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBGcmllbmRseUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS50YWxrYmFjayA9ICgpID0+IHtcblx0XHRpZiAoIW13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrLFxuXHRcdFx0J+mAmuWRiicsXG5cdFx0XHQnZnJpZW5kbHktdGFsa2JhY2snLFxuXHRcdFx0d2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJylcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykgJiZcblx0XHRcdCFjb25maXJtKHdpbmRvdy53Z1VMUygn5oKo5a+C5a+e5Yiw5LqG6KaB6Ieq5bex5Zue5aSN6Ieq5bex55qE56iL5bqm5LmI77yfJywgJ+aCqOWvguWvnuWIsOS6huimgeiHquW3seWbnuimhuiHquW3seeahOeoi+W6pum6vO+8nycpKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgMzUwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCflm57lpI3pgJrlkYonLCAn5Zue6KaG6YCa5ZGKJykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflhbPkuo57e3RhbGtiYWNrfX0nLCAn6Zec5pa8e3t0YWxrYmFja319JyksICdUZW1wbGF0ZTpUYWxrYmFjaycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6YCa5ZGK6K6+572uJywgJ+mAmuWRiuioreWumicpLCAnSDpUVy9QUkVGI3RhbGtiYWNrJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI3RhbGtiYWNrJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS50YWxrYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3JhZGlvJyxcblx0XHRcdG5hbWU6ICd0YnRhcmdldCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflm57lpI3vvJrmiJHnmoTorqjorrrpobUnLCAn5Zue6KaG77ya5oiR55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdteXRhbGsnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICd0cnVlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkje+8muWFtuS7lueUqOaIt+eahOiuqOiuuumhtScsICflm57opobvvJrlhbbku5bkvb/nlKjogIXnmoToqI7oq5bpoIEnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3VzZXJ0YWxrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkje+8muWFtuWug+mhtemdoicsICflm57opobvvJrlhbblroPpoIHpnaInKSxcblx0XHRcdFx0XHR2YWx1ZTogJ290aGVyJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mCgOivt+iuqOiuuicsICfpgoDoq4voqI7oq5YnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3NlZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+mAmuWRiuadv+mAmuefpScsXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpY2UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn4oCc5pyJ5paw6YKu5Lu24oCdJywgJ+OAjOacieaWsOmDteS7tuOAjScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbWFpbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUudGFsa2JhY2suY2hhbmdlVGFyZ2V0LFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogJ+W3peS9nOWMuicsXG5cdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHR9KTtcblx0XHRjb25zdCBwcmV2aWV3bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHQkKHByZXZpZXdsaW5rKS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRUd2lua2xlLnRhbGtiYWNrLnByZXZpZXcocmVzdWx0KTsgLy8gfHJlc3VsdHwgaXMgZGVmaW5lZCBiZWxvd1xuXHRcdH0pO1xuXG5cdFx0cHJldmlld2xpbmsuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuXHRcdHByZXZpZXdsaW5rLnRleHRDb250ZW50ID0gd2luZG93LndnVUxTKCfpooTop4gnLCAn6aCQ6Ka9Jyk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3RhbGtiYWNrcHJldmlldycsXG5cdFx0XHRsYWJlbDogW3ByZXZpZXdsaW5rXSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdGlkOiAnZnJpZW5kbHl0YWxrYmFjay1wcmV2aWV3Ym94Jyxcblx0XHRcdHN0eWxlOiAnZGlzcGxheTogbm9uZScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0cmVzdWx0LnByZXZpZXdlciA9IG5ldyBNb3JlYml0cy53aWtpLnByZXZpZXcoJChyZXN1bHQpLmZpbmQoJ2RpdiNmcmllbmRseXRhbGtiYWNrLXByZXZpZXdib3gnKS5sYXN0KClbMF0pO1xuXHRcdC8vIFdlIG11c3QgaW5pdCB0aGVcblx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQudGJ0YXJnZXRbMF0uZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdC8vIENoZWNrIHdoZXRoZXIgdGhlIHVzZXIgaGFzIG9wdGVkIG91dCBmcm9tIHRhbGtiYWNrXG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAnZXh0bGlua3MnLFxuXHRcdFx0dGl0bGVzOiBgVXNlciB0YWxrOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YCxcblx0XHRcdGVscXVlcnk6ICd1c2VyanMuaW52YWxpZC9ub1RhbGtiYWNrJyxcblx0XHRcdGVsbGltaXQ6ICcxJyxcblx0XHR9O1xuXHRcdGNvbnN0IHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aKk+WPlumAgOWHuumAmuWRiuS/oeaBrycsICfmipPlj5bpgIDlh7rpgJrlkYros4foqIonKSxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0VHdpbmtsZS50YWxrYmFjay5jYWxsYmFjay5vcHRvdXRTdGF0dXNcblx0XHQpO1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLm9wdG91dCA9ICcnO1xuXHRUd2lua2xlLnRhbGtiYWNrLmNhbGxiYWNrLm9wdG91dFN0YXR1cyA9IChhcGlvYmopID0+IHtcblx0XHRjb25zdCAkZWwgPSAkKGFwaW9iai5nZXRYTUwoKSkuZmluZCgnZWwnKTtcblx0XHRpZiAoJGVsLmxlbmd0aCkge1xuXHRcdFx0VHdpbmtsZS50YWxrYmFjay5vcHRvdXQgPVxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKSArIHdpbmRvdy53Z1VMUygn5LiN5biM5pyb5pS25Yiw5Zue5aSN6YCa5ZGKJywgJ+S4jeW4jOacm+aUtuWIsOWbnuimhumAmuWRiicpO1xuXHRcdFx0Y29uc3QgdXJsID0gJGVsLnRleHQoKTtcblx0XHRcdGNvbnN0IHJlYXNvbiA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncmVhc29uJywgdXJsKTtcblx0XHRcdFR3aW5rbGUudGFsa2JhY2sub3B0b3V0ICs9IHJlYXNvbiA/IGDvvJoke01vcmViaXRzLnN0cmluZy5hcHBlbmRQdW5jdHVhdGlvbihyZWFzb24pfWAgOiAn44CCJztcblx0XHR9XG5cdFx0JGJvZHkuZmluZCgnI3R3aW5rbGUtdGFsa2JhY2stb3B0b3V0LW1lc3NhZ2UnKS50ZXh0KFR3aW5rbGUudGFsa2JhY2sub3B0b3V0KTtcblx0fTtcblx0bGV0IHByZXZfcGFnZSA9ICcnO1xuXHRsZXQgcHJldl9zZWN0aW9uID0gJyc7XG5cdGxldCBwcmV2X21lc3NhZ2UgPSAnJztcblx0VHdpbmtsZS50YWxrYmFjay5jaGFuZ2VUYXJnZXQgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWVzO1xuXHRcdGNvbnN0IHJvb3QgPSBlLnRhcmdldC5mb3JtO1xuXHRcdGNvbnN0IFtvbGRfYXJlYV0gPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocm9vdCwgJ3dvcmtfYXJlYScpO1xuXHRcdGlmIChyb290LnNlY3Rpb24pIHtcblx0XHRcdHByZXZfc2VjdGlvbiA9IHJvb3Quc2VjdGlvbi52YWx1ZTtcblx0XHR9XG5cdFx0aWYgKHJvb3QubWVzc2FnZSkge1xuXHRcdFx0cHJldl9tZXNzYWdlID0gcm9vdC5tZXNzYWdlLnZhbHVlO1xuXHRcdH1cblx0XHRpZiAocm9vdC5wYWdlKSB7XG5cdFx0XHRwcmV2X3BhZ2UgPSByb290LnBhZ2UudmFsdWU7XG5cdFx0fVxuXHRcdGxldCB3b3JrX2FyZWEgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WbnuWkjemAmuWRiuS/oeaBrycsICflm57opobpgJrlkYros4foqIonKSxcblx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdH0pO1xuXHRcdHJvb3QucHJldmlld2VyLmNsb3NlUHJldmlldygpO1xuXHRcdHN3aXRjaCAodmFsdWUpIHtcblx0XHRcdGNhc2UgJ3VzZXJ0YWxrJzpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdHN0eWxlOiAnY29sb3I6ICNmMDAnLFxuXHRcdFx0XHRcdGlkOiAndHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdwYWdlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlKjmiLfvvIjlv4XloavvvIknLCAn5L2/55So6ICF77yI5b+F5aGr77yJJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmgqjnlZnoqIDpobXpnaLnmoTnlKjmiLflkI3vvIzlv4XloavjgIInLCAn5oKo55WZ6KiA6aCB6Z2i55qE5L2/55So6ICF5ZCN56ix77yM5b+F5aGr44CCJyksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfcGFnZSxcblx0XHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eroOiKgu+8iOWPr+mAie+8iScsICfnq6Dnr4DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug6IqC5qCH6aKY77yM55WZ56m65YiZ5LiN5Lya5Lqn55Sf56ug6IqC6ZO+5o6l44CCJyxcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6Dnr4DmqJnpoYzvvIznlZnnqbrliYfkuI3mnIPnlKLnlJ/nq6Dnr4DpgKPntZDjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9zZWN0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdub3RpY2UnOiB7XG5cdFx0XHRcdGNvbnN0IG5vdGljZWJvYXJkID0gd29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ25vdGljZWJvYXJkJyxcblx0XHRcdFx0XHRsYWJlbDogJ+mAmuWRiuadv++8micsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3IgKGNvbnN0IFtuYm5hbWUsIGRhdGFdIG9mIE9iamVjdC5lbnRyaWVzKFR3aW5rbGUudGFsa2JhY2subm90aWNlYm9hcmRzKSkge1xuXHRcdFx0XHRcdG5vdGljZWJvYXJkLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBkYXRhLmxhYmVsLFxuXHRcdFx0XHRcdFx0dmFsdWU6IG5ibmFtZSxcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiAhIWRhdGEuZGVmYXVsdFNlbGVjdGVkLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eroOiKgu+8iOWPr+mAie+8iScsICfnq6Dnr4DvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+eroOiKguagh+mimO+8jOeVmeepuuWImeS4jeS8muS6p+eUn+eroOiKgumTvuaOpeOAgicsICfnq6Dnr4DmqJnpoYzvvIznlZnnqbrliYfkuI3mnIPnlKLnlJ/nq6Dnr4DpgKPntZDjgIInKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldl9zZWN0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlICdvdGhlcic6XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdFx0XHRzdHlsZTogJ2NvbG9yOiAjZjAwJyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGUtdGFsa2JhY2stb3B0b3V0LW1lc3NhZ2UnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5a6M5pW06aG16Z2i5ZCNJywgJ+WujOaVtOmggemdouWQjScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjnlZnkuIvmtojmga/nmoTlrozmlbTpobXpnaLlkI3vvIzkvovlpoLigJxRaXV3ZW5fdGFsazrpppbpobXigJ3jgIInLFxuXHRcdFx0XHRcdFx0J+aCqOeVmeS4i+ioiuaBr+eahOWujOaVtOmggemdouWQje+8jOS+i+WmguOAjFFpdXdlbl90YWxrOummlumggeOAjeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3BhZ2UsXG5cdFx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzZWN0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnq6DoioLvvIjlj6/pgInvvIknLCAn56ug56+A77yI5Y+v6YG477yJJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOiKguagh+mimO+8jOeVmeepuuWImeS4jeS8muS6p+eUn+eroOiKgumTvuaOpeOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug56+A5qiZ6aGM77yM55WZ56m65YmH5LiN5pyD55Si55Sf56ug56+A6YCj57WQ44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfc2VjdGlvbixcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbWFpbCc6XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NlY3Rpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUteWtkOmCruS7tuS4u+mimO+8iOWPr+mAie+8iScsICfpm7vlrZDpg7Xku7bkuLvpoYzvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+aCqOWPkeWHuueahOeUteWtkOmCruS7tueahOS4u+mimOOAgicsICfmgqjnmbzlh7rnmoTpm7vlrZDpg7Xku7bnmoTkuLvpoYzjgIInKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2VlJzpcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5a6M5pW06aG16Z2i5ZCNJywgJ+WujOaVtOmggemdouWQjScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjnlZnkuIvmtojmga/nmoTlrozmlbTpobXpnaLlkI3vvIzkvovlpoLigJxRaXV3ZW5fdGFsazrpppbpobXigJ3jgIInLFxuXHRcdFx0XHRcdFx0J+aCqOeVmeS4i+ioiuaBr+eahOWujOaVtOmggemdouWQje+8jOS+i+WmguOAjFFpdXdlbl90YWxrOummlumggeOAjeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3BhZ2UsXG5cdFx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdzZWN0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnq6DoioLvvIjlj6/pgInvvIknLCAn56ug56+A77yI5Y+v6YG477yJJyksXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOiKguagh+mimO+8jOeVmeepuuWImeS4jeS8muS6p+eUn+eroOiKgumTvuaOpeOAgicsXG5cdFx0XHRcdFx0XHQn5oKo55WZ6KiA55qE56ug56+A5qiZ6aGM77yM55WZ56m65YmH5LiN5pyD55Si55Sf56ug56+A6YCj57WQ44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZfc2VjdGlvbixcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0LyogY2FzZSAnbXl0YWxrJzogKi9cblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdFx0XHRzdHlsZTogJ2NvbG9yOiAjZjAwJyxcblx0XHRcdFx0XHRpZDogJ3R3aW5rbGUtdGFsa2JhY2stb3B0b3V0LW1lc3NhZ2UnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRuYW1lOiAnc2VjdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56ug6IqC77yI5Y+v6YCJ77yJJywgJ+eroOevgO+8iOWPr+mBuO+8iScpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjnlZnoqIDnmoTnq6DoioLmoIfpopjvvIznlZnnqbrliJnkuI3kvJrkuqfnlJ/nq6DoioLpk77mjqXjgIInLFxuXHRcdFx0XHRcdFx0J+aCqOeVmeiogOeahOeroOevgOaomemhjO+8jOeVmeepuuWJh+S4jeacg+eUoueUn+eroOevgOmAo+e1kOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2X3NlY3Rpb24sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKHZhbHVlICE9PSAnbm90aWNlJykge1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mZhOWKoOS/oeaBr++8iOWPr+mAie+8ie+8micsICfpmYTliqDos4foqIrvvIjlj6/pgbjvvInvvJonKSxcblx0XHRcdFx0bmFtZTogJ21lc3NhZ2UnLFxuXHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+S8muWcqOWbnuWkjemAmuWRiuaooeadv+S4i+WHuueOsOeahOa2iOaBr++8jOaCqOeahOetvuWQjeS8muiiq+WKoOWcqOacgOWQjuOAgicsXG5cdFx0XHRcdFx0J+acg+WcqOWbnuimhumAmuWRiuaooeadv+S4i+WHuuePvueahOioiuaBr++8jOaCqOeahOewveWQjeacg+iiq+WKoOWcqOacgOW+jOOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0cm9vdC5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0aWYgKHJvb3QubWVzc2FnZSkge1xuXHRcdFx0cm9vdC5tZXNzYWdlLnZhbHVlID0gcHJldl9tZXNzYWdlO1xuXHRcdH1cblx0XHQkYm9keS5maW5kKCcjdHdpbmtsZS10YWxrYmFjay1vcHRvdXQtbWVzc2FnZScpLnRleHQoVHdpbmtsZS50YWxrYmFjay5vcHRvdXQpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLm5vdGljZWJvYXJkcyA9IHtcblx0XHRhZmZwOiB7XG5cdFx0XHRsYWJlbDogYFFXOkFGL0ZQ77yIJHt3aW5kb3cud2dVTFMoJ+i/h+a7pOWZqOWkhOeQhi/miqXlkYonLCAn6YGO5r++5Zmo6JmV55CGL+WgseWRiicpfe+8iWAsXG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfov4fmu6TlmajplJnor6/miqXlkYrmnInmlrDlm57lupQnLCAn6YGO5r++5Zmo6Yyv6Kqk5aCx5ZGK5pyJ5paw5Zue5oeJJyksXG5cdFx0XHRjb250ZW50OiBgJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmgqjnmoRbW1FpdXdlbl90YWxrOui/h+a7pOWZqOWkhOeQhi/miqXlkYp86L+H5ruk5Zmo6ZSZ6K+v5oql5ZGKXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrov4fmu6TlmajlpITnkIYv5oql5ZGKfOmBjua/vuWZqOmMr+iqpOWgseWRil1d5bey5pyJ5Zue5oeJ77yM6KuL5YmN5b6A5p+l55yL44CCJ1xuXHRcdFx0KX0tLX5+YC5jb25jYXQoJ35+JyksXG5cdFx0XHRlZGl0U3VtbWFyeTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQn5pyJ5YWzW1tRaXV3ZW5fdGFsazrov4fmu6TlmajlpITnkIYv5oql5ZGKfOi/h+a7pOWZqOmUmeivr+aKpeWRil1d55qE6YCa55+lJyxcblx0XHRcdFx0J+aciemXnFtbUWl1d2VuX3RhbGs66L+H5ruk5Zmo5aSE55CGL+aKpeWRinzpgY7mv77lmajpjK/oqqTloLHlkYpdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0XHRkZWZhdWx0U2VsZWN0ZWQ6IHRydWUsXG5cdFx0fSxcblx0XHRzYmw6IHtcblx0XHRcdGxhYmVsOiAnU3BhbS1ibGFja2xpc3QnLFxuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V6K+35rGC5pyJ5paw5Zue5bqUJywgJ+Weg+WcvumAo+e1kOm7keWQjeWWruiri+axguacieaWsOWbnuaHiScpLFxuXHRcdFx0Y29udGVudDogYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V6K+35rGCXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6YCj57WQ6buR5ZCN5Zau6KuL5rGCXV3lt7LmnInlm57mh4nvvIzoq4vliY3lvoDmn6XnnIvjgIInXG5cdFx0XHQpfS0tfn5gLmNvbmNhdCgnfn4nKSxcblx0XHRcdGVkaXRTdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmnInlhbNbW1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pk77mjqXpu5HlkI3ljZXor7fmsYJdXeeahOmAmuefpScsXG5cdFx0XHRcdCfmnInpl5xbW1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pgKPntZDpu5HlkI3llq7oq4vmsYJdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0fSxcblx0XHRzaGw6IHtcblx0XHRcdGxhYmVsOiAnU3BhbS13aGl0ZWxpc3QnLFxuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Z6D5Zy+6ZO+5o6l55m95ZCN5Y2V6K+35rGC5pyJ5paw5Zue5bqUJywgJ+Weg+WcvumAo+e1kOeZveWQjeWWruiri+axguacieaWsOWbnuaHiScpLFxuXHRcdFx0Y29udGVudDogYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6ZO+5o6l55m95ZCN5Y2V6K+35rGCXV3lt7LmnInlm57lupTvvIzor7fliY3lvoDmn6XnnIvjgIInLFxuXHRcdFx0XHQn5oKo55qEW1tRaXV3ZW5fdGFsazrnrqHnkIblkZjlkYrnpLrmnb985Z6D5Zy+6YCj57WQ55m95ZCN5Zau6KuL5rGCXV3lt7LmnInlm57mh4nvvIzoq4vliY3lvoDmn6XnnIvjgIInXG5cdFx0XHQpfS0tfn5gLmNvbmNhdCgnfn4nKSxcblx0XHRcdGVkaXRTdW1tYXJ5OiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfmnInlhbNbW1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pk77mjqXnmb3lkI3ljZXor7fmsYJdXeeahOmAmuefpScsXG5cdFx0XHRcdCfmnInpl5xbW1FpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadv3zlnoPlnL7pgKPntZDnmb3lkI3llq7oq4vmsYJdXeeahOmAmuefpSdcblx0XHRcdCksXG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS50YWxrYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IFt0YnRhcmdldF0gPSBmb3JtLmdldENoZWNrZWQoJ3RidGFyZ2V0Jyk7XG5cdFx0bGV0IHBhZ2U7XG5cdFx0bGV0IG1lc3NhZ2U7XG5cdFx0Y29uc3Qgc2VjdGlvbiA9IGZvcm0uc2VjdGlvbi52YWx1ZTtcblx0XHRsZXQgZWRpdFN1bW1hcnk7XG5cdFx0aWYgKHRidGFyZ2V0ID09PSAnbm90aWNlJykge1xuXHRcdFx0cGFnZSA9IGZvcm0ubm90aWNlYm9hcmQudmFsdWU7XG5cdFx0XHQoe2VkaXRTdW1tYXJ5fSA9IFR3aW5rbGUudGFsa2JhY2subm90aWNlYm9hcmRzW3BhZ2VdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gdXNlcnRhbGssIG90aGVyLCBzZWVcblx0XHRcdHBhZ2UgPSBmb3JtLnBhZ2UgPyBmb3JtLnBhZ2UudmFsdWUgOiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0XHRpZiAoZm9ybS5tZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBmb3JtLm1lc3NhZ2UudmFsdWUudHJpbSgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRidGFyZ2V0ID09PSAnbWFpbCcpIHtcblx0XHRcdFx0ZWRpdFN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+mAmuefpe+8muacieaWsOmCruS7ticsICfpgJrnn6XvvJrmnInmlrDpg7Xku7YnKTtcblx0XHRcdH0gZWxzZSBpZiAodGJ0YXJnZXQgPT09ICdzZWUnKSB7XG5cdFx0XHRcdGVkaXRTdW1tYXJ5ID0gYCR7d2luZG93LndnVUxTKCfor7fnnIvnnIsnLCAn6KuL55yL55yLJyl9W1s6JHtwYWdlfSR7c2VjdGlvbiA/IGAjJHtzZWN0aW9ufWAgOiAnJ31dXSR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfkuIrnmoTorqjorronLFxuXHRcdFx0XHRcdCfkuIrnmoToqI7oq5YnXG5cdFx0XHRcdCl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRidGFyZ2V0IG9uZSBvZiBteXRhbGssIHVzZXJ0YWxrLCBvdGhlclxuXHRcdFx0XHRlZGl0U3VtbWFyeSA9IGAke3dpbmRvdy53Z1VMUygn5Zue5aSN6YCa5ZGKJywgJ+WbnuimhumAmuWRiicpfe+8iFtbOmA7XG5cdFx0XHRcdGlmICh0YnRhcmdldCAhPT0gJ290aGVyJyAmJiAhbmV3IFJlZ0V4cChgXlxcXFxzKiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoMyl9OmAsICdpJykudGVzdChwYWdlKSkge1xuXHRcdFx0XHRcdGVkaXRTdW1tYXJ5ICs9ICdVc2VyIHRhbGs6Jztcblx0XHRcdFx0fVxuXHRcdFx0XHRlZGl0U3VtbWFyeSArPSBgJHtwYWdlICsgKHNlY3Rpb24gPyBgIyR7c2VjdGlvbn1gIDogJycpfV1dKWA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0Y29uc3QgZnVsbFVzZXJUYWxrUGFnZU5hbWUgPSBgJHtcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW213LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlSWRzJykudXNlcl90YWxrXVxuXHRcdH06JHttdy5jb25maWcuZ2V0KCd3Z1JlbGV2YW50VXNlck5hbWUnKX1gO1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gZnVsbFVzZXJUYWxrUGFnZU5hbWU7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+WbnuWkjemAmuWRiuWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5Zue6KaG6YCa5ZGK5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0Y29uc3QgdGV4dCA9IGBcXG5cXG4ke1R3aW5rbGUudGFsa2JhY2suZ2V0Tm90aWNlV2lraXRleHQodGJ0YXJnZXQsIHBhZ2UsIHNlY3Rpb24sIG1lc3NhZ2UpWzBdfWA7XG5cdFx0Y29uc3QgdGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKGZ1bGxVc2VyVGFsa1BhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+WKoOWFpeWbnuWkjemAmuWRiicsICfliqDlhaXlm57opobpgJrlkYonKSk7XG5cdFx0dGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoZWRpdFN1bW1hcnkpO1xuXHRcdHRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHR0YWxrcGFnZS5zZXRBcHBlbmRUZXh0KHRleHQpO1xuXHRcdHRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHR0YWxrcGFnZS5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFsa2JhY2tBc01pbm9yJykpO1xuXHRcdHRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdHRhbGtwYWdlLmFwcGVuZCgpO1xuXHR9O1xuXHRUd2lua2xlLnRhbGtiYWNrLnByZXZpZXcgPSAoZm9ybSkgPT4ge1xuXHRcdGNvbnN0IFt0YnRhcmdldF0gPSBmb3JtLmdldENoZWNrZWQoJ3RidGFyZ2V0Jyk7XG5cdFx0Y29uc3Qgc2VjdGlvbiA9IGZvcm0uc2VjdGlvbi52YWx1ZTtcblx0XHRsZXQgcGFnZTtcblx0XHRsZXQgbWVzc2FnZTtcblx0XHRpZiAodGJ0YXJnZXQgPT09ICdub3RpY2UnKSB7XG5cdFx0XHRwYWdlID0gZm9ybS5ub3RpY2Vib2FyZC52YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gdXNlcnRhbGssIG90aGVyLCBzZWVcblx0XHRcdHBhZ2UgPSBmb3JtLnBhZ2UgPyBmb3JtLnBhZ2UudmFsdWUgOiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJyk7XG5cdFx0XHRpZiAoZm9ybS5tZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBmb3JtLm1lc3NhZ2UudmFsdWUudHJpbSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBbbm90aWNldGV4dF0gPSBUd2lua2xlLnRhbGtiYWNrLmdldE5vdGljZVdpa2l0ZXh0KHRidGFyZ2V0LCBwYWdlLCBzZWN0aW9uLCBtZXNzYWdlKTtcblx0XHRmb3JtLnByZXZpZXdlci5iZWdpblJlbmRlcihub3RpY2V0ZXh0LCBgVXNlcl90YWxrOiR7bXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJyl9YCk7IC8vIEZvcmNlIHdpa2l0ZXh0L2NvcnJlY3QgdXNlcm5hbWVcblx0fTtcblxuXHRUd2lua2xlLnRhbGtiYWNrLmdldE5vdGljZVdpa2l0ZXh0ID0gKHRidGFyZ2V0LCBwYWdlLCBzZWN0aW9uLCBtZXNzYWdlKSA9PiB7XG5cdFx0bGV0IHRleHQ7XG5cdFx0bGV0IHRpdGxlO1xuXHRcdGxldCBjb250ZW50O1xuXHRcdGlmICh0YnRhcmdldCA9PT0gJ25vdGljZScpIHtcblx0XHRcdCh7dGl0bGV9ID0gVHdpbmtsZS50YWxrYmFjay5ub3RpY2Vib2FyZHNbcGFnZV0pO1xuXHRcdFx0Y29udGVudCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShUd2lua2xlLnRhbGtiYWNrLm5vdGljZWJvYXJkc1twYWdlXS5jb250ZW50LCAnJFNFQ1RJT04nLCBzZWN0aW9uKTtcblx0XHRcdHRleHQgPSBgPT0gJHt0aXRsZX0gPT1cXG4ke2NvbnRlbnR9YDtcblx0XHR9IGVsc2UgaWYgKHRidGFyZ2V0ID09PSAnc2VlJykge1xuXHRcdFx0dGl0bGUgPSBwYWdlICsgd2luZG93LndnVUxTKCfnmoTnm7jlhbPorqjorronLCAn55qE55u46Zec6KiO6KuWJyk7XG5cdFx0XHRjb250ZW50ID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRgUGxlYXNlIHNlZXxsb2NhdGlvbj0ke3BhZ2V9JHtzZWN0aW9uID8gYCMke3NlY3Rpb259YCA6ICcnfXxtb3JlPSR7bWVzc2FnZS50cmltKCl9fX1gXG5cdFx0XHQpO1xuXHRcdFx0dGV4dCA9ICd7eycuY29uY2F0KFxuXHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0YFBsZWFzZSBzZWV8bG9jYXRpb249JHtwYWdlfSR7c2VjdGlvbiA/IGAjJHtzZWN0aW9ufWAgOiAnJ318bW9yZT0ke21lc3NhZ2UudHJpbSgpfX19YFxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGV4dCA9ICc9PSc7XG5cdFx0XHRpZiAodGJ0YXJnZXQgPT09ICdtYWlsJykge1xuXHRcdFx0XHR0aXRsZSA9IFR3aW5rbGUuZ2V0UHJlZignbWFpbEhlYWRpbmcnKTtcblx0XHRcdFx0Y29udGVudCA9IGB7e1lvdSd2ZSBnb3QgbWFpbHxzdWJqZWN0PSR7c2VjdGlvbn18dHM9fn5gLmNvbmNhdCgnficsICd+fn19Jyk7XG5cdFx0XHRcdHRleHQgKz0gYCR7VHdpbmtsZS5nZXRQcmVmKCdtYWlsSGVhZGluZycpfT09XFxue3tZb3UndmUgZ290IG1haWx8c3ViamVjdD0ke3NlY3Rpb259YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHRidGFyZ2V0IG9uZSBvZiBteXRhbGssIHVzZXJ0YWxrLCBvdGhlclxuXHRcdFx0XHQvLyBjbGVhbiB0YWxrYmFjayBoZWFkaW5nOiBzdHJpcCBzZWN0aW9uIGhlYWRlciBtYXJrZXJzIHRoYXQgd2VyZSBlcnJvbmVvdXNseSBzdWdnZXN0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb25cblx0XHRcdFx0dGl0bGUgPSBUd2lua2xlLmdldFByZWYoJ3RhbGtiYWNrSGVhZGluZycpLnJlcGxhY2UoL15cXHMqPStcXHMqKC4qPylcXHMqPSskXFxzKi8sICckMScpO1xuXHRcdFx0XHRjb250ZW50ID0gYHt7dGFsa2JhY2t8JHtwYWdlfSR7c2VjdGlvbiA/IGB8JHtzZWN0aW9ufWAgOiAnJ31gO1xuXHRcdFx0XHR0ZXh0ICs9IGAke1R3aW5rbGUuZ2V0UHJlZigndGFsa2JhY2tIZWFkaW5nJykucmVwbGFjZShcblx0XHRcdFx0XHQvXlxccyo9K1xccyooLio/KVxccyo9KyRcXHMqLyxcblx0XHRcdFx0XHQnJDEnXG5cdFx0XHRcdCl9PT1cXG57e3RhbGtiYWNrfCR7cGFnZX0ke3NlY3Rpb24gPyBgfCR7c2VjdGlvbn1gIDogJyd9YDtcblx0XHRcdH1cblx0XHRcdGNvbnRlbnQgKz0gJ3x0cz1+ficuY29uY2F0KCd+JywgJ35+fX0nKTtcblx0XHRcdHRleHQgKz0gJ3x0cz1+ficuY29uY2F0KCd+JywgJ35+fX0nKTtcblx0XHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHRcdGNvbnRlbnQgKz0gYFxcbiR7bWVzc2FnZX1gO1xuXHRcdFx0XHR0ZXh0ICs9IGBcXG4ke21lc3NhZ2V9ICB+fmAuY29uY2F0KCd+ficpO1xuXHRcdFx0fSBlbHNlIGlmIChUd2lua2xlLmdldFByZWYoJ2luc2VydFRhbGtiYWNrU2lnbmF0dXJlJykpIHtcblx0XHRcdFx0dGV4dCArPSAnXFxufn4nLmNvbmNhdCgnfn4nKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFt0ZXh0LCB0aXRsZSwgY29udGVudF07XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUudGFsa2JhY2ssICd0YWxrYmFjaycpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQge2dlbmVyYXRlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXNwZWVkeS5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVzcGVlZHkoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVzcGVlZHkuanM6IENTRCBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiQ1NEXCIpXG5cdCAqIEFjdGl2ZSBvbjogTm9uLXNwZWNpYWwsIGV4aXN0aW5nIHBhZ2VzXG5cdCAqXG5cdCAqIE5PVEUgRk9SIERFVkVMT1BFUlM6XG5cdCAqICBJZiBhZGRpbmcgYSBuZXcgY3JpdGVyaW9uLCBhZGQgaXQgdG8gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcyBhdCB0aGUgdG9wIG9mXG5cdCAqICB0d2lua2xlY29uZmlnLmpzLlxuXHQgKiAgQWxzbywgY2hlY2sgb3V0IHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgQ1NEIHByZWZlcmVuY2VzIGluIHR3aW5rbGUuanMsXG5cdCAqICBhbmQgYWRkIHlvdXIgbmV3IGNyaXRlcmlvbiB0byB0aG9zZSBpZiB5b3UgdGhpbmsgaXQgd291bGQgYmUgZ29vZC5cblx0ICovXG5cdFR3aW5rbGUuc3BlZWR5ID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA8IDAgfHwgIW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfpgJ/liKAnLCAn6YCf5YiqJyksXG5cdFx0XHQndHctY3NkJyxcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wID8gd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaQnLCAn5b+r6YCf5Yiq6ZmkJykgOiB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpCcsICfoq4vmsYLlv6vpgJ/liKrpmaQnKVxuXHRcdCk7XG5cdH07XG5cdC8vIFRoaXMgZnVuY3Rpb24gaXMgcnVuIHdoZW4gdGhlIENTRCB0YWIvaGVhZGVyIGxpbmsgaXMgY2xpY2tlZFxuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRUd2lua2xlLnNwZWVkeS5pbml0RGlhbG9nKFxuXHRcdFx0TW9yZWJpdHMudXNlcklzU3lzb3AgPyBUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVN5c29wIDogVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZXZhbHVhdGVVc2VyLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH07XG5cdC8vIFVzZWQgYnkgdW5saW5rIGZlYXR1cmVcblx0VHdpbmtsZS5zcGVlZHkuZGlhbG9nID0gbnVsbDtcblx0Ly8gVXNlZCB0aHJvdWdob3V0XG5cdFR3aW5rbGUuc3BlZWR5Lmhhc0NTRCA9ICEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RlbGV0ZS1yZWFzb24nKTtcblx0Ly8gVGhlIHNwZWVkeSBjcml0ZXJpYSBsaXN0IGNhbiBiZSBpbiBvbmUgb2Ygc2V2ZXJhbCBtb2Rlc1xuXHRUd2lua2xlLnNwZWVkeS5tb2RlID0ge1xuXHRcdHN5c29wU2luZ2xlU3VibWl0OiAxLFxuXHRcdC8vIHJhZGlvIGJ1dHRvbnMsIG5vIHN1Ymdyb3Vwcywgc3VibWl0IHdoZW4gXCJTdWJtaXRcIiBidXR0b24gaXMgY2xpY2tlZFxuXHRcdHN5c29wUmFkaW9DbGljazogMixcblx0XHQvLyByYWRpbyBidXR0b25zLCBubyBzdWJncm91cHMsIHN1Ym1pdCB3aGVuIGEgcmFkaW8gYnV0dG9uIGlzIGNsaWNrZWRcblx0XHRzeXNvcE11bHRpcGxlU3VibWl0OiAzLFxuXHRcdC8vIGNoZWNrIGJveGVzLCBzdWJncm91cHMsIFwiU3VibWl0XCIgYnV0dG9uIGFscmVhZHkgcHJlc2VudFxuXHRcdHN5c29wTXVsdGlwbGVSYWRpb0NsaWNrOiA0LFxuXHRcdC8vIGNoZWNrIGJveGVzLCBzdWJncm91cHMsIG5lZWQgdG8gYWRkIGEgXCJTdWJtaXRcIiBidXR0b25cblx0XHR1c2VyTXVsdGlwbGVTdWJtaXQ6IDUsXG5cdFx0Ly8gY2hlY2sgYm94ZXMsIHN1Ymdyb3VwcywgXCJTdWJtaXRcIiBidXR0b24gYWxyZWFkeSBwcmVzc2VudFxuXHRcdHVzZXJNdWx0aXBsZVJhZGlvQ2xpY2s6IDYsXG5cdFx0Ly8gY2hlY2sgYm94ZXMsIHN1Ymdyb3VwcywgbmVlZCB0byBhZGQgYSBcIlN1Ym1pdFwiIGJ1dHRvblxuXHRcdHVzZXJTaW5nbGVTdWJtaXQ6IDcsXG5cdFx0Ly8gcmFkaW8gYnV0dG9ucywgc3ViZ3JvdXBzLCBzdWJtaXQgd2hlbiBcIlN1Ym1pdFwiIGJ1dHRvbiBpcyBjbGlja2VkXG5cdFx0dXNlclNpbmdsZVJhZGlvQ2xpY2s6IDgsXG5cdFx0Ly8gcmFkaW8gYnV0dG9ucywgc3ViZ3JvdXBzLCBzdWJtaXQgd2hlbiBhIHJhZGlvIGJ1dHRvbiBpcyBjbGlja2VkXG5cdFx0Ly8gYXJlIHdlIGluIFwiZGVsZXRlIHBhZ2VcIiBtb2RlP1xuXHRcdC8vIChzeXNvcHMgY2FuIGFjY2VzcyBib3RoIFwiZGVsZXRlIHBhZ2VcIiBbc3lzb3BdIGFuZCBcInRhZyBwYWdlIG9ubHlcIiBbdXNlcl0gbW9kZXMpXG5cdFx0aXNTeXNvcDogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BSYWRpb0NsaWNrIHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2tcblx0XHRcdCk7XG5cdFx0fSxcblx0XHQvLyBkbyB3ZSBoYXZlIGEgXCJTdWJtaXRcIiBidXR0b24gb25jZSB0aGUgZm9ybSBpcyBjcmVhdGVkP1xuXHRcdGhhc1N1Ym1pdEJ1dHRvbjogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVJhZGlvQ2xpY2sgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVTdWJtaXQgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVSYWRpb0NsaWNrIHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlclNpbmdsZVN1Ym1pdFxuXHRcdFx0KTtcblx0XHR9LFxuXHRcdC8vIGlzIGRiLW11bHRpcGxlIHRoZSBvdXRjb21lIGhlcmU/XG5cdFx0aXNNdWx0aXBsZTogKG1vZGUpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlck11bHRpcGxlU3VibWl0IHx8XG5cdFx0XHRcdG1vZGUgPT09IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BNdWx0aXBsZVN1Ym1pdCB8fFxuXHRcdFx0XHRtb2RlID09PSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJNdWx0aXBsZVJhZGlvQ2xpY2sgfHxcblx0XHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlUmFkaW9DbGlja1xuXHRcdFx0KTtcblx0XHR9LFxuXHR9O1xuXHQvLyBQcmVwYXJlcyB0aGUgc3BlZWR5IGRlbGV0aW9uIGRpYWxvZyBhbmQgZGlzcGxheXMgaXRcblx0VHdpbmtsZS5zcGVlZHkuaW5pdERpYWxvZyA9IChjYWxsYmFja2Z1bmMpID0+IHtcblx0XHRUd2lua2xlLnNwZWVkeS5kaWFsb2cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlXaW5kb3dXaWR0aCcpLFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzcGVlZHlXaW5kb3dIZWlnaHQnKVxuXHRcdCk7XG5cdFx0Y29uc3Qge2RpYWxvZ30gPSBUd2lua2xlLnNwZWVkeTtcblx0XHRkaWFsb2cuc2V0VGl0bGUod2luZG93LndnVUxTKCfpgInmi6nlv6vpgJ/liKDpmaTnkIbnlLEnLCAn6YG45pOH5b+r6YCf5Yiq6Zmk55CG55SxJykpO1xuXHRcdGRpYWxvZy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0ZGlhbG9nLmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmlrnpkognLCAn5b+r6YCf5Yiq6Zmk5pa56YedJyksICdRVzpDU0QnKTtcblx0XHRkaWFsb2cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+mAn+WIoOiuvue9ricsICfpgJ/liKroqK3lrponKSwgJ0g6VFcvUFJFRiNzcGVlZHknKTtcblx0XHRkaWFsb2cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjc3BlZWR5Jyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oXG5cdFx0XHRjYWxsYmFja2Z1bmMsXG5cdFx0XHRUd2lua2xlLmdldFByZWYoJ3NwZWVkeVNlbGVjdGlvblN0eWxlJykgPT09ICdyYWRpb0NsaWNrJyA/ICdjaGFuZ2UnIDogbnVsbFxuXHRcdCk7XG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj6rmoIforrDvvIzkuI3liKDpmaQnLCAn5Y+q5qiZ6KiY77yM5LiN5Yiq6ZmkJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3RhZ19vbmx5Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdfb25seScsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+iLpeaCqOWPquaDs+agh+iusOatpOmhtemdouiAjOS4jeaYr+WwhuWFtuWIoOmZpCcsICfoi6Xmgqjlj6rmg7PmqJnoqJjmraTpoIHpnaLogIzkuI3mmK/lsIflhbbliKrpmaQnKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6ICEoVHdpbmtsZS5zcGVlZHkuaGFzQ1NEIHx8IFR3aW5rbGUuZ2V0UHJlZignZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUnKSksXG5cdFx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNGb3JtID0gZXZlbnQudGFyZ2V0LmZvcm07XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNDaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIHRhbGsgcGFnZSBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRpZiAoY0Zvcm0udGFsa3BhZ2UpIHtcblx0XHRcdFx0XHRcdFx0XHRjRm9ybS50YWxrcGFnZS5kaXNhYmxlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRcdGNGb3JtLnRhbGtwYWdlLmNoZWNrZWQgPSAhY0NoZWNrZWQgJiYgVHdpbmtsZS5nZXRQcmVmKCdkZWxldGVUYWxrUGFnZU9uRGVsZXRlJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Ly8gZW5hYmxlL2Rpc2FibGUgcmVkaXJlY3RzIGNoZWNrYm94XG5cdFx0XHRcdFx0XHRcdGNGb3JtLnJlZGlyZWN0cy5kaXNhYmxlZCA9IGNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5yZWRpcmVjdHMuY2hlY2tlZCA9ICFjQ2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0Ly8gZW5hYmxlL2Rpc2FibGUgZGVsZXRlIG11bHRpcGxlXG5cdFx0XHRcdFx0XHRcdGNGb3JtLmRlbG11bHRpcGxlLmRpc2FibGVkID0gY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdGNGb3JtLmRlbG11bHRpcGxlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0Ly8gZW5hYmxlL2Rpc2FibGUgb3BlbiB0YWxrIHBhZ2UgY2hlY2tib3hcblx0XHRcdFx0XHRcdFx0Y0Zvcm0ub3BlbnVzZXJ0YWxrLmRpc2FibGVkID0gY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdGNGb3JtLm9wZW51c2VydGFsay5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIG5vdGlmeSBjaGVja2JveFxuXHRcdFx0XHRcdFx0XHRjRm9ybS5ub3RpZnkuZGlzYWJsZWQgPSAhY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdGNGb3JtLm5vdGlmeS5jaGVja2VkID0gY0NoZWNrZWQ7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZS9kaXNhYmxlIG11bHRpcGxlXG5cdFx0XHRcdFx0XHRcdGNGb3JtLm11bHRpcGxlLmRpc2FibGVkID0gIWNDaGVja2VkO1xuXHRcdFx0XHRcdFx0XHRjRm9ybS5tdWx0aXBsZS5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdC8vIGVuYWJsZSByZXF1ZXN0aW5nIGNyZWF0aW9uIHByb3RlY3Rpb25cblx0XHRcdFx0XHRcdFx0Y0Zvcm0uc2FsdGluZy5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLm1vZGVDaGFuZ2VkKGNGb3JtKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGRlbGV0ZU9wdGlvbnMgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRuYW1lOiAnZGVsZXRlX29wdGlvbnMnLFxuXHRcdFx0fSk7XG5cdFx0XHRkZWxldGVPcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaTnm7jlhbPpgInpobknLCAn5Yiq6Zmk55u46Zec6YG46aCFJyksXG5cdFx0XHR9KTtcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICUgMiA9PT0gMCAmJiBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICE9PSAyKSB7XG5cdFx0XHRcdC8vIGhpZGUgb3B0aW9uIGZvciB1c2VyIHBhZ2VzLCB0byBhdm9pZCBhY2NpZGVudGFsbHkgZGVsZXRpbmcgdXNlciB0YWxrIHBhZ2Vcblx0XHRcdFx0ZGVsZXRlT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaTorqjorrrpobUnLCAn5Yiq6Zmk6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAndGFsa3BhZ2UnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAndGFsa3BhZ2UnLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOaXtumZhOW4puWIoOmZpOatpOmhtemdoueahOiuqOiuuumhteOAgicsICfliKrpmaTmmYLpmYTluLbliKrpmaTmraTpoIHpnaLnmoToqI7oq5bpoIHjgIInKSxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdkZWxldGVUYWxrUGFnZU9uRGVsZXRlJyksXG5cdFx0XHRcdFx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRkZWxldGVPcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaTph43lrprlkJEnLCAn5Yiq6Zmk6YeN5paw5bCO5ZCRJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRuYW1lOiAncmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5Yig6Zmk5Yiw5q2k6aG155qE6YeN5a6a5ZCR44CCJywgJ+WIqumZpOWIsOatpOmggeeahOmHjeaWsOWwjuWQkeOAgicpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdkZWxldGVSZWRpcmVjdHNPbkRlbGV0ZScpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdFx0ZGVsZXRlT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bqU55So5aSa5Liq55CG55Sx5Yig6ZmkJywgJ+aHieeUqOWkmuWAi+eQhueUseWIqumZpCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxtdWx0aXBsZScsXG5cdFx0XHRcdFx0XHRuYW1lOiAnZGVsbXVsdGlwbGUnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmgqjlj6/pgInmi6nlupTnlKjkuo7or6XpobXnmoTlpJrkuKrnkIbnlLHjgIInLCAn5oKo5Y+v6YG45pOH5oeJ55So5pa86Kmy6aCB55qE5aSa5YCL55CG55Sx44CCJyksXG5cdFx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLm1vZGVDaGFuZ2VkKGV2ZW50LnRhcmdldC5mb3JtKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHRcdGRlbGV0ZU9wdGlvbnMuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W8gOWQr+eUqOaIt+iuqOiuuumhtScsICfplovllZ/kvb/nlKjogIXoqI7oq5bpoIEnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnb3BlbnVzZXJ0YWxrJyxcblx0XHRcdFx0XHRcdG5hbWU6ICdvcGVudXNlcnRhbGsnLFxuXHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn5q2k6aG555qE6buY6K6k5YC85Li65oKo55qE5byA5ZCv6K6o6K666aG16K6+572u44CC5Zyo5oKo6YCJ5oup5bqU55So5aSa5p2h55CG55Sx5Yig6Zmk5pe25q2k6aG55bCG5L+d5oyB5LiN5Y+Y44CCJyxcblx0XHRcdFx0XHRcdFx0J+atpOmgheeahOmgkOioreWAvOeCuuaCqOeahOmWi+WVn+iojuirlumggeioreWumuOAguWcqOaCqOmBuOaTh+aHieeUqOWkmuaineeQhueUseWIqumZpOaZguatpOmgheWwh+S/neaMgeS4jeiuiuOAgidcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IHRhZ09wdGlvbnMgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdG5hbWU6ICd0YWdfb3B0aW9ucycsXG5cdFx0fSk7XG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHR0YWdPcHRpb25zLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDnm7jlhbPpgInpobknLCAn5qiZ6KiY55u46Zec6YG46aCFJyksXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0dGFnT3B0aW9ucy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WmguWPr+iDve+8jOmAmuefpeWIm+W7uuiAhScsICflpoLlj6/og73vvIzpgJrnn6Xlu7rnq4vogIUnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ25vdGlmeScsXG5cdFx0XHRcdFx0bmFtZTogJ25vdGlmeScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S4gOS4qumAmuefpeaooeadv+WwhuS8muiiq+WKoOWFpeWIm+W7uuiAheeahOiuqOiuuumhte+8jOiLpeaCqOWQr+eUqOS6huivpeeQhuaNrueahOmAmuefpeOAgicsXG5cdFx0XHRcdFx0XHQn5LiA5YCL6YCa55+l5qih5p2/5bCH5pyD6KKr5Yqg5YWl5bu656uL6ICF55qE6KiO6KuW6aCB77yM6Iul5oKo5ZWf55So5LqG6Kmy55CG5pOa55qE6YCa55+l44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y2hlY2tlZDpcblx0XHRcdFx0XHRcdCFNb3JlYml0cy51c2VySXNTeXNvcCB8fFxuXHRcdFx0XHRcdFx0IShUd2lua2xlLnNwZWVkeS5oYXNDU0QgfHwgVHdpbmtsZS5nZXRQcmVmKCdkZWxldGVTeXNvcERlZmF1bHRUb0RlbGV0ZScpKSxcblx0XHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5riF56m66aG16Z2iJywgJ+a4heepuumggemdoicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnYmxhbmsnLFxuXHRcdFx0XHRcdG5hbWU6ICdibGFuaycsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqOagh+iusOaooeadv+WJje+8jOWFiOa4heepuumhtemdou+8jOmAgueUqOS6juS4pemHjeegtOWdj+aIlui0n+mdoueUn+iAheS8oOiusOetieOAgicsXG5cdFx0XHRcdFx0XHQn5Zyo5qiZ6KiY5qih5p2/5YmN77yM5YWI5riF56m66aCB6Z2i77yM6YGp55So5pa85Zq06YeN56C05aOe5oiW6LKg6Z2i55Sf6ICF5YKz6KiY562J44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflkIzml7bmoIforrDku6Xor7fmsYLnmb3nurjkv53miqQnLCAn5ZCM5pmC5qiZ6KiY5Lul6KuL5rGC55m957SZ5L+d6K23JyksXG5cdFx0XHRcdFx0dmFsdWU6ICdzYWx0aW5nJyxcblx0XHRcdFx0XHRuYW1lOiAnc2FsdGluZycsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+mAieWPluWQju+8jOW/q+mAn+WIoOmZpOaooeadv+WQjuWwhumZhOW4piB7e3NhbHR9fSDmoIfnrb7vvIzku6Xor7fmsYLmiafooYzliKDpmaTnmoTnrqHnkIblkZjov5vooYznmb3nurjkv53miqTvvIzku4XlnKjpobXpnaLliJvlu7oz5qyh5Lul5LiK5omN6YCJ5oup5q2k6aG544CCJyxcblx0XHRcdFx0XHRcdCfpgbjlj5blvozvvIzlv6vpgJ/liKrpmaTmqKHmnb/lvozlsIfpmYTluLYge3tzYWx0fX0g5qiZ57Gk77yM5Lul6KuL5rGC5Z+36KGM5Yiq6Zmk55qE566h55CG5ZOh6YCy6KGM55m957SZ5L+d6K2377yM5YOF5Zyo6aCB6Z2i5bu656uLM+asoeS7peS4iuaJjemBuOaTh+atpOmgheOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bqU55So5aSa5Liq55CG55SxJywgJ+aHieeUqOWkmuWAi+eQhueUsScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbXVsdGlwbGUnLFxuXHRcdFx0XHRcdG5hbWU6ICdtdWx0aXBsZScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmgqjlj6/pgInmi6nlupTnlKjkuo7or6XpobXnmoTlpJrkuKrnkIbnlLHjgIInLCAn5oKo5Y+v6YG45pOH5oeJ55So5pa86Kmy6aCB55qE5aSa5YCL55CG55Sx44CCJyksXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2subW9kZUNoYW5nZWQoZXZlbnQudGFyZ2V0LmZvcm0pO1xuXHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRpZDogJ3ByaW9yLWRlbGV0aW9uLWNvdW50Jyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdG5hbWU6ICd3b3JrX2FyZWEnLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0J+WIneWni+WMlkNTROaooeWdl+Wksei0pe+8jOivt+mHjeivle+8jOaIluWwhui/meaKpeWRiue7mVR3aW5rbGXlvIDlj5HogIXjgIInLFxuXHRcdFx0XHQn5Yid5aeL5YyWQ1NE5qih57WE5aSx5pWX77yM6KuL6YeN6Kmm77yM5oiW5bCH6YCZ5aCx5ZGK57WmVHdpbmtsZemWi+eZvOiAheOAgidcblx0XHRcdCksXG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignc3BlZWR5U2VsZWN0aW9uU3R5bGUnKSAhPT0gJ3JhZGlvQ2xpY2snKSB7XG5cdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdFx0XHRjbGFzc05hbWU6ICd0dy1zcGVlZHktc3VibWl0Jyxcblx0XHRcdH0pOyAvLyBSZW5hbWVkIGluIG1vZGVDaGFuZ2VkXG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRkaWFsb2cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdGRpYWxvZy5kaXNwbGF5KCk7XG5cdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2subW9kZUNoYW5nZWQocmVzdWx0KTtcblx0XHQvLyBDaGVjayBmb3IgcHJpb3IgZGVsZXRpb25zLiAgSnVzdCBvbmNlLCB1cG9uIGluaXRcblx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5wcmlvckRlbGV0aW9uQ291bnQoKTtcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2suZ2V0TW9kZSA9IChmb3JtKSA9PiB7XG5cdFx0bGV0IG1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJTaW5nbGVTdWJtaXQ7XG5cdFx0aWYgKGZvcm0udGFnX29ubHkgJiYgIWZvcm0udGFnX29ubHkuY2hlY2tlZCkge1xuXHRcdFx0aWYgKGZvcm0uZGVsbXVsdGlwbGUuY2hlY2tlZCkge1xuXHRcdFx0XHRtb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5zeXNvcE11bHRpcGxlU3VibWl0O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bW9kZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuc3lzb3BTaW5nbGVTdWJtaXQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChmb3JtLm11bHRpcGxlLmNoZWNrZWQpIHtcblx0XHRcdG1vZGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLnVzZXJNdWx0aXBsZVN1Ym1pdDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bW9kZSA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUudXNlclNpbmdsZVN1Ym1pdDtcblx0XHR9XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignc3BlZWR5U2VsZWN0aW9uU3R5bGUnKSA9PT0gJ3JhZGlvQ2xpY2snKSB7XG5cdFx0XHRtb2RlKys7XG5cdFx0fVxuXHRcdHJldHVybiBtb2RlO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5tb2RlQ2hhbmdlZCA9IChmb3JtKSA9PiB7XG5cdFx0Y29uc3QgbmFtZXNwYWNlID0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKTtcblx0XHQvLyBmaXJzdCBmaWd1cmUgb3V0IHdoYXQgbW9kZSB3ZSdyZSBpblxuXHRcdGNvbnN0IG1vZGUgPSBUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5nZXRNb2RlKGZvcm0pO1xuXHRcdGNvbnN0IGlzU3lzb3BNb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc1N5c29wKG1vZGUpO1xuXHRcdGlmIChpc1N5c29wTW9kZSkge1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9ZGVsZXRlX29wdGlvbnNdJykuc2hvdygpO1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9dGFnX29wdGlvbnNdJykuaGlkZSgpO1xuXHRcdFx0JGJvZHkuZmluZCgnYnV0dG9uLnR3LXNwZWVkeS1zdWJtaXQnKS50ZXh0KHdpbmRvdy53Z1VMUygn5Yig6Zmk6aG16Z2iJywgJ+WIqumZpOmggemdoicpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9ZGVsZXRlX29wdGlvbnNdJykuaGlkZSgpO1xuXHRcdFx0JGJvZHkuZmluZCgnW25hbWU9dGFnX29wdGlvbnNdJykuc2hvdygpO1xuXHRcdFx0JGJvZHkuZmluZCgnYnV0dG9uLnR3LXNwZWVkeS1zdWJtaXQnKS50ZXh0KHdpbmRvdy53Z1VMUygn5qCH6K6w6aG16Z2iJywgJ+aomeiomOmggemdoicpKTtcblx0XHR9XG5cdFx0Y29uc3Qgd29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0aWYgKFxuXHRcdFx0bW9kZSA9PT0gVHdpbmtsZS5zcGVlZHkubW9kZS51c2VyTXVsdGlwbGVSYWRpb0NsaWNrIHx8XG5cdFx0XHRtb2RlID09PSBUd2lua2xlLnNwZWVkeS5tb2RlLnN5c29wTXVsdGlwbGVSYWRpb0NsaWNrXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBldmFsdWF0ZVR5cGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSkgPyAnZXZhbHVhdGVTeXNvcCcgOiAnZXZhbHVhdGVVc2VyJztcblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b2T6YCJ5oup5a6M5oiQ5ZCO77yM5Y2V5Ye777yaJywgJ+eVtumBuOaTh+WujOaIkOW+jO+8jOm7nuaTiu+8micpLFxuXHRcdFx0fSk7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdG5hbWU6ICdzdWJtaXQtbXVsdGlwbGUnLFxuXHRcdFx0XHRsYWJlbDogaXNTeXNvcE1vZGUgPyB3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKSA6IHdpbmRvdy53Z1VMUygn5qCH6K6w6aG16Z2iJywgJ+aomeiomOmggemdoicpLFxuXHRcdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tbZXZhbHVhdGVUeXBlXShldmVudCk7XG5cdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3QgcmFkaW9PckNoZWNrYm94ID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc011bHRpcGxlKG1vZGUpID8gJ2NoZWNrYm94JyA6ICdyYWRpbyc7XG5cdFx0aWYgKGlzU3lzb3BNb2RlKSB7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdH0pO1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0bmFtZTogJ2NzZCcsXG5cdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5jdXN0b21SYXRpb25hbGUsIG1vZGUpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHN3aXRjaCAobmFtZXNwYWNlKSB7XG5cdFx0XHRjYXNlIDA6XG5cdFx0XHRcdC8vIGFydGljbGUgYW5kIHBzZXVkbyBuYW1lc3BhY2Vcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p2h55uuJywgJ+aineebricpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5hcnRpY2xlTGlzdCwgbW9kZSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0Ly8gdXNlclxuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlKjmiLfpobUnLCAn5L2/55So6ICF6aCB6Z2iJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiByYWRpb09yQ2hlY2tib3gsXG5cdFx0XHRcdFx0bmFtZTogJ2NzZCcsXG5cdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0KFR3aW5rbGUuc3BlZWR5LnVzZXJMaXN0LCBtb2RlKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHQvLyB1c2VyIHRhbGtcblx0XHRcdFx0aWYgKG13LnV0aWwuaXNJUEFkZHJlc3MobXcuY29uZmlnLmdldCgnd2dSZWxldmFudFVzZXJOYW1lJykpKSB7XG5cdFx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+iuqOiuuumhtScsICfkvb/nlKjogIXoqI7oq5bpoIEnKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6IHJhZGlvT3JDaGVja2JveCxcblx0XHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0KFR3aW5rbGUuc3BlZWR5LnVzZXJ0YWxrTGlzdCwgbW9kZSksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDY6XG5cdFx0XHRcdC8vIGZpbGVcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5paH5Lu2JywgJ+aqlOahiCcpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5maWxlTGlzdCwgbW9kZSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKSkge1xuXHRcdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn5qCH6K6wQ1NEIEYx44CBRjPjgIFGNe+8jOivt+S9v+eUqFR3aW5rbGXnmoTigJzlm77mnYPigJ3lip/og73jgIInLFxuXHRcdFx0XHRcdFx0XHQn5qiZ6KiYQ1NEIEYx44CBRjPjgIFGNe+8jOiri+S9v+eUqFR3aW5rbGXnmoTjgIzlnJbmrIrjgI3lip/og73jgIInXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxNDpcblx0XHRcdFx0Ly8gY2F0ZWdvcnlcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YiG57G7JywgJ+WIhumhnicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5jYXRlZ29yeUxpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDExODpcblx0XHRcdFx0Ly8gZHJhZnRcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6ICfojYnnqL8nLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS5kcmFmdExpc3QsIG1vZGUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIG5hbWVzcGFjZSAlIDIgPT09IDEgJiYgbmFtZXNwYWNlICE9PSAzOlxuXHRcdFx0XHQvLyBzaG93IGRiLXRhbGsgb24gdGFsayBwYWdlcywgYnV0IG5vdCB1c2VyIHRhbGsgcGFnZXNcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K6o6K666aG1JywgJ+iojuirlumggScpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRcdG5hbWU6ICdjc2QnLFxuXHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdChUd2lua2xlLnNwZWVkeS50YWxrTGlzdCwgbW9kZSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBjdXN0b20gcmF0aW9uYWxlIGxpdmVzIHVuZGVyIGdlbmVyYWwgY3JpdGVyaWEgd2hlbiB0YWdnaW5nXG5cdFx0bGV0IGdlbmVyYWxDcml0ZXJpYSA9IFR3aW5rbGUuc3BlZWR5LmdlbmVyYWxMaXN0O1xuXHRcdGlmICghVHdpbmtsZS5zcGVlZHkubW9kZS5pc1N5c29wKG1vZGUpKSB7XG5cdFx0XHRnZW5lcmFsQ3JpdGVyaWEgPSBbLi4uVHdpbmtsZS5zcGVlZHkuY3VzdG9tUmF0aW9uYWxlLCAuLi5nZW5lcmF0ZUFycmF5KGdlbmVyYWxDcml0ZXJpYSldO1xuXHRcdH1cblx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeEJywgJ+W4uOimjycpLFxuXHRcdH0pO1xuXHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0bmFtZTogJ2NzZCcsXG5cdFx0XHRsaXN0OiBUd2lua2xlLnNwZWVkeS5nZW5lcmF0ZUNzZExpc3QoZ2VuZXJhbENyaXRlcmlhLCBtb2RlKSxcblx0XHR9KTtcblx0XHRpZiAoIVR3aW5rbGUuc3BlZWR5Lm1vZGUuaXNTeXNvcChtb2RlKSkge1xuXHRcdFx0d29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmj5DmiqXkvrXmnYPpobXpnaLvvIzor7fkvb/nlKhUd2lua2xl55qE4oCc5L615p2D4oCd5Yqf6IO944CCJyxcblx0XHRcdFx0XHQn5o+Q5aCx5L615qyK6aCB6Z2i77yM6KuL5L2/55SoVHdpbmtsZeeahOOAjOS+teasiuOAjeWKn+iDveOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dJc1JlZGlyZWN0JykgfHwgTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6ICfph43lrprlkJEnLFxuXHRcdFx0fSk7XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogcmFkaW9PckNoZWNrYm94LFxuXHRcdFx0XHRuYW1lOiAnY3NkJyxcblx0XHRcdFx0bGlzdDogVHdpbmtsZS5zcGVlZHkuZ2VuZXJhdGVDc2RMaXN0KFR3aW5rbGUuc3BlZWR5LnJlZGlyZWN0TGlzdCwgbW9kZSksXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3QgW29sZF9hcmVhXSA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhmb3JtLCAnd29ya19hcmVhJyk7XG5cdFx0Zm9ybS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLnJlbmRlcigpLCBvbGRfYXJlYSk7XG5cdFx0Ly8gaWYgc3lzb3AsIGNoZWNrIGlmIENTRCBpcyBhbHJlYWR5IG9uIHRoZSBwYWdlIGFuZCBmaWxsIGluIGN1c3RvbSByYXRpb25hbGVcblx0XHRpZiAoaXNTeXNvcE1vZGUgJiYgVHdpbmtsZS5zcGVlZHkuaGFzQ1NEKSB7XG5cdFx0XHRjb25zdCBbY3VzdG9tT3B0aW9uXSA9ICRib2R5LmZpbmQoJ2lucHV0W25hbWU9Y3NkXVt2YWx1ZT1yZWFzb25dJyk7XG5cdFx0XHRpZiAoY3VzdG9tT3B0aW9uKSB7XG5cdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3NwZWVkeVNlbGVjdGlvblN0eWxlJykgIT09ICdyYWRpb0NsaWNrJykge1xuXHRcdFx0XHRcdC8vIGZvcmNlIGxpc3RlbmVycyB0byByZS1pbml0XG5cdFx0XHRcdFx0Y3VzdG9tT3B0aW9uLmNsaWNrKCk7XG5cdFx0XHRcdFx0Y3VzdG9tT3B0aW9uLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoY3VzdG9tT3B0aW9uLnN1Ymdyb3VwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdXN0b21PcHRpb24uc3ViZ3JvdXAucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChcblx0XHRcdFx0XHQkYm9keS5maW5kKCcjZGVsZXRlLXJlYXNvbicpLnRleHQoKVxuXHRcdFx0XHQpLnJlcGxhY2UoL1xcKy9nLCAnICcpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBlbmxhcmdlIEc3IHJhZGlvL2NoZWNrYm94IGFuZCBpdHMgbGFiZWxcblx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdmFsdWU9XCJnN1wiXScpICYmIFR3aW5rbGUuZ2V0UHJlZignZW5sYXJnZUc3SW5wdXQnKSkge1xuXHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdmFsdWU9XCJnN1wiXScpLnN0eWxlID1cblx0XHRcdFx0J2hlaWdodDogMmVtOyB3aWR0aDogMmVtOyBoZWlnaHQ6IC1tb3otaW5pdGlhbDsgd2lkdGg6IC1tb3otaW5pdGlhbDsgLW1vei10cmFuc2Zvcm06IHNjYWxlKDIpOyAtby10cmFuc2Zvcm06IHNjYWxlKDIpOyc7XG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt2YWx1ZT1cImc3XCJdJykubGFiZWxzWzBdLnN0eWxlID0gJ2ZvbnQtc2l6ZTogMS41ZW07IGxpbmUtaGVpZ2h0OiAxLjVlbTsnO1xuXHRcdH1cblx0XHRpZiAoIWlzU3lzb3BNb2RlICYmIG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpICE9PSAnd2lraXRleHQnKSB7XG5cdFx0XHQkYm9keS5maW5kKCdbbmFtZT10YWdfb3B0aW9uc10nKS5oaWRlKCk7XG5cdFx0XHQkYm9keS5maW5kKCdbbmFtZT13b3JrX2FyZWFdJykuZW1wdHkoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBbXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygnVHdpbmtsZeS4jeaUr+aMgeWcqOmhtemdouWGheWuueaooeWei+S4uicsICdUd2lua2xl5LiN5pSv5o+05Zyo6aCB6Z2i5YWn5a655qih5Z6L54K6JyksXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+eahOmhtemdouS4iuaMguS4iuW/q+mAn+WIoOmZpOaooeadv++8jOivt+WPguingScsICfnmoTpoIHpnaLkuIrmjpvkuIrlv6vpgJ/liKrpmaTmqKHmnb/vvIzoq4vlj4PoposnKSxcblx0XHRcdFx0JCgnPGE+Jylcblx0XHRcdFx0XHQuYXR0cih7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICdfYmxhbmsnLFxuXHRcdFx0XHRcdFx0cmVsOiAnbm9vcGVuZXIgbm9yZWZlcnJlcicsXG5cdFx0XHRcdFx0XHRocmVmOiBtdy51dGlsLmdldFVybCgnUVc6U1BFQ0lBTFNEJyksXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+aJi+WKqOaUvue9ruaooeadv+aXtueahOazqOaEj+S6i+mhuScsICfmiYvli5XmlL7nva7mqKHmnb/mmYLnmoTms6jmhI/kuovpoIUnKSlbMF0sXG5cdFx0XHRcdCfjgIInLFxuXHRcdFx0XTtcblx0XHRcdCRib2R5LmZpbmQoJ1tuYW1lPXdvcmtfYXJlYV0nKS5hcHBlbmQobWVzc2FnZSk7XG5cdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQodHJ1ZSk7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5wcmlvckRlbGV0aW9uQ291bnQgPSAoKSA9PiB7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdGxpc3Q6ICdsb2dldmVudHMnLFxuXHRcdFx0bGV0eXBlOiAnZGVsZXRlJyxcblx0XHRcdGxlYWN0aW9uOiAnZGVsZXRlL2RlbGV0ZScsXG5cdFx0XHQvLyBKdXN0IHB1cmUgcGFnZSBkZWxldGlvbiwgbm8gcmVkaXJlY3Qgb3ZlcndyaXRlcyBvciByZXZkZWxcblx0XHRcdGxldGl0bGU6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdGxlcHJvcDogJycsXG5cdFx0XHQvLyBXZSdyZSBqdXN0IGNvdW50aW5nIHdlIGRvbid0IGFjdHVhbGx5IGNhcmUgYWJvdXQgdGhlIGVudHJpZXNcblx0XHRcdGxlbGltaXQ6IDUsXG5cdFx0XHQvLyBBIGxpdHRsZSBiaXQgZ29lcyBhIGxvbmcgd2F5XG5cdFx0fTtcblxuXHRcdG5ldyBNb3JlYml0cy53aWtpLmFwaSh3aW5kb3cud2dVTFMoJ+ajgOafpeS5i+WJjeeahOWIoOmZpCcsICfmqqLmn6XkuYvliY3nmoTliKrpmaQnKSwgcXVlcnksIChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRjb25zdCBkZWxDb3VudCA9IHJlc3BvbnNlLnF1ZXJ5LmxvZ2V2ZW50cy5sZW5ndGg7XG5cdFx0XHRpZiAoZGVsQ291bnQpIHtcblx0XHRcdFx0bGV0IG1lc3NhZ2UgPSB3aW5kb3cud2dVTFMoJ+iiq+WIoOmZpCcsICfooqvliKrpmaQnKTtcblx0XHRcdFx0aWYgKHJlc3BvbnNlLmNvbnRpbnVlKSB7XG5cdFx0XHRcdFx0bWVzc2FnZSArPSB3aW5kb3cud2dVTFMoJ+i2hei/hycsICfotoXpgY4nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRtZXNzYWdlICs9IGAke2RlbENvdW50feasoWA7XG5cdFx0XHRcdC8vIDMrIHNlZW1zIHByb2JsZW1hdGljXG5cdFx0XHRcdGlmIChkZWxDb3VudCA+PSAzKSB7XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI3ByaW9yLWRlbGV0aW9uLWNvdW50JykuY3NzKCdjb2xvcicsICcjZmYwMDAwJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUHJvdmlkZSBhIGxpbmsgdG8gcGFnZSBsb2dzIChDU0QgdGVtcGxhdGVzIGhhdmUgb25lIGZvciBzeXNvcHMpXG5cdFx0XHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsIHdpbmRvdy53Z1VMUygn77yI5pel5b+X77yJJywgJ++8iOaXpeiqjO+8iScpKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcdFx0J2hyZWYnLFxuXHRcdFx0XHRcdG13LnV0aWwuZ2V0VXJsKCdTcGVjaWFsOkxvZycsIHtcblx0XHRcdFx0XHRcdHBhZ2U6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXInKTtcblx0XHRcdFx0JGJvZHkuZmluZCgnI3ByaW9yLWRlbGV0aW9uLWNvdW50JykudGV4dChtZXNzYWdlKTsgLy8gU3BhY2UgYmVmb3JlIGxvZyBsaW5rXG5cdFx0XHRcdCRib2R5LmZpbmQoJyNwcmlvci1kZWxldGlvbi1jb3VudCcpLmFwcGVuZChsaW5rKTtcblx0XHRcdH1cblx0XHR9KS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuc3BlZWR5LmdlbmVyYXRlQ3NkTGlzdCA9IChsaXN0LCBtb2RlKSA9PiB7XG5cdFx0Ly8gbW9kZSBzd2l0Y2hlc1xuXHRcdGNvbnN0IGlzU3lzb3BNb2RlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc1N5c29wKG1vZGUpO1xuXHRcdGNvbnN0IG11bHRpcGxlID0gVHdpbmtsZS5zcGVlZHkubW9kZS5pc011bHRpcGxlKG1vZGUpO1xuXHRcdGNvbnN0IGhhc1N1Ym1pdEJ1dHRvbiA9IFR3aW5rbGUuc3BlZWR5Lm1vZGUuaGFzU3VibWl0QnV0dG9uKG1vZGUpO1xuXHRcdGNvbnN0IG9wZW5TdWJncm91cEhhbmRsZXIgPSAoZSkgPT4ge1xuXHRcdFx0JChlLnRhcmdldC5mb3JtKS5maW5kKCdpbnB1dCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmNoaWxkcmVuKCkuY3NzKCdjb2xvcicsICdncmF5Jyk7XG5cdFx0XHQkKGUudGFyZ2V0KS5wYXJlbnQoKS5jc3MoJ2NvbG9yJywgJ2JsYWNrJykuZmluZCgnaW5wdXQnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcblx0XHRcdCQoZS50YXJnZXQpLnBhcmVudCgpLmZpbmQoJ2lucHV0OnRleHQnKVswXS5mb2N1cygpO1xuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9O1xuXHRcdGNvbnN0IHN1Ym1pdFN1Ymdyb3VwSGFuZGxlciA9IChlKSA9PiB7XG5cdFx0XHRjb25zdCBldmFsdWF0ZVR5cGUgPSBUd2lua2xlLnNwZWVkeS5tb2RlLmlzU3lzb3AobW9kZSkgPyAnZXZhbHVhdGVTeXNvcCcgOiAnZXZhbHVhdGVVc2VyJztcblx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrW2V2YWx1YXRlVHlwZV0oZSk7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH07XG5cdFx0cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChsaXN0LCAoY3JpdEVsZW1lbnQpID0+IHtcblx0XHRcdGNvbnN0IGNyaXRlcmlvbiA9IHtcblx0XHRcdFx0Li4uY3JpdEVsZW1lbnQsXG5cdFx0XHR9O1xuXHRcdFx0aWYgKG11bHRpcGxlKSB7XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVdoZW5NdWx0aXBsZSkge1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVN1Ymdyb3VwV2hlbk11bHRpcGxlKSB7XG5cdFx0XHRcdFx0Y3JpdGVyaW9uLnN1Ymdyb3VwID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlV2hlblNpbmdsZSkge1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVN1Ymdyb3VwV2hlblNpbmdsZSkge1xuXHRcdFx0XHRcdGNyaXRlcmlvbi5zdWJncm91cCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChpc1N5c29wTW9kZSkge1xuXHRcdFx0XHRpZiAoY3JpdGVyaW9uLmhpZGVXaGVuU3lzb3ApIHtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY3JpdGVyaW9uLmhpZGVTdWJncm91cFdoZW5TeXNvcCkge1xuXHRcdFx0XHRcdGNyaXRlcmlvbi5zdWJncm91cCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChjcml0ZXJpb24uaGlkZVdoZW5Vc2VyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNyaXRlcmlvbi5oaWRlU3ViZ3JvdXBXaGVuVXNlcikge1xuXHRcdFx0XHRcdGNyaXRlcmlvbi5zdWJncm91cCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0lzUmVkaXJlY3QnKSAmJiBjcml0ZXJpb24uaGlkZVdoZW5SZWRpcmVjdCkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0Y3JpdGVyaW9uLnNob3dJbk5hbWVzcGFjZXMgJiZcblx0XHRcdFx0IWNyaXRlcmlvbi5zaG93SW5OYW1lc3BhY2VzLmluY2x1ZGVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRjcml0ZXJpb24uaGlkZUluTmFtZXNwYWNlcyAmJlxuXHRcdFx0XHRjcml0ZXJpb24uaGlkZUluTmFtZXNwYWNlcy5pbmNsdWRlcyhtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNyaXRlcmlvbi5zdWJncm91cCAmJiAhaGFzU3VibWl0QnV0dG9uKSB7XG5cdFx0XHRcdGNyaXRlcmlvbi5zdWJncm91cCA9IGdlbmVyYXRlQXJyYXkoY3JpdGVyaW9uLnN1Ymdyb3VwLCB7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bmFtZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdFx0bGFiZWw6IGlzU3lzb3BNb2RlID8gd2luZG93LndnVUxTKCfliKDpmaTpobXpnaInLCAn5Yiq6Zmk6aCB6Z2iJykgOiB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdoicsICfmqJnoqJjpoIHpnaInKSxcblx0XHRcdFx0XHRldmVudDogc3VibWl0U3ViZ3JvdXBIYW5kbGVyLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gRklYTUU6IGRvZXMgdGhpcyBkbyBhbnl0aGluZz9cblx0XHRcdFx0Y3JpdGVyaW9uLmV2ZW50ID0gb3BlblN1Ymdyb3VwSGFuZGxlcjtcblx0XHRcdH1cblx0XHRcdGlmIChpc1N5c29wTW9kZSkge1xuXHRcdFx0XHRjb25zdCBvcmlnaW5hbEV2ZW50ID0gY3JpdGVyaW9uLmV2ZW50O1xuXHRcdFx0XHRjcml0ZXJpb24uZXZlbnQgPSAoZSkgPT4ge1xuXHRcdFx0XHRcdGlmIChtdWx0aXBsZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnQoZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IG5vcm1hbGl6ZWRDcml0ZXJpb24gPSBUd2lua2xlLnNwZWVkeS5ub3JtYWxpemVIYXNoW2UudGFyZ2V0LnZhbHVlXTtcblx0XHRcdFx0XHQkYm9keVxuXHRcdFx0XHRcdFx0LmZpbmQoJ1tuYW1lPW9wZW51c2VydGFsa10nKVxuXHRcdFx0XHRcdFx0LnByb3AoXG5cdFx0XHRcdFx0XHRcdCdjaGVja2VkJyxcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdvcGVuVXNlclRhbGtQYWdlT25TcGVlZHlEZWxldGUnKS5pbmNsdWRlcyhub3JtYWxpemVkQ3JpdGVyaW9uKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAob3JpZ2luYWxFdmVudCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnQoZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNyaXRlcmlvbjtcblx0XHR9KTtcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY3VzdG9tUmF0aW9uYWxlID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiBg6Ieq5a6a5LmJ55CG55SxJHtNb3JlYml0cy51c2VySXNTeXNvcCA/ICfvvIjoh6rlrprkuYnliKDpmaTnkIbnlLHvvIknIDogJyd9YCxcblx0XHRcdHZhbHVlOiAncmVhc29uJyxcblx0XHRcdHRvb2x0aXA6ICfor6XpobXoh7PlsJHlupTor6XnrKblkIjkuIDmnaHlv6vpgJ/liKDpmaTnmoTmoIflh4bvvIzlubbkuJTmgqjlv4XpobvlnKjnkIbnlLHkuK3mj5DliLDjgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ3JlYXNvbl8xJyxcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0sXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5zcGVlZHkuZmlsZUxpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdGMe+8muaYjuaYvuS4jeespuWQiOacrOermeiRl+S9nOadg+aWuemSiOeahOaWh+S7ticsXG5cdFx0XHR2YWx1ZTogJ2YxJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfljIXmi6zku6XkuIvmg4XlhrXvvJoxLuS4iuS8oOWQjjPlpKnlhoXku43nhLbmnaXmupDkuI3mmI7jgIHokZfkvZzmnYPkuI3mmI7nmoTmlofku7bjgIIyLuS4iuS8oOiAheWuo+ensOaLpeacie+8jOiAjOWcqOWFtuS7luadpea6kOaJvuWIsOeahOaWh+S7tuOAgjMu5paH5Lu25a6j56ew55Sx5p+Q5L2c6ICF5L6d5o2u5p+Q6Ieq55Sx6JGX5L2c5p2D5Y2P6K6u5Y+R5biD77yM5L2G5om+5LiN5Yiw6K+l6Ieq55Sx5Y2P6K6u55qE5aOw5piO44CCNC7lhbbku5bmmI7mmL7kvrXmnYPnmoTmlofku7bvvIzlj6/pmYTliqDkvrXmnYPnkIbnlLHjgIInLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdGMu+8mumHjeWkjeS4lOS4jeWGjeiiq+S9v+eUqOeahOaWh+S7ticsXG5cdFx0XHR2YWx1ZTogJ2YyJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfljIXmi6zku6XkuIvmg4XlhrXvvJrkuI7njrDmnInmlofku7blrozlhajnm7jlkIzvvIjmiJbkuI7njrDmnInmlofku7blhoXlrrnkuIDoh7TkvYblsLrlr7jovoPlsI/vvInvvIzkuJTmsqHmnInlrqLop4LpnIDopoHvvIjlpoLmn5DkupvlnLrlkIjpnIDkvb/nlKjlsI/lsLrlr7jlm77niYfvvInnmoTmlofku7bjgILmiJbmmK/ooqvmm7TliqDmuIXmmbDnmoTmlofku7bjgIFTVkfmoLzlvI/mlofku7bmiYDlj5bku6PnmoTmlofku7bjgILor7fmj5DmiqXogIXnoa7lrprmlofku7bmsqHmnInku7vkvZXpobXpnaLkvb/nlKjlkI7lho3mj5DmiqXliKDpmaTvvIzlubbpmYTms6jlr7nlupTotKjph4/mm7Tlpb3nmoTmlofku7blkI3jgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ2YyX2ZpbGVuYW1lJyxcblx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0bGFiZWw6ICfmlrDmlofku7blkI3vvJonLFxuXHRcdFx0XHR0b29sdGlwOiAn5Y+v5LiN5ZCr4oCcRmlsZTrigJ3liY3nvIDjgIInLFxuXHRcdFx0fSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5hcnRpY2xlTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0Ex77ya5YaF5a6556m65rOb5oiW5a6M5YWo5rKh5pyJ5YaF5a6544CCJyxcblx0XHRcdHZhbHVlOiAnYTEnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+adoeebrueahOWGheWuueesvOe7n++8jOaIlueUmuiHs+agueacrOayoeacieaPkOWPiuadoeebruS4u+S9k++8jOS9v+adoeebruS4jeiDveeUqOS7peWMuuWIhuWFtuS7luS6i+eJqe+8m+aIluadoeebruWPquWMheaLrOWklumDqOmTvuaOpeOAgeWPguingeOAgeWPguiAg+adpea6kOOAgeWIhuexu+OAgeaooeadv++8jOiAjOayoeacieaWh+Wtl+aPj+i/sOOAgua2iOatp+S5iemhteOAgemHjeWumuWQkemhteS4jemAgueUqOatpOadoeOAguivt+azqOaEj+acieS6m+eUqOaIt+WPr+iDveS8muWkmuasoeS/neWtmO+8jOiLpeatpOexu+mhtemdoueahOacgOWQjuS4gOasoee8lui+keaXtumXtOi2hei/hzI05bCP5pe277yM5YiZ5Y+v5o+Q6K+35b+r6YCf5Yig6Zmk44CCJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiAnQTLvvJrkuI7lhbbku5bmnaHnm67miJblhbbljoblj7LniYjmnKzph43lpI3vvIzkuJTkuI3pgILlkIjkvZzkuLrlhbbph43lrprlkJHjgIInLFxuXHRcdFx0dmFsdWU6ICdhMicsXG5cdFx0XHR0b29sdGlwOlxuXHRcdFx0XHQn5p2h55uu5Yib5bu65pe255qE5YaF5a6577yM5LiO5YW25LuW546w5pyJ5p2h55uu77yI5oiW5YW25Y6G5Y+y54mI5pys77yJ5YaF5a655a6M5YWo55u45ZCM5oiW6Z2e5bi455u45Ly877yM5LiU5ZCN56ew5LiN6YCC5ZCI5L2c5Li65ZCO6ICF55qE6YeN5a6a5ZCR44CC5LiN5YyF5ous5ouG5YiG44CB5ZCI5bm244CB6YeN57uE5ZCO5Lqn55Sf55qE5p2h55uu44CC5aaC5pyJ55aR6JmR77yM5Y+v6L2s5Lqk5Yig6Zmk6K6o6K6644CC6Iul5ZCO5Yib5bu655qE5p2h55uu5ZCN56ew5Y+v5L2c5Li66YeN5a6a5ZCR77yM5Y+v55u05o6l5pS55Li66YeN5a6a5ZCR77yb6Iul5YWI5Yib5bu655qE5p2h55uu5a6c5L2c5Li65ZCO5Yib5bu65p2h55uu55qE6YeN5a6a5ZCR77yM6K+35o+Q6K+356e75Yqo6K+35rGC44CCJyxcblx0XHRcdHN1Ymdyb3VwOiB7XG5cdFx0XHRcdG5hbWU6ICdhMl9wYWdlbmFtZScsXG5cdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdGxhYmVsOiAn546w5pyJ5p2h55uu5ZCN77yaJyxcblx0XHRcdFx0dG9vbHRpcDogJ+S4jeiHquWKqOWKoOS4iumTvuaOpe+8jOiLpemcgOimgeivt+iHquihjOWKoOS4iltbXV3jgIInLFxuXHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdH0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0Ez77ya6Z2e546w5Luj5rGJ6K+t5oiW57+76K+R5ouZ5Yqj55qE5p2h55uuJyxcblx0XHRcdHZhbHVlOiAnYTMnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+adoeebruWGheWuuee7neWkp+mDqOWIhumdnueOsOS7o+axieivre+8jOWMheaLrOacque/u+ivkeeahOWkluivreOAgeaWueiogOWPiuaWh+iogOaWh++8m+aIlue/u+ivkei0qOmHj+S9juS4i++8jOS7peiHs+S6jumavuS7peeQhuino+aIluWHuueOsOi+g+WkmumUmeivr+OAgicsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5zcGVlZHkuY2F0ZWdvcnlMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAnTzLvvJrnqbrliIbnsbvjgIInLFxuXHRcdFx0dmFsdWU6ICdvMicsXG5cdFx0XHR0b29sdGlwOiAn5rKh5pyJ5pS25b2V5Lu75L2V6aG16Z2i44CB5paH5Lu244CB5a2Q5YiG57G755qE5YiG57G744CCQ2F0ZWdvcnk66K+35Yu/5Yig6Zmk55qE5YiG57G75Lit55qE5YiG57G75LiN6YCC55So44CCJyxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5kcmFmdExpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdPM++8muW6n+W8g+iNieeov+OAgicsXG5cdFx0XHR2YWx1ZTogJ28zJyxcblx0XHRcdHRvb2x0aXA6ICfojYnnqL/lkI3lrZfnqbrpl7TlhoXlha3kuKrmnIjlhoXml6DnvJbovpHnmoTpobXpnaLjgIInLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5LnVzZXJMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAnTzHvvJrnlKjmiLfor7fmsYLliKDpmaToh6rlt7HnmoTnlKjmiLfpobXjgIInLFxuXHRcdFx0dmFsdWU6ICdvMScsXG5cdFx0XHR0b29sdGlwOiAn566h55CG5ZGY6ZyA5p+l55yL57yW6L6R5Y6G5Y+y77yM56Gu6K6k6K+l6aG16Z2i5LiN5piv5LuO5YW25LuW5ZCN5a2X56m66Ze056e75Yqo6ICM5p2l44CCJyxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5nZW5lcmFsTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0cx77ya5piO5pi+6L+d5Y+N5rOV5b6L5rOV6KeE5oiW6L+d6IOM5YWs5bqP6Imv5L+X55qE6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzEnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+aYjuaYvui/neWPjeacjeWKoeWZqOaJgOWcqOWcsOeahOazleW+i+azleinhOWPiuacieWFs+inhOWumu+8jOaIlueqgeegtOekvuS8muWFrOW6j+iJr+S/l+W6lee6v++8jOaMieeFp+S4reWNjuS6uuawkeWFseWSjOWbveS6kuiBlOe9keeuoeeQhuinhOWumuW6lOS6iOWIoOmZpOeahOmhtemdouOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0cy77ya5rKh5pyJ5a6e6ZmF5YaF5a6555qE6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzInLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+S7heWMheaLrOaXoOaEj+S5ieWtl+espuS4suiAjOayoeacieWunumZheWGheWuueeahOmhtemdouOAgueUseeUqOaIt+acrOS6uuWIm+W7uueahOeUqOaIt+mhteOAgeeUqOaIt+iuqOiuuumhte+8jOWPiuS4k+S4uua1i+ivleaPkOS+m+eahOaymeebku+8jOS4jemAgueUqOatpOWHhuWImeOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0cz77ya57qv57K556C05Z2PJyxcblx0XHRcdHZhbHVlOiAnZzMnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS9huS4jemZkOS6juaYjuaYvueahOaBtuS9nOWJp+OAgemUmeivr+S/oeaBr+OAgeS6uui6q+aUu+WHu+etie+8jOS7peWPiua4heeQhuenu+WKqOegtOWdj+aXtueVmeS4i+eahOmHjeWumuWQkeOAguiLpeaUtuWIsOaIluWPkeeOsOS4pemHjeeahOS6uui6q+aUu+WHu+S4juivi+avge+8jOeuoeeQhuWRmOWPiuWFtuS7lueUqOaIt+W6lOmAmuefpeebkeedo+WRmOi/m+ihjOebkeedo+makOiXj+OAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c077ya6YeN5paw5Yib5bu65bey6KKr5Yig6Zmk55qE6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzQnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+iLpeeOsOaciemhtemdouS4juabvuWcqOWIoOmZpOiuqOiuuu+8iOWQq+mhtemdouWtmOW6n+iuqOiuuuOAgeaWh+S7tuWtmOW6n+iuqOiuuuWSjOS+teadg+WuoeaguO+8jOS4jeWQq+W/q+mAn+WIoOmZpO+8ieS4reiiq+WIoOmZpOWGheWuueebuOWQjOaIlumdnuW4uOebuOS8vO+8jOS4lOeOsOacieWGheWuueS7jeeEtumAgueUqOWIoOmZpOiuqOiuuuS4reeahOe7k+iuuu+8jOaXoOiuuuagh+mimOaYr+WQpuebuOWQjO+8jOmDvemAgueUqOacrOagh+WHhuOAguiLpeeOsOaciemhtemdouagh+mimOS4juW3suWIoOeJiOacrOS4jeS4gOiHtO+8jOWImeaPkOivt+mAn+WIoOiAheW6lOS4gOW5tuazqOaYjuW3suWIoOeJiOacrOeahOmhtemdouWQje+8m+iLpeivpemhtemdouS5i+WJjeiiq+W/q+mAn+WIoOmZpO+8jOivt+S7peebuOWQjOeQhueUsemHjeaWsOaPkOivt+mAn+WIoOOAguiLpeeOsOacieWGheWuueS4jemAgueUqOWIoOmZpOiuqOiuuuS4reeahOe7k+iuuu+8jOW6lOmHjeaWsOaPkOWHuuWIoOmZpOiuqOiuuuOAgicsXG5cdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2c0X3BhZ2VuYW1lJyxcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdGxhYmVsOiAn5bey5Yig54mI5q2k6aG16Z2i5ZCN77yaJyxcblx0XHRcdFx0XHRzaXplOiA2MCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0XHRoaWRlU3ViZ3JvdXBXaGVuTXVsdGlwbGU6IHRydWUsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c177ya5Zug5oqA5pyv5Y6f5Zug5Yig6Zmk6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzUnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+aDheW9ou+8muWboOenu+WKqOivt+axguiAjOWIoOmZpOmhtemdou+8m+S7peimhuebluWIoOmZpOmHjeWumuWQke+8m+WIoOmZpOaXoOeUqOeahE1lZGlhV2lraemhtemdou+8jOWPiuWFtuS7luaKgOacr+WboumYn+aIlueVjOmdoueuoeeQhuWRmOiupOS4uuacieW/heimgeaJp+ihjOeahOW/q+mAn+WIoOmZpOaDheW9ouOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c277ya5Y6f5L2c6ICF5o+Q6K+35Yig6Zmk5oiW5riF56m66aG16Z2i77yM5LiU6aG16Z2i5Y6f5L2c6ICF5LuF5pyJ5LiA5Lq6Jyxcblx0XHRcdHZhbHVlOiAnZzYnLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+mhtemdouWOn+S9nOiAheaMgeWQiOeQhueQhueUseaPkOWHuueahOW/q+mAn+WIoOmZpO+8m+aIlumhtemdouWOn+S9nOiAhe+8iOWunumZhei0oeeMruiAhe+8iea4heepuumhtemdou+8jOWFtuS7lueUqOaIt+aPkOS6pOeahOW/q+mAn+WIoOmZpOOAgumhtemdouWOn+S9nOiAhe+8iOWunumZhei0oeeMruiAhe+8ieS7heS4gOS6uuaXtua7oei2s+acrOWHhuWImeOAguiLpemhtemdouWunumZhei0oeeMruiAheWkmuS6juS4gOS6uu+8jOivt+aMgeWQiOeQhueQhueUseaPkOS6pOWIoOmZpOiuqOiuuuOAguWQjuS4gOaDheW9ouS4jeWMheaLrOeUqOaIt+mhteOAgeeUqOaIt+iuqOiuuumhte+8jOS4lOW6lOWcqOmhtemdouacgOWQjuS4gOasoee8lui+kTblsI/ml7blkI7mj5Dlh7rjgILooqvlr7zlhaXnmoTpobXpnaLvvIzlr7zlhaXogIXop4bkuLrljp/kvZzogIXjgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ2c2X3JhdGlvbmFsZScsXG5cdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdGxhYmVsOiAn5Yig6Zmk5Y6f5Zug77yaJyxcblx0XHRcdFx0c2l6ZTogNjAsXG5cdFx0XHR9LFxuXHRcdFx0aGlkZVN1Ymdyb3VwV2hlblN5c29wOiB0cnVlLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdHN++8muaYjuaYvueahOW5v+WRiuWuo+S8oCcsXG5cdFx0XHR2YWx1ZTogJ2c3Jyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCflupTnlKjkuo7mmI7mmL7nmoTlub/lkYrlrqPkvKDvvIzmiJblj6rmnInnm7jlhbPkurrnianjgIHnu4Tnu4fnrYnkuovnianogZTns7vmlrnms5XvvIjljIXmi6zkvYbkuI3pmZDkuo7nlLXor53jgIHlnLDlnYDjgIHnlLXlrZDpgq7nrrHjgIHljbPml7bpgJrorq/ova/ku7bogZTns7vmlrnlvI/vvIjlpoJRUeWPt+OAgeW+ruS/oeWPt++8ieOAgeekvuS6pOWqkuS9k+mTvuaOpe+8ieOAguiLpeWuo+S8oOivreawlOS4jeaYjuaYvu+8jOW7uuiurui9rOS6pOWIoOmZpOiuqOiuuuOAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c477ya5pyq5YiX5piO5Y+v6Z2g5p2l5rqQ5LiU6K+t6LCD6LSf6Z2i55qE55Sf6ICF5Lyg6K6wJyxcblx0XHRcdHZhbHVlOiAnZzgnLFxuXHRcdFx0dG9vbHRpcDogJ+acrOaDheWGteS4i+acieeahOmhtemdouS4pemHjeS+teeKr+S7luS6uuWQjeiqieadg++8jOacieaXtuWPr+iDveS+teeKr+makOengeadg++8jOWPr+iDvemcgOimgeaPkOivt+ebkeedo+OAgicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ0c577ya5a2k56uL6aG16Z2iJyxcblx0XHRcdHZhbHVlOiAnZzknLFxuXHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0J+WMheaLrOS7peS4i+WHoOenjeexu+Wei++8mjEu5rKh5pyJ5a+55bqU5paH5Lu255qE5paH5Lu26aG16Z2i77ybMi7msqHmnInlr7nlupTmr43pobXpnaLnmoTlrZDpobXpnaLvvIjnlKjmiLfpobXlrZDpobXpnaLpmaTlpJbvvInvvJszLuaMh+WQkeS4jeWtmOWcqOmhtemdoueahOmHjeWumuWQke+8mzQu5rKh5pyJ5a+55bqU5YaF5a656aG16Z2i55qE6K6o6K666aG177yI6K6o6K666aG15a2Y5qGj44CB55So5oi36K6o6K666aG177yM5Lul5Y+K5Zyo5Li76aG16Z2i5oyC5pyJe3tDU0QgUGxhY2Vob2xkZXJ9feaooeadv+eahOiuqOiuuumhtemZpOWklu+8ie+8mzUu5LiN5a2Y5Zyo5rOo5YaM55So5oi355qE55So5oi36aG15Y+K55So5oi36aG15a2Q6aG16Z2i77yI6ZqP55So5oi35pu05ZCN5Lqn55Sf55qE55So5oi36aG16YeN5a6a5ZCR6Zmk5aSW77yJ44CC6K+35Zyo5Yig6Zmk5pe25rOo5oSP5pyJ5peg5bCG5YaF5a6556e76Iez5LuW5aSE55qE5b+F6KaB44CCJyxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLnNwZWVkeS5yZWRpcmVjdExpc3QgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdSMe+8muS4jeiDveWPkeaMpeWunumZheS9nOeUqOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHR2YWx1ZTogJ3IxJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfljIXmi6zku6XkuIvmg4XlhrXvvJoxLuaMh+WQkeacrOi6q+aIluW+queOr+eahOmHjeWumuWQke+8jOWmgkHihpJC4oaSQ+KGkuKApuKApuKGkkHmiJZB4oaSQe+8iOe5geeugOmHjeWumuWQkeS4jemAgueUqOatpOmhue+8ie+8mzIu5qC85byP6ZSZ6K+v55qE6YeN5a6a5ZCR77yM5YyF5ous5qCH6aKY5LuF5Li657mB5L2T44CB57mB566A5re355So44CB5raI5q2n5LmJ5L2/55So55qE5ous5byn5oiW56m65qC86ZSZ6K+v44CB6Ze06ZqU5Y+35L2/55So6ZSZ6K+v77yI5Zug57G75o6o566A5YyW5a2X5pyq5pS25b2V6Iez44CK6YCa55So6KeE6IyD5rGJ5a2X6KGo44CL5a+86Ie055qE57mB566A5re35p2C5oOF5b2i77yM5oiW57O757uf5peg5rOV6Ieq5Yqo6L+b6KGM57mB566A5aSE55CG55qE5oOF5b2i77yM5YiZ5LiN6YCC55So77yJ44CC6Iul6YeN5a6a5ZCR6aG16Z2i5qCH6aKY77yM5LiO5ZCI5LmO5ZG95ZCN5bi46KeE55qE55uu5qCH6aG16Z2i5qCH6aKY5LmL6Ze077yM5LuF5a2Y5Zyo57mB566A5a2X5L2T55qE5Yy65Yir77yM6ICM5LiN5a2Y5Zyo6K+N6K+t55So5rOV5Yy65Yir77yM5YiZ5LiN5L+d55WZ6K+l6YeN5a6a5ZCR44CC5Zug57O757uf5peg5rOV6Ieq5Yqo57mB566A6L2s5o2i6ICM5b+F6aG75L+d55WZ55qE6YeN5a6a5ZCR6aG16Z2i6Zmk5aSW44CC5a+55LqO5YW25LuW5pyq5YiX5Ye655qE5oOF5Ya177yM6Iul55So5oi36K6k5Li66K+l6YeN5a6a5ZCR5peg5rOV5Y+R5oyl5a6e6ZmF5L2c55So77yM5LiU5L6d5o2u5bi46K+G5rKh5pyJ5Lu75L2V5LqJ6K6u77yM5Y+v5Yet5ZCI55CG55CG55Sx5o+Q6K+36YCf5Yig77yM55Sx566h55CG5ZGY5Yik5pat44CC5oyH5ZCR5LiN5a2Y5Zyo6aG16Z2i55qE6YeN5a6a5ZCR77yM6YCC55SoRzXlh4bliJnjgIInLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ3IxX3R5cGUnLFxuXHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0bGFiZWw6ICfpgILnlKjnsbvlnovvvJonLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfor7fpgInmi6knLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfmjIflkJHmnKzouqvmiJblvqrnjq/nmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfmjIflkJHmnKzouqvmiJblvqrnjq/nmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfmoIfpopjnuYHnroDmt7fnlKgnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfmoIfpopjnuYHnroDmt7fnlKjjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfmtojmrafkuYnkvb/nlKjnmoTmi6zlj7fmiJbnqbrmoLzplJnor68nLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfmtojmrafkuYnkvb/nlKjnmoTmi6zlj7fmiJbnqbrmoLzplJnor6/jgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfpl7TpmpTlj7fkvb/nlKjplJnor68nLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfpl7TpmpTlj7fkvb/nlKjplJnor6/jgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICflhbbku5bnkIbnlLHvvIjor7fli77pgInkuIrmlrnigJzlupTnlKjlpJrkuKrnkIbnlLHigJ3vvIzlubbloavlhpnoh6rlrprkuYnnkIbnlLHvvIknLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICdSMu+8muWQjeensOS4juWvvOWQkeebruagh+S7o+ihqOS6i+eJqeS4jeS4gOiHtOaIluS4jeWujOWFqOS4gOiHtOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHR2YWx1ZTogJ3IyJyxcblx0XHRcdHRvb2x0aXA6XG5cdFx0XHRcdCfljIXmi6zkvYbkuI3pmZDkuo7ku6XkuIvmg4XlhrXvvJoxLueUseS7u+S9lemdnuadoeebrumhtemdou+8iOmZpOeUqOaIt+mhte+8ieWvvOWQkeadoeebrumhteeahOmHjeWumuWQke+8jOS7peWPiueUseadoeebrumhteWvvOWQkeS7u+S9lemdnuadoeebrumhtemdoueahOmHjeWumuWQkeOAgjIu5piO5pi+56yU6K+v55qE6YeN5a6a5ZCR77yM5aaC5Ye6546w5LiN5bi46KeB55qE6ZSZ5Yir5a2X562J44CC77yI5Yir56ew6YeN5a6a5ZCR5LiN6YCC55So5q2k6aG544CC6Iul5ZCr6ZSZ5Yir5a2X5oiW5pyJ56yU6K+v55qE6YeN5a6a5ZCR5L2/55So6aKR546H6auY77yM5q2k57G76YeN5a6a5ZCR5pyJ5Yqp5LqO5biu5Yqp55So5oi35a+75om+5Yiw5q2j56Gu55qE6aG16Z2i77yM5LiN6YCC55So5q2k5qCH5YeG44CC5pyJ5LqJ6K6u55qE5q2k57G76YeN5a6a5ZCR5a6c5o+Q5Lqk5Yig6Zmk6K6o6K6644CC77yJMy7mmI7mmL7kuI7lr7zlkJHnm67moIfmiYDmtrXnm5bnmoTkuLvpopjml6DlhbPvvIzmiJbmr5Tlr7zlkJHnm67moIfmiYDmtrXnm5bnmoTkuLvpopjmm7Tlub/ms5vnmoTph43lrprlkJHjgILvvIjoi6XkuI3mmI7mmL7vvIzlj6/mlLnkuLrmj5DkuqTliKDpmaTorqjorrrjgILvvIknLFxuXHRcdFx0c3ViZ3JvdXA6IHtcblx0XHRcdFx0bmFtZTogJ3IyX3R5cGUnLFxuXHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0bGFiZWw6ICfpgILnlKjnsbvlnovvvJonLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfor7fpgInmi6knLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfnlLHpnZ7mnaHnm67pobXpnaLvvIjpmaTnlKjmiLfpobXvvInlr7zlkJHmnaHnm67pobXnmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfnlLHpnZ7mnaHnm67pobXpnaLvvIjpmaTnlKjmiLfpobXvvInlr7zlkJHmnaHnm67pobXnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfnlLHmnaHnm67pobXlr7zlkJHpnZ7mnaHnm67pobXpnaLnmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfnlLHmnaHnm67pobXlr7zlkJHku7vkvZXpnZ7mnaHnm67pobXpnaLnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfmmI7mmL7nrJTor6/nmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfmmI7mmL7nrJTor6/nmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICfkuI7lr7zlkJHnm67moIfml6DlhbPmiJbmr5TlhbbojIPlm7Tmm7Tlub/ms5vnmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICfkuI7lr7zlkJHnm67moIfml6DlhbPmiJbmr5TlhbbojIPlm7Tmm7Tlub/ms5vnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6ICflhbbku5bnkIbnlLHvvIjor7fli77pgInkuIrmlrnigJzlupTnlKjlpJrkuKrnkIbnlLHigJ3vvIzlubbloavlhpnoh6rlrprkuYnnkIbnlLHvvIknLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICcnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuc3BlZWR5Lm5vcm1hbGl6ZUhhc2ggPSB7XG5cdFx0cmVhc29uOiAnZGInLFxuXHRcdG11bHRpcGxlOiAnbXVsdGlwbGUnLFxuXHRcdCdtdWx0aXBsZS1maW5pc2gnOiAnbXVsdGlwbGUtZmluaXNoJyxcblx0XHRnMTogJ2cxJyxcblx0XHRnMjogJ2cyJyxcblx0XHRnMzogJ2czJyxcblx0XHRnNDogJ2c0Jyxcblx0XHRnNTogJ2c1Jyxcblx0XHRnNjogJ2c2Jyxcblx0XHRnNzogJ2c3Jyxcblx0XHRnODogJ2c4Jyxcblx0XHRnOTogJ2c5Jyxcblx0XHRhMTogJ2ExJyxcblx0XHRhMjogJ2EyJyxcblx0XHRhMzogJ2EzJyxcblx0XHRyMTogJ3IxJyxcblx0XHRyMjogJ3IyJyxcblx0XHRmMTogJ2YxJyxcblx0XHRmMjogJ2YyJyxcblx0XHRmMzogJ2YzJyxcblx0XHRmNDogJ2Y0Jyxcblx0XHRmNTogJ2Y1Jyxcblx0XHRvMTogJ28xJyxcblx0XHRvMjogJ28yJyxcblx0XHRvMzogJ28zJyxcblx0fTtcblx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzID0ge1xuXHRcdGdldFRlbXBsYXRlQ29kZUFuZFBhcmFtczogKHBhcmFtcykgPT4ge1xuXHRcdFx0bGV0IGNvZGU7XG5cdFx0XHRsZXQgcGFyYW1ldGVycztcblx0XHRcdGxldCBpO1xuXHRcdFx0aWYgKHBhcmFtcy5ub3JtYWxpemVkcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdGNvZGUgPSAne3tkZWxldGUnO1xuXHRcdFx0XHRwYXJhbXMudXRwYXJhbXMgPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBbaW5kZXgsIG5vcm1dIG9mIHBhcmFtcy5ub3JtYWxpemVkcy5lbnRyaWVzKCkpIHtcblx0XHRcdFx0XHRpZiAobm9ybSAhPT0gJ2RiJykge1xuXHRcdFx0XHRcdFx0Y29kZSArPSBgfCR7bm9ybS50b1VwcGVyQ2FzZSgpfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBwYXJhbXMudGVtcGxhdGVQYXJhbXNbaW5kZXhdIHx8IFtdO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgaV8gaW4gcGFyYW1ldGVycykge1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbWV0ZXJzW2lfXSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdFx0Y29kZSArPSBgfCR7cGFyYW1ldGVyc1tpX119YDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cGFyYW1zLnV0cGFyYW1zID0ge1xuXHRcdFx0XHRcdFx0Li4ucGFyYW1zLnV0cGFyYW1zLFxuXHRcdFx0XHRcdFx0Li4uVHdpbmtsZS5zcGVlZHkuZ2V0VXNlclRhbGtQYXJhbWV0ZXJzKG5vcm0sIHBhcmFtZXRlcnMpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29kZSArPSAnfX0nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cGFyYW1ldGVycyA9IHBhcmFtcy50ZW1wbGF0ZVBhcmFtc1swXSB8fCBbXTtcblx0XHRcdFx0Y29kZSA9ICd7e2RlbGV0ZSc7XG5cdFx0XHRcdGlmIChwYXJhbXMudmFsdWVzWzBdICE9PSAncmVhc29uJykge1xuXHRcdFx0XHRcdGNvZGUgKz0gYHwke3BhcmFtcy52YWx1ZXNbMF19YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGkgaW4gcGFyYW1ldGVycykge1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcGFyYW1ldGVyc1tpXSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdGNvZGUgKz0gYHwke3BhcmFtZXRlcnNbaV19YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29kZSArPSAnfX0nO1xuXHRcdFx0XHRwYXJhbXMudXRwYXJhbXMgPSBUd2lua2xlLnNwZWVkeS5nZXRVc2VyVGFsa1BhcmFtZXRlcnMocGFyYW1zLm5vcm1hbGl6ZWRzWzBdLCBwYXJhbWV0ZXJzKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBbY29kZSwgcGFyYW1zLnV0cGFyYW1zXTtcblx0XHR9LFxuXHRcdHBhcnNlV2lraXRleHQ6ICh0aXRsZSwgd2lraXRleHQsIGNhbGxiYWNrKSA9PiB7XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAncGFyc2UnLFxuXHRcdFx0XHRwcm9wOiAndGV4dCcsXG5cdFx0XHRcdHBzdDogJ3RydWUnLFxuXHRcdFx0XHR0ZXh0OiB3aWtpdGV4dCxcblx0XHRcdFx0Y29udGVudG1vZGVsOiAnd2lraXRleHQnLFxuXHRcdFx0XHR0aXRsZSxcblx0XHRcdH07XG5cdFx0XHRjb25zdCBzdGF0dXNJbmRpY2F0b3IgPSBuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn5p6E6YCg5Yig6Zmk55CG55SxJywgJ+ani+mAoOWIqumZpOeQhueUsScpKTtcblx0XHRcdGNvbnN0IGFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfop6PmnpDliKDpmaTmqKHmnb8nLCAn6Kej5p6Q5Yiq6Zmk5qih5p2/JyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHQoYXBpT2JqKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgcmVhc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KFxuXHRcdFx0XHRcdFx0JChhcGlPYmouZ2V0WE1MKCkucXVlcnlTZWxlY3RvcigndGV4dCcpLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgnI2RlbGV0ZS1yZWFzb24nKVxuXHRcdFx0XHRcdFx0XHQudGV4dCgpXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKC9cXCsvZywgJyAnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKHJlYXNvbikge1xuXHRcdFx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3Iud2Fybih3aW5kb3cud2dVTFMoJ+acquiDveS7juWIoOmZpOaooeadv+eUn+aIkOWIoOmZpOeQhueUsScsICfmnKrog73lvp7liKrpmaTmqKHmnb/nlJ/miJDliKrpmaTnkIbnlLEnKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhbGxiYWNrKHJlYXNvbik7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHN0YXR1c0luZGljYXRvclxuXHRcdFx0KTtcblx0XHRcdGFwaS5wb3N0KCk7XG5cdFx0fSxcblx0XHRzeXNvcDoge1xuXHRcdFx0bWFpbjogKHBhcmFtcykgPT4ge1xuXHRcdFx0XHRsZXQgcmVhc29uO1xuXHRcdFx0XHRpZiAoIXBhcmFtcy5ub3JtYWxpemVkcy5sZW5ndGggJiYgcGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0cmVhc29uID0gcHJvbXB0KHdpbmRvdy53Z1VMUygn6L6T5YWl5Yig6Zmk55CG55Sx77yaJywgJ+i8uOWFpeWIqumZpOeQhueUse+8micpLCAnJyk7XG5cdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLmRlbGV0ZVBhZ2UocmVhc29uLCBwYXJhbXMpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IFtjb2RlXSA9IFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5nZXRUZW1wbGF0ZUNvZGVBbmRQYXJhbXMocGFyYW1zKTtcblx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MucGFyc2VXaWtpdGV4dChtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksIGNvZGUsIChkZWxldGVSZWFzb24pID0+IHtcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMucHJvbXB0Rm9yU3VtbWFyeSkge1xuXHRcdFx0XHRcdFx0XHRkZWxldGVSZWFzb24gPSBwcm9tcHQoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+i+k+WFpeWIoOmZpOeQhueUse+8jOaIluWNleWHu+ehruWumuS7peaOpeWPl+iHquWKqOeUn+aIkOeahO+8micsXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Ly45YWl5Yiq6Zmk55CG55Sx77yM5oiW6bue5pOK56K65a6a5Lul5o6l5Y+X6Ieq5YuV55Sf5oiQ55qE77yaJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0ZGVsZXRlUmVhc29uXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUGFnZShkZWxldGVSZWFzb24sIHBhcmFtcyk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxldGVQYWdlOiAocmVhc29uLCBwYXJhbXMpID0+IHtcblx0XHRcdFx0Y29uc3QgdGhpc3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAocmVhc29uID09PSBudWxsKSB7XG5cdFx0XHRcdFx0cmV0dXJuIE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6K+i6Zeu55CG55SxJywgJ+ipouWVj+eQhueUsScpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnlKjmiLflj5bmtojmk43kvZzjgIInLCAn5L2/55So6ICF5Y+W5raI5pON5L2c44CCJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFyZWFzb24gfHwgIXJlYXNvbi50cmltKCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gTW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor6Lpl67nkIbnlLEnLCAn6Kmi5ZWP55CG55SxJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S9oOS4jee7meaIkeeQhueUseKApuaIkeWwseKApuS4jeeuoeS6huKApicsICfkvaDkuI3ntabmiJHnkIbnlLHigKbmiJHlsLHigKbkuI3nrqHkuobigKYnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZGVsZXRlTWFpbiA9ICgpID0+IHtcblx0XHRcdFx0XHR0aGlzcGFnZS5zZXRFZGl0U3VtbWFyeShyZWFzb24pO1xuXHRcdFx0XHRcdHRoaXNwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5zZXRXYXRjaGxpc3QocGFyYW1zLndhdGNoKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5kZWxldGVQYWdlKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXNwYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5kZWxldGVUYWxrKHBhcmFtcyk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdC8vIGxvb2sgdXAgaW5pdGlhbCBjb250cmlidXRvci4gSWYgcHJvbXB0aW5nIHVzZXIgZm9yIGRlbGV0aW9uIHJlYXNvbiwganVzdCBkaXNwbGF5IGEgbGluay5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIG9wZW4gdGhlIHRhbGsgcGFnZSBkaXJlY3RseVxuXHRcdFx0XHRpZiAocGFyYW1zLm9wZW5Vc2VyVGFsaykge1xuXHRcdFx0XHRcdHRoaXNwYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdHRoaXNwYWdlLmxvb2t1cENyZWF0aW9uKCgpID0+IHtcblx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5vcGVuVXNlclRhbGtQYWdlKHRoaXNwYWdlKTtcblx0XHRcdFx0XHRcdGRlbGV0ZU1haW4oKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWxldGVNYWluKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxldGVUYWxrOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdC8vIGRlbGV0ZSB0YWxrIHBhZ2Vcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHBhcmFtcy5kZWxldGVUYWxrUGFnZSAmJlxuXHRcdFx0XHRcdHBhcmFtcy5ub3JtYWxpemVkICE9PSAnbzEnICYmXG5cdFx0XHRcdFx0IWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjYS10YWxrJykuY2xhc3NMaXN0LmNvbnRhaW5zKCduZXcnKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb25zdCB0YWxrcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHRgJHtcblx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJylbbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSArIDFdXG5cdFx0XHRcdFx0XHR9OiR7bXcuY29uZmlnLmdldCgnd2dUaXRsZScpfWAsXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WIoOmZpOiuqOiuuumhtScsICfliKrpmaToqI7oq5bpoIEnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYFtbUVc6Q1NEI0c5fEc5XV06IOWtpOeri+mhtemdou+8muW3suWIoOmZpOmhtemdouKAnCR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfeKAneeahOiuqOiuuumhtWApO1xuXHRcdFx0XHRcdHRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR0YWxrcGFnZS5kZWxldGVQYWdlKCk7XG5cdFx0XHRcdFx0Ly8gdGhpcyBpcyB1Z2x5LCBidXQgYmVjYXVzZSBvZiB0aGUgYXJjaGl0ZWN0dXJlIG9mIHdpa2kuYXBpLCBpdCBpcyBuZWVkZWRcblx0XHRcdFx0XHQvLyAob3RoZXJ3aXNlIHN1Y2Nlc3MvZmFpbHVyZSBtZXNzYWdlcyBmb3IgdGhlIHByZXZpb3VzIGFjdGlvbiB3b3VsZCBiZSBzdXBwcmVzc2VkKVxuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnN5c29wLmRlbGV0ZVJlZGlyZWN0cyhwYXJhbXMpO1xuXHRcdFx0XHRcdH0sIDE4MDApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5kZWxldGVSZWRpcmVjdHMocGFyYW1zKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZVJlZGlyZWN0czogKHBhcmFtcykgPT4ge1xuXHRcdFx0XHQvLyBkZWxldGUgcmVkaXJlY3RzXG5cdFx0XHRcdGlmIChwYXJhbXMuZGVsZXRlUmVkaXJlY3RzKSB7XG5cdFx0XHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHR0aXRsZXM6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHRcdHByb3A6ICdyZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0cmRsaW1pdDogNTAwMCwgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W6YeN5a6a5ZCR5YiX6KGo4oCmJywgJ+WPluW+l+mHjeaWsOWwjuWQkeWIl+ihqOKApicpLFxuXHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3Muc3lzb3AuZGVsZXRlUmVkaXJlY3RzTWFpbixcblx0XHRcdFx0XHRcdG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfliKDpmaTph43lrprlkJEnLCAn5Yiq6Zmk6YeN5paw5bCO5ZCRJykpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBwcm9tcHQgZm9yIHByb3RlY3Qgb24gRzdcblx0XHRcdFx0bGV0ICRsaW5rO1xuXHRcdFx0XHRsZXQgJGJpZ3RleHQ7XG5cdFx0XHRcdGlmIChwYXJhbXMubm9ybWFsaXplZCA9PT0gJ2c3Jykge1xuXHRcdFx0XHRcdCRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdC5hdHRyKCdocmVmJywgJyMnKVxuXHRcdFx0XHRcdFx0LnRleHQod2luZG93LndnVUxTKCfljZXlh7vov5nph4zmlr3ooYzkv53miqQnLCAn6bue5pOK6YCZ6KOh5pa96KGM5L+d6K23JykpXG5cdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMjUlJyxcblx0XHRcdFx0XHRcdFx0J2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdG13LmNvbmZpZy5zZXQoJ3dnQXJ0aWNsZUlkJywgMCk7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0JGJpZ3RleHQgPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXNpemUnOiAnMTI1JScsXG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+eZvee6uOS/neaKpOivpemhtScsICfnmb3ntJnkv53orbfoqbLpoIEnKSk7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJGJpZ3RleHRbMF0sICRsaW5rWzBdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBwcm9tb3RlIFVubGluayB0b29sXG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2KSB7XG5cdFx0XHRcdFx0JGxpbmsgPSAkKCc8YT4nKVxuXHRcdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCAnIycpXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+WNleWHu+i/memHjOWJjeW+gOWPlua2iOmTvuWFpeW3peWFtycsICfpu57mk4rpgJnoo6HliY3lvoDlj5bmtojpgKPlhaXlt6XlhbcnKSlcblx0XHRcdFx0XHRcdC5jc3Moe1xuXHRcdFx0XHRcdFx0XHQnZm9udC13ZWlnaHQnOiAnYm9sZCcsXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0Lm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5kaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2soXG5cdFx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCflj5bmtojlr7nlt7LliKDpmaTmlofku7YgJywgJ+WPlua2iOWwjeW3suWIqumZpOaqlOahiCAnKSArIE1vcmViaXRzLnBhZ2VOYW1lTm9ybX0g55qE5L2/55SoYFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0JGJpZ3RleHQgPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+WPlua2iOWvueW3suWIoOmZpOaWh+S7tueahOS9v+eUqCcsICflj5bmtojlsI3lt7LliKrpmaTmqpTmoYjnmoTkvb/nlKgnKSk7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJGJpZ3RleHRbMF0sICRsaW5rWzBdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkbGluayA9ICQoJzxhPicpXG5cdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICcjJylcblx0XHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5Y2V5Ye76L+Z6YeM5YmN5b6A5Y+W5raI6ZO+5YWl5bel5YW3JywgJ+m7nuaTiumAmeijoeWJjeW+gOWPlua2iOmAo+WFpeW3peWFtycpKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmRpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnVubGluay5jYWxsYmFjayhcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOWvueW3suWIoOmZpOmhtemdoiAnLCAn5Y+W5raI5bCN5bey5Yiq6Zmk6aCB6Z2iICcpICtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSArXG5cdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDnmoTpk77mjqUnLCAnIOeahOmAo+e1kCcpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQkYmlndGV4dCA9ICQoJzxzcGFuPicpLnRleHQod2luZG93LndnVUxTKCflj5bmtojlr7nlt7LliKDpmaTpobXpnaLnmoTpk77mjqUnLCAn5Y+W5raI5bCN5bey5Yiq6Zmk6aCB6Z2i55qE6YCj57WQJykpLmNzcyh7XG5cdFx0XHRcdFx0XHQnZm9udC13ZWlnaHQnOiAnYm9sZCcsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJGJpZ3RleHRbMF0sICRsaW5rWzBdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQkbGluayA9ICQoJzxhPicpXG5cdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCBtdy51dGlsLmdldFVybCgnU3BlY2lhbDpSYW5kb21JbkNhdGVnb3J5L+W/q+mAn+WIoOmZpOWAmemAiScpKVxuXHRcdFx0XHRcdC50ZXh0KHdpbmRvdy53Z1VMUygn5Y2V5Ye75YmN5b6A5LiL5LiA5Liq5b+r6YCf5Yig6Zmk5YCZ6YCJJywgJ+m7nuaTiuWJjeW+gOS4i+S4gOWAi+W/q+mAn+WIqumZpOWAmemBuCcpKTtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJ+W3peWFtycsICRsaW5rWzBdKTtcblx0XHRcdH0sXG5cdFx0XHRvcGVuVXNlclRhbGtQYWdlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKS51bmxpbmsoKTsgLy8gZG9uJ3QgbmVlZCBpdCBhbnltb3JlXG5cdFx0XHRcdGNvbnN0IHVzZXIgPSBwYWdlb2JqLmdldENyZWF0b3IoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdFx0YWN0aW9uOiAnZWRpdCcsXG5cdFx0XHRcdFx0cHJldmlldzogJ3llcycsXG5cdFx0XHRcdFx0dmFuYXJ0aWNsZTogTW9yZWJpdHMucGFnZU5hbWVOb3JtLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCB0aXRsZSA9IGBVc2VyIHRhbGs6JHt1c2VyfWA7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRwYXJhbXMubm9ybWFsaXplZCA9PT0gJ2RiJyB8fFxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZigncHJvbXB0Rm9yU3BlZWR5RGVsZXRpb25TdW1tYXJ5JykuaW5jbHVkZXMocGFyYW1zLm5vcm1hbGl6ZWQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIHByb3ZpZGUgYSBsaW5rIHRvIHRoZSB1c2VyIHRhbGsgcGFnZVxuXHRcdFx0XHRcdGNvbnN0ICRsaW5rID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdC5hdHRyKHtcblx0XHRcdFx0XHRcdFx0aHJlZjogbXcudXRpbC5nZXRVcmwodGl0bGUsIHF1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnX2JsYW5rJyxcblx0XHRcdFx0XHRcdFx0cmVsOiAnbm9vcGVuZXIgbm9yZWZlcnJlcicsXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXNpemUnOiAnMTI1JScsXG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+eCueatpOaJk+W8gFVzZXIgdGFsazonLCAn6bue5q2k5omT6ZaLVXNlciB0YWxrOicpICsgdXNlcik7XG5cdFx0XHRcdFx0Y29uc3QgJGJpZ3RleHQgPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdmb250LXNpemUnOiAnMTI1JScsXG5cdFx0XHRcdFx0XHRcdCdmb250LXdlaWdodCc6ICdib2xkJyxcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQudGV4dCh3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhScsICfpgJrnn6XpoIHpnaLlu7rnq4vogIUnKSk7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8oJGJpZ3RleHRbMF0sICRsaW5rWzBdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBvcGVuIHRoZSBpbml0aWFsIGNvbnRyaWJ1dG9yJ3MgdGFsayBwYWdlXG5cdFx0XHRcdFx0Y29uc3Qgc3RhdHVzSW5kaWNhdG9yID0gbmV3IE1vcmViaXRzLnN0YXR1cyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5omT5byA55So5oi3JywgJ+aJk+mWi+S9v+eUqOiAhScpICtcblx0XHRcdFx0XHRcdFx0dXNlciArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn55qE6K6o6K666aG157yW6L6R56qX5Y+jJywgJ+eahOiojuirlumggee3qOi8r+imlueqlycpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmiZPlvIDkuK3igKYnLCAn5omT6ZaL5Lit4oCmJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHN3aXRjaCAoVHdpbmtsZS5nZXRQcmVmKCd1c2VyVGFsa1BhZ2VNb2RlJykpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ3RhYic6XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKG13LnV0aWwuZ2V0VXJsKHRpdGxlLCBxdWVyeSksICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2JsYW5rJzpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4oXG5cdFx0XHRcdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwodGl0bGUsIHF1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHQnX2JsYW5rJyxcblx0XHRcdFx0XHRcdFx0XHQnbm9vcGVuZXIsbm9yZWZlcnJlcixsb2NhdGlvbj1ubyx0b29sYmFyPW5vLHN0YXR1cz1ubyxkaXJlY3Rvcmllcz1ubyxzY3JvbGxiYXJzPXllcyx3aWR0aD0xMjAwLGhlaWdodD04MDAnXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0LyogY2FzZSAnd2luZG93JzogKi9cblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKFxuXHRcdFx0XHRcdFx0XHRcdG13LnV0aWwuZ2V0VXJsKHRpdGxlLCBxdWVyeSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hbWUgPT09ICd0d2lua2xld2FybndpbmRvdycgPyAnX2JsYW5rJyA6ICd0d2lua2xld2FybndpbmRvdycsXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hbWUgPT09ICd0d2lua2xld2FybndpbmRvdydcblx0XHRcdFx0XHRcdFx0XHRcdD8gJ25vb3BlbmVyLG5vcmVmZXJyZXIsJ1xuXHRcdFx0XHRcdFx0XHRcdFx0OiAnJyArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2xvY2F0aW9uPW5vLHRvb2xiYXI9bm8sc3RhdHVzPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJhcnM9eWVzLHdpZHRoPTEyMDAsaGVpZ2h0PTgwMCdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHN0YXR1c0luZGljYXRvci5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGV0ZVJlZGlyZWN0c01haW46IChhcGlvYmopID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRG9jID0gYXBpb2JqLmdldFhNTCgpO1xuXHRcdFx0XHRjb25zdCAkc25hcHNob3QgPSAkKHhtbERvYykuZmluZCgncmVkaXJlY3RzIHJkJyk7XG5cdFx0XHRcdGNvbnN0IHRvdGFsID0gJHNuYXBzaG90Lmxlbmd0aDtcblx0XHRcdFx0Y29uc3Qgc3RhdHVzSW5kaWNhdG9yID0gYXBpb2JqLnN0YXRlbGVtO1xuXHRcdFx0XHRpZiAoIXRvdGFsKSB7XG5cdFx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yLmluZm8od2luZG93LndnVUxTKCfmnKrlj5HnjrDph43lrprlkJEnLCAn5pyq55m854++6YeN5paw5bCO5ZCRJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdGF0dXNJbmRpY2F0b3Iuc3RhdHVzKCcwJScpO1xuXHRcdFx0XHRsZXQgY3VycmVudCA9IDA7XG5cdFx0XHRcdGNvbnN0IG9uc3VjY2VzcyA9IChhcGlvYmpJbm5lcikgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG5vdyA9IGAke051bWJlci5wYXJzZUludCgoMTAwICogKytjdXJyZW50KSAvIHRvdGFsLCAxMCl9JWA7XG5cdFx0XHRcdFx0c3RhdHVzSW5kaWNhdG9yLnVwZGF0ZShub3cpO1xuXHRcdFx0XHRcdGFwaW9iaklubmVyLnN0YXRlbGVtLnVubGluaygpO1xuXHRcdFx0XHRcdGlmIChjdXJyZW50ID49IHRvdGFsKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXNJbmRpY2F0b3IuaW5mbyhgJHtub3d977yI5a6M5oiQ77yJYCk7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWRkQ2hlY2twb2ludCgpO1xuXHRcdFx0XHQkc25hcHNob3QuZWFjaCgoX2tleSwgdmFsdWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCB0aXRsZSA9ICQodmFsdWUpLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHR0aXRsZSxcblx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn5Yig6Zmk6YeN5a6a5ZCRIFwiJywgJ+WIqumZpOmHjeaWsOWwjuWQkSBcIicpICsgdGl0bGV9XCJgXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KGBbW1FXOkNTRCNHOXxHOV1dOiDlraTnq4vpobXpnaLvvJrph43lrprlkJHliLDlt7LliKDpmaTpobXpnaLigJwke01vcmViaXRzLnBhZ2VOYW1lTm9ybX3igJ1gKTtcblx0XHRcdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRwYWdlLmRlbGV0ZVBhZ2Uob25zdWNjZXNzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0dXNlcjoge1xuXHRcdFx0bWFpbjogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0Y29uc3Qgc3RhdGVsZW0gPSBwYWdlb2JqLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKDpmaQnLCAn6aCB6Z2i5LiN5a2Y5Zyo77yM5Y+v6IO95bey6KKr5Yiq6ZmkJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0c3RhdGVsZW0uc3RhdHVzKHdpbmRvdy53Z1VMUygn5qOA5p+l6aG16Z2i5bey5pyJ5qCH6K6w4oCmJywgJ+aqouafpemggemdouW3suacieaomeiomOKApicpKTtcblx0XHRcdFx0Ly8gY2hlY2sgZm9yIGV4aXN0aW5nIGRlbGV0aW9uIHRhZ3Ncblx0XHRcdFx0Y29uc3QgdGV4dE5vU2QgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooZGIoLVxcdyopP3xkfGRlbGV0ZXxkZWxldGViZWNhdXNlfHNwZWVkeXxjc2R86YCf5YiqfOmAn+WIoHzlv6vliKB85b+r5YiqKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRleHQgIT09IHRleHROb1NkICYmXG5cdFx0XHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCflnKjpobXpnaLkuIrmib7liLDlv6vpgJ/liKDpmaTmqKHmnb/vvIzopoHnp7vpmaTlubbliqDlhaXmlrDnmoTlkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK5om+5Yiw5b+r6YCf5Yiq6Zmk5qih5p2/77yM6KaB56e76Zmk5Lim5Yqg5YWl5paw55qE5ZeO77yfJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmqKHmnb/lt7Looqvnva7kuo7pobXpnaLkuK3jgIInLCAn5b+r6YCf5Yiq6Zmk5qih5p2/5bey6KKr572u5pa86aCB6Z2i5Lit44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0ZXh0ID0gdGV4dE5vU2Q7XG5cdFx0XHRcdGNvbnN0IGNvcHl2aW8gPSAvKD86XFx7XFx7XFxzKihjb3B5dmlvfOS+teadg3zkvrXmrIopW157fV0qP1xcfVxcfSkvaS5leGVjKHRleHQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y29weXZpbyAmJlxuXHRcdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6JGX5L2c5p2D6aqM6K+B5qih5p2/5bey6KKr572u5LqO6aG16Z2i5Lit77yM5oKo5piv5ZCm5LuN5oOz5Yqg5YWl5LiA5Liq5b+r6YCf5Yig6Zmk5qih5p2/77yfJyxcblx0XHRcdFx0XHRcdFx0J+iRl+S9nOasiumpl+itieaooeadv+W3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+WKoOWFpeS4gOWAi+W/q+mAn+WIqumZpOaooeadv++8nydcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn6aG16Z2i5Lit5bey5pyJ6JGX5L2c5p2D6aqM6K+B5qih5p2/44CCJywgJ+mggemdouS4reW3suacieiRl+S9nOasiumpl+itieaooeadv+OAgicpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgeGZkID0gLyg/Olxce1xceyhbcnNhaWZ0Y212XWZkfG1kMXxwcm9wb3NlZCBkZWxldGlvbilbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR4ZmQgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz5qih5p2/e3snLCAn5Yiq6Zmk55u46Zec5qih5p2/e3snKSArXG5cdFx0XHRcdFx0XHRcdHhmZFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7kuo7pobXpnaLkuK3vvIzmgqjmmK/lkKbku43mg7PliqDlhaXkuIDkuKrlv6vpgJ/liKDpmaTmqKHmnb/vvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+WKoOWFpeS4gOWAi+W/q+mAn+WIqumZpOaooeadv++8nydcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLlt7Looqvmj5DkuqToh7PlrZjlup/orqjorrrjgIInLCAn6aCB6Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bui6KiO6KuW44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBnaXZlbiB0aGUgcGFyYW1zLCBidWlsZHMgdGhlIHRlbXBsYXRlIGFuZCBhbHNvIGFkZHMgdGhlIHVzZXIgdGFsayBwYWdlIHBhcmFtZXRlcnMgdG8gdGhlIHBhcmFtcyB0aGF0IHdlcmUgcGFzc2VkIGluXG5cdFx0XHRcdC8vIHJldHVybnMgPT4gWzxzdHJpbmc+IHdpa2l0ZXh0LCA8b2JqZWN0PiB1dHBhcmFtc11cblx0XHRcdFx0Y29uc3QgYnVpbGREYXRhID0gVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLmdldFRlbXBsYXRlQ29kZUFuZFBhcmFtcyhwYXJhbXMpO1xuXHRcdFx0XHRsZXQgW2NvZGVdID0gYnVpbGREYXRhO1xuXHRcdFx0XHRbLCBwYXJhbXMudXRwYXJhbXNdID0gYnVpbGREYXRhO1xuXHRcdFx0XHRjb25zdCB0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpKTtcblx0XHRcdFx0Ly8gcGF0cm9sIHRoZSBwYWdlLCBpZiByZWFjaGVkIGZyb20gU3BlY2lhbDpOZXdQYWdlc1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3BlZWR5UGFnZXNBc1BhdHJvbGxlZCcpKSB7XG5cdFx0XHRcdFx0dGhpc3BhZ2UucGF0cm9sKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gV3JhcCBTRCB0ZW1wbGF0ZSBpbiBub2luY2x1ZGUgdGFncyBpZiB3ZSBhcmUgaW4gdGVtcGxhdGUgc3BhY2UuXG5cdFx0XHRcdC8vIFdvbid0IHdvcmsgd2l0aCB1c2VyYm94ZXMgaW4gdXNlcnNwYWNlLCBvciBhbnkgb3RoZXIgdHJhbnNjbHVkZWQgcGFnZSBvdXRzaWRlIHRlbXBsYXRlIHNwYWNlXG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxMCkge1xuXHRcdFx0XHRcdC8vIFRlbXBsYXRlOlxuXHRcdFx0XHRcdGNvZGUgPSBgPG5vaW5jbHVkZT4ke2NvZGV9PC9ub2luY2x1ZGU+YDtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBSZW1vdmUgdGFncyB0aGF0IGJlY29tZSBzdXBlcmZsdW91cyB3aXRoIHRoaXMgYWN0aW9uXG5cdFx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooW05uXWV3IHVucmV2aWV3ZWQgYXJ0aWNsZXxbVXVdbnJldmlld2VkfFtVdV1zZXJzcGFjZSBkcmFmdClcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2csXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0XHQvLyByZW1vdmUgXCJtb3ZlIHRvIENvbW1vbnNcIiB0YWcgLSBkZWxldGlvbi10YWdnZWQgZmlsZXMgY2Fubm90IGJlIG1vdmVkIHRvIENvbW1vbnNcblx0XHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xce1xceyhtdGN8KGNvcHkgfG1vdmUgKT90byA/KHNoYXJlfGNvbW1vbnMpfG1vdmUgdG8gKHFpdXdlbiBzaGFyZXx3aWtpbWVkaWEgY29tbW9ucyl8Y29weSB0byAocWl1d2VuIHNoYXJlfHdpa2ltZWRpYSBjb21tb25zKSlbXn1dKlxcfVxcfS9naSxcblx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocGFyYW1zLnJlcXVlc3RzYWx0KSB7XG5cdFx0XHRcdFx0Y29kZSA9IGB7e3NhbHR9fVxcbiR7Y29kZX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEdlbmVyYXRlIGVkaXQgc3VtbWFyeSBmb3IgZWRpdFxuXHRcdFx0XHRsZXQgZWRpdHN1bW1hcnk7XG5cdFx0XHRcdGlmIChwYXJhbXMubm9ybWFsaXplZHMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdGVkaXRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfor7fmsYLlv6vpgJ/liKDpmaTvvIgnLCAn6KuL5rGC5b+r6YCf5Yiq6Zmk77yIJyk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBub3JtIG9mIHBhcmFtcy5ub3JtYWxpemVkcykge1xuXHRcdFx0XHRcdFx0aWYgKG5vcm0gIT09ICdkYicpIHtcblx0XHRcdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gYFtbUVc6Q1NEIyR7bm9ybS50b1VwcGVyQ2FzZSgpfXxDU0QgJHtub3JtLnRvVXBwZXJDYXNlKCl9XV3jgIFgO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlZGl0c3VtbWFyeSA9IGVkaXRzdW1tYXJ5LnNsaWNlKDAsIE1hdGgubWF4KDAsIGVkaXRzdW1tYXJ5Lmxlbmd0aCAtIDEpKTsgLy8gcmVtb3ZlIHRyYWlsaW5nIGNvbW1hXG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gJ++8iSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0ZWRpdHN1bW1hcnkgPVxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fmsYJbW1FXOkNTRHzlv6vpgJ/liKDpmaRdXe+8micsICfoq4vmsYJbW1FXOkNTRHzlv6vpgJ/liKrpmaRdXe+8micpICtcblx0XHRcdFx0XHRcdHBhcmFtcy50ZW1wbGF0ZVBhcmFtc1swXVsnMSddO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGVkaXRzdW1tYXJ5ID0gYCR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+axguW/q+mAn+WIoOmZpCcsXG5cdFx0XHRcdFx0XHQn6KuL5rGC5b+r6YCf5Yiq6ZmkJ1xuXHRcdFx0XHRcdCl977yIW1tRVzpDU0QjJHtwYXJhbXMubm9ybWFsaXplZHNbMF0udG9VcHBlckNhc2UoKX18Q1NEICR7cGFyYW1zLm5vcm1hbGl6ZWRzWzBdLnRvVXBwZXJDYXNlKCl9XV3vvIlgO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEJsYW5rIGF0dGFjayBwYWdlc1xuXHRcdFx0XHRpZiAocGFyYW1zLmJsYW5rKSB7XG5cdFx0XHRcdFx0dGV4dCA9IGNvZGU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyhgJHtjb2RlfVxcbmAsIFR3aW5rbGUuaGF0bm90ZVJlZ2V4KS5nZXRUZXh0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShlZGl0c3VtbWFyeSk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChwYXJhbXMud2F0Y2gpO1xuXHRcdFx0XHRwYWdlb2JqLnNhdmUoVHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIudGFnQ29tcGxldGUpO1xuXHRcdFx0fSxcblx0XHRcdHRhZ0NvbXBsZXRlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHQvLyBOb3RpZmljYXRpb24gdG8gZmlyc3QgY29udHJpYnV0b3Jcblx0XHRcdFx0aWYgKHBhcmFtcy51c2VydGFsaykge1xuXHRcdFx0XHRcdGNvbnN0IGNhbGxiYWNrID0gKHBhZ2VPYmopID0+IHtcblx0XHRcdFx0XHRcdGxldCBpbml0aWFsQ29udHJpYiA9IHBhZ2VPYmouZ2V0Q3JlYXRvcigpO1xuXHRcdFx0XHRcdFx0Ly8gZGlzYWxsb3cgd2FybmluZyB5b3Vyc2VsZlxuXHRcdFx0XHRcdFx0aWYgKGluaXRpYWxDb250cmliID09PSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpIHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdFx0YOaCqO+8iCR7aW5pdGlhbENvbnRyaWJ9JHt3aW5kb3cud2dVTFMoJ++8ieWIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICfvvInlu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKX1gXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGluaXRpYWxDb250cmliID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Ly8gZG9uJ3Qgbm90aWZ5IHVzZXJzIHdoZW4gdGhlaXIgdXNlciB0YWxrIHBhZ2UgaXMgbm9taW5hdGVkXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdFx0XHRpbml0aWFsQ29udHJpYiA9PT0gbXcuY29uZmlnLmdldCgnd2dUaXRsZScpICYmXG5cdFx0XHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDNcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6YCa55+l6aG16Z2i5Yib5bu66ICF77ya55So5oi35Yib5bu65LqG6Ieq5bex55qE6K6o6K666aG1Jyxcblx0XHRcdFx0XHRcdFx0XHRcdCfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvJrkvb/nlKjogIXlu7rnq4vkuoboh6rlt7HnmoToqI7oq5bpoIEnXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRpbml0aWFsQ29udHJpYiA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdC8vIHF1aWNrIGhhY2sgdG8gcHJldmVudCBleGNlc3NpdmUgdW53YW50ZWQgbm90aWZpY2F0aW9ucy4gU2hvdWxkIGFjdHVhbGx5IGJlIGNvbmZpZ3VyYWJsZSBvbiByZWNpcGllbnQgcGFnZS4uLlxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChpbml0aWFsQ29udHJpYiA9PT0gJ0EyMDkzMDY0LWJvdCcgJiYgcGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZzE1Jykge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6YCa55+l6aG16Z2i5Yib5bu66ICF77ya55Sx5py65Zmo5Lq65Yib5bu677yM6Lez6L+H6YCa55+lJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvJrnlLHmqZ/lmajkurrlu7rnq4vvvIzot7PpgY7pgJrnn6UnXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRpbml0aWFsQ29udHJpYiA9IG51bGw7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0YWxrUGFnZU5hbWUgPSBgVXNlciB0YWxrOiR7aW5pdGlhbENvbnRyaWJ9YDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdXNlcnRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0XHR0YWxrUGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIXvvIgnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICF77yIJykgKyBpbml0aWFsQ29udHJpYn3vvIlgXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGxldCBub3RpZnl0ZXh0O1xuXHRcdFx0XHRcdFx0XHRub3RpZnl0ZXh0ID0gJ1xcbnt7Jy5jb25jYXQoJ3N1YnN0OicsIGBkYi1ub3RpY2V8dGFyZ2V0PSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfWApO1xuXHRcdFx0XHRcdFx0XHRub3RpZnl0ZXh0ICs9IFwifG5vd2VsY29tZT15ZXMnfX0tLX5+XCIuY29uY2F0KCd+ficpO1xuXHRcdFx0XHRcdFx0XHRsZXQgZWRpdHN1bW1hcnkgPSAn6YCa55+l77yaJztcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5ub3JtYWxpemVkcy5pbmNsdWRlcygnZzMnKSkge1xuXHRcdFx0XHRcdFx0XHRcdGVkaXRzdW1tYXJ5ICs9ICfkuIDmlLvlh7vmgKfpobXpnaInO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdC8vIG5vIGFydGljbGUgbmFtZSBpbiBzdW1tYXJ5IGZvciBHMTAgZGVsZXRpb25zXG5cdFx0XHRcdFx0XHRcdFx0ZWRpdHN1bW1hcnkgKz0gYOmhtemdoltbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVkaXRzdW1tYXJ5ICs9ICflv6vpgJ/liKDpmaTmj5DlkI0nO1xuXHRcdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KGVkaXRzdW1tYXJ5KTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLmFwcGVuZCgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2csIGlmIHRoZSB1c2VyIGhhcyBlbmFibGVkIGl0XG5cdFx0XHRcdFx0XHRpZiAocGFyYW1zLmxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIuYWRkVG9Mb2cocGFyYW1zLCBpbml0aWFsQ29udHJpYik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRjb25zdCB0aGlzcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoTW9yZWJpdHMucGFnZU5hbWVOb3JtKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5sb29rdXBDcmVhdGlvbihjYWxsYmFjayk7XG5cdFx0XHRcdFx0Ly8gb3IsIGlmIG5vdCBub3RpZnlpbmcsIGFkZCB0aGlzIG5vbWluYXRpb24gdG8gdGhlIHVzZXIncyB1c2Vyc3BhY2UgbG9nIHdpdGhvdXQgdGhlIGluaXRpYWwgY29udHJpYnV0b3IncyBuYW1lXG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLmxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci5hZGRUb0xvZyhwYXJhbXMsIG51bGwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Ly8gbm90ZTogdGhpcyBjb2RlIGlzIGFsc28gaW52b2tlZCBmcm9tIHR3aW5rbGVpbWFnZVxuXHRcdFx0Ly8gdGhlIHBhcmFtcyB1c2VkIGFyZTpcblx0XHRcdC8vICAgZm9yIENTRDogcGFyYW1zLnZhbHVlcywgcGFyYW1zLm5vcm1hbGl6ZWRzICAobm90ZTogbm9ybWFsaXplZHMgaXMgYW4gYXJyYXkpXG5cdFx0XHQvLyAgIGZvciBESTogcGFyYW1zLmZyb21ESSA9IHRydWUsIHBhcmFtcy50ZW1wbGF0ZW5hbWUsIHBhcmFtcy5ub3JtYWxpemVkICAobm90ZTogbm9ybWFsaXplZCBpcyBhIHN0cmluZylcblx0XHRcdGFkZFRvTG9nOiAocGFyYW1zLCBpbml0aWFsQ29udHJpYikgPT4ge1xuXHRcdFx0XHRjb25zdCB1c2wgPSBuZXcgTW9yZWJpdHMudXNlcnNwYWNlTG9nZ2VyKFR3aW5rbGUuZ2V0UHJlZignc3BlZWR5TG9nUGFnZU5hbWUnKSk7XG5cdFx0XHRcdHVzbC5pbml0aWFsVGV4dCA9IGDov5nmmK/or6XnlKjmiLfkvb/nlKhbW0g6VFd8VHdpbmtsZV1d55qE6YCf5Yig5qih5Z2X5YGa5Ye655qEW1tRVzpDU0R85b+r6YCf5Yig6ZmkXV3mj5DlkI3liJfooajjgIJcXG5cXG7oi6XmgqjkuI3lho3mg7Pkv53nlZnmraTml6Xlv5fvvIzor7flnKhbWyR7VHdpbmtsZS5nZXRQcmVmKFxuXHRcdFx0XHRcdCdjb25maWdQYWdlJ1xuXHRcdFx0XHQpfXzlj4LmlbDorr7nva5dXeS4reWFs+aOie+8jOW5tuS9v+eUqFtbUVc6Q1NEI08xfENTRCBPMV1d5o+Q5Lqk5b+r6YCf5Yig6Zmk44CCJHtcblx0XHRcdFx0XHRNb3JlYml0cy51c2VySXNTeXNvcCA/ICdcXG5cXG7mraTml6Xlv5flubbkuI3orrDlvZXnlKhUd2lua2xl55u05o6l5omn6KGM55qE5Yig6Zmk44CCJyA6ICcnXG5cdFx0XHRcdH1gO1xuXHRcdFx0XHRsZXQgYXBwZW5kVGV4dCA9IGAjIFtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1d77yaYDtcblx0XHRcdFx0aWYgKHBhcmFtcy5mcm9tREkpIHtcblx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IGDlm77niYhbW1FXOkNTRCMke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9fENTRCAke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9XV3vvIh7e3RsfCR7XG5cdFx0XHRcdFx0XHRwYXJhbXMudGVtcGxhdGVuYW1lXG5cdFx0XHRcdFx0fX1977yJYDtcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubm9ybWFsaXplZHMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gJ+WkmuS4queQhueUse+8iCc7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBub3JtIG9mIHBhcmFtcy5ub3JtYWxpemVkcykge1xuXHRcdFx0XHRcdFx0YXBwZW5kVGV4dCArPSBgW1tRVzpDU0QjJHtub3JtLnRvVXBwZXJDYXNlKCl9fCR7bm9ybS50b1VwcGVyQ2FzZSgpfV1d44CBYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCA9IGFwcGVuZFRleHQuc2xpY2UoMCwgTWF0aC5tYXgoMCwgYXBwZW5kVGV4dC5sZW5ndGggLSAxKSk7IC8vIHJlbW92ZSB0cmFpbGluZyBjb21tYVxuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gJ++8iSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLm5vcm1hbGl6ZWRzWzBdID09PSAnZGInKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSAn6Ieq5a6a5LmJ55CG55SxJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHBlbmRUZXh0ICs9IGBbW1FXOkNTRCMke3BhcmFtcy5ub3JtYWxpemVkc1swXS50b1VwcGVyQ2FzZSgpfXxDU0QgJHtwYXJhbXMubm9ybWFsaXplZHNbMF0udG9VcHBlckNhc2UoKX1dXWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHBhcmFtcy5yZXF1ZXN0c2FsdCkge1xuXHRcdFx0XHRcdGFwcGVuZFRleHQgKz0gd2luZG93LndnVUxTKCfvvJvor7fmsYLnmb3nurjkv53miqQnLCAn77yb6KuL5rGC55m957SZ5L+d6K23Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGluaXRpYWxDb250cmliKSB7XG5cdFx0XHRcdFx0YXBwZW5kVGV4dCArPSBg77yb6YCa55+le3t1c2VyfCR7aW5pdGlhbENvbnRyaWJ9fX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gJyB+ficuY29uY2F0KCd+JywgJ35+XFxuJyk7XG5cdFx0XHRcdHVzbC5jaGFuZ2VUYWdzID0gVHdpbmtsZS5jaGFuZ2VUYWdzO1xuXHRcdFx0XHR1c2wubG9nKFxuXHRcdFx0XHRcdGFwcGVuZFRleHQsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCforrDlvZXlr7lbWycsICfoqJjpjITlsI1bWycpICtcblx0XHRcdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ11d55qE5b+r6YCf5Yig6Zmk5o+Q5ZCNJywgJ11d55qE5b+r6YCf5Yiq6Zmk5o+Q5ZCNJylcblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0fSxcblx0fTtcblx0Ly8gdmFsaWRhdGUgc3ViZ3JvdXBzIGluIHRoZSBmb3JtIHBhc3NlZCBpbnRvIHRoZSBzcGVlZHkgZGVsZXRpb24gdGFnXG5cdFR3aW5rbGUuc3BlZWR5LmdldFBhcmFtZXRlcnMgPSAoZm9ybSwgdmFsdWVzKSA9PiB7XG5cdFx0bGV0IHBhcmFtZXRlcnMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuXHRcdFx0Y29uc3QgY3VycmVudFBhcmFtcyA9IFtdO1xuXHRcdFx0bGV0IHJlZGltYWdlO1xuXHRcdFx0c3dpdGNoICh2YWx1ZSkge1xuXHRcdFx0XHRjYXNlICdyZWFzb24nOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QucmVhc29uXzEnXSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgZGJyYXRpb25hbGUgPSBmb3JtWydjc2QucmVhc29uXzEnXS52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICghZGJyYXRpb25hbGUgfHwgIWRicmF0aW9uYWxlLnRyaW0oKSkge1xuXHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUse+8muivt+aMh+WumueQhueUseOAgicsICfoh6roqILnkIbnlLHvvJroq4vmjIflrprnkIbnlLHjgIInKSwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3BlZWR5Jyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zWycxJ10gPSBkYnJhdGlvbmFsZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2EyJzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLmEyX3BhZ2VuYW1lJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IG90aGVycGFnZSA9IGZvcm1bJ2NzZC5hMl9wYWdlbmFtZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFvdGhlcnBhZ2UgfHwgIW90aGVycGFnZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCdDU0QgQTLvvJror7fmj5DkvpvnjrDmnInmnaHnm67nmoTlkI3np7DjgIInLCAnQ1NEIEEy77ya6KuL5o+Q5L6b54++5pyJ5qKd55uu55qE5ZCN56ix44CCJyksXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFBhcmFtcy5wYWdlbmFtZSA9IG90aGVycGFnZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2c0Jzpcblx0XHRcdFx0XHRpZiAoZm9ybVsnY3NkLmc0X3BhZ2VuYW1lJ10pIHtcblx0XHRcdFx0XHRcdGNvbnN0IHBhZ2VuYW1lID0gZm9ybVsnY3NkLmc0X3BhZ2VuYW1lJ10udmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoIXBhZ2VuYW1lIHx8ICFwYWdlbmFtZS50cmltKCkpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCdDU0QgRzTvvJror7fmj5DkvpvpobXpnaLlkI3np7DjgIInLCAnQ1NEIEc077ya6KuL5o+Q5L6b6aCB6Z2i5ZCN56ix44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFBhcmFtcy5wYWdlbmFtZSA9IHBhZ2VuYW1lO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZjInOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QuZjJfZmlsZW5hbWUnXSkge1xuXHRcdFx0XHRcdFx0cmVkaW1hZ2UgPSBmb3JtWydjc2QuZjJfZmlsZW5hbWUnXS52YWx1ZTtcblx0XHRcdFx0XHRcdGlmICghcmVkaW1hZ2UgfHwgIXJlZGltYWdlLnRyaW0oKSkge1xuXHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeShcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ0NTRCBGMu+8muivt+aPkOS+m+WPpuS4gOaWh+S7tueahOWQjeensOOAgicsICdDU0QgRjLvvJroq4vmj5Dkvpvlj6bkuIDmqpTmoYjnmoTlkI3nqLHjgIInKSxcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3BlZWR5Jyxcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjdXJyZW50UGFyYW1zLmZpbGVuYW1lID0gcmVkaW1hZ2UucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0bmV3IFJlZ0V4cChgXlxcXFxzKiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoNil9OmAsICdpJyksXG5cdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncjEnOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QucjFfdHlwZSddKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZWRpcnR5cGUgPSBmb3JtWydjc2QucjFfdHlwZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFyZWRpcnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCdDU0QgUjHvvJror7fpgInmi6npgILnlKjnsbvlnovjgIInLCAnQ1NEIFIx77ya6KuL6YG45pOH6YGp55So6aGe5Yil44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFBhcmFtc1snMSddID0gcmVkaXJ0eXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncjInOlxuXHRcdFx0XHRcdGlmIChmb3JtWydjc2QucjJfdHlwZSddKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZWRpcnR5cGUgPSBmb3JtWydjc2QucjJfdHlwZSddLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKCFyZWRpcnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkod2luZG93LndnVUxTKCdDU0QgUjLvvJror7fpgInmi6npgILnlKjnsbvlnovjgIInLCAnQ1NEIFIy77ya6KuL6YG45pOH6YGp55So6aGe5Yil44CCJyksIHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFBhcmFtc1snMSddID0gcmVkaXJ0eXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHBhcmFtZXRlcnNbcGFyYW1ldGVycy5sZW5ndGhdID0gY3VycmVudFBhcmFtcztcblx0XHR9XG5cdFx0cmV0dXJuIHBhcmFtZXRlcnM7XG5cdH07XG5cdC8vIEZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIHRhbGsgcGFnZSBub3RpZmljYXRpb24gdGVtcGxhdGUgcGFyYW1ldGVyc1xuXHRUd2lua2xlLnNwZWVkeS5nZXRVc2VyVGFsa1BhcmFtZXRlcnMgPSAobm9ybWFsaXplZCkgPT4ge1xuXHRcdGNvbnN0IHV0cGFyYW1zID0gW107XG5cdFx0c3dpdGNoIChub3JtYWxpemVkKSB7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHV0cGFyYW1zO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5yZXNvbHZlQ3NkVmFsdWVzID0gKGUpID0+IHtcblx0XHRjb25zdCB2YWx1ZXMgPSAoZS50YXJnZXQuZm9ybSA/PyBlLnRhcmdldCkuZ2V0Q2hlY2tlZCgnY3NkJyk7XG5cdFx0aWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+36YCJ5oup5LiA5Liq55CG5o2u77yBJywgJ+iri+mBuOaTh+S4gOWAi+eQhuaTmu+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXNwZWVkeScsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gdmFsdWVzO1xuXHR9O1xuXHRUd2lua2xlLnNwZWVkeS5jYWxsYmFjay5ldmFsdWF0ZVN5c29wID0gKGUpID0+IHtcblx0XHRjb25zdCBmb3JtID0gZS50YXJnZXQuZm9ybSA/PyBlLnRhcmdldDtcblx0XHRpZiAoZS50YXJnZXQudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlLnRhcmdldC50eXBlID09PSAndGV4dCcgfHwgZS50YXJnZXQudHlwZSA9PT0gJ3NlbGVjdCcpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qge3RhZ19vbmx5fSA9IGZvcm07XG5cdFx0aWYgKHRhZ19vbmx5ICYmIHRhZ19vbmx5LmNoZWNrZWQpIHtcblx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLmV2YWx1YXRlVXNlcihlKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdmFsdWVzID0gVHdpbmtsZS5zcGVlZHkucmVzb2x2ZUNzZFZhbHVlcyhlKTtcblx0XHRpZiAoIXZhbHVlcykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBub3JtYWxpemVkcyA9IHZhbHVlcy5tYXAoKHZhbHVlKSA9PiB7XG5cdFx0XHRyZXR1cm4gVHdpbmtsZS5zcGVlZHkubm9ybWFsaXplSGFzaFt2YWx1ZV07XG5cdFx0fSk7XG5cdFx0Ly8gYW5hbHlzZSBlYWNoIGNyaXRlcmlvbiB0byBkZXRlcm1pbmUgd2hldGhlciB0byB3YXRjaCB0aGUgcGFnZSwgcHJvbXB0IGZvciBzdW1tYXJ5LCBvciBvcGVuIHVzZXIgdGFsayBwYWdlXG5cdFx0bGV0IHdhdGNoUGFnZTtcblx0XHRsZXQgcHJvbXB0Rm9yU3VtbWFyeTtcblx0XHRmb3IgKGNvbnN0IG5vcm0gb2Ygbm9ybWFsaXplZHMpIHtcblx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3dhdGNoU3BlZWR5UGFnZXMnKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHR3YXRjaFBhZ2UgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoU3BlZWR5RXhwaXJ5Jyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnknKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRwcm9tcHRGb3JTdW1tYXJ5ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0dmFsdWVzLFxuXHRcdFx0bm9ybWFsaXplZHMsXG5cdFx0XHR3YXRjaDogd2F0Y2hQYWdlLFxuXHRcdFx0ZGVsZXRlVGFsa1BhZ2U6IGZvcm0udGFsa3BhZ2UgJiYgZm9ybS50YWxrcGFnZS5jaGVja2VkLFxuXHRcdFx0ZGVsZXRlUmVkaXJlY3RzOiBmb3JtLnJlZGlyZWN0cy5jaGVja2VkLFxuXHRcdFx0b3BlblVzZXJUYWxrOiBmb3JtLm9wZW51c2VydGFsay5jaGVja2VkLFxuXHRcdFx0cHJvbXB0Rm9yU3VtbWFyeSxcblx0XHRcdHRlbXBsYXRlUGFyYW1zOiBUd2lua2xlLnNwZWVkeS5nZXRQYXJhbWV0ZXJzKGZvcm0sIHZhbHVlcyksXG5cdFx0fTtcblx0XHRpZiAoIXBhcmFtcy50ZW1wbGF0ZVBhcmFtcykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy5zeXNvcC5tYWluKHBhcmFtcyk7XG5cdH07XG5cdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrLmV2YWx1YXRlVXNlciA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0LmZvcm0gPz8gZS50YXJnZXQ7XG5cdFx0aWYgKGUudGFyZ2V0LnR5cGUgPT09ICdjaGVja2JveCcgfHwgZS50YXJnZXQudHlwZSA9PT0gJ3RleHQnIHx8IGUudGFyZ2V0LnR5cGUgPT09ICdzZWxlY3QnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlcyA9IFR3aW5rbGUuc3BlZWR5LnJlc29sdmVDc2RWYWx1ZXMoZSk7XG5cdFx0aWYgKCF2YWx1ZXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Ly8gY29uc3QgbXVsdGlwbGUgPSBmb3JtLm11bHRpcGxlLmNoZWNrZWQ7XG5cdFx0Y29uc3Qgbm9ybWFsaXplZHMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuXHRcdFx0Y29uc3Qgbm9ybSA9IFR3aW5rbGUuc3BlZWR5Lm5vcm1hbGl6ZUhhc2hbdmFsdWVdO1xuXHRcdFx0bm9ybWFsaXplZHNbbm9ybWFsaXplZHMubGVuZ3RoXSA9IG5vcm07XG5cdFx0fVxuXHRcdC8vIGFuYWx5c2UgZWFjaCBjcml0ZXJpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gd2F0Y2ggdGhlIHBhZ2Uvbm90aWZ5IHRoZSBjcmVhdG9yXG5cdFx0bGV0IHdhdGNoUGFnZSA9IGZhbHNlO1xuXHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hTcGVlZHlQYWdlcycpLmluY2x1ZGVzKG5vcm0pKSB7XG5cdFx0XHRcdHdhdGNoUGFnZSA9IFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hTcGVlZHlFeHBpcnknKTtcblx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdGNvbnRpbnVlOyAvLyBicmVha1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBub3RpZnl1c2VyID0gZmFsc2U7XG5cdFx0aWYgKGZvcm0ubm90aWZ5LmNoZWNrZWQpIHtcblx0XHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24nKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRcdG5vdGlmeXVzZXIgPSB0cnVlO1xuXHRcdFx0XHRcdGZhbHNlO1xuXHRcdFx0XHRcdGNvbnRpbnVlOyAvLyBicmVha1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IGNzZGxvZyA9IGZhbHNlO1xuXHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2xvZ1NwZWVkeU5vbWluYXRpb25zJykpIHtcblx0XHRcdGZvciAoY29uc3Qgbm9ybSBvZiBub3JtYWxpemVkcykge1xuXHRcdFx0XHRpZiAoIVR3aW5rbGUuZ2V0UHJlZignbm9Mb2dPblNwZWVkeU5vbWluYXRpb24nKS5pbmNsdWRlcyhub3JtKSkge1xuXHRcdFx0XHRcdGNzZGxvZyA9IHRydWU7XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHRcdFx0Y29udGludWU7IC8vIGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR2YWx1ZXMsXG5cdFx0XHRub3JtYWxpemVkcyxcblx0XHRcdHdhdGNoOiB3YXRjaFBhZ2UsXG5cdFx0XHR1c2VydGFsazogbm90aWZ5dXNlcixcblx0XHRcdGxvZ25vbWluYXRpb246IGNzZGxvZyxcblx0XHRcdGJsYW5rOiBmb3JtLmJsYW5rLmNoZWNrZWQsXG5cdFx0XHRyZXF1ZXN0c2FsdDogZm9ybS5zYWx0aW5nLmNoZWNrZWQsXG5cdFx0XHR0ZW1wbGF0ZVBhcmFtczogVHdpbmtsZS5zcGVlZHkuZ2V0UGFyYW1ldGVycyhmb3JtLCB2YWx1ZXMpLFxuXHRcdH07XG5cdFx0aWYgKCFwYXJhbXMudGVtcGxhdGVQYXJhbXMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+agh+iusOWujOaIkCcsICfmqJnoqJjlrozmiJAnKTtcblx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdoicsICfmqJnoqJjpoIHpnaInKSk7XG5cdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MudXNlci5tYWluKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5zcGVlZHksICdzcGVlZHknKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlY29weXZpby5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVjb3B5dmlvKCkge1xuXHQvKipcblx0ICogdHdpbmtsZWNvcHl2aW8uanM6IENvcHl2aW8gbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjpcdFRhYiAoXCJDb3B5dmlvXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3RpbmcsIG5vbi1zcGVjaWFsIHBhZ2VzLCBleGNlcHQgZm9yIGZpbGUgcGFnZXNcblx0ICogd2l0aCBubyBsb2NhbCBmaWxlIHdoaWNoIGFyZSBub3QgcmVkaXJlY3RzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiAgVHdpbmtsZUNvbmZpZ1xuXHQgKi9cblx0VHdpbmtsZS5jb3B5dmlvID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHQvLyAqIG5vbi1sb2NhbCBmaWxlcywgd2hldGhlciB0aGVyZSBpcyBhIGxvY2FsIHBhZ2Ugb3Igbm90ICh1bm5lZWRlZCBsb2NhbCBwYWdlcyBvZiBub24tbG9jYWwgZmlsZXMgYXJlIGVsaWdpYmxlIGZvciBDU0QgRjIpXG5cdFx0Ly8gKiBmaWxlIHBhZ2VzIHdpdGhvdXQgYWN0dWFsIGZpbGVzICh0aGVzZSBhcmUgZWxpZ2libGUgZm9yIENTRCBHOClcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fFxuXHRcdFx0IW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHxcblx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHRcdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctc2hhcmVkdXBsb2FkJykgfHxcblx0XHRcdFx0XHQoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1pbWFnZXBhZ2Utc2VjdGlvbi1maWxlaGlzdG9yeScpICYmICFNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSkpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2ssXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+S+teadgycsICfkvrXmrIonKSxcblx0XHRcdCd0dy1jb3B5dmlvJyxcblx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5oql5L615p2D6aG16Z2iJywgJ+aPkOWgseS+teasiumggemdoicpLFxuXHRcdFx0Jydcblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDM1MCk7XG5cdFx0V2luZG93LnNldFRpdGxlKHdpbmRvdy53Z1VMUygn5o+Q5oql5L615p2D6aG16Z2iJywgJ+aPkOWgseS+teasiumggemdoicpKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5L615p2D6K6+572uJywgJ+S+teasiuioreWumicpLCAnSDpUVy9QUkVGI2NvcHl2aW8nKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjY29weXZpbycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuY29weXZpby5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S+teadg+adpea6kO+8micsICfkvrXmrIrkvobmupDvvJonKSxcblx0XHRcdG5hbWU6ICdzb3VyY2UnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J0NTRCBHNDog5pu+57uP5qC55o2u5L615p2D5a6h5qC45Yig6Zmk5ZCO5Y+I6YeN5paw5Yib5bu655qE5YaF5a65Jyxcblx0XHRcdFx0XHRcdCdDU0QgRzQ6IOabvue2k+agueaTmuS+teasiuWvqeaguOWIqumZpOW+jOWPiOmHjeaWsOW7uueri+eahOWFp+WuuSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZzQnLFxuXHRcdFx0XHRcdG5hbWU6ICdnNCcsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflkIzml7bku6VHNOWHhuWImeaPkOaKpeW/q+mAn+WIoOmZpCcsICflkIzmmYLku6VHNOa6luWJh+aPkOWgseW/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdnNF9wYWdlbmFtZScsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WJjeasoeWIoOmZpOeahOmhtemdouWQjeensCcsICfliY3mrKHliKrpmaTnmoTpoIHpnaLlkI3nqLEnKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpgInloavvvIzoi6XliY3mrKHliKDpmaTnmoTpobXpnaLlkI3np7DkuI3lkIzvvIzor7fmj5DkvpsnLFxuXHRcdFx0XHRcdFx0XHRcdCfpgbjloavvvIzoi6XliY3mrKHliKrpmaTnmoTpoIHpnaLlkI3nqLHkuI3lkIzvvIzoq4vmj5DkvpsnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrnn6XpobXpnaLliJvlu7rogIUnLCAn6YCa55+l6aCB6Z2i5bu656uL6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjpobXpnaLliJvlu7rogIXorqjorrrpobXkuIrmlL7nva7kuIDpgJrnn6XmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+WcqOmggemdouW7uueri+iAheiojuirlumggeS4iuaUvue9ruS4gOmAmuefpeaooeadv+OAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHR9O1xuXHRUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2tzID0ge1xuXHRcdHRyeVRhZ2dpbmc6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyDlhYjlsJ3or5XmoIforrDpobXpnaLvvIzoi6Xlj5HnjrDlt7Lnu4/moIforrDliJnlgZzmraLmj5DmiqVcblx0XHRcdGNvbnN0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRpZiAodGV4dC5pbmNsdWRlcygne3tDb3B5dmlvfCcpKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mUmeivrycsICfpjK/oqqQnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6aG16Z2i5bey57uP5qCH6K6w5L615p2D77yM6K+35Lq65bel56Gu6K6k5piv5ZCm5bey57uP5o+Q5oql44CCJyxcblx0XHRcdFx0XHRcdCfpoIHpnaLlt7LntpPmqJnoqJjkvrXmrIrvvIzoq4vkurrlt6Xnorroqo3mmK/lkKblt7LntpPmj5DloLHjgIInXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0VHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy50YWdnaW5nQXJ0aWNsZShwYWdlb2JqKTtcblx0XHRcdFx0Ly8gQ29udHJpYnV0b3Igc3BlY2lmaWMgZWRpdHNcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpKTtcblx0XHRcdFx0cWl1d2VuX3BhZ2UubG9va3VwQ3JlYXRpb24oVHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy5tYWluKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG1haW46IChwYWdlb2JqKSA9PiB7XG5cdFx0XHQvLyB0aGlzIGlzIGNvbWluZyBpbiBmcm9tIGxvb2t1cENyZWF0aW9uLi4uIVxuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IGluaXRpYWxDb250cmliID0gcGFnZW9iai5nZXRDcmVhdG9yKCk7XG5cdFx0XHQvLyBBZGRpbmcgZGlzY3Vzc2lvblxuXHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRwYXJhbXMubG9ncGFnZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXkvrXmnYPorrDlvZXpobknLCAn5Yqg5YWl5L615qyK6KiY6YyE6aCFJylcblx0XHRcdCk7XG5cdFx0XHRxaXV3ZW5fcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLmNvcHl2aW8uY2FsbGJhY2tzLmNvcHl2aW9MaXN0KTtcblx0XHRcdC8vIE5vdGlmaWNhdGlvbiB0byBmaXJzdCBjb250cmlidXRvclxuXHRcdFx0aWYgKHBhcmFtcy5ub3RpZnkpIHtcblx0XHRcdFx0Y29uc3QgdXNlcnRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRgVXNlciB0YWxrOiR7aW5pdGlhbENvbnRyaWJ9YCxcblx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhe+8iCcsICfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvIgnKSArIGluaXRpYWxDb250cmlife+8iWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3Qgbm90aWZ5dGV4dCA9ICdcXG57eycuY29uY2F0KCdzdWJzdDonLCBgQ29weXZpb05vdGljZXwke213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX19fWApO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6YCa55+l77ya6aG16Z2iW1snLCAn6YCa55+l77ya6aCB6Z2iW1snKSArXG5cdFx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCddXeeWkeS8vOS+teeKr+iRl+S9nOadgycsICddXeeWkeS8vOS+teeKr+eJiOasiicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdjb3B5dmlvV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0YWdnaW5nQXJ0aWNsZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCByZXZpc2lvbklkID1cblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dSZXZpc2lvbklkJykgfHwgbXcuY29uZmlnLmdldCgnd2dEaWZmTmV3SWQnKSB8fCBtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKTtcblx0XHRcdGxldCB0YWcgPSAne3snLmNvbmNhdChcblx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdGBDb3B5dmlvL2F1dG98dXJsPSR7cGFyYW1zLnNvdXJjZVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9odHRwL2csICcmIzEwNDt0dHAnKVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9cXG4rL2csICdcXG4nKVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9eXFxzKihbXipdKS9nbSwgJyogJDEnKVxuXHRcdFx0XHRcdC5yZXBsYWNlKC9eXFwqICQvbSwgJycpfXxPbGRSZXZpc2lvbj0ke3JldmlzaW9uSWR9fX1gXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IG9sZGNzZCA9IHRleHQubWF0Y2goL1xce1xce1xccyooZGIoLVxcdyopP3xkfGRlbGV0ZSlcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH0vaSk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9sZGNzZCAmJlxuXHRcdFx0XHRjb25maXJtKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjpobXpnaLkuIrmib7liLDlv6vpgJ/liKDpmaTmqKHmnb/vvIzopoHkv53nlZnlkJfvvJ9cXG5cXG7lvZPpobXpnaLlkIzml7bkvrXniq/okZfkvZzmnYPlj4jnrKblkIjlv6vpgJ/liKDpmaTmoIflh4bml7bvvIzlupTor6XkvJjlhYjotbDlv6vpgJ/liKDpmaTnqIvluo/jgIJcXG7ljZXlh7vigJznoa7orqTigJ3ku6Xkv53nlZnlv6vpgJ/liKDpmaTmqKHmnb/vvIzoi6XmgqjorqTkuLrlv6vpgJ/liKDpmaTnkIbnlLHkuI3lkIjvvIzljZXlh7vigJzlj5bmtojigJ3ku6Xnp7vpmaTlv6vpgJ/liKDpmaTmqKHmnb/jgIInLFxuXHRcdFx0XHRcdFx0J+WcqOmggemdouS4iuaJvuWIsOW/q+mAn+WIqumZpOaooeadv++8jOimgeS/neeVmeWXju+8n1xcblxcbueVtumggemdouWQjOaZguS+teeKr+eJiOasiuWPiOespuWQiOW/q+mAn+WIqumZpOaomea6luaZgu+8jOaHieipsuWEquWFiOi1sOW/q+mAn+WIqumZpOeoi+W6j+OAglxcbum7nuaTiuOAjOeiuuiqjeOAjeS7peS/neeVmeW/q+mAn+WIqumZpOaooeadv++8jOiLpeaCqOiqjeeCuuW/q+mAn+WIqumZpOeQhueUseS4jeWQiO+8jOm7nuaTiuOAjOWPlua2iOOAjeS7peenu+mZpOW/q+mAn+WIqumZpOaooeadv+OAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHR0YWcgPSBgJHtvbGRjc2RbMF19XFxuJHt0YWd9YDtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMuZzQpIHtcblx0XHRcdFx0bGV0IHNwZWVkeVRhZyA9ICd7e2RlbGV0ZSc7XG5cdFx0XHRcdHNwZWVkeVRhZyArPSAnfGc0Jztcblx0XHRcdFx0aWYgKHBhcmFtcy5nNF9wYWdlbmFtZSkge1xuXHRcdFx0XHRcdHNwZWVkeVRhZyArPSBgfCR7cGFyYW1zLmc0X3BhZ2VuYW1lfXxjMT1bW1NwZWNpYWw6VW5kZWxldGUvJHtwYXJhbXMuZzRfcGFnZW5hbWV9XV1gO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNwZWVkeVRhZyArPSBgfGMxPVtbU3BlY2lhbDpVbmRlbGV0ZS8ke213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX1dXWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3BlZWR5VGFnICs9ICd9fSc7XG5cdFx0XHRcdHRhZyA9IGAke3NwZWVkeVRhZ31cXG4ke3RhZ31gO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0YWcpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeSh3aW5kb3cud2dVTFMoJ+atpOmhtemdoueWkeS8vOS+teeKr+iRl+S9nOadgycsICfmraTpoIHpnaLnlpHkvLzkvrXniq/niYjmrIonKSk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignY29weXZpb1dhdGNoUGFnZScpKTtcblx0XHRcdC8vIHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQnKSkge1xuXHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Y29weXZpb0xpc3Q6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0bGV0IG91dHB1dCA9ICcnO1xuXHRcdFx0Y29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRjb25zdCBkYXRlSGVhZGVyUmVnZXggPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgXj09K1xcXFxzKiR7ZGF0ZS5nZXRVVENNb250aCgpICsgMX3mnIgke2RhdGUuZ2V0VVRDRGF0ZSgpfeaXpVxcXFxzKj09K2AsXG5cdFx0XHRcdCdtZydcblx0XHRcdCk7XG5cdFx0XHRpZiAoIWRhdGVIZWFkZXJSZWdleC5leGVjKHRleHQpKSB7XG5cdFx0XHRcdG91dHB1dCA9IGBcXG5cXG49PSR7ZGF0ZS5nZXRVVENNb250aCgpICsgMX3mnIgke2RhdGUuZ2V0VVRDRGF0ZSgpfeaXpT09YDtcblx0XHRcdH1cblx0XHRcdG91dHB1dCArPSAnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYENvcHl2aW9WRkRSZWNvcmR8JHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9fX1gKTtcblx0XHRcdHBhZ2VvYmouc2V0QXBwZW5kVGV4dChvdXRwdXQpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShg5Yqg5YWlW1ske213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX1dXWApO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouYXBwZW5kKCk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGUudGFyZ2V0KTtcblx0XHRpZiAoIXBhcmFtcy5zb3VyY2UudHJpbSgpKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+ivt+aMh+WumuS+teadg+adpea6kCcsICfoq4vmjIflrprkvrXmrIrkvobmupAnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGVjb3B5dmlvJyxcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGUudGFyZ2V0KTtcblx0XHRwYXJhbXMubG9ncGFnZSA9ICdRaXV3ZW5fdGFsazrkvrXmnYPmj5DmiqUnO1xuXHRcdE1vcmViaXRzLndpa2kuYWRkQ2hlY2twb2ludCgpO1xuXHRcdC8vIFVwZGF0aW5nIGRhdGEgZm9yIHRoZSBhY3Rpb24gY29tcGxldGVkIGV2ZW50XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+aPkOaKpeWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5o+Q5aCx5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0Ly8gVGFnZ2luZyBmaWxlXG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXkvrXmnYPmqKHmnb/liLDpobXpnaInLCAn5Yqg5YWl5L615qyK5qih5p2/5Yiw6aCB6Z2iJylcblx0XHQpO1xuXHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5jb3B5dmlvLmNhbGxiYWNrcy50cnlUYWdnaW5nKTtcblx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS5jb3B5dmlvLCAnY29weXZpbycpO1xufSkoKTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGV4ZmQuanMgKi9cbihmdW5jdGlvbiB0d2lua2xleGZkKCkge1xuXHQvKipcblx0ICogdHdpbmtsZXhmZC5qczogWEZEIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJYRkRcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZywgbm9uLXNwZWNpYWwgcGFnZXMsXG5cdCAqIGV4Y2VwdCBmb3IgZmlsZSBwYWdlcyB3aXRoIG5vIGxvY2FsIGZpbGVcblx0ICogd2hpY2ggYXJlIG5vdCByZWRpcmVjdHNcblx0ICovXG5cdFR3aW5rbGUueGZkID0gKCkgPT4ge1xuXHRcdC8vIERpc2FibGUgb246XG5cdFx0Ly8gKiBzcGVjaWFsIHBhZ2VzXG5cdFx0Ly8gKiBub24tZXhpc3RlbnQgcGFnZXNcblx0XHQvLyAqIG5vbi1sb2NhbCBmaWxlcywgd2hldGhlciB0aGVyZSBpcyBhIGxvY2FsIHBhZ2Ugb3Igbm90ICh1bm5lZWRlZCBsb2NhbCBwYWdlcyBvZiBmaWxlcyBvbiBTaGFyZSBhcmUgZWxpZ2libGUgZm9yIENTRCBGMilcblx0XHQvLyAqIGZpbGUgcGFnZXMgd2l0aG91dCBhY3R1YWwgZmlsZXNcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fFxuXHRcdFx0IW13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgfHxcblx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHRcdChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctc2hhcmVkdXBsb2FkJykgfHxcblx0XHRcdFx0XHQoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1pbWFnZXBhZ2Utc2VjdGlvbi1maWxlaGlzdG9yeScpICYmICFNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSkpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFjayxcblx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5YigJywgJ+aPkOWIqicpLFxuXHRcdFx0J3R3LXhmZCcsXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aPkOS6pOWIoOmZpOiuqOiuuicsICfmj5DkuqTliKrpmaToqI7oq5YnKVxuXHRcdCk7XG5cdH07XG5cdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBudWxsO1xuXHQvLyBlcnJvciBjYWxsYmFjayBvbiBNb3JlYml0cy5zdGF0dXMub2JqZWN0XG5cdFR3aW5rbGUueGZkLnByaW50UmF0aW9uYWxlID0gKCkgPT4ge1xuXHRcdGlmIChUd2lua2xlLnhmZC5jdXJyZW50UmF0aW9uYWxlKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMucHJpbnRVc2VyVGV4dChcblx0XHRcdFx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSxcblx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmgqjnmoTnkIbnlLHlt7LlnKjkuIvmlrnmj5DkvpvvvIzoi6Xmgqjmg7Pph43mlrDmj5DkuqTvvIzor7flsIblhbblpI3liLbliLDkuIDmlrDnqpflj6PkuK3vvJonLFxuXHRcdFx0XHRcdCfmgqjnmoTnkIbnlLHlt7LlnKjkuIvmlrnmj5DkvpvvvIzoi6Xmgqjmg7Pph43mlrDmj5DkuqTvvIzoq4vlsIflhbbopIfoo73liLDkuIDmlrDoppbnqpfkuK3vvJonXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHQvLyBvbmx5IG5lZWQgdG8gcHJpbnQgdGhlIHJhdGlvbmFsZSBvbmNlXG5cdFx0XHRUd2lua2xlLnhmZC5jdXJyZW50UmF0aW9uYWxlID0gbnVsbDtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjAwLCAzNTApO1xuXHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aPkOS6pOWtmOW6n+iuqOiuuicsICfmj5DkuqTlrZjlu6LoqI7oq5YnKSk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+aPkOWIoOiuvue9ricsICfmj5DliKroqK3lrponKSwgJ0g6VFcvUFJFRiN4ZmQnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0MjeGZkJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS54ZmQuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGNvbnN0IGNhdGVnb3JpZXMgPSBmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdjYXRlZ29yeScsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmj5DkuqTnsbvlnovvvJonLCAn5o+Q5Lqk6aGe5Yil77yaJyksXG5cdFx0XHRldmVudDogVHdpbmtsZS54ZmQuY2FsbGJhY2suY2hhbmdlX2NhdGVnb3J5LFxuXHRcdH0pO1xuXHRcdGNhdGVnb3JpZXMuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5a2Y5bqf6K6o6K66JywgJ+mggemdouWtmOW7ouiojuirlicpLFxuXHRcdFx0c2VsZWN0ZWQ6IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDAsXG5cdFx0XHR2YWx1ZTogJ2FmZCcsXG5cdFx0fSk7XG5cdFx0Y2F0ZWdvcmllcy5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlofku7blrZjlup/orqjorronLCAn5qqU5qGI5a2Y5bui6KiO6KuWJyksXG5cdFx0XHRzZWxlY3RlZDogbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gNixcblx0XHRcdHZhbHVlOiAnZmZkJyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aaC5Y+v6IO977yM6YCa55+l6aG16Z2i5Yib5bu66ICFJywgJ+WmguWPr+iDve+8jOmAmuefpemggemdouW7uueri+iAhScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm90aWZ5Jyxcblx0XHRcdFx0XHRuYW1lOiAnbm90aWZ5Jyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo6aG16Z2i5Yib5bu66ICF6K6o6K666aG15LiK5pS+572u5LiA6YCa55+l5qih5p2/44CCJyxcblx0XHRcdFx0XHRcdCflnKjpoIHpnaLlu7rnq4vogIXoqI7oq5bpoIHkuIrmlL7nva7kuIDpgJrnn6XmqKHmnb/jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICflt6XkvZzljLonLFxuXHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Ly8gV2UgbXVzdCBpbml0IHRoZSBjb250cm9sc1xuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5jYXRlZ29yeS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrLmNoYW5nZV9jYXRlZ29yeSA9IChlKSA9PiB7XG5cdFx0Y29uc3Qge3ZhbHVlfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IFtvbGRfYXJlYV0gPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ3dvcmtfYXJlYScpO1xuXHRcdGxldCB3b3JrX2FyZWEgPSBudWxsO1xuXHRcdGNvbnN0IG9sZHJlYXNvbnRleHRib3ggPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhJyk7XG5cdFx0bGV0IG9sZHJlYXNvbiA9IG9sZHJlYXNvbnRleHRib3ggPyBvbGRyZWFzb250ZXh0Ym94LnZhbHVlIDogJyc7XG5cdFx0Y29uc3QgYXBwZW5kUmVhc29uQm94ID0gKHhmZF9jYXQpID0+IHtcblx0XHRcdHN3aXRjaCAoeGZkX2NhdCkge1xuXHRcdFx0XHRjYXNlICdmd2Rjc2QnOlxuXHRcdFx0XHRcdG9sZHJlYXNvbiA9IGRlY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZGVsZXRlLXJlYXNvbicpLnRleHRDb250ZW50KS5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0L1xcKy9nLFxuXHRcdFx0XHRcdFx0JyAnXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZmFtZSc6XG5cdFx0XHRcdFx0b2xkcmVhc29uID0gVHdpbmtsZS5nZXRQcmVmKCdhZmRGYW1lRGVmYXVsdFJlYXNvbicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0XHRvbGRyZWFzb24gPSBUd2lua2xlLmdldFByZWYoJ2FmZFN1YnN0dWJEZWZhdWx0UmVhc29uJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0bmFtZTogJ3hmZHJlYXNvbicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aPkOWIoOeQhueUse+8micsICfmj5DliKrnkIbnlLHvvJonKSxcblx0XHRcdFx0dmFsdWU6IG9sZHJlYXNvbixcblx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmgqjlj6/ku6Xkvb/nlKh3aWtpdGV4dO+8jFR3aW5rbGXlsIboh6rliqjkuLrmgqjliqDlhaXnrb7lkI3jgILoi6Xmgqjkvb/nlKjmibnph4/mj5DliKDlip/og73vvIzlrZjlup/orqjorrrpobXlj6rkvJrkvb/nlKjnrKzkuIDmrKHmj5DkuqTnmoTnkIbnlLHvvIzkvYbkuYvlkI7mgqjku43pnIDmj5Dkvpvku6XnlKjkuo7liKDpmaTpgJrlkYrmqKHmnb/nmoTlj4LmlbDjgIInLFxuXHRcdFx0XHRcdCfmgqjlj6/ku6Xkvb/nlKh3aWtpdGV4dO+8jFR3aW5rbGXlsIfoh6rli5XngrrmgqjliqDlhaXnsL3lkI3jgILoi6Xmgqjkvb/nlKjmibnmrKHmj5DliKrlip/og73vvIzlrZjlu6LoqI7oq5bpoIHlj6rmnIPkvb/nlKjnrKzkuIDmrKHmj5DkuqTnmoTnkIbnlLHvvIzkvYbkuYvlvozmgqjku43pnIDmj5Dkvpvku6XnlKjmlrzliKrpmaTpgJrlkYrmqKHmnb/nmoTlj4PmlbjjgIInXG5cdFx0XHRcdCksXG5cdFx0XHRcdHBsYWNlaG9sZGVyOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0J+atpOWAvOS6puaYvuekuuS6jumhtemdoueahOWIoOmZpOmAmuWRiuaooeadv+WGhe+8jOaVheWKoeW/heaPkOS+m+atpOWAvO+8jOmBv+WFjeS9v+eUqOKAnOWQjOS4iuKAneetieeUqOivreOAgicsXG5cdFx0XHRcdFx0J+atpOWAvOS6pumhr+ekuuaWvOmggemdoueahOWIqumZpOmAmuWRiuaooeadv+WFp++8jOaVheWLmeW/heaPkOS+m+atpOWAvO+8jOmBv+WFjeS9v+eUqOOAjOWQjOS4iuOAjeetieeUqOiqnuOAgidcblx0XHRcdFx0KSxcblx0XHRcdH0pO1xuXHRcdFx0Ly8gVE9ETyBwb3NzaWJsZSBmdXR1cmUgXCJwcmV2aWV3XCIgbGluayBoZXJlXG5cdFx0fTtcblxuXHRcdHN3aXRjaCAodmFsdWUpIHtcblx0XHRcdGNhc2UgJ2FmZCc6IHtcblx0XHRcdFx0d29ya19hcmVhID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mhtemdouWtmOW6n+iuqOiuuicsICfpoIHpnaLlrZjlu6LoqI7oq5YnKSxcblx0XHRcdFx0XHRuYW1lOiAnd29ya19hcmVhJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+S9v+eUqCZsdDtub2luY2x1ZGUmZ3Q75YyF6KO55qih5p2/Jyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdub2luY2x1ZGUnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbm9pbmNsdWRlJyxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDpcblx0XHRcdFx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAxMCAmJlxuXHRcdFx0XHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpICE9PSAnU2NyaWJ1bnRvJyxcblx0XHRcdFx0XHRcdFx0Ly8gVGVtcGxhdGUgbmFtZXNwYWNlXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5L2/5YW25LiN5Lya5Zyo6KKr5YyF5ZCr5pe25Ye6546w44CCJywgJ+S9v+WFtuS4jeacg+WcqOiiq+WMheWQq+aZguWHuuePvuOAgicpLFxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZDogbXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgPT09ICdTY3JpYnVudG8nLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgYWZkX2NhdGVnb3J5ID0gd29ya19hcmVhLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ3hmZGNhdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCJ5oup5o+Q5Yig57G75Z6L77yaJywgJ+mBuOaTh+aPkOWIqumhnuWIpe+8micpLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnhmZC5jYWxsYmFjay5jaGFuZ2VfYWZkX2NhdGVnb3J5LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0bGV0IGFmZF9jYXQgPSAnZGVsZXRlJztcblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignYWZkRGVmYXVsdENhdGVnb3J5JykgPT09ICdzYW1lJykge1xuXHRcdFx0XHRcdGlmIChsb2NhbFN0b3JhZ2UuVHdpbmtsZV9hZmRDYXRlZ29yeSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRsb2NhbFN0b3JhZ2UuVHdpbmtsZV9hZmRDYXRlZ29yeSA9ICdkZWxldGUnO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhZmRfY2F0ID0gbG9jYWxTdG9yYWdlLlR3aW5rbGVfYWZkQ2F0ZWdvcnk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGFmZF9jYXRlZ29yeS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2RlbGV0ZScsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdkZWxldGUnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZCI5bm2JywgJ+WQiOS9tScpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbWVyZ2UnLFxuXHRcdFx0XHRcdHNlbGVjdGVkOiBhZmRfY2F0ID09PSAnbWVyZ2UnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignRndkQ3NkVG9YZmQnKSkge1xuXHRcdFx0XHRcdGFmZF9jYXRlZ29yeS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfovazkuqToh6rlv6vpgJ/liKDpmaTlgJnpgIknLCAn6L2J5Lqk6Ieq5b+r6YCf5Yiq6Zmk5YCZ6YG4JyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2Z3ZGNzZCcsXG5cdFx0XHRcdFx0XHRzZWxlY3RlZDogYWZkX2NhdCA9PT0gJ2Z3ZGNzZCcsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YWZkX2NhdGVnb3J5LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZmFtZScsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdmYW1lJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFmZF9jYXRlZ29yeS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aJuemHj+Wwj+Wwj+S9nOWTgeaPkOWIoCcsICfmibnmrKHlsI/lsI/kvZzlk4Hmj5DliKonKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3N1YnN0dWInLFxuXHRcdFx0XHRcdHNlbGVjdGVkOiBhZmRfY2F0ID09PSAnc3Vic3R1YicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhZmRfY2F0ZWdvcnkuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdiYXRjaCcsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGFmZF9jYXQgPT09ICdiYXRjaCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdG5hbWU6ICdtZXJnZWludG8nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WQiOW5tuWIsO+8micsICflkIjkvbXliLDvvJonKSxcblx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcHBlbmRSZWFzb25Cb3goYWZkX2NhdCk7XG5cdFx0XHRcdHdvcmtfYXJlYS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0bmFtZTogJ2Z3ZGNzZHJlYXNvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L2s5Lqk55CG55Sx77yaJywgJ+i9ieS6pOeQhueUse+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6Xkvb/nlKh3aWtpdGV4dO+8jFR3aW5rbGXlsIboh6rliqjkuLrmgqjliqDlhaXnrb7lkI3jgIInLFxuXHRcdFx0XHRcdFx0J+aCqOWPr+S7peS9v+eUqHdpa2l0ZXh077yMVHdpbmtsZeWwh+iHquWLleeCuuaCqOWKoOWFpeewveWQjeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHdvcmtfYXJlYSA9IHdvcmtfYXJlYS5yZW5kZXIoKTtcblx0XHRcdFx0b2xkX2FyZWEucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQod29ya19hcmVhLCBvbGRfYXJlYSk7XG5cdFx0XHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdFx0Zm9ybS54ZmRjYXQuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgJ2ZmZCc6XG5cdFx0XHRcdHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlofku7blrZjlup/orqjorronLCAn5qqU5qGI5a2Y5bui6KiO6KuWJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhcHBlbmRSZWFzb25Cb3goJ2ZmZCcpO1xuXHRcdFx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHdvcmtfYXJlYSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmnKrlrprkuYknLCAn5pyq5a6a576pJyksXG5cdFx0XHRcdFx0bmFtZTogJ3dvcmtfYXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR3b3JrX2FyZWEgPSB3b3JrX2FyZWEucmVuZGVyKCk7XG5cdFx0XHRcdG9sZF9hcmVhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHdvcmtfYXJlYSwgb2xkX2FyZWEpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Ly8gUmV0dXJuIHRvIGNoZWNrZWQgc3RhdGUgd2hlbiBzd2l0Y2hpbmdcblx0XHRmb3JtLm5vdGlmeS5jaGVja2VkID0gdHJ1ZTtcblx0XHRmb3JtLm5vdGlmeS5kaXNhYmxlZCA9IGZhbHNlO1xuXHR9O1xuXHRUd2lua2xlLnhmZC5jYWxsYmFjay5jaGFuZ2VfYWZkX2NhdGVnb3J5ID0gKGUpID0+IHtcblx0XHRzd2l0Y2ggKGUudGFyZ2V0LnZhbHVlKSB7XG5cdFx0XHRjYXNlICdtZXJnZSc6XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubWVyZ2VpbnRvLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5md2Rjc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucHJldmlvdXNFbGVtZW50U2libGluZy5pbm5lckhUTUwgPSB3aW5kb3cud2dVTFMoJ+WQiOW5tuWIsO+8micsICflkIjkvbXliLDvvJonKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdmd2Rjc2QnOlxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wYXJlbnRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnaGlkZGVuJyk7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0uZndkY3NkcmVhc29uLnBhcmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucHJldmlvdXNFbGVtZW50U2libGluZy5pbm5lckhUTUwgPSAn5o+Q5Lqk5Lq677yaJztcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS54ZmRyZWFzb24udmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoXG5cdFx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RlbGV0ZS1yZWFzb24nKS50ZXh0Q29udGVudFxuXHRcdFx0XHQpLnJlcGxhY2UoL1xcKy9nLCAnICcpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2ZhbWUnOlxuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1lcmdlaW50by5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLmZ3ZGNzZHJlYXNvbi5wYXJlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnhmZHJlYXNvbi52YWx1ZSA9IFR3aW5rbGUuZ2V0UHJlZignYWZkRmFtZURlZmF1bHRSZWFzb24nKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5md2Rjc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS54ZmRyZWFzb24udmFsdWUgPSBUd2lua2xlLmdldFByZWYoJ2FmZFN1YnN0dWJEZWZhdWx0UmVhc29uJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tZXJnZWludG8ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5md2Rjc2RyZWFzb24ucGFyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHR9XG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignYWZkRGVmYXVsdENhdGVnb3J5JykgPT09ICdzYW1lJykge1xuXHRcdFx0bG9jYWxTdG9yYWdlLlR3aW5rbGVfYWZkQ2F0ZWdvcnkgPSBlLnRhcmdldC52YWx1ZTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrcyA9IHtcblx0XHRhZmQ6IHtcblx0XHRcdG1haW46ICh0YWdnaW5nX3BhZ2UpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gdGFnZ2luZ19wYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuYWZkLnRhZ2dpbmdBcnRpY2xlKHRhZ2dpbmdfcGFnZSk7XG5cdFx0XHRcdC8vIEFkZGluZyBkaXNjdXNzaW9uXG5cdFx0XHRcdGNvbnN0IGRpc2N1c3Npb25fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXorqjorrrliLDlvZPml6XliJfooagnLCAn5Yqg5YWl6KiO6KuW5Yiw55W25pel5YiX6KGoJylcblx0XHRcdFx0KTtcblx0XHRcdFx0ZGlzY3Vzc2lvbl9wYWdlLnNldEZvbGxvd1JlZGlyZWN0KHRydWUpO1xuXHRcdFx0XHRkaXNjdXNzaW9uX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdGRpc2N1c3Npb25fcGFnZS5sb2FkKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZmQudG9kYXlzTGlzdCk7XG5cdFx0XHRcdC8vIE5vdGlmaWNhdGlvbiB0byBmaXJzdCBjb250cmlidXRvclxuXHRcdFx0XHRpZiAocGFyYW1zLm5vdGlmeSkge1xuXHRcdFx0XHRcdC8vIERpc2FsbG93IHdhcm5pbmcgeW91cnNlbGZcblx0XHRcdFx0XHRpZiAocGFyYW1zLmNyZWF0b3IgPT09IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSkge1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICF77yIJywgJ+mAmuefpemggemdouW7uueri+iAhe+8iCcpICsgcGFyYW1zLmNyZWF0b3J977yJYCxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmgqjliJvlu7rkuobor6XpobXvvIzot7Pov4fpgJrnn6UnLCAn5oKo5bu656uL5LqG6Kmy6aCB77yM6Lez6YGO6YCa55+lJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRwYXJhbXMuY3JlYXRvciA9IG51bGw7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtwYXJhbXMuY3JlYXRvcn1gO1xuXHRcdFx0XHRcdFx0Y29uc3QgdXNlcnRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0dGFsa1BhZ2VOYW1lLFxuXHRcdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhe+8iCcsICfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvIgnKSArIHBhcmFtcy5jcmVhdG9yfe+8iWBcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRjb25zdCBub3RpZnl0ZXh0ID0gJ1xcbnt7J1xuXHRcdFx0XHRcdFx0XHQuY29uY2F0KCdzdWJzdDonKVxuXHRcdFx0XHRcdFx0XHQuY29uY2F0KGBBRkROb3RlfCR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19LS1+fmAsICd+ficpO1xuXHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEFwcGVuZFRleHQobm90aWZ5dGV4dCk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYOmAmuefpe+8mumhtemdoltbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV3lrZjlup/orqjorrrmj5DlkI1gKTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3hmZFdhdGNoVXNlcicpKTtcblx0XHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGFkZCB0aGlzIG5vbWluYXRpb24gdG8gdGhlIHVzZXIncyB1c2Vyc3BhY2UgbG9nLCBpZiB0aGUgdXNlciBoYXMgZW5hYmxlZCBpdFxuXHRcdFx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFkZFRvTG9nKHBhcmFtcywgcGFyYW1zLmNyZWF0b3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBvciwgaWYgbm90IG5vdGlmeWluZywgYWRkIHRoaXMgbm9taW5hdGlvbiB0byB0aGUgdXNlcidzIHVzZXJzcGFjZSBsb2cgd2l0aG91dCB0aGUgaW5pdGlhbCBjb250cmlidXRvcidzIG5hbWVcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZGRUb0xvZyhwYXJhbXMsIG51bGwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0dGFnZ2luZ0FydGljbGU6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdGxldCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRsZXQgdGFnID0gYHt7dmZkfCR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQocGFyYW1zLnhmZHJlYXNvbil9YDtcblx0XHRcdFx0aWYgKE1vcmViaXRzLmlzUGFnZVJlZGlyZWN0KCkpIHtcblx0XHRcdFx0XHR0YWcgKz0gJ3xyJztcblx0XHRcdFx0fVxuXHRcdFx0XHR0YWcgKz0gJ3xkYXRlPXt7Jy5jb25jYXQoJ3N1YnN0OicsICcjdGltZTpZL20vZH19fX0nKTtcblx0XHRcdFx0aWYgKHBhcmFtcy5ub2luY2x1ZGUpIHtcblx0XHRcdFx0XHR0YWcgPSBgPG5vaW5jbHVkZT4ke3RhZ308L25vaW5jbHVkZT5gO1xuXHRcdFx0XHRcdC8vIOWPquacieihqOagvOmcgOimgeWNleeLrOWKoOWbnui9pu+8jOWFtuS7luaDheWGteWKoOWbnui9puS8muegtOWdj+aooeadv+OAglxuXHRcdFx0XHRcdGlmICh0ZXh0LmluZGV4T2YoJ3t8JykgPT09IDApIHtcblx0XHRcdFx0XHRcdHRhZyArPSAnXFxuJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFnICs9ICdcXG4nO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIFRoZW4sIHRlc3QgaWYgdGhlcmUgYXJlIHNwZWVkeSBkZWxldGlvbi1yZWxhdGVkIHRlbXBsYXRlcyBvbiB0aGUgYXJ0aWNsZS5cblx0XHRcdFx0Y29uc3QgdGV4dE5vU2QgPSB0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L1xce1xce1xccyooZGIoLVxcdyopP3xkfGRlbGV0ZXwoPzpoYW5nfGhvbGQpWy0gXT9vbilcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2dpLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9TZCAmJlxuXHRcdFx0XHRcdGNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuaJvuWIsOW/q+mAn+WIoOmZpOaooeadv++8jOimgeenu+mZpOWQl++8nycsICflnKjpoIHpnaLkuIrmib7liLDlv6vpgJ/liKrpmaTmqKHmnb/vvIzopoHnp7vpmaTll47vvJ8nKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGV4dCA9IHRleHROb1NkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHROb05vdE1hbmRhcmluID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdC9cXHtcXHtcXHMqKE5vdE1hbmRhcmlufE5vdGNoaW5lc2V86Z2e5Lit5paHfOmdnuePvuS7o+a8ouiqnnzpnZ7njrDku6PmsYnor6186Z2e54++5Luj5qiZ5rqW5ryi6KqefOmdnueOsOS7o+agh+WHhuaxieivrSlcXHMqKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqL2dpLFxuXHRcdFx0XHRcdCcnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9Ob3RNYW5kYXJpbiAmJlxuXHRcdFx0XHRcdGNvbmZpcm0oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCflnKjpobXpnaLkuIrmib7liLDpnZ7njrDku6PmoIflh4bmsYnor63mqKHmnb/vvIzopoHnp7vpmaTlkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHQn5Zyo6aCB6Z2i5LiK5om+5Yiw6Z2e54++5Luj5qiZ5rqW5ryi6Kqe5qih5p2/77yM6KaB56e76Zmk5ZeO77yfJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGV4dCA9IHRleHROb05vdE1hbmRhcmluO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHROb0FmYyA9IHRleHQucmVwbGFjZSgve3tcXHMqQUZDIHN1Ym1pc3Npb25cXHMqXFx8XFxzKlxcfFtefV0qP319XFxzKi9naSwgJycpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0dGV4dCAhPT0gdGV4dE5vQWZjICYmXG5cdFx0XHRcdFx0Y29uZmlybSh3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuaJvuWIsEFGQ+aPkOS6pOaooeadv++8jOimgeenu+mZpOWQl++8nycsICflnKjpoIHpnaLkuIrmib7liLBBRkPmj5DkuqTmqKHmnb/vvIzopoHnp7vpmaTll47vvJ8nKSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGV4dCA9IHRleHROb0FmYztcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBNYXJrIHRoZSBwYWdlIGFzIHBhdHJvbGxlZCwgaWYgd2FudGVkXG5cdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ21hcmtYZmRQYWdlc0FzUGF0cm9sbGVkJykpIHtcblx0XHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEluc2VydCB0YWcgYWZ0ZXIgc2hvcnQgZGVzY3JpcHRpb24gb3IgYW55IGhhdG5vdGVzXG5cdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UodGV4dCk7XG5cdFx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyh0YWcsIFR3aW5rbGUuaGF0bm90ZVJlZ2V4KS5nZXRUZXh0KCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfpobXpnaLlrZjlup/orqjorrrvvJpbWycsICfpoIHpnaLlrZjlu6LoqI7oq5bvvJpbWycpICsgcGFyYW1zLmxvZ3BhZ2V9IyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd4ZmRXYXRjaFBhZ2UnKSk7XG5cdFx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0fSxcblx0XHRcdHRvZGF5c0xpc3Q6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdGxldCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRsZXQgdHlwZSA9ICcnO1xuXHRcdFx0XHRsZXQgdG8gPSAnJztcblx0XHRcdFx0c3dpdGNoIChwYXJhbXMueGZkY2F0KSB7XG5cdFx0XHRcdFx0Y2FzZSAnZndkY3NkJzpcblx0XHRcdFx0XHRjYXNlICdtZXJnZSc6XG5cdFx0XHRcdFx0XHR0byA9IHBhcmFtcy5tZXJnZWludG87XG5cdFx0XHRcdFx0LyogRmFsbCB0aHJvdWdoICovXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHR5cGUgPSBwYXJhbXMueGZkY2F0O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IGFwcGVuZCA9IHRydWU7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgJ2ZhbWUnOlxuXHRcdFx0XHRcdGNhc2UgJ3N1YnN0dWInOlxuXHRcdFx0XHRcdGNhc2UgJ2JhdGNoJzoge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29tbWVudFRleHQgPSBgPCEtLSBUd2lua2xlOiBVc2VyOiR7bXcuY29uZmlnLmdldChcblx0XHRcdFx0XHRcdFx0J3dnVXNlck5hbWUnXG5cdFx0XHRcdFx0XHQpfSDnmoQgJHt0eXBlfSDmj5DliKDmj5LlhaXngrnvvIzor7fli7/mm7TmlLnmiJbnp7vpmaTmraTooYzvvIzpmaTpnZ7kuI3lho3kuo7mraTpobXpnaLmj5DliKAgLS0+YDtcblx0XHRcdFx0XHRcdGxldCBuZXdUZXh0ID0gYD09PVtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dPT09YDtcblx0XHRcdFx0XHRcdGlmICh0eXBlID09PSAnZmFtZScpIHtcblx0XHRcdFx0XHRcdFx0bmV3VGV4dCArPSBgXFxue3tGaW5kc291cmNlc3wke01vcmViaXRzLnBhZ2VOYW1lTm9ybX19fWA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAodGV4dC5pbmNsdWRlcyhjb21tZW50VGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShjb21tZW50VGV4dCwgYCR7bmV3VGV4dH1cXG5cXG4ke2NvbW1lbnRUZXh0fWApO1xuXHRcdFx0XHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0XHRcdFx0XHRhcHBlbmQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNhZmVzdWJzdCA9ICdzYWZlc3Vic3QnO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhcHBlbmRUZXh0ID0gYFxcbnt7JHtzYWZlc3Vic3R9JHtgOlNhZmVBZmRIZWFkfX1cXG4ke1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGZhbWU6ICc9PSAzMOWkqeWQjuS7jeaMguaciXt7dGx8bm90YWJpbGl0eX195qih5p2/55qE5p2h55uuID09XFxuPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IHNtYWxsZXI7XCI+77yI5bey5oyCW1tUZW1wbGF0ZTpub3RhYmlsaXR5fOS4jeespuaUtuW9leagh+WHhuaooeadv11dMzDlpKnvvIk8L3NwYW4+Jyxcblx0XHRcdFx0XHRcdFx0XHRcdHN1YnN0dWI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCc9PSAzMOWkqeWQjuS7jeaMguaciXt7dGx8c3Vic3R1Yn195qih5p2/55qE5p2h55uuID09XFxuPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IHNtYWxsZXI7XCI+77yI5bey5oyCW1tUZW1wbGF0ZTpzdWJzdHVifOWwj+Wwj+adoeebruaooeadv11dMzDlpKnvvIk8L3NwYW4+Jyxcblx0XHRcdFx0XHRcdFx0XHRcdGJhdGNoOiAnPT0g5om56YeP5o+Q5YigID09Jyxcblx0XHRcdFx0XHRcdFx0XHR9W3R5cGVdXG5cdFx0XHRcdFx0XHRcdH1cXG4ke25ld1RleHR9XFxuXFxuJHtjb21tZW50VGV4dH1cXG4tLS0tXFxuOuW7uuiuru+8muWIoOmZpOWJjei/sOmhtemdou+8m+eQhueUse+8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQoXG5cdFx0XHRcdFx0XHRcdFx0cGFyYW1zLnhmZHJlYXNvblxuXHRcdFx0XHRcdFx0XHQpfVxcbuaPkOaKpeS7peS4iiR7XG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmFtZTogJzx1PuS4jeespuWQiOaUtuW9leagh+WHhjwvdT7mnaHnm64nLFxuXHRcdFx0XHRcdFx0XHRcdFx0c3Vic3R1YjogJzx1PumVv+W6pui/h+efrTwvdT7mnaHnm64nLFxuXHRcdFx0XHRcdFx0XHRcdFx0YmF0Y2g6ICfpobXpnaInLFxuXHRcdFx0XHRcdFx0XHRcdH1bdHlwZV1cblx0XHRcdFx0XHRcdFx0feeahOaxgumXu+e8luiAheWPiuaXtumXtO+8mjxiciBpZD1cIm5vLW5ldy10aXRsZVwiPn5+YC5jb25jYXQoJ35+Jyl9YDtcblx0XHRcdFx0XHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KGFwcGVuZFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRwYWdlb2JqLnNldEFwcGVuZFRleHQoXG5cdFx0XHRcdFx0XHRcdCdcXG57eycuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRcdFx0XHRcdGBEUkl0ZW18VHlwZT0ke3R5cGV9fERSYXJ0aWNsZXM9JHtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybVxuXHRcdFx0XHRcdFx0XHRcdH18UmVhc29uPSR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQocGFyYW1zLnhmZHJlYXNvbil9JHtcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5md2Rjc2RyZWFzb24udHJpbSgpID09PSAnJyA/ICcnIDogYDxicj5cXG7ovazkuqTnkIbnlLHvvJoke3BhcmFtcy5md2Rjc2RyZWFzb259YFxuXHRcdFx0XHRcdFx0XHRcdH18VG89JHt0b319fX5+YC5jb25jYXQoJ35+Jylcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hEaXNjdXNzaW9uJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0aWYgKGFwcGVuZCkge1xuXHRcdFx0XHRcdHBhZ2VvYmouYXBwZW5kKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSA9IG51bGw7XG5cdFx0XHR9LFxuXHRcdFx0bG9va3VwQ3JlYXRpb246ICh0YXJnZXRfcGFnZSkgPT4ge1xuXHRcdFx0XHR0YXJnZXRfcGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHRhcmdldF9wYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRwYXJhbXMuY3JlYXRvciA9IHRhcmdldF9wYWdlLmdldENyZWF0b3IoKTtcblx0XHRcdFx0Ly8gVGFnZ2luZyBwYWdlXG5cdFx0XHRcdGNvbnN0IHRhZ2dpbmdfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5a2Y5bqf6K6o6K665qih5p2/5Yiw6aG16Z2iJywgJ+WKoOWFpeWtmOW7ouiojuirluaooeadv+WIsOmggemdoicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdChmYWxzZSk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0dGFnZ2luZ19wYWdlLmxvYWQoVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmFmZC50cnlUYWdnaW5nKTtcblx0XHRcdH0sXG5cdFx0XHR0cnlUYWdnaW5nOiAodGFnZ2luZ19wYWdlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN0YXRlbGVtID0gdGFnZ2luZ19wYWdlLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0Ly8gZGVmYXVsdHMgdG8gL2RvYyBmb3IgbHVhIG1vZHVsZXMsIHdoaWNoIG1heSBub3QgZXhpc3Rcblx0XHRcdFx0aWYgKCF0YWdnaW5nX3BhZ2UuZXhpc3RzKCkpIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+mhtemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIoOmZpCcsICfpoIHpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKrpmaQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHQgPSB0YWdnaW5nX3BhZ2UuZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgeGZkID0gLyg/Olxce1xceyhbcnNhaWZ0Y212XWZkfG1kMXxwcm9wb3NlZCBkZWxldGlvbilbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR4ZmQgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz5qih5p2/e3snLCAn5Yiq6Zmk55u46Zec5qih5p2/e3snKSArXG5cdFx0XHRcdFx0XHRcdHhmZFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7kuo7pobXpnaLkuK3vvIzmgqjmmK/lkKbku43mg7Pnu6fnu63mj5DmiqXvvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+e5vOe6jOaPkOWgse+8nydcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLlt7Looqvmj5DkuqToh7PlrZjlup/orqjorrrjgIInLCAn6aCB6Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bui6KiO6KuW44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBjb3B5dmlvID0gLyg/Olxce1xce1xccyooY29weXZpbylbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChjb3B5dmlvKSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLkuK3lt7LmnInokZfkvZzmnYPpqozor4HmqKHmnb/jgIInLCAn6aCB6Z2i5Lit5bey5pyJ6JGX5L2c5qyK6amX6K2J5qih5p2/44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuYWZkLm1haW4odGFnZ2luZ19wYWdlKTtcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRmZmQ6IHtcblx0XHRcdG1haW46ICh0YWdnaW5nX3BhZ2UpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gdGFnZ2luZ19wYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuZmZkLnRhZ2dpbmdJbWFnZSh0YWdnaW5nX3BhZ2UpO1xuXHRcdFx0XHQvLyBBZGRpbmcgZGlzY3Vzc2lvblxuXHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXorqjorrrliLDlvZPml6XliJfooagnLCAn5Yqg5YWl6KiO6KuW5Yiw55W25pel5YiX6KGoJylcblx0XHRcdFx0KTtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5mZmQudG9kYXlzTGlzdCk7XG5cdFx0XHRcdC8vIE5vdGlmaWNhdGlvbiB0byBmaXJzdCBjb250cmlidXRvclxuXHRcdFx0XHRpZiAocGFyYW1zLm5vdGlmeSkge1xuXHRcdFx0XHRcdC8vIERpc2FsbG93IHdhcm5pbmcgeW91cnNlbGZcblx0XHRcdFx0XHRpZiAocGFyYW1zLmNyZWF0b3IgPT09IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSkge1xuXHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6YCa55+l6aG16Z2i5Yib5bu66ICF77yIJywgJ+mAmuefpemggemdouW7uueri+iAhe+8iCcpICsgcGFyYW1zLmNyZWF0b3J977yJYCxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmgqjliJvlu7rkuobor6XpobXvvIzot7Pov4fpgJrnn6UnLCAn5oKo5bu656uL5LqG6Kmy6aCB77yM6Lez6YGO6YCa55+lJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtwYXJhbXMuY3JlYXRvcn1gO1xuXHRcdFx0XHRcdGNvbnN0IHVzZXJ0YWxrcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHR0YWxrUGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpemhtemdouWIm+W7uuiAhe+8iCcsICfpgJrnn6XpoIHpnaLlu7rnq4vogIXvvIgnKSArIHBhcmFtcy5jcmVhdG9yfe+8iWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGNvbnN0IG5vdGlmeXRleHQgPSAnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYGlkd3xGaWxlOiR7bXcuY29uZmlnLmdldCgnd2dUaXRsZScpfX19YCwgJy0tfn4nLCAnfn4nKTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYOmAmuefpe+8muaWh+S7tltbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV3lrZjlup/orqjorrrmj5DlkI1gKTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3hmZFdhdGNoVXNlcicpKTtcblx0XHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRcdHVzZXJ0YWxrcGFnZS5hcHBlbmQoKTtcblx0XHRcdFx0XHQvLyBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZywgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgaXRcblx0XHRcdFx0XHRpZiAocGFyYW1zLmxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0XHRcdFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZGRUb0xvZyhwYXJhbXMsIHBhcmFtcy5jcmVhdG9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gb3IsIGlmIG5vdCBub3RpZnlpbmcsIGFkZCB0aGlzIG5vbWluYXRpb24gdG8gdGhlIHVzZXIncyB1c2Vyc3BhY2UgbG9nIHdpdGhvdXQgdGhlIGluaXRpYWwgY29udHJpYnV0b3IncyBuYW1lXG5cdFx0XHRcdH0gZWxzZSBpZiAocGFyYW1zLmxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuYWRkVG9Mb2cocGFyYW1zLCBudWxsKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHRhZ2dpbmdJbWFnZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dChcblx0XHRcdFx0XHRge3tpZmR8JHtNb3JlYml0cy5zdHJpbmcuZm9ybWF0UmVhc29uVGV4dChwYXJhbXMueGZkcmVhc29uKX18ZGF0ZT17e2AuY29uY2F0KFxuXHRcdFx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdFx0XHRgI3RpbWU6Y319fX1cXG4ke3RleHR9YFxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+aWh+S7tuWtmOW6n+iuqOiuuu+8mltbJywgJ+aqlOahiOWtmOW7ouiojuirlu+8mltbJykgKyBwYXJhbXMubG9ncGFnZX0jJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3hmZFdhdGNoUGFnZScpKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7IC8vIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIGZvciBhIGZpbGUgdG8gZXhpc3Qgd2l0aG91dCBhIGRlc2NyaXB0aW9uIHBhZ2Vcblx0XHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHR9LFxuXHRcdFx0dG9kYXlzTGlzdDogKHBhZ2VvYmopID0+IHtcblx0XHRcdFx0Ly8gY29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdFx0cGFnZW9iai5zZXRBcHBlbmRUZXh0KFxuXHRcdFx0XHRcdCdcXG57eycuY29uY2F0KFxuXHRcdFx0XHRcdFx0J3N1YnN0OicsXG5cdFx0XHRcdFx0XHRgSWZkSXRlbXxGaWxlbmFtZT0ke213LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKX18VXBsb2FkZXI9JHtcblx0XHRcdFx0XHRcdFx0cGFyYW1zLmNyZWF0b3Jcblx0XHRcdFx0XHRcdH18UmVhc29uPSR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQocGFyYW1zLnhmZHJlYXNvbil9fX0tLX5+YC5jb25jYXQoJ35+Jylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZigneGZkV2F0Y2hEaXNjdXNzaW9uJykpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdFx0cGFnZW9iai5hcHBlbmQoKCkgPT4ge1xuXHRcdFx0XHRcdFR3aW5rbGUueGZkLmN1cnJlbnRSYXRpb25hbGUgPSBudWxsOyAvLyBhbnkgZXJyb3JzIGZyb20gbm93IG9uIGRvIG5vdCBuZWVkIHRvIHByaW50IHRoZSByYXRpb25hbGUsIGFzIGl0IGlzIHNhZmVseSBzYXZlZCBvbi13aWtpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblxuXHRcdFx0bG9va3VwQ3JlYXRpb246ICh0YXJnZXRfcGFnZSkgPT4ge1xuXHRcdFx0XHR0YXJnZXRfcGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHBhcmFtcyA9IHRhcmdldF9wYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0XHRwYXJhbXMuY3JlYXRvciA9IHRhcmdldF9wYWdlLmdldENyZWF0b3IoKTtcblx0XHRcdFx0Ly8gVGFnZ2luZyBmaWxlXG5cdFx0XHRcdGNvbnN0IHRhZ2dpbmdfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5a2Y5bqf6K6o6K665qih5p2/5Yiw5paH5Lu25o+P6L+w6aG1JywgJ+WKoOWFpeWtmOW7ouiojuirluaooeadv+WIsOaqlOahiOaPj+i/sOmggScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5zZXRGb2xsb3dSZWRpcmVjdChmYWxzZSk7XG5cdFx0XHRcdHRhZ2dpbmdfcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0dGFnZ2luZ19wYWdlLmxvYWQoVHdpbmtsZS54ZmQuY2FsbGJhY2tzLmZmZC50cnlUYWdnaW5nKTtcblx0XHRcdH0sXG5cdFx0XHR0cnlUYWdnaW5nOiAodGFnZ2luZ19wYWdlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN0YXRlbGVtID0gdGFnZ2luZ19wYWdlLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0aWYgKCF0YWdnaW5nX3BhZ2UuZXhpc3RzKCkpIHtcblx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+mhtemdouS4jeWtmOWcqO+8jOWPr+iDveW3suiiq+WIoOmZpCcsICfpoIHpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKrpmaQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHQgPSB0YWdnaW5nX3BhZ2UuZ2V0UGFnZVRleHQoKTtcblx0XHRcdFx0Y29uc3QgeGZkID0gLyg/Olxce1xceyhbcnNhaWZ0Y212XWZkfG1kMXxwcm9wb3NlZCBkZWxldGlvbilbXnt9XSo/XFx9XFx9KS9pLmV4ZWModGV4dCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR4ZmQgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yig6Zmk55u45YWz5qih5p2/e3snLCAn5Yiq6Zmk55u46Zec5qih5p2/e3snKSArXG5cdFx0XHRcdFx0XHRcdHhmZFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX3lt7Looqvnva7kuo7pobXpnaLkuK3vvIzmgqjmmK/lkKbku43mg7Pnu6fnu63mj5DmiqXvvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdCd9feW3suiiq+e9ruaWvOmggemdouS4re+8jOaCqOaYr+WQpuS7jeaDs+e5vOe6jOaPkOWgse+8nydcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfpobXpnaLlt7Looqvmj5DkuqToh7PlrZjlup/orqjorrrjgIInLCAn6aCB6Z2i5bey6KKr5o+Q5Lqk6Iez5a2Y5bui6KiO6KuW44CCJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRUd2lua2xlLnhmZC5jYWxsYmFja3MuZmZkLm1haW4odGFnZ2luZ19wYWdlKTtcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRhZGRUb0xvZzogKHBhcmFtcywgaW5pdGlhbENvbnRyaWIpID0+IHtcblx0XHRcdGNvbnN0IGVkaXRzdW1tYXJ5ID1cblx0XHRcdFx0d2luZG93LndnVUxTKCforrDlvZXlr7lbWycsICfoqJjpjITlsI1bWycpICtcblx0XHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtICtcblx0XHRcdFx0d2luZG93LndnVUxTKCddXeeahOWtmOW6n+iuqOiuuuaPkOWQjScsICddXeeahOWtmOW7ouiojuirluaPkOWQjScpO1xuXHRcdFx0Y29uc3QgdXNsID0gbmV3IE1vcmViaXRzLnVzZXJzcGFjZUxvZ2dlcihUd2lua2xlLmdldFByZWYoJ3hmZExvZ1BhZ2VOYW1lJykpO1xuXHRcdFx0dXNsLmluaXRpYWxUZXh0ID0gd2luZG93LndnVUxTKFxuXHRcdFx0XHRg6L+Z5piv6K+l55So5oi35L2/55SoW1tIOlRXfFR3aW5rbGVdXeeahOaPkOWIoOaooeWdl+WBmuWHuueahFtbUVc6WEZEfOWtmOW6n+iuqOiuul1d5o+Q5ZCN5YiX6KGo44CCXFxuXFxu6Iul5oKo5LiN5YaN5oOz5L+d55WZ5q2k5pel5b+X77yM6K+35ZyoW1ske1R3aW5rbGUuZ2V0UHJlZihcblx0XHRcdFx0XHQnY29uZmlnUGFnZSdcblx0XHRcdFx0KX185Y+C5pWw6K6+572uXV3kuK3lhbPmjonvvIzlubbkvb/nlKhbW1FXOkNTRCNPMXxDU0QgTzFdXeaPkOS6pOW/q+mAn+WIoOmZpOOAgmAsXG5cdFx0XHRcdGDpgJnmmK/oqbLkvb/nlKjogIXkvb/nlKhbW0g6VFd8VHdpbmtsZV1d55qE5o+Q5Yiq5qih5aGK5YGa5Ye655qEW1tRVzpYRkR85a2Y5bui6KiO6KuWXV3mj5DlkI3liJfooajjgIJcXG5cXG7oi6XmgqjkuI3lho3mg7Pkv53nlZnmraTml6XoqozvvIzoq4vlnKhbWyR7VHdpbmtsZS5nZXRQcmVmKFxuXHRcdFx0XHRcdCdjb25maWdQYWdlJ1xuXHRcdFx0XHQpfXzlgY/lpb3oqK3lrppdXeS4remXnOaOie+8jOS4puS9v+eUqFtbUVc6Q1NEI08xfENTRCBPMV1d5o+Q5Lqk5b+r6YCf5Yiq6Zmk44CCYFxuXHRcdFx0KTtcblx0XHRcdGxldCB4ZmRDYXROYW1lO1xuXHRcdFx0c3dpdGNoIChwYXJhbXMueGZkY2F0KSB7XG5cdFx0XHRcdGNhc2UgJ2RlbGV0ZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5Yig6ZmkJywgJ+WIqumZpCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdtZXJnZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5ZCI5bm25YiwJywgJ+WQiOS9teWIsCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdmd2Rjc2QnOlxuXHRcdFx0XHRcdHhmZENhdE5hbWUgPSB3aW5kb3cud2dVTFMoJ+i9rOS6pOiHquW/q+mAn+WIoOmZpOWAmemAiScsICfovYnkuqToh6rlv6vpgJ/liKrpmaTlgJnpgbgnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZmFtZSc6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5om56YeP5YWz5rOo5bqm5o+Q5YigJywgJ+aJueasoemXnOazqOW6puaPkOWIqicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzdWJzdHViJzpcblx0XHRcdFx0XHR4ZmRDYXROYW1lID0gd2luZG93LndnVUxTKCfmibnph4/lsI/lsI/kvZzlk4Hmj5DliKAnLCAn5om55qyh5bCP5bCP5L2c5ZOB5o+Q5YiqJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2JhdGNoJzpcblx0XHRcdFx0XHR4ZmRDYXROYW1lID0gd2luZG93LndnVUxTKCfmibnph4/lhbbku5bmj5DliKAnLCAn5om55qyh5YW25LuW5o+Q5YiqJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0eGZkQ2F0TmFtZSA9IHdpbmRvdy53Z1VMUygn5paH5Lu25a2Y5bqf6K6o6K66JywgJ+aqlOahiOWtmOW7ouiojuirlicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgYSBsb2dnZWQgZmlsZSBpcyBkZWxldGVkIGJ1dCBleGlzdHMgb24gcmVtb3RlIHJlcG8sIHRoZSB3aWtpbGluayB3aWxsIGJlIGJsdWUsIHNvIHByb3ZpZGUgYSBsaW5rIHRvIHRoZSBsb2dcblx0XHRcdGxldCBhcHBlbmRUZXh0ID0gYCMgW1s6JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gO1xuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDYpIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBg77yIW3t7ZnVsbHVybDpTcGVjaWFsOkxvZ3xwYWdlPSR7bXcudXRpbC53aWtpVXJsZW5jb2RlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKVxuXHRcdFx0XHQpfX19ICR7d2luZG93LndnVUxTKCfml6Xlv5cnLCAn5pel6KqMJyl9Xe+8iWA7XG5cdFx0XHR9XG5cdFx0XHRhcHBlbmRUZXh0ICs9IGDvvJoke3hmZENhdE5hbWV9YDtcblx0XHRcdGlmIChwYXJhbXMueGZkY2F0ID09PSAnbWVyZ2UnKSB7XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gYFtbOiR7cGFyYW1zLm1lcmdlaW50b31dXWA7XG5cdFx0XHR9XG5cdFx0XHRhcHBlbmRUZXh0ICs9ICfjgIInO1xuXHRcdFx0aWYgKHBhcmFtcy54ZmRyZWFzb24pIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBgJycnJHtcblx0XHRcdFx0XHRwYXJhbXMueGZkY2F0ID09PSAnZndkY3NkJyA/IHdpbmRvdy53Z1VMUygn5Y6f5Yig6Zmk55CG5o2uJywgJ+WOn+WIqumZpOeQhuaTmicpIDogd2luZG93LndnVUxTKCfnkIbmja4nLCAn55CG5pOaJylcblx0XHRcdFx0fScnJ++8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvbkZvckxvZyhwYXJhbXMueGZkcmVhc29uKX1gO1xuXHRcdFx0XHRhcHBlbmRUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGFwcGVuZFRleHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5md2Rjc2RyZWFzb24pIHtcblx0XHRcdFx0YXBwZW5kVGV4dCArPSBgJycnJHtcblx0XHRcdFx0XHRwYXJhbXMueGZkY2F0ID09PSAnZndkY3NkJyA/IHdpbmRvdy53Z1VMUygn6L2s5Lqk55CG5o2uJywgJ+i9ieS6pOeQhuaTmicpIDogd2luZG93LndnVUxTKCfnkIbmja4nLCAn55CG5pOaJylcblx0XHRcdFx0fScnJ++8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvbkZvckxvZyhwYXJhbXMuZndkY3NkcmVhc29uKX1gO1xuXHRcdFx0XHRhcHBlbmRUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGFwcGVuZFRleHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGluaXRpYWxDb250cmliKSB7XG5cdFx0XHRcdGFwcGVuZFRleHQgKz0gYO+8m+mAmuefpXt7dXNlcnwke2luaXRpYWxDb250cmlifX19YDtcblx0XHRcdH1cblx0XHRcdGFwcGVuZFRleHQgKz0gJyB+ficuY29uY2F0KCd+ficsICd+XFxuJyk7XG5cdFx0XHR1c2wuY2hhbmdlVGFncyA9IFR3aW5rbGUuY2hhbmdlVGFncztcblx0XHRcdHVzbC5sb2coYXBwZW5kVGV4dCwgZWRpdHN1bW1hcnkpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUueGZkLmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBwYXJhbXMgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGUudGFyZ2V0KTtcblx0XHRpZiAocGFyYW1zLnhmZGNhdCA9PT0gJ21lcmdlJyAmJiBwYXJhbXMubWVyZ2VpbnRvLnRyaW0oKSA9PT0gJycpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn6K+35o+Q5L6b5ZCI5bm255uu5qCH77yBJywgJ+iri+aPkOS+m+WQiOS9teebruaome+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXhmZCcsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0VHdpbmtsZS54ZmQuY3VycmVudFJhdGlvbmFsZSA9IHBhcmFtcy54ZmRyZWFzb247XG5cdFx0TW9yZWJpdHMuc3RhdHVzLm9uRXJyb3IoVHdpbmtsZS54ZmQucHJpbnRSYXRpb25hbGUpO1xuXHRcdGlmICghcGFyYW1zLmNhdGVnb3J5KSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoJ+mUmeivrycsICfmnKrlrprkuYnnmoTliqjkvZwnKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IHRhcmdldF9wYWdlO1xuXHRcdGNvbnN0IGRhdGUgPSBuZXcgTW9yZWJpdHMuZGF0ZSgpOyAvLyBYWFg6IGF2b2lkIHVzZSBvZiBjbGllbnQgY2xvY2ssIHN0aWxsIHVzZWQgYnkgVGZELCBGZkQgYW5kIENmRFxuXHRcdHN3aXRjaCAocGFyYW1zLmNhdGVnb3J5KSB7XG5cdFx0XHRjYXNlICdhZmQnOlxuXHRcdFx0XHQvLyBBRkRcblx0XHRcdFx0cGFyYW1zLmxvZ3BhZ2UgPSBgUWl1d2VuX3RhbGs65a2Y5bqf6K6o6K66L+iusOW9lS8ke2RhdGUuZm9ybWF0KCdZWVlZL01NL0REJywgJ3V0YycpfWA7XG5cdFx0XHRcdHBhcmFtcy5sb2dub21pbmF0aW9uID1cblx0XHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ2xvZ1hmZE5vbWluYXRpb25zJykgJiZcblx0XHRcdFx0XHQhVHdpbmtsZS5nZXRQcmVmKCdub0xvZ09uWGZkTm9taW5hdGlvbicpLmluY2x1ZGVzKHBhcmFtcy54ZmRjYXQpO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFkZENoZWNrcG9pbnQoKTtcblx0XHRcdFx0Ly8gVXBkYXRpbmcgZGF0YSBmb3IgdGhlIGFjdGlvbiBjb21wbGV0ZWQgZXZlbnRcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBwYXJhbXMubG9ncGFnZTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmj5DlkI3lrozmiJDvvIzph43lrprlkJHliLDorqjorrrpobUnLFxuXHRcdFx0XHRcdCfmj5DlkI3lrozmiJDvvIzph43mlrDlsI7lkJHliLDoqI7oq5bpoIEnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdC8vIExvb2t1cCBjcmVhdGlvblxuXHRcdFx0XHR0YXJnZXRfcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W6aG16Z2i5Yib5bu65L+h5oGvJywgJ+WPluW+l+mggemdouW7uueri+izh+ioiicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhcmdldF9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dQYWdlQ29udGVudE1vZGVsJykgPT09ICd3aWtpdGV4dCcpIHtcblx0XHRcdFx0XHR0YXJnZXRfcGFnZS5zZXRMb29rdXBOb25SZWRpcmVjdENyZWF0b3IodHJ1ZSk7IC8vIExvb2sgZm9yIGF1dGhvciBvZiBmaXJzdCBub24tcmVkaXJlY3QgcmV2aXNpb25cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRhcmdldF9wYWdlLmxvb2t1cENyZWF0aW9uKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5hZmQubG9va3VwQ3JlYXRpb24pO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdmZmQnOiB7XG5cdFx0XHRcdC8vIEZGRFxuXHRcdFx0XHRwYXJhbXMubG9ncGFnZSA9IGBRaXV3ZW5fdGFsazrlrZjlup/orqjorrov6K6w5b2VLyR7ZGF0ZS5mb3JtYXQoJ1lZWVkvTU0vREQnLCAndXRjJyl9YDtcblx0XHRcdFx0cGFyYW1zLmxvZ25vbWluYXRpb24gPVxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignbG9nWGZkTm9taW5hdGlvbnMnKSAmJiAhVHdpbmtsZS5nZXRQcmVmKCdub0xvZ09uWGZkTm9taW5hdGlvbicpLmluY2x1ZGVzKCdmZmQnKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0XHRcdC8vIFVwZGF0aW5nIGRhdGEgZm9yIHRoZSBhY3Rpb24gY29tcGxldGVkIGV2ZW50XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gcGFyYW1zLmxvZ3BhZ2U7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5a6a5ZCR5Yiw6K6o6K666aG1Jyxcblx0XHRcdFx0XHQn5o+Q5ZCN5a6M5oiQ77yM6YeN5paw5bCO5ZCR5Yiw6KiO6KuW6aCBJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHQvLyBMb29rdXAgY3JlYXRpb25cblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPlumhtemdouWIm+W7uuS/oeaBrycsICflj5blvpfpoIHpnaLlu7rnq4vos4foqIonKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0TG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yKHRydWUpOyAvLyBMb29rIGZvciBhdXRob3Igb2YgZmlyc3Qgbm9uLXJlZGlyZWN0IHJldmlzaW9uXG5cdFx0XHRcdHFpdXdlbl9wYWdlLmxvb2t1cENyZWF0aW9uKFR3aW5rbGUueGZkLmNhbGxiYWNrcy5mZmQubG9va3VwQ3JlYXRpb24pO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSgndHdpbmtsZXhmZO+8muacquWumuS5ieeahOexu+WIqycsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZXhmZCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUueGZkLCAneGZkJyk7XG59KSgpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWltYWdlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWltYWdlKCkge1xuXHQvKipcblx0ICogdHdpbmtsZWltYWdlLmpzOiBJbWFnZSBDU0QgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIkRJXCIpXG5cdCAqIEFjdGl2ZSBvbjogTG9jYWwgbm9ucmVkaXJlY3QgZmlsZSBwYWdlcyAobm90IG9uIFNoYXJlKVxuXHQgKi9cblx0VHdpbmtsZS5pbWFnZSA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHQhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LXNoYXJlZHVwbG9hZCcpICYmXG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctaW1hZ2VwYWdlLXNlY3Rpb24tZmlsZWhpc3RvcnknKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCflm77mnYMnLCAn5ZyW5qyKJyksXG5cdFx0XHRcdCd0dy1kaScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5o+Q5Lqk5paH5Lu25b+r6YCf5Yig6ZmkJywgJ+aPkOS6pOaqlOahiOW/q+mAn+WIqumZpCcpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgMzMwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmlofku7blv6vpgJ/liKDpmaTlgJnpgIknLCAn5qqU5qGI5b+r6YCf5Yiq6Zmk5YCZ6YG4JykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTmlrnpkognLCAn5b+r6YCf5Yiq6Zmk5pa56YedJyksICdRVzpDU0QnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+Wbvuadg+iuvue9ricsICflnJbmrIroqK3lrponKSwgJ0g6VFcvUFJFRiNpbWFnZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyNpbWFnZScpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrnn6XkuIrkvKDogIUnLCAn6YCa55+l5LiK5YKz6ICFJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfoi6XmgqjlnKjmoIforrDlkIzkuIDnlKjmiLfnmoTlvojlpJrmlofku7bvvIzor7flj5bmtojmraTlpI3pgInmoYbku6Xpgb/lhY3lj5HpgIHov4flpJrmtojmga/jgIJDU0QgRjXmsLjov5zkuI3kvJrpgJrnn6XjgIInLFxuXHRcdFx0XHRcdFx0J+iLpeaCqOWcqOaomeiomOWQjOS4gOS9v+eUqOiAheeahOW+iOWkmuaqlOahiO+8jOiri+WPlua2iOatpOaguOWPluaWueWhiuS7pemBv+WFjeeZvOmAgemBjuWkmuioiuaBr+OAgkNTRCBGNeawuOmBoOS4jeacg+mAmuefpeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IFR3aW5rbGUuZ2V0UHJlZignbm90aWZ5VXNlck9uRGVsaScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRjb25zdCBmaWVsZCA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpnIDopoHnmoTliqjkvZwnLCAn6ZyA6KaB55qE5YuV5L2cJyksXG5cdFx0fSk7XG5cdFx0ZmllbGQuYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdyYWRpbycsXG5cdFx0XHRuYW1lOiAndHlwZScsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmmI7mmL7kvrXmnYPkuYvmlofku7bvvIhDU0QgRjHvvIknLCAn5piO6aGv5L615qyK5LmL5qqU5qGI77yIQ1NEIEYx77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBwZXJtaXNzaW9uJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5LiK5Lyg6ICF5a6j56ew5oul5pyJ77yM6ICM5Zyo5YW25LuW5p2l5rqQ5om+5Yiw55qE5paH5Lu277yM5oiW5LuO5L615p2D55qE5p2l5rqQ6I635Y+W55qE5paH5Lu244CCJyxcblx0XHRcdFx0XHRcdCfkuIrlgrPogIXlrqPnqLHmk4HmnInvvIzogIzlnKjlhbbku5bkvobmupDmib7liLDnmoTmqpTmoYjvvIzmiJblvp7kvrXmrIrnmoTkvobmupDlj5blvpfnmoTmqpTmoYjjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRcdFx0bmFtZTogJ2YxX3NvdXJjZScsXG5cdFx0XHRcdFx0XHR0eXBlOiAndGV4dGFyZWEnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L615p2D5p2l5rqQ77yaJywgJ+S+teasiuS+hua6kO+8micpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmnaXmupDkuI3mmI7vvIhDU0QgRjPvvIknLCAn5L6G5rqQ5LiN5piO77yIQ1NEIEYz77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBzb3VyY2UnLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfmnKzmlofku7blubbmnKrms6jmmI7ljp/lp4vlh7rlpIQnLCAn5pys5qqU5qGI5Lim5pyq6Ki75piO5Y6f5aeL5Ye66JmVJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmnKrnn6XokZfkvZzmnYPkv6Hmga/vvIhDU0QgRjPvvIknLCAn5pyq55+l6JGX5L2c5qyK6LOH6KiK77yIQ1NEIEYz77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubyBsaWNlbnNlJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+acrOaWh+S7tue8uuWwkeiRl+S9nOadg+S/oeaBrycsICfmnKzmqpTmoYjnvLrlsJHokZfkvZzmrIros4foqIonKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iRl+S9nOadg+aXoOazleiiq+afpeivge+8iENTRCBGM++8iScsICfokZfkvZzmrIrnhKHms5Xooqvmn6XorYnvvIhDU0QgRjPvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ25vIGxpY2Vuc2UnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5pys5paH5Lu25aOw56ew55qE6JGX5L2c5p2D5L+h5oGv5peg5rOV6KKr5p+l6K+BJywgJ+acrOaqlOahiOiBsueoseeahOiRl+S9nOasiuizh+ioiueEoeazleiiq+afpeitiScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+v6KKr5pu/5Luj55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu277yIQ1NEIEY077yJJywgJ+WPr+iiq+abv+S7o+eahOmdnuiHqueUseiRl+S9nOasiuaqlOahiO+8iENTRCBGNO+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncmVwbGFjZWFibGUgZmFpciB1c2UnLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmlofku7bku4XnlKjkuo7mj4/ov7DjgIHor4bliKvmiJbor4Torrrmlofku7bkuK3lsZXnpLrnmoTkuovnianvvIzmiJbku4XnlKjkvZzmj5Llm77vvIzkuJTmu6HotrPku6XkuIvlm5vkuKrmnaHku7bkuYvkuIDjgILoi6Xnu5nlh7rkuoblhbbku5blkIjnkIbkvb/nlKjkvp3mja7vvIzkuI3pgILnlKjmnKzmnaHjgILlpoLlr7nmlofku7bnmoTlj6/mm7/ku6PmgKflrZjlnKjkuonorq7vvIzlupTkuqTmlofku7blrZjlup/orqjorrrlpITnkIbjgILmnKzmnaHkuZ/kuI3pgILnlKjkuo7mraPlnKjmiJbmm77nu4/nlLHmlofku7blrZjlup/orqjorrrlpITnkIbov4fnmoTmlofku7bjgIInLFxuXHRcdFx0XHRcdFx0J+aqlOahiOWDheeUqOaWvOaPj+i/sOOAgei+qOitmOaIluipleirluaqlOahiOS4reWxleekuueahOS6i+eJqe+8jOaIluWDheeUqOS9nOaPkuWclu+8jOS4lOa7v+i2s+S7peS4i+Wbm+WAi+aineS7tuS5i+S4gOOAguiLpee1puWHuuS6huWFtuS7luWQiOeQhuS9v+eUqOS+neaTmu+8jOS4jemBqeeUqOacrOaineOAguWmguWwjeaqlOahiOeahOWPr+abv+S7o+aAp+WtmOWcqOeIreitsO+8jOaHieS6pOaqlOahiOWtmOW7ouiojuirluiZleeQhuOAguacrOaineS5n+S4jemBqeeUqOaWvOato+WcqOaIluabvue2k+eUseaqlOahiOWtmOW7ouiojuirluiZleeQhumBjueahOaqlOahiOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiB7XG5cdFx0XHRcdFx0XHRuYW1lOiAnZjRfdHlwZScsXG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAgueUqOexu+Wei++8micsICfpgannlKjpoZ7liKXvvJonKSxcblx0XHRcdFx0XHRcdHN0eWxlOiAnd2lkdGg6IDg1JTsnLFxuXHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K+36YCJ5oupJywgJ+iri+mBuOaThycpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn5pyJ5YW25LuW6Ieq55Sx6JGX5L2c5p2D5paH5Lu25bGV56S655u45ZCM55qE5LqL54mpJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfmnInlhbbku5boh6rnlLHokZfkvZzmrIrmqpTmoYjlsZXnpLrnm7jlkIznmoTkuovniaknXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJzEnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfmlofku7bmj4/ov7DnmoTmmK/lnKjkuJbmiJblgYflrprlnKjkuJbkurrnianjgIHku43nhLblrZjlnKjnmoTlu7rnrZHjgIHlrqTlpJbpm5XloZHmiJbku43nhLblnKjllK7nmoTllYblk4HvvIzkuJTpooTorqHoh6rooYzmi43mkYTnmoTnhafniYfkuI3lj5fku5bkurrokZfkvZzmnYPkv53miqQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+aqlOahiOaPj+i/sOeahOaYr+WcqOS4luaIluWBh+WumuWcqOS4luS6uueJqeOAgeS7jeeEtuWtmOWcqOeahOW7uuevieOAgeWupOWklumbleWhkeaIluS7jeeEtuWcqOWUrueahOWVhuWTge+8jOS4lOmgkOioiOiHquihjOaLjeaUneeahOebuOeJh+S4jeWPl+S7luS6uuiRl+S9nOasiuS/neittydcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnMicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlofku7bkuLrlj6/oh6rooYznu5jliLbnmoTlnLDlm77miJblm77ooagnLCAn5qqU5qGI54K65Y+v6Ieq6KGM57mq6KO955qE5Zyw5ZyW5oiW5ZyW6KGoJyksXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICczJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn5paH5Lu25p2l6Ieq5ZWG5Lia5Zu+54mH5py65p6E77yI5aaCR2V0dHnvvIknLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+aqlOahiOS+huiHquWVhualreWclueJh+apn+ani++8iOWmgkdldHR577yJJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICc0Jyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5rKh5pyJ6KKr5p2h55uu5L2/55So55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu277yIQ1NEIEY177yJJyxcblx0XHRcdFx0XHRcdCfmspLmnInooqvmop3nm67kvb/nlKjnmoTpnZ7oh6rnlLHokZfkvZzmrIrmqpTmoYjvvIhDU0QgRjXvvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogJ29ycGhhbmVkIGZhaXIgdXNlJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5pys5paH5Lu25Li66Z2e6Ieq55Sx6JGX5L2c5p2D5LiU5rKh5pyJ6KKr5p2h55uu5L2/55SoJyxcblx0XHRcdFx0XHRcdCfmnKzmqpTmoYjngrrpnZ7oh6rnlLHokZfkvZzmrIrkuJTmspLmnInooqvmop3nm67kvb/nlKgnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5rKh5pyJ5aGr5YaZ5Lu75L2V5ZCI55CG5L2/55So5L6d5o2u55qE6Z2e6Ieq55Sx6JGX5L2c5p2D5paH5Lu277yIQ1NEIEY177yJJyxcblx0XHRcdFx0XHRcdCfmspLmnInloavlr6vku7vkvZXlkIjnkIbkvb/nlKjkvp3mk5rnmoTpnZ7oh6rnlLHokZfkvZzmrIrmqpTmoYjvvIhDU0QgRjXvvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR2YWx1ZTogJ25vIGZhaXIgdXNlIHJhdGlvbmFsZScsXG5cdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S4jemAgueUqOS6juacieS6ieiuruS9huWujOaVtOeahOWQiOeQhuS9v+eUqOS+neaNruOAguiLpemdnuiHqueUseiRl+S9nOadg+aWh+S7tuWPquaciemDqOWIhuadoeebrueahOS9v+eUqOS+neaNru+8jOS9huWQjOaXtuiiq+S9v+eUqOS6juacquaPkOS+m+WQiOeQhuS9v+eUqOS+neaNrueahOadoeebru+8jOWImeacrOaWuemSiOS5n+S4jemAgueUqOOAgicsXG5cdFx0XHRcdFx0XHQn5LiN6YGp55So5pa85pyJ54it6K2w5L2G5a6M5pW055qE5ZCI55CG5L2/55So5L6d5pOa44CC6Iul6Z2e6Ieq55Sx6JGX5L2c5qyK5qqU5qGI5Y+q5pyJ6YOo5YiG5qKd55uu55qE5L2/55So5L6d5pOa77yM5L2G5ZCM5pmC6KKr5L2/55So5pa85pyq5o+Q5L6b5ZCI55CG5L2/55So5L6d5pOa55qE5qKd55uu77yM5YmH5pys5pa56Yed5Lmf5LiN6YGp55So44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdC8vIFdlIG11c3QgaW5pdCB0aGUgcGFyYW1ldGVyc1xuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC50eXBlWzBdLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0fTtcblx0VHdpbmtsZS5pbWFnZS5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdGxldCB0eXBlO1xuXHRcdGxldCBub3RpZnkgPSBldmVudC50YXJnZXQubm90aWZ5LmNoZWNrZWQ7XG5cdFx0Y29uc3QgdHlwZXMgPSBldmVudC50YXJnZXQudHlwZTtcblx0XHRmb3IgKGNvbnN0IHR5cGVfIG9mIHR5cGVzKSB7XG5cdFx0XHRpZiAodHlwZV8uY2hlY2tlZCkge1xuXHRcdFx0XHR0eXBlID0gdHlwZV8udmFsdWVzO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0bGV0IGNzZGNyaXQ7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlICdubyBzb3VyY2UnOlxuXHRcdFx0XHRjc2Rjcml0ID0gJ2YzJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdubyBsaWNlbnNlJzpcblx0XHRcdFx0Y3NkY3JpdCA9ICdmMyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnb3JwaGFuZWQgZmFpciB1c2UnOlxuXHRcdFx0XHRjc2Rjcml0ID0gJ2Y1Jztcblx0XHRcdFx0bm90aWZ5ID0gZmFsc2U7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbm8gcGVybWlzc2lvbic6XG5cdFx0XHRcdGNzZGNyaXQgPSAnZjEnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ25vIGZhaXIgdXNlIHJhdGlvbmFsZSc6XG5cdFx0XHRcdGNzZGNyaXQgPSAnZjUnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlcGxhY2VhYmxlIGZhaXIgdXNlJzpcblx0XHRcdFx0Y3NkY3JpdCA9ICdmNCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdUd2lua2xlLmltYWdlLmNhbGxiYWNrLmV2YWx1YXRl77ya5pyq55+l5p2h5qy+Jyk7XG5cdFx0fVxuXHRcdGNvbnN0IGxvZ25vbWluYXRpb24gPVxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdsb2dTcGVlZHlOb21pbmF0aW9ucycpICYmXG5cdFx0XHQhVHdpbmtsZS5nZXRQcmVmKCdub0xvZ09uU3BlZWR5Tm9taW5hdGlvbicpLmluY2x1ZGVzKGNzZGNyaXQudG9Mb3dlckNhc2UoKSk7XG5cdFx0Y29uc3QgdGVtcGxhdGVuYW1lID0gdHlwZTtcblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHR0eXBlLFxuXHRcdFx0dGVtcGxhdGVuYW1lLFxuXHRcdFx0bm9ybWFsaXplZDogY3NkY3JpdCxcblx0XHRcdGxvZ25vbWluYXRpb24sXG5cdFx0fTtcblx0XHRpZiAoY3NkY3JpdCA9PT0gJ2YxJykge1xuXHRcdFx0cGFyYW1zLmYxX3NvdXJjZSA9IGV2ZW50LnRhcmdldFsndHlwZS5mMV9zb3VyY2UnXS52YWx1ZTtcblx0XHR9XG5cdFx0aWYgKGNzZGNyaXQgPT09ICdmNCcpIHtcblx0XHRcdGNvbnN0IGY0X3R5cGUgPSBldmVudC50YXJnZXRbJ3R5cGUuZjRfdHlwZSddLnZhbHVlO1xuXHRcdFx0aWYgKCFmNF90eXBlKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygnQ1NEIEY077ya6K+36YCJ5oup6YCC55So57G75Z6L44CCJywgJ0NTRCBGNO+8muiri+mBuOaTh+mBqeeUqOmhnuWIpeOAgicpLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVpbWFnZScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRwYXJhbXMuZjRfdHlwZSA9IGY0X3R5cGU7XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZXZlbnQudGFyZ2V0KTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+agh+iusOWujOaIkCcsICfmqJnoqJjlrozmiJAnKTtcblx0XHQvLyBUYWdnaW5nIGltYWdlXG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXliKDpmaTmoIforrAnLCAn5Yqg5YWl5Yiq6Zmk5qiZ6KiYJylcblx0XHQpO1xuXHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5pbWFnZS5jYWxsYmFja3MudGFnZ2luZ0ltYWdlKTtcblx0XHQvLyBOb3RpZnlpbmcgdXBsb2FkZXJcblx0XHRpZiAobm90aWZ5KSB7XG5cdFx0XHRxaXV3ZW5fcGFnZS5sb29rdXBDcmVhdGlvbihUd2lua2xlLmltYWdlLmNhbGxiYWNrcy51c2VyTm90aWZpY2F0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYWRkIHRvIENTRCBsb2cgaWYgZGVzaXJlZFxuXHRcdFx0aWYgKGxvZ25vbWluYXRpb24pIHtcblx0XHRcdFx0cGFyYW1zLmZyb21ESSA9IHRydWU7XG5cdFx0XHRcdFR3aW5rbGUuc3BlZWR5LmNhbGxiYWNrcy51c2VyLmFkZFRvTG9nKHBhcmFtcywgbnVsbCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBObyBhdXRvLW5vdGlmaWNhdGlvbiwgZGlzcGxheSB3aGF0IHdhcyBnb2luZyB0byBiZSBhZGRlZC5cblx0XHRcdGlmICh0eXBlICE9PSAnb3JwaGFuZWQgZmFpciB1c2UnKSB7XG5cdFx0XHRcdGNvbnN0IG5vdGVEYXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7XG5cdFx0XHRcdG5vdGVEYXRhLmFwcGVuZENoaWxkKFxuXHRcdFx0XHRcdGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFxuXHRcdFx0XHRcdFx0J3t7Jy5jb25jYXQoJ3N1YnN0OicsIGBVcGxvYWR2aW9ub3RpY2V8JHtNb3JlYml0cy5wYWdlTmFtZU5vcm19fX0tLX5+YCwgJ35+Jylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdCfmj5DnpLonLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFsn6L+Z5Lqb5YaF5a655bqU6LS06L+b5LiK5Lyg6ICF5a+56K+d6aG177yaJywgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSwgbm90ZURhdGFdLFxuXHRcdFx0XHRcdFx0WyfpgJnkupvlhaflrrnmh4nosrzpgLLkuIrlgrPogIXoqI7oq5bpoIHvvJonLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpLCBub3RlRGF0YV1cblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmltYWdlLmNhbGxiYWNrcyA9IHtcblx0XHR0YWdnaW5nSW1hZ2U6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRsZXQgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQvLyByZW1vdmUgdGFnIC0gZGVsZXRpb24tdGFnZ2VkIGZpbGVzIGNhbm5vdCBiZSBtb3ZlZFxuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0L1xce1xceyhtdGN8KGNvcHkgfG1vdmUgKT90byA/KHNoYXJlfGNvbW1vbnMpfG1vdmUgdG8gKHFpdXdlbiBzaGFyZXx3aWtpbWVkaWEgY29tbW9ucyl8Y29weSB0byAocWl1d2VuIHNoYXJlfHdpa2ltZWRpYSBjb21tb25zKSlbXn1dKlxcfVxcfS9naSxcblx0XHRcdFx0Jydcblx0XHRcdCk7XG5cdFx0XHQvLyBBZGRpbmcgZGlzY3Vzc2lvblxuXHRcdFx0aWYgKHBhcmFtcy50eXBlICE9PSAnb3JwaGFuZWQgZmFpciB1c2UnKSB7XG5cdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHQnUWl1d2VuX3RhbGs65a2Y5bqf6K6o6K66L+aWh+S7tuW/q+mAn+WIoOmZpOaPkOaKpScsXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfliqDlhaXlv6vpgJ/liKDpmaTorrDlvZXpobknLCAn5Yqg5YWl5b+r6YCf5Yiq6Zmk6KiY6YyE6aCFJylcblx0XHRcdFx0KTtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuaW1hZ2UuY2FsbGJhY2tzLmltYWdlTGlzdCk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgdGFnID0gJyc7XG5cdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ29ycGhhbmVkIGZhaXIgdXNlJzpcblx0XHRcdFx0XHR0YWcgPSAne3snLmNvbmNhdCgnc3Vic3Q6JywgJ29ycGhhbmVkIGZhaXIgdXNlfX1cXG4nKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbm8gcGVybWlzc2lvbic6XG5cdFx0XHRcdFx0dGFnID0gJ3t7Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHQnc3Vic3Q6Jyxcblx0XHRcdFx0XHRcdGAke3BhcmFtcy50ZW1wbGF0ZW5hbWV9L2F1dG98MT0ke3BhcmFtcy5mMV9zb3VyY2Vcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL2h0dHAvZywgJyYjMTA0O3R0cCcpXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKC9cXG4rL2csICdcXG4nKVxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgvXlxccyooW14qXSkvZ20sICcqICQxJylcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL15cXCogJC9tLCAnJyl9fX1cXG5gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmVwbGFjZWFibGUgZmFpciB1c2UnOlxuXHRcdFx0XHRcdHRhZyA9ICd7eycuY29uY2F0KCdzdWJzdDonLCBgJHtwYXJhbXMudGVtcGxhdGVuYW1lfS9hdXRvfDE9JHtwYXJhbXMuZjRfdHlwZX19fVxcbmApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHRhZyA9ICd7eycuY29uY2F0KCdzdWJzdDonLCBgJHtwYXJhbXMudGVtcGxhdGVuYW1lfS9hdXRvfX1cXG5gKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNvbnN0IHRleHROb1NkID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHQvXFx7XFx7XFxzKihkYigtXFx3Kik/fGR8ZGVsZXRlfCg/Omhhbmd8aG9sZClbLSBdP29uKVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZ2ksXG5cdFx0XHRcdCcnXG5cdFx0XHQpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHR0ZXh0ICE9PSB0ZXh0Tm9TZCAmJlxuXHRcdFx0XHRjb25maXJtKHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5Yiw5b+r6YCf5Yig6Zmk5qih5p2/77yM6KaB56e76Zmk5ZCX77yfJywgJ+WcqOmggemdouS4iuaJvuWIsOW/q+mAn+WIqumZpOaooeadv++8jOimgeenu+mZpOWXju+8nycpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRleHQgPSB0ZXh0Tm9TZDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGFnICsgdGV4dCk7XG5cdFx0XHRsZXQgZWRpdFN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+ivt+axguW/q+mAn+WIoOmZpO+8iCcsICfoq4vmsYLlv6vpgJ/liKrpmaTvvIgnKTtcblx0XHRcdGVkaXRTdW1tYXJ5ICs9IGBbW1FXOkNTRCMke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9fENTRCAke3BhcmFtcy5ub3JtYWxpemVkLnRvVXBwZXJDYXNlKCl9XV1gO1xuXHRcdFx0ZWRpdFN1bW1hcnkgKz0gJ++8iSc7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGVkaXRTdW1tYXJ5KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdkZWxpV2F0Y2hQYWdlJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHR9LFxuXHRcdHVzZXJOb3RpZmljYXRpb246IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0Y29uc3QgaW5pdGlhbENvbnRyaWIgPSBwYWdlb2JqLmdldENyZWF0b3IoKTtcblx0XHRcdC8vIGRpc2FsbG93IHdhcm5pbmcgeW91cnNlbGZcblx0XHRcdGlmIChpbml0aWFsQ29udHJpYiA9PT0gbXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpKSB7XG5cdFx0XHRcdHBhZ2VvYmpcblx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0Lndhcm4oYOaCqO+8iCR7aW5pdGlhbENvbnRyaWJ977yJJHt3aW5kb3cud2dVTFMoJ+WIm+W7uuS6huivpemhte+8jOi3s+i/h+mAmuefpScsICflu7rnq4vkuoboqbLpoIHvvIzot7PpgY7pgJrnn6UnKX1gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHRhbGtQYWdlTmFtZSA9IGBVc2VyIHRhbGs6JHtpbml0aWFsQ29udHJpYn1gO1xuXHRcdFx0XHRjb25zdCB1c2VydGFsa3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHRhbGtQYWdlTmFtZSxcblx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ+mAmuefpeS4iuS8oOiAhScsICfpgJrnn6XkuIrlgrPogIUnKX3vvIgke2luaXRpYWxDb250cmlife+8iWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3Qgbm90aWZ5dGV4dCA9ICdcXG57eycuY29uY2F0KFxuXHRcdFx0XHRcdCdzdWJzdDonLFxuXHRcdFx0XHRcdGBEaS0ke3BhcmFtcy50ZW1wbGF0ZW5hbWV9LW5vdGljZXwxPSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19LS1+fmAsXG5cdFx0XHRcdFx0J35+J1xuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChub3RpZnl0ZXh0KTtcblx0XHRcdFx0dXNlcnRhbGtwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6YCa55+l77ya5paH5Lu2W1snLCAn6YCa55+l77ya5qqU5qGIW1snKSArXG5cdFx0XHRcdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCddXeW/q+mAn+WIoOmZpOaPkOWQjScsICddXeW/q+mAn+WIqumZpOaPkOWQjScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHVzZXJ0YWxrcGFnZS5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCdkZWxpV2F0Y2hVc2VyJykpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHR1c2VydGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHR9XG5cdFx0XHQvLyBhZGQgdGhpcyBub21pbmF0aW9uIHRvIHRoZSB1c2VyJ3MgdXNlcnNwYWNlIGxvZywgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgaXRcblx0XHRcdGlmIChwYXJhbXMubG9nbm9taW5hdGlvbikge1xuXHRcdFx0XHRwYXJhbXMuZnJvbURJID0gdHJ1ZTtcblx0XHRcdFx0VHdpbmtsZS5zcGVlZHkuY2FsbGJhY2tzLnVzZXIuYWRkVG9Mb2cocGFyYW1zLCBpbml0aWFsQ29udHJpYik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRpbWFnZUxpc3Q6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Ly8gY29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQoYCR7dGV4dH1cXG4qIFtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dLS1+fmAuY29uY2F0KCd+ficpKTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYOWKoOWFpVtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmltYWdlLCAnaW1hZ2UnKTtcbn0pKCk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHthcGl9IGZyb20gJy4vYXBpJztcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlcHJvdGVjdC5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVwcm90ZWN0KCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiB0d2lua2xlcHJvdGVjdC5qczogUHJvdGVjdC9SUFAgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIlBQXCIvXCJSUFBcIilcblx0ICogQWN0aXZlIG9uOiBOb24tc3BlY2lhbCwgbm9uLU1lZGlhV2lraSBwYWdlc1xuXHQgKi9cblx0Ly8gTm90ZTogYSBsb3Qgb2YgY29kZSBpbiB0aGlzIG1vZHVsZSBpcyByZS11c2VkL2NhbGxlZCBieSBiYXRjaHByb3RlY3QuXG5cdFR3aW5rbGUucHJvdGVjdCA9ICgpID0+IHtcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA8IDAgfHwgbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gOCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLFxuXHRcdFx0d2luZG93LndnVUxTKCfkv53miqQnLCAn5L+d6K23JyksXG5cdFx0XHQndHctcnBwJyxcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wID8gd2luZG93LndnVUxTKCfkv53miqTpobXpnaInLCAn5L+d6K236aCB6Z2iJykgOiB3aW5kb3cud2dVTFMoJ+ivt+axguS/neaKpOmhtemdoicsICfoq4vmsYLkv53orbfpoIHpnaInKVxuXHRcdCk7XG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYyMCwgNTMwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUoXG5cdFx0XHRNb3JlYml0cy51c2VySXNTeXNvcFxuXHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5pa96KGM5oiW6K+35rGC5L+d5oqk6aG16Z2iJywgJ+aWveihjOaIluiri+axguS/neitt+mggemdoicpXG5cdFx0XHRcdDogd2luZG93LndnVUxTKCfor7fmsYLkv53miqTpobXpnaInLCAn6KuL5rGC5L+d6K236aCB6Z2iJylcblx0XHQpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfkv53miqTmlrnpkognLCAn5L+d6K235pa56YedJyksICdRVzpQUk9UJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfkv53miqTorr7nva4nLCAn5L+d6K236Kit5a6aJyksICdIOlRXL1BSRUYjcHJvdGVjdCcpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyNwcm90ZWN0Jyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRjb25zdCBhY3Rpb25maWVsZCA9IGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmk43kvZznsbvlnosnLCAn5pON5L2c6aGe5YilJyksXG5cdFx0fSk7XG5cdFx0aWYgKE1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRhY3Rpb25maWVsZC5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAncmFkaW8nLFxuXHRcdFx0XHRuYW1lOiAnYWN0aW9udHlwZScsXG5cdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlQWN0aW9uLFxuXHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5L+d5oqk6aG16Z2iJywgJ+S/neitt+mggemdoicpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdwcm90ZWN0Jyxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRhY3Rpb25maWVsZC5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3JhZGlvJyxcblx0XHRcdG5hbWU6ICdhY3Rpb250eXBlJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlQWN0aW9uLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2iJywgJ+iri+axguS/neitt+mggemdoicpLFxuXHRcdFx0XHRcdHZhbHVlOiAncmVxdWVzdCcsXG5cdFx0XHRcdFx0dG9vbHRpcDpcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6Iul5oKo5oOz5ZyoUVc6UkZQUOivt+axguS/neaKpOatpOmhtScsICfoi6Xmgqjmg7PlnKhRVzpSRlBQ6KuL5rGC5L+d6K235q2k6aCBJykgK1xuXHRcdFx0XHRcdFx0KE1vcmViaXRzLnVzZXJJc1N5c29wID8gJ+iAjOS4jeaYr+iHquihjOWujOaIkOOAgicgOiAn44CCJyksXG5cdFx0XHRcdFx0Y2hlY2tlZDogIU1vcmViaXRzLnVzZXJJc1N5c29wLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn55So5L+d5oqk5qih5p2/5qCH6K6w5q2k6aG1JywgJ+eUqOS/neitt+aooeadv+aomeiomOatpOmggScpLFxuXHRcdFx0XHRcdHZhbHVlOiAndGFnJyxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WPr+S7peeUqOatpOS4uumhtemdouWKoOS4iuWQiOmAgueahOS/neaKpOaooeadv+OAgicsICflj6/ku6XnlKjmraTngrrpoIHpnaLliqDkuIrlkIjpgannmoTkv53orbfmqKHmnb/jgIInKSxcblx0XHRcdFx0XHRkaXNhYmxlZDogbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSA9PT0gMCB8fCBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSA9PT0gJ1NjcmlidW50bycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqQnLCAn6aCQ6KitJyksXG5cdFx0XHRuYW1lOiAnZmllbGRfcHJlc2V0Jyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0bGFiZWw6ICcxJyxcblx0XHRcdG5hbWU6ICdmaWVsZDEnLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdmaWVsZCcsXG5cdFx0XHRsYWJlbDogJzInLFxuXHRcdFx0bmFtZTogJ2ZpZWxkMicsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZm9ybS5yZW5kZXIoKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0Ly8gV2UgbXVzdCBpbml0IHRoZSBjb250cm9sc1xuXHRcdGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdHJlc3VsdC5hY3Rpb250eXBlWzBdLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblx0XHQvLyBnZXQgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsIGFzeW5jaHJvbm91c2x5XG5cdFx0VHdpbmtsZS5wcm90ZWN0LmZldGNoUHJvdGVjdGlvbkxldmVsKCk7XG5cdH07XG5cdC8vIEN1c3RvbWl6YWJsZSBuYW1lc3BhY2UgYW5kIEZsYWdnZWRSZXZzIHNldHRpbmdzXG5cdC8vIEluIHRoZW9yeSBpdCdkIGJlIG5pY2UgdG8gaGF2ZSByZXN0cmljdGlvbmxldmVscyBkZWZpbmVkIGhlcmUsXG5cdC8vIGJ1dCB0aG9zZSBhcmUgb25seSBhdmFpbGFibGUgdmlhIGEgc2l0ZWluZm8gcXVlcnlcblx0Ly8gTGltaXQgdGVtcGxhdGUgZWRpdG9yOyBhIFR3aW5rbGUgcmVzdHJpY3Rpb24sIG5vdCBhIHNpdGUgc2V0dGluZ1xuXHRjb25zdCBpc1RlbXBsYXRlID0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMTAgfHwgbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gODI4O1xuXHQvLyBDb250YWlucyB0aGUgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsIGluIGFuIG9iamVjdFxuXHQvLyBPbmNlIGZpbGxlZCwgaXQgd2lsbCBsb29rIHNvbWV0aGluZyBsaWtlOlxuXHQvLyB7IGVkaXQ6IHsgbGV2ZWw6IFwic3lzb3BcIiwgZXhwaXJ5OiA8c29tZSBkYXRlPiwgY2FzY2FkZTogdHJ1ZSB9LCAuLi4gfVxuXHRUd2lua2xlLnByb3RlY3QuY3VycmVudFByb3RlY3Rpb25MZXZlbHMgPSB7fTtcblx0VHdpbmtsZS5wcm90ZWN0LnByZXZpb3VzUHJvdGVjdGlvbkxldmVscyA9IHt9O1xuXHRUd2lua2xlLnByb3RlY3QuZmV0Y2hQcm90ZWN0aW9uTGV2ZWwgPSAoKSA9PiB7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRpbmRleHBhZ2VpZHM6IHRydWUsXG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRsaXN0OiAnbG9nZXZlbnRzJyxcblx0XHRcdGxldHlwZTogJ3Byb3RlY3QnLFxuXHRcdFx0bGV0aXRsZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0aW5wcm9wOiAncHJvdGVjdGlvbnx3YXRjaGVkJyxcblx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdH07XG5cdFx0dm9pZCBhcGkuZ2V0KHBhcmFtcykudGhlbigocHJvdGVjdERhdGEpID0+IHtcblx0XHRcdGNvbnN0IFtwYWdlaWRdID0gcHJvdGVjdERhdGEucXVlcnkucGFnZWlkcztcblx0XHRcdGNvbnN0IHBhZ2UgPSBwcm90ZWN0RGF0YS5xdWVyeS5wYWdlc1twYWdlaWRdO1xuXHRcdFx0Y29uc3QgY3VycmVudCA9IHt9O1xuXHRcdFx0Y29uc3QgcHJldmlvdXMgPSB7fTtcblx0XHRcdC8vIFNhdmUgcmVxdWVzdGVkIHBhZ2UncyB3YXRjaGVkIHN0YXR1cyBmb3IgbGF0ZXIgaW4gY2FzZSBuZWVkZWQgd2hlbiBmaWxpbmcgcmVxdWVzdFxuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LndhdGNoZWQgPSBwYWdlLndhdGNobGlzdGV4cGlyeSB8fCBwYWdlLndhdGNoZWQgPT09ICcnO1xuXHRcdFx0Zm9yIChjb25zdCBwcm90ZWN0aW9uIG9mIHBhZ2UucHJvdGVjdGlvbikge1xuXHRcdFx0XHRpZiAocHJvdGVjdGlvbi50eXBlICE9PSAnYWZ0Jykge1xuXHRcdFx0XHRcdGN1cnJlbnRbcHJvdGVjdGlvbi50eXBlXSA9IHtcblx0XHRcdFx0XHRcdGxldmVsOiBwcm90ZWN0aW9uLmxldmVsLFxuXHRcdFx0XHRcdFx0ZXhwaXJ5OiBwcm90ZWN0aW9uLmV4cGlyeSxcblx0XHRcdFx0XHRcdGNhc2NhZGU6IHByb3RlY3Rpb24uY2FzY2FkZSA9PT0gJycsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gT25seSB1c2UgdGhlIGxvZyBleGNlcHQgdW5wcm90ZWN0XG5cdFx0XHRpZiAocHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA+PSAxICYmIHByb3RlY3REYXRhLnF1ZXJ5LmxvZ2V2ZW50c1swXS5hY3Rpb24gIT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFtUd2lua2xlLnByb3RlY3QucHJldmlvdXNQcm90ZWN0aW9uTG9nXSA9IHByb3RlY3REYXRhLnF1ZXJ5LmxvZ2V2ZW50cztcblx0XHRcdH0gZWxzZSBpZiAocHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzLmxlbmd0aCA+PSAyKSB7XG5cdFx0XHRcdFssIFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2ddID0gcHJvdGVjdERhdGEucXVlcnkubG9nZXZlbnRzO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBwcm90ZWN0aW9uIG9mIFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cucGFyYW1zLmRldGFpbHMpIHtcblx0XHRcdFx0XHRpZiAocHJvdGVjdGlvbi50eXBlICE9PSAnYWZ0Jykge1xuXHRcdFx0XHRcdFx0cHJldmlvdXNbcHJvdGVjdGlvbi50eXBlXSA9IHtcblx0XHRcdFx0XHRcdFx0bGV2ZWw6IHByb3RlY3Rpb24ubGV2ZWwsXG5cdFx0XHRcdFx0XHRcdGV4cGlyeTogcHJvdGVjdGlvbi5leHBpcnksXG5cdFx0XHRcdFx0XHRcdGNhc2NhZGU6IHByb3RlY3Rpb24uY2FzY2FkZSA9PT0gJycsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gc2hvdyB0aGUgcHJvdGVjdGlvbiBsZXZlbCBhbmQgbG9nIGluZm9cblx0XHRcdFR3aW5rbGUucHJvdGVjdC5oYXNQcm90ZWN0TG9nID0gISFwcm90ZWN0RGF0YS5xdWVyeS5sb2dldmVudHMubGVuZ3RoO1xuXHRcdFx0VHdpbmtsZS5wcm90ZWN0LmN1cnJlbnRQcm90ZWN0aW9uTGV2ZWxzID0gY3VycmVudDtcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMgPSBwcmV2aW91cztcblx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5zaG93TG9nQW5kQ3VycmVudFByb3RlY3RJbmZvKCk7XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5zaG93TG9nQW5kQ3VycmVudFByb3RlY3RJbmZvID0gKCkgPT4ge1xuXHRcdGNvbnN0IGN1cnJlbnRseVByb3RlY3RlZCA9IE9iamVjdC5rZXlzKFR3aW5rbGUucHJvdGVjdC5jdXJyZW50UHJvdGVjdGlvbkxldmVscykubGVuZ3RoICE9PSAwO1xuXHRcdGlmIChUd2lua2xlLnByb3RlY3QuaGFzUHJvdGVjdExvZyB8fCBUd2lua2xlLnByb3RlY3QuaGFzU3RhYmxlTG9nKSB7XG5cdFx0XHRjb25zdCAkbGlua01hcmt1cCA9ICQoJzxzcGFuPicpO1xuXHRcdFx0aWYgKFR3aW5rbGUucHJvdGVjdC5oYXNQcm90ZWN0TG9nKSB7XG5cdFx0XHRcdCRsaW5rTWFya3VwLmFwcGVuZChcblx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0YDxhIHJlbD1cIm5vb3BlbmVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1NwZWNpYWw6TG9nJywge1xuXHRcdFx0XHRcdFx0XHRhY3Rpb246ICd2aWV3Jyxcblx0XHRcdFx0XHRcdFx0cGFnZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAncHJvdGVjdCcsXG5cdFx0XHRcdFx0XHR9KX1cIj4ke3dpbmRvdy53Z1VMUygn5L+d5oqk5pel5b+XJywgJ+S/neitt+aXpeiqjCcpfTwvYT5gXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuaGFzU3RhYmxlTG9nID8gJCgnPHNwYW4+JykuaHRtbCgnICZidWxsOyAnKSA6IG51bGxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KCRib2R5LmZpbmQoJ2RpdltuYW1lPVwiaGFzcHJvdGVjdGxvZ1wiXSBzcGFuJylbMF0pO1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdGN1cnJlbnRseVByb3RlY3RlZFxuXHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCflhYjliY3kv53miqQnLCAn5YWI5YmN5L+d6K23Jylcblx0XHRcdFx0XHQ6IFtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraTpobXpnaLmm77lnKgnLCAn5q2k6aCB6Z2i5pu+5ZyoJyksXG5cdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0YDxiPiR7bmV3IE1vcmViaXRzLmRhdGUoVHdpbmtsZS5wcm90ZWN0LnByZXZpb3VzUHJvdGVjdGlvbkxvZy50aW1lc3RhbXApLmNhbGVuZGFyKFxuXHRcdFx0XHRcdFx0XHRcdFx0J3V0Yydcblx0XHRcdFx0XHRcdFx0XHQpfTwvYj5gXG5cdFx0XHRcdFx0XHRcdClbMF0sXG5cdFx0XHRcdFx0XHRcdGDooqske1R3aW5rbGUucHJvdGVjdC5wcmV2aW91c1Byb3RlY3Rpb25Mb2cudXNlcn0ke3dpbmRvdy53Z1VMUygn5L+d5oqkJywgJ+S/neittycpfe+8mmAsXG5cdFx0XHRcdFx0XHRcdC4uLlR3aW5rbGUucHJvdGVjdC5mb3JtYXRQcm90ZWN0aW9uRGVzY3JpcHRpb24oVHdpbmtsZS5wcm90ZWN0LnByZXZpb3VzUHJvdGVjdGlvbkxldmVscyksXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHQkbGlua01hcmt1cFswXVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoJGJvZHkuZmluZCgnZGl2W25hbWU9XCJjdXJyZW50cHJvdFwiXSBzcGFuJylbMF0pO1xuXHRcdGxldCBwcm90ZWN0aW9uTm9kZSA9IFtdO1xuXHRcdGxldCBzdGF0dXNMZXZlbCA9ICdpbmZvJztcblx0XHRwcm90ZWN0aW9uTm9kZSA9IFR3aW5rbGUucHJvdGVjdC5mb3JtYXRQcm90ZWN0aW9uRGVzY3JpcHRpb24oVHdpbmtsZS5wcm90ZWN0LmN1cnJlbnRQcm90ZWN0aW9uTGV2ZWxzKTtcblx0XHRpZiAoY3VycmVudGx5UHJvdGVjdGVkKSB7XG5cdFx0XHRzdGF0dXNMZXZlbCA9ICd3YXJuJztcblx0XHR9XG5cdFx0TW9yZWJpdHMuc3RhdHVzW3N0YXR1c0xldmVsXSh3aW5kb3cud2dVTFMoJ+W9k+WJjeS/neaKpOetiee6pycsICfnm67liY3kv53orbfnrYnntJonKSwgcHJvdGVjdGlvbk5vZGUpO1xuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlQWN0aW9uID0gKGUpID0+IHtcblx0XHRsZXQgZmllbGRfcHJlc2V0O1xuXHRcdGxldCBmaWVsZDE7XG5cdFx0bGV0IGZpZWxkMjtcblx0XHRzd2l0Y2ggKGUudGFyZ2V0LnZhbHVlcykge1xuXHRcdFx0Y2FzZSAncHJvdGVjdCc6XG5cdFx0XHRcdGZpZWxkX3ByZXNldCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqQnLCAn6aCQ6KitJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZF9wcmVzZXQuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAnY2F0ZWdvcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqem7mOiupO+8micsICfpgbjmk4fpoJDoqK3vvJonKSxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldCxcblx0XHRcdFx0XHRsaXN0OiBtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpXG5cdFx0XHRcdFx0XHQ/IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNBZG1pblxuXHRcdFx0XHRcdFx0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGQyID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdFx0XHR0eXBlOiAnZmllbGQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S/neaKpOmAiemhuScsICfkv53orbfpgbjpoIUnKSxcblx0XHRcdFx0XHRuYW1lOiAnZmllbGQyJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdG5hbWU6ICdjdXJyZW50cHJvdCcsXG5cdFx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdFx0fSk7IC8vIGhvbGRzIHRoZSBjdXJyZW50IHByb3RlY3Rpb24gbGV2ZWwsIGFzIGZpbGxlZCBvdXQgYnkgdGhlIGFzeW5jIGNhbGxiYWNrXG5cdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdG5hbWU6ICdoYXNwcm90ZWN0bG9nJyxcblx0XHRcdFx0XHRsYWJlbDogJyAnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gZm9yIGV4aXN0aW5nIHBhZ2VzXG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpKSB7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRtb2RpZnksXG5cdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv67mlLnnvJbovpHmnYPpmZAnLCAn5L+u5pS557eo6Lyv5qyK6ZmQJyksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2VkaXRtb2RpZnknLFxuXHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfoi6XmraTpobnlhbPpl63vvIznvJbovpHmnYPpmZDlsIbkuI3kvJrkv67mlLnjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+iLpeatpOmghemXnOmWie+8jOe3qOi8r+asiumZkOWwh+S4jeacg+S/ruaUueOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAnZWRpdGxldmVsJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+e8lui+keadg+mZkO+8micsICfnt6jovK/mrIrpmZDvvJonKSxcblx0XHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bGV2ZWwsXG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdC8vIEZpbHRlciBURSBvdXRzaWRlIG9mIHRlbXBsYXRlcyBhbmQgbW9kdWxlc1xuXHRcdFx0XHRcdFx0XHQobGV2ZWwpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaXNUZW1wbGF0ZSB8fCBsZXZlbC52YWx1ZSAhPT0gJ3RlbXBsYXRlZWRpdG9yJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ2VkaXRleHBpcnknLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn57uI5q2i5pe26Ze077yaJywgJ+e1guatouaZgumWk++8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCQoJ2lucHV0W25hbWU9c21hbGxdJywgJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJ2Zvcm0nKSlbMF0uY2hlY2tlZCA9XG5cdFx0XHRcdFx0XHRcdFx0ZXZlbnQudGFyZ2V0LnNlbGVjdGVkSW5kZXggPj0gNDsgLy8gMSBtb250aFxuXHRcdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdFx0Ly8gZGVmYXVsdCBleHBpcnkgc2VsZWN0aW9uICgyIGRheXMpIGlzIGNvbmRpdGlvbmFsbHkgc2V0IGluIFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXRcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGVuZ3Rocyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZW1vZGlmeSxcblx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S/ruaUueenu+WKqOadg+mZkCcsICfkv67mlLnnp7vli5XmrIrpmZAnKSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnbW92ZW1vZGlmeScsXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+iLpeatpOmhueiiq+WFs+mXre+8jOenu+WKqOadg+mZkOWwhuS4jeiiq+S/ruaUueOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Iul5q2k6aCF6KKr6Zec6ZaJ77yM56e75YuV5qyK6ZmQ5bCH5LiN6KKr5L+u5pS544CCJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdtb3ZlbGV2ZWwnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo5p2D6ZmQ77yaJywgJ+enu+WLleasiumZkO+8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLm1vdmVsZXZlbCxcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGV2ZWxzLmZpbHRlcihcblx0XHRcdFx0XHRcdFx0Ly8gQXV0b2NvbmZpcm1lZCBpcyByZXF1aXJlZCBmb3IgYSBtb3ZlLCByZWR1bmRhbnRcblx0XHRcdFx0XHRcdFx0KGxldmVsKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdGxldmVsLnZhbHVlICE9PSAnYXV0b2NvbmZpcm1lZCcgJiYgKGlzVGVtcGxhdGUgfHwgbGV2ZWwudmFsdWUgIT09ICd0ZW1wbGF0ZWVkaXRvcicpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmaWVsZDIuYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ21vdmVleHBpcnknLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn57uI5q2i5pe26Ze077yaJywgJ+e1guatouaZgumWk++8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Ly8gZGVmYXVsdCBleHBpcnkgc2VsZWN0aW9uICgyIGRheXMpIGlzIGNvbmRpdGlvbmFsbHkgc2V0IGluIFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXRcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGVuZ3Rocyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBmb3Igbm9uLWV4aXN0aW5nIHBhZ2VzXG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdjcmVhdGVsZXZlbCcsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliJvlu7rmnYPpmZDvvJonLCAn5bu656uL5qyK6ZmQ77yaJyksXG5cdFx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMuY3JlYXRlbGV2ZWwsXG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdC8vIEZpbHRlciBURSBhbHdheXMsIGFuZCBhdXRvY29uZmlybWVkIGluIG1haW5zcGFjZVxuXHRcdFx0XHRcdFx0XHQobGV2ZWwpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbGV2ZWwudmFsdWUgIT09ICd0ZW1wbGF0ZWVkaXRvcic7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdjcmVhdGVleHBpcnknLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn57uI5q2i5pe26Ze077yaJywgJ+e1guatouaZgumWk++8micpLFxuXHRcdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Ly8gZGVmYXVsdCBleHBpcnkgc2VsZWN0aW9uIChpbmRlZmluaXRlKSBpcyBjb25kaXRpb25hbGx5IHNldCBpbiBUd2lua2xlLnByb3RlY3QuY2FsbGJhY2suY2hhbmdlUHJlc2V0XG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZmllbGQyLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdjbG9zZScsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOivt+axguS/neaKpOmhtemdouS4reeahOivt+axgicsICfmqJnoqJjoq4vmsYLkv53orbfpoIHpnaLkuK3nmoToq4vmsYInKSxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMi5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0bmFtZTogJ3Byb3RlY3RSZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+eQhueUse+8iOS/neaKpOaXpeW/l++8ie+8micsICfnkIbnlLHvvIjkv53orbfml6XoqozvvInvvJonKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmICghbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSB8fCBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSA9PT0gJ1NjcmlidW50bycpIHtcblx0XHRcdFx0XHQvLyB0YWdnaW5nIGlzbid0IHJlbGV2YW50IGZvciBub24tZXhpc3Rpbmcgb3IgbW9kdWxlIHBhZ2VzXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ3RhZyc6XG5cdFx0XHRcdGZpZWxkMSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDpgInpobknLCAn5qiZ6KiY6YG46aCFJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkMScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnY3VycmVudHByb3QnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pOyAvLyBob2xkcyB0aGUgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsLCBhcyBmaWxsZWQgb3V0IGJ5IHRoZSBhc3luYyBjYWxsYmFja1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnaGFzcHJvdGVjdGxvZycsXG5cdFx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdG5hbWU6ICd0YWd0eXBlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInmi6nkv53miqTmqKHmnb/vvJonLCAn6YG45pOH5L+d6K235qih5p2/77yaJyksXG5cdFx0XHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UYWdzLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy50YWd0eXBlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZmllbGQxLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdzbWFsbCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S9v+eUqOWbvuagh++8iHNtYWxsPXllc++8iScsICfkvb/nlKjlnJbnpLrvvIhzbWFsbD15ZXPvvIknKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflsIbnu5nmqKHmnb/liqDkuIp8c21hbGw9eWVz5Y+C5pWw77yM5pi+56S65oiQ5Y+z5LiK6KeS55qE5LiA5oqK5oyC6ZSB44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5bCH57Wm5qih5p2/5Yqg5LiKfHNtYWxsPXllc+WPg+aVuO+8jOmhr+ekuuaIkOWPs+S4iuinkueahOS4gOaKiuaOm+mOluOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdub2luY2x1ZGUnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnlKgmbHQ7bm9pbmNsdWRlJmd0O+WMheijueS/neaKpOaooeadvycsICfnlKgmbHQ7bm9pbmNsdWRlJmd0O+WMheijueS/neitt+aooeadvycpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WwhuS/neaKpOaooeadv+WMheijueWcqCZsdDtub2luY2x1ZGUmZ3Q75LitJyxcblx0XHRcdFx0XHRcdFx0XHQn5bCH5L+d6K235qih5p2/5YyF6KO55ZyoJmx0O25vaW5jbHVkZSZndDvkuK0nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDEwLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3Nob3dleHBpcnknLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjmqKHmnb/mmL7npLrliLDmnJ/ml7bpl7QnLCAn5Zyo5qih5p2/6aGv56S65Yiw5pyf5pmC6ZaTJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5bCG57uZ5qih5p2/5Yqg5LiKfGV4cGlyeeWPguaVsCcsICflsIfntabmqKHmnb/liqDkuIp8ZXhwaXJ55Y+D5pW4JyksXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGhpZGRlbjogZS50YXJnZXQudmFsdWVzID09PSAndGFnJyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncmVxdWVzdCc6XG5cdFx0XHRcdGZpZWxkX3ByZXNldCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkv53miqTnsbvlnosnLCAn5L+d6K236aGe5YilJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkX3ByZXNldCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZF9wcmVzZXQuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRuYW1lOiAnY2F0ZWdvcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+exu+Wei+WSjOeQhueUse+8micsICfpoZ7liKXlkoznkIbnlLHvvJonKSxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldCxcblx0XHRcdFx0XHRsaXN0OiBtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpXG5cdFx0XHRcdFx0XHQ/IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNcblx0XHRcdFx0XHRcdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0NyZWF0ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ2ZpZWxkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgInpobknLCAn6YG46aCFJyksXG5cdFx0XHRcdFx0bmFtZTogJ2ZpZWxkMScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnY3VycmVudHByb3QnLFxuXHRcdFx0XHRcdGxhYmVsOiAnICcsXG5cdFx0XHRcdH0pOyAvLyBob2xkcyB0aGUgY3VycmVudCBwcm90ZWN0aW9uIGxldmVsLCBhcyBmaWxsZWQgb3V0IGJ5IHRoZSBhc3luYyBjYWxsYmFja1xuXHRcdFx0XHRmaWVsZDEuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRuYW1lOiAnaGFzcHJvdGVjdGxvZycsXG5cdFx0XHRcdFx0bGFiZWw6ICcgJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdG5hbWU6ICdleHBpcnknLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXtumVv++8micsICfmmYLplbfvvJonKSxcblx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAnJyxcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S4tOaXticsICfoh6jmmYInKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICd0ZW1wb3JhcnknLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICfmsLjkuYUnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2luZmluaXR5Jyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZpZWxkMS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+i/meeOqeaEj+WEv+iiq+a1t+ixmuWQg+aOieS6hu+8gScsICfpgJnnjqnmhI/lhZLooqvmtbfosZrlkIPmjonkuobvvIEnKSwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlcHJvdGVjdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0bGV0IG9sZGZpZWxkO1xuXHRcdGlmIChmaWVsZF9wcmVzZXQpIHtcblx0XHRcdFtvbGRmaWVsZF0gPSAkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF9wcmVzZXRcIl0nKTtcblx0XHRcdG9sZGZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGZpZWxkX3ByZXNldC5yZW5kZXIoKSwgb2xkZmllbGQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2ZpZWxkc2V0W25hbWU9XCJmaWVsZF9wcmVzZXRcIl0nKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXHRcdH1cblx0XHRpZiAoZmllbGQxKSB7XG5cdFx0XHRbb2xkZmllbGRdID0gJChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQxXCJdJyk7XG5cdFx0XHRvbGRmaWVsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChmaWVsZDEucmVuZGVyKCksIG9sZGZpZWxkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQxXCJdJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcblx0XHR9XG5cdFx0aWYgKGZpZWxkMikge1xuXHRcdFx0W29sZGZpZWxkXSA9ICQoZS50YXJnZXQuZm9ybSkuZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkMlwiXScpO1xuXHRcdFx0b2xkZmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZmllbGQyLnJlbmRlcigpLCBvbGRmaWVsZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCQoZS50YXJnZXQuZm9ybSkuZmluZCgnZmllbGRzZXRbbmFtZT1cImZpZWxkMlwiXScpLmNzcygnZGlzcGxheScsICdub25lJyk7XG5cdFx0fVxuXHRcdGlmIChlLnRhcmdldC52YWx1ZXMgPT09ICdwcm90ZWN0Jykge1xuXHRcdFx0Ly8gZmFrZSBhIGNoYW5nZSBldmVudCBvbiB0aGUgcHJlc2V0IGRyb3Bkb3duXG5cdFx0XHRjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblx0XHRcdGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUpO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5jYXRlZ29yeS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdFx0XHQvLyByZWR1Y2UgdmVydGljYWwgaGVpZ2h0IG9mIGRpYWxvZ1xuXHRcdFx0JChlLnRhcmdldC5mb3JtKS5maW5kKCdmaWVsZHNldFtuYW1lPVwiZmllbGQyXCJdIHNlbGVjdCcpLnBhcmVudCgpLmNzcyh7XG5cdFx0XHRcdGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuXHRcdFx0XHRtYXJnaW5SaWdodDogJzAuNWVtJyxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHQvLyByZS1hZGQgcHJvdGVjdGlvbiBsZXZlbCBhbmQgbG9nIGluZm8sIGlmIGl0J3MgYXZhaWxhYmxlXG5cdFx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLnNob3dMb2dBbmRDdXJyZW50UHJvdGVjdEluZm8oKTtcblx0fTtcblx0Ly8gTk9URTogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGJhdGNocHJvdGVjdCBhcyB3ZWxsXG5cdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzID0ge1xuXHRcdGVkaXRtb2RpZnk6IChlKSA9PiB7XG5cdFx0XHRlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC5kaXNhYmxlZCA9ICFlLnRhcmdldC5jaGVja2VkO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5lZGl0ZXhwaXJ5LmRpc2FibGVkID0gIWUudGFyZ2V0LmNoZWNrZWQgfHwgZS50YXJnZXQuZm9ybS5lZGl0bGV2ZWwudmFsdWUgPT09ICdhbGwnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5lZGl0bGV2ZWwuc3R5bGUuY29sb3IgPSBlLnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5lZGl0ZXhwaXJ5LnN0eWxlLmNvbG9yID0gZS50YXJnZXQuY2hlY2tlZCA/ICcnIDogJ3RyYW5zcGFyZW50Jztcblx0XHR9LFxuXHRcdGVkaXRsZXZlbDogKGUpID0+IHtcblx0XHRcdGUudGFyZ2V0LmZvcm0uZWRpdGV4cGlyeS5kaXNhYmxlZCA9IGUudGFyZ2V0LnZhbHVlID09PSAnYWxsJztcblx0XHR9LFxuXHRcdG1vdmVtb2RpZnk6IChlKSA9PiB7XG5cdFx0XHQvLyBzeW5jIG1vdmUgc2V0dGluZ3Mgd2l0aCBlZGl0IHNldHRpbmdzIGlmIGFwcGxpY2FibGVcblx0XHRcdGlmIChlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC5kaXNhYmxlZCAmJiAhZS50YXJnZXQuZm9ybS5lZGl0bGV2ZWwuZGlzYWJsZWQpIHtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlbGV2ZWwudmFsdWUgPSBlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC52YWx1ZTtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LnZhbHVlID0gZS50YXJnZXQuZm9ybS5lZGl0ZXhwaXJ5LnZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChlLnRhcmdldC5mb3JtLmVkaXRsZXZlbC5kaXNhYmxlZCkge1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC52YWx1ZSA9ICdzeXNvcCc7XG5cdFx0XHRcdGUudGFyZ2V0LmZvcm0ubW92ZWV4cGlyeS52YWx1ZSA9ICdpbmZpbml0eSc7XG5cdFx0XHR9XG5cdFx0XHRlLnRhcmdldC5mb3JtLm1vdmVsZXZlbC5kaXNhYmxlZCA9ICFlLnRhcmdldC5jaGVja2VkO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LmRpc2FibGVkID0gIWUudGFyZ2V0LmNoZWNrZWQgfHwgZS50YXJnZXQuZm9ybS5tb3ZlbGV2ZWwudmFsdWUgPT09ICdhbGwnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlbGV2ZWwuc3R5bGUuY29sb3IgPSBlLnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5tb3ZlZXhwaXJ5LnN0eWxlLmNvbG9yID0gZS50YXJnZXQuY2hlY2tlZCA/ICcnIDogJ3RyYW5zcGFyZW50Jztcblx0XHR9LFxuXHRcdG1vdmVsZXZlbDogKGUpID0+IHtcblx0XHRcdGUudGFyZ2V0LmZvcm0ubW92ZWV4cGlyeS5kaXNhYmxlZCA9IGUudGFyZ2V0LnZhbHVlID09PSAnYWxsJztcblx0XHR9LFxuXHRcdGNyZWF0ZWxldmVsOiAoZSkgPT4ge1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5jcmVhdGVleHBpcnkuZGlzYWJsZWQgPSBlLnRhcmdldC52YWx1ZSA9PT0gJ2FsbCc7XG5cdFx0fSxcblx0XHR0YWd0eXBlOiAoZSkgPT4ge1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5zbWFsbC5kaXNhYmxlZCA9IGUudGFyZ2V0LnZhbHVlID09PSAnbm9uZScgfHwgZS50YXJnZXQudmFsdWUgPT09ICdub29wJztcblx0XHRcdGUudGFyZ2V0LmZvcm0ubm9pbmNsdWRlLmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdub25lJyB8fCBlLnRhcmdldC52YWx1ZSA9PT0gJ25vb3AnO1xuXHRcdFx0ZS50YXJnZXQuZm9ybS5zaG93ZXhwaXJ5LmRpc2FibGVkID0gZS50YXJnZXQudmFsdWUgPT09ICdub25lJyB8fCBlLnRhcmdldC52YWx1ZSA9PT0gJ25vb3AnO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeSA9ICh0YXJnZXQpID0+IHtcblx0XHRjb25zdCBjdXN0b20gPSBwcm9tcHQoXG5cdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCfovpPlhaXoh6rlrprkuYnnu4jmraLml7bpl7TjgIJcXG7mgqjlj6/ku6Xkvb/nlKjnm7jlr7nml7bpl7TvvIzlpoLigJwxIG1pbnV0ZeKAneaIluKAnDE5IGRheXPigJ3vvIzmiJbnu53lr7nml7bpl7TigJx5eXl5bW1kZGhobW3igJ3vvIjlpoLigJwyMDA2MDIwMTE0MDXigJ3mmK8yMDA25bm0MDLmnIgwMeaXpTE077yaMDXvvIhVVEPvvInvvIknLFxuXHRcdFx0XHQn6Ly45YWl6Ieq6KiC57WC5q2i5pmC6ZaT44CCXFxu5oKo5Y+v5Lul5L2/55So55u45bCN5pmC6ZaT77yM5aaC44CMMSBtaW51dGXjgI3miJbjgIwxOSBkYXlz44CN77yM5oiW57WV5bCN5pmC6ZaT44CMeXl5eW1tZGRoaG1t44CN77yI5aaC44CMMjAwNjAyMDExNDA144CN5pivMjAwNuW5tDAy5pyIMDHml6UxNO+8mjA177yIVVRD77yJ77yJJ1xuXHRcdFx0KSxcblx0XHRcdCcnXG5cdFx0KTtcblx0XHRpZiAoY3VzdG9tKSB7XG5cdFx0XHRjb25zdCBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcblx0XHRcdG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgY3VzdG9tKTtcblx0XHRcdG9wdGlvbi50ZXh0Q29udGVudCA9IGN1c3RvbTtcblx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZChvcHRpb24pO1xuXHRcdFx0dGFyZ2V0LnZhbHVlID0gY3VzdG9tO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0YXJnZXQuc2VsZWN0ZWRJbmRleCA9IDA7XG5cdFx0fVxuXHR9O1xuXHQvLyBOT1RFOiBUaGlzIGxpc3QgaXMgdXNlZCBieSBiYXRjaHByb3RlY3QgYXMgd2VsbFxuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscyA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogJ+WFqOmDqCcsXG5cdFx0XHR2YWx1ZTogJ2FsbCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XlhYHorrjoh6rliqjnoa7orqTnlKjmiLcnLCAn5YOF5YWB6Kix6Ieq5YuV56K66KqN5L2/55So6ICFJyksXG5cdFx0XHR2YWx1ZTogJ2F1dG9jb25maXJtZWQnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LuF5qih5p2/57yW6L6R5ZGY5ZKM566h55CG5ZGYJywgJ+WDheaooeadv+e3qOi8r+WToeWSjOeuoeeQhuWToScpLFxuXHRcdFx0dmFsdWU6ICd0ZW1wbGF0ZWVkaXRvcicsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XnrqHnkIblkZgnLCAn5YOF566h55CG5ZOhJyksXG5cdFx0XHR2YWx1ZTogJ3N5c29wJyxcblx0XHRcdHNlbGVjdGVkOiB0cnVlLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LuF5YWB6K646LWE5rex55So5oi3JywgJ+WDheWFgeioseizh+a3seeUqOaIticpLFxuXHRcdFx0dmFsdWU6ICdyZXZpc2lvbnByb3RlY3RlZCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XlhYHorrjoo4HlhrPlp5TlkZgnLCAn5YOF5YWB6Kix6KOB5rG65aeU5ZOhJyksXG5cdFx0XHR2YWx1ZTogJ29mZmljaWFscHJvdGVjdGVkJyxcblx0XHR9LFxuXHRdO1xuXHQvLyBkZWZhdWx0IGV4cGlyeSBzZWxlY3Rpb24gaXMgY29uZGl0aW9uYWxseSBzZXQgaW4gVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmNoYW5nZVByZXNldFxuXHQvLyBOT1RFOiBUaGlzIGxpc3QgaXMgdXNlZCBieSBiYXRjaHByb3RlY3QgYXMgd2VsbFxuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICcx5aSpJyxcblx0XHRcdHZhbHVlOiAnMSBkYXknLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6ICcz5aSpJyxcblx0XHRcdHZhbHVlOiAnMyBkYXlzJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzHlkagnLCAnMemAsScpLFxuXHRcdFx0dmFsdWU6ICcxIHdlZWsnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMuWRqCcsICcy6YCxJyksXG5cdFx0XHR2YWx1ZTogJzIgd2Vla3MnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnMeS4quaciCcsICcx5YCL5pyIJyksXG5cdFx0XHR2YWx1ZTogJzEgbW9udGgnLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnM+S4quaciCcsICcz5YCL5pyIJyksXG5cdFx0XHR2YWx1ZTogJzMgbW9udGhzJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJzbkuKrmnIgnLCAnNuWAi+aciCcpLFxuXHRcdFx0dmFsdWU6ICc2IG1vbnRocycsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJzHlubQnLFxuXHRcdFx0dmFsdWU6ICcxIHllYXInLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyfJywgJ+eEoemZkOacnycpLFxuXHRcdFx0dmFsdWU6ICdpbmZpbml0eScsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnigKbigKYnLCAn6Ieq6KiC4oCm4oCmJyksXG5cdFx0XHR2YWx1ZTogJ2N1c3RvbScsXG5cdFx0fSxcblx0XTtcblx0VHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0FkbWluID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ino+mZpOS/neaKpCcsICfop6PpmaTkv53orbcnKSxcblx0XHRcdHZhbHVlOiAndW5wcm90ZWN0Jyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpCcsICflhajkv53orbcnKSxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W4uOinhO+8iOWFqO+8iScsICfluLjopo/vvIjlhajvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXByb3RlY3RlZCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuonorq7jgIHnvJbovpHmiJjvvIjlhajvvIknLCAn54it6K2w44CB57eo6Lyv5oiw77yI5YWo77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1kaXNwdXRlJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmqKHmnb/kv53miqQnLCAn5qih5p2/5L+d6K23JyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpq5jpo47pmanmqKHmnb/vvIjmqKHmnb/vvIknLCAn6auY6aKo6Zqq5qih5p2/77yI5qih5p2/77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC10ZW1wbGF0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2K5L+d5oqkJywgJ+WNiuS/neittycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeE77yI5Y2K77yJJywgJ+W4uOimj++8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1wcm90ZWN0ZWQnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5oyB57ut56C05Z2P77yI5Y2K77yJJywgJ+aMgee6jOegtOWjnu+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS12YW5kYWxpc20nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L+d5Y+N55Sf6ICF5Lyg6K6w5pa56ZKI77yI5Y2K77yJJywgJ+mBleWPjeeUn+iAheWCs+iomOaWuemHne+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1ibHAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YKA5YSh56C05Z2P77yI5Y2K77yJJywgJ+WCgOWEoeegtOWjnu+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1zb2NrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mrmOmjjumZqeaooeadv++8iOWNiu+8iScsICfpq5jpoqjpmqrmqKHmnb/vvIjljYrvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXNlbWktdGVtcGxhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6KKr5bCB56aB55So5oi35rul55So6K6o6K666aG177yI5Y2K77yJJywgJ+iiq+WwgeemgeS9v+eUqOiAhea/q+eUqOiojuirlumgge+8iOWNiu+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS11c2VydGFsaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo5L+d5oqkJywgJ+enu+WLleS/neittycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bi46KeE77yI56e75Yqo77yJJywgJ+W4uOimj++8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkuonorq7jgIHnp7vliqjmiJjvvIjnp7vliqjvvIknLCAn54it6K2w44CB56e75YuV5oiw77yI56e75YuV77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLWRpc3B1dGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo56C05Z2P77yI56e75Yqo77yJJywgJ+enu+WLleegtOWjnu+8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS12YW5kYWxpc20nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6auY6aOO6Zmp6aG16Z2i77yI56e75Yqo77yJJywgJ+mrmOmiqOmaqumggemdou+8iOenu+WLle+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZS1pbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF0uZmlsdGVyKFxuXHRcdChcblx0XHRcdC8vIEZpbHRlciBmb3IgdGVtcGxhdGVzXG5cdFx0XHR7bGFiZWx9XG5cdFx0KSA9PiB7XG5cdFx0XHRyZXR1cm4gaXNUZW1wbGF0ZSB8fCAobGFiZWwgIT09ICfmqKHmnb/kv53miqQnICYmIGxhYmVsICE9PSAn5qih5p2/5L+d6K23Jyk7XG5cdFx0fVxuXHQpO1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlT25seSA9IFtcblx0XHR7XG5cdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnmb3nurjkv53miqQnLCAn55m957SZ5L+d6K23JyksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfluLjop4TvvIjnmb3nurjvvIknLCAn5bi46KaP77yI55m957SZ77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1jcmVhdGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh6YeN5aSN5Yib5bu677yI55m957q477yJJywgJ+WkmuasoemHjeikh+W7uueri++8iOeZvee0me+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtY3JlYXRlLXJlcGVhdCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjIHnu63noLTlnY/vvIjnmb3nurjvvIknLCAn5oyB57qM56C05aOe77yI55m957SZ77yJJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1jcmVhdGUtdmFuZGFsaXNtJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suWwgeemgeeUqOaIt+eahOeUqOaIt+mhte+8iOeZvee6uO+8iScsICflt7LlsIHnpoHkvb/nlKjogIXnmoTkvb/nlKjogIXpoIHvvIjnmb3ntJnvvIknKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLWNyZWF0ZS11c2VycGFnZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXMgPSBbXG5cdFx0Li4uVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25UeXBlc0FkbWluLFxuXHRcdC4uLlR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5LFxuXHRdO1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblR5cGVzQ3JlYXRlID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiAn6Kej6Zmk5L+d5oqkJyxcblx0XHRcdHZhbHVlOiAndW5wcm90ZWN0Jyxcblx0XHR9LFxuXHRcdC4uLlR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uVHlwZXNDcmVhdGVPbmx5LFxuXHRdO1xuXHQvLyBOT1RJQ0U6IGtlZXAgdGhpcyBzeW5jaGVkIHdpdGggW1tNZWRpYVdpa2k6UHJvdGVjdC1kcm9wZG93bl1dXG5cdC8vIGV4cGlyeSB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0c1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblByZXNldHNJbmZvID0ge1xuXHRcdCdwcC1wcm90ZWN0ZWQnOiB7XG5cdFx0XHRlZGl0OiAnc3lzb3AnLFxuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogbnVsbCxcblx0XHR9LFxuXHRcdCdwcC1kaXNwdXRlJzoge1xuXHRcdFx0ZWRpdDogJ3N5c29wJyxcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn57yW6L6R5oiYJywgJ+e3qOi8r+aIsCcpLFxuXHRcdH0sXG5cdFx0J3BwLXRlbXBsYXRlJzoge1xuXHRcdFx0ZWRpdDogJ3RlbXBsYXRlZWRpdG9yJyxcblx0XHRcdG1vdmU6ICd0ZW1wbGF0ZWVkaXRvcicsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygnW1tRVzpIUlR86auY6aOO6Zmp5qih5p2/XV0nLCAnW1tRVzpIUlR86auY6aKo6Zqq5qih5p2/XV0nKSxcblx0XHRcdHRlbXBsYXRlOiAnbm9vcCcsXG5cdFx0fSxcblx0XHQncHAtdmFuZGFsaXNtJzoge1xuXHRcdFx0ZWRpdDogJ3N5c29wJyxcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6KKr6Ieq5Yqo56Gu6K6k55So5oi356C05Z2PJywgJ+iiq+iHquWLleeiuuiqjeS9v+eUqOiAheegtOWjnicpLFxuXHRcdH0sXG5cdFx0J3BwLXNvY2snOiB7XG5cdFx0XHRlZGl0OiAnc3lzb3AnLFxuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfmjIHnu63nmoTlgoDlhKHnoLTlnY8nLCAn5oyB57qM55qE5YKA5YSh56C05aOeJyksXG5cdFx0fSxcblx0XHQncHAtc2VtaS12YW5kYWxpc20nOiB7XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn6KKr5paw55So5oi356C05Z2PJywgJ+iiq+aWsOS9v+eUqOiAheegtOWjnicpLFxuXHRcdFx0dGVtcGxhdGU6ICdwcC12YW5kYWxpc20nLFxuXHRcdH0sXG5cdFx0J3BwLXNlbWktYmxwJzoge1xuXHRcdFx0ZWRpdDogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+aWsOeUqOaIt+i/neWPjeeUn+iAheS8oOiusOaWuemSiCcsICfmlrDkvb/nlKjogIXpgZXlj43nlJ/ogIXlgrPoqJjmlrnph50nKSxcblx0XHR9LFxuXHRcdCdwcC1zZW1pLXVzZXJ0YWxrJzoge1xuXHRcdFx0ZWRpdDogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+iiq+WwgeemgeeUqOaIt+a7peeUqOWFtuiuqOiuuumhtScsICfooqvlsIHnpoHkvb/nlKjogIXmv6vnlKjlhbboqI7oq5bpoIEnKSxcblx0XHR9LFxuXHRcdCdwcC1zZW1pLXRlbXBsYXRlJzoge1xuXHRcdFx0Ly8gcmVtb3ZlZCBmb3Igbm93XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRleHBpcnk6ICdpbmZpbml0eScsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygnW1tRVzpIUlR86auY6aOO6Zmp5qih5p2/XV0nLCAnW1tRVzpIUlR86auY6aKo6Zqq5qih5p2/XV0nKSxcblx0XHRcdHRlbXBsYXRlOiAnbm9vcCcsXG5cdFx0fSxcblx0XHQncHAtc2VtaS1zb2NrJzoge1xuXHRcdFx0ZWRpdDogJ2F1dG9jb25maXJtZWQnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+aMgee7reeahOWCgOWEoeegtOWdjycsICfmjIHnuoznmoTlgoDlhKHnoLTlo54nKSxcblx0XHRcdHRlbXBsYXRlOiAncHAtc29jaycsXG5cdFx0fSxcblx0XHQncHAtc2VtaS1wcm90ZWN0ZWQnOiB7XG5cdFx0XHRlZGl0OiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IG51bGwsXG5cdFx0XHR0ZW1wbGF0ZTogJ3BwLXByb3RlY3RlZCcsXG5cdFx0fSxcblx0XHQncHAtbW92ZSc6IHtcblx0XHRcdG1vdmU6ICdzeXNvcCcsXG5cdFx0XHRyZWFzb246IG51bGwsXG5cdFx0fSxcblx0XHQncHAtbW92ZS1kaXNwdXRlJzoge1xuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfpobXpnaLnp7vliqjmiJgnLCAn6aCB6Z2i56e75YuV5oiwJyksXG5cdFx0fSxcblx0XHQncHAtbW92ZS12YW5kYWxpc20nOiB7XG5cdFx0XHRtb3ZlOiAnc3lzb3AnLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+enu+WKqOegtOWdjycsICfnp7vli5XnoLTlo54nKSxcblx0XHR9LFxuXHRcdCdwcC1tb3ZlLWluZGVmJzoge1xuXHRcdFx0bW92ZTogJ3N5c29wJyxcblx0XHRcdGV4cGlyeTogJ2luZmluaXR5Jyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfpq5jpo47pmanpobXpnaInLCAn6auY6aKo6Zqq6aCB6Z2iJyksXG5cdFx0fSxcblx0XHR1bnByb3RlY3Q6IHtcblx0XHRcdGVkaXQ6ICdhbGwnLFxuXHRcdFx0bW92ZTogJ2FsbCcsXG5cdFx0XHRjcmVhdGU6ICdhbGwnLFxuXHRcdFx0cmVhc29uOiBudWxsLFxuXHRcdFx0dGVtcGxhdGU6ICdub25lJyxcblx0XHR9LFxuXHRcdCdwcC1jcmVhdGUnOiB7XG5cdFx0XHRjcmVhdGU6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdHJlYXNvbjogbnVsbCxcblx0XHR9LFxuXHRcdCdwcC1jcmVhdGUtcmVwZWF0Jzoge1xuXHRcdFx0Y3JlYXRlOiAnYXV0b2NvbmZpcm1lZCcsXG5cdFx0XHRyZWFzb246IHdpbmRvdy53Z1VMUygn5aSa5qyh6YeN5aSN5Yib5bu6JywgJ+WkmuasoemHjeikh+W7uueriycpLFxuXHRcdH0sXG5cdFx0J3BwLWNyZWF0ZS12YW5kYWxpc20nOiB7XG5cdFx0XHRjcmVhdGU6ICdhdXRvY29uZmlybWVkJyxcblx0XHRcdHJlYXNvbjogd2luZG93LndnVUxTKCfooqvmlrDnlKjmiLfnoLTlnY8nLCAn6KKr5paw5L2/55So6ICF56C05aOeJyksXG5cdFx0fSxcblx0XHQncHAtY3JlYXRlLXVzZXJwYWdlJzoge1xuXHRcdFx0Y3JlYXRlOiAnc3lzb3AnLFxuXHRcdFx0ZXhwaXJ5OiAnaW5maW5pdHknLFxuXHRcdFx0cmVhc29uOiB3aW5kb3cud2dVTFMoJ+iiq+awuOS5heWwgeemgeeahOeUqOaIt+mhtScsICfooqvmsLjkuYXlsIHnpoHnmoTkvb/nlKjogIXpoIHpnaInKSxcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvblRhZ3MgPSBbXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg77yI56e76Zmk546w5pyJ5qih5p2/77yJJywgJ+eEoe+8iOenu+mZpOePvuacieaooeadv++8iScpLFxuXHRcdFx0dmFsdWU6ICdub25lJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aXoO+8iOS4jeenu+mZpOeOsOacieaooeadv++8iScsICfnhKHvvIjkuI3np7vpmaTnj77mnInmqKHmnb/vvIknKSxcblx0XHRcdHZhbHVlOiAnbm9vcCcsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogJ+mAmueUqOaooeadvycsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtZGlzcHV0ZX19OiAke3dpbmRvdy53Z1VMUygn5LqJ6K6uJywgJ+eIreitsCcpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1kaXNwdXRlJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC12YW5kYWxpc219fTogJHt3aW5kb3cud2dVTFMoJ+egtOWdjycsICfnoLTlo54nKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtdmFuZGFsaXNtJyxcblx0XHRcdFx0XHRzZWxlY3RlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAne3twcC1zb2NrfX06IOWCgOWEoScsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1zb2NrJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC10ZW1wbGF0ZX19OiAke3dpbmRvdy53Z1VMUygn6auY6aOO6Zmp5qih5p2/JywgJ+mrmOmiqOmaquaooeadvycpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC10ZW1wbGF0ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtcHJvdGVjdGVkfX06ICR7d2luZG93LndnVUxTKCfluLjop4QnLCAn5bi46KaPJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLXByb3RlY3RlZCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y2K5L+d5oqk5qih5p2/JywgJ+WNiuS/neitt+aooeadvycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLXNlbWktdXNlcnRhbGt9fTogJHt3aW5kb3cud2dVTFMoJ+WwgeemgeeahOeUqOaItycsICflsIHnpoHnmoTkvb/nlKjogIUnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS11c2VydGFsaycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7cHAtc2VtaS1ibHB9fTogJHt3aW5kb3cud2dVTFMoJ+eUn+iAheS8oOiusCcsICfnlJ/ogIXlgrPoqJgnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1ibHAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLXNlbWktaW5kZWZ9fTogJHt3aW5kb3cud2dVTFMoJ+mVv+acnycsICfplbfmnJ8nKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtc2VtaS1pbmRlZicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75Yqo5L+d5oqk5qih5p2/JywgJ+enu+WLleS/neitt+aooeadvycpLFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLW1vdmUtZGlzcHV0ZX19OiAke3dpbmRvdy53Z1VMUygn5LqJ6K6uJywgJ+eIreitsCcpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdwcC1tb3ZlLWRpc3B1dGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLW1vdmUtdmFuZGFsaXNtfX06ICR7d2luZG93LndnVUxTKCfnoLTlnY8nLCAn56C05aOeJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLW1vdmUtdmFuZGFsaXNtJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3twcC1tb3ZlLWluZGVmfX06ICR7d2luZG93LndnVUxTKCfplb/mnJ8nLCAn6ZW35pyfJyl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ3BwLW1vdmUtaW5kZWYnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e3BwLW1vdmV9fTogJHt3aW5kb3cud2dVTFMoJ+W4uOinhCcsICfluLjopo8nKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAncHAtbW92ZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFjay5jaGFuZ2VQcmVzZXQgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IGFjdGlvbnR5cGVzID0gZm9ybS5hY3Rpb250eXBlO1xuXHRcdGxldCBhY3Rpb250eXBlO1xuXHRcdGZvciAoY29uc3QgYWN0aW9uX3R5cGVfdmFsdWUgb2YgYWN0aW9udHlwZXMpIHtcblx0XHRcdGlmICghYWN0aW9uX3R5cGVfdmFsdWUuY2hlY2tlZCkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGFjdGlvbnR5cGUgPSBhY3Rpb25fdHlwZV92YWx1ZS52YWx1ZXM7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKGFjdGlvbnR5cGUgPT09ICdwcm90ZWN0Jykge1xuXHRcdFx0Ly8gYWN0dWFsbHkgcHJvdGVjdGluZyB0aGUgcGFnZVxuXHRcdFx0Y29uc3QgaXRlbSA9IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uUHJlc2V0c0luZm9bZm9ybS5jYXRlZ29yeS52YWx1ZV07XG5cdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0XHRpZiAoaXRlbS5lZGl0KSB7XG5cdFx0XHRcdFx0Zm9ybS5lZGl0bW9kaWZ5LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRtb2RpZnkoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiBmb3JtLmVkaXRtb2RpZnksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5lZGl0bGV2ZWwudmFsdWUgPSBpdGVtLmVkaXQ7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMuZWRpdGxldmVsKHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5lZGl0bGV2ZWwsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9ybS5lZGl0bW9kaWZ5LmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bW9kaWZ5KHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5lZGl0bW9kaWZ5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChpdGVtLm1vdmUpIHtcblx0XHRcdFx0XHRmb3JtLm1vdmVtb2RpZnkuY2hlY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZW1vZGlmeSh7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IGZvcm0ubW92ZW1vZGlmeSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmb3JtLm1vdmVsZXZlbC52YWx1ZSA9IGl0ZW0ubW92ZTtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbGV2ZWwoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiBmb3JtLm1vdmVsZXZlbCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmb3JtLm1vdmVtb2RpZnkuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLm1vdmVtb2RpZnkoe1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiBmb3JtLm1vdmVtb2RpZnksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9ybS5lZGl0ZXhwaXJ5LnZhbHVlID0gaXRlbS5leHBpcnkgfHwgJzEgd2Vlayc7XG5cdFx0XHRcdGZvcm0ubW92ZWV4cGlyeS52YWx1ZSA9IGl0ZW0uZXhwaXJ5IHx8ICcxIHdlZWsnO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKGl0ZW0uY3JlYXRlKSB7XG5cdFx0XHRcdFx0Zm9ybS5jcmVhdGVsZXZlbC52YWx1ZSA9IGl0ZW0uY3JlYXRlO1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmNyZWF0ZWxldmVsKHtcblx0XHRcdFx0XHRcdHRhcmdldDogZm9ybS5jcmVhdGVsZXZlbCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRmb3JtLmNyZWF0ZWV4cGlyeS52YWx1ZSA9IGl0ZW0uY3JlYXRlZXhwaXJ5IHx8ICcxIHdlZWsnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcm0uY3JlYXRlZXhwaXJ5LnZhbHVlID0gaXRlbS5leHBpcnkgfHwgJzEgd2Vlayc7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZWFzb25GaWVsZCA9IGFjdGlvbnR5cGUgPT09ICdwcm90ZWN0JyA/IGZvcm0ucHJvdGVjdFJlYXNvbiA6IGZvcm0ucmVhc29uO1xuXHRcdFx0aWYgKGl0ZW0ucmVhc29uKSB7XG5cdFx0XHRcdHJlYXNvbkZpZWxkLnZhbHVlID0gaXRlbS5yZWFzb247XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZWFzb25GaWVsZC52YWx1ZSA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0Ly8gc29ydCBvdXQgdGFnZ2luZyBvcHRpb25zLCBkaXNhYmxlZCBpZiBub25leGlzdGVudCBvciBsdWFcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpICYmIG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpICE9PSAnU2NyaWJ1bnRvJykge1xuXHRcdFx0XHRpZiAoZm9ybS5jYXRlZ29yeS52YWx1ZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0XHRmb3JtLnRhZ3R5cGUudmFsdWUgPSAnbm9uZSc7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9ybS50YWd0eXBlLnZhbHVlID0gaXRlbS50ZW1wbGF0ZSA/PyBmb3JtLmNhdGVnb3J5LnZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLnRhZ3R5cGUoe1xuXHRcdFx0XHRcdHRhcmdldDogZm9ybS50YWd0eXBlLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKC90ZW1wbGF0ZS8udGVzdChmb3JtLmNhdGVnb3J5LnZhbHVlKSkge1xuXHRcdFx0XHRcdGZvcm0ubm9pbmNsdWRlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgIT09IDEwKSB7XG5cdFx0XHRcdFx0Zm9ybS5ub2luY2x1ZGUuY2hlY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChmb3JtLmNhdGVnb3J5LnZhbHVlID09PSAndW5wcm90ZWN0Jykge1xuXHRcdFx0Ly8gUlBQIHJlcXVlc3Rcblx0XHRcdGZvcm0uZXhwaXJ5LnZhbHVlID0gJyc7XG5cdFx0XHRmb3JtLmV4cGlyeS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcm0uZXhwaXJ5LnZhbHVlID0gJyc7XG5cdFx0XHRmb3JtLmV4cGlyeS5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBmb3JtID0gZS50YXJnZXQ7XG5cdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdGxldCB0YWdwYXJhbXM7XG5cdFx0aWYgKFxuXHRcdFx0aW5wdXQuYWN0aW9udHlwZSA9PT0gJ3RhZycgfHxcblx0XHRcdChpbnB1dC5hY3Rpb250eXBlID09PSAncHJvdGVjdCcgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSAhPT0gJ1NjcmlidW50bycpXG5cdFx0KSB7XG5cdFx0XHR0YWdwYXJhbXMgPSB7XG5cdFx0XHRcdHRhZzogaW5wdXQudGFndHlwZSxcblx0XHRcdFx0cmVhc29uOlxuXHRcdFx0XHRcdChpbnB1dC50YWd0eXBlID09PSAncHAtcHJvdGVjdGVkJyB8fFxuXHRcdFx0XHRcdFx0aW5wdXQudGFndHlwZSA9PT0gJ3BwLXNlbWktcHJvdGVjdGVkJyB8fFxuXHRcdFx0XHRcdFx0aW5wdXQudGFndHlwZSA9PT0gJ3BwLW1vdmUnKSAmJlxuXHRcdFx0XHRcdGlucHV0LnByb3RlY3RSZWFzb25cblx0XHRcdFx0XHRcdD8gaW5wdXQucHJvdGVjdFJlYXNvblxuXHRcdFx0XHRcdFx0OiBudWxsLFxuXHRcdFx0XHRzaG93ZXhwaXJ5OiBpbnB1dC5hY3Rpb250eXBlID09PSAncHJvdGVjdCcgPyBpbnB1dC5zaG93ZXhwaXJ5IDogbnVsbCxcblx0XHRcdFx0c21hbGw6IGlucHV0LnNtYWxsLFxuXHRcdFx0XHRub2luY2x1ZGU6IGlucHV0Lm5vaW5jbHVkZSxcblx0XHRcdH07XG5cdFx0XHRpZiAoaW5wdXQuYWN0aW9udHlwZSA9PT0gJ3Byb3RlY3QnKSB7XG5cdFx0XHRcdGlmIChpbnB1dC5lZGl0bW9kaWZ5KSB7XG5cdFx0XHRcdFx0dGFncGFyYW1zLmV4cGlyeSA9IGlucHV0LmVkaXRleHBpcnk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaW5wdXQubW92ZW1vZGlmeSkge1xuXHRcdFx0XHRcdHRhZ3BhcmFtcy5leHBpcnkgPSBpbnB1dC5tb3ZlZXhwaXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IGNsb3NlcGFyYW1zID0ge307XG5cdFx0aWYgKGlucHV0LmNsb3NlKSB7XG5cdFx0XHRpZiAoaW5wdXQuY2F0ZWdvcnkgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAndW5wcm90ZWN0Jztcblx0XHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0XHRpZiAoaW5wdXQuZWRpdG1vZGlmeSkge1xuXHRcdFx0XHRcdHN3aXRjaCAoaW5wdXQuZWRpdGxldmVsKSB7XG5cdFx0XHRcdFx0XHRjYXNlICdvZmZpY2lhbHByb3RlY3RlZCc6XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAnb2ZmaWNpYWxwcm90ZWN0ZWQnO1xuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5lZGl0ZXhwaXJ5O1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3JldmlzaW9ucHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICdyZXZpc2lvbnByb3RlY3RlZCc7XG5cdFx0XHRcdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0LmVkaXRleHBpcnk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnc3lzb3AnOlxuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ2Z1bGwnO1xuXHRcdFx0XHRcdFx0XHRjbG9zZXBhcmFtcy5leHBpcnkgPSBpbnB1dC5lZGl0ZXhwaXJ5O1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3RlbXBsYXRlZWRpdG9yJzpcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICd0ZW1wJztcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMuZXhwaXJ5ID0gaW5wdXQuZWRpdGV4cGlyeTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdhdXRvY29uZmlybWVkJzpcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMudHlwZSA9ICdzZW1pJztcblx0XHRcdFx0XHRcdFx0Y2xvc2VwYXJhbXMuZXhwaXJ5ID0gaW5wdXQuZWRpdGV4cGlyeTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHQvLyBObyBkZWZhdWx0XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdGlucHV0Lm1vdmVtb2RpZnkgJiZcblx0XHRcdFx0XHRbJ29mZmljaWFscHJvdGVjdGVkJywgJ3JldmlzaW9ucHJvdGVjdGVkJywgJ3N5c29wJywgJ3RlbXBsYXRlZWRpdG9yJ10uaW5jbHVkZXMoaW5wdXQubW92ZWxldmVsKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjbG9zZXBhcmFtcy50eXBlID0gJ21vdmUnO1xuXHRcdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0Lm1vdmVleHBpcnk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoaW5wdXQuY3JlYXRlbGV2ZWwgIT09ICdhbGwnKSB7XG5cdFx0XHRcdGNsb3NlcGFyYW1zLnR5cGUgPSAnc2FsdCc7XG5cdFx0XHRcdGNsb3NlcGFyYW1zLmV4cGlyeSA9IGlucHV0LmNyZWF0ZWV4cGlyeTtcblx0XHRcdH1cblx0XHR9XG5cdFx0c3dpdGNoIChpbnB1dC5hY3Rpb250eXBlKSB7XG5cdFx0XHRjYXNlICdwcm90ZWN0Jzoge1xuXHRcdFx0XHQvLyBwcm90ZWN0IHRoZSBwYWdlXG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+S/neaKpOWujOaIkCcsICfkv53orbflrozmiJAnKTtcblx0XHRcdFx0bGV0IHN0YXR1c0luaXRlZCA9IGZhbHNlO1xuXHRcdFx0XHRsZXQgdGhpc3BhZ2U7XG5cdFx0XHRcdGNvbnN0IGFsbERvbmUgPSAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXNwYWdlKSB7XG5cdFx0XHRcdFx0XHR0aGlzcGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0YWdwYXJhbXMpIHtcblx0XHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFja3MudGFnZ2luZ1BhZ2VJbml0aWFsKHRhZ3BhcmFtcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChjbG9zZXBhcmFtcyAmJiBjbG9zZXBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBycHBQYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0J1FpdXdlbl90YWxrOumhtemdouS/neaKpOivt+axgicsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5YWz6Zet6K+35rGCJywgJ+mXnOmWieiri+axgicpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cnBwUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0XHRcdHJwcFBhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKGNsb3NlcGFyYW1zKTtcblx0XHRcdFx0XHRcdHJwcFBhZ2UubG9hZChUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLmNsb3NlUmVxdWVzdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBwcm90ZWN0SXQgPSAobmV4dCkgPT4ge1xuXHRcdFx0XHRcdHRoaXNwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5oqk6aG16Z2iJywgJ+S/neitt+mggemdoicpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0XHRcdFx0aWYgKGlucHV0LmVkaXRtb2RpZnkpIHtcblx0XHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0RWRpdFByb3RlY3Rpb24oaW5wdXQuZWRpdGxldmVsLCBpbnB1dC5lZGl0ZXhwaXJ5KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChpbnB1dC5tb3ZlbW9kaWZ5KSB7XG5cdFx0XHRcdFx0XHRcdC8vIEVuc3VyZSBhIGxldmVsIGhhcyBhY3R1YWxseSBiZWVuIGNob3NlblxuXHRcdFx0XHRcdFx0XHRpZiAoaW5wdXQubW92ZWxldmVsKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0TW92ZVByb3RlY3Rpb24oaW5wdXQubW92ZWxldmVsLCBpbnB1dC5tb3ZlZXhwaXJ5KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOmcgOimgemAieaLqeS/neaKpOWxgue6p++8gScsICfmgqjpnIDopoHpgbjmk4fkv53orbflsaTntJrvvIEnKSwge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGFnOiAndHdpbmtsZXByb3RlY3QnLFxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hQcm90ZWN0ZWRQYWdlcycpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpc3BhZ2Uuc2V0Q3JlYXRlUHJvdGVjdGlvbihpbnB1dC5jcmVhdGVsZXZlbCwgaW5wdXQuY3JlYXRlZXhwaXJ5KTtcblx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldFdhdGNobGlzdChmYWxzZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChpbnB1dC5wcm90ZWN0UmVhc29uKSB7XG5cdFx0XHRcdFx0XHR0aGlzcGFnZS5zZXRFZGl0U3VtbWFyeShpbnB1dC5wcm90ZWN0UmVhc29uKTtcblx0XHRcdFx0XHRcdHRoaXNwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5oKo5b+F6aG76L6T5YWl5L+d5oqk55CG55Sx77yM6L+Z5bCG6KKr6K6w5b2V5Zyo5L+d5oqk5pel5b+X5Lit44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo5b+F6aCI6Ly45YWl5L+d6K2355CG55Sx77yM6YCZ5bCH6KKr6KiY6YyE5Zyo5L+d6K235pel6KqM5Lit44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVwcm90ZWN0Jyxcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFzdGF0dXNJbml0ZWQpIHtcblx0XHRcdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0XHRcdHN0YXR1c0luaXRlZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXNwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHR0aGlzcGFnZS5wcm90ZWN0KG5leHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRpZiAoaW5wdXQuZWRpdG1vZGlmeSB8fCBpbnB1dC5tb3ZlbW9kaWZ5IHx8ICFtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpKSB7XG5cdFx0XHRcdFx0cHJvdGVjdEl0KGFsbERvbmUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHQn6K+35ZGK6K+JVHdpbmtsZeimgeWBmuS7gOS5iO+8gVxcbuiLpeaCqOWPquaYr+aDs+agh+iusOivpemhte+8jOivt+mAieaLqeS4iumdoueahOKAnOeUqOS/neaKpOaooeadv+agh+iusOatpOmhteKAnemAiemhueOAgicsXG5cdFx0XHRcdFx0XHRcdCfoq4vlkYroqLRUd2lua2xl6KaB5YGa5LuA6bq877yBXFxu6Iul5oKo5Y+q5piv5oOz5qiZ6KiY6Kmy6aCB77yM6KuL6YG45pOH5LiK6Z2i55qE44CM55So5L+d6K235qih5p2/5qiZ6KiY5q2k6aCB44CN6YG46aCF44CCJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlcHJvdGVjdCcsXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgJ3RhZyc6XG5cdFx0XHRcdC8vIGFwcGx5IGEgcHJvdGVjdGlvbiB0ZW1wbGF0ZVxuXHRcdFx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLmZvbGxvd1JlZGlyZWN0ID0gZmFsc2U7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5qCH6K6w5a6M5oiQJywgJ+aomeiomOWujOaIkCcpO1xuXHRcdFx0XHRUd2lua2xlLnByb3RlY3QuY2FsbGJhY2tzLnRhZ2dpbmdQYWdlSW5pdGlhbCh0YWdwYXJhbXMpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlcXVlc3QnOiB7XG5cdFx0XHRcdC8vIGZpbGUgcmVxdWVzdCBhdCBSRlBQXG5cdFx0XHRcdGxldCB0eXBlbmFtZTtcblx0XHRcdFx0bGV0IHR5cGVyZWFzb247XG5cdFx0XHRcdHN3aXRjaCAoaW5wdXQuY2F0ZWdvcnkpIHtcblx0XHRcdFx0XHRjYXNlICdwcC1kaXNwdXRlJzpcblx0XHRcdFx0XHRjYXNlICdwcC1wcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdFx0dHlwZW5hbWUgPSB3aW5kb3cud2dVTFMoJ+WFqOS/neaKpCcsICflhajkv53orbcnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXRlbXBsYXRlJzpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCfmqKHmnb/kv53miqQnLCAn5qih5p2/5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC12YW5kYWxpc20nOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktZGlzcnVwdGl2ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS11bnNvdXJjZWQnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXVzZXJ0YWxrJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXRlbXBsYXRlJzogLy8gcmVtb3ZlZCBmb3Igbm93XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS1zb2NrJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLWJscCc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS1wcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdFx0dHlwZW5hbWUgPSB3aW5kb3cud2dVTFMoJ+WNiuS/neaKpCcsICfljYrkv53orbcnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUtZGlzcHV0ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtbW92ZS1pbmRlZic6XG5cdFx0XHRcdFx0Y2FzZSAncHAtbW92ZS12YW5kYWxpc20nOlxuXHRcdFx0XHRcdFx0dHlwZW5hbWUgPSB3aW5kb3cud2dVTFMoJ+enu+WKqOS/neaKpCcsICfnp7vli5Xkv53orbcnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLW9mZmVuc2l2ZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLWJscCc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXNhbHQnOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS11c2VycGFnZSc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXJlcGVhdCc6XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0XHR0eXBlbmFtZSA9IHdpbmRvdy53Z1VMUygn55m957q45L+d5oqkJywgJ+eZvee0meS/neittycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0LyogY2FzZSAndW5wcm90ZWN0JzogKi9cblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHR5cGVuYW1lID0gd2luZG93LndnVUxTKCfop6PpmaTkv53miqQnLCAn6Kej6Zmk5L+d6K23Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRzd2l0Y2ggKGlucHV0LmNhdGVnb3J5KSB7XG5cdFx0XHRcdFx0Y2FzZSAncHAtZGlzcHV0ZSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfkuonorq7jgIHnvJbovpHmiJgnLCAn54it6K2w44CB57eo6Lyv5oiwJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC12YW5kYWxpc20nOlxuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRjYXNlICdwcC1jcmVhdGUtdmFuZGFsaXNtJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+aMgee7reegtOWdjycsICfmjIHnuoznoLTlo54nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXRlbXBsYXRlJzpcblx0XHRcdFx0XHRjYXNlICdwcC1zZW1pLXRlbXBsYXRlJzpcblx0XHRcdFx0XHRcdC8vIHJlbW92ZWQgZm9yIG5vd1xuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn6auY6aOO6Zmp5qih5p2/JywgJ+mrmOmiqOmaquaooeadvycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtY3JlYXRlLXVzZXJwYWdlJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+iiq+awuOS5heWwgeemgeeahOeUqOaIt+mhtScsICfooqvmsLjkuYXlsIHpjpbnmoTkvb/nlKjogIXpoIHpnaInKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktdXNlcnRhbGsnOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn5bey5bCB56aB55So5oi355qE6K6o6K666aG1JywgJ+W3suWwgemOluS9v+eUqOiAheeahOiojuirlumggScpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHAtc2VtaS1zb2NrJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+WCgOWEoeegtOWdjycsICflgoDlhKHnoLTlo54nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLXNlbWktYmxwJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+i/neWPjeeUn+iAheS8oOiusOaWuemSiCcsICfpgZXlj43nlJ/ogIXlgrPoqJjmlrnph50nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLW1vdmUtZGlzcHV0ZSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfkuonorq7jgIHnp7vliqjmiJgnLCAn54it6K2w44CB56e75YuV5oiwJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlLXZhbmRhbGlzbSc6XG5cdFx0XHRcdFx0XHR0eXBlcmVhc29uID0gd2luZG93LndnVUxTKCfnp7vliqjnoLTlnY8nLCAn56e75YuV56C05aOeJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcC1tb3ZlLWluZGVmJzpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSB3aW5kb3cud2dVTFMoJ+mrmOmjjumZqemhtemdoicsICfpq5jpoqjpmqrpoIHpnaInKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BwLWNyZWF0ZS1yZXBlYXQnOlxuXHRcdFx0XHRcdFx0dHlwZXJlYXNvbiA9IHdpbmRvdy53Z1VMUygn5aSa5qyh6YeN5aSN5Yib5bu6JywgJ+WkmuasoemHjeikh+W7uueriycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHR5cGVyZWFzb24gPSAnJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCByZWFzb24gPSB0eXBlcmVhc29uO1xuXHRcdFx0XHRpZiAoaW5wdXQucmVhc29uICE9PSAnJykge1xuXHRcdFx0XHRcdGlmICh0eXBlcmVhc29uICE9PSAnJykge1xuXHRcdFx0XHRcdFx0cmVhc29uICs9ICfvvJonO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZWFzb24gKz0gaW5wdXQucmVhc29uO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChyZWFzb24gIT09ICcnKSB7XG5cdFx0XHRcdFx0cmVhc29uID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKHJlYXNvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcnBwcGFyYW1zID0ge1xuXHRcdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0XHR0eXBlbmFtZSxcblx0XHRcdFx0XHRjYXRlZ29yeTogaW5wdXQuY2F0ZWdvcnksXG5cdFx0XHRcdFx0ZXhwaXJ5OiBpbnB1dC5leHBpcnksXG5cdFx0XHRcdH07XG5cdFx0XHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdFx0XHRjb25zdCBycHBOYW1lID0gJ1FpdXdlbl90YWxrOumhtemdouS/neaKpOivt+axgic7XG5cdFx0XHRcdC8vIFVwZGF0aW5nIGRhdGEgZm9yIHRoZSBhY3Rpb24gY29tcGxldGVkIGV2ZW50XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gcnBwTmFtZTtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfmj5DlkI3lrozmiJDvvIzph43lrprlkJHliLDorqjorrrpobUnLFxuXHRcdFx0XHRcdCfmj5DlkI3lrozmiJDvvIzph43mlrDlsI7lkJHliLDoqI7oq5bpoIEnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IHJwcFBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHJwcE5hbWUsIHdpbmRvdy53Z1VMUygn6K+35rGC5L+d5oqk6aG16Z2iJywgJ+iri+axguS/neitt+mggemdoicpKTtcblx0XHRcdFx0cnBwUGFnZS5zZXRGb2xsb3dSZWRpcmVjdCh0cnVlKTtcblx0XHRcdFx0cnBwUGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocnBwcGFyYW1zKTtcblx0XHRcdFx0cnBwUGFnZS5sb2FkKFR3aW5rbGUucHJvdGVjdC5jYWxsYmFja3MuZmlsZVJlcXVlc3QpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KCd0d2lua2xlcHJvdGVjdDog5pyq55+l5pON5L2c57G75Z6LJywge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlcHJvdGVjdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5jYWxsYmFja3MgPSB7XG5cdFx0dGFnZ2luZ1BhZ2VJbml0aWFsOiAodGFncGFyYW1zKSA9PiB7XG5cdFx0XHRpZiAodGFncGFyYW1zLnRhZyA9PT0gJ25vb3AnKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bqU55So5L+d5oqk5qih5p2/JywgJ+aHieeUqOS/neitt+aooeadvycpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5rKh5LuA5LmI6KaB5YGa55qEJywgJ+aykuS7gOm6vOimgeWBmueahCcpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhZ2VOYW1lID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0Y29uc3QgcHJvdGVjdGVkUGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UocGFnZU5hbWUsIHdpbmRvdy53Z1VMUygn5qCH6K6w6aG16Z2iJywgJ+aomeiomOmggemdoicpKTtcblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHRhZ3BhcmFtcyk7XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLmxvYWQoVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcy50YWdnaW5nUGFnZSk7XG5cdFx0fSxcblx0XHRnZXRUYWdnZWRQYWdlOiAocGFyYW1zLCB0ZXh0KSA9PiB7XG5cdFx0XHRsZXQgdGFnO1xuXHRcdFx0bGV0IHN1bW1hcnk7XG5cdFx0XHRjb25zdCBvbGR0YWdfcmUgPVxuXHRcdFx0XHQvKD86PG5vaW5jbHVkZT4pP1sgXFx0XSpcXHtcXHtcXHMqKHBwLVtee31dKj98cHJvdGVjdGVkfCg/OnR8dnxzfHAtfHVzZXJ0YWxrLXZ8dXNlcnRhbGstc3xzYnxtb3ZlKXByb3RlY3RlZCg/OjIpP3xwcm90ZWN0ZWQgdGVtcGxhdGV8cHJpdmFjeSBwcm90ZWN0aW9uKVxccyo/XFx9XFx9XFxzKig/OjxcXC9ub2luY2x1ZGU+KT9cXHMqL2dpO1xuXHRcdFx0Y29uc3QgcmVfcmVzdWx0ID0gb2xkdGFnX3JlLmV4ZWModGV4dCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHJlX3Jlc3VsdCAmJlxuXHRcdFx0XHQocGFyYW1zLnRhZyA9PT0gJ25vbmUnIHx8XG5cdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i5LiK5om+5Yiwe3snLCAn5Zyo6aCB6Z2i5LiK5om+5Yiwe3snKSArXG5cdFx0XHRcdFx0XHRcdHJlX3Jlc3VsdFsxXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnfX1cXG7ljZXlh7vnoa7lrprku6Xnp7vpmaTvvIzmiJbljZXlh7vlj5bmtojku6Xlj5bmtojmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCd9fVxcbum7nuaTiueiuuWumuS7peenu+mZpO+8jOaIlum7nuaTiuWPlua2iOS7peWPlua2iOaTjeS9nOOAgidcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCkpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShvbGR0YWdfcmUsICcnKTtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMudGFnID09PSAnbm9uZScpIHtcblx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn56e76Zmk5L+d5oqk5qih5p2/JywgJ+enu+mZpOS/neitt+aooeadvycpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0KHt0YWd9ID0gcGFyYW1zKTtcblx0XHRcdFx0aWYgKHBhcmFtcy5yZWFzb24pIHtcblx0XHRcdFx0XHR0YWcgKz0gYHxyZWFzb249JHtwYXJhbXMucmVhc29ufWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHBhcmFtcy5zaG93ZXhwaXJ5ICYmIHBhcmFtcy5leHBpcnkgJiYgIU1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHBhcmFtcy5leHBpcnkpKSB7XG5cdFx0XHRcdFx0dGFnICs9ICd8ZXhwaXJ5PXt7Jy5jb25jYXQoJ3N1YnN0OicsIGAjdGltZTpjfCR7cGFyYW1zLmV4cGlyeX19fWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwYXJhbXMuc21hbGwpIHtcblx0XHRcdFx0XHR0YWcgKz0gJ3xzbWFsbD15ZXMnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgvXlxccyojKD86cmVkaXJlY3R86YeN5a6a5ZCRfOmHjeaWsOWwjuWQkSkvaS50ZXN0KHRleHQpKSB7XG5cdFx0XHRcdFx0Ly8gcmVkaXJlY3QgcGFnZVxuXHRcdFx0XHRcdC8vIE9ubHkgdGFnIGlmIG5vIHt7cmNhdCBzaGVsbH19IGlzIGZvdW5kXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0dGV4dC5tYXRjaChcblx0XHRcdFx0XHRcdFx0L3t7KD86UmVkaXJlY3RbIF9dY2F0ZWdvcnkgc2hlbGx8UmNhdFsgX11zaGVsbHxUaGlzWyBfXWlzIGEgcmVkaXJlY3R85aSa56eN57G75Z6L6YeN5a6a5ZCRfOWkmueorumhnuWei+mHjeWumuWQkXzlpJrnqK7poZ7lnovph43mlrDlsI7lkJF85aSa56eN57G75Z6L6YeN5paw5a+85ZCRfFIwfOWFtuS7lumHjeWumuWQkXxSQ1N8UmVkaXJlY3RbIF9dc2hlbGwpL2lcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdFx0XHQn5bey5a2Y5ZyoUmVkaXJlY3QgY2F0ZWdvcnkgc2hlbGwnLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeS7gOS5iOWPr+WBmueahCcsICfmspLku4Dpurzlj6/lgZrnmoQnKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdC8jKD86cmVkaXJlY3R86YeN5a6a5ZCRfOmHjeaWsOWwjuWQkSkgPyhcXFtcXFsuKj9cXF1cXF0pKC4qKS9pLFxuXHRcdFx0XHRcdFx0YCNSRURJUkVDVCAkMSQyXFxuXFxue3ske3RhZ319fWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmIChwYXJhbXMubm9pbmNsdWRlKSB7XG5cdFx0XHRcdFx0XHR0YWcgPSBgPG5vaW5jbHVkZT57eyR7dGFnfX19PC9ub2luY2x1ZGU+YDtcblx0XHRcdFx0XHRcdC8vIOWPquacieihqOagvOmcgOimgeWNleeLrOWKoOWbnui9pu+8jOWFtuS7luaDheWGteWKoOWbnui9puS8muegtOWdj+aooeadv+OAglxuXHRcdFx0XHRcdFx0aWYgKHRleHQuaW5kZXhPZigne3wnKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHR0YWcgKz0gJ1xcbic7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRhZyA9IGB7eyR7dGFnfX19XFxuYDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5pbnNlcnRBZnRlclRlbXBsYXRlcyh0YWcsIFR3aW5rbGUuaGF0bm90ZVJlZ2V4KS5nZXRUZXh0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3VtbWFyeSA9IGDliqDlhaV7eyR7cGFyYW1zLnRhZ319fWA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0ZXh0LFxuXHRcdFx0XHRzdW1tYXJ5LFxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdHRhZ2dpbmdQYWdlOiAocHJvdGVjdGVkUGFnZSkgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcHJvdGVjdGVkUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IHRleHQgPSBwcm90ZWN0ZWRQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBuZXdWZXJzaW9uID0gVHdpbmtsZS5wcm90ZWN0LmNhbGxiYWNrcy5nZXRUYWdnZWRQYWdlKHBhcmFtcywgdGV4dCk7XG5cdFx0XHRpZiAobmV3VmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHByb3RlY3RlZFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnNldEVkaXRTdW1tYXJ5KG5ld1ZlcnNpb24uc3VtbWFyeSk7XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hQUFRhZ2dlZFBhZ2VzJykpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRQYWdlVGV4dChuZXdWZXJzaW9uLnRleHQpO1xuXHRcdFx0cHJvdGVjdGVkUGFnZS5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwcm90ZWN0ZWRQYWdlLnN1cHByZXNzUHJvdGVjdFdhcm5pbmcoKTsgLy8gbm8gbmVlZCB0byBsZXQgYWRtaW5zIGtub3cgdGhleSBhcmUgZWRpdGluZyB0aHJvdWdoIHByb3RlY3Rpb25cblx0XHRcdHByb3RlY3RlZFBhZ2Uuc2F2ZSgpO1xuXHRcdH0sXG5cdFx0ZmlsZVJlcXVlc3Q6IChycHBQYWdlKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBycHBQYWdlLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0bGV0IHRleHQgPSBycHBQYWdlLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBzdGF0dXNFbGVtZW50ID0gcnBwUGFnZS5nZXRTdGF0dXNFbGVtZW50KCk7XG5cdFx0XHRjb25zdCBycHBSZSA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdGA9PT1cXFxccyooXFxcXFtcXFxcWyk/XFxcXHMqOj9cXFxccyoke01vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAoTW9yZWJpdHMucGFnZU5hbWVOb3JtKX1cXFxccyooXFxcXF1cXFxcXSk/XFxcXHMqPT09YCxcblx0XHRcdFx0J20nXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgdGFnID0gcnBwUmUuZXhlYyh0ZXh0KTtcblx0XHRcdGNvbnN0IHJwcExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRycHBMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKHJwcFBhZ2UuZ2V0UGFnZU5hbWUoKSkpO1xuXHRcdFx0cnBwTGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShycHBQYWdlLmdldFBhZ2VOYW1lKCkpKTtcblx0XHRcdGlmICh0YWcpIHtcblx0XHRcdFx0c3RhdHVzRWxlbWVudC5lcnJvcihbXG5cdFx0XHRcdFx0cnBwTGluayxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W3suacieWvueatpOmhtemdoueahOS/neaKpOaPkOWQje+8jOWPlua2iOaTjeS9nOOAgicsICflt7LmnInlsI3mraTpoIHpnaLnmoTkv53orbfmj5DlkI3vvIzlj5bmtojmk43kvZzjgIInKSxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCBuZXd0YWcgPSBgPT09IFtbOiR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dID09PVxcbmA7XG5cdFx0XHRpZiAobmV3IFJlZ0V4cChgXiR7bXcudXRpbC5lc2NhcGVSZWdFeHAobmV3dGFnKS5yZXBsYWNlKC9cXHMrL2csIFN0cmluZy5yYXdgXFxzKmApfWAsICdtJykudGVzdCh0ZXh0KSkge1xuXHRcdFx0XHRzdGF0dXNFbGVtZW50LmVycm9yKFtcblx0XHRcdFx0XHRycHBMaW5rLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bey5pyJ5a+55q2k6aG16Z2i55qE5L+d5oqk5o+Q5ZCN77yM5Y+W5raI5pON5L2c44CCJywgJ+W3suacieWwjeatpOmggemdoueahOS/neitt+aPkOWQje+8jOWPlua2iOaTjeS9nOOAgicpLFxuXHRcdFx0XHRdKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHdvcmRzO1xuXHRcdFx0c3dpdGNoIChwYXJhbXMuZXhwaXJ5KSB7XG5cdFx0XHRcdGNhc2UgJ3RlbXBvcmFyeSc6XG5cdFx0XHRcdFx0d29yZHMgPSB3aW5kb3cud2dVTFMoJ+S4tOaXticsICfoh6jmmYInKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnaW5maW5pdHknOlxuXHRcdFx0XHRcdHdvcmRzID0gJ+awuOS5hSc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0d29yZHMgPSAnJztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHdvcmRzICs9IHBhcmFtcy50eXBlbmFtZTtcblx0XHRcdG5ld3RhZyArPSBgKiA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogOTAlXCI+JHt3aW5kb3cud2dVTFMoJ+W9k+WJjeS/neaKpOeKtuaAgScsICfnm67liY3kv53orbfni4DmhYsnKX3vvJp7e3Byb3RlY3Rpb24gc3RhdHVzfCR7XG5cdFx0XHRcdC9bPV0vLnRlc3QoTW9yZWJpdHMucGFnZU5hbWVOb3JtKSA/ICcxPScgOiAnJ1xuXHRcdFx0fSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19PC9zcGFuPlxcbmA7XG5cdFx0XHRuZXd0YWcgKz0gYCR7XG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6K+35rGCJywgJ+iri+axgicpICtcblx0XHRcdFx0TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKHdvcmRzKSArXG5cdFx0XHRcdChwYXJhbXMucmVhc29uID09PSAnJyA/ICfjgIInIDogYO+8miR7TW9yZWJpdHMuc3RyaW5nLmZvcm1hdFJlYXNvblRleHQocGFyYW1zLnJlYXNvbil9YClcblx0XHRcdH0tLX5+YC5jb25jYXQoJ35+Jyk7XG5cdFx0XHRsZXQgcmVnO1xuXHRcdFx0aWYgKHBhcmFtcy5jYXRlZ29yeSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0cmVnID0gLyg9PVxccyror7fmsYLop6PpmaTkv53miqRcXHMqPT0pLztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlZyA9IC8oe3tcXHMqXFwvaGVhZGVyXFxzKn19KS87XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBvcmlnaW5hbFRleHRMZW5ndGggPSB0ZXh0Lmxlbmd0aDtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UocmVnLCBgJDFcXG4ke25ld3RhZ31cXG5gKTtcblx0XHRcdGlmICh0ZXh0Lmxlbmd0aCA9PT0gb3JpZ2luYWxUZXh0TGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmtub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0XHRsaW5rbm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybCgnSGVscDpUd2lua2xlL+S/ruWkjVJGUFAnKSk7XG5cdFx0XHRcdGxpbmtub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn5aaC5L2V5L+u5aSNUkZQUCcsICflpoLkvZXkv67lvqlSRlBQJykpKTtcblx0XHRcdFx0c3RhdHVzRWxlbWVudC5lcnJvcihbXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aXoOazleWcqFFXOlJGUFDkuIrmib7liLDnm7jlhbPlrprkvY3ngrnmoIforrDvvIzopoHkv67lpI3mraTpl67popjvvIzor7flj4Lop4EnLFxuXHRcdFx0XHRcdFx0J+eEoeazleWcqFFXOlJGUFDkuIrmib7liLDnm7jpl5zlrprkvY3pu57mqJnoqJjvvIzopoHkv67lvqnmraTllY/poYzvvIzoq4vlj4PoposnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRsaW5rbm9kZSxcblx0XHRcdFx0XHQn44CCJyxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHN0YXR1c0VsZW1lbnQuc3RhdHVzKCfliqDlhaXmlrDmj5DlkI3igKYnKTtcblx0XHRcdHJwcFBhZ2Uuc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdGAvKiAke01vcmViaXRzLnBhZ2VOYW1lTm9ybX0gKi8gJHt3aW5kb3cud2dVTFMoJ+ivt+axguWvuScsICfoq4vmsYLlsI0nKX1bWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dJHtcblx0XHRcdFx0XHRwYXJhbXMudHlwZW5hbWVcblx0XHRcdFx0fWBcblx0XHRcdCk7XG5cdFx0XHRycHBQYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHJwcFBhZ2Uuc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRycHBQYWdlLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHJwcFBhZ2Uuc2F2ZSgoKSA9PiB7XG5cdFx0XHRcdC8vIFdhdGNoIHRoZSBwYWdlIGJlaW5nIHJlcXVlc3RlZFxuXHRcdFx0XHRjb25zdCB3YXRjaFByZWYgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoUmVxdWVzdGVkUGFnZXMnKTtcblx0XHRcdFx0Ly8gYWN0aW9uPXdhdGNoIGhhcyBubyB3YXkgdG8gcmVseSBvbiB1c2VyIHByZWZlcmVuY2VzIChUMjYyOTEyKSwgc28gd2UgZG8gaXQgbWFudWFsbHkuXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGRlZmF1bHQgcHJlZiBhcHBlYXJzIHRvIHJlbGlhYmx5IHJldHVybiAnMScgKHN0cmluZyksXG5cdFx0XHRcdC8vIGJ1dCB0aGF0J3Mgbm90IGNvbnNpc3RlbnQgYW1vbmcgcHJlZnMgc28gbWlnaHQgYXMgd2VsbCBiZSBcImNvcnJlY3RcIlxuXHRcdFx0XHRjb25zdCB3YXRjaCA9XG5cdFx0XHRcdFx0d2F0Y2hQcmVmICE9PSAnbm8nICYmXG5cdFx0XHRcdFx0KHdhdGNoUHJlZiAhPT0gJ2RlZmF1bHQnIHx8ICEhTnVtYmVyLnBhcnNlSW50KG13LnVzZXIub3B0aW9ucy5nZXQoJ3dhdGNoZGVmYXVsdCcpLCAxMCkpO1xuXHRcdFx0XHRpZiAod2F0Y2gpIHtcblx0XHRcdFx0XHRjb25zdCB3YXRjaF9xdWVyeSA9IHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3dhdGNoJyxcblx0XHRcdFx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRcdFx0dG9rZW46IG13LnVzZXIudG9rZW5zLmdldCgnd2F0Y2hUb2tlbicpLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0Ly8gT25seSBhZGQgdGhlIGV4cGlyeSBpZiBwYWdlIGlzIHVud2F0Y2hlZCBvciBhbHJlYWR5IHRlbXBvcmFyaWx5IHdhdGNoZWRcblx0XHRcdFx0XHRpZiAoVHdpbmtsZS5wcm90ZWN0LndhdGNoZWQgIT09IHRydWUgJiYgd2F0Y2hQcmVmICE9PSAnZGVmYXVsdCcgJiYgd2F0Y2hQcmVmICE9PSAneWVzJykge1xuXHRcdFx0XHRcdFx0d2F0Y2hfcXVlcnkuZXhwaXJ5ID0gd2F0Y2hQcmVmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+Wwhuivt+axguS/neaKpOeahOmhtemdouWKoOWFpeWIsOebkeinhuWIl+ihqCcsICflsIfoq4vmsYLkv53orbfnmoTpoIHpnaLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHRcdHdhdGNoX3F1ZXJ5XG5cdFx0XHRcdFx0KS5wb3N0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Y2xvc2VSZXF1ZXN0OiAocnBwUGFnZSkgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcnBwUGFnZS5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0ZXh0ID0gcnBwUGFnZS5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Y29uc3Qgc3RhdHVzRWxlbWVudCA9IHJwcFBhZ2UuZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0Y29uc3Qgc2VjdGlvbnMgPSB0ZXh0LnNwbGl0KC8oPz1cXG49PVxccyror7fmsYLop6PpmaTkv53miqRcXHMqPT0pLyk7XG5cdFx0XHRpZiAoc2VjdGlvbnMubGVuZ3RoICE9PSAyKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmtub2RlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGlua25vZGUyLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKCdIZWxwOlR3aW5rbGUv5L+u5aSNUkZQUCcpKTtcblx0XHRcdFx0bGlua25vZGUyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCflpoLkvZXkv67lpI1SRlBQJykpO1xuXHRcdFx0XHRzdGF0dXNFbGVtZW50LmVycm9yKFtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5peg5rOV5ZyoUVc6UkZQUOS4iuaJvuWIsOebuOWFs+WumuS9jeeCueagh+iusO+8jOimgeS/ruWkjeatpOmXrumimO+8jOivt+WPguingScsXG5cdFx0XHRcdFx0XHQn54Sh5rOV5ZyoUVc6UkZQUOS4iuaJvuWIsOebuOmXnOWumuS9jem7nuaomeiomO+8jOimgeS/ruW+qeatpOWVj+mhjO+8jOiri+WPg+imiydcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGxpbmtub2RlMixcblx0XHRcdFx0XHQn44CCJyxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCBzZWN0aW9uVGV4dDtcblx0XHRcdGxldCBleHBpcnlUZXh0ID0gJyc7XG5cdFx0XHRpZiAocGFyYW1zLnR5cGUgPT09ICd1bnByb3RlY3QnKSB7XG5cdFx0XHRcdFssIHNlY3Rpb25UZXh0XSA9IHNlY3Rpb25zO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0W3NlY3Rpb25UZXh0XSA9IHNlY3Rpb25zO1xuXHRcdFx0XHRleHBpcnlUZXh0ID0gTW9yZWJpdHMuc3RyaW5nLmZvcm1hdFRpbWUocGFyYW1zLmV4cGlyeSk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZXF1ZXN0TGlzdCA9IHNlY3Rpb25UZXh0LnNwbGl0KC8oPz1cXG49PT0uKz09PVxccypcXG4pLyk7XG5cdFx0XHRsZXQgZm91bmQgPSBmYWxzZTtcblx0XHRcdGNvbnN0IHJwcFJlID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0YD09PVxcXFxzKihcXFxcW1xcXFxbKT9cXFxccyo6P1xcXFxzKiR7TW9yZWJpdHMucGFnZU5hbWVSZWdleChNb3JlYml0cy5wYWdlTmFtZU5vcm0pfVxcXFxzKihcXFxcXVxcXFxdKT9cXFxccyo9PT1gLFxuXHRcdFx0XHQnbSdcblx0XHRcdCk7XG5cdFx0XHRmb3IgKGxldCByZXF1ZXN0IG9mIHJlcXVlc3RMaXN0KSB7XG5cdFx0XHRcdGlmIChycHBSZS5leGVjKHJlcXVlc3QpKSB7XG5cdFx0XHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QudHJpbUVuZCgpO1xuXHRcdFx0XHRcdGlmIChwYXJhbXMudHlwZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0XHRcdHJlcXVlc3QgKz0gJ1xcbjoge3tSRlBQfGlzdW59feOAgi0tfn4nLmNvbmNhdCgnfn5cXG4nKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVxdWVzdCArPSBgXFxuOiB7e1JGUFB8JHtwYXJhbXMudHlwZX18JHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkocGFyYW1zLmV4cGlyeSkgPyAnaW5maW5pdHknIDogZXhwaXJ5VGV4dFxuXHRcdFx0XHRcdFx0fX1944CCLS1+fmAuY29uY2F0KCd+flxcbicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghZm91bmQpIHtcblx0XHRcdFx0c3RhdHVzRWxlbWVudC53YXJuKHdpbmRvdy53Z1VMUygn5rKh5pyJ5om+5Yiw55u45YWz55qE6K+35rGCJywgJ+aykuacieaJvuWIsOebuOmXnOeahOiri+axgicpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy50eXBlID09PSAndW5wcm90ZWN0Jykge1xuXHRcdFx0XHR0ZXh0ID0gc2VjdGlvbnNbMF0gKyByZXF1ZXN0TGlzdC5qb2luKCcnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHQgPSByZXF1ZXN0TGlzdC5qb2luKCcnKSArIHNlY3Rpb25zWzFdO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHN1bW1hcnkgPSAnJztcblx0XHRcdGlmIChwYXJhbXMudHlwZSA9PT0gJ3VucHJvdGVjdCcpIHtcblx0XHRcdFx0Wywgc2VjdGlvblRleHRdID0gc2VjdGlvbnM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRbc2VjdGlvblRleHRdID0gc2VjdGlvbnM7XG5cdFx0XHR9XG5cdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ3NlbWknOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+WNiuS/neaKpCcsICfljYrkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAndGVtcCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn5qih5p2/5L+d5oqkJywgJ+aooeadv+S/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdlY3AnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+W7tuS8uOehruiupOS/neaKpCcsICflu7bkvLjnorroqo3kv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZnVsbCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn5YWo5L+d5oqkJywgJ+WFqOS/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdyZXZpc2lvbnByb3RlY3RlZCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn54mI5pys5L+d5oqkJywgJ+eJiOacrOS/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdvZmZpY2lhbHByb3RlY3RlZCc6XG5cdFx0XHRcdFx0c3VtbWFyeSA9IHdpbmRvdy53Z1VMUygn6KOB5aeU5Lya5L+d5oqkJywgJ+ijgeWnlOacg+S/neittycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdtb3ZlJzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfnp7vliqjkv53miqQnLCAn56e75YuV5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3NhbHQnOlxuXHRcdFx0XHRcdHN1bW1hcnkgPSB3aW5kb3cud2dVTFMoJ+eZvee6uOS/neaKpCcsICfnmb3ntJnkv53orbcnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAndW5wcm90ZWN0Jzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gd2luZG93LndnVUxTKCfop6PpmaTkv53miqQnLCAn6Kej6Zmk5L+d6K23Jyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0c3RhdHVzRWxlbWVudC53YXJuKHdpbmRvdy53Z1VMUygn5pyq55+l5L+d5oqk57G75Z6LJywgJ+acquefpeS/neitt+mhnuWIpScpKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkocGFyYW1zLmV4cGlyeSkpIHtcblx0XHRcdFx0c3VtbWFyeSA9IGV4cGlyeVRleHQgKyBzdW1tYXJ5O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3VtbWFyeSArPSBleHBpcnlUZXh0O1xuXHRcdFx0fVxuXHRcdFx0cnBwUGFnZS5zZXRFZGl0U3VtbWFyeShgLyogJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19ICovICR7c3VtbWFyeX1gKTtcblx0XHRcdHJwcFBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cnBwUGFnZS5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdHJwcFBhZ2Uuc2F2ZSgpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUucHJvdGVjdC5mb3JtYXRQcm90ZWN0aW9uRGVzY3JpcHRpb24gPSAocHJvdGVjdGlvbkxldmVscykgPT4ge1xuXHRcdGNvbnN0IHByb3RlY3Rpb25Ob2RlID0gW107XG5cdFx0aWYgKE9iamVjdC5rZXlzKHByb3RlY3Rpb25MZXZlbHMpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0W3Byb3RlY3Rpb25Ob2RlW3Byb3RlY3Rpb25Ob2RlLmxlbmd0aF1dID0gJCgnPGI+JykudGV4dCh3aW5kb3cud2dVTFMoJ+aXoOS/neaKpCcsICfnhKHkv53orbcnKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoY29uc3QgW3R5cGUsIHNldHRpbmdzXSBvZiBPYmplY3QuZW50cmllcyhwcm90ZWN0aW9uTGV2ZWxzKSkge1xuXHRcdFx0XHRsZXQgbGFiZWw7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgJ2VkaXQnOlxuXHRcdFx0XHRcdFx0bGFiZWwgPSB3aW5kb3cud2dVTFMoJ+e8lui+kScsICfnt6jovK8nKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21vdmUnOlxuXHRcdFx0XHRcdFx0bGFiZWwgPSB3aW5kb3cud2dVTFMoJ+enu+WKqCcsICfnp7vli5UnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NyZWF0ZSc6XG5cdFx0XHRcdFx0XHRsYWJlbCA9IHdpbmRvdy53Z1VMUygn5Yib5bu6JywgJ+W7uueriycpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndXBsb2FkJzpcblx0XHRcdFx0XHRcdGxhYmVsID0gd2luZG93LndnVUxTKCfkuIrkvKAnLCAn5LiK5YKzJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0bGFiZWwgPSB0eXBlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IGxldmVsO1xuXHRcdFx0XHRzd2l0Y2ggKHNldHRpbmdzLmxldmVsKSB7XG5cdFx0XHRcdFx0Y2FzZSAnb2ZmaWNpYWxwcm90ZWN0ZWQnOlxuXHRcdFx0XHRcdFx0bGV2ZWwgPSB3aW5kb3cud2dVTFMoJ+S7heWFgeiuuOijgeWGs+WnlOWRmCcsICflg4XlhYHoqLHoo4Hmsbrlp5Tlk6EnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JldmlzaW9ucHJvdGVjdGVkJzpcblx0XHRcdFx0XHRcdGxldmVsID0gd2luZG93LndnVUxTKCfku4XlhYHorrjotYTmt7HnlKjmiLcnLCAn5YOF5YWB6Kix6LOH5rex55So5oi2Jyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvY29uZmlybWVkJzpcblx0XHRcdFx0XHRcdGxldmVsID0gd2luZG93LndnVUxTKCfku4XlhYHorrjoh6rliqjnoa7orqTnlKjmiLcnLCAn5YOF5YWB6Kix6Ieq5YuV56K66KqN5L2/55So6ICFJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICd0ZW1wbGF0ZWVkaXRvcic6XG5cdFx0XHRcdFx0XHRsZXZlbCA9IHdpbmRvdy53Z1VMUygn5LuF5qih5p2/57yW6L6R5ZGY5ZKM566h55CG5ZGYJywgJ+WDheaooeadv+e3qOi8r+WToeWSjOeuoeeQhuWToScpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3lzb3AnOlxuXHRcdFx0XHRcdFx0bGV2ZWwgPSB3aW5kb3cud2dVTFMoJ+S7heeuoeeQhuWRmCcsICflg4XnrqHnkIblk6EnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHQoe2xldmVsfSA9IHNldHRpbmdzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFtwcm90ZWN0aW9uTm9kZVtwcm90ZWN0aW9uTm9kZS5sZW5ndGhdXSA9ICQoJzxiPicpLnRleHQoYCR7bGFiZWx977yaJHtsZXZlbH1gKTtcblx0XHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHNldHRpbmdzLmV4cGlyeSkpIHtcblx0XHRcdFx0XHRwcm90ZWN0aW9uTm9kZVtwcm90ZWN0aW9uTm9kZS5sZW5ndGhdID0gd2luZG93LndnVUxTKCfvvIjml6DpmZDmnJ/vvIknLCAn77yI54Sh6ZmQ5pyf77yJJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cHJvdGVjdGlvbk5vZGVbcHJvdGVjdGlvbk5vZGUubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRgJHt3aW5kb3cud2dVTFMoJ++8iOi/h+acn++8micsICfvvIjpgY7mnJ/vvJonKSArIG5ldyBNb3JlYml0cy5kYXRlKHNldHRpbmdzLmV4cGlyeSkuY2FsZW5kYXIoJ3V0Yycpfe+8iWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNldHRpbmdzLmNhc2NhZGUpIHtcblx0XHRcdFx0XHRwcm90ZWN0aW9uTm9kZVtwcm90ZWN0aW9uTm9kZS5sZW5ndGhdID0gd2luZG93LndnVUxTKCfvvIjov57plIHvvIknLCAn77yI6YCj6Y6W77yJJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHByb3RlY3Rpb25Ob2RlO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLnByb3RlY3QsICdwcm90ZWN0Jyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gZnJpZW5kbHl0YWcuanMgKi9cbihmdW5jdGlvbiBmcmllbmRseXRhZygkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogZnJpZW5kbHl0YWcuanM6IFRhZyBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiVGFnXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3RpbmcgYXJ0aWNsZXMgYW5kIGRyYWZ0czsgZmlsZSBwYWdlcyB3aXRoIGEgY29ycmVzcG9uZGluZyBmaWxlXG5cdCAqIHdoaWNoIGlzIGxvY2FsIChub3Qgb24gU2hhcmUpOyBhbGwgcmVkaXJlY3RzXG5cdCAqL1xuXHRUd2lua2xlLnRhZyA9ICgpID0+IHtcblx0XHQvLyByZWRpcmVjdCB0YWdnaW5nXG5cdFx0aWYgKE1vcmViaXRzLmlzUGFnZVJlZGlyZWN0KCkpIHtcblx0XHRcdFR3aW5rbGUudGFnLm1vZGUgPSB3aW5kb3cud2dVTFMoJ+mHjeWumuWQkScsICfph43mlrDlsI7lkJEnKTtcblx0XHRcdFR3aW5rbGUudGFnLm1vZGVFbiA9ICdyZWRpcmVjdCc7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHRUd2lua2xlLnRhZy5jYWxsYmFjayxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrAnLCAn5qiZ6KiYJyksXG5cdFx0XHRcdCdmcmllbmRseS10YWcnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOmHjeWumuWQkScsICfmqJnoqJjph43mlrDlsI7lkJEnKVxuXHRcdFx0KTtcblx0XHRcdC8vIGZpbGUgdGFnZ2luZ1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2ICYmXG5cdFx0XHQhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LXNoYXJlZHVwbG9hZCcpICYmXG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbXctaW1hZ2VwYWdlLXNlY3Rpb24tZmlsZWhpc3RvcnknKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZSA9IHdpbmRvdy53Z1VMUygn5paH5Lu2JywgJ+aqlOahiCcpO1xuXHRcdFx0VHdpbmtsZS50YWcubW9kZUVuID0gJ2ZpbGUnO1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0VHdpbmtsZS50YWcuY2FsbGJhY2ssXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpLFxuXHRcdFx0XHQnZnJpZW5kbHktdGFnJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmoIforrDmlofku7YnLCAn5qiZ6KiY5qqU5qGIJylcblx0XHRcdCk7XG5cdFx0XHQvLyBhcnRpY2xlL2RyYWZ0IHRhZ2dpbmdcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0KFswLCAxMThdLmluY2x1ZGVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpICYmIG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpKSB8fFxuXHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtID09PSBUd2lua2xlLmdldFByZWYoJ3NhbmRib3hQYWdlJylcblx0XHQpIHtcblx0XHRcdFR3aW5rbGUudGFnLm1vZGUgPSB3aW5kb3cud2dVTFMoJ+adoeebricsICfmop3nm64nKTtcblx0XHRcdFR3aW5rbGUudGFnLm1vZGVFbiA9ICdhcnRpY2xlJztcblx0XHRcdC8vIENhbid0IHJlbW92ZSB0YWdzIHdoZW4gbm90IHZpZXdpbmcgY3VycmVudCB2ZXJzaW9uXG5cdFx0XHRUd2lua2xlLnRhZy5jYW5SZW1vdmUgPVxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKSA9PT0gbXcuY29uZmlnLmdldCgnd2dSZXZpc2lvbklkJykgJiZcblx0XHRcdFx0Ly8gRGlzYWJsZWQgb24gbGF0ZXN0IGRpZmYgYmVjYXVzZSB0aGUgZGlmZiBzbGlkZXIgY291bGQgYmUgdXNlZCB0byBzbGlkZVxuXHRcdFx0XHQvLyBhd2F5IGZyb20gdGhlIGxhdGVzdCBkaWZmIHdpdGhvdXQgY2F1c2luZyB0aGUgc2NyaXB0IHRvIHJlbG9hZFxuXHRcdFx0XHQhbXcuY29uZmlnLmdldCgnd2dEaWZmTmV3SWQnKTtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUudGFnLmNhbGxiYWNrLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKSxcblx0XHRcdFx0J2ZyaWVuZGx5LXRhZycsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6w5p2h55uuJywgJ+aomeiomOaineebricpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS50YWcuY2hlY2tlZFRhZ3MgPSBbXTtcblx0VHdpbmtsZS50YWcuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MzAsIFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ2FydGljbGUnID8gNTAwIDogNDAwKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5qCH6K6w6K6+572uJywgJ+aomeiomOioreWumicpLCAnSDpUVy9QUkVGI3RhZycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyN0YWcnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLnRhZy5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+etm+mAieagh+iusOWIl+ihqO+8micsICfnr6npgbjmqJnoqJjliJfooajvvJonKSxcblx0XHRcdG5hbWU6ICdxdWlja2ZpbHRlcicsXG5cdFx0XHRzaXplOiAnMzAnLFxuXHRcdFx0ZXZlbnQ6IGZ1bmN0aW9uIGV2ZW50KCkge1xuXHRcdFx0XHQvLyBmbHVzaCB0aGUgRE9NIG9mIGFsbCBleGlzdGluZyB1bmRlcmxpbmUgc3BhbnNcblx0XHRcdFx0JGFsbENoZWNrYm94RGl2cy5maW5kKCcuc2VhcmNoLWhpdCcpLmVhY2goKF9pLCBlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbGFiZWxfZWxlbWVudCA9IGUucGFyZW50RWxlbWVudDtcblx0XHRcdFx0XHQvLyBUaGlzIHdvdWxkIGNvbnZlcnQgPGxhYmVsPkhlbGxvIDxzcGFuIGNsYXNzPXNlYXJjaC1oaXQ+d288L3NwYW4+cmxkPC9sYWJlbD5cblx0XHRcdFx0XHQvLyB0byA8bGFiZWw+SGVsbG8gd29ybGQ8L2xhYmVsPlxuXHRcdFx0XHRcdGxhYmVsX2VsZW1lbnQuaW5uZXJIVE1MID0gbGFiZWxfZWxlbWVudC50ZXh0Q29udGVudDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmICh0aGlzLnZhbHVlKSB7XG5cdFx0XHRcdFx0JGFsbENoZWNrYm94RGl2cy5oaWRlKCk7XG5cdFx0XHRcdFx0JGFsbEhlYWRlcnMuaGlkZSgpO1xuXHRcdFx0XHRcdGNvbnN0IHNlYXJjaFN0cmluZyA9IHRoaXMudmFsdWU7XG5cdFx0XHRcdFx0Y29uc3Qgc2VhcmNoUmVnZXggPSBuZXcgUmVnRXhwKG13LnV0aWwuZXNjYXBlUmVnRXhwKHNlYXJjaFN0cmluZyksICdpJyk7XG5cdFx0XHRcdFx0JGFsbENoZWNrYm94RGl2cy5maW5kKCdsYWJlbCcpLmVhY2goKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgbGFiZWxfdGV4dCA9IGVsZW1lbnQudGV4dENvbnRlbnQ7XG5cdFx0XHRcdFx0XHRjb25zdCBzZWFyY2hIaXQgPSBzZWFyY2hSZWdleC5leGVjKGxhYmVsX3RleHQpO1xuXHRcdFx0XHRcdFx0aWYgKHNlYXJjaEhpdCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IFt0ZXh0bm9kZV0gPSBlbGVtZW50LmNoaWxkTm9kZXM7XG5cdFx0XHRcdFx0XHRcdHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0ZXh0bm9kZSk7XG5cdFx0XHRcdFx0XHRcdHJhbmdlLnNldFN0YXJ0KHRleHRub2RlLCBzZWFyY2hIaXQuaW5kZXgpO1xuXHRcdFx0XHRcdFx0XHRyYW5nZS5zZXRFbmQodGV4dG5vZGUsIHNlYXJjaEhpdC5pbmRleCArIHNlYXJjaFN0cmluZy5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBbdW5kZXJsaW5lX3NwYW5dID0gJCgnPHNwYW4+Jylcblx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ3NlYXJjaC1oaXQnKVxuXHRcdFx0XHRcdFx0XHRcdC5jc3MoJ3RleHQtZGVjb3JhdGlvbicsICd1bmRlcmxpbmUnKTtcblx0XHRcdFx0XHRcdFx0cmFuZ2Uuc3Vycm91bmRDb250ZW50cyh1bmRlcmxpbmVfc3Bhbik7XG5cdFx0XHRcdFx0XHRcdGVsZW1lbnQucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsgLy8gc2hvd1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCRhbGxDaGVja2JveERpdnMuc2hvdygpO1xuXHRcdFx0XHRcdCRhbGxIZWFkZXJzLnNob3coKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHR9KTtcblx0XHRzd2l0Y2ggKFR3aW5rbGUudGFnLm1vZGVFbikge1xuXHRcdFx0Y2FzZSAnYXJ0aWNsZSc6XG5cdFx0XHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+adoeebrue7tOaKpOagh+iusCcsICfmop3nm67ntq3orbfmqJnoqJgnKSk7XG5cdFx0XHRcdC8vIEJ1aWxkIHNvcnRpbmcgYW5kIGxvb2t1cCBvYmplY3QgZmxhdE9iamVjdCwgd2hpY2ggaXMgYWx3YXlzXG5cdFx0XHRcdC8vIG5lZWRlZCBidXQgYWxzbyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBhbHBoYWJldGljYWwgbGlzdFxuXHRcdFx0XHQvLyBXb3VsZCBiZSBpbmZpbml0ZWx5IGJldHRlciB3aXRoIE9iamVjdC52YWx1ZXNcblx0XHRcdFx0VHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0ID0ge307XG5cdFx0XHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS50YWcuYXJ0aWNsZS50YWdMaXN0KSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBzdWJncm91cCBvZiBncm91cC52YWx1ZSkge1xuXHRcdFx0XHRcdFx0aWYgKHN1Ymdyb3VwLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBzdWJncm91cC52YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFtpdGVtLnRhZ10gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdFx0XHRcdGV4Y2x1ZGVNSTogISFpdGVtLmV4Y2x1ZGVNSSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRUd2lua2xlLnRhZy5hcnRpY2xlLmZsYXRPYmplY3Rbc3ViZ3JvdXAudGFnXSA9IHtcblx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc3ViZ3JvdXAuZGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0XHRcdFx0ZXhjbHVkZU1JOiAhIXN1Ymdyb3VwLmV4Y2x1ZGVNSSxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdG5hbWU6ICdzb3J0b3JkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+afpeeci+WIl+ihqO+8micsICfmqqLoppbliJfooajvvJonKSxcblx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5ZyoVHdpbmtsZeWPguaVsOiuvue9ru+8iEg6VFcvUFJFRu+8ieS4reabtOaUueatpOmhueOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5ZyoVHdpbmtsZeWBj+WlveioreWumu+8iEg6VFcvUFJFRu+8ieS4reabtOaUueatpOmgheOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGV2ZW50OiBUd2lua2xlLnRhZy51cGRhdGVTb3J0T3JkZXIsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdjYXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjInnsbvlnosnLCAn5oyJ6aGe5YilJyksXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3RhZ0FydGljbGVTb3J0T3JkZXInKSA9PT0gJ2NhdCcsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdhbHBoYScsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5oyJ5a2X5q+NJyxcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQ6IFR3aW5rbGUuZ2V0UHJlZigndGFnQXJ0aWNsZVNvcnRPcmRlcicpID09PSAnYWxwaGEnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKCFUd2lua2xlLnRhZy5jYW5SZW1vdmUpIHtcblx0XHRcdFx0XHRjb25zdCBkaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0ZGl2RWxlbWVudC5pbm5lckhUTUwgPSB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6KaB56e76Zmk546w5pyJ57u05oqk5qCH6K6w77yM6K+35LuO5b2T5YmN5p2h55uu54mI5pys5Lit5omT5byA4oCc5qCH6K6w4oCd6I+c5Y2VJyxcblx0XHRcdFx0XHRcdCfopoHnp7vpmaTnj77mnInntq3orbfmqJnoqJjvvIzoq4vlvp7nm67liY3mop3nm67niYjmnKzkuK3miZPplovjgIzmqJnoqJjjgI3pgbjllq4nXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd1bnRhZ25vdGljZScsXG5cdFx0XHRcdFx0XHRsYWJlbDogZGl2RWxlbWVudCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0YWdXb3JrQXJlYScsXG5cdFx0XHRcdFx0Y2xhc3NOYW1lOiAnbW9yZWJpdHMtc2Nyb2xsYm94Jyxcblx0XHRcdFx0XHRzdHlsZTogJ21heC1oZWlnaHQ6IDI4ZW0nLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflpoLlj6/og73vvIzlkIjlubblhaV7e211bHRpcGxlIGlzc3Vlc319Jyxcblx0XHRcdFx0XHRcdFx0XHQn5aaC5Y+v6IO977yM5ZCI5L215YWle3ttdWx0aXBsZSBpc3N1ZXN9fSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdncm91cCcsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdncm91cCcsXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6Iul5Yqg5YWle3ttdWx0aXBsZSBpc3N1ZXN9feaUr+aMgeeahOS4ieS4quS7peS4iueahOaooeadv++8jOaJgOacieaUr+aMgeeahOaooeadv+mDveS8muiiq+WQiOW5tuWFpXt7bXVsdGlwbGUgaXNzdWVzfX3mqKHmnb/kuK3jgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfoi6XliqDlhaV7e211bHRpcGxlIGlzc3Vlc3195pSv5o+055qE5LiJ5YCL5Lul5LiK55qE5qih5p2/77yM5omA5pyJ5pSv5o+055qE5qih5p2/6YO95pyD6KKr5ZCI5L215YWle3ttdWx0aXBsZSBpc3N1ZXN9feaooeadv+S4reOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdncm91cEJ5RGVmYXVsdCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfpmYTliqDkuo7nvJbovpHmkZjopoHnmoTlj6/pgInnkIbnlLHvvIzkvovlpoLmjIflh7rmnaHnm67lhoXlrrnnmoTlk6rkupvpg6jliIbmnInpl67popjmiJbnp7vpmaTmqKHmnb/nmoTnkIbnlLHvvIzkvYboi6XnkIbnlLHlvojplb/liJnlupTor6Xlj5HooajlnKjorqjorrrpobXjgIInLFxuXHRcdFx0XHRcdFx0J+mZhOWKoOaWvOe3qOi8r+aRmOimgeeahOWPr+mBuOeQhueUse+8jOS+i+WmguaMh+WHuuaineebruWFp+WuueeahOWTquS6m+mDqOWIhuacieWVj+mhjOaIluenu+mZpOaooeadv+eahOeQhueUse+8jOS9huiLpeeQhueUseW+iOmVt+WJh+aHieipsueZvOihqOWcqOiojuirlumggeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHNpemU6ICc4MCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2ZpbGUnOlxuXHRcdFx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmlofku7bnu7TmiqTmoIforrAnLCAn5qqU5qGI57at6K235qiZ6KiYJykpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGdyb3VwIG9mIFR3aW5rbGUudGFnLmZpbGVMaXN0KSB7XG5cdFx0XHRcdFx0aWYgKGdyb3VwLmJ1aWxkRmlsZW5hbWUpIHtcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgZWwgb2YgZ3JvdXAudmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0ZWwuc3ViZ3JvdXAgPSB7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmm7/mjaLnmoTmlofku7bvvJonLCAn5pu/5o+b55qE5qqU5qGI77yaJyksXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J+i+k+WFpeabv+aNouatpOaWh+S7tueahOaWh+S7tuWQjeensO+8iOW/heWhq++8iScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn6Ly45YWl5pu/5o+b5q2k5qqU5qGI55qE5qqU5qGI5ZCN56ix77yI5b+F5aGr77yJJ1xuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogYCR7ZWwudmFsdWUucmVwbGFjZSgvIC9nLCAnXycpfUZpbGVgLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBncm91cC5rZXksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRcdGxpc3Q6IGdyb3VwLnZhbHVlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2N1c3RvbUZpbGVUYWdMaXN0JykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmqKHmnb8nLCAn6Ieq6KiC5qih5p2/JyksXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0XHRcdGxpc3Q6IFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tRmlsZVRhZ0xpc3QnKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3JlZGlyZWN0Jzoge1xuXHRcdFx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfph43lrprlkJHmoIforrAnLCAn6YeN5paw5bCO5ZCR5qiZ6KiYJykpO1xuXHRcdFx0XHRjb25zdCBpID0gMTtcblx0XHRcdFx0Zm9yIChjb25zdCBncm91cCBvZiBUd2lua2xlLnRhZy5yZWRpcmVjdExpc3QpIHtcblx0XHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGlkOiBgdGFnSGVhZGVyJHtpfWAsXG5cdFx0XHRcdFx0XHRsYWJlbDogZ3JvdXAua2V5LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFncycsXG5cdFx0XHRcdFx0XHRsaXN0OiBncm91cC52YWx1ZS5tYXAoKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogaXRlbS50YWcsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7eyR7aXRlbS50YWd9fX3vvJoke2l0ZW0uZGVzY3JpcHRpb259YCxcblx0XHRcdFx0XHRcdFx0XHRzdWJncm91cDogaXRlbS5zdWJncm91cCxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ2N1c3RvbVJlZGlyZWN0VGFnTGlzdCcpLmxlbmd0aCkge1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0XHRuYW1lOiAndGFncycsXG5cdFx0XHRcdFx0XHRsaXN0OiBUd2lua2xlLmdldFByZWYoJ2N1c3RvbVJlZGlyZWN0VGFnTGlzdCcpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoYFR3aW5rbGUudGFn77ya5pyq55+l5qih5byPICR7VHdpbmtsZS50YWcubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ2ZyaWVuZGx5dGFnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBhdHJvbGxpbmsnKS5sZW5ndGgpIHtcblx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdouS4uuW3suW3oeafpScsICfmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6UnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAncGF0cm9sJyxcblx0XHRcdFx0XHRcdG5hbWU6ICdwYXRyb2wnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFnZ2VkUGFnZXNBc1BhdHJvbGxlZCcpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRjbGFzc05hbWU6ICd0dy10YWctc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHQvLyBmb3IgcXVpY2sgZmlsdGVyOlxuXHRcdCRhbGxDaGVja2JveERpdnMgPSAkKHJlc3VsdCkuZmluZCgnW25hbWUkPXRhZ3NdJykucGFyZW50KCk7XG5cdFx0JGFsbEhlYWRlcnMgPSAkKHJlc3VsdCkuZmluZCgnaDUnKTtcblx0XHRyZXN1bHQucXVpY2tmaWx0ZXIuZm9jdXMoKTsgLy8gcGxhY2UgY3Vyc29yIGluIHRoZSBxdWljayBmaWx0ZXIgZmllbGQgYXMgc29vbiBhcyB3aW5kb3cgaXMgb3BlbmVkXG5cdFx0cmVzdWx0LnF1aWNrZmlsdGVyLmF1dG9jb21wbGV0ZSA9ICdvZmYnOyAvLyBkaXNhYmxlIGJyb3dzZXIgc3VnZ2VzdGlvbnNcblx0XHRyZXN1bHQucXVpY2tmaWx0ZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5cHJlc3MnLCAoZSkgPT4ge1xuXHRcdFx0aWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG5cdFx0XHRcdC8vIHByZXZlbnQgZW50ZXIga2V5IGZyb20gYWNjaWRlbnRhbGx5IHN1Ym1pdHRpbmcgdGhlIGZvcm1cblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYgKFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ2FydGljbGUnKSB7XG5cdFx0XHRUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MgPSBbXTtcblx0XHRcdGlmIChUd2lua2xlLnRhZy5jYW5SZW1vdmUpIHtcblx0XHRcdFx0Ly8gTG9vayBmb3IgZXhpc3RpbmcgbWFpbnRlbmFuY2UgdGFncyBpbiB0aGUgbGVhZCBzZWN0aW9uIGFuZCBwdXQgdGhlbSBpbiBhcnJheVxuXHRcdFx0XHQvLyBBbGwgdGFncyBhcmUgSFRNTCB0YWJsZSBlbGVtZW50cyB0aGF0IGFyZSBkaXJlY3QgY2hpbGRyZW4gb2YgLm13LXBhcnNlci1vdXRwdXQsXG5cdFx0XHRcdC8vIGV4Y2VwdCB3aGVuIHRoZXkgYXJlIHdpdGhpbiB7e211bHRpcGxlIGlzc3Vlc319XG5cdFx0XHRcdCRib2R5XG5cdFx0XHRcdFx0LmZpbmQoJy5tdy1wYXJzZXItb3V0cHV0Jylcblx0XHRcdFx0XHQuY2hpbGRyZW4oKVxuXHRcdFx0XHRcdC5lYWNoKChfaSwgZSkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gYnJlYWsgb3V0IG9uIGVuY291bnRlcmluZyB0aGUgZmlyc3QgaGVhZGluZywgd2hpY2ggbWVhbnMgd2UgYXJlIG5vXG5cdFx0XHRcdFx0XHQvLyBsb25nZXIgaW4gdGhlIGxlYWQgc2VjdGlvblxuXHRcdFx0XHRcdFx0aWYgKGUudGFnTmFtZSA9PT0gJ0gyJykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBUaGUgYWJpbGl0eSB0byByZW1vdmUgdGFncyBkZXBlbmRzIG9uIHRoZSB0ZW1wbGF0ZSdzIHt7YW1ib3h9fSB8bmFtZT1cblx0XHRcdFx0XHRcdC8vIHBhcmFtZXRlciBiZWFyaW5nIHRoZSB0ZW1wbGF0ZSdzIGNvcnJlY3QgbmFtZSAocHJlZmVyYWJseSkgb3IgYSBuYW1lIHRoYXQgYXRcblx0XHRcdFx0XHRcdC8vIGxlYXN0IHJlZGlyZWN0cyB0byB0aGUgYWN0dWFsIG5hbWVcblx0XHRcdFx0XHRcdC8vIEFsbCB0YWdzIGhhdmUgdGhlaXIgZmlyc3QgY2xhc3MgbmFtZSBhcyBcImJveC1cIiArIHRlbXBsYXRlIG5hbWVcblx0XHRcdFx0XHRcdGlmIChlLmNsYXNzTmFtZS5pbmRleE9mKCdib3gtJykgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0aWYgKGUuY2xhc3NMaXN0WzBdID09PSAnYm94LemXrumimOadoeebricpIHtcblx0XHRcdFx0XHRcdFx0XHQkKGUpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnLmFtYm94Jylcblx0XHRcdFx0XHRcdFx0XHRcdC5lYWNoKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGVsZW1lbnQuY2xhc3NMaXN0WzBdLmluZGV4T2YoJ2JveC0nKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGJveFRhZyA9IGVsZW1lbnQuY2xhc3NMaXN0WzBdLnNsaWNlKCdib3gtJy5sZW5ndGgpLnJlcGxhY2UoL18vZywgJyAnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3NbVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ym94VGFnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWVcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRhZyA9IGUuY2xhc3NMaXN0WzBdLnNsaWNlKCdib3gtJy5sZW5ndGgpLnJlcGxhY2UoL18vZywgJyAnKTtcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzW1R3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5sZW5ndGhdID0gdGFnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyB7e1VuY2F0ZWdvcml6ZWR9fSBhbmQge3tJbXByb3ZlIGNhdGVnb3JpZXN9fSBhcmUgdXN1YWxseSBwbGFjZWQgYXQgdGhlIGVuZFxuXHRcdFx0XHRpZiAoJGJvZHkuZmluZCgnLmJveC1VbmNhdGVnb3JpemVkJykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzW1R3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5sZW5ndGhdID0gJ1VuY2F0ZWdvcml6ZWQnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgkYm9keS5maW5kKCcuYm94LUltcHJvdmVfY2F0ZWdvcmllcycpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFnc1tUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MubGVuZ3RoXSA9ICdJbXByb3ZlIGNhdGVnb3JpZXMnO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBBZGQgc3RhdHVzIHRleHQgbm9kZSBhZnRlciBTdWJtaXQgYnV0dG9uXG5cdFx0XHRjb25zdCBzdGF0dXNOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0c3RhdHVzTm9kZS5zdHlsZS5mb250U2l6ZSA9ICc5MCUnO1xuXHRcdFx0c3RhdHVzTm9kZS5pZCA9ICd0dy10YWctc3RhdHVzJztcblx0XHRcdFR3aW5rbGUudGFnLnN0YXR1cyA9IHtcblx0XHRcdFx0Ly8gaW5pdGlhbCBzdGF0ZTsgZGVmaW5lZCBsaWtlIHRoaXMgYmVjYXVzZSB0aGVzZSBuZWVkIHRvIGJlIGF2YWlsYWJsZSBmb3IgcmVmZXJlbmNlXG5cdFx0XHRcdC8vIGluIHRoZSBjbGljayBldmVudCBoYW5kbGVyXG5cdFx0XHRcdG51bUFkZGVkOiAwLFxuXHRcdFx0XHRudW1SZW1vdmVkOiAwLFxuXHRcdFx0fTtcblx0XHRcdCRib2R5LmZpbmQoJ2J1dHRvbi50dy10YWctc3VibWl0JykuYWZ0ZXIoc3RhdHVzTm9kZSk7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBzb3J0IGRyb3Bkb3duLCB0byBpbml0aWFsaXplIHRoZSB0YWcgbGlzdFxuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5zb3J0b3JkZXIuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBSZWRpcmVjdHMgYW5kIGZpbGVzOiBBZGQgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICd0YWdzJykpIHtcblx0XHRcdFx0Z2VuZXJhdGVMaW5rcyhjaGVja2JveCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQvLyAkYWxsQ2hlY2tib3hEaXZzIGFuZCAkYWxsSGVhZGVycyBhcmUgZGVmaW5lZCBnbG9iYWxseSwgcmF0aGVyIHRoYW4gaW4gdGhlXG5cdC8vIHF1aWNrZmlsdGVyIGV2ZW50IGZ1bmN0aW9uLCB0byBhdm9pZCBoYXZpbmcgdG8gcmVjb21wdXRlIHRoZW0gb24gZXZlcnkga2V5ZG93blxuXHRsZXQgJGFsbENoZWNrYm94RGl2cztcblx0bGV0ICRhbGxIZWFkZXJzO1xuXHRUd2lua2xlLnRhZy51cGRhdGVTb3J0T3JkZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHtmb3JtfSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHNvcnRvcmRlciA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFR3aW5rbGUudGFnLmNoZWNrZWRUYWdzID0gZm9ybS5nZXRDaGVja2VkKCd0YWdzJyk7XG5cdFx0Y29uc3QgY29udGFpbmVyID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdHR5cGU6ICdmcmFnbWVudCcsXG5cdFx0fSk7XG5cdFx0Ly8gZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSBjaGVja2JveCwgd2l0aCBhcHByb3ByaWF0ZSBzdWJncm91cCBpZiBuZWVkZWRcblx0XHRjb25zdCBtYWtlQ2hlY2tib3ggPSAodGFnLCBkZXNjcmlwdGlvbikgPT4ge1xuXHRcdFx0Y29uc3QgY2hlY2tib3ggPSB7XG5cdFx0XHRcdHZhbHVlOiB0YWcsXG5cdFx0XHRcdGxhYmVsOiBge3ske3RhZ319fTogJHtkZXNjcmlwdGlvbn1gLFxuXHRcdFx0fTtcblx0XHRcdGlmIChUd2lua2xlLnRhZy5jaGVja2VkVGFncy5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdGNoZWNrYm94LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoICh0YWcpIHtcblx0XHRcdFx0Y2FzZSAnRXhwZXJ0IG5lZWRlZCc6XG5cdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXAgPSBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdleHBlcnQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflk6rkuKrpoobln5/nmoTkuJPlrrbvvIjlv4XloavvvInvvJonLCAn5ZOq5YCL6aCY5Z+f55qE5bCI5a6277yI5b+F5aGr77yJ77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5b+F5aGr77yM5Y+v5Y+C6ICDIENhdGVnb3J5OumcgOimgeS4k+S4muS6uuWjq+WFs+azqOeahOmhtemdoiDkvb/nlKjnjrDlrZjnmoTliIbnsbvjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflv4XloavvvIzlj6/lj4PogIMgQ2F0ZWdvcnk66ZyA6KaB5bCI5qWt5Lq65aOr6Zec5rOo55qE6aCB6Z2iIOS9v+eUqOePvuWtmOeahOWIhumhnuOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdleHBlcnQyJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5ZOq5Liq6aKG5Z+f55qE5LiT5a6277yaJywgJ+WTquWAi+mgmOWfn+eahOWwiOWutu+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mAie+8jOWPr+WPguiAgyBDYXRlZ29yeTrpnIDopoHkuJPkuJrkurrlo6vlhbPms6jnmoTpobXpnaIg5L2/55So546w5a2Y55qE5YiG57G744CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YG477yM5Y+v5Y+D6ICDIENhdGVnb3J5OumcgOimgeWwiOalreS6uuWjq+mXnOazqOeahOmggemdoiDkvb/nlKjnj77lrZjnmoTliIbpoZ7jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnZXhwZXJ0MycsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WTquS4qumihuWfn+eahOS4k+Wutu+8micsICflk6rlgIvpoJjln5/nmoTlsIjlrrbvvJonKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgInvvIzlj6/lj4LogIMgQ2F0ZWdvcnk66ZyA6KaB5LiT5Lia5Lq65aOr5YWz5rOo55qE6aG16Z2iIOS9v+eUqOeOsOWtmOeahOWIhuexu+OAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+mBuO+8jOWPr+WPg+iAgyBDYXRlZ29yeTrpnIDopoHlsIjmpa3kurrlo6vpl5zms6jnmoTpoIHpnaIg5L2/55So54++5a2Y55qE5YiG6aGe44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdNZXJnZSc6XG5cdFx0XHRcdGNhc2UgJ01lcmdlIGZyb20nOlxuXHRcdFx0XHRjYXNlICdNZXJnZSB0byc6IHtcblx0XHRcdFx0XHRsZXQgb3RoZXJUYWdOYW1lID0gJ01lcmdlJztcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgZnJvbSc6XG5cdFx0XHRcdFx0XHRcdG90aGVyVGFnTmFtZSA9ICdNZXJnZSB0byc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgdG8nOlxuXHRcdFx0XHRcdFx0XHRvdGhlclRhZ05hbWUgPSAnTWVyZ2UgZnJvbSc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNoZWNrYm94LnN1Ymdyb3VwID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbWVyZ2VUYXJnZXQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhbbku5bmnaHnm67vvJonLCAn5YW25LuW5qKd55uu77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5aaC5oyH5a6a5aSa5Liq5p2h55uu77yM6K+355So566h6YGT56ym5YiG6ZqU77ya5p2h55uu55SyfOadoeebruS5mScsXG5cdFx0XHRcdFx0XHRcdFx0J+WmguaMh+WumuWkmuWAi+aineebru+8jOiri+eUqOeuoemBk+espuWIhumalO+8muaineebrueUsnzmop3nm67kuZknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRsaXN0OiBbXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogJ21lcmdlVGFnT3RoZXInLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGDnlKh7eyR7b3RoZXJUYWdOYW1lfSR7d2luZG93LndnVUxTKCd9feagh+iusOWFtuS7luadoeebricsICd9feaomeiomOWFtuS7luaineebricpfWAsXG5cdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQn5LuF5Zyo5Y+q6L6T5YWl5LqG5LiA5Liq5p2h55uu5ZCN5pe25Y+v55SoJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0J+WDheWcqOWPqui8uOWFpeS6huS4gOWAi+aineebruWQjeaZguWPr+eUqCdcblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXBbY2hlY2tib3guc3ViZ3JvdXAubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ21lcmdlUmVhc29uJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRg5ZCI5bm255CG55Sx77yI5Lya6KKr6LS05LiKJHt0YWcgPT09ICdNZXJnZSB0bycgPyAn5YW25LuWJyA6ICfov5knfeadoeebrueahOiuqOiuuumhte+8ie+8mmAsXG5cdFx0XHRcdFx0XHRcdFx0YOWQiOS9teeQhueUse+8iOacg+iiq+iyvOS4iiR7dGFnID09PSAnTWVyZ2UgdG8nID8gJ+WFtuS7licgOiAn6YCZJ33mop3nm67nmoToqI7oq5bpoIHvvInvvJpgXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YCJ77yM5L2G5by654OI5o6o6I2Q44CC5aaC5LiN6ZyA6KaB6K+355WZ56m644CC5LuF5Zyo5Y+q6L6T5YWl5LqG5LiA5Liq5p2h55uu5ZCN5pe25Y+v55So44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YG477yM5L2G5by354OI5o6o6Jam44CC5aaC5LiN6ZyA6KaB6KuL55WZ56m644CC5YOF5Zyo5Y+q6Ly45YWl5LqG5LiA5YCL5qKd55uu5ZCN5pmC5Y+v55So44CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSAnTWlzc2luZyBpbmZvcm1hdGlvbic6XG5cdFx0XHRcdFx0Y2hlY2tib3guc3ViZ3JvdXAgPSB7XG5cdFx0XHRcdFx0XHRuYW1lOiAnbWlzc2luZ0luZm9ybWF0aW9uJyxcblx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnvLrlsJHnmoTlhoXlrrnvvIjlv4XloavvvInvvJonLCAn57y65bCR55qE5YWn5a6577yI5b+F5aGr77yJ77yaJyksXG5cdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+W/heWhq++8jOaYvuekuuS4uuKAnOe8uuWwkeacieWFs+KApuKApueahOS/oeaBr+OAguKAnScsICflv4XloavvvIzpoa/npLrngrrjgIznvLrlsJHmnInpl5zigKbigKbnmoTos4foqIrjgILjgI0nKSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdOb3RhYmlsaXR5Jzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IHtcblx0XHRcdFx0XHRcdG5hbWU6ICdub3RhYmlsaXR5Jyxcblx0XHRcdFx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl9fe+8miR7d2luZG93LndnVUxTKCfpgJrnlKjnmoTlhbPms6jluqbmjIflvJUnLCAn6YCa55So55qE6Zec5rOo5bqm5oyH5byVJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8QXN0cm99fe+8miR7d2luZG93LndnVUxTKCflpKnkvZMnLCAn5aSp6auUJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0FzdHJvJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEJpb2dyYXBoaWVzfX3vvJoke3dpbmRvdy53Z1VMUygn5Lq654mp5Lyg6K6wJywgJ+S6uueJqeWCs+iomCcpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdCaW9ncmFwaGllcycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxCb29rfX3vvJoke3dpbmRvdy53Z1VMUygn5Lmm57GNJywgJ+abuOexjScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdCb29rJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEN5Y2xvbmV9fe+8miR7d2luZG93LndnVUxTKCfmsJTml4snLCAn5rCj5peLJyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0N5Y2xvbmUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8RmljdGlvbn1977yaJHt3aW5kb3cud2dVTFMoJ+iZmuaehOS6i+eJqScsICfomZvmp4vkuovniaknKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnRmljdGlvbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxHZW9ncmFwaGljfX3vvJoke3dpbmRvdy53Z1VMUygn5Zyw55CG54m55b6BJywgJ+WcsOeQhueJueW+tScpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdHZW9ncmFwaGljJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fEdlb21ldHJ5fX3vvJoke3dpbmRvdy53Z1VMUygn5Yeg5L2V5Zu+5b2iJywgJ+W5vuS9leWcluW9oicpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdHZW9tZXRyeScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxJbnZlbnRpb259fe+8miR7d2luZG93LndnVUxTKCflj5HmmI7jgIHnoJTnqbYnLCAn55m85piO44CB56CU56m2Jyl9YCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ0ludmVudGlvbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxNdXNpY31977yaJHt3aW5kb3cud2dVTFMoJ+mfs+S5kCcsICfpn7PmqIInKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnTXVzaWMnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGB7e05vdGFiaWxpdHl8TnVtYmVyc31977yaJHt3aW5kb3cud2dVTFMoJ+aVsOWtlycsICfmlbjlrZcnKX1gLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnTnVtYmVycycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxPcmdhbml6YXRpb25zfX3vvJoke3dpbmRvdy53Z1VMUygn57uE57uHJywgJ+e1hOe5lCcpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdPcmdhbml6YXRpb25zJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBge3tOb3RhYmlsaXR5fFByb3BlcnR5fX3vvJoke3dpbmRvdy53Z1VMUygn5oCn6LSo6KGoJywgJ+aAp+izquihqCcpfWAsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdQcm9wZXJ0eScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogJ3t7Tm90YWJpbGl0eXxUcmFmZmljfX3vvJrkuqTpgJonLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnVHJhZmZpYycsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogYHt7Tm90YWJpbGl0eXxXZWJ9fe+8miR7d2luZG93LndnVUxTKCfnvZHnq5njgIHnvZHnu5zlhoXlrrknLCAn57ay56uZ44CB57ay6Lev5YWn5a65Jyl977yI6Z2e5q2j5byP5oyH5byV77yJYCxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ1dlYicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1JlcXVlc3RlZCBtb3ZlJzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ21vdmVUYXJnZXQnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlrDlkI3np7DvvJonLCAn5paw5ZCN56ix77yaJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnbW92ZVJlYXNvbicsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYScsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+enu+WKqOeQhueUse+8iOS8muiiq+eymOi0tOivpeadoeebrueahOiuqOiuuumhte+8ie+8micsXG5cdFx0XHRcdFx0XHRcdFx0J+enu+WLleeQhueUse+8iOacg+iiq+iyvOS4iuipsuaineebrueahOiojuirlumgge+8ie+8midcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgInvvIzkvYblvLrng4jmjqjojZDjgILlpoLkuI3pnIDopoHor7fnlZnnqbrjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/pgbjvvIzkvYblvLfng4jmjqjolqbjgILlpoLkuI3pnIDopoHoq4vnlZnnqbrjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1NwbGl0Jzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3RhcmdldDEnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpobXpnaLlkI0x77yaJywgJ+mggemdouWQjTHvvJonKSxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCflj6/pgInjgIInLCAn5Y+v6YG444CCJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAndGFyZ2V0MicsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mhtemdouWQjTLvvJonLCAn6aCB6Z2i5ZCNMu+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+WPr+mAieOAgicsICflj6/pgbjjgIInKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICd0YXJnZXQzJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6aG16Z2i5ZCNM++8micsICfpoIHpnaLlkI0z77yaJyksXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUygn5Y+v6YCJ44CCJywgJ+WPr+mBuOOAgicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdDbGVhbnVwJzpcblx0XHRcdFx0XHRjaGVja2JveC5zdWJncm91cCA9IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2NsZWFudXBSZWFzb24nLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+mcgOimgea4heeQhueahOeQhueUsScsXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YCJ77yM5L2G5by654OI5o6o6I2Q44CC5aaC5LiN6ZyA6KaB6K+355WZ56m644CCJyxcblx0XHRcdFx0XHRcdFx0XHQn5Y+v6YG477yM5L2G5by354OI5o6o6Jam44CC5aaC5LiN6ZyA6KaB6KuL55WZ56m644CCJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGNoZWNrYm94O1xuXHRcdH07XG5cdFx0Y29uc3QgbWFrZUNoZWNrYm94ZXNGb3JBbHJlYWR5UHJlc2VudFRhZ3MgPSAoKSA9PiB7XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdGlkOiAndGFnSGVhZGVyMCcsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suaUvue9rueahOe7tOaKpOagh+iusCcsICflt7LmlL7nva7nmoTntq3orbfmqJnoqJgnKSxcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgc3ViZGl2ID0gY29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRpZDogJ3RhZ1N1YmRpdjAnLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRjb25zdCB1bkNoZWNrZWRUYWdzID0gZS50YXJnZXQuZm9ybS5nZXRVbmNoZWNrZWQoJ2V4aXN0aW5nVGFncycpO1xuXHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzKSB7XG5cdFx0XHRcdGNvbnN0IGNoZWNrYm94ID0ge1xuXHRcdFx0XHRcdHZhbHVlOiB0YWcsXG5cdFx0XHRcdFx0bGFiZWw6IGB7eyR7dGFnfX19JHtcblx0XHRcdFx0XHRcdFR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddXG5cdFx0XHRcdFx0XHRcdD8gYDogJHtUd2lua2xlLnRhZy5hcnRpY2xlLmZsYXRPYmplY3RbdGFnXS5kZXNjcmlwdGlvbn1gXG5cdFx0XHRcdFx0XHRcdDogJydcblx0XHRcdFx0XHR9YCxcblx0XHRcdFx0XHRjaGVja2VkOiAhdW5DaGVja2VkVGFncy5pbmNsdWRlcyh0YWcpLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjaGVja2JveGVzW2NoZWNrYm94ZXMubGVuZ3RoXSA9IGNoZWNrYm94O1xuXHRcdFx0fVxuXHRcdFx0c3ViZGl2LmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdleGlzdGluZ1RhZ3MnLFxuXHRcdFx0XHRsaXN0OiBjaGVja2JveGVzLFxuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRpZiAoc29ydG9yZGVyID09PSAnY2F0Jykge1xuXHRcdFx0Ly8gY2F0ZWdvcmljYWwgc29ydCBvcmRlclxuXHRcdFx0Ly8gZnVuY3Rpb24gdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSB0YWdzIGFuZCBjcmVhdGUgYSBjaGVja2JveCBmb3IgZWFjaCBvbmVcblx0XHRcdGNvbnN0IGRvQ2F0ZWdvcnlDaGVja2JveGVzID0gKHN1YmRpdiwgc3ViZ3JvdXApID0+IHtcblx0XHRcdFx0Y29uc3QgY2hlY2tib3hlcyA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2Ygc3ViZ3JvdXApIHtcblx0XHRcdFx0XHRpZiAoIVR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5pbmNsdWRlcyhpdGVtLnRhZykpIHtcblx0XHRcdFx0XHRcdGNoZWNrYm94ZXNbY2hlY2tib3hlcy5sZW5ndGhdID0gbWFrZUNoZWNrYm94KGl0ZW0udGFnLCBpdGVtLmRlc2NyaXB0aW9uKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c3ViZGl2LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAndGFncycsXG5cdFx0XHRcdFx0bGlzdDogY2hlY2tib3hlcyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9O1xuXHRcdFx0aWYgKFR3aW5rbGUudGFnLmFscmVhZHlQcmVzZW50VGFncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdG1ha2VDaGVja2JveGVzRm9yQWxyZWFkeVByZXNlbnRUYWdzKCk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgaSA9IDE7XG5cdFx0XHQvLyBnbyB0aHJvdWdoIGVhY2ggY2F0ZWdvcnkgYW5kIHN1Yi1jYXRlZ29yeSBhbmQgYXBwZW5kIGxpc3RzIG9mIGNoZWNrYm94ZXNcblx0XHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgVHdpbmtsZS50YWcuYXJ0aWNsZS50YWdMaXN0KSB7XG5cdFx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGlkOiBgdGFnSGVhZGVyJHtpfWAsXG5cdFx0XHRcdFx0bGFiZWw6IGdyb3VwLmtleSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IHN1YmRpdiA9IGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdGlkOiBgdGFnU3ViZGl2JHtpKyt9YCxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChncm91cC52YWx1ZVswXS50YWcpIHtcblx0XHRcdFx0XHRkb0NhdGVnb3J5Q2hlY2tib3hlcyhzdWJkaXYsIGdyb3VwLnZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHN1Ymdyb3VwIG9mIGdyb3VwLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBbTW9yZWJpdHMuaHRtbE5vZGUoJ2InLCBzdWJncm91cC5rZXkpXSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0ZG9DYXRlZ29yeUNoZWNrYm94ZXMoc3ViZGl2LCBzdWJncm91cC52YWx1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGFscGhhYmV0aWNhbCBzb3J0IG9yZGVyXG5cdFx0XHRpZiAoVHdpbmtsZS50YWcuYWxyZWFkeVByZXNlbnRUYWdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0bWFrZUNoZWNrYm94ZXNGb3JBbHJlYWR5UHJlc2VudFRhZ3MoKTtcblx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0aWQ6ICd0YWdIZWFkZXIxJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj6/nlKjnmoTnu7TmiqTmoIforrAnLCAn5Y+v55So55qE57at6K235qiZ6KiYJyksXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Ly8gQXZvaWQgcmVwZWF0ZWRseSByZXNvcnRpbmdcblx0XHRcdFR3aW5rbGUudGFnLmFydGljbGUuYWxwaGFiZXRpY2FsTGlzdCB8fD0gT2JqZWN0LmtleXMoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0KS5zb3J0KCk7XG5cdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBUd2lua2xlLnRhZy5hcnRpY2xlLmFscGhhYmV0aWNhbExpc3QpIHtcblx0XHRcdFx0aWYgKCFUd2lua2xlLnRhZy5hbHJlYWR5UHJlc2VudFRhZ3MuaW5jbHVkZXModGFnKSkge1xuXHRcdFx0XHRcdGNoZWNrYm94ZXNbY2hlY2tib3hlcy5sZW5ndGhdID0gbWFrZUNoZWNrYm94KHRhZywgVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10uZGVzY3JpcHRpb24pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ3RhZ3MnLFxuXHRcdFx0XHRsaXN0OiBjaGVja2JveGVzLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8vIGFwcGVuZCBhbnkgY3VzdG9tIHRhZ3Ncblx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21UYWdMaXN0JykubGVuZ3RoKSB7XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieaooeadvycsICfoh6roqILmqKHmnb8nKSxcblx0XHRcdH0pO1xuXHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICd0YWdzJyxcblx0XHRcdFx0bGlzdDogVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21UYWdMaXN0JykubWFwKChlbCkgPT4ge1xuXHRcdFx0XHRcdGVsLmNoZWNrZWQgPSBUd2lua2xlLnRhZy5jaGVja2VkVGFncy5pbmNsdWRlcyhlbC52YWx1ZSk7XG5cdFx0XHRcdFx0cmV0dXJuIGVsO1xuXHRcdFx0XHR9KSxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCAkd29ya2FyZWEgPSAkKGZvcm0pLmZpbmQoJyN0YWdXb3JrQXJlYScpO1xuXHRcdGNvbnN0IHJlbmRlcmVkID0gY29udGFpbmVyLnJlbmRlcigpO1xuXHRcdCR3b3JrYXJlYS5lbXB0eSgpLmFwcGVuZChyZW5kZXJlZCk7XG5cdFx0Ly8gZm9yIHF1aWNrIGZpbHRlcjpcblx0XHQkYWxsQ2hlY2tib3hEaXZzID0gJHdvcmthcmVhLmZpbmQoJ1tuYW1lPXRhZ3NdLCBbbmFtZT1leGlzdGluZ1RhZ3NdJykucGFyZW50KCk7XG5cdFx0JGFsbEhlYWRlcnMgPSAkd29ya2FyZWEuZmluZCgnaDUsIC5xdWlja2Zvcm1EZXNjcmlwdGlvbicpO1xuXHRcdGZvcm0ucXVpY2tmaWx0ZXIudmFsdWUgPSAnJzsgLy8gY2xlYXIgc2VhcmNoLCBiZWNhdXNlIHRoZSBzZWFyY2ggcmVzdWx0cyBhcmUgbm90IHByZXNlcnZlZCBvdmVyIG1vZGUgY2hhbmdlXG5cdFx0Zm9ybS5xdWlja2ZpbHRlci5mb2N1cygpO1xuXHRcdC8vIHN0eWxlIGFkanVzdG1lbnRzXG5cdFx0JHdvcmthcmVhLmZpbmQoJ2g1JykuY3NzKHtcblx0XHRcdCdmb250LXNpemUnOiAnMTEwJScsXG5cdFx0fSk7XG5cdFx0JHdvcmthcmVhLmZpbmQoJ2g1Om5vdCg6Zmlyc3QtY2hpbGQpJykuY3NzKHtcblx0XHRcdCdtYXJnaW4tdG9wJzogJzFlbScsXG5cdFx0fSk7XG5cdFx0JHdvcmthcmVhLmZpbmQoJ2RpdicpLmZpbHRlcignOmhhcyhzcGFuLnF1aWNrZm9ybURlc2NyaXB0aW9uKScpLmNzcyh7XG5cdFx0XHQnbWFyZ2luLXRvcCc6ICcwLjRlbScsXG5cdFx0fSk7XG5cdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ2V4aXN0aW5nVGFncycpKSB7XG5cdFx0XHRnZW5lcmF0ZUxpbmtzKGNoZWNrYm94KTtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZm9ybSwgJ3RhZ3MnKSkge1xuXHRcdFx0Z2VuZXJhdGVMaW5rcyhjaGVja2JveCk7XG5cdFx0fVxuXHRcdC8vIHRhbGx5IHRhZ3MgYWRkZWQvcmVtb3ZlZCwgdXBkYXRlIHN0YXR1c05vZGUgdGV4dFxuXHRcdGNvbnN0IHN0YXR1c05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdHctdGFnLXN0YXR1cycpO1xuXHRcdCRib2R5LmZpbmQoJ1tuYW1lPXRhZ3NdLCBbbmFtZT1leGlzdGluZ1RhZ3NdJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0aWYgKHRoaXMubmFtZSA9PT0gJ3RhZ3MnKSB7XG5cdFx0XHRcdFR3aW5rbGUudGFnLnN0YXR1cy5udW1BZGRlZCArPSB0aGlzLmNoZWNrZWQgPyAxIDogLTE7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2V4aXN0aW5nVGFncycpIHtcblx0XHRcdFx0VHdpbmtsZS50YWcuc3RhdHVzLm51bVJlbW92ZWQgKz0gdGhpcy5jaGVja2VkID8gLTEgOiAxO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZmlyc3RQYXJ0ID0gYOWKoOWFpSR7VHdpbmtsZS50YWcuc3RhdHVzLm51bUFkZGVkfSR7d2luZG93LndnVUxTKCfkuKrmoIforrAnLCAn5YCL5qiZ6KiYJyl9YDtcblx0XHRcdGNvbnN0IHNlY29uZFBhcnQgPSBg56e76ZmkJHtUd2lua2xlLnRhZy5zdGF0dXMubnVtUmVtb3ZlZH0ke3dpbmRvdy53Z1VMUygn5Liq5qCH6K6wJywgJ+WAi+aomeiomCcpfWA7XG5cdFx0XHRzdGF0dXNOb2RlLnRleHRDb250ZW50ID1cblx0XHRcdFx0KFR3aW5rbGUudGFnLnN0YXR1cy5udW1BZGRlZCA/IGAgICR7Zmlyc3RQYXJ0fWAgOiAnJykgK1xuXHRcdFx0XHQoVHdpbmtsZS50YWcuc3RhdHVzLm51bVJlbW92ZWQgPyAoVHdpbmtsZS50YWcuc3RhdHVzLm51bUFkZGVkID8gJ++8mycgOiAnICAnKSArIHNlY29uZFBhcnQgOiAnJyk7XG5cdFx0fSk7XG5cdH07XG5cdC8qKlxuXHQgKiBBZGRzIGEgbGluayB0byBlYWNoIHRlbXBsYXRlJ3MgZGVzY3JpcHRpb24gcGFnZVxuXHQgKlxuXHQgKiBAcGFyYW0ge01vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50fSBjaGVja2JveCAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZW1wbGF0ZVxuXHQgKi9cblx0Y29uc3QgZ2VuZXJhdGVMaW5rcyA9IChjaGVja2JveCkgPT4ge1xuXHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsICc+Jyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3RhZy10ZW1wbGF0ZS1saW5rJyk7XG5cdFx0Y29uc3QgdGFnbmFtZSA9IGNoZWNrYm94LnZhbHVlcztcblx0XHRsaW5rLnNldEF0dHJpYnV0ZShcblx0XHRcdCdocmVmJyxcblx0XHRcdG13LnV0aWwuZ2V0VXJsKFxuXHRcdFx0XHQodGFnbmFtZS5pbmNsdWRlcygnOicpID8gJycgOiAnVGVtcGxhdGU6JykgK1xuXHRcdFx0XHRcdCh0YWduYW1lLmluY2x1ZGVzKCd8JykgPyB0YWduYW1lLnNsaWNlKDAsIHRhZ25hbWUuaW5kZXhPZignfCcpKSA6IHRhZ25hbWUpXG5cdFx0XHQpXG5cdFx0KTtcblx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdCQoY2hlY2tib3gpLnBhcmVudCgpLmFwcGVuZChbJ1xcdTAwQTAnLCBsaW5rXSk7XG5cdH07XG5cdC8vIFRhZ3MgZm9yIEFSVElDTEVTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS50YWcuYXJ0aWNsZSA9IHt9O1xuXHQvLyBUYWdzIGFycmFuZ2VkIGJ5IGNhdGVnb3J5OyB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFscGhhYmV0aWNhbCBsaXN0LFxuXHQvLyBidXQgdGFncyBzaG91bGQgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIHdpdGhpbiB0aGUgY2F0ZWdvcmllc1xuXHQvLyBleGNsdWRlTUk6IHRydWUgaW5kaWNhdGUgYSB0YWcgdGhhdCAqZG9lcyBub3QqIHdvcmsgaW5zaWRlIHt7bXVsdGlwbGUgaXNzdWVzfX1cblx0Ly8gQWRkIG5ldyBjYXRlZ29yaWVzIHdpdGggZGlzY3JldGlvbiAtIHRoZSBsaXN0IGlzIGxvbmcgZW5vdWdoIGFzIGlzIVxuXHRUd2lua2xlLnRhZy5hcnRpY2xlLnRhZ0xpc3QgPSBbXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+a4heeQhuWSjOe7tOaKpOaooeadvycsICfmuIXnkIblkozntq3orbfmqKHmnb8nKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5bi46KeE5riF55CGJywgJ+W4uOimj+a4heeQhicpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NsZWFudXAnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73pnIDopoHov5vooYzmuIXnkIbvvIzku6XnrKblkIjmsYLpl7vnmb7np5HnmoTotKjph4/moIflh4YnLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73pnIDopoHpgLLooYzmuIXnkIbvvIzku6XnrKblkIjmsYLogZ7nmb7np5HnmoTos6rph4/mqJnmupYnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDbGVhbnVwIHJld3JpdGUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkuI3nrKblkIjmsYLpl7vnmb7np5HnmoTotKjph4/moIflh4bvvIzpnIDopoHlrozlhajph43lhpknLFxuXHRcdFx0XHRcdFx0XHRcdCfkuI3nrKblkIjmsYLogZ7nmb7np5HnmoTos6rph4/mqJnmupbvvIzpnIDopoHlrozlhajph43lr6snXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDbGVhbnVwLWphcmdvbicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WMheWQq+i/h+WkmuihjOivneaIluS4k+S4muacr+ivre+8jOWPr+iDvemcgOimgeeugOWMluaIluaPkOWHuui/m+S4gOatpeino+mHiicsXG5cdFx0XHRcdFx0XHRcdFx0J+WMheWQq+mBjuWkmuihjOipseaIluWwiOalreihk+iqnu+8jOWPr+iDvemcgOimgeewoeWMluaIluaPkOWHuumAsuS4gOatpeino+mHiydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NvcHkgZWRpdCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+mcgOimgee8luS/ru+8jOS7peehruS/neaWh+azleOAgeeUqOivjeOAgeivreawlOOAgeagvOW8j+OAgeagh+eCueetieS9v+eUqOaBsOW9kycsXG5cdFx0XHRcdFx0XHRcdFx0J+mcgOimgee3qOS/ru+8jOS7peeiuuS/neaWh+azleOAgeeUqOipnuOAgeiqnuawo+OAgeagvOW8j+OAgeaomem7nuetieS9v+eUqOaBsOeVtidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCflj6/og73lpJrkvZnnmoTlhoXlrrknLCAn5Y+v6IO95aSa6aSY55qE5YWn5a65JyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQ29weXBhc3RlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5YaF5a655Y+v6IO95piv5LuO5p+Q5Liq5p2l5rqQ5aSE5ou36LSd5ZCO57KY6LS0Jyxcblx0XHRcdFx0XHRcdFx0XHQn5YWn5a655Y+v6IO95piv5b6e5p+Q5YCL5L6G5rqQ6JmV5ou36LKd5b6M6LK85LiKJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnRXh0ZXJuYWwgbGlua3MnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkvb/nlKjlpJbpg6jpk77mjqXnmoTmlrnlvI/lj6/og73kuI3nrKblkIjmsYLpl7vnmb7np5HnmoTmlrnpkognLFxuXHRcdFx0XHRcdFx0XHRcdCfkvb/nlKjlpJbpg6jpgKPntZDnmoTmlrnlvI/lj6/og73kuI3nrKblkIjmsYLogZ7nmb7np5HnmoTmlrnph50nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOb24tZnJlZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvei/h+WkmuaIluS4jeW9k+WcsOS9v+eUqOS6huWPl+iRl+S9nOadg+S/neaKpOeahOaWh+Wtl+OAgeWbvuWDj+aIluWkmuWqkuS9k+aWh+S7ticsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDvemBjuWkmuaIluS4jeeVtuWcsOS9v+eUqOS6huWPl+eJiOasiuS/neitt+eahOaWh+Wtl+OAgeWcluWDj+aIluWkmuWqkumrlOaqlOahiCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCfnu5PmnoTlkozlr7zoqIAnLCAn57WQ5qeL5ZKM5bCO6KiAJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTGVhZCB0b28gbG9uZycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WvvOiogOmDqOWIhuS5n+iuuOi/h+S6juWGl+mVvycsICflsI7oqIDpg6jliIbkuZ/oqLHpgY7mlrzlhpfplbcnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0xlYWQgdG9vIHNob3J0Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+86KiA6YOo5YiG5Lmf6K645LiN6Laz5Lul5qaC5ous5YW25YaF5a65JywgJ+WwjuiogOmDqOWIhuS5n+ioseS4jei2s+S7peamguaLrOWFtuWFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVmVyeSBsb25nJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO96L+H5LqO5YaX6ZW/JywgJ+WPr+iDvemBjuaWvOWGl+mVtycpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+iZmuaehOS9nOWTgeebuOWFs+a4heeQhicsICfomZvmp4vkvZzlk4Hnm7jpl5zmuIXnkIYnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdJbi11bml2ZXJzZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOWwj+ivtOaVheS6i+WGheeahOingueCueaPj+i/sOS4gOS4quiZmuaehOS6i+eJqScsXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOWwj+iqquaVheS6i+WFp+eahOingOm7nuaPj+i/sOS4gOWAi+iZm+ani+S6i+eJqSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0xvbmcgcGxvdCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WPr+iDveWMheWQq+i/h+S6juivpue7hueahOWJp+aDheaRmOimgScsICflj6/og73ljIXlkKvpgY7mlrzoqbPntLDnmoTliofmg4XmkZjopoEnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5bi46KeE5p2h55uu6Zeu6aKYJywgJ+W4uOimj+aineebruWVj+mhjCcpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogJ+mHjeimgeaAp+WSjOefpeWQjeW6picsXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTm90YWJpbGl0eScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WPr+iDveS4jeespuWQiOmAmueUqOWFs+azqOW6puaMh+W8lScsICflj6/og73kuI3nrKblkIjpgJrnlKjpl5zms6jluqbmjIflvJUnKSxcblx0XHRcdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTm90YWJpbGl0eSBVbnJlZmVyZW5jZWQnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73lhbflpIflhbPms6jluqbvvIzkvYbpnIDopoHmnaXmupDliqDku6XlvbDmmL4nLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73lhbflgpnpl5zms6jluqbvvIzkvYbpnIDopoHkvobmupDliqDku6XlvbDpoa8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5YaZ5L2c6aOO5qC8JywgJ+Wvq+S9nOmiqOagvCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0FkdmVydCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+exu+S8vOW5v+WRiuaIluWuo+S8oOaAp+WGheWuuScsICfpoZ7kvLzlu6PlkYrmiJblrqPlgrPmgKflhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0ZhbnBvdicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+exu+S8vOeIseWlveiAhee9kemhtScsICfpoZ7kvLzmhJvlpb3ogIXntrLpoIEnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0hvdy10bycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WMheWQq+aMh+WNl+aIluaVmeWtpuWGheWuuScsICfljIXlkKvmjIfljZfmiJbmlZnlrbjlhaflrrknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0luYXBwcm9wcmlhdGUgcGVyc29uJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5LiN6YCC5b2T55qE56ys5LiA5Lq656ew5ZKM56ys5LqM5Lq656ewJyxcblx0XHRcdFx0XHRcdFx0XHQn5L2/55So5LiN6YGp55W255qE56ys5LiA5Lq656ix5ZKM56ys5LqM5Lq656ixJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnTmV3c3JlbGVhc2UnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfpmIXor7votbfmnaXlg4/mmK/mlrDpl7vnqL/lj4rljIXlkKvov4fluqbnmoTlrqPkvKDmgKfor63osIMnLFxuXHRcdFx0XHRcdFx0XHRcdCfplrHoroDotbfkvoblg4/mmK/mlrDogZ7nqL/lj4rljIXlkKvpgY7luqbnmoTlrqPlgrPmgKfoqp7oqr8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdQcm9zZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOS6huaXpeacn+aIluaXtumXtOWIl+ihqOW8j+iusOi/sO+8jOmcgOimgeaUueWGmeS4uui/nui0r+eahOWPmei/sOaAp+aWh+WtlycsXG5cdFx0XHRcdFx0XHRcdFx0J+S9v+eUqOS6huaXpeacn+aIluaZgumWk+WIl+ihqOW8j+iomOi/sO+8jOmcgOimgeaUueWvq+eCuumAo+iyq+eahOaVmOi/sOaAp+aWh+Wtlydcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1JldmlldycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+mYheivu+i1t+adpeexu+S8vOivhOiuuu+8jOmcgOimgea4heeQhicsICfplrHoroDotbfkvobpoZ7kvLzoqZXoq5bvvIzpnIDopoHmuIXnkIYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1RvbmUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfor63osIPmiJbpo47moLzlj6/og73kuI3pgILlkIjnmb7np5HlhajkuabnmoTlhpnkvZzmlrnlvI8nLFxuXHRcdFx0XHRcdFx0XHRcdCfoqp7oqr/miJbpoqjmoLzlj6/og73kuI3pganlkIjnmb7np5Hlhajmm7jnmoTlr6vkvZzmlrnlvI8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5YaF5a65JywgJ+WFp+WuuScpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7dGFnOiAnTWlzc2luZyBpbmZvcm1hdGlvbicsIGRlc2NyaXB0aW9uOiAn57y65bCR5b+F6KaB55qE5L+h5oGvJ30sIC8vIHRoZXNlIHRocmVlIGhhdmUgYSBzdWJncm91cCB3aXRoIHNldmVyYWwgb3B0aW9uc1xuXHRcdFx0XHRcdFx0e3RhZzogJ1N1YnN0dWInLCBkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfov4fkuo7nn63lsI8nLCAn6YGO5pa855+t5bCPJyksIGV4Y2x1ZGVNSTogdHJ1ZX0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1VuZW5jeWNsb3BlZGljJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO95LiN6YCC5ZCI5YaZ5YWl55m+56eR5YWo5LmmJywgJ+WPr+iDveS4jemBqeWQiOWvq+WFpeeZvuenkeWFqOabuCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+S/oeaBr+WSjOe7huiKgicsICfos4foqIrlkozntLDnr4AnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdFeHBlcnQgbmVlZGVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB57K+6YCa5oiW54af5oKJ5pys5Li76aKY55qE5LiT5Lia5Lq65aOr77yI5LiT5a6277yJ5Y+C5LiO5Y+K5Y2P5Yqp57yW6L6RJyxcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB57K+6YCa5oiW54af5oKJ5pys5Li76aGM55qE5bCI5qWt5Lq65aOr77yI5bCI5a6277yJ5Y+D6IiH5Y+K5Y2U5Yqp57eo6LyvJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT3Zlcmx5IGRldGFpbGVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5YyF5ZCr5aSq5aSa6L+H5bqm57uG6IqC5YaF5a65JywgJ+WMheWQq+WkquWkmumBjuW6pue0sOevgOWFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVHJpdmlhJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5bqU6YG/5YWN5pyJ6ZmI5YiX5p2C6aG544CB55CQ56KO6LWE5paZ55qE6YOo5YiGJyxcblx0XHRcdFx0XHRcdFx0XHQn5oeJ6YG/5YWN5pyJ6Zmz5YiX6Zuc6aCF44CB55Gj56KO6LOH5paZ55qE6YOo5YiGJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+aXtumXtOaApycsICfmmYLplpPmgKcnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDdXJyZW50Jyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6K6w6L+w5paw6Ze75Yqo5oCBJywgJ+iomOi/sOaWsOiBnuWLleaFiycpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdVcGRhdGUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflvZPliY3mnaHnm67miJbnq6DoioLpnIDopoHmm7TmlrAnLCAn55W25YmN5qKd55uu5oiW56ug56+A6ZyA6KaB5pu05pawJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5a6i6KeC5oCn5ZKM5LqL5a6e5YeG56Gu5oCnJywgJ+WuouingOaAp+WSjOS6i+Wvpua6lueiuuaApycpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0F1dG9iaW9ncmFwaHknLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfnsbvkvLzkuIDnr4foh6rkvKDvvIzmiJblhoXlrrnkuLvopoHnlLHmnaHnm67mj4/ov7DnmoTlvZPkuovkurrmiJbnu4Tnu4fmkrDlhpnjgIHnvJbovpEnLFxuXHRcdFx0XHRcdFx0XHRcdCfpoZ7kvLzkuIDnr4foh6rlgrPvvIzmiJblhaflrrnkuLvopoHnlLHmop3nm67mj4/ov7DnmoTnlbbkuovkurrmiJbntYTnuZTmkrDlr6vjgIHnt6jovK8nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDT0knLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfkuLvopoHotKHnjK7ogIXkuI7mnKzmnaHnm67miYDlrqPmiaznmoTlhoXlrrnlj6/og73lrZjlnKjliKnnm4rlhrLnqoEnLFxuXHRcdFx0XHRcdFx0XHRcdCfkuLvopoHosqLnjbvogIXoiIfmnKzmop3nm67miYDlrqPmj5rnmoTlhaflrrnlj6/og73lrZjlnKjliKnnm4rooZ3nqoEnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdEaXNwdXRlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WGheWuueeWkeasoOWHhuehru+8jOacieW+heafpeivgScsICflhaflrrnnlpHmrKDmupbnorrvvIzmnInlvoXmn6XorYknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0dsb2JhbGl6ZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+S7heWFt+acieS4gOmDqOWIhuWcsOWMuueahOS/oeaBr+aIluingueCuScsICflg4XlhbfmnInkuIDpg6jliIblnLDljYDnmoTos4foqIrmiJbop4Dpu54nKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0hvYXgnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnnJ/lrp7mgKfooqvotKjnlpEnLCAn55yf5a+m5oCn6KKr6LOq55aRJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdQT1YnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflrqLop4LmgKfmnInkuonorq7jgILlhoXlrrnjgIHor63osIPlj6/og73luKbmnInmmI7mmL7nmoTkuKrkurrop4LngrnmiJblnLDmlrnoibLlvaknLFxuXHRcdFx0XHRcdFx0XHRcdCflrqLop4DmgKfmnInniK3orbDjgILlhaflrrnjgIHoqp7oqr/lj6/og73luLbmnInmmI7poa/nmoTlgIvkurrop4Dpu57miJblnLDmlrnoibLlvaknXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdTZWxmLWNvbnRyYWRpY3RvcnknLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflhoXlrrnoh6rnm7jnn5vnm74nLCAn5YWn5a656Ieq55u455+b55u+JyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdXZWFzZWwnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfor63kuYnmqKHmo7HkuKTlj6/ogIzmjZ/lj4rlhbblrqLop4LmgKfmiJblh4bnoa7mgKcnLFxuXHRcdFx0XHRcdFx0XHRcdCfoqp7mhI/mqKHmo7Hlhanlj6/ogIzmkI3lj4rlhbblrqLop4DmgKfmiJbmupbnorrmgKcnXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5Y+v5L6b5p+l6K+B5ZKM5p2l5rqQJywgJ+WPr+S+m+afpeitieWSjOS+hua6kCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0JMUGRpc3B1dGUnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73ov53lj43kuobmsYLpl7vnmb7np5HlhbPkuo7nlJ/ogIXkvKDorrDnmoTmlrnpkognLFxuXHRcdFx0XHRcdFx0XHRcdCflj6/og73pgZXlj43kuobmsYLogZ7nmb7np5Hpl5zmlrznlJ/ogIXlgrPoqJjnmoTmlrnph50nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdCTFBzb3VyY2VzJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn55Sf6ICF5Lyg6K6w6ZyA6KaB6KGl5YWF5pu05aSa5Y+v5L6b5p+l6K+B55qE5p2l5rqQJyxcblx0XHRcdFx0XHRcdFx0XHQn55Sf6ICF5YKz6KiY6ZyA6KaB6KOc5YWF5pu05aSa5Y+v5L6b5p+l6K2J55qE5L6G5rqQJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnQkxQIHVuc291cmNlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+eUn+iAheS8oOiusOayoeacieWIl+WHuuS7u+S9leWPguiAg+aIluadpea6kCcsXG5cdFx0XHRcdFx0XHRcdFx0J+eUn+iAheWCs+iomOaykuacieWIl+WHuuS7u+S9leWPg+iAg+aIluS+hua6kCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0NpdGVjaGVjaycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDveWMheWQq+S4jemAgueUqOaIluiiq+absuino+eahOW8leeUqOi1hOaWme+8jOmDqOWIhuWGheWuueeahOWHhuehruaAp+aXoOazleiiq+ivgeWunicsXG5cdFx0XHRcdFx0XHRcdFx0J+WPr+iDveWMheWQq+S4jemBqeeUqOaIluiiq+absuino+eahOW8leeUqOizh+aWme+8jOmDqOWIhuWFp+WuueeahOa6lueiuuaAp+eEoeazleiiq+itieWvpidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ01vcmUgZm9vdG5vdGVzIG5lZWRlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WboOS4uuaWh+WGheW8leeUqOS4jei2s++8jOmDqOWIhuWtl+WPpeeahOadpea6kOS7jeeEtuS4jeaYjicsXG5cdFx0XHRcdFx0XHRcdFx0J+WboOeCuuaWh+WFp+W8leeUqOS4jei2s++8jOmDqOWIhuWtl+WPpeeahOS+hua6kOS7jeeEtuS4jeaYjidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ05vIGZvb3Rub3RlcycsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WboOS4uuayoeacieWGheaWh+W8leeUqOiAjOadpea6kOS7jeeEtuS4jeaYjicsXG5cdFx0XHRcdFx0XHRcdFx0J+WboOeCuuaykuacieWFp+aWh+W8leeUqOiAjOS+hua6kOS7jeeEtuS4jeaYjidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ09uZXNvdXJjZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aegeWkp+aIluWujOWFqOWcsOS+nei1luS6juafkOS4quWNleS4gOeahOadpea6kCcsXG5cdFx0XHRcdFx0XHRcdFx0J+alteWkp+aIluWujOWFqOWcsOS+neiztOaWvOafkOWAi+WWruS4gOeahOS+hua6kCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ09yaWdpbmFsIHJlc2VhcmNoJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Y+v6IO95YyF5ZCr5Y6f5Yib56CU56m25oiW5pyq5p+l6K+B5YaF5a65JywgJ+WPr+iDveWMheWQq+WOn+WJteeglOeptuaIluacquafpeitieWFp+WuuScpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnUHJpbWFyeXNvdXJjZXMnLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfkvp3otZbnrKzkuIDmiYvmnaXmupAnLCAn5L6d6LO056ys5LiA5omL5L6G5rqQJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdSZWZpbXByb3ZlJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6ZyA6KaB6KGl5YWF5pu05aSa5p2l5rqQJywgJ+mcgOimgeijnOWFheabtOWkmuS+hua6kCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnVW5yZWZlcmVuY2VkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5rKh5pyJ5YiX5Ye65Lu75L2V5Y+C6ICD5oiW5p2l5rqQJywgJ+aykuacieWIl+WHuuS7u+S9leWPg+iAg+aIluS+hua6kCcpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCflhbfkvZPlhoXlrrnpl67popgnLCAn5YW36auU5YWn5a655ZWP6aGMJyksXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+ivreiogCcsICfoqp7oqIAnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdOb3RNYW5kYXJpbicsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WMheWQq+i/h+WkmuS4jeaYr+eOsOS7o+agh+WHhuaxieivreeahOWGheWuuScsXG5cdFx0XHRcdFx0XHRcdFx0J+WMheWQq+mBjuWkmuS4jeaYr+ePvuS7o+aomea6lua8ouiqnueahOWFp+WuuSdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnUm91Z2ggdHJhbnNsYXRpb24nLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnv7vor5Hlk4HotKjkuI3kvbMnLCAn57+76K2v5ZOB6LOq5LiN5L2zJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6ZO+5o6lJywgJ+mAo+e1kCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ0RlYWQgZW5kJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB5Yqg5LiK5YaF6YOo6ZO+5o6l5Lul5p6E562R55m+56eR5YWo5Lmm55qE6ZO+5o6l572R57ucJyxcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB5Yqg5LiK5YWn6YOo6YCj57WQ5Lul5qeL56+J55m+56eR5YWo5pu455qE6YCj57WQ57ay57WhJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT3JwaGFuJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5rKh5pyJ5oiW5Y+q5pyJ5b6I5bCR6ZO+5YWl6aG16Z2iJywgJ+aykuacieaIluWPquacieW+iOWwkemAo+WFpemggemdoicpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnT3ZlcmxpbmtlZCcsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+WQq+aciei/h+WkmuOAgemHjeWkjeOAgeaIluS4jeW/heimgeeahOWGhemDqOmTvuaOpScsXG5cdFx0XHRcdFx0XHRcdFx0J+WQq+aciemBjuWkmuOAgemHjeikh+OAgeaIluS4jeW/heimgeeahOWFp+mDqOmAo+e1kCdcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhZzogJ1VuZGVybGlua2VkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB5pu05aSa5YaF6YOo6ZO+5o6l5Lul5p6E562R55m+56eR5YWo5Lmm55qE6ZO+5o6l572R57ucJyxcblx0XHRcdFx0XHRcdFx0XHQn6ZyA6KaB5pu05aSa5YWn6YOo6YCj57WQ5Lul5qeL56+J55m+56eR5YWo5pu455qE6YCj57WQ57ay57WhJ1xuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WPguiAg+aKgOacrycsICflj4PogIPmioDooZMnKSxcblx0XHRcdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdDaXRhdGlvbiBzdHlsZScsXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W8leeUqOmcgOimgei/m+ihjOa4heeQhicsICflvJXnlKjpnIDopoHpgLLooYzmuIXnkIYnKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogd2luZG93LndnVUxTKCfliIbnsbsnLCAn5YiG6aGeJyksXG5cdFx0XHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGFnOiAnSW1wcm92ZSBjYXRlZ29yaWVzJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6ZyA6KaB5pu05aSa6aG16Z2i5YiG57G7JywgJ+mcgOimgeabtOWkmumggemdouWIhumhnicpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YWc6ICdVbmNhdGVnb3JpemVkJyxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn57y65bCR6aG16Z2i5YiG57G7JywgJ+e8uuWwkemggemdouWIhumhnicpLFxuXHRcdFx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WQiOW5tuOAgeaLhuWIhuOAgeenu+WKqCcsICflkIjkvbXjgIHmi4bliIbjgIHnp7vli5UnKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdNZXJnZSBmcm9tJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflu7rorq7lsIbpobXpnaLlubblhaXmraTpobXpnaInLCAn5bu66K2w5bCH6aCB6Z2i5L215YWl5q2k6aCB6Z2iJyksXG5cdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAnTWVyZ2UgdG8nLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W7uuiuruWwhuatpOmhtemdouW5tuWFpemhtemdoicsICflu7rorbDlsIfmraTpoIHpnaLkvbXlhaXpoIHpnaInKSxcblx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICdNZXJnZScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5bu66K6u5q2k6aG16Z2i5LiO6aG16Z2i5ZCI5bm2JywgJ+W7uuitsOatpOmggemdouiIh+mggemdouWQiOS9tScpLFxuXHRcdFx0XHRcdGV4Y2x1ZGVNSTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ1JlcXVlc3RlZCBtb3ZlJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCflu7rorq7lsIbmraTpobXpnaLnp7vliqjliLDmlrDlkI3np7AnLCAn5bu66K2w5bCH5q2k6aCB6Z2i56e75YuV5Yiw5paw5ZCN56ixJyksXG5cdFx0XHRcdFx0ZXhjbHVkZU1JOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAnU3BsaXQnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W7uuiuruWwhuatpOmhtemdouWIhuWJsuS4uuWkmuS4qumhtemdoicsICflu7rorbDlsIfmraTpoIHpnaLliIblibLngrrlpJrlgIvpoIHpnaInKSxcblx0XHRcdFx0XHRleGNsdWRlTUk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdF07XG5cdC8vIFRhZ3MgZm9yIFJFRElSRUNUUyBzdGFydCBoZXJlXG5cdC8vIE5vdCBieSBwb2xpY3ksIGJ1dCB0aGUgbGlzdCByb3VnaGx5IGFwcHJveGltYXRlcyBpdGVtcyB3aXRoID41MDBcblx0Ly8gdHJhbnNjbHVzaW9ucyBmcm9tIFRlbXBsYXRlOlIgdGVtcGxhdGUgaW5kZXhcblx0VHdpbmtsZS50YWcucmVkaXJlY3RMaXN0ID0gW1xuXHRcdHtcblx0XHRcdGtleTogJ+W4uOeUqOaooeadvycsXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+WQiOW5tumHjeWumuWQkScsICflkIjkvbXph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+S/neaMgemhtemdoumimOWQjeiHs+ebuOW6lOS4u+adoeebru+8jOS7pOmhtemdouWGheWuueWcqOWQiOW5tuWQjuS7jeiDveS/neWtmOWFtue8lui+keWOhuWPsicsXG5cdFx0XHRcdFx0XHQn5L+d5oyB6aCB6Z2i6aGM5ZCN6Iez55u45oeJ5Li75qKd55uu77yM5Luk6aCB6Z2i5YWn5a655Zyo5ZCI5L215b6M5LuN6IO95YSy5a2Y5YW257eo6Lyv5q235Y+yJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn566A57mB6YeN5a6a5ZCRJywgJ+ewoee5gemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+W8leWvvOeugOS9k+iHs+e5geS9k++8jOaIlue5geS9k+iHs+eugOS9kycsICflvJXlsI7nsKHpq5Toh7PnuYHpq5TvvIzmiJbnuYHpq5Toh7PnsKHpq5QnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCflhbPms6jluqbph43lrprlkJEnLCAn6Zec5rOo5bqm6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfnvLrkuY/lhbPms6jluqbnmoTlrZDkuLvpopjlkJHmnInlhbPms6jluqbnmoTmr43kuLvpopjnmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0J+e8uuS5j+mXnOazqOW6pueahOWtkOS4u+mhjOWQkeaciemXnOazqOW6pueahOavjeS4u+mhjOeahOmHjeWumuWQkSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5qih5p2/6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmjIflkJHmqKHmnb/nmoTph43lrprlkJHpobXpnaInLCAn5oyH5ZCR5qih5p2/55qE6YeN5a6a5ZCR6aCB6Z2iJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5Yir5ZCN6YeN5a6a5ZCRJywgJ+WIpeWQjemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5qCH6aKY55qE5YW25LuW5ZCN56ew44CB56yU5ZCN44CB57uw5Y+344CB5ZCM5LmJ5a2X562JJyxcblx0XHRcdFx0XHRcdCfmqJnpoYznmoTlhbbku5blkI3nqLHjgIHnrYblkI3jgIHntr3omZ/jgIHlkIznvqnlrZfnrYknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfor5HlkI3ph43lrprlkJEnLCAn6K2v5ZCN6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfkurrnianjgIHkvZzlk4HnrYnlkITpobnkuovniannmoTlhbbku5bnv7vor5HlkI3np7AnLFxuXHRcdFx0XHRcdFx0J+S6uueJqeOAgeS9nOWTgeetieWQhOmgheS6i+eJqeeahOWFtuS7lue/u+itr+WQjeeosSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+e8qeWGmemHjeWumuWQkScsICfnuK7lr6vph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmoIfpopjnvKnlhpknLCAn5qiZ6aGM57iu5a+rJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5ou85YaZ6YeN5a6a5ZCRJywgJ+aLvOWvq+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+agh+mimOeahOWFtuS7luS4jeWQjOaLvOWGmScsICfmqJnpoYznmoTlhbbku5bkuI3lkIzmi7zlr6snKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfplJnlrZfph43lrprlkJEnLCAn6Yyv5a2X6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn57qg5q2j5qCH6aKY55qE5bi46KeB6ZSZ6K+v5ou85YaZ5oiW6K+v5qSNJywgJ+ezvuato+aomemhjOeahOW4uOimi+mMr+iqpOaLvOWvq+aIluiqpOakjScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+aXp+WQjemHjeWumuWQkScsICfoiIrlkI3ph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WwhuS6i+eJqeaXqeWJjeeahOWQjeensOW8leWvvOiHs+abtOaUueWQjueahOS4u+mimCcsXG5cdFx0XHRcdFx0XHQn5bCH5LqL54mp5pep5YmN55qE5ZCN56ix5byV5bCO6Iez5pu05pS55b6M55qE5Li76aGMJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflhajlkI3ph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+agh+mimOeahOWujOaVtOaIluabtOWujOaVtOWQjeensCcsICfmqJnpoYznmoTlrozmlbTmiJbmm7TlrozmlbTlkI3nqLEnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+efreWQjemHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflrozmlbTmoIfpopjlkI3np7DmiJbkurrnianlhajlkI3nmoTpg6jliIbjgIHkuI3lrozmlbTnmoTlkI3np7DmiJbnroDnp7AnLFxuXHRcdFx0XHRcdFx0J+WujOaVtOaomemhjOWQjeeoseaIluS6uueJqeWFqOWQjeeahOmDqOWIhuOAgeS4jeWujOaVtOeahOWQjeeoseaIluewoeeosSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5aeT5rCP6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogJ+S6uueJqeWnk+awjycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6ICflkI3lrZfph43lrprlkJEnLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiAn5Lq654mp5Lq65ZCNJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+acrOWQjemHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246ICfkurrnianmnKzlkI0nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn6Z2e5Lit5paH6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfpnZ7kuK3mlofmoIfpopgnLCAn6Z2e5Lit5paH5qiZ6aGMJyksXG5cdFx0XHRcdFx0c3ViZ3JvdXA6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2FsdExhbmdGcm9tJyxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICfmnKzph43mlrDlsI7lkJHnmoToqp7oqIDvvIjlj6/pgbjvvIknLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOlxuXHRcdFx0XHRcdFx0XHRcdCfovLjlhaXph43mlrDlsI7lkJHlkI3nqLHmiYDkvb/nlKjoqp7oqIDnmoRJU08gNjM55Luj56K877yM5L6L5aaCZW7ku6Pooajoi7Hoqp7vvIzku6Pnorzlj6/lj4PoposgVGVtcGxhdGU6SVNPXzYzOV9uYW1lJyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+aXpeaWh+mHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5pel6K+t5ZCN56ewJywgJ+aXpeiqnuWQjeeosScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogJ+WBtueUqOaooeadvycsXG5cdFx0XHR2YWx1ZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn6KeS6Imy6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfnlLXop4bliafjgIHnlLXlvbHjgIHkuabnsY3nrYnkvZzlk4HnmoTop5LoibInLCAn6Zu76KaW5YqH44CB6Zu75b2x44CB5pu457GN562J5L2c5ZOB55qE6KeS6ImyJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn56ug6IqC6YeN5a6a5ZCRJywgJ+eroOevgOmHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+WvvOWQkeiHs+i+g+mrmOWvhuW6pue7hOe7h+eahOmhtemdoicsICflsI7lkJHoh7PovIPpq5jlr4bluqbntYTnuZTnmoTpoIHpnaInKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+WIl+ihqOmHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+85ZCR6Iez5L2O5a+G5bqm55qE5YiX6KGoJywgJ+WwjuWQkeiHs+S9juWvhuW6pueahOWIl+ihqCcpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5Y+v6IO95oCn6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WvvOWQkeiHs+W9k+WJjeaPkOS+m+WGheWuueabtOS4uuivpuWwveeahOebruagh+mhtemdoicsXG5cdFx0XHRcdFx0XHQn5bCO5ZCR6Iez55W25YmN5o+Q5L6b5YWn5a655pu054K66Kmz55uh55qE55uu5qiZ6aCB6Z2iJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5YWz6IGU5a2X6YeN5a6a5ZCRJywgJ+mXnOiBr+Wtl+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+agh+mimOWQjeensOWFs+iBlOWtlycsICfmqJnpoYzlkI3nqLHpl5zoga/lrZcnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogd2luZG93LndnVUxTKCfmnaHnm67or7fmsYLph43lrprlkJEnLCAn5qKd55uu6KuL5rGC6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn6ZyA6KaB54us56uL5p2h55uu55qE6aG16Z2iJywgJ+mcgOimgeeNqOeri+aineebrueahOmggemdoicpLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdyZXFBcnRpY2xlTGFuZycsXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5aSW6Kqe6Kqe6KiA5Luj56K877yaJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogJ+S9v+eUqElTTyA2Mznku6PnorzvvIzlj6/lj4PoposgVGVtcGxhdGU6SVNPXzYzOV9uYW1lJyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdyZXFBcnRpY2xlVGl0bGUnLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+WkluiqnumggemdouWQjeeose+8micsXG5cdFx0XHRcdFx0XHRcdHNpemU6IDYwLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+W/q+aNt+aWueW8j+mHjeWumuWQkScsICfmjbflvpHph43lrprlkJEnKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfmsYLpl7vnmb7np5Hlv6vmjbfmlrnlvI8nLCAn5rGC6IGe55m+56eR5b+r5o235pa55byPJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+mynOeUqOaooeadvycsICfprq7nlKjmqKHmnb8nKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn6K+N57uE6YeN5a6a5ZCRJywgJ+ipnue1hOmHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5bCG6K+N57uEL+ivjee7hC/miJDor63mjIflkJHliIfpopjnmoTmnaHnm67lj4rmgbDlvZPnq6DoioInLFxuXHRcdFx0XHRcdFx0J+Wwh+ipnue1hC/oqZ7ntYQv5oiQ6Kqe5oyH5ZCR5YiH6aGM55qE5qKd55uu5Y+K5oGw55W256ug56+AJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn5raI5q2n5LmJ6aG16YeN5a6a5ZCRJywgJ+a2iOatp+e+qemggemHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+aMh+WQkea2iOatp+S5iemhtScsICfmjIflkJHmtojmrafnvqnpoIEnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+Wfn+WQjemHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5Z+f5ZCNJywgJ+e2suWfn+WQjeeosScpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAn5bm05Luj6YeN5a6a5ZCRJyxcblx0XHRcdFx0XHRkZXNjcmlwdGlvbjogd2luZG93LndnVUxTKCfkuo7lubTku73mnaHnm67lr7zlkJHoh7PlubTku6PmnaHnm64nLCAn5pa85bm05Lu95qKd55uu5bCO5ZCR6Iez5bm05Luj5qKd55uuJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0YWc6IHdpbmRvdy53Z1VMUygn55So5oi35qGG5qih5p2/6YeN5a6a5ZCRJywgJ+eUqOaItuahhuaooeadv+mHjeWumuWQkScpLFxuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB3aW5kb3cud2dVTFMoJ+eUqOaIt+ahhuaooeadvycsICfnlKjmiLbmoYbmqKHmnb8nKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRhZzogJ+mHjeWumuWQkeaooeadv+eUqOmHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygn5a+85ZCR6Iez6YeN5a6a5ZCR5qih5p2/JywgJ+WwjuWQkeiHs+mHjeWumuWQkeaooeadvycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGFnOiAnRVhJRumHjeWumuWQkScsXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHdpbmRvdy53Z1VMUygnSlBFR+WbvuWDj+aWh+S7tuWMheWQq0VYSUbkv6Hmga8nLCAnSlBFR+WcluaqlOWMheWQq0VYSUbos4foqIonKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XTtcblx0Ly8gbWFpbnRlbmFuY2UgdGFncyBmb3IgRklMRVMgc3RhcnQgaGVyZVxuXHRUd2lua2xlLnRhZy5maWxlTGlzdCA9IFtcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6JGX5L2c5p2D5ZKM5p2l5rqQ6Zeu6aKY5qCH562+JywgJ+iRl+S9nOasiuWSjOS+hua6kOWVj+mhjOaomeexpCcpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3tOb24tZnJlZSByZWR1Y2V9fe+8miR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+mdnuS9juWIhui+qOeOh+eahOWQiOeQhuS9v+eUqOWbvuWDj++8iOaIlui/h+mVv+eahOmfs+mikeWJqui+keetie+8iScsXG5cdFx0XHRcdFx0XHQn6Z2e5L2O6Kej5p6Q5bqm55qE5ZCI55CG5L2/55So5ZyW5YOP77yI5oiW6YGO6ZW355qE6Z+z6aC75Ymq6Lyv562J77yJJ1xuXHRcdFx0XHRcdCl9YCxcblx0XHRcdFx0XHR2YWx1ZTogJ05vbi1mcmVlIHJlZHVjZScsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+a4heeQhuagh+etvicsICfmuIXnkIbmqJnnsaQnKSxcblx0XHRcdHZhbHVlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7V2F0ZXJtYXJrfX3vvJoke3dpbmRvdy53Z1VMUygn5Zu+5YOP5YyF5ZCr5LqG5rC05Y2wJywgJ+WcluWDj+WMheWQq+S6hua1ruawtOWNsCcpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdXYXRlcm1hcmsnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e1JlbmFtZSBtZWRpYX1977yaJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5paH5Lu25bqU6K+l5qC55o2u5paH5Lu25ZCN56ew5oyH5byV6KKr6YeN5ZG95ZCNJyxcblx0XHRcdFx0XHRcdCfmqpTmoYjmh4noqbLmoLnmk5rmqpTmoYjlkI3nqLHmjIflvJXooqvph43mlrDlkb3lkI0nXG5cdFx0XHRcdFx0KX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAnUmVuYW1lIG1lZGlhJyxcblx0XHRcdFx0XHRzdWJncm91cDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAncmVuYW1lbWVkaWFOZXduYW1lJyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5paw5ZCN56ew77yaJywgJ+aWsOWQjeeose+8micpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoJ+i+k+WFpeWbvuWDj+eahOaWsOWQjeensO+8iOWPr+mAie+8iScsICfovLjlhaXlnJblg4/nmoTmlrDlkI3nqLHvvIjlj6/pgbjvvIknKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdyZW5hbWVtZWRpYVJlYXNvbicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiAn5Y6f5Zug77yaJyxcblx0XHRcdFx0XHRcdFx0dG9vbHRpcDogd2luZG93LndnVUxTKCfovpPlhaXph43lkb3lkI3nmoTljp/lm6DvvIjlj6/pgInvvIknLCAn6Ly45YWl6YeN5paw5ZG95ZCN55qE5Y6f5Zug77yI5Y+v6YG477yJJyksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogYHt7U2hvdWxkIGJlIFNWR31977yaJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQnUE5H44CBR0lG44CBSlBFR+aWh+S7tuW6lOivpemHjeWItuaIkOefoumHj+WbvuW9oicsXG5cdFx0XHRcdFx0XHQnUE5H44CBR0lG44CBSlBFR+aqlOahiOaHieipsumHjeijveaIkOWQkemHj+WcluW9oidcblx0XHRcdFx0XHQpfWAsXG5cdFx0XHRcdFx0dmFsdWU6ICdTaG91bGQgYmUgU1ZHJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn5paH5Lu25Y+W5Luj5qCH562+JywgJ+aqlOahiOWPluS7o+aomeexpCcpLFxuXHRcdFx0dmFsdWU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiBge3tPYnNvbGV0ZX1977yaJHt3aW5kb3cud2dVTFMoJ+acieaWsOeJiOacrOWPr+eUqOeahOi/h+aXtuaWh+S7ticsICfmnInmlrDniYjmnKzlj6/nlKjnmoTpgY7mmYLmqpTmoYgnKX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAnT2Jzb2xldGUnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6IGB7e1ZlY3RvciB2ZXJzaW9uIGF2YWlsYWJsZX1977yaJHt3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5pyJ55+i6YeP5Zu+5b2i5Y+v55So55qE6Z2e55+i6YeP5Zu+5b2i5paH5Lu2Jyxcblx0XHRcdFx0XHRcdCfmnInlkJHph4/lnJblvaLlj6/nlKjnmoTpnZ7lkJHph4/lnJblvaLmqpTmoYgnXG5cdFx0XHRcdFx0KX1gLFxuXHRcdFx0XHRcdHZhbHVlOiAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0XHRidWlsZEZpbGVuYW1lOiB0cnVlLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUudGFnLmNhbGxiYWNrcyA9IHtcblx0XHRhcnRpY2xlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Ly8gUmVtb3ZlIHRhZ3MgdGhhdCBiZWNvbWUgc3VwZXJmbHVvdXMgd2l0aCB0aGlzIGFjdGlvblxuXHRcdFx0bGV0IHBhZ2VUZXh0ID0gcGFnZW9ialxuXHRcdFx0XHQuZ2V0UGFnZVRleHQoKVxuXHRcdFx0XHQucmVwbGFjZShcblx0XHRcdFx0XHQvXFx7XFx7XFxzKihbTm5dZXcgdW5yZXZpZXdlZCBhcnRpY2xlfFtVdV1ucmV2aWV3ZWR8W1V1XXNlcnNwYWNlIGRyYWZ0KVxccyooXFx8KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKSopP1xcfVxcfVxccyovZyxcblx0XHRcdFx0XHQnJ1xuXHRcdFx0XHQpO1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdC8qKlxuXHRcdFx0ICogU2F2ZXMgdGhlIHBhZ2UgZm9sbG93aW5nIHRoZSByZW1vdmFsIG9mIHRhZ3MgaWYgYW55LiBUaGUgbGFzdCBzdGVwLlxuXHRcdFx0ICogQ2FsbGVkIGZyb20gcmVtb3ZlVGFncygpXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IHBvc3RSZW1vdmFsID0gKCkgPT4ge1xuXHRcdFx0XHRpZiAocGFyYW1zLnRhZ3NUb1JlbW92ZS5sZW5ndGgpIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgZW1wdHkge3ttdWx0aXBsZSBpc3N1ZXN9fSBpZiBmb3VuZFxuXHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdC9cXHtcXHsobXVsdGlwbGUgP2lzc3Vlc3xhcnRpY2xlID9pc3N1ZXN8bWl8YWl8aXNzdWVzfOWkmuWAi+WVj+mhjHzlpJrkuKrpl67poph85ZWP6aGM5qKd55uufOmXrumimOadoeebrnzmlbjlgIvllY/poYx85pWw5Liq6Zeu6aKYKVxccypcXHxcXHMqXFx9XFx9XFxuPy9pbSxcblx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHQvLyBSZW1vdmUgc2luZ2xlLWVsZW1lbnQge3ttdWx0aXBsZSBpc3N1ZXN9fSBpZiBmb3VuZFxuXHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdC9cXHtcXHsoPzptdWx0aXBsZSA/aXNzdWVzfGFydGljbGUgP2lzc3Vlc3xtaXxhaXxpc3N1ZXN85aSa5YCL5ZWP6aGMfOWkmuS4qumXrumimHzllY/poYzmop3nm6586Zeu6aKY5p2h55uufOaVuOWAi+WVj+mhjHzmlbDkuKrpl67popgpXFxzKlxcfFxccyooXFx7XFx7KD86XFx7XFx7W157fV0qXFx9XFx9fFtee31dKStcXH1cXH0pXFxzKlxcfVxcfS9pbSxcblx0XHRcdFx0XHRcdCckMSdcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEJ1aWxkIGVkaXQgc3VtbWFyeVxuXHRcdFx0XHRjb25zdCBtYWtlU2VudGVuY2UgPSAoYXJyYXkpID0+IHtcblx0XHRcdFx0XHRpZiAoYXJyYXkubGVuZ3RoIDwgMykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFycmF5LmpvaW4oJ+WSjCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBsYXN0ID0gYXJyYXkucG9wKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGAke2FycmF5LmpvaW4oJ+OAgScpfeWSjCR7bGFzdH1gO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBtYWtlVGVtcGxhdGVMaW5rID0gKHRhZykgPT4ge1xuXHRcdFx0XHRcdGxldCB0ZXh0ID0gJ3t7W1snO1xuXHRcdFx0XHRcdC8vIGlmIGl0IGlzIGEgY3VzdG9tIHRhZyB3aXRoIGEgcGFyYW1ldGVyXG5cdFx0XHRcdFx0aWYgKHRhZy5pbmNsdWRlcygnfCcpKSB7XG5cdFx0XHRcdFx0XHR0YWcgPSB0YWcuc2xpY2UoMCwgdGFnLmluZGV4T2YoJ3wnKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRleHQgKz0gdGFnLmluY2x1ZGVzKCc6JykgPyB0YWcgOiBgVGVtcGxhdGU6JHt0YWd9fCR7dGFnfWA7XG5cdFx0XHRcdFx0cmV0dXJuIGAke3RleHR9XV19fWA7XG5cdFx0XHRcdH07XG5cdFx0XHRcdGxldCBzdW1tYXJ5VGV4dDtcblx0XHRcdFx0Y29uc3QgYWRkZWRUYWdzID0gcGFyYW1zLnRhZ3MubWFwKG1ha2VUZW1wbGF0ZUxpbmspO1xuXHRcdFx0XHRjb25zdCByZW1vdmVkVGFncyA9IHBhcmFtcy50YWdzVG9SZW1vdmUubWFwKG1ha2VUZW1wbGF0ZUxpbmspO1xuXHRcdFx0XHRpZiAoYWRkZWRUYWdzLmxlbmd0aCkge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ID0gYOWKoOWFpSR7bWFrZVNlbnRlbmNlKGFkZGVkVGFncyl9YDtcblx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSByZW1vdmVkVGFncy5sZW5ndGggPyBg5Lim56e76ZmkJHttYWtlU2VudGVuY2UocmVtb3ZlZFRhZ3MpfWAgOiAnJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdW1tYXJ5VGV4dCA9IGDnp7vpmaQke21ha2VTZW50ZW5jZShyZW1vdmVkVGFncyl9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdW1tYXJ5VGV4dCArPSB3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKTtcblx0XHRcdFx0aWYgKHBhcmFtcy5yZWFzb24pIHtcblx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSBg77yaJHtwYXJhbXMucmVhc29ufWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gYXZvaWQgdHJ1bmNhdGVkIHN1bW1hcmllc1xuXHRcdFx0XHRpZiAoc3VtbWFyeVRleHQubGVuZ3RoID4gNDk5KSB7XG5cdFx0XHRcdFx0c3VtbWFyeVRleHQgPSBzdW1tYXJ5VGV4dC5yZXBsYWNlKC9cXFtcXFtbXnxdK1xcfChbXlxcXV0rKVxcXVxcXS9nLCAnJDEnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHBhZ2VUZXh0KTtcblx0XHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShzdW1tYXJ5VGV4dCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoVGFnZ2VkUGFnZXMnKSk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0TWlub3JFZGl0KFR3aW5rbGUuZ2V0UHJlZignbWFya1RhZ2dlZFBhZ2VzQXNNaW5vcicpKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRcdHBhZ2VvYmouc2F2ZSgoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gc3BlY2lhbCBmdW5jdGlvbnMgZm9yIG1lcmdlIHRhZ3Ncblx0XHRcdFx0XHRpZiAocGFyYW1zLm1lcmdlUmVhc29uKSB7XG5cdFx0XHRcdFx0XHQvLyBwb3N0IHRoZSByYXRpb25hbGUgb24gdGhlIHRhbGsgcGFnZSAob25seSBvcGVyYXRlcyBpbiBtYWluIG5hbWVzcGFjZSlcblx0XHRcdFx0XHRcdGNvbnN0IHRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0YFRhbGs6JHtwYXJhbXMuZGlzY3Vzc0FydGljbGV9YCxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflsIbnkIbnlLHotLTov5vorqjorrrpobUnLCAn5bCH55CG55Sx6LK86YCy6KiO6KuW6aCBJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR0YWxrcGFnZS5zZXROZXdTZWN0aW9uVGV4dChgJHtwYXJhbXMubWVyZ2VSZWFzb24udHJpbSgpfSB+fmAuY29uY2F0KCd+ficpKTtcblx0XHRcdFx0XHRcdHRhbGtwYWdlLnNldE5ld1NlY3Rpb25UaXRsZShg6K+35rGC5LiOW1ske3BhcmFtcy5ub25EaXNjdXNzQXJ0aWNsZX1dXeWQiOW5tmApO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0V2F0Y2hsaXN0KFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hNZXJnZURpc2N1c3Npb25zJykpO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2Uuc2V0Q3JlYXRlT3B0aW9uKCdyZWNyZWF0ZScpO1xuXHRcdFx0XHRcdFx0dGFsa3BhZ2UubmV3U2VjdGlvbigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocGFyYW1zLm1lcmdlVGFnT3RoZXIpIHtcblx0XHRcdFx0XHRcdC8vIHRhZyB0aGUgdGFyZ2V0IHBhZ2UgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdFx0XHRsZXQgb3RoZXJUYWdOYW1lID0gJ01lcmdlJztcblx0XHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VUYWcgPT09ICdNZXJnZSBmcm9tJykge1xuXHRcdFx0XHRcdFx0XHRvdGhlclRhZ05hbWUgPSAnTWVyZ2UgdG8nO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbXMubWVyZ2VUYWcgPT09ICdNZXJnZSB0bycpIHtcblx0XHRcdFx0XHRcdFx0b3RoZXJUYWdOYW1lID0gJ01lcmdlIGZyb20nO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y29uc3QgbmV3UGFyYW1zID0ge1xuXHRcdFx0XHRcdFx0XHR0YWdzOiBbb3RoZXJUYWdOYW1lXSxcblx0XHRcdFx0XHRcdFx0dGFnc1RvUmVtb3ZlOiBbXSxcblx0XHRcdFx0XHRcdFx0dGFnc1RvUmVtYWluOiBbXSxcblx0XHRcdFx0XHRcdFx0bWVyZ2VUYXJnZXQ6IE1vcmViaXRzLnBhZ2VOYW1lTm9ybSxcblx0XHRcdFx0XHRcdFx0ZGlzY3Vzc0FydGljbGU6IHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSxcblx0XHRcdFx0XHRcdFx0dGFsa0Rpc2N1c3Npb25UaXRsZTogcGFyYW1zLnRhbGtEaXNjdXNzaW9uVGl0bGUsXG5cdFx0XHRcdFx0XHRcdHRhbGtEaXNjdXNzaW9uVGl0bGVMaW5rZWQ6IHBhcmFtcy50YWxrRGlzY3Vzc2lvblRpdGxlTGlua2VkLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGNvbnN0IG90aGVycGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldCxcblx0XHRcdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCfmoIforrDlhbbku5bpobXpnaLvvIgnLCAn5qiZ6KiY5YW25LuW6aCB6Z2i77yIJykgKyBwYXJhbXMubWVyZ2VUYXJnZXR977yJYFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdG90aGVycGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMobmV3UGFyYW1zKTtcblx0XHRcdFx0XHRcdG90aGVycGFnZS5sb2FkKFR3aW5rbGUudGFnLmNhbGxiYWNrcy5hcnRpY2xlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gc3BlY2lhbCBmdW5jdGlvbnMgZm9yIHJlcXVlc3RlZCBtb3ZlIHRhZ3Ncblx0XHRcdFx0XHRpZiAocGFyYW1zLm1vdmVSZWFzb24pIHtcblx0XHRcdFx0XHRcdC8vIHBvc3QgdGhlIHJhdGlvbmFsZSBvbiB0aGUgdGFsayBwYWdlIChvbmx5IG9wZXJhdGVzIGluIG1haW4gbmFtZXNwYWNlKVxuXHRcdFx0XHRcdFx0bGV0IG1vdmVUYWxrcGFnZVRleHQgPSAnXFxuXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYFJNfDE9JHtwYXJhbXMubW92ZVJlYXNvbi50cmltKCl9YCk7XG5cdFx0XHRcdFx0XHRpZiAocGFyYW1zLm1vdmVUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlVGV4dCArPSBgfDI9JHtwYXJhbXMubW92ZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlVGV4dCArPSAnfX0nO1xuXHRcdFx0XHRcdFx0Y29uc3QgbW92ZVRhbGtwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0YFRhbGs6JHtwYXJhbXMuZGlzY3Vzc0FydGljbGV9YCxcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCflsIbnkIbnlLHotLTov5vorqjorrrpobUnLCAn5bCH55CG55Sx6LK86YCy6KiO6KuW6aCBJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2Uuc2V0QXBwZW5kVGV4dChtb3ZlVGFsa3BhZ2VUZXh0KTtcblx0XHRcdFx0XHRcdG1vdmVUYWxrcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfor7fmsYLnp7vliqgnLCAn6KuL5rGC56e75YuVJykgK1xuXHRcdFx0XHRcdFx0XHRcdChwYXJhbXMubW92ZVRhcmdldCA/IGDoh7NbWyR7cGFyYW1zLm1vdmVUYXJnZXR9XV1gIDogJycpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0bW92ZVRhbGtwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRcdG1vdmVUYWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdFx0XHRtb3ZlVGFsa3BhZ2UuYXBwZW5kKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKHBhcmFtcy5wYXRyb2wpIHtcblx0XHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBSZW1vdmVzIHRoZSBleGlzdGluZyB0YWdzIHRoYXQgd2VyZSBkZXNlbGVjdGVkIChpZiBhbnkpXG5cdFx0XHQgKiBDYWxscyBwb3N0UmVtb3ZhbCgpIHdoZW4gZG9uZVxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCByZW1vdmVUYWdzID0gKCkgPT4ge1xuXHRcdFx0XHRpZiAocGFyYW1zLnRhZ3NUb1JlbW92ZS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRwb3N0UmVtb3ZhbCgpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+enu+mZpOWPlua2iOmAieaLqeeahOW3suWtmOWcqOagh+iusCcsICfnp7vpmaTlj5bmtojpgbjmk4fnmoTlt7LlrZjlnKjmqJnoqJgnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBnZXRSZWRpcmVjdHNGb3IgPSBbXTtcblx0XHRcdFx0Ly8gUmVtb3ZlIHRoZSB0YWdzIGZyb20gdGhlIHBhZ2UgdGV4dCwgaWYgZm91bmQgaW4gaXRzIHByb3BlciBuYW1lLFxuXHRcdFx0XHQvLyBvdGhlcndpc2UgbW92ZXMgaXQgdG8gYGdldFJlZGlyZWN0c0ZvcmAgYXJyYXkgZWFybWFya2luZyBpdCBmb3Jcblx0XHRcdFx0Ly8gbGF0ZXIgcmVtb3ZhbFxuXHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFnc1RvUmVtb3ZlKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGFnX3JlID0gbmV3IFJlZ0V4cChgXFxcXHtcXFxceyR7TW9yZWJpdHMucGFnZU5hbWVSZWdleCh0YWcpfVxcXFxzKihcXFxcfFtefV0rKT9cXFxcfVxcXFx9XFxcXG4/YCk7XG5cdFx0XHRcdFx0aWYgKHRhZ19yZS50ZXN0KHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdFx0cGFnZVRleHQgPSBwYWdlVGV4dC5yZXBsYWNlKHRhZ19yZSwgJycpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRnZXRSZWRpcmVjdHNGb3JbZ2V0UmVkaXJlY3RzRm9yLmxlbmd0aF0gPSBgVGVtcGxhdGU6JHt0YWd9YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFnZXRSZWRpcmVjdHNGb3IubGVuZ3RoKSB7XG5cdFx0XHRcdFx0cG9zdFJlbW92YWwoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUmVtb3ZlIHRhZ3Mgd2hpY2ggYXBwZWFyIGluIHBhZ2UgdGV4dCBhcyByZWRpcmVjdHNcblx0XHRcdFx0Y29uc3QgYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5qih5p2/6YeN5a6a5ZCRJywgJ+WPluW+l+aooeadv+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdHByb3A6ICdsaW5rc2hlcmUnLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiBnZXRSZWRpcmVjdHNGb3Iuam9pbignfCcpLFxuXHRcdFx0XHRcdFx0cmVkaXJlY3RzOiAxLFxuXHRcdFx0XHRcdFx0bGhuYW1lc3BhY2U6ICcxMCcsXG5cdFx0XHRcdFx0XHRsaHNob3c6ICdyZWRpcmVjdCcsXG5cdFx0XHRcdFx0XHRsaGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdChhcGlvYmopID0+IHtcblx0XHRcdFx0XHRcdCQoYXBpb2JqLnJlc3BvbnNlWE1MKVxuXHRcdFx0XHRcdFx0XHQuZmluZCgncGFnZScpXG5cdFx0XHRcdFx0XHRcdC5lYWNoKChfaWR4LCBwYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHJlbW92ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHQkKHBhZ2UpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnbGgnKVxuXHRcdFx0XHRcdFx0XHRcdFx0LmVhY2goKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0YWcgPSAkKGVsZW1lbnQpLmF0dHIoJ3RpdGxlJykuc2xpY2UoOSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRhZ19yZSA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YFxcXFx7XFxcXHske01vcmViaXRzLnBhZ2VOYW1lUmVnZXgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxcXFxzKihcXFxcfCg/OlxcXFx7XFxcXHtbXnt9XSpcXFxcfVxcXFx9fFtee31dKSopP1xcXFx9XFxcXH1cXFxcbj9gXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0YWdfcmUudGVzdChwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVtb3ZlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBicmVhayBvdXQgb2YgJC5lYWNoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFyZW1vdmVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5peg5rOV5Zyo6aG16Z2i5LiK5om+5Yiwe3snLCAn54Sh5rOV5Zyo6aCB6Z2i5LiK5om+5Yiwe3snKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChwYWdlKS5hdHRyKCd0aXRsZScpLnNsaWNlKDkpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ3194oCm4oCm6Lez6L+HJywgJ3194oCm4oCm6Lez6YGOJylcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHBvc3RSZW1vdmFsKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRhcGkucG9zdCgpO1xuXHRcdFx0fTtcblx0XHRcdGlmICghcGFyYW1zLnRhZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdHJlbW92ZVRhZ3MoKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHRhZ1JlO1xuXHRcdFx0bGV0IHRhZ1RleHQgPSAnJztcblx0XHRcdGxldCB0YWdzID0gW107XG5cdFx0XHRjb25zdCBncm91cGFibGVUYWdzID0gW107XG5cdFx0XHRjb25zdCBncm91cGFibGVFeGlzdGluZ1RhZ3MgPSBbXTtcblx0XHRcdC8vIEV4ZWN1dGVzIGZpcnN0OiBhZGRpdGlvbiBvZiBzZWxlY3RlZCB0YWdzXG5cdFx0XHQvKipcblx0XHRcdCAqIFVwZGF0ZXMgYHRhZ1RleHRgIHdpdGggdGhlIHN5bnRheCBvZiBgdGFnTmFtZWAgdGVtcGxhdGUgd2l0aCBpdHMgcGFyYW1ldGVyc1xuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0YWdOYW1lXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lKSA9PiB7XG5cdFx0XHRcdGxldCBjdXJyZW50VGFnID0gJyc7XG5cdFx0XHRcdGlmICh0YWdOYW1lID09PSAnVW5jYXRlZ29yaXplZCcgfHwgdGFnTmFtZSA9PT0gJ0ltcHJvdmUgY2F0ZWdvcmllcycpIHtcblx0XHRcdFx0XHRwYWdlVGV4dCArPSBgXFxuXFxue3ske3RhZ05hbWV9fHRpbWU9e3tgLmNvbmNhdCgnc3Vic3Q6JywgJyN0aW1lOmN9fX19Jyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudFRhZyArPSBge3ske3RhZ05hbWV9YDtcblx0XHRcdFx0XHQvLyBmaWxsIGluIG90aGVyIHBhcmFtZXRlcnMsIGJhc2VkIG9uIHRoZSB0YWdcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZ05hbWUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ0V4cGVydCBuZWVkZWQnOlxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8c3ViamVjdD0ke3BhcmFtcy5leHBlcnR9YDtcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5leHBlcnQyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfHN1YmplY3QyPSR7cGFyYW1zLmV4cGVydDJ9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmV4cGVydDMpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8c3ViamVjdDM9JHtwYXJhbXMuZXhwZXJ0M31gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UnOlxuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgdG8nOlxuXHRcdFx0XHRcdFx0Y2FzZSAnTWVyZ2UgZnJvbSc6XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMubWVyZ2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBub3JtYWxpemUgdGhlIG1lcmdlIHRhcmdldCBmb3Igbm93IGFuZCBsYXRlclxuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldCA9IE1vcmViaXRzLnN0cmluZy50b1VwcGVyQ2FzZUZpcnN0Q2hhcihcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhcmdldC5yZXBsYWNlKC9fL2csICcgJylcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwke3BhcmFtcy5tZXJnZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0XHRcdC8vIGxpbmsgdG8gdGhlIGNvcnJlY3Qgc2VjdGlvbiBvbiB0aGUgdGFsayBwYWdlLCBmb3IgYXJ0aWNsZSBzcGFjZSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KHBhcmFtcy5tZXJnZVJlYXNvbiB8fCBwYXJhbXMuZGlzY3Vzc0FydGljbGUpXG5cdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXBhcmFtcy5kaXNjdXNzQXJ0aWNsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBkaXNjdXNzQXJ0aWNsZSBpcyB0aGUgYXJ0aWNsZSB3aG9zZSB0YWxrIHBhZ2Ugd2lsbCBjb250YWluIHRoZSBkaXNjdXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFnTmFtZSA9PT0gJ01lcmdlIHRvJyA/IHBhcmFtcy5tZXJnZVRhcmdldCA6IG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gbm9uRGlzY3Vzc0FydGljbGUgaXMgdGhlIGFydGljbGUgd2hpY2ggd29uJ3QgaGF2ZSB0aGUgZGlzY3Vzc2lvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMubm9uRGlzY3Vzc0FydGljbGUgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhZ05hbWUgPT09ICdNZXJnZSB0bycgPyBtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykgOiBwYXJhbXMubWVyZ2VUYXJnZXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtcy50YWxrRGlzY3Vzc2lvblRpdGxlID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ivt+axguS4jicsICfoq4vmsYLoiIcnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyYW1zLm5vbkRpc2N1c3NBcnRpY2xlICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WQiOW5ticsICflkIjkvbUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHxkaXNjdXNzPVRhbGs6JHtwYXJhbXMuZGlzY3Vzc0FydGljbGV9IyR7cGFyYW1zLnRhbGtEaXNjdXNzaW9uVGl0bGV9YDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdNaXNzaW5nIGluZm9ybWF0aW9uJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXMubWlzc2luZ0luZm9ybWF0aW9ufWA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnTm90YWJpbGl0eSc6XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMubm90YWJpbGl0eSAhPT0gJ25vbmUnKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDM9JHtwYXJhbXMubm90YWJpbGl0eX1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnUmVxdWVzdGVkIG1vdmUnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm1vdmVUYXJnZXQpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBub3JtYWxpemUgdGhlIG1vdmUgdGFyZ2V0IGZvciBub3cgYW5kIGxhdGVyXG5cdFx0XHRcdFx0XHRcdFx0cGFyYW1zLm1vdmVUYXJnZXQgPSBNb3JlYml0cy5zdHJpbmcudG9VcHBlckNhc2VGaXJzdENoYXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJhbXMubW92ZVRhcmdldC5yZXBsYWNlKC9fL2csICcgJylcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdHBhcmFtcy5kaXNjdXNzQXJ0aWNsZSA9IG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKTtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8JHtwYXJhbXMubW92ZVRhcmdldH1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnU3BsaXQnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLnRhcmdldDEpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8MT0ke3BhcmFtcy50YXJnZXQxfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy50YXJnZXQyKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDI9JHtwYXJhbXMudGFyZ2V0Mn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMudGFyZ2V0Mykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwzPSR7cGFyYW1zLnRhcmdldDN9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ0NsZWFudXAnOlxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmNsZWFudXBSZWFzb24pIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8cmVhc29uPSR7cGFyYW1zLmNsZWFudXBSZWFzb259YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjdXJyZW50VGFnICs9ICd8dGltZT17eycuY29uY2F0KCdzdWJzdDonLCAnI3RpbWU6Y319fX1cXG4nKTtcblx0XHRcdFx0XHR0YWdUZXh0ICs9IGN1cnJlbnRUYWc7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHQvKipcblx0XHRcdCAqIEFkZHMgdGhlIHRhZ3Mgd2hpY2ggZ28gb3V0c2lkZSB7e211bHRpcGxlIGlzc3Vlc319LCBlaXRoZXIgYmVjYXVzZVxuXHRcdFx0ICogdGhlc2UgdGFncyBhcmVuJ3Qgc3VwcG9ydGVkIGluIHt7bXVsdGlwbGUgaXNzdWVzfX0gb3IgYmVjYXVzZVxuXHRcdFx0ICoge3ttdWx0aXBsZSBpc3N1ZXN9fSBpcyBub3QgYmVpbmcgYWRkZWQgdG8gdGhlIHBhZ2UgYXQgYWxsXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IGFkZFVuZ3JvdXBlZFRhZ3MgPSAoKSA9PiB7XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcblx0XHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBJbnNlcnQgdGFnIGFmdGVyIHNob3J0IGRlc2NyaXB0aW9uIG9yIGFueSBoYXRub3Rlcyxcblx0XHRcdFx0Ly8gYXMgd2VsbCBhcyBkZWxldGlvbi9wcm90ZWN0aW9uLXJlbGF0ZWQgdGVtcGxhdGVzXG5cdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UocGFnZVRleHQpO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZXNBZnRlciA9XG5cdFx0XHRcdFx0Ly8gUHJvdGVjdGlvbiB0ZW1wbGF0ZXNcblx0XHRcdFx0XHQvLyBDU0Rcblx0XHRcdFx0XHQvLyBBZkRcblx0XHRcdFx0XHRgJHtUd2lua2xlLmhhdG5vdGVSZWdleH1wcHxwcC0uKj98KD86RGVsZXRlfERiLXJlYXNvbnxEfERlbGV0ZWJlY2F1c2V8RGJ86YCf5YigfOmAn+WIqnxTcGVlZHl8U0R85b+r5YigfOW/q+WIqnxDU0QpfFtyc2FpZnRjbXZdZmR8dmZkLSg/OmJ8cXxzfHNvdXJjZXx2fHdpa3QpfCg/Ouenu+WKqOWIsOe7tOWfunznp7vli5XliLDntq3ln7opKD865pWZ56eR5LmmfOaVmeenkeabuHzor63lvZV86Kqe6YyEfOaWh+W6k3zmlofluqt85a+85ri4fOWwjumBinzor43lhbh86Kme5YW4KWA7XG5cdFx0XHRcdHBhZ2VUZXh0ID0gcWl1d2VuX3BhZ2UuaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXModGFnVGV4dCwgdGVtcGxhdGVzQWZ0ZXIpLmdldFRleHQoKTtcblx0XHRcdFx0cmVtb3ZlVGFncygpO1xuXHRcdFx0fTtcblx0XHRcdC8vIFNlcGFyYXRlIHRhZ3MgaW50byBncm91cGFibGUgb25lcyAoYGdyb3VwYWJsZVRhZ3NgKSBhbmQgbm9uLWdyb3VwYWJsZSBvbmVzIChgdGFnc2ApXG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFncykge1xuXHRcdFx0XHR0YWdSZSA9IG5ldyBSZWdFeHAoYFxcXFx7XFxcXHske3RhZ30oXFxcXHx8XFxcXH1cXFxcfSlgLCAnaW0nKTtcblx0XHRcdFx0Ly8gcmVnZXggY2hlY2sgZm9yIHByZWV4aXN0ZW5jZSBvZiB0YWcgY2FuIGJlIHNraXBwZWQgaWYgaW4gY2FuUmVtb3ZlIG1vZGVcblx0XHRcdFx0aWYgKFR3aW5rbGUudGFnLmNhblJlbW92ZSB8fCAhdGFnUmUuZXhlYyhwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHR0YWcgPT09ICdOb3RhYmlsaXR5JyAmJlxuXHRcdFx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDAgfHxcblx0XHRcdFx0XHRcdFx0Y29uZmlybShcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn6K+l6aG16Z2i5LiN5piv5p2h55uu77yM5oKo5LuN6KaB5o+Q5oql5Yiw5YWz5rOo5bqm5o+Q5oql5ZCX77yfJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfoqbLpoIHpnaLkuI3mmK/mop3nm67vvIzmgqjku43opoHmj5DloLHliLDpl5zms6jluqbmj5DloLHll47vvJ8nXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpKVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdFx0XHQnUWl1d2VuX3RhbGs65a2Y5bqf6K6o6K66L+WFs+azqOW6puaPkOaKpScsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg5YWl5YWz5rOo5bqm6K6w5b2V6aG5JywgJ+WKoOWFpemXnOazqOW6puiomOmMhOmghScpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Rm9sbG93UmVkaXJlY3QodHJ1ZSk7XG5cdFx0XHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0XHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS50YWcuY2FsbGJhY2tzLm5vdGFiaWxpdHlMaXN0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gY29uZGl0aW9uIFR3aW5rbGUudGFnLmFydGljbGUudGFnc1t0YWddIHRvIGVuc3VyZSB0aGF0IGl0cyBub3QgYSBjdXN0b20gdGFnXG5cdFx0XHRcdFx0Ly8gQ3VzdG9tIHRhZ3MgYXJlIGFzc3VtZWQgbm9uLWdyb3VwYWJsZSwgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGV0aGVyIE1JIHRlbXBsYXRlIHN1cHBvcnRzIHRoZW1cblx0XHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10gJiYgIVR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmV4Y2x1ZGVNSSkge1xuXHRcdFx0XHRcdFx0Z3JvdXBhYmxlVGFnc1tncm91cGFibGVUYWdzLmxlbmd0aF0gPSB0YWc7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRhZ3NbdGFncy5sZW5ndGhdID0gdGFnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh0YWcgPT09ICdNZXJnZSBmcm9tJykge1xuXHRcdFx0XHRcdHRhZ3NbdGFncy5sZW5ndGhdID0gdGFnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WcqOmhtemdouS4iuaJvuWIsHt7JywgJ+WcqOmggemdouS4iuaJvuWIsHt7JykgKyB0YWcgKyB3aW5kb3cud2dVTFMoJ3194oCm4oCm6Lez6L+HJywgJ3194oCm4oCm6Lez6YGOJylcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vIGRvbid0IGRvIGFueXRoaW5nIGVsc2Ugd2l0aCBtZXJnZSB0YWdzXG5cdFx0XHRcdFx0aWYgKFsnTWVyZ2UnLCAnTWVyZ2UgdG8nXS5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdFx0XHRwYXJhbXMubWVyZ2VUYXJnZXQgPSBudWxsO1xuXHRcdFx0XHRcdFx0cGFyYW1zLm1lcmdlUmVhc29uID0gbnVsbDtcblx0XHRcdFx0XHRcdHBhcmFtcy5tZXJnZVRhZ090aGVyID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIFRvLWJlLXJldGFpbmVkIGV4aXN0aW5nIHRhZ3MgdGhhdCBhcmUgZ3JvdXBhYmxlXG5cdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFnc1RvUmVtYWluKSB7XG5cdFx0XHRcdC8vIElmIHRoZSB0YWcgaXMgdW5rbm93biB0byB1cywgd2UgY29uc2lkZXIgaXQgbm9uLWdyb3VwYWJsZVxuXHRcdFx0XHRpZiAoVHdpbmtsZS50YWcuYXJ0aWNsZS5mbGF0T2JqZWN0W3RhZ10gJiYgIVR3aW5rbGUudGFnLmFydGljbGUuZmxhdE9iamVjdFt0YWddLmV4Y2x1ZGVNSSkge1xuXHRcdFx0XHRcdGdyb3VwYWJsZUV4aXN0aW5nVGFnc1tncm91cGFibGVFeGlzdGluZ1RhZ3MubGVuZ3RoXSA9IHRhZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbWlUZXN0ID1cblx0XHRcdFx0L1xce1xceyhtdWx0aXBsZSA/aXNzdWVzfGFydGljbGUgP2lzc3Vlc3xtaXxhaXxpc3N1ZXN85aSa5YCL5ZWP6aGMfOWkmuS4qumXrumimHzllY/poYzmop3nm6586Zeu6aKY5p2h55uufOaVuOWAi+WVj+mhjHzmlbDkuKrpl67popgpXFxzKlxcfFtefV0rXFx7L2ltLmV4ZWMoXG5cdFx0XHRcdFx0cGFnZVRleHRcblx0XHRcdFx0KTtcblx0XHRcdGlmIChtaVRlc3QgJiYgZ3JvdXBhYmxlVGFncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfliqDlhaXmlK/mjIHnmoTmoIforrDlhaXlt7LlrZjlnKjnmoR7e211bHRpcGxlIGlzc3Vlc319Jyxcblx0XHRcdFx0XHRcdCfliqDlhaXmlK/mj7TnmoTmqJnoqJjlhaXlt7LlrZjlnKjnmoR7e211bHRpcGxlIGlzc3Vlc319J1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0dGFnVGV4dCA9ICcnO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBncm91cGFibGVUYWdzKSB7XG5cdFx0XHRcdFx0YWRkVGFnKHRhZyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgbWlSZWdleCA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdFx0YChcXFxce1xcXFx7XFxcXHMqJHttaVRlc3RbMV19XFxcXHMqKD86XFxcXHwoPzpcXFxce1xcXFx7W157fV0qXFxcXH1cXFxcfXxbXnt9XSkqKT8pXFxcXH1cXFxcfVxcXFxzKmAsXG5cdFx0XHRcdFx0J2ltJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UobWlSZWdleCwgYCQxJHt0YWdUZXh0fX19XFxuYCk7XG5cdFx0XHRcdHRhZ1RleHQgPSAnJztcblx0XHRcdFx0YWRkVW5ncm91cGVkVGFncygpO1xuXHRcdFx0fSBlbHNlIGlmIChwYXJhbXMuZ3JvdXAgJiYgIW1pVGVzdCAmJiBncm91cGFibGVFeGlzdGluZ1RhZ3MubGVuZ3RoICsgZ3JvdXBhYmxlVGFncy5sZW5ndGggPj0gMikge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOWFpeaUr+aMgeeahOagh+iusOWFpXt7bXVsdGlwbGUgaXNzdWVzfX0nLCAn5Yqg5YWl5pSv5o+055qE5qiZ6KiY5YWle3ttdWx0aXBsZSBpc3N1ZXN9fScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRhZ1RleHQgKz0gJ3t7TXVsdGlwbGUgaXNzdWVzfFxcbic7XG5cdFx0XHRcdC8qKlxuXHRcdFx0XHQgKiBBZGRzIG5ld2x5IGFkZGVkIHRhZ3MgdG8gTUlcblx0XHRcdFx0ICovXG5cdFx0XHRcdGNvbnN0IGFkZE5ld1RhZ3NUb01JID0gKCkgPT4ge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIGdyb3VwYWJsZVRhZ3MpIHtcblx0XHRcdFx0XHRcdGFkZFRhZyh0YWcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0YWdUZXh0ICs9ICd9fVxcbic7XG5cdFx0XHRcdFx0YWRkVW5ncm91cGVkVGFncygpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBnZXRSZWRpcmVjdHNGb3IgPSBbXTtcblx0XHRcdFx0Ly8gUmVwb3NpdGlvbiB0aGUgdGFncyBvbiB0aGUgcGFnZSBpbnRvIHt7bXVsdGlwbGUgaXNzdWVzfX0sIGlmIGZvdW5kIHdpdGggaXRzXG5cdFx0XHRcdC8vIHByb3BlciBuYW1lLCBlbHNlIG1vdmVzIGl0IHRvIGBnZXRSZWRpcmVjdHNGb3JgIGFycmF5IHRvIGJlIGhhbmRsZWQgbGF0ZXJcblx0XHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgZ3JvdXBhYmxlRXhpc3RpbmdUYWdzKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGFnX3JlID0gbmV3IFJlZ0V4cChgKFxcXFx7XFxcXHske01vcmViaXRzLnBhZ2VOYW1lUmVnZXgodGFnKX1cXFxccyooXFxcXHxbXn1dKyk/XFxcXH1cXFxcfVxcXFxuPylgKTtcblx0XHRcdFx0XHRpZiAodGFnX3JlLnRlc3QocGFnZVRleHQpKSB7XG5cdFx0XHRcdFx0XHR0YWdUZXh0ICs9IHRhZ19yZS5leGVjKHBhZ2VUZXh0KVsxXTtcblx0XHRcdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZSh0YWdfcmUsICcnKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Z2V0UmVkaXJlY3RzRm9yW2dldFJlZGlyZWN0c0Zvci5sZW5ndGhdID0gYFRlbXBsYXRlOiR7dGFnfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZ2V0UmVkaXJlY3RzRm9yLmxlbmd0aCkge1xuXHRcdFx0XHRcdGFkZE5ld1RhZ3NUb01JKCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPluaooeadv+mHjeWumuWQkScsICflj5blvpfmqKHmnb/ph43mlrDlsI7lkJEnKSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHRwcm9wOiAnbGlua3NoZXJlJyxcblx0XHRcdFx0XHRcdHRpdGxlczogZ2V0UmVkaXJlY3RzRm9yLmpvaW4oJ3wnKSxcblx0XHRcdFx0XHRcdHJlZGlyZWN0czogMSxcblx0XHRcdFx0XHRcdGxobmFtZXNwYWNlOiAnMTAnLFxuXHRcdFx0XHRcdFx0bGhzaG93OiAncmVkaXJlY3QnLFxuXHRcdFx0XHRcdFx0bGhsaW1pdDogJ21heCcsIC8vIDUwMCBpcyBtYXggZm9yIG5vcm1hbCB1c2VycywgNTAwMCBmb3IgYm90cyBhbmQgc3lzb3BzXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdFx0XHQkKGFwaW9iai5yZXNwb25zZVhNTClcblx0XHRcdFx0XHRcdFx0LmZpbmQoJ3BhZ2UnKVxuXHRcdFx0XHRcdFx0XHQuZWFjaCgoX2lkeCwgcGFnZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdCQocGFnZSlcblx0XHRcdFx0XHRcdFx0XHRcdC5maW5kKCdsaCcpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZWFjaCgoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRhZyA9ICQoZWxlbWVudCkuYXR0cigndGl0bGUnKS5zbGljZSg5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGFnX3JlID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRgKFxcXFx7XFxcXHske01vcmViaXRzLnBhZ2VOYW1lUmVnZXgodGFnKX1cXFxccyooXFxcXHxbXn1dKik/XFxcXH1cXFxcfVxcXFxuPylgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0YWdfcmUudGVzdChwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdUZXh0ICs9IHRhZ19yZS5leGVjKHBhZ2VUZXh0KVsxXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UodGFnX3JlLCAnJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTsgLy8gYnJlYWsgb3V0IG9mICQuZWFjaFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmICghZm91bmQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfml6Dms5XlnKjpobXpnaLkuIrmib7liLB7eycsICfnhKHms5XlnKjpoIHpnaLkuIrmib7liLB7eycpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHBhZ2UpLmF0dHIoJ3RpdGxlJykuc2xpY2UoOSkgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnfX3igKbigKbot7Pov4cnLCAnfX3igKbigKbot7PpgY4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YWRkTmV3VGFnc1RvTUkoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGFwaS5wb3N0KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0YWdzID0gWy4uLnRhZ3MsIC4uLmdyb3VwYWJsZVRhZ3NdO1xuXHRcdFx0XHRhZGRVbmdyb3VwZWRUYWdzKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRub3RhYmlsaXR5TGlzdDogKHBhZ2VvYmopID0+IHtcblx0XHRcdHBhZ2VvYmouc2V0QXBwZW5kVGV4dCgnXFxue3snLmNvbmNhdCgnc3Vic3Q6JywgYEZhbWVpdGVtfHRpdGxlPSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfX19YCkpO1xuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShg5Yqg5YWlW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXWApO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbigncmVjcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouYXBwZW5kKCk7XG5cdFx0fSxcblx0XHRyZWRpcmVjdDogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRsZXQgcGFnZVRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRsZXQgdGFnUmU7XG5cdFx0XHRsZXQgdGFnVGV4dCA9ICcnO1xuXHRcdFx0bGV0IHN1bW1hcnlUZXh0ID0gJ+WKoOWFpSc7XG5cdFx0XHRjb25zdCB0YWdzID0gW107XG5cdFx0XHRsZXQgaTtcblx0XHRcdGZvciAoaSA9IDA7IGkgPCBwYXJhbXMudGFncy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR0YWdSZSA9IG5ldyBSZWdFeHAoYChcXFxce1xcXFx7JHtwYXJhbXMudGFnc1tpXX0oXFxcXHx8XFxcXH1cXFxcfSkpYCwgJ2ltJyk7XG5cdFx0XHRcdGlmICh0YWdSZS5leGVjKHBhZ2VUZXh0KSkge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WcqOmHjeWumuWQkeS4iuaJvuWIsHt7JywgJ+WcqOmHjeaWsOWwjuWQkeS4iuaJvuWIsHt7JykgK1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMudGFnc1tpXSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnfX3igKbigKbot7Pov4cnLCAnfX3igKbigKbot7PpgY4nKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFnc1t0YWdzLmxlbmd0aF0gPSBwYXJhbXMudGFnc1tpXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gdXNlZCBpbiBBcnJheSNmb3JFYWNoXG5cdFx0XHRjb25zdCBhZGRUYWcgPSAodGFnTmFtZSwgdGFnSW5kZXgpID0+IHtcblx0XHRcdFx0dGFnVGV4dCArPSBgXFxue3ske3RhZ05hbWV9YDtcblx0XHRcdFx0aWYgKHRhZ05hbWUgPT09ICfpnZ7kuK3mlofph43lrprlkJEnKSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtcy5hbHRMYW5nRnJvbSkge1xuXHRcdFx0XHRcdFx0dGFnVGV4dCArPSBgfDE9JHtwYXJhbXMuYWx0TGFuZ0Zyb219YDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0KHRhZ05hbWUgPT09ICfmnaHnm67or7fmsYLph43lrprlkJEnIHx8IHRhZ05hbWUgPT09ICfmop3nm67oq4vmsYLph43lrprlkJEnKSAmJlxuXHRcdFx0XHRcdHBhcmFtcy5yZXFBcnRpY2xlTGFuZyAmJlxuXHRcdFx0XHRcdHBhcmFtcy5yZXFBcnRpY2xlVGl0bGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGFnVGV4dCArPSBgfDE9JHtwYXJhbXMucmVxQXJ0aWNsZUxhbmd9YDtcblx0XHRcdFx0XHR0YWdUZXh0ICs9IGB8Mj0ke3BhcmFtcy5yZXFBcnRpY2xlVGl0bGV9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0YWdUZXh0ICs9ICd9fSc7XG5cdFx0XHRcdGlmICh0YWdJbmRleCA+IDApIHtcblx0XHRcdFx0XHRpZiAodGFnSW5kZXggPT09IHRhZ3MubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0c3VtbWFyeVRleHQgKz0gJ+WSjCc7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0YWdJbmRleCA8IHRhZ3MubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0c3VtbWFyeVRleHQgKz0gJ+OAgSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnlUZXh0ICs9IGB7e1tbOiR7dGFnTmFtZS5pbmNsdWRlcygnOicpID8gdGFnTmFtZSA6IGBUZW1wbGF0ZToke3RhZ05hbWV9fCR7dGFnTmFtZX1gfV1dfX1gO1xuXHRcdFx0fTtcblx0XHRcdGlmICghdGFncy5sZW5ndGgpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmsqHmnInmoIfnrb7lj6/kvpvmoIforrAnLCAn5rKS5pyJ5qiZ57Gk5Y+v5L6b5qiZ6KiYJylcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHRhZ3Muc29ydCgpO1xuXHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdH1cblx0XHRcdC8vIENoZWNrIGZvciBhbGwgUmNhdCBzaGVsbCByZWRpcmVjdHMgKGZyb20gIzQzMylcblx0XHRcdGlmIChwYWdlVGV4dC5tYXRjaCgve3soPzpyZWRyfHRoaXMgaXMgYSByZWRpcmVjdHxyKD86ZWRpcmVjdCk/KD86Lj9jYXQuKik/WyBfXT9zaCkvaSkpIHtcblx0XHRcdFx0Ly8gUmVnZXggaW5zcGlyZWQgYnkgW1tVc2VyOktlcGhpci9nYWRnZXRzL3NhZ2l0dGFyaXVzLmpzXV0gKFtbU3BlY2lhbDpQZXJtYUxpbmsvODMxNDAyODkzXV0pXG5cdFx0XHRcdGNvbnN0IG9sZFRhZ3MgPSBwYWdlVGV4dC5tYXRjaCgvKFxccyp7e1tBLVphLXpcXHNdK1xcfCg/OlxccyoxPSk/KSgoPzpbXnx7fV18e3tbXn1dK319KSspKH19KVxccyovaSk7XG5cdFx0XHRcdHBhZ2VUZXh0ID0gcGFnZVRleHQucmVwbGFjZShvbGRUYWdzWzBdLCBvbGRUYWdzWzFdICsgdGFnVGV4dCArIG9sZFRhZ3NbMl0gKyBvbGRUYWdzWzNdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEZvbGQgYW55IHByZS1leGlzdGluZyBSY2F0cyBpbnRvIHRhZ2xpc3QgYW5kIHVuZGVyIFJjYXRzaGVsbFxuXHRcdFx0XHRjb25zdCBwYWdlVGFncyA9IHBhZ2VUZXh0Lm1hdGNoKC9cXHMqe3suKz/ph43lrprlkJEuKj99fS9naW0pO1xuXHRcdFx0XHRsZXQgb2xkUGFnZVRhZ3MgPSAnJztcblx0XHRcdFx0aWYgKHBhZ2VUYWdzKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgcGFnZVRhZyBvZiBwYWdlVGFncykge1xuXHRcdFx0XHRcdFx0Y29uc3QgcGFnZVJlID0gbmV3IFJlZ0V4cChNb3JlYml0cy5zdHJpbmcuZXNjYXBlUmVnRXhwKHBhZ2VUYWcpLCAnaW1nJyk7XG5cdFx0XHRcdFx0XHRwYWdlVGV4dCA9IHBhZ2VUZXh0LnJlcGxhY2UocGFnZVJlLCAnJyk7XG5cdFx0XHRcdFx0XHRwYWdlVGFnID0gcGFnZVRhZy50cmltKCk7XG5cdFx0XHRcdFx0XHRvbGRQYWdlVGFncyArPSBgXFxuJHtwYWdlVGFnfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VUZXh0ICs9IGBcXG57e1JlZGlyZWN0IGNhdGVnb3J5IHNoZWxsfCR7dGFnVGV4dH0ke29sZFBhZ2VUYWdzfVxcbn19YDtcblx0XHRcdH1cblx0XHRcdHN1bW1hcnlUZXh0ICs9XG5cdFx0XHRcdCh0YWdzLmxlbmd0aCA+IDAgPyB3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKSA6ICd7e1JlZGlyZWN0IGNhdGVnb3J5IHNoZWxsfX0nKSArXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yiw6YeN5a6a5ZCRJywgJ+WIsOmHjeaWsOWwjuWQkScpO1xuXHRcdFx0Ly8gYXZvaWQgdHJ1bmNhdGVkIHN1bW1hcmllc1xuXHRcdFx0aWYgKHN1bW1hcnlUZXh0Lmxlbmd0aCA+IDQ5OSkge1xuXHRcdFx0XHRzdW1tYXJ5VGV4dCA9IHN1bW1hcnlUZXh0LnJlcGxhY2UoL1xcW1xcW1tefF0rXFx8KFteXFxdXSspXFxdXFxdL2csICckMScpO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dChwYWdlVGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnlUZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRXYXRjaGxpc3QoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFRhZ2dlZFBhZ2VzJykpO1xuXHRcdFx0cGFnZW9iai5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrVGFnZ2VkUGFnZXNBc01pbm9yJykpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoKTtcblx0XHRcdGlmIChwYXJhbXMucGF0cm9sKSB7XG5cdFx0XHRcdHBhZ2VvYmoucGF0cm9sKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRmaWxlOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0bGV0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0bGV0IHN1bW1hcnkgPSAn5Yqg5YWlJztcblx0XHRcdC8vIEFkZCBtYWludGVuYW5jZSB0YWdzXG5cdFx0XHRpZiAocGFyYW1zLnRhZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdGxldCB0YWd0ZXh0ID0gJyc7XG5cdFx0XHRcdGxldCBjdXJyZW50VGFnO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiBwYXJhbXMudGFncykge1xuXHRcdFx0XHRcdC8vIHdoZW4gb3RoZXIgY29tbW9ucy1yZWxhdGVkIHRhZ3MgYXJlIHBsYWNlZCwgcmVtb3ZlIFwibW92ZSB0byBTaGFyZVwiIHRhZ1xuXHRcdFx0XHRcdGlmIChbJ0tlZXAgbG9jYWwnLCAnTm93IFFpdXdlbiBTaGFyZScsICdEbyBub3QgbW92ZSB0byBRaXV3ZW4gU2hhcmUnXS5pbmNsdWRlcyh0YWcpKSB7XG5cdFx0XHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0XHQve3sobXRjfChjb3B5IHxtb3ZlICk/dG8gP3NoYXJlfG1vdmUgdG8gcWl1d2VuIHNoYXJlfGNvcHkgdG8gcWl1d2VuIHNoYXJlKVtefV0qfX0vZ2ksXG5cdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGFnID09PSAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJykge1xuXHRcdFx0XHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0L1xce1xceygoY29udmVydCB0byB8Y29udmVydHRvfHNob3VsZCBiZSB8c2hvdWxkYmV8dG8pP3N2Z3xiYWRwbmd8dmVjdG9yaXplKVtefV0qXFx9XFx9L2dpLFxuXHRcdFx0XHRcdFx0XHQnJ1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y3VycmVudFRhZyA9IHRhZztcblx0XHRcdFx0XHRzd2l0Y2ggKHRhZykge1xuXHRcdFx0XHRcdFx0Y2FzZSAnTm93IENvbW1vbnMnOlxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnID0gYHN1YnN0OiR7Y3VycmVudFRhZ31gOyAvLyBzdWJzdFxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLm5vd2NvbW1vbnNOYW1lICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwxPSR7cGFyYW1zLm5vd2NvbW1vbnNOYW1lfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdLZWVwIGxvY2FsJzpcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5rZWVwbG9jYWxOYW1lICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHwxPSR7cGFyYW1zLmtlZXBsb2NhbE5hbWV9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLmtlZXBsb2NhbFJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8cmVhc29uPSR7cGFyYW1zLmtlZXBsb2NhbFJlYXNvbn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnUmVuYW1lIG1lZGlhJzpcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5yZW5hbWVtZWRpYU5ld25hbWUgIT09ICcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXMucmVuYW1lbWVkaWFOZXduYW1lfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy5yZW5hbWVtZWRpYVJlYXNvbiAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFnICs9IGB8Mj0ke3BhcmFtcy5yZW5hbWVtZWRpYVJlYXNvbn1gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnVmVjdG9yIHZlcnNpb24gYXZhaWxhYmxlJzpcblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRcdGNhc2UgJ09ic29sZXRlJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfDE9JHtwYXJhbXNbYCR7dGFnLnJlcGxhY2UoLyAvZywgJ18nKX1GaWxlYF19YDtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdEbyBub3QgbW92ZSB0byBDb21tb25zJzpcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhZyArPSBgfHJlYXNvbj0ke3BhcmFtcy5Eb05vdE1vdmVUb0NvbW1vbnNfcmVhc29ufWA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnQ29weSB0byBXaWtpbWVkaWEgQ29tbW9ucyc6XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYWcgKz0gYHxodW1hbj0ke213LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKX1gO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gZG9uJ3QgY2FyZVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGN1cnJlbnRUYWcgPSBge3ske2N1cnJlbnRUYWd9fX1cXG5gO1xuXHRcdFx0XHRcdHRhZ3RleHQgKz0gY3VycmVudFRhZztcblx0XHRcdFx0XHRzdW1tYXJ5ICs9IGB7eyR7dGFnfX1944CBYDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIXRhZ3RleHQpIHtcblx0XHRcdFx0XHRwYWdlb2JqXG5cdFx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0XHQud2Fybih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nO+8jOayoeS7gOS5iOimgeWBmueahCcsICfkvb/nlKjogIXlj5bmtojmk43kvZzvvIzmspLku4DpurzopoHlgZrnmoQnKSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRleHQgPSB0YWd0ZXh0ICsgdGV4dDtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KHN1bW1hcnkuc2xpY2UoMCwgTWF0aC5tYXgoMCwgc3VtbWFyeS5sZW5ndGggLSAxKSkpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoVGFnZ2VkUGFnZXMnKSk7XG5cdFx0XHRwYWdlb2JqLnNldE1pbm9yRWRpdChUd2lua2xlLmdldFByZWYoJ21hcmtUYWdnZWRQYWdlc0FzTWlub3InKSk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2F2ZSgpO1xuXHRcdFx0aWYgKHBhcmFtcy5wYXRyb2wpIHtcblx0XHRcdFx0cGFnZW9iai5wYXRyb2woKTtcblx0XHRcdH1cblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLnRhZy5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHBhcmFtcyA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRJbnB1dERhdGEoZm9ybSk7XG5cdFx0Ly8gVmFsaWRhdGlvblxuXHRcdC8vIEdpdmVuIGFuIGFycmF5IG9mIGluY29tcGF0aWJsZSB0YWdzLCBjaGVjayBpZiB3ZSBoYXZlIHR3byBvciBtb3JlIHNlbGVjdGVkXG5cdFx0Y29uc3QgY2hlY2tJbmNvbXBhdGlibGUgPSAoY29uZmxpY3RzLCBleHRyYSkgPT4ge1xuXHRcdFx0Y29uc3QgY291bnQgPSBjb25mbGljdHMucmVkdWNlKChzdW0sIHRhZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gKHN1bSArPSBwYXJhbXMudGFncy5pbmNsdWRlcyh0YWcpKTtcblx0XHRcdH0sIDApO1xuXHRcdFx0aWYgKGNvdW50ID4gMSkge1xuXHRcdFx0XHRsZXQgbWVzc2FnZSA9IGAke3dpbmRvdy53Z1VMUygn6K+35Zyo5Lul5LiL5qCH562+5Lit5oup5LiA5L2/55SoJywgJ+iri+WcqOS7peS4i+aomeexpOS4reaTh+S4gOS9v+eUqCcpfe+8mnt7JHtjb25mbGljdHMuam9pbihcblx0XHRcdFx0XHQnfX3jgIF7eydcblx0XHRcdFx0KX19feOAgmA7XG5cdFx0XHRcdG1lc3NhZ2UgKz0gZXh0cmEgfHwgJyc7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KG1lc3NhZ2UsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvLyBHaXZlbiBhIHRhZywgZW5zdXJlIGFuIGFzc29jaWF0ZSBwYXJhbWV0ZXIgaXMgcHJlc2VudFxuXHRcdC8vIE1heWJlIGp1c3Qgc29jayB0aGlzIGF3YXkgaW4gZWFjaCBmdW5jdGlvbj8/P1xuXHRcdGNvbnN0IGNoZWNrUGFyYW1ldGVyID0gKHRhZywgcGFyYW1ldGVyLCBkZXNjcmlwdGlvbiA9ICfnkIbnlLEnKSA9PiB7XG5cdFx0XHRpZiAocGFyYW1zLnRhZ3MuaW5jbHVkZXModGFnKSAmJiBwYXJhbXNbcGFyYW1ldGVyXS50cmltKCkgPT09ICcnKSB7XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGAke3dpbmRvdy53Z1VMUygn5oKo5b+F6aG75oyH5a6aJywgJ+aCqOW/hemgiOaMh+WumicpfXt7JHt0YWd9fX3nmoQke2Rlc2NyaXB0aW9ufeOAgmAsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvLyBXZSBjb3VsZCB0aGVvcmV0aWNhbGx5IHB1dCB0aGVtIGFsbCBjaGVja0luY29tcGF0aWJsZSBjYWxscyBpbiBhXG5cdFx0Ly8gZm9yRWFjaCBsb29wLCBidXQgaXQncyBwcm9iYWJseSBjbGVhcmVyIG5vdCB0byBoYXZlIFtbYXJyYXkgb25lXSxcblx0XHQvLyBbYXJyYXkgdHdvXV0gZGV2b2lkIG9mIGNvbnRleHQuIExpa2V3aXNlLCBhbGwgdGhlIGNoZWNrUGFyYW1ldGVyXG5cdFx0Ly8gY2FsbHMgY291bGQgYmUgaW4gb25lIGlmLCBidXQgY291bGQgYmUgc2ltaWxhcmx5IGNvbmZ1c2luZy5cblx0XHRzd2l0Y2ggKFR3aW5rbGUudGFnLm1vZGVFbikge1xuXHRcdFx0Y2FzZSAnYXJ0aWNsZSc6XG5cdFx0XHRcdHBhcmFtcy50YWdzVG9SZW1vdmUgPSBmb3JtLmdldFVuY2hlY2tlZCgnZXhpc3RpbmdUYWdzJyk7IC8vIG5vdCBpbiBgaW5wdXRgXG5cdFx0XHRcdHBhcmFtcy50YWdzVG9SZW1haW4gPSBwYXJhbXMuZXhpc3RpbmdUYWdzIHx8IFtdOyAvLyBjb250YWluZXIgbm90IGNyZWF0ZWQgaWYgbm9uZSBwcmVzZW50XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRwYXJhbXMudGFncy5pbmNsdWRlcygnTWVyZ2UnKSB8fFxuXHRcdFx0XHRcdHBhcmFtcy50YWdzLmluY2x1ZGVzKCdNZXJnZSBmcm9tJykgfHxcblx0XHRcdFx0XHRwYXJhbXMudGFncy5pbmNsdWRlcygnTWVyZ2UgdG8nKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRjaGVja0luY29tcGF0aWJsZShcblx0XHRcdFx0XHRcdFx0WydNZXJnZScsICdNZXJnZSBmcm9tJywgJ01lcmdlIHRvJ10sXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6Iul6ZyA6KaB5aSa5qyh5ZCI5bm277yM6K+35L2/55Soe3tNZXJnZX195bm255So566h6YGT56ym5YiG6ZqU5p2h55uu5ZCN77yI5L2G5Zyo6L+Z56eN5oOF5b2i5LitVHdpbmtsZeS4jeiDveiHquWKqOagh+iusOWFtuS7luadoeebru+8ieOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+iLpemcgOimgeWkmuasoeWQiOS9te+8jOiri+S9v+eUqHt7TWVyZ2V9feS4pueUqOeuoemBk+espuWIhumalOaineebruWQje+8iOS9huWcqOmAmeeoruaDheW9ouS4rVR3aW5rbGXkuI3og73oh6rli5XmqJnoqJjlhbbku5bmop3nm67vvInjgIInXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFwYXJhbXMubWVyZ2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+ivt+aMh+WumuS9v+eUqOS6jm1lcmdl5qih5p2/5Lit55qE5Y+m5LiA5Liq6aG16Z2i5qCH6aKY44CCJyxcblx0XHRcdFx0XHRcdFx0XHQn6KuL5oyH5a6a5L2/55So5pa8bWVyZ2XmqKHmnb/kuK3nmoTlj6bkuIDlgIvpoIHpnaLmqJnpoYzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoKHBhcmFtcy5tZXJnZVRhZ090aGVyIHx8IHBhcmFtcy5tZXJnZVJlYXNvbikgJiYgcGFyYW1zLm1lcmdlVGFyZ2V0LmluY2x1ZGVzKCd8JykpIHtcblx0XHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+W9k+WJjei/mOS4jeaUr+aMgeWcqOS4gOasoeWQiOW5tuS4reagh+iusOWkmuS4quadoeebru+8jOS4juW8gOWQr+WFs+S6juWkmuS4quadoeebrueahOiuqOiuuuOAguivt+S4jeimgeWLvumAieKAnOagh+iusOWFtuS7luadoeebruKAneW5tua4heepuuKAnOeQhueUseKAneahhuWQjuWGjeaPkOS6pOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+ebruWJjemChOS4jeaUr+aPtOWcqOS4gOasoeWQiOS9teS4reaomeiomOWkmuWAi+aineebru+8jOiIh+mWi+WVn+mXnOaWvOWkmuWAi+aineebrueahOiojuirluOAguiri+S4jeimgeWLvumBuOOAjOaomeiomOWFtuS7luaineebruOAjeS4pua4heepuuOAjOeQhueUseOAjeahhuW+jOWGjeaPkOS6pOOAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICdmcmllbmRseXRhZycsXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRjaGVja1BhcmFtZXRlcihcblx0XHRcdFx0XHRcdCdNaXNzaW5nIGluZm9ybWF0aW9uJyxcblx0XHRcdFx0XHRcdCdtaXNzaW5nSW5mb3JtYXRpb24nLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnvLrlsJHnmoTlhoXlrrknLCAn57y65bCR55qE5YWn5a65Jylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hlY2tQYXJhbWV0ZXIoJ0V4cGVydCBuZWVkZWQnLCAnZXhwZXJ0Jywgd2luZG93LndnVUxTKCfkuJPlrrbpoobln58nLCAn5bCI5a626aCY5Z+fJykpKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmlsZSc6XG5cdFx0XHRcdC8vIFNpbGx5IHRvIHByb3ZpZGUgdGhlIHNhbWUgc3RyaW5nIHRvIGVhY2ggb2YgdGhlc2Vcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGNoZWNrUGFyYW1ldGVyKCdPYnNvbGV0ZScsICdPYnNvbGV0ZUZpbGUnLCB3aW5kb3cud2dVTFMoJ+abv+aNoueahOaWh+S7tuWQjeensCcsICfmm7/mj5vnmoTmqpTmoYjlkI3nqLEnKSkgfHxcblx0XHRcdFx0XHRjaGVja1BhcmFtZXRlcihcblx0XHRcdFx0XHRcdCdWZWN0b3IgdmVyc2lvbiBhdmFpbGFibGUnLFxuXHRcdFx0XHRcdFx0J1ZlY3Rvcl92ZXJzaW9uX2F2YWlsYWJsZUZpbGUnLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmm7/mjaLnmoTmlofku7blkI3np7AnLCAn5pu/5o+b55qE5qqU5qGI5ZCN56ixJylcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hlY2tQYXJhbWV0ZXIoJ0RvIG5vdCBtb3ZlIHRvIENvbW1vbnMnLCAnRG9Ob3RNb3ZlVG9Db21tb25zX3JlYXNvbicpKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncmVkaXJlY3QnOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBUd2lua2xlLnRhZ++8muacquefpeaooeW8jyAke1R3aW5rbGUudGFnLm1vZGV9YCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICdmcmllbmRseXRhZycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Ly8gRmlsZS9yZWRpcmVjdDogcmV0dXJuIGlmIG5vIHRhZ3Mgc2VsZWN0ZWRcblx0XHQvLyBBcnRpY2xlOiByZXR1cm4gaWYgbm8gdGFnIGlzIHNlbGVjdGVkIGFuZCBubyBhbHJlYWR5IHByZXNlbnQgdGFnIGlzIGRlc2VsZWN0ZWRcblx0XHRpZiAocGFyYW1zLnRhZ3MubGVuZ3RoID09PSAwICYmIChUd2lua2xlLnRhZy5tb2RlRW4gIT09ICdhcnRpY2xlJyB8fCBwYXJhbXMudGFnc1RvUmVtb3ZlLmxlbmd0aCA9PT0gMCkpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KHdpbmRvdy53Z1VMUygn5b+F6aG76YCJ5oup6Iez5bCR5LiA5Liq5qCH6K6w77yBJywgJ+W/hemgiOmBuOaTh+iHs+WwkeS4gOWAi+aomeiomO+8gScpLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAnZnJpZW5kbHl0YWcnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBNb3JlYml0cy5wYWdlTmFtZU5vcm07XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+agh+iusOWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5qiZ6KiY5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0aWYgKFR3aW5rbGUudGFnLm1vZGVFbiA9PT0gJ3JlZGlyZWN0Jykge1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPSBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0TW9yZWJpdHMucGFnZU5hbWVOb3JtLFxuXHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjmoIforrAnLCAn5q2j5Zyo5qiZ6KiYJykgKyBUd2lua2xlLnRhZy5tb2RlXG5cdFx0KTtcblx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUudGFnLmNhbGxiYWNrc1tUd2lua2xlLnRhZy5tb2RlRW5dKTtcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS50YWcsICd0YWcnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHtnZW5lcmF0ZUFycmF5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVzdHViLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZXN0dWIoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZXN0dWIuanM6IFRhZyBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgKFwiU3R1YlwiKVxuXHQgKiBBY3RpdmUgb246IEV4aXN0aW5nIGFydGljbGVzXG5cdCAqIENvbmZpZyBkaXJlY3RpdmVzIGluOiBGcmllbmRseUNvbmZpZ1xuXHQgKiBOb3RlOiBjdXN0b21pc2VkIGZyaWVuZGx5dGFnIG1vZHVsZVxuXHQgKi9cblx0VHdpbmtsZS5zdHViID0gKCkgPT4ge1xuXHRcdGlmIChNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpKSB7XG5cdFx0XHQvLyBTa2lwXG5cdFx0XHQvLyBhcnRpY2xlL2RyYWZ0IGFydGljbGUgdGFnZ2luZ1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQoWzAsIDExOF0uaW5jbHVkZXMobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSkgJiYgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5zdHViLm1vZGUgPSAn5p2h55uuJztcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoVHdpbmtsZS5zdHViLmNhbGxiYWNrLCAn5bCP5L2c5ZOBJywgJ2ZyaWVuZGx5LXRhZycsICfmoIforrDlsI/kvZzlk4EnKTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRpZiAoTW9yZWJpdHMuaXNQYWdlUmVkaXJlY3QoKSkge1xuXHRcdFx0Ly8gU2tpcFxuXHRcdFx0Ly8gYXJ0aWNsZS9kcmFmdCBhcnRpY2xlIHRhZ2dpbmdcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0KChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSAwIHx8IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDExOCkgJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykpIHx8XG5cdFx0XHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKVxuXHRcdCkge1xuXHRcdFx0VHdpbmtsZS5zdHViLm1vZGUgPSB3aW5kb3cud2dVTFMoJ+adoeebricsICfmop3nm64nKTtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayxcblx0XHRcdFx0J+Wwj+S9nOWTgScsXG5cdFx0XHRcdCdmcmllbmRseS10YWcnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+agh+iusOWwj+S9nOWTgScsICfmqJnoqJjlsI/kvZzlk4EnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYzMCwgVHdpbmtsZS5zdHViLm1vZGUgPT09ICdhcnRpY2xlJyA/IDQ1MCA6IDQwMCk7XG5cdFx0V2luZG93LnNldFNjcmlwdE5hbWUoJ1R3aW5rbGUnKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ+Wwj+S9nOWTgeiqquaYjicsICflsI/kvZzlk4Hor7TmmI4nKSwgJ1FXOuWwj+S9nOWTgScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5bCP5L2c5ZOB6K6+572uJywgJ+Wwj+S9nOWTgeioreWumicpLCAnSDpUVy9QUkVGI3N0dWInKTtcblx0XHRXaW5kb3cuYWRkRm9vdGVyTGluayh3aW5kb3cud2dVTFMoJ1R3aW5rbGXluK7liqknLCAnVHdpbmtsZeiqquaYjicpLCAnSDpUVy9ET0Mjc3R1YicpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuc3R1Yi5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0aWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYXRyb2xsaW5rJykubGVuZ3RoKSB7XG5cdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDpobXpnaLkuLrlt7Llt6Hmn6UnLCAn5qiZ6KiY6aCB6Z2i54K65bey5beh5p+lJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3BhdHJvbFBhZ2UnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3BhdHJvbFBhZ2UnLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3R1YmJlZFBhZ2VzQXNQYXRyb2xsZWQnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHN3aXRjaCAoVHdpbmtsZS5zdHViLm1vZGUpIHtcblx0XHRcdGNhc2UgJ+aineebric6XG5cdFx0XHRjYXNlICfmnaHnm64nOlxuXHRcdFx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmnaHnm67lsI/kvZzlk4HmoIforrAnLCAn5qKd55uu5bCP5L2c5ZOB5qiZ6KiYJykpO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRcdFx0bmFtZTogJ3NvcnRvcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5p+l55yL5YiX6KGo77yaJywgJ+aqouimluWIl+ihqO+8micpLFxuXHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5Y+C5pWw6K6+572u77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aG544CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XlnKhUd2lua2xl5YGP5aW96Kit5a6a77yISDpUVy9QUkVG77yJ5Lit5pu05pS55q2k6aCF44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZXZlbnQ6IFR3aW5rbGUuc3R1Yi51cGRhdGVTb3J0T3JkZXIsXG5cdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6ICdjYXQnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmjInnsbvlnosnLCAn5oyJ6aGe5YilJyksXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3N0dWJBcnRpY2xlU29ydE9yZGVyJykgPT09ICdjYXQnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiAnYWxwaGEnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogJ+aMieWtl+avjScsXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkOiBUd2lua2xlLmdldFByZWYoJ3N0dWJBcnRpY2xlU29ydE9yZGVyJykgPT09ICdhbHBoYScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0aWQ6ICd0YWdXb3JrQXJlYScsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHZvaWQgbXcubm90aWZ5KGBUd2lua2xlLnN0dWLvvJrmnKrnn6XmqKHlvI8gJHtUd2lua2xlLnN0dWIubW9kZX1gLCB7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVzdHViJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFdpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0V2luZG93LmRpc3BsYXkoKTtcblx0XHRpZiAoWyfmnaHnm64nLCAn5qKd55uuJ10uaW5jbHVkZXMoVHdpbmtsZS5zdHViLm1vZGUpKSB7XG5cdFx0XHQvLyBmYWtlIGEgY2hhbmdlIGV2ZW50IG9uIHRoZSBzb3J0IGRyb3Bkb3duLCB0byBpbml0aWFsaXplIHRoZSB0YWcgbGlzdFxuXHRcdFx0Y29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0XHRldnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRcdHJlc3VsdC5zb3J0b3JkZXIuZGlzcGF0Y2hFdmVudChldnQpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5zdHViLmNoZWNrZWRUYWdzID0gW107XG5cdFR3aW5rbGUuc3R1Yi51cGRhdGVTb3J0T3JkZXIgPSAoZSkgPT4ge1xuXHRcdGNvbnN0IHNvcnRvcmRlciA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFR3aW5rbGUuc3R1Yi5jaGVja2VkVGFncyA9IGUudGFyZ2V0LmZvcm0uZ2V0Q2hlY2tlZCgnYXJ0aWNsZVRhZ3MnKTtcblx0XHRUd2lua2xlLnN0dWIuY2hlY2tlZFRhZ3MgPz89IFtdO1xuXHRcdGNvbnN0IGNvbnRhaW5lciA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnZnJhZ21lbnQnLFxuXHRcdH0pO1xuXHRcdC8vIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgY2hlY2tib3gsIHdpdGggYXBwcm9wcmlhdGUgc3ViZ3JvdXAgaWYgbmVlZGVkXG5cdFx0Y29uc3QgbWFrZUNoZWNrYm94ID0gKHRhZywgZGVzY3JpcHRpb24pID0+IHtcblx0XHRcdGNvbnN0IGNoZWNrYm94ID0ge1xuXHRcdFx0XHR2YWx1ZTogdGFnLFxuXHRcdFx0XHRsYWJlbDogYHt7JHt0YWd9fX06ICR7ZGVzY3JpcHRpb259YCxcblx0XHRcdH07XG5cdFx0XHRpZiAoVHdpbmtsZS5zdHViLmNoZWNrZWRUYWdzLmluY2x1ZGVzKHRhZykpIHtcblx0XHRcdFx0Y2hlY2tib3guY2hlY2tlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY2hlY2tib3g7XG5cdFx0fTtcblx0XHQvLyBhcHBlbmQgYW55IGN1c3RvbSB0YWdzXG5cdFx0aWYgKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tU3R1Ykxpc3QnKS5sZW5ndGgpIHtcblx0XHRcdGNvbnRhaW5lci5hcHBlbmQoe1xuXHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5qih5p2/JywgJ+iHquioguaooeadvycpLFxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBjdXN0b21jaGVja2JveGVzID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21TdHViTGlzdCcpKSB7XG5cdFx0XHRcdGN1c3RvbWNoZWNrYm94ZXNbY3VzdG9tY2hlY2tib3hlcy5sZW5ndGhdID0gbWFrZUNoZWNrYm94KGl0ZW0udmFsdWUsIGl0ZW0ubGFiZWwpO1xuXHRcdFx0fVxuXHRcdFx0Y29udGFpbmVyLmFwcGVuZCh7XG5cdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdG5hbWU6ICdhcnRpY2xlVGFncycsXG5cdFx0XHRcdGxpc3Q6IGN1c3RvbWNoZWNrYm94ZXMsXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Ly8gY2F0ZWdvcmljYWwgc29ydCBvcmRlclxuXHRcdGlmIChzb3J0b3JkZXIgPT09ICdjYXQnKSB7XG5cdFx0XHQvLyBmdW5jdGlvbiB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHRhZ3MgYW5kIGNyZWF0ZSBhIGNoZWNrYm94IGZvciBlYWNoIG9uZVxuXHRcdFx0Y29uc3QgZG9DYXRlZ29yeUNoZWNrYm94ZXMgPSAoc3ViZGl2LCBhcnJheSkgPT4ge1xuXHRcdFx0XHRjb25zdCBjaGVja2JveGVzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIGFycmF5KSB7XG5cdFx0XHRcdFx0Y29uc3QgZGVzY3JpcHRpb24gPSBUd2lua2xlLnN0dWIuYXJ0aWNsZS50YWdzW3RhZ107XG5cdFx0XHRcdFx0Y2hlY2tib3hlc1tjaGVja2JveGVzLmxlbmd0aF0gPSBtYWtlQ2hlY2tib3godGFnLCBkZXNjcmlwdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3ViZGl2LmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAnYXJ0aWNsZVRhZ3MnLFxuXHRcdFx0XHRcdGxpc3Q6IGNoZWNrYm94ZXMsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHRcdGxldCBpID0gMDtcblx0XHRcdC8vIGdvIHRocm91Z2ggZWFjaCBjYXRlZ29yeSBhbmQgc3ViLWNhdGVnb3J5IGFuZCBhcHBlbmQgbGlzdHMgb2YgY2hlY2tib3hlc1xuXHRcdFx0Zm9yIChjb25zdCBbdGl0bGUsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXMpKSB7XG5cdFx0XHRcdGNvbnN0IHRpdGxlTmFtZSA9IFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXNIZWFkZXJbdGl0bGVdO1xuXHRcdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRpZDogYHRhZ0hlYWRlciR7aX1gLFxuXHRcdFx0XHRcdGxhYmVsOiB0aXRsZU5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBzdWJkaXYgPSBjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRpZDogYHRhZ1N1YmRpdiR7aSsrfWAsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShjb250ZW50KSkge1xuXHRcdFx0XHRcdGRvQ2F0ZWdvcnlDaGVja2JveGVzKHN1YmRpdiwgY29udGVudCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbc3VidGl0bGUsIHN1YmNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRlbnQpKSB7XG5cdFx0XHRcdFx0XHRzdWJkaXYuYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOiBbTW9yZWJpdHMuaHRtbE5vZGUoJ2InLCBzdWJ0aXRsZSldLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRkb0NhdGVnb3J5Q2hlY2tib3hlcyhzdWJkaXYsIHN1YmNvbnRlbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gYWxwaGFiZXRpY2FsIHNvcnQgb3JkZXJcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgY2hlY2tib3hlcyA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBbdGFnLCBkZXNjcmlwdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoVHdpbmtsZS5zdHViLmFydGljbGUudGFncykpIHtcblx0XHRcdFx0Y2hlY2tib3hlc1tjaGVja2JveGVzLmxlbmd0aF0gPSBtYWtlQ2hlY2tib3godGFnLCBkZXNjcmlwdGlvbik7XG5cdFx0XHR9XG5cdFx0XHRjb250YWluZXIuYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bmFtZTogJ2FydGljbGVUYWdzJyxcblx0XHRcdFx0bGlzdDogY2hlY2tib3hlcyxcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCAkd29ya2FyZWEgPSAkKGUudGFyZ2V0LmZvcm0pLmZpbmQoJ2RpdiN0YWdXb3JrQXJlYScpO1xuXHRcdGNvbnN0IHJlbmRlcmVkID0gY29udGFpbmVyLnJlbmRlcigpO1xuXHRcdCR3b3JrYXJlYS5lbXB0eSgpLmFwcGVuZChyZW5kZXJlZCk7XG5cdFx0Ly8gc3R5bGUgYWRqdXN0bWVudHNcblx0XHQkd29ya2FyZWEuZmluZCgnaDUnKS5jc3Moe1xuXHRcdFx0J2ZvbnQtc2l6ZSc6ICcxMTAlJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnaDU6bm90KDpmaXJzdC1jaGlsZCknKS5jc3Moe1xuXHRcdFx0J21hcmdpbi10b3AnOiAnMWVtJyxcblx0XHR9KTtcblx0XHQkd29ya2FyZWEuZmluZCgnZGl2JykuZmlsdGVyKCc6aGFzKHNwYW4ucXVpY2tmb3JtRGVzY3JpcHRpb24pJykuY3NzKHtcblx0XHRcdCdtYXJnaW4tdG9wJzogJzAuNGVtJyxcblx0XHR9KTtcblx0XHQvLyBhZGQgYSBsaW5rIHRvIGVhY2ggdGVtcGxhdGUncyBkZXNjcmlwdGlvbiBwYWdlXG5cdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ2FydGljbGVUYWdzJykpIHtcblx0XHRcdGNvbnN0ICRjaGVja2JveCA9ICQoY2hlY2tib3gpO1xuXHRcdFx0Y29uc3QgbGluayA9IE1vcmViaXRzLmh0bWxOb2RlKCdhJywgJz4nKTtcblx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdjbGFzcycsICd0YWctdGVtcGxhdGUtbGluaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcdCdocmVmJyxcblx0XHRcdFx0bXcudXRpbC5nZXRVcmwoYFRlbXBsYXRlOiR7TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKGNoZWNrYm94LnZhbHVlcyl9YClcblx0XHRcdCk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0XHQkY2hlY2tib3gucGFyZW50KCkuYXBwZW5kKFsnXFx1MDBBMCcsIGxpbmtdKTtcblx0XHR9XG5cdH07XG5cdC8vIFRhZ3MgZm9yIEFSVElDTEVTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS5zdHViLmFydGljbGUgPSB7fTtcblx0Ly8gQSBsaXN0IG9mIGFsbCBhcnRpY2xlIHRhZ3MsIGluIGFscGhhYmV0aWNhbCBvcmRlclxuXHQvLyBUbyBlbnN1cmUgdGFncyBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgXCJjYXRlZ29yaXplZFwiIHZpZXcsIGFkZCB0aGVtIHRvIHRoZSB0YWdDYXRlZ29yaWVzIGhhc2ggYmVsb3cuXG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ3MgPSB7XG5cdFx0J2FjdG9yLXN0dWInOiAn5ryU5ZGYJyxcblx0XHQnYXNpYS1zdHViJzogJ+S6mua0sicsXG5cdFx0J2Jpby1zdHViJzogJ+S6uueJqScsXG5cdFx0J2Jpb2xvZ3ktc3R1Yic6ICfnlJ/nianlraYnLFxuXHRcdCdjaGVtLXN0dWInOiAn5YyW5a2mJyxcblx0XHQnZXVyb3BlLXN0dWInOiAn5qyn5rSyJyxcblx0XHQnZXhwYW5kIGxpc3QnOiAn5pyq5a6M5oiQ5YiX6KGoJyxcblx0XHQnZm9vZC1zdHViJzogJ+mjn+eJqScsXG5cdFx0J2ZyYW5jZS1nZW8tc3R1Yic6ICfms5Xlm73lnLDnkIYnLFxuXHRcdCdnZW8tc3R1Yic6ICflnLDnkIbkvY3nva4nLFxuXHRcdCdoaXN0LXN0dWInOiAn5Y6G5Y+y5oiW5Y6G5Y+y5a2mJyxcblx0XHQnSlAtc3R1Yic6ICfml6XmnKwnLFxuXHRcdCdsaXQtc3R1Yic6ICfmloflraYnLFxuXHRcdCdtYXRoLXN0dWInOiAn5pWw5a2mJyxcblx0XHQnbWVkLXN0dWInOiAn5Yy75a2mJyxcblx0XHQnbWlsLXN0dWInOiAn5Yab5LqLJyxcblx0XHQnbW92aWUtc3R1Yic6ICfnlLXlvbEnLFxuXHRcdCdtdXNpYy1zdHViJzogJ+mfs+S5kCcsXG5cdFx0J3BoeXNpY3Mtc3R1Yic6ICfniannkIblraYnLFxuXHRcdCdwb2xpdGljLXN0dWInOiAn5pS/5rK7Jyxcblx0XHQncmVsaWdpb24tc3R1Yic6ICflrpfmlZknLFxuXHRcdCdzY2llbmNlLXN0dWInOiAn56eR5a2mJyxcblx0XHQnc3BvcnQtc3R1Yic6ICfkvZPogrInLFxuXHRcdHN0dWI6ICfpgJrnlKjlsI/kvZzlk4EnLFxuXHRcdCdzd2l0emVybGFuZC1zdHViJzogJ+eRnuWjqycsXG5cdFx0J3RlY2gtc3R1Yic6ICfnp5HmioAnLFxuXHRcdCd0cmFuc3Atc3R1Yic6ICfkuqTpgJonLFxuXHRcdCdUVi1zdHViJzogJ+eUteinhicsXG5cdFx0J1VLLXN0dWInOiAn6Iux5Zu9Jyxcblx0XHQnVVMtYmlvLXN0dWInOiAn576O5Zu95Lq654mpJyxcblx0XHQnVVMtZ2VvLXN0dWInOiAn576O5Zu95Zyw55CGJyxcblx0XHQnVVMtc3R1Yic6ICfnvo7lm70nLFxuXHRcdCd3ZWF0aGVyLXN0dWInOiAn5aSp5rCU5ZKM54m55Yir55qE5aSp5rCU5LqL5Lu2Jyxcblx0fTtcblx0Ly8gQSBsaXN0IG9mIHRhZ3MgaW4gb3JkZXIgb2YgY2F0ZWdvcnlcblx0Ly8gVGFncyBzaG91bGQgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIHdpdGhpbiB0aGUgY2F0ZWdvcmllc1xuXHQvLyBBZGQgbmV3IGNhdGVnb3JpZXMgd2l0aCBkaXNjcmV0aW9uIC0gdGhlIGxpc3QgaXMgbG9uZyBlbm91Z2ggYXMgaXMhXG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXNIZWFkZXIgPSB7XG5cdFx0Z2VuZXJhbDogJ+mAmueUqOaooeadvycsXG5cdFx0Z2VvOiAn5Zu95a625ZKM5Zyw55CGJyxcblx0XHRvdGhlcnM6ICfmnYLpobknLFxuXHRcdGJpbzogJ+S6uueJqScsXG5cdFx0c2NpZW5jZTogJ+enkeWtpicsXG5cdFx0c3BvcnQ6ICfkvZPogrInLFxuXHRcdHRlY2g6ICfmioDmnK8nLFxuXHRcdGFydDogJ+iJuuacrycsXG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5hcnRpY2xlLnRhZ0NhdGVnb3JpZXMgPSB7XG5cdFx0Z2VuZXJhbDogWydzdHViJywgJ2V4cGFuZCBsaXN0J10sXG5cdFx0Z2VvOiBbXG5cdFx0XHQnYXNpYS1zdHViJyxcblx0XHRcdCdldXJvcGUtc3R1YicsXG5cdFx0XHQnZnJhbmNlLWdlby1zdHViJyxcblx0XHRcdCdnZW8tc3R1YicsXG5cdFx0XHQnSlAtc3R1YicsXG5cdFx0XHQnc3dpdHplcmxhbmQtc3R1YicsXG5cdFx0XHQnVUstc3R1YicsXG5cdFx0XHQnVVMtYmlvLXN0dWInLFxuXHRcdFx0J1VTLWdlby1zdHViJyxcblx0XHRcdCdVUy1zdHViJyxcblx0XHRdLFxuXHRcdG90aGVyczogWydmb29kLXN0dWInLCAnaGlzdC1zdHViJywgJ21pbC1zdHViJywgJ3BvbGl0aWMtc3R1YicsICdyZWxpZ2lvbi1zdHViJywgJ3RyYW5zcC1zdHViJ10sXG5cdFx0YmlvOiBbJ2FjdG9yLXN0dWInLCAnYmlvLXN0dWInLCAnVVMtYmlvLXN0dWInXSxcblx0XHRzY2llbmNlOiBbJ2Jpb2xvZ3ktc3R1YicsICdjaGVtLXN0dWInLCAnbWF0aC1zdHViJywgJ21lZC1zdHViJywgJ3BoeXNpY3Mtc3R1YicsICdzY2llbmNlLXN0dWInLCAnd2VhdGhlci1zdHViJ10sXG5cdFx0c3BvcnQ6IFsnc3BvcnQtc3R1YiddLFxuXHRcdHRlY2g6IFsndGVjaC1zdHViJ10sXG5cdFx0YXJ0OiBbJ2FjdG9yLXN0dWInLCAnbGl0LXN0dWInLCAnbW92aWUtc3R1YicsICdtdXNpYy1zdHViJywgJ1RWLXN0dWInXSxcblx0fTtcblx0Ly8gVGFncyBmb3IgUkVESVJFQ1RTIHN0YXJ0IGhlcmVcblx0VHdpbmtsZS5zdHViLmNhbGxiYWNrcyA9IHtcblx0XHRtYWluOiAocGFnZW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gcGFnZW9iai5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdGxldCB0YWdSZTtcblx0XHRcdGxldCBzdW1tYXJ5VGV4dCA9ICfliqDlhaUnO1xuXHRcdFx0bGV0IHRhZ3MgPSBbXTtcblx0XHRcdGNvbnN0IGdyb3VwYWJsZVRhZ3MgPSBbXTtcblx0XHRcdGxldCBpO1xuXHRcdFx0Ly8gUmVtb3ZlIHRhZ3MgdGhhdCBiZWNvbWUgc3VwZXJmbHVvdXMgd2l0aCB0aGlzIGFjdGlvblxuXHRcdFx0bGV0IHBhZ2VUZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0Ly8gQ2hlY2sgZm9yIHByZWV4aXN0aW5nIHRhZ3MgYW5kIHNlcGFyYXRlIHRhZ3MgaW50byBncm91cGFibGUgYW5kIG5vbi1ncm91cGFibGUgYXJyYXlzXG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgcGFyYW1zLnRhZ3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dGFnUmUgPSBuZXcgUmVnRXhwKGAoXFxcXHtcXFxceyR7cGFyYW1zLnRhZ3NbaV19KFxcXFx8fFxcXFx9XFxcXH0pKWAsICdpbScpO1xuXHRcdFx0XHRpZiAodGFnUmUuZXhlYyhwYWdlVGV4dCkpIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRg5Zyo6aG16Z2i5LiK5om+5Yiwe3ske3BhcmFtcy50YWdzW2ldfX194oCm4oCm6Lez6L+HYCxcblx0XHRcdFx0XHRcdFx0YOWcqOmggemdouS4iuaJvuWIsHt7JHtwYXJhbXMudGFnc1tpXX19feKApuKApui3s+mBjmBcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRhZ3MgPSBbLi4udGFncywgLi4uZ2VuZXJhdGVBcnJheShwYXJhbXMudGFnc1tpXSldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0YWdzID0gWy4uLnRhZ3MsIC4uLmdyb3VwYWJsZVRhZ3NdO1xuXHRcdFx0dGFncy5zb3J0KCk7XG5cdFx0XHRjb25zdCB0b3RhbFRhZ3MgPSB0YWdzLmxlbmd0aDtcblx0XHRcdGNvbnN0IGFkZFRhZyA9ICh0YWdOYW1lLCB0YWdJbmRleCkgPT4ge1xuXHRcdFx0XHRwYWdlVGV4dCArPSBgXFxue3ske3RhZ05hbWV9fX1gO1xuXHRcdFx0XHRpZiAodGFnSW5kZXggPiAwKSB7XG5cdFx0XHRcdFx0aWYgKHRhZ0luZGV4ID09PSB0b3RhbFRhZ3MgLSAxKSB7XG5cdFx0XHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAn5ZKMJztcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRhZ0luZGV4IDwgdG90YWxUYWdzIC0gMSkge1xuXHRcdFx0XHRcdFx0c3VtbWFyeVRleHQgKz0gJ+OAgSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN1bW1hcnlUZXh0ICs9ICd7e1tbJztcblx0XHRcdFx0c3VtbWFyeVRleHQgKz0gdGFnTmFtZS5pbmNsdWRlcygnOicpID8gdGFnTmFtZSA6IGBUZW1wbGF0ZToke3RhZ05hbWV9fCR7dGFnTmFtZX1gO1xuXHRcdFx0XHRzdW1tYXJ5VGV4dCArPSAnXV19fSc7XG5cdFx0XHR9O1xuXHRcdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0XHRhZGRUYWcodGFnKTtcblx0XHRcdH1cblx0XHRcdHN1bW1hcnlUZXh0ICs9IHdpbmRvdy53Z1VMUygn5qCH6K6w5YiwJywgJ+aomeiomOWIsCcpICsgVHdpbmtsZS5zdHViLm1vZGU7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHBhZ2VUZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeVRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFdhdGNobGlzdChUd2lua2xlLmdldFByZWYoJ3dhdGNoU3R1YmJlZFBhZ2VzJykpO1xuXHRcdFx0cGFnZW9iai5zZXRNaW5vckVkaXQoVHdpbmtsZS5nZXRQcmVmKCdtYXJrU3R1YmJlZFBhZ2VzQXNNaW5vcicpKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKCk7XG5cdFx0XHRpZiAocGFyYW1zLnBhdHJvbCkge1xuXHRcdFx0XHRwYWdlb2JqLnBhdHJvbCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuc3R1Yi5jYWxsYmFjay5ldmFsdWF0ZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgZm9ybSA9IGUudGFyZ2V0O1xuXHRcdGNvbnN0IHBhcmFtcyA9IHt9O1xuXHRcdGlmIChmb3JtLnBhdHJvbFBhZ2UpIHtcblx0XHRcdHBhcmFtcy5wYXRyb2wgPSBmb3JtLnBhdHJvbFBhZ2UuY2hlY2tlZDtcblx0XHR9XG5cdFx0c3dpdGNoIChUd2lua2xlLnN0dWIubW9kZSkge1xuXHRcdFx0Y2FzZSAn5qKd55uuJzpcblx0XHRcdGNhc2UgJ+adoeebric6XG5cdFx0XHRcdHBhcmFtcy50YWdzID0gZm9ybS5nZXRDaGVja2VkKCdhcnRpY2xlVGFncycpO1xuXHRcdFx0XHRwYXJhbXMuZ3JvdXAgPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShgVHdpbmtsZS5zdHVi77ya5pyq55+l5qih5byPICR7VHdpbmtsZS5zdHViLm1vZGV9YCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlc3R1YicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKCFwYXJhbXMudGFncy5sZW5ndGgpIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KCflv4XpobvpgInmi6noh7PlsJHkuIDkuKrmoIforrDvvIEnLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZXN0dWInLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZm9ybSk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gd2luZG93LndnVUxTKFxuXHRcdFx0J+agh+iusOWujOaIkO+8jOWwhuWcqOWHoOenkuWGheWIt+aWsOmhtemdoicsXG5cdFx0XHQn5qiZ6KiY5a6M5oiQ77yM5bCH5Zyo5bm+56eS5YWn6YeN5paw5pW055CG6aCB6Z2iJ1xuXHRcdCk7XG5cdFx0aWYgKFR3aW5rbGUuc3R1Yi5tb2RlID09PSAn6YeN5a6a5ZCRJykge1xuXHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPSBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjmoIforrAnLCAn5q2j5Zyo5qiZ6KiYJykgKyBUd2lua2xlLnN0dWIubW9kZVxuXHRcdCk7XG5cdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0c3dpdGNoIChUd2lua2xlLnN0dWIubW9kZSkge1xuXHRcdFx0Y2FzZSAn5qKd55uuJzpcblx0XHRcdGNhc2UgJ+adoeebric6XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICfph43lrprlkJEnOlxuXHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuc3R1Yi5jYWxsYmFja3MubWFpbik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdGNhc2UgJ+aWh+S7tic6XG5cdFx0XHRjYXNlICfmqpTmoYgnOlxuXHRcdFx0XHRxaXV3ZW5fcGFnZS5sb2FkKFR3aW5rbGUuc3R1Yi5jYWxsYmFja3MuZmlsZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoYFR3aW5rbGUuc3R1Yu+8muacquefpeaooeW8jyAke1R3aW5rbGUuc3R1Yi5tb2RlfWAsIHtcblx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0dGFnOiAndHdpbmtsZXN0dWInLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLnN0dWIsICdzdHViJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWRpZmYuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlZGlmZigkKSB7XG5cdC8qKlxuXHQgKiB0d2lua2xlZGlmZi5qczogRGlmZiBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBUYWIgb24gbm9uLWRpZmYgcGFnZXMgKFwiTGFzdFwiKTtcblx0ICogdGFicyBvbiBkaWZmIHBhZ2VzIChcIlNpbmNlXCIsIFwiU2luY2UgbWluZVwiLCBcIkN1cnJlbnRcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyBub24tc3BlY2lhbCBwYWdlc1xuXHQgKi9cblx0VHdpbmtsZS5kaWZmID0gKCkgPT4ge1xuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCB8fCAhbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0bXcudXRpbC5nZXRVcmwobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCB7XG5cdFx0XHRcdGRpZmY6ICdjdXInLFxuXHRcdFx0XHRvbGRpZDogJ3ByZXYnLFxuXHRcdFx0fSksXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+acgOWQjicsICfmnIDlvownKSxcblx0XHRcdCd0dy1sYXN0ZGlmZicsXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aYvuekuuacgOWQjuS/ruaUuScsICfpoa/npLrmnIDlvozkv67mlLknKVxuXHRcdCk7XG5cdFx0Ly8gU2hvdyBhZGRpdGlvbmFsIHRhYnMgb25seSBvbiBkaWZmIHBhZ2VzXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJykpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRUd2lua2xlLmRpZmYuZXZhbHVhdGUoZmFsc2UpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQn6Ieq5LiKJyxcblx0XHRcdFx0J3R3LXNpbmNlJyxcblx0XHRcdFx0d2luZG93LndnVUxTKCfmmL7npLrkuI7kuIrkuIDkv67orqLniYjmnKzpl7TnmoTlt67lvIInLCAn6aGv56S66IiH5LiK5LiA5L+u6KiC54mI5pys6ZaT55qE5beu55WwJylcblx0XHRcdCk7XG5cdFx0XHRUd2lua2xlLmFkZFBvcnRsZXRMaW5rKFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS5kaWZmLmV2YWx1YXRlKHRydWUpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQn6Ieq5oiRJyxcblx0XHRcdFx0J3R3LXNpbmNlbWluZScsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65LiO5oiR5YGa5Ye655qE5L+u6K6i54mI5pys55qE5beu5byCJywgJ+mhr+ekuuiIh+aIkeWBmuWHuueahOS/ruiogueJiOacrOeahOW3rueVsCcpXG5cdFx0XHQpO1xuXHRcdFx0VHdpbmtsZS5hZGRQb3J0bGV0TGluayhcblx0XHRcdFx0bXcudXRpbC5nZXRVcmwobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCB7XG5cdFx0XHRcdFx0ZGlmZjogJ2N1cicsXG5cdFx0XHRcdFx0b2xkaWQ6IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJyksXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W9k+WJjScsICfnm67liY0nKSxcblx0XHRcdFx0J3R3LWN1cmRpZmYnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aYvuekuuS4juW9k+WJjeeJiOacrOmXtOeahOW3ruW8gicsICfpoa/npLroiIfnm67liY3niYjmnKzplpPnmoTlt67nlbAnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuZGlmZi5ldmFsdWF0ZSA9IChtZSkgPT4ge1xuXHRcdGxldCB1c2VyO1xuXHRcdGlmIChtZSkge1xuXHRcdFx0dXNlciA9IG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1kaWZmLW50aXRsZTInKTtcblx0XHRcdGlmICghbm9kZSkge1xuXHRcdFx0XHQvLyBub3RoaW5nIHRvIGRvP1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR1c2VyID0gJChub2RlKS5maW5kKCdhJykuZmlyc3QoKS50ZXh0KCk7XG5cdFx0fVxuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0cHJvcDogJ3JldmlzaW9ucycsXG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHR0aXRsZXM6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdHJ2bGltaXQ6IDEsXG5cdFx0XHRydnByb3A6IFsnaWRzJywgJ3VzZXInXSxcblx0XHRcdHJ2c3RhcnRpZDogbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJykgLSAxLFxuXHRcdFx0cnZ1c2VyOiB1c2VyLFxuXHRcdH07XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LWNvbnRlbnQtdGV4dCcpKTtcblx0XHRjb25zdCBxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bmnIDliJ3otKHnjK7ogIXkv6Hmga8nLCAn5oqT5Y+W5pyA5Yid6LKi54276ICF6LOH6KiKJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUuZGlmZi5jYWxsYmFja3MubWFpblxuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHR1c2VyLFxuXHRcdH07XG5cdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuZGlmZi5jYWxsYmFja3MgPSB7XG5cdFx0bWFpbjogKHNlbGYpID0+IHtcblx0XHRcdGNvbnN0IHhtbERvYyA9IHNlbGYucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCByZXZpZCA9ICQoeG1sRG9jKS5maW5kKCdyZXYnKS5hdHRyKCdyZXZpZCcpO1xuXHRcdFx0aWYgKCFyZXZpZCkge1xuXHRcdFx0XHRzZWxmLnN0YXRlbGVtLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw5ZCI6YCC55qE5pep5pyf54mI5pys77yM5oiWICcsICfmnKrmib7liLDlkIjpgannmoTml6nmnJ/niYjmnKzvvIzmiJYgJykgK1xuXHRcdFx0XHRcdFx0c2VsZi5wYXJhbXMudXNlciArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDmmK/llK/kuIDotKHnjK7ogIXjgILlj5bmtojjgIInLCAnIOaYr+WUr+S4gOiyoueNu+iAheOAguWPlua2iOOAgicpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxvY2F0aW9uID0gbXcudXRpbC5nZXRVcmwobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCB7XG5cdFx0XHRcdGRpZmY6IG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpLFxuXHRcdFx0XHRvbGRpZDogcmV2aWQsXG5cdFx0XHR9KTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmRpZmYsICdkaWZmJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZXVubGluay5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGV1bmxpbmsoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZXVubGluay5qczogVW5saW5rIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJVbmxpbmtcIilcblx0ICogQWN0aXZlIG9uOiBOb24tc3BlY2lhbCBwYWdlcywgZXhjZXB0IFFpdXdlbjrmspnnm5Jcblx0ICovXG5cdFR3aW5rbGUudW5saW5rID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPCAwIHx8XG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykgPT09IFR3aW5rbGUuZ2V0UHJlZignc2FuZGJveFBhZ2UnKSB8fFxuXHRcdFx0IU1vcmViaXRzLnVzZXJJc1N5c29wXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLnVubGluay5jYWxsYmFjayxcblx0XHRcdHdpbmRvdy53Z1VMUygn5raI6ZO+JywgJ+a2iOmAoycpLFxuXHRcdFx0J3R3LXVubGluaycsXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WPlua2iOWIsOacrOmhteeahOmTvuaOpScsICflj5bmtojliLDmnKzpoIHnmoTpgKPntZAnKVxuXHRcdCk7XG5cdH07XG5cdC8vIHRoZSBwYXJhbWV0ZXIgaXMgdXNlZCB3aGVuIGludm9raW5nIHVubGluayBmcm9tIGFkbWluIHNwZWVkeVxuXHRUd2lua2xlLnVubGluay5jYWxsYmFjayA9IChwcmVzZXRSZWFzb24pID0+IHtcblx0XHRjb25zdCBmaWxlU3BhY2UgPSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID09PSA2O1xuXHRcdGNvbnN0IFdpbmRvdyA9IG5ldyBNb3JlYml0cy5zaW1wbGVXaW5kb3coNjAwLCA0NDApO1xuXHRcdFdpbmRvdy5zZXRUaXRsZShcblx0XHRcdHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+5YWlJywgJ+WPlua2iOmAo+WFpScpICtcblx0XHRcdFx0KGZpbGVTcGFjZSA/IHdpbmRvdy53Z1VMUygn5ZKM5qih5p2/44CB5paH5Lu25L2/55SoJywgJ+WSjOaooeadv+OAgeaqlOahiOS9v+eUqCcpIDogJycpXG5cdFx0KTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn6ZO+5YWl6K6+572uJywgJ+mAo+WFpeioreWumicpLCAnSDpUVy9QUkVGI3VubGluaycpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygnVHdpbmtsZeW4ruWKqScsICdUd2lua2xl6Kqq5piOJyksICdIOlRXL0RPQyN1bmxpbmsnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLnVubGluay5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Ly8gcHJlcGVuZCBzb21lIGRvY3VtZW50YXRpb246IGZpbGVzIGFyZSBjb21tZW50ZWQgb3V0LCB3aGlsZSBhbnlcblx0XHQvLyBkaXNwbGF5IHRleHQgaXMgcHJlc2VydmVkIGZvciBsaW5rcyAob3RoZXJ3aXNlIHRoZSBsaW5rIGl0c2VsZiBpcyB1c2VkKVxuXHRcdGNvbnN0IGxpbmtUZXh0QmVmb3JlID0gTW9yZWJpdHMuaHRtbE5vZGUoXG5cdFx0XHQnY29kZScsXG5cdFx0XHRgW1ske2ZpbGVTcGFjZSA/ICc6JyA6ICcnfSR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfSR7d2luZG93LndnVUxTKCd86ZO+5o6l5paH5a2XXV0nLCAnfOmAo+e1kOaWh+Wtl11dJyl9YFxuXHRcdCk7XG5cdFx0Y29uc3QgbGlua1RleHRBZnRlciA9IE1vcmViaXRzLmh0bWxOb2RlKCdjb2RlJywgd2luZG93LndnVUxTKCfpk77mjqXmloflrZcnLCAn6YCj57WQ5paH5a2XJykpO1xuXHRcdGNvbnN0IGxpbmtQbGFpbkJlZm9yZSA9IE1vcmViaXRzLmh0bWxOb2RlKCdjb2RlJywgYFtbJHtNb3JlYml0cy5wYWdlTmFtZU5vcm19XV1gKTtcblx0XHRjb25zdCBsaW5rVGVtcGxhdGVCZWZvcmUgPSBNb3JlYml0cy5odG1sTm9kZSgnY29kZScsIGB7eyR7bXcuY29uZmlnLmdldCgnd2dUaXRsZScpfX19YCk7XG5cdFx0bGV0IGxpbmtQbGFpbkFmdGVyO1xuXHRcdGlmIChmaWxlU3BhY2UpIHtcblx0XHRcdGxpbmtQbGFpbkFmdGVyID0gTW9yZWJpdHMuaHRtbE5vZGUoJ2NvZGUnLCBgPCEtLSBbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1dIC0tPmApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsaW5rUGxhaW5BZnRlciA9IE1vcmViaXRzLmh0bWxOb2RlKCdjb2RlJywgTW9yZWJpdHMucGFnZU5hbWVOb3JtKTtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIFtsaW5rVGV4dEJlZm9yZSwgbGlua1RleHRBZnRlciwgbGlua1BsYWluQmVmb3JlLCBsaW5rUGxhaW5BZnRlciwgbGlua1RlbXBsYXRlQmVmb3JlXSkge1xuXHRcdFx0bm9kZS5zdHlsZS5mb250RmFtaWx5ID0gJ21vbm9zcGFjZSc7XG5cdFx0XHRub2RlLnN0eWxlLmZvbnRTdHlsZSA9ICdub3JtYWwnO1xuXHRcdH1cblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdHN0eWxlOiAnbWFyZ2luLWJvdHRvbTogMC41ZW07IGZvbnQtc3R5bGU6IG5vcm1hbCcsXG5cdFx0XHRsYWJlbDogW1xuXHRcdFx0XHRgJHtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6L+Z5Liq5bel5YW35Y+v5Lul5Y+W5raI5omA5pyJ5oyH5ZCR6K+l6aG155qE6ZO+5o6l77yI4oCc6ZO+5YWl4oCd77yJJyxcblx0XHRcdFx0XHRcdCfpgJnlgIvlt6Xlhbflj6/ku6Xlj5bmtojmiYDmnInmjIflkJHoqbLpoIHnmoTpgKPntZDvvIjjgIzpgKPlhaXjgI3vvIknXG5cdFx0XHRcdFx0KSArXG5cdFx0XHRcdFx0KGZpbGVTcGFjZVxuXHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J++8jOaIlumAmui/h+WKoOWFpTwhLS0gLS0+5rOo6YeK5qCH6K6w6ZqQ6JeP5omA5pyJ5a+55q2k5paH5Lu255qE5L2/55SoJyxcblx0XHRcdFx0XHRcdFx0XHQn77yM5oiW6YCP6YGO5Yqg5YWlPCEtLSAtLT7ms6jph4vmqJnoqJjpmrHol4/miYDmnInlsI3mraTmqpTmoYjnmoTkvb/nlKgnXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdDogJycpXG5cdFx0XHRcdH3jgILkvovlpoLvvJpgLFxuXHRcdFx0XHRsaW5rVGV4dEJlZm9yZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflsIbkvJrlj5jmiJAnLCAn5bCH5pyD6K6K5oiQJyksXG5cdFx0XHRcdGxpbmtUZXh0QWZ0ZXIsXG5cdFx0XHRcdCfvvIwnLFxuXHRcdFx0XHRsaW5rUGxhaW5CZWZvcmUsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5Lya5Y+Y5oiQJywgJ+Wwh+acg+iuiuaIkCcpLFxuXHRcdFx0XHRsaW5rUGxhaW5BZnRlcixcblx0XHRcdFx0J++8jCcsXG5cdFx0XHRcdGxpbmtUZW1wbGF0ZUJlZm9yZSxcblx0XHRcdFx0d2luZG93LndnVUxTKCflsIbkvJrooqvnp7vpmaQnLCAn5bCH5pyD6KKr56e76ZmkJyksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn44CC6K+35bCP5b+D5L2/55So44CCJywgJ+OAguiri+Wwj+W/g+S9v+eUqOOAgicpLFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHRsYWJlbDogJ+eQhueUse+8micsXG5cdFx0XHR2YWx1ZTogcHJlc2V0UmVhc29uIHx8ICcnLFxuXHRcdFx0c2l6ZTogNjAsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRsaXN0OiAnYmFja2xpbmtzJyxcblx0XHRcdGJsdGl0bGU6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdGJsbGltaXQ6ICdtYXgnLFxuXHRcdFx0Ly8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdGJsbmFtZXNwYWNlOiBUd2lua2xlLmdldFByZWYoJ3VubGlua05hbWVzcGFjZXMnKSxcblx0XHRcdHJhd2NvbnRpbnVlOiB0cnVlLFxuXHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0fTtcblx0XHRpZiAoZmlsZVNwYWNlKSB7XG5cdFx0XHRxdWVyeS5saXN0ICs9ICd8aW1hZ2V1c2FnZSc7XG5cdFx0XHRxdWVyeS5pdXRpdGxlID0gcXVlcnkuYmx0aXRsZTtcblx0XHRcdHF1ZXJ5Lml1bGltaXQgPSBxdWVyeS5ibGxpbWl0O1xuXHRcdFx0cXVlcnkuaXVuYW1lc3BhY2UgPSBxdWVyeS5ibG5hbWVzcGFjZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cXVlcnkuYmxmaWx0ZXJyZWRpciA9ICdub25yZWRpcmVjdHMnO1xuXHRcdH1cblx0XHRjb25zdCBxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bpk77lhaUnLCAn5oqT5Y+W6YCj5YWlJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUudW5saW5rLmNhbGxiYWNrcy5kaXNwbGF5LmJhY2tsaW5rc1xuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdFx0aW1hZ2U6IGZpbGVTcGFjZSxcblx0XHR9O1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHRcdGNvbnN0IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRyb290LnN0eWxlLnBhZGRpbmcgPSAnMTVweCc7IC8vIGp1c3Qgc28gaXQgZG9lc24ndCBsb29rIGJyb2tlblxuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KHJvb3QpO1xuXHRcdHFpdXdlbl9hcGkuc3RhdGVsZW0uc3RhdHVzKHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCm4oCmJywgJ+i8ieWFpeS4reKApuKApicpKTtcblx0XHRXaW5kb3cuc2V0Q29udGVudChyb290KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHR9O1xuXHRUd2lua2xlLnVubGluay5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdGNvbnN0IGZvcm0gPSBldmVudC50YXJnZXQ7XG5cdFx0Y29uc3QgaW5wdXQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhKGZvcm0pO1xuXHRcdGlmICghaW5wdXQucmVhc29uKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOW/hemhu+aMh+WumuWPlua2iOmTvuWFpeeahOeQhueUseOAgicsICfmgqjlv4XpoIjmjIflrprlj5bmtojpgKPlhaXnmoTnkIbnlLHjgIInKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGV1bmxpbmsnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlucHV0LmJhY2tsaW5rcyB8fD0gW107XG5cdFx0aW5wdXQuaW1hZ2V1c2FnZSB8fD0gW107XG5cdFx0Y29uc3QgcGFnZXMgPSBNb3JlYml0cy5hcnJheS51bmlxKFsuLi5pbnB1dC5iYWNrbGlua3MsIC4uLmlucHV0LmltYWdldXNhZ2VdKTtcblx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0dm9pZCBtdy5ub3RpZnkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5b+F6aG76Iez5bCR6YCJ5oup5LiA5Liq6KaB5Y+W5raI6ZO+5YWl55qE6aG16Z2i44CCJywgJ+aCqOW/hemgiOiHs+WwkemBuOaTh+S4gOWAi+imgeWPlua2iOmAo+WFpeeahOmggemdouOAgicpLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHRcdHRhZzogJ3R3aW5rbGV1bmxpbmsnLFxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdGNvbnN0IHVubGlua2VyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKFxuXHRcdFx0YOWPlua2iCR7XG5cdFx0XHRcdGlucHV0LmJhY2tsaW5rcy5sZW5ndGhcblx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn6ZO+5YWlJywgJ+mAo+WFpScpICtcblx0XHRcdFx0XHRcdChpbnB1dC5pbWFnZXVzYWdlLmxlbmd0aCA/IHdpbmRvdy53Z1VMUygn5LiO5paH5Lu25L2/55SoJywgJ+iIh+aqlOahiOS9v+eUqCcpIDogJycpXG5cdFx0XHRcdFx0OiB3aW5kb3cud2dVTFMoJ+aWh+S7tuS9v+eUqCcsICfmqpTmoYjkvb/nlKgnKVxuXHRcdFx0fWBcblx0XHQpO1xuXHRcdHVubGlua2VyLnNldE9wdGlvbigncHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMnLCB0cnVlKTtcblx0XHR1bmxpbmtlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0cmVhc29uOiBpbnB1dC5yZWFzb24sXG5cdFx0XHR1bmxpbmtlcixcblx0XHR9O1xuXHRcdHVubGlua2VyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0cGFnZU5hbWUsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6aG16Z2i4oCcJywgJ+WcqOmggemdouOAjCcpICsgcGFnZU5hbWUgKyB3aW5kb3cud2dVTFMoJ+KAneS4reWPlua2iOmTvuWFpScsICfjgI3kuK3lj5bmtojpgKPlhaUnKVxuXHRcdFx0KTtcblx0XHRcdHFpdXdlbl9wYWdlLnNldEJvdEVkaXQodHJ1ZSk7IC8vIHVubGluayBjb25zaWRlcmVkIGEgZmxvb2R5IG9wZXJhdGlvblxuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHtcblx0XHRcdFx0ZG9CYWNrbGlua3M6IGlucHV0LmJhY2tsaW5rcy5pbmNsdWRlcyhwYWdlTmFtZSksXG5cdFx0XHRcdGRvSW1hZ2V1c2FnZTogaW5wdXQuaW1hZ2V1c2FnZS5pbmNsdWRlcyhwYWdlTmFtZSksXG5cdFx0XHRcdC4uLnBhcmFtcyxcblx0XHRcdH0pO1xuXHRcdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLnVubGluay5jYWxsYmFja3MudW5saW5rQmFja2xpbmtzKTtcblx0XHR9KTtcblx0fTtcblx0VHdpbmtsZS51bmxpbmsuY2FsbGJhY2tzID0ge1xuXHRcdGRpc3BsYXk6IHtcblx0XHRcdGJhY2tsaW5rczogKGFwaW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGFwaW9iai5nZXRSZXNwb25zZSgpO1xuXHRcdFx0XHRsZXQgaGF2ZWNvbnRlbnQgPSBmYWxzZTtcblx0XHRcdFx0bGV0IGxpc3Q7XG5cdFx0XHRcdGxldCBuYW1lc3BhY2VzO1xuXHRcdFx0XHRsZXQgaTtcblx0XHRcdFx0aWYgKGFwaW9iai5wYXJhbXMuaW1hZ2UpIHtcblx0XHRcdFx0XHRjb25zdCBpbWFnZXVzYWdlID0gcmVzcG9uc2UucXVlcnkuaW1hZ2V1c2FnZS5zb3J0KFR3aW5rbGUuc29ydEJ5TmFtZXNwYWNlKTtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGltYWdldXNhZ2UubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0XHRcdC8vIExhYmVsIG1hZGUgYnkgVHdpbmtsZS5nZW5lcmF0ZUJhdGNoUGFnZUxpbmtzXG5cdFx0XHRcdFx0XHRsaXN0W2xpc3QubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogaW1hZ2V1c2FnZVtpXS50aXRsZSxcblx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChsaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmlofku7bkvb/nlKgnLCAn5qqU5qGI5L2/55SoJyksXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdG5hbWVzcGFjZXMgPSBbXTtcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgdiBvZiBUd2lua2xlLmdldFByZWYoJ3VubGlua05hbWVzcGFjZXMnKSkge1xuXHRcdFx0XHRcdFx0XHRuYW1lc3BhY2VzW25hbWVzcGFjZXMubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRcdFx0diA9PT0gJzAnXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn77yI5p2h55uu77yJJywgJ++8iOaineebru+8iScpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW3ZdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflt7LpgInmi6nnmoTlkb3lkI3nqbrpl7TvvJonLCAn5bey6YG45pOH55qE5ZG95ZCN56m66ZaT77yaJykgKyBuYW1lc3BhY2VzLmpvaW4oJ+OAgScpLFxuXHRcdFx0XHRcdFx0XHR0b29sdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3mm7TmlLnnm7jlhbPpgInpobnvvIzor7flj4Lop4FbW0g6VFcvUFJFRl1dJyxcblx0XHRcdFx0XHRcdFx0XHQn5oKo5Y+v5ZyoVHdpbmtsZeWBj+WlveioreWumuS4reabtOaUueebuOmXnOmBuOmghe+8jOiri+WPg+imi1tbSDpUVy9QUkVGXV0nXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGlmIChyZXNwb25zZVsncXVlcnktY29udGludWUnXSAmJiByZXNwb25zZVsncXVlcnktY29udGludWUnXS5pbWFnZXVzYWdlKSB7XG5cdFx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmmL7npLrliY0nLCAn6aGv56S65YmNJykgK1xuXHRcdFx0XHRcdFx0XHRcdFx0bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihsaXN0Lmxlbmd0aCkgK1xuXHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuKrmlofku7bkvb/nlKjjgIInLCAn5YCL5qqU5qGI5L2/55So44CCJyksXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajpgIknLCAn5YWo6YG4JyksXG5cdFx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdCQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGUudGFyZ2V0LmZvcm0sICdpbWFnZXVzYWdlJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflhajkuI3pgIknLCAn5YWo5LiN6YG4JyksXG5cdFx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdCQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGUudGFyZ2V0LmZvcm0sICdpbWFnZXVzYWdlJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnaW1hZ2V1c2FnZScsXG5cdFx0XHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRoYXZlY29udGVudCA9IHRydWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnZGl2Jyxcblx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw5paH5Lu25L2/55So44CCJywgJ+acquaJvuWIsOaqlOahiOS9v+eUqOOAgicpLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGJhY2tsaW5rcyA9IHJlc3BvbnNlLnF1ZXJ5LmJhY2tsaW5rcy5zb3J0KFR3aW5rbGUuc29ydEJ5TmFtZXNwYWNlKTtcblx0XHRcdFx0aWYgKGJhY2tsaW5rcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXHRcdFx0XHRcdGZvciAoaSA9IDA7IGkgPCBiYWNrbGlua3MubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0XHRcdC8vIExhYmVsIG1hZGUgYnkgVHdpbmtsZS5nZW5lcmF0ZUJhdGNoUGFnZUxpbmtzXG5cdFx0XHRcdFx0XHRsaXN0W2xpc3QubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6ICcnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYmFja2xpbmtzW2ldLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mTvuWFpScsICfpgKPlhaUnKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRuYW1lc3BhY2VzID0gW107XG5cdFx0XHRcdFx0Zm9yIChjb25zdCB2IG9mIFR3aW5rbGUuZ2V0UHJlZigndW5saW5rTmFtZXNwYWNlcycpKSB7XG5cdFx0XHRcdFx0XHRuYW1lc3BhY2VzW25hbWVzcGFjZXMubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRcdHYgPT09ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfvvIjmnaHnm67vvIknLCAn77yI5qKd55uu77yJJylcblx0XHRcdFx0XHRcdFx0XHQ6IG13LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW3ZdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bey6YCJ5oup55qE5ZG95ZCN56m66Ze077yaJywgJ+W3sumBuOaTh+eahOWRveWQjeepuumWk++8micpICsgbmFtZXNwYWNlcy5qb2luKCfjgIEnKSxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlj4LmlbDorr7nva7kuK3mm7TmlLnnm7jlhbPpgInpobnvvIzor7flj4Lop4FbW0g6VFcvUFJFRl1dJyxcblx0XHRcdFx0XHRcdFx0J+aCqOWPr+WcqFR3aW5rbGXlgY/lpb3oqK3lrprkuK3mm7TmlLnnm7jpl5zpgbjpoIXvvIzoq4vlj4PopotbW0g6VFcvUFJFRl1dJ1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAocmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10gJiYgcmVzcG9uc2VbJ3F1ZXJ5LWNvbnRpbnVlJ10uYmFja2xpbmtzKSB7XG5cdFx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2RpdicsXG5cdFx0XHRcdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pi+56S65YmNJywgJ+mhr+ekuuWJjScpICtcblx0XHRcdFx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKGxpc3QubGVuZ3RoKSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuKrpk77lhaXjgIInLCAn5YCL6YCj5YWl44CCJyksXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOmAiScsICflhajpgbgnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnYmFja2xpbmtzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS4jemAiScsICflhajkuI3pgbgnKSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhlLnRhcmdldC5mb3JtLCAnYmFja2xpbmtzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdiYWNrbGlua3MnLFxuXHRcdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGhhdmVjb250ZW50ID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLmZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pyq5om+5Yiw6ZO+5YWl44CCJywgJ+acquaJvuWIsOmAo+WFpeOAgicpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChoYXZlY29udGVudCkge1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gYXBpb2JqLnBhcmFtcy5mb3JtLnJlbmRlcigpO1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLldpbmRvdy5zZXRDb250ZW50KHJlc3VsdCk7XG5cdFx0XHRcdGZvciAoY29uc3QgbGluayBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAnYmFja2xpbmtzJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3MobGluayk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBsaW5rIG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhyZXN1bHQsICdpbWFnZXVzYWdlJykpIHtcblx0XHRcdFx0XHRUd2lua2xlLmdlbmVyYXRlQmF0Y2hQYWdlTGlua3MobGluayk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3M6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRsZXQgb2xkdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKG9sZHRleHQpO1xuXHRcdFx0bGV0IHN1bW1hcnlUZXh0ID0gJyc7XG5cdFx0XHRsZXQgd2FybmluZ1N0cmluZyA9IGZhbHNlO1xuXHRcdFx0bGV0IHRleHQ7XG5cdFx0XHQvLyByZW1vdmUgaW1hZ2UgdXNhZ2VzXG5cdFx0XHRpZiAocGFyYW1zLmRvSW1hZ2V1c2FnZSkge1xuXHRcdFx0XHR0ZXh0ID0gcWl1d2VuX3BhZ2UuY29tbWVudE91dEltYWdlKG13LmNvbmZpZy5nZXQoJ3dnVGl0bGUnKSwgd2luZG93LndnVUxTKCfms6jph4onLCAn5rOo6YeLJykpLmdldFRleHQoKTtcblx0XHRcdFx0Ly8gZGlkIHdlIGFjdHVhbGx5IG1ha2UgYW55IGNoYW5nZXM/XG5cdFx0XHRcdGlmICh0ZXh0ID09PSBvbGR0ZXh0KSB7XG5cdFx0XHRcdFx0d2FybmluZ1N0cmluZyA9IHdpbmRvdy53Z1VMUygn5paH5Lu25L2/55SoJywgJ+aqlOahiOS9v+eUqCcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN1bW1hcnlUZXh0ID0gd2luZG93LndnVUxTKCfms6jph4rmlofku7bkvb/nlKgnLCAn5rOo6YeL5qqU5qGI5L2/55SoJyk7XG5cdFx0XHRcdFx0b2xkdGV4dCA9IHRleHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIHJlbW92ZSBiYWNrbGlua3Ncblx0XHRcdGlmIChwYXJhbXMuZG9CYWNrbGlua3MpIHtcblx0XHRcdFx0dGV4dCA9IHFpdXdlbl9wYWdlLnJlbW92ZUxpbmsoTW9yZWJpdHMucGFnZU5hbWVOb3JtKS5nZXRUZXh0KCk7XG5cdFx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5yZW1vdmVUZW1wbGF0ZShtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykpLmdldFRleHQoKTtcblx0XHRcdFx0Ly8gZGlkIHdlIGFjdHVhbGx5IG1ha2UgYW55IGNoYW5nZXM/XG5cdFx0XHRcdGlmICh0ZXh0ID09PSBvbGR0ZXh0KSB7XG5cdFx0XHRcdFx0d2FybmluZ1N0cmluZyA9IHdhcm5pbmdTdHJpbmdcblx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCflj5bmtojpk77lhaXmiJbmlofku7bkvb/nlKgnLCAn5Y+W5raI6YCj5YWl5oiW5qqU5qGI5L2/55SoJylcblx0XHRcdFx0XHRcdDogd2luZG93LndnVUxTKCflj5bmtojpk77lhaUnLCAn5Y+W5raI6YCj5YWlJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3VtbWFyeVRleHQgPSAoc3VtbWFyeVRleHQgPyBgJHtzdW1tYXJ5VGV4dH0gLyBgIDogJycpICsgd2luZG93LndnVUxTKCflj5bmtojpk77nu5PliLAnLCAn5Y+W5raI6YCj57WQ5YiwJyk7XG5cdFx0XHRcdFx0b2xkdGV4dCA9IHRleHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICh3YXJuaW5nU3RyaW5nKSB7XG5cdFx0XHRcdC8vIG5vdGhpbmcgdG8gZG8hXG5cdFx0XHRcdHBhZ2VvYmpcblx0XHRcdFx0XHQuZ2V0U3RhdHVzRWxlbWVudCgpXG5cdFx0XHRcdFx0LmVycm9yKGAke3dpbmRvdy53Z1VMUygn5pyq6IO95Zyo6aG16Z2i5LiK5om+5YiwJywgJ+acquiDveWcqOmggemdouS4iuaJvuWIsCcpICsgd2FybmluZ1N0cmluZ33jgIJgKTtcblx0XHRcdFx0cGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUocGFnZW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRzdW1tYXJ5VGV4dCArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJwnLCAn44CMJykgK1xuXHRcdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3vvJonLCAn44CN77yaJykgK1xuXHRcdFx0XHRcdHBhcmFtcy5yZWFzb25cblx0XHRcdCk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0Q3JlYXRlT3B0aW9uKCdub2NyZWF0ZScpO1xuXHRcdFx0cGFnZW9iai5zYXZlKHBhcmFtcy51bmxpbmtlci53b3JrZXJTdWNjZXNzLCBwYXJhbXMudW5saW5rZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5hZGRJbml0Q2FsbGJhY2soVHdpbmtsZS51bmxpbmssICd1bmxpbmsnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVmbHVmZi5qcyAqL1xuKGZ1bmN0aW9uIHR3aW5rbGVmbHVmZigkKSB7XG5cdGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXHQvKipcblx0ICogdHdpbmtsZWZsdWZmLmpzOiBSZXZlcnQvcm9sbGJhY2sgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogTGlua3Mgb24gY29udHJpYnV0aW9ucyxcblx0ICogcmVjZW50IGNoYW5nZXMsIGhpc3RvcnksIGFuZCBkaWZmIHBhZ2VzXG5cdCAqIEFjdGl2ZSBvbjogRGlmZiBwYWdlcywgaGlzdG9yeSBwYWdlcyxcblx0ICogU3BlY2lhbDpSZWNlbnRDaGFuZ2VzKExpbmtlZCksIGFuZCBTcGVjaWFsOkNvbnRyaWJ1dGlvbnNcblx0ICovXG5cdC8qKlxuXHQgKiBUd2lua2xlZmx1ZmYgcmV2ZXJ0IGFuZCBhbnRpdmFuZGFsaXNtIHV0aWxpdHlcblx0ICovXG5cdFR3aW5rbGUuZmx1ZmYgPSAoKSA9PiB7XG5cdFx0Ly8gT25seSBwcm9jZWVkIGlmIHRoZSB1c2VyIGNhbiBhY3R1YWxseSBlZGl0IHRoZSBwYWdlIGluIHF1ZXN0aW9uLlxuXHRcdC8vIHdnSXNQcm9iYWJseUVkaXRhYmxlIHNob3VsZCB0YWtlXG5cdFx0Ly8gY2FyZSBvZiBuYW1lc3BhY2UvY29udGVudE1vZGVsIHJlc3RyaWN0aW9ucyBhcyB3ZWxsIGFzIGV4cGxpY2l0XG5cdFx0Ly8gcHJvdGVjdGlvbnM7IGl0IHdvbid0IHRha2UgY2FyZSBvZiBjYXNjYWRpbmcgb3IgVGl0bGVCbGFja2xpc3QuXG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnSXNQcm9iYWJseUVkaXRhYmxlJykpIHtcblx0XHRcdC8vIHdnRGlmZk9sZElkIGluY2x1ZGVkIGZvciBjbGFyaXR5IGluIGlmIGVsc2UgbG9vcFxuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJykgfHwgbXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSkge1xuXHRcdFx0XHQvLyBSZWxvYWQgYWxvbmdzaWRlIHRoZSByZXZpc2lvbiBzbGlkZXJcblx0XHRcdFx0bXcuaG9vaygnd2lraXBhZ2UuZGlmZicpLmFkZCgoKSA9PiB7XG5cdFx0XHRcdFx0VHdpbmtsZS5mbHVmZi5hZGRMaW5rcy5kaWZmKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSA9PT0gJ3ZpZXcnICYmXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUmV2aXNpb25JZCcpICYmXG5cdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnQ3VyUmV2aXNpb25JZCcpICE9PSBtdy5jb25maWcuZ2V0KCd3Z1JldmlzaW9uSWQnKVxuXHRcdFx0KSB7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3Mub2xkaWQoKTtcblx0XHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSA9PT0gJ2hpc3RvcnknKSB7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MuaGlzdG9yeSgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gLTEpIHtcblx0XHRcdFR3aW5rbGUuZmx1ZmYuc2tpcFRhbGsgPSAhVHdpbmtsZS5nZXRQcmVmKCdvcGVuVGFsa1BhZ2VPbkF1dG9SZXZlcnQnKTtcblx0XHRcdFR3aW5rbGUuZmx1ZmYucm9sbGJhY2tJblBsYWNlID0gVHdpbmtsZS5nZXRQcmVmKCdyb2xsYmFja0luUGxhY2UnKTtcblx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQ29udHJpYnV0aW9ucycpIHtcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5hZGRMaW5rcy5jb250cmlidXRpb25zKCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUmVjZW50Y2hhbmdlcycgfHxcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1JlY2VudGNoYW5nZXNsaW5rZWQnXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gUmVsb2FkIHdpdGggcmVjZW50IGNoYW5nZXMgdXBkYXRlc1xuXHRcdFx0XHQvLyBzdHJ1Y3R1cmVkQ2hhbmdlRmlsdGVycy51aS5pbml0aWFsaXplZCBpcyBqdXN0IG9uIGxvYWRcblx0XHRcdFx0bXcuaG9vaygnd2lraXBhZ2UuY29udGVudCcpLmFkZCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdGlmIChpdGVtLmlzKCdkaXYnKSkge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5mbHVmZi5hZGRMaW5rcy5yZWNlbnRjaGFuZ2VzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdC8vIEEgbGlzdCBvZiB1c2VybmFtZXMsIHVzdWFsbHkgb25seSBib3RzLCB0aGF0IHZhbmRhbGlzbSByZXZlcnQgaXMganVtcGVkXG5cdC8vIG92ZXI7IHRoYXQgaXMsIGlmIHZhbmRhbGlzbSByZXZlcnQgd2FzIGNob3NlbiBvbiBzdWNoIHVzZXJuYW1lLCB0aGVuIGl0c1xuXHQvLyB0YXJnZXQgaXMgb24gdGhlIHJldmlzaW9uIGJlZm9yZS4gIFRoaXMgaXMgZm9yIGhhbmRsaW5nIHF1aWNrIGJvdHMgdGhhdFxuXHQvLyBtYWtlcyBlZGl0cyBzZWNvbmRzIGFmdGVyIHRoZSBvcmlnaW5hbCBlZGl0IGlzIG1hZGUuICBUaGlzIG9ubHkgYWZmZWN0c1xuXHQvLyB2YW5kYWxpc20gcm9sbGJhY2s7IGZvciBnb29kIGZhaXRoIHJvbGxiYWNrLCBpdCB3aWxsIHN0b3AsIGluZGljYXRpbmcgYSBib3Rcblx0Ly8gaGFzIG5vIGZhaXRoLCBhbmQgZm9yIG5vcm1hbCByb2xsYmFjaywgaXQgd2lsbCByb2xsYmFjayB0aGF0IGVkaXQuXG5cdFR3aW5rbGUuZmx1ZmYudHJ1c3RlZEJvdHMgPSBbXTtcblx0VHdpbmtsZS5mbHVmZi5za2lwVGFsayA9IG51bGw7XG5cdFR3aW5rbGUuZmx1ZmYucm9sbGJhY2tJblBsYWNlID0gbnVsbDtcblx0Ly8gU3RyaW5nIHRvIGluc2VydCB3aGVuIGEgdXNlcm5hbWUgaXMgaGlkZGVuXG5cdFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZSA9IHdpbmRvdy53Z1VMUygn5bey6ZqQ6JeP55qE55So5oi3JywgJ+W3sumaseiXj+eahOS9v+eUqOiAhScpO1xuXHQvLyBDb25zb2xpZGF0ZWQgY29uc3RydWN0aW9uIG9mIGZsdWZmIGxpbmtzXG5cdFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIgPSB7XG5cdFx0c3BhblRhZzogKGNvbG9yLCBjb250ZW50KSA9PiB7XG5cdFx0XHRjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0c3Bhbi5zdHlsZS5jb2xvciA9IGNvbG9yO1xuXHRcdFx0c3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7XG5cdFx0XHRyZXR1cm4gc3Bhbjtcblx0XHR9LFxuXHRcdGJ1aWxkTGluazogKGNvbG9yLCB0ZXh0KSA9PiB7XG5cdFx0XHRjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0bGluay5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnNwYW5UYWcoJ0JsYWNrJywgJ1snKSk7XG5cdFx0XHRsaW5rLmFwcGVuZENoaWxkKFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIuc3BhblRhZyhjb2xvciwgdGV4dCkpO1xuXHRcdFx0bGluay5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnNwYW5UYWcoJ0JsYWNrJywgJ10nKSk7XG5cdFx0XHRsaW5rLmhyZWYgPSAnIyc7XG5cdFx0XHRyZXR1cm4gbGluaztcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbdmFuZGFsPW51bGxdIC0gVXNlcm5hbWUgb2YgdGhlIGVkaXRvciBiZWluZyByZXZlcnRlZFxuXHRcdCAqIFByb3ZpZGUgYSBmYWxzZXkgdmFsdWUgaWYgdGhlIHVzZXJuYW1lIGlzIGhpZGRlbiwgZGVmYXVsdHMgdG8gbnVsbFxuXHRcdCAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5saW5lIC0gVHJ1ZSB0byBjcmVhdGUgdHdvIGxpbmtzIGluIGEgc3BhbiwgZmFsc2Vcblx0XHQgKiB0byBjcmVhdGUgdGhyZWUgbGlua3MgaW4gYSBkaXYgKG9wdGlvbmFsKVxuXHRcdCAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gW3Jldj13Z0N1clJldmlzaW9uSWRdIC0gUmV2aXNpb24gSUQgYmVpbmcgcmV2ZXJ0ZWQgKG9wdGlvbmFsKVxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbcGFnZT13Z1BhZ2VOYW1lXSAtIFBhZ2UgYmVpbmcgcmV2ZXJ0ZWQgKG9wdGlvbmFsKVxuXHRcdCAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSByZXZOb2RlXG5cdFx0ICovXG5cdFx0cm9sbGJhY2tMaW5rczogKHZhbmRhbCwgaW5saW5lLCByZXYsIHBhZ2UpID0+IHtcblx0XHRcdHZhbmRhbCB8fD0gbnVsbDtcblx0XHRcdGNvbnN0IGVsZW0gPSBpbmxpbmUgPyAnc3BhbicgOiAnZGl2Jztcblx0XHRcdGNvbnN0IHJldk5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW0pO1xuXHRcdFx0cmV2ID0gTnVtYmVyLnBhcnNlSW50KHJldiwgMTApO1xuXHRcdFx0aWYgKHJldikge1xuXHRcdFx0XHRyZXZOb2RlLnNldEF0dHJpYnV0ZSgnaWQnLCBgdHctcmV2ZXJ0JHtyZXZ9YCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXZOb2RlLnNldEF0dHJpYnV0ZSgnaWQnLCAndHctcmV2ZXJ0Jyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBub3JtTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0cm9uZycpO1xuXHRcdFx0Y29uc3QgdmFuZE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKTtcblx0XHRcdGNvbnN0IG5vcm1MaW5rID0gVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5idWlsZExpbmsoJ1N0ZWVsQmx1ZScsICflm57pgIAnKTtcblx0XHRcdGNvbnN0IHZhbmRMaW5rID0gVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5idWlsZExpbmsoJ1JlZCcsIHdpbmRvdy53Z1VMUygn56C05Z2PJywgJ+egtOWjnicpKTtcblx0XHRcdCQobm9ybUxpbmspLm9uKCdjbGljaycsIChlKSA9PiB7XG5cdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5yZXZlcnQoJ25vcm0nLCB2YW5kYWwsIHJldiwgcGFnZSk7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYuZGlzYWJsZUxpbmtzKHJldk5vZGUpO1xuXHRcdFx0fSk7XG5cdFx0XHQkKHZhbmRMaW5rKS5vbignY2xpY2snLCAoZSkgPT4ge1xuXHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFR3aW5rbGUuZmx1ZmYucmV2ZXJ0KCd2YW5kJywgdmFuZGFsLCByZXYsIHBhZ2UpO1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmRpc2FibGVMaW5rcyhyZXZOb2RlKTtcblx0XHRcdH0pO1xuXHRcdFx0dmFuZE5vZGUuYXBwZW5kQ2hpbGQodmFuZExpbmspO1xuXHRcdFx0bm9ybU5vZGUuYXBwZW5kQ2hpbGQobm9ybUxpbmspO1xuXHRcdFx0Y29uc3Qgc2VwYXJhdG9yID0gaW5saW5lID8gJyAnIDogJyB8fCAnO1xuXHRcdFx0cmV2Tm9kZS5hcHBlbmRDaGlsZChub3JtTm9kZSk7XG5cdFx0XHRyZXZOb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlcGFyYXRvcikpO1xuXHRcdFx0cmV2Tm9kZS5hcHBlbmRDaGlsZCh2YW5kTm9kZSk7XG5cdFx0XHRyZXR1cm4gcmV2Tm9kZTtcblx0XHR9LFxuXHRcdC8vIEJ1aWxkIFtyZXN0b3JlIHRoaXMgcmV2aXNpb25dIGxpbmtzXG5cdFx0cmVzdG9yZVRoaXNSZXZpc2lvbkxpbms6IChyZXZpc2lvblJlZiwgaW5saW5lKSA9PiB7XG5cdFx0XHQvLyBJZiBub3QgYSBzcGVjaWZpYyByZXZpc2lvbiBudW1iZXIsIHNob3VsZCBiZSB3Z0RpZmZOZXdJZC93Z0RpZmZPbGRJZC93Z1JldmlzaW9uSWRcblx0XHRcdHJldmlzaW9uUmVmID0gdHlwZW9mIHJldmlzaW9uUmVmID09PSAnbnVtYmVyJyA/IHJldmlzaW9uUmVmIDogbXcuY29uZmlnLmdldChyZXZpc2lvblJlZik7XG5cdFx0XHRjb25zdCBlbGVtID0gaW5saW5lID8gJ3NwYW4nIDogJ2Rpdic7XG5cdFx0XHRjb25zdCByZXZlcnRUb1JldmlzaW9uTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbSk7XG5cdFx0XHRyZXZlcnRUb1JldmlzaW9uTm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgYHR3LXJldmVydC10by0ke3JldmlzaW9uUmVmfWApO1xuXHRcdFx0cmV2ZXJ0VG9SZXZpc2lvbk5vZGUuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcblx0XHRcdGNvbnN0IHJldmVydFRvUmV2aXNpb25MaW5rID0gVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5idWlsZExpbmsoXG5cdFx0XHRcdCdTYWRkbGVCcm93bicsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oGi5aSN5q2k54mI5pysJywgJ+aBouW+qeatpOeJiOacrCcpXG5cdFx0XHQpO1xuXHRcdFx0JChyZXZlcnRUb1JldmlzaW9uTGluaykub24oJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRUd2lua2xlLmZsdWZmLnJldmVydFRvUmV2aXNpb24ocmV2aXNpb25SZWYpO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoaW5saW5lKSB7XG5cdFx0XHRcdHJldmVydFRvUmV2aXNpb25Ob2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgJykpO1xuXHRcdFx0fVxuXHRcdFx0cmV2ZXJ0VG9SZXZpc2lvbk5vZGUuYXBwZW5kQ2hpbGQocmV2ZXJ0VG9SZXZpc2lvbkxpbmspO1xuXHRcdFx0cmV0dXJuIHJldmVydFRvUmV2aXNpb25Ob2RlO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuZmx1ZmYuYWRkTGlua3MgPSB7XG5cdFx0Y29udHJpYnV0aW9uczogKCkgPT4ge1xuXHRcdFx0Ly8gJCgnc3AtY29udHJpYnV0aW9ucy1mb290ZXItYW5vbi1yYW5nZScpIHJlbGllcyBvbiB0aGUgZm1ib3hcblx0XHRcdC8vIGlkIGluIFtbTWVkaWFXaWtpOlNwLWNvbnRyaWJ1dGlvbnMtZm9vdGVyLWFub24tcmFuZ2VdXSBhbmRcblx0XHRcdC8vIGlzIHVzZWQgdG8gc2hvdyByb2xsYmFjay92YW5kYWxpc20gbGlua3MgZm9yIElQIHJhbmdlc1xuXHRcdFx0Y29uc3QgaXNSYW5nZSA9ICEhJGJvZHkuZmluZCgnI3NwLWNvbnRyaWJ1dGlvbnMtZm9vdGVyLWFub24tcmFuZ2UnKVswXTtcblx0XHRcdGlmIChtdy5jb25maWcuZXhpc3RzKCd3Z1JlbGV2YW50VXNlck5hbWUnKSB8fCBpc1JhbmdlKSB7XG5cdFx0XHRcdC8vIEdldCB0aGUgdXNlcm5hbWUgdGhlc2UgY29udHJpYnV0aW9ucyBhcmUgZm9yXG5cdFx0XHRcdGxldCB1c2VybmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUmVsZXZhbnRVc2VyTmFtZScpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdjb250cmlicycpIHx8XG5cdFx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSAhPT0gdXNlcm5hbWUgJiZcblx0XHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygnb3RoZXJzJykpIHx8XG5cdFx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnVXNlck5hbWUnKSA9PT0gdXNlcm5hbWUgJiYgVHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdtaW5lJykpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0ICRsaXN0ID0gJGJvZHlcblx0XHRcdFx0XHRcdC5maW5kKCcjbXctY29udGVudC10ZXh0Jylcblx0XHRcdFx0XHRcdC5maW5kKCd1bCBsaTpoYXMoc3Bhbi5tdy11Y3RvcCk6aGFzKC5tdy1jaGFuZ2VzbGlzdC1kaWZmKScpO1xuXHRcdFx0XHRcdCRsaXN0LmVhY2goKF9rZXksIGN1cnJlbnQpID0+IHtcblx0XHRcdFx0XHRcdC8vIHJldmlkIGlzIGFsc28gYXZhaWxhYmxlIGluIHRoZSBocmVmIG9mIGJvdGhcblx0XHRcdFx0XHRcdC8vIC5tdy1jaGFuZ2VzbGlzdC1kYXRlIG9yIC5tdy1jaGFuZ2VzbGlzdC1kaWZmXG5cdFx0XHRcdFx0XHRjb25zdCBwYWdlID0gJChjdXJyZW50KS5maW5kKCcubXctY29udHJpYnV0aW9ucy10aXRsZScpLnRleHQoKTtcblx0XHRcdFx0XHRcdC8vIEdldCB1c2VybmFtZSBmb3IgSVAgcmFuZ2VzICh3Z1JlbGV2YW50VXNlck5hbWUgaXMgbnVsbClcblx0XHRcdFx0XHRcdGlmIChpc1JhbmdlKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFRoZSA6bm90IGlzIHBvc3NpYmx5IHVubmVjZXNzYXJ5LCBhcyBpdCBhcHBlYXJzIHRoYXRcblx0XHRcdFx0XHRcdFx0Ly8gLm13LXVzZXJsaW5rIGlzIHNpbXBseSBub3QgcHJlc2VudCBpZiB0aGUgdXNlcm5hbWUgaXMgaGlkZGVuXG5cdFx0XHRcdFx0XHRcdHVzZXJuYW1lID0gJChjdXJyZW50KS5maW5kKCcubXctdXNlcmxpbms6bm90KC5oaXN0b3J5LWRlbGV0ZWQpJykudGV4dCgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gSXQncyB1bmxpa2VseSwgYnV0IHdlIGNhbid0IGVhc2lseSBjaGVjayBmb3IgcmV2ZGVsJ2QgdXNlcm5hbWVzXG5cdFx0XHRcdFx0XHQvLyBzaW5jZSBvbmx5IGEgc3Ryb25nIGVsZW1lbnQgaXMgcHJvdmlkZWQsIHdpdGggbm8gZWFzeSBzZWxlY3RvclxuXHRcdFx0XHRcdFx0Y3VycmVudC5hcHBlbmRDaGlsZChcblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yb2xsYmFja0xpbmtzKHVzZXJuYW1lLCB0cnVlLCBjdXJyZW50LmRhdGFzZXQubXdSZXZpZCwgcGFnZSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlY2VudGNoYW5nZXM6ICgpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdSZWNlbnRjaGFuZ2VzJyAmJlxuXHRcdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignc2hvd1JvbGxiYWNrTGlua3MnKS5pbmNsdWRlcygncmVjZW50Y2hhbmdlcycpKSB8fFxuXHRcdFx0XHQobXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1JlY2VudGNoYW5nZXNsaW5rZWQnICYmXG5cdFx0XHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdyZWNlbnRjaGFuZ2VzbGlua2VkJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gTGF0ZXN0IGFuZCByZXZlcnRhYmxlIChub3QgcGFnZSBjcmVhdGlvbnMsIGxvZ3MsIGNhdGVnb3JpemF0aW9ucywgZXRjLilcblx0XHRcdFx0bGV0ICRsaXN0ID0gJGJvZHkuZmluZCgnLm13LWNoYW5nZXNsaXN0IC5tdy1jaGFuZ2VzbGlzdC1sYXN0Lm13LWNoYW5nZXNsaXN0LXNyYy1tdy1lZGl0Jyk7XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgdG9wLWxldmVsIGhlYWRlciBpZiBcImdyb3VwIGNoYW5nZXNcIiBwcmVmZXJlbmNlIGlzIHVzZWRcblx0XHRcdFx0Ly8gYW5kIGZpbmQgb25seSBpbmRpdmlkdWFsIGxpbmVzIG9yIG5lc3RlZCBsaW5lc1xuXHRcdFx0XHQkbGlzdCA9ICRsaXN0XG5cdFx0XHRcdFx0Lm5vdCgnLm13LXJjZmlsdGVycy11aS1oaWdobGlnaHRzLWVuaGFuY2VkLXRvcGxldmVsJylcblx0XHRcdFx0XHQuZmluZCgnLm13LWNoYW5nZXNsaXN0LWxpbmUtaW5uZXIsIHRkLm13LWVuaGFuY2VkLXJjLW5lc3RlZCcpO1xuXHRcdFx0XHQkbGlzdC5lYWNoKChfa2V5LCBjdXJyZW50KSA9PiB7XG5cdFx0XHRcdFx0Ly8gVGhlIDpub3QgaXMgcG9zc2libHkgdW5uZWNlc3NhcnksIGFzIGl0IGFwcGVhcnMgdGhhdFxuXHRcdFx0XHRcdC8vIC5tdy11c2VybGluayBpcyBzaW1wbHkgbm90IHByZXNlbnQgaWYgdGhlIHVzZXJuYW1lIGlzIGhpZGRlblxuXHRcdFx0XHRcdGNvbnN0IHZhbmRhbCA9ICQoY3VycmVudCkuZmluZCgnLm13LXVzZXJsaW5rOm5vdCguaGlzdG9yeS1kZWxldGVkKScpLnRleHQoKTtcblx0XHRcdFx0XHRjb25zdCBocmVmID0gJChjdXJyZW50KS5maW5kKCcubXctY2hhbmdlc2xpc3QtZGlmZicpLmF0dHIoJ2hyZWYnKTtcblx0XHRcdFx0XHRjb25zdCByZXYgPSBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ2RpZmYnLCBocmVmKTtcblx0XHRcdFx0XHRjb25zdCBwYWdlID0gY3VycmVudC5kYXRhc2V0LnRhcmdldFBhZ2U7XG5cdFx0XHRcdFx0Y3VycmVudC5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnJvbGxiYWNrTGlua3ModmFuZGFsLCB0cnVlLCByZXYsIHBhZ2UpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRoaXN0b3J5OiAoKSA9PiB7XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdzaG93Um9sbGJhY2tMaW5rcycpLmluY2x1ZGVzKCdoaXN0b3J5JykpIHtcblx0XHRcdFx0Ly8gQWxsIHJldnNcblx0XHRcdFx0Y29uc3QgaGlzdExpc3QgPSAkYm9keS5maW5kKCcjcGFnZWhpc3RvcnkgbGknKS50b0FycmF5KCk7XG5cdFx0XHRcdC8vIE9uIGZpcnN0IHBhZ2Ugb2YgcmVzdWx0cywgc28gYWRkIHJldmVydC9yb2xsYmFja1xuXHRcdFx0XHQvLyBsaW5rcyB0byB0aGUgdG9wIHJldmlzaW9uXG5cdFx0XHRcdGlmICghJGJvZHkuZmluZCgnYS5tdy1maXJzdGxpbmsnKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBmaXJzdCA9IGhpc3RMaXN0LnNoaWZ0KCk7XG5cdFx0XHRcdFx0Y29uc3QgdmFuZGFsID0gJChmaXJzdCkuZmluZCgnLm13LXVzZXJsaW5rOm5vdCguaGlzdG9yeS1kZWxldGVkKScpLnRleHQoKTtcblx0XHRcdFx0XHQvLyBDaGVjayBmb3IgZmlyc3QgdXNlcm5hbWUgZGlmZmVyZW50IHRoYW4gdGhlIHRvcCB1c2VyLFxuXHRcdFx0XHRcdC8vIG9ubHkgYXBwbHkgcm9sbGJhY2sgbGlua3MgaWYvd2hlbiBmb3VuZFxuXHRcdFx0XHRcdC8vIGZvciBmYXN0ZXIgdGhhbiBldmVyeVxuXHRcdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBoaXN0TGlzdCkge1xuXHRcdFx0XHRcdFx0aWYgKCQoaXRlbSkuZmluZCgnLm13LXVzZXJsaW5rJykudGV4dCgpICE9PSB2YW5kYWwpIHtcblx0XHRcdFx0XHRcdFx0Zmlyc3QuYXBwZW5kQ2hpbGQoVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yb2xsYmFja0xpbmtzKHZhbmRhbCwgdHJ1ZSkpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gb2xkaWRcblx0XHRcdFx0Zm9yIChjb25zdCByZXYgb2YgaGlzdExpc3QpIHtcblx0XHRcdFx0XHQvLyBGcm9tIHJlc3RvcmVUaGlzUmV2aXNpb24sIG5vbi10cmFuc2ZlcmFibGVcblx0XHRcdFx0XHQvLyBJZiB0aGUgdGV4dCBoYXMgYmVlbiByZXZkZWwnZCwgaXQgZ2V0cyB3cmFwcGVkIGluIGEgc3BhbiB3aXRoIC5oaXN0b3J5LWRlbGV0ZWQsXG5cdFx0XHRcdFx0Ly8gYW5kIGhyZWYgd2lsbCBiZSB1bmRlZmluZWQgKGFuZCB0aHVzIG9sZGlkIGlzIE5hTilcblx0XHRcdFx0XHRjb25zdCB7aHJlZn0gPSByZXYucXVlcnlTZWxlY3RvcignLm13LWNoYW5nZXNsaXN0LWRhdGUnKTtcblx0XHRcdFx0XHRjb25zdCBvbGRpZCA9IE51bWJlci5wYXJzZUludChtdy51dGlsLmdldFBhcmFtVmFsdWUoJ29sZGlkJywgaHJlZiksIDEwKTtcblx0XHRcdFx0XHRpZiAoIU51bWJlci5pc05hTihvbGRpZCkpIHtcblx0XHRcdFx0XHRcdHJldi5hcHBlbmRDaGlsZChUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnJlc3RvcmVUaGlzUmV2aXNpb25MaW5rKG9sZGlkLCB0cnVlKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRkaWZmOiAoKSA9PiB7XG5cdFx0XHQvLyBBdXRvZmlsbCB1c2VyIHRhbGsgbGlua3Mgb24gZGlmZnMgd2l0aCB2YW5hcnRpY2xlIGZvciBlYXN5IHdhcm5pbmcsIGJ1dCBkb24ndCBhdXRvd2FyblxuXHRcdFx0Y29uc3Qgd2FybkZyb21UYWxrID0gKHh0aXRsZSkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YWxrTGluayA9ICQoYCNtdy1kaWZmLSR7eHRpdGxlfTIgLm13LXVzZXJ0b29sbGlua3MgYWApLmZpcnN0KCk7XG5cdFx0XHRcdGlmICh0YWxrTGluay5sZW5ndGgpIHtcblx0XHRcdFx0XHRsZXQgZXh0cmFQYXJhbXMgPSBgdmFuYXJ0aWNsZT0ke213LnV0aWwucmF3dXJsZW5jb2RlKE1vcmViaXRzLnBhZ2VOYW1lTm9ybSl9Jm5vYXV0b3dhcm49dHJ1ZWA7XG5cdFx0XHRcdFx0Ly8gZGlmZklEcyBmb3IgdmFuYXJ0aWNsZXJldmlkXG5cdFx0XHRcdFx0ZXh0cmFQYXJhbXMgKz0gJyZ2YW5hcnRpY2xlcmV2aWQ9Jztcblx0XHRcdFx0XHRleHRyYVBhcmFtcyArPSB4dGl0bGUgPT09ICdvdGl0bGUnID8gbXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSA6IG13LmNvbmZpZy5nZXQoJ3dnRGlmZk5ld0lkJyk7XG5cdFx0XHRcdFx0Y29uc3QgaHJlZiA9IHRhbGtMaW5rLmF0dHIoJ2hyZWYnKTtcblx0XHRcdFx0XHRpZiAoaHJlZi5pbmNsdWRlcygnPycpKSB7XG5cdFx0XHRcdFx0XHR0YWxrTGluay5hdHRyKCdocmVmJywgYCR7aHJlZn0mJHtleHRyYVBhcmFtc31gKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGFsa0xpbmsuYXR0cignaHJlZicsIGAke2hyZWZ9PyR7ZXh0cmFQYXJhbXN9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0Ly8gT2xkZXIgcmV2aXNpb25cblx0XHRcdHdhcm5Gcm9tVGFsaygnb3RpdGxlJyk7IC8vIEFkZCBxdWljay13YXJuIGxpbmsgdG8gdXNlciB0YWxrIGxpbmtcblx0XHRcdC8vIERvbid0IGxvYWQgaWYgdGhlcmUncyBhIHNpbmdsZSByZXZpc2lvbiBvciB3ZWlyZCBkaWZmIChjdXIgb24gbGF0ZXN0KVxuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnRGlmZk9sZElkJykgJiYgbXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKSAhPT0gbXcuY29uZmlnLmdldCgnd2dEaWZmTmV3SWQnKSkge1xuXHRcdFx0XHQvLyBBZGQgYSBbcmVzdG9yZSB0aGlzIHJldmlzaW9uXSBsaW5rIHRvIHRoZSBvbGRlciByZXZpc2lvblxuXHRcdFx0XHRjb25zdCBvbGRUaXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1kaWZmLW90aXRsZTEnKS5wYXJlbnROb2RlO1xuXHRcdFx0XHRjb25zdCByZXZlcnRUb1JldmlzaW9uID0gVHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yZXN0b3JlVGhpc1JldmlzaW9uTGluaygnd2dEaWZmT2xkSWQnKTtcblx0XHRcdFx0b2xkVGl0bGUuaW5zZXJ0QmVmb3JlKHJldmVydFRvUmV2aXNpb24sIG9sZFRpdGxlLmZpcnN0Q2hpbGQpO1xuXHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdjdXN0b21SZXZlcnRTdW1tYXJ5JykubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdHJldmVydFRvUmV2aXNpb24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyB8fCAnKSk7XG5cdFx0XHRcdFx0Y29uc3QgcmV2ZXJ0c3VtbWFyeSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdFx0XHRcdG5hbWU6ICdyZXZlcnRzdW1tYXJ5Jyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXZlcnRzdW1tYXJ5LmFwcGVuZCh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnb3B0aW9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mAieaLqeWbnumAgOeQhueUsScsICfpgbjmk4flm57pgIDnkIbnlLEnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQkKFR3aW5rbGUuZ2V0UHJlZignY3VzdG9tUmV2ZXJ0U3VtbWFyeScpKS5lYWNoKChfLCBlKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXZlcnRzdW1tYXJ5LmFwcGVuZCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdvcHRpb24nLFxuXHRcdFx0XHRcdFx0XHRsYWJlbDogZS5sYWJlbCxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGUudmFsdWUsXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXZlcnRUb1JldmlzaW9uLmFwcGVuZENoaWxkKHJldmVydHN1bW1hcnkucmVuZGVyKCkuY2hpbGROb2Rlc1swXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIE5ld2VyIHJldmlzaW9uXG5cdFx0XHR3YXJuRnJvbVRhbGsoJ250aXRsZScpOyAvLyBBZGQgcXVpY2std2FybiBsaW5rIHRvIHVzZXIgdGFsayBsaW5rXG5cdFx0XHQvLyBBZGQgZWl0aGVyIHJlc3RvcmUgb3Igcm9sbGJhY2sgbGlua3MgdG8gdGhlIG5ld2VyIHJldmlzaW9uXG5cdFx0XHQvLyBEb24ndCBzaG93IGlmIHRoZXJlJ3MgYSBzaW5nbGUgcmV2aXNpb24gb3Igd2VpcmQgZGlmZiAocHJldiBvbiBmaXJzdClcblx0XHRcdGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZGlmZmVyZW5jZXMtbmV4dGxpbmsnKSkge1xuXHRcdFx0XHQvLyBOb3QgbGF0ZXN0IHJldmlzaW9uLCBhZGQgW3Jlc3RvcmUgdGhpcyByZXZpc2lvbl0gbGluayB0byBuZXdlciByZXZpc2lvblxuXHRcdFx0XHRjb25zdCBuZXdUaXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1kaWZmLW50aXRsZTEnKS5wYXJlbnROb2RlO1xuXHRcdFx0XHRuZXdUaXRsZS5pbnNlcnRCZWZvcmUoXG5cdFx0XHRcdFx0VHdpbmtsZS5mbHVmZi5saW5rQnVpbGRlci5yZXN0b3JlVGhpc1JldmlzaW9uTGluaygnd2dEaWZmTmV3SWQnKSxcblx0XHRcdFx0XHRuZXdUaXRsZS5maXJzdENoaWxkXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ3Nob3dSb2xsYmFja0xpbmtzJykuaW5jbHVkZXMoJ2RpZmYnKSAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0RpZmZPbGRJZCcpICYmXG5cdFx0XHRcdChtdy5jb25maWcuZ2V0KCd3Z0RpZmZPbGRJZCcpICE9PSBtdy5jb25maWcuZ2V0KCd3Z0RpZmZOZXdJZCcpIHx8XG5cdFx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RpZmZlcmVuY2VzLXByZXZsaW5rJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gTm9ybWFsbHkgLm13LXVzZXJsaW5rIGlzIGEgbGluaywgYnV0IGlmIHRoZVxuXHRcdFx0XHQvLyB1c2VybmFtZSBpcyBoaWRkZW4sIGl0IHdpbGwgYmUgYSBzcGFuIHdpdGhcblx0XHRcdFx0Ly8gLmhpc3RvcnktZGVsZXRlZCBhcyB3ZWxsLiBXaGVuIGEgc3lzb3Agdmlld3MgdGhlXG5cdFx0XHRcdC8vIGhpZGRlbiBjb250ZW50LCB0aGUgc3BhbiBjb250YWlucyB0aGUgdXNlcm5hbWUgaW4gYVxuXHRcdFx0XHQvLyBsaW5rIGVsZW1lbnQsIHdoaWNoIHdpbGwgKmp1c3QqIGhhdmVcblx0XHRcdFx0Ly8gLm13LXVzZXJsaW5rLiBUaGUgYmVsb3cgdGh1cyBmaW5kcyB0aGUgZmlyc3Rcblx0XHRcdFx0Ly8gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLCB3aGljaCBpZiBoaWRkZW4gaXMgdGhlIHNwYW5cblx0XHRcdFx0Ly8gYW5kIHRodXMgdGV4dCByZXR1cm5zIHVuZGVmaW5lZC4gVGVjaG5pY2FsbHksIHRoaXNcblx0XHRcdFx0Ly8gaXMgYSBwbGFjZSB3aGVyZSBzeXNvcHMgKmNvdWxkKiBoYXZlIG1vcmVcblx0XHRcdFx0Ly8gaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRvIHRoZW0gKGFzIGFib3ZlLCB2aWFcblx0XHRcdFx0Ly8gJnVuaGlkZT0xKSwgc2luY2UgdGhlIHVzZXJuYW1lIHdpbGwgYmUgYXZhaWxhYmxlIGJ5XG5cdFx0XHRcdC8vIGNoZWNraW5nIGEubXctdXNlcmxpbmsgaW5zdGVhZCwgYnV0IHJldmVydCgpIHdpbGxcblx0XHRcdFx0Ly8gbmVlZCByZXdvcmtpbmcgYXJvdW5kIHVzZXJIaWRkZW5cblx0XHRcdFx0Y29uc3QgdmFuZGFsID0gJGJvZHkuZmluZCgnI213LWRpZmYtbnRpdGxlMicpLmZpbmQoJy5tdy11c2VybGluaycpWzBdLnRleHQ7XG5cdFx0XHRcdGNvbnN0IG50aXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1kaWZmLW50aXRsZTEnKS5wYXJlbnROb2RlO1xuXHRcdFx0XHRudGl0bGUuaW5zZXJ0QmVmb3JlKFR3aW5rbGUuZmx1ZmYubGlua0J1aWxkZXIucm9sbGJhY2tMaW5rcyh2YW5kYWwpLCBudGl0bGUuZmlyc3RDaGlsZCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbGRpZDogKCkgPT4ge1xuXHRcdFx0Ly8gQWRkIGEgW3Jlc3RvcmUgdGhpcyByZXZpc2lvbl0gbGluayBvbiBvbGQgcmV2aXNpb25zXG5cdFx0XHRjb25zdCB0aXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1yZXZpc2lvbi1pbmZvJykucGFyZW50Tm9kZTtcblx0XHRcdHRpdGxlLmluc2VydEJlZm9yZShUd2lua2xlLmZsdWZmLmxpbmtCdWlsZGVyLnJlc3RvcmVUaGlzUmV2aXNpb25MaW5rKCd3Z1JldmlzaW9uSWQnKSwgdGl0bGUuZmlyc3RDaGlsZCk7XG5cdFx0fSxcblx0fTtcblx0VHdpbmtsZS5mbHVmZi5kaXNhYmxlTGlua3MgPSAocGFyZW50Tm9kZSkgPT4ge1xuXHRcdC8vIEFycmF5LmZyb20gbm90IGF2YWlsYWJsZSBpbiBJRTExIDooXG5cdFx0JChwYXJlbnROb2RlKVxuXHRcdFx0LmNoaWxkcmVuKClcblx0XHRcdC5lYWNoKChfaSwgbm9kZSkgPT4ge1xuXHRcdFx0XHRub2RlLmlubmVySFRNTCA9IG5vZGUudGV4dENvbnRlbnQ7IC8vIEZlZWxzIGxpa2UgY2hlYXRpbmdcblx0XHRcdFx0JChub2RlKS5jc3MoJ2ZvbnQtd2VpZ2h0JywgJ25vcm1hbCcpLmNzcygnY29sb3InLCAnZGFya2dyYXknKTtcblx0XHRcdH0pO1xuXHR9O1xuXHRUd2lua2xlLmZsdWZmLnJldmVydCA9ICh0eXBlLCB2YW5kYWwsIHJldiwgcGFnZSkgPT4ge1xuXHRcdGlmIChtdy51dGlsLmlzSVB2NkFkZHJlc3ModmFuZGFsKSkge1xuXHRcdFx0dmFuZGFsID0gTW9yZWJpdHMuaXAuc2FuaXRpemVJUHY2KHZhbmRhbCk7XG5cdFx0fVxuXHRcdGNvbnN0IHBhZ2VuYW1lID0gcGFnZSB8fCBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0Y29uc3QgcmV2aWQgPSByZXYgfHwgbXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJyk7XG5cdFx0bGV0IHN1bW1hcnkgPSAnJztcblx0XHRpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3JldmVydHN1bW1hcnknKVswXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzdW1tYXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3JldmVydHN1bW1hcnknKVswXS52YWx1ZTtcblx0XHR9XG5cdFx0aWYgKFR3aW5rbGUuZmx1ZmYucm9sbGJhY2tJblBsYWNlKSB7XG5cdFx0XHRjb25zdCBub3RpZnlTdGF0dXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeShub3RpZnlTdGF0dXMsIHtcblx0XHRcdFx0YXV0b0hpZGU6IGZhbHNlLFxuXHRcdFx0XHR0aXRsZTogYOWbnumAgCR7cGFnZX1gLFxuXHRcdFx0XHR0YWc6IGB0d2lua2xlZmx1ZmZfJHtyZXZ9YCwgLy8gU2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBnaXZlbiBkaXNhYmxlTGlua1xuXHRcdFx0fSk7XG5cblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KG5vdGlmeVN0YXR1cyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtdy1jb250ZW50LXRleHQnKSk7XG5cdFx0XHQkYm9keS5maW5kKCcjY2F0bGlua3MnKS5yZW1vdmUoKTtcblx0XHR9XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0dHlwZSxcblx0XHRcdHVzZXI6IHZhbmRhbCxcblx0XHRcdHVzZXJIaWRkZW46ICF2YW5kYWwsXG5cdFx0XHRwYWdlbmFtZSxcblx0XHRcdHJldmlkLFxuXHRcdFx0c3VtbWFyeSxcblx0XHR9O1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0cHJvcDogWydpbmZvJywgJ3JldmlzaW9ucyddLFxuXHRcdFx0dGl0bGVzOiBwYWdlbmFtZSxcblx0XHRcdGludGVzdGFjdGlvbnM6ICdlZGl0Jyxcblx0XHRcdHJ2bGltaXQ6IFR3aW5rbGUuZ2V0UHJlZigncmV2ZXJ0TWF4UmV2aXNpb25zJyksXG5cdFx0XHRydnByb3A6IFsnaWRzJywgJ3RpbWVzdGFtcCcsICd1c2VyJ10sXG5cdFx0XHRjdXJ0aW1lc3RhbXA6ICcnLFxuXHRcdFx0bWV0YTogJ3Rva2VucycsXG5cdFx0XHR0eXBlOiAnY3NyZicsXG5cdFx0fTtcblx0XHRjb25zdCBxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0d2luZG93LndnVUxTKCfmipPlj5bovoPml6nkv67orqLniYjmnKzkv6Hmga8nLCAn5oqT5Y+W6LyD5pep5L+u6KiC54mI5pys6LOH6KiKJyksXG5cdFx0XHRxdWVyeSxcblx0XHRcdFR3aW5rbGUuZmx1ZmYuY2FsbGJhY2tzLm1haW5cblx0XHQpO1xuXHRcdHFpdXdlbl9hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmZsdWZmLnJldmVydFRvUmV2aXNpb24gPSAob2xkcmV2KSA9PiB7XG5cdFx0bGV0IHN1bW1hcnkgPSAnJztcblx0XHRpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3JldmVydHN1bW1hcnknKVswXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzdW1tYXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3JldmVydHN1bW1hcnknKVswXS52YWx1ZTtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI213LWNvbnRlbnQtdGV4dCcpKTtcblx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdHByb3A6IFsnaW5mbycsICdyZXZpc2lvbnMnXSxcblx0XHRcdHRpdGxlczogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0cnZsaW1pdDogMSxcblx0XHRcdHJ2c3RhcnRpZDogb2xkcmV2LFxuXHRcdFx0cnZwcm9wOiBbJ2lkcycsICd1c2VyJ10sXG5cdFx0XHRmb3JtYXQ6ICd4bWwnLFxuXHRcdFx0Y3VydGltZXN0YW1wOiAnJyxcblx0XHRcdG1ldGE6ICd0b2tlbnMnLFxuXHRcdFx0dHlwZTogJ2NzcmYnLFxuXHRcdH07XG5cdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5oqT5Y+W6L6D5pep5L+u6K6i54mI5pys5L+h5oGvJywgJ+aKk+WPlui8g+aXqeS/ruiogueJiOacrOizh+ioiicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcy50b1JldmlzaW9uXG5cdFx0KTtcblx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHtcblx0XHRcdHJldjogb2xkcmV2LFxuXHRcdFx0c3VtbWFyeSxcblx0XHR9O1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcyA9IHtcblx0XHR0b1JldmlzaW9uOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxEb2MgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBsYXN0cmV2aWQgPSBOdW1iZXIucGFyc2VJbnQoJCh4bWxEb2MpLmZpbmQoJ3BhZ2UnKS5hdHRyKCdsYXN0cmV2aWQnKSwgMTApO1xuXHRcdFx0Y29uc3QgdG91Y2hlZCA9ICQoeG1sRG9jKS5maW5kKCdwYWdlJykuYXR0cigndG91Y2hlZCcpO1xuXHRcdFx0Y29uc3QgbG9hZHRpbWVzdGFtcCA9ICQoeG1sRG9jKS5maW5kKCdhcGknKS5hdHRyKCdjdXJ0aW1lc3RhbXAnKTtcblx0XHRcdGNvbnN0IGNzcmZ0b2tlbiA9ICQoeG1sRG9jKS5maW5kKCd0b2tlbnMnKS5hdHRyKCdjc3JmdG9rZW4nKTtcblx0XHRcdGNvbnN0IHJldmVydFRvUmV2SUQgPSBOdW1iZXIucGFyc2VJbnQoJCh4bWxEb2MpLmZpbmQoJ3JldicpLmF0dHIoJ3JldmlkJyksIDEwKTtcblx0XHRcdGNvbnN0IHJldmVydFRvVXNlciA9ICQoeG1sRG9jKS5maW5kKCdyZXYnKS5hdHRyKCd1c2VyJyk7XG5cdFx0XHRjb25zdCByZXZlcnRUb1VzZXJIaWRkZW4gPSB0eXBlb2YgJCh4bWxEb2MpLmZpbmQoJ3JldicpLmF0dHIoJ3VzZXJoaWRkZW4nKSA9PT0gJ3N0cmluZyc7XG5cdFx0XHRpZiAocmV2ZXJ0VG9SZXZJRCAhPT0gYXBpb2JqLnBhcmFtcy5yZXYpIHtcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmipPlj5bliLDnmoTkv67orqLniYjmnKzkuI7or7fmsYLnmoTkv67orqLniYjmnKzkuI3nrKbvvIzlj5bmtojjgIInLFxuXHRcdFx0XHRcdFx0J+aKk+WPluWIsOeahOS/ruiogueJiOacrOiIh+iri+axgueahOS/ruiogueJiOacrOS4jeespu+8jOWPlua2iOOAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG9wdGlvbmFsX3N1bW1hcnkgPSBwcm9tcHQoXG5cdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn6K+36L6T5YWl5Zue6YCA55CG55Sx77yaJywgJ+iri+i8uOWFpeWbnumAgOeQhueUse+8micpfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCxcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5zdW1tYXJ5XG5cdFx0XHQpOyAvLyBwYWRkZWQgb3V0IHRvIHdpZGVuIHByb21wdCBpbiBGaXJlZm94XG5cdFx0XHRpZiAob3B0aW9uYWxfc3VtbWFyeSA9PT0gbnVsbCkge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfnlLHnlKjmiLflj5bmtojjgIInLCAn55Sx5L2/55So6ICF5Y+W5raI44CCJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzdW1tYXJ5ID0gVHdpbmtsZS5mbHVmZi5mb3JtYXRTdW1tYXJ5KFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WbnumAgOWIsOeUsSRVU0VS5YGa5Ye655qE5L+u6K6i54mI5pysJywgJ+WbnumAgOWIsOeUsSRVU0VS5YGa5Ye655qE5L+u6KiC54mI5pysJykgKyByZXZlcnRUb1JldklELFxuXHRcdFx0XHRyZXZlcnRUb1VzZXJIaWRkZW4gPyBudWxsIDogcmV2ZXJ0VG9Vc2VyLFxuXHRcdFx0XHRvcHRpb25hbF9zdW1tYXJ5XG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdFx0XHR0aXRsZTogbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLFxuXHRcdFx0XHRzdW1tYXJ5LFxuXHRcdFx0XHR0YWdzOiBUd2lua2xlLmNoYW5nZVRhZ3MsXG5cdFx0XHRcdHRva2VuOiBjc3JmdG9rZW4sXG5cdFx0XHRcdHVuZG86IGxhc3RyZXZpZCxcblx0XHRcdFx0dW5kb2FmdGVyOiByZXZlcnRUb1JldklELFxuXHRcdFx0XHRiYXNldGltZXN0YW1wOiB0b3VjaGVkLFxuXHRcdFx0XHRzdGFydHRpbWVzdGFtcDogbG9hZHRpbWVzdGFtcCxcblx0XHRcdFx0bWlub3I6IFR3aW5rbGUuZ2V0UHJlZignbWFya1JldmVydGVkUGFnZXNBc01pbm9yJykuaW5jbHVkZXMoJ3RvcmV2JykgPyB0cnVlIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRib3Q6IHRydWUsXG5cdFx0XHR9O1xuXHRcdFx0Ly8gSGFuZGxlIHdhdGNoaW5nLCBwb3NzaWJsZSBleHBpcnlcblx0XHRcdGlmIChUd2lua2xlLmdldFByZWYoJ3dhdGNoUmV2ZXJ0ZWRQYWdlcycpLmluY2x1ZGVzKCd0b3JldicpKSB7XG5cdFx0XHRcdGNvbnN0IHdhdGNoT3JFeHBpcnkgPSBUd2lua2xlLmdldFByZWYoJ3dhdGNoUmV2ZXJ0ZWRFeHBpcnknKTtcblx0XHRcdFx0aWYgKCF3YXRjaE9yRXhwaXJ5IHx8IHdhdGNoT3JFeHBpcnkgPT09ICdubycpIHtcblx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3QgPSAnbm9jaGFuZ2UnO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHdhdGNoT3JFeHBpcnkgPT09ICdkZWZhdWx0JyB8fCB3YXRjaE9yRXhwaXJ5ID09PSAncHJlZmVyZW5jZXMnKSB7XG5cdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ID0gJ3ByZWZlcmVuY2VzJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3QgPSAnd2F0Y2gnO1xuXHRcdFx0XHRcdC8vIG51bWJlciBhbGxvd2VkIGJ1dCBub3QgdXNlZCBpbiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtc1xuXHRcdFx0XHRcdGlmICh0eXBlb2Ygd2F0Y2hPckV4cGlyeSA9PT0gJ3N0cmluZycgJiYgd2F0Y2hPckV4cGlyeSAhPT0gJ3llcycpIHtcblx0XHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdGV4cGlyeSA9IHdhdGNoT3JFeHBpcnk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9ICflm57pgIDlrozmiJAnO1xuXHRcdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv53lrZjlm57pgIDlhoXlrrknLCAn5YSy5a2Y5Zue6YCA5YWn5a65JyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRUd2lua2xlLmZsdWZmLmNhbGxiYWNrcy5jb21wbGV0ZSxcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtXG5cdFx0XHQpO1xuXHRcdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSBhcGlvYmoucGFyYW1zO1xuXHRcdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdFx0fSxcblx0XHRtYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxEb2MgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRpZiAoJCh4bWxEb2MpLmZpbmQoJ2FjdGlvbnMnKS5hdHRyKCdlZGl0JykgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3IoXCJVbmFibGUgdG8gZWRpdCB0aGUgcGFnZSwgaXQncyBwcm9iYWJseSBwcm90ZWN0ZWQuXCIpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBsYXN0cmV2aWQgPSBOdW1iZXIucGFyc2VJbnQoJCh4bWxEb2MpLmZpbmQoJ3BhZ2UnKS5hdHRyKCdsYXN0cmV2aWQnKSwgMTApO1xuXHRcdFx0Y29uc3QgdG91Y2hlZCA9ICQoeG1sRG9jKS5maW5kKCdwYWdlJykuYXR0cigndG91Y2hlZCcpO1xuXHRcdFx0Y29uc3QgbG9hZHRpbWVzdGFtcCA9ICQoeG1sRG9jKS5maW5kKCdhcGknKS5hdHRyKCdjdXJ0aW1lc3RhbXAnKTtcblx0XHRcdGNvbnN0IGNzcmZ0b2tlbiA9ICQoeG1sRG9jKS5maW5kKCd0b2tlbnMnKS5hdHRyKCdjc3JmdG9rZW4nKTtcblx0XHRcdGNvbnN0IHJldnMgPSAkKHhtbERvYykuZmluZCgncmV2Jyk7XG5cdFx0XHRjb25zdCB7c3RhdGVsZW19ID0gYXBpb2JqO1xuXHRcdFx0Y29uc3Qge3BhcmFtc30gPSBhcGlvYmo7XG5cdFx0XHRpZiAocmV2cy5sZW5ndGggPCAxKSB7XG5cdFx0XHRcdHN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn5rKh5pyJ5YW25a6D5L+u6K6i54mI5pys77yM5peg5rOV5Zue6YCAJywgJ+aykuacieWFtuWug+S/ruiogueJiOacrO+8jOeEoeazleWbnumAgCcpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgW3RvcF0gPSByZXZzO1xuXHRcdFx0Y29uc3QgbGFzdHVzZXIgPSB0b3AuZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRpZiAobGFzdHJldmlkIDwgcGFyYW1zLnJldmlkKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+mUmeivrycsICfpjK/oqqQnKSxcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdCfku47mnI3liqHlmajojrflj5bnmoTmnIDmlrDkv67orqLniYjmnKxJRCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDlsI/kuo7nm67liY3miYDmmL7npLrnmoTkv67orqLniYjmnKxJROOAgui/meWPr+iDveaEj+WRs+edgOW9k+WJjeS/ruiuoueJiOacrOW3suiiq+WIoOmZpOOAgeacjeWKoeWZqOW7tui/n+OAgeaIluaKk+WPluWIsOS6huWdj+aOieeahOS/oeaBr+OAguWPlua2iOOAgicsXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHQn5b6e5Ly65pyN5Zmo5Y+W5b6X55qE5pyA5paw5L+u6KiC54mI5pysSUQgJyxcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIGxhc3RyZXZpZCksXG5cdFx0XHRcdFx0XHRcdCcg5bCP5pa855uu5YmN5omA6aGv56S655qE5L+u6KiC54mI5pysSUTjgILpgJnlj6/og73mhI/lkbPokZfnlbbliY3kv67oqILniYjmnKzlt7LooqvliKrpmaTjgIHkvLrmnI3lmajlu7bpgbLjgIHmiJbmk7flj5bliLDkuoblo57mjonnmoTos4foqIrjgILlj5bmtojjgIInLFxuXHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gVXNlZCBmb3IgdXNlci1mYWNpbmcgYWxlcnRzLCBtZXNzYWdlcywgZXRjLiwgbm90IGVkaXRzIG9yIHN1bW1hcmllc1xuXHRcdFx0bGV0IHVzZXJOb3JtID0gcGFyYW1zLnVzZXIgfHwgVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lO1xuXHRcdFx0bGV0IGluZGV4ID0gMTtcblx0XHRcdGlmIChwYXJhbXMucmV2aWQgPT09IGxhc3RyZXZpZCkge1xuXHRcdFx0XHQvLyBFeHBlY3RlZCByZXZpc2lvbiBpcyB0aGUgc2FtZSwgc28gdGhlIHVzZXJzIG11c3QgbWF0Y2g7XG5cdFx0XHRcdC8vIHRoaXMgYWxsb3dzIHN5c29wcyB0byBrbm93IHdoZXRoZXIgdGhlIHVzZXJzIGFyZSB0aGUgc2FtZVxuXHRcdFx0XHRwYXJhbXMudXNlciA9IGxhc3R1c2VyO1xuXHRcdFx0XHR1c2VyTm9ybSA9IHBhcmFtcy51c2VyIHx8IFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy53YXJuKFxuXHRcdFx0XHRcdCforablkYonLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0J+acgOaWsOS/ruiuoueJiOacrCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDkuI7miJHku6znmoTkv67orqLniYjmnKwgJyxcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy5yZXZpZCksXG5cdFx0XHRcdFx0XHRcdCfkuI3lkIwnLFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0J+acgOaWsOS/ruiogueJiOacrCAnLFxuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHJldmlkKSxcblx0XHRcdFx0XHRcdFx0JyDoiIfmiJHlgJHnmoTkv67oqILniYjmnKwgJyxcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy5yZXZpZCksXG5cdFx0XHRcdFx0XHRcdCcg5LiN5ZCMJyxcblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChsYXN0dXNlciA9PT0gcGFyYW1zLnVzZXIpIHtcblx0XHRcdFx0XHRzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRjYXNlICd2YW5kJzpcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmluZm8od2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksIFtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOaWsOS/ruiuoueJiOacrOeUsSAnLCAn5pyA5paw5L+u6KiC54mI5pys55SxICcpLFxuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0JyDlgZrlh7rvvIzlm6DmiJHku6zlgYflrprnoLTlnY/vvIznu6fnu63lm57pgIDmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0JyDlgZrlh7rvvIzlm6DmiJHlgJHlgYflrprnoLTlo57vvIznubznuozlm57pgIDmk43kvZzjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oJ+aPkOekuicsIFtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOaWsOS/ruiuoueJiOacrOeUsSAnLCAn5pyA5paw5L+u6KiC54mI5pys55SxICcpLFxuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5YGa5Ye677yM5L2G5oiR5Lus6L+Y5piv5LiN5Zue6YCA5LqG44CCJywgJyDlgZrlh7rvvIzkvYbmiJHlgJHpgoTmmK/kuI3lm57pgIDkuobjgIInKSxcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0cGFyYW1zLnR5cGUgPT09ICd2YW5kJyAmJiAvLyBPa2F5IHRvIHRlc3Qgb24gdXNlciBzaW5jZSBpdCB3aWxsIGVpdGhlciBmYWlsIG9yIHN5c29wIHdpbGwgY29ycmVjdGx5IGFjY2VzcyBpdFxuXHRcdFx0XHRcdC8vIEJlc2lkZXMsIG5vbmUgb2YgdGhlIHRydXN0ZWQgYm90cyBhcmUgZ29pbmcgdG8gYmUgcmV2ZGVsJ2Rcblx0XHRcdFx0XHRUd2lua2xlLmZsdWZmLnRydXN0ZWRCb3RzLmluY2x1ZGVzKHRvcC5nZXRBdHRyaWJ1dGUoJ3VzZXInKSkgJiZcblx0XHRcdFx0XHRyZXZzLmxlbmd0aCA+IDEgJiZcblx0XHRcdFx0XHRyZXZzWzFdLmdldEF0dHJpYnV0ZSgncmV2aWQnKSA9PT0gcGFyYW1zLnJldmlkXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv6Hmga8nLCAn6LOH6KiKJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6K6i54mI5pys55SxICcsXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIGxhc3R1c2VyKSxcblx0XHRcdFx0XHRcdFx0XHQn77yM5LiA5Liq5Y+v5L+h55qE5py65Zmo5Lq65YGa5Ye677yM5L2G5LmL5YmN55qE54mI5pys6KKr6K6k5Li65piv56C05Z2P77yM57un57ut5Zue6YCA5pON5L2c44CCJyxcblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdCfmnIDmlrDkv67oqILniYjmnKznlLEgJyxcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5odG1sTm9kZSgnc3Ryb25nJywgbGFzdHVzZXIpLFxuXHRcdFx0XHRcdFx0XHRcdCfvvIzkuIDlgIvlj6/kv6HnmoTmqZ/lmajkurrlgZrlh7rvvIzkvYbkuYvliY3nmoTniYjmnKzooqvoqo3ngrrmmK/noLTlo57vvIznubznuozlm57pgIDmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpbmRleCA9IDI7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfplJnor68nLCAn6Yyv6KqkJyksXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6K6i54mI5pys55SxICcsXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIGxhc3R1c2VyKSxcblx0XHRcdFx0XHRcdFx0XHQnIOWBmuWHuu+8jOaJgOS7pei/meS4quS/ruiuoueJiOacrOWPr+iDveW3sue7j+iiq+WbnumAgOS6hu+8jOWPlua2iOWbnumAgOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHQn5pyA5paw5L+u6KiC54mI5pys55SxICcsXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIGxhc3R1c2VyKSxcblx0XHRcdFx0XHRcdFx0XHQnIOWBmuWHuu+8jOaJgOS7pemAmeWAi+S/ruiogueJiOacrOWPr+iDveW3sue2k+iiq+WbnumAgOS6hu+8jOWPlua2iOWbnumAgOaTjeS9nOOAgicsXG5cdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKFR3aW5rbGUuZmx1ZmYudHJ1c3RlZEJvdHMuaW5jbHVkZXMocGFyYW1zLnVzZXIpKSB7XG5cdFx0XHRcdHN3aXRjaCAocGFyYW1zLnR5cGUpIHtcblx0XHRcdFx0XHRjYXNlICd2YW5kJzpcblx0XHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLCBbXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5a+5ICcsICflsIflsI0gJyksXG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQnIOaJp+ihjOegtOWdj+WbnumAgO+8jOi/meaYr+S4gOS4quWPr+S/oeeahOacuuWZqOS6uu+8jOaIkeS7rOWBh+WumuaCqOimgeWbnumAgOWJjeS4gOS4quS/ruiuoueJiOacrOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0JyDln7fooYznoLTlo57lm57pgIDvvIzpgJnmmK/kuIDlgIvlj6/kv6HnmoTmqZ/lmajkurrvvIzmiJHlgJHlgYflrprmgqjopoHlm57pgIDliY3kuIDlgIvkv67oqILniYjmnKzjgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdGluZGV4ID0gMjtcblx0XHRcdFx0XHRcdHBhcmFtcy51c2VyID0gcmV2c1sxXS5nZXRBdHRyaWJ1dGUoJ3VzZXInKTtcblx0XHRcdFx0XHRcdHBhcmFtcy51c2VySGlkZGVuID0gcmV2c1sxXS5nZXRBdHRyaWJ1dGUoJ3VzZXJoaWRkZW4nKSA9PT0gJyc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHQvKiBjYXNlICdub3JtJzogKi9cblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29udCA9IGNvbmZpcm0oXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6YCJ5oup5LqG5bi46KeE5Zue6YCA77yM5L2G5pyA5paw5L+u5pS55piv55Sx5LiA5Liq5Y+v5L+h55qE5py65Zmo5Lq677yIJyxcblx0XHRcdFx0XHRcdFx0XHQn6YG45pOH5LqG5bi46KaP5Zue6YCA77yM5L2G5pyA5paw5L+u5pS55piv55Sx5LiA5YCL5Y+v5L+h55qE5qmf5Zmo5Lq677yIJ1xuXHRcdFx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdFx0XHR1c2VyTm9ybSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0J++8ieWBmuWHuueahOOAguehruWumuS7peWbnumAgOWJjeS4gOS4quS/ruiuoueJiOacrO+8jOWPlua2iOS7peWbnumAgOacuuWZqOS6uueahOS/ruaUuScsXG5cdFx0XHRcdFx0XHRcdFx0XHQn77yJ5YGa5Ye655qE44CC56K65a6a5Lul5Zue6YCA5YmN5LiA5YCL5L+u6KiC54mI5pys77yM5Y+W5raI5Lul5Zue6YCA5qmf5Zmo5Lq655qE5L+u5pS5J1xuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRpZiAoY29udCkge1xuXHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbyh3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSwgW1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG5a+5ICcsICflsIflsI0gJyksXG5cdFx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHVzZXJOb3JtKSxcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOaJp+ihjOW4uOinhOWbnumAgO+8jOi/meaYr+S4gOS4quWPr+S/oeeahOacuuWZqOS6uu+8jOWfuuS6juehruiupO+8jOaIkeS7rOWwhuWbnumAgOWJjeS4gOS4quS/ruiuoueJiOacrOOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQnIOWft+ihjOW4uOimj+WbnumAgO+8jOmAmeaYr+S4gOWAi+WPr+S/oeeahOapn+WZqOS6uu+8jOWfuuaWvOeiuuiqje+8jOaIkeWAkeWwh+WbnumAgOWJjeS4gOWAi+S/ruiogueJiOacrOOAgidcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdFx0aW5kZXggPSAyO1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMudXNlciA9IHJldnNbMV0uZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy51c2VySGlkZGVuID0gcmV2c1sxXS5nZXRBdHRyaWJ1dGUoJ3VzZXJoaWRkZW4nKSA9PT0gJyc7XG5cdFx0XHRcdFx0XHRcdHVzZXJOb3JtID0gcGFyYW1zLnVzZXIgfHwgVHdpbmtsZS5mbHVmZi5oaWRkZW5OYW1lO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLndhcm4oJ+aPkOekuicsIFtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WwhuWvuSAnLCAn5bCH5bCNICcpLFxuXHRcdFx0XHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdFx0JyDmiafooYzluLjop4Tlm57pgIDvvIzov5nmmK/kuIDkuKrlj6/kv6HnmoTmnLrlmajkurrvvIzln7rkuo7noa7orqTvvIzmiJHku6zku43lsIblm57pgIDov5nkuKrkv67orqLniYjmnKzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0JyDln7fooYzluLjopo/lm57pgIDvvIzpgJnmmK/kuIDlgIvlj6/kv6HnmoTmqZ/lmajkurrvvIzln7rmlrznorroqo3vvIzmiJHlgJHku43lsIflm57pgIDpgJnlgIvkv67oqILniYjmnKzjgIInXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0bGV0IGNvdW50ID0gMDtcblx0XHRcdGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHJldnMubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0Kytjb3VudDtcblx0XHRcdFx0aWYgKHJldnNbaV0uZ2V0QXR0cmlidXRlKCd1c2VyJykgIT09IHBhcmFtcy51c2VyKSB7XG5cdFx0XHRcdFx0Zm91bmQgPSBpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWZvdW5kKSB7XG5cdFx0XHRcdHN0YXRlbGVtLmVycm9yKFtcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acquaJvuWIsOS5i+WJjeeahOS/ruiuoueJiOacrO+8jOWPr+iDvSAnLCAn5pyq5om+5Yiw5LmL5YmN55qE5L+u6KiC54mI5pys77yM5Y+v6IO9ICcpLFxuXHRcdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCB1c2VyTm9ybSksXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0JyDmmK/llK/kuIDotKHnjK7ogIXvvIzmiJbov5nkuKrnlKjmiLfov57nu63lgZrlh7rkuobotoXov4cgJyxcblx0XHRcdFx0XHRcdCcg5piv5ZSv5LiA6LKi54276ICF77yM5oiW6YCZ5YCL55So5oi26YCj57qM5YGa5Ye65LqG6LaF6YGOICdcblx0XHRcdFx0XHQpICtcblx0XHRcdFx0XHRcdG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIoVHdpbmtsZS5nZXRQcmVmKCdyZXZlcnRNYXhSZXZpc2lvbnMnKSkgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5qyh57yW6L6R44CCJywgJyDmrKHnt6jovK/jgIInKSxcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghY291bnQpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmiJHku6zlsIbopoHlm57pgIAw5Liq5L+u6K6i54mI5pys77yM6L+Z5rKh5pyJ5oSP5LmJ77yM5omA5Lul5Y+W5raI5Zue6YCA5pON5L2c44CC5Y+v6IO95piv5Zug5Li66L+Z5Liq5L+u6K6i54mI5pys5bey57uP6KKr5Zue6YCA77yM5L2G5L+u6K6i54mI5pysSUTku43mmK/kuIDmoLfnmoTjgIInLFxuXHRcdFx0XHRcdFx0J+aIkeWAkeWwh+imgeWbnumAgDDlgIvkv67oqILniYjmnKzvvIzpgJnmspLmnInmhI/nvqnvvIzmiYDku6Xlj5bmtojlm57pgIDmk43kvZzjgILlj6/og73mmK/lm6DngrrpgJnlgIvkv67oqILniYjmnKzlt7LntpPooqvlm57pgIDvvIzkvYbkv67oqILniYjmnKxJROS7jeaYr+S4gOaoo+eahOOAgidcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGdvb2RfcmV2aXNpb24gPSByZXZzW2ZvdW5kXTtcblx0XHRcdGxldCB1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiA9IGZhbHNlO1xuXHRcdFx0aWYgKHBhcmFtcy50eXBlICE9PSAndmFuZCcgJiYgY291bnQgPiAxKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHVzZXJOb3JtICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg6L+e57ut5YGa5Ye65LqGICcsICcg6YCj57qM5YGa5Ye65LqGICcpICtcblx0XHRcdFx0XHRcdFx0bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihjb3VudCkgK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDmrKHnvJbovpHvvIzmmK/lkKbopoHlhajpg6jlm57pgIDvvJ8nLCAnIOasoee3qOi8r++8jOaYr+WQpuimgeWFqOmDqOWbnumAgO+8nycpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5mbygn5o+Q56S6Jywgd2luZG93LndnVUxTKCfnlKjmiLflj5bmtojmk43kvZwnLCAn5L2/55So6ICF5Y+W5raI5pON5L2cJykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRwYXJhbXMuY291bnQgPSBjb3VudDtcblx0XHRcdHBhcmFtcy5nb29kaWQgPSBnb29kX3JldmlzaW9uLmdldEF0dHJpYnV0ZSgncmV2aWQnKTtcblx0XHRcdHBhcmFtcy5nb29kdXNlciA9IGdvb2RfcmV2aXNpb24uZ2V0QXR0cmlidXRlKCd1c2VyJyk7XG5cdFx0XHRwYXJhbXMuZ29vZHVzZXJIaWRkZW4gPSBnb29kX3JldmlzaW9uLmdldEF0dHJpYnV0ZSgndXNlcmhpZGRlbicpID09PSAnJztcblx0XHRcdHN0YXRlbGVtLnN0YXR1cyhbXG5cdFx0XHRcdE1vcmViaXRzLmh0bWxOb2RlKCdzdHJvbmcnLCBtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKGNvdW50KSksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygnIOS4quS/ruiuoueJiOacrOS5i+WJjeeUsSAnLCAnIOWAi+S/ruiogueJiOacrOS5i+WJjeeUsSAnKSxcblx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy5nb29kdXNlckhpZGRlbiA/IFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZSA6IHBhcmFtcy5nb29kdXNlciksXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygnIOWBmuWHuueahOS/ruiuoueJiOacrCAnLCAnIOWBmuWHuueahOS/ruiogueJiOacrCAnKSxcblx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy5nb29kaWQpLFxuXHRcdFx0XSk7XG5cdFx0XHRsZXQgc3VtbWFyeTtcblx0XHRcdGxldCBleHRyYV9zdW1tYXJ5O1xuXHRcdFx0c3dpdGNoIChwYXJhbXMudHlwZSkge1xuXHRcdFx0XHRjYXNlICd2YW5kJzpcblx0XHRcdFx0XHRzdW1tYXJ5ID0gVHdpbmtsZS5mbHVmZi5mb3JtYXRTdW1tYXJ5KFxuXHRcdFx0XHRcdFx0YOWbnumAgCRVU0VS5YGa5Ye655qEJHtwYXJhbXMuY291bnR9JHt3aW5kb3cud2dVTFMoJ+asoee8lui+ke+8jOWIsOeUsScsICfmrKHnt6jovK/vvIzliLDnlLEnKX0ke1xuXHRcdFx0XHRcdFx0XHRwYXJhbXMuZ29vZHVzZXJIaWRkZW4gPyBUd2lua2xlLmZsdWZmLmhpZGRlbk5hbWUgOiBwYXJhbXMuZ29vZHVzZXJcblx0XHRcdFx0XHRcdH0ke3dpbmRvdy53Z1VMUygn5YGa5Ye655qE5pyA5ZCO5L+u6K6i54mI5pysICcsICflgZrlh7rnmoTmnIDlvozkv67oqILniYjmnKwgJyl9YCxcblx0XHRcdFx0XHRcdHBhcmFtcy51c2VySGlkZGVuID8gbnVsbCA6IHBhcmFtcy51c2VyXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0LyogY2FzZSAnbm9ybSc6ICovXG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCdvZmZlclJlYXNvbk9uTm9ybWFsUmV2ZXJ0JykpIHtcblx0XHRcdFx0XHRcdGV4dHJhX3N1bW1hcnkgPSBwcm9tcHQoXG5cdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn5Y+v6YCJ55qE57yW6L6R5pGY6KaB77yaJywgJ+WPr+mBuOeahOe3qOi8r+aRmOimge+8micpfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAsXG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5zdW1tYXJ5XG5cdFx0XHRcdFx0XHQpOyAvLyBwYWRkZWQgb3V0IHRvIHdpZGVuIHByb21wdCBpbiBGaXJlZm94XG5cdFx0XHRcdFx0XHRpZiAoZXh0cmFfc3VtbWFyeSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRzdGF0ZWxlbS5lcnJvcih3aW5kb3cud2dVTFMoJ+eUqOaIt+WPlua2iOaTjeS9nOOAgicsICfkvb/nlKjogIXlj5bmtojmk43kvZzjgIInKSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHVzZXJIYXNBbHJlYWR5Q29uZmlybWVkQWN0aW9uID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c3VtbWFyeSA9IFR3aW5rbGUuZmx1ZmYuZm9ybWF0U3VtbWFyeShcblx0XHRcdFx0XHRcdGDlm57pgIAkVVNFUuWBmuWHuueahCR7cGFyYW1zLmNvdW50fSR7d2luZG93LndnVUxTKCfmrKHnvJbovpEnLCAn5qyh57eo6LyvJyl9YCxcblx0XHRcdFx0XHRcdHBhcmFtcy51c2VySGlkZGVuID8gbnVsbCA6IHBhcmFtcy51c2VyLFxuXHRcdFx0XHRcdFx0ZXh0cmFfc3VtbWFyeVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdFR3aW5rbGUuZ2V0UHJlZignY29uZmlybU9uRmx1ZmYnKSAmJlxuXHRcdFx0XHQhdXNlckhhc0FscmVhZHlDb25maXJtZWRBY3Rpb24gJiZcblx0XHRcdFx0IWNvbmZpcm0od2luZG93LndnVUxTKCflm57pgIDpobXpnaLvvJrmgqjnoa7lrprlkJfvvJ8nLCAn5Zue6YCA6aCB6Z2i77ya5oKo56K65a6a5ZeO77yfJykpXG5cdFx0XHQpIHtcblx0XHRcdFx0c3RhdGVsZW0uZXJyb3Iod2luZG93LndnVUxTKCfnlKjmiLflj5bmtojmk43kvZzjgIInLCAn5L2/55So6ICF5Y+W5raI5pON5L2c44CCJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBEZWNpZGUgd2hldGhlciB0byBub3RpZnkgdGhlIHVzZXIgb24gc3VjY2Vzc1xuXHRcdFx0aWYgKFxuXHRcdFx0XHQhVHdpbmtsZS5mbHVmZi5za2lwVGFsayAmJlxuXHRcdFx0XHRUd2lua2xlLmdldFByZWYoJ29wZW5UYWxrUGFnZScpLmluY2x1ZGVzKHBhcmFtcy50eXBlKSAmJlxuXHRcdFx0XHQhcGFyYW1zLnVzZXJIaWRkZW4gJiZcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpICE9PSBwYXJhbXMudXNlclxuXHRcdFx0KSB7XG5cdFx0XHRcdHBhcmFtcy5ub3RpZnlVc2VyID0gdHJ1ZTtcblx0XHRcdFx0Ly8gUGFzcyBhbG9uZyB0byB0aGUgd2FybiBtb2R1bGVcblx0XHRcdFx0cGFyYW1zLnZhbnRpbWVzdGFtcCA9IHRvcC5nZXRBdHRyaWJ1dGUoJ3RpbWVzdGFtcCcpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdFx0XHR0aXRsZTogcGFyYW1zLnBhZ2VuYW1lLFxuXHRcdFx0XHRzdW1tYXJ5LFxuXHRcdFx0XHR0YWdzOiBUd2lua2xlLmNoYW5nZVRhZ3MsXG5cdFx0XHRcdHRva2VuOiBjc3JmdG9rZW4sXG5cdFx0XHRcdHVuZG86IGxhc3RyZXZpZCxcblx0XHRcdFx0dW5kb2FmdGVyOiBwYXJhbXMuZ29vZGlkLFxuXHRcdFx0XHRiYXNldGltZXN0YW1wOiB0b3VjaGVkLFxuXHRcdFx0XHRzdGFydHRpbWVzdGFtcDogbG9hZHRpbWVzdGFtcCxcblx0XHRcdFx0bWlub3I6IFR3aW5rbGUuZ2V0UHJlZignbWFya1JldmVydGVkUGFnZXNBc01pbm9yJykuaW5jbHVkZXMocGFyYW1zLnR5cGUpID8gdHJ1ZSA6IHVuZGVmaW5lZCxcblx0XHRcdFx0Ym90OiB0cnVlLFxuXHRcdFx0fTtcblx0XHRcdC8vIEhhbmRsZSB3YXRjaGluZywgcG9zc2libGUgZXhwaXJ5XG5cdFx0XHRpZiAoVHdpbmtsZS5nZXRQcmVmKCd3YXRjaFJldmVydGVkUGFnZXMnKS5pbmNsdWRlcyhwYXJhbXMudHlwZSkpIHtcblx0XHRcdFx0Y29uc3Qgd2F0Y2hPckV4cGlyeSA9IFR3aW5rbGUuZ2V0UHJlZignd2F0Y2hSZXZlcnRlZEV4cGlyeScpO1xuXHRcdFx0XHRpZiAoIXdhdGNoT3JFeHBpcnkgfHwgd2F0Y2hPckV4cGlyeSA9PT0gJ25vJykge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICdub2NoYW5nZSc7XG5cdFx0XHRcdH0gZWxzZSBpZiAod2F0Y2hPckV4cGlyeSA9PT0gJ2RlZmF1bHQnIHx8IHdhdGNoT3JFeHBpcnkgPT09ICdwcmVmZXJlbmNlcycpIHtcblx0XHRcdFx0XHRxdWVyeS53YXRjaGxpc3QgPSAncHJlZmVyZW5jZXMnO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHF1ZXJ5LndhdGNobGlzdCA9ICd3YXRjaCc7XG5cdFx0XHRcdFx0Ly8gbnVtYmVyIGFsbG93ZWQgYnV0IG5vdCB1c2VkIGluIFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB3YXRjaE9yRXhwaXJ5ID09PSAnc3RyaW5nJyAmJiB3YXRjaE9yRXhwaXJ5ICE9PSAneWVzJykge1xuXHRcdFx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gd2F0Y2hPckV4cGlyeTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghVHdpbmtsZS5mbHVmZi5yb2xsYmFja0luUGxhY2UpIHtcblx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgPSBwYXJhbXMucGFnZW5hbWU7XG5cdFx0XHR9XG5cdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSAn5Zue6YCA5a6M5oiQJztcblx0XHRcdGNvbnN0IHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+d5a2Y5Zue6YCA5YaF5a65JywgJ+WEsuWtmOWbnumAgOWFp+WuuScpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0VHdpbmtsZS5mbHVmZi5jYWxsYmFja3MuY29tcGxldGUsXG5cdFx0XHRcdHN0YXRlbGVtXG5cdFx0XHQpO1xuXHRcdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHR9LFxuXHRcdGNvbXBsZXRlOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHQvLyBUT0RPIE1vc3Qgb2YgdGhpcyBpcyBjb3B5LXBhc3RlZCBmcm9tIE1vcmViaXRzLndpa2kucGFnZSNmblNhdmVTdWNjZXNzLiBVbmlmeSBpdFxuXHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLmdldFhNTCgpO1xuXHRcdFx0Y29uc3QgJGVkaXQgPSAkKHhtbCkuZmluZCgnZWRpdCcpO1xuXHRcdFx0aWYgKCQoeG1sKS5maW5kKCdjYXB0Y2hhJykubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuI3og73lm57pgIDvvIzlm6DmnI3liqHlmajopoHmsYLmgqjovpPlhaXpqozor4HnoIHjgIInLCAn5LiN6IO95Zue6YCA77yM5Zug5Ly65pyN5Zmo6KaB5rGC5oKo6Ly45YWl6amX6K2J56K844CCJylcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAoJGVkaXQuYXR0cignbm9jaGFuZ2UnKSA9PT0gJycpIHtcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtLmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfopoHlm57pgIDliLDnmoTniYjmnKzkuI7lvZPliY3niYjmnKznm7jlkIzvvIzmsqHku4DkuYjopoHlgZrnmoQnLFxuXHRcdFx0XHRcdFx0J+imgeWbnumAgOWIsOeahOeJiOacrOiIh+ebruWJjeeJiOacrOebuOWQjO+8jOaykuS7gOm6vOimgeWBmueahCdcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhcGlvYmouc3RhdGVsZW0uaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdGNvbnN0IHtwYXJhbXN9ID0gYXBpb2JqO1xuXHRcdFx0XHRpZiAocGFyYW1zLm5vdGlmeVVzZXIgJiYgIXBhcmFtcy51c2VySGlkZGVuKSB7XG5cdFx0XHRcdFx0Ly8gbm90aWZ5VXNlciBvbmx5IGZyb20gbWFpbiwgbm90IGZyb20gdG9SZXZpc2lvblxuXHRcdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5pbmZvKHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLCBbXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+W8gOWQr+eUqOaItyAnLCAn6ZaL5ZWf5L2/55So6ICFICcpLFxuXHRcdFx0XHRcdFx0TW9yZWJpdHMuaHRtbE5vZGUoJ3N0cm9uZycsIHBhcmFtcy51c2VyKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOeahOiuqOiuuumhtScsICcg55qE6KiO6KuW6aCBJyksXG5cdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0Y29uc3Qgd2luZG93UXVlcnkgPSB7XG5cdFx0XHRcdFx0XHR0aXRsZTogYFVzZXIgdGFsazoke3BhcmFtcy51c2VyfWAsXG5cdFx0XHRcdFx0XHRhY3Rpb246ICdlZGl0Jyxcblx0XHRcdFx0XHRcdHByZXZpZXc6ICd5ZXMnLFxuXHRcdFx0XHRcdFx0dmFuYXJ0aWNsZTogcGFyYW1zLnBhZ2VuYW1lLnJlcGxhY2UoL18vZywgJyAnKSxcblx0XHRcdFx0XHRcdHZhbmFydGljbGVyZXZpZDogcGFyYW1zLnJldmlkLFxuXHRcdFx0XHRcdFx0dmFudGltZXN0YW1wOiBwYXJhbXMudmFudGltZXN0YW1wLFxuXHRcdFx0XHRcdFx0dmFuYXJ0aWNsZWdvb2RyZXZpZDogcGFyYW1zLmdvb2RpZCxcblx0XHRcdFx0XHRcdHR5cGU6IHBhcmFtcy50eXBlLFxuXHRcdFx0XHRcdFx0Y291bnQ6IHBhcmFtcy5jb3VudCxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdHN3aXRjaCAoVHdpbmtsZS5nZXRQcmVmKCd1c2VyVGFsa1BhZ2VNb2RlJykpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ3RhYic6XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKG13LnV0aWwuZ2V0VXJsKCcnLCB3aW5kb3dRdWVyeSksICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2JsYW5rJzpcblx0XHRcdFx0XHRcdFx0d2luZG93Lm9wZW4oXG5cdFx0XHRcdFx0XHRcdFx0bXcudXRpbC5nZXRVcmwoJycsIHdpbmRvd1F1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHQnX2JsYW5rJyxcblx0XHRcdFx0XHRcdFx0XHQnbm9vcGVuZXIsbm9yZWZlcnJlcixsb2NhdGlvbj1ubyx0b29sYmFyPW5vLHN0YXR1cz1ubyxkaXJlY3Rvcmllcz1ubyxzY3JvbGxiYXJzPXllcyx3aWR0aD0xMjAwLGhlaWdodD04MDAnXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0LyogY2FzZSAnd2luZG93JzogKi9cblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKFxuXHRcdFx0XHRcdFx0XHRcdG13LnV0aWwuZ2V0VXJsKCcnLCB3aW5kb3dRdWVyeSksXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hbWUgPT09ICd0d2lua2xld2FybndpbmRvdycgPyAnX2JsYW5rJyA6ICd0d2lua2xld2FybndpbmRvdycsXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hbWUgPT09ICd0d2lua2xld2FybndpbmRvdydcblx0XHRcdFx0XHRcdFx0XHRcdD8gJ25vb3BlbmVyLG5vcmVmZXJyZXIsJ1xuXHRcdFx0XHRcdFx0XHRcdFx0OiAnJyArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2xvY2F0aW9uPW5vLHRvb2xiYXI9bm8sc3RhdHVzPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJhcnM9eWVzLHdpZHRoPTEyMDAsaGVpZ2h0PTgwMCdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0fTtcblx0Ly8gSWYgYnVpbHRJblN0cmluZyBjb250YWlucyB0aGUgc3RyaW5nIFwiJFVTRVJcIiwgaXQgd2lsbCBiZSByZXBsYWNlZFxuXHQvLyBieSBhbiBhcHByb3ByaWF0ZSB1c2VyIGxpbmsgaWYgYSB1c2VyIG5hbWUgaXMgcHJvdmlkZWRcblx0VHdpbmtsZS5mbHVmZi5mb3JtYXRTdW1tYXJ5ID0gKGJ1aWx0SW5TdHJpbmcsIHVzZXJOYW1lLCBjdXN0b21TdHJpbmcpID0+IHtcblx0XHRsZXQgcmVzdWx0ID0gYnVpbHRJblN0cmluZztcblx0XHQvLyBhcHBlbmQgdXNlcidzIGN1c3RvbSByZWFzb25cblx0XHRpZiAoY3VzdG9tU3RyaW5nKSB7XG5cdFx0XHRyZXN1bHQgKz0gYO+8miR7TW9yZWJpdHMuc3RyaW5nLnRvVXBwZXJDYXNlRmlyc3RDaGFyKGN1c3RvbVN0cmluZyl9YDtcblx0XHR9XG5cdFx0Ly8gZmluZCBudW1iZXIgb2YgVVRGLTggYnl0ZXMgdGhlIHJlc3VsdGluZyBzdHJpbmcgdGFrZXMgdXAsIGFuZCBwb3NzaWJseSBhZGRcblx0XHQvLyBhIGNvbnRyaWJ1dGlvbnMgb3IgY29udHJpYnV0aW9ucyt0YWxrIGxpbmsgaWYgaXQgZG9lc24ndCBwdXNoIHRoZSBlZGl0IHN1bW1hcnlcblx0XHQvLyBvdmVyIHRoZSA0OTktYnl0ZSBsaW1pdFxuXHRcdGlmICgvXFwkVVNFUi8udGVzdChidWlsdEluU3RyaW5nKSkge1xuXHRcdFx0aWYgKHVzZXJOYW1lKSB7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdExlbiA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChyZXN1bHQucmVwbGFjZSgnJFVTRVInLCAnJykpKS5sZW5ndGg7XG5cdFx0XHRcdGNvbnN0IGNvbnRyaWJzTGluayA9IGBbW1NwZWNpYWw6Q29udHJpYnV0aW9ucy8ke3VzZXJOYW1lfXwke3VzZXJOYW1lfV1dYDtcblx0XHRcdFx0Y29uc3QgY29udHJpYnNMZW4gPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29udHJpYnNMaW5rKSkubGVuZ3RoO1xuXHRcdFx0XHRpZiAocmVzdWx0TGVuICsgY29udHJpYnNMZW4gPD0gNDk5KSB7XG5cdFx0XHRcdFx0Y29uc3QgdGFsa0xpbmsgPSBg77yIW1tVc2VyIHRhbGs6JHt1c2VyTmFtZX0ke3dpbmRvdy53Z1VMUygnfOiuqOiuul1d77yJJywgJ3zoqI7oq5ZdXe+8iScpfWA7XG5cdFx0XHRcdFx0aWYgKHJlc3VsdExlbiArIGNvbnRyaWJzTGVuICsgdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHRhbGtMaW5rKSkubGVuZ3RoIDw9IDQ5OSkge1xuXHRcdFx0XHRcdFx0cmVzdWx0ID0gTW9yZWJpdHMuc3RyaW5nLnNhZmVSZXBsYWNlKHJlc3VsdCwgJyRVU0VSJywgY29udHJpYnNMaW5rICsgdGFsa0xpbmspO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSBNb3JlYml0cy5zdHJpbmcuc2FmZVJlcGxhY2UocmVzdWx0LCAnJFVTRVInLCBjb250cmlic0xpbmspO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXN1bHQgPSBNb3JlYml0cy5zdHJpbmcuc2FmZVJlcGxhY2UocmVzdWx0LCAnJFVTRVInLCB1c2VyTmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdCA9IE1vcmViaXRzLnN0cmluZy5zYWZlUmVwbGFjZShyZXN1bHQsICckVVNFUicsIFR3aW5rbGUuZmx1ZmYuaGlkZGVuTmFtZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuZmx1ZmYsICdmbHVmZicpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG5cbi8qISBUd2lua2xlLmpzIC0gdHdpbmtsZWJhdGNoZGVsZXRlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWJhdGNoZGVsZXRlKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiB0d2lua2xlYmF0Y2hkZWxldGUuanM6IEJhdGNoIGRlbGV0ZSBtb2R1bGUgKHN5c29wcyBvbmx5KVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJELWJhdGNoXCIpXG5cdCAqIEFjdGl2ZSBvbjogRXhpc3Rpbmcgbm9uLWFydGljbGVzLCBhbmQgU3BlY2lhbDpQcmVmaXhJbmRleFxuXHQgKi9cblx0VHdpbmtsZS5iYXRjaGRlbGV0ZSA9ICgpID0+IHtcblx0XHRpZiAoXG5cdFx0XHRNb3JlYml0cy51c2VySXNTeXNvcCAmJlxuXHRcdFx0KChtdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKSAmJiBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpID4gMCkgfHxcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1ByZWZpeGluZGV4JyB8fFxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnQnJva2VuUmVkaXJlY3RzJylcblx0XHQpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2ssXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5om55YigJywgJ+aJueWIqicpLFxuXHRcdFx0XHQndHctYmF0Y2gnLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WIoOmZpOatpOWIhuexu+aIlumhtemdouS4reeahOaJgOaciemTvuaOpScsICfliKrpmaTmraTliIbpoZ7miJbpoIHpnaLkuK3nmoTmiYDmnInpgKPntZAnKVxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGUgPSB7fTtcblx0Ly8gSGFzIHRoZSBzdWJwYWdlcyBsaXN0IGJlZW4gbG9hZGVkP1xuXHRsZXQgc3VicGFnZXNMb2FkZWQ7XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0c3VicGFnZXNMb2FkZWQgPSBmYWxzZTtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNDAwKTtcblx0XHRXaW5kb3cuc2V0VGl0bGUod2luZG93LndnVUxTKCfmibnph4/liKDpmaQnLCAn5om55qyh5Yiq6ZmkJykpO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI2JhdGNoZGVsZXRlJyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOmhtemdoicsICfliKrpmaTpoIHpnaInKSxcblx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlX3BhZ2UnLFxuXHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlJyxcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdHN1Ymdyb3VwOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfliKDpmaTlhbPogZTnmoTorqjorrrpobXvvIjnlKjmiLforqjorrrpobXpmaTlpJbvvIknLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+WIqumZpOmXnOiBr+eahOiojuirlumgge+8iOS9v+eUqOiAheiojuirlumggemZpOWklu+8iSdcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfdGFsaycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfdGFsaycsXG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOWIsOW3suWIoOmhtemdoueahOmHjeWumuWQkemhtScsICfliKrpmaTliLDlt7LliKrpoIHpnaLnmoTph43mlrDlsI7lkJHpoIHpnaInKSxcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlX3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6ICdkZWxldGVfcmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yig6Zmk5bey5Yig6aG16Z2i55qE5a2Q6aG16Z2iJywgJ+WIqumZpOW3suWIqumggemdoueahOWtkOmggemdoicpLFxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlX3N1YnBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0XHRjaGVja2VkOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay50b2dnbGVTdWJwYWdlcyxcblx0XHRcdFx0XHRcdFx0XHRzdWJncm91cDoge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOmZpOW3suWIoOWtkOmhtemdoueahOiuqOiuuumhtScsICfliKrpmaTlt7LliKrlrZDpoIHpnaLnmoToqI7oq5bpoIEnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnZGVsZXRlX3N1YnBhZ2VfdGFsa3MnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlX3N1YnBhZ2VfdGFsa3MnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCfliKDpmaTliLDlt7LliKDlrZDpobXpnaLnmoTph43lrprlkJHpobUnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+WIqumZpOWIsOW3suWIquWtkOmggemdoueahOmHjeaWsOWwjuWQkemggemdoidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVfc3VicGFnZV9yZWRpcmVjdHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQn5Y+W5raI5omA5pyJ5bey5Yig6aG16Z2i55qE6ZO+5YWl77yI5LuF5aSE55CG5p2h55uu5ZG95ZCN56m66Ze077yJJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCflj5bmtojmiYDmnInlt7LliKrpoIHpnaLnmoTpgKPlhaXvvIjlg4XomZXnkIbmop3nm67lkb3lkI3nqbrplpPvvIknXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAndW5saW5rX3N1YnBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3VubGlua19zdWJwYWdlcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflj5bmtojpk77lhaXvvIjku4XlpITnkIbmnaHnm67lkb3lkI3nqbrpl7TvvIknLCAn5Y+W5raI6YCj5YWl77yI5YOF6JmV55CG5qKd55uu5ZG95ZCN56m66ZaT77yJJyksXG5cdFx0XHRcdFx0bmFtZTogJ3VubGlua19wYWdlJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3VubGluaycsXG5cdFx0XHRcdFx0Y2hlY2tlZDogZmFsc2UsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnp7vpmaTmlofku7bkvb/nlKjvvIjmiYDmnInlkb3lkI3nqbrpl7TvvIknLCAn56e76Zmk5qqU5qGI5L2/55So77yI5omA5pyJ5ZG95ZCN56m66ZaT77yJJyksXG5cdFx0XHRcdFx0bmFtZTogJ3VubGlua19maWxlJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3VubGlua19maWxlJyxcblx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdjb21tb25fcmVhc29uJyxcblx0XHRcdGxhYmVsOiAn5bi455So55CG55Sx77yaJyxcblx0XHRcdHN0eWxlOiAnd2lkdGg6IDg1JTsnLFxuXHRcdFx0bGlzdDogVHdpbmtsZS5iYXRjaGRlbGV0ZS5kZWxldGVyZWFzb25saXN0LFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2suY2hhbmdlX2NvbW1vbl9yZWFzb24sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0bmFtZTogJ3JlYXNvbicsXG5cdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0c2l6ZTogNzUsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAncmV2aXNpb25zfGluZm98aW1hZ2VpbmZvJyxcblx0XHRcdGlucHJvcDogJ3Byb3RlY3Rpb24nLFxuXHRcdFx0cnZwcm9wOiAnc2l6ZXx1c2VyJyxcblx0XHR9O1xuXHRcdC8vIE9uIGNhdGVnb3JpZXNcblx0XHRpZiAobXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMTQpIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdjYXRlZ29yeW1lbWJlcnMnO1xuXHRcdFx0cXVlcnkuZ2NtdGl0bGUgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRxdWVyeS5nY21saW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHRcdC8vIE9uIFNwZWNpYWw6UHJlZml4SW5kZXhcblx0XHR9IGVsc2UgaWYgKG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsU3BlY2lhbFBhZ2VOYW1lJykgPT09ICdQcmVmaXhpbmRleCcpIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdhbGxwYWdlcyc7XG5cdFx0XHRxdWVyeS5nYXBsaW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHRcdGlmIChtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ByZWZpeCcpKSB7XG5cdFx0XHRcdHF1ZXJ5LmdhcG5hbWVzcGFjZSA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgnbmFtZXNwYWNlJyk7XG5cdFx0XHRcdHF1ZXJ5LmdhcHByZWZpeCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncHJlZml4Jyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgcGF0aFNwbGl0ID0gZGVjb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLnBhdGhuYW1lKS5zcGxpdCgnLycpO1xuXHRcdFx0XHRpZiAocGF0aFNwbGl0Lmxlbmd0aCA8IDMgfHwgcGF0aFNwbGl0WzJdICE9PSAnU3BlY2lhbDrliY3nvIDntKLlvJUnKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRpdGxlU3BsaXQgPSBwYXRoU3BsaXRbM10uc3BsaXQoJzonKTtcblx0XHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VJZHMnKVt0aXRsZVNwbGl0WzBdLnRvTG93ZXJDYXNlKCldO1xuXHRcdFx0XHRpZiAodGl0bGVTcGxpdC5sZW5ndGggPCAyIHx8IHF1ZXJ5LmdhcG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID0gMDsgLy8gYXJ0aWNsZSBuYW1lc3BhY2Vcblx0XHRcdFx0XHRxdWVyeS5nYXBwcmVmaXggPSBwYXRoU3BsaXQuc3BsaWNlKDMpLmpvaW4oJy8nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRwYXRoU3BsaXQgPSBwYXRoU3BsaXQuc3BsaWNlKDQpO1xuXHRcdFx0XHRcdHBhdGhTcGxpdC5zcGxpY2UoMCwgMCwgdGl0bGVTcGxpdC5zcGxpY2UoMSkuam9pbignOicpKTtcblx0XHRcdFx0XHRxdWVyeS5nYXBwcmVmaXggPSBwYXRoU3BsaXQuam9pbignLycpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBPbiBTcGVjaWFsOkJyb2tlblJlZGlyZWN0c1xuXHRcdH0gZWxzZSBpZiAobXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ0Jyb2tlblJlZGlyZWN0cycpIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdxdWVyeXBhZ2UnO1xuXHRcdFx0cXVlcnkuZ3FwcGFnZSA9ICdCcm9rZW5SZWRpcmVjdHMnO1xuXHRcdFx0cXVlcnkuZ3FwbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0XHQvLyBPbiBub3JtYWwgcGFnZXNcblx0XHR9IGVsc2Uge1xuXHRcdFx0cXVlcnkuZ2VuZXJhdG9yID0gJ2xpbmtzJztcblx0XHRcdHF1ZXJ5LnRpdGxlcyA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblx0XHRcdHF1ZXJ5LmdwbGxpbWl0ID0gVHdpbmtsZS5nZXRQcmVmKCdiYXRjaE1heCcpO1xuXHRcdH1cblx0XHRjb25zdCBzdGF0dXNkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRzdGF0dXNkaXYuc3R5bGUucGFkZGluZyA9ICcxNXB4JzsgLy8ganVzdCBzbyBpdCBkb2Vzbid0IGxvb2sgYnJva2VuXG5cdFx0V2luZG93LnNldENvbnRlbnQoc3RhdHVzZGl2KTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChzdGF0dXNkaXYpO1xuXHRcdFdpbmRvdy5kaXNwbGF5KCk7XG5cdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlcyA9IHt9O1xuXHRcdGNvbnN0IHN0YXRlbGVtID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+aKk+WPlumhtemdouWIl+ihqCcsICfmipPlj5bpoIHpnaLliJfooagnKSk7XG5cdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCmJywgJ+i8ieWFpeS4reKApicpLFxuXHRcdFx0cXVlcnksXG5cdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdFx0Y29uc3QgJHBhZ2VzID0gJCh4bWwpLmZpbmQoJ3BhZ2UnKS5maWx0ZXIoJzpub3QoW21pc3NpbmddKScpOyAvLyA6bm90KFtpbWFnZXJlcG9zaXRvcnk9XCJzaGFyZWRcIl0pXG5cdFx0XHRcdCRwYWdlcy5lYWNoKChfaW5kZXgsIHBhZ2UpID0+IHtcblx0XHRcdFx0XHRjb25zdCAkcGFnZSA9ICQocGFnZSk7XG5cdFx0XHRcdFx0Y29uc3QgbnMgPSAkcGFnZS5hdHRyKCducycpO1xuXHRcdFx0XHRcdGNvbnN0IHRpdGxlID0gJHBhZ2UuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0XHRjb25zdCBpc1JlZGlyID0gJHBhZ2UuYXR0cigncmVkaXJlY3QnKSA9PT0gJyc7XG5cdFx0XHRcdFx0Y29uc3QgJGVkaXRwcm90ID0gJHBhZ2UuZmluZCgncHJbdHlwZT1cImVkaXRcIl1bbGV2ZWw9XCJzeXNvcFwiXScpO1xuXHRcdFx0XHRcdGNvbnN0IGlzUHJvdGVjdGVkID0gJGVkaXRwcm90Lmxlbmd0aCA+IDA7XG5cdFx0XHRcdFx0Y29uc3Qgc2l6ZSA9ICRwYWdlLmZpbmQoJ3JldicpLmF0dHIoJ3NpemUnKTtcblx0XHRcdFx0XHRjb25zdCBtZXRhZGF0YSA9IFtdO1xuXHRcdFx0XHRcdGlmIChpc1JlZGlyKSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID0gd2luZG93LndnVUxTKCfph43lrprlkJEnLCAn6YeN5paw5bCO5ZCRJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChpc1Byb3RlY3RlZCkge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGFbbWV0YWRhdGEubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5YWo5L+d5oqk77yMJywgJ+WFqOS/neitt++8jCcpICtcblx0XHRcdFx0XHRcdFx0KCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfml6DpmZDmnJ8nLCAn54Sh6ZmQ5pyfJylcblx0XHRcdFx0XHRcdFx0XHQ6IGAke25ldyBNb3JlYml0cy5kYXRlKCRlZGl0cHJvdC5hdHRyKCdleHBpcnknKSkuY2FsZW5kYXIoJ3V0YycpfSAoVVRDKWApICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfov4fmnJ8nLCAn6YGO5pyfJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChucyA9PT0gJzYnKSB7XG5cdFx0XHRcdFx0XHQvLyBtaW1pYyB3aGF0IGRlbGltYWdlcyB1c2VkIHRvIHNob3cgZm9yIGZpbGVzXG5cdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID1cblx0XHRcdFx0XHRcdFx0KHdpbmRvdy53Z1VMUygn5LiK5Lyg6ICF77yaJywgJ+S4iuWCs+iAhe+8micpICsgJHBhZ2UuZmluZCgnaWknKS5hdHRyKCd1c2VyJyksXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5pyA5ZCO57yW6L6R77yaJywgJ+acgOW+jOe3qOi8r++8micpICsgJHBhZ2UuZmluZCgncmV2JykuYXR0cigndXNlcicpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bWV0YWRhdGFbbWV0YWRhdGEubGVuZ3RoXSA9IG13Lmxhbmd1YWdlLmNvbnZlcnROdW1iZXIoc2l6ZSkgKyB3aW5kb3cud2dVTFMoJ+Wtl+iKgicsICfkvY3lhYPntYQnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlc1t0aXRsZV0gPSB7XG5cdFx0XHRcdFx0XHRsYWJlbDogdGl0bGUgKyAobWV0YWRhdGEubGVuZ3RoID8gYO+8iCR7bWV0YWRhdGEuam9pbign77yMJyl977yJYCA6ICcnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiB0aXRsZSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRzdHlsZTogaXNQcm90ZWN0ZWQgPyAnY29sb3I6ICNmMDAnIDogJycsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IGZvcm1fID0gYXBpb2JqLnBhcmFtcy5mb3JtO1xuXHRcdFx0XHRmb3JtXy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W+heWIoOmZpOmhtemdoicsICflvoXliKrpmaTpoIHpnaInKSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo6YCJJywgJ+WFqOmBuCcpLFxuXHRcdFx0XHRcdGV2ZW50OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHQkKHJlc3VsdClcblx0XHRcdFx0XHRcdFx0LmZpbmQoJ2lucHV0W25hbWU9cGFnZXNdOm5vdCg6Y2hlY2tlZCknKVxuXHRcdFx0XHRcdFx0XHQuZWFjaCgoXywgZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGUuY2xpY2soKTsgLy8gY2hlY2sgaXQsIGFuZCBpbnZva2UgY2xpY2sgZXZlbnQgc28gdGhhdCBzdWJncm91cCBjYW4gYmUgc2hvd25cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHQvLyBDaGVjayBhbnkgdW5jaGVja2VkIHN1YnBhZ2VzIHRvb1xuXHRcdFx0XHRcdFx0JGJvZHkuZmluZCgnaW5wdXRbbmFtZT1cInBhZ2VzLnN1YnBhZ2VzXCJdJykucHJvcCgnY2hlY2tlZCcsIHRydWUpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtXy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdidXR0b24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFqOS4jemAiScsICflhajkuI3pgbgnKSxcblx0XHRcdFx0XHRldmVudDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0JChyZXN1bHQpXG5cdFx0XHRcdFx0XHRcdC5maW5kKCdpbnB1dFtuYW1lPXBhZ2VzXTpjaGVja2VkJylcblx0XHRcdFx0XHRcdFx0LmVhY2goKF8sIGUpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRlLmNsaWNrKCk7IC8vIHVuY2hlY2sgaXQsIGFuZCBpbnZva2UgY2xpY2sgZXZlbnQgc28gdGhhdCBzdWJncm91cCBjYW4gYmUgaGlkZGVuXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGZvcm1fLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZXMnLFxuXHRcdFx0XHRcdGlkOiAndHctZGJhdGNoLXBhZ2VzJyxcblx0XHRcdFx0XHRzaGlmdENsaWNrU3VwcG9ydDogdHJ1ZSxcblx0XHRcdFx0XHRsaXN0OiBPYmplY3QudmFsdWVzKFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXMpLm1hcCgoZSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtXy5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gZm9ybV8ucmVuZGVyKCk7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMuV2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRcdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMocmVzdWx0LCAncGFnZXMnKSkge1xuXHRcdFx0XHRcdGdlbmVyYXRlQXJyb3dMaW5rcyhjaGVja2JveCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRzdGF0ZWxlbVxuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdH07XG5cdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdH07XG5cdGNvbnN0IGdlbmVyYXRlQXJyb3dMaW5rcyA9IChjaGVja2JveCkgPT4ge1xuXHRcdGNvbnN0IGxpbmsgPSBNb3JlYml0cy5odG1sTm9kZSgnYScsICcgPicpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCdjbGFzcycsICd0dy1kYmF0Y2gtcGFnZS1saW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChjaGVja2JveC52YWx1ZSkpO1xuXHRcdGxpbmsuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7XG5cdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0Y2hlY2tib3gubmV4dEVsZW1lbnRTaWJsaW5nLmFwcGVuZChsaW5rKTtcblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5nZW5lcmF0ZU5ld1BhZ2VMaXN0ID0gKGZvcm0pID0+IHtcblx0XHQvLyBVcGRhdGUgdGhlIGxpc3Qgb2YgY2hlY2tlZCBwYWdlcyBpbiBUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzIG9iamVjdFxuXHRcdGNvbnN0IGVsZW1lbnRzID0gZm9ybS5lbGVtZW50cy5wYWdlcztcblx0XHRpZiAoZWxlbWVudHMgaW5zdGFuY2VvZiBOb2RlTGlzdCkge1xuXHRcdFx0Ly8gaWYgdGhlcmUgYXJlIG11bHRpcGxlIHBhZ2VzXG5cdFx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcblx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlc1tlbGVtZW50LnZhbHVlXS5jaGVja2VkID0gZWxlbWVudC5jaGVja2VkO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudHMgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG5cdFx0XHQvLyBpZiB0aGVyZSBpcyBqdXN0IG9uZSBwYWdlXG5cdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzW2VsZW1lbnRzLnZhbHVlXS5jaGVja2VkID0gZWxlbWVudHMuY2hlY2tlZDtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0bmFtZTogJ3BhZ2VzJyxcblx0XHRcdGlkOiAndHctZGJhdGNoLXBhZ2VzJyxcblx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0bGlzdDogT2JqZWN0LnZhbHVlcyhUd2lua2xlLmJhdGNoZGVsZXRlLnBhZ2VzKS5tYXAoKGUpID0+IHtcblx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHR9KSxcblx0XHR9KS5yZW5kZXIoKTtcblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5kZWxldGVyZWFzb25saXN0ID0gW1xuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+mAieaLqScsICfoq4vpgbjmk4cnKSxcblx0XHRcdHZhbHVlOiAnJyxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdHNu+8muWOn+S9nOiAheaPkOivt+WIoOmZpOaIlua4heepuumhtemdou+8jOS4lOmhtemdouWOn+S9nOiAheS7heacieS4gOS6uicsXG5cdFx0XHRcdCdHNu+8muWOn+S9nOiAheaPkOiri+WIqumZpOaIlua4heepuumggemdou+8jOS4lOmggemdouWOn+S9nOiAheWDheacieS4gOS6uidcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjRzZ8RzZdXe+8muWOn+S9nOiAheaPkOivt+WIoOmZpOaIlua4heepuumhtemdou+8jOS4lOmhtemdouWOn+S9nOiAheS7heacieS4gOS6uicsXG5cdFx0XHRcdCdbW1FXOkNTRCNHNnxHNl1d77ya5Y6f5L2c6ICF5o+Q6KuL5Yiq6Zmk5oiW5riF56m66aCB6Z2i77yM5LiU6aCB6Z2i5Y6f5L2c6ICF5YOF5pyJ5LiA5Lq6J1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdHOe+8muWtpOeri+mhtemdou+8jOavlOWmguayoeacieS4u+mhtemdoueahOiuqOiuuumhteOAgeaMh+WQkeepuumhtemdoueahOmHjeWumuWQkeetiScsXG5cdFx0XHRcdCdHOe+8muWtpOeri+mggemdou+8jOavlOWmguaykuacieS4u+mggemdoueahOiojuirlumggeOAgeaMh+WQkeepuumggemdoueahOmHjeaWsOWwjuWQkeetiSdcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCdbW1FXOkNTRCNHOXxHOV1d77ya5a2k56uL6aG16Z2iJywgJ1tbUVc6Q1NEI0c5fEc5XV3vvJrlraTnq4vpoIHpnaInKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ1Ix77ya5LiN6IO95Y+R5oyl5a6e6ZmF5L2c55So55qE6YeN5a6a5ZCR44CCJywgJ1Ix77ya5LiN6IO955m85o+u5a+m6Zqb5L2c55So55qE6YeN5a6a5ZCR44CCJyksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjUjF8UjFdXe+8muS4jeiDveWPkeaMpeWunumZheS9nOeUqOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdCdbW1FXOkNTRCNSMXxSMV1d77ya5LiN6IO955m85o+u5a+m6Zqb5L2c55So55qE6YeN5a6a5ZCR44CCJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdSMu+8muWQjeensOS4juWvvOWQkeebruagh+S7o+ihqOS6i+eJqeS4jeS4gOiHtOaIluS4jeWujOWFqOS4gOiHtOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdCdSMu+8muWQjeeoseiIh+WwjuWQkeebruaomeS7o+ihqOS6i+eJqeS4jeS4gOiHtOaIluS4jeWujOWFqOS4gOiHtOeahOmHjeWumuWQkeOAgidcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjUjJ8UjJdXe+8muWQjeensOS4juWvvOWQkeebruagh+S7o+ihqOS6i+eJqeS4jeS4gOiHtOaIluS4jeWujOWFqOS4gOiHtOeahOmHjeWumuWQkeOAgicsXG5cdFx0XHRcdCdbW1FXOkNTRCNSMnxSMl1d77ya5ZCN56ix6IiH5bCO5ZCR55uu5qiZ5Luj6KGo5LqL54mp5LiN5LiA6Ie05oiW5LiN5a6M5YWo5LiA6Ie055qE6YeN5a6a5ZCR44CCJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ0Y077ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5paH5Lu2JywgJ0Y077ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5qqU5qGIJyksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKCdbW1FXOkNTRCNGNHxGNF1d77ya5Y+v6KKr5pu/5Luj55qE5ZCI55CG5L2/55So5paH5Lu2JywgJ1tbUVc6Q1NEI0Y0fEY0XV3vvJrlj6/ooqvmm7/ku6PnmoTlkIjnkIbkvb/nlKjmqpTmoYgnKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdGNe+8muayoeacieiiq+adoeebruS9v+eUqOeahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tuOAgeayoeacieWhq+WGmeS7u+S9leWQiOeQhuS9v+eUqOS+neaNrueahOmdnuiHqueUseiRl+S9nOadg+aWh+S7ticsXG5cdFx0XHRcdCdGNe+8muaykuacieiiq+aineebruS9v+eUqOeahOmdnuiHqueUseeJiOasiuaqlOahiOOAgeaykuacieWhq+Wvq+S7u+S9leWQiOeQhuS9v+eUqOS+neaTmueahOmdnuiHqueUseeJiOasiuaqlOahiCdcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjRjV8RjVdXe+8muayoeacieiiq+adoeebruS9v+eUqOeahOmdnuiHqueUseiRl+S9nOadg+aWh+S7tuOAgeayoeacieWhq+WGmeS7u+S9leWQiOeQhuS9v+eUqOS+neaNrueahOmdnuiHqueUseiRl+S9nOadg+aWh+S7ticsXG5cdFx0XHRcdCdbW1FXOkNTRCNGNXxGNV1d77ya5rKS5pyJ6KKr5qKd55uu5L2/55So55qE6Z2e6Ieq55Sx54mI5qyK5qqU5qGI44CB5rKS5pyJ5aGr5a+r5Lu75L2V5ZCI55CG5L2/55So5L6d5pOa55qE6Z2e6Ieq55Sx54mI5qyK5qqU5qGIJ1xuXHRcdFx0KSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdPMe+8mueUqOaIt+ivt+axguWIoOmZpOiHquW3seeahOeUqOaIt+mhteaIluWFtuWtkOmhtemdoicsXG5cdFx0XHRcdCdPMe+8muS9v+eUqOiAheiri+axguWIqumZpOiHquW3seeahOS9v+eUqOiAhemggemdouaIluWFtuWtkOmggemdoidcblx0XHRcdCksXG5cdFx0XHR2YWx1ZTogd2luZG93LndnVUxTKFxuXHRcdFx0XHQnW1tRVzpDU0QjTzF8TzFdXe+8mueUqOaIt+ivt+axguWIoOmZpOiHquW3seeahFtbSGVscDrnlKjmiLfpobV855So5oi36aG1XV3miJblhbblrZDpobXpnaLjgIInLFxuXHRcdFx0XHQnW1tRVzpDU0QjTzF8TzFdXe+8muS9v+eUqOiAheiri+axguWIqumZpOiHquW3seeahFtbSGVscDrnlKjmiLfpobV85L2/55So6ICF6aCB6Z2iXV3miJblhbblrZDpoIHpnaLjgIInXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnTzLvvJrnqbrnmoTliIbnsbvvvIjmsqHmnInmnaHnm67kuZ/msqHmnInlrZDliIbnsbvvvIknLCAnTzLvvJrnqbrnmoTliIbpoZ7vvIjmspLmnInmop3nm67kuZ/mspLmnInlrZDliIbpoZ7vvIknKSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdCdbW1FXOkNTRCNPMnxPMl1d77ya56m655qE5YiG57G777yI5rKh5pyJ5p2h55uu5Lmf5rKh5pyJ5a2Q5YiG57G777yJ44CCJyxcblx0XHRcdFx0J1tbUVc6Q1NEI08yfE8yXV3vvJrnqbrnmoTliIbpoZ7vvIjmspLmnInmop3nm67kuZ/mspLmnInlrZDliIbpoZ7vvInjgIInXG5cdFx0XHQpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygnTzPvvJrlup/lvIPojYnnqL8nLCAnTzPvvJrlu6Lmo4TojYnnqL8nKSxcblx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ1tbUVc6Q1NEI08zfE8zXV3vvJrlup/lvIPojYnnqL/jgIInLCAnW1tRVzpDU0QjTzN8TzNdXe+8muW7ouajhOiNieeov+OAgicpLFxuXHRcdH0sXG5cdF07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2suY2hhbmdlX2NvbW1vbl9yZWFzb24gPSAoZSkgPT4ge1xuXHRcdGlmIChlLnRhcmdldC5mb3JtLnJlYXNvbi52YWx1ZSAhPT0gJycpIHtcblx0XHRcdGUudGFyZ2V0LmZvcm0ucmVhc29uLnZhbHVlID0gTW9yZWJpdHMuc3RyaW5nLmFwcGVuZFB1bmN0dWF0aW9uKGUudGFyZ2V0LmZvcm0ucmVhc29uLnZhbHVlKTtcblx0XHR9XG5cdFx0ZS50YXJnZXQuZm9ybS5yZWFzb24udmFsdWUgKz0gZS50YXJnZXQudmFsdWU7XG5cdFx0ZS50YXJnZXQudmFsdWUgPSAnJztcblx0fTtcblx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFjay50b2dnbGVTdWJwYWdlcyA9IChlKSA9PiB7XG5cdFx0Y29uc3Qge2Zvcm19ID0gZS50YXJnZXQ7XG5cdFx0bGV0IG5ld1BhZ2VMaXN0O1xuXHRcdGlmIChlLnRhcmdldC5jaGVja2VkKSB7XG5cdFx0XHRmb3JtLmRlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cy5jaGVja2VkID0gZm9ybS5kZWxldGVfcmVkaXJlY3RzLmNoZWNrZWQ7XG5cdFx0XHRmb3JtLmRlbGV0ZV9zdWJwYWdlX3RhbGtzLmNoZWNrZWQgPSBmb3JtLmRlbGV0ZV90YWxrLmNoZWNrZWQ7XG5cdFx0XHRmb3JtLnVubGlua19zdWJwYWdlcy5jaGVja2VkID0gZm9ybS51bmxpbmtfcGFnZS5jaGVja2VkO1xuXHRcdFx0Ly8gSWYgbGlzdHMgb2Ygc3VicGFnZXMgd2VyZSBhbHJlYWR5IGxvYWRlZCBvbmNlLCB0aGV5IGFyZVxuXHRcdFx0Ly8gYXZhaWxhYmxlIHdpdGhvdXQgdXNlIG9mIGFueSBBUEkgY2FsbHNcblx0XHRcdGlmIChzdWJwYWdlc0xvYWRlZCkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGVsIG9mIFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXMpIHtcblx0XHRcdFx0XHQvLyBHZXQgYmFjayB0aGUgc3ViZ3JvdXAgZnJvbSBzdWJncm91cF8sIHdoZXJlIHdlIHNhdmVkIGl0XG5cdFx0XHRcdFx0aWYgKGVsLnN1Ymdyb3VwID09PSBudWxsICYmIGVsLnN1Ymdyb3VwXykge1xuXHRcdFx0XHRcdFx0ZWwuc3ViZ3JvdXAgPSBlbC5zdWJncm91cF87XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdG5ld1BhZ2VMaXN0ID0gVHdpbmtsZS5iYXRjaGRlbGV0ZS5nZW5lcmF0ZU5ld1BhZ2VMaXN0KGZvcm0pO1xuXHRcdFx0XHQkYm9keS5maW5kKCcjdHctZGJhdGNoLXBhZ2VzJykucmVwbGFjZVdpdGgobmV3UGFnZUxpc3QpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhuZXdQYWdlTGlzdCwgJ3BhZ2VzJykpIHtcblx0XHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoY29uc3QgY2hlY2tib3ggb2YgTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKG5ld1BhZ2VMaXN0LCAncGFnZXMuc3VicGFnZXMnKSkge1xuXHRcdFx0XHRcdGdlbmVyYXRlQXJyb3dMaW5rcyhjaGVja2JveCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gUHJvY2VlZCB3aXRoIEFQSSBjYWxscyB0byBnZXQgbGlzdCBvZiBzdWJwYWdlc1xuXHRcdFx0Y29uc3QgbG9hZGluZ1RleHQgPSBgPHN0cm9uZyBpZD1cImRiYXRjaC1zdWJwYWdlLWxvYWRpbmdcIj4ke3dpbmRvdy53Z1VMUygn5Yqg6L295LitLi4uJywgJ+i8ieWFpeS4rS4uLicpfTwvc3Ryb25nPmA7XG5cdFx0XHQkKGUudGFyZ2V0KS5hZnRlcihsb2FkaW5nVGV4dCk7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoZm9ybS5wYWdlcylcblx0XHRcdFx0Lm1hcCgoX2ksIGVsKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsLnZhbHVlO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRjb25zdCBzdWJwYWdlTGlzdGVyID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKCk7XG5cdFx0XHRzdWJwYWdlTGlzdGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdHN1YnBhZ2VMaXN0ZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdFx0c3VicGFnZUxpc3Rlci5ydW4oXG5cdFx0XHRcdChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHBhZ2VUaXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhZ2VOYW1lKTtcblx0XHRcdFx0XHQvLyBObyBuZWVkIHRvIGxvb2sgZm9yIHN1YnBhZ2VzIGluIG1haW4vZmlsZS9tZWRpYXdpa2kgc3BhY2Vcblx0XHRcdFx0XHRpZiAoWzAsIDYsIDhdLmluY2x1ZGVzKHBhZ2VUaXRsZS5uYW1lc3BhY2UpKSB7XG5cdFx0XHRcdFx0XHRzdWJwYWdlTGlzdGVyLndvcmtlclN1Y2Nlc3MoKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+WICcsICfmraPlnKjlj5blvpcgJykgKyBwYWdlTmFtZSArIHdpbmRvdy53Z1VMUygnIOeahOWtkOmhtemdoicsICcg55qE5a2Q6aCB6Z2iJyksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdFx0cHJvcDogJ3JldmlzaW9uc3xpbmZvfGltYWdlaW5mbycsXG5cdFx0XHRcdFx0XHRcdGdlbmVyYXRvcjogJ2FsbHBhZ2VzJyxcblx0XHRcdFx0XHRcdFx0cnZwcm9wOiAnc2l6ZScsXG5cdFx0XHRcdFx0XHRcdGlucHJvcDogJ3Byb3RlY3Rpb24nLFxuXHRcdFx0XHRcdFx0XHRnYXBwcmVmaXg6IGAke3BhZ2VUaXRsZS50aXRsZX0vYCxcblx0XHRcdFx0XHRcdFx0Z2FwbmFtZXNwYWNlOiBwYWdlVGl0bGUubmFtZXNwYWNlLFxuXHRcdFx0XHRcdFx0XHRnYXBsaW1pdDogJ21heCcsXG5cdFx0XHRcdFx0XHRcdHBhZ2VOYW1lRnVsbDogcGFnZU5hbWUsIC8vIE5vdCB1c2VkIGJ5IEFQSSwgYnV0IGFkZGVkIGZvciBhY2Nlc3MgaW4gb25TdWNjZXNzKClcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdFx0XHRcdFx0Y29uc3QgJHBhZ2VzID0gJCh4bWwpLmZpbmQoJ3BhZ2UnKTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3VicGFnZUxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0JHBhZ2VzLmVhY2goKF9pbmRleCwgcGFnZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0ICRwYWdlID0gJChwYWdlKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBucyA9ICRwYWdlLmF0dHIoJ25zJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGl0bGUgPSAkcGFnZS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGlzUmVkaXIgPSAkcGFnZS5hdHRyKCdyZWRpcmVjdCcpID09PSAnJztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCAkZWRpdHByb3QgPSAkcGFnZS5maW5kKCdwclt0eXBlPVwiZWRpdFwiXVtsZXZlbD1cInN5c29wXCJdJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXNQcm90ZWN0ZWQgPSAkZWRpdHByb3QubGVuZ3RoID4gMDtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBzaXplID0gJHBhZ2UuZmluZCgncmV2JykuYXR0cignc2l6ZScpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG1ldGFkYXRhID0gW107XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGlzUmVkaXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPSAncmVkaXJlY3QnO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoaXNQcm90ZWN0ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+WFqOS/neaKpO+8jCcsICflhajkv53orbfvvIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgkZWRpdHByb3QuYXR0cignZXhwaXJ5JykgPT09ICdpbmZpbml0eSdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5peg6ZmQ5pyfJywgJ+eEoemZkOacnycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBgJHtuZXcgTW9yZWJpdHMuZGF0ZSgkZWRpdHByb3QuYXR0cignZXhwaXJ5JykpLmNhbGVuZGFyKCd1dGMnKX0gKFVUQylgKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+H5pyfJywgJ+mBjuacnycpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAobnMgPT09ICc2Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gbWltaWMgd2hhdCBkZWxpbWFnZXMgdXNlZCB0byBzaG93IGZvciBmaWxlc1xuXHRcdFx0XHRcdFx0XHRcdFx0bWV0YWRhdGFbbWV0YWRhdGEubGVuZ3RoXSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCh3aW5kb3cud2dVTFMoJ+S4iuS8oOiAhe+8micsICfkuIrlgrPogIXvvJonKSArICRwYWdlLmZpbmQoJ2lpJykuYXR0cigndXNlcicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acgOWQjue8lui+ke+8micsICfmnIDlvoznt6jovK/vvJonKSArICRwYWdlLmZpbmQoJ3JldicpLmF0dHIoJ3VzZXInKSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKHNpemUpICsgd2luZG93LndnVUxTKCflrZfoioInLCAn5L2N5YWD57WEJyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHN1YnBhZ2VMaXN0W3N1YnBhZ2VMaXN0Lmxlbmd0aF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogdGl0bGUgKyAobWV0YWRhdGEubGVuZ3RoID8gYCAoJHttZXRhZGF0YS5qb2luKCc7ICcpfSlgIDogJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlOiBpc1Byb3RlY3RlZCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0aWYgKHN1YnBhZ2VMaXN0Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHBhZ2VOYW1lXyA9IGFwaW9iai5xdWVyeS5wYWdlTmFtZUZ1bGw7XG5cdFx0XHRcdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5wYWdlc1twYWdlTmFtZV9dLnN1Ymdyb3VwID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6ICdzdWJwYWdlcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICdkYmF0Y2gtc3VicGFnZXMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0c2hpZnRDbGlja1N1cHBvcnQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0OiBzdWJwYWdlTGlzdCxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHN1YnBhZ2VMaXN0ZXIud29ya2VyU3VjY2VzcygpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG51bGwgLyogc3RhdHVzRWxlbWVudCAqLyxcblx0XHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFx0c3VicGFnZUxpc3Rlci53b3JrZXJGYWlsdXJlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdC8vIExpc3QgJ2VtIG9uIHRoZSBpbnRlcmZhY2Vcblx0XHRcdFx0XHRuZXdQYWdlTGlzdCA9IFR3aW5rbGUuYmF0Y2hkZWxldGUuZ2VuZXJhdGVOZXdQYWdlTGlzdChmb3JtKTtcblx0XHRcdFx0XHQkYm9keS5maW5kKCcjdHctZGJhdGNoLXBhZ2VzJykucmVwbGFjZVdpdGgobmV3UGFnZUxpc3QpO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgY2hlY2tib3ggb2YgTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKG5ld1BhZ2VMaXN0LCAncGFnZXMnKSkge1xuXHRcdFx0XHRcdFx0Z2VuZXJhdGVBcnJvd0xpbmtzKGNoZWNrYm94KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBjaGVja2JveCBvZiBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMobmV3UGFnZUxpc3QsICdwYWdlcy5zdWJwYWdlcycpKSB7XG5cdFx0XHRcdFx0XHRnZW5lcmF0ZUFycm93TGlua3MoY2hlY2tib3gpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzdWJwYWdlc0xvYWRlZCA9IHRydWU7XG5cdFx0XHRcdFx0Ly8gUmVtb3ZlIFwiTG9hZGluZy4uLiBcIiB0ZXh0XG5cdFx0XHRcdFx0JGJvZHkuZmluZCgnI2RiYXRjaC1zdWJwYWdlLWxvYWRpbmcnKS5yZW1vdmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9IGVsc2UgaWYgKCFlLnRhcmdldC5jaGVja2VkKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGVsIG9mIFR3aW5rbGUuYmF0Y2hkZWxldGUucGFnZXMpIHtcblx0XHRcdFx0aWYgKGVsLnN1Ymdyb3VwKSB7XG5cdFx0XHRcdFx0Ly8gUmVtb3ZlIHN1Ymdyb3VwIGFmdGVyIHNhdmluZyBpdHMgY29udGVudHMgaW4gc3ViZ3JvdXBfXG5cdFx0XHRcdFx0Ly8gc28gdGhhdCBpdCBjYW4gYmUgcmV0cmlldmVkIGVhc2lseSBpZiB1c2VyIGRlY2lkZXMgdG9cblx0XHRcdFx0XHQvLyBkZWxldGUgdGhlIHN1YnBhZ2VzIGFnYWluXG5cdFx0XHRcdFx0ZWwuc3ViZ3JvdXBfID0gZWwuc3ViZ3JvdXA7XG5cdFx0XHRcdFx0ZWwuc3ViZ3JvdXAgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRuZXdQYWdlTGlzdCA9IFR3aW5rbGUuYmF0Y2hkZWxldGUuZ2VuZXJhdGVOZXdQYWdlTGlzdChmb3JtKTtcblx0XHRcdCRib2R5LmZpbmQoJyN0dy1kYmF0Y2gtcGFnZXMnKS5yZXBsYWNlV2l0aChuZXdQYWdlTGlzdCk7XG5cdFx0XHRmb3IgKGNvbnN0IGNoZWNrYm94IG9mIE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhuZXdQYWdlTGlzdCwgJ3BhZ2VzJykpIHtcblx0XHRcdFx0Z2VuZXJhdGVBcnJvd0xpbmtzKGNoZWNrYm94KTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSB3aW5kb3cud2dVTFMoJ+aJuemHj+WIoOmZpOW3suWujOaIkCcsICfmibnmrKHliKrpmaTlt7LlrozmiJAnKTtcblx0XHRjb25zdCBmb3JtID0gZXZlbnQudGFyZ2V0O1xuXHRcdGNvbnN0IG51bVByb3RlY3RlZCA9ICQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGZvcm0sICdwYWdlcycpKS5maWx0ZXIoKF9pbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQuY2hlY2tlZCAmJiBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZy5zdHlsZS5jb2xvciA9PT0gJ3JlZCc7XG5cdFx0fSkubGVuZ3RoO1xuXHRcdGlmIChcblx0XHRcdG51bVByb3RlY3RlZCA+IDAgJiZcblx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOato+imgeWIoOmZpCAnLCAn5oKo5q2j6KaB5Yiq6ZmkICcpICtcblx0XHRcdFx0XHRtdy5sYW5ndWFnZS5jb252ZXJ0TnVtYmVyKG51bVByb3RlY3RlZCkgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOS4quWFqOS/neaKpOmhtemdou+8jOaCqOehruWumuWQl++8nycsICcg5YCL5YWo5L+d6K236aCB6Z2i77yM5oKo56K65a6a5ZeO77yfJylcblx0XHRcdClcblx0XHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZXMgPSBmb3JtLmdldENoZWNrZWQoJ3BhZ2VzJyk7XG5cdFx0Y29uc3Qgc3VicGFnZXMgPSBmb3JtLmdldENoZWNrZWQoJ3BhZ2VzLnN1YnBhZ2VzJyk7XG5cdFx0Y29uc3QgcmVhc29uID0gZm9ybS5yZWFzb24udmFsdWU7XG5cdFx0Y29uc3QgZGVsZXRlX3BhZ2UgPSBmb3JtLmRlbGV0ZV9wYWdlLmNoZWNrZWQ7XG5cdFx0bGV0IGRlbGV0ZV90YWxrO1xuXHRcdGxldCBkZWxldGVfcmVkaXJlY3RzO1xuXHRcdGxldCBkZWxldGVfc3VicGFnZXM7XG5cdFx0bGV0IGRlbGV0ZV9zdWJwYWdlX3JlZGlyZWN0cztcblx0XHRsZXQgZGVsZXRlX3N1YnBhZ2VfdGFsa3M7XG5cdFx0bGV0IHVubGlua19zdWJwYWdlcztcblx0XHRpZiAoZGVsZXRlX3BhZ2UpIHtcblx0XHRcdGRlbGV0ZV90YWxrID0gZm9ybS5kZWxldGVfdGFsay5jaGVja2VkO1xuXHRcdFx0ZGVsZXRlX3JlZGlyZWN0cyA9IGZvcm0uZGVsZXRlX3JlZGlyZWN0cy5jaGVja2VkO1xuXHRcdFx0ZGVsZXRlX3N1YnBhZ2VzID0gZm9ybS5kZWxldGVfc3VicGFnZXMuY2hlY2tlZDtcblx0XHRcdGlmIChkZWxldGVfc3VicGFnZXMpIHtcblx0XHRcdFx0ZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzID0gZm9ybS5kZWxldGVfc3VicGFnZV9yZWRpcmVjdHMuY2hlY2tlZDtcblx0XHRcdFx0ZGVsZXRlX3N1YnBhZ2VfdGFsa3MgPSBmb3JtLmRlbGV0ZV9zdWJwYWdlX3RhbGtzLmNoZWNrZWQ7XG5cdFx0XHRcdHVubGlua19zdWJwYWdlcyA9IGZvcm0udW5saW5rX3N1YnBhZ2VzLmNoZWNrZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHVubGlua19wYWdlID0gZm9ybS51bmxpbmtfcGFnZS5jaGVja2VkO1xuXHRcdGNvbnN0IHVubGlua19maWxlID0gZm9ybS51bmxpbmtfZmlsZS5jaGVja2VkO1xuXHRcdGlmICghcmVhc29uKSB7XG5cdFx0XHR2b2lkIG13Lm5vdGlmeSh3aW5kb3cud2dVTFMoJ+aCqOmcgOimgee7meWHuuS4gOS4queQhueUsScsICfmgqjpnIDopoHntablh7rkuIDlgIvnkIbnlLEnKSwge1xuXHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdHRhZzogJ3R3aW5rbGViYXRjaGRlbGV0ZScsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChmb3JtKTtcblx0XHRpZiAoIXBhZ2VzKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeacieimgeWIoOmZpOeahOWGheWuue+8jOS4reatoicsICfmspLmnInopoHliKrpmaTnmoTlhaflrrnvvIzkuK3mraInKVxuXHRcdFx0KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZURlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRkZWxldGVfcGFnZVxuXHRcdFx0XHQ/IHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iJywgJ+ato+WcqOWIqumZpOmggemdoicpXG5cdFx0XHRcdDogd2luZG93LndnVUxTKCfmraPlnKjlkK/liqjopoHmsYLnmoTku7vliqEnLCAn5q2j5Zyo5ZWf5YuV6KaB5rGC55qE5Lu75YuZJylcblx0XHQpO1xuXHRcdHBhZ2VEZWxldGVyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHQvLyB3ZSBvbmx5IG5lZWQgdGhlIGluaXRpYWwgc3RhdHVzIGxpbmVzIGlmIHdlJ3JlIGRlbGV0aW5nIHRoZSBwYWdlcyBpbiB0aGUgcGFnZXMgYXJyYXlcblx0XHRwYWdlRGVsZXRlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgZGVsZXRlX3BhZ2UpO1xuXHRcdHBhZ2VEZWxldGVyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRwYWdlRGVsZXRlci5ydW4oXG5cdFx0XHQocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdHBhZ2U6IHBhZ2VOYW1lLFxuXHRcdFx0XHRcdGRlbGV0ZV9wYWdlLFxuXHRcdFx0XHRcdGRlbGV0ZV90YWxrLFxuXHRcdFx0XHRcdGRlbGV0ZV9yZWRpcmVjdHMsXG5cdFx0XHRcdFx0dW5saW5rX3BhZ2UsXG5cdFx0XHRcdFx0dW5saW5rX2ZpbGU6IHVubGlua19maWxlICYmIG5ldyBSZWdFeHAoYF4ke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDYpfTpgLCAnaScpLnRlc3QocGFnZU5hbWUpLFxuXHRcdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0XHRwYWdlRGVsZXRlcixcblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHBhZ2VOYW1lLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iICcsICfmraPlnKjliKrpmaTpoIHpnaIgJykgKyBwYWdlTmFtZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0aWYgKGRlbGV0ZV9wYWdlKSB7XG5cdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYCR7cmVhc29ufe+8iOaJuemHj++8iWApO1xuXHRcdFx0XHRcdHFpdXdlbl9wYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0XHRxaXV3ZW5fcGFnZS5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nKCk7XG5cdFx0XHRcdFx0cWl1d2VuX3BhZ2UuZGVsZXRlUGFnZShUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kb0V4dHJhcywgcGFnZURlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMocWl1d2VuX3BhZ2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAoZGVsZXRlX3N1YnBhZ2VzKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VicGFnZURlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOWtkOmhtemdoicsICfmraPlnKjliKrpmaTlrZDpoIHpnaInKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c3VicGFnZURlbGV0ZXIuc2V0T3B0aW9uKCdjaHVua1NpemUnLCBUd2lua2xlLmdldFByZWYoJ2JhdGNoQ2h1bmtzJykpO1xuXHRcdFx0XHRcdHN1YnBhZ2VEZWxldGVyLnNldE9wdGlvbigncHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMnLCB0cnVlKTtcblx0XHRcdFx0XHRzdWJwYWdlRGVsZXRlci5zZXRQYWdlTGlzdChzdWJwYWdlcyk7XG5cdFx0XHRcdFx0c3VicGFnZURlbGV0ZXIucnVuKChwYWdlTmFtZSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdFx0XHRwYWdlOiBwYWdlTmFtZSxcblx0XHRcdFx0XHRcdFx0ZGVsZXRlX3BhZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZV90YWxrOiBkZWxldGVfc3VicGFnZV90YWxrcyxcblx0XHRcdFx0XHRcdFx0ZGVsZXRlX3JlZGlyZWN0czogZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzLFxuXHRcdFx0XHRcdFx0XHR1bmxpbmtfcGFnZTogdW5saW5rX3N1YnBhZ2VzLFxuXHRcdFx0XHRcdFx0XHR1bmxpbmtfZmlsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdHJlYXNvbixcblx0XHRcdFx0XHRcdFx0cGFnZURlbGV0ZXI6IHN1YnBhZ2VEZWxldGVyLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRcdFx0cGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk5a2Q6aG16Z2iICcsICfmraPlnKjliKrpmaTlrZDpoIHpnaIgJykgKyBwYWdlTmFtZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYCR7cmVhc29ufe+8iOaJuemHj++8iWApO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc3VwcHJlc3NQcm90ZWN0V2FybmluZygpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX3BhZ2UuZGVsZXRlUGFnZShUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kb0V4dHJhcywgcGFnZURlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcyA9IHtcblx0XHQvLyB0aGlzIHN0dXBpZCBwYXJhbWV0ZXIgbmFtZSBpcyBhIHRlbXBvcmFyeSB0aGluZyB1bnRpbCBJIGltcGxlbWVudCBhbiBvdmVyaGF1bFxuXHRcdC8vIG9mIE1vcmViaXRzLndpa2kuKiBjYWxsYmFjayBwYXJhbWV0ZXJzXG5cdFx0ZG9FeHRyYXM6ICh0aGluZ1dpdGhQYXJhbWV0ZXJzKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSB0aGluZ1dpdGhQYXJhbWV0ZXJzLnBhcmVudFxuXHRcdFx0XHQ/IHRoaW5nV2l0aFBhcmFtZXRlcnMucGFyZW50LmdldENhbGxiYWNrUGFyYW1ldGVycygpXG5cdFx0XHRcdDogdGhpbmdXaXRoUGFyYW1ldGVycy5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKTtcblx0XHRcdC8vIHRoZSBpbml0aWFsIGJhdGNoIG9wZXJhdGlvbidzIGpvYiBpcyB0byBkZWxldGUgdGhlIHBhZ2UsIGFuZCB0aGF0IGhhc1xuXHRcdFx0Ly8gc3VjY2VlZGVkIGJ5IG5vd1xuXHRcdFx0cGFyYW1zLnBhZ2VEZWxldGVyLndvcmtlclN1Y2Nlc3ModGhpbmdXaXRoUGFyYW1ldGVycyk7XG5cdFx0XHRsZXQgcXVlcnk7XG5cdFx0XHRsZXQgcWl1d2VuX2FwaTtcblx0XHRcdGlmIChwYXJhbXMudW5saW5rX3BhZ2UpIHtcblx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZSA9IHt9O1xuXHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0bGlzdDogJ2JhY2tsaW5rcycsXG5cdFx0XHRcdFx0YmxmaWx0ZXJyZWRpcjogJ25vbnJlZGlyZWN0cycsXG5cdFx0XHRcdFx0YmxuYW1lc3BhY2U6IFswXSxcblx0XHRcdFx0XHRibHRpdGxlOiBwYXJhbXMucGFnZSxcblx0XHRcdFx0XHRibGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+W6ZO+5YWlJywgJ+ato+WcqOWPluW+l+mAo+WFpScpLFxuXHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2tzLnVubGlua0JhY2tsaW5rc01haW5cblx0XHRcdFx0KTtcblx0XHRcdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSBwYXJhbXM7XG5cdFx0XHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy51bmxpbmtfZmlsZSkge1xuXHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0bGlzdDogJ2ltYWdldXNhZ2UnLFxuXHRcdFx0XHRcdGl1dGl0bGU6IHBhcmFtcy5wYWdlLFxuXHRcdFx0XHRcdGl1bGltaXQ6ICdtYXgnLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjojrflj5bmlofku7bpk77lhaUnLCAn5q2j5Zyo5Y+W5b6X5qqU5qGI6YCj5YWlJyksXG5cdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MudW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHFpdXdlbl9hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMuZGVsZXRlX3BhZ2UpIHtcblx0XHRcdFx0aWYgKHBhcmFtcy5kZWxldGVfcmVkaXJlY3RzKSB7XG5cdFx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHR0aXRsZXM6IHBhcmFtcy5wYWdlLFxuXHRcdFx0XHRcdFx0cHJvcDogJ3JlZGlyZWN0cycsXG5cdFx0XHRcdFx0XHRyZGxpbWl0OiAnbWF4JywgLy8gNTAwIGlzIG1heCBmb3Igbm9ybWFsIHVzZXJzLCA1MDAwIGZvciBib3RzIGFuZCBzeXNvcHNcblx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0cWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo6I635Y+W6YeN5a6a5ZCRJywgJ+ato+WcqOWPluW+l+mHjeaWsOWwjuWQkScpLFxuXHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy5kZWxldGVSZWRpcmVjdHNNYWluXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocGFyYW1zLmRlbGV0ZV90YWxrKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gbXcuVGl0bGUubmV3RnJvbVRleHQocGFyYW1zLnBhZ2UpO1xuXHRcdFx0XHRcdGlmIChwYWdlVGl0bGUgJiYgcGFnZVRpdGxlLm5hbWVzcGFjZSAlIDIgPT09IDAgJiYgcGFnZVRpdGxlLm5hbWVzcGFjZSAhPT0gMikge1xuXHRcdFx0XHRcdFx0cGFnZVRpdGxlLm5hbWVzcGFjZSsrOyAvLyBub3cgcGFnZVRpdGxlIGlzIHRoZSB0YWxrIHBhZ2UgdGl0bGUhXG5cdFx0XHRcdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0XHR0aXRsZXM6IHBhZ2VUaXRsZS50b1RleHQoKSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOajgOafpeiuqOiuuumhtemdouaYr+WQpuWtmOWcqCcsICfmraPlnKjmqqLmn6XoqI7oq5bpoIHpnaLmmK/lkKblrZjlnKgnKSxcblx0XHRcdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2hkZWxldGUuY2FsbGJhY2tzLmRlbGV0ZVRhbGtcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHRcdHFpdXdlbl9hcGkucGFyYW1zLnRhbGtQYWdlID0gcGFnZVRpdGxlLnRvVGV4dCgpO1xuXHRcdFx0XHRcdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRkZWxldGVSZWRpcmVjdHNNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgncmQnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZWRpcmVjdERlbGV0ZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk5YiwICcsICfmraPlnKjliKrpmaTliLAgJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6YeN5a6a5ZCRJywgJyDnmoTph43mlrDlsI7lkJEnKVxuXHRcdFx0KTtcblx0XHRcdHJlZGlyZWN0RGVsZXRlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0XHRyZWRpcmVjdERlbGV0ZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdFx0cmVkaXJlY3REZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHBhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpCAnLCAn5q2j5Zyo5Yiq6ZmkICcpICsgcGFnZU5hbWUpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRgW1tRVzpDU0QjRzl8RzldXTogJHt3aW5kb3cud2dVTFMoJ+aMh+WQkeW3suWIoOmhtemdouKAnCcsICfmjIflkJHlt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfigJ3nmoTph43lrprlkJEnLFxuXHRcdFx0XHRcdFx0J+OAjeeahOmHjeaWsOWwjuWQkSdcblx0XHRcdFx0XHQpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5kZWxldGVQYWdlKHJlZGlyZWN0RGVsZXRlci53b3JrZXJTdWNjZXNzLCByZWRpcmVjdERlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdGRlbGV0ZVRhbGs6IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHhtbCA9IGFwaW9iai5yZXNwb25zZVhNTDtcblx0XHRcdGNvbnN0IGV4aXN0cyA9ICQoeG1sKS5maW5kKCdwYWdlOm5vdChbbWlzc2luZ10pJykubGVuZ3RoID4gMDtcblx0XHRcdGlmICghZXhpc3RzKSB7XG5cdFx0XHRcdC8vIG5vIHRhbGsgcGFnZTsgZm9yZ2V0IGFib3V0IGl0XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnRhbGtQYWdlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpOmhtemdoiAnLCAn5q2j5Zyo5Yiq6Zmk6aCB6Z2iICcpICtcblx0XHRcdFx0XHRhcGlvYmoucGFyYW1zLnBhZ2UgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOeahOiuqOiuuumhtScsICcg55qE6KiO6KuW6aCBJylcblx0XHRcdCk7XG5cdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRgW1tRVzpDU0QjRzl8RzldXTogJHt3aW5kb3cud2dVTFMoJ+W3suWIoOmhtemdouKAnCcsICflt7LliKrpoIHpnaLjgIwnKX0ke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHQn4oCd55qEW1tIZWxwOuiuqOiuuumhtXzorqjorrrpobVdXScsXG5cdFx0XHRcdFx0J+OAjeeahFtbSGVscDroqI7oq5bpoIF86KiO6KuW6aCBXV0nXG5cdFx0XHRcdCl9YFxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZS5kZWxldGVQYWdlKCk7XG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3NNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgnYmwnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAoIXBhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB1bmxpbmtlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdFx0YOato+WcqOWPlua2iOWIsCAke2FwaW9iai5wYXJhbXMucGFnZX0ke3dpbmRvdy53Z1VMUygnIOeahOmTvuWFpScsICcg55qE6YCj5YWlJyl9YFxuXHRcdFx0KTtcblx0XHRcdHVubGlua2VyLnNldE9wdGlvbignY2h1bmtTaXplJywgVHdpbmtsZS5nZXRQcmVmKCdiYXRjaENodW5rcycpKTtcblx0XHRcdHVubGlua2VyLnNldFBhZ2VMaXN0KHBhZ2VzKTtcblx0XHRcdHVubGlua2VyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRcdHBhZ2VOYW1lLFxuXHRcdFx0XHRcdGDmraPlnKjlj5bmtoggJHtwYWdlTmFtZX0ke3dpbmRvdy53Z1VMUygnIOS4iueahOmTvuWFpScsICcg5LiK55qE6YCj5YWlJyl9YFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdFx0Li4uYXBpb2JqLnBhcmFtcyxcblx0XHRcdFx0fTtcblx0XHRcdFx0cGFyYW1zLnRpdGxlID0gcGFnZU5hbWU7XG5cdFx0XHRcdHBhcmFtcy51bmxpbmtlciA9IHVubGlua2VyO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLmJhdGNoZGVsZXRlLmNhbGxiYWNrcy51bmxpbmtCYWNrbGlua3MpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHR1bmxpbmtCYWNrbGlua3M6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdC8vIHdlIHByb2JhYmx5IGp1c3QgZGVsZXRlZCBpdCwgYXMgYSByZWN1cnNpdmUgYmFja2xpbmtcblx0XHRcdFx0cGFyYW1zLnVubGlua2VyLndvcmtlclN1Y2Nlc3MocGFnZW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCB0ZXh0O1xuXHRcdFx0aWYgKHBhcmFtcy50aXRsZSBpbiBUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlKSB7XG5cdFx0XHRcdHRleHQgPSBUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlW3BhcmFtcy50aXRsZV07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb2xkX3RleHQgPSB0ZXh0O1xuXHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZSh0ZXh0KTtcblx0XHRcdHRleHQgPSBxaXV3ZW5fcGFnZS5yZW1vdmVMaW5rKHBhcmFtcy5wYWdlKS5nZXRUZXh0KCk7XG5cdFx0XHRUd2lua2xlLmJhdGNoZGVsZXRlLnVubGlua0NhY2hlW3BhcmFtcy50aXRsZV0gPSB0ZXh0O1xuXHRcdFx0aWYgKHRleHQgPT09IG9sZF90ZXh0KSB7XG5cdFx0XHRcdC8vIE5vdGhpbmcgdG8gZG8sIHJldHVyblxuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcyhwYWdlb2JqKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0d2luZG93LndnVUxTKCflj5bmtojliLDlt7LliKDpobXpnaInLCAn5Y+W5raI5Yiw5bey5Yiq6aCB6Z2iJykgKyBwYXJhbXMucGFnZSArIHdpbmRvdy53Z1VMUygn55qE6ZO+5YWlJywgJ+eahOmAo+WFpScpXG5cdFx0XHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNldE1heENvbmZsaWN0UmV0cmllcygxMCk7XG5cdFx0XHRwYWdlb2JqLnNhdmUocGFyYW1zLnVubGlua2VyLndvcmtlclN1Y2Nlc3MsIHBhcmFtcy51bmxpbmtlci53b3JrZXJGYWlsdXJlKTtcblx0XHR9LFxuXHRcdHVubGlua0ltYWdlSW5zdGFuY2VzTWFpbjogKGFwaW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLnJlc3BvbnNlWE1MO1xuXHRcdFx0Y29uc3QgcGFnZXMgPSAkKHhtbClcblx0XHRcdFx0LmZpbmQoJ2l1Jylcblx0XHRcdFx0Lm1hcCgoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuICQoZWxlbWVudCkuYXR0cigndGl0bGUnKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmdldCgpO1xuXHRcdFx0aWYgKCFwYWdlcy5sZW5ndGgpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgdW5saW5rZXIgPSBuZXcgTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24oXG5cdFx0XHRcdGDmraPlnKjlj5bmtojliLAgJHthcGlvYmoucGFyYW1zLnBhZ2V9JHt3aW5kb3cud2dVTFMoJyDnmoTpk77lhaUnLCAnIOeahOmAo+WFpScpfWBcblx0XHRcdCk7XG5cdFx0XHR1bmxpbmtlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0XHR1bmxpbmtlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0XHR1bmxpbmtlci5ydW4oKHBhZ2VOYW1lKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShcblx0XHRcdFx0XHRwYWdlTmFtZSxcblx0XHRcdFx0XHRg5Y+W5raIICR7cGFnZU5hbWV9JHt3aW5kb3cud2dVTFMoJyDnmoTmlofku7bkvb/nlKgnLCAnIOeahOaqlOahiOS9v+eUqCcpfWBcblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0XHRcdC4uLmFwaW9iai5wYXJhbXMsXG5cdFx0XHRcdH07XG5cdFx0XHRcdHBhcmFtcy50aXRsZSA9IHBhZ2VOYW1lO1xuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIgPSB1bmxpbmtlcjtcblx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5iYXRjaGRlbGV0ZS5jYWxsYmFja3MudW5saW5rSW1hZ2VJbnN0YW5jZXMpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHR1bmxpbmtJbWFnZUluc3RhbmNlczogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRpZiAoIXBhZ2VvYmouZXhpc3RzKCkpIHtcblx0XHRcdFx0Ly8gd2UgcHJvYmFibHkganVzdCBkZWxldGVkIGl0LCBhcyBhIHJlY3Vyc2l2ZSBiYWNrbGlua1xuXHRcdFx0XHRwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcyhwYWdlb2JqKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaW1hZ2UgPSBwYXJhbXMucGFnZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDYpfTpgKSwgJycpO1xuXHRcdFx0bGV0IHRleHQ7XG5cdFx0XHRpZiAocGFyYW1zLnRpdGxlIGluIFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGUpIHtcblx0XHRcdFx0dGV4dCA9IFR3aW5rbGUuYmF0Y2hkZWxldGUudW5saW5rQ2FjaGVbcGFyYW1zLnRpdGxlXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBvbGRfdGV4dCA9IHRleHQ7XG5cdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpdGV4dC5wYWdlKHRleHQpO1xuXHRcdFx0dGV4dCA9IHFpdXdlbl9wYWdlXG5cdFx0XHRcdC5jb21tZW50T3V0SW1hZ2UoaW1hZ2UsIHdpbmRvdy53Z1VMUygn5Zug5paH5Lu25bey5Yig77yM5pWF5rOo6KejJywgJ+WboOaqlOahiOW3suWIqu+8jOaVheiou+inoycpKVxuXHRcdFx0XHQuZ2V0VGV4dCgpO1xuXHRcdFx0VHdpbmtsZS5iYXRjaGRlbGV0ZS51bmxpbmtDYWNoZVtwYXJhbXMudGl0bGVdID0gdGV4dDtcblx0XHRcdGlmICh0ZXh0ID09PSBvbGRfdGV4dCkge1xuXHRcdFx0XHRwYWdlb2JqXG5cdFx0XHRcdFx0LmdldFN0YXR1c0VsZW1lbnQoKVxuXHRcdFx0XHRcdC5lcnJvcihcblx0XHRcdFx0XHRcdGDlnKggJHtwYWdlb2JqLmdldFBhZ2VOYW1lKCl9IOS4iuWPlua2iCAke2ltYWdlfSR7d2luZG93LndnVUxTKCcg55qE5paH5Lu25L2/55So5aSx6LSlJywgJyDnmoTmqpTmoYjkvb/nlKjlpLHmlZcnKX1gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0cGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUocGFnZW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Y+W5raI5L2/55So5bey6KKr5Yig6Zmk5paH5Lu2JywgJ+WPlua2iOS9v+eUqOW3suiiq+WIqumZpOaqlOahiCcpICtcblx0XHRcdFx0XHRpbWFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfvvIzlm6DkuLrvvJonLCAn77yM5Zug54K677yaJykgK1xuXHRcdFx0XHRcdHBhcmFtcy5yZWFzb25cblx0XHRcdCk7XG5cdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQodGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldENyZWF0ZU9wdGlvbignbm9jcmVhdGUnKTtcblx0XHRcdHBhZ2VvYmouc2V0TWF4Q29uZmxpY3RSZXRyaWVzKDEwKTtcblx0XHRcdHBhZ2VvYmouc2F2ZShwYXJhbXMudW5saW5rZXIud29ya2VyU3VjY2VzcywgcGFyYW1zLnVubGlua2VyLndvcmtlckZhaWx1cmUpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmF0Y2hkZWxldGUsICdiYXRjaGRlbGV0ZScpO1xufSkoalF1ZXJ5KTtcblxuZXhwb3J0IHt9O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGViYXRjaHVuZGVsZXRlLmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWJhdGNodW5kZWxldGUoJCkge1xuXHQvKipcblx0ICogdHdpbmtsZWJhdGNodW5kZWxldGUuanM6IEJhdGNoIHVuZGVsZXRlIG1vZHVsZVxuXHQgKiBNb2RlIG9mIGludm9jYXRpb246IFRhYiAoXCJVbmQtYmF0Y2hcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyB1c2VyIGFuZCBwcm9qZWN0IHBhZ2VzXG5cdCAqL1xuXHRUd2lua2xlLmJhdGNodW5kZWxldGUgPSAoKSA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0IU1vcmViaXRzLnVzZXJJc1N5c29wIHx8XG5cdFx0XHQhbXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKSB8fFxuXHRcdFx0KG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgIT09IG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlSWRzJykudXNlciAmJlxuXHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpICE9PSBtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZUlkcycpLnByb2plY3QpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoXG5cdFx0XHRUd2lua2xlLmJhdGNodW5kZWxldGUuY2FsbGJhY2ssXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+aJueWkjScsICfmibnlvqknKSxcblx0XHRcdCd0dy1iYXRjaC11bmRlbCcsXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOmhtemdoicsICflj43liKrpmaTpoIHpnaInKVxuXHRcdCk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFjayA9ICgpID0+IHtcblx0XHRjb25zdCBXaW5kb3cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDYwMCwgNDAwKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5zZXRUaXRsZSh3aW5kb3cud2dVTFMoJ+aJuemHj+WPjeWIoOmZpCcsICfmibnmrKHlj43liKrpmaQnKSk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCdUd2lua2xl5biu5YqpJywgJ1R3aW5rbGXoqqrmmI4nKSwgJ0g6VFcvRE9DI2JhdGNodW5kZWxldGUnKTtcblx0XHRjb25zdCBmb3JtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybShUd2lua2xlLmJhdGNodW5kZWxldGUuY2FsbGJhY2suZXZhbHVhdGUpO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoi6XlrZjlnKjlt7LliKDpmaTnmoTorqjorrrpobXvvIzkuZ/mgaLlpI0nLCAn6Iul5a2Y5Zyo5bey5Yiq6Zmk55qE6KiO6KuW6aCB77yM5Lmf5oGi5b6pJyksXG5cdFx0XHRcdFx0bmFtZTogJ3VuZGVsX3RhbGsnLFxuXHRcdFx0XHRcdHZhbHVlOiAndW5kZWxfdGFsaycsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvJonLFxuXHRcdFx0c2l6ZTogNjAsXG5cdFx0fSk7XG5cdFx0Y29uc3Qgc3RhdHVzZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0c3RhdHVzZGl2LnN0eWxlLnBhZGRpbmcgPSAnMTVweCc7IC8vIGp1c3Qgc28gaXQgZG9lc24ndCBsb29rIGJyb2tlblxuXHRcdFdpbmRvdy5zZXRDb250ZW50KHN0YXR1c2Rpdik7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoc3RhdHVzZGl2KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0Z2VuZXJhdG9yOiAnbGlua3MnLFxuXHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0aW5wcm9wOiAncHJvdGVjdGlvbicsXG5cdFx0XHR0aXRsZXM6IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcblx0XHRcdGdwbGxpbWl0OiBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4JyksXG5cdFx0fTtcblx0XHRjb25zdCBzdGF0ZWxlbSA9IG5ldyBNb3JlYml0cy5zdGF0dXMod2luZG93LndnVUxTKCfmipPlj5bpobXpnaLliJfooagnLCAn5oqT5Y+W6aCB6Z2i5YiX6KGoJykpO1xuXHRcdGNvbnN0IHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+WKoOi9veS4reKApicsICfovInlhaXkuK3igKYnKSxcblx0XHRcdHF1ZXJ5LFxuXHRcdFx0KGFwaW9iaikgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRcdGNvbnN0ICRwYWdlcyA9ICQoeG1sKS5maW5kKCdwYWdlW21pc3NpbmddJyk7XG5cdFx0XHRcdGNvbnN0IGxpc3QgPSBbXTtcblx0XHRcdFx0JHBhZ2VzLmVhY2goKF9pbmRleCwgcGFnZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0ICRwYWdlID0gJChwYWdlKTtcblx0XHRcdFx0XHRjb25zdCB0aXRsZSA9ICRwYWdlLmF0dHIoJ3RpdGxlJyk7XG5cdFx0XHRcdFx0Y29uc3QgJGVkaXRwcm90ID0gJHBhZ2UuZmluZCgncHJbdHlwZT1cImNyZWF0ZVwiXVtsZXZlbD1cInN5c29wXCJdJyk7XG5cdFx0XHRcdFx0Y29uc3QgaXNQcm90ZWN0ZWQgPSAkZWRpdHByb3QubGVuZ3RoID4gMDtcblx0XHRcdFx0XHRsaXN0W2xpc3QubGVuZ3RoXSA9IHtcblx0XHRcdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdFx0XHR0aXRsZSArXG5cdFx0XHRcdFx0XHRcdChpc1Byb3RlY3RlZFxuXHRcdFx0XHRcdFx0XHRcdD8gYO+8iCR7d2luZG93LndnVUxTKCflhajkv53miqTvvIwnLCAn5YWo5L+d6K2377yMJyl9JHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JGVkaXRwcm90LmF0dHIoJ2V4cGlyeScpID09PSAnaW5maW5pdHknXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aXoOmZkOacnycsICfnhKHpmZDmnJ8nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogYCR7bmV3IE1vcmViaXRzLmRhdGUoJGVkaXRwcm90LmF0dHIoJ2V4cGlyeScpKS5jYWxlbmRhcihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3V0Yydcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9IChVVEMpJHt3aW5kb3cud2dVTFMoJ+i/h+acnycsICfpgY7mnJ8nKX1gXG5cdFx0XHRcdFx0XHRcdFx0XHR977yJYFxuXHRcdFx0XHRcdFx0XHRcdDogJycpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IHRpdGxlLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdHN0eWxlOiBpc1Byb3RlY3RlZCA/ICdjb2xvcjogI2YwMCcgOiAnJyxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2hlYWRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b6F5oGi5aSN6aG16Z2iJywgJ+W+heaBouW+qemggemdoicpLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo6YCJJywgJ+WFqOmBuCcpLFxuXHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0JChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWo5LiN6YCJJywgJ+WFqOS4jemBuCcpLFxuXHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0JChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZS50YXJnZXQuZm9ybSwgJ3BhZ2VzJykpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMuZm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRcdFx0bmFtZTogJ3BhZ2VzJyxcblx0XHRcdFx0XHRzaGlmdENsaWNrU3VwcG9ydDogdHJ1ZSxcblx0XHRcdFx0XHRsaXN0LFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5mb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBhcGlvYmoucGFyYW1zLmZvcm0ucmVuZGVyKCk7XG5cdFx0XHRcdGFwaW9iai5wYXJhbXMuV2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRcdH0sXG5cdFx0XHRzdGF0ZWxlbVxuXHRcdCk7XG5cdFx0cWl1d2VuX2FwaS5wYXJhbXMgPSB7XG5cdFx0XHRmb3JtLFxuXHRcdFx0V2luZG93LFxuXHRcdH07XG5cdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFjay5ldmFsdWF0ZSA9IChldmVudCkgPT4ge1xuXHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSA9IHdpbmRvdy53Z1VMUygn5Y+N5Yig6Zmk5bey5a6M5oiQJywgJ+WPjeWIqumZpOW3suWujOaIkCcpO1xuXHRcdGNvbnN0IG51bVByb3RlY3RlZCA9ICQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGV2ZW50LnRhcmdldCwgJ3BhZ2VzJykpLmZpbHRlcigoX2luZGV4LCBlbGVtZW50KSA9PiB7XG5cdFx0XHRyZXR1cm4gZWxlbWVudC5jaGVja2VkICYmIGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnN0eWxlLmNvbG9yID09PSAncmVkJztcblx0XHR9KS5sZW5ndGg7XG5cdFx0aWYgKFxuXHRcdFx0bnVtUHJvdGVjdGVkID4gMCAmJlxuXHRcdFx0IWNvbmZpcm0oXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5q2j6KaB5Y+N5Yig6ZmkICcsICfmgqjmraPopoHlj43liKrpmaQgJykgK1xuXHRcdFx0XHRcdG51bVByb3RlY3RlZCArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5Liq5YWo5L+d5oqk6aG16Z2i77yM5oKo56Gu5a6a5ZCX77yfJywgJyDlgIvlhajkv53orbfpoIHpnaLvvIzmgqjnorrlrprll47vvJ8nKVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwYWdlcyA9IGV2ZW50LnRhcmdldC5nZXRDaGVja2VkKCdwYWdlcycpO1xuXHRcdGNvbnN0IHJlYXNvbiA9IGV2ZW50LnRhcmdldC5yZWFzb24udmFsdWU7XG5cdFx0Y29uc3QgdW5kZWxfdGFsayA9IGV2ZW50LnRhcmdldC5yZWFzb24udmFsdWU7XG5cdFx0aWYgKCFyZWFzb24pIHtcblx0XHRcdHZvaWQgbXcubm90aWZ5KCfmgqjpnIDopoHmjIflrprnkIbnlLHjgIInLCB7XG5cdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0dGFnOiAndHdpbmtsZWJhdGNodW5kZWxldGUnLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE1vcmViaXRzLnNpbXBsZVdpbmRvdy5zZXRCdXR0b25zRW5hYmxlZChmYWxzZSk7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZXZlbnQudGFyZ2V0KTtcblx0XHRpZiAoIXBhZ2VzKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3IoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6ZSZ6K+vJywgJ+mMr+iqpCcpLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ayoeS7gOS5iOimgeWPjeWIoOmZpOeahO+8jOWPlua2iOaTjeS9nCcsICfmspLku4DpurzopoHlj43liKrpmaTnmoTvvIzlj5bmtojmk43kvZwnKVxuXHRcdFx0KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcGFnZVVuZGVsZXRlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbih3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOmhtemdoicsICflj43liKrpmaTpoIHpnaInKSk7XG5cdFx0cGFnZVVuZGVsZXRlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0cGFnZVVuZGVsZXRlci5zZXRPcHRpb24oJ3ByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzJywgdHJ1ZSk7XG5cdFx0cGFnZVVuZGVsZXRlci5zZXRQYWdlTGlzdChwYWdlcyk7XG5cdFx0cGFnZVVuZGVsZXRlci5ydW4oKHBhZ2VOYW1lKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRcdHBhZ2U6IHBhZ2VOYW1lLFxuXHRcdFx0XHR1bmRlbF90YWxrLFxuXHRcdFx0XHRyZWFzb24sXG5cdFx0XHRcdHBhZ2VVbmRlbGV0ZXIsXG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHBhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+WPjeWIoOmZpOmhtemdoicsICflj43liKrpmaTpoIHpnaInKSArIHBhZ2VOYW1lKTtcblx0XHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhwYXJhbXMpO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0RWRpdFN1bW1hcnkoYCR7cmVhc29ufSAo5om56YePKWApO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc3VwcHJlc3NQcm90ZWN0V2FybmluZygpO1xuXHRcdFx0cWl1d2VuX3BhZ2Uuc2V0TWF4UmV0cmllcygzKTsgLy8gdGVtcG9yYXJ5IGluY3JlYXNlIGZyb20gMiB0byBtYWtlIGJhdGNodW5kZWxldGUgbW9yZSBsaWtlbHkgdG8gc3VjY2VlZFxuXHRcdFx0cWl1d2VuX3BhZ2UudW5kZWxldGVQYWdlKFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MuZG9FeHRyYXMsIHBhZ2VVbmRlbGV0ZXIud29ya2VyRmFpbHVyZSk7XG5cdFx0fSk7XG5cdH07XG5cdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MgPSB7XG5cdFx0Ly8gdGhpcyBzdHVwaWQgcGFyYW1ldGVyIG5hbWUgaXMgYSB0ZW1wb3JhcnkgdGhpbmcgdW50aWwgSSBpbXBsZW1lbnQgYW4gb3ZlcmhhdWxcblx0XHQvLyBvZiBNb3JlYml0cy53aWtpLiogY2FsbGJhY2sgcGFyYW1ldGVyc1xuXHRcdGRvRXh0cmFzOiAodGhpbmdXaXRoUGFyYW1ldGVycykgPT4ge1xuXHRcdFx0Y29uc3QgcGFyYW1zID0gdGhpbmdXaXRoUGFyYW1ldGVycy5wYXJlbnRcblx0XHRcdFx0PyB0aGluZ1dpdGhQYXJhbWV0ZXJzLnBhcmVudC5nZXRDYWxsYmFja1BhcmFtZXRlcnMoKVxuXHRcdFx0XHQ6IHRoaW5nV2l0aFBhcmFtZXRlcnMuZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHQvLyB0aGUgaW5pdGlhbCBiYXRjaCBvcGVyYXRpb24ncyBqb2IgaXMgdG8gZGVsZXRlIHRoZSBwYWdlLCBhbmQgdGhhdCBoYXNcblx0XHRcdC8vIHN1Y2NlZWRlZCBieSBub3dcblx0XHRcdHBhcmFtcy5wYWdlVW5kZWxldGVyLndvcmtlclN1Y2Nlc3ModGhpbmdXaXRoUGFyYW1ldGVycyk7XG5cdFx0XHRsZXQgcXVlcnk7XG5cdFx0XHRsZXQgcWl1d2VuX2FwaTtcblx0XHRcdGlmIChwYXJhbXMudW5kZWxfdGFsaykge1xuXHRcdFx0XHRjb25zdCB0YWxrcGFnZW5hbWUgPSBuZXcgbXcuVGl0bGUocGFyYW1zLnBhZ2UpLmdldFRhbGtQYWdlKCkuZ2V0UHJlZml4ZWRUZXh0KCk7XG5cdFx0XHRcdGlmICh0YWxrcGFnZW5hbWUgIT09IHBhcmFtcy5wYWdlKSB7XG5cdFx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0XHRwcm9wOiAnZGVsZXRlZHJldmlzaW9ucycsXG5cdFx0XHRcdFx0XHRkcnZwcm9wOiAnaWRzJyxcblx0XHRcdFx0XHRcdGRydmxpbWl0OiAxLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiB0YWxrcGFnZW5hbWUsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmo4Dmn6XorqjorrrpobXnmoTlt7LliKDniYjmnKwnLCAn5qqi5p+l6KiO6KuW6aCB55qE5bey5Yiq54mI5pysJyksXG5cdFx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRcdFR3aW5rbGUuYmF0Y2h1bmRlbGV0ZS5jYWxsYmFja3MudW5kZWxldGVUYWxrXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcy50YWxrUGFnZSA9IHRhbGtwYWdlbmFtZTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dW5kZWxldGVUYWxrOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBleGlzdHMgPSAkKHhtbCkuZmluZCgncGFnZTpub3QoW21pc3NpbmddKScpLmxlbmd0aCA+IDA7XG5cdFx0XHRjb25zdCBkZWxyZXZzID0gJCh4bWwpLmZpbmQoJ3JldicpLmF0dHIoJ3JldmlkJyk7XG5cdFx0XHRpZiAoZXhpc3RzIHx8ICFkZWxyZXZzKSB7XG5cdFx0XHRcdC8vIHBhZ2UgZXhpc3RzIG9yIGhhcyBubyBkZWxldGVkIHJldmlzaW9uczsgZm9yZ2V0IGFib3V0IGl0XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHBhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKFxuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnRhbGtQYWdlLFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+ato+WcqOWPjeWIoOmZpCcsICfmraPlnKjlj43liKrpmaQnKSArIGFwaW9iai5wYXJhbXMucGFnZSArIHdpbmRvdy53Z1VMUygn55qE6K6o6K666aG1JywgJ+eahOiojuirlumggScpXG5cdFx0XHQpO1xuXHRcdFx0cGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0d2luZG93LndnVUxTKCflj43liKDpmaTigJwnLCAn5Y+N5Yiq6Zmk44CMJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMucGFnZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3nmoRbW0hlbHA66K6o6K666aG1fOiuqOiuuumhtV1dJywgJ+OAjeeahFtbSGVscDroqI7oq5bpoIF86KiO6KuW6aCBXV0nKVxuXHRcdFx0KTtcblx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZS51bmRlbGV0ZVBhZ2UoKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmJhdGNodW5kZWxldGUsICdiYXRjaHVuZGVsZXRlJyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlYmF0Y2hwcm90ZWN0LmpzICovXG4oZnVuY3Rpb24gdHdpbmtsZWJhdGNocHJvdGVjdCgkKSB7XG5cdC8qKlxuXHQgKiB0d2lua2xlYmF0Y2hwcm90ZWN0LmpzOiBCYXRjaCBwcm90ZWN0IG1vZHVsZSAoc3lzb3BzIG9ubHkpXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogVGFiIChcIlAtYmF0Y2hcIilcblx0ICogQWN0aXZlIG9uOiBFeGlzdGluZyBwcm9qZWN0IHBhZ2VzIGFuZCB1c2VyIHBhZ2VzO1xuXHQgKiBleGlzdGluZyBhbmQgbm9uLWV4aXN0aW5nIGNhdGVnb3JpZXM7IFNwZWNpYWw6UHJlZml4SW5kZXhcblx0ICovXG5cdFR3aW5rbGUuYmF0Y2hwcm90ZWN0ID0gKCkgPT4ge1xuXHRcdGlmIChcblx0XHRcdE1vcmViaXRzLnVzZXJJc1N5c29wICYmXG5cdFx0XHQoKG13LmNvbmZpZy5nZXQoJ3dnQXJ0aWNsZUlkJykgPiAwICYmIFsyLCA0XS5pbmNsdWRlcyhtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpKSkgfHxcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gMTQgfHxcblx0XHRcdFx0bXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxTcGVjaWFsUGFnZU5hbWUnKSA9PT0gJ1ByZWZpeGluZGV4Jylcblx0XHQpIHtcblx0XHRcdFR3aW5rbGUuYWRkUG9ydGxldExpbmsoVHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2ssICfmibnkv50nLCAndHctcGJhdGNoJywgJ+aJuemHj+S/neaKpOmTvuWHuumhtemdoicpO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5iYXRjaHByb3RlY3QudW5saW5rQ2FjaGUgPSB7fTtcblx0VHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg2MDAsIDQwMCk7XG5cdFx0V2luZG93LnNldFRpdGxlKCfmibnkv50nKTtcblx0XHRXaW5kb3cuc2V0U2NyaXB0TmFtZSgnVHdpbmtsZScpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKCfkv53miqTmlrnpkognLCAnUVc6UFJPVCcpO1xuXHRcdFdpbmRvdy5hZGRGb290ZXJMaW5rKHdpbmRvdy53Z1VMUygn5biu5Yqp5paH5qGjJywgJ+W5q+WKqeaWh+aqlCcpLCAnSDpUVy9ET0Mj5L+d5oqkJyk7XG5cdFx0V2luZG93LmFkZEZvb3Rlckxpbmsod2luZG93LndnVUxTKCfpl67popjlj43ppognLCAn5ZWP6aGM5Y+N6aWLJyksICdIVDpUVycpO1xuXHRcdGNvbnN0IGZvcm0gPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtKFR3aW5rbGUuYmF0Y2hwcm90ZWN0LmNhbGxiYWNrLmV2YWx1YXRlKTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0ZXZlbnQ6IFR3aW5rbGUucHJvdGVjdC5mb3JtZXZlbnRzLmVkaXRtb2RpZnksXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/ruaUuee8lui+keS/neaKpCcsXG5cdFx0XHRcdFx0dmFsdWU6ICdlZGl0bW9kaWZ5Jyxcblx0XHRcdFx0XHRuYW1lOiAnZWRpdG1vZGlmeScsXG5cdFx0XHRcdFx0dG9vbHRpcDogJ+S7hemZkOeOsOaciemhtemdouOAgicsXG5cdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRuYW1lOiAnZWRpdGxldmVsJyxcblx0XHRcdGxhYmVsOiAn57yW6L6R5p2D6ZmQ77yaJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5lZGl0bGV2ZWwsXG5cdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxldmVscyxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnc2VsZWN0Jyxcblx0XHRcdG5hbWU6ICdlZGl0ZXhwaXJ5Jyxcblx0XHRcdGxhYmVsOiAn57uI5q2i5pe26Ze077yaJyxcblx0XHRcdGV2ZW50OiAoZXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gJ2N1c3RvbScpIHtcblx0XHRcdFx0XHRUd2lua2xlLnByb3RlY3QuZG9DdXN0b21FeHBpcnkoZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGVuZ3RocywgLy8gRGVmYXVsdCAoMiBkYXlzKSBzZXQgYWZ0ZXIgcmVuZGVyXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5tb3ZlbW9kaWZ5LFxuXHRcdFx0bGlzdDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICfkv67mlLnnp7vliqjkv53miqQnLFxuXHRcdFx0XHRcdHZhbHVlOiAnbW92ZW1vZGlmeScsXG5cdFx0XHRcdFx0bmFtZTogJ21vdmVtb2RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfku4XpmZDnjrDmnInpobXpnaLjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ21vdmVsZXZlbCcsXG5cdFx0XHRsYWJlbDogJ+enu+WKqOadg+mZkO+8micsXG5cdFx0XHRldmVudDogVHdpbmtsZS5wcm90ZWN0LmZvcm1ldmVudHMubW92ZWxldmVsLFxuXHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZXZlbHMuZmlsdGVyKFxuXHRcdFx0XHQvLyBBdXRvY29uZmlybWVkIGlzIHJlcXVpcmVkIGZvciBhIG1vdmUsIHJlZHVuZGFudFxuXHRcdFx0XHQocHJvdExldmVsKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHByb3RMZXZlbC52YWx1ZSAhPT0gJ2F1dG9jb25maXJtZWQnO1xuXHRcdFx0XHR9XG5cdFx0XHQpLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ21vdmVleHBpcnknLFxuXHRcdFx0bGFiZWw6ICfnu4jmraLml7bpl7TvvJonLFxuXHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnY3VzdG9tJykge1xuXHRcdFx0XHRcdFR3aW5rbGUucHJvdGVjdC5kb0N1c3RvbUV4cGlyeShldmVudC50YXJnZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0bGlzdDogVHdpbmtsZS5wcm90ZWN0LnByb3RlY3Rpb25MZW5ndGhzLCAvLyBEZWZhdWx0ICgyIGRheXMpIHNldCBhZnRlciByZW5kZXJcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVsZXZlbC5kaXNhYmxlZCA9ICFldmVudC50YXJnZXQuY2hlY2tlZDtcblx0XHRcdFx0ZXZlbnQudGFyZ2V0LmZvcm0uY3JlYXRlZXhwaXJ5LmRpc2FibGVkID1cblx0XHRcdFx0XHQhZXZlbnQudGFyZ2V0LmNoZWNrZWQgfHwgZXZlbnQudGFyZ2V0LmZvcm0uY3JlYXRlbGV2ZWwudmFsdWUgPT09ICdhbGwnO1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVsZXZlbC5zdHlsZS5jb2xvciA9IGV2ZW50LnRhcmdldC5jaGVja2VkID8gJycgOiAndHJhbnNwYXJlbnQnO1xuXHRcdFx0XHRldmVudC50YXJnZXQuZm9ybS5jcmVhdGVleHBpcnkuc3R5bGUuY29sb3IgPSBldmVudC50YXJnZXQuY2hlY2tlZCA/ICcnIDogJ3RyYW5zcGFyZW50Jztcblx0XHRcdH0sXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+S/ruaUueWIm+W7uuS/neaKpCcsXG5cdFx0XHRcdFx0dmFsdWU6ICdjcmVhdGVtb2RpZnknLFxuXHRcdFx0XHRcdG5hbWU6ICdjcmVhdGVtb2RpZnknLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfku4XpmZDkuI3lrZjlnKjnmoTpobXpnaLjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NyZWF0ZWxldmVsJyxcblx0XHRcdGxhYmVsOiAn5Yib5bu65p2D6ZmQ77yaJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLnByb3RlY3QuZm9ybWV2ZW50cy5jcmVhdGVsZXZlbCxcblx0XHRcdGxpc3Q6IFR3aW5rbGUucHJvdGVjdC5wcm90ZWN0aW9uTGV2ZWxzLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzZWxlY3QnLFxuXHRcdFx0bmFtZTogJ2NyZWF0ZWV4cGlyeScsXG5cdFx0XHRsYWJlbDogJ+e7iOatouaXtumXtO+8micsXG5cdFx0XHRldmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudC50YXJnZXQudmFsdWUgPT09ICdjdXN0b20nKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5wcm90ZWN0LmRvQ3VzdG9tRXhwaXJ5KGV2ZW50LnRhcmdldCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRsaXN0OiBUd2lua2xlLnByb3RlY3QucHJvdGVjdGlvbkxlbmd0aHMsIC8vIERlZmF1bHQgKGluZGVmaW5pdGUpIHNldCBhZnRlciByZW5kZXJcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaGVhZGVyJyxcblx0XHRcdGxhYmVsOiAnJywgLy8gaG9yaXpvbnRhbCBydWxlXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2lucHV0Jyxcblx0XHRcdG5hbWU6ICdyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfnkIbnlLHvvIjkv53miqTml6Xlv5fvvIknLFxuXHRcdFx0c2l6ZTogNjAsXG5cdFx0fSk7XG5cdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRwcm9wOiAncmV2aXNpb25zfGluZm98aW1hZ2VpbmZvJyxcblx0XHRcdHJ2cHJvcDogJ3NpemV8dXNlcicsXG5cdFx0XHRpbnByb3A6ICdwcm90ZWN0aW9uJyxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdH07XG5cdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgPT09IDE0KSB7XG5cdFx0XHQvLyBjYXRlZ29yaWVzXG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnY2F0ZWdvcnltZW1iZXJzJztcblx0XHRcdHF1ZXJ5LmdjbXRpdGxlID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0cXVlcnkuZ2NtbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fSBlbHNlIGlmIChtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbFNwZWNpYWxQYWdlTmFtZScpID09PSAnUHJlZml4aW5kZXgnKSB7XG5cdFx0XHRxdWVyeS5nZW5lcmF0b3IgPSAnYWxscGFnZXMnO1xuXHRcdFx0cXVlcnkuZ2FwbmFtZXNwYWNlID1cblx0XHRcdFx0bXcudXRpbC5nZXRQYXJhbVZhbHVlKCduYW1lc3BhY2UnKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbbmFtZT1uYW1lc3BhY2VdJylbMF0udmFsdWU7XG5cdFx0XHRxdWVyeS5nYXBwcmVmaXggPVxuXHRcdFx0XHRtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3ByZWZpeCcpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9cHJlZml4XScpWzBdLnZhbHVlO1xuXHRcdFx0cXVlcnkuZ2FwbGltaXQgPSBUd2lua2xlLmdldFByZWYoJ2JhdGNoTWF4Jyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHF1ZXJ5LmdlbmVyYXRvciA9ICdsaW5rcyc7XG5cdFx0XHRxdWVyeS50aXRsZXMgPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyk7XG5cdFx0XHRxdWVyeS5ncGxsaW1pdCA9IFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hNYXgnKTtcblx0XHR9XG5cdFx0Y29uc3Qgc3RhdHVzZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0c3RhdHVzZGl2LnN0eWxlLnBhZGRpbmcgPSAnMTVweCc7IC8vIGp1c3Qgc28gaXQgZG9lc24ndCBsb29rIGJyb2tlblxuXHRcdFdpbmRvdy5zZXRDb250ZW50KHN0YXR1c2Rpdik7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoc3RhdHVzZGl2KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdGNvbnN0IHN0YXRlbGVtID0gbmV3IE1vcmViaXRzLnN0YXR1cygn5oqT5Y+W6aG16Z2i5YiX6KGoJyk7XG5cdFx0Y29uc3QgcWl1d2VuX2FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdCfliqDovb3kuK3igKbigKYnLFxuXHRcdFx0cXVlcnksXG5cdFx0XHQoYXBpb2JqKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRcdGNvbnN0IHBhZ2VzID0gKHJlc3BvbnNlLnF1ZXJ5ICYmIHJlc3BvbnNlLnF1ZXJ5LnBhZ2VzKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgbGlzdCA9IFtdO1xuXHRcdFx0XHRwYWdlcy5zb3J0KFR3aW5rbGUuc29ydEJ5TmFtZXNwYWNlKTtcblx0XHRcdFx0Zm9yIChjb25zdCBwYWdlIG9mIHBhZ2VzKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWV0YWRhdGEgPSBbXTtcblx0XHRcdFx0XHRjb25zdCBtaXNzaW5nID0gISFwYWdlLm1pc3Npbmc7XG5cdFx0XHRcdFx0bGV0IGVkaXRQcm90O1xuXHRcdFx0XHRcdGlmIChtaXNzaW5nKSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID0gJ+mhtemdouS4jeWtmOWcqCc7XG5cdFx0XHRcdFx0XHRlZGl0UHJvdCA9IHBhZ2UucHJvdGVjdGlvbi5maW5kTGFzdCgocHJvdGVjdGlvbikgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcHJvdGVjdGlvbi50eXBlID09PSAnY3JlYXRlJyAmJiBwcm90ZWN0aW9uLmxldmVsID09PSAnc3lzb3AnO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmIChwYWdlLnJlZGlyZWN0KSB7XG5cdFx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPSAn6YeN5a6a5ZCRJztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChwYWdlLm5zID09PSA2KSB7XG5cdFx0XHRcdFx0XHRcdG1ldGFkYXRhW21ldGFkYXRhLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0XHRcdChg5LiK5Lyg6ICF77yaJHtwYWdlLmltYWdlaW5mb1swXS51c2VyfWAsIGDmnIDlkI7nvJbovpHogIXvvJoke3BhZ2UucmV2aXNpb25zWzBdLnVzZXJ9YCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID0gYCR7bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihwYWdlLnJldmlzaW9uc1swXS5zaXplKX3lrZfoioJgO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWRpdFByb3QgPSBwYWdlLnByb3RlY3Rpb24uZmluZExhc3QoKHByb3RlY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHByb3RlY3Rpb24udHlwZSA9PT0gJ2VkaXQnICYmIHByb3RlY3Rpb24ubGV2ZWwgPT09ICdzeXNvcCc7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGVkaXRQcm90KSB7XG5cdFx0XHRcdFx0XHRtZXRhZGF0YVttZXRhZGF0YS5sZW5ndGhdID0gYCR7bWlzc2luZyA/ICfnmb3nurgnIDogJyd95YWo5L+d5oqkJHtcblx0XHRcdFx0XHRcdFx0ZWRpdFByb3QuZXhwaXJ5ID09PSAnaW5maW5pdHknXG5cdFx0XHRcdFx0XHRcdFx0PyAn77yI5rC45LmF77yJJ1xuXHRcdFx0XHRcdFx0XHRcdDogYO+8iCR7bmV3IE1vcmViaXRzLmRhdGUoZWRpdFByb3QuZXhwaXJ5KS5jYWxlbmRhcigndXRjJyl9IChVVEMp6L+H5pyf77yJYFxuXHRcdFx0XHRcdFx0fWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHt0aXRsZX0gPSBwYWdlO1xuXHRcdFx0XHRcdGxpc3RbbGlzdC5sZW5ndGhdID0ge1xuXHRcdFx0XHRcdFx0bGFiZWw6IHRpdGxlICsgKG1ldGFkYXRhLmxlbmd0aCA+IDAgPyBgICgke21ldGFkYXRhLmpvaW4oJzsgJyl9KWAgOiAnJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogdGl0bGUsXG5cdFx0XHRcdFx0XHRjaGVja2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0c3R5bGU6IGVkaXRQcm90ID8gJ2NvbG9yOiAjZjAwJyA6ICcnLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0XHRcdHR5cGU6ICdoZWFkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiAn5b6F5L+d5oqk6aG16Z2iJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRsYWJlbDogJ+WFqOmAiScsXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0JChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZXZlbnQudGFyZ2V0LmZvcm0sICdwYWdlcycpKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRsYWJlbDogJ+WFqOS4jemAiScsXG5cdFx0XHRcdFx0ZXZlbnQ6IChldmVudCkgPT4ge1xuXHRcdFx0XHRcdFx0JChNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMoZXZlbnQudGFyZ2V0LmZvcm0sICdwYWdlcycpKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRuYW1lOiAncGFnZXMnLFxuXHRcdFx0XHRcdHNoaWZ0Q2xpY2tTdXBwb3J0OiB0cnVlLFxuXHRcdFx0XHRcdGxpc3QsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHRcdFx0dHlwZTogJ3N1Ym1pdCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBmb3JtLnJlbmRlcigpO1xuXHRcdFx0XHRXaW5kb3cuc2V0Q29udGVudChyZXN1bHQpO1xuXHRcdFx0XHQvLyBTZXQgZGVmYXVsdHNcblx0XHRcdFx0cmVzdWx0LmVkaXRleHBpcnkudmFsdWUgPSAnMiBkYXlzJztcblx0XHRcdFx0cmVzdWx0Lm1vdmVleHBpcnkudmFsdWUgPSAnMiBkYXlzJztcblx0XHRcdFx0cmVzdWx0LmNyZWF0ZWV4cGlyeS52YWx1ZSA9ICdpbmZpbml0eSc7XG5cdFx0XHRcdGZvciAoY29uc3QgbGlua3Mgb2YgTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKHJlc3VsdCwgJ+S4qumhtemdoicpKSB7XG5cdFx0XHRcdFx0VHdpbmtsZS5nZW5lcmF0ZUFycm93TGlua3MobGlua3MpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0c3RhdGVsZW1cblx0XHQpO1xuXHRcdHFpdXdlbl9hcGkucG9zdCgpO1xuXHR9O1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jdXJyZW50UHJvdGVjdENvdW50ZXIgPSAwO1xuXHRUd2lua2xlLmJhdGNocHJvdGVjdC5jdXJyZW50cHJvdGVjdG9yID0gMDtcblx0VHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2suZXZhbHVhdGUgPSAoZXZlbnQpID0+IHtcblx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSAn5om56YeP5L+d5oqk5a6M5oiQJztcblx0XHRjb25zdCBmb3JtID0gZXZlbnQudGFyZ2V0O1xuXHRcdGNvbnN0IG51bVByb3RlY3RlZCA9ICQoTW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRzKGZvcm0sICfkuKrpobXpnaInKSkuZmlsdGVyKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdHJldHVybiBlbGVtZW50LmNoZWNrZWQgJiYgZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcuc3R5bGUuY29sb3IgPT09ICcjZjAwJztcblx0XHR9KS5sZW5ndGg7XG5cdFx0aWYgKFxuXHRcdFx0bnVtUHJvdGVjdGVkID4gMCAmJlxuXHRcdFx0IWNvbmZpcm0oYOaCqOWNs+WwhuWvuSR7bXcubGFuZ3VhZ2UuY29udmVydE51bWJlcihudW1Qcm90ZWN0ZWQpfeS4quWFqOS/neaKpOmhtemdoui/m+ihjOaTjeS9nOOAguaCqOehruWumuWQl++8n2ApXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlucHV0ID0gTW9yZWJpdHMucXVpY2tGb3JtLmdldElucHV0RGF0YShmb3JtKTtcblx0XHRpZiAoIWlucHV0LnJlYXNvbikge1xuXHRcdFx0dm9pZCBtdy5ub3RpZnkoJ+aCqOW/hemhu+e7meWHuuS4gOS4queQhueUseOAgicsIHtcblx0XHRcdFx0dHlwZTogJ3dhcm4nLFxuXHRcdFx0XHR0YWc6ICd0d2lua2xlYmF0Y2hwcm90ZWN0Jyxcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRNb3JlYml0cy5zaW1wbGVXaW5kb3cuc2V0QnV0dG9uc0VuYWJsZWQoZmFsc2UpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5pbml0KGZvcm0pO1xuXHRcdGlmIChpbnB1dC5wYWdlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdE1vcmViaXRzLnN0YXR1cy5lcnJvcignRXJyb3InLCAn5b6F5L+d5oqk6aG16Z2i5LiN5a2Y5Zyo77yM56iL5bqP57uI5q2iJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGJhdGNoT3BlcmF0aW9uID0gbmV3IE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uKCflupTnlKjkv53miqTorr7nva4nKTtcblx0XHRiYXRjaE9wZXJhdGlvbi5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hDaHVua3MnKSk7XG5cdFx0YmF0Y2hPcGVyYXRpb24uc2V0T3B0aW9uKCdwcmVzZXJ2ZUluZGl2aWR1YWxTdGF0dXNMaW5lcycsIHRydWUpO1xuXHRcdGJhdGNoT3BlcmF0aW9uLnNldFBhZ2VMaXN0KGlucHV0LnBhZ2VzKTtcblx0XHRiYXRjaE9wZXJhdGlvbi5ydW4oKHBhZ2VOYW1lKSA9PiB7XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHR0aXRsZXM6IHBhZ2VOYW1lLFxuXHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdH07XG5cdFx0XHRjb25zdCBxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRg5q2j5Zyo5qOA5p+l6aG16Z2i4oCcJHtwYWdlTmFtZX3igJ3mmK/lkKblrZjlnKhgLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0VHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2tzLm1haW4sXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdGJhdGNoT3BlcmF0aW9uLndvcmtlckZhaWx1cmVcblx0XHRcdCk7XG5cdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHtcblx0XHRcdFx0cGFnZTogcGFnZU5hbWUsXG5cdFx0XHRcdGJhdGNoT3BlcmF0aW9uLFxuXHRcdFx0XHQuLi5pbnB1dCxcblx0XHRcdH07XG5cdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHR9KTtcblx0fTtcblx0VHdpbmtsZS5iYXRjaHByb3RlY3QuY2FsbGJhY2tzID0ge1xuXHRcdG1haW46IChhcGlvYmopID0+IHtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRpZiAocmVzcG9uc2UucXVlcnkubm9ybWFsaXplZCkge1xuXHRcdFx0XHRhcGlvYmoucGFyYW1zLnBhZ2UgPSByZXNwb25zZS5xdWVyeS5ub3JtYWxpemVkWzBdLnRvO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZXhpc3RzID0gIXJlc3BvbnNlLnF1ZXJ5LnBhZ2VzWzBdLm1pc3Npbmc7XG5cdFx0XHRjb25zdCBwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShhcGlvYmoucGFyYW1zLnBhZ2UsIGDmraPlnKjkv53miqQke2FwaW9iai5wYXJhbXMucGFnZX1gKTtcblx0XHRcdGxldCB0YWtlbkFjdGlvbiA9IGZhbHNlO1xuXHRcdFx0aWYgKGV4aXN0cyAmJiBhcGlvYmoucGFyYW1zLmVkaXRtb2RpZnkpIHtcblx0XHRcdFx0cGFnZS5zZXRFZGl0UHJvdGVjdGlvbihhcGlvYmoucGFyYW1zLmVkaXRsZXZlbCwgYXBpb2JqLnBhcmFtcy5lZGl0ZXhwaXJ5KTtcblx0XHRcdFx0dGFrZW5BY3Rpb24gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGV4aXN0cyAmJiBhcGlvYmoucGFyYW1zLm1vdmVtb2RpZnkpIHtcblx0XHRcdFx0cGFnZS5zZXRNb3ZlUHJvdGVjdGlvbihhcGlvYmoucGFyYW1zLm1vdmVsZXZlbCwgYXBpb2JqLnBhcmFtcy5tb3ZlZXhwaXJ5KTtcblx0XHRcdFx0dGFrZW5BY3Rpb24gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFleGlzdHMgJiYgYXBpb2JqLnBhcmFtcy5jcmVhdGVtb2RpZnkpIHtcblx0XHRcdFx0cGFnZS5zZXRDcmVhdGVQcm90ZWN0aW9uKGFwaW9iai5wYXJhbXMuY3JlYXRlbGV2ZWwsIGFwaW9iai5wYXJhbXMuY3JlYXRlZXhwaXJ5KTtcblx0XHRcdFx0dGFrZW5BY3Rpb24gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0YWtlbkFjdGlvbikge1xuXHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRg5q2j5Zyo5L+d5oqk4oCcJHthcGlvYmoucGFyYW1zLnBhZ2V9YCxcblx0XHRcdFx0XHRg4oCd6aG16Z2iJHtleGlzdHMgPyAn5a2Y5ZyoJyA6ICfkuI3lrZjlnKgnfe+8m+aXoOS6i+WPr+WBmu+8jOi3s+i/h2Bcblx0XHRcdFx0KTtcblx0XHRcdFx0YXBpb2JqLnBhcmFtcy5iYXRjaE9wZXJhdGlvbi53b3JrZXJGYWlsdXJlKGFwaW9iaik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHBhZ2Uuc2V0RWRpdFN1bW1hcnkoYXBpb2JqLnBhcmFtcy5yZWFzb24pO1xuXHRcdFx0cGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlLnByb3RlY3QoYXBpb2JqLnBhcmFtcy5iYXRjaE9wZXJhdGlvbi53b3JrZXJTdWNjZXNzLCBhcGlvYmoucGFyYW1zLmJhdGNoT3BlcmF0aW9uLndvcmtlckZhaWx1cmUpO1xuXHRcdH0sXG5cdH07XG5cdFR3aW5rbGUuYWRkSW5pdENhbGxiYWNrKFR3aW5rbGUuYmF0Y2hwcm90ZWN0LCAnYmF0Y2hwcm90ZWN0Jyk7XG59KShqUXVlcnkpO1xuXG5leHBvcnQge307XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcblxuLyohIFR3aW5rbGUuanMgLSB0d2lua2xlY2xvc2UuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlY2xvc2UoJCkge1xuXHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0LyoqXG5cdCAqIHR3aW5rbGVjbG9zZS5qczogWEZEIGNsb3NpbmcgbW9kdWxlXG5cdCAqIE1vZGUgb2YgaW52b2NhdGlvbjogTGlua3MgYWZ0ZXIgc2VjdGlvbiBoZWFkaW5nXG5cdCAqIEFjdGl2ZSBvbjogQWZEIGRhdGVkIGFyY2hpdmUgcGFnZXNcblx0ICogQ29uZmlnIGRpcmVjdGl2ZXMgaW46IFR3aW5rbGVDb25maWdcblx0ICovXG5cdFR3aW5rbGUuY2xvc2UgPSAoKSA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0VHdpbmtsZS5nZXRQcmVmKCdYZmRDbG9zZScpID09PSAnaGlkZScgfHxcblx0XHRcdCEvXlFpdXdlbihbXyBddGFsayk/OuWtmOW6n+iuqOiuulxcL+iusOW9lSg/OlxcL1xcZCspezN9JC8udGVzdChtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdG13Lmhvb2soJ3dpa2lwYWdlLmNvbnRlbnQnKS5hZGQoKGl0ZW0pID0+IHtcblx0XHRcdGlmIChpdGVtLmF0dHIoJ2lkJykgPT09ICdtdy1jb250ZW50LXRleHQnKSB7XG5cdFx0XHRcdFR3aW5rbGUuY2xvc2UuYWRkTGlua3MoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblx0VHdpbmtsZS5jbG9zZS5hZGRMaW5rcyA9ICgpID0+IHtcblx0XHRjb25zdCBzcGFuVGFnID0gKGNvbG9yLCBjb250ZW50KSA9PiB7XG5cdFx0XHRjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0c3Bhbi5zdHlsZS5jb2xvciA9IGNvbG9yO1xuXHRcdFx0c3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7XG5cdFx0XHRyZXR1cm4gc3Bhbjtcblx0XHR9O1xuXHRcdCRib2R5XG5cdFx0XHQuZmluZChcblx0XHRcdFx0J2gxOmhhcygubXctaGVhZGxpbmUpLGgyOmhhcygubXctaGVhZGxpbmUpLGgzOmhhcygubXctaGVhZGxpbmUpLGg0OmhhcygubXctaGVhZGxpbmUpLGg1OmhhcygubXctaGVhZGxpbmUpLGg2OmhhcygubXctaGVhZGxpbmUpJyxcblx0XHRcdFx0JyNib2R5Q29udGVudCdcblx0XHRcdClcblx0XHRcdC5lYWNoKChpbmRleCwgZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRlbGVtZW50LmRhdGFzZXQuc2VjdGlvbiA9IGluZGV4ICsgMTtcblx0XHRcdH0pO1xuXHRcdGNvbnN0IHNlbGVjdG9yID0gJzpoYXMoLm13LWhlYWRsaW5lIGE6b25seS1vZi10eXBlKTpub3QoOmhhcygrIGRpdi5OYXZGcmFtZSkpJztcblx0XHRjb25zdCB0aXRsZXMgPSAkYm9keS5maW5kKCcjYm9keUNvbnRlbnQnKS5maW5kKGBoMiR7c2VsZWN0b3J9Om5vdCg6aGFzKCsgcCArIGgzKSksIGgzJHtzZWxlY3Rvcn1gKTsgLy8gcmVhbGx5IG5lZWRzIHRvIHdvcmsgb25cblx0XHRjb25zdCBkZWxOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Ryb25nJyk7XG5cdFx0Y29uc3QgZGVsTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRkZWxMaW5rLmFwcGVuZENoaWxkKHNwYW5UYWcoJ0JsYWNrJywgJ1snKSk7XG5cdFx0ZGVsTGluay5hcHBlbmRDaGlsZChzcGFuVGFnKCdSZWQnLCB3aW5kb3cud2dVTFMoJ+WFs+mXreiuqOiuuicsICfpl5zplonoqI7oq5YnKSkpO1xuXHRcdGRlbExpbmsuYXBwZW5kQ2hpbGQoc3BhblRhZygnQmxhY2snLCAnXScpKTtcblx0XHRkZWxOb2RlLmFwcGVuZENoaWxkKGRlbExpbmspO1xuXHRcdGZvciAoY29uc3QgY3VycmVudCBvZiB0aXRsZXMpIHtcblx0XHRcdGNvbnN0IGhlYWRsaW5laHJlZiA9ICQoY3VycmVudClcblx0XHRcdFx0LmZpbmQoJy5tdy1oZWFkbGluZSBhOm5vdCguZXh0LWRpc2N1c3Npb250b29scy1pbml0LXNlY3Rpb24tc3Vic2NyaWJlLWxpbmspJylcblx0XHRcdFx0LmF0dHIoJ2hyZWYnKTtcblx0XHRcdGlmIChoZWFkbGluZWhyZWYgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRsZXQgdGl0bGUgPSBudWxsO1xuXHRcdFx0XHRpZiAoaGVhZGxpbmVocmVmLmluY2x1ZGVzKCdyZWRsaW5rPTEnKSkge1xuXHRcdFx0XHRcdHRpdGxlID0gaGVhZGxpbmVocmVmLnNsaWNlKDE5LCAtMjIpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IG0gPSBoZWFkbGluZWhyZWYubWF0Y2goL1xcL3dpa2lcXC8oW14/XSspLywgJyQxJyk7XG5cdFx0XHRcdFx0aWYgKG0gIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFssIHRpdGxlXSA9IG07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aXRsZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdHRpdGxlID0gZGVjb2RlVVJJQ29tcG9uZW50KHRpdGxlKTtcblx0XHRcdFx0XHR0aXRsZSA9IHRpdGxlLnJlcGxhY2UoL18vZywgJyAnKTsgLy8gTm9ybWFsaXplIGZvciB1c2luZyBpbiBpbnRlcmZhY2UgYW5kIHN1bW1hcnlcblx0XHRcdFx0XHRjb25zdCBwYWdlbm90ZXhpc3QgPSAkKGN1cnJlbnQpLmZpbmQoJy5tdy1oZWFkbGluZSBhJykuaGFzQ2xhc3MoJ25ldycpO1xuXHRcdFx0XHRcdGNvbnN0IHtzZWN0aW9ufSA9IGN1cnJlbnQuZGF0YXNldDtcblx0XHRcdFx0XHRjb25zdCBbbm9kZV0gPSBjdXJyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tdy1oZWFkbGluZScpO1xuXHRcdFx0XHRcdG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyAnKSk7XG5cdFx0XHRcdFx0Y29uc3QgdG1wTm9kZSA9IGRlbE5vZGUuY2xvbmVOb2RlKHRydWUpO1xuXHRcdFx0XHRcdHRtcE5vZGUuZmlyc3RDaGlsZC5ocmVmID0gYCMke3NlY3Rpb259YDtcblx0XHRcdFx0XHQkKHRtcE5vZGUuZmlyc3RDaGlsZCkub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFjayh0aXRsZSwgc2VjdGlvbiwgcGFnZW5vdGV4aXN0KTtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRub2RlLmFwcGVuZENoaWxkKHRtcE5vZGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQvLyBLZWVwIHRoaXMgc3luY2hyb25pemVkIHdpdGgge3tkZWxofX1cblx0VHdpbmtsZS5jbG9zZS5jb2RlcyA9IFtcblx0XHR7XG5cdFx0XHRrZXk6IHdpbmRvdy53Z1VMUygn6K+35rGC5peg5pWIJywgJ+iri+axgueEoeaViCcpLFxuXHRcdFx0dmFsdWU6IHtcblx0XHRcdFx0aXI6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fmsYLml6DmlYgnLCAn6KuL5rGC54Sh5pWIJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJlcDoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+mHjeWkjeaPkOWHuu+8jOaXoOaViCcsICfph43opIfmj5Dlh7rvvIznhKHmlYgnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bmU6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfnm67moIfpobXpnaLmiJbmlofku7bkuI3lrZjlnKjvvIzml6DmlYgnLCAn55uu5qiZ6aCB6Z2i5oiW5qqU5qGI5LiN5a2Y5Zyo77yM54Sh5pWIJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5xOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5o+Q5Yig6ICF5pyq6I635Y+W5o+Q5Yig6LWE5qC877yM5peg5pWIJywgJ+aPkOWIquiAheacquWPluW+l+aPkOWIquizh+agvO+8jOeEoeaViCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogJ+S/neeVmScsXG5cdFx0XHR2YWx1ZToge1xuXHRcdFx0XHRrOiB7XG5cdFx0XHRcdFx0bGFiZWw6ICfkv53nlZknLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0c2s6IHtcblx0XHRcdFx0XHRsYWJlbDogJ+W/q+mAn+S/neeVmScsXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRrOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5pqC5pe25L+d55WZ77yM5pS55oyC57u05oqk5qih5p2/77yI5YWz5rOo5bqm562J77yJJywgJ+aaq+aZguS/neeVme+8jOaUueaOm+e2reitt+aooeadv++8iOmXnOazqOW6puetie+8iScpLFxuXHRcdFx0XHRcdHZhbHVlOiB3aW5kb3cud2dVTFMoJ+aaguaXtuS/neeVmScsICfmmqvmmYLkv53nlZknKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0cnI6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfor7fmsYLnkIbnlLHmtojlpLEnLCAn6KuL5rGC55CG55Sx5raI5aSxJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IFR3aW5rbGUuZ2V0UHJlZignWGZkQ2xvc2UnKSA9PT0gJ25vbmFkbWlub25seScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGRhbjoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WIoOWQjumHjeW7uicsICfliKrlvozph43lu7onKSxcblx0XHRcdFx0XHRhY3Rpb246ICdrZWVwJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0a2V5OiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdHZhbHVlOiB7XG5cdFx0XHRcdGQ6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliKDpmaQnLCAn5Yiq6ZmkJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAnZGVsJyxcblx0XHRcdFx0XHRhZG1pbm9ubHk6IHRydWUsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IFR3aW5rbGUuZ2V0UHJlZignWGZkQ2xvc2UnKSA9PT0gJ2FsbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGljOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zu+5YOP5Zug5L615p2D6KKr5YigJywgJ+WcluWDj+WboOS+teasiuiiq+WIqicpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaQnLCAn5b+r6YCf5Yiq6ZmkJyksXG5cdFx0XHR2YWx1ZToge1xuXHRcdFx0XHRzZDoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W/q+mAn+WIoOmZpCcsICflv6vpgJ/liKrpmaQnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdkZWwnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsc3NkOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5peg5p2l5rqQ5oiW6JGX5L2c5p2D5L+h5oGv77yM5b+r6YCf5Yig6ZmkJywgJ+eEoeS+hua6kOaIlueJiOasiuizh+ioiu+8jOW/q+mAn+WIqumZpCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHN2Zzoge1xuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+W3suaUueeUqFNWR+WbvuW9ou+8jOW/q+mAn+WIoOmZpCcsICflt7LmlLnnlKhTVkflnJblvaLvvIzlv6vpgJ/liKrpmaQnKSxcblx0XHRcdFx0XHRhY3Rpb246ICdkZWwnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRkcmVwOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5aSa5qyh6KKr5Yig6Zmk77yM5p2h55uu6ZSB5a6aJywgJ+Wkmuasoeiiq+WIqumZpO+8jOaineebrumOluWumicpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2RlbCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogd2luZG93LndnVUxTKCflhbbku5blpITnkIbmlrnms5UnLCAn5YW25LuW6JmV55CG5pa55rOVJyksXG5cdFx0XHR2YWx1ZToge1xuXHRcdFx0XHRjOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6L2s5Lqk5L615p2DJywgJ+i9ieS6pOS+teasiicpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ25vb3AnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRyOiB7XG5cdFx0XHRcdFx0bGFiZWw6ICfph43lrprlkJEnLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Y3I6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliIbnsbvph43lrprlkJEnLCAn5YiG6aGe6YeN5a6a5ZCRJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn56e75YqoJywgJ+enu+WLlScpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0bWVyZ2U6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflubblhaUnLCAn5L215YWlJyksXG5cdFx0XHRcdFx0YWN0aW9uOiAna2VlcCcsXG5cdFx0XHRcdFx0YWRtaW5vbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtZXJnZWFwcHJvdmVkOiB7XG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWB6K645bm25YWlJywgJ+WFgeioseS9teWFpScpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHRcdGFkbWlub25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0bmM6IHtcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfml6DlhbHor4bmmoLml7bkv53nlZknLCAn54Sh5YWx6K2Y5pqr5pmC5L+d55WZJyksXG5cdFx0XHRcdFx0dmFsdWU6IHdpbmRvdy53Z1VMUygn5peg5YWx6K+GJywgJ+eEoeWFseitmCcpLFxuXHRcdFx0XHRcdGFjdGlvbjogJ2tlZXAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9LFxuXHRdO1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrID0gKHRpdGxlLCBzZWN0aW9uLCBub29wKSA9PiB7XG5cdFx0Y29uc3QgV2luZG93ID0gbmV3IE1vcmViaXRzLnNpbXBsZVdpbmRvdyg0MTAsIDIwMCk7XG5cdFx0V2luZG93LnNldFRpdGxlKGDlhbPpl63lrZjlup/orqjorrogXFx1MDBCNyAke3RpdGxlfWApO1xuXHRcdFdpbmRvdy5zZXRTY3JpcHROYW1lKCdUd2lua2xlJyk7XG5cdFx0V2luZG93LmFkZEZvb3RlckxpbmsoJ+WtmOW6n+iuqOiuuuiuvue9ricsICdIOlRXL1BSRUYj5YWz6Zet5a2Y5bqf6K6o6K66Jyk7XG5cdFx0V2luZG93LmFkZEZvb3RlckxpbmsoJ1R3aW5rbGXluK7liqknLCAnSDpUVy9ET0Mj5YWz6Zet5a2Y5bqf6K6o6K66Jyk7XG5cdFx0Y29uc3QgZm9ybSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0oVHdpbmtsZS5jbG9zZS5jYWxsYmFjay5ldmFsdWF0ZSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ3NlbGVjdCcsXG5cdFx0XHRsYWJlbDogJ+WkhOeQhue7k+aenO+8micsXG5cdFx0XHRuYW1lOiAnc3ViX2dyb3VwJyxcblx0XHRcdGV2ZW50OiBUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmNoYW5nZV9jb2RlLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdpbnB1dCcsXG5cdFx0XHRuYW1lOiAnc2RyZWFzb24nLFxuXHRcdFx0bGFiZWw6ICfpgJ/liKDnkIbnlLHvvJonLFxuXHRcdFx0dG9vbHRpcDogJ+eUqOS6juWIoOmZpOaXpeW/l++8jOS9v+eUqHt7ZGVsZXRlfX3nmoTlj4LmlbDmoLzlvI/vvIzkvovlpoIgQTEg5oiWIEExfEcxJyxcblx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHR9KTtcblx0XHRmb3JtLmFwcGVuZCh7XG5cdFx0XHR0eXBlOiAnaW5wdXQnLFxuXHRcdFx0bmFtZTogJ3JlbWFyaycsXG5cdFx0XHRsYWJlbDogJ+ihpeWFheivtOaYju+8micsXG5cdFx0fSk7XG5cdFx0Zm9ybS5hcHBlbmQoe1xuXHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdGxpc3Q6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAn5Y+q5YWz6Zet6K6o6K6677yM5LiN6L+b6KGM5YW25LuW5pON5L2cJyxcblx0XHRcdFx0XHR2YWx1ZTogJ25vb3AnLFxuXHRcdFx0XHRcdG5hbWU6ICdub29wJyxcblx0XHRcdFx0XHRldmVudDogVHdpbmtsZS5jbG9zZS5jYWxsYmFjay5jaGFuZ2Vfb3BlcmF0aW9uLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IG5vb3AsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGlmIChuZXcgbXcuVGl0bGUodGl0bGUpLm5hbWVzcGFjZSAlIDIgPT09IDAgJiYgbmV3IG13LlRpdGxlKHRpdGxlKS5uYW1lc3BhY2UgIT09IDIpIHtcblx0XHRcdC8vIGhpZGUgb3B0aW9uIGZvciB1c2VyIHBhZ2VzLCB0byBhdm9pZCBhY2NpZGVudGFsbHkgZGVsZXRpbmcgdXNlciB0YWxrIHBhZ2Vcblx0XHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0bGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxhYmVsOiAn5Yig6Zmk5YWz6IGU55qE6K6o6K666aG1Jyxcblx0XHRcdFx0XHRcdHZhbHVlOiAndGFsa3BhZ2UnLFxuXHRcdFx0XHRcdFx0bmFtZTogJ3RhbGtwYWdlJyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6ICfliKDpmaTml7bpmYTluKbliKDpmaTmraTpobXpnaLnmoTorqjorrrpobXjgIInLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdjaGVja2JveCcsXG5cdFx0XHRsaXN0OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJ+WIoOmZpOmHjeWumuWQkemhtScsXG5cdFx0XHRcdFx0dmFsdWU6ICdyZWRpcmVjdHMnLFxuXHRcdFx0XHRcdG5hbWU6ICdyZWRpcmVjdHMnLFxuXHRcdFx0XHRcdHRvb2x0aXA6ICfliKDpmaTliLDmraTpobXnmoTph43lrprlkJHjgIInLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IHRydWUsXG5cdFx0XHRcdFx0ZXZlbnQ6IChlKSA9PiB7XG5cdFx0XHRcdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXHRcdGZvcm0uYXBwZW5kKHtcblx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZvcm0ucmVuZGVyKCk7XG5cdFx0V2luZG93LnNldENvbnRlbnQocmVzdWx0KTtcblx0XHRXaW5kb3cuZGlzcGxheSgpO1xuXHRcdGNvbnN0IFtzdWJfZ3JvdXBdID0gcmVzdWx0LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NlbGVjdCcpOyAvLyBoYWNrXG5cdFx0Y29uc3QgcmVzdWx0RGF0YSA9IHtcblx0XHRcdHRpdGxlLFxuXHRcdFx0c2VjdGlvbjogTnVtYmVyLnBhcnNlSW50KHNlY3Rpb24sIDEwKSxcblx0XHRcdG5vb3AsXG5cdFx0fTtcblx0XHQkKHJlc3VsdCkuZGF0YSgncmVzdWx0RGF0YScsIHJlc3VsdERhdGEpO1xuXHRcdC8vIHdvcmtlciBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGNvbWJvIGJveCBlbnRyaWVzXG5cdFx0Y29uc3QgY3JlYXRlRW50cmllcyA9IChjb250ZW50cywgY29udGFpbmVyKSA9PiB7XG5cdFx0XHRmb3IgKGNvbnN0IFtpdGVtS2V5LCBpdGVtUHJvcGVydGllc10gb2YgT2JqZWN0LmVudHJpZXMoY29udGVudHMpKSB7XG5cdFx0XHRcdGNvbnN0IGtleSA9IHR5cGVvZiBpdGVtS2V5ID09PSAnc3RyaW5nJyA/IGl0ZW1LZXkgOiBpdGVtUHJvcGVydGllcy52YWx1ZTtcblx0XHRcdFx0Y29uc3QgZWxlbSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdFx0dHlwZTogJ29wdGlvbicsXG5cdFx0XHRcdFx0bGFiZWw6IGAke2tleX3vvJoke2l0ZW1Qcm9wZXJ0aWVzLmxhYmVsfWAsXG5cdFx0XHRcdFx0dmFsdWU6IGtleSxcblx0XHRcdFx0XHRzZWxlY3RlZDogaXRlbVByb3BlcnRpZXMuc2VsZWN0ZWQsXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6XG5cdFx0XHRcdFx0XHQoVHdpbmtsZS5nZXRQcmVmKCdYZmRDbG9zZScpICE9PSAnYWxsJyAmJiBpdGVtUHJvcGVydGllcy5hZG1pbm9ubHkpIHx8IGl0ZW1Qcm9wZXJ0aWVzLmRpc2FibGVkLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgZWxlbVJlbmRlcmVkID0gY29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW0ucmVuZGVyKCkpO1xuXHRcdFx0XHQkKGVsZW1SZW5kZXJlZCkuZGF0YSgnbWVzc2FnZURhdGEnLCBpdGVtUHJvcGVydGllcyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRmb3IgKGNvbnN0IGdyb3VwIG9mIFR3aW5rbGUuY2xvc2UuY29kZXMpIHtcblx0XHRcdGxldCBvcHRncm91cCA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCh7XG5cdFx0XHRcdHR5cGU6ICdvcHRncm91cCcsXG5cdFx0XHRcdGxhYmVsOiBncm91cC5rZXksXG5cdFx0XHR9KTtcblx0XHRcdG9wdGdyb3VwID0gb3B0Z3JvdXAucmVuZGVyKCk7XG5cdFx0XHRzdWJfZ3JvdXAuYXBwZW5kQ2hpbGQob3B0Z3JvdXApO1xuXHRcdFx0Ly8gY3JlYXRlIHRoZSBvcHRpb25zXG5cdFx0XHRjcmVhdGVFbnRyaWVzKGdyb3VwLnZhbHVlLCBvcHRncm91cCk7XG5cdFx0fVxuXHRcdGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdFx0ZXZlbnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCB0cnVlLCB0cnVlKTtcblx0XHRyZXN1bHQuc3ViX2dyb3VwLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmNoYW5nZV9vcGVyYXRpb24gPSAoZSkgPT4ge1xuXHRcdGNvbnN0IG5vb3AgPSBlLnRhcmdldC5jaGVja2VkO1xuXHRcdGNvbnN0IGNvZGUgPSBlLnRhcmdldC5mb3JtLnN1Yl9ncm91cC52YWx1ZTtcblx0XHRjb25zdCBtZXNzYWdlRGF0YSA9ICQoZS50YXJnZXQuZm9ybS5zdWJfZ3JvdXApLmZpbmQoYG9wdGlvblt2YWx1ZT1cIiR7Y29kZX1cIl1gKS5kYXRhKCdtZXNzYWdlRGF0YScpO1xuXHRcdGNvbnN0IHt0YWxrcGFnZX0gPSBlLnRhcmdldC5mb3JtO1xuXHRcdGNvbnN0IHtyZWRpcmVjdHN9ID0gZS50YXJnZXQuZm9ybTtcblx0XHRpZiAobm9vcCB8fCBtZXNzYWdlRGF0YS5hY3Rpb24gPT09ICdrZWVwJykge1xuXHRcdFx0aWYgKHRhbGtwYWdlKSB7XG5cdFx0XHRcdHRhbGtwYWdlLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0dGFsa3BhZ2UuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmVkaXJlY3RzLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdHJlZGlyZWN0cy5kaXNhYmxlZCA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0YWxrcGFnZSkge1xuXHRcdFx0XHR0YWxrcGFnZS5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0dGFsa3BhZ2UuZGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJlZGlyZWN0cy5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdHJlZGlyZWN0cy5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5jbG9zZS5jYWxsYmFjay5jaGFuZ2VfY29kZSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgcmVzdWx0RGF0YSA9ICQoZS50YXJnZXQuZm9ybSkuZGF0YSgncmVzdWx0RGF0YScpO1xuXHRcdGNvbnN0IG1lc3NhZ2VEYXRhID0gJChlLnRhcmdldCkuZmluZChgb3B0aW9uW3ZhbHVlPVwiJHtlLnRhcmdldC52YWx1ZX1cIl1gKS5kYXRhKCdtZXNzYWdlRGF0YScpO1xuXHRcdGNvbnN0IHtub29wfSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3Qge3RhbGtwYWdlfSA9IGUudGFyZ2V0LmZvcm07XG5cdFx0Y29uc3Qge3JlZGlyZWN0c30gPSBlLnRhcmdldC5mb3JtO1xuXHRcdGlmIChyZXN1bHREYXRhLm5vb3AgfHwgbWVzc2FnZURhdGEuYWN0aW9uID09PSAnbm9vcCcpIHtcblx0XHRcdG5vb3AuY2hlY2tlZCA9IHRydWU7XG5cdFx0XHRub29wLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdGlmICh0YWxrcGFnZSkge1xuXHRcdFx0XHR0YWxrcGFnZS5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdHRhbGtwYWdlLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHJlZGlyZWN0cy5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRyZWRpcmVjdHMuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRub29wLmNoZWNrZWQgPSBmYWxzZTtcblx0XHRcdG5vb3AuZGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdGlmIChtZXNzYWdlRGF0YS5hY3Rpb24gPT09ICdrZWVwJykge1xuXHRcdFx0XHRpZiAodGFsa3BhZ2UpIHtcblx0XHRcdFx0XHR0YWxrcGFnZS5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0dGFsa3BhZ2UuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlZGlyZWN0cy5jaGVja2VkID0gZmFsc2U7XG5cdFx0XHRcdHJlZGlyZWN0cy5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAodGFsa3BhZ2UpIHtcblx0XHRcdFx0XHR0YWxrcGFnZS5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHR0YWxrcGFnZS5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlZGlyZWN0cy5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0cmVkaXJlY3RzLmRpc2FibGVkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZS50YXJnZXQudmFsdWUgPT09ICdzZCcpIHtcblx0XHRcdFx0ZS50YXJnZXQuZm9ybS5zZHJlYXNvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnaGlkZGVuJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlLnRhcmdldC5mb3JtLnNkcmVhc29uLnBhcmVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrLmV2YWx1YXRlID0gKGUpID0+IHtcblx0XHRjb25zdCBjb2RlID0gZS50YXJnZXQuc3ViX2dyb3VwLnZhbHVlO1xuXHRcdGNvbnN0IHJlc3VsdERhdGEgPSAkKGUudGFyZ2V0KS5kYXRhKCdyZXN1bHREYXRhJyk7XG5cdFx0Y29uc3QgbWVzc2FnZURhdGEgPSAkKGUudGFyZ2V0LnN1Yl9ncm91cCkuZmluZChgb3B0aW9uW3ZhbHVlPVwiJHtjb2RlfVwiXWApLmRhdGEoJ21lc3NhZ2VEYXRhJyk7XG5cdFx0Y29uc3Qgbm9vcCA9IGUudGFyZ2V0Lm5vb3AuY2hlY2tlZDtcblx0XHRjb25zdCB0YWxrcGFnZSA9IGUudGFyZ2V0LnRhbGtwYWdlICYmIGUudGFyZ2V0LnRhbGtwYWdlLmNoZWNrZWQ7XG5cdFx0Y29uc3QgcmVkaXJlY3RzID0gZS50YXJnZXQucmVkaXJlY3RzLmNoZWNrZWQ7XG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0dGl0bGU6IHJlc3VsdERhdGEudGl0bGUsXG5cdFx0XHRjb2RlLFxuXHRcdFx0cmVtYXJrOiBlLnRhcmdldC5yZW1hcmsudmFsdWUsXG5cdFx0XHRzZHJlYXNvbjogZS50YXJnZXQuc2RyZWFzb24udmFsdWUsXG5cdFx0XHRzZWN0aW9uOiByZXN1bHREYXRhLnNlY3Rpb24sXG5cdFx0XHRwYXJlbnRTZWN0aW9uOiByZXN1bHREYXRhLnBhcmVudFNlY3Rpb24sXG5cdFx0XHRtZXNzYWdlRGF0YSxcblx0XHRcdHRhbGtwYWdlLFxuXHRcdFx0cmVkaXJlY3RzLFxuXHRcdH07XG5cdFx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkKGZhbHNlKTtcblx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChlLnRhcmdldCk7XG5cdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQubm90aWNlID0gJ+aTjeS9nOWujOaIkCc7XG5cdFx0aWYgKG5vb3AgfHwgbWVzc2FnZURhdGEuYWN0aW9uID09PSAnbm9vcCcpIHtcblx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLnRhbGtlbmQocGFyYW1zKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3dpdGNoIChtZXNzYWdlRGF0YS5hY3Rpb24pIHtcblx0XHRcdFx0Y2FzZSAnZGVsJzpcblx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5kZWwocGFyYW1zKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAna2VlcCc6IHtcblx0XHRcdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UocGFyYW1zLnRpdGxlLCAn56e76Zmk5a2Y5bqf6K6o6K665qih5p2/Jyk7XG5cdFx0XHRcdFx0cWl1d2VuX3BhZ2Uuc2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKHBhcmFtcyk7XG5cdFx0XHRcdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy5rZWVwKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KGDlhbPpl63lrZjlup/orqjorrrvvJrmnKrlrprkuYkgJHtjb2RlfWAsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdHRhZzogJ3R3aW5rbGVjbG9zZScsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcyA9IHtcblx0XHRkZWw6IChwYXJhbXMpID0+IHtcblx0XHRcdGxldCBxdWVyeTtcblx0XHRcdGxldCBxaXV3ZW5fYXBpO1xuXHRcdFx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCk7XG5cdFx0XHRjb25zdCBwYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZShwYXJhbXMudGl0bGUsICfliKDpmaTpobXpnaInKTtcblx0XHRcdGlmIChwYXJhbXMuY29kZSA9PT0gJ3NkJykge1xuXHRcdFx0XHRUd2lua2xlLnNwZWVkeS5jYWxsYmFja3MucGFyc2VXaWtpdGV4dChwYXJhbXMudGl0bGUsIGB7e2RlbGV0ZXwke3BhcmFtcy5zZHJlYXNvbn19fWAsIChyZWFzb24pID0+IHtcblx0XHRcdFx0XHRyZWFzb24gPSBwcm9tcHQoJ+i+k+WFpeWIoOmZpOeQhueUse+8jOaIlueCueWHu+ehruWumuS7peaOpeWPl+iHquWKqOeUn+aIkOeahO+8micsIHJlYXNvbik7XG5cdFx0XHRcdFx0aWYgKHJlYXNvbiA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0cGFnZS5nZXRTdGF0dXNFbGVtZW50KCkud2Fybign5rKh5pyJ5omn6KGM5Yig6ZmkJyk7XG5cdFx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy50YWxrZW5kKHBhcmFtcyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHBhZ2Uuc2V0RWRpdFN1bW1hcnkocmVhc29uKTtcblx0XHRcdFx0XHRcdHBhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHRcdFx0cGFnZS5kZWxldGVQYWdlKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0cGFnZS5nZXRTdGF0dXNFbGVtZW50KCkuaW5mbygn5a6M5oiQJyk7XG5cdFx0XHRcdFx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLnRhbGtlbmQocGFyYW1zKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KGDlrZjlup/orqjorrrpgJrov4fvvJpbWyR7bXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpfSMke3BhcmFtcy50aXRsZX1dXWApO1xuXHRcdFx0XHRwYWdlLnNldENoYW5nZVRhZ3MoVHdpbmtsZS5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0cGFnZS5kZWxldGVQYWdlKCgpID0+IHtcblx0XHRcdFx0XHRwYWdlLmdldFN0YXR1c0VsZW1lbnQoKS5pbmZvKCflrozmiJAnKTtcblx0XHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy50YWxrZW5kKHBhcmFtcyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBhcmFtcy5yZWRpcmVjdHMpIHtcblx0XHRcdFx0cXVlcnkgPSB7XG5cdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdHRpdGxlczogcGFyYW1zLnRpdGxlLFxuXHRcdFx0XHRcdHByb3A6ICdyZWRpcmVjdHMnLFxuXHRcdFx0XHRcdHJkbGltaXQ6ICdtYXgnLCAvLyA1MDAgaXMgbWF4IGZvciBub3JtYWwgdXNlcnMsIDUwMDAgZm9yIGJvdHMgYW5kIHN5c29wc1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHFpdXdlbl9hcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0J+ato+WcqOiOt+WPlumHjeWumuWQkScsXG5cdFx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdFx0VHdpbmtsZS5jbG9zZS5jYWxsYmFja3MuZGVsZXRlUmVkaXJlY3RzTWFpblxuXHRcdFx0XHQpO1xuXHRcdFx0XHRxaXV3ZW5fYXBpLnBhcmFtcyA9IHBhcmFtcztcblx0XHRcdFx0cWl1d2VuX2FwaS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGFyYW1zLnRhbGtQYWdlKSB7XG5cdFx0XHRcdGNvbnN0IHBhZ2VUaXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KHBhcmFtcy50aXRsZSk7XG5cdFx0XHRcdGlmIChwYWdlVGl0bGUgJiYgcGFnZVRpdGxlLm5hbWVzcGFjZSAlIDIgPT09IDAgJiYgcGFnZVRpdGxlLm5hbWVzcGFjZSAhPT0gMikge1xuXHRcdFx0XHRcdHBhZ2VUaXRsZS5uYW1lc3BhY2UrKzsgLy8gbm93IHBhZ2VUaXRsZSBpcyB0aGUgdGFsayBwYWdlIHRpdGxlIVxuXHRcdFx0XHRcdHF1ZXJ5ID0ge1xuXHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0dGl0bGVzOiBwYWdlVGl0bGUudG9UZXh0KCksXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdFx0J+ato+WcqOajgOafpeiuqOiuuumhtemdouaYr+WQpuWtmOWcqCcsXG5cdFx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRcdFR3aW5rbGUuY2xvc2UuY2FsbGJhY2tzLmRlbGV0ZVRhbGtcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHFpdXdlbl9hcGkucGFyYW1zID0gcGFyYW1zO1xuXHRcdFx0XHRcdHFpdXdlbl9hcGkuYXBpb2JqLnBhcmFtcy50YWxrUGFnZSA9IHBhZ2VUaXRsZS50b1RleHQoKTtcblx0XHRcdFx0XHRxaXV3ZW5fYXBpLnBvc3QoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0TW9yZWJpdHMud2lraS5yZW1vdmVDaGVja3BvaW50KCk7XG5cdFx0fSxcblx0XHRkZWxldGVSZWRpcmVjdHNNYWluOiAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCB4bWwgPSBhcGlvYmoucmVzcG9uc2VYTUw7XG5cdFx0XHRjb25zdCBwYWdlcyA9ICQoeG1sKVxuXHRcdFx0XHQuZmluZCgncmQnKVxuXHRcdFx0XHQubWFwKChfaW5kZXgsIGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gJChlbGVtZW50KS5hdHRyKCd0aXRsZScpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuZ2V0KCk7XG5cdFx0XHRpZiAocGFnZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJlZGlyZWN0RGVsZXRlciA9IG5ldyBNb3JlYml0cy5iYXRjaE9wZXJhdGlvbihcblx0XHRcdFx0d2luZG93LndnVUxTKCfmraPlnKjliKDpmaTliLAgJywgJ+ato+WcqOWIqumZpOWIsCAnKSArXG5cdFx0XHRcdFx0YXBpb2JqLnBhcmFtcy50aXRsZSArXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCcg55qE6YeN5a6a5ZCRJywgJyDnmoTph43mlrDlsI7lkJEnKVxuXHRcdFx0KTtcblx0XHRcdHJlZGlyZWN0RGVsZXRlci5zZXRPcHRpb24oJ2NodW5rU2l6ZScsIFR3aW5rbGUuZ2V0UHJlZignYmF0Y2hkZWxldGVDaHVua3MnKSk7XG5cdFx0XHRyZWRpcmVjdERlbGV0ZXIuc2V0UGFnZUxpc3QocGFnZXMpO1xuXHRcdFx0cmVkaXJlY3REZWxldGVyLnJ1bigocGFnZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraS5wYWdlKHBhZ2VOYW1lLCB3aW5kb3cud2dVTFMoJ+ato+WcqOWIoOmZpCAnLCAn5q2j5Zyo5Yiq6ZmkICcpICsgcGFnZU5hbWUpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRFZGl0U3VtbWFyeShcblx0XHRcdFx0XHRgW1tRVzpDU0QjRzV8RzVdXe+8miR7d2luZG93LndnVUxTKCfmjIflkJHlt7LliKDpobXpnaLigJwnLCAn5oyH5ZCR5bey5Yiq6aCB6Z2i44CMJyl9JHthcGlvYmoucGFyYW1zLnRpdGxlfSR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+KAneeahOmHjeWumuWQkScsXG5cdFx0XHRcdFx0XHQn44CN55qE6YeN5paw5bCO5ZCRJ1xuXHRcdFx0XHRcdCl9YFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRxaXV3ZW5fcGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRcdHFpdXdlbl9wYWdlLmRlbGV0ZVBhZ2UocmVkaXJlY3REZWxldGVyLndvcmtlclN1Y2Nlc3MsIHJlZGlyZWN0RGVsZXRlci53b3JrZXJGYWlsdXJlKTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0ZGVsZXRlVGFsazogKGFwaW9iaikgPT4ge1xuXHRcdFx0Y29uc3QgeG1sID0gYXBpb2JqLnJlc3BvbnNlWE1MO1xuXHRcdFx0Y29uc3QgZXhpc3RzID0gJCh4bWwpLmZpbmQoJ3BhZ2U6bm90KFttaXNzaW5nXSknKS5sZW5ndGggPiAwO1xuXHRcdFx0aWYgKCFleGlzdHMpIHtcblx0XHRcdFx0Ly8gbm8gdGFsayBwYWdlOyBmb3JnZXQgYWJvdXQgaXRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdGFwaW9iai5wYXJhbXMudGFsa1BhZ2UsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5q2j5Zyo5Yig6Zmk6aG16Z2iICcsICfmraPlnKjliKrpmaTpoIHpnaIgJykgK1xuXHRcdFx0XHRcdGFwaW9iai5wYXJhbXMudGl0bGUgK1xuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOeahOiuqOiuuumhtScsICcg55qE6KiO6KuW6aCBJylcblx0XHRcdCk7XG5cdFx0XHRwYWdlLnNldEVkaXRTdW1tYXJ5KFxuXHRcdFx0XHRgW1tRVzpDU0QjRzV8RzVdXe+8miR7d2luZG93LndnVUxTKCflt7LliKDpobXpnaLigJwnLCAn5bey5Yiq6aCB6Z2i44CMJyl9JHthcGlvYmoucGFyYW1zLnRpdGxlfSR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdCfigJ3nmoRbW0hlbHA66K6o6K666aG1fOiuqOiuuumhtV1dJyxcblx0XHRcdFx0XHQn44CN55qEW1tIZWxwOuiojuirlumggXzoqI7oq5bpoIFdXSdcblx0XHRcdFx0KX1gXG5cdFx0XHQpO1xuXHRcdFx0cGFnZS5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0XHRwYWdlLmRlbGV0ZVBhZ2UoKTtcblx0XHR9LFxuXHRcdGtlZXA6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBzdGF0ZWxlbSA9IHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0aWYgKCFwYWdlb2JqLmV4aXN0cygpKSB7XG5cdFx0XHRcdHN0YXRlbGVtLmVycm9yKCfpobXpnaLkuI3lrZjlnKjvvIzlj6/og73lt7LooqvliKDpmaQnKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgdGV4dCA9IHBhZ2VvYmouZ2V0UGFnZVRleHQoKTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCBwYWdldGl0bGUgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChwYXJhbXMudGl0bGUpO1xuXHRcdFx0aWYgKHBhZ2V0aXRsZS5nZXROYW1lc3BhY2VJZCgpICUgMiA9PT0gMCkge1xuXHRcdFx0XHRjb25zdCB0YWxrcGFnZXRpdGxlID0gbmV3IG13LlRpdGxlKHBhZ2V0aXRsZS5nZXRNYWluVGV4dCgpLCBwYWdldGl0bGUuZ2V0TmFtZXNwYWNlSWQoKSArIDEpO1xuXHRcdFx0XHRjb25zdCB0YWxrcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdFx0dGFsa3BhZ2V0aXRsZS50b1N0cmluZygpLFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5qCH6K6w6K6o6K666aG1JywgJ+aomeiomOiojuirlumggScpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IHJlYXNvbiA9IHBhcmFtcy5tZXNzYWdlRGF0YS52YWx1ZSB8fCBwYXJhbXMubWVzc2FnZURhdGEubGFiZWw7XG5cdFx0XHRcdGNvbnN0IHZmZGtlcHQgPSBge3tPbGQgdmZkIG11bHRpfCR7bXcuY29uZmlnXG5cdFx0XHRcdFx0LmdldCgnd2dQYWdlTmFtZScpXG5cdFx0XHRcdFx0LnNwbGl0KCcvJylcblx0XHRcdFx0XHQuc2xpY2UoMilcblx0XHRcdFx0XHQuam9pbignLycpfXwke3JlYXNvbn19fVxcbmA7XG5cdFx0XHRcdHRhbGtwYWdlLnNldFByZXBlbmRUZXh0KHZmZGtlcHQpO1xuXHRcdFx0XHR0YWxrcGFnZS5zZXRFZGl0U3VtbWFyeShgW1ske213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX0jJHtwYXJhbXMudGl0bGV9XV3vvJoke3JlYXNvbn1gKTtcblx0XHRcdFx0dGFsa3BhZ2Uuc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0XHR0YWxrcGFnZS5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHRhbGtwYWdlLnByZXBlbmQoKTtcblx0XHRcdH1cblx0XHRcdGxldCBuZXd0ZXh0ID0gdGV4dC5yZXBsYWNlKFxuXHRcdFx0XHQvPG5vaW5jbHVkZT5cXHMqXFx7XFx7KFtyc2FpZnRjbXZdZmQpKFxcfCg/Olxce1xce1tee31dKlxcfVxcfXxbXnt9XSkqKT9cXH1cXH1cXHMqPFxcL25vaW5jbHVkZT5cXHMqL2dpLFxuXHRcdFx0XHQnJ1xuXHRcdFx0KTtcblx0XHRcdG5ld3RleHQgPSBuZXd0ZXh0LnJlcGxhY2UoL1xce1xceyhbcnNhaWZ0Y212XWZkKShcXHwoPzpcXHtcXHtbXnt9XSpcXH1cXH18W157fV0pKik/XFx9XFx9XFxzKi9naSwgJycpO1xuXHRcdFx0aWYgKHBhcmFtcy5jb2RlICE9PSAndGsnKSB7XG5cdFx0XHRcdG5ld3RleHQgPSBuZXd0ZXh0LnJlcGxhY2UoXG5cdFx0XHRcdFx0L3t7KG5vdGFiaWxpdHl8ZmFtZXxtYWlyfOefpeWQjeW6pnzph43opoHmgKd85pi+6JGX5oCnfOmhr+iRl+aAp3znn6XlkI3luqbkuI3otrN85Lq654mp6YeN6KaB5oCnfOmHjeimgeaAp+S4jei2s3xub3RhYmxlfOWFs+azqOW6pnzlhbPms6jluqbkuI3otrN86Zec5rOo5bqmfOmXnOazqOW6puS4jei2s3zph43opoF86YeN6KaB5bqmKShcXHwoPzp7e1tee31dKn19fFtee31dKSopP319XFxuKi9naSxcblx0XHRcdFx0XHQnJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRuZXd0ZXh0ID0gbmV3dGV4dC5yZXBsYWNlKFxuXHRcdFx0XHRcdC97eyhzdWJzdHVifOWwj+Wwj+S9nOWTgXxjb2R85bCP5bCP5qKd55uufOWwj+Wwj+adoeebrikoXFx8KD86e3tbXnt9XSp9fXxbXnt9XSkqKT99fVxcbiovZ2ksXG5cdFx0XHRcdFx0Jydcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGlmIChwYXJhbXMuY29kZSA9PT0gJ21lcmdlYXBwcm92ZWQnKSB7XG5cdFx0XHRcdGNvbnN0IHRhZyA9ICd7eydcblx0XHRcdFx0XHQuY29uY2F0KCdzdWJzdDonKVxuXHRcdFx0XHRcdC5jb25jYXQoYE1lcmdlIGFwcHJvdmVkL2F1dG98ZGlzY3Vzcz0ke213LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKX0jJHtwYXJhbXMudGl0bGV9fX1cXG5gKTtcblx0XHRcdFx0Ly8gSW5zZXJ0IHRhZyBhZnRlciBzaG9ydCBkZXNjcmlwdGlvbiBvciBhbnkgaGF0bm90ZXNcblx0XHRcdFx0Y29uc3QgcWl1d2VuX3BhZ2UgPSBuZXcgTW9yZWJpdHMud2lraXRleHQucGFnZShuZXd0ZXh0KTtcblx0XHRcdFx0bmV3dGV4dCA9IHFpdXdlbl9wYWdlLmluc2VydEFmdGVyVGVtcGxhdGVzKHRhZywgVHdpbmtsZS5oYXRub3RlUmVnZXgpLmdldFRleHQoKTtcblx0XHRcdH1cblx0XHRcdGlmIChuZXd0ZXh0ID09PSB0ZXh0KSB7XG5cdFx0XHRcdHN0YXRlbGVtLndhcm4oJ+acquaJvuWIsOWtmOW6n+iuqOiuuuaooeadv++8jOWPr+iDveW3suiiq+enu+mZpCcpO1xuXHRcdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy50YWxrZW5kKHBhcmFtcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGVkaXRzdW1tYXJ5ID0gYOWtmOW6n+iuqOiuuuWFs+mXre+8mltbJHttdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyl9IyR7cGFyYW1zLnRpdGxlfV1dYDtcblx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQobmV3dGV4dCk7XG5cdFx0XHRwYWdlb2JqLnNldEVkaXRTdW1tYXJ5KGVkaXRzdW1tYXJ5KTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoVHdpbmtsZS5jbG9zZS5jYWxsYmFja3Mua2VlcENvbXBsZXRlKTtcblx0XHR9LFxuXHRcdGtlZXBDb21wbGV0ZTogKHBhZ2VvYmopID0+IHtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHBhZ2VvYmouZ2V0Q2FsbGJhY2tQYXJhbWV0ZXJzKCk7XG5cdFx0XHRUd2lua2xlLmNsb3NlLmNhbGxiYWNrcy50YWxrZW5kKHBhcmFtcyk7XG5cdFx0fSxcblx0XHR0YWxrZW5kOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRjb25zdCBxaXV3ZW5fcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLCAn5YWz6Zet6K6o6K66Jyk7XG5cdFx0XHRxaXV3ZW5fcGFnZS5zZXRDYWxsYmFja1BhcmFtZXRlcnMocGFyYW1zKTtcblx0XHRcdHFpdXdlbl9wYWdlLnNldFBhZ2VTZWN0aW9uKHBhcmFtcy5zZWN0aW9uKTtcblx0XHRcdHFpdXdlbl9wYWdlLmxvYWQoVHdpbmtsZS5jbG9zZS5jYWxsYmFja3Muc2F2ZVRhbGspO1xuXHRcdH0sXG5cdFx0c2F2ZVRhbGs6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBzdGF0ZWxlbSA9IHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpO1xuXHRcdFx0bGV0IHRleHQgPSBwYWdlb2JqLmdldFBhZ2VUZXh0KCk7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0aWYgKHRleHQuaW5jbHVkZXMoJ3t7ZGVsaCcpKSB7XG5cdFx0XHRcdHN0YXRlbGVtLmVycm9yKCforqjorrrlt7LooqvlhbPpl60nKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc2JlZ2luID0gdGV4dC5pbmNsdWRlcygnPHNlY3Rpb24gYmVnaW49YmFja2xvZyAvPicpO1xuXHRcdFx0Y29uc3Qgc2VuZCA9IHRleHQuaW5jbHVkZXMoJzxzZWN0aW9uIGVuZD1iYWNrbG9nIC8+Jyk7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCdcXG48c2VjdGlvbiBiZWdpbj1iYWNrbG9nIC8+JywgJycpO1xuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSgnXFxuPHNlY3Rpb24gZW5kPWJhY2tsb2cgLz4nLCAnJyk7XG5cdFx0XHRjb25zdCBiYXIgPSB0ZXh0LnNwbGl0KCdcXG4tLS0tXFxuJyk7XG5cdFx0XHRjb25zdCBzcGxpdCA9IGJhclswXS5zcGxpdCgnXFxuJyk7XG5cdFx0XHR0ZXh0ID0gYCR7c3BsaXRbMF19XFxue3tkZWxofCR7cGFyYW1zLmNvZGV9fX1cXG5gO1xuXHRcdFx0dGV4dCArPSBzcGxpdC5zbGljZSgxKS5qb2luKCdcXG4nKTtcblx0XHRcdGNvbnN0IHJlYXNvbiA9IHBhcmFtcy5tZXNzYWdlRGF0YS52YWx1ZSB8fCBwYXJhbXMubWVzc2FnZURhdGEubGFiZWw7XG5cdFx0XHR0ZXh0ICs9IGBcXG48aHI+XFxuOiAke3JlYXNvbn1gO1xuXHRcdFx0aWYgKHBhcmFtcy5yZW1hcmspIHtcblx0XHRcdFx0dGV4dCArPSBg77yaJHtNb3JlYml0cy5zdHJpbmcuYXBwZW5kUHVuY3R1YXRpb24ocGFyYW1zLnJlbWFyayl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHQgKz0gJ+OAgic7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIU1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHRcdHRleHQgKz0gJ3t7Jy5jb25jYXQoJ3N1YnN0OicpLmNvbmNhdCgnTkFDfX0nKTtcblx0XHRcdH1cblx0XHRcdHRleHQgKz0gJy0tfn4nLmNvbmNhdCgnfn4nLCAnXFxue3tkZWxmfX0nKTtcblx0XHRcdGlmIChiYXJbMV0pIHtcblx0XHRcdFx0dGV4dCArPSBgXFxuLS0tLVxcbiR7YmFyLnNsaWNlKDEpLmpvaW4oJ1xcbi0tLS1cXG4nKX1gO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHNlbmQpIHtcblx0XHRcdFx0dGV4dCArPSAnXFxuPHNlY3Rpb24gZW5kPWJhY2tsb2cgLz4nO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHNiZWdpbikge1xuXHRcdFx0XHQvLyBndWFyYW50ZWVkIHRvIGJlIGF0IHRuZSBlbmQ/XG5cdFx0XHRcdHRleHQgKz0gJ1xcbjxzZWN0aW9uIGJlZ2luPWJhY2tsb2cgLz4nO1xuXHRcdFx0fVxuXHRcdFx0cGFnZW9iai5zZXRQYWdlVGV4dCh0ZXh0KTtcblx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoYC8qICR7cGFyYW1zLnRpdGxlfSAqLyAke3JlYXNvbn1gKTtcblx0XHRcdHBhZ2VvYmouc2V0Q2hhbmdlVGFncyhUd2lua2xlLmNoYW5nZVRhZ3MpO1xuXHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ25vY3JlYXRlJyk7XG5cdFx0XHRwYWdlb2JqLnNhdmUoVHdpbmtsZS5jbG9zZS5jYWxsYmFja3MuZGlzYWJsZUxpbmspO1xuXHRcdH0sXG5cdFx0ZGlzYWJsZUxpbms6IChwYWdlb2JqKSA9PiB7XG5cdFx0XHRjb25zdCBwYXJhbXMgPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdFx0JChgc3Ryb25nIGFbaHJlZj0jJHtwYXJhbXMuc2VjdGlvbn1dIHNwYW5gKS5jc3MoJ2NvbG9yJywgJyM4MDgwODAnKTtcblx0XHR9LFxuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmNsb3NlLCAnY2xvc2UnKTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuXG4vKiEgVHdpbmtsZS5qcyAtIHR3aW5rbGVjb25maWcuanMgKi9cbihmdW5jdGlvbiB0d2lua2xlY29uZmlnKCQpIHtcblx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdC8qKlxuXHQgKiB0d2lua2xlY29uZmlnLmpzOiBQcmVmZXJlbmNlcyBtb2R1bGVcblx0ICogTW9kZSBvZiBpbnZvY2F0aW9uOiBBZGRzIGNvbmZpZ3VyYXRpb24gZm9ybSB0byBIZWxwOlR3aW5rbGUv5Y+C5pWw6K6+572uLFxuXHQgKiBhbmQgYWRkcyBhbiBhZCBib3ggdG8gdGhlIHRvcCBvZiB1c2VyIHN1YnBhZ2VzIGJlbG9uZ2luZyB0byB0aGVcblx0ICogY3VycmVudGx5IGxvZ2dlZC1pbiB1c2VyIHdoaWNoIGVuZCBpbiAnLmpzJ1xuXHQgKiBBY3RpdmUgb246IFdoYXQgSSBqdXN0IHNhaWQuIFllYWguXG5cdCAqL1xuXHRUd2lua2xlLmNvbmZpZyA9IHt9O1xuXHRUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyA9IHtcblx0XHR5ZXM6IHdpbmRvdy53Z1VMUygn5rC45LmF5Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+awuOS5heWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdG5vOiB3aW5kb3cud2dVTFMoJ+S4jeWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfkuI3liqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRkZWZhdWx0OiB3aW5kb3cud2dVTFMoJ+mBteWuiOermeeCueiuvue9ricsICfpgbXlrojnq5npu57oqK3lrponKSxcblx0XHQnMSB3ZWVrJzogd2luZG93LndnVUxTKCfliqDlhaXliLDnm5Hop4bliJfooagx5ZGoJywgJ+WKoOWFpeWIsOebo+imlua4heWWrjHpgLEnKSxcblx0XHQnMSBtb250aCc6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5Yiw55uR6KeG5YiX6KGoMeS4quaciCcsICfliqDlhaXliLDnm6PoppbmuIXllq4x5YCL5pyIJyksXG5cdFx0JzMgbW9udGhzJzogd2luZG93LndnVUxTKCfliqDlhaXliLDnm5Hop4bliJfooagz5Liq5pyIJywgJ+WKoOWFpeWIsOebo+imlua4heWWrjPlgIvmnIgnKSxcblx0XHQnNiBtb250aHMnOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWIsOebkeinhuWIl+ihqDbkuKrmnIgnLCAn5Yqg5YWl5Yiw55uj6KaW5riF5ZauNuWAi+aciCcpLFxuXHR9O1xuXHRUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzID0ge1xuXHRcdGNzZENyaXRlcmlhOiB7XG5cdFx0XHRkYjogd2luZG93LndnVUxTKCfoh6rlrprkuYnnkIbnlLEnLCAn6Ieq6KiC55CG55SxJyksXG5cdFx0XHRnMTogJ0cxJyxcblx0XHRcdGcyOiAnRzInLFxuXHRcdFx0ZzM6ICdHMycsXG5cdFx0XHRnNDogJ0c0Jyxcblx0XHRcdGc1OiAnRzUnLFxuXHRcdFx0ZzY6ICdHNicsXG5cdFx0XHRnNzogJ0c3Jyxcblx0XHRcdGc4OiAnRzgnLFxuXHRcdFx0Zzk6ICdHOScsXG5cdFx0XHRhMTogJ0ExJyxcblx0XHRcdGEyOiAnQTInLFxuXHRcdFx0YTM6ICdBMycsXG5cdFx0XHRvMTogJ08xJyxcblx0XHRcdG8yOiAnTzInLFxuXHRcdFx0bzM6ICdPMycsXG5cdFx0XHRmMTogJ0YxJyxcblx0XHRcdGYyOiAnRjInLFxuXHRcdFx0ZjM6ICdGMycsXG5cdFx0XHRmNDogJ0Y0Jyxcblx0XHRcdGY1OiAnRjUnLFxuXHRcdFx0cjE6ICdSMScsXG5cdFx0XHRyMjogJ1IyJyxcblx0XHR9LFxuXHRcdGNzZENyaXRlcmlhRGlzcGxheU9yZGVyOiBbXG5cdFx0XHQnZGInLFxuXHRcdFx0J2cxJyxcblx0XHRcdCdnMicsXG5cdFx0XHQnZzMnLFxuXHRcdFx0J2c0Jyxcblx0XHRcdCdnNScsXG5cdFx0XHQnZzYnLFxuXHRcdFx0J2c3Jyxcblx0XHRcdCdnOCcsXG5cdFx0XHQnZzknLFxuXHRcdFx0J2ExJyxcblx0XHRcdCdhMicsXG5cdFx0XHQnYTMnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdFx0J2YxJyxcblx0XHRcdCdmMicsXG5cdFx0XHQnZjMnLFxuXHRcdFx0J2Y0Jyxcblx0XHRcdCdmNScsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRdLFxuXHRcdGNzZENyaXRlcmlhTm90aWZpY2F0aW9uOiB7XG5cdFx0XHRkYjogd2luZG93LndnVUxTKCfoh6rlrprkuYnnkIbnlLEnLCAn6Ieq6KiC55CG55SxJyksXG5cdFx0XHRnMTogJ0cxJyxcblx0XHRcdGcyOiAnRzInLFxuXHRcdFx0ZzM6ICdHMycsXG5cdFx0XHRnNDogJ0c0Jyxcblx0XHRcdGc1OiAnRzUnLFxuXHRcdFx0ZzY6ICdHNicsXG5cdFx0XHRnNzogJ0c3Jyxcblx0XHRcdGc4OiAnRzgnLFxuXHRcdFx0Zzk6ICdHOScsXG5cdFx0XHRhMTogJ0ExJyxcblx0XHRcdGEyOiAnQTInLFxuXHRcdFx0YTM6ICdBMycsXG5cdFx0XHRvMTogJ08xJyxcblx0XHRcdG8yOiAnTzInLFxuXHRcdFx0bzM6ICdPMycsXG5cdFx0XHRmMTogJ0YxJyxcblx0XHRcdGYyOiAnRjInLFxuXHRcdFx0ZjM6ICdGMycsXG5cdFx0XHRmNDogJ0Y0Jyxcblx0XHRcdGY1OiAnRjUnLFxuXHRcdFx0cjE6ICdSMScsXG5cdFx0XHRyMjogJ1IyJyxcblx0XHR9LFxuXHRcdGNzZENyaXRlcmlhTm90aWZpY2F0aW9uRGlzcGxheU9yZGVyOiBbXG5cdFx0XHQnZGInLFxuXHRcdFx0J2cxJyxcblx0XHRcdCdnMicsXG5cdFx0XHQnZzMnLFxuXHRcdFx0J2c0Jyxcblx0XHRcdCdnNScsXG5cdFx0XHQnZzYnLFxuXHRcdFx0J2c3Jyxcblx0XHRcdCdnOCcsXG5cdFx0XHQnZzknLFxuXHRcdFx0J2ExJyxcblx0XHRcdCdhMicsXG5cdFx0XHQnYTMnLFxuXHRcdFx0J28xJyxcblx0XHRcdCdvMicsXG5cdFx0XHQnbzMnLFxuXHRcdFx0J2YxJyxcblx0XHRcdCdmMicsXG5cdFx0XHQnZjMnLFxuXHRcdFx0J2Y0Jyxcblx0XHRcdCdmNScsXG5cdFx0XHQncjEnLFxuXHRcdFx0J3IyJyxcblx0XHRdLFxuXHRcdGNzZEFuZERJQ3JpdGVyaWE6IHtcblx0XHRcdGRiOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieeQhueUsScsICfoh6roqILnkIbnlLEnKSxcblx0XHRcdGcxOiAnRzEnLFxuXHRcdFx0ZzI6ICdHMicsXG5cdFx0XHRnMzogJ0czJyxcblx0XHRcdGc0OiAnRzQnLFxuXHRcdFx0ZzU6ICdHNScsXG5cdFx0XHRnNjogJ0c2Jyxcblx0XHRcdGc3OiAnRzcnLFxuXHRcdFx0Zzg6ICdHOCcsXG5cdFx0XHRnOTogJ0c5Jyxcblx0XHRcdGExOiAnQTEnLFxuXHRcdFx0YTI6ICdBMicsXG5cdFx0XHRhMzogJ0EzJyxcblx0XHRcdG8xOiAnTzEnLFxuXHRcdFx0bzI6ICdPMicsXG5cdFx0XHRvMzogJ08zJyxcblx0XHRcdGYxOiAnRjEnLFxuXHRcdFx0ZjI6ICdGMicsXG5cdFx0XHRmMzogJ0YzJyxcblx0XHRcdGY0OiAnRjQnLFxuXHRcdFx0ZjU6ICdGNScsXG5cdFx0XHRyMTogJ1IxJyxcblx0XHRcdHIyOiAnUjInLFxuXHRcdH0sXG5cdFx0Y3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlcjogW1xuXHRcdFx0J2RiJyxcblx0XHRcdCdnMScsXG5cdFx0XHQnZzInLFxuXHRcdFx0J2czJyxcblx0XHRcdCdnNCcsXG5cdFx0XHQnZzUnLFxuXHRcdFx0J2c2Jyxcblx0XHRcdCdnNycsXG5cdFx0XHQnZzgnLFxuXHRcdFx0J2c5Jyxcblx0XHRcdCdhMScsXG5cdFx0XHQnYTInLFxuXHRcdFx0J2EzJyxcblx0XHRcdCdvMScsXG5cdFx0XHQnbzInLFxuXHRcdFx0J28zJyxcblx0XHRcdCdmMScsXG5cdFx0XHQnZjInLFxuXHRcdFx0J2YzJyxcblx0XHRcdCdmNCcsXG5cdFx0XHQnZjUnLFxuXHRcdFx0J3IxJyxcblx0XHRcdCdyMicsXG5cdFx0XSxcblx0XHR4ZmRDcml0ZXJpYToge1xuXHRcdFx0ZGVsZXRlOiB3aW5kb3cud2dVTFMoJ+WIoOmZpCcsICfliKrpmaQnKSxcblx0XHRcdG1lcmdlOiB3aW5kb3cud2dVTFMoJ+WQiOW5ticsICflkIjkvbUnKSxcblx0XHRcdGZ3ZGNzZDogd2luZG93LndnVUxTKCfovazkuqToh6rlv6vpgJ/liKDpmaTlgJnpgIknLCAn6L2J5Lqk6Ieq5b+r6YCf5Yiq6Zmk5YCZ6YG4JyksXG5cdFx0XHRmYW1lOiB3aW5kb3cud2dVTFMoJ+aJuemHj+WFs+azqOW6puaPkOWIoCcsICfmibnmrKHpl5zms6jluqbmj5DliKonKSxcblx0XHRcdHN1YnN0dWI6IHdpbmRvdy53Z1VMUygn5om56YeP5bCP5bCP5L2c5ZOB5o+Q5YigJywgJ+aJueasoeWwj+Wwj+S9nOWTgeaPkOWIqicpLFxuXHRcdFx0YmF0Y2g6IHdpbmRvdy53Z1VMUygn5om56YeP5YW25LuW5o+Q5YigJywgJ+aJueasoeWFtuS7luaPkOWIqicpLFxuXHRcdH0sXG5cdFx0eGZkQ3JpdGVyaWFEaXNwbGF5T3JkZXI6IFsnZGVsZXRlJywgJ21lcmdlJywgJ2Z3ZGNzZCcsICdmYW1lJywgJ3N1YnN0dWInLCAnYmF0Y2gnXSxcblx0XHRuYW1lc3BhY2VzTm9TcGVjaWFsOiB7XG5cdFx0XHQwOiB3aW5kb3cud2dVTFMoJ++8iOadoeebru+8iScsICfvvIjmop3nm67vvIknKSxcblx0XHRcdDE6ICdUYWxrJyxcblx0XHRcdDI6ICdVc2VyJyxcblx0XHRcdDM6ICdVc2VyIHRhbGsnLFxuXHRcdFx0NDogJ1FpdXdlbicsXG5cdFx0XHQ1OiAnUWl1d2VuIHRhbGsnLFxuXHRcdFx0NjogJ0ZpbGUnLFxuXHRcdFx0NzogJ0ZpbGUgdGFsaycsXG5cdFx0XHQ4OiAnTWVkaWFXaWtpJyxcblx0XHRcdDk6ICdNZWRpYVdpa2kgdGFsaycsXG5cdFx0XHQxMDogJ1RlbXBsYXRlJyxcblx0XHRcdDExOiAnVGVtcGxhdGUgdGFsaycsXG5cdFx0XHQxMjogJ0hlbHAnLFxuXHRcdFx0MTM6ICdIZWxwIHRhbGsnLFxuXHRcdFx0MTQ6ICdDYXRlZ29yeScsXG5cdFx0XHQxNTogJ0NhdGVnb3J5IHRhbGsnLFxuXHRcdFx0MTE4OiAnRHJhZnQnLFxuXHRcdFx0MTE5OiAnRHJhZnQgdGFsaycsXG5cdFx0XHQyMDQ6ICdORUEnLFxuXHRcdFx0MjA1OiAnTkVBIHRhbGsnLFxuXHRcdFx0MjA2OiAnQWRkZW5kdW0nLFxuXHRcdFx0MjA3OiAnQWRkZW5kdW0gdGFsaycsXG5cdFx0XHQ4Mjg6ICdNb2R1bGUnLFxuXHRcdFx0ODI5OiAnTW9kdWxlIHRhbGsnLFxuXHRcdH0sXG5cdH07XG5cdC8qKlxuXHQgKiBTZWN0aW9uIGVudHJ5IGZvcm1hdDpcblx0ICpcblx0ICoge1xuXHQgKiAgIHRpdGxlOiA8aHVtYW4tcmVhZGFibGUgc2VjdGlvbiB0aXRsZT4sXG5cdCAqICAgbW9kdWxlOiA8bmFtZSBvZiB0aGUgYXNzb2NpYXRlZCBtb2R1bGUsIHVzZWQgdG8gbGluayB0byBzZWN0aW9ucz4sXG5cdCAqICAgYWRtaW5Pbmx5OiA8dHJ1ZSBmb3IgYWRtaW4tb25seSBzZWN0aW9ucz4sXG5cdCAqICAgaGlkZGVuOiA8dHJ1ZSBmb3IgYWR2YW5jZWQgcHJlZmVyZW5jZXMgdGhhdCByYXJlbHkgbmVlZCB0byBiZSBjaGFuZ2VkIC0gdGhleSBjYW4gc3RpbGwgYmUgbW9kaWZpZWQgYnkgbWFudWFsbHkgZWRpdGluZyB0d2lua2xlb3B0aW9ucy5qcz4sXG5cdCAqICAgcHJlZmVyZW5jZXM6IFtcblx0ICogICAgIHtcblx0ICogICAgICAgbmFtZTogPFR3aW5rbGVDb25maWcgcHJvcGVydHkgbmFtZT4sXG5cdCAqICAgICAgIGxhYmVsOiA8aHVtYW4tcmVhZGFibGUgc2hvcnQgZGVzY3JpcHRpb24gLSB1c2VkIGFzIGEgZm9ybSBsYWJlbD4sXG5cdCAqICAgICAgIGhlbHB0aXA6IDwob3B0aW9uYWwpIGh1bWFuLXJlYWRhYmxlIHRleHQgKHVzaW5nIHZhbGlkIEhUTUwpIHRoYXQgY29tcGxlbWVudHMgdGhlIGRlc2NyaXB0aW9uLCBsaWtlIGxpbWl0cywgd2FybmluZ3MsIGV0Yy4+XG5cdCAqICAgICAgIGFkbWluT25seTogPHRydWUgZm9yIGFkbWluLW9ubHkgcHJlZmVyZW5jZXM+LFxuXHQgKiAgICAgICB0eXBlOiA8c3RyaW5nfGJvb2xlYW58aW50ZWdlcnxlbnVtfHNldHxjdXN0b21MaXN0PiAoY3VzdG9tTGlzdCBzdG9yZXMgYW4gYXJyYXkgb2YgSlNPTiBvYmplY3RzIHsgdmFsdWUsIGxhYmVsIH0pLFxuXHQgKiAgICAgICBlbnVtVmFsdWVzOiA8Zm9yIHR5cGUgPSBcImVudW1cIjogYSBKU09OIG9iamVjdCB3aGVyZSB0aGUga2V5cyBhcmUgdGhlIGludGVybmFsIG5hbWVzIGFuZCB0aGUgdmFsdWVzIGFyZSBodW1hbi1yZWFkYWJsZSBzdHJpbmdzPixcblx0ICogICAgICAgc2V0VmFsdWVzOiA8Zm9yIHR5cGUgPSBcInNldFwiOiBhIEpTT04gb2JqZWN0IHdoZXJlIHRoZSBrZXlzIGFyZSB0aGUgaW50ZXJuYWwgbmFtZXMgYW5kIHRoZSB2YWx1ZXMgYXJlIGh1bWFuLXJlYWRhYmxlIHN0cmluZ3M+LFxuXHQgKiAgICAgICBzZXREaXNwbGF5T3JkZXI6IDwob3B0aW9uYWwpIGZvciB0eXBlID0gXCJzZXRcIjogYW4gYXJyYXkgY29udGFpbmluZyB0aGUga2V5cyBvZiBzZXRWYWx1ZXMgKGFzIHN0cmluZ3MpIGluIHRoZSBvcmRlciB0aGF0IHRoZXkgYXJlIGRpc3BsYXllZD4sXG5cdCAqICAgICAgIGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiA8Zm9yIHR5cGUgPSBcImN1c3RvbUxpc3RcIjogdGhlIGhlYWRpbmcgZm9yIHRoZSBsZWZ0IFwidmFsdWVcIiBjb2x1bW4gaW4gdGhlIGN1c3RvbSBsaXN0IGVkaXRvcj4sXG5cdCAqICAgICAgIGN1c3RvbUxpc3RMYWJlbFRpdGxlOiA8Zm9yIHR5cGUgPSBcImN1c3RvbUxpc3RcIjogdGhlIGhlYWRpbmcgZm9yIHRoZSByaWdodCBcImxhYmVsXCIgY29sdW1uIGluIHRoZSBjdXN0b20gbGlzdCBlZGl0b3I+XG5cdCAqICAgICB9LFxuXHQgKiAgICAgLiAuIC5cblx0ICogICBdXG5cdCAqIH0sXG5cdCAqIC4gLiAuXG5cdCAqXG5cdCAqL1xuXHRUd2lua2xlLmNvbmZpZy5zZWN0aW9ucyA9IFtcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCfluLjop4QnLCAn5bi46KaPJyksXG5cdFx0XHRtb2R1bGU6ICdnZW5lcmFsJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcudXNlclRhbGtQYWdlTW9kZSBtYXkgdGFrZSBhcmd1bWVudHM6XG5cdFx0XHRcdC8vICd3aW5kb3cnOiBvcGVuIGEgbmV3IHdpbmRvdywgcmVtZW1iZXIgdGhlIG9wZW5lZCB3aW5kb3dcblx0XHRcdFx0Ly8gJ3RhYic6IG9wZW5zIGluIGEgbmV3IHRhYiwgaWYgcG9zc2libGUuXG5cdFx0XHRcdC8vICdibGFuayc6IGZvcmNlIG9wZW4gaW4gYSBuZXcgd2luZG93LCBldmVuIGlmIHN1Y2ggYSB3aW5kb3cgZXhpc3RzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAndXNlclRhbGtQYWdlTW9kZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b2T6KaB5omT5byA55So5oi36K6o6K666aG15pe2JywgJ+eVtuimgeaJk+mWi+S9v+eUqOiAheiojuirlumggeaZgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHR3aW5kb3c6IHdpbmRvdy53Z1VMUygn5Zyo56qX5Y+j5Lit77yM5pu/5o2i5oiQ5YW25a6D55So5oi35a+56K+d6aG1JywgJ+WcqOeVtuWJjeWIhumgge+8jOabv+aPm+aIkOWFtuWug+eUqOaItuiojuirlumggScpLFxuXHRcdFx0XHRcdFx0dGFiOiB3aW5kb3cud2dVTFMoJ+WcqOaWsOagh+etvumhteS4rScsICflnKjmlrDliIbpoIHkuK0nKSxcblx0XHRcdFx0XHRcdGJsYW5rOiB3aW5kb3cud2dVTFMoJ+WcqOWFqOaWsOeahOeql+WPo+S4rScsICflnKjmlrDoppbnqpfkuK0nKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRpYWxvZ0xhcmdlRm9udCAoYm9vbGVhbilcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkaWFsb2dMYXJnZUZvbnQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WcqFR3aW5rbGXlr7nor53moYbkuK3kvb/nlKjlpKflj7flrZfkvZMnLCAn5ZyoVHdpbmtsZeWwjeipseaWueWhiuS4reS9v+eUqOWkp+iZn+Wtl+WeiycpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZS5jb25maWcuZGlzYWJsZWRNb2R1bGVzIChhcnJheSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkaXNhYmxlZE1vZHVsZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WFs+mXreaMh+WumueahFR3aW5rbGXmqKHlnZcnLCAn6Zec6ZaJ5oyH5a6a55qEVHdpbmtsZeaooee1hCcpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfmgqjlnKjmraTpgInmi6nnmoTlip/og73lsIbml6Dms5Xkvb/nlKjvvIzlj5bmtojpgInmi6nku6Xph43mlrDlkK/nlKjlip/og73jgIInLFxuXHRcdFx0XHRcdFx0J+aCqOWcqOatpOmBuOaTh+eahOWKn+iDveWwh+eEoeazleS9v+eUqO+8jOWPlua2iOmBuOaTh+S7pemHjeaWsOWVn+eUqOWKn+iDveOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdzZXQnLFxuXHRcdFx0XHRcdHNldFZhbHVlczoge1xuXHRcdFx0XHRcdFx0YXJ2OiB3aW5kb3cud2dVTFMoJ+WRiueKticsICflkYrni4AnKSxcblx0XHRcdFx0XHRcdHdhcm46ICforablkYonLFxuXHRcdFx0XHRcdFx0YmxvY2s6IHdpbmRvdy53Z1VMUygn5bCB56aBJywgJ+WwgemOlicpLFxuXHRcdFx0XHRcdFx0dGFsa2JhY2s6ICfpgJrlkYonLFxuXHRcdFx0XHRcdFx0c3BlZWR5OiB3aW5kb3cud2dVTFMoJ+mAn+WIoCcsICfpgJ/liKonKSxcblx0XHRcdFx0XHRcdGNvcHl2aW86IHdpbmRvdy53Z1VMUygn5L615p2DJywgJ+S+teasiicpLFxuXHRcdFx0XHRcdFx0eGZkOiB3aW5kb3cud2dVTFMoJ+aPkOWIoCcsICfmj5DliKonKSxcblx0XHRcdFx0XHRcdGltYWdlOiB3aW5kb3cud2dVTFMoJ+WbvuadgycsICflnJbmrIonKSxcblx0XHRcdFx0XHRcdHByb3RlY3Q6IHdpbmRvdy53Z1VMUygn5L+d5oqkJywgJ+S/neittycpLFxuXHRcdFx0XHRcdFx0dGFnOiB3aW5kb3cud2dVTFMoJ+agh+iusCcsICfmqJnoqJgnKSxcblx0XHRcdFx0XHRcdHN0dWI6ICflsI/kvZzlk4EnLFxuXHRcdFx0XHRcdFx0ZGlmZjogd2luZG93LndnVUxTKCflt67lvIInLCAn5beu55WwJyksXG5cdFx0XHRcdFx0XHR1bmxpbms6IHdpbmRvdy53Z1VMUygn6ZO+5YWlJywgJ+mAo+WFpScpLFxuXHRcdFx0XHRcdFx0Zmx1ZmY6ICflm57pgIAnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGUuY29uZmlnLmRpc2FibGVkU3lzb3BNb2R1bGVzIChhcnJheSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkaXNhYmxlZFN5c29wTW9kdWxlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5YWz6Zet5oyH5a6a55qEVHdpbmtsZeeuoeeQhuWRmOaooeWdlycsICfpl5zplonmjIflrprnmoRUd2lua2xl566h55CG5ZOh5qih57WEJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOWcqOatpOmAieaLqeeahOWKn+iDveWwhuaXoOazleS9v+eUqO+8jOWPlua2iOmAieaLqeS7pemHjeaWsOWQr+eUqOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Zyo5q2k6YG45pOH55qE5Yqf6IO95bCH54Sh5rOV5L2/55So77yM5Y+W5raI6YG45pOH5Lul6YeN5paw5ZWf55So5Yqf6IO944CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0YWRtaW5Pbmx5OiB0cnVlLFxuXHRcdFx0XHRcdHR5cGU6ICdzZXQnLFxuXHRcdFx0XHRcdHNldFZhbHVlczoge1xuXHRcdFx0XHRcdFx0YmF0Y2hkZWxldGU6IHdpbmRvdy53Z1VMUygn5om55YigJywgJ+aJueWIqicpLFxuXHRcdFx0XHRcdFx0YmF0Y2h1bmRlbGV0ZTogd2luZG93LndnVUxTKCfmibnlpI0nLCAn5om55b6pJyksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflkYrnirYnLCAn5ZGK54uAJyksXG5cdFx0XHRtb2R1bGU6ICdhcnYnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdzcGlXYXRjaFJlcG9ydCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+R6LW35YKA5YSh6LCD5p+l5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+eZvOi1t+WCgOWEoeiqv+afpeaZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflsIHnpoHnlKjmiLcnLCAn5bCB6Y6W5L2/55So6ICFJyksXG5cdFx0XHRtb2R1bGU6ICdibG9jaycsXG5cdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlZmF1bHRUb0Jsb2NrNjQgKGJvb2xlYW4pXG5cdFx0XHRcdC8vIFdoZXRoZXIgdG8gZGVmYXVsdCB0byBqdXN0IGJsb2NraW5nIHRoZSAvNjQgb24gb3Igb2ZmXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVmYXVsdFRvQmxvY2s2NCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5a+55LqOSVB2NuWcsOWdgO+8jOm7mOiupOmAieaLqeWwgeemgS82NOautScsICflsI3mlrxJUHY25Zyw5Z2A77yM6aCQ6Kit6YG45pOH5bCB6Y6WLzY05q61JyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlZmF1bHRUb1BhcnRpYWxCbG9ja3MgKGJvb2xlYW4pXG5cdFx0XHRcdC8vIFdoZXRoZXIgdG8gZGVmYXVsdCBwYXJ0aWFsIGJsb2NrcyBvbiBvciBvZmZcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdkZWZhdWx0VG9QYXJ0aWFsQmxvY2tzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmiZPlvIDlsIHnpoHoj5zljZXml7bpu5jorqTpgInmi6npg6jliIblsIHnpoEnLCAn5omT6ZaL5bCB6Y6W6YG45Zau5pmC6aCQ6Kit6YG45pOH6YOo5YiG5bCB6Y6WJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLndhdGNoQmxvY2tOb3RpY2VzIChzdHJpbmcpXG5cdFx0XHRcdC8vIFdhdGNobGlzdCBzZXR0aW5nIGZvciB0aGUgcGFnZSB3aGljaCBoYXMgYmVlbiBkaXNwYXRjaGVkIGFuIHdhcm5pbmcgb3Igbm90aWNlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hCbG9ja05vdGljZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Y+R6YCB5bCB56aB5qih5p2/5pe25Yqg5YWl55So5oi36K6o6K666aG15Yiw55uR6KeG5YiX6KGoJyxcblx0XHRcdFx0XHRcdCfnmbzpgIHlsIHpjpbmqKHmnb/mmYLliqDlhaXkvb/nlKjogIXoqI7oq5bpoIHliLDnm6PoppbmuIXllq4nXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tQmxvY2tSZWFzb25MaXN0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnlsIHnpoHnkIbnlLEnLCAn6Ieq6KiC5bCB6Y6W55CG55SxJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+aCqOWPr+S7peWKoOWFpeW4uOeUqOeahOWwgeemgeeQhueUseOAguiHquWumuS5ieeahOWwgeemgeeQhueUseS8muWHuueOsOWcqOS4gOiIrOeahOWwgeemgeeQhueUseS4i+aWueOAgicsXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5Yqg5YWl5bi455So55qE5bCB6Y6W55CG55Sx44CC6Ieq6KiC55qE5bCB6Y6W55CG55Sx5pyD5Ye654++5Zyo5LiA6Iis55qE5bCB6Y6W55CG55Sx5LiL5pa544CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2N1c3RvbUxpc3QnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5L2/55So5bCB56aB5qih5p2/77yI6buY6K6k5Li6IHV3LWJsb2NrMe+8iScsXG5cdFx0XHRcdFx0XHQn5L2/55So5bCB6Y6W5qih5p2/77yI6aCQ6Kit54K6IHV3LWJsb2NrMe+8iSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RMYWJlbFRpdGxlOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn4oCc55Sx5LqO4oCm5oKo5bey6KKr5bCB56aB4oCd5Y+K5bCB56aB5pel5b+X55CG55SxJyxcblx0XHRcdFx0XHRcdCfjgIznlLHmlrzigKbmgqjlt7LooqvlsIHpjpbjgI3lj4rlsIHpjpbml6XoqoznkIbnlLEnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflm77niYfliKDpmaQnLCAn5ZyW54mH5Yiq6ZmkJyksXG5cdFx0XHRtb2R1bGU6ICdpbWFnZScsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm5vdGlmeVVzZXJPbkRlbGkgKGJvb2xlYW4pXG5cdFx0XHRcdC8vIElmIHRoZSB1c2VyIHNob3VsZCBiZSBub3RpZmllZCBhZnRlciBwbGFjaW5nIGEgZmlsZSBkZWxldGlvbiB0YWdcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdub3RpZnlVc2VyT25EZWxpJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqTli77pgInigJzpgJrnn6XliJvlu7rogIXigJ0nLCAn6aCQ6Kit5Yu+6YG444CM6YCa55+l5bu656uL6ICF44CNJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlbGlXYXRjaFBhZ2UgKHN0cmluZylcblx0XHRcdFx0Ly8gVGhlIHdhdGNobGlzdCBzZXR0aW5nIG9mIHRoZSBwYWdlIHRhZ2dlZCBmb3IgZGVsZXRpb24uXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZGVsaVdhdGNoUGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5Zu+54mH5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+aomeiomOWclueJh+aZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5kZWxpV2F0Y2hVc2VyIChzdHJpbmcpXG5cdFx0XHRcdC8vIFRoZSB3YXRjaGxpc3Qgc2V0dGluZyBvZiB0aGUgdXNlciB0YWxrIHBhZ2UgaWYgYSBub3RpZmljYXRpb24gaXMgcGxhY2VkLlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RlbGlXYXRjaFVzZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOWbvueJh+aXtuWKoOWFpeWIm+W7uuiAheiuqOiuuumhteWIsOebkeinhuWIl+ihqCcsICfmqJnoqJjlnJbniYfmmYLliqDlhaXlu7rnq4vogIXoqI7oq5bpoIHliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5L+d5oqkJywgJ+S/neittycpLFxuXHRcdFx0bW9kdWxlOiAncHJvdGVjdCcsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoUmVxdWVzdGVkUGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+ivt+axguS/neaKpOmhtemdouaXtuWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfoq4vmsYLkv53orbfpoIHpnaLmmYLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hQUFRhZ2dlZFBhZ2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDkv53miqTmqKHmnb/ml7bliqDlhaXliLDnm5Hop4bliJfooagnLCAn5qiZ6KiY5L+d6K235qih5p2/5pmC5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoUHJvdGVjdGVkUGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S/neaKpOaXtuWKoOWFpeWIsOebkeinhuWIl+ihqCcsICfkv53orbfmmYLliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn6Iul5Zyo5L+d5oqk5ZCO5Lmf5qCH6K6w6aG16Z2i77yM5YiZ5L2/55So5qCH6K6w6aG16Z2i55qE5Y+C5pWw6K6+572u44CCJyxcblx0XHRcdFx0XHRcdCfoi6XlnKjkv53orbflvozkuZ/mqJnoqJjpoIHpnaLvvIzliYfkvb/nlKjmqJnoqJjpoIHpnaLnmoTlgY/lpb3oqK3lrprjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiAn5Zue6YCAJyxcblx0XHRcdC8vIHR3aW5rbGVmbHVmZiBtb2R1bGVcblx0XHRcdG1vZHVsZTogJ2ZsdWZmJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuYXV0b01lbnVBZnRlclJvbGxiYWNrIChib29sKVxuXHRcdFx0XHQvLyBPcHRpb24gdG8gYXV0b21hdGljYWxseSBvcGVuIHRoZSB3YXJuaW5nIG1lbnUgaWYgdGhlIHVzZXIgdGFsayBwYWdlIGlzIG9wZW5lZCBwb3N0LXJldmVyc2lvblxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2F1dG9NZW51QWZ0ZXJSb2xsYmFjaycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKhUd2lua2xl5Zue6YCA5ZCO6Ieq5Yqo5omT5byA55So5oi36K6o6K666aG15LiK55qEVHdpbmtsZeitpuWRiuiPnOWNlScsXG5cdFx0XHRcdFx0XHQn5ZyoVHdpbmtsZeWbnumAgOW+jOiHquWLleaJk+mWi+S9v+eUqOiAheiojuirlumggeS4iueahFR3aW5rbGXorablkYrpgbjllq4nXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+S7heWcqOmAieWPluS4i+aWueWvueW6lOahhuaXtuaJjeaJp+ihjCcsICflg4XlnKjpgbjlj5bkuIvmlrnlsI3mh4nmoYbmmYLmiY3ln7fooYwnKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcub3BlblRhbGtQYWdlIChhcnJheSlcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIHJlc3VsdCBpbiBvcGVuaW5nIG9mIHRhbGsgcGFnZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ29wZW5UYWxrUGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo6L+Z5Lqb57G75Z6L55qE5Zue6YCA5ZCO5omT5byA55So5oi36K6o6K666aG1JywgJ+WcqOmAmeS6m+mhnuWIpeeahOWbnumAgOW+jOaJk+mWi+S9v+eUqOiAheiojuirlumggScpLFxuXHRcdFx0XHRcdHR5cGU6ICdzZXQnLFxuXHRcdFx0XHRcdHNldFZhbHVlczoge1xuXHRcdFx0XHRcdFx0bm9ybTogd2luZG93LndnVUxTKCfluLjop4Tlm57pgIAnLCAn5bi46KaP5Zue6YCAJyksXG5cdFx0XHRcdFx0XHR2YW5kOiB3aW5kb3cud2dVTFMoJ+egtOWdj+WbnumAgCcsICfnoLTlo57lm57pgIAnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm9wZW5UYWxrUGFnZU9uQXV0b1JldmVydCAoYm9vbClcblx0XHRcdFx0Ly8gRGVmaW5lcyBpZiB0YWxrIHBhZ2Ugc2hvdWxkIGJlIG9wZW5lZCB3aGVuIGNhbGxpbmcgcmV2ZXJ0IGZyb20gY29udHJpYnMgb3IgcmVjZW50IGNoYW5nZXMgcGFnZXMuIElmIHNldCB0byB0cnVlLCBvcGVuVGFsa1BhZ2UgZGVmaW5lcyB0aGVuIGlmIHRhbGsgcGFnZSB3aWxsIGJlIG9wZW5lZC5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdvcGVuVGFsa1BhZ2VPbkF1dG9SZXZlcnQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo5LuO55So5oi36LSh54yu5Y+K5pyA6L+R5pu05pS55Lit5Y+R6LW35Zue6YCA5pe25omT5byA55So5oi36K6o6K666aG1Jyxcblx0XHRcdFx0XHRcdCflnKjlvp7kvb/nlKjogIXosqLnjbvlj4rov5HmnJ/orormm7TkuK3nmbzotbflm57pgIDmmYLmiZPplovkvb/nlKjogIXoqI7oq5bpoIEnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+W9k+Wug+aJk+W8gOaXtu+8jOS+nei1luS4iuS4gOS4quiuvue9ruOAgicsICfnlbblroPmiZPplovmmYLvvIzkvp3os7TkuIrkuIDlgIvoqK3lrprjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcucm9sbGJhY2tJblBsYWNlIChib29sKVxuXHRcdFx0XHQvL1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3JvbGxiYWNrSW5QbGFjZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflnKjku47nlKjmiLfotKHnjK7lj4rmnIDov5Hmm7TmlLnkuK3lj5Hotbflm57pgIDml7bkuI3liLfmlrDpobXpnaInLFxuXHRcdFx0XHRcdFx0J+WcqOW+nuS9v+eUqOiAheiyoueNu+WPiui/keacn+iuiuabtOS4reeZvOi1t+WbnumAgOaZguS4jemHjeaWsOaVtOeQhumggemdoidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflvZPlroPmiZPlvIDml7bvvIxUd2lua2xl5bCG5LiN5Lya5Zyo5LuO55So5oi36LSh54yu5Y+K5pyA6L+R5pu05pS55Lit5Y+R6LW35Zue6YCA5pe25Yi35paw6aG16Z2i77yM5YWB6K645oKo5LiA5qyh5oCn5Zue6YCA5aSa5Liq57yW6L6R44CCJyxcblx0XHRcdFx0XHRcdCfnlbblroPmiZPplovmmYLvvIxUd2lua2xl5bCH5LiN5pyD5Zyo5b6e5L2/55So6ICF6LKi54275Y+K6L+R5pyf6K6K5pu05Lit55m86LW35Zue6YCA5pmC6YeN5paw5pW055CG6aCB6Z2i77yM5YWB6Kix5oKo5LiA5qyh5oCn5Zue6YCA5aSa5YCL57eo6Lyv44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm1hcmtSZXZlcnRlZFBhZ2VzQXNNaW5vciAoYXJyYXkpXG5cdFx0XHRcdC8vIFdoYXQgdHlwZXMgb2YgYWN0aW9ucyB0aGF0IHNob3VsZCByZXN1bHQgaW4gbWFya2luZyBlZGl0IGFzIG1pbm9yXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFya1JldmVydGVkUGFnZXNBc01pbm9yJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIbov5nkupvnsbvlnovnmoTlm57pgIDmoIforrDkuLrlsI/kv67mlLknLCAn5bCH6YCZ5Lqb6aGe5Yil55qE5Zue6YCA5qiZ6KiY54K65bCP5L+u5pS5JyksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRub3JtOiB3aW5kb3cud2dVTFMoJ+W4uOinhOWbnumAgCcsICfluLjopo/lm57pgIAnKSxcblx0XHRcdFx0XHRcdHZhbmQ6IHdpbmRvdy53Z1VMUygn56C05Z2P5Zue6YCAJywgJ+egtOWjnuWbnumAgCcpLFxuXHRcdFx0XHRcdFx0dG9yZXY6IHdpbmRvdy53Z1VMUygn4oCc5oGi5aSN5q2k54mI5pys4oCdJywgJ+OAjOaBouW+qeatpOeJiOacrOOAjScpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hSZXZlcnRlZFBhZ2VzIChhcnJheSlcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIHJlc3VsdCBpbiBmb3JjZWQgYWRkaXRpb24gdG8gd2F0Y2hsaXN0XG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hSZXZlcnRlZFBhZ2VzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmiorov5nkupvnsbvlnovnmoTlm57pgIDliqDlhaXliLDnm5Hop4bliJfooagnLCAn5oqK6YCZ5Lqb6aGe5Yil55qE5Zue6YCA5Yqg5YWl5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRub3JtOiB3aW5kb3cud2dVTFMoJ+W4uOinhOWbnumAgCcsICfluLjopo/lm57pgIAnKSxcblx0XHRcdFx0XHRcdHZhbmQ6IHdpbmRvdy53Z1VMUygn56C05Z2P5Zue6YCAJywgJ+egtOWjnuWbnumAgCcpLFxuXHRcdFx0XHRcdFx0dG9yZXY6IHdpbmRvdy53Z1VMUygn4oCc5oGi5aSN5q2k54mI5pys4oCdJywgJ+OAjOaBouW+qeatpOeJiOacrOOAjScpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcud2F0Y2hSZXZlcnRlZEV4cGlyeVxuXHRcdFx0XHQvLyBJZiBhbnkgb2YgdGhlIGFib3ZlIGl0ZW1zIGFyZSBzZWxlY3RlZCwgd2hldGhlciB0byBleHBpcmUgdGhlIHdhdGNoXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hSZXZlcnRlZEV4cGlyeScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b2T5Zue6YCA6aG16Z2i5pe277yM5Yqg5YWl5Yiw55uR6KeG5YiX6KGo55qE5pyf6ZmQJywgJ+eVtuWbnumAgOmggemdouaZgu+8jOWKoOWFpeWIsOebo+imlua4heWWrueahOacn+mZkCcpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5vZmZlclJlYXNvbk9uTm9ybWFsUmV2ZXJ0IChib29sZWFuKVxuXHRcdFx0XHQvLyBJZiB0byBvZmZlciBhIHByb21wdCBmb3IgZXh0cmEgc3VtbWFyeSByZWFzb24gZm9yIG5vcm1hbCByZXZlcnRzLCBkZWZhdWx0IHRvIHRydWVcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdvZmZlclJlYXNvbk9uTm9ybWFsUmV2ZXJ0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfluLjop4Tlm57pgIDml7bor6Lpl67nkIbnlLEnLCAn5bi46KaP5Zue6YCA5pmC6Kmi5ZWP55CG55SxJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfigJzluLjop4TigJ3lm57pgIDmmK/kuK3pl7TnmoTpgqPkuKpb5Zue6YCAXemTvuaOpeOAgicsICfjgIzluLjopo/jgI3lm57pgIDmmK/kuK3plpPnmoTpgqPlgItb5Zue6YCAXemAo+e1kOOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjb25maXJtT25GbHVmZicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zue6YCA5YmN6KaB5rGC56Gu6K6k77yI5omA5pyJ6K6+5aSH77yJJywgJ+WbnumAgOWJjeimgeaxgueiuuiqje+8iOaJgOacieijnee9ru+8iScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflr7nkuo7kvb/nlKjnp7vliqjorr7lpIfnmoTnlKjmiLfvvIzmiJbogIXmhI/lv5fkuI3lnZrlrprnmoTjgIInLFxuXHRcdFx0XHRcdFx0J+WwjeaWvOS9v+eUqOihjOWLleijnee9rueahOS9v+eUqOiAhe+8jOaIluiAheaEj+W/l+S4jeWgheWumueahOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5zaG93Um9sbGJhY2tMaW5rcyAoYXJyYXkpXG5cdFx0XHRcdC8vIFdoZXJlIFR3aW5rbGUgc2hvdWxkIHNob3cgcm9sbGJhY2sgbGlua3M6XG5cdFx0XHRcdC8vIGRpZmYsIG90aGVycywgbWluZSwgY29udHJpYnMsIGhpc3RvcnksIHJlY2VudFxuXHRcdFx0XHQvLyBOb3RlIGZyb20gVFRPOiB8Y29udHJpYnN8IHNlZW1zIHRvIGJlIGVxdWFsIHRvIHxvdGhlcnN8ICsgfG1pbmV8LCBpLmUuIHJlZHVuZGFudCwgc28gSSBsZWZ0IGl0IG91dCBoZXJlc1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3Nob3dSb2xsYmFja0xpbmtzJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjov5nkupvpobXpnaLkuIrmmL7npLrlm57pgIDpk77mjqUnLCAn5Zyo6YCZ5Lqb6aCB6Z2i5LiK6aGv56S65Zue6YCA6YCj57WQJyksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRkaWZmOiB3aW5kb3cud2dVTFMoJ+W3ruW8gicsICflt67nlbAnKSxcblx0XHRcdFx0XHRcdGhpc3Rvcnk6IHdpbmRvdy53Z1VMUygn5Y6G5Y+y6K6w5b2VJywgJ+att+WPsuiomOmMhCcpLFxuXHRcdFx0XHRcdFx0b3RoZXJzOiB3aW5kb3cud2dVTFMoJ+WFtuWug+eUqOaIt+eahOi0oeeMricsICflhbblroPkvb/nlKjogIXnmoTosqLnjbsnKSxcblx0XHRcdFx0XHRcdG1pbmU6IHdpbmRvdy53Z1VMUygn5oiR55qE6LSh54yuJywgJ+aIkeeahOiyoueNuycpLFxuXHRcdFx0XHRcdFx0cmVjZW50Y2hhbmdlczogd2luZG93LndnVUxTKCfmnIDov5Hmm7TmlLknLCAn6L+R5pyf6K6K5pu0JyksXG5cdFx0XHRcdFx0XHRyZWNlbnRjaGFuZ2VzbGlua2VkOiB3aW5kb3cud2dVTFMoJ+ebuOWFs+abtOaUuScsICfnm7jpl5zorormm7QnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2N1c3RvbVJldmVydFN1bW1hcnknLFxuXHRcdFx0XHRcdGxhYmVsOiAn5Zue6YCA55CG55SxJyxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Zyo5p+l55yL5beu5byC5pe25Y+v6YCJ77yM5LuF5ZaE5oSP5Zue6YCA44CB5bi46KeE5Zue6YCA44CB5oGi5aSN5q2k54mI5pysJyxcblx0XHRcdFx0XHRcdCflnKjmqqLoppblt67nlbDmmYLlj6/pgbjvvIzlg4XlloTmhI/lm57pgIDjgIHluLjopo/lm57pgIDjgIHmgaLlvqnmraTniYjmnKwnXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6ICfnkIbnlLEnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RMYWJlbFRpdGxlOiB3aW5kb3cud2dVTFMoJ+aYvuekuueahOaWh+WtlycsICfpoa/npLrnmoTmloflrZcnKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaQnLCAn5b+r6YCf5Yiq6ZmkJyksXG5cdFx0XHRtb2R1bGU6ICdzcGVlZHknLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdzcGVlZHlTZWxlY3Rpb25TdHlsZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5LuA5LmI5pe25YCZ5omn6KGM5qCH6K6w5oiW5Yig6ZmkJywgJ+S7gOm6vOaZguWAmeWft+ihjOaomeiomOaIluWIqumZpCcpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRidXR0b25DbGljazogd2luZG93LndnVUxTKCflvZPmiJHngrnigJzmj5DkuqTigJ3ml7YnLCAn55W25oiR6bue44CM5o+Q5Lqk44CN5pmCJyksXG5cdFx0XHRcdFx0XHRyYWRpb0NsaWNrOiB3aW5kb3cud2dVTFMoJ+W9k+aIkeeCueS4gOS4qumAiemhueaXticsICfnlbbmiJHpu57kuIDlgIvpgbjpoIXmmYInKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLndhdGNoU3BlZWR5UGFnZXMgKGFycmF5KVxuXHRcdFx0XHQvLyBXaGV0aGVyIHRvIGFkZCBzcGVlZHkgdGFnZ2VkIHBhZ2VzIHRvIHdhdGNobGlzdFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3dhdGNoU3BlZWR5UGFnZXMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WwhuS7peS4i+eQhueUseWKoOWFpeWIsOebkeinhuWIl+ihqCcsICflsIfku6XkuIvnkIbnlLHliqDlhaXliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnc2V0Jyxcblx0XHRcdFx0XHRzZXRWYWx1ZXM6IFR3aW5rbGUuY29uZmlnLmNvbW1vblNldHMuY3NkQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZENyaXRlcmlhRGlzcGxheU9yZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLndhdGNoU3BlZWR5RXhwaXJ5XG5cdFx0XHRcdC8vIElmIGFueSBvZiB0aGUgYWJvdmUgaXRlbXMgYXJlIHNlbGVjdGVkLCB3aGV0aGVyIHRvIGV4cGlyZSB0aGUgd2F0Y2hcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFNwZWVkeUV4cGlyeScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5b2T5qCH6K6w6aG16Z2i5pe277yM5Yqg5YWl5Yiw55uR6KeG5YiX6KGo55qE5pyf6ZmQJywgJ+eVtuaomeiomOmggemdouaZgu+8jOWKoOWFpeWIsOebo+imlua4heWWrueahOacn+mZkCcpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5tYXJrU3BlZWR5UGFnZXNBc1BhdHJvbGxlZCAoYm9vbGVhbilcblx0XHRcdFx0Ly8gSWYsIHdoZW4gYXBwbHlpbmcgc3BlZWR5IHRlbXBsYXRlIHRvIHBhZ2UsIHRvIG1hcmsgdGhlIHBhZ2UgYXMgcGF0cm9sbGVkIChpZiB0aGUgcGFnZSB3YXMgcmVhY2hlZCBmcm9tIE5ld1BhZ2VzKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21hcmtTcGVlZHlQYWdlc0FzUGF0cm9sbGVkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDml7bmoIforrDpobXpnaLkuLrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknLCAn5qiZ6KiY5pmC5qiZ6KiY6aCB6Z2i54K65bey5beh5p+l77yI5aaC5Y+v6IO977yJJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm5vdGlmeVVzZXJPblNwZWVkeURlbGV0aW9uTm9taW5hdGlvbiAoYXJyYXkpXG5cdFx0XHRcdC8vIFdoYXQgdHlwZXMgb2YgYWN0aW9ucyBzaG91bGQgcmVzdWx0IHRoYXQgdGhlIGF1dGhvciBvZiB0aGUgcGFnZSBiZWluZyBub3RpZmllZCBvZiBub21pbmF0aW9uXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbm90aWZ5VXNlck9uU3BlZWR5RGVsZXRpb25Ob21pbmF0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfku4XlnKjkvb/nlKjku6XkuIvnkIbnlLHml7bpgJrnn6XpobXpnaLliJvlu7rogIUnLCAn5YOF5Zyo5L2/55So5Lul5LiL55CG55Sx5pmC6YCa55+l6aCB6Z2i5bu656uL6ICFJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WwveeuoeaCqOWcqOWvueivneahhuS4remAieaLqemAmuefpe+8jOmAmuefpeS7jeWPquS8muWcqOS9v+eUqOi/meS6m+eQhueUseaXtuWPkeWHuuOAgicsXG5cdFx0XHRcdFx0XHQn5YSY566h5oKo5Zyo5bCN6Kmx5pa55aGK5Lit6YG45pOH6YCa55+l77yM6YCa55+l5LuN5Y+q5pyD5Zyo5L2/55So6YCZ5Lqb55CG55Sx5pmC55m85Ye644CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZENyaXRlcmlhTm90aWZpY2F0aW9uLFxuXHRcdFx0XHRcdHNldERpc3BsYXlPcmRlcjogVHdpbmtsZS5jb25maWcuY29tbW9uU2V0cy5jc2RDcml0ZXJpYU5vdGlmaWNhdGlvbkRpc3BsYXlPcmRlcixcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5wcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnkgKGFycmF5IG9mIHN0cmluZ3MpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncHJvbXB0Rm9yU3BlZWR5RGVsZXRpb25TdW1tYXJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfkvb/nlKjku6XkuIvnkIbnlLHliKDpmaTml7blhYHorrjnvJbovpHliKDpmaTnkIbnlLEnLCAn5L2/55So5Lul5LiL55CG55Sx5Yiq6Zmk5pmC5YWB6Kix57eo6Lyv5Yiq6Zmk55CG55SxJyksXG5cdFx0XHRcdFx0YWRtaW5Pbmx5OiB0cnVlLFxuXHRcdFx0XHRcdHR5cGU6ICdzZXQnLFxuXHRcdFx0XHRcdHNldFZhbHVlczogVHdpbmtsZS5jb25maWcuY29tbW9uU2V0cy5jc2RBbmRESUNyaXRlcmlhLFxuXHRcdFx0XHRcdHNldERpc3BsYXlPcmRlcjogVHdpbmtsZS5jb25maWcuY29tbW9uU2V0cy5jc2RBbmRESUNyaXRlcmlhRGlzcGxheU9yZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLm9wZW5Vc2VyVGFsa1BhZ2VPblNwZWVkeURlbGV0ZSAoYXJyYXkgb2Ygc3RyaW5ncylcblx0XHRcdFx0Ly8gV2hhdCB0eXBlcyBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIHJlc3VsdCB1c2VyIHRhbGsgcGFnZSB0byBiZSBvcGVuZWQgd2hlbiBzcGVlZGlseSBkZWxldGluZyAoYWRtaW4gb25seSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdvcGVuVXNlclRhbGtQYWdlT25TcGVlZHlEZWxldGUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S9v+eUqOS7peS4i+eQhueUseaXtuaJk+W8gOeUqOaIt+iuqOiuuumhtScsICfkvb/nlKjku6XkuIvnkIbnlLHmmYLmiZPplovkvb/nlKjogIXoqI7oq5bpoIEnKSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWFEaXNwbGF5T3JkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuZGVsZXRlVGFsa1BhZ2VPbkRlbGV0ZSAoYm9vbGVhbilcblx0XHRcdFx0Ly8gSWYgdGFsayBwYWdlIGlmIGV4aXN0cyBzaG91bGQgYWxzbyBiZSBkZWxldGVkIChDU0QgRzgpIHdoZW4gc3BlZHlpbmcgYSBwYWdlIChhZG1pbiBvbmx5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZVRhbGtQYWdlT25EZWxldGUnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWLvumAieKAnOWIoOmZpOiuqOiuuumhteKAnScsICfpoJDoqK3li77pgbjjgIzliKrpmaToqI7oq5bpoIHjgI0nKSxcblx0XHRcdFx0XHRhZG1pbk9ubHk6IHRydWUsXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZVJlZGlyZWN0c09uRGVsZXRlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqTli77pgInigJzliKDpmaTph43lrprlkJHigJ0nLCAn6aCQ6Kit5Yu+6YG444CM5Yiq6Zmk6YeN5paw5bCO5ZCR44CNJyksXG5cdFx0XHRcdFx0YWRtaW5Pbmx5OiB0cnVlLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5kZWxldGVTeXNvcERlZmF1bHRUb0RlbGV0ZSAoYm9vbGVhbilcblx0XHRcdFx0Ly8gTWFrZSB0aGUgQ1NEIHNjcmVlbiBkZWZhdWx0IHRvIFwiZGVsZXRlXCIgaW5zdGVhZCBvZiBcInRhZ1wiIChhZG1pbiBvbmx5KVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZVN5c29wRGVmYXVsdFRvRGVsZXRlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqTkuLrnm7TmjqXliKDpmaTogIzkuI3mmK/moIforrAnLCAn6aCQ6Kit54K655u05o6l5Yiq6Zmk6ICM5LiN5piv5qiZ6KiYJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+iLpeW3suaUvue9ruW/q+mAn+WIoOmZpOagh+iusO+8jOWImeawuOi/nOm7mOiupOS4uuWIoOmZpOaooeW8j+OAgicsXG5cdFx0XHRcdFx0XHQn6Iul5bey5pS+572u5b+r6YCf5Yiq6Zmk5qiZ6KiY77yM5YmH5rC46YGg6aCQ6Kit54K65Yiq6Zmk5qih5byP44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0YWRtaW5Pbmx5OiB0cnVlLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5zcGVlZHlXaW5kb3dXaWR0aCAoaW50ZWdlcilcblx0XHRcdFx0Ly8gRGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIFR3aW5rbGUgU0Qgd2luZG93IGluIHBpeGVsc1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3NwZWVkeVdpbmRvd1dpZHRoJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTlr7nor53moYblrr3luqbvvIjlg4/ntKDvvIknLCAn5b+r6YCf5Yiq6Zmk5bCN6Kmx5pa55aGK5a+s5bqm77yI5YOP57Sg77yJJyksXG5cdFx0XHRcdFx0dHlwZTogJ2ludGVnZXInLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnNwZWVkeVdpbmRvd1dpZHRoIChpbnRlZ2VyKVxuXHRcdFx0XHQvLyBEZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgVHdpbmtsZSBTRCB3aW5kb3cgaW4gcGl4ZWxzXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc3BlZWR5V2luZG93SGVpZ2h0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflv6vpgJ/liKDpmaTlr7nor53moYbpq5jluqbvvIjlg4/ntKDvvIknLCAn5b+r6YCf5Yiq6Zmk5bCN6Kmx5pa55aGK6auY5bqm77yI5YOP57Sg77yJJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+iLpeaCqOacieS4gOWPsOW+iOWkp+eahOaYvuekuuWZqO+8jOaCqOWPr+S7peWwhuatpOiwg+mrmOOAgicsXG5cdFx0XHRcdFx0XHQn6Iul5oKo5pyJ5LiA5Y+w5b6I5aSn55qE6aGv56S65Zmo77yM5oKo5Y+v5Lul5bCH5q2k6Kq/6auY44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2ludGVnZXInLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2xvZ1NwZWVkeU5vbWluYXRpb25zJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjnlKjmiLfnqbrpl7TkuK3orrDlvZXmiYDmnInlv6vpgJ/liKDpmaTmj5DlkI0nLCAn5Zyo5L2/55So6ICF56m66ZaT5Lit6KiY6YyE5omA5pyJ5b+r6YCf5Yiq6Zmk5o+Q5ZCNJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+mdnueuoeeQhuWRmOaXoOazleiuv+mXruWIsOW3suWIoOmZpOeahOi0oeeMru+8jOeUqOaIt+epuumXtOaXpeW/l+aPkOS+m+S6huS4gOS4quW+iOWlveeahOaWueazleadpeiusOW9lei/meS6m+WOhuWPsuOAgicsXG5cdFx0XHRcdFx0XHQn6Z2e566h55CG5ZOh54Sh5rOV5a2Y5Y+W5Yiw5bey5Yiq6Zmk55qE6LKi542777yM5L2/55So6ICF56m66ZaT5pel6KqM5o+Q5L6b5LqG5LiA5YCL5b6I5aW955qE5pa55rOV5L6G6KiY6YyE6YCZ5Lqb5q235Y+y44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3NwZWVkeUxvZ1BhZ2VOYW1lJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjmraTpobXkv53nlZnml6Xlv5cnLCAn5Zyo5q2k6aCB5L+d55WZ5pel6KqMJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqOatpOahhuS4rei+k+WFpeWtkOmhtemdouWQjeensO+8jOaCqOWwhuWcqFVzZXI6PGk+55So5oi35ZCNPC9pPi88aT7lrZDpobXpnaI8L2k+5om+5YiwQ1NE5pel5b+X44CC5LuF5Zyo5ZCv55So5pel5b+X5pe25bel5L2c44CCJyxcblx0XHRcdFx0XHRcdCflnKjmraTmoYbkuK3ovLjlhaXlrZDpoIHpnaLlkI3nqLHvvIzmgqjlsIflnKhVc2VyOjxpPuS9v+eUqOiAheWQjeeosTwvaT4vPGk+5a2Q6aCB6Z2iPC9pPuaJvuWIsENTROaXpeiqjOOAguWDheWcqOWVn+eUqOaXpeiqjOaZguW3peS9nOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ25vTG9nT25TcGVlZHlOb21pbmF0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjkvb/nlKjku6XkuIvnkIbnlLHml7bkuI3lgZrorrDlvZUnLCAn5Zyo5L2/55So5Lul5LiL55CG55Sx5pmC5LiN5YGa6KiY6YyEJyksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWEsXG5cdFx0XHRcdFx0c2V0RGlzcGxheU9yZGVyOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLmNzZEFuZERJQ3JpdGVyaWFEaXNwbGF5T3JkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnZW5sYXJnZUc3SW5wdXQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+aJqeWkp0NTRCBHN+eahOaMiemSricsICfmk7TlpKdDU0QgRzfnmoTmjInpiJUnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+aJqeS4uum7mOiupOeahOS4pOWAjeWkp+OAgicsICfmk7TngrrpoJDoqK3nmoTlhanlgI3lpKfjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5qCH6K6wJywgJ+aomeiomCcpLFxuXHRcdFx0bW9kdWxlOiAndGFnJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hUYWdnZWRQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+aomeiomOaZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaE1lcmdlRGlzY3Vzc2lvbnMnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeWQiOW5tuiuqOiuuuaXtuebkeinhuiuqOiuuumhtScsICfliqDlhaXlkIjkvbXoqI7oq5bmmYLnm6PoppboqI7oq5bpoIEnKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFya1RhZ2dlZFBhZ2VzQXNNaW5vcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5qCH6K6w5qCH6K6w5Li65bCP5L+u5pS5JywgJ+Wwh+aomeiomOaomeiomOeCuuWwj+S/ruaUuScpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrVGFnZ2VkUGFnZXNBc1BhdHJvbGxlZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6buY6K6k5Yu+6YCJ4oCc5qCH6K6w6aG16Z2i5Li65bey5beh5p+l4oCd5qGGJywgJ+mgkOioreWLvumBuOOAjOaomeiomOmggemdoueCuuW3suW3oeafpeOAjeahhicpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdncm91cEJ5RGVmYXVsdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfpu5jorqTli77pgInigJzlkIjlubbliLB7e211bHRpcGxlIGlzc3Vlc3194oCd5aSN6YCJ5qGGJyxcblx0XHRcdFx0XHRcdCfpoJDoqK3li77pgbjjgIzlkIjkvbXliLB7e211bHRpcGxlIGlzc3Vlc31944CN5qC45Y+W5pa55aGKJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3RhZ0FydGljbGVTb3J0T3JkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+adoeebruagh+iusOeahOm7mOiupOafpeeci+aWueW8jycsICfmop3nm67mqJnoqJjnmoTpoJDoqK3mqqLoppbmlrnlvI8nKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczoge1xuXHRcdFx0XHRcdFx0Y2F0OiB3aW5kb3cud2dVTFMoJ+aMieexu+WeiycsICfmjInpoZ7liKUnKSxcblx0XHRcdFx0XHRcdGFscGhhOiAn5oyJ5a2X5q+NJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2N1c3RvbVRhZ0xpc3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieadoeebrue7tOaKpOagh+iusCcsICfoh6roqILmop3nm67ntq3orbfmqJnoqJgnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+i/meS6m+S8muWHuueOsOWcqOWIl+ihqOeahOacq+WwvuOAgicsICfpgJnkupvmnIPlh7rnj77lnKjliJfooajnmoTmnKvlsL7jgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6IHdpbmRvdy53Z1VMUygn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous5Y+377yJJywgJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOiZn++8iScpLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RMYWJlbFRpdGxlOiB3aW5kb3cud2dVTFMoJ+aYvuekuueahOaWh+WtlycsICfpoa/npLrnmoTmloflrZcnKSxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjdXN0b21GaWxlVGFnTGlzdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5paH5Lu257u05oqk5qCH6K6wJywgJ+iHquioguaqlOahiOe2reitt+aomeiomCcpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn6L+Z5Lqb5Lya5Ye6546w5Zyo5YiX6KGo55qE5pyr5bC+44CCJywgJ+mAmeS6m+acg+WHuuePvuWcqOWIl+ihqOeahOacq+WwvuOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogd2luZG93LndnVUxTKCfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zlj7fvvIknLCAn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous6Jmf77yJJyksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2XJywgJ+mhr+ekuueahOaWh+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2N1c3RvbVJlZGlyZWN0VGFnTGlzdCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ6YeN5a6a5ZCR57u05oqk5qCH6K6wJywgJ+iHquiogumHjeaWsOWwjuWQkee2reitt+aomeiomCcpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUygn6L+Z5Lqb5Lya5Ye6546w5Zyo5YiX6KGo55qE5pyr5bC+44CCJywgJ+mAmeS6m+acg+WHuuePvuWcqOWIl+ihqOeahOacq+WwvuOAgicpLFxuXHRcdFx0XHRcdHR5cGU6ICdjdXN0b21MaXN0Jyxcblx0XHRcdFx0XHRjdXN0b21MaXN0VmFsdWVUaXRsZTogd2luZG93LndnVUxTKCfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zlj7fvvIknLCAn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous6Jmf77yJJyksXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdExhYmVsVGl0bGU6IHdpbmRvdy53Z1VMUygn5pi+56S655qE5paH5a2XJywgJ+mhr+ekuueahOaWh+WtlycpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdHRpdGxlOiAn5bCP5L2c5ZOBJyxcblx0XHRcdG1vZHVsZTogJ3N0dWInLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd3YXRjaFN0dWJiZWRQYWdlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5qCH6K6w5pe25Yqg5YWl5Yiw55uR6KeG5YiX6KGoJywgJ+aomeiomOaZguWKoOWFpeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrU3R1YmJlZFBhZ2VzQXNNaW5vcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5bCP5L2c5ZOB5qCH6K6w5Li65bCP5L+u5pS5JywgJ+Wwh+Wwj+S9nOWTgeaomeiomOeCuuWwj+S/ruaUuScpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrU3R1YmJlZFBhZ2VzQXNQYXRyb2xsZWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWLvumAieKAnOagh+iusOmhtemdouS4uuW3suW3oeafpeKAneahhicsICfpoJDoqK3li77pgbjjgIzmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6XjgI3moYYnKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnc3R1YkFydGljbGVTb3J0T3JkZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+adoeebruWwj+S9nOWTgeeahOm7mOiupOafpeeci+aWueW8jycsICfmop3nm67lsI/kvZzlk4HnmoTpoJDoqK3mqqLoppbmlrnlvI8nKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczoge1xuXHRcdFx0XHRcdFx0Y2F0OiB3aW5kb3cud2dVTFMoJ+aMieexu+WeiycsICfmjInpoZ7liKUnKSxcblx0XHRcdFx0XHRcdGFscGhhOiAn5oyJ5a2X5q+NJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2N1c3RvbVN0dWJMaXN0Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfoh6rlrprkuYnmnaHnm67lsI/kvZzlk4HmoIforrAnLCAn6Ieq6KiC5qKd55uu5bCP5L2c5ZOB5qiZ6KiYJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfov5nkupvkvJrlh7rnjrDlnKjliJfooajnmoTmnKvlsL7jgIInLCAn6YCZ5Lqb5pyD5Ye654++5Zyo5YiX6KGo55qE5pyr5bC+44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2N1c3RvbUxpc3QnLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RWYWx1ZVRpdGxlOiB3aW5kb3cud2dVTFMoJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOWPt++8iScsICfmqKHmnb/lkI3vvIjkuI3lkKvlpKfmi6zomZ/vvIknKSxcblx0XHRcdFx0XHRjdXN0b21MaXN0TGFiZWxUaXRsZTogd2luZG93LndnVUxTKCfmmL7npLrnmoTmloflrZcnLCAn6aGv56S655qE5paH5a2XJyksXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6ICfpgJrlkYonLFxuXHRcdFx0bW9kdWxlOiAndGFsa2JhY2snLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdtYXJrVGFsa2JhY2tBc01pbm9yJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflsIbpgJrlkYrmoIforrDkuLrlsI/kv67mlLknLCAn5bCH6YCa5ZGK5qiZ6KiY54K65bCP5L+u5pS5JyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2luc2VydFRhbGtiYWNrU2lnbmF0dXJlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpgJrlkYrml7bliqDlhaXnrb7lkI0nLCAn6YCa5ZGK5pmC5Yqg5YWl57C95ZCNJyksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3RhbGtiYWNrSGVhZGluZycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6YCa5ZGK5omA55So55qE5bCP6IqC5qCH6aKYJywgJ+mAmuWRiuaJgOeUqOeahOWwj+evgOaomemhjCcpLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ21haWxIZWFkaW5nJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfigJzmnInmlrDpgq7ku7bigJ3miYDnlKjnmoTlsI/oioLmoIfpopgnLCAn44CM5pyJ5paw6YO15Lu244CN5omA55So55qE5bCP56+A5qiZ6aGMJyksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5Y+W5raI6ZO+5YWlJywgJ+WPlua2iOmAo+WFpScpLFxuXHRcdFx0bW9kdWxlOiAndW5saW5rJyxcblx0XHRcdHByZWZlcmVuY2VzOiBbXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcudW5saW5rTmFtZXNwYWNlcyAoYXJyYXkpXG5cdFx0XHRcdC8vIEluIHdoYXQgbmFtZXNwYWNlcyB1bmxpbmsgc2hvdWxkIGhhcHBlbiwgZGVmYXVsdCBpbiAwIChhcnRpY2xlKSBhbmQgMTAwIChwb3J0YWwpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAndW5saW5rTmFtZXNwYWNlcycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Y+W5raI5Lul5LiL5ZG95ZCN56m66Ze05Lit55qE5Y+N5ZCR6ZO+5o6lJywgJ+WPlua2iOS7peS4i+WRveWQjeepuumWk+S4reeahOWPjeWQkemAo+e1kCcpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfor7fpgb/lhY3pgInmi6norqjorrrpobXvvIzlm6Dov5nmoLfkvJrlr7zoh7RUd2lua2xl6K+V5Zu+5L+u5pS56K6o6K665a2Y5qGj44CCJyxcblx0XHRcdFx0XHRcdCfoq4vpgb/lhY3pgbjmk4foqI7oq5bpoIHvvIzlm6DpgJnmqKPmnIPlsI7oh7RUd2lua2xl6Kmm5ZyW5L+u5pS56KiO6KuW5a2Y5qqU44CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLm5hbWVzcGFjZXNOb1NwZWNpYWwsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn6K2m5ZGK55So5oi3JywgJ+itpuWRiuS9v+eUqOiAhScpLFxuXHRcdFx0bW9kdWxlOiAnd2FybicsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmRlZmF1bHRXYXJuaW5nR3JvdXAgKGludClcblx0XHRcdFx0Ly8gaWYgdHJ1ZSwgd2F0Y2ggdGhlIHBhZ2Ugd2hpY2ggaGFzIGJlZW4gZGlzcGF0Y2hlZCBhbiB3YXJuaW5nIG9yIG5vdGljZSwgaWYgZmFsc2UsIGRlZmF1bHQgYXBwbGllc1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2RlZmF1bHRXYXJuaW5nR3JvdXAnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOitpuWRiue6p+WIqycsICfpoJDoqK3orablkYrntJrliKUnKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczoge1xuXHRcdFx0XHRcdFx0MTogJzHvvJrms6jmhI8nLFxuXHRcdFx0XHRcdFx0MjogJzLvvJrorablkYonLFxuXHRcdFx0XHRcdFx0Mzogd2luZG93LndnVUxTKCfljZXlsYLnuqfmj5DphpInLCAn5Zau5bGk57Sa5o+Q6YaSJyksXG5cdFx0XHRcdFx0XHQ0OiB3aW5kb3cud2dVTFMoJ+WNleWxgue6p+itpuWRiicsICfllq7lsaTntJrorablkYonKSxcblx0XHRcdFx0XHRcdDU6IHdpbmRvdy53Z1VMUygn6Ieq5a6a5LmJ5o+Q6YaS5oiW6K2m5ZGKJywgJ+iHquioguaPkOmGkuaIluitpuWRiicpLFxuXHRcdFx0XHRcdFx0NjogJ+aJgOacieitpuWRiuaooeadvycsXG5cdFx0XHRcdFx0XHQ3OiB3aW5kb3cud2dVTFMoJ+iHquWKqOmAieaLqeWxgue6pycsICfoh6rli5Xpgbjmk4flsaTntJonKSxcblx0XHRcdFx0XHRcdC8vIDggd2FzIHVzZWQgZm9yIGJsb2NrIHRlbXBsYXRlcyBiZWZvcmUgIzI2MFxuXHRcdFx0XHRcdFx0Ly8gOSB3YXMgZGVwcmVjYXRlZFxuXHRcdFx0XHRcdFx0Ly8gMTAgd2FzIGRlcHJlY2F0ZWRcblx0XHRcdFx0XHRcdC8vIDExIHdhcyBkZXByZWNhdGVkXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5jb21iaW5lZFNpbmdsZXRNZW51cyAoYm9vbGVhbilcblx0XHRcdFx0Ly8gaWYgdHJ1ZSwgc2hvdyBvbmUgbWVudSB3aXRoIGJvdGggc2luZ2xlLWlzc3VlIG5vdGljZXMgYW5kIHdhcm5pbmdzIGluc3RlYWQgb2YgdHdvIHNlcGFyYXRlbHlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdjb21iaW5lZFNpbmdsZXRNZW51cycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5bCG5Lik5Liq5Y2V5bGC57qn6I+c5Y2V5ZCI5bm25oiQ5LiA5LiqJywgJ+Wwh+WFqeWAi+WWruWxpOe0mumBuOWWruWQiOS9teaIkOS4gOWAiycpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCflvZPlkK/nlKjmraTpgInpobnml7bvvIzml6Dorrrpu5jorqTorablkYrnuqfliKvpgInmi6nljZXlsYLnuqfpgJrnn6XmiJbljZXlsYLnuqforablkYrnmoblsZ7kuo7mraTpobnjgIInLFxuXHRcdFx0XHRcdFx0J+eVtuWVn+eUqOatpOmBuOmgheaZgu+8jOeEoeirlumgkOioreitpuWRiue0muWIpemBuOaTh+WWruWxpOe0mumAmuefpeaIluWWruWxpOe0muitpuWRiueahuWxrOaWvOatpOmgheOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy53YXRjaFdhcm5pbmdzIChzdHJpbmcpXG5cdFx0XHRcdC8vIFdhdGNobGlzdCBzZXR0aW5nIGZvciB0aGUgcGFnZSB3aGljaCBoYXMgYmVlbiBkaXNwYXRjaGVkIGFuIHdhcm5pbmcgb3Igbm90aWNlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnd2F0Y2hXYXJuaW5ncycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn6K2m5ZGK5pe25Yqg5YWl55So5oi36K6o6K666aG15Yiw55uR6KeG5YiX6KGoJywgJ+itpuWRiuaZguWKoOWFpeS9v+eUqOiAheiojuirlumggeWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5vbGRTZWxlY3QgKGJvb2xlYW4pXG5cdFx0XHRcdC8vIGlmIHRydWUsIHVzZSB0aGUgbmF0aXZlIHNlbGVjdCBtZW51IHJhdGhlciB0aGUganF1ZXJ5IGNob3Nlbi1iYXNlZCBvbmVcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdvbGRTZWxlY3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+S9v+eUqOS4jeWPr+aQnOe0oueahOe7j+WFuOiPnOWNlScsICfkvb/nlKjkuI3lj6/mkJzlsIvnmoTntpPlhbjpgbjllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY3VzdG9tV2FybmluZ0xpc3QnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+iHquWumuS5ieitpuWRiuaooeadvycsICfoh6roqILorablkYrmqKHmnb8nKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5oKo5Y+v5Lul5Yqg5YWl5qih5p2/5oiW55So5oi35a2Q6aG16Z2i44CC6Ieq5a6a5LmJ6K2m5ZGK5Lya5Ye6546w5Zyo6K2m5ZGK5a+56K+d5qGG5Lit4oCc6Ieq5a6a5LmJ6K2m5ZGK4oCd5LiA6IqC44CCJyxcblx0XHRcdFx0XHRcdCfmgqjlj6/ku6XliqDlhaXmqKHmnb/miJbkvb/nlKjogIXlrZDpoIHpnaLjgILoh6roqILorablkYrmnIPlh7rnj77lnKjorablkYrlsI3oqbHmlrnloYrkuK3jgIzoh6roqILorablkYrjgI3kuIDnr4DjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnY3VzdG9tTGlzdCcsXG5cdFx0XHRcdFx0Y3VzdG9tTGlzdFZhbHVlVGl0bGU6IHdpbmRvdy53Z1VMUygn5qih5p2/5ZCN77yI5LiN5ZCr5aSn5ous5Y+377yJJywgJ+aooeadv+WQje+8iOS4jeWQq+Wkp+aLrOiZn++8iScpLFxuXHRcdFx0XHRcdGN1c3RvbUxpc3RMYWJlbFRpdGxlOiB3aW5kb3cud2dVTFMoJ+aYvuekuueahOaWh+Wtl++8iOWSjOe8lui+keaRmOimge+8iScsICfpoa/npLrnmoTmloflrZfvvIjlkoznt6jovK/mkZjopoHvvIknKSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflrZjlup/orqjorronLCAn5a2Y5bui6KiO6KuWJyksXG5cdFx0XHRtb2R1bGU6ICd4ZmQnLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdsb2dYZmROb21pbmF0aW9ucycsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Zyo55So5oi356m66Ze05Lit6K6w5b2V5omA5pyJ5a2Y5bqf6K6o6K665o+Q5ZCNJywgJ+WcqOS9v+eUqOiAheepuumWk+S4reiomOmMhOaJgOacieWtmOW7ouiojuirluaPkOWQjScpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfor6Xml6Xlv5fkvpvmgqjov73ouKrmiYDmnInpgJrov4dUd2lua2xl5o+Q5Lqk55qE5a2Y5bqf6K6o6K66Jyxcblx0XHRcdFx0XHRcdCfoqbLml6Xoqozkvpvmgqjov73ouaTmiYDmnInpgI/pgY5Ud2lua2xl5o+Q5Lqk55qE5a2Y5bui6KiO6KuWJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3hmZExvZ1BhZ2VOYW1lJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjmraTpobXkv53nlZnml6Xlv5cnLCAn5Zyo5q2k6aCB5L+d55WZ5pel6KqMJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WcqOatpOahhuS4rei+k+WFpeWtkOmhtemdouWQjeensO+8jOaCqOWwhuWcqFVzZXI6PGk+55So5oi35ZCNPC9pPi88aT7lrZDpobXpnaI8L2k+5om+5YiwWEZE5pel5b+X44CC5LuF5Zyo5ZCv55So5pel5b+X5pe25bel5L2c44CCJyxcblx0XHRcdFx0XHRcdCflnKjmraTmoYbkuK3ovLjlhaXlrZDpoIHpnaLlkI3nqLHvvIzmgqjlsIflnKhVc2VyOjxpPuS9v+eUqOiAheWQjeeosTwvaT4vPGk+5a2Q6aCB6Z2iPC9pPuaJvuWIsFhGROaXpeiqjOOAguWDheWcqOWVn+eUqOaXpeiqjOaZguW3peS9nOOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ25vTG9nT25YZmROb21pbmF0aW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjkvb/nlKjku6XkuIvnkIbnlLHml7bkuI3lgZrorrDlvZUnLCAn5Zyo5L2/55So5Lul5LiL55CG55Sx5pmC5LiN5YGa6KiY6YyEJyksXG5cdFx0XHRcdFx0dHlwZTogJ3NldCcsXG5cdFx0XHRcdFx0c2V0VmFsdWVzOiBUd2lua2xlLmNvbmZpZy5jb21tb25TZXRzLnhmZENyaXRlcmlhLFxuXHRcdFx0XHRcdHNldERpc3BsYXlPcmRlcjogVHdpbmtsZS5jb25maWcuY29tbW9uU2V0cy54ZmRDcml0ZXJpYURpc3BsYXlPcmRlcixcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy54ZmRXYXRjaFBhZ2UgKHN0cmluZylcblx0XHRcdFx0Ly8gVGhlIHdhdGNobGlzdCBzZXR0aW5nIG9mIHRoZSBwYWdlIGJlaW5nIG5vbWluYXRlZCBmb3IgWGZELlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3hmZFdhdGNoUGFnZScsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5Yqg5YWl5o+Q5ZCN55qE6aG16Z2i5Yiw55uR6KeG5YiX6KGoJywgJ+WKoOWFpeaPkOWQjeeahOmggemdouWIsOebo+imlua4heWWricpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy54ZmRXYXRjaERpc2N1c3Npb24gKHN0cmluZylcblx0XHRcdFx0Ly8gVGhlIHdhdGNobGlzdCBzZXR0aW5nIG9mIHRoZSBuZXdseSBjcmVhdGVkIFhmRCBwYWdlIChmb3IgdGhvc2UgcHJvY2Vzc2VzIHRoYXQgY3JlYXRlIGRpc2N1c3Npb24gcGFnZXMgZm9yIGVhY2ggbm9taW5hdGlvbiksXG5cdFx0XHRcdC8vIG9yIHRoZSBsaXN0IHBhZ2UgZm9yIHRoZSBvdGhlciBwcm9jZXNzZXMuXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAneGZkV2F0Y2hEaXNjdXNzaW9uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfliqDlhaXlrZjlup/orqjorrrpobXliLDnm5Hop4bliJfooagnLCAn5Yqg5YWl5a2Y5bui6KiO6KuW6aCB5Yiw55uj6KaW5riF5ZauJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCflvZPml6XnmoTpobXpnaLjgIInLCAn55W25pel55qE6aCB6Z2i44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IFR3aW5rbGUuY29uZmlnLndhdGNobGlzdEVudW1zLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLnhmZFdhdGNoVXNlciAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHVzZXIgdGFsayBwYWdlIGlmIHRoZXkgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbi5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICd4ZmRXYXRjaFVzZXInLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Yqg5YWl5Yib5bu66ICF6K6o6K666aG15Yiw55uR6KeG5YiX6KGo77yI5Zyo6YCa55+l5pe277yJJyxcblx0XHRcdFx0XHRcdCfliqDlhaXlu7rnq4vogIXoqI7oq5bpoIHliLDnm6PoppbmuIXllq7vvIjlnKjpgJrnn6XmmYLvvIknXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFya1hmZFBhZ2VzQXNQYXRyb2xsZWQnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+agh+iusOaXtuagh+iusOmhtemdouS4uuW3suW3oeafpe+8iOWmguWPr+iDve+8iScsICfmqJnoqJjmmYLmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHQn5Z+65LqO5oqA5pyv5Y6f5Zug77yM6aG16Z2i5LuF5Lya5Zyo55SxU3BlY2lhbDpOZXdQYWdlc+WIsOi+vuaXtuiiq+agh+iusOS4uuW3suW3oeafpeOAgicsXG5cdFx0XHRcdFx0XHQn5Z+65pa85oqA6KGT5Y6f5Zug77yM6aCB6Z2i5YOF5pyD5Zyo55SxU3BlY2lhbDpOZXdQYWdlc+WIsOmBlOaZguiiq+aomeiomOeCuuW3suW3oeafpeOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdGd2RDc2RUb1hmZCcsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUygn5o+Q5Yig57G75Z6L5aKe5Yqg6L2s5Lqk6Ieq5b+r6YCf5Yig6Zmk5YCZ6YCJJywgJ+aPkOWIqumhnuWIpeWinuWKoOi9ieS6pOiHquW/q+mAn+WIqumZpOWAmemBuCcpLFxuXHRcdFx0XHRcdGhlbHB0aXA6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfor7fnoa7kv53mgqjlhYXliIbkuobop6NbW1FpdXdlbjrlv6vpgJ/liKDpmaTmlrnpkohdXeaJjeW8gOWQr+atpOWKn+iDveOAgicsXG5cdFx0XHRcdFx0XHQn6KuL56K65L+d5oKo5YWF5YiG5LqG6KejW1tRaXV3ZW465b+r6YCf5Yiq6Zmk5pa56YedXV3miY3plovllZ/mraTlip/og73jgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYWZkRGVmYXVsdENhdGVnb3J5Jyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqTmj5DliKDnsbvlnosnLCAn6aCQ6Kit5o+Q5Yiq6aGe5YilJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+iLpemAieaLqeKAnOebuOWQjOS6juS4iuasoemAieaLqeKAneWwhuS9v+eUqGxvY2FsU3RvcmFnZeadpeiusOW/huOAgicsXG5cdFx0XHRcdFx0XHQn6Iul6YG45pOH44CM55u45ZCM5pa85LiK5qyh6YG45pOH44CN5bCH5L2/55SobG9jYWxTdG9yYWdl5L6G6KiY5oa244CCJ1xuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dHlwZTogJ2VudW0nLFxuXHRcdFx0XHRcdGVudW1WYWx1ZXM6IHtcblx0XHRcdFx0XHRcdGRlbGV0ZTogd2luZG93LndnVUxTKCfliKDpmaQnLCAn5Yiq6ZmkJyksXG5cdFx0XHRcdFx0XHRzYW1lOiB3aW5kb3cud2dVTFMoJ+ebuOWQjOS6juS4iuasoemAieaLqScsICfnm7jlkIzmlrzkuIrmrKHpgbjmk4cnKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2FmZEZhbWVEZWZhdWx0UmVhc29uJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfpu5jorqTlhbPms6jluqbmj5DliKDnkIbnlLEnLCAn6aCQ6Kit6Zec5rOo5bqm5o+Q5Yiq55CG55SxJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKCfnlKjkuo7mibnph4/mj5DliKDjgIInLCAn55So5pa85om55qyh5o+Q5Yiq44CCJyksXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnYWZkU3Vic3R1YkRlZmF1bHRSZWFzb24nLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+m7mOiupOWwj+Wwj+S9nOWTgeaPkOWIoOeQhueUsScsICfpoJDoqK3lsI/lsI/kvZzlk4Hmj5DliKrnkIbnlLEnKSxcblx0XHRcdFx0XHRoZWxwdGlwOiB3aW5kb3cud2dVTFMoJ+eUqOS6juaJuemHj+aPkOWIoOOAgicsICfnlKjmlrzmibnmrKHmj5DliKrjgIInKSxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR0aXRsZTogd2luZG93LndnVUxTKCflhbPpl63lrZjlup/orqjorronLCAn6Zec6ZaJ5a2Y5bui6KiO6KuWJyksXG5cdFx0XHRtb2R1bGU6ICdjbG9zZScsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ1hmZENsb3NlJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCflnKjlrZjlup/orqjorrrmmL7npLrlhbPpl63orqjorrrmjInpkq4nLCAn5Zyo5a2Y5bui6KiO6KuW6aGv56S66Zec6ZaJ6KiO6KuW5oyJ6YiVJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+ivt+ehruS/neaCqOWFheWIhuS6huino1tbUWl1d2VuOuWIoOmZpOaWuemSiF1d5omN5byA5ZCv5q2k5Yqf6IO944CCJyxcblx0XHRcdFx0XHRcdCfoq4vnorrkv53mgqjlhYXliIbkuobop6NbW1FpdXdlbjrliKrpmaTmlrnph51dXeaJjemWi+WVn+atpOWKn+iDveOAgidcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiB7XG5cdFx0XHRcdFx0XHRoaWRlOiB3aW5kb3cud2dVTFMoJ+S4jeaYvuekuicsICfkuI3poa/npLonKSxcblx0XHRcdFx0XHRcdG5vbmFkbWlub25seTogd2luZG93LndnVUxTKCflj6rljIXlkKvpnZ7nrqHnkIblkZjlj6/kvb/nlKjpgInpobknLCAn5Y+q5YyF5ZCr6Z2e566h55CG5ZOh5Y+v5L2/55So6YG46aCFJyksXG5cdFx0XHRcdFx0XHRhbGw6IHdpbmRvdy53Z1VMUygn5pi+56S65omA5pyJ6YCJ6aG5JywgJ+mhr+ekuuaJgOaciemBuOmghScpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn5L6154qv6JGX5L2c5p2DJywgJ+S+teeKr+iRl+S9nOasiicpLFxuXHRcdFx0bW9kdWxlOiAnY29weXZpbycsXG5cdFx0XHRwcmVmZXJlbmNlczogW1xuXHRcdFx0XHQvLyBUd2lua2xlQ29uZmlnLmNvcHl2aW9XYXRjaFBhZ2UgKHN0cmluZylcblx0XHRcdFx0Ly8gVGhlIHdhdGNobGlzdCBzZXR0aW5nIG9mIHRoZSBwYWdlIGJlaW5nIG5vbWluYXRlZCBmb3IgWGZELlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2NvcHl2aW9XYXRjaFBhZ2UnLFxuXHRcdFx0XHRcdGxhYmVsOiB3aW5kb3cud2dVTFMoJ+WKoOWFpeaPkOaKpeeahOmhtemdouWIsOebkeinhuWIl+ihqCcsICfliqDlhaXmj5DloLHnmoTpoIHpnaLliLDnm6PoppbmuIXllq4nKSxcblx0XHRcdFx0XHR0eXBlOiAnZW51bScsXG5cdFx0XHRcdFx0ZW51bVZhbHVlczogVHdpbmtsZS5jb25maWcud2F0Y2hsaXN0RW51bXMsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFR3aW5rbGVDb25maWcuY29weXZpb1dhdGNoVXNlciAoc3RyaW5nKVxuXHRcdFx0XHQvLyBUaGUgd2F0Y2hsaXN0IHNldHRpbmcgb2YgdGhlIHVzZXIgaWYgaGUgcmVjZWl2ZXMgYSBub3RpZmljYXRpb24uXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnY29weXZpb1dhdGNoVXNlcicsXG5cdFx0XHRcdFx0bGFiZWw6IHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfliqDlhaXliJvlu7rogIXorqjorrrpobXliLDnm5Hop4bliJfooajvvIjlnKjpgJrnn6Xml7bvvIknLFxuXHRcdFx0XHRcdFx0J+WKoOWFpeW7uueri+iAheiojuirlumggeWIsOebo+imlua4heWWru+8iOWcqOmAmuefpeaZgu+8iSdcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHR5cGU6ICdlbnVtJyxcblx0XHRcdFx0XHRlbnVtVmFsdWVzOiBUd2lua2xlLmNvbmZpZy53YXRjaGxpc3RFbnVtcyxcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gVHdpbmtsZUNvbmZpZy5tYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQgKGJvb2xlYW4pXG5cdFx0XHRcdC8vIElmLCB3aGVuIGFwcGx5aW5nIGNvcHl2aW8gdGVtcGxhdGUgdG8gcGFnZSwgdG8gbWFyayB0aGUgcGFnZSBhcyBwYXRyb2xsZWQgKGlmIHRoZSBwYWdlIHdhcyByZWFjaGVkIGZyb20gTmV3UGFnZXMpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAnbWFya0NvcHl2aW9QYWdlc0FzUGF0cm9sbGVkJyxcblx0XHRcdFx0XHRsYWJlbDogd2luZG93LndnVUxTKCfmoIforrDml7bmoIforrDpobXpnaLkuLrlt7Llt6Hmn6XvvIjlpoLlj6/og73vvIknLCAn5qiZ6KiY5pmC5qiZ6KiY6aCB6Z2i54K65bey5beh5p+l77yI5aaC5Y+v6IO977yJJyksXG5cdFx0XHRcdFx0aGVscHRpcDogd2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0J+WfuuS6juaKgOacr+WOn+WboO+8jOmhtemdouS7heS8muWcqOeUsVNwZWNpYWw6TmV3UGFnZXPliLDovr7ml7booqvmoIforrDkuLrlt7Llt6Hmn6XjgIInLFxuXHRcdFx0XHRcdFx0J+WfuuaWvOaKgOihk+WOn+WboO+8jOmggemdouWDheacg+WcqOeUsVNwZWNpYWw6TmV3UGFnZXPliLDpgZTmmYLooqvmqJnoqJjngrrlt7Llt6Hmn6XjgIInXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0dGl0bGU6IHdpbmRvdy53Z1VMUygn6ZqQ6JePJywgJ+maseiXjycpLFxuXHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdFx0cHJlZmVyZW5jZXM6IFtcblx0XHRcdFx0Ly8gdHdpbmtsZS5qczogcG9ydGxldCBzZXR1cFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3BvcnRsZXRBcmVhJyxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdwb3J0bGV0SWQnLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3BvcnRsZXROYW1lJyxcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdwb3J0bGV0VHlwZScsXG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRuYW1lOiAncG9ydGxldE5leHQnLFxuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyB0d2lua2xlZmx1ZmYuanM6IGRlZmluZXMgaG93IG1hbnkgcmV2aXNpb24gdG8gcXVlcnkgbWF4aW11bSwgbWF4aW11bSBwb3NzaWJsZSBpcyA1MCwgZGVmYXVsdCBpcyA1MFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ3JldmVydE1heFJldmlzaW9ucycsXG5cdFx0XHRcdFx0dHlwZTogJ2ludGVnZXInLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyB0d2lua2xlYmF0Y2hkZWxldGUuanM6IEhvdyBtYW55IHBhZ2VzIHNob3VsZCBiZSBwcm9jZXNzZWQgbWF4aW11bVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogJ2JhdGNoTWF4Jyxcblx0XHRcdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRcdFx0YWRtaW5Pbmx5OiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBIb3cgbWFueSBwYWdlcyBzaG91bGQgYmUgcHJvY2Vzc2VkIGF0IGEgdGltZSBieSBkZXByb2QgYW5kIGJhdGNoZGVsZXRlL3Byb3RlY3QvdW5kZWxldGVcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWU6ICdiYXRjaENodW5rcycsXG5cdFx0XHRcdFx0dHlwZTogJ2ludGVnZXInLFxuXHRcdFx0XHRcdGFkbWluT25seTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSxcblx0XTsgLy8gZW5kIG9mIFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zXG5cdFR3aW5rbGUuY29uZmlnLmluaXQgPSAoKSA9PiB7XG5cdFx0Ly8gY3JlYXRlIHRoZSBjb25maWcgcGFnZSBhdCBUd2lua2xlLmdldFByZWYoJ2NvbmZpZ1BhZ2UnKVxuXHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykgPT09IFR3aW5rbGUuZ2V0UHJlZignY29uZmlnUGFnZScpICYmIG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICd2aWV3Jykge1xuXHRcdFx0aWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdHdpbmtsZS1jb25maWcnKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIG1heWJlIHRoZSBwYWdlIGlzIG1pc2NvbmZpZ3VyZWQsIG9yIHNvbWV0aGluZyAtIGJ1dCBhbnkgYXR0ZW1wdCB0byBtb2RpZnkgaXQgd2lsbCBiZSBwb2ludGxlc3Ncblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRlbnRkaXYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdHdpbmtsZS1jb25maWctY29udGVudCcpO1xuXHRcdFx0Y29udGVudGRpdi50ZXh0Q29udGVudCA9ICcnOyAvLyBjbGVhciBjaGlsZHJlblxuXHRcdFx0Ly8gc3RhcnQgYSB0YWJsZSBvZiBjb250ZW50c1xuXHRcdFx0Y29uc3QgdG9jdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdHRvY3RhYmxlLmNsYXNzTmFtZSA9ICd0b2MnO1xuXHRcdFx0dG9jdGFibGUuc3R5bGUubWFyZ2luTGVmdCA9ICcwLjRlbSc7XG5cdFx0XHQvLyBjcmVhdGUgVE9DIHRpdGxlXG5cdFx0XHRjb25zdCB0b2N0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0dG9jdGl0bGUuaWQgPSAndG9jdGl0bGUnO1xuXHRcdFx0Y29uc3QgdG9jaDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMicpO1xuXHRcdFx0dG9jaDIudGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+ebruW9lSAnLCAn55uu6YyEICcpO1xuXHRcdFx0dG9jdGl0bGUuYXBwZW5kQ2hpbGQodG9jaDIpO1xuXHRcdFx0Ly8gYWRkIFRPQyBzaG93L2hpZGUgbGlua1xuXHRcdFx0Y29uc3QgdG9jdG9nZ2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0dG9jdG9nZ2xlLmNsYXNzTmFtZSA9ICd0b2N0b2dnbGUnO1xuXHRcdFx0dG9jdG9nZ2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbJykpO1xuXHRcdFx0Y29uc3QgdG9jdG9nZ2xlbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdHRvY3RvZ2dsZWxpbmsuY2xhc3NOYW1lID0gJ2ludGVybmFsJztcblx0XHRcdHRvY3RvZ2dsZWxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgJyN0dy10b2NzaG93aGlkZScpO1xuXHRcdFx0dG9jdG9nZ2xlbGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn6ZqQ6JePJywgJ+maseiXjycpO1xuXHRcdFx0dG9jdG9nZ2xlLmFwcGVuZENoaWxkKHRvY3RvZ2dsZWxpbmspO1xuXHRcdFx0dG9jdG9nZ2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCddJykpO1xuXHRcdFx0dG9jdGl0bGUuYXBwZW5kQ2hpbGQodG9jdG9nZ2xlKTtcblx0XHRcdHRvY3RhYmxlLmFwcGVuZENoaWxkKHRvY3RpdGxlKTtcblx0XHRcdC8vIGNyZWF0ZSBpdGVtIGNvbnRhaW5lcjogdGhpcyBpcyB3aGF0IHdlIGFkZCBzdHVmZiB0b1xuXHRcdFx0Y29uc3QgdG9jdWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpO1xuXHRcdFx0dG9jdG9nZ2xlbGluay5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0XHQnY2xpY2snLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgJHRvY3VsID0gJCh0b2N1bCk7XG5cdFx0XHRcdFx0JHRvY3VsLnRvZ2dsZSgpO1xuXHRcdFx0XHRcdGlmICgkdG9jdWwuZmluZCgnOnZpc2libGUnKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRvY3RvZ2dsZWxpbmsudGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+makOiXjycsICfpmrHol48nKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dG9jdG9nZ2xlbGluay50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn5pi+56S6JywgJ+mhr+ekuicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZmFsc2Vcblx0XHRcdCk7XG5cdFx0XHR0b2N0YWJsZS5hcHBlbmRDaGlsZCh0b2N1bCk7XG5cdFx0XHRjb250ZW50ZGl2LmFwcGVuZENoaWxkKHRvY3RhYmxlKTtcblx0XHRcdGNvbnN0IGNvbnRlbnRmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZm9ybScpO1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNjcmlwdC11cmxcblx0XHRcdGNvbnRlbnRmb3JtLnNldEF0dHJpYnV0ZSgnYWN0aW9uJywgJ2phdmFzY3JpcHQ6dm9pZCgwKScpOyAvLyB3YXMgI3R3LXNhdmUgLSBjaGFuZ2VkIHRvIHZvaWQoMCkgdG8gd29yayBhcm91bmQgQ2hyb21lIGlzc3VlXG5cdFx0XHRjb250ZW50Zm9ybS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBUd2lua2xlLmNvbmZpZy5zYXZlLCB0cnVlKTtcblx0XHRcdGNvbnRlbnRkaXYuYXBwZW5kQ2hpbGQoY29udGVudGZvcm0pO1xuXHRcdFx0Y29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcblx0XHRcdGNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcblx0XHRcdGNvbnRlbnRmb3JtLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG5cdFx0XHQkKFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zKS5lYWNoKChzZWN0aW9ua2V5LCBzZWN0aW9uKSA9PiB7XG5cdFx0XHRcdGlmIChzZWN0aW9uLmhpZGRlbiB8fCAoc2VjdGlvbi5hZG1pbk9ubHkgJiYgIU1vcmViaXRzLnVzZXJJc1N5c29wKSkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlOyAvLyBpLmUuIFwiY29udGludWVcIiBpbiB0aGlzIGNvbnRleHRcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBhZGQgdG8gVE9DXG5cdFx0XHRcdGNvbnN0IHRvY2xpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTtcblx0XHRcdFx0dG9jbGkuY2xhc3NOYW1lID0gJ3RvY2xldmVsLTEnO1xuXHRcdFx0XHRjb25zdCB0b2NhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHRcdFx0XHR0b2NhLnNldEF0dHJpYnV0ZSgnaHJlZicsIGAjJHtzZWN0aW9uLm1vZHVsZX1gKTtcblx0XHRcdFx0dG9jYS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWN0aW9uLnRpdGxlKSk7XG5cdFx0XHRcdHRvY2xpLmFwcGVuZENoaWxkKHRvY2EpO1xuXHRcdFx0XHR0b2N1bC5hcHBlbmRDaGlsZCh0b2NsaSk7XG5cdFx0XHRcdGxldCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuXHRcdFx0XHRsZXQgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdGNlbGwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgJzMnKTtcblx0XHRcdFx0Y29uc3QgaGVhZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2g0Jyk7XG5cdFx0XHRcdGhlYWRpbmcuc3R5bGUuYm9yZGVyQm90dG9tID0gJzFweCBzb2xpZCAjODA4MDgwJztcblx0XHRcdFx0aGVhZGluZy5zdHlsZS5tYXJnaW5Ub3AgPSAnMC4yZW0nO1xuXHRcdFx0XHRoZWFkaW5nLmlkID0gc2VjdGlvbi5tb2R1bGU7XG5cdFx0XHRcdGhlYWRpbmcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc2VjdGlvbi50aXRsZSkpO1xuXHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGhlYWRpbmcpO1xuXHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdGNvbnRhaW5lci5hcHBlbmRDaGlsZChyb3cpO1xuXHRcdFx0XHRsZXQgcm93Y291bnQgPSAxOyAvLyBmb3Igcm93IGJhbmRpbmdcblx0XHRcdFx0Ly8gYWRkIGVhY2ggb2YgdGhlIHByZWZlcmVuY2VzIHRvIHRoZSBmb3JtXG5cdFx0XHRcdCQoc2VjdGlvbi5wcmVmZXJlbmNlcykuZWFjaCgocHJlZmtleSwgcHJlZikgPT4ge1xuXHRcdFx0XHRcdGlmIChwcmVmLmFkbWluT25seSAmJiAhTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlOyAvLyBpLmUuIFwiY29udGludWVcIiBpbiB0aGlzIGNvbnRleHRcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuXHRcdFx0XHRcdHJvdy5zdHlsZS5tYXJnaW5Cb3R0b20gPSAnMC4yZW0nO1xuXHRcdFx0XHRcdC8vIGNyZWF0ZSBvZGQgcm93IGJhbmRpbmdcblx0XHRcdFx0XHRpZiAocm93Y291bnQrKyAlIDIgPT09IDApIHtcblx0XHRcdFx0XHRcdHJvdy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAncmdiKDEyOCAxMjggMTI4Ly4xKSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuXHRcdFx0XHRcdGxldCBsYWJlbDtcblx0XHRcdFx0XHRsZXQgaW5wdXQ7XG5cdFx0XHRcdFx0Y29uc3QgZ290UHJlZiA9IFR3aW5rbGUuZ2V0UHJlZihwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdHN3aXRjaCAocHJlZi50eXBlKSB7XG5cdFx0XHRcdFx0XHRjYXNlICdib29sZWFuJzpcblx0XHRcdFx0XHRcdFx0Ly8gY3JlYXRlIGEgY2hlY2tib3hcblx0XHRcdFx0XHRcdFx0Y2VsbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAnMicpO1xuXHRcdFx0XHRcdFx0XHRsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2NoZWNrYm94Jyk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCBwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHRpZiAoZ290UHJlZiA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKGlucHV0KTtcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocHJlZi5sYWJlbCkpO1xuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGxhYmVsKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdzdHJpbmcnOiAvLyBjcmVhdGUgYW4gaW5wdXQgYm94XG5cdFx0XHRcdFx0XHRjYXNlICdpbnRlZ2VyJzpcblx0XHRcdFx0XHRcdFx0Ly8gYWRkIGxhYmVsIHRvIGZpcnN0IGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsLnN0eWxlLnRleHRBbGlnbiA9ICdyaWdodCc7XG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzAuNWVtJztcblx0XHRcdFx0XHRcdFx0bGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5zZXRBdHRyaWJ1dGUoJ2ZvcicsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAke3ByZWYubGFiZWx977yaYCkpO1xuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGxhYmVsKTtcblx0XHRcdFx0XHRcdFx0cm93LmFwcGVuZENoaWxkKGNlbGwpO1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgaW5wdXQgYm94IHRvIHNlY29uZCBjb2x1bW5cblx0XHRcdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzFlbSc7XG5cdFx0XHRcdFx0XHRcdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKTtcblx0XHRcdFx0XHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCdpZCcsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlmIChwcmVmLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnc2l6ZScsIDYpO1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICdudW1iZXInKTtcblx0XHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0ZXAnLCAnMScpOyAvLyBpbnRlZ2VycyBvbmx5XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpZiAoZ290UHJlZikge1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndmFsdWUnLCBnb3RQcmVmKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGlucHV0KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdlbnVtJzoge1xuXHRcdFx0XHRcdFx0XHQvLyBjcmVhdGUgYSBjb21ibyBib3hcblx0XHRcdFx0XHRcdFx0Ly8gYWRkIGxhYmVsIHRvIGZpcnN0IGNvbHVtblxuXHRcdFx0XHRcdFx0XHQvLyBub3RlOiBkdXBsaWNhdGVzIHRoZSBjb2RlIGFib3ZlLCB1bmRlciBzdHJpbmcvaW50ZWdlclxuXHRcdFx0XHRcdFx0XHRjZWxsLnN0eWxlLnRleHRBbGlnbiA9ICdyaWdodCc7XG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzAuNWVtJztcblx0XHRcdFx0XHRcdFx0bGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5zZXRBdHRyaWJ1dGUoJ2ZvcicsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAke3ByZWYubGFiZWx977yaYCkpO1xuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGxhYmVsKTtcblx0XHRcdFx0XHRcdFx0cm93LmFwcGVuZENoaWxkKGNlbGwpO1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgaW5wdXQgYm94IHRvIHNlY29uZCBjb2x1bW5cblx0XHRcdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzFlbSc7XG5cdFx0XHRcdFx0XHRcdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7XG5cdFx0XHRcdFx0XHRcdGlucHV0LnNldEF0dHJpYnV0ZSgnaWQnLCBwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHRsZXQgb3B0aW9uRXhpc3RzID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2VudW12YWx1ZSwgZW51bWRpc3BsYXldIG9mIE9iamVjdC5lbnRyaWVzKHByZWYuZW51bVZhbHVlcykpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcblx0XHRcdFx0XHRcdFx0XHRvcHRpb24uc2V0QXR0cmlidXRlKCd2YWx1ZScsIGVudW12YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0Z290UHJlZiA9PT0gZW51bXZhbHVlIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYWNrIHRvIGNvbnZlcnQgb2xkIGJvb2xlYW4gd2F0Y2hsaXN0IHByZWZzXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyB0byBjb3JyZXNwb25kaW5nIGVudW1zIChhZGRlZCBpbiB2Mi4xKVxuXHRcdFx0XHRcdFx0XHRcdFx0KHR5cGVvZiBnb3RQcmVmID09PSAnYm9vbGVhbicgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0KChnb3RQcmVmICYmIGVudW12YWx1ZSA9PT0gJ3llcycpIHx8ICghZ290UHJlZiAmJiBlbnVtdmFsdWUgPT09ICdubycpKSlcblx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkJywgJ3NlbGVjdGVkJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRvcHRpb25FeGlzdHMgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRvcHRpb24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZW51bWRpc3BsYXkpKTtcblx0XHRcdFx0XHRcdFx0XHRpbnB1dC5hcHBlbmRDaGlsZChvcHRpb24pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdC8vIEFwcGVuZCB1c2VyLWRlZmluZWQgdmFsdWUgdG8gb3B0aW9uc1xuXHRcdFx0XHRcdFx0XHRpZiAoIW9wdGlvbkV4aXN0cykge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgZ290UHJlZik7XG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCAnc2VsZWN0ZWQnKTtcblx0XHRcdFx0XHRcdFx0XHRvcHRpb24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZ290UHJlZikpO1xuXHRcdFx0XHRcdFx0XHRcdGlucHV0LmFwcGVuZENoaWxkKG9wdGlvbik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y2VsbC5hcHBlbmRDaGlsZChpbnB1dCk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y2FzZSAnc2V0Jzoge1xuXHRcdFx0XHRcdFx0XHQvLyBjcmVhdGUgYSBzZXQgb2YgY2hlY2sgYm94ZXNcblx0XHRcdFx0XHRcdFx0Ly8gYWRkIGxhYmVsIGZpcnN0IG9mIGFsbFxuXHRcdFx0XHRcdFx0XHRjZWxsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcyJyk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTsgLy8gbm90IHJlYWxseSBuZWNlc3NhcnkgdG8gdXNlIGEgbGFiZWwgZWxlbWVudCBoZXJlLCBidXQgd2UgZG8gaXQgZm9yIGNvbnNpc3RlbmN5IG9mIHN0eWxpbmdcblx0XHRcdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCR7cHJlZi5sYWJlbH3vvJpgKSk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjaGVja2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0XHRcdFx0XHRjaGVja2Rpdi5zdHlsZS5wYWRkaW5nTGVmdCA9ICcxZW0nO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB3b3JrZXIgPSAoaXRlbWtleSwgaXRlbXZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY2hlY2tsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tsYWJlbC5zdHlsZS5tYXJnaW5SaWdodCA9ICcwLjdlbSc7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tsYWJlbC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY2hlY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRcdFx0XHRcdGNoZWNrLnNldEF0dHJpYnV0ZSgndHlwZScsICdjaGVja2JveCcpO1xuXHRcdFx0XHRcdFx0XHRcdGNoZWNrLnNldEF0dHJpYnV0ZSgnaWQnLCBgJHtwcmVmLm5hbWV9XyR7aXRlbWtleX1gKTtcblx0XHRcdFx0XHRcdFx0XHRjaGVjay5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBgJHtwcmVmLm5hbWV9XyR7aXRlbWtleX1gKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoZ290UHJlZiAmJiBnb3RQcmVmLmluY2x1ZGVzKGl0ZW1rZXkpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGVjay5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Ly8gY2F0ZXIgZm9yIGxlZ2FjeSBpbnRlZ2VyIGFycmF5IHZhbHVlcyBmb3IgdW5saW5rTmFtZXNwYWNlcyAodGhpcyBjYW4gYmUgcmVtb3ZlZCBhIGZldyB5ZWFycyBkb3duIHRoZSB0cmFjay4uLilcblx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRwcmVmLm5hbWUgPT09ICd1bmxpbmtOYW1lc3BhY2VzJyAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0Z290UHJlZiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0Z290UHJlZi5pbmNsdWRlcyhOdW1iZXIucGFyc2VJbnQoaXRlbWtleSwgMTApKVxuXHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2hlY2suY2hlY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrbGFiZWwuYXBwZW5kQ2hpbGQoY2hlY2spO1xuXHRcdFx0XHRcdFx0XHRcdGNoZWNrbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaXRlbXZhbHVlKSk7XG5cdFx0XHRcdFx0XHRcdFx0Y2hlY2tkaXYuYXBwZW5kQ2hpbGQoY2hlY2tsYWJlbCk7XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdGlmIChwcmVmLnNldERpc3BsYXlPcmRlcikge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGFkZCBjaGVjayBib3hlcyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGRpc3BsYXkgb3JkZXJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgcHJlZi5zZXREaXNwbGF5T3JkZXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdvcmtlcihpdGVtLCBwcmVmLnNldFZhbHVlc1tpdGVtXSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGFkZCBjaGVjayBib3hlcyBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGl0IGdldHMgZmVkIHRvIHVzIChwcm9iYWJseSBzdHJpY3QgYWxwaGFiZXRpY2FsKVxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2l0ZW1rZXksIGl0ZW12YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJlZi5zZXRWYWx1ZXMpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR3b3JrZXIoaXRlbWtleSwgaXRlbXZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y2VsbC5hcHBlbmRDaGlsZChjaGVja2Rpdik7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y2FzZSAnY3VzdG9tTGlzdCc6IHtcblx0XHRcdFx0XHRcdFx0Ly8gYWRkIGxhYmVsIHRvIGZpcnN0IGNvbHVtblxuXHRcdFx0XHRcdFx0XHRjZWxsLnN0eWxlLnRleHRBbGlnbiA9ICdyaWdodCc7XG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzAuNWVtJztcblx0XHRcdFx0XHRcdFx0bGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xuXHRcdFx0XHRcdFx0XHRsYWJlbC5zZXRBdHRyaWJ1dGUoJ2ZvcicsIHByZWYubmFtZSk7XG5cdFx0XHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGAke3ByZWYubGFiZWx977yaYCkpO1xuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGxhYmVsKTtcblx0XHRcdFx0XHRcdFx0cm93LmFwcGVuZENoaWxkKGNlbGwpO1xuXHRcdFx0XHRcdFx0XHQvLyBhZGQgYnV0dG9uIHRvIHNlY29uZCBjb2x1bW5cblx0XHRcdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0XHRcdGNlbGwuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzFlbSc7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGN1c3RvbUxpc3RCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRcdFx0XHRcdFx0Y3VzdG9tTGlzdEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2lkJywgcHJlZi5uYW1lKTtcblx0XHRcdFx0XHRcdFx0Y3VzdG9tTGlzdEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBwcmVmLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHRjdXN0b21MaXN0QnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcblx0XHRcdFx0XHRcdFx0Y3VzdG9tTGlzdEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuZGlzcGxheSwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHQvLyB1c2UgalF1ZXJ5IGRhdGEgb24gdGhlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY3VycmVudCBjb25maWcgdmFsdWVcblx0XHRcdFx0XHRcdFx0JChjdXN0b21MaXN0QnV0dG9uKS5kYXRhKHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZ290UHJlZixcblx0XHRcdFx0XHRcdFx0XHRwcmVmLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0Y3VzdG9tTGlzdEJ1dHRvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aW5kb3cud2dVTFMoJ+e8lui+kemhueebricsICfnt6jovK/poIXnm64nKSkpO1xuXHRcdFx0XHRcdFx0XHRjZWxsLmFwcGVuZENoaWxkKGN1c3RvbUxpc3RCdXR0b24pO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHZvaWQgbXcubm90aWZ5KGB0d2lua2xlY29uZmlnOiDmnKrnn6XnsbvlnovnmoTlsZ7mgKcgJHtwcmVmLm5hbWV9YCwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlY29uZmlnJyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0Ly8gYWRkIGhlbHAgdGlwXG5cdFx0XHRcdFx0Y2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0XHRcdFx0Y2VsbC5zdHlsZS5mb250U2l6ZSA9ICc5MCUnO1xuXHRcdFx0XHRcdGNlbGwuc3R5bGUuY29sb3IgPSAnZ3JheSc7XG5cdFx0XHRcdFx0aWYgKHByZWYuaGVscHRpcCkge1xuXHRcdFx0XHRcdFx0Ly8gY29udmVydCBtZW50aW9ucyBvZiB0ZW1wbGF0ZXMgaW4gdGhlIGhlbHB0aXAgdG8gY2xpY2thYmxlIGxpbmtzXG5cdFx0XHRcdFx0XHRjZWxsLmlubmVySFRNTCA9IHByZWYuaGVscHRpcFxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0XHQve3soLis/KX19L2csXG5cdFx0XHRcdFx0XHRcdFx0YHt7PGEgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoJ1RlbXBsYXRlOicpfSQxXCIgcmVsPVwibm9vcGVuZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kMTwvYT59fWBcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0XHQvXFxbXFxbKC4rPyldXS9nLFxuXHRcdFx0XHRcdFx0XHRcdGA8YSBocmVmPVwiJHttdy51dGlsLmdldFVybCgnJyl9JDFcIiByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiPiQxPC9hPmBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gYWRkIHJlc2V0IGxpbmsgKGN1c3RvbSBsaXN0cyBkb24ndCBuZWVkIHRoaXMsIGFzIHRoZWlyIGNvbmZpZyB2YWx1ZSBpc24ndCBkaXNwbGF5ZWQgb24gdGhlIGZvcm0pXG5cdFx0XHRcdFx0aWYgKHByZWYudHlwZSAhPT0gJ2N1c3RvbUxpc3QnKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXNldGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgJyN0dy1yZXNldCcpO1xuXHRcdFx0XHRcdFx0cmVzZXRsaW5rLnNldEF0dHJpYnV0ZSgnaWQnLCBgdHdpbmtsZS1jb25maWctcmVzZXQtJHtwcmVmLm5hbWV9YCk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBUd2lua2xlLmNvbmZpZy5yZXNldFByZWZMaW5rLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRyZXNldGxpbmsuc3R5bGUuY3NzRmxvYXQgPSAncmlnaHQnO1xuXHRcdFx0XHRcdFx0cmVzZXRsaW5rLnN0eWxlLm1hcmdpbiA9ICcwIDAuNmVtJztcblx0XHRcdFx0XHRcdHJlc2V0bGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aW5kb3cud2dVTFMoJ+WkjeS9jScsICflvqnkvY0nKSkpO1xuXHRcdFx0XHRcdFx0Y2VsbC5hcHBlbmRDaGlsZChyZXNldGxpbmspO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG5cdFx0XHRcdFx0Y29udGFpbmVyLmFwcGVuZENoaWxkKHJvdyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZm9vdGVyYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRmb290ZXJib3guc2V0QXR0cmlidXRlKCdpZCcsICd0d2lua2xlLWNvbmZpZy1idXR0b25wYW5lJyk7XG5cdFx0XHRmb290ZXJib3guc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNCQ0NBREYnO1xuXHRcdFx0Zm9vdGVyYm94LnN0eWxlLnBhZGRpbmcgPSAnMC41ZW0nO1xuXHRcdFx0Y29uc3Qgc3VibWl0QnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0XHRzdWJtaXRCdXR0b24uc2V0QXR0cmlidXRlKCdpZCcsICd0d2lua2xlLWNvbmZpZy1zdWJtaXQnKTtcblx0XHRcdHN1Ym1pdEJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7XG5cdFx0XHRzdWJtaXRCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCfkv53lrZjkv67mlLknLCAn5YSy5a2Y5L+u5pS5JykpKTtcblx0XHRcdGZvb3RlcmJveC5hcHBlbmRDaGlsZChzdWJtaXRCdXR0b24pO1xuXHRcdFx0Y29uc3QgZm9vdGVyc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdGZvb3RlcnNwYW4uY2xhc3NOYW1lID0gJ3BsYWlubGlua3MnO1xuXHRcdFx0Zm9vdGVyc3Bhbi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzIuNGVtJztcblx0XHRcdGZvb3RlcnNwYW4uc3R5bGUuZm9udFNpemUgPSAnOTAlJztcblx0XHRcdGNvbnN0IGZvb3RlcmEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRmb290ZXJhLnNldEF0dHJpYnV0ZSgnaHJlZicsICcjdHctcmVzZXQtYWxsJyk7XG5cdFx0XHRmb290ZXJhLnNldEF0dHJpYnV0ZSgnaWQnLCAndHdpbmtsZS1jb25maWctcmVzZXRhbGwnKTtcblx0XHRcdGZvb3RlcmEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBUd2lua2xlLmNvbmZpZy5yZXNldEFsbFByZWZzLCBmYWxzZSk7XG5cdFx0XHRmb290ZXJhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygn5oGi5aSN6buY6K6kJywgJ+aBouW+qemgkOiorScpKSk7XG5cdFx0XHRmb290ZXJzcGFuLmFwcGVuZENoaWxkKGZvb3RlcmEpO1xuXHRcdFx0Zm9vdGVyYm94LmFwcGVuZENoaWxkKGZvb3RlcnNwYW4pO1xuXHRcdFx0Y29udGVudGZvcm0uYXBwZW5kQ2hpbGQoZm9vdGVyYm94KTtcblx0XHRcdC8vIHNpbmNlIGFsbCB0aGUgc2VjdGlvbiBoZWFkZXJzIGV4aXN0IG5vdywgd2UgY2FuIHRyeSBnb2luZyB0byB0aGUgcmVxdWVzdGVkIGFuY2hvclxuXHRcdFx0aWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoKSB7XG5cdFx0XHRcdGNvbnN0IGxvYyA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0XHR3aW5kb3cubG9jYXRpb24uaGFzaCA9ICcnO1xuXHRcdFx0XHR3aW5kb3cubG9jYXRpb24uaGFzaCA9IGxvYztcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0bXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VOdW1iZXInKSA9PT0gbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VJZHMnKS51c2VyICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykuaW5kZXhPZihtdy5jb25maWcuZ2V0KCd3Z1VzZXJOYW1lJykpID09PSAwICYmXG5cdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykuc2xpY2UoLTMpID09PSAnLmpzJ1xuXHRcdCkge1xuXHRcdFx0Y29uc3QgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHQvLyBTdHlsZWQgaW4gdHdpbmtsZS5jc3Ncblx0XHRcdGJveC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R3aW5rbGUtY29uZmlnLWhlYWRlcmJveCcpO1xuXHRcdFx0bGV0IGxpbms7XG5cdFx0XHRjb25zdCBzY3JpcHRQYWdlTmFtZSA9IG13LmNvbmZpZ1xuXHRcdFx0XHQuZ2V0KCd3Z1BhZ2VOYW1lJylcblx0XHRcdFx0LnNsaWNlKFxuXHRcdFx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKS5sYXN0SW5kZXhPZignLycpICsgMSxcblx0XHRcdFx0XHRtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykubGFzdEluZGV4T2YoJy5qcycpXG5cdFx0XHRcdCk7XG5cdFx0XHRpZiAoc2NyaXB0UGFnZU5hbWUgPT09ICd0d2lua2xlb3B0aW9ucycpIHtcblx0XHRcdFx0Ly8gcGxhY2UgXCJ3aHkgbm90IHRyeSB0aGUgcHJlZmVyZW5jZSBwYW5lbFwiIG5vdGljZVxuXHRcdFx0XHRib3guc2V0QXR0cmlidXRlKCdjbGFzcycsICdjb25maWctdHdvcHQtYm94Jyk7XG5cdFx0XHRcdGlmIChtdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpID4gMCkge1xuXHRcdFx0XHRcdC8vIHBhZ2UgZXhpc3RzXG5cdFx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKFxuXHRcdFx0XHRcdFx0ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn6L+Z6aG15YyF5ZCr5oKo55qEVHdpbmtsZeWPguaVsOiuvue9ru+8jOaCqOWPr+S9v+eUqCcsXG5cdFx0XHRcdFx0XHRcdFx0J+mAmemggeWMheWQq+aCqOeahFR3aW5rbGXlgY/lpb3oqK3lrprvvIzmgqjlj6/kvb/nlKgnXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHBhZ2UgZG9lcyBub3QgZXhpc3Rcblx0XHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoXG5cdFx0XHRcdFx0XHRkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmgqjlj6/phY3nva7mgqjnmoRUd2lua2xl77yM6YCa6L+H5L2/55SoJywgJ+aCqOWPr+mFjee9ruaCqOeahFR3aW5rbGXvvIzpgJrpgY7kvb/nlKgnKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChUd2lua2xlLmdldFByZWYoJ2NvbmZpZ1BhZ2UnKSkpO1xuXHRcdFx0XHRsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygnVHdpbmtsZeWPguaVsOiuvue9rumdouadvycsICdUd2lua2xl5YGP5aW96Kit5a6a6Z2i5p2/JykpKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKGxpbmspO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUod2luZG93LndnVUxTKCfvvIzmiJbnm7TmjqXnvJbovpHmnKzpobXjgIInLCAn77yM5oiW55u05o6l57eo6Lyv5pys6aCB44CCJykpKTtcblx0XHRcdFx0JChib3gpLmluc2VydEFmdGVyKCRib2R5LmZpbmQoJyNjb250ZW50U3ViJykpO1xuXHRcdFx0fSBlbHNlIGlmIChbJ3ZlY3RvcicsICd2ZWN0b3ItMjAyMicsICdnb25nYmknLCAnY2l0aXplbicsICdjb21tb24nXS5pbmNsdWRlcyhzY3JpcHRQYWdlTmFtZSkpIHtcblx0XHRcdFx0Ly8gcGxhY2UgXCJMb29raW5nIGZvciBUd2lua2xlIG9wdGlvbnM/XCIgbm90aWNlXG5cdFx0XHRcdGJveC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2NvbmZpZy11c2Vyc2tpbi1ib3gnKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKFxuXHRcdFx0XHRcdGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfoi6Xmgqjmg7PphY3nva7mgqjnmoRUd2lua2xl77yM6K+35L2/55SoJywgJ+iLpeaCqOaDs+mFjee9ruaCqOeahFR3aW5rbGXvvIzoq4vkvb/nlKgnKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0bGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChUd2lua2xlLmdldFByZWYoJ2NvbmZpZ1BhZ2UnKSkpO1xuXHRcdFx0XHRsaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHdpbmRvdy53Z1VMUygnVHdpbmtsZeWPguaVsOiuvue9rumdouadvycsICdUd2lua2xl5YGP5aW96Kit5a6a6Z2i5p2/JykpKTtcblx0XHRcdFx0Ym94LmFwcGVuZENoaWxkKGxpbmspO1xuXHRcdFx0XHRib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ+OAgicpKTtcblx0XHRcdFx0JChib3gpLmluc2VydEFmdGVyKCRib2R5LmZpbmQoJyNjb250ZW50U3ViJykpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0Ly8gY3VzdG9tIGxpc3QtcmVsYXRlZCBzdHVmZlxuXHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nID0ge307XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuYWRkUm93ID0gKGRsZ3RhYmxlLCB2YWx1ZSwgbGFiZWwpID0+IHtcblx0XHRjb25zdCBjb250ZW50dHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuXHRcdC8vIFwicmVtb3ZlXCIgYnV0dG9uXG5cdFx0bGV0IGNvbnRlbnR0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0Y29uc3QgcmVtb3ZlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0cmVtb3ZlQnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcblx0XHRyZW1vdmVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdCQoY29udGVudHRyKS5yZW1vdmUoKTtcblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0cmVtb3ZlQnV0dG9uLnRleHRDb250ZW50ID0gJ+enu+mZpCc7XG5cdFx0Y29udGVudHRkLmFwcGVuZENoaWxkKHJlbW92ZUJ1dHRvbik7XG5cdFx0Y29udGVudHRyLmFwcGVuZENoaWxkKGNvbnRlbnR0ZCk7XG5cdFx0Ly8gdmFsdWUgaW5wdXQgYm94XG5cdFx0Y29udGVudHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcblx0XHRsZXQgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XG5cdFx0aW5wdXQuY2xhc3NOYW1lID0gJ3R3aW5rbGUtY29uZmlnLWN1c3RvbWxpc3QtdmFsdWUnO1xuXHRcdGlucHV0LnN0eWxlLndpZHRoID0gJzk3JSc7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xuXHRcdH1cblx0XHRjb250ZW50dGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdGNvbnRlbnR0ci5hcHBlbmRDaGlsZChjb250ZW50dGQpO1xuXHRcdC8vIGxhYmVsIGlucHV0IGJveFxuXHRcdGNvbnRlbnR0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7XG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XG5cdFx0aW5wdXQuY2xhc3NOYW1lID0gJ3R3aW5rbGUtY29uZmlnLWN1c3RvbWxpc3QtbGFiZWwnO1xuXHRcdGlucHV0LnN0eWxlLndpZHRoID0gJzk4JSc7XG5cdFx0aWYgKGxhYmVsKSB7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgbGFiZWwpO1xuXHRcdH1cblx0XHRjb250ZW50dGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuXHRcdGNvbnRlbnR0ci5hcHBlbmRDaGlsZChjb250ZW50dGQpO1xuXHRcdGRsZ3RhYmxlLmFwcGVuZENoaWxkKGNvbnRlbnR0cik7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuZGlzcGxheSA9IChlKSA9PiB7XG5cdFx0Y29uc3QgJHByZWZidXR0b24gPSAkKGUudGFyZ2V0KTtcblx0XHRjb25zdCBjdXJ2YWx1ZSA9ICRwcmVmYnV0dG9uLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0Y29uc3QgY3VycHJlZiA9ICRwcmVmYnV0dG9uLmRhdGEoJ3ByZWYnKTtcblx0XHRjb25zdCBkaWFsb2cgPSBuZXcgTW9yZWJpdHMuc2ltcGxlV2luZG93KDcyMCwgNDAwKTtcblx0XHRkaWFsb2cuc2V0VGl0bGUoY3VycHJlZi5sYWJlbCk7XG5cdFx0ZGlhbG9nLnNldFNjcmlwdE5hbWUod2luZG93LndnVUxTKCdUd2lua2xl5Y+C5pWw6K6+572uJywgJ1R3aW5rbGXlgY/lpb3oqK3lrponKSk7XG5cdFx0Y29uc3QgZGlhbG9nY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdGNvbnN0IGRsZ3RhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcblx0XHRkbGd0YWJsZS5jbGFzc05hbWUgPSAnd2lraXRhYmxlJztcblx0XHRkbGd0YWJsZS5zdHlsZS5tYXJnaW4gPSAnMS40ZW0gMWVtJztcblx0XHRkbGd0YWJsZS5zdHlsZS53aWR0aCA9ICc5NyUnO1xuXHRcdGNvbnN0IGRsZ3Rib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTtcblx0XHQvLyBoZWFkZXIgcm93XG5cdFx0bGV0IGRsZ3RyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcblx0XHQvLyB0b3AtbGVmdCBjZWxsXG5cdFx0bGV0IGRsZ3RoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGgnKTtcblx0XHRkbGd0aC5zdHlsZS53aWR0aCA9ICc1JSc7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdC8vIHZhbHVlIGNvbHVtbiBoZWFkZXJcblx0XHRkbGd0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoJyk7XG5cdFx0ZGxndGguc3R5bGUud2lkdGggPSAnMzUlJztcblx0XHRkbGd0aC50ZXh0Q29udGVudCA9IGN1cnByZWYuY3VzdG9tTGlzdFZhbHVlVGl0bGUgPz8gd2luZG93LndnVUxTKCfmlbDlgLwnLCAn5pW45YC8Jyk7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdC8vIGxhYmVsIGNvbHVtbiBoZWFkZXJcblx0XHRkbGd0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoJyk7XG5cdFx0ZGxndGguc3R5bGUud2lkdGggPSAnNjAlJztcblx0XHRkbGd0aC50ZXh0Q29udGVudCA9IGN1cnByZWYuY3VzdG9tTGlzdExhYmVsVGl0bGUgPz8gd2luZG93LndnVUxTKCfmoIfnrb4nLCAn5qiZ57GkJyk7XG5cdFx0ZGxndHIuYXBwZW5kQ2hpbGQoZGxndGgpO1xuXHRcdGRsZ3Rib2R5LmFwcGVuZENoaWxkKGRsZ3RyKTtcblx0XHQvLyBjb250ZW50IHJvd3Ncblx0XHRsZXQgZ290Um93ID0gZmFsc2U7XG5cdFx0Zm9yIChjb25zdCB2IG9mIGN1cnZhbHVlKSB7XG5cdFx0XHRnb3RSb3cgPSB0cnVlO1xuXHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5hZGRSb3coZGxndGJvZHksIHYudmFsdWUsIHYubGFiZWwpO1xuXHRcdH1cblx0XHQvLyBpZiB0aGVyZSBhcmUgbm8gdmFsdWVzIHByZXNlbnQsIGFkZCBhIGJsYW5rIHJvdyB0byBzdGFydCB0aGUgdXNlciBvZmZcblx0XHRpZiAoIWdvdFJvdykge1xuXHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5hZGRSb3coZGxndGJvZHkpO1xuXHRcdH1cblx0XHQvLyBmaW5hbCBcImFkZFwiIGJ1dHRvblxuXHRcdGNvbnN0IGRsZ3Rmb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGZvb3QnKTtcblx0XHRkbGd0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG5cdFx0Y29uc3QgZGxndGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuXHRcdGRsZ3RkLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICczJyk7XG5cdFx0Y29uc3QgYWRkQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0YWRkQnV0dG9uLnN0eWxlLm1pbldpZHRoID0gJzhlbSc7XG5cdFx0YWRkQnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcblx0XHRhZGRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuYWRkUm93KGRsZ3Rib2R5KTtcblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0YWRkQnV0dG9uLnRleHRDb250ZW50ID0gJ+a3u+WKoCc7XG5cdFx0ZGxndGQuYXBwZW5kQ2hpbGQoYWRkQnV0dG9uKTtcblx0XHRkbGd0ci5hcHBlbmRDaGlsZChkbGd0ZCk7XG5cdFx0ZGxndGZvb3QuYXBwZW5kQ2hpbGQoZGxndHIpO1xuXHRcdGRsZ3RhYmxlLmFwcGVuZENoaWxkKGRsZ3Rib2R5KTtcblx0XHRkbGd0YWJsZS5hcHBlbmRDaGlsZChkbGd0Zm9vdCk7XG5cdFx0ZGlhbG9nY29udGVudC5hcHBlbmRDaGlsZChkbGd0YWJsZSk7XG5cdFx0Ly8gYnV0dG9ucGFuZSBidXR0b25zOiBbU2F2ZSBjaGFuZ2VzXSBbUmVzZXRdIFtDYW5jZWxdXG5cdFx0bGV0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuXHRcdGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7IC8vIHNvIE1vcmViaXRzLnNpbXBsZVdpbmRvdyBwdXRzIHRoZSBidXR0b24gaW4gdGhlIGJ1dHRvbiBwYW5lXG5cdFx0YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHQnY2xpY2snLFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLnNhdmUoJHByZWZidXR0b24sIGRsZ3Rib2R5KTtcblx0XHRcdFx0ZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHR9LFxuXHRcdFx0ZmFsc2Vcblx0XHQpO1xuXHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9IHdpbmRvdy53Z1VMUygn5L+d5a2Y5L+u5pS5JywgJ+WEsuWtmOS/ruaUuScpO1xuXHRcdGRpYWxvZ2NvbnRlbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcblx0XHRidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRidXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ3N1Ym1pdCcpOyAvLyBzbyBNb3JlYml0cy5zaW1wbGVXaW5kb3cgcHV0cyB0aGUgYnV0dG9uIGluIHRoZSBidXR0b24gcGFuZVxuXHRcdGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0J2NsaWNrJyxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0VHdpbmtsZS5jb25maWcubGlzdERpYWxvZy5yZXNldCgkcHJlZmJ1dHRvbiwgZGxndGJvZHkpO1xuXHRcdFx0fSxcblx0XHRcdGZhbHNlXG5cdFx0KTtcblx0XHRidXR0b24udGV4dENvbnRlbnQgPSB3aW5kb3cud2dVTFMoJ+WkjeS9jScsICflvqnkvY0nKTtcblx0XHRkaWFsb2djb250ZW50LmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cdFx0YnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5cdFx0YnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdzdWJtaXQnKTsgLy8gc28gTW9yZWJpdHMuc2ltcGxlV2luZG93IHB1dHMgdGhlIGJ1dHRvbiBpbiB0aGUgYnV0dG9uIHBhbmVcblx0XHRidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdCdjbGljaycsXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGRpYWxvZy5jbG9zZSgpOyAvLyB0aGUgZXZlbnQgcGFyYW1ldGVyIG9uIHRoaXMgZnVuY3Rpb24gc2VlbXMgdG8gYmUgYnJva2VuXG5cdFx0XHR9LFxuXHRcdFx0ZmFsc2Vcblx0XHQpO1xuXHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9ICflj5bmtognO1xuXHRcdGRpYWxvZ2NvbnRlbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcblx0XHRkaWFsb2cuc2V0Q29udGVudChkaWFsb2djb250ZW50KTtcblx0XHRkaWFsb2cuZGlzcGxheSgpO1xuXHR9O1xuXHQvLyBSZXNldHMgdGhlIGRhdGEgdmFsdWUsIHJlLXBvcHVsYXRlcyBiYXNlZCBvbiB0aGUgbmV3IChkZWZhdWx0KSB2YWx1ZSwgdGhlbiBzYXZlcyB0aGVcblx0Ly8gb2xkIGRhdGEgdmFsdWUgYWdhaW4gKGxlc3Mgc3VycHJpc2luZyBiZWhhdmlvdXIpXG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cucmVzZXQgPSAoYnV0dG9uLCB0Ym9keSkgPT4ge1xuXHRcdC8vIHJlc2V0IHZhbHVlIG9uIGJ1dHRvblxuXHRcdGNvbnN0ICRidXR0b24gPSAkKGJ1dHRvbik7XG5cdFx0Y29uc3QgY3VycHJlZiA9ICRidXR0b24uZGF0YSgncHJlZicpO1xuXHRcdGNvbnN0IG9sZHZhbHVlID0gJGJ1dHRvbi5kYXRhKCd2YWx1ZScpO1xuXHRcdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZihjdXJwcmVmKTtcblx0XHQvLyByZXNldCBmb3JtXG5cdFx0Y29uc3QgJHRib2R5ID0gJCh0Ym9keSk7XG5cdFx0JHRib2R5LmZpbmQoJ3RyJykuc2xpY2UoMSkucmVtb3ZlKCk7IC8vIGFsbCByb3dzIGV4Y2VwdCB0aGUgZmlyc3QgKGhlYWRlcikgcm93XG5cdFx0Ly8gYWRkIHRoZSBuZXcgdmFsdWVzXG5cdFx0Y29uc3QgY3VydmFsdWUgPSAkYnV0dG9uLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0Zm9yIChjb25zdCB2IG9mIGN1cnZhbHVlKSB7XG5cdFx0XHRUd2lua2xlLmNvbmZpZy5saXN0RGlhbG9nLmFkZFJvdyh0Ym9keSwgdi52YWx1ZSwgdi5sYWJlbCk7XG5cdFx0fVxuXHRcdC8vIHNhdmUgdGhlIG9sZCB2YWx1ZVxuXHRcdCRidXR0b24uZGF0YSgndmFsdWUnLCBvbGR2YWx1ZSk7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLmxpc3REaWFsb2cuc2F2ZSA9IChidXR0b24sIHRib2R5KSA9PiB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cdFx0bGV0IGN1cnJlbnQgPSB7fTtcblx0XHQkKHRib2R5KVxuXHRcdFx0LmZpbmQoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcblx0XHRcdC5lYWNoKChpbnB1dGtleSwgaW5wdXQpID0+IHtcblx0XHRcdFx0aWYgKCQoaW5wdXQpLmhhc0NsYXNzKCd0d2lua2xlLWNvbmZpZy1jdXN0b21saXN0LXZhbHVlJykpIHtcblx0XHRcdFx0XHRjdXJyZW50ID0ge1xuXHRcdFx0XHRcdFx0dmFsdWU6IGlucHV0LnZhbHVlLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudC5sYWJlbCA9IGlucHV0LnZhbHVlO1xuXHRcdFx0XHRcdC8vIGV4Y2x1ZGUgdG90YWxseSBlbXB0eSByb3dzXG5cdFx0XHRcdFx0aWYgKGN1cnJlbnQudmFsdWUgfHwgY3VycmVudC5sYWJlbCkge1xuXHRcdFx0XHRcdFx0cmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY3VycmVudDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdCQoYnV0dG9uKS5kYXRhKCd2YWx1ZScsIHJlc3VsdCk7XG5cdH07XG5cdC8vIHJlc2V0L3Jlc3RvcmUgZGVmYXVsdHNcblx0VHdpbmtsZS5jb25maWcucmVzZXRQcmVmTGluayA9IChlKSA9PiB7XG5cdFx0Y29uc3Qgd2FudGVkcHJlZiA9IGUudGFyZ2V0LmlkLnNsaWNlKDIxKTsgLy8gXCJ0d2lua2xlLWNvbmZpZy1yZXNldC1cIiBwcmVmaXggaXMgc3RyaXBwZWRcblx0XHQvLyBzZWFyY2ggdGFjdGljc1xuXHRcdCQoVHdpbmtsZS5jb25maWcuc2VjdGlvbnMpLmVhY2goKHNlY3Rpb25rZXksIHNlY3Rpb24pID0+IHtcblx0XHRcdGlmIChzZWN0aW9uLmhpZGRlbiB8fCAoc2VjdGlvbi5hZG1pbk9ubHkgJiYgIU1vcmViaXRzLnVzZXJJc1N5c29wKSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gY29udGludWU6IHNraXAgaW1wb3NzaWJpbGl0aWVzXG5cdFx0XHR9XG5cblx0XHRcdGxldCBmb3VuZGl0ID0gZmFsc2U7XG5cdFx0XHQkKHNlY3Rpb24ucHJlZmVyZW5jZXMpLmVhY2goKHByZWZrZXksIHByZWYpID0+IHtcblx0XHRcdFx0aWYgKHByZWYubmFtZSAhPT0gd2FudGVkcHJlZikge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlOyAvLyBjb250aW51ZVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0VHdpbmtsZS5jb25maWcucmVzZXRQcmVmKHByZWYpO1xuXHRcdFx0XHRmb3VuZGl0ID0gdHJ1ZTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBicmVha1xuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChmb3VuZGl0KSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTsgLy8gYnJlYWtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBmYWxzZTsgLy8gc3RvcCBsaW5rIGZyb20gc2Nyb2xsaW5nIHBhZ2Vcblx0fTtcblxuXHRUd2lua2xlLmNvbmZpZy5yZXNldFByZWYgPSAocHJlZikgPT4ge1xuXHRcdHN3aXRjaCAocHJlZi50eXBlKSB7XG5cdFx0XHRjYXNlICdib29sZWFuJzpcblx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7cHJlZi5uYW1lfWApLmNoZWNrZWQgPSBUd2lua2xlLmRlZmF1bHRDb25maWdbcHJlZi5uYW1lXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdzdHJpbmcnOlxuXHRcdFx0Y2FzZSAnaW50ZWdlcic6XG5cdFx0XHRjYXNlICdlbnVtJzpcblx0XHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7cHJlZi5uYW1lfWApLnZhbHVlID0gVHdpbmtsZS5kZWZhdWx0Q29uZmlnW3ByZWYubmFtZV07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2V0Jzpcblx0XHRcdFx0Zm9yIChjb25zdCBbaXRlbWtleV0gb2YgT2JqZWN0LmVudHJpZXMocHJlZi5zZXRWYWx1ZXMpKSB7XG5cdFx0XHRcdFx0aWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3ByZWYubmFtZX1fJHtpdGVta2V5fWApKSB7XG5cdFx0XHRcdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtwcmVmLm5hbWV9XyR7aXRlbWtleX1gKS5jaGVja2VkID1cblx0XHRcdFx0XHRcdFx0VHdpbmtsZS5kZWZhdWx0Q29uZmlnW3ByZWYubmFtZV0uaW5jbHVkZXMoaXRlbWtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnY3VzdG9tTGlzdCc6XG5cdFx0XHRcdCQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7cHJlZi5uYW1lfWApKS5kYXRhKCd2YWx1ZScsIFR3aW5rbGUuZGVmYXVsdENvbmZpZ1twcmVmLm5hbWVdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR2b2lkIG13Lm5vdGlmeShgdHdpbmtsZWNvbmZpZzogdW5rbm93biBkYXRhIHR5cGUgZm9yIHByZWZlcmVuY2UgJHtwcmVmLm5hbWV9YCwge1xuXHRcdFx0XHRcdHR5cGU6ICd3YXJuJyxcblx0XHRcdFx0XHR0YWc6ICd0d2lua2xlY29uZmlnJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblx0VHdpbmtsZS5jb25maWcucmVzZXRBbGxQcmVmcyA9ICgpID0+IHtcblx0XHQvLyBubyBjb25maXJtYXRpb24gbWVzc2FnZSAtIHRoZSB1c2VyIGNhbiBqdXN0IHJlZnJlc2gvY2xvc2UgdGhlIHBhZ2UgdG8gYWJvcnRcblx0XHQkKFR3aW5rbGUuY29uZmlnLnNlY3Rpb25zKS5lYWNoKChzZWN0aW9ua2V5LCBzZWN0aW9uKSA9PiB7XG5cdFx0XHRpZiAoc2VjdGlvbi5oaWRkZW4gfHwgKHNlY3Rpb24uYWRtaW5Pbmx5ICYmICFNb3JlYml0cy51c2VySXNTeXNvcCkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7IC8vIGNvbnRpbnVlOiBza2lwIGltcG9zc2liaWxpdGllc1xuXHRcdFx0fVxuXG5cdFx0XHQkKHNlY3Rpb24ucHJlZmVyZW5jZXMpLmVhY2goKHByZWZrZXksIHByZWYpID0+IHtcblx0XHRcdFx0aWYgKCFwcmVmLmFkbWluT25seSB8fCBNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0XHRcdFR3aW5rbGUuY29uZmlnLnJlc2V0UHJlZihwcmVmKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9KTtcblx0XHRyZXR1cm4gZmFsc2U7IC8vIHN0b3AgbGluayBmcm9tIHNjcm9sbGluZyBwYWdlXG5cdH07XG5cblx0VHdpbmtsZS5jb25maWcuc2F2ZSA9IChlKSA9PiB7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLmluaXQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3R3aW5rbGUtY29uZmlnLWNvbnRlbnQnKSk7XG5cdFx0Y29uc3QgdXNlcmpzID0gYCR7bXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJylbbXcuY29uZmlnLmdldCgnd2dOYW1lc3BhY2VJZHMnKS51c2VyXX06JHttdy5jb25maWcuZ2V0KFxuXHRcdFx0J3dnVXNlck5hbWUnXG5cdFx0KX0vdHdpbmtsZW9wdGlvbnMuanNgO1xuXHRcdGNvbnN0IHFpdXdlbl9wYWdlID0gbmV3IE1vcmViaXRzLndpa2kucGFnZSh1c2VyanMsIHdpbmRvdy53Z1VMUygn5L+d5a2Y5Y+C5pWw6K6+572u5YiwICcsICflhLLlrZjlgY/lpb3oqK3lrprliLAgJykgKyB1c2VyanMpO1xuXHRcdHFpdXdlbl9wYWdlLnNldENhbGxiYWNrUGFyYW1ldGVycyhlLnRhcmdldCk7XG5cdFx0cWl1d2VuX3BhZ2UubG9hZChUd2lua2xlLmNvbmZpZy53cml0ZVByZWZzKTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH07XG5cdFR3aW5rbGUuY29uZmlnLndyaXRlUHJlZnMgPSAocGFnZW9iaikgPT4ge1xuXHRcdGNvbnN0IGZvcm0gPSBwYWdlb2JqLmdldENhbGxiYWNrUGFyYW1ldGVycygpO1xuXHRcdC8vIHRoaXMgaXMgdGhlIG9iamVjdCB3aGljaCBnZXRzIHNlcmlhbGl6ZWQgaW50byBKU09OOyBvbmx5XG5cdFx0Ly8gcHJlZmVyZW5jZXMgdGhhdCB0aGlzIHNjcmlwdCBrbm93cyBhYm91dCBhcmUga2VwdFxuXHRcdGNvbnN0IG5ld0NvbmZpZyA9IHtcblx0XHRcdG9wdGlvbnNWZXJzaW9uOiAyLjEsXG5cdFx0fTtcblx0XHQvLyBhIGNvbXBhcmlzb24gZnVuY3Rpb24gaXMgbmVlZGVkIGxhdGVyIG9uXG5cdFx0Ly8gaXQgaXMganVzdCBlbm91Z2ggZm9yIG91ciBwdXJwb3NlcyAoaS5lLiBjb21wYXJpbmcgc3RyaW5ncywgbnVtYmVycywgYm9vbGVhbnMsXG5cdFx0Ly8gYXJyYXlzIG9mIHN0cmluZ3MsIGFuZCBhcnJheXMgb2YgeyB2YWx1ZSwgbGFiZWwgfSlcblx0XHQvLyBhbmQgaXQgaXMgbm90IHZlcnkgcm9idXN0OiBlLmcuIGNvbXBhcmUoWzJdLCBbXCIyXCJdKSA9PT0gdHJ1ZSwgYW5kXG5cdFx0Ly8gY29tcGFyZSh7fSwge30pID09PSBmYWxzZSwgYnV0IGl0J3MgZ29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3NlcyBoZXJlXG5cdFx0Y29uc3QgY29tcGFyZSA9IChhLCBiKSA9PiB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuXHRcdFx0XHRpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGEuc29ydCgpO1xuXHRcdFx0XHRiLnNvcnQoKTtcblx0XHRcdFx0Zm9yIChjb25zdCBbaSwgZWxlbWVudF0gb2YgYS5lbnRyaWVzKCkpIHtcblx0XHRcdFx0XHQvLyBjb21wYXJpc29uIG9mIHRoZSB0d28gcHJvcGVydGllcyBvZiBjdXN0b20gbGlzdHNcblx0XHRcdFx0XHRpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnICYmIChlbGVtZW50LmxhYmVsICE9PSBiW2ldLmxhYmVsIHx8IGVsZW1lbnQudmFsdWUgIT09IGJbaV0udmFsdWUpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChlbGVtZW50LnRvU3RyaW5nKCkgIT09IGJbaV0udG9TdHJpbmcoKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBhID09PSBiO1xuXHRcdH07XG5cdFx0JChUd2lua2xlLmNvbmZpZy5zZWN0aW9ucykuZWFjaCgoc2VjdGlvbmtleSwgc2VjdGlvbikgPT4ge1xuXHRcdFx0aWYgKHNlY3Rpb24uYWRtaW5Pbmx5ICYmICFNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0XHRyZXR1cm47IC8vIGkuZS4gXCJjb250aW51ZVwiIGluIHRoaXMgY29udGV4dFxuXHRcdFx0fVxuXHRcdFx0Ly8gcmVhY2ggZWFjaCBvZiB0aGUgcHJlZmVyZW5jZXMgZnJvbSB0aGUgZm9ybVxuXHRcdFx0JChzZWN0aW9uLnByZWZlcmVuY2VzKS5lYWNoKChwcmVma2V5LCBwcmVmKSA9PiB7XG5cdFx0XHRcdGxldCB1c2VyVmFsdWU7IC8vID0gdW5kZWZpbmVkXG5cdFx0XHRcdC8vIG9ubHkgcmVhZCBmb3JtIHZhbHVlcyBmb3IgdGhvc2UgcHJlZnMgdGhhdCBoYXZlIHRoZW1cblx0XHRcdFx0aWYgKCFwcmVmLmFkbWluT25seSB8fCBNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0XHRcdGlmICghc2VjdGlvbi5oaWRkZW4pIHtcblx0XHRcdFx0XHRcdHN3aXRjaCAocHJlZi50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nOlxuXHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgZnJvbSB0aGUgY2hlY2tib3hcblx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSBmb3JtW3ByZWYubmFtZV0uY2hlY2tlZDtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSAnc3RyaW5nJzogLy8gcmVhZCBmcm9tIHRoZSBpbnB1dCBib3ggb3IgY29tYm8gYm94XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2VudW0nOlxuXHRcdFx0XHRcdFx0XHRcdHVzZXJWYWx1ZSA9IGZvcm1bcHJlZi5uYW1lXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSAnaW50ZWdlcic6XG5cdFx0XHRcdFx0XHRcdFx0Ly8gcmVhZCBmcm9tIHRoZSBpbnB1dCBib3hcblx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSBOdW1iZXIucGFyc2VJbnQoZm9ybVtwcmVmLm5hbWVdLnZhbHVlLCAxMCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKE51bWJlci5pc05hTih1c2VyVmFsdWUpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMud2Fybihcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkv53lrZgnLCAn5YSy5a2YJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGAke3dpbmRvdy53Z1VMUygn5oKo5Li6ICcsICfmgqjngrogJykgKyBwcmVmLm5hbWV9IOaMh+WumueahOWAvO+8iCR7cHJlZi52YWx1ZX0ke3dpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQn77yJ5LiN5ZCI5rOV77yM5Lya57un57ut5L+d5a2Y5pON5L2c77yM5L2G5q2k5YC85bCG5Lya6Lez6L+H44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQn77yJ5LiN5ZCI5rOV77yM5pyD57m857qM5YSy5a2Y5pON5L2c77yM5L2G5q2k5YC85bCH5pyD6Lez6YGO44CCJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQpfWBcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VyVmFsdWUgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSAnc2V0Jzpcblx0XHRcdFx0XHRcdFx0XHQvLyByZWFkIGZyb20gdGhlIHNldCBvZiBjaGVjayBib3hlc1xuXHRcdFx0XHRcdFx0XHRcdHVzZXJWYWx1ZSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChwcmVmLnNldERpc3BsYXlPcmRlcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gcmVhZCBvbmx5IHRob3NlIGtleXMgc3BlY2lmaWVkIGluIHRoZSBkaXNwbGF5IG9yZGVyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgcHJlZi5zZXREaXNwbGF5T3JkZXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGZvcm1bYCR7cHJlZi5uYW1lfV8ke2l0ZW19YF0uY2hlY2tlZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXJWYWx1ZVt1c2VyVmFsdWUubGVuZ3RoXSA9IGl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gcmVhZCBhbGwgdGhlIGtleXMgaW4gdGhlIGxpc3Qgb2YgdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IFtpdGVta2V5XSBvZiBPYmplY3QuZW50cmllcyhwcmVmLnNldFZhbHVlcykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGZvcm1bYCR7cHJlZi5uYW1lfV8ke2l0ZW1rZXl9YF0uY2hlY2tlZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXJWYWx1ZVt1c2VyVmFsdWUubGVuZ3RoXSA9IGl0ZW1rZXk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2N1c3RvbUxpc3QnOlxuXHRcdFx0XHRcdFx0XHRcdC8vIHJlYWQgZnJvbSB0aGUgalF1ZXJ5IGRhdGEgc3RvcmVkIG9uIHRoZSBidXR0b24gb2JqZWN0XG5cdFx0XHRcdFx0XHRcdFx0dXNlclZhbHVlID0gJChmb3JtW3ByZWYubmFtZV0pLmRhdGEoJ3ZhbHVlJyk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0dm9pZCBtdy5ub3RpZnkoYHR3aW5rbGVjb25maWc6IOacquefpeaVsOaNruexu+Wei++8jOWxnuaApyAke3ByZWYubmFtZX1gLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnd2FybicsXG5cdFx0XHRcdFx0XHRcdFx0XHR0YWc6ICd0d2lua2xlY29uZmlnJyxcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2UgaWYgKFR3aW5rbGUucHJlZnMpIHtcblx0XHRcdFx0XHRcdC8vIFJldGFpbiB0aGUgaGlkZGVuIHByZWZlcmVuY2VzIHRoYXQgbWF5IGhhdmUgY3VzdG9taXNlZCBieSB0aGUgdXNlciBmcm9tIHR3aW5rbGVvcHRpb25zLmpzXG5cdFx0XHRcdFx0XHQvLyB1bmRlZmluZWQgaWYgbm90IHNldFxuXHRcdFx0XHRcdFx0dXNlclZhbHVlID0gVHdpbmtsZS5wcmVmc1twcmVmLm5hbWVdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBvbmx5IHNhdmUgdGhvc2UgcHJlZmVyZW5jZXMgdGhhdCBhcmUgKmRpZmZlcmVudCogZnJvbSB0aGUgZGVmYXVsdFxuXHRcdFx0XHRpZiAodXNlclZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWNvbXBhcmUodXNlclZhbHVlLCBUd2lua2xlLmRlZmF1bHRDb25maWdbcHJlZi5uYW1lXSkpIHtcblx0XHRcdFx0XHRuZXdDb25maWdbcHJlZi5uYW1lXSA9IHVzZXJWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0Y29uc3Qgbm93aWtpID0gJ25vd2lraSc7XG5cdFx0bGV0IHRleHQgPSBgLy8gPCR7bm93aWtpfT5cXG4ke3dpbmRvdy53Z1VMUyhcblx0XHRcdGAvLyB0d2lua2xlb3B0aW9ucy5qc++8mueUqOaIt1R3aW5rbGXlj4LmlbDorr7nva7mlofku7ZcXG4vL1xcbi8vIOazqO+8muS/ruaUueaCqOeahOWPguaVsOiuvue9ruacgOeugOWNleeahOWKnuazleaYr+S9v+eUqFxcbi8vIFR3aW5rbGXlj4LmlbDorr7nva7pnaLmnb/vvIzlnKhbWyR7TW9yZWJpdHMucGFnZU5hbWVOb3JtfV1d44CCXFxuLy9cXG4vLyDov5nkuKrmlofku7bmmK/oh6rliqjnlJ/miJDnmoTvvIzmgqjmiYDlgZrnmoTku7vkvZXkv67mlLnvvIjpmaTkuoZcXG4vLyDku6XkuIDnp43lkIjms5XnmoRKYXZhU2NyaXB055qE5pa55byP5p2l5L+u5pS56L+Z5Lqb5bGe5oCn5YC877yJ5LyaXFxuLy8g5Zyo5LiL5LiA5qyh5oKo54K55Ye74oCc5L+d5a2Y4oCd5pe26KKr6KaG55uW44CCXFxuLy8g5L+u5pS55q2k5paH5Lu25pe277yM6K+36K6w5b6X5L2/55So5ZCI5rOV55qESmF2YVNjcmlwdOOAglxcbmAsXG5cdFx0XHRgLy8gdHdpbmtsZW9wdGlvbnMuanPvvJrkvb/nlKjogIVUd2lua2xl5Y+D5pW46Kit5a6a5qqU5qGIXFxuLy9cXG4vLyDoqLvvvJrkv67mlLnmgqjnmoTlj4PmlbjoqK3lrprmnIDnsKHllq7nmoTovqbms5XmmK/kvb/nlKhcXG4vLyBUd2lua2xl5Y+D5pW46Kit5a6a6Z2i5p2/77yM5ZyoW1ske01vcmViaXRzLnBhZ2VOYW1lTm9ybX1dXeOAglxcbi8vXFxuLy8g6YCZ5YCL5qqU5qGI5piv6Ieq5YuV55Si55Sf55qE77yM5oKo5omA5YGa55qE5Lu75L2V5L+u5pS577yI6Zmk5LqGXFxuLy8g5Lul5LiA56iu5ZCI5rOV55qESmF2YVNjcmlwdOeahOaWueW8j+S+huS/ruaUuemAmeS6m+WxrOaAp+WAvO+8ieacg1xcbi8vIOWcqOS4i+S4gOasoeaCqOm7nuaTiuOAjOWEsuWtmOOAjeaZguiiq+imhuiTi+OAglxcbi8vIOS/ruaUueatpOaqlOahiOaZgu+8jOiri+iomOW+l+S9v+eUqOWQiOazleeahEphdmFTY3JpcHTjgIJcXG5gXG5cdFx0KX1gO1xuXHRcdHRleHQgKz1cblx0XHRcdCdcXG53aW5kb3cuVHdpbmtsZSA9IHdpbmRvdy5Ud2lua2xlIHx8IHt9O1xcbndpbmRvdy5Ud2lua2xlLnByZWZzID0gd2luZG93LlR3aW5rbGUucHJlZnMgfHwge307XFxud2luZG93LlR3aW5rbGUucHJlZnMgPSAnO1xuXHRcdHRleHQgKz0gSlNPTi5zdHJpbmdpZnkobmV3Q29uZmlnLCBudWxsLCAyKTtcblx0XHR0ZXh0ICs9IGA7XFxuXFxuJHt3aW5kb3cud2dVTFMoJy8vIHR3aW5rbGVvcHRpb25zLmpz5Yiw5q2k5Li65q2iXFxuJywgJy8vIHR3aW5rbGVvcHRpb25zLmpz5Yiw5q2k54K65q2iXFxuJyl9Ly8gPC8ke25vd2lraX0+YDtcblx0XHRwYWdlb2JqLnNldFBhZ2VUZXh0KHRleHQpO1xuXHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoXG5cdFx0XHR3aW5kb3cud2dVTFMoJ+S/neWtmFR3aW5rbGXlj4LmlbDorr7nva7vvJrmnaXoh6pbWycsICflhLLlrZhUd2lua2xl5YGP5aW96Kit5a6a77ya5L6G6IeqW1snKSArXG5cdFx0XHRcdE1vcmViaXRzLnBhZ2VOYW1lTm9ybSArXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygnXV3nmoToh6rliqjnvJbovpEnLCAnXV3nmoToh6rli5Xnt6jovK8nKVxuXHRcdCk7XG5cdFx0cGFnZW9iai5zZXRDaGFuZ2VUYWdzKFR3aW5rbGUuY2hhbmdlVGFncyk7XG5cdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0cGFnZW9iai5zYXZlKFR3aW5rbGUuY29uZmlnLnNhdmVTdWNjZXNzKTtcblx0fTtcblx0VHdpbmtsZS5jb25maWcuc2F2ZVN1Y2Nlc3MgPSAocGFnZW9iaikgPT4ge1xuXHRcdHBhZ2VvYmouZ2V0U3RhdHVzRWxlbWVudCgpLmluZm8oJ+aIkOWKnycpO1xuXHRcdGNvbnN0IG5vdGljZWJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdG5vdGljZWJveC5jbGFzc05hbWUgPSAnbXctbWVzc2FnZS1ib3ggbXctbWVzc2FnZS1ib3gtc3VjY2Vzcyc7XG5cdFx0bm90aWNlYm94LnN0eWxlLmZvbnRTaXplID0gJzEwMCUnO1xuXHRcdG5vdGljZWJveC5zdHlsZS5tYXJnaW5Ub3AgPSAnMmVtJztcblx0XHRub3RpY2Vib3guaW5uZXJIVE1MID0gYDxwPjxiPiR7d2luZG93LndnVUxTKFxuXHRcdFx0J+aCqOeahFR3aW5rbGXlj4LmlbDorr7nva7lt7Looqvkv53lrZjjgIInLFxuXHRcdFx0J+aCqOeahFR3aW5rbGXlgY/lpb3oqK3lrprlt7LooqvlhLLlrZjjgIInXG5cdFx0KX08L2I+PC9wPjxwPiR7d2luZG93LndnVUxTKCfopoHnnIvliLDov5nkupvmm7TmlLnvvIzmgqjlj6/og73pnIDopoEnLCAn6KaB55yL5Yiw6YCZ5Lqb5pu05pS577yM5oKo5Y+v6IO96ZyA6KaBJyl9PGEgaHJlZj1cIiR7bXcudXRpbC5nZXRVcmwoXG5cdFx0XHQnUVc6QllQQVNTJ1xuXHRcdCl9XCIgdGl0bGU9XCJRVzpCWVBBU1NcIj48Yj4ke3dpbmRvdy53Z1VMUygn57uV6L+H5rWP6KeI5Zmo57yT5a2YJywgJ+e5numBjueAj+imveWZqOW/q+WPlicpfTwvYj48L2E+44CCPC9wPmA7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLnJvb3QuYXBwZW5kQ2hpbGQobm90aWNlYm94KTtcblx0XHRjb25zdCBub3RpY2VjbGVhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7XG5cdFx0bm90aWNlY2xlYXIuc3R5bGUuY2xlYXIgPSAnYm90aCc7XG5cdFx0TW9yZWJpdHMuc3RhdHVzLnJvb3QuYXBwZW5kQ2hpbGQobm90aWNlY2xlYXIpO1xuXHR9O1xuXHRUd2lua2xlLmFkZEluaXRDYWxsYmFjayhUd2lua2xlLmNvbmZpZy5pbml0KTtcbn0pKGpRdWVyeSk7XG5cbmV4cG9ydCB7fTtcbiIsICJpbXBvcnQgJy4vVHdpbmtsZS5sZXNzJztcblxuKGFzeW5jIGZ1bmN0aW9uIHR3aW5rbGVMb2FkKCkge1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVhcnYnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZXdhcm4nKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJsb2NrJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL2ZyaWVuZGx5dGFsa2JhY2snKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZXNwZWVkeScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlY29weXZpbycpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xleGZkJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVpbWFnZScpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlcHJvdGVjdCcpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy9mcmllbmRseXRhZycpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlc3R1YicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlZGlmZicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xldW5saW5rJyk7XG5cdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL3R3aW5rbGVmbHVmZicpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlYmF0Y2hkZWxldGUnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJhdGNodW5kZWxldGUnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWJhdGNocHJvdGVjdCcpO1xuXHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy90d2lua2xlY2xvc2UnKTtcblx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvdHdpbmtsZWNvbmZpZycpO1xufSkoKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsa0JBQUEsQ0FBQTtBQUFBLElBQUFDLGVBQUFDLE1BQUE7RUFBQSxtQ0FBQTtBQUFBO0lBRUE7QUFDQSxLQUFDLFNBQVNDLFFBQVFDLEdBQUFDLFNBQUc7QUFDcEIsWUFBTUMsUUFBUUYsRUFBRSxNQUFNO0FBQ3RCLFlBQU1HLFdBQVUsQ0FBQztBQUNqQixPQUFBRixVQUFBRyxRQUFPQyxZQUFQSixRQUFPSSxVQUFZRjtBQUduQixVQUFJLENBQUNHLFNBQVNDLGNBQWMsZUFBZSxLQUFLLENBQUNELFNBQVNDLGNBQWMsV0FBVyxHQUFHO0FBQ3JGQyxnQkFBUUMsS0FBSyxxQ0FBcUM7QUFDbEQ7TUFDRDtBQU1BTixlQUFRTyxhQUFhO0FBRXJCUCxlQUFRUSxZQUFZO0FBRXBCUixlQUFRUyxlQUNQO0FB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UCxRQUFBQyxRQUFBLEVBQUExMkMsS0FBQSxPQUFBOG5DLHlCQUFBLEdBQUFELDRCQUFBO0FBQ04sVUFBTTRPLFFBQUFDLFFBQUEsRUFBQTEyQyxLQUFBLE9BQUFpcEMsa0JBQUEsR0FBQUQscUJBQUE7QUFDTixVQUFNeU4sUUFBQUMsUUFBQSxFQUFBMTJDLEtBQUEsT0FBQWt0QyxtQkFBQSxHQUFBRCxzQkFBQTtFQUNQLENBQUE7QUFBQSxXQXJCZ0IwSixjQUFBO0FBQUEsV0FBQUMsYUFBQUMsTUFBQSxNQUFBQyxTQUFBO0VBQUE7QUFBQSxTQUFBSDtBQUFBLEdBQUEsRUFxQmI7IiwKICAibmFtZXMiOiBbInR3aW5rbGVfZXhwb3J0cyIsICJpbml0X3R3aW5rbGUiLCAiX19lc20iLCAidHdpbmtsZSIsICIkIiwgIl93aW5kb3ciLCAiJGJvZHkiLCAiVHdpbmtsZTIiLCAid2luZG93IiwgIlR3aW5rbGUiLCAiTW9yZWJpdHMiLCAidXNlcklzSW5Hcm91cCIsICJjb25zb2xlIiwgIndhcm4iLCAiY2hhbmdlVGFncyIsICJzdW1tYXJ5QWQiLCAiaGF0bm90ZVJlZ2V4IiwgImluaXRDYWxsYmFja3MiLCAiYWRkSW5pdENhbGxiYWNrIiwgImZ1bmMiLCAibmFtZSIsICJsZW5ndGgiLCAiZGVmYXVsdENvbmZpZyIsICJ1c2VyVGFsa1BhZ2VNb2RlIiwgImRpYWxvZ0xhcmdlRm9udCIsICJkaXNhYmxlZE1vZHVsZXMiLCAidXNlcklzU3lzb3AiLCAiZGlzYWJsZWRTeXNvcE1vZHVsZXMiLCAic3BpV2F0Y2hSZXBvcnQiLCAiZGVmYXVsdFRvQmxvY2s2NCIsICJkZWZhdWx0VG9QYXJ0aWFsQmxvY2tzIiwgImJsYW5rVGFsa3BhZ2VPbkluZGVmQmxvY2siLCAid2F0Y2hCbG9ja05vdGljZXMiLCAiY3VzdG9tQmxvY2tSZWFzb25MaXN0IiwgIm9wZW5UYWxrUGFnZSIsICJvcGVuVGFsa1BhZ2VPbkF1dG9SZXZlcnQiLCAicm9sbGJhY2tJblBsYWNlIiwgIm1hcmtSZXZlcnRlZFBhZ2VzQXNNaW5vciIsICJ3YXRjaFJldmVydGVkUGFnZXMiLCAid2F0Y2hSZXZlcnRlZEV4cGlyeSIsICJvZmZlclJlYXNvbk9uTm9ybWFsUmV2ZXJ0IiwgImNvbmZpcm1PbkZsdWZmIiwgInNob3dSb2xsYmFja0xpbmtzIiwgImN1c3RvbVJldmVydFN1bW1hcnkiLCAibm90aWZ5VXNlck9uRGVsaSIsICJkZWxpV2F0Y2hQYWdlIiwgImRlbGlXYXRjaFVzZXIiLCAid2F0Y2hSZXF1ZXN0ZWRQYWdlcyIsICJ3YXRjaFBQVGFnZ2VkUGFnZXMiLCAid2F0Y2hQcm90ZWN0ZWRQYWdlcyIsICJzcGVlZHlTZWxlY3Rpb25TdHlsZSIsICJ3YXRjaFNwZWVkeVBhZ2VzIiwgIndhdGNoU3BlZWR5RXhwaXJ5IiwgIm1hcmtTcGVlZHlQYWdlc0FzUGF0cm9sbGVkIiwgIndhdGNoU3BlZWR5VXNlciIsICJub3RpZnlVc2VyT25TcGVlZHlEZWxldGlvbk5vbWluYXRpb24iLCAid2FyblVzZXJPblNwZWVkeURlbGV0ZSIsICJwcm9tcHRGb3JTcGVlZHlEZWxldGlvblN1bW1hcnkiLCAib3BlblVzZXJUYWxrUGFnZU9uU3BlZWR5RGVsZXRlIiwgImRlbGV0ZVRhbGtQYWdlT25EZWxldGUiLCAiZGVsZXRlUmVkaXJlY3RzT25EZWxldGUiLCAiZGVsZXRlU3lzb3BEZWZhdWx0VG9EZWxldGUiLCAic3BlZWR5V2luZG93SGVpZ2h0IiwgInNwZWVkeVdpbmRvd1dpZHRoIiwgImxvZ1NwZWVkeU5vbWluYXRpb25zIiwgInNwZWVkeUxvZ1BhZ2VOYW1lIiwgIm5vTG9nT25TcGVlZHlOb21pbmF0aW9uIiwgImVubGFyZ2VHN0lucHV0IiwgInVubGlua05hbWVzcGFjZXMiLCAiZGVmYXVsdFdhcm5pbmdHcm91cCIsICJjb21iaW5lZFNpbmdsZXRNZW51cyIsICJ3YXRjaFdhcm5pbmdzIiwgIm9sZFNlbGVjdCIsICJjdXN0b21XYXJuaW5nTGlzdCIsICJhdXRvTWVudUFmdGVyUm9sbGJhY2siLCAibG9nWGZkTm9taW5hdGlvbnMiLCAieGZkTG9nUGFnZU5hbWUiLCAibm9Mb2dPblhmZE5vbWluYXRpb24iLCAieGZkV2F0Y2hEaXNjdXNzaW9uIiwgInhmZFdhdGNoUGFnZSIsICJ4ZmRXYXRjaFVzZXIiLCAibWFya1hmZFBhZ2VzQXNQYXRyb2xsZWQiLCAiRndkQ3NkVG9YZmQiLCAiYWZkRGVmYXVsdENhdGVnb3J5IiwgImFmZEZhbWVEZWZhdWx0UmVhc29uIiwgImFmZFN1YnN0dWJEZWZhdWx0UmVhc29uIiwgIlhmZENsb3NlIiwgImNvcHl2aW9XYXRjaFBhZ2UiLCAiY29weXZpb1dhdGNoVXNlciIsICJtYXJrQ29weXZpb1BhZ2VzQXNQYXRyb2xsZWQiLCAiYXV0b2xldmVsU3RhbGVEYXlzIiwgInJldmVydE1heFJldmlzaW9ucyIsICJiYXRjaE1heCIsICJiYXRjaENodW5rcyIsICJjb25maWdQYWdlIiwgInByb2plY3ROYW1lc3BhY2VOYW1lIiwgIm13IiwgImNvbmZpZyIsICJnZXQiLCAic2FuZGJveFBhZ2UiLCAiZGVsZXRpb25TdW1tYXJ5QWQiLCAicHJvdGVjdGlvblN1bW1hcnlBZCIsICJibG9ja1N1bW1hcnlBZCIsICJncm91cEJ5RGVmYXVsdCIsICJ3YXRjaFRhZ2dlZFBhZ2VzIiwgIndhdGNoTWVyZ2VEaXNjdXNzaW9ucyIsICJtYXJrVGFnZ2VkUGFnZXNBc01pbm9yIiwgIm1hcmtUYWdnZWRQYWdlc0FzUGF0cm9sbGVkIiwgInRhZ0FydGljbGVTb3J0T3JkZXIiLCAiY3VzdG9tVGFnTGlzdCIsICJjdXN0b21GaWxlVGFnTGlzdCIsICJjdXN0b21SZWRpcmVjdFRhZ0xpc3QiLCAid2F0Y2hTdHViYmVkUGFnZXMiLCAibWFya1N0dWJiZWRQYWdlc0FzTWlub3IiLCAibWFya1N0dWJiZWRQYWdlc0FzUGF0cm9sbGVkIiwgInN0dWJBcnRpY2xlU29ydE9yZGVyIiwgImN1c3RvbVN0dWJMaXN0IiwgIm1hcmtUYWxrYmFja0FzTWlub3IiLCAiaW5zZXJ0VGFsa2JhY2tTaWduYXR1cmUiLCAidGFsa2JhY2tIZWFkaW5nIiwgIndnVUxTIiwgIm1haWxIZWFkaW5nIiwgInBvcnRsZXRBcmVhIiwgInBvcnRsZXRJZCIsICJwb3J0bGV0TmFtZSIsICJwb3J0bGV0VHlwZSIsICJwb3J0bGV0TmV4dCIsICJmaW5kIiwgImdldFByZWYiLCAicHJlZnMiLCAiVHdpbmtsZUNvbmZpZyIsICJhZGRQb3J0bGV0IiwgIm5hdmlnYXRpb24iLCAiaWQiLCAidGV4dCIsICJ0eXBlIiwgIm5leHRub2RlaWQiLCAicm9vdCIsICJkb2N1bWVudCIsICJxdWVyeVNlbGVjdG9yIiwgInRlc3QiLCAiY29uY2F0IiwgIml0ZW0iLCAicGFyZW50Tm9kZSIsICJuZXh0bm9kZSIsICJza2luIiwgIm91dGVyTmF2Q2xhc3MiLCAiaW5uZXJEaXZDbGFzcyIsICJvdXRlck5hdiIsICJoZWFkaW5nIiwgImNyZWF0ZUVsZW1lbnQiLCAic2V0QXR0cmlidXRlIiwgImNsYXNzTmFtZSIsICJpbnNlcnRCZWZvcmUiLCAiYXBwZW5kQ2hpbGQiLCAidWwiLCAiaW5jbHVkZXMiLCAiY2hrYm94IiwgInNwYW4iLCAiY3JlYXRlVGV4dE5vZGUiLCAiYSIsICJocmVmIiwgIm9uIiwgImUiLCAicHJldmVudERlZmF1bHQiLCAiaW5uZXJEaXYiLCAiYWRkUG9ydGxldExpbmsiLCAidGFzayIsICJ0b29sdGlwIiwgImxpbmsiLCAidXRpbCIsICJjc3MiLCAiZXYiLCAiY29sbGFwc2libGVUYWJzIiwgImhhbmRsZVJlc2l6ZSIsICJzY3JpcHR1cmwiLCAiZ2V0VXJsIiwgImFjdGlvbiIsICJjdHlwZSIsICJoYXBweSIsICJsb2FkZXIiLCAiZ2V0U2NyaXB0IiwgImZhaWwiLCAibm90aWZ5IiwgInRhZyIsICJhbHdheXMiLCAibG9hZCIsICJhY3RpdmVTcGVjaWFsUGFnZUxpc3QiLCAidG9wIiwgInNlbGYiLCAidXNlckFnZW50IiwgIndpa2kiLCAiYXBpIiwgInNldEFwaVVzZXJBZ2VudCIsICJfaXRlcmF0b3IiLCAiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCAiX3N0ZXAiLCAicyIsICJuIiwgImRvbmUiLCAibW9kdWxlMiIsICJ2YWx1ZSIsICJlcnIiLCAiZiIsICJhZGRDU1MiLCAiaXNWZWN0b3IiLCAic29ydEJ5TmFtZXNwYWNlIiwgImZpcnN0IiwgInNlY29uZCIsICJucyIsICJ0aXRsZSIsICJnZW5lcmF0ZUJhdGNoUGFnZUxpbmtzIiwgImNoZWNrYm94IiwgIiRjaGVja2JveCIsICJodG1sTm9kZSIsICJ2YWwiLCAibmV4dCIsICJwcmVwZW5kIiwgImpRdWVyeSIsICJ0d2lua2xlYXJ2X2V4cG9ydHMiLCAiaW5pdF90d2lua2xlYXJ2IiwgInR3aW5rbGVhcnYiLCAiYXJ2IiwgInVzZXJuYW1lIiwgImlzSVAiLCAiaXNJUEFkZHJlc3MiLCAiY2FsbGJhY2siLCAidWlkIiwgIldpbmRvdyIsICJzaW1wbGVXaW5kb3ciLCAic2V0VGl0bGUiLCAic2V0U2NyaXB0TmFtZSIsICJhZGRGb290ZXJMaW5rIiwgImZvcm0iLCAicXVpY2tGb3JtIiwgImV2YWx1YXRlIiwgImNhdGVnb3JpZXMiLCAiYXBwZW5kIiwgImxhYmVsIiwgImV2ZW50IiwgImNoYW5nZUNhdGVnb3J5IiwgImRpc2FibGVkIiwgInN0eWxlIiwgInJlc3VsdCIsICJyZW5kZXIiLCAic2V0Q29udGVudCIsICJkaXNwbGF5IiwgInF1ZXJ5IiwgImxpc3QiLCAiYmtwcm9wIiwgImZvcm1hdCIsICJia2lwIiwgImJrdXNlcnMiLCAiYXBpb2JqIiwgImJsb2NrbGlzdCIsICJnZXRSZXNwb25zZSIsICJibG9ja3MiLCAiYmxvY2siLCAibWVzc2FnZSIsICJwYXJ0aWFsIiwgInJhbmdlc3RhcnQiLCAicmFuZ2VlbmQiLCAicG9zdCIsICJldnQiLCAiY3JlYXRlRXZlbnQiLCAiaW5pdEV2ZW50IiwgImNhdGVnb3J5IiwgImRpc3BhdGNoRXZlbnQiLCAibHRhX2xpc3QiLCAic29ja21hc3Rlcl9jaGFuZ2VkIiwgInNldF9zb2NrbWFzdGVyIiwgInRhcmdldCIsICJzb2NrbWFzdGVyIiwgInZhbHVlXyIsICJyb290XyIsICJvbGRfYXJlYSIsICJnZXRFbGVtZW50cyIsICJ3b3JrX2FyZWEiLCAicHJldmlld2xpbmsiLCAiY3Vyc29yIiwgInRleHRDb250ZW50IiwgInByZXZpZXciLCAiZWxlbWVudCIsICJzdWJsYWJlbCIsICJtaW4iLCAibWF4IiwgInJlcGxhY2VDaGlsZCIsICJhZGRDbGFzcyIsICJzcGlub3RpY2VwcmV2aWV3ZXIiLCAibGFzdCIsICJnZXRQYXJhbVZhbHVlIiwgImJhZGlkIiwgImdvb2RpZCIsICJwcmV2aWV3ZXIiLCAicmVhc29uIiwgImdldFJlcG9ydFdpa2l0ZXh0IiwgImlucHV0IiwgImdldElucHV0RGF0YSIsICJiZWdpblJlbmRlciIsICJjb21tZW50IiwgImNoZWNrVGl0bGUiLCAicmV2aWQiLCAicGFnZV8iLCAiVGl0bGUiLCAibmFtZXNwYWNlIiwgInBhZ2UiLCAicGFnZXMiLCAibWFwIiwgIm8iLCAiX2l0ZXJhdG9yMiIsICJfc3RlcDIiLCAiZ2V0UHJlZml4ZWRUZXh0IiwgInJlcGxhY2UiLCAidHJpbSIsICJzdHJpbmciLCAiYXBwZW5kUHVuY3R1YXRpb24iLCAidHlwZXMiLCAiYXJ2dHlwZSIsICJ0b0xvd2VyQ2FzZUZpcnN0Q2hhciIsICJoYXNTaGFyZWQiLCAic3BsaWNlIiwgImluZGV4T2YiLCAiY29uZmlybSIsICJqb2luIiwgInNsaWNlIiwgImhpZGVuYW1lIiwgInRvVXBwZXJDYXNlRmlyc3RDaGFyIiwgInNvY2twdXBwZXRzIiwgImFycmF5IiwgInVuaXEiLCAic29jayIsICJpbmRleCIsICJjaGVja3VzZXIiLCAidiIsICJfaW5wdXQkZ29vZGlkIiwgInN1bW1hcnkiLCAic2V0QnV0dG9uc0VuYWJsZWQiLCAic3RhdHVzIiwgImluaXQiLCAiYWN0aW9uQ29tcGxldGVkIiwgInJlZGlyZWN0IiwgIm5vdGljZSIsICJld2lwUGFnZSIsICJzZXRGb2xsb3dSZWRpcmVjdCIsICJnZXRQYWdlVGV4dCIsICIkZXdpcExpbmsiLCAiUmVnRXhwIiwgImVzY2FwZVJlZ0V4cCIsICJnZXRTdGF0dXNFbGVtZW50IiwgImVycm9yIiwgInByaW50VXNlclRleHQiLCAic2V0UGFnZVNlY3Rpb24iLCAic2V0RWRpdFN1bW1hcnkiLCAic2V0Q2hhbmdlVGFncyIsICJzZXRBcHBlbmRUZXh0IiwgInVhYVBhZ2UiLCAiJHVhYUxpbmsiLCAicmVwb3J0cGFnZSIsICJzcGlQYWdlIiwgInNldFdhdGNobGlzdCIsICJhaXZQYWdlIiwgIiRhaXZMaW5rIiwgInR3aW5rbGV3YXJuX2V4cG9ydHMiLCAiaW5pdF90d2lua2xld2FybiIsICJ0d2lua2xld2FybiIsICJyZWxldmFudFVzZXJOYW1lIiwgIiR2YW5kYWxUYWxrTGluayIsICJtYWtlVmFuZGFsVGFsa0xpbmsiLCAicGFnZU5hbWVOb3JtIiwgImFmVGFsa0xpbmsiLCAicGFnZV9wcmVmaXhlZHRpdGxlIiwgInBhZ2VuYW1lIiwgIndyYXBJbm5lciIsICJhdHRyIiwgImV4dHJhUGFyYW0iLCAicmF3dXJsZW5jb2RlIiwgImRpYWxvZyIsICJtYWluX3NlbGVjdCIsICJtYWluX2dyb3VwIiwgImNoYW5nZV9jYXRlZ29yeSIsICJkZWZhdWx0R3JvdXAiLCAiTnVtYmVyIiwgInBhcnNlSW50IiwgInNlbGVjdGVkIiwgImNoYW5nZV9zdWJjYXRlZ29yeSIsICJzaXplIiwgInBsYWNlaG9sZGVyIiwgIm1vcmUiLCAiY2FsbGJhY2tzIiwgInZhbnJldmlkIiwgInRpdGxlcyIsICJwcm9wIiwgInJ2c3RhcnRpZCIsICJydmxpbWl0IiwgInJ2ZGlyIiwgInJ2cHJvcCIsICJyZXZlcnRVc2VyIiwgImdldEF0dHJpYnV0ZSIsICJjaGVja1N0YWxlIiwgInZhbnRpbWVzdGFtcF8iLCAicmV2RGF0ZSIsICJkYXRlIiwgImlzVmFsaWQiLCAiYWRkIiwgImlzQmVmb3JlIiwgIkRhdGUiLCAidmFudGltZXN0YW1wIiwgInJldmlkcyIsICJtZXNzYWdlcyIsICJsZXZlbHMiLCAibGV2ZWwxIiwgImxldmVsMiIsICJzaW5nbGVub3RpY2UiLCAic2luZ2xld2FybiIsICJzdXBwcmVzc0FydGljbGVJblN1bW1hcnkiLCAicHJldl9hcnRpY2xlIiwgInByZXZfcmVhc29uIiwgInRhbGtwYWdlT2JqIiwgInN1Yl9ncm91cCIsICJvbGRfc3VidmFsdWUiLCAib2xkX3N1YnZhbHVlX3JlIiwgImhhc0NoaWxkTm9kZXMiLCAicmVtb3ZlQ2hpbGQiLCAiZmlyc3RDaGlsZCIsICJjcmVhdGVFbnRyaWVzIiwgImNvbnRlbnRzIiwgImNvbnRhaW5lciIsICJ3cmFwSW5PcHRncm91cCIsICJsZXZlbCIsICJjbGllbnQiLCAicHJvZmlsZSIsICJwbGF0Zm9ybSIsICJ3cmFwcGVyT3B0Z3JvdXAiLCAiX2kyIiwgIl9PYmplY3QkZW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJpdGVtS2V5IiwgIml0ZW1Qcm9wZXJ0aWVzIiwgImtleSIsICJ0ZW1wbGF0ZSIsICJlbGVtIiwgImRhdGEiLCAiZWxlbVJlbmRlcmVkIiwgInVuU29ydGVkU2luZ2xldHMiLCAic29ydGVkU2luZ2xldE1lc3NhZ2VzIiwgIl9pdGVyYXRvcjMiLCAia2V5cyIsICJzb3J0IiwgIl9zdGVwMyIsICJfaTMiLCAiX2FyciIsICJsdmwiLCAiX2l0ZXJhdG9yNCIsICJfc3RlcDQiLCAibGV2ZWxHcm91cCIsICJfaXRlcmF0b3I1IiwgIl9zdGVwNSIsICJvcHRncm91cCIsICJhdXRvbGV2ZWxQcm9jIiwgIndpa2l0ZXh0IiwgImxhdGVzdCIsICJkYXRlUHJvY2Vzc2luZyIsICJwYXJhbXMiLCAiYXJ0aWNsZSIsICJhdXRvbGV2ZWxQYXJzZVdpa2l0ZXh0IiwgIl9pdGVyYXRvcjYiLCAiX3N0ZXA2IiwgInBvc3RDYXRlZ29yeUNsZWFudXAiLCAidXNlcnRhbGtfcGFnZSIsICJwYWdlb2JqIiwgIiRub1RhbGtQYWdlTm9kZSIsICJjbG9zZVByZXZpZXciLCAicmVtb3ZlIiwgInNldEVsZW1lbnRUb29sdGlwVmlzaWJpbGl0eSIsICJyZXNldEVsZW1lbnRMYWJlbCIsICJzZWxlY3QyIiwgIndpZHRoIiwgIm1hdGNoZXIiLCAibWF0Y2hlcnMiLCAib3B0Z3JvdXBGdWxsIiwgInRlbXBsYXRlUmVzdWx0IiwgImhpZ2hsaWdodFNlYXJjaE1hdGNoZXMiLCAibGFuZ3VhZ2UiLCAic2VhcmNoaW5nIiwgInF1ZXJ5SW50ZXJjZXB0b3IiLCAiY2hhbmdlIiwgImF1dG9TdGFydCIsICJ0cmlnZ2VyIiwgIm5vdExpbmtlZEFydGljbGUiLCAibm90QXJ0aWNsZSIsICJvdmVycmlkZUVsZW1lbnRMYWJlbCIsICJnZXRXYXJuaW5nV2lraXRleHQiLCAidGVtcGxhdGVOYW1lIiwgImlzQ3VzdG9tIiwgIm5vU2lnbiIsICJzaG93UHJldmlldyIsICJ0ZW1wbGF0ZW5hbWUiLCAibGlua2VkYXJ0aWNsZSIsICJ0ZW1wbGF0ZXRleHQiLCAibWVzc2FnZURhdGEiLCAiaGlzdG9yeV9yZSIsICJoaXN0b3J5IiwgImN1cnJlbnQiLCAiZXhlYyIsICJjdXJyZW50X2RhdGUiLCAiaXNBZnRlciIsICJzdGF0ZWxlbSIsICIkYXV0b2xldmVsTWVzc2FnZSIsICJpc05hTiIsICJhdXRvVGltZW91dCIsICJnZXRUaW1lIiwgIiRsaW5rIiwgImNsb3NlIiwgInN0YXR1c05vZGUiLCAiaW5zZXJ0QWZ0ZXIiLCAibWFpbiIsICJnZXRDYWxsYmFja1BhcmFtZXRlcnMiLCAid2FybmluZ0hpc3RvcnkiLCAibm93IiwgImdldExvYWRUaW1lIiwgInRlbXBsYXRlQW5kTGV2ZWwiLCAiY3VzdG9tUHJvY2VzcyIsICJzcGxpdCIsICJwcmVmaXgiLCAic3ViIiwgIndhcm5pbmdUZXh0IiwgInNlY3Rpb25FeGlzdHMiLCAic2VjdGlvbk51bWJlciIsICJzZWN0aW9ucyIsICJtYXRjaCIsICJkYXRlSGVhZGVyUmVnZXgiLCAibW9udGhIZWFkZXJSZWdleCIsICJyZXZlcnNlIiwgInNvbWUiLCAic2VjIiwgImlkeCIsICJzZXROZXdTZWN0aW9uVGl0bGUiLCAiaW5mbyIsICJtb250aEhlYWRlciIsICJzZXROZXdTZWN0aW9uVGV4dCIsICJuZXdTZWN0aW9uIiwgInVzZXJUYWxrUGFnZSIsICJnZXRGcmFnbWVudCIsICJhbGVydCIsICIkc2VsZWN0ZWRFbCIsICJxaXV3ZW5fcGFnZSIsICJzZXRDYWxsYmFja1BhcmFtZXRlcnMiLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAiaW5pdF9hcGkiLCAicmVxdWlyZSIsICJpbml0TXdBcGkiLCAidHdpbmtsZWJsb2NrX2V4cG9ydHMiLCAiaW1wb3J0X2V4dF9nYWRnZXQyIiwgImluaXRfdHdpbmtsZWJsb2NrIiwgInR3aW5rbGVibG9jayIsICJibG9ja2VkVXNlck5hbWUiLCAibWVudUZvcm1hdHRlZE5hbWVzcGFjZXMiLCAiYmxvY2tBY3Rpb25UZXh0IiwgInJlYmxvY2siLCAidW5ibG9jayIsICJpcCIsICJpc1JhbmdlIiwgInZhbGlkQ0lEUiIsICJjdXJyZW50QmxvY2tJbmZvIiwgImZpZWxkX2Jsb2NrX29wdGlvbnMiLCAiZmllbGRfdGVtcGxhdGVfb3B0aW9ucyIsICJhY3Rpb25maWVsZCIsICJjaGFuZ2VfYWN0aW9uIiwgImhpZGRlbiIsICJjaGVja2VkIiwgInNpeHR5Rm91ciIsICJnZXQ2NCIsICJibG9jazY0ZmllbGQiLCAiY2hhbmdlX2Jsb2NrNjQiLCAiZmV0Y2hVc2VySW5mbyIsICJpc1JlZ2lzdGVyZWQiLCAiJGZvcm0iLCAic2V0RWxlbWVudFZpc2liaWxpdHkiLCAicGFyZW50IiwgInRyYW5zZm9ybUJsb2NrUHJlc2V0cyIsICJibG9jazY0IiwgImFjdGlvbnR5cGUiLCAiZmV0Y2hlZERhdGEiLCAicHJvY2Vzc1VzZXJJbmZvIiwgImZuIiwgImJsb2NraW5mbyIsICJ1c2VyaW5mbyIsICJ1c2VycyIsICJ1c2VyIiwgInVzZXJpZCIsICJ1c2VySXNCb3QiLCAiZ3JvdXBtZW1iZXJzaGlwcyIsICJncm91cCIsICJkaXNhYmxldGFsayIsICJhbGxvd3VzZXJ0YWxrIiwgImhhcmRibG9jayIsICJhbm9ub25seSIsICJoYXNCbG9ja0xvZyIsICJsb2dldmVudHMiLCAiYmxvY2tMb2ciLCAiYmxvY2tMb2dJZCIsICJsb2dpZCIsICJsZXR5cGUiLCAibGVsaW1pdCIsICJsZXRpdGxlIiwgInVzdXNlcnMiLCAidXNwcm9wIiwgInRoZW4iLCAic2F2ZUZpZWxkc2V0IiwgImZpZWxkc2V0IiwgIl9pdGVyYXRvcjciLCAic2VyaWFsaXplQXJyYXkiLCAiX3N0ZXA3IiwgImVsIiwgIiRibG9jazY0IiwgInByaW9yTmFtZSIsICJpcyIsICJvcmlnaW5hbElzUmFuZ2UiLCAicmVnZW5lcmF0ZUZvcm0iLCAidGl0bGVCYXIiLCAibmV4dFNpYmxpbmciLCAibm9kZVZhbHVlIiwgImZpZWxkX3ByZXNldCIsICJmaWVsZF90YWdfb3B0aW9ucyIsICJmaWVsZF91bmJsb2NrX29wdGlvbnMiLCAiJGJsb2NrIiwgImJsb2NrQm94IiwgIiR0ZW1wbGF0ZSIsICJ0ZW1wbGF0ZUJveCIsICIkdGFnIiwgInRhZ0JveCIsICIkcHJvdGVjdCIsICIkcGFydGlhbCIsICJwYXJ0aWFsQm94IiwgIiR1bmJsb2NrIiwgInVuYmxvY2tCb3giLCAiYmxvY2tHcm91cCIsICJibG9ja0dyb3Vwc1BhcnRpYWwiLCAiYmxvY2tHcm91cHMiLCAicHJpb3IiLCAiYmxvY2tQcmVzZXRzSW5mbyIsICJiZyIsICJpc0luZmluaXR5IiwgImV4cGlyeSIsICJmaWx0ZXIiLCAiY2hhbmdlX3ByZXNldCIsICJmaWx0ZXJlZF9ibG9ja19ncm91cHMiLCAiY2hhbmdlX2V4cGlyeSIsICJ0ZW1wbGF0ZV9leHBpcnkiLCAibXVsdGlwbGUiLCAiX2k0IiwgIl9PYmplY3QkZW50cmllczIiLCAibnVtYmVyIiwgImJsb2Nrb3B0aW9ucyIsICJub2NyZWF0ZSIsICJub2VtYWlsIiwgImF1dG9ibG9jayIsICJ3YXRjaHVzZXIiLCAidG9nZ2xlX3NlZV9hbHNvcyIsICJjaGFuZ2VfdGVtcGxhdGUiLCAiYmxvY2tfcmVhc29uIiwgImJsYW5rX2R1cmF0aW9uIiwgIm5vdGFsayIsICJub2VtYWlsX3RlbXBsYXRlIiwgIm5vY3JlYXRlX3RlbXBsYXRlIiwgIiRwcmV2aWV3bGluayIsICJvZmYiLCAic3ViZ3JvdXAiLCAib2xkZmllbGQiLCAiaGlkZSIsICJzaG93IiwgImVycm9yTG9hZGluZyIsICJtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIiwgIm1pbmltdW1JbnB1dExlbmd0aCIsICJhamF4IiwgInVybCIsICJ3aWtpU2NyaXB0IiwgImRhdGFUeXBlIiwgImRlbGF5IiwgIm5ld0Zyb21UZXh0IiwgInRlcm0iLCAiYXBmcm9tIiwgImFwbmFtZXNwYWNlIiwgImFwbGltaXQiLCAicHJvY2Vzc1Jlc3VsdHMiLCAicmVzdWx0cyIsICJhbGxwYWdlcyIsICJ0b1RleHQiLCAidGVtcGxhdGVTZWxlY3Rpb24iLCAiY2hvaWNlIiwgInJlbCIsICJ3b3JkQmVnaW5uaW5nIiwgInNhbWVVc2VyIiwgInN0YXR1c1N0ciIsICIkcmFuZ2VibG9ja2xvZ2xpbmsiLCAiaHRtbCIsICJjYWxlbmRhciIsICJpbmZvU3RyIiwgInVwZGF0ZV9mb3JtIiwgImJsb2NrbG9naW5mbyIsICIkYmxvY2tsb2dsaW5rIiwgImxhc3RCbG9ja0FjdGlvbiIsICJibG9ja0FjdGlvbiIsICJ0aW1lc3RhbXAiLCAiZm9ybWF0VGltZSIsICJkdXJhdGlvbiIsICJmb3JSZWdpc3RlcmVkT25seSIsICJwYWdlUGFyYW0iLCAicmVhc29uUGFyYW0iLCAibm9uc3RhbmRhcmQiLCAiZm9yQW5vbk9ubHkiLCAic2lnIiwgImNoZWNrdXNlcmJsb2NrIiwgImJpb2Jsb2NrIiwgInVjYmxvY2siLCAibnBibG9jayIsICJfaXRlcmF0b3I4IiwgIl9zdGVwOCIsICJuZXdLZXkiLCAiY3VzdG9tIiwgIl9pNSIsICJfT2JqZWN0JGVudHJpZXMzIiwgInByZXNldCIsICJzZXR0aW5ncyIsICJpbmRlZmluaXRlIiwgIm1ldGEiLCAic2hvd190ZW1wbGF0ZSIsICJ0ZW1wbGF0ZXMiLCAiYmxvY2tQcmVzZXQiLCAiYmxvY2tTZXR0aW5ncyIsICJyZWdpc3RyYXRpb25SZXN0cmljdCIsICJzZWVBbHNvcyIsICJzZWVBbHNvTWVzc2FnZSIsICJ1c2VJbml0aWFsT3B0aW9ucyIsICJwYXJzZSIsICJ0b0dNVFN0cmluZyIsICJleHBpcnlfcHJlc2V0IiwgImVhY2giLCAiX2kiLCAiY2hlY2siLCAicHJlcGVuZFJlYXNvbiIsICJwYWdlcmVzdHJpY3Rpb25zIiwgIiRwYWdlU2VsZWN0IiwgIiRuYW1lc3BhY2VTZWxlY3QiLCAicmVzdHJpY3Rpb25zIiwgInByIiwgIl9pdGVyYXRvcjkiLCAiX3N0ZXA5IiwgImVzY2FwZVNlbGVjdG9yIiwgIm5ld09wdGlvbiIsICJPcHRpb24iLCAiZ2VuZXJhdGVBcnJheSIsICJuYW1lc3BhY2VzIiwgInByZXZfdGVtcGxhdGVfZXhwaXJ5IiwgImFyZWEiLCAibmFtZXNwYWNlcmVzdHJpY3Rpb25zIiwgInRlbXBsYXRlVGV4dCIsICJnZXRCbG9ja05vdGljZVdpa2l0ZXh0IiwgIl90ZW1wbGF0ZW9wdGlvbnMiLCAidG9CbG9jayIsICJ0b1dhcm4iLCAidG9QYXJ0aWFsIiwgInRvVGFnIiwgInRvUHJvdGVjdCIsICJ0b1VuYmxvY2siLCAidGVtcGxhdGVvcHRpb25zIiwgInVuYmxvY2tvcHRpb25zIiwgInRvQ2xvc2V2aXAiLCAiY2xvc2V2aXAiLCAiY2hlY2tJbmNvbXBhdGlibGUiLCAiY29uZmxpY3RzIiwgImV4dHJhIiwgImNvdW50IiwgInJlZHVjZSIsICJzdW0iLCAic3BwVXNlcm5hbWUiLCAic3RhdHVzRWxlbWVudCIsICJsb2dFeHBpcnkiLCAiZXhwaXJ5RGF0ZSIsICJncm91cHNDYW5CZVJlbW92ZWQiLCAiZ3JvdXBzVG9CZVJlbW92ZWQiLCAiZ3JvdXBzIiwgInRhZ3MiLCAidG9rZW4iLCAidG9rZW5zIiwgIm1iQXBpIiwgImlzc3VlX3RlbXBsYXRlIiwgInZpcFBhZ2UiLCAiY2xvc2VSZXF1ZXN0IiwgInJpZ2h0U3RhdHVzRWxlbWVudCIsICJyZXZva2VPcHRpb25zIiwgInVzZXJyaWdodHN0b2tlbiIsICJtckFwaSIsICJ1c2VyUGFnZSIsICJ0YWd1c2VycGFnZSIsICJ1bmJsb2NrU3RhdHVzRWxlbWVudCIsICJ1bmJsb2NrTWJBcGkiLCAiX2l0ZXJhdG9yMTAiLCAiX3N0ZXAxMCIsICJ0YWd0ZXh0IiwgInNwcFR5cGUiLCAic3BwRXZpZGVuY2UiLCAic3BtQ2hlY2tlZCIsICJzcG1FdmlkZW5jZSIsICJzZXRQYWdlVGV4dCIsICJzYXZlIiwgInByb3RlY3R1c2VycGFnZSIsICJleGlzdHMiLCAic2V0RWRpdFByb3RlY3Rpb24iLCAic2V0TW92ZVByb3RlY3Rpb24iLCAic2V0Q3JlYXRlUHJvdGVjdGlvbiIsICJwcm90ZWN0IiwgImZvcm1EYXRhIiwgInVzZXJ0YWxrX3N1bW1hcnkiLCAidXNlck5hbWUiLCAiZXhwaXJ5VGV4dCIsICJyZXF1ZXN0TGlzdCIsICJmb3VuZCIsICJ2aXBSZSIsICJwYWdlTmFtZVJlZ2V4IiwgIl9pdGVyYXRvcjExIiwgIl9zdGVwMTEiLCAicmVxdWVzdCIsICJ0cmltRW5kIiwgIm5ld1RleHQiLCAibWFrZVNlbnRlbmNlIiwgInBvcCIsICJwIiwgIm5hbWVzcGFjZU5hbWVzIiwgImRhdGVIZWFkZXJSZWdleExhc3QiLCAiZGF0ZUhlYWRlclJlZ2V4UmVzdWx0IiwgImxhc3RIZWFkZXJJbmRleCIsICJsYXN0SW5kZXhPZiIsICJmcmllbmRseXRhbGtiYWNrX2V4cG9ydHMiLCAiaW5pdF9mcmllbmRseXRhbGtiYWNrIiwgImZyaWVuZGx5dGFsa2JhY2siLCAidGFsa2JhY2siLCAiY2hhbmdlVGFyZ2V0IiwgInRidGFyZ2V0IiwgImVscXVlcnkiLCAiZWxsaW1pdCIsICJxaXV3ZW5fYXBpIiwgIm9wdG91dFN0YXR1cyIsICJvcHRvdXQiLCAiJGVsIiwgImdldFhNTCIsICJwcmV2X3BhZ2UiLCAicHJldl9zZWN0aW9uIiwgInByZXZfbWVzc2FnZSIsICJ2YWx1ZXMiLCAic2VjdGlvbiIsICJyZXF1aXJlZCIsICJub3RpY2Vib2FyZCIsICJfaTYiLCAiX09iamVjdCRlbnRyaWVzNCIsICJub3RpY2Vib2FyZHMiLCAibmJuYW1lIiwgImRlZmF1bHRTZWxlY3RlZCIsICJhZmZwIiwgImNvbnRlbnQiLCAiZWRpdFN1bW1hcnkiLCAic2JsIiwgInNobCIsICJnZXRDaGVja2VkIiwgIm5hbWVzcGFjZVJlZ2V4IiwgImZ1bGxVc2VyVGFsa1BhZ2VOYW1lIiwgInVzZXJfdGFsayIsICJnZXROb3RpY2VXaWtpdGV4dCIsICJ0YWxrcGFnZSIsICJzZXRDcmVhdGVPcHRpb24iLCAic2V0TWlub3JFZGl0IiwgIm5vdGljZXRleHQiLCAic2FmZVJlcGxhY2UiLCAidHdpbmtsZXNwZWVkeV9leHBvcnRzIiwgImltcG9ydF9leHRfZ2FkZ2V0MyIsICJpbml0X3R3aW5rbGVzcGVlZHkiLCAidHdpbmtsZXNwZWVkeSIsICJzcGVlZHkiLCAiaW5pdERpYWxvZyIsICJldmFsdWF0ZVN5c29wIiwgImV2YWx1YXRlVXNlciIsICJoYXNDU0QiLCAibW9kZSIsICJzeXNvcFNpbmdsZVN1Ym1pdCIsICJzeXNvcFJhZGlvQ2xpY2siLCAic3lzb3BNdWx0aXBsZVN1Ym1pdCIsICJzeXNvcE11bHRpcGxlUmFkaW9DbGljayIsICJ1c2VyTXVsdGlwbGVTdWJtaXQiLCAidXNlck11bHRpcGxlUmFkaW9DbGljayIsICJ1c2VyU2luZ2xlU3VibWl0IiwgInVzZXJTaW5nbGVSYWRpb0NsaWNrIiwgImlzU3lzb3AiLCAiaGFzU3VibWl0QnV0dG9uIiwgImlzTXVsdGlwbGUiLCAiY2FsbGJhY2tmdW5jIiwgImNGb3JtIiwgImNDaGVja2VkIiwgInJlZGlyZWN0cyIsICJkZWxtdWx0aXBsZSIsICJvcGVudXNlcnRhbGsiLCAic2FsdGluZyIsICJtb2RlQ2hhbmdlZCIsICJzdG9wUHJvcGFnYXRpb24iLCAiZGVsZXRlT3B0aW9ucyIsICJ0YWdPcHRpb25zIiwgInByaW9yRGVsZXRpb25Db3VudCIsICJnZXRNb2RlIiwgInRhZ19vbmx5IiwgImlzU3lzb3BNb2RlIiwgImV2YWx1YXRlVHlwZSIsICJyYWRpb09yQ2hlY2tib3giLCAiZ2VuZXJhdGVDc2RMaXN0IiwgImN1c3RvbVJhdGlvbmFsZSIsICJhcnRpY2xlTGlzdCIsICJ1c2VyTGlzdCIsICJ1c2VydGFsa0xpc3QiLCAiZmlsZUxpc3QiLCAiY2F0ZWdvcnlMaXN0IiwgImRyYWZ0TGlzdCIsICJ0YWxrTGlzdCIsICJnZW5lcmFsQ3JpdGVyaWEiLCAiZ2VuZXJhbExpc3QiLCAicmVkaXJlY3RMaXN0IiwgImN1c3RvbU9wdGlvbiIsICJjbGljayIsICJkZWNvZGVVUklDb21wb25lbnQiLCAibGFiZWxzIiwgImVtcHR5IiwgImxlYWN0aW9uIiwgImxlcHJvcCIsICJyZXNwb25zZSIsICJkZWxDb3VudCIsICJjb250aW51ZSIsICJvcGVuU3ViZ3JvdXBIYW5kbGVyIiwgImNoaWxkcmVuIiwgImZvY3VzIiwgInN1Ym1pdFN1Ymdyb3VwSGFuZGxlciIsICJBcnJheSIsICJwcm90b3R5cGUiLCAiY2FsbCIsICJjcml0RWxlbWVudCIsICJjcml0ZXJpb24iLCAiaGlkZVdoZW5NdWx0aXBsZSIsICJoaWRlU3ViZ3JvdXBXaGVuTXVsdGlwbGUiLCAiaGlkZVdoZW5TaW5nbGUiLCAiaGlkZVN1Ymdyb3VwV2hlblNpbmdsZSIsICJoaWRlV2hlblN5c29wIiwgImhpZGVTdWJncm91cFdoZW5TeXNvcCIsICJoaWRlV2hlblVzZXIiLCAiaGlkZVN1Ymdyb3VwV2hlblVzZXIiLCAiaGlkZVdoZW5SZWRpcmVjdCIsICJzaG93SW5OYW1lc3BhY2VzIiwgImhpZGVJbk5hbWVzcGFjZXMiLCAib3JpZ2luYWxFdmVudCIsICJub3JtYWxpemVkQ3JpdGVyaW9uIiwgIm5vcm1hbGl6ZUhhc2giLCAiZzEiLCAiZzIiLCAiZzMiLCAiZzQiLCAiZzUiLCAiZzYiLCAiZzciLCAiZzgiLCAiZzkiLCAiYTEiLCAiYTIiLCAiYTMiLCAicjEiLCAicjIiLCAiZjEiLCAiZjIiLCAiZjMiLCAiZjQiLCAiZjUiLCAibzEiLCAibzIiLCAibzMiLCAiZ2V0VGVtcGxhdGVDb2RlQW5kUGFyYW1zIiwgImNvZGUiLCAicGFyYW1ldGVycyIsICJpIiwgIm5vcm1hbGl6ZWRzIiwgInV0cGFyYW1zIiwgIl9pdGVyYXRvcjEyIiwgIl9zdGVwMTIiLCAibm9ybSIsICJ0b1VwcGVyQ2FzZSIsICJ0ZW1wbGF0ZVBhcmFtcyIsICJpXyIsICJnZXRVc2VyVGFsa1BhcmFtZXRlcnMiLCAicGFyc2VXaWtpdGV4dCIsICJwc3QiLCAiY29udGVudG1vZGVsIiwgInN0YXR1c0luZGljYXRvciIsICJhcGkyIiwgImFwaU9iaiIsICJjaGlsZE5vZGVzIiwgInN5c29wIiwgInByb21wdCIsICJkZWxldGVQYWdlIiwgImRlbGV0ZVJlYXNvbiIsICJwcm9tcHRGb3JTdW1tYXJ5IiwgInRoaXNwYWdlIiwgImRlbGV0ZU1haW4iLCAid2F0Y2giLCAiZGVsZXRlVGFsayIsICJvcGVuVXNlclRhbGsiLCAibG9va3VwQ3JlYXRpb24iLCAib3BlblVzZXJUYWxrUGFnZSIsICJkZWxldGVUYWxrUGFnZSIsICJub3JtYWxpemVkIiwgImNsYXNzTGlzdCIsICJjb250YWlucyIsICJzZXRUaW1lb3V0IiwgImRlbGV0ZVJlZGlyZWN0cyIsICJyZGxpbWl0IiwgImRlbGV0ZVJlZGlyZWN0c01haW4iLCAiJGJpZ3RleHQiLCAic2V0IiwgInVubGluayIsICJnZXRDcmVhdG9yIiwgInZhbmFydGljbGUiLCAib3BlbiIsICJ4bWxEb2MiLCAiJHNuYXBzaG90IiwgInRvdGFsIiwgIm9uc3VjY2VzcyIsICJhcGlvYmpJbm5lciIsICJ1cGRhdGUiLCAicmVtb3ZlQ2hlY2twb2ludCIsICJhZGRDaGVja3BvaW50IiwgIl9rZXkiLCAidGV4dE5vU2QiLCAiY29weXZpbyIsICJ4ZmQiLCAiYnVpbGREYXRhIiwgInBhdHJvbCIsICJyZXF1ZXN0c2FsdCIsICJlZGl0c3VtbWFyeSIsICJfaXRlcmF0b3IxMyIsICJfc3RlcDEzIiwgIk1hdGgiLCAiYmxhbmsiLCAiaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXMiLCAiZ2V0VGV4dCIsICJ0YWdDb21wbGV0ZSIsICJ1c2VydGFsayIsICJwYWdlT2JqIiwgImluaXRpYWxDb250cmliIiwgInRhbGtQYWdlTmFtZSIsICJ1c2VydGFsa3BhZ2UiLCAibm90aWZ5dGV4dCIsICJsb2dub21pbmF0aW9uIiwgImFkZFRvTG9nIiwgInVzbCIsICJ1c2Vyc3BhY2VMb2dnZXIiLCAiaW5pdGlhbFRleHQiLCAiYXBwZW5kVGV4dCIsICJmcm9tREkiLCAiX2l0ZXJhdG9yMTQiLCAiX3N0ZXAxNCIsICJsb2ciLCAiZ2V0UGFyYW1ldGVycyIsICJfaXRlcmF0b3IxNSIsICJfc3RlcDE1IiwgImN1cnJlbnRQYXJhbXMiLCAicmVkaW1hZ2UiLCAiZGJyYXRpb25hbGUiLCAib3RoZXJwYWdlIiwgImZpbGVuYW1lIiwgInJlZGlydHlwZSIsICJyZXNvbHZlQ3NkVmFsdWVzIiwgIl9lJHRhcmdldCRmb3JtIiwgIl9lJHRhcmdldCRmb3JtMiIsICJ3YXRjaFBhZ2UiLCAiX2l0ZXJhdG9yMTYiLCAiX3N0ZXAxNiIsICJfZSR0YXJnZXQkZm9ybTMiLCAiX2l0ZXJhdG9yMTciLCAiX3N0ZXAxNyIsICJfaTciLCAiX25vcm1hbGl6ZWRzIiwgIm5vdGlmeXVzZXIiLCAiX2l0ZXJhdG9yMTgiLCAiX3N0ZXAxOCIsICJjc2Rsb2ciLCAiX2l0ZXJhdG9yMTkiLCAiX3N0ZXAxOSIsICJ0d2lua2xlY29weXZpb19leHBvcnRzIiwgImluaXRfdHdpbmtsZWNvcHl2aW8iLCAidHdpbmtsZWNvcHl2aW8iLCAiaXNQYWdlUmVkaXJlY3QiLCAidHJ5VGFnZ2luZyIsICJ0YWdnaW5nQXJ0aWNsZSIsICJsb2dwYWdlIiwgImNvcHl2aW9MaXN0IiwgInJldmlzaW9uSWQiLCAic291cmNlIiwgIm9sZGNzZCIsICJzcGVlZHlUYWciLCAiZzRfcGFnZW5hbWUiLCAib3V0cHV0IiwgImdldFVUQ01vbnRoIiwgImdldFVUQ0RhdGUiLCAidHdpbmtsZXhmZF9leHBvcnRzIiwgImluaXRfdHdpbmtsZXhmZCIsICJ0d2lua2xleGZkIiwgImN1cnJlbnRSYXRpb25hbGUiLCAicHJpbnRSYXRpb25hbGUiLCAib2xkcmVhc29udGV4dGJveCIsICJvbGRyZWFzb24iLCAiYXBwZW5kUmVhc29uQm94IiwgInhmZF9jYXQiLCAiYWZkX2NhdGVnb3J5IiwgImNoYW5nZV9hZmRfY2F0ZWdvcnkiLCAiYWZkX2NhdCIsICJsb2NhbFN0b3JhZ2UiLCAiVHdpbmtsZV9hZmRDYXRlZ29yeSIsICJ4ZmRjYXQiLCAibWVyZ2VpbnRvIiwgInBhcmVudEVsZW1lbnQiLCAicmVtb3ZlQXR0cmlidXRlIiwgImZ3ZGNzZHJlYXNvbiIsICJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwgImlubmVySFRNTCIsICJ4ZmRyZWFzb24iLCAiYWZkIiwgInRhZ2dpbmdfcGFnZSIsICJkaXNjdXNzaW9uX3BhZ2UiLCAidG9kYXlzTGlzdCIsICJjcmVhdG9yIiwgImZvcm1hdFJlYXNvblRleHQiLCAibm9pbmNsdWRlIiwgInRleHROb05vdE1hbmRhcmluIiwgInRleHROb0FmYyIsICJ0byIsICJjb21tZW50VGV4dCIsICJzYWZlc3Vic3QiLCAiZmFtZSIsICJzdWJzdHViIiwgImJhdGNoIiwgInRhcmdldF9wYWdlIiwgImZmZCIsICJ0YWdnaW5nSW1hZ2UiLCAieGZkQ2F0TmFtZSIsICJ3aWtpVXJsZW5jb2RlIiwgImZvcm1hdFJlYXNvbkZvckxvZyIsICJvbkVycm9yIiwgInNldExvb2t1cE5vblJlZGlyZWN0Q3JlYXRvciIsICJ0d2lua2xlaW1hZ2VfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVpbWFnZSIsICJ0d2lua2xlaW1hZ2UiLCAiaW1hZ2UiLCAiZmllbGQiLCAiX2l0ZXJhdG9yMjAiLCAiX3N0ZXAyMCIsICJ0eXBlXyIsICJjc2Rjcml0IiwgIkVycm9yIiwgInRvTG93ZXJDYXNlIiwgImYxX3NvdXJjZSIsICJmNF90eXBlIiwgInVzZXJOb3RpZmljYXRpb24iLCAibm90ZURhdGEiLCAiaW1hZ2VMaXN0IiwgInR3aW5rbGVwcm90ZWN0X2V4cG9ydHMiLCAiaW5pdF90d2lua2xlcHJvdGVjdCIsICJ0d2lua2xlcHJvdGVjdCIsICJjaGFuZ2VBY3Rpb24iLCAiZmV0Y2hQcm90ZWN0aW9uTGV2ZWwiLCAiaXNUZW1wbGF0ZSIsICJjdXJyZW50UHJvdGVjdGlvbkxldmVscyIsICJwcmV2aW91c1Byb3RlY3Rpb25MZXZlbHMiLCAiaW5kZXhwYWdlaWRzIiwgImlucHJvcCIsICJwcm90ZWN0RGF0YSIsICJwYWdlaWQiLCAicGFnZWlkcyIsICJwcmV2aW91cyIsICJ3YXRjaGVkIiwgIndhdGNobGlzdGV4cGlyeSIsICJfaXRlcmF0b3IyMSIsICJwcm90ZWN0aW9uIiwgIl9zdGVwMjEiLCAiY2FzY2FkZSIsICJwcmV2aW91c1Byb3RlY3Rpb25Mb2ciLCAiX2l0ZXJhdG9yMjIiLCAiZGV0YWlscyIsICJfc3RlcDIyIiwgImhhc1Byb3RlY3RMb2ciLCAic2hvd0xvZ0FuZEN1cnJlbnRQcm90ZWN0SW5mbyIsICJjdXJyZW50bHlQcm90ZWN0ZWQiLCAiaGFzU3RhYmxlTG9nIiwgIiRsaW5rTWFya3VwIiwgImZvcm1hdFByb3RlY3Rpb25EZXNjcmlwdGlvbiIsICJwcm90ZWN0aW9uTm9kZSIsICJzdGF0dXNMZXZlbCIsICJmaWVsZDEiLCAiZmllbGQyIiwgImNoYW5nZVByZXNldCIsICJwcm90ZWN0aW9uVHlwZXNBZG1pbiIsICJwcm90ZWN0aW9uVHlwZXNDcmVhdGUiLCAiZm9ybWV2ZW50cyIsICJlZGl0bW9kaWZ5IiwgImVkaXRsZXZlbCIsICJwcm90ZWN0aW9uTGV2ZWxzIiwgImRvQ3VzdG9tRXhwaXJ5IiwgImNsb3Nlc3QiLCAic2VsZWN0ZWRJbmRleCIsICJwcm90ZWN0aW9uTGVuZ3RocyIsICJtb3ZlbW9kaWZ5IiwgIm1vdmVsZXZlbCIsICJjcmVhdGVsZXZlbCIsICJwcm90ZWN0aW9uVGFncyIsICJ0YWd0eXBlIiwgInByb3RlY3Rpb25UeXBlcyIsICJtYXJnaW5SaWdodCIsICJlZGl0ZXhwaXJ5IiwgImNvbG9yIiwgIm1vdmVleHBpcnkiLCAiY3JlYXRlZXhwaXJ5IiwgInNtYWxsIiwgInNob3dleHBpcnkiLCAib3B0aW9uIiwgInByb3RlY3Rpb25UeXBlc0NyZWF0ZU9ubHkiLCAicHJvdGVjdGlvblByZXNldHNJbmZvIiwgImVkaXQiLCAibW92ZSIsICJ1bnByb3RlY3QiLCAiY3JlYXRlIiwgImFjdGlvbnR5cGVzIiwgIl9pdGVyYXRvcjIzIiwgIl9zdGVwMjMiLCAiYWN0aW9uX3R5cGVfdmFsdWUiLCAicmVhc29uRmllbGQiLCAicHJvdGVjdFJlYXNvbiIsICJfaXRlbSR0ZW1wbGF0ZSIsICJ0YWdwYXJhbXMiLCAiY2xvc2VwYXJhbXMiLCAic3RhdHVzSW5pdGVkIiwgImFsbERvbmUiLCAidGFnZ2luZ1BhZ2VJbml0aWFsIiwgInJwcFBhZ2UiLCAicHJvdGVjdEl0IiwgImZvbGxvd1JlZGlyZWN0IiwgInR5cGVuYW1lIiwgInR5cGVyZWFzb24iLCAicnBwcGFyYW1zIiwgInJwcE5hbWUiLCAiZmlsZVJlcXVlc3QiLCAicGFnZU5hbWUiLCAicHJvdGVjdGVkUGFnZSIsICJ0YWdnaW5nUGFnZSIsICJnZXRUYWdnZWRQYWdlIiwgIm9sZHRhZ19yZSIsICJyZV9yZXN1bHQiLCAibmV3VmVyc2lvbiIsICJzdXBwcmVzc1Byb3RlY3RXYXJuaW5nIiwgInJwcFJlIiwgInJwcExpbmsiLCAiZ2V0UGFnZU5hbWUiLCAibmV3dGFnIiwgIlN0cmluZyIsICJyYXciLCAiX3RlbXBsYXRlT2JqZWN0IiwgIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCAid29yZHMiLCAicmVnIiwgIm9yaWdpbmFsVGV4dExlbmd0aCIsICJsaW5rbm9kZSIsICJ3YXRjaFByZWYiLCAib3B0aW9ucyIsICJ3YXRjaF9xdWVyeSIsICJsaW5rbm9kZTIiLCAic2VjdGlvblRleHQiLCAiX2l0ZXJhdG9yMjQiLCAiX3N0ZXAyNCIsICJfaTgiLCAiX09iamVjdCRlbnRyaWVzNSIsICJmcmllbmRseXRhZ19leHBvcnRzIiwgImluaXRfZnJpZW5kbHl0YWciLCAiZnJpZW5kbHl0YWciLCAibW9kZUVuIiwgImNhblJlbW92ZSIsICJjaGVja2VkVGFncyIsICIkYWxsQ2hlY2tib3hEaXZzIiwgImxhYmVsX2VsZW1lbnQiLCAiJGFsbEhlYWRlcnMiLCAic2VhcmNoU3RyaW5nIiwgInNlYXJjaFJlZ2V4IiwgIl9pbmRleCIsICJsYWJlbF90ZXh0IiwgInNlYXJjaEhpdCIsICJyYW5nZSIsICJjcmVhdGVSYW5nZSIsICJ0ZXh0bm9kZSIsICJzZWxlY3ROb2RlQ29udGVudHMiLCAic2V0U3RhcnQiLCAic2V0RW5kIiwgInVuZGVybGluZV9zcGFuIiwgInN1cnJvdW5kQ29udGVudHMiLCAiZmxhdE9iamVjdCIsICJfaXRlcmF0b3IyNSIsICJ0YWdMaXN0IiwgIl9zdGVwMjUiLCAiX2l0ZXJhdG9yMjYiLCAiX3N0ZXAyNiIsICJfaXRlcmF0b3IyNyIsICJfc3RlcDI3IiwgImRlc2NyaXB0aW9uIiwgImV4Y2x1ZGVNSSIsICJ1cGRhdGVTb3J0T3JkZXIiLCAiZGl2RWxlbWVudCIsICJfaXRlcmF0b3IyOCIsICJfc3RlcDI4IiwgImJ1aWxkRmlsZW5hbWUiLCAiX2l0ZXJhdG9yMjkiLCAiX3N0ZXAyOSIsICJfaXRlcmF0b3IzMCIsICJfc3RlcDMwIiwgInF1ZXJ5U2VsZWN0b3JBbGwiLCAicXVpY2tmaWx0ZXIiLCAiYXV0b2NvbXBsZXRlIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiYWxyZWFkeVByZXNlbnRUYWdzIiwgInRhZ05hbWUiLCAiYm94VGFnIiwgImZvbnRTaXplIiwgIm51bUFkZGVkIiwgIm51bVJlbW92ZWQiLCAiYWZ0ZXIiLCAic29ydG9yZGVyIiwgIl9pdGVyYXRvcjMxIiwgIl9zdGVwMzEiLCAiZ2VuZXJhdGVMaW5rcyIsICJtYWtlQ2hlY2tib3giLCAib3RoZXJUYWdOYW1lIiwgIm1ha2VDaGVja2JveGVzRm9yQWxyZWFkeVByZXNlbnRUYWdzIiwgInN1YmRpdiIsICJjaGVja2JveGVzIiwgInVuQ2hlY2tlZFRhZ3MiLCAiZ2V0VW5jaGVja2VkIiwgIl9pdGVyYXRvcjMyIiwgIl9zdGVwMzIiLCAiZG9DYXRlZ29yeUNoZWNrYm94ZXMiLCAiX2l0ZXJhdG9yMzMiLCAiX3N0ZXAzMyIsICJfaXRlcmF0b3IzNCIsICJfc3RlcDM0IiwgIl9pdGVyYXRvcjM1IiwgIl9zdGVwMzUiLCAiX1R3aW5rbGUkdGFnJGFydGljbGUiLCAiYWxwaGFiZXRpY2FsTGlzdCIsICJfaXRlcmF0b3IzNiIsICJfc3RlcDM2IiwgIiR3b3JrYXJlYSIsICJyZW5kZXJlZCIsICJfaXRlcmF0b3IzNyIsICJfc3RlcDM3IiwgIl9pdGVyYXRvcjM4IiwgIl9zdGVwMzgiLCAiZmlyc3RQYXJ0IiwgInNlY29uZFBhcnQiLCAidGFnbmFtZSIsICJwYWdlVGV4dCIsICJwb3N0UmVtb3ZhbCIsICJ0YWdzVG9SZW1vdmUiLCAibWFrZVRlbXBsYXRlTGluayIsICJzdW1tYXJ5VGV4dCIsICJhZGRlZFRhZ3MiLCAicmVtb3ZlZFRhZ3MiLCAibWVyZ2VSZWFzb24iLCAiZGlzY3Vzc0FydGljbGUiLCAibm9uRGlzY3Vzc0FydGljbGUiLCAibWVyZ2VUYWdPdGhlciIsICJtZXJnZVRhZyIsICJuZXdQYXJhbXMiLCAidGFnc1RvUmVtYWluIiwgIm1lcmdlVGFyZ2V0IiwgInRhbGtEaXNjdXNzaW9uVGl0bGUiLCAidGFsa0Rpc2N1c3Npb25UaXRsZUxpbmtlZCIsICJtb3ZlUmVhc29uIiwgIm1vdmVUYWxrcGFnZVRleHQiLCAibW92ZVRhcmdldCIsICJtb3ZlVGFsa3BhZ2UiLCAicmVtb3ZlVGFncyIsICJnZXRSZWRpcmVjdHNGb3IiLCAiX2l0ZXJhdG9yMzkiLCAiX3N0ZXAzOSIsICJ0YWdfcmUiLCAibGhuYW1lc3BhY2UiLCAibGhzaG93IiwgImxobGltaXQiLCAicmVzcG9uc2VYTUwiLCAiX2lkeCIsICJyZW1vdmVkIiwgInRhZ1JlIiwgInRhZ1RleHQiLCAiZ3JvdXBhYmxlVGFncyIsICJncm91cGFibGVFeGlzdGluZ1RhZ3MiLCAiYWRkVGFnIiwgImN1cnJlbnRUYWciLCAiZXhwZXJ0IiwgImV4cGVydDIiLCAiZXhwZXJ0MyIsICJtaXNzaW5nSW5mb3JtYXRpb24iLCAibm90YWJpbGl0eSIsICJ0YXJnZXQxIiwgInRhcmdldDIiLCAidGFyZ2V0MyIsICJjbGVhbnVwUmVhc29uIiwgImFkZFVuZ3JvdXBlZFRhZ3MiLCAiX2k5IiwgIl90YWdzIiwgInRlbXBsYXRlc0FmdGVyIiwgIl9pdGVyYXRvcjQwIiwgIl9zdGVwNDAiLCAibm90YWJpbGl0eUxpc3QiLCAiX2l0ZXJhdG9yNDEiLCAiX3N0ZXA0MSIsICJtaVRlc3QiLCAiX2l0ZXJhdG9yNDIiLCAiX3N0ZXA0MiIsICJtaVJlZ2V4IiwgImFkZE5ld1RhZ3NUb01JIiwgIl9pdGVyYXRvcjQzIiwgIl9zdGVwNDMiLCAiX2l0ZXJhdG9yNDQiLCAiX3N0ZXA0NCIsICJ0YWdJbmRleCIsICJhbHRMYW5nRnJvbSIsICJyZXFBcnRpY2xlTGFuZyIsICJyZXFBcnRpY2xlVGl0bGUiLCAiX2kxMCIsICJfdGFnczIiLCAib2xkVGFncyIsICJwYWdlVGFncyIsICJvbGRQYWdlVGFncyIsICJfaXRlcmF0b3I0NSIsICJfc3RlcDQ1IiwgInBhZ2VUYWciLCAicGFnZVJlIiwgImZpbGUiLCAiX2l0ZXJhdG9yNDYiLCAiX3N0ZXA0NiIsICJub3djb21tb25zTmFtZSIsICJrZWVwbG9jYWxOYW1lIiwgImtlZXBsb2NhbFJlYXNvbiIsICJyZW5hbWVtZWRpYU5ld25hbWUiLCAicmVuYW1lbWVkaWFSZWFzb24iLCAiRG9Ob3RNb3ZlVG9Db21tb25zX3JlYXNvbiIsICJjaGVja1BhcmFtZXRlciIsICJwYXJhbWV0ZXIiLCAiZXhpc3RpbmdUYWdzIiwgInR3aW5rbGVzdHViX2V4cG9ydHMiLCAiaW1wb3J0X2V4dF9nYWRnZXQ0IiwgImluaXRfdHdpbmtsZXN0dWIiLCAidHdpbmtsZXN0dWIiLCAic3R1YiIsICJfVHdpbmtsZSRzdHViIiwgIl9Ud2lua2xlJHN0dWIkY2hlY2tlZCIsICJjdXN0b21jaGVja2JveGVzIiwgIl9pdGVyYXRvcjQ3IiwgIl9zdGVwNDciLCAiX2l0ZXJhdG9yNDgiLCAiX3N0ZXA0OCIsICJfaTExIiwgIl9PYmplY3QkZW50cmllczYiLCAidGFnQ2F0ZWdvcmllcyIsICJ0aXRsZU5hbWUiLCAidGFnQ2F0ZWdvcmllc0hlYWRlciIsICJpc0FycmF5IiwgIl9pMTIiLCAiX09iamVjdCRlbnRyaWVzNyIsICJzdWJ0aXRsZSIsICJzdWJjb250ZW50IiwgIl9pMTMiLCAiX09iamVjdCRlbnRyaWVzOCIsICJfaXRlcmF0b3I0OSIsICJfc3RlcDQ5IiwgImdlbmVyYWwiLCAiZ2VvIiwgIm90aGVycyIsICJiaW8iLCAic2NpZW5jZSIsICJzcG9ydCIsICJ0ZWNoIiwgImFydCIsICJ0b3RhbFRhZ3MiLCAiX2kxNCIsICJfdGFnczMiLCAicGF0cm9sUGFnZSIsICJ0d2lua2xlZGlmZl9leHBvcnRzIiwgImluaXRfdHdpbmtsZWRpZmYiLCAidHdpbmtsZWRpZmYiLCAiZGlmZiIsICJvbGRpZCIsICJtZSIsICJub2RlIiwgInJ2dXNlciIsICJsb2NhdGlvbiIsICJ0d2lua2xldW5saW5rX2V4cG9ydHMiLCAiaW5pdF90d2lua2xldW5saW5rIiwgInR3aW5rbGV1bmxpbmsiLCAicHJlc2V0UmVhc29uIiwgImZpbGVTcGFjZSIsICJsaW5rVGV4dEJlZm9yZSIsICJsaW5rVGV4dEFmdGVyIiwgImxpbmtQbGFpbkJlZm9yZSIsICJsaW5rVGVtcGxhdGVCZWZvcmUiLCAibGlua1BsYWluQWZ0ZXIiLCAiX2kxNSIsICJfYXJyMiIsICJmb250RmFtaWx5IiwgImZvbnRTdHlsZSIsICJibHRpdGxlIiwgImJsbGltaXQiLCAiYmxuYW1lc3BhY2UiLCAicmF3Y29udGludWUiLCAiaXV0aXRsZSIsICJpdWxpbWl0IiwgIml1bmFtZXNwYWNlIiwgImJsZmlsdGVycmVkaXIiLCAiYmFja2xpbmtzIiwgInBhZGRpbmciLCAiaW1hZ2V1c2FnZSIsICJ1bmxpbmtlciIsICJiYXRjaE9wZXJhdGlvbiIsICJzZXRPcHRpb24iLCAic2V0UGFnZUxpc3QiLCAicnVuIiwgInNldEJvdEVkaXQiLCAiZG9CYWNrbGlua3MiLCAiZG9JbWFnZXVzYWdlIiwgInVubGlua0JhY2tsaW5rcyIsICJoYXZlY29udGVudCIsICJfaXRlcmF0b3I1MCIsICJfc3RlcDUwIiwgImNvbnZlcnROdW1iZXIiLCAic2hpZnRDbGlja1N1cHBvcnQiLCAiX2l0ZXJhdG9yNTEiLCAiX3N0ZXA1MSIsICJfaXRlcmF0b3I1MiIsICJfc3RlcDUyIiwgIl9pdGVyYXRvcjUzIiwgIl9zdGVwNTMiLCAib2xkdGV4dCIsICJ3YXJuaW5nU3RyaW5nIiwgImNvbW1lbnRPdXRJbWFnZSIsICJyZW1vdmVMaW5rIiwgInJlbW92ZVRlbXBsYXRlIiwgIndvcmtlckZhaWx1cmUiLCAid29ya2VyU3VjY2VzcyIsICJ0d2lua2xlZmx1ZmZfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVmbHVmZiIsICJ0d2lua2xlZmx1ZmYiLCAiZmx1ZmYiLCAiaG9vayIsICJhZGRMaW5rcyIsICJza2lwVGFsayIsICJjb250cmlidXRpb25zIiwgInJlY2VudGNoYW5nZXMiLCAidHJ1c3RlZEJvdHMiLCAiaGlkZGVuTmFtZSIsICJsaW5rQnVpbGRlciIsICJzcGFuVGFnIiwgImJ1aWxkTGluayIsICJyb2xsYmFja0xpbmtzIiwgInZhbmRhbCIsICJpbmxpbmUiLCAicmV2IiwgInJldk5vZGUiLCAibm9ybU5vZGUiLCAidmFuZE5vZGUiLCAibm9ybUxpbmsiLCAidmFuZExpbmsiLCAicmV2ZXJ0IiwgImRpc2FibGVMaW5rcyIsICJzZXBhcmF0b3IiLCAicmVzdG9yZVRoaXNSZXZpc2lvbkxpbmsiLCAicmV2aXNpb25SZWYiLCAicmV2ZXJ0VG9SZXZpc2lvbk5vZGUiLCAiZm9udFdlaWdodCIsICJyZXZlcnRUb1JldmlzaW9uTGluayIsICJyZXZlcnRUb1JldmlzaW9uIiwgIiRsaXN0IiwgImRhdGFzZXQiLCAibXdSZXZpZCIsICJub3QiLCAidGFyZ2V0UGFnZSIsICJoaXN0TGlzdCIsICJ0b0FycmF5IiwgInNoaWZ0IiwgIl9pdGVyYXRvcjU0IiwgIl9zdGVwNTQiLCAiX2l0ZXJhdG9yNTUiLCAiX3N0ZXA1NSIsICJ3YXJuRnJvbVRhbGsiLCAieHRpdGxlIiwgInRhbGtMaW5rIiwgImV4dHJhUGFyYW1zIiwgIm9sZFRpdGxlIiwgInJldmVydHN1bW1hcnkiLCAiXyIsICJuZXdUaXRsZSIsICJudGl0bGUiLCAiaXNJUHY2QWRkcmVzcyIsICJzYW5pdGl6ZUlQdjYiLCAiZ2V0RWxlbWVudHNCeU5hbWUiLCAibm90aWZ5U3RhdHVzIiwgImF1dG9IaWRlIiwgInVzZXJIaWRkZW4iLCAiaW50ZXN0YWN0aW9ucyIsICJjdXJ0aW1lc3RhbXAiLCAib2xkcmV2IiwgInRvUmV2aXNpb24iLCAibGFzdHJldmlkIiwgInRvdWNoZWQiLCAibG9hZHRpbWVzdGFtcCIsICJjc3JmdG9rZW4iLCAicmV2ZXJ0VG9SZXZJRCIsICJyZXZlcnRUb1VzZXIiLCAicmV2ZXJ0VG9Vc2VySGlkZGVuIiwgIm9wdGlvbmFsX3N1bW1hcnkiLCAiZm9ybWF0U3VtbWFyeSIsICJ1bmRvIiwgInVuZG9hZnRlciIsICJiYXNldGltZXN0YW1wIiwgInN0YXJ0dGltZXN0YW1wIiwgIm1pbm9yIiwgImJvdCIsICJ3YXRjaE9yRXhwaXJ5IiwgIndhdGNobGlzdCIsICJjb21wbGV0ZSIsICJyZXZzIiwgImxhc3R1c2VyIiwgInVzZXJOb3JtIiwgImNvbnQiLCAiZ29vZF9yZXZpc2lvbiIsICJ1c2VySGFzQWxyZWFkeUNvbmZpcm1lZEFjdGlvbiIsICJnb29kdXNlciIsICJnb29kdXNlckhpZGRlbiIsICJleHRyYV9zdW1tYXJ5IiwgIm5vdGlmeVVzZXIiLCAieG1sIiwgIiRlZGl0IiwgIndpbmRvd1F1ZXJ5IiwgInZhbmFydGljbGVyZXZpZCIsICJ2YW5hcnRpY2xlZ29vZHJldmlkIiwgImJ1aWx0SW5TdHJpbmciLCAiY3VzdG9tU3RyaW5nIiwgInJlc3VsdExlbiIsICJ1bmVzY2FwZSIsICJlbmNvZGVVUklDb21wb25lbnQiLCAiY29udHJpYnNMaW5rIiwgImNvbnRyaWJzTGVuIiwgInR3aW5rbGViYXRjaGRlbGV0ZV9leHBvcnRzIiwgImluaXRfdHdpbmtsZWJhdGNoZGVsZXRlIiwgInR3aW5rbGViYXRjaGRlbGV0ZSIsICJiYXRjaGRlbGV0ZSIsICJ1bmxpbmtDYWNoZSIsICJzdWJwYWdlc0xvYWRlZCIsICJ0b2dnbGVTdWJwYWdlcyIsICJkZWxldGVyZWFzb25saXN0IiwgImNoYW5nZV9jb21tb25fcmVhc29uIiwgImdlbmVyYXRvciIsICJnY210aXRsZSIsICJnY21saW1pdCIsICJnYXBsaW1pdCIsICJnYXBuYW1lc3BhY2UiLCAiZ2FwcHJlZml4IiwgInBhdGhTcGxpdCIsICJwYXRobmFtZSIsICJ0aXRsZVNwbGl0IiwgImdxcHBhZ2UiLCAiZ3FwbGltaXQiLCAiZ3BsbGltaXQiLCAic3RhdHVzZGl2IiwgIiRwYWdlcyIsICIkcGFnZSIsICJpc1JlZGlyIiwgIiRlZGl0cHJvdCIsICJpc1Byb3RlY3RlZCIsICJtZXRhZGF0YSIsICJmb3JtXyIsICJfaXRlcmF0b3I1NiIsICJfc3RlcDU2IiwgImdlbmVyYXRlQXJyb3dMaW5rcyIsICJuZXh0RWxlbWVudFNpYmxpbmciLCAiZ2VuZXJhdGVOZXdQYWdlTGlzdCIsICJlbGVtZW50cyIsICJOb2RlTGlzdCIsICJfaXRlcmF0b3I1NyIsICJfc3RlcDU3IiwgIkhUTUxJbnB1dEVsZW1lbnQiLCAibmV3UGFnZUxpc3QiLCAiZGVsZXRlX3N1YnBhZ2VfcmVkaXJlY3RzIiwgImRlbGV0ZV9yZWRpcmVjdHMiLCAiZGVsZXRlX3N1YnBhZ2VfdGFsa3MiLCAiZGVsZXRlX3RhbGsiLCAidW5saW5rX3N1YnBhZ2VzIiwgInVubGlua19wYWdlIiwgIl9pdGVyYXRvcjU4IiwgIl9zdGVwNTgiLCAic3ViZ3JvdXBfIiwgInJlcGxhY2VXaXRoIiwgIl9pdGVyYXRvcjU5IiwgIl9zdGVwNTkiLCAiX2l0ZXJhdG9yNjAiLCAiX3N0ZXA2MCIsICJsb2FkaW5nVGV4dCIsICJzdWJwYWdlTGlzdGVyIiwgInBhZ2VUaXRsZSIsICJwYWdlTmFtZUZ1bGwiLCAic3VicGFnZUxpc3QiLCAicGFnZU5hbWVfIiwgIl9pdGVyYXRvcjYxIiwgIl9zdGVwNjEiLCAiX2l0ZXJhdG9yNjIiLCAiX3N0ZXA2MiIsICJfaXRlcmF0b3I2MyIsICJfc3RlcDYzIiwgIl9pdGVyYXRvcjY0IiwgIl9zdGVwNjQiLCAibnVtUHJvdGVjdGVkIiwgInN1YnBhZ2VzIiwgImRlbGV0ZV9wYWdlIiwgImRlbGV0ZV9zdWJwYWdlcyIsICJ1bmxpbmtfZmlsZSIsICJwYWdlRGVsZXRlciIsICJkb0V4dHJhcyIsICJzdWJwYWdlRGVsZXRlciIsICJ0aGluZ1dpdGhQYXJhbWV0ZXJzIiwgInVubGlua0JhY2tsaW5rc01haW4iLCAidW5saW5rSW1hZ2VJbnN0YW5jZXNNYWluIiwgInRhbGtQYWdlIiwgInJlZGlyZWN0RGVsZXRlciIsICJvbGRfdGV4dCIsICJzZXRNYXhDb25mbGljdFJldHJpZXMiLCAidW5saW5rSW1hZ2VJbnN0YW5jZXMiLCAidHdpbmtsZWJhdGNodW5kZWxldGVfZXhwb3J0cyIsICJpbml0X3R3aW5rbGViYXRjaHVuZGVsZXRlIiwgInR3aW5rbGViYXRjaHVuZGVsZXRlIiwgImJhdGNodW5kZWxldGUiLCAicHJvamVjdCIsICJ1bmRlbF90YWxrIiwgInBhZ2VVbmRlbGV0ZXIiLCAic2V0TWF4UmV0cmllcyIsICJ1bmRlbGV0ZVBhZ2UiLCAidGFsa3BhZ2VuYW1lIiwgImdldFRhbGtQYWdlIiwgImRydnByb3AiLCAiZHJ2bGltaXQiLCAidW5kZWxldGVUYWxrIiwgImRlbHJldnMiLCAidHdpbmtsZWJhdGNocHJvdGVjdF9leHBvcnRzIiwgImluaXRfdHdpbmtsZWJhdGNocHJvdGVjdCIsICJ0d2lua2xlYmF0Y2hwcm90ZWN0IiwgImJhdGNocHJvdGVjdCIsICJwcm90TGV2ZWwiLCAiX2l0ZXJhdG9yNjUiLCAiX3N0ZXA2NSIsICJtaXNzaW5nIiwgImVkaXRQcm90IiwgImZpbmRMYXN0IiwgImltYWdlaW5mbyIsICJyZXZpc2lvbnMiLCAiX2l0ZXJhdG9yNjYiLCAiX3N0ZXA2NiIsICJsaW5rcyIsICJjdXJyZW50UHJvdGVjdENvdW50ZXIiLCAiY3VycmVudHByb3RlY3RvciIsICJ0YWtlbkFjdGlvbiIsICJjcmVhdGVtb2RpZnkiLCAidHdpbmtsZWNsb3NlX2V4cG9ydHMiLCAiaW5pdF90d2lua2xlY2xvc2UiLCAidHdpbmtsZWNsb3NlIiwgInNlbGVjdG9yIiwgImRlbE5vZGUiLCAiZGVsTGluayIsICJfaXRlcmF0b3I2NyIsICJfc3RlcDY3IiwgImhlYWRsaW5laHJlZiIsICJtIiwgInBhZ2Vub3RleGlzdCIsICJoYXNDbGFzcyIsICJ0bXBOb2RlIiwgImNsb25lTm9kZSIsICJjb2RlcyIsICJpciIsICJyZXAiLCAibmUiLCAibnEiLCAiayIsICJhZG1pbm9ubHkiLCAic2siLCAidGsiLCAicnIiLCAiZGFuIiwgImQiLCAiaWMiLCAic2QiLCAibHNzZCIsICJzdmciLCAiZHJlcCIsICJjIiwgInIiLCAiY3IiLCAibWVyZ2UiLCAibWVyZ2VhcHByb3ZlZCIsICJuYyIsICJub29wIiwgImNoYW5nZV9jb2RlIiwgImNoYW5nZV9vcGVyYXRpb24iLCAicmVzdWx0RGF0YSIsICJfaTE2IiwgIl9PYmplY3QkZW50cmllczkiLCAiX2l0ZXJhdG9yNjgiLCAiX3N0ZXA2OCIsICJzZHJlYXNvbiIsICJyZW1hcmsiLCAicGFyZW50U2VjdGlvbiIsICJ0YWxrZW5kIiwgImRlbCIsICJrZWVwIiwgInBhZ2V0aXRsZSIsICJnZXROYW1lc3BhY2VJZCIsICJ0YWxrcGFnZXRpdGxlIiwgImdldE1haW5UZXh0IiwgInRvU3RyaW5nIiwgInZmZGtlcHQiLCAic2V0UHJlcGVuZFRleHQiLCAibmV3dGV4dCIsICJrZWVwQ29tcGxldGUiLCAic2F2ZVRhbGsiLCAic2JlZ2luIiwgInNlbmQiLCAiYmFyIiwgImRpc2FibGVMaW5rIiwgInR3aW5rbGVjb25maWdfZXhwb3J0cyIsICJpbml0X3R3aW5rbGVjb25maWciLCAidHdpbmtsZWNvbmZpZyIsICJ3YXRjaGxpc3RFbnVtcyIsICJ5ZXMiLCAibm8iLCAiZGVmYXVsdCIsICJjb21tb25TZXRzIiwgImNzZENyaXRlcmlhIiwgImRiIiwgImNzZENyaXRlcmlhRGlzcGxheU9yZGVyIiwgImNzZENyaXRlcmlhTm90aWZpY2F0aW9uIiwgImNzZENyaXRlcmlhTm90aWZpY2F0aW9uRGlzcGxheU9yZGVyIiwgImNzZEFuZERJQ3JpdGVyaWEiLCAiY3NkQW5kRElDcml0ZXJpYURpc3BsYXlPcmRlciIsICJ4ZmRDcml0ZXJpYSIsICJkZWxldGUiLCAiZndkY3NkIiwgInhmZENyaXRlcmlhRGlzcGxheU9yZGVyIiwgIm5hbWVzcGFjZXNOb1NwZWNpYWwiLCAibW9kdWxlIiwgInByZWZlcmVuY2VzIiwgImVudW1WYWx1ZXMiLCAidGFiIiwgImhlbHB0aXAiLCAic2V0VmFsdWVzIiwgImFkbWluT25seSIsICJjdXN0b21MaXN0VmFsdWVUaXRsZSIsICJjdXN0b21MaXN0TGFiZWxUaXRsZSIsICJ2YW5kIiwgInRvcmV2IiwgIm1pbmUiLCAicmVjZW50Y2hhbmdlc2xpbmtlZCIsICJidXR0b25DbGljayIsICJyYWRpb0NsaWNrIiwgInNldERpc3BsYXlPcmRlciIsICJjYXQiLCAiYWxwaGEiLCAic2FtZSIsICJub25hZG1pbm9ubHkiLCAiYWxsIiwgImNvbnRlbnRkaXYiLCAidG9jdGFibGUiLCAibWFyZ2luTGVmdCIsICJ0b2N0aXRsZSIsICJ0b2NoMiIsICJ0b2N0b2dnbGUiLCAidG9jdG9nZ2xlbGluayIsICJ0b2N1bCIsICIkdG9jdWwiLCAidG9nZ2xlIiwgImNvbnRlbnRmb3JtIiwgInNlY3Rpb25rZXkiLCAidG9jbGkiLCAidG9jYSIsICJyb3ciLCAiY2VsbCIsICJib3JkZXJCb3R0b20iLCAibWFyZ2luVG9wIiwgInJvd2NvdW50IiwgInByZWZrZXkiLCAicHJlZiIsICJtYXJnaW5Cb3R0b20iLCAiYmFja2dyb3VuZENvbG9yIiwgImdvdFByZWYiLCAidGV4dEFsaWduIiwgInBhZGRpbmdSaWdodCIsICJvcHRpb25FeGlzdHMiLCAiX2kxNyIsICJfT2JqZWN0JGVudHJpZXMxMCIsICJlbnVtdmFsdWUiLCAiZW51bWRpc3BsYXkiLCAiY2hlY2tkaXYiLCAicGFkZGluZ0xlZnQiLCAid29ya2VyIiwgIml0ZW1rZXkiLCAiaXRlbXZhbHVlIiwgImNoZWNrbGFiZWwiLCAiX2l0ZXJhdG9yNjkiLCAiX3N0ZXA2OSIsICJfaTE4IiwgIl9PYmplY3QkZW50cmllczExIiwgImN1c3RvbUxpc3RCdXR0b24iLCAibGlzdERpYWxvZyIsICJyZXNldGxpbmsiLCAicmVzZXRQcmVmTGluayIsICJjc3NGbG9hdCIsICJtYXJnaW4iLCAiZm9vdGVyYm94IiwgInN1Ym1pdEJ1dHRvbiIsICJmb290ZXJzcGFuIiwgImZvb3RlcmEiLCAicmVzZXRBbGxQcmVmcyIsICJoYXNoIiwgImxvYyIsICJib3giLCAic2NyaXB0UGFnZU5hbWUiLCAiYWRkUm93IiwgImRsZ3RhYmxlIiwgImNvbnRlbnR0ciIsICJjb250ZW50dGQiLCAicmVtb3ZlQnV0dG9uIiwgIl9jdXJwcmVmJGN1c3RvbUxpc3RWYSIsICJfY3VycHJlZiRjdXN0b21MaXN0TGEiLCAiJHByZWZidXR0b24iLCAiY3VydmFsdWUiLCAiY3VycHJlZiIsICJkaWFsb2djb250ZW50IiwgImRsZ3Rib2R5IiwgImRsZ3RyIiwgImRsZ3RoIiwgImdvdFJvdyIsICJfaXRlcmF0b3I3MCIsICJfc3RlcDcwIiwgImRsZ3Rmb290IiwgImRsZ3RkIiwgImFkZEJ1dHRvbiIsICJtaW5XaWR0aCIsICJidXR0b24iLCAicmVzZXQiLCAidGJvZHkiLCAiJGJ1dHRvbiIsICJvbGR2YWx1ZSIsICJyZXNldFByZWYiLCAiJHRib2R5IiwgIl9pdGVyYXRvcjcxIiwgIl9zdGVwNzEiLCAiaW5wdXRrZXkiLCAid2FudGVkcHJlZiIsICJmb3VuZGl0IiwgIl9pMTkiLCAiX09iamVjdCRlbnRyaWVzMTIiLCAidXNlcmpzIiwgIndyaXRlUHJlZnMiLCAibmV3Q29uZmlnIiwgIm9wdGlvbnNWZXJzaW9uIiwgImNvbXBhcmUiLCAiYiIsICJfaXRlcmF0b3I3MiIsICJfc3RlcDcyIiwgInVzZXJWYWx1ZSIsICJfaXRlcmF0b3I3MyIsICJfc3RlcDczIiwgIl9pMjAiLCAiX09iamVjdCRlbnRyaWVzMTMiLCAibm93aWtpIiwgIkpTT04iLCAic3RyaW5naWZ5IiwgInNhdmVTdWNjZXNzIiwgIm5vdGljZWJveCIsICJub3RpY2VjbGVhciIsICJjbGVhciIsICJQcm9taXNlIiwgInJlc29sdmUiLCAidHdpbmtsZUxvYWQiLCAiX3R3aW5rbGVMb2FkIiwgImFwcGx5IiwgImFyZ3VtZW50cyJdCn0K diff --git a/dist/VariantAlly/VariantAlly.js b/dist/VariantAlly/VariantAlly.js index fb359eb61..847aff620 100644 --- a/dist/VariantAlly/VariantAlly.js +++ b/dist/VariantAlly/VariantAlly.js @@ -45,9 +45,9 @@ var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-callable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-callable.js var require_is_callable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-callable.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-callable.js"(exports2, module2) { "use strict"; var documentAll = typeof document == "object" && document.all; module2.exports = typeof documentAll == "undefined" && documentAll !== void 0 ? function(argument) { @@ -58,9 +58,9 @@ var require_is_callable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/fails.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/fails.js var require_fails = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/fails.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/fails.js"(exports2, module2) { "use strict"; module2.exports = function(exec) { try { @@ -72,9 +72,9 @@ var require_fails = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/descriptors.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/descriptors.js var require_descriptors = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/descriptors.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/descriptors.js"(exports2, module2) { "use strict"; var fails = require_fails(); module2.exports = !fails(function() { @@ -85,9 +85,9 @@ var require_descriptors = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/global.js -var require_global = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/global.js"(exports2, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/global-this.js +var require_global_this = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/global-this.js"(exports2, module2) { "use strict"; var check = function(it) { return it && it.Math === Math && it; @@ -101,9 +101,9 @@ var require_global = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-object.js var require_is_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-object.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-object.js"(exports2, module2) { "use strict"; var isCallable = require_is_callable(); module2.exports = function(it) { @@ -112,13 +112,13 @@ var require_is_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/document-create-element.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/document-create-element.js var require_document_create_element = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/document-create-element.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/document-create-element.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isObject = require_is_object(); - var document2 = global2.document; + var document2 = globalThis2.document; var EXISTS = isObject(document2) && isObject(document2.createElement); module2.exports = function(it) { return EXISTS ? document2.createElement(it) : {}; @@ -126,9 +126,9 @@ var require_document_create_element = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ie8-dom-define.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ie8-dom-define.js var require_ie8_dom_define = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ie8-dom-define.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ie8-dom-define.js"(exports2, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var fails = require_fails(); @@ -143,9 +143,9 @@ var require_ie8_dom_define = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/v8-prototype-define-bug.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/v8-prototype-define-bug.js var require_v8_prototype_define_bug = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports2, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var fails = require_fails(); @@ -159,9 +159,9 @@ var require_v8_prototype_define_bug = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/an-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/an-object.js var require_an_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/an-object.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/an-object.js"(exports2, module2) { "use strict"; var isObject = require_is_object(); var $String = String; @@ -173,9 +173,9 @@ var require_an_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-bind-native.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-bind-native.js var require_function_bind_native = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-bind-native.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-bind-native.js"(exports2, module2) { "use strict"; var fails = require_fails(); module2.exports = !fails(function() { @@ -186,9 +186,9 @@ var require_function_bind_native = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-call.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-call.js var require_function_call = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-call.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-call.js"(exports2, module2) { "use strict"; var NATIVE_BIND = require_function_bind_native(); var call = Function.prototype.call; @@ -198,24 +198,24 @@ var require_function_call = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in.js var require_get_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-built-in.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isCallable = require_is_callable(); var aFunction = function(argument) { return isCallable(argument) ? argument : void 0; }; module2.exports = function(namespace, method) { - return arguments.length < 2 ? aFunction(global2[namespace]) : global2[namespace] && global2[namespace][method]; + return arguments.length < 2 ? aFunction(globalThis2[namespace]) : globalThis2[namespace] && globalThis2[namespace][method]; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this.js var require_function_uncurry_this = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this.js"(exports2, module2) { "use strict"; var NATIVE_BIND = require_function_bind_native(); var FunctionPrototype = Function.prototype; @@ -229,31 +229,34 @@ var require_function_uncurry_this = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-is-prototype-of.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-is-prototype-of.js var require_object_is_prototype_of = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-is-prototype-of.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-is-prototype-of.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); module2.exports = uncurryThis({}.isPrototypeOf); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-user-agent.js -var require_engine_user_agent = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-user-agent.js"(exports2, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-user-agent.js +var require_environment_user_agent = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-user-agent.js"(exports2, module2) { "use strict"; - module2.exports = typeof navigator != "undefined" && String(navigator.userAgent) || ""; + var globalThis2 = require_global_this(); + var navigator2 = globalThis2.navigator; + var userAgent = navigator2 && navigator2.userAgent; + module2.exports = userAgent ? String(userAgent) : ""; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-v8-version.js -var require_engine_v8_version = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-v8-version.js"(exports2, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-v8-version.js +var require_environment_v8_version = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-v8-version.js"(exports2, module2) { "use strict"; - var global2 = require_global(); - var userAgent = require_engine_user_agent(); - var process = global2.process; - var Deno = global2.Deno; + var globalThis2 = require_global_this(); + var userAgent = require_environment_user_agent(); + var process = globalThis2.process; + var Deno = globalThis2.Deno; var versions = process && process.versions || Deno && Deno.version; var v8 = versions && versions.v8; var match; @@ -273,14 +276,14 @@ var require_engine_v8_version = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/symbol-constructor-detection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/symbol-constructor-detection.js var require_symbol_constructor_detection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/symbol-constructor-detection.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/symbol-constructor-detection.js"(exports2, module2) { "use strict"; - var V8_VERSION = require_engine_v8_version(); + var V8_VERSION = require_environment_v8_version(); var fails = require_fails(); - var global2 = require_global(); - var $String = global2.String; + var globalThis2 = require_global_this(); + var $String = globalThis2.String; module2.exports = !!Object.getOwnPropertySymbols && !fails(function() { var symbol = Symbol("symbol detection"); return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances @@ -289,18 +292,18 @@ var require_symbol_constructor_detection = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/use-symbol-as-uid.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/use-symbol-as-uid.js var require_use_symbol_as_uid = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/use-symbol-as-uid.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/use-symbol-as-uid.js"(exports2, module2) { "use strict"; var NATIVE_SYMBOL = require_symbol_constructor_detection(); module2.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol"; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-symbol.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-symbol.js var require_is_symbol = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-symbol.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-symbol.js"(exports2, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var isCallable = require_is_callable(); @@ -316,9 +319,9 @@ var require_is_symbol = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-to-string.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/try-to-string.js var require_try_to_string = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-to-string.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/try-to-string.js"(exports2, module2) { "use strict"; var $String = String; module2.exports = function(argument) { @@ -331,9 +334,9 @@ var require_try_to_string = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-callable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-callable.js var require_a_callable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-callable.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-callable.js"(exports2, module2) { "use strict"; var isCallable = require_is_callable(); var tryToString = require_try_to_string(); @@ -345,9 +348,9 @@ var require_a_callable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-null-or-undefined.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-null-or-undefined.js var require_is_null_or_undefined = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-null-or-undefined.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-null-or-undefined.js"(exports2, module2) { "use strict"; module2.exports = function(it) { return it === null || it === void 0; @@ -355,9 +358,9 @@ var require_is_null_or_undefined = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-method.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-method.js var require_get_method = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-method.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-method.js"(exports2, module2) { "use strict"; var aCallable = require_a_callable(); var isNullOrUndefined = require_is_null_or_undefined(); @@ -368,9 +371,9 @@ var require_get_method = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ordinary-to-primitive.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ordinary-to-primitive.js var require_ordinary_to_primitive = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ordinary-to-primitive.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ordinary-to-primitive.js"(exports2, module2) { "use strict"; var call = require_function_call(); var isCallable = require_is_callable(); @@ -386,53 +389,53 @@ var require_ordinary_to_primitive = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-pure.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-pure.js var require_is_pure = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-pure.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-pure.js"(exports2, module2) { "use strict"; module2.exports = false; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-global-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-global-property.js var require_define_global_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-global-property.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-global-property.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var defineProperty = Object.defineProperty; module2.exports = function(key, value) { try { - defineProperty(global2, key, { value, configurable: true, writable: true }); + defineProperty(globalThis2, key, { value, configurable: true, writable: true }); } catch (error) { - global2[key] = value; + globalThis2[key] = value; } return value; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-store.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-store.js var require_shared_store = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-store.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-store.js"(exports2, module2) { "use strict"; var IS_PURE = require_is_pure(); - var globalThis2 = require_global(); + var globalThis2 = require_global_this(); var defineGlobalProperty = require_define_global_property(); var SHARED = "__core-js_shared__"; var store = module2.exports = globalThis2[SHARED] || defineGlobalProperty(SHARED, {}); (store.versions || (store.versions = [])).push({ - version: "3.37.1", + version: "3.38.0", mode: IS_PURE ? "pure" : "global", copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)", - license: "https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE", + license: "https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE", source: "https://github.com/zloirock/core-js" }); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared.js var require_shared = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared.js"(exports2, module2) { "use strict"; var store = require_shared_store(); module2.exports = function(key, value) { @@ -441,9 +444,9 @@ var require_shared = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/require-object-coercible.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/require-object-coercible.js var require_require_object_coercible = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/require-object-coercible.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/require-object-coercible.js"(exports2, module2) { "use strict"; var isNullOrUndefined = require_is_null_or_undefined(); var $TypeError = TypeError; @@ -454,9 +457,9 @@ var require_require_object_coercible = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-object.js var require_to_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-object.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-object.js"(exports2, module2) { "use strict"; var requireObjectCoercible = require_require_object_coercible(); var $Object = Object; @@ -466,9 +469,9 @@ var require_to_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/has-own-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/has-own-property.js var require_has_own_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/has-own-property.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/has-own-property.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var toObject = require_to_object(); @@ -479,9 +482,9 @@ var require_has_own_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/uid.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/uid.js var require_uid = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/uid.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/uid.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var id = 0; @@ -493,17 +496,17 @@ var require_uid = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/well-known-symbol.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/well-known-symbol.js var require_well_known_symbol = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/well-known-symbol.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/well-known-symbol.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var shared = require_shared(); var hasOwn = require_has_own_property(); var uid = require_uid(); var NATIVE_SYMBOL = require_symbol_constructor_detection(); var USE_SYMBOL_AS_UID = require_use_symbol_as_uid(); - var Symbol2 = global2.Symbol; + var Symbol2 = globalThis2.Symbol; var WellKnownSymbolsStore = shared("wks"); var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2["for"] || Symbol2 : Symbol2 && Symbol2.withoutSetter || uid; module2.exports = function(name) { @@ -515,9 +518,9 @@ var require_well_known_symbol = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-primitive.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-primitive.js var require_to_primitive = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-primitive.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-primitive.js"(exports2, module2) { "use strict"; var call = require_function_call(); var isObject = require_is_object(); @@ -543,9 +546,9 @@ var require_to_primitive = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-property-key.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-property-key.js var require_to_property_key = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-property-key.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-property-key.js"(exports2, module2) { "use strict"; var toPrimitive = require_to_primitive(); var isSymbol = require_is_symbol(); @@ -556,9 +559,9 @@ var require_to_property_key = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-define-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-define-property.js var require_object_define_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-define-property.js"(exports2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-define-property.js"(exports2) { "use strict"; var DESCRIPTORS = require_descriptors(); var IE8_DOM_DEFINE = require_ie8_dom_define(); @@ -602,9 +605,9 @@ var require_object_define_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-name.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-name.js var require_function_name = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-name.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-name.js"(exports2, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var hasOwn = require_has_own_property(); @@ -622,9 +625,9 @@ var require_function_name = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/inspect-source.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/inspect-source.js var require_inspect_source = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/inspect-source.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/inspect-source.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var isCallable = require_is_callable(); @@ -639,20 +642,20 @@ var require_inspect_source = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/weak-map-basic-detection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/weak-map-basic-detection.js var require_weak_map_basic_detection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/weak-map-basic-detection.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/weak-map-basic-detection.js"(exports2, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isCallable = require_is_callable(); - var WeakMap = global2.WeakMap; + var WeakMap = globalThis2.WeakMap; module2.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-property-descriptor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-property-descriptor.js var require_create_property_descriptor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-property-descriptor.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-property-descriptor.js"(exports2, module2) { "use strict"; module2.exports = function(bitmap, value) { return { @@ -665,9 +668,9 @@ var require_create_property_descriptor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-non-enumerable-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-non-enumerable-property.js var require_create_non_enumerable_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-non-enumerable-property.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-non-enumerable-property.js"(exports2, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var definePropertyModule = require_object_define_property(); @@ -681,9 +684,9 @@ var require_create_non_enumerable_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-key.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-key.js var require_shared_key = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-key.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-key.js"(exports2, module2) { "use strict"; var shared = require_shared(); var uid = require_uid(); @@ -694,20 +697,20 @@ var require_shared_key = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/hidden-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/hidden-keys.js var require_hidden_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/hidden-keys.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/hidden-keys.js"(exports2, module2) { "use strict"; module2.exports = {}; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/internal-state.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/internal-state.js var require_internal_state = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/internal-state.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/internal-state.js"(exports2, module2) { "use strict"; var NATIVE_WEAK_MAP = require_weak_map_basic_detection(); - var global2 = require_global(); + var globalThis2 = require_global_this(); var isObject = require_is_object(); var createNonEnumerableProperty = require_create_non_enumerable_property(); var hasOwn = require_has_own_property(); @@ -715,8 +718,8 @@ var require_internal_state = __commonJS({ var sharedKey = require_shared_key(); var hiddenKeys = require_hidden_keys(); var OBJECT_ALREADY_INITIALIZED = "Object already initialized"; - var TypeError2 = global2.TypeError; - var WeakMap = global2.WeakMap; + var TypeError2 = globalThis2.TypeError; + var WeakMap = globalThis2.WeakMap; var set; var get; var has; @@ -777,9 +780,9 @@ var require_internal_state = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/make-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/make-built-in.js var require_make_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/make-built-in.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/make-built-in.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var fails = require_fails(); @@ -832,9 +835,9 @@ var require_make_built_in = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in.js var require_define_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in.js"(exports2, module2) { "use strict"; var isCallable = require_is_callable(); var definePropertyModule = require_object_define_property(); @@ -867,9 +870,9 @@ var require_define_built_in = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-string-tag-support.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-string-tag-support.js var require_to_string_tag_support = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-string-tag-support.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-string-tag-support.js"(exports2, module2) { "use strict"; var wellKnownSymbol = require_well_known_symbol(); var TO_STRING_TAG = wellKnownSymbol("toStringTag"); @@ -879,9 +882,9 @@ var require_to_string_tag_support = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof-raw.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof-raw.js var require_classof_raw = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof-raw.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof-raw.js"(exports2, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var toString = uncurryThis({}.toString); @@ -892,9 +895,9 @@ var require_classof_raw = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof.js var require_classof = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof.js"(exports2, module2) { "use strict"; var TO_STRING_TAG_SUPPORT = require_to_string_tag_support(); var isCallable = require_is_callable(); @@ -918,9 +921,9 @@ var require_classof = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-string.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-string.js var require_to_string = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-string.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-string.js"(exports2, module2) { "use strict"; var classof = require_classof(); var $String = String; @@ -931,9 +934,9 @@ var require_to_string = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/validate-arguments-length.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/validate-arguments-length.js var require_validate_arguments_length = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/validate-arguments-length.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/validate-arguments-length.js"(exports2, module2) { "use strict"; var $TypeError = TypeError; module2.exports = function(passed, required) { @@ -943,9 +946,9 @@ var require_validate_arguments_length = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.delete.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.delete.js var require_web_url_search_params_delete = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.delete.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.delete.js"() { "use strict"; var defineBuiltIn = require_define_built_in(); var uncurryThis = require_function_uncurry_this(); @@ -993,9 +996,9 @@ var require_web_url_search_params_delete = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.has.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.has.js var require_web_url_search_params_has = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.has.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.has.js"() { "use strict"; var defineBuiltIn = require_define_built_in(); var uncurryThis = require_function_uncurry_this(); @@ -1024,9 +1027,9 @@ var require_web_url_search_params_has = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in-accessor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in-accessor.js var require_define_built_in_accessor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in-accessor.js"(exports2, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in-accessor.js"(exports2, module2) { "use strict"; var makeBuiltIn = require_make_built_in(); var defineProperty = require_object_define_property(); @@ -1038,9 +1041,9 @@ var require_define_built_in_accessor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.size.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.size.js var require_web_url_search_params_size = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.size.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.size.js"() { "use strict"; var DESCRIPTORS = require_descriptors(); var uncurryThis = require_function_uncurry_this(); @@ -1419,4 +1422,4 @@ main(); /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5kZWxldGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmhhcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qcyIsICJzcmMvVmFyaWFudEFsbHkvVmFyaWFudEFsbHkudHMiLCAic3JjL1ZhcmlhbnRBbGx5L21vZHVsZXMvdXRpbHMudHMiLCAic3JjL1ZhcmlhbnRBbGx5L21vZHVsZXMvbW9kZWwudHMiLCAic3JjL1ZhcmlhbnRBbGx5L21vZHVsZXMvY29udHJvbGxlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdFxudmFyIGRvY3VtZW50QWxsID0gdHlwZW9mIGRvY3VtZW50ID09ICdvYmplY3QnICYmIGRvY3VtZW50LmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIGNoZWNrKHR5cGVvZiB0aGlzID09ICdvYmplY3QnICYmIHRoaXMpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVjggfiBDaHJvbWUgMzYtXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMzM0XG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ3Byb3RvdHlwZScsIHtcbiAgICB2YWx1ZTogNDIsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pLnByb3RvdHlwZSAhPT0gNDI7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IFR5cGUoYXJndW1lbnQpIGlzIE9iamVjdGBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc09iamVjdChhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJFN0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxbbmFtZXNwYWNlXSkgOiBnbG9iYWxbbmFtZXNwYWNlXSAmJiBnbG9iYWxbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGNhbGwgPSBGdW5jdGlvblByb3RvdHlwZS5jYWxsO1xudmFyIHVuY3VycnlUaGlzV2l0aEJpbmQgPSBOQVRJVkVfQklORCAmJiBGdW5jdGlvblByb3RvdHlwZS5iaW5kLmJpbmQoY2FsbCwgY2FsbCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyB1bmN1cnJ5VGhpc1dpdGhCaW5kIDogZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGwuYXBwbHkoZm4sIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbC5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxudmFyICRTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnc3ltYm9sIGRldGVjdGlvbicpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIC8vIG5iOiBEbyBub3QgY2FsbCBgU3RyaW5nYCBkaXJlY3RseSB0byBhdm9pZCB0aGlzIGJlaW5nIG9wdGltaXplZCBvdXQgdG8gYHN5bWJvbCsnJ2Agd2hpY2ggd2lsbCxcbiAgLy8gb2YgY291cnNlLCBmYWlsLlxuICByZXR1cm4gISRTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdPYmplY3QnO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIHdlIGNhbid0IHVzZSBqdXN0IGBpdCA9PSBudWxsYCBzaW5jZSBvZiBgZG9jdW1lbnQuYWxsYCBzcGVjaWFsIGNhc2Vcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3QtYWVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IG51bGwgfHwgaXQgPT09IHVuZGVmaW5lZDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoaXNDYWxsYWJsZShmbiA9IGlucHV0LnZhbHVlT2YpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBkZWZpbmVQcm9wZXJ0eShnbG9iYWwsIGtleSwgeyB2YWx1ZTogdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gbW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxUaGlzW1NIQVJFRF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoU0hBUkVELCB7fSk7XG5cbihzdG9yZS52ZXJzaW9ucyB8fCAoc3RvcmUudmVyc2lvbnMgPSBbXSkpLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zNy4xJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjQgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zNy4xL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlIHx8IHt9KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuICRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHVuY3VycnlUaGlzKHt9Lmhhc093blByb3BlcnR5KTtcblxuLy8gYEhhc093blByb3BlcnR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaGFzb3ducHJvcGVydHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaGFzb3duIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkodG9PYmplY3QoaXQpLCBrZXkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcygxLjAudG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyB0b1N0cmluZygrK2lkICsgcG9zdGZpeCwgMzYpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcblxuLy8gYFRvUHJvcGVydHlLZXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIga2V5ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdzdHJpbmcnKTtcbiAgcmV0dXJuIGlzU3ltYm9sKGtleSkgPyBrZXkgOiBrZXkgKyAnJztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbicpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBzdG9yZS5zZXQoaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5nZXQoaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuaGFzKGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkuKiQvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zLmVudW1lcmFibGU7XG4gIHZhciBuYW1lID0gb3B0aW9ucy5uYW1lICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm5hbWUgOiBrZXk7XG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkgbWFrZUJ1aWx0SW4odmFsdWUsIG5hbWUsIG9wdGlvbnMpO1xuICBpZiAob3B0aW9ucy5nbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZUdsb2JhbFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIW9wdGlvbnMudW5zYWZlKSBkZWxldGUgT1trZXldO1xuICAgICAgZWxzZSBpZiAoT1trZXldKSBzaW1wbGUgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogIW9wdGlvbnMubm9uQ29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6ICFvcHRpb25zLm5vbldyaXRhYmxlXG4gICAgfSk7XG4gIH0gcmV0dXJuIE87XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgdGVzdCA9IHt9O1xuXG50ZXN0W1RPX1NUUklOR19UQUddID0gJ3onO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmluZyh0ZXN0KSA9PT0gJ1tvYmplY3Qgel0nO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoe30udG9TdHJpbmcpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gc3RyaW5nU2xpY2UodG9TdHJpbmcoaXQpLCA4LCAtMSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2ZSYXcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBDT1JSRUNUX0FSR1VNRU5UUyA9IGNsYXNzb2ZSYXcoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSAkT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT09ICdPYmplY3QnICYmIGlzQ2FsbGFibGUoTy5jYWxsZWUpID8gJ0FyZ3VtZW50cycgOiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChjbGFzc29mKGFyZ3VtZW50KSA9PT0gJ1N5bWJvbCcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nJyk7XG4gIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBhc3NlZCwgcmVxdWlyZWQpIHtcbiAgaWYgKHBhc3NlZCA8IHJlcXVpcmVkKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignTm90IGVub3VnaCBhcmd1bWVudHMnKTtcbiAgcmV0dXJuIHBhc3NlZDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xuXG52YXIgJFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtcztcbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSAkVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBhcHBlbmQgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuYXBwZW5kKTtcbnZhciAkZGVsZXRlID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlWydkZWxldGUnXSk7XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5mb3JFYWNoKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgcGFyYW1zID0gbmV3ICRVUkxTZWFyY2hQYXJhbXMoJ2E9MSZhPTImYj0zJyk7XG5cbnBhcmFtc1snZGVsZXRlJ10oJ2EnLCAxKTtcbi8vIGB1bmRlZmluZWRgIGNhc2UgaXMgYSBDaHJvbWl1bSAxMTcgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xNDIyMlxucGFyYW1zWydkZWxldGUnXSgnYicsIHVuZGVmaW5lZCk7XG5cbmlmIChwYXJhbXMgKyAnJyAhPT0gJ2E9MicpIHtcbiAgZGVmaW5lQnVpbHRJbihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdkZWxldGUnLCBmdW5jdGlvbiAobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgaWYgKGxlbmd0aCAmJiAkdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICRkZWxldGUodGhpcywgbmFtZSk7XG4gICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICBmb3JFYWNoKHRoaXMsIGZ1bmN0aW9uICh2LCBrKSB7IC8vIGFsc28gdmFsaWRhdGVzIGB0aGlzYFxuICAgICAgcHVzaChlbnRyaWVzLCB7IGtleTogaywgdmFsdWU6IHYgfSk7XG4gICAgfSk7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgobGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIHZhbHVlID0gdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBkaW5kZXggPSAwO1xuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIHZhciBlbnRyaWVzTGVuZ3RoID0gZW50cmllcy5sZW5ndGg7XG4gICAgdmFyIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXNMZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGlmIChmb3VuZCB8fCBlbnRyeS5rZXkgPT09IGtleSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICRkZWxldGUodGhpcywgZW50cnkua2V5KTtcbiAgICAgIH0gZWxzZSBkaW5kZXgrKztcbiAgICB9XG4gICAgd2hpbGUgKGRpbmRleCA8IGVudHJpZXNMZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tkaW5kZXgrK107XG4gICAgICBpZiAoIShlbnRyeS5rZXkgPT09IGtleSAmJiBlbnRyeS52YWx1ZSA9PT0gdmFsdWUpKSBhcHBlbmQodGhpcywgZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7XG4gICAgfVxuICB9LCB7IGVudW1lcmFibGU6IHRydWUsIHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiIsICIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG5cbnZhciAkVVJMU2VhcmNoUGFyYW1zID0gVVJMU2VhcmNoUGFyYW1zO1xudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9ICRVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGdldEFsbCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5nZXRBbGwpO1xudmFyICRoYXMgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuaGFzKTtcbnZhciBwYXJhbXMgPSBuZXcgJFVSTFNlYXJjaFBhcmFtcygnYT0xJyk7XG5cbi8vIGB1bmRlZmluZWRgIGNhc2UgaXMgYSBDaHJvbWl1bSAxMTcgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xNDIyMlxuaWYgKHBhcmFtcy5oYXMoJ2EnLCAyKSB8fCAhcGFyYW1zLmhhcygnYScsIHVuZGVmaW5lZCkpIHtcbiAgZGVmaW5lQnVpbHRJbihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdoYXMnLCBmdW5jdGlvbiBoYXMobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgaWYgKGxlbmd0aCAmJiAkdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICRoYXModGhpcywgbmFtZSk7XG4gICAgdmFyIHZhbHVlcyA9IGdldEFsbCh0aGlzLCBuYW1lKTsgLy8gYWxzbyB2YWxpZGF0ZXMgYHRoaXNgXG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgobGVuZ3RoLCAxKTtcbiAgICB2YXIgdmFsdWUgPSB0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgaWYgKHZhbHVlc1tpbmRleCsrXSA9PT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIH0gcmV0dXJuIGZhbHNlO1xuICB9LCB7IGVudW1lcmFibGU6IHRydWUsIHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiIsICIndXNlIHN0cmljdCc7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yLmdldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5nZXQsIG5hbWUsIHsgZ2V0dGVyOiB0cnVlIH0pO1xuICBpZiAoZGVzY3JpcHRvci5zZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3Iuc2V0LCBuYW1lLCB7IHNldHRlcjogdHJ1ZSB9KTtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5LmYodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBmb3JFYWNoID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmZvckVhY2gpO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zaXplYCBnZXR0ZXJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvdXJsL3B1bGwvNzM0XG5pZiAoREVTQ1JJUFRPUlMgJiYgISgnc2l6ZScgaW4gVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlKSkge1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgZm9yRWFjaCh0aGlzLCBmdW5jdGlvbiAoKSB7IGNvdW50Kys7IH0pO1xuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHtcblx0Y2hlY2tUaGlzUGFnZSxcblx0cmV3cml0ZUFuY2hvcnMsXG5cdGFwcGx5VVJMVmFyaWFudCxcblx0c2hvd1ZhcmlhbnRQcm9tcHQsXG5cdGlzRWxpZ2libGVGb3JSZXdyaXRpbmcsXG59IGZyb20gJy4vbW9kdWxlcy9jb250cm9sbGVyJztcbmltcG9ydCB7Y2FsY3VsYXRlUHJlZmVycmVkVmFyaWFudCwgZ2V0UGFnZVZhcmlhbnQsIGlzT3B0T3V0ZWQsIHNldExvY2FsVmFyaWFudH0gZnJvbSAnLi9tb2R1bGVzL21vZGVsJztcbmltcG9ydCB7aXNMb2dnZWRJbiwgaXNMYW5nQ2hpbmVzZSwgaXNXaWtpdGV4dFBhZ2UsIGlzVmlld2luZ1BhZ2UsIGlzUmVmZXJyZXJTZWxmfSBmcm9tICcuL21vZHVsZXMvdXRpbHMnO1xuXG5mdW5jdGlvbiBtYWluKCkge1xuXHQvLyBNYW51YWxseSBvcHQgb3V0ZWQgdXNlcnNcblx0aWYgKGlzT3B0T3V0ZWQoKSkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGlmIChpc0xvZ2dlZEluKCkpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBOb24tQ2hpbmVzZSBwYWdlcy91c2Vyc1xuXHRpZiAoIWlzTGFuZ0NoaW5lc2UoKSkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGFwcGx5VVJMVmFyaWFudCgpO1xuXG5cdGNvbnN0IHByZWZlcnJlZFZhcmlhbnQgPSBjYWxjdWxhdGVQcmVmZXJyZWRWYXJpYW50KCk7XG5cdGlmIChwcmVmZXJyZWRWYXJpYW50ICE9PSBudWxsKSB7XG5cdFx0Ly8gT3B0aW1pc3RpY2FsbHkgc2V0IGxvY2FsIHZhcmlhbnQgdG8gYmUgZXF1YWwgdG8gYnJvd3NlciB2YXJpYW50XG5cdFx0Ly8gSW4gY2FzZSB0aGUgdXNlcidzIGJyb3dzZXIgbGFuZ3VhZ2UgYmVjb21lcyBpbnZhbGlkIGluIHRoZSBmdXR1cmUsXG5cdFx0Ly8gdGhpcyByZWR1Y2VzIHRoZSBwb3NzaWJpbGl0eSB0byBzaG93IHByb21wdCB0byBkaXNydXB0IHVzZXJzLlxuXHRcdHNldExvY2FsVmFyaWFudChwcmVmZXJyZWRWYXJpYW50KTtcblx0fVxuXG5cdGNvbnN0IHBhZ2VWYXJpYW50ID0gZ2V0UGFnZVZhcmlhbnQoKTtcblxuXHQvLyBOb24tYXJ0aWNsZSBwYWdlIChKUy9DU1MgcGFnZXMsIFNwZWNpYWwgcGFnZXMgZXRjLilcblx0aWYgKHBhZ2VWYXJpYW50ID09PSBudWxsIHx8ICFpc1dpa2l0ZXh0UGFnZSgpKSB7XG5cdFx0Ly8gU3VjaCBwYWdlIGNhbid0IGhhdmUgdmFyaWFudCwgYnV0IHByZWZlcnJlZCB2YXJpYW50IG1heSBiZSBhdmFpbGFibGVcblx0XHQvLyBTbyBzdGlsbCByZXdyaXRlIGxpbmtzXG5cdFx0aWYgKHByZWZlcnJlZFZhcmlhbnQgIT09IG51bGwpIHtcblx0XHRcdHJld3JpdGVBbmNob3JzKHByZWZlcnJlZFZhcmlhbnQpO1xuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBQcmVmZXJyZWQgdmFyaWFudCB1bmF2YWlsYWJsZVxuXHRpZiAocHJlZmVycmVkVmFyaWFudCA9PT0gbnVsbCkge1xuXHRcdGlmIChpc1ZpZXdpbmdQYWdlKCkpIHtcblx0XHRcdHNob3dWYXJpYW50UHJvbXB0KCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gT24tc2l0ZSBuYXZpZ2F0aW9uIHRvIGxpbmtzIGluZWxpZ2libGUgZm9yIHdyaXRpbmdcblx0Ly8gVGhlIGVsaWdpYmlsaXR5IGNoZWNrIGlzIHJlcXVpcmUgYmVjYXVzZSB1c2VyIG1heSBjbGljayBvbiBhIGxpbmsgd2l0aCB2YXJpYW50IGludGVudGlvbmFsbHlcblx0Ly8gZS5nLiB2YXJpYW50IGRyb3Bkb3duIGFuZCB7e1ZhcmlhbnQtY25oa3R3c2d9fVxuXHRpZiAoaXNSZWZlcnJlclNlbGYoKSAmJiAhaXNFbGlnaWJsZUZvclJld3JpdGluZyhsb2NhdGlvbi5ocmVmKSkge1xuXHRcdHJld3JpdGVBbmNob3JzKHByZWZlcnJlZFZhcmlhbnQpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNoZWNrVGhpc1BhZ2UocHJlZmVycmVkVmFyaWFudCwgcGFnZVZhcmlhbnQpO1xuXHRyZXdyaXRlQW5jaG9ycyhwcmVmZXJyZWRWYXJpYW50KTtcbn1cblxubWFpbigpO1xuXG4vLyBFeHBvc2UgZm9yIFZhcmlhbnRBbGx5RGlhbG9nJ3MgdXNlXG5leHBvcnQge3NldExvY2FsVmFyaWFudCwgc2V0T3B0T3V0fSBmcm9tICcuL21vZHVsZXMvbW9kZWwnO1xuZXhwb3J0IHtyZWRpcmVjdH0gZnJvbSAnLi9tb2R1bGVzL2NvbnRyb2xsZXInO1xuIiwgImZ1bmN0aW9uIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XG5cdHJldHVybiBtdy5jb25maWcuZXhpc3RzKCd3Z1VzZXJJZCcpO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgcmVmZXJyZXIgb3JpZ2luYXRlcyBmcm9tIHRoZSBzYW1lIGRvbWFpbi5cbiAqL1xuZnVuY3Rpb24gaXNSZWZlcnJlclNlbGYoKTogYm9vbGVhbiB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIG5ldyBVUkwoZG9jdW1lbnQucmVmZXJyZXIpLmhvc3RuYW1lID09PSBsb2NhdGlvbi5ob3N0bmFtZTtcblx0fSBjYXRjaCB7XG5cdFx0Ly8gSW52YWxpZCBVUkxcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuZnVuY3Rpb24gaXNWaWV3aW5nUGFnZSgpOiBib29sZWFuIHtcblx0cmV0dXJuIG13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJykgPT09ICd2aWV3Jztcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGxhbmd1YWdlIChzZXQgaW4gdXNlciBwcmVmZXJlbmNlIG9yIGJ5ID91c2VsYW5nPXh4eClcbiAqIGlzIENoaW5lc2Ugb3Igbm90LlxuICovXG5mdW5jdGlvbiBpc0xhbmdDaGluZXNlKCk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gbXcuY29uZmlnLmdldCgnd2dVc2VyTGFuZ3VhZ2UnKS5zdGFydHNXaXRoKCd6aCcpO1xufVxuXG5mdW5jdGlvbiBpc1dpa2l0ZXh0UGFnZSgpOiBib29sZWFuIHtcblx0cmV0dXJuIG13LmNvbmZpZy5nZXQoJ3dnQ2Fub25pY2FsTmFtZXNwYWNlJykgIT09ICdTcGVjaWFsJyAmJiBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VDb250ZW50TW9kZWwnKSA9PT0gJ3dpa2l0ZXh0Jztcbn1cblxuZXhwb3J0IHtpc0xvZ2dlZEluLCBpc1JlZmVycmVyU2VsZiwgaXNWaWV3aW5nUGFnZSwgaXNMYW5nQ2hpbmVzZSwgaXNXaWtpdGV4dFBhZ2V9O1xuIiwgImltcG9ydCB7aXNMb2dnZWRJbn0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IExPQ0FMX1ZBUklBTlRfS0VZID0gJ3ZhLXZhcic7XG5jb25zdCBPUFRPVVRfS0VZID0gJ3ZhLW9wdG91dCc7XG5jb25zdCBWQUxJRF9WQVJJQU5UUyA9IFsnemgtY24nLCAnemgtc2cnLCAnemgtbXknLCAnemgtdHcnLCAnemgtaGsnLCAnemgtbW8nXSBhcyBjb25zdDtcbmNvbnN0IFZBUklBTlRTID0gWyd6aCcsICd6aC1oYW5zJywgJ3poLWhhbnQnLCAuLi5WQUxJRF9WQVJJQU5UU10gYXMgY29uc3Q7XG5jb25zdCBFWFRfVkFSSUFOVFMgPSBbXG5cdCd6aC1oYW5zLWNuJyxcblx0J3poLWhhbnMtc2cnLFxuXHQnemgtaGFucy1teScsXG5cdCd6aC1oYW50LXR3Jyxcblx0J3poLWhhbnQtaGsnLFxuXHQnemgtaGFudC1tbycsXG5cdC4uLlZBUklBTlRTLFxuXSBhcyBjb25zdDtcbi8vIFNvbWUgYnJvd3NlcnMgKGUuZy4gRmlyZWZveCBBbmRyb2lkKSBtYXkgcmV0dXJuIHN1Y2ggbGFuZ3VhZ2VzXG5jb25zdCBFWFRfTUFQUElORzogUmVjb3JkPHN0cmluZywgVmFsaWRWYXJpYW50PiA9IHtcblx0J3poLWhhbnMtY24nOiAnemgtY24nLFxuXHQnemgtaGFucy1zZyc6ICd6aC1zZycsXG5cdCd6aC1oYW5zLW15JzogJ3poLW15Jyxcblx0J3poLWhhbnQtdHcnOiAnemgtdHcnLFxuXHQnemgtaGFudC1oayc6ICd6aC1oaycsXG5cdCd6aC1oYW50LW1vJzogJ3poLW1vJyxcbn07XG5cbnR5cGUgVmFsaWRWYXJpYW50ID0gKHR5cGVvZiBWQUxJRF9WQVJJQU5UUylbbnVtYmVyXTtcbnR5cGUgVmFyaWFudCA9ICh0eXBlb2YgVkFSSUFOVFMpW251bWJlcl07XG50eXBlIEV4dFZhcmlhbnQgPSAodHlwZW9mIEVYVF9WQVJJQU5UUylbbnVtYmVyXTtcblxuZnVuY3Rpb24gaXNWYXJpYW50KHN0cjogc3RyaW5nKTogc3RyIGlzIFZhcmlhbnQge1xuXHRyZXR1cm4gKFZBUklBTlRTIGFzIFJlYWRvbmx5QXJyYXk8c3RyaW5nPikuaW5jbHVkZXMoc3RyKTtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZFZhcmlhbnQoc3RyOiBzdHJpbmcpOiBzdHIgaXMgVmFsaWRWYXJpYW50IHtcblx0cmV0dXJuIChWQUxJRF9WQVJJQU5UUyBhcyBSZWFkb25seUFycmF5PHN0cmluZz4pLmluY2x1ZGVzKHN0cik7XG59XG5cbmZ1bmN0aW9uIGlzRXh0VmFyaWFudChzdHI6IHN0cmluZyk6IHN0ciBpcyBFeHRWYXJpYW50IHtcblx0cmV0dXJuIChFWFRfVkFSSUFOVFMgYXMgUmVhZG9ubHlBcnJheTxzdHJpbmc+KS5pbmNsdWRlcyhzdHIpO1xufVxuXG4vKipcbiAqIE1hcHMgYWRkaXRpb25hbCBsYW5nIGNvZGVzIHRvIHN0YW5kYXJkIHZhcmlhbnRzLlxuICpcbiAqIEByZXR1cm5zIHN0YW5kYXJkIHZhcmlhbnRcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplVmFyaWFudChleHRWYXJpYW50OiBFeHRWYXJpYW50KTogVmFyaWFudCB7XG5cdHJldHVybiAoRVhUX01BUFBJTkdbZXh0VmFyaWFudF0gPz8gZXh0VmFyaWFudCkgYXMgVmFyaWFudDtcbn1cblxuLyoqXG4gKiBHZXQgY3VycmVudCB2YXJpYW50IG9mIHRoZSBwYWdlIChkb24ndCBiZSBtaXNsZWQgYnkgY29uZmlnIG5hbWluZykuXG4gKlxuICogQHJldHVybnMgdmFyaWFudCwgbnVsbCBmb3Igbm9uLXdpa2l0ZXh0IHBhZ2UgKGJ1dCBOT1QgYWxsIHN1Y2ggcGFnZXMgcmV0dXJucyBudWxsISlcbiAqL1xuZnVuY3Rpb24gZ2V0UGFnZVZhcmlhbnQoKTogVmFyaWFudCB8IG51bGwge1xuXHRjb25zdCByZXN1bHQgPSBtdy5jb25maWcuZ2V0KCd3Z1VzZXJWYXJpYW50Jyk7XG5cdHJldHVybiByZXN1bHQgIT09IG51bGwgJiYgaXNFeHRWYXJpYW50KHJlc3VsdCkgPyBub3JtYWxpemVWYXJpYW50KHJlc3VsdCkgOiBudWxsO1xufVxuXG4vKipcbiAqIEdldCBhY2NvdW50IHZhcmlhbnQuXG4gKlxuICogQHJldHVybnMgYWNjb3VudCB2YXJpYW50LCBudWxsIGZvciBhbm9ueW1vdXMgdXNlclxuICovXG5mdW5jdGlvbiBnZXRBY2NvdW50VmFyaWFudCgpOiBWYXJpYW50IHwgbnVsbCB7XG5cdGlmIChpc0xvZ2dlZEluKCkpIHtcblx0XHRjb25zdCByZXN1bHQgPSBtdy51c2VyLm9wdGlvbnMuZ2V0KCd2YXJpYW50JykgYXMgc3RyaW5nO1xuXHRcdHJldHVybiBpc0V4dFZhcmlhbnQocmVzdWx0KSA/IG5vcm1hbGl6ZVZhcmlhbnQocmVzdWx0KSA6IG51bGw7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldExvY2FsVmFyaWFudCgpOiBWYXJpYW50IHwgbnVsbCB7XG5cdGNvbnN0IHJlc3VsdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExPQ0FMX1ZBUklBTlRfS0VZKTtcblx0aWYgKHJlc3VsdCA9PT0gbnVsbCB8fCAhaXNFeHRWYXJpYW50KHJlc3VsdCkpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRyZXR1cm4gbm9ybWFsaXplVmFyaWFudChyZXN1bHQpO1xufVxuXG4vKipcbiAqIFJldHVybiBicm93c2VyIGxhbmd1YWdlIGlmIGl0J3MgYSBDaGluZXNlIHZhcmlhbnQuXG4gKlxuICogQHJldHVybnMgYnJvd3NlciB2YXJpYW50XG4gKi9cbmZ1bmN0aW9uIGdldEJyb3dzZXJWYXJpYW50KCk6IFZhcmlhbnQgfCBudWxsIHtcblx0cmV0dXJuIChcblx0XHRuYXZpZ2F0b3IubGFuZ3VhZ2VzXG5cdFx0XHQubWFwKChsYW5nKSA9PiB7XG5cdFx0XHRcdHJldHVybiBsYW5nLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbHRlcihpc0V4dFZhcmlhbnQpXG5cdFx0XHQubWFwKG5vcm1hbGl6ZVZhcmlhbnQpXG5cdFx0XHQuZmluZChpc1ZhcmlhbnQpID8/IG51bGxcblx0KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIFwibmF0dXJhbFwiIHZhcmlhbnQgaW5mZXJyZWQgYnkgTWVkaWFXaWtpIGZvciBhbm9ueW1vdXMgdXNlcnNcbiAqIHdoZW4gdGhlIGxpbmsgZG9lc24ndCBzcGVjaWZ5IGEgdmFyaWFudC5cbiAqXG4gKiBVc2VkIGluIGxpbmsgbm9ybWFsaXphdGlvbi5cbiAqXG4gKiBGSVhNRTogT2xkIFNhZmFyaSBpcyBrbm93biB0byBicmVhayB0aGlzIG1ldGhvZC5cbiAqIFVzZXIgcmVwb3J0ZWQgdGhhdCBvbiBhbiBpT1MgMTQgZGV2aWNlIHdpdGggQ2hpbmVzZSBsYW5ndWFnZSBhbmQgU2luZ2Fwb3JlIHJlZ2lvbiBzZXR0aW5ncyxcbiAqIEFjY2VwdC1MYW5ndWFnZSBpcyB6aC1jbiAodGh1cyBpbmZlcnJlZCBieSBNZWRpYVdpa2kpIGJ1dCB0aGlzIG1ldGhvZCByZXR1cm5zIHpoLXNnLlxuICpcbiAqIEByZXR1cm5zIHZhcmlhbnRcbiAqL1xuZnVuY3Rpb24gZ2V0TWVkaWFXaWtpVmFyaWFudCgpOiBWYXJpYW50IHwgbnVsbCB7XG5cdHJldHVybiBnZXRBY2NvdW50VmFyaWFudCgpID8/IGdldEJyb3dzZXJWYXJpYW50KCk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHByZWZlcnJlZCB2YXJpYW50IGZyb20gYnJvd3NlciB2YXJpYW50LCBsb2NhbCB2YXJpYW50IGFuZCBhY2NvdW50IHZhcmlhbnQuXG4gKlxuICogUHJpb3JpdHk6IGFjY291bnQgdmFyaWFudCA+IGJyb3dzZXIgdmFyaWFudCA+IGxvY2FsIHZhcmlhbnRcbiAqXG4gKiBAcmV0dXJucyBwcmVmZXJyZWQgdmFyaWFudFxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVQcmVmZXJyZWRWYXJpYW50KCk6IFZhbGlkVmFyaWFudCB8IG51bGwge1xuXHRyZXR1cm4gW2dldEFjY291bnRWYXJpYW50KCksIGdldEJyb3dzZXJWYXJpYW50KCksIGdldExvY2FsVmFyaWFudCgpXVxuXHRcdC5tYXAoKHZhcmlhbnQpID0+IHtcblx0XHRcdHJldHVybiB2YXJpYW50ICE9PSBudWxsICYmIGlzVmFsaWRWYXJpYW50KHZhcmlhbnQpID8gdmFyaWFudCA6IG51bGw7XG5cdFx0fSlcblx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG5cdFx0XHRyZXR1cm4gcHJldiA/PyBjdXJyO1xuXHRcdH0pO1xufVxuXG50eXBlIFNldExvY2FsVmFyaWFudCA9IHR5cGVvZiBzZXRMb2NhbFZhcmlhbnQ7XG5cbmZ1bmN0aW9uIHNldExvY2FsVmFyaWFudCh2YXJpYW50OiBWYXJpYW50KTogdm9pZCB7XG5cdGxvY2FsU3RvcmFnZS5zZXRJdGVtKExPQ0FMX1ZBUklBTlRfS0VZLCB2YXJpYW50KTtcbn1cblxudHlwZSBTZXRPcHRPdXQgPSB0eXBlb2Ygc2V0T3B0T3V0O1xuXG5mdW5jdGlvbiBzZXRPcHRPdXQoKTogdm9pZCB7XG5cdGxvY2FsU3RvcmFnZS5zZXRJdGVtKE9QVE9VVF9LRVksICcnKTtcbn1cblxuZnVuY3Rpb24gaXNPcHRPdXRlZCgpOiBib29sZWFuIHtcblx0cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKE9QVE9VVF9LRVkpICE9PSBudWxsO1xufVxuXG5leHBvcnQge1xuXHR0eXBlIFNldExvY2FsVmFyaWFudCxcblx0dHlwZSBTZXRPcHRPdXQsXG5cdHR5cGUgVmFsaWRWYXJpYW50LFxuXHR0eXBlIFZhcmlhbnQsXG5cdGlzVmFyaWFudCxcblx0aXNWYWxpZFZhcmlhbnQsXG5cdGdldFBhZ2VWYXJpYW50LFxuXHRnZXRBY2NvdW50VmFyaWFudCxcblx0Z2V0TG9jYWxWYXJpYW50LFxuXHRnZXRCcm93c2VyVmFyaWFudCxcblx0Z2V0TWVkaWFXaWtpVmFyaWFudCxcblx0Y2FsY3VsYXRlUHJlZmVycmVkVmFyaWFudCxcblx0c2V0TG9jYWxWYXJpYW50LFxuXHRzZXRPcHRPdXQsXG5cdGlzT3B0T3V0ZWQsXG59O1xuIiwgImltcG9ydCB7VmFyaWFudCwgZ2V0TWVkaWFXaWtpVmFyaWFudCwgaXNWYWxpZFZhcmlhbnQsIHNldExvY2FsVmFyaWFudH0gZnJvbSAnLi9tb2RlbCc7XG5cbmNvbnN0IFJFR0VYX1dJS0lfVVJMID0gL15cXC8oPzp3aWtpfHpoKD86LVxcdyspPylcXC8vaTtcbmNvbnN0IFJFR0VYX1ZBUklBTlRfVVJMID0gL15cXC96aCg/Oi1cXHcrKT9cXC8vaTtcbmNvbnN0IFZBUklBTlRfUEFSQU0gPSAndmEtdmFyaWFudCc7XG5cbmZ1bmN0aW9uIGlzRWxpZ2libGVGb3JSZXdyaXRpbmcobGluazogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHRyeSB7XG5cdFx0Ly8gTm8gcmV3cml0aW5nIGZvciBlbXB0eSBsaW5rc1xuXHRcdGlmIChsaW5rID09PSAnJykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRjb25zdCB1cmwgPSBuZXcgVVJMKGxpbmssIGxvY2F0aW9uLm9yaWdpbik7XG5cdFx0Ly8gTm8gcmV3cml0aW5nIGlmIGxpbmsgaXRzZWxmIGhhcyB2YXJpYW50IGluZm9cblx0XHRpZiAoUkVHRVhfVkFSSUFOVF9VUkwudGVzdCh1cmwucGF0aG5hbWUpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmICh1cmwuc2VhcmNoUGFyYW1zLmhhcygndmFyaWFudCcpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdC8vIE5vIHJld3JpdGluZyBmb3IgZm9yZWlnbiBvcmlnaW4gVVJMc1xuXHRcdC8vIE5vdGUgdGhhdCBsaW5rcyBsaWtlIGphdmFzY3JpcHQ6dm9pZCgwKSBhcmUgYmxvY2tlZCBieSB0aGlzXG5cdFx0aWYgKHVybC5ob3N0ICE9PSBsb2NhdGlvbi5ob3N0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2gge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5mdW5jdGlvbiByZXdyaXRlTGluayhsaW5rOiBzdHJpbmcsIHZhcmlhbnQ6IFZhcmlhbnQpOiBzdHJpbmcge1xuXHR0cnkge1xuXHRcdGNvbnN0IG5vcm1hbGl6YXRpb25UYXJnZXRWYXJpYW50ID0gZ2V0TWVkaWFXaWtpVmFyaWFudCgpO1xuXHRcdGNvbnN0IHVybCA9IG5ldyBVUkwobGluaywgbG9jYXRpb24ub3JpZ2luKTtcblx0XHRjb25zdCB7cGF0aG5hbWUsIHNlYXJjaFBhcmFtc30gPSB1cmw7XG5cblx0XHRpZiAoUkVHRVhfV0lLSV9VUkwudGVzdChwYXRobmFtZSkpIHtcblx0XHRcdHVybC5wYXRobmFtZSA9IGAvJHt2YXJpYW50fS8ke3VybC5wYXRobmFtZS5yZXBsYWNlKFJFR0VYX1dJS0lfVVJMLCAnJyl9YDtcblx0XHRcdHNlYXJjaFBhcmFtcy5kZWxldGUoJ3ZhcmlhbnQnKTsgLy8gRm9yIHRoaW5ncyBsaWtlIC96aC1jbi9BP3ZhcmlhbnQ9emgtaGtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2VhcmNoUGFyYW1zLnNldCgndmFyaWFudCcsIHZhcmlhbnQpO1xuXHRcdH1cblxuXHRcdGlmICh2YXJpYW50ID09PSBub3JtYWxpemF0aW9uVGFyZ2V0VmFyaWFudCkge1xuXHRcdFx0Ly8gTm9ybWFsaXplIHRoZSBsaW5rLlxuXHRcdFx0Ly9cblx0XHRcdC8vIEZvciBleGFtcGxlLCBmb3IgbGluayAvemgtdHcvVGl0bGUgYW5kIG5vcm1hbGl6YXRpb24gdmFyaWFudCB6aC10dywgdGhlIHJlc3VsdCBpcyAvd2lraS9UaXRsZSxcblx0XHRcdC8vIHdoaWxlIGZvciB0aGUgc2FtZSBsaW5rIGFuZCBub3JtYWxpemF0aW9uIHZhcmlhbnQgemgtY24sIHRoZSByZXN1bHQgaXMgL3poLXR3L1RpdGxlICh1bmNoYW5nZWQpLlxuXHRcdFx0dXJsLnBhdGhuYW1lID0gdXJsLnBhdGhuYW1lLnJlcGxhY2UoUkVHRVhfV0lLSV9VUkwsICcvd2lraS8nKTtcblx0XHRcdHVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKCd2YXJpYW50Jyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0ID0gdXJsLnRvU3RyaW5nKCk7XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gbGluaztcblx0fVxufVxuXG5pbnRlcmZhY2UgUmVkaXJlY3Rpb25PcHRpb25zIHtcblx0bGluaz86IHN0cmluZztcblx0LyoqIFNob3VsZCBzdGlsbCByZWRpcmVjdCBldmVuIGRlc3RpbmF0aW9uIGxpbmsgaXMgdGhlIHNhbWUgYXMgY3VycmVudCBwYWdlICovXG5cdGZvcmNlZD86IGJvb2xlYW47XG59XG5cbnR5cGUgUmVkaXJlY3QgPSB0eXBlb2YgcmVkaXJlY3Q7XG5cbmZ1bmN0aW9uIHJlZGlyZWN0KHByZWZlcnJlZFZhcmlhbnQ6IFZhcmlhbnQsIG9wdGlvbnM6IFJlZGlyZWN0aW9uT3B0aW9ucyA9IHt9KTogdm9pZCB7XG5cdGNvbnN0IG9yaWdMaW5rID0gb3B0aW9ucy5saW5rID8/IGxvY2F0aW9uLmhyZWY7XG5cdGNvbnN0IG5ld0xpbmsgPSByZXdyaXRlTGluayhvcmlnTGluaywgcHJlZmVycmVkVmFyaWFudCk7XG5cblx0Ly8gUHJldmVudCBpbmZpbml0ZSByZWRpcmVjdHNcblx0Ly8gVGhpcyBjb3VsZCBoYXBwZW4gb2NjYXNpb25hbGx5LCBzZWUgZ2V0TWVkaWFXaWtpVmFyaWFudCgpJ3MgY29tbWVudHNcblx0aWYgKG9wdGlvbnMuZm9yY2VkIHx8IG5ld0xpbmsgIT09IGxvY2F0aW9uLmhyZWYpIHtcblx0XHQvLyBVc2UgcmVwbGFjZSgpIHRvIHByZXZlbnQgbmF2aWdhdGluZyBiYWNrXG5cdFx0bG9jYXRpb24ucmVwbGFjZShuZXdMaW5rKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjaGVja1RoaXNQYWdlKHByZWZlcnJlZFZhcmlhbnQ6IFZhcmlhbnQsIHBhZ2VWYXJpYW50PzogVmFyaWFudCk6IHZvaWQge1xuXHRpZiAocGFnZVZhcmlhbnQgPT09IHByZWZlcnJlZFZhcmlhbnQpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCByZWRpcmVjdGlvbk9yaWdpbjogc3RyaW5nIHwgbnVsbCA9IG13LmNvbmZpZy5nZXQoJ3dnUmVkaXJlY3RlZEZyb20nKTtcblx0aWYgKHJlZGlyZWN0aW9uT3JpZ2luID09PSBudWxsKSB7XG5cdFx0cmVkaXJlY3QocHJlZmVycmVkVmFyaWFudCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gVXNlIFVSTCB0byByZXNlcnZlIG90aGVyIHBhcnRzIG9mIHRoZSBsaW5rXG5cdGNvbnN0IHJlZGlyZWN0aW9uVVJMID0gbmV3IFVSTChsb2NhdGlvbi5ocmVmKTtcblx0cmVkaXJlY3Rpb25VUkwucGF0aG5hbWUgPSBgL3dpa2kvJHtyZWRpcmVjdGlvbk9yaWdpbn1gO1xuXHRyZWRpcmVjdChwcmVmZXJyZWRWYXJpYW50LCB7bGluazogcmVkaXJlY3Rpb25VUkwudG9TdHJpbmcoKX0pO1xufVxuXG5mdW5jdGlvbiByZXdyaXRlQW5jaG9ycyh2YXJpYW50OiBWYXJpYW50KTogdm9pZCB7XG5cdGZvciAoY29uc3QgbmFtZSBvZiBbJ2NsaWNrJywgJ2F1eGNsaWNrJywgJ2RyYWdzdGFydCddKSB7XG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCAoZXYpID0+IHtcblx0XHRcdGNvbnN0IHt0YXJnZXR9ID0gZXY7XG5cblx0XHRcdGlmICh0YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG5cdFx0XHRcdC8vIERvIG5vdCB3cml0ZSA8YT4gd2l0aCBoYXNoIG9ubHkgaHJlZiBvciBubyBocmVmXG5cdFx0XHRcdC8vIHdoaWNoIGlzIGtub3duIHRvIGNhdXNlIGJyZWFrYWdlIGluIGUuZy4gVmlzdWFsIEVkaXRvclxuXHRcdFx0XHRjb25zdCBhbmNob3I6IEhUTUxBbmNob3JFbGVtZW50IHwgbnVsbCA9IHRhcmdldC5jbG9zZXN0KCdhW2hyZWZdOm5vdChbaHJlZl49XCIjXCJdKScpO1xuXG5cdFx0XHRcdGlmIChhbmNob3IgIT09IG51bGwpIHtcblx0XHRcdFx0XHRjb25zdCBvcmlnTGluayA9IGFuY2hvci5ocmVmO1xuXHRcdFx0XHRcdGlmICghaXNFbGlnaWJsZUZvclJld3JpdGluZyhvcmlnTGluaykpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCBuZXdMaW5rID0gcmV3cml0ZUxpbmsob3JpZ0xpbmssIHZhcmlhbnQpO1xuXHRcdFx0XHRcdGlmIChuZXdMaW5rID09PSBvcmlnTGluaykge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIEJyb3dzZXIgc3VwcG9ydDogU2FmYXJpIDwgMTRcblx0XHRcdFx0XHQvLyBGYWlsIHNpbGVudGx5IHdoZW4gRHJhZ0V2ZW50IGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0aWYgKHdpbmRvdy5EcmFnRXZlbnQgJiYgZXYgaW5zdGFuY2VvZiBEcmFnRXZlbnQgJiYgZXYuZGF0YVRyYW5zZmVyKSB7XG5cdFx0XHRcdFx0XHQvLyBNb2RpZnkgZHJhZyBkYXRhIGRpcmVjdGx5IGJlY2F1c2Ugc2V0dGluZyBocmVmIGhhcyBubyBlZmZlY3QgaW4gZHJhZyBldmVudFxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCB0eXBlIG9mIGV2LmRhdGFUcmFuc2Zlci50eXBlcykge1xuXHRcdFx0XHRcdFx0XHRldi5kYXRhVHJhbnNmZXIuc2V0RGF0YSh0eXBlLCBuZXdMaW5rKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gVXNlIGEgbXV0ZXggdG8gYXZvaWQgYmVpbmcgb3ZlcndyaXR0ZW4gYnkgb3ZlcmxhcHBlZCBoYW5kbGVyIGNhbGxzXG5cdFx0XHRcdFx0XHRpZiAoYW5jaG9yLmRhdGFzZXRbJ3ZhTXV0ZXgnXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdGFuY2hvci5kYXRhc2V0Wyd2YU11dGV4J10gPSAnJztcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0YW5jaG9yLmhyZWYgPSBuZXdMaW5rO1xuXG5cdFx0XHRcdFx0XHQvLyBIQUNLOiB3b3JrYXJvdW5kIHBvcHVwcyBub3Qgd29ya2luZyBvbiBtb2RpZmllZCBsaW5rc1xuXHRcdFx0XHRcdFx0Ly8gQWRkIGhhbmRsZXIgdG8gPGE+IGRpcmVjdGx5IHNvIGl0IHdhcyB0cmlnZ2VyZWQgYmVmb3JlIGFueXRoaW5nIGVsc2Vcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgaW5uZXJOYW1lIG9mIFsnbW91c2VvdmVyJywgJ21vdXNlbGVhdmUnLCAna2V5dXAnXSkge1xuXHRcdFx0XHRcdFx0XHRhbmNob3IuYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdFx0XHRcdFx0XHRpbm5lck5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFuY2hvci5kYXRhc2V0Wyd2YU11dGV4J10gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhbmNob3IuaHJlZiA9IG9yaWdMaW5rO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWxldGUgYW5jaG9yLmRhdGFzZXRbJ3ZhTXV0ZXgnXTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtvbmNlOiB0cnVlfVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHNob3dWYXJpYW50UHJvbXB0KCk6IHZvaWQge1xuXHRjb25zdCBtb2R1bGVOYW1lID0gJ2V4dC5nYWRnZXQuVmFyaWFudEFsbHlEaWFsb2cnO1xuXHR2b2lkIG13LmxvYWRlci51c2luZyhtb2R1bGVOYW1lLCAocmVxdWlyZSkgPT4ge1xuXHRcdHJlcXVpcmUobW9kdWxlTmFtZSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIFNldCBsb2NhbCB2YXJpYW50IGFjY29yZGluZyB0byBVUkwgcXVlcnkgcGFyYW1ldGVycy5cbiAqXG4gKiBlLmcuIGEgVVJMIHdpdGggP3ZhLXZhcmlhbnQ9emgtY24gd2lsbCBzZXQgbG9jYWwgdmFyaWFudCB0byB6aC1jblxuICovXG5mdW5jdGlvbiBhcHBseVVSTFZhcmlhbnQoKTogdm9pZCB7XG5cdGNvbnN0IHZhcmlhbnQgPSBuZXcgVVJMKGxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoVkFSSUFOVF9QQVJBTSk7XG5cdGlmICh2YXJpYW50ICE9PSBudWxsICYmIGlzVmFsaWRWYXJpYW50KHZhcmlhbnQpKSB7XG5cdFx0c2V0TG9jYWxWYXJpYW50KHZhcmlhbnQpO1xuXHR9XG59XG5cbmV4cG9ydCB7XG5cdHR5cGUgUmVkaXJlY3QsXG5cdGlzRWxpZ2libGVGb3JSZXdyaXRpbmcsXG5cdHJld3JpdGVMaW5rLFxuXHRyZWRpcmVjdCxcblx0Y2hlY2tUaGlzUGFnZSxcblx0cmV3cml0ZUFuY2hvcnMsXG5cdHNob3dWYXJpYW50UHJvbXB0LFxuXHRhcHBseVVSTFZhcmlhbnQsXG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQSxvRkFBQUEsVUFBQUMsU0FBQTtBQUFBO0FB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QUFnQnNELE9BQU87RUFDeEI7QUFDRDs7QUhuS0EsU0FBU3lFLE9BQU87QUFFZixNQUFJcEUsV0FBVyxHQUFHO0FBQ2pCO0VBQ0Q7QUFFQSxNQUFJdEQsV0FBVyxHQUFHO0FBQ2pCO0VBQ0Q7QUFHQSxNQUFJLENBQUNZLGNBQWMsR0FBRztBQUNyQjtFQUNEO0FBRUE2RyxrQkFBZ0I7QUFFaEIsUUFBTS9DLG1CQUFtQjFCLDBCQUEwQjtBQUNuRCxNQUFJMEIscUJBQXFCLE1BQU07QUFJOUIvRSxvQkFBZ0IrRSxnQkFBZ0I7RUFDakM7QUFFQSxRQUFNTyxjQUFjcEQsZUFBZTtBQUduQyxNQUFJb0QsZ0JBQWdCLFFBQVEsQ0FBQ25FLGVBQWUsR0FBRztBQUc5QyxRQUFJNEQscUJBQXFCLE1BQU07QUFDOUJVLHFCQUFlVixnQkFBZ0I7SUFDaEM7QUFDQTtFQUNEO0FBR0EsTUFBSUEscUJBQXFCLE1BQU07QUFDOUIsUUFBSWhFLGNBQWMsR0FBRztBQUNwQjBHLHdCQUFrQjtBQUNsQjtJQUNEO0FBRUE7RUFDRDtBQUtBLE1BQUloSCxlQUFlLEtBQUssQ0FBQ3NELHVCQUF1QmpELFNBQVNvRSxJQUFJLEdBQUc7QUFDL0RPLG1CQUFlVixnQkFBZ0I7QUFDL0I7RUFDRDtBQUVBTSxnQkFBY04sa0JBQWtCTyxXQUFXO0FBQzNDRyxpQkFBZVYsZ0JBQWdCO0FBQ2hDO0FBRUFnRCxLQUFLOyIsCiAgIm5hbWVzIjogWyJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiZG9jdW1lbnQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIlN5bWJvbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiVHlwZUVycm9yIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlZhcmlhbnRBbGx5X2V4cG9ydHMiLCAiX19leHBvcnQiLCAicmVkaXJlY3QiLCAic2V0TG9jYWxWYXJpYW50IiwgInNldE9wdE91dCIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJfX3RvQ29tbW9uSlMiLCAiaXNMb2dnZWRJbiIsICJtdyIsICJjb25maWciLCAiZXhpc3RzIiwgImlzUmVmZXJyZXJTZWxmIiwgIlVSTCIsICJkb2N1bWVudCIsICJyZWZlcnJlciIsICJob3N0bmFtZSIsICJsb2NhdGlvbiIsICJpc1ZpZXdpbmdQYWdlIiwgImdldCIsICJpc0xhbmdDaGluZXNlIiwgInN0YXJ0c1dpdGgiLCAiaXNXaWtpdGV4dFBhZ2UiLCAiTE9DQUxfVkFSSUFOVF9LRVkiLCAiT1BUT1VUX0tFWSIsICJWQUxJRF9WQVJJQU5UUyIsICJWQVJJQU5UUyIsICJFWFRfVkFSSUFOVFMiLCAiRVhUX01BUFBJTkciLCAiaXNWYXJpYW50IiwgInN0ciIsICJpbmNsdWRlcyIsICJpc1ZhbGlkVmFyaWFudCIsICJpc0V4dFZhcmlhbnQiLCAibm9ybWFsaXplVmFyaWFudCIsICJleHRWYXJpYW50IiwgIl9FWFRfTUFQUElORyRleHRWYXJpYSIsICJnZXRQYWdlVmFyaWFudCIsICJyZXN1bHQiLCAiZ2V0QWNjb3VudFZhcmlhbnQiLCAidXNlciIsICJvcHRpb25zIiwgImdldExvY2FsVmFyaWFudCIsICJsb2NhbFN0b3JhZ2UiLCAiZ2V0SXRlbSIsICJnZXRCcm93c2VyVmFyaWFudCIsICJfbmF2aWdhdG9yJGxhbmd1YWdlcyQiLCAibmF2aWdhdG9yIiwgImxhbmd1YWdlcyIsICJtYXAiLCAibGFuZyIsICJ0b0xvd2VyQ2FzZSIsICJmaWx0ZXIiLCAiZmluZCIsICJnZXRNZWRpYVdpa2lWYXJpYW50IiwgIl9nZXRBY2NvdW50VmFyaWFudCIsICJjYWxjdWxhdGVQcmVmZXJyZWRWYXJpYW50IiwgInZhcmlhbnQiLCAicmVkdWNlIiwgInByZXYiLCAiY3VyciIsICJzZXRJdGVtIiwgImlzT3B0T3V0ZWQiLCAiUkVHRVhfV0lLSV9VUkwiLCAiUkVHRVhfVkFSSUFOVF9VUkwiLCAiVkFSSUFOVF9QQVJBTSIsICJpc0VsaWdpYmxlRm9yUmV3cml0aW5nIiwgImxpbmsiLCAidXJsIiwgIm9yaWdpbiIsICJ0ZXN0IiwgInBhdGhuYW1lIiwgInNlYXJjaFBhcmFtcyIsICJoYXMiLCAiaG9zdCIsICJyZXdyaXRlTGluayIsICJub3JtYWxpemF0aW9uVGFyZ2V0VmFyaWFudCIsICJjb25jYXQiLCAicmVwbGFjZSIsICJkZWxldGUiLCAic2V0IiwgInRvU3RyaW5nIiwgInByZWZlcnJlZFZhcmlhbnQiLCAiX29wdGlvbnMkbGluayIsICJvcmlnTGluayIsICJocmVmIiwgIm5ld0xpbmsiLCAiZm9yY2VkIiwgImNoZWNrVGhpc1BhZ2UiLCAicGFnZVZhcmlhbnQiLCAicmVkaXJlY3Rpb25PcmlnaW4iLCAicmVkaXJlY3Rpb25VUkwiLCAicmV3cml0ZUFuY2hvcnMiLCAiX2kiLCAiX2FyciIsICJsZW5ndGgiLCAibmFtZSIsICJhZGRFdmVudExpc3RlbmVyIiwgImV2IiwgInRhcmdldCIsICJFbGVtZW50IiwgImFuY2hvciIsICJjbG9zZXN0IiwgIndpbmRvdyIsICJEcmFnRXZlbnQiLCAiZGF0YVRyYW5zZmVyIiwgIl9pdGVyYXRvcjIiLCAiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCAidHlwZXMiLCAiX3N0ZXAyIiwgInMiLCAibiIsICJkb25lIiwgInR5cGUiLCAidmFsdWUiLCAic2V0RGF0YSIsICJlcnIiLCAiZSIsICJmIiwgImRhdGFzZXQiLCAiX2kyIiwgIl9hcnIyIiwgImlubmVyTmFtZSIsICJvbmNlIiwgInNob3dWYXJpYW50UHJvbXB0IiwgIm1vZHVsZU5hbWUiLCAibG9hZGVyIiwgInVzaW5nIiwgInJlcXVpcmUyIiwgImFwcGx5VVJMVmFyaWFudCIsICJtYWluIl0KfQo= +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwtdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5kZWxldGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmhhcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qcyIsICJzcmMvVmFyaWFudEFsbHkvVmFyaWFudEFsbHkudHMiLCAic3JjL1ZhcmlhbnRBbGx5L21vZHVsZXMvdXRpbHMudHMiLCAic3JjL1ZhcmlhbnRBbGx5L21vZHVsZXMvbW9kZWwudHMiLCAic3JjL1ZhcmlhbnRBbGx5L21vZHVsZXMvY29udHJvbGxlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdFxudmFyIGRvY3VtZW50QWxsID0gdHlwZW9mIGRvY3VtZW50ID09ICdvYmplY3QnICYmIGRvY3VtZW50LmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIGNoZWNrKHR5cGVvZiB0aGlzID09ICdvYmplY3QnICYmIHRoaXMpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIGNhbGwgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IGNhbGwuYmluZChjYWxsKSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbGwuYXBwbHkoY2FsbCwgYXJndW1lbnRzKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsVGhpc1tuYW1lc3BhY2VdKSA6IGdsb2JhbFRoaXNbbmFtZXNwYWNlXSAmJiBnbG9iYWxUaGlzW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxudmFyIG5hdmlnYXRvciA9IGdsb2JhbFRoaXMubmF2aWdhdG9yO1xudmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVzZXJBZ2VudCA/IFN0cmluZyh1c2VyQWdlbnQpIDogJyc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsVGhpcy5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG52YXIgJFN0cmluZyA9IGdsb2JhbFRoaXMuU3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnc3ltYm9sIGRldGVjdGlvbicpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIC8vIG5iOiBEbyBub3QgY2FsbCBgU3RyaW5nYCBkaXJlY3RseSB0byBhdm9pZCB0aGlzIGJlaW5nIG9wdGltaXplZCBvdXQgdG8gYHN5bWJvbCsnJ2Agd2hpY2ggd2lsbCxcbiAgLy8gb2YgY291cnNlLCBmYWlsLlxuICByZXR1cm4gISRTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdPYmplY3QnO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIHdlIGNhbid0IHVzZSBqdXN0IGBpdCA9PSBudWxsYCBzaW5jZSBvZiBgZG9jdW1lbnQuYWxsYCBzcGVjaWFsIGNhc2Vcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3QtYWVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IG51bGwgfHwgaXQgPT09IHVuZGVmaW5lZDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoaXNDYWxsYWJsZShmbiA9IGlucHV0LnZhbHVlT2YpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBkZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFRoaXNba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpc1tTSEFSRURdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFNIQVJFRCwge30pO1xuXG4oc3RvcmUudmVyc2lvbnMgfHwgKHN0b3JlLnZlcnNpb25zID0gW10pKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMzguMCcsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJyxcbiAgbGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzguMC9MSUNFTlNFJyxcbiAgc291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXQpKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiAkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbFRoaXMuU3ltYm9sO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2xbJ2ZvciddIHx8IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSlcbiAgICAgID8gU3ltYm9sW25hbWVdXG4gICAgICA6IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgRU5VTUVSQUJMRSA9ICdlbnVtZXJhYmxlJztcbnZhciBDT05GSUdVUkFCTEUgPSAnY29uZmlndXJhYmxlJztcbnZhciBXUklUQUJMRSA9ICd3cml0YWJsZSc7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmICh0eXBlb2YgTyA9PT0gJ2Z1bmN0aW9uJyAmJiBQID09PSAncHJvdG90eXBlJyAmJiAndmFsdWUnIGluIEF0dHJpYnV0ZXMgJiYgV1JJVEFCTEUgaW4gQXR0cmlidXRlcyAmJiAhQXR0cmlidXRlc1tXUklUQUJMRV0pIHtcbiAgICB2YXIgY3VycmVudCA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFtXUklUQUJMRV0pIHtcbiAgICAgIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICAgICAgQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBDT05GSUdVUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbQ09ORklHVVJBQkxFXSA6IGN1cnJlbnRbQ09ORklHVVJBQkxFXSxcbiAgICAgICAgZW51bWVyYWJsZTogRU5VTUVSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tFTlVNRVJBQkxFXSA6IGN1cnJlbnRbRU5VTUVSQUJMRV0sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH0gcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbn0gOiAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IG5ldyAkVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXREZXNjcmlwdG9yID0gREVTQ1JJUFRPUlMgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxudmFyIEVYSVNUUyA9IGhhc093bihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKTtcbi8vIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBmcm9tIG1pbmlmaWVkIC8gbWFuZ2xlZCAvIGRyb3BwZWQgZnVuY3Rpb24gbmFtZXNcbnZhciBQUk9QRVIgPSBFWElTVFMgJiYgKGZ1bmN0aW9uIHNvbWV0aGluZygpIHsgLyogZW1wdHkgKi8gfSkubmFtZSA9PT0gJ3NvbWV0aGluZyc7XG52YXIgQ09ORklHVVJBQkxFID0gRVhJU1RTICYmICghREVTQ1JJUFRPUlMgfHwgKERFU0NSSVBUT1JTICYmIGdldERlc2NyaXB0b3IoRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJykuY29uZmlndXJhYmxlKSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBFWElTVFM6IEVYSVNUUyxcbiAgUFJPUEVSOiBQUk9QRVIsXG4gIENPTkZJR1VSQUJMRTogQ09ORklHVVJBQkxFXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbFRoaXMuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbicpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsVGhpcy5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbFRoaXMuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHN0b3JlLmdldCA9IHN0b3JlLmdldDtcbiAgc3RvcmUuaGFzID0gc3RvcmUuaGFzO1xuICBzdG9yZS5zZXQgPSBzdG9yZS5zZXQ7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHN0b3JlLmhhcyhpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcblxudmFyIENPTkZJR1VSQUJMRV9MRU5HVEggPSBERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAnbGVuZ3RoJywgeyB2YWx1ZTogOCB9KS5sZW5ndGggIT09IDg7XG59KTtcblxudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG52YXIgbWFrZUJ1aWx0SW4gPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSwgb3B0aW9ucykge1xuICBpZiAoc3RyaW5nU2xpY2UoJFN0cmluZyhuYW1lKSwgMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgIG5hbWUgPSAnWycgKyByZXBsYWNlKCRTdHJpbmcobmFtZSksIC9eU3ltYm9sXFwoKFteKV0qKVxcKS4qJC8sICckMScpICsgJ10nO1xuICB9XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZ2V0dGVyKSBuYW1lID0gJ2dldCAnICsgbmFtZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zZXR0ZXIpIG5hbWUgPSAnc2V0ICcgKyBuYW1lO1xuICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIHsgdmFsdWU6IG5hbWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBlbHNlIHZhbHVlLm5hbWUgPSBuYW1lO1xuICB9XG4gIGlmIChDT05GSUdVUkFCTEVfTEVOR1RIICYmIG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdhcml0eScpICYmIHZhbHVlLmxlbmd0aCAhPT0gb3B0aW9ucy5hcml0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbGVuZ3RoJywgeyB2YWx1ZTogb3B0aW9ucy5hcml0eSB9KTtcbiAgfVxuICB0cnkge1xuICAgIGlmIChvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnY29uc3RydWN0b3InKSAmJiBvcHRpb25zLmNvbnN0cnVjdG9yKSB7XG4gICAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAncHJvdG90eXBlJywgeyB3cml0YWJsZTogZmFsc2UgfSk7XG4gICAgLy8gaW4gVjggfiBDaHJvbWUgNTMsIHByb3RvdHlwZXMgb2Ygc29tZSBtZXRob2RzLCBsaWtlIGBBcnJheS5wcm90b3R5cGUudmFsdWVzYCwgYXJlIG5vbi13cml0YWJsZVxuICAgIH0gZWxzZSBpZiAodmFsdWUucHJvdG90eXBlKSB2YWx1ZS5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgdmFyIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICBpZiAoIWhhc093bihzdGF0ZSwgJ3NvdXJjZScpKSB7XG4gICAgc3RhdGUuc291cmNlID0gam9pbihURU1QTEFURSwgdHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dGVuZC1uYXRpdmUgLS0gcmVxdWlyZWRcbkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IG1ha2VCdWlsdEluKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gaXNDYWxsYWJsZSh0aGlzKSAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSwgJ3RvU3RyaW5nJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMuZW51bWVyYWJsZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSBtYWtlQnVpbHRJbih2YWx1ZSwgbmFtZSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lR2xvYmFsUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy51bnNhZmUpIGRlbGV0ZSBPW2tleV07XG4gICAgICBlbHNlIGlmIChPW2tleV0pIHNpbXBsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiAhb3B0aW9ucy5ub25Db25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogIW9wdGlvbnMubm9uV3JpdGFibGVcbiAgICB9KTtcbiAgfSByZXR1cm4gTztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciB0ZXN0ID0ge307XG5cbnRlc3RbVE9fU1RSSU5HX1RBR10gPSAneic7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSAnW29iamVjdCB6XSc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyh7fS50b1N0cmluZyk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBzdHJpbmdTbGljZSh0b1N0cmluZyhpdCksIDgsIC0xKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gRVM2KyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2Bcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8gY2xhc3NvZlJhdyA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgdGFnLCByZXN1bHQ7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mICh0YWcgPSB0cnlHZXQoTyA9ICRPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGNsYXNzb2YoYXJndW1lbnQpID09PSAnU3ltYm9sJykgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcnKTtcbiAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc2VkLCByZXF1aXJlZCkge1xuICBpZiAocGFzc2VkIDwgcmVxdWlyZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xuICByZXR1cm4gcGFzc2VkO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG5cbnZhciAkVVJMU2VhcmNoUGFyYW1zID0gVVJMU2VhcmNoUGFyYW1zO1xudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9ICRVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGFwcGVuZCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5hcHBlbmQpO1xudmFyICRkZWxldGUgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGVbJ2RlbGV0ZSddKTtcbnZhciBmb3JFYWNoID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmZvckVhY2gpO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciBwYXJhbXMgPSBuZXcgJFVSTFNlYXJjaFBhcmFtcygnYT0xJmE9MiZiPTMnKTtcblxucGFyYW1zWydkZWxldGUnXSgnYScsIDEpO1xuLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG5wYXJhbXNbJ2RlbGV0ZSddKCdiJywgdW5kZWZpbmVkKTtcblxuaWYgKHBhcmFtcyArICcnICE9PSAnYT0yJykge1xuICBkZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ2RlbGV0ZScsIGZ1bmN0aW9uIChuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAobGVuZ3RoICYmICR2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJGRlbGV0ZSh0aGlzLCBuYW1lKTtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24gKHYsIGspIHsgLy8gYWxzbyB2YWxpZGF0ZXMgYHRoaXNgXG4gICAgICBwdXNoKGVudHJpZXMsIHsga2V5OiBrLCB2YWx1ZTogdiB9KTtcbiAgICB9KTtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChsZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSB0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgdmFsdWUgPSB0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGRpbmRleCA9IDA7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgdmFyIGVudHJpZXNMZW5ndGggPSBlbnRyaWVzLmxlbmd0aDtcbiAgICB2YXIgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllc0xlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgaWYgKGZvdW5kIHx8IGVudHJ5LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgJGRlbGV0ZSh0aGlzLCBlbnRyeS5rZXkpO1xuICAgICAgfSBlbHNlIGRpbmRleCsrO1xuICAgIH1cbiAgICB3aGlsZSAoZGluZGV4IDwgZW50cmllc0xlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2RpbmRleCsrXTtcbiAgICAgIGlmICghKGVudHJ5LmtleSA9PT0ga2V5ICYmIGVudHJ5LnZhbHVlID09PSB2YWx1ZSkpIGFwcGVuZCh0aGlzLCBlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTtcbiAgICB9XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSwgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcblxudmFyICRVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXM7XG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gJFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgZ2V0QWxsID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmdldEFsbCk7XG52YXIgJGhhcyA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5oYXMpO1xudmFyIHBhcmFtcyA9IG5ldyAkVVJMU2VhcmNoUGFyYW1zKCdhPTEnKTtcblxuLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG5pZiAocGFyYW1zLmhhcygnYScsIDIpIHx8ICFwYXJhbXMuaGFzKCdhJywgdW5kZWZpbmVkKSkge1xuICBkZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ2hhcycsIGZ1bmN0aW9uIGhhcyhuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAobGVuZ3RoICYmICR2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJGhhcyh0aGlzLCBuYW1lKTtcbiAgICB2YXIgdmFsdWVzID0gZ2V0QWxsKHRoaXMsIG5hbWUpOyAvLyBhbHNvIHZhbGlkYXRlcyBgdGhpc2BcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChsZW5ndGgsIDEpO1xuICAgIHZhciB2YWx1ZSA9IHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodmFsdWVzW2luZGV4KytdID09PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgfSByZXR1cm4gZmFsc2U7XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSwgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLmdldCwgbmFtZSwgeyBnZXR0ZXI6IHRydWUgfSk7XG4gIGlmIChkZXNjcmlwdG9yLnNldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5zZXQsIG5hbWUsIHsgc2V0dGVyOiB0cnVlIH0pO1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkuZih0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGZvckVhY2ggPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZm9yRWFjaCk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNpemVgIGdldHRlclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy91cmwvcHVsbC83MzRcbmlmIChERVNDUklQVE9SUyAmJiAhKCdzaXplJyBpbiBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUpKSB7XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdzaXplJywge1xuICAgIGdldDogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICBmb3JFYWNoKHRoaXMsIGZ1bmN0aW9uICgpIHsgY291bnQrKzsgfSk7XG4gICAgICByZXR1cm4gY291bnQ7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9KTtcbn1cbiIsICJpbXBvcnQge1xuXHRjaGVja1RoaXNQYWdlLFxuXHRyZXdyaXRlQW5jaG9ycyxcblx0YXBwbHlVUkxWYXJpYW50LFxuXHRzaG93VmFyaWFudFByb21wdCxcblx0aXNFbGlnaWJsZUZvclJld3JpdGluZyxcbn0gZnJvbSAnLi9tb2R1bGVzL2NvbnRyb2xsZXInO1xuaW1wb3J0IHtjYWxjdWxhdGVQcmVmZXJyZWRWYXJpYW50LCBnZXRQYWdlVmFyaWFudCwgaXNPcHRPdXRlZCwgc2V0TG9jYWxWYXJpYW50fSBmcm9tICcuL21vZHVsZXMvbW9kZWwnO1xuaW1wb3J0IHtpc0xvZ2dlZEluLCBpc0xhbmdDaGluZXNlLCBpc1dpa2l0ZXh0UGFnZSwgaXNWaWV3aW5nUGFnZSwgaXNSZWZlcnJlclNlbGZ9IGZyb20gJy4vbW9kdWxlcy91dGlscyc7XG5cbmZ1bmN0aW9uIG1haW4oKSB7XG5cdC8vIE1hbnVhbGx5IG9wdCBvdXRlZCB1c2Vyc1xuXHRpZiAoaXNPcHRPdXRlZCgpKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aWYgKGlzTG9nZ2VkSW4oKSkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIE5vbi1DaGluZXNlIHBhZ2VzL3VzZXJzXG5cdGlmICghaXNMYW5nQ2hpbmVzZSgpKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0YXBwbHlVUkxWYXJpYW50KCk7XG5cblx0Y29uc3QgcHJlZmVycmVkVmFyaWFudCA9IGNhbGN1bGF0ZVByZWZlcnJlZFZhcmlhbnQoKTtcblx0aWYgKHByZWZlcnJlZFZhcmlhbnQgIT09IG51bGwpIHtcblx0XHQvLyBPcHRpbWlzdGljYWxseSBzZXQgbG9jYWwgdmFyaWFudCB0byBiZSBlcXVhbCB0byBicm93c2VyIHZhcmlhbnRcblx0XHQvLyBJbiBjYXNlIHRoZSB1c2VyJ3MgYnJvd3NlciBsYW5ndWFnZSBiZWNvbWVzIGludmFsaWQgaW4gdGhlIGZ1dHVyZSxcblx0XHQvLyB0aGlzIHJlZHVjZXMgdGhlIHBvc3NpYmlsaXR5IHRvIHNob3cgcHJvbXB0IHRvIGRpc3J1cHQgdXNlcnMuXG5cdFx0c2V0TG9jYWxWYXJpYW50KHByZWZlcnJlZFZhcmlhbnQpO1xuXHR9XG5cblx0Y29uc3QgcGFnZVZhcmlhbnQgPSBnZXRQYWdlVmFyaWFudCgpO1xuXG5cdC8vIE5vbi1hcnRpY2xlIHBhZ2UgKEpTL0NTUyBwYWdlcywgU3BlY2lhbCBwYWdlcyBldGMuKVxuXHRpZiAocGFnZVZhcmlhbnQgPT09IG51bGwgfHwgIWlzV2lraXRleHRQYWdlKCkpIHtcblx0XHQvLyBTdWNoIHBhZ2UgY2FuJ3QgaGF2ZSB2YXJpYW50LCBidXQgcHJlZmVycmVkIHZhcmlhbnQgbWF5IGJlIGF2YWlsYWJsZVxuXHRcdC8vIFNvIHN0aWxsIHJld3JpdGUgbGlua3Ncblx0XHRpZiAocHJlZmVycmVkVmFyaWFudCAhPT0gbnVsbCkge1xuXHRcdFx0cmV3cml0ZUFuY2hvcnMocHJlZmVycmVkVmFyaWFudCk7XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFByZWZlcnJlZCB2YXJpYW50IHVuYXZhaWxhYmxlXG5cdGlmIChwcmVmZXJyZWRWYXJpYW50ID09PSBudWxsKSB7XG5cdFx0aWYgKGlzVmlld2luZ1BhZ2UoKSkge1xuXHRcdFx0c2hvd1ZhcmlhbnRQcm9tcHQoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBPbi1zaXRlIG5hdmlnYXRpb24gdG8gbGlua3MgaW5lbGlnaWJsZSBmb3Igd3JpdGluZ1xuXHQvLyBUaGUgZWxpZ2liaWxpdHkgY2hlY2sgaXMgcmVxdWlyZSBiZWNhdXNlIHVzZXIgbWF5IGNsaWNrIG9uIGEgbGluayB3aXRoIHZhcmlhbnQgaW50ZW50aW9uYWxseVxuXHQvLyBlLmcuIHZhcmlhbnQgZHJvcGRvd24gYW5kIHt7VmFyaWFudC1jbmhrdHdzZ319XG5cdGlmIChpc1JlZmVycmVyU2VsZigpICYmICFpc0VsaWdpYmxlRm9yUmV3cml0aW5nKGxvY2F0aW9uLmhyZWYpKSB7XG5cdFx0cmV3cml0ZUFuY2hvcnMocHJlZmVycmVkVmFyaWFudCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y2hlY2tUaGlzUGFnZShwcmVmZXJyZWRWYXJpYW50LCBwYWdlVmFyaWFudCk7XG5cdHJld3JpdGVBbmNob3JzKHByZWZlcnJlZFZhcmlhbnQpO1xufVxuXG5tYWluKCk7XG5cbi8vIEV4cG9zZSBmb3IgVmFyaWFudEFsbHlEaWFsb2cncyB1c2VcbmV4cG9ydCB7c2V0TG9jYWxWYXJpYW50LCBzZXRPcHRPdXR9IGZyb20gJy4vbW9kdWxlcy9tb2RlbCc7XG5leHBvcnQge3JlZGlyZWN0fSBmcm9tICcuL21vZHVsZXMvY29udHJvbGxlcic7XG4iLCAiZnVuY3Rpb24gaXNMb2dnZWRJbigpOiBib29sZWFuIHtcblx0cmV0dXJuIG13LmNvbmZpZy5leGlzdHMoJ3dnVXNlcklkJyk7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciByZWZlcnJlciBvcmlnaW5hdGVzIGZyb20gdGhlIHNhbWUgZG9tYWluLlxuICovXG5mdW5jdGlvbiBpc1JlZmVycmVyU2VsZigpOiBib29sZWFuIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IFVSTChkb2N1bWVudC5yZWZlcnJlcikuaG9zdG5hbWUgPT09IGxvY2F0aW9uLmhvc3RuYW1lO1xuXHR9IGNhdGNoIHtcblx0XHQvLyBJbnZhbGlkIFVSTFxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5mdW5jdGlvbiBpc1ZpZXdpbmdQYWdlKCk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gbXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKSA9PT0gJ3ZpZXcnO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgKHNldCBpbiB1c2VyIHByZWZlcmVuY2Ugb3IgYnkgP3VzZWxhbmc9eHh4KVxuICogaXMgQ2hpbmVzZSBvciBub3QuXG4gKi9cbmZ1bmN0aW9uIGlzTGFuZ0NoaW5lc2UoKTogYm9vbGVhbiB7XG5cdHJldHVybiBtdy5jb25maWcuZ2V0KCd3Z1VzZXJMYW5ndWFnZScpLnN0YXJ0c1dpdGgoJ3poJyk7XG59XG5cbmZ1bmN0aW9uIGlzV2lraXRleHRQYWdlKCk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gbXcuY29uZmlnLmdldCgnd2dDYW5vbmljYWxOYW1lc3BhY2UnKSAhPT0gJ1NwZWNpYWwnICYmIG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpID09PSAnd2lraXRleHQnO1xufVxuXG5leHBvcnQge2lzTG9nZ2VkSW4sIGlzUmVmZXJyZXJTZWxmLCBpc1ZpZXdpbmdQYWdlLCBpc0xhbmdDaGluZXNlLCBpc1dpa2l0ZXh0UGFnZX07XG4iLCAiaW1wb3J0IHtpc0xvZ2dlZElufSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTE9DQUxfVkFSSUFOVF9LRVkgPSAndmEtdmFyJztcbmNvbnN0IE9QVE9VVF9LRVkgPSAndmEtb3B0b3V0JztcbmNvbnN0IFZBTElEX1ZBUklBTlRTID0gWyd6aC1jbicsICd6aC1zZycsICd6aC1teScsICd6aC10dycsICd6aC1oaycsICd6aC1tbyddIGFzIGNvbnN0O1xuY29uc3QgVkFSSUFOVFMgPSBbJ3poJywgJ3poLWhhbnMnLCAnemgtaGFudCcsIC4uLlZBTElEX1ZBUklBTlRTXSBhcyBjb25zdDtcbmNvbnN0IEVYVF9WQVJJQU5UUyA9IFtcblx0J3poLWhhbnMtY24nLFxuXHQnemgtaGFucy1zZycsXG5cdCd6aC1oYW5zLW15Jyxcblx0J3poLWhhbnQtdHcnLFxuXHQnemgtaGFudC1oaycsXG5cdCd6aC1oYW50LW1vJyxcblx0Li4uVkFSSUFOVFMsXG5dIGFzIGNvbnN0O1xuLy8gU29tZSBicm93c2VycyAoZS5nLiBGaXJlZm94IEFuZHJvaWQpIG1heSByZXR1cm4gc3VjaCBsYW5ndWFnZXNcbmNvbnN0IEVYVF9NQVBQSU5HOiBSZWNvcmQ8c3RyaW5nLCBWYWxpZFZhcmlhbnQ+ID0ge1xuXHQnemgtaGFucy1jbic6ICd6aC1jbicsXG5cdCd6aC1oYW5zLXNnJzogJ3poLXNnJyxcblx0J3poLWhhbnMtbXknOiAnemgtbXknLFxuXHQnemgtaGFudC10dyc6ICd6aC10dycsXG5cdCd6aC1oYW50LWhrJzogJ3poLWhrJyxcblx0J3poLWhhbnQtbW8nOiAnemgtbW8nLFxufTtcblxudHlwZSBWYWxpZFZhcmlhbnQgPSAodHlwZW9mIFZBTElEX1ZBUklBTlRTKVtudW1iZXJdO1xudHlwZSBWYXJpYW50ID0gKHR5cGVvZiBWQVJJQU5UUylbbnVtYmVyXTtcbnR5cGUgRXh0VmFyaWFudCA9ICh0eXBlb2YgRVhUX1ZBUklBTlRTKVtudW1iZXJdO1xuXG5mdW5jdGlvbiBpc1ZhcmlhbnQoc3RyOiBzdHJpbmcpOiBzdHIgaXMgVmFyaWFudCB7XG5cdHJldHVybiAoVkFSSUFOVFMgYXMgUmVhZG9ubHlBcnJheTxzdHJpbmc+KS5pbmNsdWRlcyhzdHIpO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkVmFyaWFudChzdHI6IHN0cmluZyk6IHN0ciBpcyBWYWxpZFZhcmlhbnQge1xuXHRyZXR1cm4gKFZBTElEX1ZBUklBTlRTIGFzIFJlYWRvbmx5QXJyYXk8c3RyaW5nPikuaW5jbHVkZXMoc3RyKTtcbn1cblxuZnVuY3Rpb24gaXNFeHRWYXJpYW50KHN0cjogc3RyaW5nKTogc3RyIGlzIEV4dFZhcmlhbnQge1xuXHRyZXR1cm4gKEVYVF9WQVJJQU5UUyBhcyBSZWFkb25seUFycmF5PHN0cmluZz4pLmluY2x1ZGVzKHN0cik7XG59XG5cbi8qKlxuICogTWFwcyBhZGRpdGlvbmFsIGxhbmcgY29kZXMgdG8gc3RhbmRhcmQgdmFyaWFudHMuXG4gKlxuICogQHJldHVybnMgc3RhbmRhcmQgdmFyaWFudFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVWYXJpYW50KGV4dFZhcmlhbnQ6IEV4dFZhcmlhbnQpOiBWYXJpYW50IHtcblx0cmV0dXJuIChFWFRfTUFQUElOR1tleHRWYXJpYW50XSA/PyBleHRWYXJpYW50KSBhcyBWYXJpYW50O1xufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHZhcmlhbnQgb2YgdGhlIHBhZ2UgKGRvbid0IGJlIG1pc2xlZCBieSBjb25maWcgbmFtaW5nKS5cbiAqXG4gKiBAcmV0dXJucyB2YXJpYW50LCBudWxsIGZvciBub24td2lraXRleHQgcGFnZSAoYnV0IE5PVCBhbGwgc3VjaCBwYWdlcyByZXR1cm5zIG51bGwhKVxuICovXG5mdW5jdGlvbiBnZXRQYWdlVmFyaWFudCgpOiBWYXJpYW50IHwgbnVsbCB7XG5cdGNvbnN0IHJlc3VsdCA9IG13LmNvbmZpZy5nZXQoJ3dnVXNlclZhcmlhbnQnKTtcblx0cmV0dXJuIHJlc3VsdCAhPT0gbnVsbCAmJiBpc0V4dFZhcmlhbnQocmVzdWx0KSA/IG5vcm1hbGl6ZVZhcmlhbnQocmVzdWx0KSA6IG51bGw7XG59XG5cbi8qKlxuICogR2V0IGFjY291bnQgdmFyaWFudC5cbiAqXG4gKiBAcmV0dXJucyBhY2NvdW50IHZhcmlhbnQsIG51bGwgZm9yIGFub255bW91cyB1c2VyXG4gKi9cbmZ1bmN0aW9uIGdldEFjY291bnRWYXJpYW50KCk6IFZhcmlhbnQgfCBudWxsIHtcblx0aWYgKGlzTG9nZ2VkSW4oKSkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IG13LnVzZXIub3B0aW9ucy5nZXQoJ3ZhcmlhbnQnKSBhcyBzdHJpbmc7XG5cdFx0cmV0dXJuIGlzRXh0VmFyaWFudChyZXN1bHQpID8gbm9ybWFsaXplVmFyaWFudChyZXN1bHQpIDogbnVsbDtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0TG9jYWxWYXJpYW50KCk6IFZhcmlhbnQgfCBudWxsIHtcblx0Y29uc3QgcmVzdWx0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTE9DQUxfVkFSSUFOVF9LRVkpO1xuXHRpZiAocmVzdWx0ID09PSBudWxsIHx8ICFpc0V4dFZhcmlhbnQocmVzdWx0KSkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdHJldHVybiBub3JtYWxpemVWYXJpYW50KHJlc3VsdCk7XG59XG5cbi8qKlxuICogUmV0dXJuIGJyb3dzZXIgbGFuZ3VhZ2UgaWYgaXQncyBhIENoaW5lc2UgdmFyaWFudC5cbiAqXG4gKiBAcmV0dXJucyBicm93c2VyIHZhcmlhbnRcbiAqL1xuZnVuY3Rpb24gZ2V0QnJvd3NlclZhcmlhbnQoKTogVmFyaWFudCB8IG51bGwge1xuXHRyZXR1cm4gKFxuXHRcdG5hdmlnYXRvci5sYW5ndWFnZXNcblx0XHRcdC5tYXAoKGxhbmcpID0+IHtcblx0XHRcdFx0cmV0dXJuIGxhbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdH0pXG5cdFx0XHQuZmlsdGVyKGlzRXh0VmFyaWFudClcblx0XHRcdC5tYXAobm9ybWFsaXplVmFyaWFudClcblx0XHRcdC5maW5kKGlzVmFyaWFudCkgPz8gbnVsbFxuXHQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgXCJuYXR1cmFsXCIgdmFyaWFudCBpbmZlcnJlZCBieSBNZWRpYVdpa2kgZm9yIGFub255bW91cyB1c2Vyc1xuICogd2hlbiB0aGUgbGluayBkb2Vzbid0IHNwZWNpZnkgYSB2YXJpYW50LlxuICpcbiAqIFVzZWQgaW4gbGluayBub3JtYWxpemF0aW9uLlxuICpcbiAqIEZJWE1FOiBPbGQgU2FmYXJpIGlzIGtub3duIHRvIGJyZWFrIHRoaXMgbWV0aG9kLlxuICogVXNlciByZXBvcnRlZCB0aGF0IG9uIGFuIGlPUyAxNCBkZXZpY2Ugd2l0aCBDaGluZXNlIGxhbmd1YWdlIGFuZCBTaW5nYXBvcmUgcmVnaW9uIHNldHRpbmdzLFxuICogQWNjZXB0LUxhbmd1YWdlIGlzIHpoLWNuICh0aHVzIGluZmVycmVkIGJ5IE1lZGlhV2lraSkgYnV0IHRoaXMgbWV0aG9kIHJldHVybnMgemgtc2cuXG4gKlxuICogQHJldHVybnMgdmFyaWFudFxuICovXG5mdW5jdGlvbiBnZXRNZWRpYVdpa2lWYXJpYW50KCk6IFZhcmlhbnQgfCBudWxsIHtcblx0cmV0dXJuIGdldEFjY291bnRWYXJpYW50KCkgPz8gZ2V0QnJvd3NlclZhcmlhbnQoKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgcHJlZmVycmVkIHZhcmlhbnQgZnJvbSBicm93c2VyIHZhcmlhbnQsIGxvY2FsIHZhcmlhbnQgYW5kIGFjY291bnQgdmFyaWFudC5cbiAqXG4gKiBQcmlvcml0eTogYWNjb3VudCB2YXJpYW50ID4gYnJvd3NlciB2YXJpYW50ID4gbG9jYWwgdmFyaWFudFxuICpcbiAqIEByZXR1cm5zIHByZWZlcnJlZCB2YXJpYW50XG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZVByZWZlcnJlZFZhcmlhbnQoKTogVmFsaWRWYXJpYW50IHwgbnVsbCB7XG5cdHJldHVybiBbZ2V0QWNjb3VudFZhcmlhbnQoKSwgZ2V0QnJvd3NlclZhcmlhbnQoKSwgZ2V0TG9jYWxWYXJpYW50KCldXG5cdFx0Lm1hcCgodmFyaWFudCkgPT4ge1xuXHRcdFx0cmV0dXJuIHZhcmlhbnQgIT09IG51bGwgJiYgaXNWYWxpZFZhcmlhbnQodmFyaWFudCkgPyB2YXJpYW50IDogbnVsbDtcblx0XHR9KVxuXHRcdC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcblx0XHRcdHJldHVybiBwcmV2ID8/IGN1cnI7XG5cdFx0fSk7XG59XG5cbnR5cGUgU2V0TG9jYWxWYXJpYW50ID0gdHlwZW9mIHNldExvY2FsVmFyaWFudDtcblxuZnVuY3Rpb24gc2V0TG9jYWxWYXJpYW50KHZhcmlhbnQ6IFZhcmlhbnQpOiB2b2lkIHtcblx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oTE9DQUxfVkFSSUFOVF9LRVksIHZhcmlhbnQpO1xufVxuXG50eXBlIFNldE9wdE91dCA9IHR5cGVvZiBzZXRPcHRPdXQ7XG5cbmZ1bmN0aW9uIHNldE9wdE91dCgpOiB2b2lkIHtcblx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oT1BUT1VUX0tFWSwgJycpO1xufVxuXG5mdW5jdGlvbiBpc09wdE91dGVkKCk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oT1BUT1VUX0tFWSkgIT09IG51bGw7XG59XG5cbmV4cG9ydCB7XG5cdHR5cGUgU2V0TG9jYWxWYXJpYW50LFxuXHR0eXBlIFNldE9wdE91dCxcblx0dHlwZSBWYWxpZFZhcmlhbnQsXG5cdHR5cGUgVmFyaWFudCxcblx0aXNWYXJpYW50LFxuXHRpc1ZhbGlkVmFyaWFudCxcblx0Z2V0UGFnZVZhcmlhbnQsXG5cdGdldEFjY291bnRWYXJpYW50LFxuXHRnZXRMb2NhbFZhcmlhbnQsXG5cdGdldEJyb3dzZXJWYXJpYW50LFxuXHRnZXRNZWRpYVdpa2lWYXJpYW50LFxuXHRjYWxjdWxhdGVQcmVmZXJyZWRWYXJpYW50LFxuXHRzZXRMb2NhbFZhcmlhbnQsXG5cdHNldE9wdE91dCxcblx0aXNPcHRPdXRlZCxcbn07XG4iLCAiaW1wb3J0IHtWYXJpYW50LCBnZXRNZWRpYVdpa2lWYXJpYW50LCBpc1ZhbGlkVmFyaWFudCwgc2V0TG9jYWxWYXJpYW50fSBmcm9tICcuL21vZGVsJztcblxuY29uc3QgUkVHRVhfV0lLSV9VUkwgPSAvXlxcLyg/Ondpa2l8emgoPzotXFx3Kyk/KVxcLy9pO1xuY29uc3QgUkVHRVhfVkFSSUFOVF9VUkwgPSAvXlxcL3poKD86LVxcdyspP1xcLy9pO1xuY29uc3QgVkFSSUFOVF9QQVJBTSA9ICd2YS12YXJpYW50JztcblxuZnVuY3Rpb24gaXNFbGlnaWJsZUZvclJld3JpdGluZyhsaW5rOiBzdHJpbmcpOiBib29sZWFuIHtcblx0dHJ5IHtcblx0XHQvLyBObyByZXdyaXRpbmcgZm9yIGVtcHR5IGxpbmtzXG5cdFx0aWYgKGxpbmsgPT09ICcnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IHVybCA9IG5ldyBVUkwobGluaywgbG9jYXRpb24ub3JpZ2luKTtcblx0XHQvLyBObyByZXdyaXRpbmcgaWYgbGluayBpdHNlbGYgaGFzIHZhcmlhbnQgaW5mb1xuXHRcdGlmIChSRUdFWF9WQVJJQU5UX1VSTC50ZXN0KHVybC5wYXRobmFtZSkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKHVybC5zZWFyY2hQYXJhbXMuaGFzKCd2YXJpYW50JykpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Ly8gTm8gcmV3cml0aW5nIGZvciBmb3JlaWduIG9yaWdpbiBVUkxzXG5cdFx0Ly8gTm90ZSB0aGF0IGxpbmtzIGxpa2UgamF2YXNjcmlwdDp2b2lkKDApIGFyZSBibG9ja2VkIGJ5IHRoaXNcblx0XHRpZiAodXJsLmhvc3QgIT09IGxvY2F0aW9uLmhvc3QpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJld3JpdGVMaW5rKGxpbms6IHN0cmluZywgdmFyaWFudDogVmFyaWFudCk6IHN0cmluZyB7XG5cdHRyeSB7XG5cdFx0Y29uc3Qgbm9ybWFsaXphdGlvblRhcmdldFZhcmlhbnQgPSBnZXRNZWRpYVdpa2lWYXJpYW50KCk7XG5cdFx0Y29uc3QgdXJsID0gbmV3IFVSTChsaW5rLCBsb2NhdGlvbi5vcmlnaW4pO1xuXHRcdGNvbnN0IHtwYXRobmFtZSwgc2VhcmNoUGFyYW1zfSA9IHVybDtcblxuXHRcdGlmIChSRUdFWF9XSUtJX1VSTC50ZXN0KHBhdGhuYW1lKSkge1xuXHRcdFx0dXJsLnBhdGhuYW1lID0gYC8ke3ZhcmlhbnR9LyR7dXJsLnBhdGhuYW1lLnJlcGxhY2UoUkVHRVhfV0lLSV9VUkwsICcnKX1gO1xuXHRcdFx0c2VhcmNoUGFyYW1zLmRlbGV0ZSgndmFyaWFudCcpOyAvLyBGb3IgdGhpbmdzIGxpa2UgL3poLWNuL0E/dmFyaWFudD16aC1oa1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZWFyY2hQYXJhbXMuc2V0KCd2YXJpYW50JywgdmFyaWFudCk7XG5cdFx0fVxuXG5cdFx0aWYgKHZhcmlhbnQgPT09IG5vcm1hbGl6YXRpb25UYXJnZXRWYXJpYW50KSB7XG5cdFx0XHQvLyBOb3JtYWxpemUgdGhlIGxpbmsuXG5cdFx0XHQvL1xuXHRcdFx0Ly8gRm9yIGV4YW1wbGUsIGZvciBsaW5rIC96aC10dy9UaXRsZSBhbmQgbm9ybWFsaXphdGlvbiB2YXJpYW50IHpoLXR3LCB0aGUgcmVzdWx0IGlzIC93aWtpL1RpdGxlLFxuXHRcdFx0Ly8gd2hpbGUgZm9yIHRoZSBzYW1lIGxpbmsgYW5kIG5vcm1hbGl6YXRpb24gdmFyaWFudCB6aC1jbiwgdGhlIHJlc3VsdCBpcyAvemgtdHcvVGl0bGUgKHVuY2hhbmdlZCkuXG5cdFx0XHR1cmwucGF0aG5hbWUgPSB1cmwucGF0aG5hbWUucmVwbGFjZShSRUdFWF9XSUtJX1VSTCwgJy93aWtpLycpO1xuXHRcdFx0dXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoJ3ZhcmlhbnQnKTtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHQgPSB1cmwudG9TdHJpbmcoKTtcblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0gY2F0Y2gge1xuXHRcdHJldHVybiBsaW5rO1xuXHR9XG59XG5cbmludGVyZmFjZSBSZWRpcmVjdGlvbk9wdGlvbnMge1xuXHRsaW5rPzogc3RyaW5nO1xuXHQvKiogU2hvdWxkIHN0aWxsIHJlZGlyZWN0IGV2ZW4gZGVzdGluYXRpb24gbGluayBpcyB0aGUgc2FtZSBhcyBjdXJyZW50IHBhZ2UgKi9cblx0Zm9yY2VkPzogYm9vbGVhbjtcbn1cblxudHlwZSBSZWRpcmVjdCA9IHR5cGVvZiByZWRpcmVjdDtcblxuZnVuY3Rpb24gcmVkaXJlY3QocHJlZmVycmVkVmFyaWFudDogVmFyaWFudCwgb3B0aW9uczogUmVkaXJlY3Rpb25PcHRpb25zID0ge30pOiB2b2lkIHtcblx0Y29uc3Qgb3JpZ0xpbmsgPSBvcHRpb25zLmxpbmsgPz8gbG9jYXRpb24uaHJlZjtcblx0Y29uc3QgbmV3TGluayA9IHJld3JpdGVMaW5rKG9yaWdMaW5rLCBwcmVmZXJyZWRWYXJpYW50KTtcblxuXHQvLyBQcmV2ZW50IGluZmluaXRlIHJlZGlyZWN0c1xuXHQvLyBUaGlzIGNvdWxkIGhhcHBlbiBvY2Nhc2lvbmFsbHksIHNlZSBnZXRNZWRpYVdpa2lWYXJpYW50KCkncyBjb21tZW50c1xuXHRpZiAob3B0aW9ucy5mb3JjZWQgfHwgbmV3TGluayAhPT0gbG9jYXRpb24uaHJlZikge1xuXHRcdC8vIFVzZSByZXBsYWNlKCkgdG8gcHJldmVudCBuYXZpZ2F0aW5nIGJhY2tcblx0XHRsb2NhdGlvbi5yZXBsYWNlKG5ld0xpbmspO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGNoZWNrVGhpc1BhZ2UocHJlZmVycmVkVmFyaWFudDogVmFyaWFudCwgcGFnZVZhcmlhbnQ/OiBWYXJpYW50KTogdm9pZCB7XG5cdGlmIChwYWdlVmFyaWFudCA9PT0gcHJlZmVycmVkVmFyaWFudCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHJlZGlyZWN0aW9uT3JpZ2luOiBzdHJpbmcgfCBudWxsID0gbXcuY29uZmlnLmdldCgnd2dSZWRpcmVjdGVkRnJvbScpO1xuXHRpZiAocmVkaXJlY3Rpb25PcmlnaW4gPT09IG51bGwpIHtcblx0XHRyZWRpcmVjdChwcmVmZXJyZWRWYXJpYW50KTtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBVc2UgVVJMIHRvIHJlc2VydmUgb3RoZXIgcGFydHMgb2YgdGhlIGxpbmtcblx0Y29uc3QgcmVkaXJlY3Rpb25VUkwgPSBuZXcgVVJMKGxvY2F0aW9uLmhyZWYpO1xuXHRyZWRpcmVjdGlvblVSTC5wYXRobmFtZSA9IGAvd2lraS8ke3JlZGlyZWN0aW9uT3JpZ2lufWA7XG5cdHJlZGlyZWN0KHByZWZlcnJlZFZhcmlhbnQsIHtsaW5rOiByZWRpcmVjdGlvblVSTC50b1N0cmluZygpfSk7XG59XG5cbmZ1bmN0aW9uIHJld3JpdGVBbmNob3JzKHZhcmlhbnQ6IFZhcmlhbnQpOiB2b2lkIHtcblx0Zm9yIChjb25zdCBuYW1lIG9mIFsnY2xpY2snLCAnYXV4Y2xpY2snLCAnZHJhZ3N0YXJ0J10pIHtcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKG5hbWUsIChldikgPT4ge1xuXHRcdFx0Y29uc3Qge3RhcmdldH0gPSBldjtcblxuXHRcdFx0aWYgKHRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRcdFx0Ly8gRG8gbm90IHdyaXRlIDxhPiB3aXRoIGhhc2ggb25seSBocmVmIG9yIG5vIGhyZWZcblx0XHRcdFx0Ly8gd2hpY2ggaXMga25vd24gdG8gY2F1c2UgYnJlYWthZ2UgaW4gZS5nLiBWaXN1YWwgRWRpdG9yXG5cdFx0XHRcdGNvbnN0IGFuY2hvcjogSFRNTEFuY2hvckVsZW1lbnQgfCBudWxsID0gdGFyZ2V0LmNsb3Nlc3QoJ2FbaHJlZl06bm90KFtocmVmXj1cIiNcIl0pJyk7XG5cblx0XHRcdFx0aWYgKGFuY2hvciAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdGNvbnN0IG9yaWdMaW5rID0gYW5jaG9yLmhyZWY7XG5cdFx0XHRcdFx0aWYgKCFpc0VsaWdpYmxlRm9yUmV3cml0aW5nKG9yaWdMaW5rKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IG5ld0xpbmsgPSByZXdyaXRlTGluayhvcmlnTGluaywgdmFyaWFudCk7XG5cdFx0XHRcdFx0aWYgKG5ld0xpbmsgPT09IG9yaWdMaW5rKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gQnJvd3NlciBzdXBwb3J0OiBTYWZhcmkgPCAxNFxuXHRcdFx0XHRcdC8vIEZhaWwgc2lsZW50bHkgd2hlbiBEcmFnRXZlbnQgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRpZiAod2luZG93LkRyYWdFdmVudCAmJiBldiBpbnN0YW5jZW9mIERyYWdFdmVudCAmJiBldi5kYXRhVHJhbnNmZXIpIHtcblx0XHRcdFx0XHRcdC8vIE1vZGlmeSBkcmFnIGRhdGEgZGlyZWN0bHkgYmVjYXVzZSBzZXR0aW5nIGhyZWYgaGFzIG5vIGVmZmVjdCBpbiBkcmFnIGV2ZW50XG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IHR5cGUgb2YgZXYuZGF0YVRyYW5zZmVyLnR5cGVzKSB7XG5cdFx0XHRcdFx0XHRcdGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKHR5cGUsIG5ld0xpbmspO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBVc2UgYSBtdXRleCB0byBhdm9pZCBiZWluZyBvdmVyd3JpdHRlbiBieSBvdmVybGFwcGVkIGhhbmRsZXIgY2FsbHNcblx0XHRcdFx0XHRcdGlmIChhbmNob3IuZGF0YXNldFsndmFNdXRleCddID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0YW5jaG9yLmRhdGFzZXRbJ3ZhTXV0ZXgnXSA9ICcnO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRhbmNob3IuaHJlZiA9IG5ld0xpbms7XG5cblx0XHRcdFx0XHRcdC8vIEhBQ0s6IHdvcmthcm91bmQgcG9wdXBzIG5vdCB3b3JraW5nIG9uIG1vZGlmaWVkIGxpbmtzXG5cdFx0XHRcdFx0XHQvLyBBZGQgaGFuZGxlciB0byA8YT4gZGlyZWN0bHkgc28gaXQgd2FzIHRyaWdnZXJlZCBiZWZvcmUgYW55dGhpbmcgZWxzZVxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpbm5lck5hbWUgb2YgWydtb3VzZW92ZXInLCAnbW91c2VsZWF2ZScsICdrZXl1cCddKSB7XG5cdFx0XHRcdFx0XHRcdGFuY2hvci5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0XHRcdFx0XHRcdGlubmVyTmFtZSxcblx0XHRcdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYW5jaG9yLmRhdGFzZXRbJ3ZhTXV0ZXgnXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFuY2hvci5ocmVmID0gb3JpZ0xpbms7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZSBhbmNob3IuZGF0YXNldFsndmFNdXRleCddO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e29uY2U6IHRydWV9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gc2hvd1ZhcmlhbnRQcm9tcHQoKTogdm9pZCB7XG5cdGNvbnN0IG1vZHVsZU5hbWUgPSAnZXh0LmdhZGdldC5WYXJpYW50QWxseURpYWxvZyc7XG5cdHZvaWQgbXcubG9hZGVyLnVzaW5nKG1vZHVsZU5hbWUsIChyZXF1aXJlKSA9PiB7XG5cdFx0cmVxdWlyZShtb2R1bGVOYW1lKTtcblx0fSk7XG59XG5cbi8qKlxuICogU2V0IGxvY2FsIHZhcmlhbnQgYWNjb3JkaW5nIHRvIFVSTCBxdWVyeSBwYXJhbWV0ZXJzLlxuICpcbiAqIGUuZy4gYSBVUkwgd2l0aCA/dmEtdmFyaWFudD16aC1jbiB3aWxsIHNldCBsb2NhbCB2YXJpYW50IHRvIHpoLWNuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5VVJMVmFyaWFudCgpOiB2b2lkIHtcblx0Y29uc3QgdmFyaWFudCA9IG5ldyBVUkwobG9jYXRpb24uaHJlZikuc2VhcmNoUGFyYW1zLmdldChWQVJJQU5UX1BBUkFNKTtcblx0aWYgKHZhcmlhbnQgIT09IG51bGwgJiYgaXNWYWxpZFZhcmlhbnQodmFyaWFudCkpIHtcblx0XHRzZXRMb2NhbFZhcmlhbnQodmFyaWFudCk7XG5cdH1cbn1cblxuZXhwb3J0IHtcblx0dHlwZSBSZWRpcmVjdCxcblx0aXNFbGlnaWJsZUZvclJld3JpdGluZyxcblx0cmV3cml0ZUxpbmssXG5cdHJlZGlyZWN0LFxuXHRjaGVja1RoaXNQYWdlLFxuXHRyZXdyaXRlQW5jaG9ycyxcblx0c2hvd1ZhcmlhbnRQcm9tcHQsXG5cdGFwcGx5VVJMVmFyaWFudCxcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBLG9GQUFBQSxVQUFBQyxTQUFBO0FBQUE7QUFFQSxRQUFJLGNBQWMsT0FBTyxZQUFZLFlBQVksU0FBUztBQUsxRCxJQUFBQSxRQUFPLFVBQVUsT0FBTyxlQUFlLGVBQWUsZ0JBQWdCLFNBQVksU0FBVSxVQUFVO0FBQ3BHLGFBQU8sT0FBTyxZQUFZLGNBQWMsYUFBYTtBQUFBLElBQ3ZELElBQUksU0FBVSxVQUFVO0FBQ3RCLGFBQU8sT0FBTyxZQUFZO0FBQUEsSUFDNUI7QUFBQTtBQUFBOzs7QUNYQTtBQUFBLDhFQUFBQyxVQUFBQyxTQUFBO0FBQUE7QUFDQSxJQUFBQSxRQUFPLFVBQVUsU0FBVSxNQUFNO0FBQy9CLFVBQUk7QUFDRixlQUFPLENBQUMsQ0FBQyxLQUFLO0FBQUEsTUFDaEIsU0FBUyxPQUFPO0FBQ2QsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDUEE7QUFBQSxvRkFBQUMsVUFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxRQUFRO0FBR1osSUFBQUEsUUFBTyxVQUFVLENBQUMsTUFBTSxXQUFZO0FBRWxDLGFBQU8sT0FBTyxlQUFlLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxXQUFZO0FBQUUsZUFBTztBQUFBLE1BQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNO0FBQUEsSUFDakYsQ0FBQztBQUFBO0FBQUE7OztBQ1BEO0FBQUEsb0ZBQUFDLFVBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksUUFBUSxTQUFVLElBQUk7QUFDeEIsYUFB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RyxpQkFBZVYsZ0JBQWdCO0FBQ2hDO0FBRUFnRCxLQUFLOyIsCiAgIm5hbWVzIjogWyJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgImRvY3VtZW50IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJuYXZpZ2F0b3IiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIlN5bWJvbCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJUeXBlRXJyb3IiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVmFyaWFudEFsbHlfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJyZWRpcmVjdCIsICJzZXRMb2NhbFZhcmlhbnQiLCAic2V0T3B0T3V0IiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIl9fdG9Db21tb25KUyIsICJpc0xvZ2dlZEluIiwgIm13IiwgImNvbmZpZyIsICJleGlzdHMiLCAiaXNSZWZlcnJlclNlbGYiLCAiVVJMIiwgImRvY3VtZW50IiwgInJlZmVycmVyIiwgImhvc3RuYW1lIiwgImxvY2F0aW9uIiwgImlzVmlld2luZ1BhZ2UiLCAiZ2V0IiwgImlzTGFuZ0NoaW5lc2UiLCAic3RhcnRzV2l0aCIsICJpc1dpa2l0ZXh0UGFnZSIsICJMT0NBTF9WQVJJQU5UX0tFWSIsICJPUFRPVVRfS0VZIiwgIlZBTElEX1ZBUklBTlRTIiwgIlZBUklBTlRTIiwgIkVYVF9WQVJJQU5UUyIsICJFWFRfTUFQUElORyIsICJpc1ZhcmlhbnQiLCAic3RyIiwgImluY2x1ZGVzIiwgImlzVmFsaWRWYXJpYW50IiwgImlzRXh0VmFyaWFudCIsICJub3JtYWxpemVWYXJpYW50IiwgImV4dFZhcmlhbnQiLCAiX0VYVF9NQVBQSU5HJGV4dFZhcmlhIiwgImdldFBhZ2VWYXJpYW50IiwgInJlc3VsdCIsICJnZXRBY2NvdW50VmFyaWFudCIsICJ1c2VyIiwgIm9wdGlvbnMiLCAiZ2V0TG9jYWxWYXJpYW50IiwgImxvY2FsU3RvcmFnZSIsICJnZXRJdGVtIiwgImdldEJyb3dzZXJWYXJpYW50IiwgIl9uYXZpZ2F0b3IkbGFuZ3VhZ2VzJCIsICJuYXZpZ2F0b3IiLCAibGFuZ3VhZ2VzIiwgIm1hcCIsICJsYW5nIiwgInRvTG93ZXJDYXNlIiwgImZpbHRlciIsICJmaW5kIiwgImdldE1lZGlhV2lraVZhcmlhbnQiLCAiX2dldEFjY291bnRWYXJpYW50IiwgImNhbGN1bGF0ZVByZWZlcnJlZFZhcmlhbnQiLCAidmFyaWFudCIsICJyZWR1Y2UiLCAicHJldiIsICJjdXJyIiwgInNldEl0ZW0iLCAiaXNPcHRPdXRlZCIsICJSRUdFWF9XSUtJX1VSTCIsICJSRUdFWF9WQVJJQU5UX1VSTCIsICJWQVJJQU5UX1BBUkFNIiwgImlzRWxpZ2libGVGb3JSZXdyaXRpbmciLCAibGluayIsICJ1cmwiLCAib3JpZ2luIiwgInRlc3QiLCAicGF0aG5hbWUiLCAic2VhcmNoUGFyYW1zIiwgImhhcyIsICJob3N0IiwgInJld3JpdGVMaW5rIiwgIm5vcm1hbGl6YXRpb25UYXJnZXRWYXJpYW50IiwgImNvbmNhdCIsICJyZXBsYWNlIiwgImRlbGV0ZSIsICJzZXQiLCAidG9TdHJpbmciLCAicHJlZmVycmVkVmFyaWFudCIsICJfb3B0aW9ucyRsaW5rIiwgIm9yaWdMaW5rIiwgImhyZWYiLCAibmV3TGluayIsICJmb3JjZWQiLCAiY2hlY2tUaGlzUGFnZSIsICJwYWdlVmFyaWFudCIsICJyZWRpcmVjdGlvbk9yaWdpbiIsICJyZWRpcmVjdGlvblVSTCIsICJyZXdyaXRlQW5jaG9ycyIsICJfaSIsICJfYXJyIiwgImxlbmd0aCIsICJuYW1lIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiZXYiLCAidGFyZ2V0IiwgIkVsZW1lbnQiLCAiYW5jaG9yIiwgImNsb3Nlc3QiLCAid2luZG93IiwgIkRyYWdFdmVudCIsICJkYXRhVHJhbnNmZXIiLCAiX2l0ZXJhdG9yMiIsICJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsICJ0eXBlcyIsICJfc3RlcDIiLCAicyIsICJuIiwgImRvbmUiLCAidHlwZSIsICJ2YWx1ZSIsICJzZXREYXRhIiwgImVyciIsICJlIiwgImYiLCAiZGF0YXNldCIsICJfaTIiLCAiX2FycjIiLCAiaW5uZXJOYW1lIiwgIm9uY2UiLCAic2hvd1ZhcmlhbnRQcm9tcHQiLCAibW9kdWxlTmFtZSIsICJsb2FkZXIiLCAidXNpbmciLCAicmVxdWlyZTIiLCAiYXBwbHlVUkxWYXJpYW50IiwgIm1haW4iXQp9Cg== diff --git a/dist/Wikiplus-highlight/Wikiplus-highlight.js b/dist/Wikiplus-highlight/Wikiplus-highlight.js index a47e89986..5d4b435dd 100644 --- a/dist/Wikiplus-highlight/Wikiplus-highlight.js +++ b/dist/Wikiplus-highlight/Wikiplus-highlight.js @@ -47,9 +47,9 @@ var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/global.js -var require_global = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/global.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/global-this.js +var require_global_this = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/global-this.js"(exports, module2) { "use strict"; var check = function(it) { return it && it.Math === Math && it; @@ -63,9 +63,9 @@ var require_global = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/fails.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/fails.js var require_fails = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/fails.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/fails.js"(exports, module2) { "use strict"; module2.exports = function(exec) { try { @@ -77,9 +77,9 @@ var require_fails = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/descriptors.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/descriptors.js var require_descriptors = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/descriptors.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/descriptors.js"(exports, module2) { "use strict"; var fails = require_fails(); module2.exports = !fails(function() { @@ -90,9 +90,9 @@ var require_descriptors = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-bind-native.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-bind-native.js var require_function_bind_native = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-bind-native.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-bind-native.js"(exports, module2) { "use strict"; var fails = require_fails(); module2.exports = !fails(function() { @@ -103,9 +103,9 @@ var require_function_bind_native = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-call.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-call.js var require_function_call = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-call.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-call.js"(exports, module2) { "use strict"; var NATIVE_BIND = require_function_bind_native(); var call = Function.prototype.call; @@ -115,9 +115,9 @@ var require_function_call = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-property-is-enumerable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-property-is-enumerable.js var require_object_property_is_enumerable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-property-is-enumerable.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-property-is-enumerable.js"(exports) { "use strict"; var $propertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; @@ -129,9 +129,9 @@ var require_object_property_is_enumerable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-property-descriptor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-property-descriptor.js var require_create_property_descriptor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-property-descriptor.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-property-descriptor.js"(exports, module2) { "use strict"; module2.exports = function(bitmap, value) { return { @@ -144,9 +144,9 @@ var require_create_property_descriptor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this.js var require_function_uncurry_this = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this.js"(exports, module2) { "use strict"; var NATIVE_BIND = require_function_bind_native(); var FunctionPrototype = Function.prototype; @@ -160,9 +160,9 @@ var require_function_uncurry_this = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof-raw.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof-raw.js var require_classof_raw = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof-raw.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof-raw.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var toString = uncurryThis({}.toString); @@ -173,9 +173,9 @@ var require_classof_raw = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/indexed-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/indexed-object.js var require_indexed_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/indexed-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/indexed-object.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var fails = require_fails(); @@ -190,9 +190,9 @@ var require_indexed_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-null-or-undefined.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-null-or-undefined.js var require_is_null_or_undefined = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-null-or-undefined.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-null-or-undefined.js"(exports, module2) { "use strict"; module2.exports = function(it) { return it === null || it === void 0; @@ -200,9 +200,9 @@ var require_is_null_or_undefined = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/require-object-coercible.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/require-object-coercible.js var require_require_object_coercible = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/require-object-coercible.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/require-object-coercible.js"(exports, module2) { "use strict"; var isNullOrUndefined = require_is_null_or_undefined(); var $TypeError = TypeError; @@ -213,9 +213,9 @@ var require_require_object_coercible = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-indexed-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-indexed-object.js var require_to_indexed_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-indexed-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-indexed-object.js"(exports, module2) { "use strict"; var IndexedObject = require_indexed_object(); var requireObjectCoercible = require_require_object_coercible(); @@ -225,9 +225,9 @@ var require_to_indexed_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-callable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-callable.js var require_is_callable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-callable.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-callable.js"(exports, module2) { "use strict"; var documentAll = typeof document == "object" && document.all; module2.exports = typeof documentAll == "undefined" && documentAll !== void 0 ? function(argument) { @@ -238,9 +238,9 @@ var require_is_callable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-object.js var require_is_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-object.js"(exports, module2) { "use strict"; var isCallable = require_is_callable(); module2.exports = function(it) { @@ -249,46 +249,49 @@ var require_is_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in.js var require_get_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-built-in.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isCallable = require_is_callable(); var aFunction = function(argument) { return isCallable(argument) ? argument : void 0; }; module2.exports = function(namespace, method) { - return arguments.length < 2 ? aFunction(global2[namespace]) : global2[namespace] && global2[namespace][method]; + return arguments.length < 2 ? aFunction(globalThis2[namespace]) : globalThis2[namespace] && globalThis2[namespace][method]; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-is-prototype-of.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-is-prototype-of.js var require_object_is_prototype_of = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-is-prototype-of.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-is-prototype-of.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); module2.exports = uncurryThis({}.isPrototypeOf); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-user-agent.js -var require_engine_user_agent = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-user-agent.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-user-agent.js +var require_environment_user_agent = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-user-agent.js"(exports, module2) { "use strict"; - module2.exports = typeof navigator != "undefined" && String(navigator.userAgent) || ""; + var globalThis2 = require_global_this(); + var navigator = globalThis2.navigator; + var userAgent = navigator && navigator.userAgent; + module2.exports = userAgent ? String(userAgent) : ""; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-v8-version.js -var require_engine_v8_version = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-v8-version.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-v8-version.js +var require_environment_v8_version = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-v8-version.js"(exports, module2) { "use strict"; - var global2 = require_global(); - var userAgent = require_engine_user_agent(); - var process = global2.process; - var Deno = global2.Deno; + var globalThis2 = require_global_this(); + var userAgent = require_environment_user_agent(); + var process = globalThis2.process; + var Deno = globalThis2.Deno; var versions = process && process.versions || Deno && Deno.version; var v8 = versions && versions.v8; var match; @@ -308,14 +311,14 @@ var require_engine_v8_version = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/symbol-constructor-detection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/symbol-constructor-detection.js var require_symbol_constructor_detection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/symbol-constructor-detection.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/symbol-constructor-detection.js"(exports, module2) { "use strict"; - var V8_VERSION = require_engine_v8_version(); + var V8_VERSION = require_environment_v8_version(); var fails = require_fails(); - var global2 = require_global(); - var $String = global2.String; + var globalThis2 = require_global_this(); + var $String = globalThis2.String; module2.exports = !!Object.getOwnPropertySymbols && !fails(function() { var symbol = Symbol("symbol detection"); return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances @@ -324,18 +327,18 @@ var require_symbol_constructor_detection = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/use-symbol-as-uid.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/use-symbol-as-uid.js var require_use_symbol_as_uid = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/use-symbol-as-uid.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/use-symbol-as-uid.js"(exports, module2) { "use strict"; var NATIVE_SYMBOL = require_symbol_constructor_detection(); module2.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol"; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-symbol.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-symbol.js var require_is_symbol = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-symbol.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-symbol.js"(exports, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var isCallable = require_is_callable(); @@ -351,9 +354,9 @@ var require_is_symbol = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-to-string.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/try-to-string.js var require_try_to_string = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-to-string.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/try-to-string.js"(exports, module2) { "use strict"; var $String = String; module2.exports = function(argument) { @@ -366,9 +369,9 @@ var require_try_to_string = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-callable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-callable.js var require_a_callable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-callable.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-callable.js"(exports, module2) { "use strict"; var isCallable = require_is_callable(); var tryToString = require_try_to_string(); @@ -380,9 +383,9 @@ var require_a_callable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-method.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-method.js var require_get_method = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-method.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-method.js"(exports, module2) { "use strict"; var aCallable = require_a_callable(); var isNullOrUndefined = require_is_null_or_undefined(); @@ -393,9 +396,9 @@ var require_get_method = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ordinary-to-primitive.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ordinary-to-primitive.js var require_ordinary_to_primitive = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ordinary-to-primitive.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ordinary-to-primitive.js"(exports, module2) { "use strict"; var call = require_function_call(); var isCallable = require_is_callable(); @@ -411,53 +414,53 @@ var require_ordinary_to_primitive = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-pure.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-pure.js var require_is_pure = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-pure.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-pure.js"(exports, module2) { "use strict"; module2.exports = false; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-global-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-global-property.js var require_define_global_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-global-property.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-global-property.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var defineProperty = Object.defineProperty; module2.exports = function(key, value) { try { - defineProperty(global2, key, { value, configurable: true, writable: true }); + defineProperty(globalThis2, key, { value, configurable: true, writable: true }); } catch (error) { - global2[key] = value; + globalThis2[key] = value; } return value; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-store.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-store.js var require_shared_store = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-store.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-store.js"(exports, module2) { "use strict"; var IS_PURE = require_is_pure(); - var globalThis2 = require_global(); + var globalThis2 = require_global_this(); var defineGlobalProperty = require_define_global_property(); var SHARED = "__core-js_shared__"; var store = module2.exports = globalThis2[SHARED] || defineGlobalProperty(SHARED, {}); (store.versions || (store.versions = [])).push({ - version: "3.37.1", + version: "3.38.0", mode: IS_PURE ? "pure" : "global", copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)", - license: "https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE", + license: "https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE", source: "https://github.com/zloirock/core-js" }); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared.js var require_shared = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared.js"(exports, module2) { "use strict"; var store = require_shared_store(); module2.exports = function(key, value) { @@ -466,9 +469,9 @@ var require_shared = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-object.js var require_to_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-object.js"(exports, module2) { "use strict"; var requireObjectCoercible = require_require_object_coercible(); var $Object = Object; @@ -478,9 +481,9 @@ var require_to_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/has-own-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/has-own-property.js var require_has_own_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/has-own-property.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/has-own-property.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var toObject = require_to_object(); @@ -491,9 +494,9 @@ var require_has_own_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/uid.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/uid.js var require_uid = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/uid.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/uid.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var id = 0; @@ -505,17 +508,17 @@ var require_uid = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/well-known-symbol.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/well-known-symbol.js var require_well_known_symbol = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/well-known-symbol.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/well-known-symbol.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var shared = require_shared(); var hasOwn = require_has_own_property(); var uid = require_uid(); var NATIVE_SYMBOL = require_symbol_constructor_detection(); var USE_SYMBOL_AS_UID = require_use_symbol_as_uid(); - var Symbol2 = global2.Symbol; + var Symbol2 = globalThis2.Symbol; var WellKnownSymbolsStore = shared("wks"); var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2["for"] || Symbol2 : Symbol2 && Symbol2.withoutSetter || uid; module2.exports = function(name) { @@ -527,9 +530,9 @@ var require_well_known_symbol = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-primitive.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-primitive.js var require_to_primitive = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-primitive.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-primitive.js"(exports, module2) { "use strict"; var call = require_function_call(); var isObject = require_is_object(); @@ -555,9 +558,9 @@ var require_to_primitive = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-property-key.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-property-key.js var require_to_property_key = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-property-key.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-property-key.js"(exports, module2) { "use strict"; var toPrimitive = require_to_primitive(); var isSymbol = require_is_symbol(); @@ -568,13 +571,13 @@ var require_to_property_key = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/document-create-element.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/document-create-element.js var require_document_create_element = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/document-create-element.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/document-create-element.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isObject = require_is_object(); - var document2 = global2.document; + var document2 = globalThis2.document; var EXISTS = isObject(document2) && isObject(document2.createElement); module2.exports = function(it) { return EXISTS ? document2.createElement(it) : {}; @@ -582,9 +585,9 @@ var require_document_create_element = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ie8-dom-define.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ie8-dom-define.js var require_ie8_dom_define = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ie8-dom-define.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ie8-dom-define.js"(exports, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var fails = require_fails(); @@ -599,9 +602,9 @@ var require_ie8_dom_define = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-descriptor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-descriptor.js var require_object_get_own_property_descriptor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports) { "use strict"; var DESCRIPTORS = require_descriptors(); var call = require_function_call(); @@ -624,9 +627,9 @@ var require_object_get_own_property_descriptor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/v8-prototype-define-bug.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/v8-prototype-define-bug.js var require_v8_prototype_define_bug = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var fails = require_fails(); @@ -640,9 +643,9 @@ var require_v8_prototype_define_bug = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/an-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/an-object.js var require_an_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/an-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/an-object.js"(exports, module2) { "use strict"; var isObject = require_is_object(); var $String = String; @@ -654,9 +657,9 @@ var require_an_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-define-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-define-property.js var require_object_define_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-define-property.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-define-property.js"(exports) { "use strict"; var DESCRIPTORS = require_descriptors(); var IE8_DOM_DEFINE = require_ie8_dom_define(); @@ -700,9 +703,9 @@ var require_object_define_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-non-enumerable-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-non-enumerable-property.js var require_create_non_enumerable_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-non-enumerable-property.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-non-enumerable-property.js"(exports, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var definePropertyModule = require_object_define_property(); @@ -716,9 +719,9 @@ var require_create_non_enumerable_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-name.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-name.js var require_function_name = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-name.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-name.js"(exports, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var hasOwn = require_has_own_property(); @@ -736,9 +739,9 @@ var require_function_name = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/inspect-source.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/inspect-source.js var require_inspect_source = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/inspect-source.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/inspect-source.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var isCallable = require_is_callable(); @@ -753,20 +756,20 @@ var require_inspect_source = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/weak-map-basic-detection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/weak-map-basic-detection.js var require_weak_map_basic_detection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/weak-map-basic-detection.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/weak-map-basic-detection.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isCallable = require_is_callable(); - var WeakMap = global2.WeakMap; + var WeakMap = globalThis2.WeakMap; module2.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-key.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-key.js var require_shared_key = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-key.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-key.js"(exports, module2) { "use strict"; var shared = require_shared(); var uid = require_uid(); @@ -777,20 +780,20 @@ var require_shared_key = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/hidden-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/hidden-keys.js var require_hidden_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/hidden-keys.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/hidden-keys.js"(exports, module2) { "use strict"; module2.exports = {}; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/internal-state.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/internal-state.js var require_internal_state = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/internal-state.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/internal-state.js"(exports, module2) { "use strict"; var NATIVE_WEAK_MAP = require_weak_map_basic_detection(); - var global2 = require_global(); + var globalThis2 = require_global_this(); var isObject = require_is_object(); var createNonEnumerableProperty = require_create_non_enumerable_property(); var hasOwn = require_has_own_property(); @@ -798,8 +801,8 @@ var require_internal_state = __commonJS({ var sharedKey = require_shared_key(); var hiddenKeys = require_hidden_keys(); var OBJECT_ALREADY_INITIALIZED = "Object already initialized"; - var TypeError2 = global2.TypeError; - var WeakMap = global2.WeakMap; + var TypeError2 = globalThis2.TypeError; + var WeakMap = globalThis2.WeakMap; var set; var get; var has; @@ -860,9 +863,9 @@ var require_internal_state = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/make-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/make-built-in.js var require_make_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/make-built-in.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/make-built-in.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var fails = require_fails(); @@ -915,9 +918,9 @@ var require_make_built_in = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in.js var require_define_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in.js"(exports, module2) { "use strict"; var isCallable = require_is_callable(); var definePropertyModule = require_object_define_property(); @@ -950,9 +953,9 @@ var require_define_built_in = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/math-trunc.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/math-trunc.js var require_math_trunc = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/math-trunc.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/math-trunc.js"(exports, module2) { "use strict"; var ceil = Math.ceil; var floor = Math.floor; @@ -963,9 +966,9 @@ var require_math_trunc = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-integer-or-infinity.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-integer-or-infinity.js var require_to_integer_or_infinity = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-integer-or-infinity.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-integer-or-infinity.js"(exports, module2) { "use strict"; var trunc = require_math_trunc(); module2.exports = function(argument) { @@ -975,9 +978,9 @@ var require_to_integer_or_infinity = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-absolute-index.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-absolute-index.js var require_to_absolute_index = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-absolute-index.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-absolute-index.js"(exports, module2) { "use strict"; var toIntegerOrInfinity = require_to_integer_or_infinity(); var max = Math.max; @@ -989,9 +992,9 @@ var require_to_absolute_index = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-length.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-length.js var require_to_length = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-length.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-length.js"(exports, module2) { "use strict"; var toIntegerOrInfinity = require_to_integer_or_infinity(); var min = Math.min; @@ -1002,9 +1005,9 @@ var require_to_length = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/length-of-array-like.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/length-of-array-like.js var require_length_of_array_like = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/length-of-array-like.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/length-of-array-like.js"(exports, module2) { "use strict"; var toLength = require_to_length(); module2.exports = function(obj) { @@ -1013,9 +1016,9 @@ var require_length_of_array_like = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-includes.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-includes.js var require_array_includes = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-includes.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-includes.js"(exports, module2) { "use strict"; var toIndexedObject = require_to_indexed_object(); var toAbsoluteIndex = require_to_absolute_index(); @@ -1048,9 +1051,9 @@ var require_array_includes = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-keys-internal.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-keys-internal.js var require_object_keys_internal = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-keys-internal.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-keys-internal.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var hasOwn = require_has_own_property(); @@ -1072,9 +1075,9 @@ var require_object_keys_internal = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/enum-bug-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/enum-bug-keys.js var require_enum_bug_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/enum-bug-keys.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/enum-bug-keys.js"(exports, module2) { "use strict"; module2.exports = [ "constructor", @@ -1088,9 +1091,9 @@ var require_enum_bug_keys = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-names.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-names.js var require_object_get_own_property_names = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-names.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-names.js"(exports) { "use strict"; var internalObjectKeys = require_object_keys_internal(); var enumBugKeys = require_enum_bug_keys(); @@ -1101,17 +1104,17 @@ var require_object_get_own_property_names = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-symbols.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-symbols.js var require_object_get_own_property_symbols = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-symbols.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-symbols.js"(exports) { "use strict"; exports.f = Object.getOwnPropertySymbols; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/own-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/own-keys.js var require_own_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/own-keys.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/own-keys.js"(exports, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var uncurryThis = require_function_uncurry_this(); @@ -1127,9 +1130,9 @@ var require_own_keys = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/copy-constructor-properties.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/copy-constructor-properties.js var require_copy_constructor_properties = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/copy-constructor-properties.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/copy-constructor-properties.js"(exports, module2) { "use strict"; var hasOwn = require_has_own_property(); var ownKeys = require_own_keys(); @@ -1149,9 +1152,9 @@ var require_copy_constructor_properties = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-forced.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-forced.js var require_is_forced = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-forced.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-forced.js"(exports, module2) { "use strict"; var fails = require_fails(); var isCallable = require_is_callable(); @@ -1170,11 +1173,11 @@ var require_is_forced = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/export.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/export.js var require_export = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/export.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/export.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f; var createNonEnumerableProperty = require_create_non_enumerable_property(); var defineBuiltIn = require_define_built_in(); @@ -1187,11 +1190,11 @@ var require_export = __commonJS({ var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { - target = global2; + target = globalThis2; } else if (STATIC) { - target = global2[TARGET] || defineGlobalProperty(TARGET, {}); + target = globalThis2[TARGET] || defineGlobalProperty(TARGET, {}); } else { - target = global2[TARGET] && global2[TARGET].prototype; + target = globalThis2[TARGET] && globalThis2[TARGET].prototype; } if (target) for (key in source) { sourceProperty = source[key]; @@ -1213,9 +1216,9 @@ var require_export = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-helpers.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-helpers.js var require_set_helpers = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-helpers.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-helpers.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var SetPrototype = Set.prototype; @@ -1230,9 +1233,9 @@ var require_set_helpers = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-set.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-set.js var require_a_set = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-set.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-set.js"(exports, module2) { "use strict"; var has = require_set_helpers().has; module2.exports = function(it) { @@ -1242,9 +1245,9 @@ var require_a_set = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/iterate-simple.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/iterate-simple.js var require_iterate_simple = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/iterate-simple.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/iterate-simple.js"(exports, module2) { "use strict"; var call = require_function_call(); module2.exports = function(record, fn, ITERATOR_INSTEAD_OF_RECORD) { @@ -1259,9 +1262,9 @@ var require_iterate_simple = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-iterate.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-iterate.js var require_set_iterate = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-iterate.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-iterate.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var iterateSimple = require_iterate_simple(); @@ -1277,9 +1280,9 @@ var require_set_iterate = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-clone.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-clone.js var require_set_clone = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-clone.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-clone.js"(exports, module2) { "use strict"; var SetHelpers = require_set_helpers(); var iterate = require_set_iterate(); @@ -1295,9 +1298,9 @@ var require_set_clone = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this-accessor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this-accessor.js var require_function_uncurry_this_accessor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this-accessor.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this-accessor.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var aCallable = require_a_callable(); @@ -1310,9 +1313,9 @@ var require_function_uncurry_this_accessor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-size.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-size.js var require_set_size = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-size.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-size.js"(exports, module2) { "use strict"; var uncurryThisAccessor = require_function_uncurry_this_accessor(); var SetHelpers = require_set_helpers(); @@ -1322,9 +1325,9 @@ var require_set_size = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-iterator-direct.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-iterator-direct.js var require_get_iterator_direct = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-iterator-direct.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-iterator-direct.js"(exports, module2) { "use strict"; module2.exports = function(obj) { return { @@ -1336,9 +1339,9 @@ var require_get_iterator_direct = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-set-record.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-set-record.js var require_get_set_record = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-set-record.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-set-record.js"(exports, module2) { "use strict"; var aCallable = require_a_callable(); var anObject = require_an_object(); @@ -1374,9 +1377,9 @@ var require_get_set_record = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-difference.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-difference.js var require_set_difference = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-difference.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-difference.js"(exports, module2) { "use strict"; var aSet = require_a_set(); var SetHelpers = require_set_helpers(); @@ -1402,9 +1405,9 @@ var require_set_difference = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-method-accept-set-like.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-method-accept-set-like.js var require_set_method_accept_set_like = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-method-accept-set-like.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-method-accept-set-like.js"(exports, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var createSetLike = function(size) { @@ -1439,9 +1442,9 @@ var require_set_method_accept_set_like = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.difference.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.difference.v2.js var require_es_set_difference_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.difference.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.difference.v2.js"() { "use strict"; var $2 = require_export(); var difference = require_set_difference(); @@ -1452,17 +1455,9 @@ var require_es_set_difference_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.difference.v2.js -var require_esnext_set_difference_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.difference.v2.js"() { - "use strict"; - require_es_set_difference_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-intersection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-intersection.js var require_set_intersection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-intersection.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-intersection.js"(exports, module2) { "use strict"; var aSet = require_a_set(); var SetHelpers = require_set_helpers(); @@ -1491,9 +1486,9 @@ var require_set_intersection = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.intersection.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.intersection.v2.js var require_es_set_intersection_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.intersection.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.intersection.v2.js"() { "use strict"; var $2 = require_export(); var fails = require_fails(); @@ -1508,17 +1503,9 @@ var require_es_set_intersection_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.intersection.v2.js -var require_esnext_set_intersection_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.intersection.v2.js"() { - "use strict"; - require_es_set_intersection_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/iterator-close.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/iterator-close.js var require_iterator_close = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/iterator-close.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/iterator-close.js"(exports, module2) { "use strict"; var call = require_function_call(); var anObject = require_an_object(); @@ -1545,9 +1532,9 @@ var require_iterator_close = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-disjoint-from.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-disjoint-from.js var require_set_is_disjoint_from = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-disjoint-from.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-disjoint-from.js"(exports, module2) { "use strict"; var aSet = require_a_set(); var has = require_set_helpers().has; @@ -1570,9 +1557,9 @@ var require_set_is_disjoint_from = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js var require_es_set_is_disjoint_from_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js"() { "use strict"; var $2 = require_export(); var isDisjointFrom = require_set_is_disjoint_from(); @@ -1583,17 +1570,9 @@ var require_es_set_is_disjoint_from_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js -var require_esnext_set_is_disjoint_from_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js"() { - "use strict"; - require_es_set_is_disjoint_from_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-subset-of.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-subset-of.js var require_set_is_subset_of = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-subset-of.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-subset-of.js"(exports, module2) { "use strict"; var aSet = require_a_set(); var size = require_set_size(); @@ -1610,9 +1589,9 @@ var require_set_is_subset_of = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-subset-of.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-subset-of.v2.js var require_es_set_is_subset_of_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-subset-of.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-subset-of.v2.js"() { "use strict"; var $2 = require_export(); var isSubsetOf = require_set_is_subset_of(); @@ -1623,17 +1602,9 @@ var require_es_set_is_subset_of_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js -var require_esnext_set_is_subset_of_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js"() { - "use strict"; - require_es_set_is_subset_of_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-superset-of.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-superset-of.js var require_set_is_superset_of = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-is-superset-of.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-is-superset-of.js"(exports, module2) { "use strict"; var aSet = require_a_set(); var has = require_set_helpers().has; @@ -1653,9 +1624,9 @@ var require_set_is_superset_of = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-superset-of.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-superset-of.v2.js var require_es_set_is_superset_of_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.is-superset-of.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.is-superset-of.v2.js"() { "use strict"; var $2 = require_export(); var isSupersetOf = require_set_is_superset_of(); @@ -1666,17 +1637,9 @@ var require_es_set_is_superset_of_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js -var require_esnext_set_is_superset_of_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js"() { - "use strict"; - require_es_set_is_superset_of_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-symmetric-difference.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-symmetric-difference.js var require_set_symmetric_difference = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-symmetric-difference.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-symmetric-difference.js"(exports, module2) { "use strict"; var aSet = require_a_set(); var SetHelpers = require_set_helpers(); @@ -1699,9 +1662,9 @@ var require_set_symmetric_difference = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.symmetric-difference.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.symmetric-difference.v2.js var require_es_set_symmetric_difference_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.symmetric-difference.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.symmetric-difference.v2.js"() { "use strict"; var $2 = require_export(); var symmetricDifference = require_set_symmetric_difference(); @@ -1712,17 +1675,9 @@ var require_es_set_symmetric_difference_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js -var require_esnext_set_symmetric_difference_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js"() { - "use strict"; - require_es_set_symmetric_difference_v2(); - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-union.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-union.js var require_set_union = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/set-union.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/set-union.js"(exports, module2) { "use strict"; var aSet = require_a_set(); var add = require_set_helpers().add; @@ -1741,9 +1696,9 @@ var require_set_union = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.union.v2.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.union.v2.js var require_es_set_union_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.set.union.v2.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.set.union.v2.js"() { "use strict"; var $2 = require_export(); var union = require_set_union(); @@ -1754,22 +1709,14 @@ var require_es_set_union_v2 = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.union.v2.js -var require_esnext_set_union_v2 = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/esnext.set.union.v2.js"() { - "use strict"; - require_es_set_union_v2(); - } -}); - // dist/Wikiplus-highlight/Wikiplus-highlight.js -require_esnext_set_difference_v2(); -require_esnext_set_intersection_v2(); -require_esnext_set_is_disjoint_from_v2(); -require_esnext_set_is_subset_of_v2(); -require_esnext_set_is_superset_of_v2(); -require_esnext_set_symmetric_difference_v2(); -require_esnext_set_union_v2(); +require_es_set_difference_v2(); +require_es_set_intersection_v2(); +require_es_set_is_disjoint_from_v2(); +require_es_set_is_subset_of_v2(); +require_es_set_is_superset_of_v2(); +require_es_set_symmetric_difference_v2(); +require_es_set_union_v2(); function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { @@ -2117,4 +2064,4 @@ var checkDependencies = /* @__PURE__ */ function() { /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWhlbHBlcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXNldC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtY2xvbmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc2l6ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1kaXJlY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc2V0LXJlY29yZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1kaWZmZXJlbmNlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LmRpZmZlcmVuY2UudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5kaWZmZXJlbmNlLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWludGVyc2VjdGlvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuaW50ZXJzZWN0aW9uLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuaW50ZXJzZWN0aW9uLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaXMtZGlzam9pbnQtZnJvbS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtZGlzam9pbnQtZnJvbS52Mi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuc2V0LmlzLWRpc2pvaW50LWZyb20udjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaXMtc3Vic2V0LW9mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pcy1zdWJzZXQtb2YudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnNldC5pcy1zdWJzZXQtb2YudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaXMtc3VwZXJzZXQtb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LmlzLXN1cGVyc2V0LW9mLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuaXMtc3VwZXJzZXQtb2YudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3ltbWV0cmljLWRpZmZlcmVuY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LnN5bW1ldHJpYy1kaWZmZXJlbmNlLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdW5pb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LnVuaW9uLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5zZXQudW5pb24udjIuanMiLCAic3JjL1dpa2lwbHVzLWhpZ2hsaWdodC9tb2R1bGVzL2hpZ2hsaWdodC50cyIsICJzcmMvV2lraXBsdXMtaGlnaGxpZ2h0L21vZHVsZXMvYXBpLnRzIiwgInNyYy9XaWtpcGx1cy1oaWdobGlnaHQvbW9kdWxlcy9jaGVja0RlcGVuZGVuY2llcy50cyIsICJzcmMvV2lraXBsdXMtaGlnaGxpZ2h0L1dpa2lwbHVzLWhpZ2hsaWdodC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgY2hlY2sodHlwZW9mIHRoaXMgPT0gJ29iamVjdCcgJiYgdGhpcykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIGNhbGwgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IGNhbGwuYmluZChjYWxsKSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbGwuYXBwbHkoY2FsbCwgYXJndW1lbnRzKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGNhbGwgPSBGdW5jdGlvblByb3RvdHlwZS5jYWxsO1xudmFyIHVuY3VycnlUaGlzV2l0aEJpbmQgPSBOQVRJVkVfQklORCAmJiBGdW5jdGlvblByb3RvdHlwZS5iaW5kLmJpbmQoY2FsbCwgY2FsbCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyB1bmN1cnJ5VGhpc1dpdGhCaW5kIDogZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGwuYXBwbHkoZm4sIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoe30udG9TdHJpbmcpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gc3RyaW5nU2xpY2UodG9TdHJpbmcoaXQpLCA4LCAtMSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICEkT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6ICRPYmplY3QoaXQpO1xufSA6ICRPYmplY3Q7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gd2UgY2FuJ3QgdXNlIGp1c3QgYGl0ID09IG51bGxgIHNpbmNlIG9mIGBkb2N1bWVudC5hbGxgIHNwZWNpYWwgY2FzZVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdC1hZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gbnVsbCB8fCBpdCA9PT0gdW5kZWZpbmVkO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3RcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgZG9jdW1lbnRBbGwgPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRBbGwgIT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxbbmFtZXNwYWNlXSkgOiBnbG9iYWxbbmFtZXNwYWNlXSAmJiBnbG9iYWxbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgbmF2aWdhdG9yICE9ICd1bmRlZmluZWQnICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAnJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIERlbm8gPSBnbG9iYWwuRGVubztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucyB8fCBEZW5vICYmIERlbm8udmVyc2lvbjtcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICAvLyBpbiBvbGQgQ2hyb21lLCB2ZXJzaW9ucyBvZiBWOCBpc24ndCBWOCA9IENocm9tZSAvIDEwXG4gIC8vIGJ1dCB0aGVpciBjb3JyZWN0IHZlcnNpb25zIGFyZSBub3QgaW50ZXJlc3RpbmcgZm9yIHVzXG4gIHZlcnNpb24gPSBtYXRjaFswXSA+IDAgJiYgbWF0Y2hbMF0gPCA0ID8gMSA6ICsobWF0Y2hbMF0gKyBtYXRjaFsxXSk7XG59XG5cbi8vIEJyb3dzZXJGUyBOb2RlSlMgYHByb2Nlc3NgIHBvbHlmaWxsIGluY29ycmVjdGx5IHNldCBgLnY4YCB0byBgMC4wYFxuLy8gc28gY2hlY2sgYHVzZXJBZ2VudGAgZXZlbiBpZiBgLnY4YCBleGlzdHMsIGJ1dCAwXG5pZiAoIXZlcnNpb24gJiYgdXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gK21hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbjtcbiIsICIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICAvLyBuYjogRG8gbm90IGNhbGwgYFN0cmluZ2AgZGlyZWN0bHkgdG8gYXZvaWQgdGhpcyBiZWluZyBvcHRpbWl6ZWQgb3V0IHRvIGBzeW1ib2wrJydgIHdoaWNoIHdpbGwsXG4gIC8vIG9mIGNvdXJzZSwgZmFpbC5cbiAgcmV0dXJuICEkU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVTRV9TWU1CT0xfQVNfVUlEID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciAkU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHJldHVybiBpc0NhbGxhYmxlKCRTeW1ib2wpICYmIGlzUHJvdG90eXBlT2YoJFN5bWJvbC5wcm90b3R5cGUsICRPYmplY3QoaXQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG4vLyBgR2V0TWV0aG9kYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0bWV0aG9kXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChWLCBQKSB7XG4gIHZhciBmdW5jID0gVltQXTtcbiAgcmV0dXJuIGlzTnVsbE9yVW5kZWZpbmVkKGZ1bmMpID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXNbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxuKHN0b3JlLnZlcnNpb25zIHx8IChzdG9yZS52ZXJzaW9ucyA9IFtdKSkucHVzaCh7XG4gIHZlcnNpb246ICczLjM3LjEnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTQtMjAyNCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KScsXG4gIGxpY2Vuc2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM3LjEvTElDRU5TRScsXG4gIHNvdXJjZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzJ1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgfHwge30pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoe30uaGFzT3duUHJvcGVydHkpO1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1oYXNvd24gLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eSh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2xbJ2ZvciddIHx8IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSlcbiAgICAgID8gU3ltYm9sW25hbWVdXG4gICAgICA6IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhc093bihPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLCBPLCBQKSwgT1tQXSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBFTlVNRVJBQkxFID0gJ2VudW1lcmFibGUnO1xudmFyIENPTkZJR1VSQUJMRSA9ICdjb25maWd1cmFibGUnO1xudmFyIFdSSVRBQkxFID0gJ3dyaXRhYmxlJztcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKHR5cGVvZiBPID09PSAnZnVuY3Rpb24nICYmIFAgPT09ICdwcm90b3R5cGUnICYmICd2YWx1ZScgaW4gQXR0cmlidXRlcyAmJiBXUklUQUJMRSBpbiBBdHRyaWJ1dGVzICYmICFBdHRyaWJ1dGVzW1dSSVRBQkxFXSkge1xuICAgIHZhciBjdXJyZW50ID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50W1dSSVRBQkxFXSkge1xuICAgICAgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gICAgICBBdHRyaWJ1dGVzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IENPTkZJR1VSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tDT05GSUdVUkFCTEVdIDogY3VycmVudFtDT05GSUdVUkFCTEVdLFxuICAgICAgICBlbnVtZXJhYmxlOiBFTlVNRVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0VOVU1FUkFCTEVdIDogY3VycmVudFtFTlVNRVJBQkxFXSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfSByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xufSA6ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEID0gJ09iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHN0b3JlLmdldCA9IHN0b3JlLmdldDtcbiAgc3RvcmUuaGFzID0gc3RvcmUuaGFzO1xuICBzdG9yZS5zZXQgPSBzdG9yZS5zZXQ7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHN0b3JlLmhhcyhpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcblxudmFyIENPTkZJR1VSQUJMRV9MRU5HVEggPSBERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAnbGVuZ3RoJywgeyB2YWx1ZTogOCB9KS5sZW5ndGggIT09IDg7XG59KTtcblxudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG52YXIgbWFrZUJ1aWx0SW4gPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSwgb3B0aW9ucykge1xuICBpZiAoc3RyaW5nU2xpY2UoJFN0cmluZyhuYW1lKSwgMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgIG5hbWUgPSAnWycgKyByZXBsYWNlKCRTdHJpbmcobmFtZSksIC9eU3ltYm9sXFwoKFteKV0qKVxcKS4qJC8sICckMScpICsgJ10nO1xuICB9XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZ2V0dGVyKSBuYW1lID0gJ2dldCAnICsgbmFtZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zZXR0ZXIpIG5hbWUgPSAnc2V0ICcgKyBuYW1lO1xuICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIHsgdmFsdWU6IG5hbWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBlbHNlIHZhbHVlLm5hbWUgPSBuYW1lO1xuICB9XG4gIGlmIChDT05GSUdVUkFCTEVfTEVOR1RIICYmIG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdhcml0eScpICYmIHZhbHVlLmxlbmd0aCAhPT0gb3B0aW9ucy5hcml0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbGVuZ3RoJywgeyB2YWx1ZTogb3B0aW9ucy5hcml0eSB9KTtcbiAgfVxuICB0cnkge1xuICAgIGlmIChvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnY29uc3RydWN0b3InKSAmJiBvcHRpb25zLmNvbnN0cnVjdG9yKSB7XG4gICAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAncHJvdG90eXBlJywgeyB3cml0YWJsZTogZmFsc2UgfSk7XG4gICAgLy8gaW4gVjggfiBDaHJvbWUgNTMsIHByb3RvdHlwZXMgb2Ygc29tZSBtZXRob2RzLCBsaWtlIGBBcnJheS5wcm90b3R5cGUudmFsdWVzYCwgYXJlIG5vbi13cml0YWJsZVxuICAgIH0gZWxzZSBpZiAodmFsdWUucHJvdG90eXBlKSB2YWx1ZS5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgdmFyIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICBpZiAoIWhhc093bihzdGF0ZSwgJ3NvdXJjZScpKSB7XG4gICAgc3RhdGUuc291cmNlID0gam9pbihURU1QTEFURSwgdHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dGVuZC1uYXRpdmUgLS0gcmVxdWlyZWRcbkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IG1ha2VCdWlsdEluKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gaXNDYWxsYWJsZSh0aGlzKSAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSwgJ3RvU3RyaW5nJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMuZW51bWVyYWJsZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSBtYWtlQnVpbHRJbih2YWx1ZSwgbmFtZSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lR2xvYmFsUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy51bnNhZmUpIGRlbGV0ZSBPW2tleV07XG4gICAgICBlbHNlIGlmIChPW2tleV0pIHNpbXBsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiAhb3B0aW9ucy5ub25Db25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogIW9wdGlvbnMubm9uV3JpdGFibGVcbiAgICB9KTtcbiAgfSByZXR1cm4gTztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgTWF0aC50cnVuY2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgudHJ1bmNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLXRydW5jIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTWF0aC50cnVuYyB8fCBmdW5jdGlvbiB0cnVuYyh4KSB7XG4gIHZhciBuID0gK3g7XG4gIHJldHVybiAobiA+IDAgPyBmbG9vciA6IGNlaWwpKG4pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdHJ1bmMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC10cnVuYycpO1xuXG4vLyBgVG9JbnRlZ2VyT3JJbmZpbml0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBudW1iZXIgPSArYXJndW1lbnQ7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiBudW1iZXIgIT09IG51bWJlciB8fCBudW1iZXIgPT09IDAgPyAwIDogdHJ1bmMobnVtYmVyKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGxlbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpO1xuICByZXR1cm4gbGVuID4gMCA/IG1pbihsZW4sIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBMZW5ndGhPZkFycmF5TGlrZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxlbmd0aG9mYXJyYXlsaWtlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHRvTGVuZ3RoKG9iai5sZW5ndGgpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT09IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzT3duKGhpZGRlbktleXMsIGtleSkgJiYgaGFzT3duKE8sIGtleSkgJiYgcHVzaChyZXN1bHQsIGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXNPd24oTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcHVzaChyZXN1bHQsIGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQoa2V5cywgZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlLCBleGNlcHRpb25zKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzT3duKHRhcmdldCwga2V5KSAmJiAhKGV4Y2VwdGlvbnMgJiYgaGFzT3duKGV4Y2VwdGlvbnMsIGtleSkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgfVxuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IGlzQ2FsbGFibGUoZGV0ZWN0aW9uKSA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgICAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLmRvbnRDYWxsR2V0U2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuICBvcHRpb25zLm5hbWUgICAgICAgICAgIC0gdGhlIC5uYW1lIG9mIHRoZSBmdW5jdGlvbiBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUga2V5XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdICYmIGdsb2JhbFtUQVJHRVRdLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLmRvbnRDYWxsR2V0U2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zZXQgLS0gc2FmZVxudmFyIFNldFByb3RvdHlwZSA9IFNldC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc2V0IC0tIHNhZmVcbiAgU2V0OiBTZXQsXG4gIGFkZDogdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlLmFkZCksXG4gIGhhczogdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlLmhhcyksXG4gIHJlbW92ZTogdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlWydkZWxldGUnXSksXG4gIHByb3RvOiBTZXRQcm90b3R5cGVcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpLmhhcztcblxuLy8gUGVyZm9ybSA/IFJlcXVpcmVJbnRlcm5hbFNsb3QoTSwgW1tTZXREYXRhXV0pXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBoYXMoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocmVjb3JkLCBmbiwgSVRFUkFUT1JfSU5TVEVBRF9PRl9SRUNPUkQpIHtcbiAgdmFyIGl0ZXJhdG9yID0gSVRFUkFUT1JfSU5TVEVBRF9PRl9SRUNPUkQgPyByZWNvcmQgOiByZWNvcmQuaXRlcmF0b3I7XG4gIHZhciBuZXh0ID0gcmVjb3JkLm5leHQ7XG4gIHZhciBzdGVwLCByZXN1bHQ7XG4gIHdoaWxlICghKHN0ZXAgPSBjYWxsKG5leHQsIGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgIHJlc3VsdCA9IGZuKHN0ZXAudmFsdWUpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xudmFyIFNldEhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKTtcblxudmFyIFNldCA9IFNldEhlbHBlcnMuU2V0O1xudmFyIFNldFByb3RvdHlwZSA9IFNldEhlbHBlcnMucHJvdG87XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZS5mb3JFYWNoKTtcbnZhciBrZXlzID0gdW5jdXJyeVRoaXMoU2V0UHJvdG90eXBlLmtleXMpO1xudmFyIG5leHQgPSBrZXlzKG5ldyBTZXQoKSkubmV4dDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2V0LCBmbiwgaW50ZXJydXB0aWJsZSkge1xuICByZXR1cm4gaW50ZXJydXB0aWJsZSA/IGl0ZXJhdGVTaW1wbGUoeyBpdGVyYXRvcjoga2V5cyhzZXQpLCBuZXh0OiBuZXh0IH0sIGZuKSA6IGZvckVhY2goc2V0LCBmbik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXRlcmF0ZScpO1xuXG52YXIgU2V0ID0gU2V0SGVscGVycy5TZXQ7XG52YXIgYWRkID0gU2V0SGVscGVycy5hZGQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNldCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IFNldCgpO1xuICBpdGVyYXRlKHNldCwgZnVuY3Rpb24gKGl0KSB7XG4gICAgYWRkKHJlc3VsdCwgaXQpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCBtZXRob2QpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG4gICAgcmV0dXJuIHVuY3VycnlUaGlzKGFDYWxsYWJsZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwga2V5KVttZXRob2RdKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWFjY2Vzc29yJyk7XG52YXIgU2V0SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzQWNjZXNzb3IoU2V0SGVscGVycy5wcm90bywgJ3NpemUnLCAnZ2V0JykgfHwgZnVuY3Rpb24gKHNldCkge1xuICByZXR1cm4gc2V0LnNpemU7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIGBHZXRJdGVyYXRvckRpcmVjdChvYmopYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pdGVyYXRvci1oZWxwZXJzLyNzZWMtZ2V0aXRlcmF0b3JkaXJlY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4ge1xuICAgIGl0ZXJhdG9yOiBvYmosXG4gICAgbmV4dDogb2JqLm5leHQsXG4gICAgZG9uZTogZmFsc2VcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgZ2V0SXRlcmF0b3JEaXJlY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLWRpcmVjdCcpO1xuXG52YXIgSU5WQUxJRF9TSVpFID0gJ0ludmFsaWQgc2l6ZSc7XG52YXIgJFJhbmdlRXJyb3IgPSBSYW5nZUVycm9yO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG5cbnZhciBTZXRSZWNvcmQgPSBmdW5jdGlvbiAoc2V0LCBpbnRTaXplKSB7XG4gIHRoaXMuc2V0ID0gc2V0O1xuICB0aGlzLnNpemUgPSBtYXgoaW50U2l6ZSwgMCk7XG4gIHRoaXMuaGFzID0gYUNhbGxhYmxlKHNldC5oYXMpO1xuICB0aGlzLmtleXMgPSBhQ2FsbGFibGUoc2V0LmtleXMpO1xufTtcblxuU2V0UmVjb3JkLnByb3RvdHlwZSA9IHtcbiAgZ2V0SXRlcmF0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0SXRlcmF0b3JEaXJlY3QoYW5PYmplY3QoY2FsbCh0aGlzLmtleXMsIHRoaXMuc2V0KSkpO1xuICB9LFxuICBpbmNsdWRlczogZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGNhbGwodGhpcy5oYXMsIHRoaXMuc2V0LCBpdCk7XG4gIH1cbn07XG5cbi8vIGBHZXRTZXRSZWNvcmRgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNzZWMtZ2V0c2V0cmVjb3JkXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgYW5PYmplY3Qob2JqKTtcbiAgdmFyIG51bVNpemUgPSArb2JqLnNpemU7XG4gIC8vIE5PVEU6IElmIHNpemUgaXMgdW5kZWZpbmVkLCB0aGVuIG51bVNpemUgd2lsbCBiZSBOYU5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgaWYgKG51bVNpemUgIT09IG51bVNpemUpIHRocm93IG5ldyAkVHlwZUVycm9yKElOVkFMSURfU0laRSk7XG4gIHZhciBpbnRTaXplID0gdG9JbnRlZ2VyT3JJbmZpbml0eShudW1TaXplKTtcbiAgaWYgKGludFNpemUgPCAwKSB0aHJvdyBuZXcgJFJhbmdlRXJyb3IoSU5WQUxJRF9TSVpFKTtcbiAgcmV0dXJuIG5ldyBTZXRSZWNvcmQob2JqLCBpbnRTaXplKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG52YXIgY2xvbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWNsb25lJyk7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG5cbnZhciBoYXMgPSBTZXRIZWxwZXJzLmhhcztcbnZhciByZW1vdmUgPSBTZXRIZWxwZXJzLnJlbW92ZTtcblxuLy8gYFNldC5wcm90b3R5cGUuZGlmZmVyZW5jZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkaWZmZXJlbmNlKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIG90aGVyUmVjID0gZ2V0U2V0UmVjb3JkKG90aGVyKTtcbiAgdmFyIHJlc3VsdCA9IGNsb25lKE8pO1xuICBpZiAoc2l6ZShPKSA8PSBvdGhlclJlYy5zaXplKSBpdGVyYXRlU2V0KE8sIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKG90aGVyUmVjLmluY2x1ZGVzKGUpKSByZW1vdmUocmVzdWx0LCBlKTtcbiAgfSk7XG4gIGVsc2UgaXRlcmF0ZVNpbXBsZShvdGhlclJlYy5nZXRJdGVyYXRvcigpLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChoYXMoTywgZSkpIHJlbW92ZShyZXN1bHQsIGUpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbnZhciBjcmVhdGVTZXRMaWtlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIHtcbiAgICBzaXplOiBzaXplLFxuICAgIGhhczogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAga2V5czogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciBTZXQgPSBnZXRCdWlsdEluKCdTZXQnKTtcbiAgdHJ5IHtcbiAgICBuZXcgU2V0KClbbmFtZV0oY3JlYXRlU2V0TGlrZSgwKSk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGxhdGUgc3BlYyBjaGFuZ2UsIGVhcmx5IFdlYktpdCB+IFNhZmFyaSAxNy4wIGJldGEgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgcGFzcyBpdFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHMvcHVsbC84OFxuICAgICAgbmV3IFNldCgpW25hbWVdKGNyZWF0ZVNldExpa2UoLTEpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcjIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZGlmZmVyZW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZGlmZmVyZW5jZScpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuZGlmZmVyZW5jZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6ICFzZXRNZXRob2RBY2NlcHRTZXRMaWtlKCdkaWZmZXJlbmNlJykgfSwge1xuICBkaWZmZXJlbmNlOiBkaWZmZXJlbmNlXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5zZXQuZGlmZmVyZW5jZS52MicpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgU2V0SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpO1xudmFyIHNpemUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNpemUnKTtcbnZhciBnZXRTZXRSZWNvcmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1yZWNvcmQnKTtcbnZhciBpdGVyYXRlU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pdGVyYXRlJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xuXG52YXIgU2V0ID0gU2V0SGVscGVycy5TZXQ7XG52YXIgYWRkID0gU2V0SGVscGVycy5hZGQ7XG52YXIgaGFzID0gU2V0SGVscGVycy5oYXM7XG5cbi8vIGBTZXQucHJvdG90eXBlLmludGVyc2VjdGlvbmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbnRlcnNlY3Rpb24ob3RoZXIpIHtcbiAgdmFyIE8gPSBhU2V0KHRoaXMpO1xuICB2YXIgb3RoZXJSZWMgPSBnZXRTZXRSZWNvcmQob3RoZXIpO1xuICB2YXIgcmVzdWx0ID0gbmV3IFNldCgpO1xuXG4gIGlmIChzaXplKE8pID4gb3RoZXJSZWMuc2l6ZSkge1xuICAgIGl0ZXJhdGVTaW1wbGUob3RoZXJSZWMuZ2V0SXRlcmF0b3IoKSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChoYXMoTywgZSkpIGFkZChyZXN1bHQsIGUpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJhdGVTZXQoTywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChvdGhlclJlYy5pbmNsdWRlcyhlKSkgYWRkKHJlc3VsdCwgZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGludGVyc2VjdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaW50ZXJzZWN0aW9uJyk7XG52YXIgc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtbWV0aG9kLWFjY2VwdC1zZXQtbGlrZScpO1xuXG52YXIgSU5DT1JSRUNUID0gIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ2ludGVyc2VjdGlvbicpIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWZyb20sIGVzL25vLXNldCAtLSB0ZXN0aW5nXG4gIHJldHVybiBTdHJpbmcoQXJyYXkuZnJvbShuZXcgU2V0KFsxLCAyLCAzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsIDJdKSkpKSAhPT0gJzMsMic7XG59KTtcblxuLy8gYFNldC5wcm90b3R5cGUuaW50ZXJzZWN0aW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUIH0sIHtcbiAgaW50ZXJzZWN0aW9uOiBpbnRlcnNlY3Rpb25cbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnNldC5pbnRlcnNlY3Rpb24udjInKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGtpbmQsIHZhbHVlKSB7XG4gIHZhciBpbm5lclJlc3VsdCwgaW5uZXJFcnJvcjtcbiAgYW5PYmplY3QoaXRlcmF0b3IpO1xuICB0cnkge1xuICAgIGlubmVyUmVzdWx0ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAncmV0dXJuJyk7XG4gICAgaWYgKCFpbm5lclJlc3VsdCkge1xuICAgICAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpbm5lclJlc3VsdCA9IGNhbGwoaW5uZXJSZXN1bHQsIGl0ZXJhdG9yKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbm5lckVycm9yID0gdHJ1ZTtcbiAgICBpbm5lclJlc3VsdCA9IGVycm9yO1xuICB9XG4gIGlmIChraW5kID09PSAndGhyb3cnKSB0aHJvdyB2YWx1ZTtcbiAgaWYgKGlubmVyRXJyb3IpIHRocm93IGlubmVyUmVzdWx0O1xuICBhbk9iamVjdChpbm5lclJlc3VsdCk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKS5oYXM7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc0Rpc2pvaW50RnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNTZXQucHJvdG90eXBlLmlzRGlzam9pbnRGcm9tXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIG90aGVyUmVjID0gZ2V0U2V0UmVjb3JkKG90aGVyKTtcbiAgaWYgKHNpemUoTykgPD0gb3RoZXJSZWMuc2l6ZSkgcmV0dXJuIGl0ZXJhdGVTZXQoTywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAob3RoZXJSZWMuaW5jbHVkZXMoZSkpIHJldHVybiBmYWxzZTtcbiAgfSwgdHJ1ZSkgIT09IGZhbHNlO1xuICB2YXIgaXRlcmF0b3IgPSBvdGhlclJlYy5nZXRJdGVyYXRvcigpO1xuICByZXR1cm4gaXRlcmF0ZVNpbXBsZShpdGVyYXRvciwgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoaGFzKE8sIGUpKSByZXR1cm4gaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ25vcm1hbCcsIGZhbHNlKTtcbiAgfSkgIT09IGZhbHNlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc0Rpc2pvaW50RnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXMtZGlzam9pbnQtZnJvbScpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNEaXNqb2ludEZyb21gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnaXNEaXNqb2ludEZyb20nKSB9LCB7XG4gIGlzRGlzam9pbnRGcm9tOiBpc0Rpc2pvaW50RnJvbVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc2V0LmlzLWRpc2pvaW50LWZyb20udjInKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXNldCcpO1xudmFyIHNpemUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNpemUnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pdGVyYXRlJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmlzU3Vic2V0T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXQtbWV0aG9kcy8jU2V0LnByb3RvdHlwZS5pc1N1YnNldE9mXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzU3Vic2V0T2Yob3RoZXIpIHtcbiAgdmFyIE8gPSBhU2V0KHRoaXMpO1xuICB2YXIgb3RoZXJSZWMgPSBnZXRTZXRSZWNvcmQob3RoZXIpO1xuICBpZiAoc2l6ZShPKSA+IG90aGVyUmVjLnNpemUpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGl0ZXJhdGUoTywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIW90aGVyUmVjLmluY2x1ZGVzKGUpKSByZXR1cm4gZmFsc2U7XG4gIH0sIHRydWUpICE9PSBmYWxzZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNTdWJzZXRPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXMtc3Vic2V0LW9mJyk7XG52YXIgc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtbWV0aG9kLWFjY2VwdC1zZXQtbGlrZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pc1N1YnNldE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ2lzU3Vic2V0T2YnKSB9LCB7XG4gIGlzU3Vic2V0T2Y6IGlzU3Vic2V0T2Zcbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnNldC5pcy1zdWJzZXQtb2YudjInKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXNldCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpLmhhcztcbnZhciBzaXplID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zaXplJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNTdXBlcnNldE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0LW1ldGhvZHMvI1NldC5wcm90b3R5cGUuaXNTdXBlcnNldE9mXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzU3VwZXJzZXRPZihvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBvdGhlclJlYyA9IGdldFNldFJlY29yZChvdGhlcik7XG4gIGlmIChzaXplKE8pIDwgb3RoZXJSZWMuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICB2YXIgaXRlcmF0b3IgPSBvdGhlclJlYy5nZXRJdGVyYXRvcigpO1xuICByZXR1cm4gaXRlcmF0ZVNpbXBsZShpdGVyYXRvciwgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIWhhcyhPLCBlKSkgcmV0dXJuIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICdub3JtYWwnLCBmYWxzZSk7XG4gIH0pICE9PSBmYWxzZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNTdXBlcnNldE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pcy1zdXBlcnNldC1vZicpO1xudmFyIHNldE1ldGhvZEFjY2VwdFNldExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNTdXBlcnNldE9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ2lzU3VwZXJzZXRPZicpIH0sIHtcbiAgaXNTdXBlcnNldE9mOiBpc1N1cGVyc2V0T2Zcbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnNldC5pcy1zdXBlcnNldC1vZi52MicpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgU2V0SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpO1xudmFyIGNsb25lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1jbG9uZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTaW1wbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZS1zaW1wbGUnKTtcblxudmFyIGFkZCA9IFNldEhlbHBlcnMuYWRkO1xudmFyIGhhcyA9IFNldEhlbHBlcnMuaGFzO1xudmFyIHJlbW92ZSA9IFNldEhlbHBlcnMucmVtb3ZlO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5zeW1tZXRyaWNEaWZmZXJlbmNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2Uob3RoZXIpIHtcbiAgdmFyIE8gPSBhU2V0KHRoaXMpO1xuICB2YXIga2V5c0l0ZXIgPSBnZXRTZXRSZWNvcmQob3RoZXIpLmdldEl0ZXJhdG9yKCk7XG4gIHZhciByZXN1bHQgPSBjbG9uZShPKTtcbiAgaXRlcmF0ZVNpbXBsZShrZXlzSXRlciwgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoaGFzKE8sIGUpKSByZW1vdmUocmVzdWx0LCBlKTtcbiAgICBlbHNlIGFkZChyZXN1bHQsIGUpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgc3ltbWV0cmljRGlmZmVyZW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3ltbWV0cmljLWRpZmZlcmVuY2UnKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnN5bW1ldHJpY0RpZmZlcmVuY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnc3ltbWV0cmljRGlmZmVyZW5jZScpIH0sIHtcbiAgc3ltbWV0cmljRGlmZmVyZW5jZTogc3ltbWV0cmljRGlmZmVyZW5jZVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc2V0LnN5bW1ldHJpYy1kaWZmZXJlbmNlLnYyJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBhZGQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKS5hZGQ7XG52YXIgY2xvbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWNsb25lJyk7XG52YXIgZ2V0U2V0UmVjb3JkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1zZXQtcmVjb3JkJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS51bmlvbmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB1bmlvbihvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBrZXlzSXRlciA9IGdldFNldFJlY29yZChvdGhlcikuZ2V0SXRlcmF0b3IoKTtcbiAgdmFyIHJlc3VsdCA9IGNsb25lKE8pO1xuICBpdGVyYXRlU2ltcGxlKGtleXNJdGVyLCBmdW5jdGlvbiAoaXQpIHtcbiAgICBhZGQocmVzdWx0LCBpdCk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB1bmlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdW5pb24nKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLnVuaW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ3VuaW9uJykgfSwge1xuICB1bmlvbjogdW5pb25cbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnNldC51bmlvbi52MicpO1xuIiwgIi8qKlxuICogQG5hbWUgV2lraXBsdXMtaGlnaGxpZ2h0IFdpa2lwbHVz57yW6L6R5Zmo55qEQ29kZU1pcnJvcuivreazlemrmOS6ruaJqeWxlVxuICogQGF1dGhvciBCaHNkIDxodHRwczovL2dpdGh1Yi5jb20vYmhzZC1oYXJyeT5cbiAqIEBsaWNlbnNlIEdQTC0zLjBcbiAqL1xuXG5kZWNsYXJlIGludGVyZmFjZSBXUEhMIHtcblx0dmVyc2lvbj86IHN0cmluZztcblx0Y21WZXJzaW9uPzogc3RyaW5nO1xufVxuXG4oKCk6IHZvaWQgPT4ge1xuXHRjb25zdCB7bGlic30gPSBtdyBhcyB7bGliczoge3dwaGw/OiBXUEhMfX0sXG5cdFx0e3dwaGx9ID0gbGlicztcblx0aWYgKHdwaGw/LnZlcnNpb24pIHtcblx0XHRyZXR1cm47XG5cdH1cblx0Y29uc3QgdmVyc2lvbiA9ICczLjIuMic7XG5cdGxpYnMud3BobCA9IHt2ZXJzaW9uLCAuLi53cGhsfTsgLy8g5byA5aeL5Yqg6L29XG5cblx0Ly8g6Lev5b6EXG5cdGNvbnN0IENETiA9ICcvL3Rlc3RpbmdjZi5qc2RlbGl2ci5uZXQnLFxuXHRcdE1XX0NETiA9IGBucG0vQGJoc2QvY29kZW1pcnJvci1tZWRpYXdpa2lAJHtsaWJzLndwaGwuY21WZXJzaW9uIHx8ICdsYXRlc3QnfS9kaXN0L213Lm1pbi5qc2AsXG5cdFx0UkVQT19DRE4gPSAnbnBtL3dpa2lwbHVzLWhpZ2hsaWdodCc7XG5cblx0d2luZG93LkNvZGVNaXJyb3I2IHx8PSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuXHRcdHNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuXHRcdFx0cmVzb2x2ZShDb2RlTWlycm9yNik7XG5cdFx0fSk7XG5cdFx0c2NyaXB0LnR5cGUgPSAnbW9kdWxlJztcblx0XHRzY3JpcHQuc3JjID0gYCR7Q0ROfS8ke01XX0NETn1gO1xuXHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kKHNjcmlwdCk7XG5cdH0pO1xuXG5cdGNvbnN0IHt3Z1BhZ2VOYW1lOiBwYWdlLCB3Z05hbWVzcGFjZU51bWJlcjogbnMsIHdnUGFnZUNvbnRlbnRNb2RlbDogY29udGVudG1vZGVsfSA9IG13LmNvbmZpZy5nZXQoKTtcblxuXHRjb25zdCBDT05URU5UTU9ERUxTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdFx0J3Nhbml0aXplZC1jc3MnOiAnY3NzJyxcblx0XHRcdHdpa2l0ZXh0OiAnbWVkaWF3aWtpJyxcblx0XHR9LFxuXHRcdEVYVFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFx0XHRjc3M6ICdjc3MnLFxuXHRcdFx0anM6ICdqYXZhc2NyaXB0Jyxcblx0XHRcdGpzb246ICdqc29uJyxcblx0XHR9LFxuXHRcdE5BTUVTUEFDRVM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG5cdFx0XHQ4Mjg6ICdsdWEnLFxuXHRcdFx0Mjc0OiAnaHRtbCcsXG5cdFx0fTtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRjb25zdCBnZXRPYmplY3QgPSAoa2V5OiBzdHJpbmcpOiBhbnkgPT4ge1xuXHRcdHJldHVybiBKU09OLnBhcnNlKFN0cmluZyhsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKSk7XG5cdH07XG5cblx0LyoqXG5cdCAqIOajgOafpemhtemdouivreiogOexu+Wei1xuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUg6aG16Z2i5YaF5a65XG5cdCAqL1xuXHRjb25zdCBnZXRQYWdlTW9kZSA9IGFzeW5jICh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxbc3RyaW5nLCAobnVtYmVyIHwgdW5kZWZpbmVkKT9dPiA9PiB7XG5cdFx0aWYgKHR5cGVvZiBfV2lraXBsdXNQYWdlcyA9PT0gJ29iamVjdCcpIHtcblx0XHRcdGNvbnN0IHBhZ2VzID0gT2JqZWN0LnZhbHVlcyhfV2lraXBsdXNQYWdlcykuZmlsdGVyKCh7c2VjdGlvbkNhY2hlfSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhzZWN0aW9uQ2FjaGUpLmluY2x1ZGVzKHZhbHVlKTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRwYWdlcy5zb21lKCh7dGl0bGV9KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuICF0aXRsZS5lbmRzV2l0aCgnL2RvYycpO1xuXHRcdFx0XHR9KVxuXHRcdFx0KSB7XG5cdFx0XHRcdGF3YWl0IG13LmxvYWRlci51c2luZygnbWVkaWF3aWtpLlRpdGxlJyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBtb2RlcyA9IG5ldyBTZXQoXG5cdFx0XHRcdHBhZ2VzLm1hcCgoe3RpdGxlfSkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aXRsZS5lbmRzV2l0aCgnL2RvYycpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ3RlbXBsYXRlJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgdCA9IG5ldyBtdy5UaXRsZSh0aXRsZSksXG5cdFx0XHRcdFx0XHRuYW1lc3BhY2UgPSB0LmdldE5hbWVzcGFjZUlkKCk7XG5cdFx0XHRcdFx0aWYgKG5hbWVzcGFjZSAlIDIpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnbWVkaWF3aWtpJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgbW9kZSA9IEVYVFNbdC5nZXRFeHRlbnNpb24oKT8udG9Mb3dlckNhc2UoKSB8fCAnJ10gfHwgTkFNRVNQQUNFU1tuYW1lc3BhY2VdO1xuXHRcdFx0XHRcdGlmIChtb2RlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbW9kZSA9PT0gJ2phdmFzY3JpcHQnICYmIChuYW1lc3BhY2UgPT09IDggfHwgbmFtZXNwYWNlID09PSAyMzAwKSA/ICdnYWRnZXQnIDogbW9kZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG5hbWVzcGFjZSA9PT0gMTAgfHwgbmFtZXNwYWNlID09PSAyID8gJ3RlbXBsYXRlJyA6ICdtZWRpYXdpa2knO1xuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHRcdGlmIChtb2Rlcy5zaXplID09PSAxKSB7XG5cdFx0XHRcdGNvbnN0IFttb2RlXSA9IG1vZGVzO1xuXHRcdFx0XHRpZiAobW9kZSA9PT0gJ2dhZGdldCcpIHtcblx0XHRcdFx0XHRyZXR1cm4gWydqYXZhc2NyaXB0JywgOF07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG1vZGUgPT09ICd0ZW1wbGF0ZScgPyBbJ21lZGlhd2lraScsIDEwXSA6IFttb2RlIV07XG5cdFx0XHR9IGVsc2UgaWYgKG1vZGVzLnNpemUgPT09IDIpIHtcblx0XHRcdFx0aWYgKG1vZGVzLmhhcygnamF2YXNjcmlwdCcpICYmIG1vZGVzLmhhcygnZ2FkZ2V0JykpIHtcblx0XHRcdFx0XHRyZXR1cm4gWydqYXZhc2NyaXB0J107XG5cdFx0XHRcdH0gZWxzZSBpZiAobW9kZXMuaGFzKCdtZWRpYXdpa2knKSAmJiBtb2Rlcy5oYXMoJ3RlbXBsYXRlJykpIHtcblx0XHRcdFx0XHRyZXR1cm4gWydtZWRpYXdpa2knXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoKG5zICE9PSAyNzQgJiYgY29udGVudG1vZGVsICE9PSAnU2NyaWJ1bnRvJykgfHwgcGFnZS5lbmRzV2l0aCgnL2RvYycpKSB7XG5cdFx0XHRyZXR1cm4gW0NPTlRFTlRNT0RFTFNbY29udGVudG1vZGVsXSB8fCBjb250ZW50bW9kZWwsIGNvbnRlbnRtb2RlbCA9PT0gJ2phdmFzY3JpcHQnID8gbnMgOiB1bmRlZmluZWRdO1xuXHRcdH1cblx0XHRhd2FpdCBtdy5sb2FkZXIudXNpbmcoJ29vanMtdWktd2luZG93cycpO1xuXHRcdGlmIChcblx0XHRcdGF3YWl0IE9PLnVpLmNvbmZpcm0obXcubXNnKCdjbS1tdy1jb250ZW50bW9kZWwnKSwge1xuXHRcdFx0XHRhY3Rpb25zOiBbe2xhYmVsOiBucyA9PT0gMjc0ID8gJ1dpZGdldCcgOiAnTHVhJ30sIHtsYWJlbDogJ1dpa2l0ZXh0JywgYWN0aW9uOiAnYWNjZXB0J31dLFxuXHRcdFx0fSlcblx0XHQpIHtcblx0XHRcdHJldHVybiBbJ21lZGlhd2lraSddO1xuXHRcdH1cblx0XHRyZXR1cm4gW25zID09PSAyNzQgPyAnaHRtbCcgOiAnbHVhJ107XG5cdH07XG5cblx0Y29uc3Qgc3VibWl0ID0gLyoqIOaPkOS6pOe8lui+kSAqLyAoKTogdHJ1ZSA9PiB7XG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjV2lraXBsdXMtUXVpY2tlZGl0LVN1Ym1pdCcpIS5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycpKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cdFx0c3VibWl0TWlub3IgPSAvKiog5o+Q5Lqk5bCP57yW6L6RICovICgpOiB0cnVlID0+IHtcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTElucHV0RWxlbWVudD4oJyNXaWtpcGx1cy1RdWlja2VkaXQtTWlub3JFZGl0JykhLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIHN1Ym1pdCgpO1xuXHRcdH0sXG5cdFx0ZXNjYXBlRWRpdCA9IC8qKiDmjInkuItFc2PplK7pgIDlh7rnvJbovpEgKi8gKCk6IHRydWUgPT4ge1xuXHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI1dpa2lwbHVzLVF1aWNrZWRpdC1CYWNrJykhLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJykpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fTtcblxuXHQvKipcblx0ICog5riy5p+T57yW6L6R5ZmoXG5cdCAqXG5cdCAqIEBwYXJhbSB7SlF1ZXJ5fSAkdGFyZ2V0IOebruagh+e8lui+keahhlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHNldHRpbmcg5piv5ZCm5pivV2lraXBsdXPorr7nva7vvIjkvb/nlKhqc29u6K+t5rOV77yJXG5cdCAqL1xuXHRjb25zdCByZW5kZXJFZGl0b3IgPSBhc3luYyAoJHRhcmdldDogSlF1ZXJ5PEhUTUxUZXh0QXJlYUVsZW1lbnQ+LCBzZXR0aW5nOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbCA9IGdldE9iamVjdCgnV2lraXBsdXNfU2V0dGluZ3MnKSxcblx0XHRcdGVzY1RvRXhpdFF1aWNrRWRpdCA9IHNldHRpbmdzICYmIChzZXR0aW5nc1snZXNjX3RvX2V4aXRfcXVpY2tlZGl0J10gfHwgc2V0dGluZ3NbJ2VzY1RvRXhpdFF1aWNrRWRpdCddKSxcblx0XHRcdGVzYyA9IGVzY1RvRXhpdFF1aWNrRWRpdCA9PT0gdHJ1ZSB8fCBlc2NUb0V4aXRRdWlja0VkaXQgPT09ICd0cnVlJztcblxuXHRcdGNvbnN0IGNtID0gYXdhaXQgKFxuXHRcdFx0YXdhaXQgQ29kZU1pcnJvcjZcblx0XHQpLmZyb21UZXh0QXJlYSgkdGFyZ2V0WzBdISwgLi4uKHNldHRpbmcgPyAoWydqc29uJ10gYXMgW3N0cmluZ10pIDogYXdhaXQgZ2V0UGFnZU1vZGUoJHRhcmdldC52YWwoKSEpKSk7XG5cdFx0KGNtLnZpZXc/LmRvbSB8fCBjbS5lZGl0b3IhLmdldERvbU5vZGUoKSEpLmlkID0gJ1dpa2lwbHVzLUNvZGVNaXJyb3InO1xuXG5cdFx0aWYgKCFzZXR0aW5nKSB7XG5cdFx0XHQvLyDmma7pgJpXaWtpcGx1c+e8lui+keWMulxuXHRcdFx0aWYgKGNtLmVkaXRvcikge1xuXHRcdFx0XHRjbS5lZGl0b3Iub25LZXlEb3duKChlKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGUua2V5Q29kZSA9PT0gbW9uYWNvLktleUNvZGUuS2V5UyAmJiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkpIHtcblx0XHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdGlmIChlLnNoaWZ0S2V5KSB7XG5cdFx0XHRcdFx0XHRcdHN1Ym1pdE1pbm9yKCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRzdWJtaXQoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2UgaWYgKGUua2V5Q29kZSA9PT0gbW9uYWNvLktleUNvZGUuRXNjYXBlICYmIGVzYykge1xuXHRcdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdFx0ZXNjYXBlRWRpdCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbS5leHRyYUtleXMoW1xuXHRcdFx0XHRcdHtrZXk6ICdNb2QtUycsIHJ1bjogc3VibWl0fSxcblx0XHRcdFx0XHR7a2V5OiAnU2hpZnQtTW9kLVMnLCBydW46IHN1Ym1pdE1pbm9yfSxcblx0XHRcdFx0XHQuLi4oZXNjID8gW3trZXk6ICdFc2MnLCBydW46IGVzY2FwZUVkaXR9XSA6IFtdKSxcblx0XHRcdFx0XSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyoqIEB0b2RvIOS7peS4i+i/h+a4oeS7o+eggea3u+WKoOS6jjIwMjQtMDItMDfvvIzlsIbkuo7kuIDmrrXml7bpl7TlkI7lvIPnlKggKi9cblx0XHRjb25zdCBvbGRLZXkgPSAnV2lraXBsdXMtaGlnaGxpZ2h0LWFkZG9ucycsXG5cdFx0XHRvbGRQcmVmczogc3RyaW5nW10gfCBudWxsID0gZ2V0T2JqZWN0KG9sZEtleSksXG5cdFx0XHRtYXBwaW5nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdFx0XHRhY3RpdmVMaW5lOiAnaGlnaGxpZ2h0QWN0aXZlTGluZScsXG5cdFx0XHRcdHRyYWlsaW5nc3BhY2U6ICdoaWdobGlnaHRUcmFpbGluZ1doaXRlc3BhY2UnLFxuXHRcdFx0XHRtYXRjaEJyYWNrZXRzOiAnYnJhY2tldE1hdGNoaW5nJyxcblx0XHRcdFx0Y2xvc2VCcmFja2V0czogJ2Nsb3NlQnJhY2tldHMnLFxuXHRcdFx0XHRtYXRjaFRhZ3M6ICd0YWdNYXRjaGluZycsXG5cdFx0XHRcdGZvbGQ6ICdjb2RlRm9sZGluZycsXG5cdFx0XHRcdHdpa2lFZGl0b3I6ICd3aWtpRWRpdG9yJyxcblx0XHRcdFx0ZXNjYXBlOiAnZXNjYXBlJyxcblx0XHRcdFx0Y29udGV4dG1lbnU6ICdvcGVuTGlua3MnLFxuXHRcdFx0XHRsaW50OiAnbGludCcsXG5cdFx0XHR9O1xuXHRcdGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG9sZEtleSk7XG5cdFx0aWYgKG9sZFByZWZzKSB7XG5cdFx0XHRjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHRydWU+ID0ge307XG5cdFx0XHRmb3IgKGNvbnN0IGsgb2Ygb2xkUHJlZnMpIHtcblx0XHRcdFx0aWYgKGsgaW4gbWFwcGluZykge1xuXHRcdFx0XHRcdG9ialttYXBwaW5nW2tdIV0gPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjbS5wcmVmZXIob2JqKTtcblx0XHR9XG5cblx0XHRjb25zdCBqdW1wID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MQW5jaG9yRWxlbWVudD4oJyNXaWtpcGx1cy1RdWlja2VkaXQtSnVtcCA+IGEnKTtcblx0XHRpZiAoanVtcCkge1xuXHRcdFx0anVtcC5ocmVmID0gJyNXaWtpcGx1cy1Db2RlTWlycm9yJztcblx0XHR9XG5cdH07XG5cblx0Ly8g55uR6KeGIFdpa2lwbHVzIOe8lui+keahhlxuXHRjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChyZWNvcmRzKSA9PiB7XG5cdFx0Y29uc3QgJGVkaXRBcmVhID0gJChcblx0XHRcdHJlY29yZHMuZmxhdE1hcCgoe2FkZGVkTm9kZXN9KSA9PiB7XG5cdFx0XHRcdHJldHVybiBbLi4uYWRkZWROb2Rlc107XG5cdFx0XHR9KVxuXHRcdCkuZmluZDxIVE1MVGV4dEFyZWFFbGVtZW50PignI1dpa2lwbHVzLVF1aWNrZWRpdCwgI1dpa2lwbHVzLVNldHRpbmctSW5wdXQnKTtcblx0XHRpZiAoJGVkaXRBcmVhLmxlbmd0aCA+IDApIHtcblx0XHRcdHZvaWQgcmVuZGVyRWRpdG9yKCRlZGl0QXJlYSwgJGVkaXRBcmVhLmF0dHIoJ2lkJykgPT09ICdXaWtpcGx1cy1TZXR0aW5nLUlucHV0Jyk7XG5cdFx0fVxuXHR9KTtcblx0b2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hpbGRMaXN0OiB0cnVlfSk7XG5cblx0bXcubG9hZGVyLmxvYWQoYCR7Q0ROfS8ke1JFUE9fQ0ROfUAke3ZlcnNpb259L3N0eWxlcy5taW4uY3NzYCwgJ3RleHQvY3NzJyk7XG59KSgpO1xuXG5leHBvcnQge307XG4iLCAiaW1wb3J0IHtpbml0TXdBcGl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbmNvbnN0IGFwaTogbXcuQXBpID0gaW5pdE13QXBpKCdXaWtpcGx1cy1oaWdobGlnaHQvMi4wJyk7XG5cbmV4cG9ydCB7YXBpfTtcbiIsICJpbXBvcnQge2FwaX0gZnJvbSAnLi9hcGknO1xuXG5jb25zdCBjaGVja0RlcGVuZGVuY2llcyA9IGFzeW5jICgpID0+IHtcblx0aWYgKCFtdy51c2VyLm9wdGlvbnMuZ2V0KCdnYWRnZXQtV2lraXBsdXMnKSkge1xuXHRcdHZvaWQgYXBpLnBvc3RXaXRoRWRpdFRva2VuKHtcblx0XHRcdGFjdGlvbjogJ29wdGlvbnMnLFxuXHRcdFx0Y2hhbmdlOiAnZ2FkZ2V0LVdpa2lwbHVzPTEnLFxuXHRcdH0gYXMgQXBpT3B0aW9uc1BhcmFtcyk7XG5cblx0XHRhd2FpdCBtdy5sb2FkZXIudXNpbmcoJ2V4dC5nYWRnZXQuV2lraXBsdXMnKTtcblx0fVxufTtcblxuZXhwb3J0IHtjaGVja0RlcGVuZGVuY2llc307XG4iLCAiaW1wb3J0IHtjaGVja0RlcGVuZGVuY2llc30gZnJvbSAnLi9tb2R1bGVzL2NoZWNrRGVwZW5kZW5jaWVzJztcblxuKGFzeW5jIGZ1bmN0aW9uIFdpa2lwbHVzSGlnaGxpZ2h0KCkge1xuXHR2b2lkIGNoZWNrRGVwZW5kZW5jaWVzKCk7XG5cdGNvbnN0IHt3Z0FjdGlvbiwgd2dJc0FydGljbGV9ID0gbXcuY29uZmlnLmdldCgpO1xuXHRpZiAod2dBY3Rpb24gIT09ICd2aWV3JyB8fCAhd2dJc0FydGljbGUpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB7J3Zpc3VhbGVkaXRvci1lbmFibGUnOiBpc1ZlRW5hYmxlfSA9IG13LnVzZXIub3B0aW9ucy5nZXQoKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHQvKiBzZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9XaWtpcGx1cy9XaWtpcGx1cy9pc3N1ZXMvNjU+ICovXG5cdGlmIChpc1ZlRW5hYmxlKSB7XG5cdFx0YXdhaXQgbXcubG9hZGVyLnVzaW5nKCdleHQudmlzdWFsRWRpdG9yLmNvcmUnKTtcblx0fVxuXG5cdGlmICghKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50KSkge1xuXHRcdGF3YWl0IGltcG9ydCgnLi9tb2R1bGVzL2hpZ2hsaWdodCcpO1xuXHR9XG59KSgpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBLHdGQUFBQSxTQUFBO0FBQUE7QUFDQSxRQUFJLFFBQVEsU0FBVSxJQUFJO0FBQ3hCLGFBQU8sTUFBTSxHQUFHLFNBQVMsUUFBUTtBQUFBLElBQ25DO0FBR0EsSUFBQUEsUUFBTztBQUFBLElBRUwsTUFBTSxPQUFPLGNBQWMsWUFBWSxVQUFVLEtBQ2pELE1BQU0sT0FBTyxVQUFVLFlBQVksTUFBTTtBQUFBLElBRXpDLE1BQU0sT0FBTyxRQUFRLFlBQVksSUFBSSxL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YjsiLAogICJuYW1lcyI6IFsibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIlN5bWJvbCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiZG9jdW1lbnQiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiVHlwZUVycm9yIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJTZXQiLCAibW9kdWxlIiwgIlNldCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJTZXQiLCAiJCIsICJtb2R1bGUiLCAiU2V0IiwgIiQiLCAibW9kdWxlIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgImhpZ2hsaWdodF9leHBvcnRzIiwgImluaXRfaGlnaGxpZ2h0IiwgIl9fZXNtIiwgIl93aW5kb3ciLCAibGlicyIsICJtdyIsICJ3cGhsIiwgInZlcnNpb24iLCAiQ0ROIiwgIk1XX0NETiIsICJjb25jYXQiLCAiY21WZXJzaW9uIiwgIlJFUE9fQ0ROIiwgIndpbmRvdyIsICJDb2RlTWlycm9yNiIsICJQcm9taXNlIiwgInJlc29sdmUiLCAic2NyaXB0IiwgImRvY3VtZW50IiwgImNyZWF0ZUVsZW1lbnQiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJ0eXBlIiwgInNyYyIsICJoZWFkIiwgImFwcGVuZCIsICJ3Z1BhZ2VOYW1lIiwgInBhZ2UiLCAid2dOYW1lc3BhY2VOdW1iZXIiLCAibnMiLCAid2dQYWdlQ29udGVudE1vZGVsIiwgImNvbnRlbnRtb2RlbCIsICJjb25maWciLCAiZ2V0IiwgIkNPTlRFTlRNT0RFTFMiLCAid2lraXRleHQiLCAiRVhUUyIsICJjc3MiLCAianMiLCAianNvbiIsICJOQU1FU1BBQ0VTIiwgImdldE9iamVjdCIsICJrZXkiLCAiSlNPTiIsICJwYXJzZSIsICJTdHJpbmciLCAibG9jYWxTdG9yYWdlIiwgImdldEl0ZW0iLCAiZ2V0UGFnZU1vZGUiLCAiX3JlZiIsICJfYXN5bmNUb0dlbmVyYXRvciIsICJ2YWx1ZSIsICJfV2lraXBsdXNQYWdlcyIsICJwYWdlcyIsICJPYmplY3QiLCAidmFsdWVzIiwgImZpbHRlciIsICJzZWN0aW9uQ2FjaGUiLCAiaW5jbHVkZXMiLCAic29tZSIsICJ0aXRsZSIsICJlbmRzV2l0aCIsICJsb2FkZXIiLCAidXNpbmciLCAibW9kZXMiLCAiU2V0IiwgIm1hcCIsICJfdCRnZXRFeHRlbnNpb24iLCAidCIsICJUaXRsZSIsICJuYW1lc3BhY2UiLCAiZ2V0TmFtZXNwYWNlSWQiLCAibW9kZSIsICJnZXRFeHRlbnNpb24iLCAidG9Mb3dlckNhc2UiLCAic2l6ZSIsICJoYXMiLCAiT08iLCAidWkiLCAiY29uZmlybSIsICJtc2ciLCAiYWN0aW9ucyIsICJsYWJlbCIsICJhY3Rpb24iLCAiX3giLCAiYXBwbHkiLCAiYXJndW1lbnRzIiwgInN1Ym1pdCIsICJxdWVyeVNlbGVjdG9yIiwgImRpc3BhdGNoRXZlbnQiLCAiTW91c2VFdmVudCIsICJzdWJtaXRNaW5vciIsICJjaGVja2VkIiwgImVzY2FwZUVkaXQiLCAicmVuZGVyRWRpdG9yIiwgIl9yZWYyIiwgIiR0YXJnZXQiLCAic2V0dGluZyIsICJfY20kdmlldyIsICJzZXR0aW5ncyIsICJlc2NUb0V4aXRRdWlja0VkaXQiLCAiZXNjIiwgImNtIiwgImZyb21UZXh0QXJlYSIsICJ2YWwiLCAidmlldyIsICJkb20iLCAiZWRpdG9yIiwgImdldERvbU5vZGUiLCAiaWQiLCAib25LZXlEb3duIiwgImUiLCAia2V5Q29kZSIsICJtb25hY28iLCAiS2V5Q29kZSIsICJLZXlTIiwgImN0cmxLZXkiLCAibWV0YUtleSIsICJwcmV2ZW50RGVmYXVsdCIsICJzaGlmdEtleSIsICJFc2NhcGUiLCAiZXh0cmFLZXlzIiwgInJ1biIsICJvbGRLZXkiLCAib2xkUHJlZnMiLCAibWFwcGluZyIsICJhY3RpdmVMaW5lIiwgInRyYWlsaW5nc3BhY2UiLCAibWF0Y2hCcmFja2V0cyIsICJjbG9zZUJyYWNrZXRzIiwgIm1hdGNoVGFncyIsICJmb2xkIiwgIndpa2lFZGl0b3IiLCAiZXNjYXBlIiwgImNvbnRleHRtZW51IiwgImxpbnQiLCAicmVtb3ZlSXRlbSIsICJvYmoiLCAiX2l0ZXJhdG9yIiwgIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwgIl9zdGVwIiwgInMiLCAibiIsICJkb25lIiwgImsiLCAiZXJyIiwgImYiLCAicHJlZmVyIiwgImp1bXAiLCAiaHJlZiIsICJfeDIiLCAiX3gzIiwgIm9ic2VydmVyIiwgIk11dGF0aW9uT2JzZXJ2ZXIiLCAicmVjb3JkcyIsICIkZWRpdEFyZWEiLCAiJCIsICJmbGF0TWFwIiwgImFkZGVkTm9kZXMiLCAiZmluZCIsICJsZW5ndGgiLCAiYXR0ciIsICJvYnNlcnZlIiwgImJvZHkiLCAiY2hpbGRMaXN0IiwgImxvYWQiLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAicmVxdWlyZSIsICJhcGkiLCAiaW5pdE13QXBpIiwgImNoZWNrRGVwZW5kZW5jaWVzIiwgIl9yZWYzIiwgInVzZXIiLCAib3B0aW9ucyIsICJwb3N0V2l0aEVkaXRUb2tlbiIsICJjaGFuZ2UiLCAid2dBY3Rpb24iLCAid2dJc0FydGljbGUiLCAiaXNWZUVuYWJsZSIsICJ0aGVuIiwgIldpa2lwbHVzSGlnaGxpZ2h0IiwgIl9XaWtpcGx1c0hpZ2hsaWdodCJdCn0K +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwtdGhpcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWhlbHBlcnMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXNldC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtY2xvbmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc2l6ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1kaXJlY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc2V0LXJlY29yZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1kaWZmZXJlbmNlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LW1ldGhvZC1hY2NlcHQtc2V0LWxpa2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LmRpZmZlcmVuY2UudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaW50ZXJzZWN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pbnRlcnNlY3Rpb24udjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1pcy1kaXNqb2ludC1mcm9tLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pcy1kaXNqb2ludC1mcm9tLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWlzLXN1YnNldC1vZi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuaXMtc3Vic2V0LW9mLnYyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWlzLXN1cGVyc2V0LW9mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnNldC5pcy1zdXBlcnNldC1vZi52Mi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1zeW1tZXRyaWMtZGlmZmVyZW5jZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zZXQuc3ltbWV0cmljLWRpZmZlcmVuY2UudjIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdW5pb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc2V0LnVuaW9uLnYyLmpzIiwgInNyYy9XaWtpcGx1cy1oaWdobGlnaHQvbW9kdWxlcy9oaWdobGlnaHQudHMiLCAic3JjL1dpa2lwbHVzLWhpZ2hsaWdodC9tb2R1bGVzL2FwaS50cyIsICJzcmMvV2lraXBsdXMtaGlnaGxpZ2h0L21vZHVsZXMvY2hlY2tEZXBlbmRlbmNpZXMudHMiLCAic3JjL1dpa2lwbHVzLWhpZ2hsaWdodC9XaWtpcGx1cy1oaWdobGlnaHQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIGNoZWNrKHR5cGVvZiB0aGlzID09ICdvYmplY3QnICYmIHRoaXMpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIERldGVjdCBJRTgncyBpbmNvbXBsZXRlIGRlZmluZVByb3BlcnR5IGltcGxlbWVudGF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgMSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSlbMV0gIT09IDc7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZnVuY3Rpb24tcHJvdG90eXBlLWJpbmQgLS0gc2FmZVxuICB2YXIgdGVzdCA9IChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pLmJpbmQoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiB0eXBlb2YgdGVzdCAhPSAnZnVuY3Rpb24nIHx8IHRlc3QuaGFzT3duUHJvcGVydHkoJ3Byb3RvdHlwZScpO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBOYXNob3JuIH4gSkRLOCBidWdcbnZhciBOQVNIT1JOX0JVRyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiAhJHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiAhJE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09PSAnU3RyaW5nJyA/IHNwbGl0KGl0LCAnJykgOiAkT2JqZWN0KGl0KTtcbn0gOiAkT2JqZWN0O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIHdlIGNhbid0IHVzZSBqdXN0IGBpdCA9PSBudWxsYCBzaW5jZSBvZiBgZG9jdW1lbnQuYWxsYCBzcGVjaWFsIGNhc2Vcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3QtYWVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IG51bGwgfHwgaXQgPT09IHVuZGVmaW5lZDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90XG52YXIgZG9jdW1lbnRBbGwgPSB0eXBlb2YgZG9jdW1lbnQgPT0gJ29iamVjdCcgJiYgZG9jdW1lbnQuYWxsO1xuXG4vLyBgSXNDYWxsYWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWQgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIGRvY3VtZW50QWxsID09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50QWxsICE9PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PSAnZnVuY3Rpb24nIHx8IGFyZ3VtZW50ID09PSBkb2N1bWVudEFsbDtcbn0gOiBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PSAnZnVuY3Rpb24nO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiBpc0NhbGxhYmxlKGl0KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsVGhpc1tuYW1lc3BhY2VdKSA6IGdsb2JhbFRoaXNbbmFtZXNwYWNlXSAmJiBnbG9iYWxUaGlzW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKHt9LmlzUHJvdG90eXBlT2YpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbnZhciBuYXZpZ2F0b3IgPSBnbG9iYWxUaGlzLm5hdmlnYXRvcjtcbnZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudDtcblxubW9kdWxlLmV4cG9ydHMgPSB1c2VyQWdlbnQgPyBTdHJpbmcodXNlckFnZW50KSA6ICcnO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbFRoaXMuRGVubztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucyB8fCBEZW5vICYmIERlbm8udmVyc2lvbjtcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICAvLyBpbiBvbGQgQ2hyb21lLCB2ZXJzaW9ucyBvZiBWOCBpc24ndCBWOCA9IENocm9tZSAvIDEwXG4gIC8vIGJ1dCB0aGVpciBjb3JyZWN0IHZlcnNpb25zIGFyZSBub3QgaW50ZXJlc3RpbmcgZm9yIHVzXG4gIHZlcnNpb24gPSBtYXRjaFswXSA+IDAgJiYgbWF0Y2hbMF0gPCA0ID8gMSA6ICsobWF0Y2hbMF0gKyBtYXRjaFsxXSk7XG59XG5cbi8vIEJyb3dzZXJGUyBOb2RlSlMgYHByb2Nlc3NgIHBvbHlmaWxsIGluY29ycmVjdGx5IHNldCBgLnY4YCB0byBgMC4wYFxuLy8gc28gY2hlY2sgYHVzZXJBZ2VudGAgZXZlbiBpZiBgLnY4YCBleGlzdHMsIGJ1dCAwXG5pZiAoIXZlcnNpb24gJiYgdXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gK21hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbjtcbiIsICIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXY4LXZlcnNpb24nKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxudmFyICRTdHJpbmcgPSBnbG9iYWxUaGlzLlN0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICAvLyBuYjogRG8gbm90IGNhbGwgYFN0cmluZ2AgZGlyZWN0bHkgdG8gYXZvaWQgdGhpcyBiZWluZyBvcHRpbWl6ZWQgb3V0IHRvIGBzeW1ib2wrJydgIHdoaWNoIHdpbGwsXG4gIC8vIG9mIGNvdXJzZSwgZmFpbC5cbiAgcmV0dXJuICEkU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVTRV9TWU1CT0xfQVNfVUlEID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciAkU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHJldHVybiBpc0NhbGxhYmxlKCRTeW1ib2wpICYmIGlzUHJvdG90eXBlT2YoJFN5bWJvbC5wcm90b3R5cGUsICRPYmplY3QoaXQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG4vLyBgR2V0TWV0aG9kYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0bWV0aG9kXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChWLCBQKSB7XG4gIHZhciBmdW5jID0gVltQXTtcbiAgcmV0dXJuIGlzTnVsbE9yVW5kZWZpbmVkKGZ1bmMpID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIGtleSwgeyB2YWx1ZTogdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsVGhpc1trZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gbW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxUaGlzW1NIQVJFRF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoU0hBUkVELCB7fSk7XG5cbihzdG9yZS52ZXJzaW9ucyB8fCAoc3RvcmUudmVyc2lvbnMgPSBbXSkpLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zOC4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjQgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zOC4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlIHx8IHt9KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuICRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHVuY3VycnlUaGlzKHt9Lmhhc093blByb3BlcnR5KTtcblxuLy8gYEhhc093blByb3BlcnR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaGFzb3ducHJvcGVydHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaGFzb3duIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkodG9PYmplY3QoaXQpLCBrZXkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcygxLjAudG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyB0b1N0cmluZygrK2lkICsgcG9zdGZpeCwgMzYpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsVGhpcy5TeW1ib2w7XG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbFsnZm9yJ10gfHwgU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpKSB7XG4gICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKVxuICAgICAgPyBTeW1ib2xbbmFtZV1cbiAgICAgIDogY3JlYXRlV2VsbEtub3duU3ltYm9sKCdTeW1ib2wuJyArIG5hbWUpO1xuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIG9yZGluYXJ5VG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xudmFyIFRPX1BSSU1JVElWRSA9IHdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcblxuLy8gYFRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIGlmICghaXNPYmplY3QoaW5wdXQpIHx8IGlzU3ltYm9sKGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZXhvdGljVG9QcmltID0gZ2V0TWV0aG9kKGlucHV0LCBUT19QUklNSVRJVkUpO1xuICB2YXIgcmVzdWx0O1xuICBpZiAoZXhvdGljVG9QcmltKSB7XG4gICAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdkZWZhdWx0JztcbiAgICByZXN1bHQgPSBjYWxsKGV4b3RpY1RvUHJpbSwgaW5wdXQsIHByZWYpO1xuICAgIGlmICghaXNPYmplY3QocmVzdWx0KSB8fCBpc1N5bWJvbChyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICB9XG4gIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnbnVtYmVyJztcbiAgcmV0dXJuIG9yZGluYXJ5VG9QcmltaXRpdmUoaW5wdXQsIHByZWYpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhc093bihPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLCBPLCBQKSwgT1tQXSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBFTlVNRVJBQkxFID0gJ2VudW1lcmFibGUnO1xudmFyIENPTkZJR1VSQUJMRSA9ICdjb25maWd1cmFibGUnO1xudmFyIFdSSVRBQkxFID0gJ3dyaXRhYmxlJztcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKHR5cGVvZiBPID09PSAnZnVuY3Rpb24nICYmIFAgPT09ICdwcm90b3R5cGUnICYmICd2YWx1ZScgaW4gQXR0cmlidXRlcyAmJiBXUklUQUJMRSBpbiBBdHRyaWJ1dGVzICYmICFBdHRyaWJ1dGVzW1dSSVRBQkxFXSkge1xuICAgIHZhciBjdXJyZW50ID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50W1dSSVRBQkxFXSkge1xuICAgICAgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gICAgICBBdHRyaWJ1dGVzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IENPTkZJR1VSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tDT05GSUdVUkFCTEVdIDogY3VycmVudFtDT05GSUdVUkFCTEVdLFxuICAgICAgICBlbnVtZXJhYmxlOiBFTlVNRVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0VOVU1FUkFCTEVdIDogY3VycmVudFtFTlVNRVJBQkxFXSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfSByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xufSA6ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWxUaGlzLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNDYWxsYWJsZShXZWFrTWFwKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKFdlYWtNYXApKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbicpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsVGhpcy5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbFRoaXMuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHN0b3JlLmdldCA9IHN0b3JlLmdldDtcbiAgc3RvcmUuaGFzID0gc3RvcmUuaGFzO1xuICBzdG9yZS5zZXQgPSBzdG9yZS5zZXQ7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHN0b3JlLmhhcyhpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcblxudmFyIENPTkZJR1VSQUJMRV9MRU5HVEggPSBERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAnbGVuZ3RoJywgeyB2YWx1ZTogOCB9KS5sZW5ndGggIT09IDg7XG59KTtcblxudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG52YXIgbWFrZUJ1aWx0SW4gPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSwgb3B0aW9ucykge1xuICBpZiAoc3RyaW5nU2xpY2UoJFN0cmluZyhuYW1lKSwgMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgIG5hbWUgPSAnWycgKyByZXBsYWNlKCRTdHJpbmcobmFtZSksIC9eU3ltYm9sXFwoKFteKV0qKVxcKS4qJC8sICckMScpICsgJ10nO1xuICB9XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZ2V0dGVyKSBuYW1lID0gJ2dldCAnICsgbmFtZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zZXR0ZXIpIG5hbWUgPSAnc2V0ICcgKyBuYW1lO1xuICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIHsgdmFsdWU6IG5hbWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBlbHNlIHZhbHVlLm5hbWUgPSBuYW1lO1xuICB9XG4gIGlmIChDT05GSUdVUkFCTEVfTEVOR1RIICYmIG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdhcml0eScpICYmIHZhbHVlLmxlbmd0aCAhPT0gb3B0aW9ucy5hcml0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbGVuZ3RoJywgeyB2YWx1ZTogb3B0aW9ucy5hcml0eSB9KTtcbiAgfVxuICB0cnkge1xuICAgIGlmIChvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnY29uc3RydWN0b3InKSAmJiBvcHRpb25zLmNvbnN0cnVjdG9yKSB7XG4gICAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAncHJvdG90eXBlJywgeyB3cml0YWJsZTogZmFsc2UgfSk7XG4gICAgLy8gaW4gVjggfiBDaHJvbWUgNTMsIHByb3RvdHlwZXMgb2Ygc29tZSBtZXRob2RzLCBsaWtlIGBBcnJheS5wcm90b3R5cGUudmFsdWVzYCwgYXJlIG5vbi13cml0YWJsZVxuICAgIH0gZWxzZSBpZiAodmFsdWUucHJvdG90eXBlKSB2YWx1ZS5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgdmFyIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICBpZiAoIWhhc093bihzdGF0ZSwgJ3NvdXJjZScpKSB7XG4gICAgc3RhdGUuc291cmNlID0gam9pbihURU1QTEFURSwgdHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dGVuZC1uYXRpdmUgLS0gcmVxdWlyZWRcbkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IG1ha2VCdWlsdEluKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gaXNDYWxsYWJsZSh0aGlzKSAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSwgJ3RvU3RyaW5nJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMuZW51bWVyYWJsZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSBtYWtlQnVpbHRJbih2YWx1ZSwgbmFtZSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lR2xvYmFsUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy51bnNhZmUpIGRlbGV0ZSBPW2tleV07XG4gICAgICBlbHNlIGlmIChPW2tleV0pIHNpbXBsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiAhb3B0aW9ucy5ub25Db25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogIW9wdGlvbnMubm9uV3JpdGFibGVcbiAgICB9KTtcbiAgfSByZXR1cm4gTztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgTWF0aC50cnVuY2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgudHJ1bmNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLXRydW5jIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTWF0aC50cnVuYyB8fCBmdW5jdGlvbiB0cnVuYyh4KSB7XG4gIHZhciBuID0gK3g7XG4gIHJldHVybiAobiA+IDAgPyBmbG9vciA6IGNlaWwpKG4pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdHJ1bmMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC10cnVuYycpO1xuXG4vLyBgVG9JbnRlZ2VyT3JJbmZpbml0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBudW1iZXIgPSArYXJndW1lbnQ7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiBudW1iZXIgIT09IG51bWJlciB8fCBudW1iZXIgPT09IDAgPyAwIDogdHJ1bmMobnVtYmVyKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGxlbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpO1xuICByZXR1cm4gbGVuID4gMCA/IG1pbihsZW4sIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBMZW5ndGhPZkFycmF5TGlrZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxlbmd0aG9mYXJyYXlsaWtlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHRvTGVuZ3RoKG9iai5sZW5ndGgpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT09IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzT3duKGhpZGRlbktleXMsIGtleSkgJiYgaGFzT3duKE8sIGtleSkgJiYgcHVzaChyZXN1bHQsIGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXNPd24oTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcHVzaChyZXN1bHQsIGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQoa2V5cywgZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlLCBleGNlcHRpb25zKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzT3duKHRhcmdldCwga2V5KSAmJiAhKGV4Y2VwdGlvbnMgJiYgaGFzT3duKGV4Y2VwdGlvbnMsIGtleSkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgfVxuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IGlzQ2FsbGFibGUoZGV0ZWN0aW9uKSA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgICAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLmRvbnRDYWxsR2V0U2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuICBvcHRpb25zLm5hbWUgICAgICAgICAgIC0gdGhlIC5uYW1lIG9mIHRoZSBmdW5jdGlvbiBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUga2V5XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpcztcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzW1RBUkdFVF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpc1tUQVJHRVRdICYmIGdsb2JhbFRoaXNbVEFSR0VUXS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5kb250Q2FsbEdldFNldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICBkZWZpbmVCdWlsdEluKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc2V0IC0tIHNhZmVcbnZhciBTZXRQcm90b3R5cGUgPSBTZXQucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXNldCAtLSBzYWZlXG4gIFNldDogU2V0LFxuICBhZGQ6IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZS5hZGQpLFxuICBoYXM6IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZS5oYXMpLFxuICByZW1vdmU6IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZVsnZGVsZXRlJ10pLFxuICBwcm90bzogU2V0UHJvdG90eXBlXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKS5oYXM7XG5cbi8vIFBlcmZvcm0gPyBSZXF1aXJlSW50ZXJuYWxTbG90KE0sIFtbU2V0RGF0YV1dKVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaGFzKGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHJlY29yZCwgZm4sIElURVJBVE9SX0lOU1RFQURfT0ZfUkVDT1JEKSB7XG4gIHZhciBpdGVyYXRvciA9IElURVJBVE9SX0lOU1RFQURfT0ZfUkVDT1JEID8gcmVjb3JkIDogcmVjb3JkLml0ZXJhdG9yO1xuICB2YXIgbmV4dCA9IHJlY29yZC5uZXh0O1xuICB2YXIgc3RlcCwgcmVzdWx0O1xuICB3aGlsZSAoIShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmUpIHtcbiAgICByZXN1bHQgPSBmbihzdGVwLnZhbHVlKTtcbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGl0ZXJhdGVTaW1wbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZS1zaW1wbGUnKTtcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG5cbnZhciBTZXQgPSBTZXRIZWxwZXJzLlNldDtcbnZhciBTZXRQcm90b3R5cGUgPSBTZXRIZWxwZXJzLnByb3RvO1xudmFyIGZvckVhY2ggPSB1bmN1cnJ5VGhpcyhTZXRQcm90b3R5cGUuZm9yRWFjaCk7XG52YXIga2V5cyA9IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZS5rZXlzKTtcbnZhciBuZXh0ID0ga2V5cyhuZXcgU2V0KCkpLm5leHQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNldCwgZm4sIGludGVycnVwdGlibGUpIHtcbiAgcmV0dXJuIGludGVycnVwdGlibGUgPyBpdGVyYXRlU2ltcGxlKHsgaXRlcmF0b3I6IGtleXMoc2V0KSwgbmV4dDogbmV4dCB9LCBmbikgOiBmb3JFYWNoKHNldCwgZm4pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgU2V0SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcblxudmFyIFNldCA9IFNldEhlbHBlcnMuU2V0O1xudmFyIGFkZCA9IFNldEhlbHBlcnMuYWRkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzZXQpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBTZXQoKTtcbiAgaXRlcmF0ZShzZXQsIGZ1bmN0aW9uIChpdCkge1xuICAgIGFkZChyZXN1bHQsIGl0KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgbWV0aG9kKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICAgIHJldHVybiB1bmN1cnJ5VGhpcyhhQ2FsbGFibGUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGtleSlbbWV0aG9kXSkpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpc0FjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3NvcicpO1xudmFyIFNldEhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpc0FjY2Vzc29yKFNldEhlbHBlcnMucHJvdG8sICdzaXplJywgJ2dldCcpIHx8IGZ1bmN0aW9uIChzZXQpIHtcbiAgcmV0dXJuIHNldC5zaXplO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBgR2V0SXRlcmF0b3JEaXJlY3Qob2JqKWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaXRlcmF0b3ItaGVscGVycy8jc2VjLWdldGl0ZXJhdG9yZGlyZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHtcbiAgICBpdGVyYXRvcjogb2JqLFxuICAgIG5leHQ6IG9iai5uZXh0LFxuICAgIGRvbmU6IGZhbHNlXG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIGdldEl0ZXJhdG9yRGlyZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1kaXJlY3QnKTtcblxudmFyIElOVkFMSURfU0laRSA9ICdJbnZhbGlkIHNpemUnO1xudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xudmFyIG1heCA9IE1hdGgubWF4O1xuXG52YXIgU2V0UmVjb3JkID0gZnVuY3Rpb24gKHNldCwgaW50U2l6ZSkge1xuICB0aGlzLnNldCA9IHNldDtcbiAgdGhpcy5zaXplID0gbWF4KGludFNpemUsIDApO1xuICB0aGlzLmhhcyA9IGFDYWxsYWJsZShzZXQuaGFzKTtcbiAgdGhpcy5rZXlzID0gYUNhbGxhYmxlKHNldC5rZXlzKTtcbn07XG5cblNldFJlY29yZC5wcm90b3R5cGUgPSB7XG4gIGdldEl0ZXJhdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGdldEl0ZXJhdG9yRGlyZWN0KGFuT2JqZWN0KGNhbGwodGhpcy5rZXlzLCB0aGlzLnNldCkpKTtcbiAgfSxcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBjYWxsKHRoaXMuaGFzLCB0aGlzLnNldCwgaXQpO1xuICB9XG59O1xuXG4vLyBgR2V0U2V0UmVjb3JkYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1zZXQtbWV0aG9kcy8jc2VjLWdldHNldHJlY29yZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGFuT2JqZWN0KG9iaik7XG4gIHZhciBudW1TaXplID0gK29iai5zaXplO1xuICAvLyBOT1RFOiBJZiBzaXplIGlzIHVuZGVmaW5lZCwgdGhlbiBudW1TaXplIHdpbGwgYmUgTmFOXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIGlmIChudW1TaXplICE9PSBudW1TaXplKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihJTlZBTElEX1NJWkUpO1xuICB2YXIgaW50U2l6ZSA9IHRvSW50ZWdlck9ySW5maW5pdHkobnVtU2l6ZSk7XG4gIGlmIChpbnRTaXplIDwgMCkgdGhyb3cgbmV3ICRSYW5nZUVycm9yKElOVkFMSURfU0laRSk7XG4gIHJldHVybiBuZXcgU2V0UmVjb3JkKG9iaiwgaW50U2l6ZSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgU2V0SGVscGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaGVscGVycycpO1xudmFyIGNsb25lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1jbG9uZScpO1xudmFyIHNpemUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNpemUnKTtcbnZhciBnZXRTZXRSZWNvcmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1yZWNvcmQnKTtcbnZhciBpdGVyYXRlU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pdGVyYXRlJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xuXG52YXIgaGFzID0gU2V0SGVscGVycy5oYXM7XG52YXIgcmVtb3ZlID0gU2V0SGVscGVycy5yZW1vdmU7XG5cbi8vIGBTZXQucHJvdG90eXBlLmRpZmZlcmVuY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGlmZmVyZW5jZShvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBvdGhlclJlYyA9IGdldFNldFJlY29yZChvdGhlcik7XG4gIHZhciByZXN1bHQgPSBjbG9uZShPKTtcbiAgaWYgKHNpemUoTykgPD0gb3RoZXJSZWMuc2l6ZSkgaXRlcmF0ZVNldChPLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChvdGhlclJlYy5pbmNsdWRlcyhlKSkgcmVtb3ZlKHJlc3VsdCwgZSk7XG4gIH0pO1xuICBlbHNlIGl0ZXJhdGVTaW1wbGUob3RoZXJSZWMuZ2V0SXRlcmF0b3IoKSwgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoaGFzKE8sIGUpKSByZW1vdmUocmVzdWx0LCBlKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG52YXIgY3JlYXRlU2V0TGlrZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiB7XG4gICAgc2l6ZTogc2l6ZSxcbiAgICBoYXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGtleXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgU2V0ID0gZ2V0QnVpbHRJbignU2V0Jyk7XG4gIHRyeSB7XG4gICAgbmV3IFNldCgpW25hbWVdKGNyZWF0ZVNldExpa2UoMCkpO1xuICAgIHRyeSB7XG4gICAgICAvLyBsYXRlIHNwZWMgY2hhbmdlLCBlYXJseSBXZWJLaXQgfiBTYWZhcmkgMTcuMCBiZXRhIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHBhc3MgaXRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzL3B1bGwvODhcbiAgICAgIG5ldyBTZXQoKVtuYW1lXShjcmVhdGVTZXRMaWtlKC0xKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBjYXRjaCAoZXJyb3IyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGRpZmZlcmVuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWRpZmZlcmVuY2UnKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmRpZmZlcmVuY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnZGlmZmVyZW5jZScpIH0sIHtcbiAgZGlmZmVyZW5jZTogZGlmZmVyZW5jZVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBTZXRIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJyk7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG5cbnZhciBTZXQgPSBTZXRIZWxwZXJzLlNldDtcbnZhciBhZGQgPSBTZXRIZWxwZXJzLmFkZDtcbnZhciBoYXMgPSBTZXRIZWxwZXJzLmhhcztcblxuLy8gYFNldC5wcm90b3R5cGUuaW50ZXJzZWN0aW9uYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGludGVyc2VjdGlvbihvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBvdGhlclJlYyA9IGdldFNldFJlY29yZChvdGhlcik7XG4gIHZhciByZXN1bHQgPSBuZXcgU2V0KCk7XG5cbiAgaWYgKHNpemUoTykgPiBvdGhlclJlYy5zaXplKSB7XG4gICAgaXRlcmF0ZVNpbXBsZShvdGhlclJlYy5nZXRJdGVyYXRvcigpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKGhhcyhPLCBlKSkgYWRkKHJlc3VsdCwgZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaXRlcmF0ZVNldChPLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKG90aGVyUmVjLmluY2x1ZGVzKGUpKSBhZGQocmVzdWx0LCBlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaW50ZXJzZWN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pbnRlcnNlY3Rpb24nKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbnZhciBJTkNPUlJFQ1QgPSAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnaW50ZXJzZWN0aW9uJykgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktZnJvbSwgZXMvbm8tc2V0IC0tIHRlc3RpbmdcbiAgcmV0dXJuIFN0cmluZyhBcnJheS5mcm9tKG5ldyBTZXQoWzEsIDIsIDNdKS5pbnRlcnNlY3Rpb24obmV3IFNldChbMywgMl0pKSkpICE9PSAnMywyJztcbn0pO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5pbnRlcnNlY3Rpb25gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBJTkNPUlJFQ1QgfSwge1xuICBpbnRlcnNlY3Rpb246IGludGVyc2VjdGlvblxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBraW5kLCB2YWx1ZSkge1xuICB2YXIgaW5uZXJSZXN1bHQsIGlubmVyRXJyb3I7XG4gIGFuT2JqZWN0KGl0ZXJhdG9yKTtcbiAgdHJ5IHtcbiAgICBpbm5lclJlc3VsdCA9IGdldE1ldGhvZChpdGVyYXRvciwgJ3JldHVybicpO1xuICAgIGlmICghaW5uZXJSZXN1bHQpIHtcbiAgICAgIGlmIChraW5kID09PSAndGhyb3cnKSB0aHJvdyB2YWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaW5uZXJSZXN1bHQgPSBjYWxsKGlubmVyUmVzdWx0LCBpdGVyYXRvcik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaW5uZXJFcnJvciA9IHRydWU7XG4gICAgaW5uZXJSZXN1bHQgPSBlcnJvcjtcbiAgfVxuICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gIGlmIChpbm5lckVycm9yKSB0aHJvdyBpbm5lclJlc3VsdDtcbiAgYW5PYmplY3QoaW5uZXJSZXN1bHQpO1xuICByZXR1cm4gdmFsdWU7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJykuaGFzO1xudmFyIHNpemUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNpemUnKTtcbnZhciBnZXRTZXRSZWNvcmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1yZWNvcmQnKTtcbnZhciBpdGVyYXRlU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pdGVyYXRlJyk7XG52YXIgaXRlcmF0ZVNpbXBsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlLXNpbXBsZScpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNEaXNqb2ludEZyb21gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXQtbWV0aG9kcy8jU2V0LnByb3RvdHlwZS5pc0Rpc2pvaW50RnJvbVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0Rpc2pvaW50RnJvbShvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBvdGhlclJlYyA9IGdldFNldFJlY29yZChvdGhlcik7XG4gIGlmIChzaXplKE8pIDw9IG90aGVyUmVjLnNpemUpIHJldHVybiBpdGVyYXRlU2V0KE8sIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKG90aGVyUmVjLmluY2x1ZGVzKGUpKSByZXR1cm4gZmFsc2U7XG4gIH0sIHRydWUpICE9PSBmYWxzZTtcbiAgdmFyIGl0ZXJhdG9yID0gb3RoZXJSZWMuZ2V0SXRlcmF0b3IoKTtcbiAgcmV0dXJuIGl0ZXJhdGVTaW1wbGUoaXRlcmF0b3IsIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGhhcyhPLCBlKSkgcmV0dXJuIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICdub3JtYWwnLCBmYWxzZSk7XG4gIH0pICE9PSBmYWxzZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNEaXNqb2ludEZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWlzLWRpc2pvaW50LWZyb20nKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmlzRGlzam9pbnRGcm9tYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ2lzRGlzam9pbnRGcm9tJykgfSwge1xuICBpc0Rpc2pvaW50RnJvbTogaXNEaXNqb2ludEZyb21cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWl0ZXJhdGUnKTtcbnZhciBnZXRTZXRSZWNvcmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1yZWNvcmQnKTtcblxuLy8gYFNldC5wcm90b3R5cGUuaXNTdWJzZXRPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNTZXQucHJvdG90eXBlLmlzU3Vic2V0T2Zcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNTdWJzZXRPZihvdGhlcikge1xuICB2YXIgTyA9IGFTZXQodGhpcyk7XG4gIHZhciBvdGhlclJlYyA9IGdldFNldFJlY29yZChvdGhlcik7XG4gIGlmIChzaXplKE8pID4gb3RoZXJSZWMuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gaXRlcmF0ZShPLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmICghb3RoZXJSZWMuaW5jbHVkZXMoZSkpIHJldHVybiBmYWxzZTtcbiAgfSwgdHJ1ZSkgIT09IGZhbHNlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc1N1YnNldE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1pcy1zdWJzZXQtb2YnKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmlzU3Vic2V0T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbiQoeyB0YXJnZXQ6ICdTZXQnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiAhc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSgnaXNTdWJzZXRPZicpIH0sIHtcbiAgaXNTdWJzZXRPZjogaXNTdWJzZXRPZlxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGFTZXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1zZXQnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKS5oYXM7XG52YXIgc2l6ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc2l6ZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTaW1wbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZS1zaW1wbGUnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmlzU3VwZXJzZXRPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldC1tZXRob2RzLyNTZXQucHJvdG90eXBlLmlzU3VwZXJzZXRPZlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc1N1cGVyc2V0T2Yob3RoZXIpIHtcbiAgdmFyIE8gPSBhU2V0KHRoaXMpO1xuICB2YXIgb3RoZXJSZWMgPSBnZXRTZXRSZWNvcmQob3RoZXIpO1xuICBpZiAoc2l6ZShPKSA8IG90aGVyUmVjLnNpemUpIHJldHVybiBmYWxzZTtcbiAgdmFyIGl0ZXJhdG9yID0gb3RoZXJSZWMuZ2V0SXRlcmF0b3IoKTtcbiAgcmV0dXJuIGl0ZXJhdGVTaW1wbGUoaXRlcmF0b3IsIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKCFoYXMoTywgZSkpIHJldHVybiBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAnbm9ybWFsJywgZmFsc2UpO1xuICB9KSAhPT0gZmFsc2U7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzU3VwZXJzZXRPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtaXMtc3VwZXJzZXQtb2YnKTtcbnZhciBzZXRNZXRob2RBY2NlcHRTZXRMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1tZXRob2QtYWNjZXB0LXNldC1saWtlJyk7XG5cbi8vIGBTZXQucHJvdG90eXBlLmlzU3VwZXJzZXRPZmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6ICFzZXRNZXRob2RBY2NlcHRTZXRMaWtlKCdpc1N1cGVyc2V0T2YnKSB9LCB7XG4gIGlzU3VwZXJzZXRPZjogaXNTdXBlcnNldE9mXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYVNldCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXNldCcpO1xudmFyIFNldEhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWhlbHBlcnMnKTtcbnZhciBjbG9uZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtY2xvbmUnKTtcbnZhciBnZXRTZXRSZWNvcmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXNldC1yZWNvcmQnKTtcbnZhciBpdGVyYXRlU2ltcGxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUtc2ltcGxlJyk7XG5cbnZhciBhZGQgPSBTZXRIZWxwZXJzLmFkZDtcbnZhciBoYXMgPSBTZXRIZWxwZXJzLmhhcztcbnZhciByZW1vdmUgPSBTZXRIZWxwZXJzLnJlbW92ZTtcblxuLy8gYFNldC5wcm90b3R5cGUuc3ltbWV0cmljRGlmZmVyZW5jZWAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzeW1tZXRyaWNEaWZmZXJlbmNlKG90aGVyKSB7XG4gIHZhciBPID0gYVNldCh0aGlzKTtcbiAgdmFyIGtleXNJdGVyID0gZ2V0U2V0UmVjb3JkKG90aGVyKS5nZXRJdGVyYXRvcigpO1xuICB2YXIgcmVzdWx0ID0gY2xvbmUoTyk7XG4gIGl0ZXJhdGVTaW1wbGUoa2V5c0l0ZXIsIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGhhcyhPLCBlKSkgcmVtb3ZlKHJlc3VsdCwgZSk7XG4gICAgZWxzZSBhZGQocmVzdWx0LCBlKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHN5bW1ldHJpY0RpZmZlcmVuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXN5bW1ldHJpYy1kaWZmZXJlbmNlJyk7XG52YXIgc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtbWV0aG9kLWFjY2VwdC1zZXQtbGlrZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS5zeW1tZXRyaWNEaWZmZXJlbmNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXNldC1tZXRob2RzXG4kKHsgdGFyZ2V0OiAnU2V0JywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogIXNldE1ldGhvZEFjY2VwdFNldExpa2UoJ3N5bW1ldHJpY0RpZmZlcmVuY2UnKSB9LCB7XG4gIHN5bW1ldHJpY0RpZmZlcmVuY2U6IHN5bW1ldHJpY0RpZmZlcmVuY2Vcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhU2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Etc2V0Jyk7XG52YXIgYWRkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzJykuYWRkO1xudmFyIGNsb25lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1jbG9uZScpO1xudmFyIGdldFNldFJlY29yZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc2V0LXJlY29yZCcpO1xudmFyIGl0ZXJhdGVTaW1wbGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZS1zaW1wbGUnKTtcblxuLy8gYFNldC5wcm90b3R5cGUudW5pb25gIG1ldGhvZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2V0LW1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdW5pb24ob3RoZXIpIHtcbiAgdmFyIE8gPSBhU2V0KHRoaXMpO1xuICB2YXIga2V5c0l0ZXIgPSBnZXRTZXRSZWNvcmQob3RoZXIpLmdldEl0ZXJhdG9yKCk7XG4gIHZhciByZXN1bHQgPSBjbG9uZShPKTtcbiAgaXRlcmF0ZVNpbXBsZShrZXlzSXRlciwgZnVuY3Rpb24gKGl0KSB7XG4gICAgYWRkKHJlc3VsdCwgaXQpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdW5pb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXVuaW9uJyk7XG52YXIgc2V0TWV0aG9kQWNjZXB0U2V0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtbWV0aG9kLWFjY2VwdC1zZXQtbGlrZScpO1xuXG4vLyBgU2V0LnByb3RvdHlwZS51bmlvbmAgbWV0aG9kXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zZXQtbWV0aG9kc1xuJCh7IHRhcmdldDogJ1NldCcsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6ICFzZXRNZXRob2RBY2NlcHRTZXRMaWtlKCd1bmlvbicpIH0sIHtcbiAgdW5pb246IHVuaW9uXG59KTtcbiIsICIvKipcbiAqIEBuYW1lIFdpa2lwbHVzLWhpZ2hsaWdodCBXaWtpcGx1c+e8lui+keWZqOeahENvZGVNaXJyb3Lor63ms5Xpq5jkuq7mianlsZVcbiAqIEBhdXRob3IgQmhzZCA8aHR0cHM6Ly9naXRodWIuY29tL2Joc2QtaGFycnk+XG4gKiBAbGljZW5zZSBHUEwtMy4wXG4gKi9cblxuZGVjbGFyZSBpbnRlcmZhY2UgV1BITCB7XG5cdHZlcnNpb24/OiBzdHJpbmc7XG5cdGNtVmVyc2lvbj86IHN0cmluZztcbn1cblxuKCgpOiB2b2lkID0+IHtcblx0Y29uc3Qge2xpYnN9ID0gbXcgYXMge2xpYnM6IHt3cGhsPzogV1BITH19LFxuXHRcdHt3cGhsfSA9IGxpYnM7XG5cdGlmICh3cGhsPy52ZXJzaW9uKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IHZlcnNpb24gPSAnMy4yLjInO1xuXHRsaWJzLndwaGwgPSB7dmVyc2lvbiwgLi4ud3BobH07IC8vIOW8gOWni+WKoOi9vVxuXG5cdC8vIOi3r+W+hFxuXHRjb25zdCBDRE4gPSAnLy90ZXN0aW5nY2YuanNkZWxpdnIubmV0Jyxcblx0XHRNV19DRE4gPSBgbnBtL0BiaHNkL2NvZGVtaXJyb3ItbWVkaWF3aWtpQCR7bGlicy53cGhsLmNtVmVyc2lvbiB8fCAnbGF0ZXN0J30vZGlzdC9tdy5taW4uanNgLFxuXHRcdFJFUE9fQ0ROID0gJ25wbS93aWtpcGx1cy1oaWdobGlnaHQnO1xuXG5cdHdpbmRvdy5Db2RlTWlycm9yNiB8fD0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcblx0XHRzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcblx0XHRcdHJlc29sdmUoQ29kZU1pcnJvcjYpO1xuXHRcdH0pO1xuXHRcdHNjcmlwdC50eXBlID0gJ21vZHVsZSc7XG5cdFx0c2NyaXB0LnNyYyA9IGAke0NETn0vJHtNV19DRE59YDtcblx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZChzY3JpcHQpO1xuXHR9KTtcblxuXHRjb25zdCB7d2dQYWdlTmFtZTogcGFnZSwgd2dOYW1lc3BhY2VOdW1iZXI6IG5zLCB3Z1BhZ2VDb250ZW50TW9kZWw6IGNvbnRlbnRtb2RlbH0gPSBtdy5jb25maWcuZ2V0KCk7XG5cblx0Y29uc3QgQ09OVEVOVE1PREVMUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcblx0XHRcdCdzYW5pdGl6ZWQtY3NzJzogJ2NzcycsXG5cdFx0XHR3aWtpdGV4dDogJ21lZGlhd2lraScsXG5cdFx0fSxcblx0XHRFWFRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdFx0Y3NzOiAnY3NzJyxcblx0XHRcdGpzOiAnamF2YXNjcmlwdCcsXG5cdFx0XHRqc29uOiAnanNvbicsXG5cdFx0fSxcblx0XHROQU1FU1BBQ0VTOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuXHRcdFx0ODI4OiAnbHVhJyxcblx0XHRcdDI3NDogJ2h0bWwnLFxuXHRcdH07XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0Y29uc3QgZ2V0T2JqZWN0ID0gKGtleTogc3RyaW5nKTogYW55ID0+IHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShTdHJpbmcobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSkpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiDmo4Dmn6XpobXpnaLor63oqIDnsbvlnotcblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIOmhtemdouWGheWuuVxuXHQgKi9cblx0Y29uc3QgZ2V0UGFnZU1vZGUgPSBhc3luYyAodmFsdWU6IHN0cmluZyk6IFByb21pc2U8W3N0cmluZywgKG51bWJlciB8IHVuZGVmaW5lZCk/XT4gPT4ge1xuXHRcdGlmICh0eXBlb2YgX1dpa2lwbHVzUGFnZXMgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRjb25zdCBwYWdlcyA9IE9iamVjdC52YWx1ZXMoX1dpa2lwbHVzUGFnZXMpLmZpbHRlcigoe3NlY3Rpb25DYWNoZX0pID0+IHtcblx0XHRcdFx0cmV0dXJuIE9iamVjdC52YWx1ZXMoc2VjdGlvbkNhY2hlKS5pbmNsdWRlcyh2YWx1ZSk7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChcblx0XHRcdFx0cGFnZXMuc29tZSgoe3RpdGxlfSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAhdGl0bGUuZW5kc1dpdGgoJy9kb2MnKTtcblx0XHRcdFx0fSlcblx0XHRcdCkge1xuXHRcdFx0XHRhd2FpdCBtdy5sb2FkZXIudXNpbmcoJ21lZGlhd2lraS5UaXRsZScpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbW9kZXMgPSBuZXcgU2V0KFxuXHRcdFx0XHRwYWdlcy5tYXAoKHt0aXRsZX0pID0+IHtcblx0XHRcdFx0XHRpZiAodGl0bGUuZW5kc1dpdGgoJy9kb2MnKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICd0ZW1wbGF0ZSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHQgPSBuZXcgbXcuVGl0bGUodGl0bGUpLFxuXHRcdFx0XHRcdFx0bmFtZXNwYWNlID0gdC5nZXROYW1lc3BhY2VJZCgpO1xuXHRcdFx0XHRcdGlmIChuYW1lc3BhY2UgJSAyKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ21lZGlhd2lraSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IG1vZGUgPSBFWFRTW3QuZ2V0RXh0ZW5zaW9uKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyddIHx8IE5BTUVTUEFDRVNbbmFtZXNwYWNlXTtcblx0XHRcdFx0XHRpZiAobW9kZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG1vZGUgPT09ICdqYXZhc2NyaXB0JyAmJiAobmFtZXNwYWNlID09PSA4IHx8IG5hbWVzcGFjZSA9PT0gMjMwMCkgPyAnZ2FkZ2V0JyA6IG1vZGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBuYW1lc3BhY2UgPT09IDEwIHx8IG5hbWVzcGFjZSA9PT0gMiA/ICd0ZW1wbGF0ZScgOiAnbWVkaWF3aWtpJztcblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0XHRpZiAobW9kZXMuc2l6ZSA9PT0gMSkge1xuXHRcdFx0XHRjb25zdCBbbW9kZV0gPSBtb2Rlcztcblx0XHRcdFx0aWYgKG1vZGUgPT09ICdnYWRnZXQnKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFsnamF2YXNjcmlwdCcsIDhdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBtb2RlID09PSAndGVtcGxhdGUnID8gWydtZWRpYXdpa2knLCAxMF0gOiBbbW9kZSFdO1xuXHRcdFx0fSBlbHNlIGlmIChtb2Rlcy5zaXplID09PSAyKSB7XG5cdFx0XHRcdGlmIChtb2Rlcy5oYXMoJ2phdmFzY3JpcHQnKSAmJiBtb2Rlcy5oYXMoJ2dhZGdldCcpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFsnamF2YXNjcmlwdCddO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG1vZGVzLmhhcygnbWVkaWF3aWtpJykgJiYgbW9kZXMuaGFzKCd0ZW1wbGF0ZScpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFsnbWVkaWF3aWtpJ107XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKChucyAhPT0gMjc0ICYmIGNvbnRlbnRtb2RlbCAhPT0gJ1NjcmlidW50bycpIHx8IHBhZ2UuZW5kc1dpdGgoJy9kb2MnKSkge1xuXHRcdFx0cmV0dXJuIFtDT05URU5UTU9ERUxTW2NvbnRlbnRtb2RlbF0gfHwgY29udGVudG1vZGVsLCBjb250ZW50bW9kZWwgPT09ICdqYXZhc2NyaXB0JyA/IG5zIDogdW5kZWZpbmVkXTtcblx0XHR9XG5cdFx0YXdhaXQgbXcubG9hZGVyLnVzaW5nKCdvb2pzLXVpLXdpbmRvd3MnKTtcblx0XHRpZiAoXG5cdFx0XHRhd2FpdCBPTy51aS5jb25maXJtKG13Lm1zZygnY20tbXctY29udGVudG1vZGVsJyksIHtcblx0XHRcdFx0YWN0aW9uczogW3tsYWJlbDogbnMgPT09IDI3NCA/ICdXaWRnZXQnIDogJ0x1YSd9LCB7bGFiZWw6ICdXaWtpdGV4dCcsIGFjdGlvbjogJ2FjY2VwdCd9XSxcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gWydtZWRpYXdpa2knXTtcblx0XHR9XG5cdFx0cmV0dXJuIFtucyA9PT0gMjc0ID8gJ2h0bWwnIDogJ2x1YSddO1xuXHR9O1xuXG5cdGNvbnN0IHN1Ym1pdCA9IC8qKiDmj5DkuqTnvJbovpEgKi8gKCk6IHRydWUgPT4ge1xuXHRcdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI1dpa2lwbHVzLVF1aWNrZWRpdC1TdWJtaXQnKSEuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snKSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXHRcdHN1Ym1pdE1pbm9yID0gLyoqIOaPkOS6pOWwj+e8lui+kSAqLyAoKTogdHJ1ZSA9PiB7XG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxJbnB1dEVsZW1lbnQ+KCcjV2lraXBsdXMtUXVpY2tlZGl0LU1pbm9yRWRpdCcpIS5jaGVja2VkID0gdHJ1ZTtcblx0XHRcdHJldHVybiBzdWJtaXQoKTtcblx0XHR9LFxuXHRcdGVzY2FwZUVkaXQgPSAvKiog5oyJ5LiLRXNj6ZSu6YCA5Ye657yW6L6RICovICgpOiB0cnVlID0+IHtcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNXaWtpcGx1cy1RdWlja2VkaXQtQmFjaycpIS5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycpKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH07XG5cblx0LyoqXG5cdCAqIOa4suafk+e8lui+keWZqFxuXHQgKlxuXHQgKiBAcGFyYW0ge0pRdWVyeX0gJHRhcmdldCDnm67moIfnvJbovpHmoYZcblx0ICogQHBhcmFtIHtib29sZWFufSBzZXR0aW5nIOaYr+WQpuaYr1dpa2lwbHVz6K6+572u77yI5L2/55SoanNvbuivreazle+8iVxuXHQgKi9cblx0Y29uc3QgcmVuZGVyRWRpdG9yID0gYXN5bmMgKCR0YXJnZXQ6IEpRdWVyeTxIVE1MVGV4dEFyZWFFbGVtZW50Piwgc2V0dGluZzogYm9vbGVhbik6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGNvbnN0IHNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwgPSBnZXRPYmplY3QoJ1dpa2lwbHVzX1NldHRpbmdzJyksXG5cdFx0XHRlc2NUb0V4aXRRdWlja0VkaXQgPSBzZXR0aW5ncyAmJiAoc2V0dGluZ3NbJ2VzY190b19leGl0X3F1aWNrZWRpdCddIHx8IHNldHRpbmdzWydlc2NUb0V4aXRRdWlja0VkaXQnXSksXG5cdFx0XHRlc2MgPSBlc2NUb0V4aXRRdWlja0VkaXQgPT09IHRydWUgfHwgZXNjVG9FeGl0UXVpY2tFZGl0ID09PSAndHJ1ZSc7XG5cblx0XHRjb25zdCBjbSA9IGF3YWl0IChcblx0XHRcdGF3YWl0IENvZGVNaXJyb3I2XG5cdFx0KS5mcm9tVGV4dEFyZWEoJHRhcmdldFswXSEsIC4uLihzZXR0aW5nID8gKFsnanNvbiddIGFzIFtzdHJpbmddKSA6IGF3YWl0IGdldFBhZ2VNb2RlKCR0YXJnZXQudmFsKCkhKSkpO1xuXHRcdChjbS52aWV3Py5kb20gfHwgY20uZWRpdG9yIS5nZXREb21Ob2RlKCkhKS5pZCA9ICdXaWtpcGx1cy1Db2RlTWlycm9yJztcblxuXHRcdGlmICghc2V0dGluZykge1xuXHRcdFx0Ly8g5pmu6YCaV2lraXBsdXPnvJbovpHljLpcblx0XHRcdGlmIChjbS5lZGl0b3IpIHtcblx0XHRcdFx0Y20uZWRpdG9yLm9uS2V5RG93bigoZSkgPT4ge1xuXHRcdFx0XHRcdGlmIChlLmtleUNvZGUgPT09IG1vbmFjby5LZXlDb2RlLktleVMgJiYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpKSB7XG5cdFx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHRpZiAoZS5zaGlmdEtleSkge1xuXHRcdFx0XHRcdFx0XHRzdWJtaXRNaW5vcigpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0c3VibWl0KCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChlLmtleUNvZGUgPT09IG1vbmFjby5LZXlDb2RlLkVzY2FwZSAmJiBlc2MpIHtcblx0XHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdGVzY2FwZUVkaXQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y20uZXh0cmFLZXlzKFtcblx0XHRcdFx0XHR7a2V5OiAnTW9kLVMnLCBydW46IHN1Ym1pdH0sXG5cdFx0XHRcdFx0e2tleTogJ1NoaWZ0LU1vZC1TJywgcnVuOiBzdWJtaXRNaW5vcn0sXG5cdFx0XHRcdFx0Li4uKGVzYyA/IFt7a2V5OiAnRXNjJywgcnVuOiBlc2NhcGVFZGl0fV0gOiBbXSksXG5cdFx0XHRcdF0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qKiBAdG9kbyDku6XkuIvov4fmuKHku6PnoIHmt7vliqDkuo4yMDI0LTAyLTA377yM5bCG5LqO5LiA5q615pe26Ze05ZCO5byD55SoICovXG5cdFx0Y29uc3Qgb2xkS2V5ID0gJ1dpa2lwbHVzLWhpZ2hsaWdodC1hZGRvbnMnLFxuXHRcdFx0b2xkUHJlZnM6IHN0cmluZ1tdIHwgbnVsbCA9IGdldE9iamVjdChvbGRLZXkpLFxuXHRcdFx0bWFwcGluZzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcblx0XHRcdFx0YWN0aXZlTGluZTogJ2hpZ2hsaWdodEFjdGl2ZUxpbmUnLFxuXHRcdFx0XHR0cmFpbGluZ3NwYWNlOiAnaGlnaGxpZ2h0VHJhaWxpbmdXaGl0ZXNwYWNlJyxcblx0XHRcdFx0bWF0Y2hCcmFja2V0czogJ2JyYWNrZXRNYXRjaGluZycsXG5cdFx0XHRcdGNsb3NlQnJhY2tldHM6ICdjbG9zZUJyYWNrZXRzJyxcblx0XHRcdFx0bWF0Y2hUYWdzOiAndGFnTWF0Y2hpbmcnLFxuXHRcdFx0XHRmb2xkOiAnY29kZUZvbGRpbmcnLFxuXHRcdFx0XHR3aWtpRWRpdG9yOiAnd2lraUVkaXRvcicsXG5cdFx0XHRcdGVzY2FwZTogJ2VzY2FwZScsXG5cdFx0XHRcdGNvbnRleHRtZW51OiAnb3BlbkxpbmtzJyxcblx0XHRcdFx0bGludDogJ2xpbnQnLFxuXHRcdFx0fTtcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShvbGRLZXkpO1xuXHRcdGlmIChvbGRQcmVmcykge1xuXHRcdFx0Y29uc3Qgb2JqOiBSZWNvcmQ8c3RyaW5nLCB0cnVlPiA9IHt9O1xuXHRcdFx0Zm9yIChjb25zdCBrIG9mIG9sZFByZWZzKSB7XG5cdFx0XHRcdGlmIChrIGluIG1hcHBpbmcpIHtcblx0XHRcdFx0XHRvYmpbbWFwcGluZ1trXSFdID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y20ucHJlZmVyKG9iaik7XG5cdFx0fVxuXG5cdFx0Y29uc3QganVtcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEFuY2hvckVsZW1lbnQ+KCcjV2lraXBsdXMtUXVpY2tlZGl0LUp1bXAgPiBhJyk7XG5cdFx0aWYgKGp1bXApIHtcblx0XHRcdGp1bXAuaHJlZiA9ICcjV2lraXBsdXMtQ29kZU1pcnJvcic7XG5cdFx0fVxuXHR9O1xuXG5cdC8vIOebkeinhiBXaWtpcGx1cyDnvJbovpHmoYZcblx0Y29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xuXHRcdGNvbnN0ICRlZGl0QXJlYSA9ICQoXG5cdFx0XHRyZWNvcmRzLmZsYXRNYXAoKHthZGRlZE5vZGVzfSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gWy4uLmFkZGVkTm9kZXNdO1xuXHRcdFx0fSlcblx0XHQpLmZpbmQ8SFRNTFRleHRBcmVhRWxlbWVudD4oJyNXaWtpcGx1cy1RdWlja2VkaXQsICNXaWtpcGx1cy1TZXR0aW5nLUlucHV0Jyk7XG5cdFx0aWYgKCRlZGl0QXJlYS5sZW5ndGggPiAwKSB7XG5cdFx0XHR2b2lkIHJlbmRlckVkaXRvcigkZWRpdEFyZWEsICRlZGl0QXJlYS5hdHRyKCdpZCcpID09PSAnV2lraXBsdXMtU2V0dGluZy1JbnB1dCcpO1xuXHRcdH1cblx0fSk7XG5cdG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2NoaWxkTGlzdDogdHJ1ZX0pO1xuXG5cdG13LmxvYWRlci5sb2FkKGAke0NETn0vJHtSRVBPX0NETn1AJHt2ZXJzaW9ufS9zdHlsZXMubWluLmNzc2AsICd0ZXh0L2NzcycpO1xufSkoKTtcblxuZXhwb3J0IHt9O1xuIiwgImltcG9ydCB7aW5pdE13QXBpfSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG5jb25zdCBhcGk6IG13LkFwaSA9IGluaXRNd0FwaSgnV2lraXBsdXMtaGlnaGxpZ2h0LzIuMCcpO1xuXG5leHBvcnQge2FwaX07XG4iLCAiaW1wb3J0IHthcGl9IGZyb20gJy4vYXBpJztcblxuY29uc3QgY2hlY2tEZXBlbmRlbmNpZXMgPSBhc3luYyAoKSA9PiB7XG5cdGlmICghbXcudXNlci5vcHRpb25zLmdldCgnZ2FkZ2V0LVdpa2lwbHVzJykpIHtcblx0XHR2b2lkIGFwaS5wb3N0V2l0aEVkaXRUb2tlbih7XG5cdFx0XHRhY3Rpb246ICdvcHRpb25zJyxcblx0XHRcdGNoYW5nZTogJ2dhZGdldC1XaWtpcGx1cz0xJyxcblx0XHR9IGFzIEFwaU9wdGlvbnNQYXJhbXMpO1xuXG5cdFx0YXdhaXQgbXcubG9hZGVyLnVzaW5nKCdleHQuZ2FkZ2V0Lldpa2lwbHVzJyk7XG5cdH1cbn07XG5cbmV4cG9ydCB7Y2hlY2tEZXBlbmRlbmNpZXN9O1xuIiwgImltcG9ydCB7Y2hlY2tEZXBlbmRlbmNpZXN9IGZyb20gJy4vbW9kdWxlcy9jaGVja0RlcGVuZGVuY2llcyc7XG5cbihhc3luYyBmdW5jdGlvbiBXaWtpcGx1c0hpZ2hsaWdodCgpIHtcblx0dm9pZCBjaGVja0RlcGVuZGVuY2llcygpO1xuXHRjb25zdCB7d2dBY3Rpb24sIHdnSXNBcnRpY2xlfSA9IG13LmNvbmZpZy5nZXQoKTtcblx0aWYgKHdnQWN0aW9uICE9PSAndmlldycgfHwgIXdnSXNBcnRpY2xlKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3Qgeyd2aXN1YWxlZGl0b3ItZW5hYmxlJzogaXNWZUVuYWJsZX0gPSBtdy51c2VyLm9wdGlvbnMuZ2V0KCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0Lyogc2VlIDxodHRwczovL2dpdGh1Yi5jb20vV2lraXBsdXMvV2lraXBsdXMvaXNzdWVzLzY1PiAqL1xuXHRpZiAoaXNWZUVuYWJsZSkge1xuXHRcdGF3YWl0IG13LmxvYWRlci51c2luZygnZXh0LnZpc3VhbEVkaXRvci5jb3JlJyk7XG5cdH1cblxuXHRpZiAoISgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudCkpIHtcblx0XHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy9oaWdobGlnaHQnKTtcblx0fVxufSkoKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQSw2RkFBQUEsU0FBQTtBQUFBO0FBQ0EsUUFBSSxRQUFRLFNBQVUsSUFBSTtBQUN4QixhQUFPLE1BQU0sR0FBRyxTQUFTLFFBQVE7QUFBQSxJQUNuQztBQUdBLElBQUFBLFFBQU87QUFBQSxJQUVMLE1BQU0sT0FBTyxjQUFjLFlBQVksVUFBVSxLQUNqRCxNQUFNLE9BQU8sVUFBVSxZQUFZLE1BQU07QUFBQSxJQUV6QyxNQUFNLE9BQU8sUUFBUSxZQUFZLElBQUksS0FDckMsTUFBTSxPQUFPLFVBQVUsWUFBWSxNQUFNLEtBQ3pDLE1BQU0sT0FBTyxXQUFRLFlBQVksT0FBSTtBQUFBLElBRXBDLDJCQUFZO0FBQUUsYUFBTztBQUFBLElBQU0sRUFBRyxLQUFLLFNBQVMsYUFBYSxFQUFFO0FBQUE7QUFBQTs7O0FDZjlEO0FBQUEsdUZBQUFDLFNBQUE7QUFBQTtBQUNBLElBQUFBLFFBQU8sVUFBVSxTQUFVLE1BQU07QUFDL0IsVUFBSTtBQUNGLGVBQU8sQ0FBQyxDQUFDLEtBQUs7QUFBQSxNQUNoQixTQUFTLE9BQU87QUFDZCxlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNQQTtBQUFBLDZGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLFFBQVE7QUFHWixJQUFBQSxRQUFPLFVBQVUsQ0FBQyxNQUFNLFdBQVk7QUFFbEMsYUFBTyxPQUFPLGVBQWUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLFdBQVk7QUFBRSxlQUFPO0FBQUEsTUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU07QUFBQSxJQUNqRixDQUFDO0FBQUE7QUFBQTs7O0FDUEQ7QUFBQSxzR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxRQUFRO0FBRVosSUFBQUEsUUFBTyxVQUFVLENBQUMsTUFBTSxXQUFZO0FBRWxDLFVBQUksT0FBUSxXQUFZO0FBQUEsTUFBYyxFQUFHLEtBQUs7QUFFOUMsYUFBTyxPQUFPLFFBQVEsY0FBYyxLQUFLLGVBQWUsV0FBVztBQUFBLElBQ3JFLENBQUM7QUFBQTtBQUFBOzs7QUNSRDtBQUFBLCtGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFFbEIsUUFBSSxPQUFPLFNBQVMsVUFBVTtBQUU5QixJQUFBQSxRQUFPLFVBQVUsY0FBYyxLQUFLLEtBQUssSUFBSSxJQUFJLFdBQVk7QUFDM0QsYUFBTyxLQUFLLE1BQU0sTUFBTSxTQUFTO0FBQUEsSUFDbkM7QUFBQTtBQUFBOzs7QUNQQTtBQUFBO0FBQUE7QUFDQSxRQUFJLHdCQUF3QixDQUFDLEVBQUU7QUFFL0IsUUFBSSwyQkFBMkIsT0FBTztBQUd0QyxRQUFJLGNBQWMsNEJBQTRCLENBQUMsc0JBQXNCLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBSXJGLFlBQVEsSUFBSSxjQUFjLFNBQVMscUJBQXFCLEdBQUc7QUFDekQsVUFBSSxhQUFhLHlCQUF5QixNQUFNLENBQUM7QUFDakQsYUFBTyxDQUFDLENBQUMsY0FBYyxXQUFXO0FBQUEsSUFDcEMsSUFBSTtBQUFBO0FBQUE7OztBQ2JKO0FBQUEsNEdBQUFDLFNBQUE7QUFBQTtBQUNBLElBQUFBLFFBQU8sVUFBVSxTQUFVLFFBQVEsT0FBTztBQUN4QyxhQUFPO0FBQUEsUUFDTCxZQUFZLEVBQUUsU0FBUztBQUFBLFFBQ3ZCLGNBQWMsRUFBRSxTQUFTO0FBQUEsUUFDekIsVUFBVSxFQUFFLFNBQVM7QUFBQSxRQUNyQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDUkE7QUFBQSx1R0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxjQUFjO0FBRWxCLFFBQUksb0JBQW9CLFNBQVM7QUFDakMsUUFBSSxPQUFPLGtCQUFrQjtBQUM3QixRQUFJLHNCQUFzQixlQUFlLGtCQUFrQixLQUFLLEtBQUssTUFBTSxJQUFJO0FBRS9FLElBQUFBLFFBQU8sVUFBVSxjQUFjLHNCQUFzQixTQUFVLElBQUk7QUFDakUsYUFBTyxXQUFZO0FBQ2pCLGVBQU8sS0FBSyxNQUFNLElBQUksU0FBUztBQUFBLE1BQ2pDO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ1hBO0FBQUEsNkZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksY0FBYztBQUVsQixRQUFJLFdBQVcsWUFBWSxDQUFDLEVBQUUsUUFBUTtBQUN0QyxRQUFJLGNBQWMsWUFBWSxHQUFHLEtBQUs7QUFFdEMsSUFBQUEsUUFBTyxVQUFVLFNBQVUsSUFBSTtBQUM3QixhQUFPLFlBQVksU0FBUyxFQUFFLEdBQUcsR0FBRyxFQUFFO0FBQUEsSUFDeEM7QUFBQTtBQUFBOzs7QUNSQTtBQUFBLGdHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSxRQUFRO0FBQ1osUUFBSSxVQUFVO0FBRWQsUUFBSSxVQUFVO0FBQ2QsUUFBSSxRQUFRLFlBQVksR0FBRyxLQUFLO0FBR2hDLElBQUFBLFFBQU8sVUFBVSxNQUFNLFdBQVk7QUFHakMsYUFBTyxDQUFDLFFBQVEsR0FBRyxFQUFFLHFCQUFxQixDQUFDO0FBQUEsSUFDN0MsQ0FBQyxJQUFJLFNBQVUsSUFBSTtBQUNqQixhQUFPLFFBQVEsRUFBRSxNQUFNLFdBQVcsTUFBTSxJQUFJLEVBQUUsSUFBSSxRQUFRLEVBQUU7QUFBQSxJQUM5RCxJQUFJO0FBQUE7QUFBQTs7O0FDZko7QUFBQSxzR0FBQUMsU0FBQTtBQUFBO0FBR0EsSUFBQUEsUUFBTyxVQUFVLFNBQVUsSUFBSTtBQUM3QixhQUFPLE9BQU8sUUFBUSxPQUFPO0FBQUEsSUFDL0I7QUFBQTtBQUFBOzs7QUNMQTtBQUFBLDBHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLG9CQUFvQjtBQUV4QixRQUFJLGFBQWE7QUFJakIsSUFBQUEsUUFBTyxVQUFVLFNBQVUsSUFBSTtBQUM3QixVQUFJLGtCQUFrQixFQUFFLEVBQUcsT0FBTSxJQUFJLFdBQVcsMEJBQTBCLEVBQUU7QUFDNUUsYUFBTztBQUFBLElBQ1Q7QUFBQTtBQUFBOzs7QUNWQTtBQUFBLG1HQUFBQyxTQUFBO0FBQUE7QUFFQSxRQUFJLGdCQUFnQjtBQUNwQixRQUFJLHlCQUF5QjtBQUU3QixJQUFBQSxRQUFPLFVBQVUsU0FBVSxJQUFJO0FBQzdCLGFBQU8sY0FBYyx1QkFBdUIsRUFBRSxDQUFDO0FBQUEsSUFDakQ7QUFBQTtBQUFBOzs7QUNQQTtBQUFBLDZGQUFBQyxTQUFBO0FBQUE7QUFFQSxRQUFJLGNBQWMsT0FBTyxZQUFZLFlBQVksU0FBUztBQUsxRCxJQUFBQSxRQUFPLFVBQVUsT0FBTyxlQUFlLGVBQWUsZ0JBQWdCLFNBQVksU0FBVSxVQUFVO0FBQ3BHLGFBQU8sT0FBTyxZQUFZLGNBQWMsYUFBYTtBQUFBLElBQ3ZELElBQUksU0FBVSxVQUFVO0FBQ3RCLGFBQU8sT0FBTyxZQUFZO0FBQUEsSUFDNUI7QUFBQTtBQUFBOzs7QUNYQTtBQUFBLDJGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGFBQWE7QUFFakIsSUFBQUEsUUFBTyxVQUFVLFNBQVUsSUFBSTtBQUM3QixhQUFPLE9BQU8sTUFBTSxXQUFXLE9BQU8sT0FBTyxXQUFXLEVBQUU7QUFBQSxJQUM1RDtBQUFBO0FBQUE7OztBQ0xBO0FBQUEsOEZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUlDLGNBQWE7QUFDakIsUUFBSSxhQUFhO0FBRWpCLFFBQUksWUFBWSxTQUFVLFVBQVU7QUFDbEMsYUFBTyxXQUFXLFFBQVEsSUFBSSxXQUFXO0FBQUEsSUFDM0M7QUFFQSxJQUFBRCxRQUFPLFVBQVUsU0FBVSxXQUFXLFFBQVE7QUFDNUMsYUFBTyxVQUFVLFNBQVMsSUFBSSxVQUFVQyxZQUFXLFNBQVMsQ0FBQyxJQUFJQSxZQUFXLFNBQVMsS0FBS0EsWUFBVyxTQUFTLEVBQUUsTUFBTTtBQUFBLElBQ3hIO0FBQUE7QUFBQTs7O0FDVkE7QUFBQSx3R0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxjQUFjO0FBRWxCLElBQUFBLFFBQU8sVUFBVSxZQUFZLENBQUMsRUFBRSxhQUFhO0FBQUE7QUFBQTs7O0FDSDdDO0FBQUEsd0dBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUlDLGNBQWE7QUFFakIsUUFBSSxZQUFZQSxZQUFXO0FBQzNCLFFBQUksWUFBWSxhQUFhLFVBQVU7QUFFdkMsSUFBQUQsUUFBTyxVQUFVLFlBQVksT0FBTyxTQUFTLElBQUk7QUFBQTtBQUFBOzs7QUNOakQ7QUFBQSx3R0FBQUUsU0FBQTtBQUFBO0FBQ0EsUUFBSUMsY0FBYTtBQUNqQixRQUFJLFlBQVk7QUFFaEIsUUFBSSxVQUFVQSxZQUFXO0FBQ3pCLFFBQUksT0FBT0EsWUFBVztBQUN0QixRQUFJLFdBQVcsV0FBVyxRQUFRLFlBQVksUUFBUSxLQUFLO0FBQzNELFFBQUksS0FBSyxZQUFZLFNBQVM7QUFDOUIsUUFBSTtBQUFKLFFBQVc7QUFFWCxRQUFJLElBQUk7QUFDTixjQUFRLEdBQUcsTUFBTSxHQUFHO0FBR3BCLGdCQUFVLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDO0FBQUEsSUFDbkU7QUFJQSxRQUFJLENBQUMsV0FBVyxXQUFXO0FBQ3pCLGNBQVEsVUFBVSxNQUFNLGFBQWE7QUFDckMsVUFBSSxDQUFDLFNBQVMsTUFBTSxDQUFDLEtBQUssSUFBSTtBQUM1QixnQkFBUSxVQUFVLE1BQU0sZUFBZTtBQUN2QyxZQUFJLE1BQU8sV0FBVSxDQUFDLE1BQU0sQ0FBQztBQUFBLE1BQy9CO0FBQUEsSUFDRjtBQUVBLElBQUFELFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQzNCakI7QUFBQSw4R0FBQUUsU0FBQTtBQUFBO0FBRUEsUUFBSSxhQUFhO0FBQ2pCLFFBQUksUUFBUTtBQUNaLFFBQUlDLGNBQWE7QUFFakIsUUFBSSxVQUFVQSxZQUFXO0FBR3pCLElBQUFELFFBQU8sVUFBVSxDQUFDLENBQUMsT0FBTyx5QkFBeUIsQ0FBQyxNQUFNLFdBQVk7QUFDcEUsVUFBSSxTQUFTLE9BQU8sa0JBQWtCO0FBS3RDLGFBQU8sQ0FBQyxRQUFRLE1BQU0sS0FBSyxFQUFFLE9BQU8sTUFBTSxhQUFhO0FBQUEsTUFFckQsQ0FBQyxPQUFPLFFBQVEsY0FBYyxhQUFhO0FBQUEsSUFDL0MsQ0FBQztBQUFBO0FBQUE7OztBQ2xCRDtBQUFBLG1HQUFBRSxTQUFBO0FBQUE7QUFFQSxRQUFJLGdCQUFnQjtBQUVwQixJQUFBQSxRQUFPLFVBQVUsaUJBQ1osQ0FBQyxPQUFPLFFBQ1IsT0FBTyxPQUFPLFlBQVk7QUFBQTtBQUFBOzs7QUNOL0I7QUFBQSwyRkFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxhQUFhO0FBQ2pCLFFBQUksYUFBYTtBQUNqQixRQUFJLGdCQUFnQjtBQUNwQixRQUFJLG9CQUFvQjtBQUV4QixRQUFJLFVBQVU7QUFFZCxJQUFBQSxRQUFPLFVBQVUsb0JBQW9CLFNBQVUsSUFBSTtBQUNqRCxhQUFPLE9BQU8sTUFBTTtBQUFBLElBQ3RCLElBQUksU0FBVSxJQUFJO0FBQ2hCLFVBQUksVUFBVSxXQUFXLFFBQVE7QUFDakMsYUFBTyxXQUFXLE9BQU8sS0FBSyxjQUFjLFFBQVEsV0FBVyxRQUFRLEVBQUUsQ0FBQztBQUFBLElBQzVFO0FBQUE7QUFBQTs7O0FDYkE7QUFBQSwrRkFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxVQUFVO0FBRWQsSUFBQUEsUUFBTyxVQUFVLFNBQVUsVUFBVTtBQUNuQyxVQUFJO0FBQ0YsZUFBTyxRQUFRLFFBQVE7QUFBQSxNQUN6QixTQUFTLE9BQU87QUFDZCxlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNUQTtBQUFBLDRGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGFBQWE7QUFDakIsUUFBSSxjQUFjO0FBRWxCLFFBQUksYUFBYTtBQUdqQixJQUFBQSxRQUFPLFVBQVUsU0FBVSxVQUFVO0FBQ25DLFVBQUksV0FBVyxRQUFRLEVBQUcsUUFBTztBQUNqQyxZQUFNLElBQUksV0FBVyxZQUFZLFFBQVEsSUFBSSxvQkFBb0I7QUFBQSxJQUNuRTtBQUFBO0FBQUE7OztBQ1ZBO0FBQUEsNEZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksWUFBWTtBQUNoQixRQUFJLG9CQUFvQjtBQUl4QixJQUFBQSxRQUFPLFVBQVUsU0FBVSxHQUFHLEdBQUc7QUFDL0IsVUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNkLGFBQU8sa0JBQWtCLElBQUksSUFBSSxTQUFZLFVBQVUsSUFBSTtBQUFBLElBQzdEO0FBQUE7QUFBQTs7O0FDVEE7QUFBQSx1R0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxPQUFPO0FBQ1gsUUFBSSxhQUFhO0FBQ2pCLFFBQUksV0FBVztBQUVmLFFBQUksYUFBYTtBQUlqQixJQUFBQSxRQUFPLFVBQVUsU0FBVSxPQUFPLE1BQU07QUFDdEMsVUFBSSxJQUFJO0FBQ1IsVUFBSSxTQUFTLFlBQVksV0FBVyxLQUFLLE1BQU0sUUFBUSxLQUFLLENBQUMsU0FBUyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRyxRQUFPO0FBQ3JHLFVBQUksV0FBVyxLQUFLLE1BQU0sT0FBTyxLQUFLLENBQUMsU0FBUyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRyxRQUFPO0FBQy9FLFVBQUksU0FBUyxZQUFZLFdBQVcsS0FBSyxNQUFNLFFBQVEsS0FBSyxDQUFDLFNBQVMsTUFBTSxLQUFLLElBQUksS0FBSyxDQUFDLEVBQUcsUUFBTztBQUNyRyxZQUFNLElBQUksV0FBVyx5Q0FBeUM7QUFBQSxJQUNoRTtBQUFBO0FBQUE7OztBQ2ZBO0FBQUEseUZBQUFDLFNBQUE7QUFBQTtBQUNBLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ0RqQjtBQUFBLHdHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJQyxjQUFhO0FBR2pCLFFBQUksaUJBQWlCLE9BQU87QUFFNUIsSUFBQUQsUUFBTyxVQUFVLFNBQVUsS0FBSyxPQUFPO0FBQ3JDLFVBQUk7QUFDRix1QkFBZUMsYUFBWSxLQUFLLEVBQUUsT0FBYyxjQUFjLE1BQU0sVUFBVSxLQUFLLENBQUM7QUFBQSxNQUN0RixTQUFTLE9BQU87QUFDZCxRQUFBQSxZQUFXLEdBQUcsSUFBSTtBQUFBLE1BQ3BCO0FBQUUsYUFBTztBQUFBLElBQ1g7QUFBQTtBQUFBOzs7QUNaQTtBQUFBLDhGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLFVBQVU7QUFDZCxRQUFJQyxjQUFhO0FBQ2pCLFFBQUksdUJBQXVCO0FBRTNCLFFBQUksU0FBUztBQUNiLFFBQUksUUFBUUQsUUFBTyxVQUFVQyxZQUFXLE1BQU0sS0FBSyxxQkFBcUIsUUFBUSxDQUFDLENBQUM7QUFFbEYsS0FBQyxNQUFNLGFBQWEsTUFBTSxXQUFXLENBQUMsSUFBSSxLQUFLO0FBQUEsTUFDN0MsU0FBUztBQUFBLE1BQ1QsTUFBTSxVQUFVLFNBQVM7QUFBQSxNQUN6QixXQUFXO0FBQUEsTUFDWCxTQUFTO0FBQUEsTUFDVCxRQUFRO0FBQUEsSUFDVixDQUFDO0FBQUE7QUFBQTs7O0FDZEQ7QUFBQSx3RkFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxRQUFRO0FBRVosSUFBQUEsUUFBTyxVQUFVLFNBQVUsS0FBSyxPQUFPO0FBQ3JDLGFBQU8sTUFBTSxHQUFHLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDO0FBQUEsSUFDL0M7QUFBQTtBQUFBOzs7QUNMQTtBQUFBLDJGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLHlCQUF5QjtBQUU3QixRQUFJLFVBQVU7QUFJZCxJQUFBQSxRQUFPLFVBQVUsU0FBVSxVQUFVO0FBQ25DLGFBQU8sUUFBUSx1QkFBdUIsUUFBUSxDQUFDO0FBQUEsSUFDakQ7QUFBQTtBQUFBOzs7QUNUQTtBQUFBLGtHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSxXQUFXO0FBRWYsUUFBSSxpQkFBaUIsWUFBWSxDQUFDLEVBQUUsY0FBYztBQUtsRCxJQUFBQSxRQUFPLFVBQVUsT0FBTyxVQUFVLFNBQVMsT0FBTyxJQUFJLEtBQUs7QUFDekQsYUFBTyxlQUFlLFNBQVMsRUFBRSxHQUFHLEdBQUc7QUFBQSxJQUN6QztBQUFBO0FBQUE7OztBQ1hBO0FBQUEscUZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksY0FBYztBQUVsQixRQUFJLEtBQUs7QUFDVCxRQUFJLFVBQVUsS0FBSyxPQUFPO0FBQzFCLFFBQUksV0FBVyxZQUFZLEdBQUksUUFBUTtBQUV2QyxJQUFBQSxRQUFPLFVBQVUsU0FBVSxLQUFLO0FBQzlCLGFBQU8sYUFBYSxRQUFRLFNBQVksS0FBSyxPQUFPLE9BQU8sU0FBUyxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQUEsSUFDeEY7QUFBQTtBQUFBOzs7QUNUQTtBQUFBLG1HQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJQyxjQUFhO0FBQ2pCLFFBQUksU0FBUztBQUNiLFFBQUksU0FBUztBQUNiLFFBQUksTUFBTTtBQUNWLFFBQUksZ0JBQWdCO0FBQ3BCLFFBQUksb0JBQW9CO0FBRXhCLFFBQUlDLFVBQVNELFlBQVc7QUFDeEIsUUFBSSx3QkFBd0IsT0FBTyxLQUFLO0FBQ3hDLFFBQUksd0JBQXdCLG9CQUFvQkMsUUFBTyxLQUFLLEtBQUtBLFVBQVNBLFdBQVVBLFFBQU8saUJBQWlCO0FBRTVHLElBQUFGLFFBQU8sVUFBVSxTQUFVLE1BQU07QUFDL0IsVUFBSSxDQUFDLE9BQU8sdUJBQXVCLElBQUksR0FBRztBQUN4Qyw4QkFBc0IsSUFBSSxJQUFJLGlCQUFpQixPQUFPRSxTQUFRLElBQUksSUFDOURBLFFBQU8sSUFBSSxJQUNYLHNCQUFzQixZQUFZLElBQUk7QUFBQSxNQUM1QztBQUFFLGFBQU8sc0JBQXNCLElBQUk7QUFBQSxJQUNyQztBQUFBO0FBQUE7OztBQ2xCQTtBQUFBLDhGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLE9BQU87QUFDWCxRQUFJLFdBQVc7QUFDZixRQUFJLFdBQVc7QUFDZixRQUFJLFlBQVk7QUFDaEIsUUFBSSxzQkFBc0I7QUFDMUIsUUFBSSxrQkFBa0I7QUFFdEIsUUFBSSxhQUFhO0FBQ2pCLFFBQUksZUFBZSxnQkFBZ0IsYUFBYTtBQUloRCxJQUFBQSxRQUFPLFVBQVUsU0FBVSxPQUFPLE1BQU07QUFDdEMsVUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLFNBQVMsS0FBSyxFQUFHLFFBQU87QUFDaEQsVUFBSSxlQUFlLFVBQVUsT0FBTyxZQUFZO0FBQ2hELFVBQUk7QUFDSixVQUFJLGNBQWM7QUFDaEIsWUFBSSxTQUFTLE9BQVcsUUFBTztBQUMvQixpQkFBUyxLQUFLLGNBQWMsT0FBTyxJQUFJO0FBQ3ZDLFlBQUksQ0FBQyxTQUFTLE1BQU0sS0FBSyxTQUFTLE1BQU0sRUFBRyxRQUFPO0FBQ2xELGNBQU0sSUFBSSxXQUFXLHlDQUF5QztBQUFBLE1BQ2hFO0FBQ0EsVUFBSSxTQUFTLE9BQVcsUUFBTztBQUMvQixhQUFPLG9CQUFvQixPQUFPLElBQUk7QUFBQSxJQUN4QztBQUFBO0FBQUE7OztBQ3pCQTtBQUFBLGlHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSxXQUFXO0FBSWYsSUFBQUEsUUFBTyxVQUFVLFNBQVUsVUFBVTtBQUNuQyxVQUFJLE1BQU0sWUFBWSxVQUFVLFFBQVE7QUFDeEMsYUFBTyxTQUFTLEdBQUcsSUFBSSxNQUFNLE1BQU07QUFBQSxJQUNyQztBQUFBO0FBQUE7OztBQ1RBO0FBQUEseUdBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUlDLGNBQWE7QUFDakIsUUFBSSxXQUFXO0FBRWYsUUFBSUMsWUFBV0QsWUFBVztBQUUxQixRQUFJLFNBQVMsU0FBU0MsU0FBUSxLQUFLLFNBQVNBLFVBQVMsYUFBYTtBQUVsRSxJQUFBRixRQUFPLFVBQVUsU0FBVSxJQUFJO0FBQzdCLGFBQU8sU0FBU0UsVUFBUyxjQUFjLEVBQUUsSUFBSSxDQUFDO0FBQUEsSUFDaEQ7QUFBQTtBQUFBOzs7QUNWQTtBQUFBLGdHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSxRQUFRO0FBQ1osUUFBSSxnQkFBZ0I7QUFHcEIsSUFBQUEsUUFBTyxVQUFVLENBQUMsZUFBZSxDQUFDLE1BQU0sV0FBWTtBQUVsRCxhQUFPLE9BQU8sZUFBZSxjQUFjLEtBQUssR0FBRyxLQUFLO0FBQUEsUUFDdEQsS0FBSyxXQUFZO0FBQUUsaUJBQU87QUFBQSxRQUFHO0FBQUEsTUFDL0IsQ0FBQyxFQUFFLE1BQU07QUFBQSxJQUNYLENBQUM7QUFBQTtBQUFBOzs7QUNYRDtBQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSxPQUFPO0FBQ1gsUUFBSSw2QkFBNkI7QUFDakMsUUFBSSwyQkFBMkI7QUFDL0IsUUFBSSxrQkFBa0I7QUFDdEIsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSSxTQUFTO0FBQ2IsUUFBSSxpQkFBaUI7QUFHckIsUUFBSSw0QkFBNEIsT0FBTztBQUl2QyxZQUFRLElBQUksY0FBYyw0QkFBNEIsU0FBUyx5QkFBeUIsR0FBRyxHQUFHO0FBQzVGLFVBQUksZ0JBQWdCLENBQUM7QUFDckIsVUFBSSxjQUFjLENBQUM7QUFDbkIsVUFBSSxlQUFnQixLQUFJO0FBQ3RCLGVBQU8sMEJBQTBCLEdBQUcsQ0FBQztBQUFBLE1BQ3ZDLFNBQVMsT0FBTztBQUFBLE1BQWM7QUFDOUIsVUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFHLFFBQU8seUJBQXlCLENBQUMsS0FBSywyQkFBMkIsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUFBLElBQ25HO0FBQUE7QUFBQTs7O0FDdEJBO0FBQUEseUdBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksY0FBYztBQUNsQixRQUFJLFFBQVE7QUFJWixJQUFBQSxRQUFPLFVBQVUsZUFBZSxNQUFNLFdBQVk7QUFFaEQsYUFBTyxPQUFPLGVBQWUsV0FBWTtBQUFBLE1BQWMsR0FBRyxhQUFhO0FBQUEsUUFDckUsT0FBTztBQUFBLFFBQ1AsVUFBVTtBQUFBLE1BQ1osQ0FBQyxFQUFFLGNBQWM7QUFBQSxJQUNuQixDQUFDO0FBQUE7QUFBQTs7O0FDWkQ7QUFBQSwyRkFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxXQUFXO0FBRWYsUUFBSSxVQUFVO0FBQ2QsUUFBSSxhQUFhO0FBR2pCLElBQUFBLFFBQU8sVUFBVSxTQUFVLFVBQVU7QUFDbkMsVUFBSSxTQUFTLFFBQVEsRUFBRyxRQUFPO0FBQy9CLFlBQU0sSUFBSSxXQUFXLFFBQVEsUUFBUSxJQUFJLG1CQUFtQjtBQUFBLElBQzlEO0FBQUE7QUFBQTs7O0FDVkE7QUFBQTtBQUFBO0FBQ0EsUUFBSSxjQUFjO0FBQ2xCLFFBQUksaUJBQWlCO0FBQ3JCLFFBQUksMEJBQTBCO0FBQzlCLFFBQUksV0FBVztBQUNmLFFBQUksZ0JBQWdCO0FBRXBCLFFBQUksYUFBYTtBQUVqQixRQUFJLGtCQUFrQixPQUFPO0FBRTdCLFFBQUksNEJBQTRCLE9BQU87QUFDdkMsUUFBSSxhQUFhO0FBQ2pCLFFBQUksZUFBZTtBQUNuQixRQUFJLFdBQVc7QUFJZixZQUFRLElBQUksY0FBYywwQkFBMEIsU0FBUyxlQUFlLEdBQUcsR0FBRyxZQUFZO0FBQzVGLGVBQVMsQ0FBQztBQUNWLFVBQUksY0FBYyxDQUFDO0FBQ25CLGVBQVMsVUFBVTtBQUNuQixVQUFJLE9BQU8sTUFBTSxjQUFjLE1BQU0sZUFBZSxXQUFXLGNBQWMsWUFBWSxjQUFjLENBQUMsV0FBVyxRQUFRLEdBQUc7QUFDNUgsWUFBSSxVQUFVLDBCQUEwQixHQUFHLENBQUM7QUFDNUMsWUFBSSxXQUFXLFFBQVEsUUFBUSxHQUFHO0FBQ2hDLFlBQUUsQ0FBQyxJQUFJLFdBQVc7QUFDbEIsdUJBQWE7QUFBQSxZQUNYLGNBQWMsZ0JBQWdCLGFBQWEsV0FBVyxZQUFZLElBQUksUUFBUSxZQUFZO0FBQUEsWUFDMUYsWUFBWSxjQUFjLGFBQWEsV0FBVyxVQUFVLElBQUksUUFBUSxVQUFVO0FBQUEsWUFDbEYsVUFBVTtBQUFBLFVBQ1o7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFFLGFBQU8sZ0JBQWdCLEdBQUcsR0FBRyxVQUFVO0FBQUEsSUFDM0MsSUFBSSxrQkFBa0IsU0FBUyxlQUFlLEdBQUcsR0FBRyxZQUFZO0FBQzlELGVBQVMsQ0FBQztBQUNWLFVBQUksY0FBYyxDQUFDO0FBQ25CLGVBQVMsVUFBVTtBQUNuQixVQUFJLGVBQWdCLEtBQUk7QUFDdEIsZUFBTyxnQkFBZ0IsR0FBRyxHQUFHLFVBQVU7QUFBQSxNQUN6QyxTQUFTLE9BQU87QUFBQSxNQUFjO0FBQzlCLFVBQUksU0FBUyxjQUFjLFNBQVMsV0FBWSxPQUFNLElBQUksV0FBVyx5QkFBeUI7QUFDOUYsVUFBSSxXQUFXLFdBQVksR0FBRSxDQUFDLElBQUksV0FBVztBQUM3QyxhQUFPO0FBQUEsSUFDVDtBQUFBO0FBQUE7OztBQzNDQTtBQUFBLGdIQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSx1QkFBdUI7QUFDM0IsUUFBSSwyQkFBMkI7QUFFL0IsSUFBQUEsUUFBTyxVQUFVLGNBQWMsU0FBVSxRQUFRLEtBQUssT0FBTztBQUMzRCxhQUFPLHFCQUFxQixFQUFFLFFBQVEsS0FBSyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7QUFBQSxJQUMvRSxJQUFJLFNBQVUsUUFBUSxLQUFLLE9BQU87QUFDaEMsYUFBTyxHQUFHLElBQUk7QUFDZCxhQUFPO0FBQUEsSUFDVDtBQUFBO0FBQUE7OztBQ1ZBO0FBQUEsK0ZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksY0FBYztBQUNsQixRQUFJLFNBQVM7QUFFYixRQUFJLG9CQUFvQixTQUFTO0FBRWpDLFFBQUksZ0JBQWdCLGVBQWUsT0FBTztBQUUxQyxRQUFJLFNBQVMsT0FBTyxtQkFBbUIsTUFBTTtBQUU3QyxRQUFJLFNBQVMsVUFBVyxTQUFTLFlBQVk7QUFBQSxJQUFjLEVBQUcsU0FBUztBQUN2RSxRQUFJLGVBQWUsV0FBVyxDQUFDLGVBQWdCLGVBQWUsY0FBYyxtQkFBbUIsTUFBTSxFQUFFO0FBRXZHLElBQUFBLFFBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNqQkE7QUFBQSxnR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxjQUFjO0FBQ2xCLFFBQUksYUFBYTtBQUNqQixRQUFJLFFBQVE7QUFFWixRQUFJLG1CQUFtQixZQUFZLFNBQVMsUUFBUTtBQUdwRCxRQUFJLENBQUMsV0FBVyxNQUFNLGFBQWEsR0FBRztBQUNwQyxZQUFNLGdCQUFnQixTQUFVLElBQUk7QUFDbEMsZUFBTyxpQkFBaUIsRUFBRTtBQUFBLE1BQzVCO0FBQUEsSUFDRjtBQUVBLElBQUFBLFFBQU8sVUFBVSxNQUFNO0FBQUE7QUFBQTs7O0FDZHZCO0FBQUEsMEdBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUlDLGNBQWE7QUFDakIsUUFBSSxhQUFhO0FBRWpCLFFBQUksVUFBVUEsWUFBVztBQUV6QixJQUFBRCxRQUFPLFVBQVUsV0FBVyxPQUFPLEtBQUssY0FBYyxLQUFLLE9BQU8sT0FBTyxDQUFDO0FBQUE7QUFBQTs7O0FDTjFFO0FBQUEsNEZBQUFFLFNBQUE7QUFBQTtBQUNBLFFBQUksU0FBUztBQUNiLFFBQUksTUFBTTtBQUVWLFFBQUksT0FBTyxPQUFPLE1BQU07QUFFeEIsSUFBQUEsUUFBTyxVQUFVLFNBQVUsS0FBSztBQUM5QixhQUFPLEtBQUssR0FBRyxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRztBQUFBLElBQzFDO0FBQUE7QUFBQTs7O0FDUkE7QUFBQSw2RkFBQUMsU0FBQTtBQUFBO0FBQ0EsSUFBQUEsUUFBTyxVQUFVLENBQUM7QUFBQTtBQUFBOzs7QUNEbEI7QUFBQSxnR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxrQkFBa0I7QUFDdEIsUUFBSUMsY0FBYTtBQUNqQixRQUFJLFdBQVc7QUFDZixRQUFJLDhCQUE4QjtBQUNsQyxRQUFJLFNBQVM7QUFDYixRQUFJLFNBQVM7QUFDYixRQUFJLFlBQVk7QUFDaEIsUUFBSSxhQUFhO0FBRWpCLFFBQUksNkJBQTZCO0FBQ2pDLFFBQUlDLGFBQVlELFlBQVc7QUFDM0IsUUFBSSxVQUFVQSxZQUFXO0FBQ3pCLFFBQUk7QUFBSixRQUFTO0FBQVQsUUFBYztBQUVkLFFBQUksVUFBVSxTQUFVLElBQUk7QUFDMUIsYUFBTyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQUEsSUFDdkM7QUFFQSxRQUFJLFlBQVksU0FBVSxNQUFNO0FBQzlCLGFBQU8sU0FBVSxJQUFJO0FBQ25CLFlBQUk7QUFDSixZQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sUUFBUSxJQUFJLEVBQUUsR0FBRyxTQUFTLE1BQU07QUFDcEQsZ0JBQU0sSUFBSUMsV0FBVSw0QkFBNEIsT0FBTyxXQUFXO0FBQUEsUUFDcEU7QUFBRSxlQUFPO0FBQUEsTUFDWDtBQUFBLElBQ0Y7QUFFQSxRQUFJLG1CQUFtQixPQUFPLE9BQU87QUFDL0IsY0FBUSxPQUFPLFVBQVUsT0FBTyxRQUFRLElBQUksUUFBUTtBQUV4RCxZQUFNLE1BQU0sTUFBTTtBQUNsQixZQUFNLE1BQU0sTUFBTTtBQUNsQixZQUFNLE1BQU0sTUFBTTtBQUVsQixZQUFNLFNBQVUsSUFBSSxVQUFVO0FBQzVCLFlBQUksTUFBTSxJQUFJLEVBQUUsRUFBRyxPQUFNLElBQUlBLFdBQVUsMEJBQTBCO0FBQ2pFLGlCQUFTLFNBQVM7QUFDbEIsY0FBTSxJQUFJLElBQUksUUFBUTtBQUN0QixlQUFPO0FBQUEsTUFDVDtBQUNBLFlBQU0sU0FBVSxJQUFJO0FBQ2xCLGVBQU8sTUFBTSxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQUEsTUFDM0I7QUFDQSxZQUFNLFNBQVUsSUFBSTtBQUNsQixlQUFPLE1BQU0sSUFBSSxFQUFFO0FBQUEsTUFDckI7QUFBQSxJQUNGLE9BQU87QUFDRCxjQUFRLFVBQVUsT0FBTztBQUM3QixpQkFBVyxLQUFLLElBQUk7QUFDcEIsWUFBTSxTQUFVLElBQUksVUFBVTtBQUM1QixZQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUcsT0FBTSxJQUFJQSxXQUFVLDBCQUEwQjtBQUNyRSxpQkFBUyxTQUFTO0FBQ2xCLG9DQUE0QixJQUFJLE9BQU8sUUFBUTtBQUMvQyxlQUFPO0FBQUEsTUFDVDtBQUNBLFlBQU0sU0FBVSxJQUFJO0FBQ2xCLGVBQU8sT0FBTyxJQUFJLEtBQUssSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQUEsTUFDMUM7QUFDQSxZQUFNLFNBQVUsSUFBSTtBQUNsQixlQUFPLE9BQU8sSUFBSSxLQUFLO0FBQUEsTUFDekI7QUFBQSxJQUNGO0FBakNNO0FBbUJBO0FBZ0JOLElBQUFGLFFBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ3RFQTtBQUFBLCtGQUFBRyxTQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSxRQUFRO0FBQ1osUUFBSSxhQUFhO0FBQ2pCLFFBQUksU0FBUztBQUNiLFFBQUksY0FBYztBQUNsQixRQUFJLDZCQUE2Qix3QkFBc0M7QUFDdkUsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSSxzQkFBc0I7QUFFMUIsUUFBSSx1QkFBdUIsb0JBQW9CO0FBQy9DLFFBQUksbUJBQW1CLG9CQUFvQjtBQUMzQyxRQUFJLFVBQVU7QUFFZCxRQUFJLGlCQUFpQixPQUFPO0FBQzVCLFFBQUksY0FBYyxZQUFZLEdBQUcsS0FBSztBQUN0QyxRQUFJLFVBQVUsWUFBWSxHQUFHLE9BQU87QUFDcEMsUUFBSSxPQUFPLFlBQVksQ0FBQyxFQUFFLElBQUk7QUFFOUIsUUFBSSxzQkFBc0IsZUFBZSxDQUFDLE1BQU0sV0FBWTtBQUMxRCxhQUFPLGVBQWUsV0FBWTtBQUFBLE1BQWMsR0FBRyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxXQUFXO0FBQUEsSUFDeEYsQ0FBQztBQUVELFFBQUksV0FBVyxPQUFPLE1BQU0sRUFBRSxNQUFNLFFBQVE7QUFFNUMsUUFBSSxjQUFjQSxRQUFPLFVBQVUsU0FBVSxPQUFPLE1BQU0sU0FBUztBQUNqRSxVQUFJLFlBQVksUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sV0FBVztBQUNsRCxlQUFPLE1BQU0sUUFBUSxRQUFRLElBQUksR0FBRyx5QkFBeUIsSUFBSSxJQUFJO0FBQUEsTUFDdkU7QUFDQSxVQUFJLFdBQVcsUUFBUSxPQUFRLFFBQU8sU0FBUztBQUMvQyxVQUFJLFdBQVcsUUFBUSxPQUFRLFFBQU8sU0FBUztBQUMvQyxVQUFJLENBQUMsT0FBTyxPQUFPLE1BQU0sS0FBTSw4QkFBOEIsTUFBTSxTQUFTLE1BQU87QUFDakYsWUFBSSxZQUFhLGdCQUFlLE9BQU8sUUFBUSxFQUFFLE9BQU8sTUFBTSxjQUFjLEtBQUssQ0FBQztBQUFBLFlBQzdFLE9BQU0sT0FBTztBQUFBLE1BQ3BCO0FBQ0EsVUFBSSx1QkFBdUIsV0FBVyxPQUFPLFNBQVMsT0FBTyxLQUFLLE1BQU0sV0FBVyxRQUFRLE9BQU87QUFDaEcsdUJBQWUsT0FBTyxVQUFVLEVBQUUsT0FBTyxRQUFRLE1BQU0sQ0FBQztBQUFBLE1BQzFEO0FBQ0EsVUFBSTtBQUNGLFlBQUksV0FBVyxPQUFPLFNBQVMsYUFBYSxLQUFLLFFBQVEsYUFBYTtBQUNwRSxjQUFJLFlBQWEsZ0JBQWUsT0FBTyxhQUFhLEVBQUUsVUFBVSxNQUFNLENBQUM7QUFBQSxRQUV6RSxXQUFXLE1BQU0sVUFBVyxPQUFNLFlBQVk7QUFBQSxNQUNoRCxTQUFTLE9BQU87QUFBQSxNQUFjO0FBQzlCLFVBQUksUUFBUSxxQkFBcUIsS0FBSztBQUN0QyxVQUFJLENBQUMsT0FBTyxPQUFPLFFBQVEsR0FBRztBQUM1QixjQUFNLFNBQVMsS0FBSyxVQUFVLE9BQU8sUUFBUSxXQUFXLE9BQU8sRUFBRTtBQUFBLE1BQ25FO0FBQUUsYUFBTztBQUFBLElBQ1g7QUFJQSxhQUFTLFVBQVUsV0FBVyxZQUFZLFNBQVMsV0FBVztBQUM1RCxhQUFPLFdBQVcsSUFBSSxLQUFLLGlCQUFpQixJQUFJLEVBQUUsVUFBVSxjQUFjLElBQUk7QUFBQSxJQUNoRixHQUFHLFVBQVU7QUFBQTtBQUFBOzs7QUN0RGI7QUFBQSxpR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxhQUFhO0FBQ2pCLFFBQUksdUJBQXVCO0FBQzNCLFFBQUksY0FBYztBQUNsQixRQUFJLHVCQUF1QjtBQUUzQixJQUFBQSxRQUFPLFVBQVUsU0FBVSxHQUFHLEtBQUssT0FBTyxTQUFTO0FBQ2pELFVBQUksQ0FBQyxRQUFTLFdBQVUsQ0FBQztBQUN6QixVQUFJLFNBQVMsUUFBUTtBQUNyQixVQUFJLE9BQU8sUUFBUSxTQUFTLFNBQVksUUFBUSxPQUFPO0FBQ3ZELFVBQUksV0FBVyxLQUFLLEVBQUcsYUFBWSxPQUFPLE1BQU0sT0FBTztBQUN2RCxVQUFJLFFBQVEsUUFBUTtBQUNsQixZQUFJLE9BQVEsR0FBRSxHQUFHLElBQUk7QUFBQSxZQUNoQixzQkFBcUIsS0FBSyxLQUFLO0FBQUEsTUFDdEMsT0FBTztBQUNMLFlBQUk7QUFDRixjQUFJLENBQUMsUUFBUSxPQUFRLFFBQU8sRUFBRSxHQUFHO0FBQUEsbUJBQ3hCLEVBQUUsR0FBRyxFQUFHLFVBQVM7QUFBQSxRQUM1QixTQUFTLE9BQU87QUFBQSxRQUFjO0FBQzlCLFlBQUksT0FBUSxHQUFFLEdBQUcsSUFBSTtBQUFBLFlBQ2hCLHNCQUFxQixFQUFFLEdBQUcsS0FBSztBQUFBLFVBQ2xDO0FBQUEsVUFDQSxZQUFZO0FBQUEsVUFDWixjQUFjLENBQUMsUUFBUTtBQUFBLFVBQ3ZCLFVBQVUsQ0FBQyxRQUFRO0FBQUEsUUFDckIsQ0FBQztBQUFBLE1BQ0g7QUFBRSxhQUFPO0FBQUEsSUFDWDtBQUFBO0FBQUE7OztBQzNCQTtBQUFBLDRGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLE9BQU8sS0FBSztBQUNoQixRQUFJLFFBQVEsS0FBSztBQUtqQixJQUFBQSxRQUFPLFVBQVUsS0FBSyxTQUFTLFNBQVMsTUFBTSxHQUFHO0FBQy9DLFVBQUksSUFBSSxDQUFDO0FBQ1QsY0FBUSxJQUFJLElBQUksUUFBUSxNQUFNLENBQUM7QUFBQSxJQUNqQztBQUFBO0FBQUE7OztBQ1ZBO0FBQUEsd0dBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksUUFBUTtBQUlaLElBQUFBLFFBQU8sVUFBVSxTQUFVLFVBQVU7QUFDbkMsVUFBSSxTQUFTLENBQUM7QUFFZCxhQUFPLFdBQVcsVUFBVSxXQUFXLElBQUksSUFBSSxNQUFNLE1BQU07QUFBQSxJQUM3RDtBQUFBO0FBQUE7OztBQ1RBO0FBQUEsbUdBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksc0JBQXNCO0FBRTFCLFFBQUksTUFBTSxLQUFLO0FBQ2YsUUFBSSxNQUFNLEtBQUs7QUFLZixJQUFBQSxRQUFPLFVBQVUsU0FBVSxPQUFPLFFBQVE7QUFDeEMsVUFBSSxVQUFVLG9CQUFvQixLQUFLO0FBQ3ZDLGFBQU8sVUFBVSxJQUFJLElBQUksVUFBVSxRQUFRLENBQUMsSUFBSSxJQUFJLFNBQVMsTUFBTTtBQUFBLElBQ3JFO0FBQUE7QUFBQTs7O0FDWkE7QUFBQSwyRkFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxzQkFBc0I7QUFFMUIsUUFBSSxNQUFNLEtBQUs7QUFJZixJQUFBQSxRQUFPLFVBQVUsU0FBVSxVQUFVO0FBQ25DLFVBQUksTUFBTSxvQkFBb0IsUUFBUTtBQUN0QyxhQUFPLE1BQU0sSUFBSSxJQUFJLEtBQUssZ0JBQWdCLElBQUk7QUFBQSxJQUNoRDtBQUFBO0FBQUE7OztBQ1ZBO0FBQUEsc0dBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksV0FBVztBQUlmLElBQUFBLFFBQU8sVUFBVSxTQUFVLEtBQUs7QUFDOUIsYUFBTyxTQUFTLElBQUksTUFBTTtBQUFBLElBQzVCO0FBQUE7QUFBQTs7O0FDUEE7QUFBQSxnR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxrQkFBa0I7QUFDdEIsUUFBSSxrQkFBa0I7QUFDdEIsUUFBSSxvQkFBb0I7QUFHeEIsUUFBSSxlQUFlLFNBQVUsYUFBYTtBQUN4QyxhQUFPLFNBQVUsT0FBTyxJQUFJLFdBQVc7QUFDckMsWUFBSSxJQUFJLGdCQUFnQixLQUFLO0FBQzdCLFlBQUksU0FBUyxrQkFBa0IsQ0FBQztBQUNoQyxZQUFJLFdBQVcsRUFBRyxRQUFPLENBQUMsZUFBZTtBQUN6QyxZQUFJLFFBQVEsZ0JBQWdCLFdBQVcsTUFBTTtBQUM3QyxZQUFJO0FBR0osWUFBSSxlQUFlLE9BQU8sR0FBSSxRQUFPLFNBQVMsT0FBTztBQUNuRCxrQkFBUSxFQUFFLE9BQU87QUFFakIsY0FBSSxVQUFVLE1BQU8sUUFBTztBQUFBLFFBRTlCO0FBQUEsWUFBTyxRQUFNLFNBQVMsT0FBTyxTQUFTO0FBQ3BDLGVBQUssZUFBZSxTQUFTLE1BQU0sRUFBRSxLQUFLLE1BQU0sR0FBSSxRQUFPLGVBQWUsU0FBUztBQUFBLFFBQ3JGO0FBQUUsZUFBTyxDQUFDLGVBQWU7QUFBQSxNQUMzQjtBQUFBLElBQ0Y7QUFFQSxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBO0FBQUEsTUFHZixVQUFVLGFBQWEsSUFBSTtBQUFBO0FBQUE7QUFBQSxNQUczQixTQUFTLGFBQWEsS0FBSztBQUFBLElBQzdCO0FBQUE7QUFBQTs7O0FDakNBO0FBQUEsc0dBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksY0FBYztBQUNsQixRQUFJLFNBQVM7QUFDYixRQUFJLGtCQUFrQjtBQUN0QixRQUFJLFVBQVUseUJBQXVDO0FBQ3JELFFBQUksYUFBYTtBQUVqQixRQUFJLE9BQU8sWUFBWSxDQUFDLEVBQUUsSUFBSTtBQUU5QixJQUFBQSxRQUFPLFVBQVUsU0FBVSxRQUFRLE9BQU87QUFDeEMsVUFBSSxJQUFJLGdCQUFnQixNQUFNO0FBQzlCLFVBQUksSUFBSTtBQUNSLFVBQUksU0FBUyxDQUFDO0FBQ2QsVUFBSTtBQUNKLFdBQUssT0FBTyxFQUFHLEVBQUMsT0FBTyxZQUFZLEdBQUcsS0FBSyxPQUFPLEdBQUcsR0FBRyxLQUFLLEtBQUssUUFBUSxHQUFHO0FBRTdFLGFBQU8sTUFBTSxTQUFTLEVBQUcsS0FBSSxPQUFPLEdBQUcsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHO0FBQ3hELFNBQUMsUUFBUSxRQUFRLEdBQUcsS0FBSyxLQUFLLFFBQVEsR0FBRztBQUFBLE1BQzNDO0FBQ0EsYUFBTztBQUFBLElBQ1Q7QUFBQTtBQUFBOzs7QUNwQkE7QUFBQSwrRkFBQUMsU0FBQTtBQUFBO0FBRUEsSUFBQUEsUUFBTyxVQUFVO0FBQUEsTUFDZjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNWQTtBQUFBO0FBQUE7QUFDQSxRQUFJLHFCQUFxQjtBQUN6QixRQUFJLGNBQWM7QUFFbEIsUUFBSSxhQUFhLFlBQVksT0FBTyxVQUFVLFdBQVc7QUFLekQsWUFBUSxJQUFJLE9BQU8sdUJBQXVCLFNBQVMsb0JBQW9CLEdBQUc7QUFDeEUsYUFBTyxtQkFBbUIsR0FBRyxVQUFVO0FBQUEsSUFDekM7QUFBQTtBQUFBOzs7QUNYQTtBQUFBO0FBQUE7QUFFQSxZQUFRLElBQUksT0FBTztBQUFBO0FBQUE7OztBQ0ZuQjtBQUFBLDBGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGFBQWE7QUFDakIsUUFBSSxjQUFjO0FBQ2xCLFFBQUksNEJBQTRCO0FBQ2hDLFFBQUksOEJBQThCO0FBQ2xDLFFBQUksV0FBVztBQUVmLFFBQUksU0FBUyxZQUFZLENBQUMsRUFBRSxNQUFNO0FBR2xDLElBQUFBLFFBQU8sVUFBVSxXQUFXLFdBQVcsU0FBUyxLQUFLLFNBQVMsUUFBUSxJQUFJO0FBQ3hFLFVBQUksT0FBTywwQkFBMEIsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNuRCxVQUFJLHdCQUF3Qiw0QkFBNEI7QUFDeEQsYUFBTyx3QkFBd0IsT0FBTyxNQUFNLHNCQUFzQixFQUFFLENBQUMsSUFBSTtBQUFBLElBQzNFO0FBQUE7QUFBQTs7O0FDZEE7QUFBQSw2R0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxTQUFTO0FBQ2IsUUFBSSxVQUFVO0FBQ2QsUUFBSSxpQ0FBaUM7QUFDckMsUUFBSSx1QkFBdUI7QUFFM0IsSUFBQUEsUUFBTyxVQUFVLFNBQVUsUUFBUSxRQUFRLFlBQVk7QUFDckQsVUFBSSxPQUFPLFFBQVEsTUFBTTtBQUN6QixVQUFJLGlCQUFpQixxQkFBcUI7QUFDMUMsVUFBSSwyQkFBMkIsK0JBQStCO0FBQzlELGVBQVMsSUFBSSxHQUFHLElBQUksS0FBSyxRQUFRLEtBQUs7QUFDcEMsWUFBSSxNQUFNLEtBQUssQ0FBQztBQUNoQixZQUFJLENBQUMsT0FBTyxRQUFRLEdBQUcsS0FBSyxFQUFFLGNBQWMsT0FBTyxZQUFZLEdBQUcsSUFBSTtBQUNwRSx5QkFBZSxRQUFRLEtBQUsseUJBQXlCLFFBQVEsR0FBRyxDQUFDO0FBQUEsUUFDbkU7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ2hCQTtBQUFBLDJGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLFFBQVE7QUFDWixRQUFJLGFBQWE7QUFFakIsUUFBSSxjQUFjO0FBRWxCLFFBQUksV0FBVyxTQUFVLFNBQVMsV0FBVztBQUMzQyxVQUFJLFFBQVEsS0FBSyxVQUFVLE9BQU8sQ0FBQztBQUNuQyxhQUFPLFVBQVUsV0FBVyxPQUN4QixVQUFVLFNBQVMsUUFDbkIsV0FBVyxTQUFTLElBQUksTUFBTSxTQUFTLElBQ3ZDLENBQUMsQ0FBQztBQUFBLElBQ1I7QUFFQSxRQUFJLFlBQVksU0FBUyxZQUFZLFNBQVUsUUFBUTtBQUNyRCxhQUFPLE9BQU8sTUFBTSxFQUFFLFFBQVEsYUFBYSxHQUFHLEVBQUUsWUFBWTtBQUFBLElBQzlEO0FBRUEsUUFBSSxPQUFPLFNBQVMsT0FBTyxDQUFDO0FBQzVCLFFBQUksU0FBUyxTQUFTLFNBQVM7QUFDL0IsUUFBSSxXQUFXLFNBQVMsV0FBVztBQUVuQyxJQUFBQSxRQUFPLFVBQVU7QUFBQTtBQUFBOzs7QUN0QmpCO0FBQUEsd0ZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUlDLGNBQWE7QUFDakIsUUFBSSwyQkFBMkIsNkNBQTJEO0FBQzFGLFFBQUksOEJBQThCO0FBQ2xDLFFBQUksZ0JBQWdCO0FBQ3BCLFFBQUksdUJBQXVCO0FBQzNCLFFBQUksNEJBQTRCO0FBQ2hDLFFBQUksV0FBVztBQWlCZixJQUFBRCxRQUFPLFVBQVUsU0FBVSxTQUFTLFFBQVE7QUFDMUMsVUFBSSxTQUFTLFFBQVE7QUFDckIsVUFBSSxTQUFTLFFBQVE7QUFDckIsVUFBSSxTQUFTLFFBQVE7QUFDckIsVUFBSSxRQUFRLFFBQVEsS0FBSyxnQkFBZ0IsZ0JBQWdCO0FBQ3pELFVBQUksUUFBUTtBQUNWLGlCQUFTQztBQUFBLE1BQ1gsV0FBVyxRQUFRO0FBQ2pCLGlCQUFTQSxZQUFXLE1BQU0sS0FBSyxxQkFBcUIsUUFBUSxDQUFDLENBQUM7QUFBQSxNQUNoRSxPQUFPO0FBQ0wsaUJBQVNBLFlBQVcsTUFBTSxLQUFLQSxZQUFXLE1BQU0sRUFBRTtBQUFBLE1BQ3BEO0FBQ0EsVUFBSSxPQUFRLE1BQUssT0FBTyxRQUFRO0FBQzlCLHlCQUFpQixPQUFPLEdBQUc7QUFDM0IsWUFBSSxRQUFRLGdCQUFnQjtBQUMxQix1QkFBYSx5QkFBeUIsUUFBUSxHQUFHO0FBQ2pELDJCQUFpQixjQUFjLFdBQVc7QUFBQSxRQUM1QyxNQUFPLGtCQUFpQixPQUFPLEdBQUc7QUFDbEMsaUJBQVMsU0FBUyxTQUFTLE1BQU0sVUFBVSxTQUFTLE1BQU0sT0FBTyxLQUFLLFFBQVEsTUFBTTtBQUVwRixZQUFJLENBQUMsVUFBVSxtQkFBbUIsUUFBVztBQUMzQyxjQUFJLE9BQU8sa0JBQWtCLE9BQU8sZUFBZ0I7QUFDcEQsb0NBQTBCLGdCQUFnQixjQUFjO0FBQUEsUUFDMUQ7QUFFQSxZQUFJLFFBQVEsUUFBUyxrQkFBa0IsZUFBZSxNQUFPO0FBQzNELHNDQUE0QixnQkFBZ0IsUUFBUSxJQUFJO0FBQUEsUUFDMUQ7QUFDQSxzQkFBYyxRQUFRLEtBQUssZ0JBQWdCLE9BQU87QUFBQSxNQUNwRDtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUN0REE7QUFBQSw2RkFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxjQUFjO0FBR2xCLFFBQUksZUFBZSxJQUFJO0FBRXZCLElBQUFBLFFBQU8sVUFBVTtBQUFBO0FBQUEsTUFFZjtBQUFBLE1BQ0EsS0FBSyxZQUFZLGFBQWEsR0FBRztBQUFBLE1BQ2pDLEtBQUssWUFBWSxhQUFhLEdBQUc7QUFBQSxNQUNqQyxRQUFRLFlBQVksYUFBYSxRQUFRLENBQUM7QUFBQSxNQUMxQyxPQUFPO0FBQUEsSUFDVDtBQUFBO0FBQUE7OztBQ2JBO0FBQUEsdUZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksTUFBTSxzQkFBb0M7QUFHOUMsSUFBQUEsUUFBTyxVQUFVLFNBQVUsSUFBSTtBQUM3QixVQUFJLEVBQUU7QUFDTixhQUFPO0FBQUEsSUFDVDtBQUFBO0FBQUE7OztBQ1BBO0FBQUEsZ0dBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksT0FBTztBQUVYLElBQUFBLFFBQU8sVUFBVSxTQUFVLFFBQVEsSUFBSSw0QkFBNEI7QUFDakUsVUFBSSxXQUFXLDZCQUE2QixTQUFTLE9BQU87QUFDNUQsVUFBSSxPQUFPLE9BQU87QUFDbEIsVUFBSSxNQUFNO0FBQ1YsYUFBTyxFQUFFLE9BQU8sS0FBSyxNQUFNLFFBQVEsR0FBRyxNQUFNO0FBQzFDLGlCQUFTLEdBQUcsS0FBSyxLQUFLO0FBQ3RCLFlBQUksV0FBVyxPQUFXLFFBQU87QUFBQSxNQUNuQztBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNYQTtBQUFBLDZGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLGNBQWM7QUFDbEIsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSSxhQUFhO0FBRWpCLFFBQUlDLE9BQU0sV0FBVztBQUNyQixRQUFJLGVBQWUsV0FBVztBQUM5QixRQUFJLFVBQVUsWUFBWSxhQUFhLE9BQU87QUFDOUMsUUFBSSxPQUFPLFlBQVksYUFBYSxJQUFJO0FBQ3hDLFFBQUksT0FBTyxLQUFLLElBQUlBLEtBQUksQ0FBQyxFQUFFO0FBRTNCLElBQUFELFFBQU8sVUFBVSxTQUFVLEtBQUssSUFBSSxlQUFlO0FBQ2pELGFBQU8sZ0JBQWdCLGNBQWMsRUFBRSxVQUFVLEtBQUssR0FBRyxHQUFHLEtBQVcsR0FBRyxFQUFFLElBQUksUUFBUSxLQUFLLEVBQUU7QUFBQSxJQUNqRztBQUFBO0FBQUE7OztBQ2JBO0FBQUEsMkZBQUFFLFNBQUE7QUFBQTtBQUNBLFFBQUksYUFBYTtBQUNqQixRQUFJLFVBQVU7QUFFZCxRQUFJQyxPQUFNLFdBQVc7QUFDckIsUUFBSSxNQUFNLFdBQVc7QUFFckIsSUFBQUQsUUFBTyxVQUFVLFNBQVUsS0FBSztBQUM5QixVQUFJLFNBQVMsSUFBSUMsS0FBSTtBQUNyQixjQUFRLEtBQUssU0FBVSxJQUFJO0FBQ3pCLFlBQUksUUFBUSxFQUFFO0FBQUEsTUFDaEIsQ0FBQztBQUNELGFBQU87QUFBQSxJQUNUO0FBQUE7QUFBQTs7O0FDYkE7QUFBQSxnSEFBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxjQUFjO0FBQ2xCLFFBQUksWUFBWTtBQUVoQixJQUFBQSxRQUFPLFVBQVUsU0FBVSxRQUFRLEtBQUssUUFBUTtBQUM5QyxVQUFJO0FBRUYsZUFBTyxZQUFZLFVBQVUsT0FBTyx5QkFBeUIsUUFBUSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFBQSxNQUNwRixTQUFTLE9BQU87QUFBQSxNQUFjO0FBQUEsSUFDaEM7QUFBQTtBQUFBOzs7QUNUQTtBQUFBLDBGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLHNCQUFzQjtBQUMxQixRQUFJLGFBQWE7QUFFakIsSUFBQUEsUUFBTyxVQUFVLG9CQUFvQixXQUFXLE9BQU8sUUFBUSxLQUFLLEtBQUssU0FBVSxLQUFLO0FBQ3RGLGFBQU8sSUFBSTtBQUFBLElBQ2I7QUFBQTtBQUFBOzs7QUNOQTtBQUFBLHFHQUFBQyxTQUFBO0FBQUE7QUFHQSxJQUFBQSxRQUFPLFVBQVUsU0FBVSxLQUFLO0FBQzlCLGFBQU87QUFBQSxRQUNMLFVBQVU7QUFBQSxRQUNWLE1BQU0sSUFBSTtBQUFBLFFBQ1YsTUFBTTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDVEE7QUFBQSxnR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxZQUFZO0FBQ2hCLFFBQUksV0FBVztBQUNmLFFBQUksT0FBTztBQUNYLFFBQUksc0JBQXNCO0FBQzFCLFFBQUksb0JBQW9CO0FBRXhCLFFBQUksZUFBZTtBQUNuQixRQUFJLGNBQWM7QUFDbEIsUUFBSSxhQUFhO0FBQ2pCLFFBQUksTUFBTSxLQUFLO0FBRWYsUUFBSSxZQUFZLFNBQVUsS0FBSyxTQUFTO0FBQ3RDLFdBQUssTUFBTTtBQUNYLFdBQUssT0FBTyxJQUFJLFNBQVMsQ0FBQztBQUMxQixXQUFLLE1BQU0sVUFBVSxJQUFJLEdBQUc7QUFDNUIsV0FBSyxPQUFPLFVBQVUsSUFBSSxJQUFJO0FBQUEsSUFDaEM7QUFFQSxjQUFVLFlBQVk7QUFBQSxNQUNwQixhQUFhLFdBQVk7QUFDdkIsZUFBTyxrQkFBa0IsU0FBUyxLQUFLLEtBQUssTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQUEsTUFDOUQ7QUFBQSxNQUNBLFVBQVUsU0FBVSxJQUFJO0FBQ3RCLGVBQU8sS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUU7QUFBQSxNQUNwQztBQUFBLElBQ0Y7QUFJQSxJQUFBQSxRQUFPLFVBQVUsU0FBVSxLQUFLO0FBQzlCLGVBQVMsR0FBRztBQUNaLFVBQUksVUFBVSxDQUFDLElBQUk7QUFHbkIsVUFBSSxZQUFZLFFBQVMsT0FBTSxJQUFJLFdBQVcsWUFBWTtBQUMxRCxVQUFJLFVBQVUsb0JBQW9CLE9BQU87QUFDekMsVUFBSSxVQUFVLEVBQUcsT0FBTSxJQUFJLFlBQVksWUFBWTtBQUNuRCxhQUFPLElBQUksVUFBVSxLQUFLLE9BQU87QUFBQSxJQUNuQztBQUFBO0FBQUE7OztBQ3ZDQTtBQUFBLGdHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLE9BQU87QUFDWCxRQUFJLGFBQWE7QUFDakIsUUFBSSxRQUFRO0FBQ1osUUFBSSxPQUFPO0FBQ1gsUUFBSSxlQUFlO0FBQ25CLFFBQUksYUFBYTtBQUNqQixRQUFJLGdCQUFnQjtBQUVwQixRQUFJLE1BQU0sV0FBVztBQUNyQixRQUFJLFNBQVMsV0FBVztBQUl4QixJQUFBQSxRQUFPLFVBQVUsU0FBUyxXQUFXLE9BQU87QUFDMUMsVUFBSSxJQUFJLEtBQUssSUFBSTtBQUNqQixVQUFJLFdBQVcsYUFBYSxLQUFLO0FBQ2pDLFVBQUksU0FBUyxNQUFNLENBQUM7QUFDcEIsVUFBSSxLQUFLLENBQUMsS0FBSyxTQUFTLEtBQU0sWUFBVyxHQUFHLFNBQVUsR0FBRztBQUN2RCxZQUFJLFNBQVMsU0FBUyxDQUFDLEVBQUcsUUFBTyxRQUFRLENBQUM7QUFBQSxNQUM1QyxDQUFDO0FBQUEsVUFDSSxlQUFjLFNBQVMsWUFBWSxHQUFHLFNBQVUsR0FBRztBQUN0RCxZQUFJLElBQUksR0FBRyxDQUFDLEVBQUcsUUFBTyxRQUFRLENBQUM7QUFBQSxNQUNqQyxDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1Q7QUFBQTtBQUFBOzs7QUN6QkE7QUFBQSw0R0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxhQUFhO0FBRWpCLFFBQUksZ0JBQWdCLFNBQVUsTUFBTTtBQUNsQyxhQUFPO0FBQUEsUUFDTDtBQUFBLFFBQ0EsS0FBSyxXQUFZO0FBQ2YsaUJBQU87QUFBQSxRQUNUO0FBQUEsUUFDQSxNQUFNLFdBQVk7QUFDaEIsaUJBQU87QUFBQSxZQUNMLE1BQU0sV0FBWTtBQUNoQixxQkFBTyxFQUFFLE1BQU0sS0FBSztBQUFBLFlBQ3RCO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLElBQUFBLFFBQU8sVUFBVSxTQUFVLE1BQU07QUFDL0IsVUFBSUMsT0FBTSxXQUFXLEtBQUs7QUFDMUIsVUFBSTtBQUNGLFlBQUlBLEtBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDaEMsWUFBSTtBQUdGLGNBQUlBLEtBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7QUFDakMsaUJBQU87QUFBQSxRQUNULFNBQVMsUUFBUTtBQUNmLGlCQUFPO0FBQUEsUUFDVDtBQUFBLE1BQ0YsU0FBUyxPQUFPO0FBQ2QsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDbENBO0FBQUE7QUFBQTtBQUNBLFFBQUlDLEtBQUk7QUFDUixRQUFJLGFBQWE7QUFDakIsUUFBSSx5QkFBeUI7QUFJN0IsSUFBQUEsR0FBRSxFQUFFLFFBQVEsT0FBTyxPQUFPLE1BQU0sTUFBTSxNQUFNLFFBQVEsQ0FBQyx1QkFBdUIsWUFBWSxFQUFFLEdBQUc7QUFBQSxNQUMzRjtBQUFBLElBQ0YsQ0FBQztBQUFBO0FBQUE7OztBQ1REO0FBQUEsa0dBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksT0FBTztBQUNYLFFBQUksYUFBYTtBQUNqQixRQUFJLE9BQU87QUFDWCxRQUFJLGVBQWU7QUFDbkIsUUFBSSxhQUFhO0FBQ2pCLFFBQUksZ0JBQWdCO0FBRXBCLFFBQUlDLE9BQU0sV0FBVztBQUNyQixRQUFJLE1BQU0sV0FBVztBQUNyQixRQUFJLE1BQU0sV0FBVztBQUlyQixJQUFBRCxRQUFPLFVBQVUsU0FBUyxhQUFhLE9BQU87QUFDNUMsVUFBSSxJQUFJLEtBQUssSUFBSTtBQUNqQixVQUFJLFdBQVcsYUFBYSxLQUFLO0FBQ2pDLFVBQUksU0FBUyxJQUFJQyxLQUFJO0FBRXJCLFVBQUksS0FBSyxDQUFDLElBQUksU0FBUyxNQUFNO0FBQzNCLHNCQUFjLFNBQVMsWUFBWSxHQUFHLFNBQVUsR0FBRztBQUNqRCxjQUFJLElBQUksR0FBRyxDQUFDLEVBQUcsS0FBSSxRQUFRLENBQUM7QUFBQSxRQUM5QixDQUFDO0FBQUEsTUFDSCxPQUFPO0FBQ0wsbUJBQVcsR0FBRyxTQUFVLEdBQUc7QUFDekIsY0FBSSxTQUFTLFNBQVMsQ0FBQyxFQUFHLEtBQUksUUFBUSxDQUFDO0FBQUEsUUFDekMsQ0FBQztBQUFBLE1BQ0g7QUFFQSxhQUFPO0FBQUEsSUFDVDtBQUFBO0FBQUE7OztBQzlCQTtBQUFBO0FBQUE7QUFDQSxRQUFJQyxLQUFJO0FBQ1IsUUFBSSxRQUFRO0FBQ1osUUFBSSxlQUFlO0FBQ25CLFFBQUkseUJBQXlCO0FBRTdCLFFBQUksWUFBWSxDQUFDLHVCQUF1QixjQUFjLEtBQUssTUFBTSxXQUFZO0FBRTNFLGFBQU8sT0FBTyxNQUFNLE1BQUssb0JBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRSxhQUFhLG9CQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQUEsSUFDbEYsQ0FBQztBQUlELElBQUFBLEdBQUUsRUFBRSxRQUFRLE9BQU8sT0FBTyxNQUFNLE1BQU0sTUFBTSxRQUFRLFVBQVUsR0FBRztBQUFBLE1BQy9EO0FBQUEsSUFDRixDQUFDO0FBQUE7QUFBQTs7O0FDZkQ7QUFBQSxnR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxPQUFPO0FBQ1gsUUFBSSxXQUFXO0FBQ2YsUUFBSSxZQUFZO0FBRWhCLElBQUFBLFFBQU8sVUFBVSxTQUFVLFVBQVUsTUFBTSxPQUFPO0FBQ2hELFVBQUksYUFBYTtBQUNqQixlQUFTLFFBQVE7QUFDakIsVUFBSTtBQUNGLHNCQUFjLFVBQVUsVUFBVSxRQUFRO0FBQzFDLFlBQUksQ0FBQyxhQUFhO0FBQ2hCLGNBQUksU0FBUyxRQUFTLE9BQU07QUFDNUIsaUJBQU87QUFBQSxRQUNUO0FBQ0Esc0JBQWMsS0FBSyxhQUFhLFFBQVE7QUFBQSxNQUMxQyxTQUFTLE9BQU87QUFDZCxxQkFBYTtBQUNiLHNCQUFjO0FBQUEsTUFDaEI7QUFDQSxVQUFJLFNBQVMsUUFBUyxPQUFNO0FBQzVCLFVBQUksV0FBWSxPQUFNO0FBQ3RCLGVBQVMsV0FBVztBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUFBO0FBQUE7OztBQ3ZCQTtBQUFBLHNHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLE9BQU87QUFDWCxRQUFJLE1BQU0sc0JBQW9DO0FBQzlDLFFBQUksT0FBTztBQUNYLFFBQUksZUFBZTtBQUNuQixRQUFJLGFBQWE7QUFDakIsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSSxnQkFBZ0I7QUFJcEIsSUFBQUEsUUFBTyxVQUFVLFNBQVMsZUFBZSxPQUFPO0FBQzlDLFVBQUksSUFBSSxLQUFLLElBQUk7QUFDakIsVUFBSSxXQUFXLGFBQWEsS0FBSztBQUNqQyxVQUFJLEtBQUssQ0FBQyxLQUFLLFNBQVMsS0FBTSxRQUFPLFdBQVcsR0FBRyxTQUFVLEdBQUc7QUFDOUQsWUFBSSxTQUFTLFNBQVMsQ0FBQyxFQUFHLFFBQU87QUFBQSxNQUNuQyxHQUFHLElBQUksTUFBTTtBQUNiLFVBQUksV0FBVyxTQUFTLFlBQVk7QUFDcEMsYUFBTyxjQUFjLFVBQVUsU0FBVSxHQUFHO0FBQzFDLFlBQUksSUFBSSxHQUFHLENBQUMsRUFBRyxRQUFPLGNBQWMsVUFBVSxVQUFVLEtBQUs7QUFBQSxNQUMvRCxDQUFDLE1BQU07QUFBQSxJQUNUO0FBQUE7QUFBQTs7O0FDckJBO0FBQUE7QUFBQTtBQUNBLFFBQUlDLEtBQUk7QUFDUixRQUFJLGlCQUFpQjtBQUNyQixRQUFJLHlCQUF5QjtBQUk3QixJQUFBQSxHQUFFLEVBQUUsUUFBUSxPQUFPLE9BQU8sTUFBTSxNQUFNLE1BQU0sUUFBUSxDQUFDLHVCQUF1QixnQkFBZ0IsRUFBRSxHQUFHO0FBQUEsTUFDL0Y7QUFBQSxJQUNGLENBQUM7QUFBQTtBQUFBOzs7QUNURDtBQUFBLGtHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLE9BQU87QUFDWCxRQUFJLE9BQU87QUFDWCxRQUFJLFVBQVU7QUFDZCxRQUFJLGVBQWU7QUFJbkIsSUFBQUEsUUFBTyxVQUFVLFNBQVMsV0FBVyxPQUFPO0FBQzFDLFVBQUksSUFBSSxLQUFLLElBQUk7QUFDakIsVUFBSSxXQUFXLGFBQWEsS0FBSztBQUNqQyxVQUFJLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBTSxRQUFPO0FBQ3BDLGFBQU8sUUFBUSxHQUFHLFNBQVUsR0FBRztBQUM3QixZQUFJLENBQUMsU0FBUyxTQUFTLENBQUMsRUFBRyxRQUFPO0FBQUEsTUFDcEMsR0FBRyxJQUFJLE1BQU07QUFBQSxJQUNmO0FBQUE7QUFBQTs7O0FDZkE7QUFBQTtBQUFBO0FBQ0EsUUFBSUMsS0FBSTtBQUNSLFFBQUksYUFBYTtBQUNqQixRQUFJLHlCQUF5QjtBQUk3QixJQUFBQSxHQUFFLEVBQUUsUUFBUSxPQUFPLE9BQU8sTUFBTSxNQUFNLE1BQU0sUUFBUSxDQUFDLHVCQUF1QixZQUFZLEVBQUUsR0FBRztBQUFBLE1BQzNGO0FBQUEsSUFDRixDQUFDO0FBQUE7QUFBQTs7O0FDVEQ7QUFBQSxvR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxPQUFPO0FBQ1gsUUFBSSxNQUFNLHNCQUFvQztBQUM5QyxRQUFJLE9BQU87QUFDWCxRQUFJLGVBQWU7QUFDbkIsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSSxnQkFBZ0I7QUFJcEIsSUFBQUEsUUFBTyxVQUFVLFNBQVMsYUFBYSxPQUFPO0FBQzVDLFVBQUksSUFBSSxLQUFLLElBQUk7QUFDakIsVUFBSSxXQUFXLGFBQWEsS0FBSztBQUNqQyxVQUFJLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBTSxRQUFPO0FBQ3BDLFVBQUksV0FBVyxTQUFTLFlBQVk7QUFDcEMsYUFBTyxjQUFjLFVBQVUsU0FBVSxHQUFHO0FBQzFDLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFHLFFBQU8sY0FBYyxVQUFVLFVBQVUsS0FBSztBQUFBLE1BQ2hFLENBQUMsTUFBTTtBQUFBLElBQ1Q7QUFBQTtBQUFBOzs7QUNsQkE7QUFBQTtBQUFBO0FBQ0EsUUFBSUMsS0FBSTtBQUNSLFFBQUksZUFBZTtBQUNuQixRQUFJLHlCQUF5QjtBQUk3QixJQUFBQSxHQUFFLEVBQUUsUUFBUSxPQUFPLE9BQU8sTUFBTSxNQUFNLE1BQU0sUUFBUSxDQUFDLHVCQUF1QixjQUFjLEVBQUUsR0FBRztBQUFBLE1BQzdGO0FBQUEsSUFDRixDQUFDO0FBQUE7QUFBQTs7O0FDVEQ7QUFBQSwwR0FBQUMsU0FBQTtBQUFBO0FBQ0EsUUFBSSxPQUFPO0FBQ1gsUUFBSSxhQUFhO0FBQ2pCLFFBQUksUUFBUTtBQUNaLFFBQUksZUFBZTtBQUNuQixRQUFJLGdCQUFnQjtBQUVwQixRQUFJLE1BQU0sV0FBVztBQUNyQixRQUFJLE1BQU0sV0FBVztBQUNyQixRQUFJLFNBQVMsV0FBVztBQUl4QixJQUFBQSxRQUFPLFVBQVUsU0FBUyxvQkFBb0IsT0FBTztBQUNuRCxVQUFJLElBQUksS0FBSyxJQUFJO0FBQ2pCLFVBQUksV0FBVyxhQUFhLEtBQUssRUFBRSxZQUFZO0FBQy9DLFVBQUksU0FBUyxNQUFNLENBQUM7QUFDcEIsb0JBQWMsVUFBVSxTQUFVLEdBQUc7QUFDbkMsWUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFHLFFBQU8sUUFBUSxDQUFDO0FBQUEsWUFDMUIsS0FBSSxRQUFRLENBQUM7QUFBQSxNQUNwQixDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1Q7QUFBQTtBQUFBOzs7QUN0QkE7QUFBQTtBQUFBO0FBQ0EsUUFBSUMsS0FBSTtBQUNSLFFBQUksc0JBQXNCO0FBQzFCLFFBQUkseUJBQXlCO0FBSTdCLElBQUFBLEdBQUUsRUFBRSxRQUFRLE9BQU8sT0FBTyxNQUFNLE1BQU0sTUFBTSxRQUFRLENBQUMsdUJBQXVCLHFCQUFxQixFQUFFLEdBQUc7QUFBQSxNQUNwRztBQUFBLElBQ0YsQ0FBQztBQUFBO0FBQUE7OztBQ1REO0FBQUEsMkZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksT0FBTztBQUNYLFFBQUksTUFBTSxzQkFBb0M7QUFDOUMsUUFBSSxRQUFRO0FBQ1osUUFBSSxlQUFlO0FBQ25CLFFBQUksZ0JBQWdCO0FBSXBCLElBQUFBLFFBQU8sVUFBVSxTQUFTLE1BQU0sT0FBTztBQUNyQyxVQUFJLElBQUksS0FBSyxJQUFJO0FBQ2pCLFVBQUksV0FBVyxhQUFhLEtBQUssRUFBRSxZQUFZO0FBQy9DLFVBQUksU0FBUyxNQUFNLENBQUM7QUFDcEIsb0JBQWMsVUFBVSxTQUFVLElBQUk7QUFDcEMsWUFBSSxRQUFRLEVBQUU7QUFBQSxNQUNoQixDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1Q7QUFBQTtBQUFBOzs7QUNqQkE7QUFBQTtBQUFBO0FBQ0EsUUFBSUMsS0FBSTtBQUNSLFFBQUksUUFBUTtBQUNaLFFBQUkseUJBQXlCO0FBSTdCLElBQUFBLEdBQUUsRUFBRSxRQUFRLE9BQU8sT0FBTyxNQUFNLE1BQU0sTUFBTSxRQUFRLENBQUMsdUJBQXVCLE9BQU8sRUFBRSxHQUFHO0FBQUEsTUFDdEY7QUFBQSxJQUNGLENBQUM7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNURCxJQUFBQyxvQkFBQSxDQUFBO0FBQUEsSUFBQUMsaUJBQUFDLE1BQUE7RUFBQSxnREFBQTtBQUFBO0lBQUE7Ozs7O0FBV0EsS0FBQ0MsYUFBWTtBQUNaLFlBQU07UUFBQ0M7TUFBSSxJQUFJQyxJQUNkO1FBQUNDO01BQUksSUFBSUY7QUFDVixVQUFJRSxTQUFBLFFBQUFBLFNBQUEsVUFBQUEsS0FBTUMsU0FBUztBQUNsQjtNQUNEO0FBQ0EsWUFBTUEsVUFBVTtBQUNoQkgsV0FBS0UsT0FBTztRQUFDQztRQUFTLEdBQUdEO01BQUk7QUFHN0IsWUFBTUUsTUFBTSw0QkFDWEMsU0FBQSxrQ0FBQUMsT0FBMkNOLEtBQUtFLEtBQUtLLGFBQWEsVUFBUSxpQkFBQSxHQUMxRUMsV0FBVztBQUVaLE9BQUFULFVBQUFVLFFBQU9DLGdCQUFQWCxRQUFPVyxjQUFnQixJQUFJQyxRQUFTQyxhQUFZO0FBQy9DLGNBQU1DLFNBQVNDLFNBQVNDLGNBQWMsUUFBUTtBQUM5Q0YsZUFBT0csaUJBQWlCLFFBQVEsTUFBTTtBQUNyQ0osa0JBQVFGLFdBQVc7UUFDcEIsQ0FBQztBQUNERyxlQUFPSSxPQUFPO0FBQ2RKLGVBQU9LLE1BQUEsR0FBQVosT0FBU0YsS0FBRyxHQUFBLEVBQUFFLE9BQUlELE1BQU07QUFDN0JTLGlCQUFTSyxLQUFLQyxPQUFPUCxNQUFNO01BQzVCLENBQUM7QUFFRCxZQUFNO1FBQUNRLFlBQVlDO1FBQU1DLG1CQUFtQkM7UUFBSUMsb0JBQW9CQztNQUFZLElBQUl6QixHQUFHMEIsT0FBT0MsSUFBSTtBQUVsRyxZQUFNQyxnQkFBd0M7UUFDNUMsaUJBQWlCO1FBQ2pCQyxVQUFVO01BQ1gsR0FDQUMsT0FBK0I7UUFDOUJDLEtBQUs7UUFDTEMsSUFBSTtRQUNKQyxNQUFNO01BQ1AsR0FDQUMsYUFBcUM7UUFDcEMsS0FBSztRQUNMLEtBQUs7TUFDTjtBQUdELFlBQU1DLFlBQWFDLFNBQXFCO0FBQ3ZDLGVBQU9DLEtBQUtDLE1BQU1DLE9BQU9DLGFBQWFDLFFBQVFMLEdBQUcsQ0FBQyxDQUFDO01BQ3BEO0FBT0EsWUFBTU0sY0FBQSwyQkFBQTtBQUFBLFlBQUFDLE9BQUFDLGtCQUFjLFdBQU9DLE9BQTREO0FBQ3RGLGNBQUksT0FBT0MsbUJBQW1CLFVBQVU7QUFDdkMsa0JBQU1DLFFBQVFDLE9BQU9DLE9BQU9ILGNBQWMsRUFBRUksT0FBTyxDQUFDO2NBQUNDO1lBQVksTUFBTTtBQUN0RSxxQkFBT0gsT0FBT0MsT0FBT0UsWUFBWSxFQUFFQyxTQUFTUCxLQUFLO1lBQ2xELENBQUM7QUFDRCxnQkFDQ0UsTUFBTU0sS0FBSyxDQUFDO2NBQUNDO1lBQUssTUFBTTtBQUN2QixxQkFBTyxDQUFDQSxNQUFNQyxTQUFTLE1BQU07WUFDOUIsQ0FBQyxHQUNBO0FBQ0Qsb0JBQU12RCxHQUFHd0QsT0FBT0MsTUFBTSxpQkFBaUI7WUFDeEM7QUFDQSxrQkFBTUMsUUFBUSxJQUFJQyxJQUNqQlosTUFBTWEsSUFBSSxDQUFDO2NBQUNOO1lBQUssTUFBTTtBQUFBLGtCQUFBTztBQUN0QixrQkFBSVAsTUFBTUMsU0FBUyxNQUFNLEdBQUc7QUFDM0IsdUJBQU87Y0FDUjtBQUNBLG9CQUFNTyxJQUFJLElBQUk5RCxHQUFHK0QsTUFBTVQsS0FBSyxHQUMzQlUsWUFBWUYsRUFBRUcsZUFBZTtBQUM5QixrQkFBSUQsWUFBWSxHQUFHO0FBQ2xCLHVCQUFPO2NBQ1I7QUFDQSxvQkFBTUUsT0FBT3BDLE9BQUsrQixrQkFBQUMsRUFBRUssYUFBYSxPQUFBLFFBQUFOLG9CQUFBLFNBQUEsU0FBZkEsZ0JBQWtCTyxZQUFZLE1BQUssRUFBRSxLQUFLbEMsV0FBVzhCLFNBQVM7QUFDaEYsa0JBQUlFLE1BQU07QUFDVCx1QkFBT0EsU0FBUyxpQkFBaUJGLGNBQWMsS0FBS0EsY0FBYyxRQUFRLFdBQVdFO2NBQ3RGO0FBQ0EscUJBQU9GLGNBQWMsTUFBTUEsY0FBYyxJQUFJLGFBQWE7WUFDM0QsQ0FBQyxDQUNGO0FBQ0EsZ0JBQUlOLE1BQU1XLFNBQVMsR0FBRztBQUNyQixvQkFBTSxDQUFDSCxJQUFJLElBQUlSO0FBQ2Ysa0JBQUlRLFNBQVMsVUFBVTtBQUN0Qix1QkFBTyxDQUFDLGNBQWMsQ0FBQztjQUN4QjtBQUNBLHFCQUFPQSxTQUFTLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDQSxJQUFLO1lBQ3hELFdBQVdSLE1BQU1XLFNBQVMsR0FBRztBQUM1QixrQkFBSVgsTUFBTVksSUFBSSxZQUFZLEtBQUtaLE1BQU1ZLElBQUksUUFBUSxHQUFHO0FBQ25ELHVCQUFPLENBQUMsWUFBWTtjQUNyQixXQUFXWixNQUFNWSxJQUFJLFdBQVcsS0FBS1osTUFBTVksSUFBSSxVQUFVLEdBQUc7QUFDM0QsdUJBQU8sQ0FBQyxXQUFXO2NBQ3BCO1lBQ0Q7VUFDRDtBQUNBLGNBQUsvQyxPQUFPLE9BQU9FLGlCQUFpQixlQUFnQkosS0FBS2tDLFNBQVMsTUFBTSxHQUFHO0FBQzFFLG1CQUFPLENBQUMzQixjQUFjSCxZQUFZLEtBQUtBLGNBQWNBLGlCQUFpQixlQUFlRixLQUFLLE1BQVM7VUFDcEc7QUFDQSxnQkFBTXZCLEdBQUd3RCxPQUFPQyxNQUFNLGlCQUFpQjtBQUN2QyxjQUFBLE1BQ09jLEdBQUdDLEdBQUdDLFFBQVF6RSxHQUFHMEUsSUFBSSxvQkFBb0IsR0FBRztZQUNqREMsU0FBUyxDQUFDO2NBQUNDLE9BQU9yRCxPQUFPLE1BQU0sV0FBVztZQUFLLEdBQUc7Y0FBQ3FELE9BQU87Y0FBWUMsUUFBUTtZQUFRLENBQUM7VUFDeEYsQ0FBQyxHQUNBO0FBQ0QsbUJBQU8sQ0FBQyxXQUFXO1VBQ3BCO0FBQ0EsaUJBQU8sQ0FBQ3RELE9BQU8sTUFBTSxTQUFTLEtBQUs7UUFDcEMsQ0FBQTtBQUFBLGVBQUEsU0F2RE1tQixhQUFBb0MsSUFBQTtBQUFBLGlCQUFBbkMsS0FBQW9DLE1BQUEsTUFBQUMsU0FBQTtRQUFBO01BQUEsRUFBQTtBQXlETixZQUFNQzs7UUFBcUJBLE1BQVk7QUFDckNwRSxtQkFBU3FFLGNBQWMsNEJBQTRCLEVBQUdDLGNBQWMsSUFBSUMsV0FBVyxPQUFPLENBQUM7QUFDM0YsaUJBQU87UUFDUjtTQUNBQzs7UUFBMkJBLE1BQVk7QUFDdEN4RSxtQkFBU3FFLGNBQWdDLCtCQUErQixFQUFHSSxVQUFVO0FBQ3JGLGlCQUFPTCxPQUFPO1FBQ2Y7U0FDQU07O1FBQStCQSxNQUFZO0FBQzFDMUUsbUJBQVNxRSxjQUFjLDBCQUEwQixFQUFHQyxjQUFjLElBQUlDLFdBQVcsT0FBTyxDQUFDO0FBQ3pGLGlCQUFPO1FBQ1I7O0FBUUQsWUFBTUksZUFBQSwyQkFBQTtBQUFBLFlBQUFDLFFBQUE3QyxrQkFBZSxXQUFPOEMsU0FBc0NDLFNBQW9DO0FBQUEsY0FBQUM7QUFDckcsZ0JBQU1DLFdBQTJDMUQsVUFBVSxtQkFBbUIsR0FDN0UyRCxxQkFBcUJELGFBQWFBLFNBQVMsdUJBQXVCLEtBQUtBLFNBQVMsb0JBQW9CLElBQ3BHRSxNQUFNRCx1QkFBdUIsUUFBUUEsdUJBQXVCO0FBRTdELGdCQUFNRSxLQUFBLE9BQUssTUFDSnZGLGFBQ0x3RixhQUFhUCxRQUFRLENBQUMsR0FBSSxHQUFJQyxVQUFXLENBQUMsTUFBTSxJQUFBLE1BQXVCakQsWUFBWWdELFFBQVFRLElBQUksQ0FBRSxDQUFFO0FBQ3JHLGFBQUNOLFdBQUFJLEdBQUdHLFVBQUEsUUFBQVAsYUFBQSxTQUFBLFNBQUhBLFNBQVNRLFFBQU9KLEdBQUdLLE9BQVFDLFdBQVcsR0FBSUMsS0FBSztBQUVoRCxjQUFJLENBQUNaLFNBQVM7QUFFYixnQkFBSUssR0FBR0ssUUFBUTtBQUNkTCxpQkFBR0ssT0FBT0csVUFBV0MsT0FBTTtBQUMxQixvQkFBSUEsRUFBRUMsWUFBWUMsT0FBT0MsUUFBUUMsU0FBU0osRUFBRUssV0FBV0wsRUFBRU0sVUFBVTtBQUNsRU4sb0JBQUVPLGVBQWU7QUFDakIsc0JBQUlQLEVBQUVRLFVBQVU7QUFDZjVCLGdDQUFZO2tCQUNiLE9BQU87QUFDTkosMkJBQU87a0JBQ1I7Z0JBQ0QsV0FBV3dCLEVBQUVDLFlBQVlDLE9BQU9DLFFBQVFNLFVBQVVuQixLQUFLO0FBQ3REVSxvQkFBRU8sZUFBZTtBQUNqQnpCLDZCQUFXO2dCQUNaO2NBQ0QsQ0FBQztZQUNGLE9BQU87QUFDTlMsaUJBQUdtQixVQUFVLENBQ1o7Z0JBQUMvRSxLQUFLO2dCQUFTZ0YsS0FBS25DO2NBQU0sR0FDMUI7Z0JBQUM3QyxLQUFLO2dCQUFlZ0YsS0FBSy9CO2NBQVcsR0FDckMsR0FBSVUsTUFBTSxDQUFDO2dCQUFDM0QsS0FBSztnQkFBT2dGLEtBQUs3QjtjQUFVLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FDN0M7WUFDRjtVQUNEO0FBR0EsZ0JBQU04QixTQUFTLDZCQUNkQyxXQUE0Qm5GLFVBQVVrRixNQUFNLEdBQzVDRSxVQUFrQztZQUNqQ0MsWUFBWTtZQUNaQyxlQUFlO1lBQ2ZDLGVBQWU7WUFDZkMsZUFBZTtZQUNmQyxXQUFXO1lBQ1hDLE1BQU07WUFDTkMsWUFBWTtZQUNaQyxRQUFRO1lBQ1JDLGFBQWE7WUFDYkMsTUFBTTtVQUNQO0FBQ0R6Rix1QkFBYTBGLFdBQVdiLE1BQU07QUFDOUIsY0FBSUMsVUFBVTtBQUNiLGtCQUFNYSxNQUE0QixDQUFDO0FBQUEsZ0JBQUFDLFlBQUFDLDJCQUNuQmYsUUFBQSxHQUFBZ0I7QUFBQSxnQkFBQTtBQUFoQixtQkFBQUYsVUFBQUcsRUFBQSxHQUFBLEVBQUFELFFBQUFGLFVBQUFJLEVBQUEsR0FBQUMsUUFBMEI7QUFBQSxzQkFBZkMsSUFBQUosTUFBQXpGO0FBQ1Ysb0JBQUk2RixLQUFLbkIsU0FBUztBQUNqQlksc0JBQUlaLFFBQVFtQixDQUFDLENBQUUsSUFBSTtnQkFDcEI7Y0FDRDtZQUFBLFNBQUFDLEtBQUE7QUFBQVAsd0JBQUEzQixFQUFBa0MsR0FBQTtZQUFBLFVBQUE7QUFBQVAsd0JBQUFRLEVBQUE7WUFBQTtBQUNBNUMsZUFBRzZDLE9BQU9WLEdBQUc7VUFDZDtBQUVBLGdCQUFNVyxPQUFPakksU0FBU3FFLGNBQWlDLDhCQUE4QjtBQUNyRixjQUFJNEQsTUFBTTtBQUNUQSxpQkFBS0MsT0FBTztVQUNiO1FBQ0QsQ0FBQTtBQUFBLGVBQUEsU0FqRU12RCxjQUFBd0QsS0FBQUMsS0FBQTtBQUFBLGlCQUFBeEQsTUFBQVYsTUFBQSxNQUFBQyxTQUFBO1FBQUE7TUFBQSxFQUFBO0FBb0VOLFlBQU1rRSxXQUFXLElBQUlDLGlCQUFrQkMsYUFBWTtBQUNsRCxjQUFNQyxZQUFZQyxFQUNqQkYsUUFBUUcsUUFBUSxDQUFDO1VBQUNDO1FBQVUsTUFBTTtBQUNqQyxpQkFBTyxDQUFDLEdBQUdBLFVBQVU7UUFDdEIsQ0FBQyxDQUNGLEVBQUVDLEtBQTBCLDhDQUE4QztBQUMxRSxZQUFJSixVQUFVSyxTQUFTLEdBQUc7QUFDekIsZUFBS2xFLGFBQWE2RCxXQUFXQSxVQUFVTSxLQUFLLElBQUksTUFBTSx3QkFBd0I7UUFDL0U7TUFDRCxDQUFDO0FBQ0RULGVBQVNVLFFBQVEvSSxTQUFTZ0osTUFBTTtRQUFDQyxXQUFXO01BQUksQ0FBQztBQUVqRDlKLFNBQUd3RCxPQUFPdUcsS0FBQSxHQUFBMUosT0FBUUYsS0FBRyxHQUFBLEVBQUFFLE9BQUlFLFVBQVEsR0FBQSxFQUFBRixPQUFJSCxTQUFPLGlCQUFBLEdBQW1CLFVBQVU7SUFDMUUsR0FBRztFQUFBO0FBQUEsQ0FBQTs7QUMxTkgsSUFBQThKLG9CQUF3QkMsUUFBQSxpQkFBQTtBQUV4QixJQUFNQyxPQUFBLEdBQWNGLGtCQUFBRyxXQUFVLHdCQUF3Qjs7QUNBdEQsSUFBTUMsb0JBQUEsMkJBQUE7QUFBQSxNQUFBQyxRQUFBekgsa0JBQW9CLGFBQVk7QUFDckMsUUFBSSxDQUFDNUMsR0FBR3NLLEtBQUtDLFFBQVE1SSxJQUFJLGlCQUFpQixHQUFHO0FBQzVDLFdBQUt1SSxJQUFJTSxrQkFBa0I7UUFDMUIzRixRQUFRO1FBQ1I0RixRQUFRO01BQ1QsQ0FBcUI7QUFFckIsWUFBTXpLLEdBQUd3RCxPQUFPQyxNQUFNLHFCQUFxQjtJQUM1QztFQUNELENBQUE7QUFBQSxTQUFBLFNBVE0yRyxxQkFBQTtBQUFBLFdBQUFDLE1BQUF0RixNQUFBLE1BQUFDLFNBQUE7RUFBQTtBQUFBLEVBQUE7Ozs2Q0NBTCxhQUFtQztBQUNuQyxTQUFLb0Ysa0JBQWtCO0FBQ3ZCLFVBQU07TUFBQ007TUFBVUM7SUFBVyxJQUFJM0ssR0FBRzBCLE9BQU9DLElBQUk7QUFDOUMsUUFBSStJLGFBQWEsVUFBVSxDQUFDQyxhQUFhO0FBQ3hDO0lBQ0Q7QUFFQSxVQUFNO01BQUMsdUJBQXVCQztJQUFVLElBQUk1SyxHQUFHc0ssS0FBS0MsUUFBUTVJLElBQUk7QUFHaEUsUUFBSWlKLFlBQVk7QUFDZixZQUFNNUssR0FBR3dELE9BQU9DLE1BQU0sdUJBQXVCO0lBQzlDO0FBRUEsUUFBSSxFQUFFLGtCQUFrQjVDLFdBQVc7QUFDbEMsWUFBTUgsUUFBQUMsUUFBQSxFQUFBa0ssS0FBQSxPQUFBakwsZUFBQSxHQUFBRCxrQkFBQTtJQUNQO0VBQ0QsQ0FBQTtBQUFBLFdBakJnQm1MLG9CQUFBO0FBQUEsV0FBQUMsbUJBQUFoRyxNQUFBLE1BQUFDLFNBQUE7RUFBQTtBQUFBLFNBQUE4RjtBQUFBLEdBQUEsRUFpQmI7IiwKICAibmFtZXMiOiBbIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiU3ltYm9sIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiZG9jdW1lbnQiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJUeXBlRXJyb3IiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJTZXQiLCAibW9kdWxlIiwgIlNldCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJTZXQiLCAiJCIsICJtb2R1bGUiLCAiU2V0IiwgIiQiLCAibW9kdWxlIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgIm1vZHVsZSIsICIkIiwgImhpZ2hsaWdodF9leHBvcnRzIiwgImluaXRfaGlnaGxpZ2h0IiwgIl9fZXNtIiwgIl93aW5kb3ciLCAibGlicyIsICJtdyIsICJ3cGhsIiwgInZlcnNpb24iLCAiQ0ROIiwgIk1XX0NETiIsICJjb25jYXQiLCAiY21WZXJzaW9uIiwgIlJFUE9fQ0ROIiwgIndpbmRvdyIsICJDb2RlTWlycm9yNiIsICJQcm9taXNlIiwgInJlc29sdmUiLCAic2NyaXB0IiwgImRvY3VtZW50IiwgImNyZWF0ZUVsZW1lbnQiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJ0eXBlIiwgInNyYyIsICJoZWFkIiwgImFwcGVuZCIsICJ3Z1BhZ2VOYW1lIiwgInBhZ2UiLCAid2dOYW1lc3BhY2VOdW1iZXIiLCAibnMiLCAid2dQYWdlQ29udGVudE1vZGVsIiwgImNvbnRlbnRtb2RlbCIsICJjb25maWciLCAiZ2V0IiwgIkNPTlRFTlRNT0RFTFMiLCAid2lraXRleHQiLCAiRVhUUyIsICJjc3MiLCAianMiLCAianNvbiIsICJOQU1FU1BBQ0VTIiwgImdldE9iamVjdCIsICJrZXkiLCAiSlNPTiIsICJwYXJzZSIsICJTdHJpbmciLCAibG9jYWxTdG9yYWdlIiwgImdldEl0ZW0iLCAiZ2V0UGFnZU1vZGUiLCAiX3JlZiIsICJfYXN5bmNUb0dlbmVyYXRvciIsICJ2YWx1ZSIsICJfV2lraXBsdXNQYWdlcyIsICJwYWdlcyIsICJPYmplY3QiLCAidmFsdWVzIiwgImZpbHRlciIsICJzZWN0aW9uQ2FjaGUiLCAiaW5jbHVkZXMiLCAic29tZSIsICJ0aXRsZSIsICJlbmRzV2l0aCIsICJsb2FkZXIiLCAidXNpbmciLCAibW9kZXMiLCAiU2V0IiwgIm1hcCIsICJfdCRnZXRFeHRlbnNpb24iLCAidCIsICJUaXRsZSIsICJuYW1lc3BhY2UiLCAiZ2V0TmFtZXNwYWNlSWQiLCAibW9kZSIsICJnZXRFeHRlbnNpb24iLCAidG9Mb3dlckNhc2UiLCAic2l6ZSIsICJoYXMiLCAiT08iLCAidWkiLCAiY29uZmlybSIsICJtc2ciLCAiYWN0aW9ucyIsICJsYWJlbCIsICJhY3Rpb24iLCAiX3giLCAiYXBwbHkiLCAiYXJndW1lbnRzIiwgInN1Ym1pdCIsICJxdWVyeVNlbGVjdG9yIiwgImRpc3BhdGNoRXZlbnQiLCAiTW91c2VFdmVudCIsICJzdWJtaXRNaW5vciIsICJjaGVja2VkIiwgImVzY2FwZUVkaXQiLCAicmVuZGVyRWRpdG9yIiwgIl9yZWYyIiwgIiR0YXJnZXQiLCAic2V0dGluZyIsICJfY20kdmlldyIsICJzZXR0aW5ncyIsICJlc2NUb0V4aXRRdWlja0VkaXQiLCAiZXNjIiwgImNtIiwgImZyb21UZXh0QXJlYSIsICJ2YWwiLCAidmlldyIsICJkb20iLCAiZWRpdG9yIiwgImdldERvbU5vZGUiLCAiaWQiLCAib25LZXlEb3duIiwgImUiLCAia2V5Q29kZSIsICJtb25hY28iLCAiS2V5Q29kZSIsICJLZXlTIiwgImN0cmxLZXkiLCAibWV0YUtleSIsICJwcmV2ZW50RGVmYXVsdCIsICJzaGlmdEtleSIsICJFc2NhcGUiLCAiZXh0cmFLZXlzIiwgInJ1biIsICJvbGRLZXkiLCAib2xkUHJlZnMiLCAibWFwcGluZyIsICJhY3RpdmVMaW5lIiwgInRyYWlsaW5nc3BhY2UiLCAibWF0Y2hCcmFja2V0cyIsICJjbG9zZUJyYWNrZXRzIiwgIm1hdGNoVGFncyIsICJmb2xkIiwgIndpa2lFZGl0b3IiLCAiZXNjYXBlIiwgImNvbnRleHRtZW51IiwgImxpbnQiLCAicmVtb3ZlSXRlbSIsICJvYmoiLCAiX2l0ZXJhdG9yIiwgIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwgIl9zdGVwIiwgInMiLCAibiIsICJkb25lIiwgImsiLCAiZXJyIiwgImYiLCAicHJlZmVyIiwgImp1bXAiLCAiaHJlZiIsICJfeDIiLCAiX3gzIiwgIm9ic2VydmVyIiwgIk11dGF0aW9uT2JzZXJ2ZXIiLCAicmVjb3JkcyIsICIkZWRpdEFyZWEiLCAiJCIsICJmbGF0TWFwIiwgImFkZGVkTm9kZXMiLCAiZmluZCIsICJsZW5ndGgiLCAiYXR0ciIsICJvYnNlcnZlIiwgImJvZHkiLCAiY2hpbGRMaXN0IiwgImxvYWQiLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAicmVxdWlyZSIsICJhcGkiLCAiaW5pdE13QXBpIiwgImNoZWNrRGVwZW5kZW5jaWVzIiwgIl9yZWYzIiwgInVzZXIiLCAib3B0aW9ucyIsICJwb3N0V2l0aEVkaXRUb2tlbiIsICJjaGFuZ2UiLCAid2dBY3Rpb24iLCAid2dJc0FydGljbGUiLCAiaXNWZUVuYWJsZSIsICJ0aGVuIiwgIldpa2lwbHVzSGlnaGxpZ2h0IiwgIl9XaWtpcGx1c0hpZ2hsaWdodCJdCn0K diff --git a/dist/Wikiplus/Wikiplus.js b/dist/Wikiplus/Wikiplus.js index 5412368da..46bc3c04f 100644 --- a/dist/Wikiplus/Wikiplus.js +++ b/dist/Wikiplus/Wikiplus.js @@ -29,9 +29,9 @@ var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/fails.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/fails.js var require_fails = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/fails.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/fails.js"(exports, module2) { "use strict"; module2.exports = function(exec) { try { @@ -43,9 +43,9 @@ var require_fails = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/descriptors.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/descriptors.js var require_descriptors = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/descriptors.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/descriptors.js"(exports, module2) { "use strict"; var fails = require_fails(); module2.exports = !fails(function() { @@ -56,9 +56,9 @@ var require_descriptors = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-bind-native.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-bind-native.js var require_function_bind_native = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-bind-native.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-bind-native.js"(exports, module2) { "use strict"; var fails = require_fails(); module2.exports = !fails(function() { @@ -69,9 +69,9 @@ var require_function_bind_native = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this.js var require_function_uncurry_this = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this.js"(exports, module2) { "use strict"; var NATIVE_BIND = require_function_bind_native(); var FunctionPrototype = Function.prototype; @@ -85,9 +85,9 @@ var require_function_uncurry_this = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-callable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-callable.js var require_is_callable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-callable.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-callable.js"(exports, module2) { "use strict"; var documentAll = typeof document == "object" && document.all; module2.exports = typeof documentAll == "undefined" && documentAll !== void 0 ? function(argument) { @@ -98,9 +98,9 @@ var require_is_callable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-null-or-undefined.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-null-or-undefined.js var require_is_null_or_undefined = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-null-or-undefined.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-null-or-undefined.js"(exports, module2) { "use strict"; module2.exports = function(it) { return it === null || it === void 0; @@ -108,9 +108,9 @@ var require_is_null_or_undefined = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/require-object-coercible.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/require-object-coercible.js var require_require_object_coercible = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/require-object-coercible.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/require-object-coercible.js"(exports, module2) { "use strict"; var isNullOrUndefined = require_is_null_or_undefined(); var $TypeError = TypeError; @@ -121,9 +121,9 @@ var require_require_object_coercible = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-object.js var require_to_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-object.js"(exports, module2) { "use strict"; var requireObjectCoercible = require_require_object_coercible(); var $Object = Object; @@ -133,9 +133,9 @@ var require_to_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/has-own-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/has-own-property.js var require_has_own_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/has-own-property.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/has-own-property.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var toObject = require_to_object(); @@ -146,9 +146,9 @@ var require_has_own_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-name.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-name.js var require_function_name = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-name.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-name.js"(exports, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var hasOwn = require_has_own_property(); @@ -166,17 +166,17 @@ var require_function_name = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-pure.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-pure.js var require_is_pure = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-pure.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-pure.js"(exports, module2) { "use strict"; module2.exports = false; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/global.js -var require_global = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/global.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/global-this.js +var require_global_this = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/global-this.js"(exports, module2) { "use strict"; var check = function(it) { return it && it.Math === Math && it; @@ -190,45 +190,45 @@ var require_global = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-global-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-global-property.js var require_define_global_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-global-property.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-global-property.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var defineProperty = Object.defineProperty; module2.exports = function(key, value) { try { - defineProperty(global2, key, { value, configurable: true, writable: true }); + defineProperty(globalThis2, key, { value, configurable: true, writable: true }); } catch (error) { - global2[key] = value; + globalThis2[key] = value; } return value; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-store.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-store.js var require_shared_store = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-store.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-store.js"(exports, module2) { "use strict"; var IS_PURE = require_is_pure(); - var globalThis2 = require_global(); + var globalThis2 = require_global_this(); var defineGlobalProperty = require_define_global_property(); var SHARED = "__core-js_shared__"; var store = module2.exports = globalThis2[SHARED] || defineGlobalProperty(SHARED, {}); (store.versions || (store.versions = [])).push({ - version: "3.37.1", + version: "3.38.0", mode: IS_PURE ? "pure" : "global", copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)", - license: "https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE", + license: "https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE", source: "https://github.com/zloirock/core-js" }); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/inspect-source.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/inspect-source.js var require_inspect_source = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/inspect-source.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/inspect-source.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var isCallable = require_is_callable(); @@ -243,20 +243,20 @@ var require_inspect_source = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/weak-map-basic-detection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/weak-map-basic-detection.js var require_weak_map_basic_detection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/weak-map-basic-detection.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/weak-map-basic-detection.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isCallable = require_is_callable(); - var WeakMap = global2.WeakMap; + var WeakMap = globalThis2.WeakMap; module2.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-object.js var require_is_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-object.js"(exports, module2) { "use strict"; var isCallable = require_is_callable(); module2.exports = function(it) { @@ -265,13 +265,13 @@ var require_is_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/document-create-element.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/document-create-element.js var require_document_create_element = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/document-create-element.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/document-create-element.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isObject = require_is_object(); - var document2 = global2.document; + var document2 = globalThis2.document; var EXISTS = isObject(document2) && isObject(document2.createElement); module2.exports = function(it) { return EXISTS ? document2.createElement(it) : {}; @@ -279,9 +279,9 @@ var require_document_create_element = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ie8-dom-define.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ie8-dom-define.js var require_ie8_dom_define = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ie8-dom-define.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ie8-dom-define.js"(exports, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var fails = require_fails(); @@ -296,9 +296,9 @@ var require_ie8_dom_define = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/v8-prototype-define-bug.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/v8-prototype-define-bug.js var require_v8_prototype_define_bug = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/v8-prototype-define-bug.js"(exports, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var fails = require_fails(); @@ -312,9 +312,9 @@ var require_v8_prototype_define_bug = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/an-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/an-object.js var require_an_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/an-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/an-object.js"(exports, module2) { "use strict"; var isObject = require_is_object(); var $String = String; @@ -326,9 +326,9 @@ var require_an_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-call.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-call.js var require_function_call = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-call.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-call.js"(exports, module2) { "use strict"; var NATIVE_BIND = require_function_bind_native(); var call = Function.prototype.call; @@ -338,46 +338,49 @@ var require_function_call = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in.js var require_get_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-built-in.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var isCallable = require_is_callable(); var aFunction = function(argument) { return isCallable(argument) ? argument : void 0; }; module2.exports = function(namespace, method) { - return arguments.length < 2 ? aFunction(global2[namespace]) : global2[namespace] && global2[namespace][method]; + return arguments.length < 2 ? aFunction(globalThis2[namespace]) : globalThis2[namespace] && globalThis2[namespace][method]; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-is-prototype-of.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-is-prototype-of.js var require_object_is_prototype_of = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-is-prototype-of.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-is-prototype-of.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); module2.exports = uncurryThis({}.isPrototypeOf); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-user-agent.js -var require_engine_user_agent = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-user-agent.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-user-agent.js +var require_environment_user_agent = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-user-agent.js"(exports, module2) { "use strict"; - module2.exports = typeof navigator != "undefined" && String(navigator.userAgent) || ""; + var globalThis2 = require_global_this(); + var navigator2 = globalThis2.navigator; + var userAgent = navigator2 && navigator2.userAgent; + module2.exports = userAgent ? String(userAgent) : ""; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-v8-version.js -var require_engine_v8_version = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-v8-version.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-v8-version.js +var require_environment_v8_version = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-v8-version.js"(exports, module2) { "use strict"; - var global2 = require_global(); - var userAgent = require_engine_user_agent(); - var process = global2.process; - var Deno2 = global2.Deno; + var globalThis2 = require_global_this(); + var userAgent = require_environment_user_agent(); + var process = globalThis2.process; + var Deno2 = globalThis2.Deno; var versions = process && process.versions || Deno2 && Deno2.version; var v8 = versions && versions.v8; var match; @@ -397,14 +400,14 @@ var require_engine_v8_version = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/symbol-constructor-detection.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/symbol-constructor-detection.js var require_symbol_constructor_detection = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/symbol-constructor-detection.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/symbol-constructor-detection.js"(exports, module2) { "use strict"; - var V8_VERSION = require_engine_v8_version(); + var V8_VERSION = require_environment_v8_version(); var fails = require_fails(); - var global2 = require_global(); - var $String = global2.String; + var globalThis2 = require_global_this(); + var $String = globalThis2.String; module2.exports = !!Object.getOwnPropertySymbols && !fails(function() { var symbol = Symbol("symbol detection"); return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances @@ -413,18 +416,18 @@ var require_symbol_constructor_detection = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/use-symbol-as-uid.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/use-symbol-as-uid.js var require_use_symbol_as_uid = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/use-symbol-as-uid.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/use-symbol-as-uid.js"(exports, module2) { "use strict"; var NATIVE_SYMBOL = require_symbol_constructor_detection(); module2.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol"; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-symbol.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-symbol.js var require_is_symbol = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-symbol.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-symbol.js"(exports, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var isCallable = require_is_callable(); @@ -440,9 +443,9 @@ var require_is_symbol = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-to-string.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/try-to-string.js var require_try_to_string = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-to-string.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/try-to-string.js"(exports, module2) { "use strict"; var $String = String; module2.exports = function(argument) { @@ -455,9 +458,9 @@ var require_try_to_string = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-callable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-callable.js var require_a_callable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/a-callable.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/a-callable.js"(exports, module2) { "use strict"; var isCallable = require_is_callable(); var tryToString = require_try_to_string(); @@ -469,9 +472,9 @@ var require_a_callable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-method.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-method.js var require_get_method = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/get-method.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-method.js"(exports, module2) { "use strict"; var aCallable = require_a_callable(); var isNullOrUndefined = require_is_null_or_undefined(); @@ -482,9 +485,9 @@ var require_get_method = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ordinary-to-primitive.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ordinary-to-primitive.js var require_ordinary_to_primitive = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/ordinary-to-primitive.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/ordinary-to-primitive.js"(exports, module2) { "use strict"; var call = require_function_call(); var isCallable = require_is_callable(); @@ -500,9 +503,9 @@ var require_ordinary_to_primitive = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared.js var require_shared = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared.js"(exports, module2) { "use strict"; var store = require_shared_store(); module2.exports = function(key, value) { @@ -511,9 +514,9 @@ var require_shared = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/uid.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/uid.js var require_uid = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/uid.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/uid.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var id = 0; @@ -525,17 +528,17 @@ var require_uid = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/well-known-symbol.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/well-known-symbol.js var require_well_known_symbol = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/well-known-symbol.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/well-known-symbol.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var shared = require_shared(); var hasOwn = require_has_own_property(); var uid = require_uid(); var NATIVE_SYMBOL = require_symbol_constructor_detection(); var USE_SYMBOL_AS_UID = require_use_symbol_as_uid(); - var Symbol2 = global2.Symbol; + var Symbol2 = globalThis2.Symbol; var WellKnownSymbolsStore = shared("wks"); var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2["for"] || Symbol2 : Symbol2 && Symbol2.withoutSetter || uid; module2.exports = function(name) { @@ -547,9 +550,9 @@ var require_well_known_symbol = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-primitive.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-primitive.js var require_to_primitive = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-primitive.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-primitive.js"(exports, module2) { "use strict"; var call = require_function_call(); var isObject = require_is_object(); @@ -575,9 +578,9 @@ var require_to_primitive = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-property-key.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-property-key.js var require_to_property_key = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-property-key.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-property-key.js"(exports, module2) { "use strict"; var toPrimitive = require_to_primitive(); var isSymbol = require_is_symbol(); @@ -588,9 +591,9 @@ var require_to_property_key = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-define-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-define-property.js var require_object_define_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-define-property.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-define-property.js"(exports) { "use strict"; var DESCRIPTORS = require_descriptors(); var IE8_DOM_DEFINE = require_ie8_dom_define(); @@ -634,9 +637,9 @@ var require_object_define_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-property-descriptor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-property-descriptor.js var require_create_property_descriptor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-property-descriptor.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-property-descriptor.js"(exports, module2) { "use strict"; module2.exports = function(bitmap, value) { return { @@ -649,9 +652,9 @@ var require_create_property_descriptor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-non-enumerable-property.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-non-enumerable-property.js var require_create_non_enumerable_property = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/create-non-enumerable-property.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/create-non-enumerable-property.js"(exports, module2) { "use strict"; var DESCRIPTORS = require_descriptors(); var definePropertyModule = require_object_define_property(); @@ -665,9 +668,9 @@ var require_create_non_enumerable_property = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-key.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-key.js var require_shared_key = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/shared-key.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/shared-key.js"(exports, module2) { "use strict"; var shared = require_shared(); var uid = require_uid(); @@ -678,20 +681,20 @@ var require_shared_key = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/hidden-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/hidden-keys.js var require_hidden_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/hidden-keys.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/hidden-keys.js"(exports, module2) { "use strict"; module2.exports = {}; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/internal-state.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/internal-state.js var require_internal_state = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/internal-state.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/internal-state.js"(exports, module2) { "use strict"; var NATIVE_WEAK_MAP = require_weak_map_basic_detection(); - var global2 = require_global(); + var globalThis2 = require_global_this(); var isObject = require_is_object(); var createNonEnumerableProperty = require_create_non_enumerable_property(); var hasOwn = require_has_own_property(); @@ -699,8 +702,8 @@ var require_internal_state = __commonJS({ var sharedKey = require_shared_key(); var hiddenKeys = require_hidden_keys(); var OBJECT_ALREADY_INITIALIZED = "Object already initialized"; - var TypeError2 = global2.TypeError; - var WeakMap = global2.WeakMap; + var TypeError2 = globalThis2.TypeError; + var WeakMap = globalThis2.WeakMap; var set; var get; var has; @@ -761,9 +764,9 @@ var require_internal_state = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/make-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/make-built-in.js var require_make_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/make-built-in.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/make-built-in.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var fails = require_fails(); @@ -816,9 +819,9 @@ var require_make_built_in = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in-accessor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in-accessor.js var require_define_built_in_accessor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in-accessor.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in-accessor.js"(exports, module2) { "use strict"; var makeBuiltIn = require_make_built_in(); var defineProperty = require_object_define_property(); @@ -830,9 +833,34 @@ var require_define_built_in_accessor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this-accessor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof-raw.js +var require_classof_raw = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof-raw.js"(exports, module2) { + "use strict"; + var uncurryThis = require_function_uncurry_this(); + var toString = uncurryThis({}.toString); + var stringSlice = uncurryThis("".slice); + module2.exports = function(it) { + return stringSlice(toString(it), 8, -1); + }; + } +}); + +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this-clause.js +var require_function_uncurry_this_clause = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this-clause.js"(exports, module2) { + "use strict"; + var classofRaw = require_classof_raw(); + var uncurryThis = require_function_uncurry_this(); + module2.exports = function(fn) { + if (classofRaw(fn) === "Function") return uncurryThis(fn); + }; + } +}); + +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this-accessor.js var require_function_uncurry_this_accessor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/function-uncurry-this-accessor.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/function-uncurry-this-accessor.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var aCallable = require_a_callable(); @@ -845,42 +873,35 @@ var require_function_uncurry_this_accessor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof-raw.js -var require_classof_raw = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof-raw.js"(exports, module2) { - "use strict"; - var uncurryThis = require_function_uncurry_this(); - var toString = uncurryThis({}.toString); - var stringSlice = uncurryThis("".slice); - module2.exports = function(it) { - return stringSlice(toString(it), 8, -1); - }; - } -}); - -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-buffer-byte-length.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-buffer-byte-length.js var require_array_buffer_byte_length = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-buffer-byte-length.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-buffer-byte-length.js"(exports, module2) { "use strict"; + var globalThis2 = require_global_this(); var uncurryThisAccessor = require_function_uncurry_this_accessor(); var classof = require_classof_raw(); - var $TypeError = TypeError; - module2.exports = uncurryThisAccessor(ArrayBuffer.prototype, "byteLength", "get") || function(O) { - if (classof(O) !== "ArrayBuffer") throw new $TypeError("ArrayBuffer expected"); + var ArrayBuffer2 = globalThis2.ArrayBuffer; + var TypeError2 = globalThis2.TypeError; + module2.exports = ArrayBuffer2 && uncurryThisAccessor(ArrayBuffer2.prototype, "byteLength", "get") || function(O) { + if (classof(O) !== "ArrayBuffer") throw new TypeError2("ArrayBuffer expected"); return O.byteLength; }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-buffer-is-detached.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-buffer-is-detached.js var require_array_buffer_is_detached = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-buffer-is-detached.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-buffer-is-detached.js"(exports, module2) { "use strict"; - var uncurryThis = require_function_uncurry_this(); + var globalThis2 = require_global_this(); + var uncurryThis = require_function_uncurry_this_clause(); var arrayBufferByteLength = require_array_buffer_byte_length(); - var slice = uncurryThis(ArrayBuffer.prototype.slice); + var ArrayBuffer2 = globalThis2.ArrayBuffer; + var ArrayBufferPrototype = ArrayBuffer2 && ArrayBuffer2.prototype; + var slice = ArrayBufferPrototype && uncurryThis(ArrayBufferPrototype.slice); module2.exports = function(O) { if (arrayBufferByteLength(O) !== 0) return false; + if (!slice) return false; try { slice(O, 0, 0); return false; @@ -891,9 +912,9 @@ var require_array_buffer_is_detached = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.array-buffer.detached.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.array-buffer.detached.js var require_es_array_buffer_detached = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.array-buffer.detached.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.array-buffer.detached.js"() { "use strict"; var DESCRIPTORS = require_descriptors(); var defineBuiltInAccessor = require_define_built_in_accessor(); @@ -910,9 +931,9 @@ var require_es_array_buffer_detached = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-property-is-enumerable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-property-is-enumerable.js var require_object_property_is_enumerable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-property-is-enumerable.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-property-is-enumerable.js"(exports) { "use strict"; var $propertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; @@ -924,9 +945,9 @@ var require_object_property_is_enumerable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/indexed-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/indexed-object.js var require_indexed_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/indexed-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/indexed-object.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var fails = require_fails(); @@ -941,9 +962,9 @@ var require_indexed_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-indexed-object.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-indexed-object.js var require_to_indexed_object = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-indexed-object.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-indexed-object.js"(exports, module2) { "use strict"; var IndexedObject = require_indexed_object(); var requireObjectCoercible = require_require_object_coercible(); @@ -953,9 +974,9 @@ var require_to_indexed_object = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-descriptor.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-descriptor.js var require_object_get_own_property_descriptor = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports) { "use strict"; var DESCRIPTORS = require_descriptors(); var call = require_function_call(); @@ -978,9 +999,9 @@ var require_object_get_own_property_descriptor = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in.js var require_define_built_in = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/define-built-in.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/define-built-in.js"(exports, module2) { "use strict"; var isCallable = require_is_callable(); var definePropertyModule = require_object_define_property(); @@ -1013,9 +1034,9 @@ var require_define_built_in = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/math-trunc.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/math-trunc.js var require_math_trunc = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/math-trunc.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/math-trunc.js"(exports, module2) { "use strict"; var ceil = Math.ceil; var floor = Math.floor; @@ -1026,9 +1047,9 @@ var require_math_trunc = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-integer-or-infinity.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-integer-or-infinity.js var require_to_integer_or_infinity = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-integer-or-infinity.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-integer-or-infinity.js"(exports, module2) { "use strict"; var trunc = require_math_trunc(); module2.exports = function(argument) { @@ -1038,9 +1059,9 @@ var require_to_integer_or_infinity = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-absolute-index.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-absolute-index.js var require_to_absolute_index = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-absolute-index.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-absolute-index.js"(exports, module2) { "use strict"; var toIntegerOrInfinity = require_to_integer_or_infinity(); var max = Math.max; @@ -1052,9 +1073,9 @@ var require_to_absolute_index = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-length.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-length.js var require_to_length = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-length.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-length.js"(exports, module2) { "use strict"; var toIntegerOrInfinity = require_to_integer_or_infinity(); var min = Math.min; @@ -1065,9 +1086,9 @@ var require_to_length = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/length-of-array-like.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/length-of-array-like.js var require_length_of_array_like = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/length-of-array-like.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/length-of-array-like.js"(exports, module2) { "use strict"; var toLength = require_to_length(); module2.exports = function(obj) { @@ -1076,9 +1097,9 @@ var require_length_of_array_like = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-includes.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-includes.js var require_array_includes = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-includes.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-includes.js"(exports, module2) { "use strict"; var toIndexedObject = require_to_indexed_object(); var toAbsoluteIndex = require_to_absolute_index(); @@ -1111,9 +1132,9 @@ var require_array_includes = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-keys-internal.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-keys-internal.js var require_object_keys_internal = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-keys-internal.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-keys-internal.js"(exports, module2) { "use strict"; var uncurryThis = require_function_uncurry_this(); var hasOwn = require_has_own_property(); @@ -1135,9 +1156,9 @@ var require_object_keys_internal = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/enum-bug-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/enum-bug-keys.js var require_enum_bug_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/enum-bug-keys.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/enum-bug-keys.js"(exports, module2) { "use strict"; module2.exports = [ "constructor", @@ -1151,9 +1172,9 @@ var require_enum_bug_keys = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-names.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-names.js var require_object_get_own_property_names = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-names.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-names.js"(exports) { "use strict"; var internalObjectKeys = require_object_keys_internal(); var enumBugKeys = require_enum_bug_keys(); @@ -1164,17 +1185,17 @@ var require_object_get_own_property_names = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-symbols.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-symbols.js var require_object_get_own_property_symbols = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/object-get-own-property-symbols.js"(exports) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/object-get-own-property-symbols.js"(exports) { "use strict"; exports.f = Object.getOwnPropertySymbols; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/own-keys.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/own-keys.js var require_own_keys = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/own-keys.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/own-keys.js"(exports, module2) { "use strict"; var getBuiltIn = require_get_built_in(); var uncurryThis = require_function_uncurry_this(); @@ -1190,9 +1211,9 @@ var require_own_keys = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/copy-constructor-properties.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/copy-constructor-properties.js var require_copy_constructor_properties = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/copy-constructor-properties.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/copy-constructor-properties.js"(exports, module2) { "use strict"; var hasOwn = require_has_own_property(); var ownKeys = require_own_keys(); @@ -1212,9 +1233,9 @@ var require_copy_constructor_properties = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-forced.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-forced.js var require_is_forced = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/is-forced.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/is-forced.js"(exports, module2) { "use strict"; var fails = require_fails(); var isCallable = require_is_callable(); @@ -1233,11 +1254,11 @@ var require_is_forced = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/export.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/export.js var require_export = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/export.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/export.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f; var createNonEnumerableProperty = require_create_non_enumerable_property(); var defineBuiltIn = require_define_built_in(); @@ -1250,11 +1271,11 @@ var require_export = __commonJS({ var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { - target = global2; + target = globalThis2; } else if (STATIC) { - target = global2[TARGET] || defineGlobalProperty(TARGET, {}); + target = globalThis2[TARGET] || defineGlobalProperty(TARGET, {}); } else { - target = global2[TARGET] && global2[TARGET].prototype; + target = globalThis2[TARGET] && globalThis2[TARGET].prototype; } if (target) for (key in source) { sourceProperty = source[key]; @@ -1276,9 +1297,9 @@ var require_export = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-index.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-index.js var require_to_index = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-index.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-index.js"(exports, module2) { "use strict"; var toIntegerOrInfinity = require_to_integer_or_infinity(); var toLength = require_to_length(); @@ -1293,61 +1314,84 @@ var require_to_index = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-is-node.js -var require_engine_is_node = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-is-node.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-buffer-not-detached.js +var require_array_buffer_not_detached = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-buffer-not-detached.js"(exports, module2) { "use strict"; - var global2 = require_global(); - var classof = require_classof_raw(); - module2.exports = classof(global2.process) === "process"; + var isDetached = require_array_buffer_is_detached(); + var $TypeError = TypeError; + module2.exports = function(it) { + if (isDetached(it)) throw new $TypeError("ArrayBuffer is detached"); + return it; + }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-node-require.js -var require_try_node_require = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/try-node-require.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment.js +var require_environment = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment.js"(exports, module2) { "use strict"; - var IS_NODE = require_engine_is_node(); - module2.exports = function(name) { - try { - if (IS_NODE) return Function('return require("' + name + '")')(); - } catch (error) { - } + var globalThis2 = require_global_this(); + var userAgent = require_environment_user_agent(); + var classof = require_classof_raw(); + var userAgentStartsWith = function(string) { + return userAgent.slice(0, string.length) === string; }; + module2.exports = function() { + if (userAgentStartsWith("Bun/")) return "BUN"; + if (userAgentStartsWith("Cloudflare-Workers")) return "CLOUDFLARE"; + if (userAgentStartsWith("Deno/")) return "DENO"; + if (userAgentStartsWith("Node.js/")) return "NODE"; + if (globalThis2.Bun && typeof Bun.version == "string") return "BUN"; + if (globalThis2.Deno && typeof Deno.version == "object") return "DENO"; + if (classof(globalThis2.process) === "process") return "NODE"; + if (globalThis2.window && globalThis2.document) return "BROWSER"; + return "REST"; + }(); } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-is-deno.js -var require_engine_is_deno = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-is-deno.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-is-node.js +var require_environment_is_node = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/environment-is-node.js"(exports, module2) { "use strict"; - module2.exports = typeof Deno == "object" && Deno && typeof Deno.version == "object"; + var ENVIRONMENT = require_environment(); + module2.exports = ENVIRONMENT === "NODE"; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-is-browser.js -var require_engine_is_browser = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/engine-is-browser.js"(exports, module2) { +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in-node-module.js +var require_get_built_in_node_module = __commonJS({ + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/get-built-in-node-module.js"(exports, module2) { "use strict"; - var IS_DENO = require_engine_is_deno(); - var IS_NODE = require_engine_is_node(); - module2.exports = !IS_DENO && !IS_NODE && typeof window == "object" && typeof document == "object"; + var globalThis2 = require_global_this(); + var IS_NODE = require_environment_is_node(); + module2.exports = function(name) { + if (IS_NODE) { + try { + return globalThis2.process.getBuiltinModule(name); + } catch (error) { + } + try { + return Function('return require("' + name + '")')(); + } catch (error) { + } + } + }; } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/structured-clone-proper-transfer.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/structured-clone-proper-transfer.js var require_structured_clone_proper_transfer = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/structured-clone-proper-transfer.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/structured-clone-proper-transfer.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var fails = require_fails(); - var V8 = require_engine_v8_version(); - var IS_BROWSER = require_engine_is_browser(); - var IS_DENO = require_engine_is_deno(); - var IS_NODE = require_engine_is_node(); - var structuredClone = global2.structuredClone; + var V8 = require_environment_v8_version(); + var ENVIRONMENT = require_environment(); + var structuredClone = globalThis2.structuredClone; module2.exports = !!structuredClone && !fails(function() { - if (IS_DENO && V8 > 92 || IS_NODE && V8 > 94 || IS_BROWSER && V8 > 97) return false; + if (ENVIRONMENT === "DENO" && V8 > 92 || ENVIRONMENT === "NODE" && V8 > 94 || ENVIRONMENT === "BROWSER" && V8 > 97) return false; var buffer = new ArrayBuffer(8); var clone = structuredClone(buffer, { transfer: [buffer] }); return buffer.byteLength !== 0 || clone.byteLength !== 8; @@ -1355,16 +1399,16 @@ var require_structured_clone_proper_transfer = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/detach-transferable.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/detach-transferable.js var require_detach_transferable = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/detach-transferable.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/detach-transferable.js"(exports, module2) { "use strict"; - var global2 = require_global(); - var tryNodeRequire = require_try_node_require(); + var globalThis2 = require_global_this(); + var getBuiltInNodeModule = require_get_built_in_node_module(); var PROPER_STRUCTURED_CLONE_TRANSFER = require_structured_clone_proper_transfer(); - var structuredClone = global2.structuredClone; - var $ArrayBuffer = global2.ArrayBuffer; - var $MessageChannel = global2.MessageChannel; + var structuredClone = globalThis2.structuredClone; + var $ArrayBuffer = globalThis2.ArrayBuffer; + var $MessageChannel = globalThis2.MessageChannel; var detach = false; var WorkerThreads; var channel; @@ -1376,7 +1420,7 @@ var require_detach_transferable = __commonJS({ }; } else if ($ArrayBuffer) try { if (!$MessageChannel) { - WorkerThreads = tryNodeRequire("worker_threads"); + WorkerThreads = getBuiltInNodeModule("worker_threads"); if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel; } if ($MessageChannel) { @@ -1396,22 +1440,21 @@ var require_detach_transferable = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-buffer-transfer.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-buffer-transfer.js var require_array_buffer_transfer = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/array-buffer-transfer.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/array-buffer-transfer.js"(exports, module2) { "use strict"; - var global2 = require_global(); + var globalThis2 = require_global_this(); var uncurryThis = require_function_uncurry_this(); var uncurryThisAccessor = require_function_uncurry_this_accessor(); var toIndex = require_to_index(); - var isDetached = require_array_buffer_is_detached(); + var notDetached = require_array_buffer_not_detached(); var arrayBufferByteLength = require_array_buffer_byte_length(); var detachTransferable = require_detach_transferable(); var PROPER_STRUCTURED_CLONE_TRANSFER = require_structured_clone_proper_transfer(); - var structuredClone = global2.structuredClone; - var ArrayBuffer2 = global2.ArrayBuffer; - var DataView = global2.DataView; - var TypeError2 = global2.TypeError; + var structuredClone = globalThis2.structuredClone; + var ArrayBuffer2 = globalThis2.ArrayBuffer; + var DataView = globalThis2.DataView; var min = Math.min; var ArrayBufferPrototype = ArrayBuffer2.prototype; var DataViewPrototype = DataView.prototype; @@ -1425,7 +1468,7 @@ var require_array_buffer_transfer = __commonJS({ var newByteLength = newLength === void 0 ? byteLength : toIndex(newLength); var fixedLength = !isResizable || !isResizable(arrayBuffer); var newBuffer; - if (isDetached(arrayBuffer)) throw new TypeError2("ArrayBuffer is detached"); + notDetached(arrayBuffer); if (PROPER_STRUCTURED_CLONE_TRANSFER) { arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] }); if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer; @@ -1446,9 +1489,9 @@ var require_array_buffer_transfer = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.array-buffer.transfer.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.array-buffer.transfer.js var require_es_array_buffer_transfer = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.array-buffer.transfer.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.array-buffer.transfer.js"() { "use strict"; var $2 = require_export(); var $transfer = require_array_buffer_transfer(); @@ -1460,9 +1503,9 @@ var require_es_array_buffer_transfer = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js var require_es_array_buffer_transfer_to_fixed_length = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js"() { "use strict"; var $2 = require_export(); var $transfer = require_array_buffer_transfer(); @@ -1474,9 +1517,9 @@ var require_es_array_buffer_transfer_to_fixed_length = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-string-tag-support.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-string-tag-support.js var require_to_string_tag_support = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-string-tag-support.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-string-tag-support.js"(exports, module2) { "use strict"; var wellKnownSymbol = require_well_known_symbol(); var TO_STRING_TAG = wellKnownSymbol("toStringTag"); @@ -1486,9 +1529,9 @@ var require_to_string_tag_support = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof.js var require_classof = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/classof.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/classof.js"(exports, module2) { "use strict"; var TO_STRING_TAG_SUPPORT = require_to_string_tag_support(); var isCallable = require_is_callable(); @@ -1512,9 +1555,9 @@ var require_classof = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-string.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-string.js var require_to_string = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/to-string.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/to-string.js"(exports, module2) { "use strict"; var classof = require_classof(); var $String = String; @@ -1525,9 +1568,9 @@ var require_to_string = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/validate-arguments-length.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/validate-arguments-length.js var require_validate_arguments_length = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/internals/validate-arguments-length.js"(exports, module2) { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/internals/validate-arguments-length.js"(exports, module2) { "use strict"; var $TypeError = TypeError; module2.exports = function(passed, required) { @@ -1537,9 +1580,9 @@ var require_validate_arguments_length = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.delete.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.delete.js var require_web_url_search_params_delete = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.delete.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.delete.js"() { "use strict"; var defineBuiltIn = require_define_built_in(); var uncurryThis = require_function_uncurry_this(); @@ -1587,9 +1630,9 @@ var require_web_url_search_params_delete = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.has.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.has.js var require_web_url_search_params_has = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.has.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.has.js"() { "use strict"; var defineBuiltIn = require_define_built_in(); var uncurryThis = require_function_uncurry_this(); @@ -1618,9 +1661,9 @@ var require_web_url_search_params_has = __commonJS({ } }); -// node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.size.js +// node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.size.js var require_web_url_search_params_size = __commonJS({ - "node_modules/.pnpm/core-js@3.37.1/node_modules/core-js/modules/web.url-search-params.size.js"() { + "node_modules/.pnpm/core-js@3.38.0/node_modules/core-js/modules/web.url-search-params.size.js"() { "use strict"; var DESCRIPTORS = require_descriptors(); var uncurryThis = require_function_uncurry_this(); @@ -10076,4 +10119,4 @@ _asyncToGenerator(function* () { /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1ieXRlLWxlbmd0aC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1pcy1kZXRhY2hlZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuZGV0YWNoZWQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWF0aC10cnVuYy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktbm9kZS1yZXF1aXJlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cnVjdHVyZWQtY2xvbmUtcHJvcGVyLXRyYW5zZmVyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGV0YWNoLXRyYW5zZmVyYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci10cmFuc2Zlci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIudHJhbnNmZXIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXktYnVmZmVyLnRyYW5zZmVyLXRvLWZpeGVkLWxlbmd0aC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzcuMS9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5kZWxldGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zNy4xL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmhhcy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM3LjEvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qcyIsICJzcmMvV2lraXBsdXMvbW9kdWxlcy9jb3JlLmpzIiwgInNyYy9XaWtpcGx1cy9XaWtpcGx1cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGNhbGwgPSBGdW5jdGlvblByb3RvdHlwZS5jYWxsO1xudmFyIHVuY3VycnlUaGlzV2l0aEJpbmQgPSBOQVRJVkVfQklORCAmJiBGdW5jdGlvblByb3RvdHlwZS5iaW5kLmJpbmQoY2FsbCwgY2FsbCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyB1bmN1cnJ5VGhpc1dpdGhCaW5kIDogZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGwuYXBwbHkoZm4sIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3RcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgZG9jdW1lbnRBbGwgPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRBbGwgIT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIHdlIGNhbid0IHVzZSBqdXN0IGBpdCA9PSBudWxsYCBzaW5jZSBvZiBgZG9jdW1lbnQuYWxsYCBzcGVjaWFsIGNhc2Vcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3QtYWVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IG51bGwgfHwgaXQgPT09IHVuZGVmaW5lZDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuICRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHVuY3VycnlUaGlzKHt9Lmhhc093blByb3BlcnR5KTtcblxuLy8gYEhhc093blByb3BlcnR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaGFzb3ducHJvcGVydHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaGFzb3duIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkodG9PYmplY3QoaXQpLCBrZXkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIGNoZWNrKHR5cGVvZiB0aGlzID09ICdvYmplY3QnICYmIHRoaXMpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpc1tTSEFSRURdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFNIQVJFRCwge30pO1xuXG4oc3RvcmUudmVyc2lvbnMgfHwgKHN0b3JlLnZlcnNpb25zID0gW10pKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMzcuMScsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJyxcbiAgbGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzcuMS9MSUNFTlNFJyxcbiAgc291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVjggfiBDaHJvbWUgMzYtXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMzM0XG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ3Byb3RvdHlwZScsIHtcbiAgICB2YWx1ZTogNDIsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pLnByb3RvdHlwZSAhPT0gNDI7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IFR5cGUoYXJndW1lbnQpIGlzIE9iamVjdGBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc09iamVjdChhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJFN0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKSA6IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbC5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxudmFyICRTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnc3ltYm9sIGRldGVjdGlvbicpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIC8vIG5iOiBEbyBub3QgY2FsbCBgU3RyaW5nYCBkaXJlY3RseSB0byBhdm9pZCB0aGlzIGJlaW5nIG9wdGltaXplZCBvdXQgdG8gYHN5bWJvbCsnJ2Agd2hpY2ggd2lsbCxcbiAgLy8gb2YgY291cnNlLCBmYWlsLlxuICByZXR1cm4gISRTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdPYmplY3QnO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQoZnVuYykgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgT3JkaW5hcnlUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAocHJlZiA9PT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2xbJ2ZvciddIHx8IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSlcbiAgICAgID8gU3ltYm9sW25hbWVdXG4gICAgICA6IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgRU5VTUVSQUJMRSA9ICdlbnVtZXJhYmxlJztcbnZhciBDT05GSUdVUkFCTEUgPSAnY29uZmlndXJhYmxlJztcbnZhciBXUklUQUJMRSA9ICd3cml0YWJsZSc7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmICh0eXBlb2YgTyA9PT0gJ2Z1bmN0aW9uJyAmJiBQID09PSAncHJvdG90eXBlJyAmJiAndmFsdWUnIGluIEF0dHJpYnV0ZXMgJiYgV1JJVEFCTEUgaW4gQXR0cmlidXRlcyAmJiAhQXR0cmlidXRlc1tXUklUQUJMRV0pIHtcbiAgICB2YXIgY3VycmVudCA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFtXUklUQUJMRV0pIHtcbiAgICAgIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICAgICAgQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBDT05GSUdVUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbQ09ORklHVVJBQkxFXSA6IGN1cnJlbnRbQ09ORklHVVJBQkxFXSxcbiAgICAgICAgZW51bWVyYWJsZTogRU5VTUVSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tFTlVNRVJBQkxFXSA6IGN1cnJlbnRbRU5VTUVSQUJMRV0sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH0gcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbn0gOiAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IG5ldyAkVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbicpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBzdG9yZS5zZXQoaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5nZXQoaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuaGFzKGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkuKiQvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLmdldCwgbmFtZSwgeyBnZXR0ZXI6IHRydWUgfSk7XG4gIGlmIChkZXNjcmlwdG9yLnNldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5zZXQsIG5hbWUsIHsgc2V0dGVyOiB0cnVlIH0pO1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkuZih0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIG1ldGhvZCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICByZXR1cm4gdW5jdXJyeVRoaXMoYUNhbGxhYmxlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpW21ldGhvZF0pKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXNBY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3InKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBJbmNsdWRlc1xuLy8gLSBQZXJmb3JtID8gUmVxdWlyZUludGVybmFsU2xvdChPLCBbW0FycmF5QnVmZmVyRGF0YV1dKS5cbi8vIC0gSWYgSXNTaGFyZWRBcnJheUJ1ZmZlcihPKSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzQWNjZXNzb3IoQXJyYXlCdWZmZXIucHJvdG90eXBlLCAnYnl0ZUxlbmd0aCcsICdnZXQnKSB8fCBmdW5jdGlvbiAoTykge1xuICBpZiAoY2xhc3NvZihPKSAhPT0gJ0FycmF5QnVmZmVyJykgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0FycmF5QnVmZmVyIGV4cGVjdGVkJyk7XG4gIHJldHVybiBPLmJ5dGVMZW5ndGg7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBhcnJheUJ1ZmZlckJ5dGVMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLWJ5dGUtbGVuZ3RoJyk7XG5cbnZhciBzbGljZSA9IHVuY3VycnlUaGlzKEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8pIHtcbiAgaWYgKGFycmF5QnVmZmVyQnl0ZUxlbmd0aChPKSAhPT0gMCkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIHNsaWNlKE8sIDAsIDApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgaXNEZXRhY2hlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItaXMtZGV0YWNoZWQnKTtcblxudmFyIEFycmF5QnVmZmVyUHJvdG90eXBlID0gQXJyYXlCdWZmZXIucHJvdG90eXBlO1xuXG5pZiAoREVTQ1JJUFRPUlMgJiYgISgnZGV0YWNoZWQnIGluIEFycmF5QnVmZmVyUHJvdG90eXBlKSkge1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoQXJyYXlCdWZmZXJQcm90b3R5cGUsICdkZXRhY2hlZCcsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiBkZXRhY2hlZCgpIHtcbiAgICAgIHJldHVybiBpc0RldGFjaGVkKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gISRPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PT0gJ1N0cmluZycgPyBzcGxpdChpdCwgJycpIDogJE9iamVjdChpdCk7XG59IDogJE9iamVjdDtcbiIsICIndXNlIHN0cmljdCc7XG4vLyB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXNPd24oTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIWNhbGwocHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiwgTywgUCksIE9bUF0pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucy5lbnVtZXJhYmxlO1xuICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uYW1lIDoga2V5O1xuICBpZiAoaXNDYWxsYWJsZSh2YWx1ZSkpIG1ha2VCdWlsdEluKHZhbHVlLCBuYW1lLCBvcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMuZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBkZWZpbmVHbG9iYWxQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFvcHRpb25zLnVuc2FmZSkgZGVsZXRlIE9ba2V5XTtcbiAgICAgIGVsc2UgaWYgKE9ba2V5XSkgc2ltcGxlID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6ICFvcHRpb25zLm5vbkNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiAhb3B0aW9ucy5ub25Xcml0YWJsZVxuICAgIH0pO1xuICB9IHJldHVybiBPO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBNYXRoLnRydW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50cnVuY1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtdHJ1bmMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnRydW5jIHx8IGZ1bmN0aW9uIHRydW5jKHgpIHtcbiAgdmFyIG4gPSAreDtcbiAgcmV0dXJuIChuID4gMCA/IGZsb29yIDogY2VpbCkobik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0cnVuYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXRydW5jJyk7XG5cbi8vIGBUb0ludGVnZXJPckluZmluaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIG51bWJlciA9ICthcmd1bWVudDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiB0cnVuYyhudW1iZXIpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbGVuZ3RoXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbGVuID0gdG9JbnRlZ2VyT3JJbmZpbml0eShhcmd1bWVudCk7XG4gIHJldHVybiBsZW4gPiAwID8gbWluKGxlbiwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcblxuLy8gYExlbmd0aE9mQXJyYXlMaWtlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbGVuZ3Rob2ZhcnJheWxpa2Vcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdG9MZW5ndGgob2JqLmxlbmd0aCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXNPd24oaGlkZGVuS2V5cywga2V5KSAmJiBoYXNPd24oTywga2V5KSAmJiBwdXNoKHJlc3VsdCwga2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhc093bihPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCBwdXNoKHJlc3VsdCwga2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG52YXIgaGlkZGVuS2V5cyA9IGVudW1CdWdLZXlzLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ293bktleXMnKSB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChrZXlzLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIG93bktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3duLWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UsIGV4Y2VwdGlvbnMpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpICYmICEoZXhjZXB0aW9ucyAmJiBoYXNPd24oZXhjZXB0aW9ucywga2V5KSkpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICB9XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuXG52YXIgaXNGb3JjZWQgPSBmdW5jdGlvbiAoZmVhdHVyZSwgZGV0ZWN0aW9uKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGFbbm9ybWFsaXplKGZlYXR1cmUpXTtcbiAgcmV0dXJuIHZhbHVlID09PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogaXNDYWxsYWJsZShkZXRlY3Rpb24pID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAgICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMuZG9udENhbGxHZXRTZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4gIG9wdGlvbnMubmFtZSAgICAgICAgICAgLSB0aGUgLm5hbWUgb2YgdGhlIGZ1bmN0aW9uIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBrZXlcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWw7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsW1RBUkdFVF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsW1RBUkdFVF0gJiYgZ2xvYmFsW1RBUkdFVF0ucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMuZG9udENhbGxHZXRTZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgZGVmaW5lQnVpbHRJbih0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcblxuLy8gYFRvSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHZhciBudW1iZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGl0KTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKG51bWJlcik7XG4gIGlmIChudW1iZXIgIT09IGxlbmd0aCkgdGhyb3cgbmV3ICRSYW5nZUVycm9yKCdXcm9uZyBsZW5ndGggb3IgaW5kZXgnKTtcbiAgcmV0dXJuIGxlbmd0aDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3NvZihnbG9iYWwucHJvY2VzcykgPT09ICdwcm9jZXNzJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIHNhZmVcbiAgICBpZiAoSVNfTk9ERSkgcmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gcmVxdWlyZShcIicgKyBuYW1lICsgJ1wiKScpKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZ2xvYmFsIERlbm8gLS0gRGVubyBjYXNlICovXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBEZW5vID09ICdvYmplY3QnICYmIERlbm8gJiYgdHlwZW9mIERlbm8udmVyc2lvbiA9PSAnb2JqZWN0JztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgSVNfREVOTyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtZGVubycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhSVNfREVOTyAmJiAhSVNfTk9ERVxuICAmJiB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnXG4gICYmIHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgVjggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcbnZhciBJU19CUk9XU0VSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1icm93c2VyJyk7XG52YXIgSVNfREVOTyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtZGVubycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIHN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbC5zdHJ1Y3R1cmVkQ2xvbmU7XG5cbm1vZHVsZS5leHBvcnRzID0gISFzdHJ1Y3R1cmVkQ2xvbmUgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gcHJldmVudCBWOCBBcnJheUJ1ZmZlckRldGFjaGluZyBwcm90ZWN0b3IgY2VsbCBpbnZhbGlkYXRpb24gYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NzlcbiAgaWYgKChJU19ERU5PICYmIFY4ID4gOTIpIHx8IChJU19OT0RFICYmIFY4ID4gOTQpIHx8IChJU19CUk9XU0VSICYmIFY4ID4gOTcpKSByZXR1cm4gZmFsc2U7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7XG4gIHZhciBjbG9uZSA9IHN0cnVjdHVyZWRDbG9uZShidWZmZXIsIHsgdHJhbnNmZXI6IFtidWZmZXJdIH0pO1xuICByZXR1cm4gYnVmZmVyLmJ5dGVMZW5ndGggIT09IDAgfHwgY2xvbmUuYnl0ZUxlbmd0aCAhPT0gODtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdHJ5Tm9kZVJlcXVpcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LW5vZGUtcmVxdWlyZScpO1xudmFyIFBST1BFUl9TVFJVQ1RVUkVEX0NMT05FX1RSQU5TRkVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cnVjdHVyZWQtY2xvbmUtcHJvcGVyLXRyYW5zZmVyJyk7XG5cbnZhciBzdHJ1Y3R1cmVkQ2xvbmUgPSBnbG9iYWwuc3RydWN0dXJlZENsb25lO1xudmFyICRBcnJheUJ1ZmZlciA9IGdsb2JhbC5BcnJheUJ1ZmZlcjtcbnZhciAkTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgZGV0YWNoID0gZmFsc2U7XG52YXIgV29ya2VyVGhyZWFkcywgY2hhbm5lbCwgYnVmZmVyLCAkZGV0YWNoO1xuXG5pZiAoUFJPUEVSX1NUUlVDVFVSRURfQ0xPTkVfVFJBTlNGRVIpIHtcbiAgZGV0YWNoID0gZnVuY3Rpb24gKHRyYW5zZmVyYWJsZSkge1xuICAgIHN0cnVjdHVyZWRDbG9uZSh0cmFuc2ZlcmFibGUsIHsgdHJhbnNmZXI6IFt0cmFuc2ZlcmFibGVdIH0pO1xuICB9O1xufSBlbHNlIGlmICgkQXJyYXlCdWZmZXIpIHRyeSB7XG4gIGlmICghJE1lc3NhZ2VDaGFubmVsKSB7XG4gICAgV29ya2VyVGhyZWFkcyA9IHRyeU5vZGVSZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpO1xuICAgIGlmIChXb3JrZXJUaHJlYWRzKSAkTWVzc2FnZUNoYW5uZWwgPSBXb3JrZXJUaHJlYWRzLk1lc3NhZ2VDaGFubmVsO1xuICB9XG5cbiAgaWYgKCRNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgJE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgYnVmZmVyID0gbmV3ICRBcnJheUJ1ZmZlcigyKTtcblxuICAgICRkZXRhY2ggPSBmdW5jdGlvbiAodHJhbnNmZXJhYmxlKSB7XG4gICAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKG51bGwsIFt0cmFuc2ZlcmFibGVdKTtcbiAgICB9O1xuXG4gICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoID09PSAyKSB7XG4gICAgICAkZGV0YWNoKGJ1ZmZlcik7XG4gICAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPT09IDApIGRldGFjaCA9ICRkZXRhY2g7XG4gICAgfVxuICB9XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZGV0YWNoO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdW5jdXJyeVRoaXNBY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3InKTtcbnZhciB0b0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4Jyk7XG52YXIgaXNEZXRhY2hlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItaXMtZGV0YWNoZWQnKTtcbnZhciBhcnJheUJ1ZmZlckJ5dGVMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLWJ5dGUtbGVuZ3RoJyk7XG52YXIgZGV0YWNoVHJhbnNmZXJhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RldGFjaC10cmFuc2ZlcmFibGUnKTtcbnZhciBQUk9QRVJfU1RSVUNUVVJFRF9DTE9ORV9UUkFOU0ZFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJ1Y3R1cmVkLWNsb25lLXByb3Blci10cmFuc2ZlcicpO1xuXG52YXIgc3RydWN0dXJlZENsb25lID0gZ2xvYmFsLnN0cnVjdHVyZWRDbG9uZTtcbnZhciBBcnJheUJ1ZmZlciA9IGdsb2JhbC5BcnJheUJ1ZmZlcjtcbnZhciBEYXRhVmlldyA9IGdsb2JhbC5EYXRhVmlldztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIEFycmF5QnVmZmVyUHJvdG90eXBlID0gQXJyYXlCdWZmZXIucHJvdG90eXBlO1xudmFyIERhdGFWaWV3UHJvdG90eXBlID0gRGF0YVZpZXcucHJvdG90eXBlO1xudmFyIHNsaWNlID0gdW5jdXJyeVRoaXMoQXJyYXlCdWZmZXJQcm90b3R5cGUuc2xpY2UpO1xudmFyIGlzUmVzaXphYmxlID0gdW5jdXJyeVRoaXNBY2Nlc3NvcihBcnJheUJ1ZmZlclByb3RvdHlwZSwgJ3Jlc2l6YWJsZScsICdnZXQnKTtcbnZhciBtYXhCeXRlTGVuZ3RoID0gdW5jdXJyeVRoaXNBY2Nlc3NvcihBcnJheUJ1ZmZlclByb3RvdHlwZSwgJ21heEJ5dGVMZW5ndGgnLCAnZ2V0Jyk7XG52YXIgZ2V0SW50OCA9IHVuY3VycnlUaGlzKERhdGFWaWV3UHJvdG90eXBlLmdldEludDgpO1xudmFyIHNldEludDggPSB1bmN1cnJ5VGhpcyhEYXRhVmlld1Byb3RvdHlwZS5zZXRJbnQ4KTtcblxubW9kdWxlLmV4cG9ydHMgPSAoUFJPUEVSX1NUUlVDVFVSRURfQ0xPTkVfVFJBTlNGRVIgfHwgZGV0YWNoVHJhbnNmZXJhYmxlKSAmJiBmdW5jdGlvbiAoYXJyYXlCdWZmZXIsIG5ld0xlbmd0aCwgcHJlc2VydmVSZXNpemFiaWxpdHkpIHtcbiAgdmFyIGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZlckJ5dGVMZW5ndGgoYXJyYXlCdWZmZXIpO1xuICB2YXIgbmV3Qnl0ZUxlbmd0aCA9IG5ld0xlbmd0aCA9PT0gdW5kZWZpbmVkID8gYnl0ZUxlbmd0aCA6IHRvSW5kZXgobmV3TGVuZ3RoKTtcbiAgdmFyIGZpeGVkTGVuZ3RoID0gIWlzUmVzaXphYmxlIHx8ICFpc1Jlc2l6YWJsZShhcnJheUJ1ZmZlcik7XG4gIHZhciBuZXdCdWZmZXI7XG4gIGlmIChpc0RldGFjaGVkKGFycmF5QnVmZmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQnKTtcbiAgaWYgKFBST1BFUl9TVFJVQ1RVUkVEX0NMT05FX1RSQU5TRkVSKSB7XG4gICAgYXJyYXlCdWZmZXIgPSBzdHJ1Y3R1cmVkQ2xvbmUoYXJyYXlCdWZmZXIsIHsgdHJhbnNmZXI6IFthcnJheUJ1ZmZlcl0gfSk7XG4gICAgaWYgKGJ5dGVMZW5ndGggPT09IG5ld0J5dGVMZW5ndGggJiYgKHByZXNlcnZlUmVzaXphYmlsaXR5IHx8IGZpeGVkTGVuZ3RoKSkgcmV0dXJuIGFycmF5QnVmZmVyO1xuICB9XG4gIGlmIChieXRlTGVuZ3RoID49IG5ld0J5dGVMZW5ndGggJiYgKCFwcmVzZXJ2ZVJlc2l6YWJpbGl0eSB8fCBmaXhlZExlbmd0aCkpIHtcbiAgICBuZXdCdWZmZXIgPSBzbGljZShhcnJheUJ1ZmZlciwgMCwgbmV3Qnl0ZUxlbmd0aCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG9wdGlvbnMgPSBwcmVzZXJ2ZVJlc2l6YWJpbGl0eSAmJiAhZml4ZWRMZW5ndGggJiYgbWF4Qnl0ZUxlbmd0aCA/IHsgbWF4Qnl0ZUxlbmd0aDogbWF4Qnl0ZUxlbmd0aChhcnJheUJ1ZmZlcikgfSA6IHVuZGVmaW5lZDtcbiAgICBuZXdCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIobmV3Qnl0ZUxlbmd0aCwgb3B0aW9ucyk7XG4gICAgdmFyIGEgPSBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIpO1xuICAgIHZhciBiID0gbmV3IERhdGFWaWV3KG5ld0J1ZmZlcik7XG4gICAgdmFyIGNvcHlMZW5ndGggPSBtaW4obmV3Qnl0ZUxlbmd0aCwgYnl0ZUxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3B5TGVuZ3RoOyBpKyspIHNldEludDgoYiwgaSwgZ2V0SW50OChhLCBpKSk7XG4gIH1cbiAgaWYgKCFQUk9QRVJfU1RSVUNUVVJFRF9DTE9ORV9UUkFOU0ZFUikgZGV0YWNoVHJhbnNmZXJhYmxlKGFycmF5QnVmZmVyKTtcbiAgcmV0dXJuIG5ld0J1ZmZlcjtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHRyYW5zZmVyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci10cmFuc2ZlcicpO1xuXG4vLyBgQXJyYXlCdWZmZXIucHJvdG90eXBlLnRyYW5zZmVyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1hcnJheWJ1ZmZlci10cmFuc2Zlci8jc2VjLWFycmF5YnVmZmVyLnByb3RvdHlwZS50cmFuc2ZlclxuaWYgKCR0cmFuc2ZlcikgJCh7IHRhcmdldDogJ0FycmF5QnVmZmVyJywgcHJvdG86IHRydWUgfSwge1xuICB0cmFuc2ZlcjogZnVuY3Rpb24gdHJhbnNmZXIoKSB7XG4gICAgcmV0dXJuICR0cmFuc2Zlcih0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJHRyYW5zZmVyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci10cmFuc2ZlcicpO1xuXG4vLyBgQXJyYXlCdWZmZXIucHJvdG90eXBlLnRyYW5zZmVyVG9GaXhlZExlbmd0aGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtYXJyYXlidWZmZXItdHJhbnNmZXIvI3NlYy1hcnJheWJ1ZmZlci5wcm90b3R5cGUudHJhbnNmZXJ0b2ZpeGVkbGVuZ3RoXG5pZiAoJHRyYW5zZmVyKSAkKHsgdGFyZ2V0OiAnQXJyYXlCdWZmZXInLCBwcm90bzogdHJ1ZSB9LCB7XG4gIHRyYW5zZmVyVG9GaXhlZExlbmd0aDogZnVuY3Rpb24gdHJhbnNmZXJUb0ZpeGVkTGVuZ3RoKCkge1xuICAgIHJldHVybiAkdHJhbnNmZXIodGhpcywgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCwgZmFsc2UpO1xuICB9XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcblxudGVzdFtUT19TVFJJTkdfVEFHXSA9ICd6JztcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJpbmcodGVzdCkgPT09ICdbb2JqZWN0IHpdJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjbGFzc29mUmF3ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSBFUzYrIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYFxubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyBjbGFzc29mUmF3IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCB0YWcsIHJlc3VsdDtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKHRhZyA9IHRyeUdldChPID0gJE9iamVjdChpdCksIFRPX1NUUklOR19UQUcpKSA9PSAnc3RyaW5nJyA/IHRhZ1xuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQ09SUkVDVF9BUkdVTUVOVFMgPyBjbGFzc29mUmF3KE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKHJlc3VsdCA9IGNsYXNzb2ZSYXcoTykpID09PSAnT2JqZWN0JyAmJiBpc0NhbGxhYmxlKE8uY2FsbGVlKSA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoY2xhc3NvZihhcmd1bWVudCkgPT09ICdTeW1ib2wnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwYXNzZWQsIHJlcXVpcmVkKSB7XG4gIGlmIChwYXNzZWQgPCByZXF1aXJlZCkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ05vdCBlbm91Z2ggYXJndW1lbnRzJyk7XG4gIHJldHVybiBwYXNzZWQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcblxudmFyICRVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXM7XG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gJFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgYXBwZW5kID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmFwcGVuZCk7XG52YXIgJGRlbGV0ZSA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZVsnZGVsZXRlJ10pO1xudmFyIGZvckVhY2ggPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZm9yRWFjaCk7XG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xudmFyIHBhcmFtcyA9IG5ldyAkVVJMU2VhcmNoUGFyYW1zKCdhPTEmYT0yJmI9MycpO1xuXG5wYXJhbXNbJ2RlbGV0ZSddKCdhJywgMSk7XG4vLyBgdW5kZWZpbmVkYCBjYXNlIGlzIGEgQ2hyb21pdW0gMTE3IGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTQyMjJcbnBhcmFtc1snZGVsZXRlJ10oJ2InLCB1bmRlZmluZWQpO1xuXG5pZiAocGFyYW1zICsgJycgIT09ICdhPTInKSB7XG4gIGRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnZGVsZXRlJywgZnVuY3Rpb24gKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGlmIChsZW5ndGggJiYgJHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAkZGVsZXRlKHRoaXMsIG5hbWUpO1xuICAgIHZhciBlbnRyaWVzID0gW107XG4gICAgZm9yRWFjaCh0aGlzLCBmdW5jdGlvbiAodiwgaykgeyAvLyBhbHNvIHZhbGlkYXRlcyBgdGhpc2BcbiAgICAgIHB1c2goZW50cmllcywgeyBrZXk6IGssIHZhbHVlOiB2IH0pO1xuICAgIH0pO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGxlbmd0aCwgMSk7XG4gICAgdmFyIGtleSA9IHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciB2YWx1ZSA9IHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgZGluZGV4ID0gMDtcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICB2YXIgZW50cmllc0xlbmd0aCA9IGVudHJpZXMubGVuZ3RoO1xuICAgIHZhciBlbnRyeTtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzTGVuZ3RoKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgICBpZiAoZm91bmQgfHwgZW50cnkua2V5ID09PSBrZXkpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAkZGVsZXRlKHRoaXMsIGVudHJ5LmtleSk7XG4gICAgICB9IGVsc2UgZGluZGV4Kys7XG4gICAgfVxuICAgIHdoaWxlIChkaW5kZXggPCBlbnRyaWVzTGVuZ3RoKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbZGluZGV4KytdO1xuICAgICAgaWYgKCEoZW50cnkua2V5ID09PSBrZXkgJiYgZW50cnkudmFsdWUgPT09IHZhbHVlKSkgYXBwZW5kKHRoaXMsIGVudHJ5LmtleSwgZW50cnkudmFsdWUpO1xuICAgIH1cbiAgfSwgeyBlbnVtZXJhYmxlOiB0cnVlLCB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xuXG52YXIgJFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtcztcbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSAkVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBnZXRBbGwgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZ2V0QWxsKTtcbnZhciAkaGFzID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmhhcyk7XG52YXIgcGFyYW1zID0gbmV3ICRVUkxTZWFyY2hQYXJhbXMoJ2E9MScpO1xuXG4vLyBgdW5kZWZpbmVkYCBjYXNlIGlzIGEgQ2hyb21pdW0gMTE3IGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTQyMjJcbmlmIChwYXJhbXMuaGFzKCdhJywgMikgfHwgIXBhcmFtcy5oYXMoJ2EnLCB1bmRlZmluZWQpKSB7XG4gIGRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnaGFzJywgZnVuY3Rpb24gaGFzKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGlmIChsZW5ndGggJiYgJHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAkaGFzKHRoaXMsIG5hbWUpO1xuICAgIHZhciB2YWx1ZXMgPSBnZXRBbGwodGhpcywgbmFtZSk7IC8vIGFsc28gdmFsaWRhdGVzIGB0aGlzYFxuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGxlbmd0aCwgMSk7XG4gICAgdmFyIHZhbHVlID0gdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIGlmICh2YWx1ZXNbaW5kZXgrK10gPT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICB9IHJldHVybiBmYWxzZTtcbiAgfSwgeyBlbnVtZXJhYmxlOiB0cnVlLCB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBmb3JFYWNoID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmZvckVhY2gpO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zaXplYCBnZXR0ZXJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvdXJsL3B1bGwvNzM0XG5pZiAoREVTQ1JJUFRPUlMgJiYgISgnc2l6ZScgaW4gVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlKSkge1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgZm9yRWFjaCh0aGlzLCBmdW5jdGlvbiAoKSB7IGNvdW50Kys7IH0pO1xuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfSk7XG59XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLW5vY2hlY2tcbihmdW5jdGlvbiBXaWtpcGx1cygpIHtcblx0LyohIFdpa2lwbHVzIC0gNC4wLjExIHwgRXJpZGFudXMgU29yYSAo5aa556m66YWxKSB8IENDLUJZLVNBLTQuMCA8aHR0cHM6Ly9xd2JrLmNjL0g6Q0MtQlktU0EtNC4wPiAqL1xuXHR2YXIgdCA9IHtcblx0XHRcdDUwOTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODUpLFxuXHRcdFx0XHRcdG8gPSByKDM2OTEpLFxuXHRcdFx0XHRcdGkgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0aWYgKG4odCkpIHJldHVybiB0O1xuXHRcdFx0XHRcdHRocm93IG5ldyBpKG8odCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MjY1NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk0MjkpLFxuXHRcdFx0XHRcdG8gPSByKDM2OTEpLFxuXHRcdFx0XHRcdGkgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0aWYgKG4odCkpIHJldHVybiB0O1xuXHRcdFx0XHRcdHRocm93IG5ldyBpKG8odCkgKyAnIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0OTk0NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM5MTQpLmhhcztcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gbih0KSwgdDtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQzNTUwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4NSksXG5cdFx0XHRcdFx0byA9IFN0cmluZyxcblx0XHRcdFx0XHRpID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmICgnb2JqZWN0JyA9PSB0eXBlb2YgdCB8fCBuKHQpKSByZXR1cm4gdDtcblx0XHRcdFx0XHR0aHJvdyBuZXcgaShcIkNhbid0IHNldCBcIiArIG8odCkgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzM3MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQyMDEpLFxuXHRcdFx0XHRcdG8gPSByKDUzOTEpLFxuXHRcdFx0XHRcdGkgPSByKDI1NjApLmYsXG5cdFx0XHRcdFx0YSA9IG4oJ3Vuc2NvcGFibGVzJyksXG5cdFx0XHRcdFx0dSA9IEFycmF5LnByb3RvdHlwZTtcblx0XHRcdFx0dm9pZCAwID09PSB1W2FdICYmIGkodSwgYSwge2NvbmZpZ3VyYWJsZTogITAsIHZhbHVlOiBvKG51bGwpfSksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR1W2FdW3RdID0gITA7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0MTUxNDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDczMCkuY2hhckF0O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdHJldHVybiBlICsgKHIgPyBuKHQsIGUpLmxlbmd0aCA6IDEpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDc2NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2MjIpLFxuXHRcdFx0XHRcdG8gPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKG4oZSwgdCkpIHJldHVybiB0O1xuXHRcdFx0XHRcdHRocm93IG5ldyBvKCdJbmNvcnJlY3QgaW52b2NhdGlvbicpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDUwMjc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4OTk5KSxcblx0XHRcdFx0XHRvID0gU3RyaW5nLFxuXHRcdFx0XHRcdGkgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0aWYgKG4odCkpIHJldHVybiB0O1xuXHRcdFx0XHRcdHRocm93IG5ldyBpKG8odCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxNjU1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBBcnJheUJ1ZmZlcikge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSBuZXcgQXJyYXlCdWZmZXIoOCk7XG5cdFx0XHRcdFx0XHRPYmplY3QuaXNFeHRlbnNpYmxlKHQpICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAnYScsIHt2YWx1ZTogOH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NzYxMjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI5NjApLmZvckVhY2gsXG5cdFx0XHRcdFx0byA9IHIoNjgzNCkoJ2ZvckVhY2gnKTtcblx0XHRcdFx0dC5leHBvcnRzID0gb1xuXHRcdFx0XHRcdD8gW10uZm9yRWFjaFxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG4odGhpcywgdCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxMDU1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDA3MSksXG5cdFx0XHRcdFx0byA9IHIoMjYxNSksXG5cdFx0XHRcdFx0aSA9IHIoNjkwKSxcblx0XHRcdFx0XHRhID0gcigxMjI4KSxcblx0XHRcdFx0XHR1ID0gcigzMjkyKSxcblx0XHRcdFx0XHRjID0gcig5NDI5KSxcblx0XHRcdFx0XHRzID0gcig2MzEwKSxcblx0XHRcdFx0XHRmID0gcig2NTIyKSxcblx0XHRcdFx0XHRsID0gcig1MTg1KSxcblx0XHRcdFx0XHRwID0gcigxNjY0KSxcblx0XHRcdFx0XHRoID0gQXJyYXk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSBpKHQpLFxuXHRcdFx0XHRcdFx0ciA9IGModGhpcyksXG5cdFx0XHRcdFx0XHR2ID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRcdFx0XHRcdGQgPSB2ID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCxcblx0XHRcdFx0XHRcdHkgPSB2b2lkIDAgIT09IGQ7XG5cdFx0XHRcdFx0eSAmJiAoZCA9IG4oZCwgdiA+IDIgPyBhcmd1bWVudHNbMl0gOiB2b2lkIDApKTtcblx0XHRcdFx0XHR2YXIgZyxcblx0XHRcdFx0XHRcdG0sXG5cdFx0XHRcdFx0XHRiLFxuXHRcdFx0XHRcdFx0dyxcblx0XHRcdFx0XHRcdHgsXG5cdFx0XHRcdFx0XHRrLFxuXHRcdFx0XHRcdFx0UyA9IHAoZSksXG5cdFx0XHRcdFx0XHRFID0gMDtcblx0XHRcdFx0XHRpZiAoIVMgfHwgKHRoaXMgPT09IGggJiYgdShTKSkpXG5cdFx0XHRcdFx0XHRmb3IgKGcgPSBzKGUpLCBtID0gciA/IG5ldyB0aGlzKGcpIDogaChnKTsgZyA+IEU7IEUrKykgKGsgPSB5ID8gZChlW0VdLCBFKSA6IGVbRV0pLCBmKG0sIEUsIGspO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdGZvciAoeCA9ICh3ID0gbChlLCBTKSkubmV4dCwgbSA9IHIgPyBuZXcgdGhpcygpIDogW107ICEoYiA9IG8oeCwgdykpLmRvbmU7IEUrKylcblx0XHRcdFx0XHRcdFx0KGsgPSB5ID8gYSh3LCBkLCBbYi52YWx1ZSwgRV0sICEwKSA6IGIudmFsdWUpLCBmKG0sIEUsIGspO1xuXHRcdFx0XHRcdHJldHVybiAobS5sZW5ndGggPSBFKSwgbTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ0MzI4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNTI5MCksXG5cdFx0XHRcdFx0byA9IHIoNzU3OCksXG5cdFx0XHRcdFx0aSA9IHIoNjMxMCksXG5cdFx0XHRcdFx0YSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUsIHIsIGEpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHUsXG5cdFx0XHRcdFx0XHRcdFx0YyA9IG4oZSksXG5cdFx0XHRcdFx0XHRcdFx0cyA9IGkoYyksXG5cdFx0XHRcdFx0XHRcdFx0ZiA9IG8oYSwgcyk7XG5cdFx0XHRcdFx0XHRcdGlmICh0ICYmIHIgIT0gcikge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoOyBzID4gZjsgKSBpZiAoKHUgPSBjW2YrK10pICE9IHUpIHJldHVybiAhMDtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGZvciAoOyBzID4gZjsgZisrKSBpZiAoKHQgfHwgZiBpbiBjKSAmJiBjW2ZdID09PSByKSByZXR1cm4gdCB8fCBmIHx8IDA7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAhdCAmJiAtMTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdGluY2x1ZGVzOiBhKCEwKSxcblx0XHRcdFx0XHRpbmRleE9mOiBhKCExKSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyOTYwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDA3MSksXG5cdFx0XHRcdFx0byA9IHIoODg0NCksXG5cdFx0XHRcdFx0aSA9IHIoNDQxMyksXG5cdFx0XHRcdFx0YSA9IHIoNjkwKSxcblx0XHRcdFx0XHR1ID0gcig2MzEwKSxcblx0XHRcdFx0XHRjID0gcig3MTIwKSxcblx0XHRcdFx0XHRzID0gbyhbXS5wdXNoKSxcblx0XHRcdFx0XHRmID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gMSA9PT0gdCxcblx0XHRcdFx0XHRcdFx0ciA9IDIgPT09IHQsXG5cdFx0XHRcdFx0XHRcdG8gPSAzID09PSB0LFxuXHRcdFx0XHRcdFx0XHRmID0gNCA9PT0gdCxcblx0XHRcdFx0XHRcdFx0bCA9IDYgPT09IHQsXG5cdFx0XHRcdFx0XHRcdHAgPSA3ID09PSB0LFxuXHRcdFx0XHRcdFx0XHRoID0gNSA9PT0gdCB8fCBsO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICh2LCBkLCB5LCBnKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdFx0dmFyIG0sXG5cdFx0XHRcdFx0XHRcdFx0XHRiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dyA9IGEodiksXG5cdFx0XHRcdFx0XHRcdFx0XHR4ID0gaSh3KSxcblx0XHRcdFx0XHRcdFx0XHRcdGsgPSBuKGQsIHkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0UyA9IHUoeCksXG5cdFx0XHRcdFx0XHRcdFx0XHRFID0gMCxcblx0XHRcdFx0XHRcdFx0XHRcdE8gPSBnIHx8IGMsXG5cdFx0XHRcdFx0XHRcdFx0XHRQID0gZSA/IE8odiwgUykgOiByIHx8IHAgPyBPKHYsIDApIDogdm9pZCAwO1xuXHRcdFx0XHRcdFx0XHRcdFMgPiBFO1xuXHRcdFx0XHRcdFx0XHRcdEUrK1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKChoIHx8IEUgaW4geCkgJiYgKChiID0gaygobSA9IHhbRV0pLCBFLCB3KSksIHQpKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUpIFBbRV0gPSBiO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYilcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBFO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHMoUCwgbSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICExO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHMoUCwgbSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGwgPyAtMSA6IG8gfHwgZiA/IGYgOiBQO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0Zm9yRWFjaDogZigwKSxcblx0XHRcdFx0XHRtYXA6IGYoMSksXG5cdFx0XHRcdFx0ZmlsdGVyOiBmKDIpLFxuXHRcdFx0XHRcdHNvbWU6IGYoMyksXG5cdFx0XHRcdFx0ZXZlcnk6IGYoNCksXG5cdFx0XHRcdFx0ZmluZDogZig1KSxcblx0XHRcdFx0XHRmaW5kSW5kZXg6IGYoNiksXG5cdFx0XHRcdFx0ZmlsdGVyUmVqZWN0OiBmKDcpLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDkwNDI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KSxcblx0XHRcdFx0XHRvID0gcig0MjAxKSxcblx0XHRcdFx0XHRpID0gcigzNjE1KSxcblx0XHRcdFx0XHRhID0gbygnc3BlY2llcycpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRpID49IDUxIHx8XG5cdFx0XHRcdFx0XHQhbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gW107XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KChlLmNvbnN0cnVjdG9yID0ge30pW2FdID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9vOiAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHQxICE9PSBlW3RdKEJvb2xlYW4pLmZvb1xuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDY4MzQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHR2YXIgciA9IFtdW3RdO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQhIXIgJiZcblx0XHRcdFx0XHRcdG4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyLmNhbGwoXG5cdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRlIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHQxXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTY0OTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDIyOTcpLFxuXHRcdFx0XHRcdGkgPSBUeXBlRXJyb3IsXG5cdFx0XHRcdFx0YSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG5cdFx0XHRcdFx0dSA9XG5cdFx0XHRcdFx0XHRuICYmXG5cdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gdGhpcykgcmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgJ2xlbmd0aCcsIHt3cml0YWJsZTogITF9KS5sZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgaW5zdGFuY2VvZiBUeXBlRXJyb3I7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pKCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHVcblx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChvKHQpICYmICFhKHQsICdsZW5ndGgnKS53cml0YWJsZSkgdGhyb3cgbmV3IGkoJ0Nhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGgnKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICh0Lmxlbmd0aCA9IGUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICh0Lmxlbmd0aCA9IGUpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ5MDE1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzU3OCksXG5cdFx0XHRcdFx0byA9IHIoNjMxMCksXG5cdFx0XHRcdFx0aSA9IHIoNjUyMiksXG5cdFx0XHRcdFx0YSA9IEFycmF5LFxuXHRcdFx0XHRcdHUgPSBNYXRoLm1heDtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0dmFyIGMgPSBvKHQpLCBzID0gbihlLCBjKSwgZiA9IG4odm9pZCAwID09PSByID8gYyA6IHIsIGMpLCBsID0gYSh1KGYgLSBzLCAwKSksIHAgPSAwO1xuXHRcdFx0XHRcdFx0cyA8IGY7XG5cdFx0XHRcdFx0XHRzKyssIHArK1xuXHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdGkobCwgcCwgdFtzXSk7XG5cdFx0XHRcdFx0cmV0dXJuIChsLmxlbmd0aCA9IHApLCBsO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDYwMDQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KTtcblx0XHRcdFx0dC5leHBvcnRzID0gbihbXS5zbGljZSk7XG5cdFx0XHR9LFxuXHRcdFx0MzgyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAxNSksXG5cdFx0XHRcdFx0byA9IE1hdGguZmxvb3IsXG5cdFx0XHRcdFx0aSA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRjID0gbyhyIC8gMik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gciA8IDggPyBhKHQsIGUpIDogdSh0LCBpKG4odCwgMCwgYyksIGUpLCBpKG4odCwgYyksIGUpLCBlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGEgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgciwgbiwgbyA9IHQubGVuZ3RoLCBpID0gMTsgaSA8IG87ICkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKG4gPSBpLCByID0gdFtpXTsgbiAmJiBlKHRbbiAtIDFdLCByKSA+IDA7ICkgdFtuXSA9IHRbLS1uXTtcblx0XHRcdFx0XHRcdFx0biAhPT0gaSsrICYmICh0W25dID0gcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHUgPSBmdW5jdGlvbiAodCwgZSwgciwgbikge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgbyA9IGUubGVuZ3RoLCBpID0gci5sZW5ndGgsIGEgPSAwLCB1ID0gMDsgYSA8IG8gfHwgdSA8IGk7IClcblx0XHRcdFx0XHRcdFx0dFthICsgdV0gPVxuXHRcdFx0XHRcdFx0XHRcdGEgPCBvICYmIHUgPCBpID8gKG4oZVthXSwgclt1XSkgPD0gMCA/IGVbYSsrXSA6IHJbdSsrXSkgOiBhIDwgbyA/IGVbYSsrXSA6IHJbdSsrXTtcblx0XHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGk7XG5cdFx0XHR9LFxuXHRcdFx0NTI3MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDIyOTcpLFxuXHRcdFx0XHRcdG8gPSByKDk0MjkpLFxuXHRcdFx0XHRcdGkgPSByKDg5OTkpLFxuXHRcdFx0XHRcdGEgPSByKDQyMDEpKCdzcGVjaWVzJyksXG5cdFx0XHRcdFx0dSA9IEFycmF5O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRuKHQpICYmXG5cdFx0XHRcdFx0XHRcdCgoZSA9IHQuY29uc3RydWN0b3IpLFxuXHRcdFx0XHRcdFx0XHQoKG8oZSkgJiYgKGUgPT09IHUgfHwgbihlLnByb3RvdHlwZSkpKSB8fCAoaShlKSAmJiBudWxsID09PSAoZSA9IGVbYV0pKSkgJiYgKGUgPSB2b2lkIDApKSxcblx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gZSA/IHUgOiBlXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3MTIwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNTI3MSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyAobih0KSkoMCA9PT0gZSA/IDAgOiBlKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyMzk5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjYxNSksXG5cdFx0XHRcdFx0byA9IHIoNjA1OCksXG5cdFx0XHRcdFx0aSA9IHIoNDg0OSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCBhKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHZhciB1ID0gaSh0LCAncmV0dXJuJyk7XG5cdFx0XHRcdFx0XHRpZiAodSlcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8oJ1Byb21pc2UnKVxuXHRcdFx0XHRcdFx0XHRcdC5yZXNvbHZlKG4odSwgdCkpXG5cdFx0XHRcdFx0XHRcdFx0LnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGUocik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YSh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBhKHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlKHIpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDczOTQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig5MzAyKSxcblx0XHRcdFx0XHRpID0gcig1MDI3KSxcblx0XHRcdFx0XHRhID0gcig1MzkxKSxcblx0XHRcdFx0XHR1ID0gcig1NzczKSxcblx0XHRcdFx0XHRjID0gcig2MDQ1KSxcblx0XHRcdFx0XHRzID0gcig0MjAxKSxcblx0XHRcdFx0XHRmID0gcig2MTgpLFxuXHRcdFx0XHRcdGwgPSByKDYwNTgpLFxuXHRcdFx0XHRcdHAgPSByKDQ4NDkpLFxuXHRcdFx0XHRcdGggPSByKDMwNzApLFxuXHRcdFx0XHRcdHYgPSByKDc4MDcpLFxuXHRcdFx0XHRcdGQgPSByKDIxMjUpLFxuXHRcdFx0XHRcdHkgPSBsKCdQcm9taXNlJyksXG5cdFx0XHRcdFx0ZyA9IHMoJ3RvU3RyaW5nVGFnJyksXG5cdFx0XHRcdFx0bSA9ICdBc3luY0l0ZXJhdG9ySGVscGVyJyxcblx0XHRcdFx0XHRiID0gJ1dyYXBGb3JWYWxpZEFzeW5jSXRlcmF0b3InLFxuXHRcdFx0XHRcdHcgPSBmLnNldCxcblx0XHRcdFx0XHR4ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gIXQsXG5cdFx0XHRcdFx0XHRcdHIgPSBmLmdldHRlckZvcih0ID8gYiA6IG0pLFxuXHRcdFx0XHRcdFx0XHR1ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IG8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcih0KTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0aSA9IG4uZXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0XHRhID0gbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaSB8fCAoZSAmJiBhLmRvbmUpXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHtleGl0OiAhMCwgdmFsdWU6IGkgPyB5LnJlamVjdChhKSA6IHkucmVzb2x2ZSh2KHZvaWQgMCwgITApKX1cblx0XHRcdFx0XHRcdFx0XHRcdDoge2V4aXQ6ICExLCB2YWx1ZTogYX07XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gYyhhKGgpLCB7XG5cdFx0XHRcdFx0XHRcdG5leHQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IHUodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0XHRlID0gdC52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRpZiAodC5leGl0KSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IG8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaShlLm5leHRIYW5kbGVyKHkpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0biA9IHIuZXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0XHRhID0gci52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbiAmJiAoZS5kb25lID0gITApLCBuID8geS5yZWplY3QoYSkgOiB5LnJlc29sdmUoYSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHJldHVybjogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBlID0gdSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRcdHIgPSBlLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChlLmV4aXQpIHJldHVybiByO1xuXHRcdFx0XHRcdFx0XHRcdHIuZG9uZSA9ICEwO1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhLFxuXHRcdFx0XHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdFx0XHRcdHMgPSByLml0ZXJhdG9yLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZiA9IG8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoci5pbm5lcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZChyLmlubmVyLml0ZXJhdG9yLCAnbm9ybWFsJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGQocywgJ3Rocm93JywgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcChzLCAncmV0dXJuJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0KGEgPSBjID0gZi52YWx1ZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmLmVycm9yXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8geS5yZWplY3QoYylcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiB2b2lkIDAgPT09IGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHkucmVzb2x2ZSh2KHZvaWQgMCwgITApKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogKChjID0gKGYgPSBvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG4oYSwgcyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSkudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zi5lcnJvclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHkucmVqZWN0KGMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8geS5yZXNvbHZlKGMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiB5LnJlc29sdmUoYykudGhlbihmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh0KSwgdih2b2lkIDAsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGsgPSB4KCEwKSxcblx0XHRcdFx0XHRTID0geCghMSk7XG5cdFx0XHRcdHUoUywgZywgJ0FzeW5jIEl0ZXJhdG9yIEhlbHBlcicpLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBmdW5jdGlvbiAociwgbikge1xuXHRcdFx0XHRcdFx0XHRuID8gKChuLml0ZXJhdG9yID0gci5pdGVyYXRvciksIChuLm5leHQgPSByLm5leHQpKSA6IChuID0gciksXG5cdFx0XHRcdFx0XHRcdFx0KG4udHlwZSA9IGUgPyBiIDogbSksXG5cdFx0XHRcdFx0XHRcdFx0KG4ubmV4dEhhbmRsZXIgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHQobi5jb3VudGVyID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KG4uZG9uZSA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHR3KHRoaXMsIG4pO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHJldHVybiAoci5wcm90b3R5cGUgPSBlID8gayA6IFMpLCByO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDI0ODk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig1MDkpLFxuXHRcdFx0XHRcdGkgPSByKDUwMjcpLFxuXHRcdFx0XHRcdGEgPSByKDg5OTkpLFxuXHRcdFx0XHRcdHUgPSByKDU1NjUpLFxuXHRcdFx0XHRcdGMgPSByKDYwNTgpLFxuXHRcdFx0XHRcdHMgPSByKDIzMDIpLFxuXHRcdFx0XHRcdGYgPSByKDIzOTkpLFxuXHRcdFx0XHRcdGwgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSAwID09PSB0LFxuXHRcdFx0XHRcdFx0XHRyID0gMSA9PT0gdCxcblx0XHRcdFx0XHRcdFx0bCA9IDIgPT09IHQsXG5cdFx0XHRcdFx0XHRcdHAgPSAzID09PSB0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICh0LCBoLCB2KSB7XG5cdFx0XHRcdFx0XHRcdGkodCk7XG5cdFx0XHRcdFx0XHRcdHZhciBkID0gdm9pZCAwICE9PSBoO1xuXHRcdFx0XHRcdFx0XHQoIWQgJiYgZSkgfHwgbyhoKTtcblx0XHRcdFx0XHRcdFx0dmFyIHkgPSBzKHQpLFxuXHRcdFx0XHRcdFx0XHRcdGcgPSBjKCdQcm9taXNlJyksXG5cdFx0XHRcdFx0XHRcdFx0bSA9IHkuaXRlcmF0b3IsXG5cdFx0XHRcdFx0XHRcdFx0YiA9IHkubmV4dCxcblx0XHRcdFx0XHRcdFx0XHR3ID0gMDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBnKGZ1bmN0aW9uICh0LCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmKG0sIG8sIHQsIG8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1KHcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGcucmVzb2x2ZShpKG4oYiwgbSkpKS50aGVuKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaShuKS5kb25lKSBlID8gKCh2Lmxlbmd0aCA9IHcpLCB0KHYpKSA6IHQoIXAgJiYgKGwgfHwgdm9pZCAwKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB1ID0gbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHkgPSBoKHUsIHcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGIgPSBmdW5jdGlvbiAobikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHIpIHMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGwpIG4gPyBzKCkgOiBmKG0sIHQsICExLCBvKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHZbdysrXSA9IG4pLCBzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIG4gPyBmKG0sIHQsIHAgfHwgdSwgbykgOiBzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YSh5KSA/IGcucmVzb2x2ZSh5KS50aGVuKGIsIGMpIDogYih5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSAodlt3KytdID0gdSksIHMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIG8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0byh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRzKCk7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0dG9BcnJheTogbCgwKSxcblx0XHRcdFx0XHRmb3JFYWNoOiBsKDEpLFxuXHRcdFx0XHRcdGV2ZXJ5OiBsKDIpLFxuXHRcdFx0XHRcdHNvbWU6IGwoMyksXG5cdFx0XHRcdFx0ZmluZDogbCg0KSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQzMDcwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdGkgPSByKDkwMzcpLFxuXHRcdFx0XHRcdGEgPSByKDQwOTEpLFxuXHRcdFx0XHRcdHUgPSByKDk5ODUpLFxuXHRcdFx0XHRcdGMgPSByKDUzOTEpLFxuXHRcdFx0XHRcdHMgPSByKDE4NjgpLFxuXHRcdFx0XHRcdGYgPSByKDE4ODApLFxuXHRcdFx0XHRcdGwgPSByKDQyMDEpLFxuXHRcdFx0XHRcdHAgPSByKDM5MzEpLFxuXHRcdFx0XHRcdGggPSAnVVNFX0ZVTkNUSU9OX0NPTlNUUlVDVE9SJyxcblx0XHRcdFx0XHR2ID0gbCgnYXN5bmNJdGVyYXRvcicpLFxuXHRcdFx0XHRcdGQgPSBpLkFzeW5jSXRlcmF0b3IsXG5cdFx0XHRcdFx0eSA9IGEuQXN5bmNJdGVyYXRvclByb3RvdHlwZTtcblx0XHRcdFx0aWYgKHkpIG4gPSB5O1xuXHRcdFx0XHRlbHNlIGlmICh1KGQpKSBuID0gZC5wcm90b3R5cGU7XG5cdFx0XHRcdGVsc2UgaWYgKGFbaF0gfHwgaVtoXSlcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0KG8gPSBzKHMocyhGdW5jdGlvbigncmV0dXJuIGFzeW5jIGZ1bmN0aW9uKigpe30oKScpKCkpKSkpLCBzKG8pID09PSBPYmplY3QucHJvdG90eXBlICYmIChuID0gbyk7XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0biA/IHAgJiYgKG4gPSBjKG4pKSA6IChuID0ge30pLFxuXHRcdFx0XHRcdHUoblt2XSkgfHxcblx0XHRcdFx0XHRcdGYobiwgdiwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPSBuKTtcblx0XHRcdH0sXG5cdFx0XHQxMjI4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNTAyNyksXG5cdFx0XHRcdFx0byA9IHIoMjEyNSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCBpKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHJldHVybiBpID8gZShuKHIpWzBdLCByWzFdKSA6IGUocik7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0byh0LCAndGhyb3cnLCBlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjQzMTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQyMDEpKCdpdGVyYXRvcicpLFxuXHRcdFx0XHRcdG8gPSAhMTtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR2YXIgaSA9IDAsXG5cdFx0XHRcdFx0XHRhID0ge1xuXHRcdFx0XHRcdFx0XHRuZXh0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6ICEhaSsrLFxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHJldHVybjogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdG8gPSAhMDtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0KGFbbl0gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdEFycmF5LmZyb20oYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyAyO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGlmICghZSAmJiAhbykgcmV0dXJuICExO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiAhMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIHIgPSAhMTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dmFyIGkgPSB7fTtcblx0XHRcdFx0XHRcdChpW25dID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdG5leHQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6IChyID0gITApLFxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdHQoaSk7XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0XHRyZXR1cm4gcjtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2NjQ4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IG4oe30udG9TdHJpbmcpLFxuXHRcdFx0XHRcdGkgPSBuKCcnLnNsaWNlKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gaShvKHQpLCA4LCAtMSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0OTI2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzA0MyksXG5cdFx0XHRcdFx0byA9IHIoOTk4NSksXG5cdFx0XHRcdFx0aSA9IHIoNjY0OCksXG5cdFx0XHRcdFx0YSA9IHIoNDIwMSkoJ3RvU3RyaW5nVGFnJyksXG5cdFx0XHRcdFx0dSA9IE9iamVjdCxcblx0XHRcdFx0XHRjID1cblx0XHRcdFx0XHRcdCdBcmd1bWVudHMnID09PVxuXHRcdFx0XHRcdFx0aShcblx0XHRcdFx0XHRcdFx0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYXJndW1lbnRzO1xuXHRcdFx0XHRcdFx0XHR9KSgpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuXG5cdFx0XHRcdFx0PyBpXG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSwgciwgbjtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZvaWQgMCA9PT0gdFxuXHRcdFx0XHRcdFx0XHRcdD8gJ1VuZGVmaW5lZCdcblx0XHRcdFx0XHRcdFx0XHQ6IG51bGwgPT09IHRcblx0XHRcdFx0XHRcdFx0XHRcdD8gJ051bGwnXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICdzdHJpbmcnID09XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgdHlwZW9mIChyID0gKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdFtlXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSkoKGUgPSB1KHQpKSwgYSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGkoZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICdPYmplY3QnID09PSAobiA9IGkoZSkpICYmIG8oZS5jYWxsZWUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdBcmd1bWVudHMnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IG47XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDgwMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDUzOTEpLFxuXHRcdFx0XHRcdG8gPSByKDIxNDgpLFxuXHRcdFx0XHRcdGkgPSByKDYwNDUpLFxuXHRcdFx0XHRcdGEgPSByKDQwNzEpLFxuXHRcdFx0XHRcdHUgPSByKDc2NyksXG5cdFx0XHRcdFx0YyA9IHIoOTgxKSxcblx0XHRcdFx0XHRzID0gcig4NzM0KSxcblx0XHRcdFx0XHRmID0gcigxOTM0KSxcblx0XHRcdFx0XHRsID0gcig3ODA3KSxcblx0XHRcdFx0XHRwID0gcig0MjQxKSxcblx0XHRcdFx0XHRoID0gcig3Njk3KSxcblx0XHRcdFx0XHR2ID0gcig1Mzc1KS5mYXN0S2V5LFxuXHRcdFx0XHRcdGQgPSByKDYxOCksXG5cdFx0XHRcdFx0eSA9IGQuc2V0LFxuXHRcdFx0XHRcdGcgPSBkLmdldHRlckZvcjtcblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAodCwgZSwgciwgZikge1xuXHRcdFx0XHRcdFx0dmFyIGwgPSB0KGZ1bmN0aW9uICh0LCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0dSh0LCBwKSxcblx0XHRcdFx0XHRcdFx0XHRcdHkodCwge3R5cGU6IGUsIGluZGV4OiBuKG51bGwpLCBmaXJzdDogdm9pZCAwLCBsYXN0OiB2b2lkIDAsIHNpemU6IDB9KSxcblx0XHRcdFx0XHRcdFx0XHRcdGggfHwgKHQuc2l6ZSA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdFx0YyhvKSB8fCBzKG8sIHRbZl0sIHt0aGF0OiB0LCBBU19FTlRSSUVTOiByfSk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRwID0gbC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0XHRcdGQgPSBnKGUpLFxuXHRcdFx0XHRcdFx0XHRtID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRpID0gZCh0KSxcblx0XHRcdFx0XHRcdFx0XHRcdGEgPSBiKHQsIGUpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKGEudmFsdWUgPSByKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICgoaS5sYXN0ID0gYSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGluZGV4OiAobyA9IHYoZSwgITApKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJldmlvdXM6IChuID0gaS5sYXN0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmV4dDogdm9pZCAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW1vdmVkOiAhMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkuZmlyc3QgfHwgKGkuZmlyc3QgPSBhKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuICYmIChuLm5leHQgPSBhKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoID8gaS5zaXplKysgOiB0LnNpemUrKyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnRicgIT09IG8gJiYgKGkuaW5kZXhbb10gPSBhKSksXG5cdFx0XHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0YiA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRuID0gZCh0KSxcblx0XHRcdFx0XHRcdFx0XHRcdG8gPSB2KGUpO1xuXHRcdFx0XHRcdFx0XHRcdGlmICgnRicgIT09IG8pIHJldHVybiBuLmluZGV4W29dO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAociA9IG4uZmlyc3Q7IHI7IHIgPSByLm5leHQpIGlmIChyLmtleSA9PT0gZSkgcmV0dXJuIHI7XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRpKHAsIHtcblx0XHRcdFx0XHRcdFx0XHRjbGVhcjogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgdCA9IGQodGhpcyksIGUgPSB0LmluZGV4LCByID0gdC5maXJzdDsgcjsgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoci5yZW1vdmVkID0gITApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIucHJldmlvdXMgJiYgKHIucHJldmlvdXMgPSByLnByZXZpb3VzLm5leHQgPSB2b2lkIDApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZSBlW3IuaW5kZXhdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gci5uZXh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdCh0LmZpcnN0ID0gdC5sYXN0ID0gdm9pZCAwKSwgaCA/ICh0LnNpemUgPSAwKSA6ICh0aGlzLnNpemUgPSAwKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdGRlbGV0ZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBlID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IGQoZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4gPSBiKGUsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSBuLm5leHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9IG4ucHJldmlvdXM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZSByLmluZGV4W24uaW5kZXhdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuLnJlbW92ZWQgPSAhMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSAmJiAoaS5uZXh0ID0gbyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0byAmJiAoby5wcmV2aW91cyA9IGkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIuZmlyc3QgPT09IG4gJiYgKHIuZmlyc3QgPSBvKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyLmxhc3QgPT09IG4gJiYgKHIubGFzdCA9IGkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGggPyByLnNpemUtLSA6IGUuc2l6ZS0tO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICEhbjtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdGZvckVhY2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSwgciA9IGQodGhpcyksIG4gPSBhKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGUgPSBlID8gZS5uZXh0IDogci5maXJzdCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChuKGUudmFsdWUsIGUua2V5LCB0aGlzKTsgZSAmJiBlLnJlbW92ZWQ7ICkgZSA9IGUucHJldmlvdXM7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRoYXM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gISFiKHRoaXMsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRpKFxuXHRcdFx0XHRcdFx0XHRcdHAsXG5cdFx0XHRcdFx0XHRcdFx0clxuXHRcdFx0XHRcdFx0XHRcdFx0PyB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUgPSBiKHRoaXMsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGUgJiYgZS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNldDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBtKHRoaXMsIDAgPT09IHQgPyAwIDogdCwgZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWRkOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG0odGhpcywgKHQgPSAwID09PSB0ID8gMCA6IHQpLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdGggJiZcblx0XHRcdFx0XHRcdFx0XHRvKHAsICdzaXplJywge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZCh0aGlzKS5zaXplO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0bFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNldFN0cm9uZzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gZSArICcgSXRlcmF0b3InLFxuXHRcdFx0XHRcdFx0XHRvID0gZyhlKSxcblx0XHRcdFx0XHRcdFx0aSA9IGcobik7XG5cdFx0XHRcdFx0XHRmKFxuXHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdHkodGhpcywge3R5cGU6IG4sIHRhcmdldDogdCwgc3RhdGU6IG8odCksIGtpbmQ6IGUsIGxhc3Q6IHZvaWQgMH0pO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgdCA9IGkodGhpcyksIGUgPSB0LmtpbmQsIHIgPSB0Lmxhc3Q7IHIgJiYgci5yZW1vdmVkOyApIHIgPSByLnByZXZpb3VzO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnRhcmdldCAmJiAodC5sYXN0ID0gciA9IHIgPyByLm5leHQgOiB0LnN0YXRlLmZpcnN0KVxuXHRcdFx0XHRcdFx0XHRcdFx0PyBsKCdrZXlzJyA9PT0gZSA/IHIua2V5IDogJ3ZhbHVlcycgPT09IGUgPyByLnZhbHVlIDogW3Iua2V5LCByLnZhbHVlXSwgITEpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICgodC50YXJnZXQgPSB2b2lkIDApLCBsKHZvaWQgMCwgITApKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0ciA/ICdlbnRyaWVzJyA6ICd2YWx1ZXMnLFxuXHRcdFx0XHRcdFx0XHQhcixcblx0XHRcdFx0XHRcdFx0ITBcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHAoZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQzMTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5MDM3KSxcblx0XHRcdFx0XHRpID0gcig4ODQ0KSxcblx0XHRcdFx0XHRhID0gcig1MjY2KSxcblx0XHRcdFx0XHR1ID0gcigxODgwKSxcblx0XHRcdFx0XHRjID0gcig1Mzc1KSxcblx0XHRcdFx0XHRzID0gcig4NzM0KSxcblx0XHRcdFx0XHRmID0gcig3NjcpLFxuXHRcdFx0XHRcdGwgPSByKDk5ODUpLFxuXHRcdFx0XHRcdHAgPSByKDk4MSksXG5cdFx0XHRcdFx0aCA9IHIoODk5OSksXG5cdFx0XHRcdFx0diA9IHIoMzY4OSksXG5cdFx0XHRcdFx0ZCA9IHIoNjQzMSksXG5cdFx0XHRcdFx0eSA9IHIoNTk5NyksXG5cdFx0XHRcdFx0ZyA9IHIoMzQ1Nyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0dmFyIG0gPSAtMSAhPT0gdC5pbmRleE9mKCdNYXAnKSxcblx0XHRcdFx0XHRcdGIgPSAtMSAhPT0gdC5pbmRleE9mKCdXZWFrJyksXG5cdFx0XHRcdFx0XHR3ID0gbSA/ICdzZXQnIDogJ2FkZCcsXG5cdFx0XHRcdFx0XHR4ID0gb1t0XSxcblx0XHRcdFx0XHRcdGsgPSB4ICYmIHgucHJvdG90eXBlLFxuXHRcdFx0XHRcdFx0UyA9IHgsXG5cdFx0XHRcdFx0XHRFID0ge30sXG5cdFx0XHRcdFx0XHRPID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKGtbdF0pO1xuXHRcdFx0XHRcdFx0XHR1KFxuXHRcdFx0XHRcdFx0XHRcdGssXG5cdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHQnYWRkJyA9PT0gdFxuXHRcdFx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlKHRoaXMsIDAgPT09IHQgPyAwIDogdCksIHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdDogJ2RlbGV0ZScgPT09IHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICEoYiAmJiAhaCh0KSkgJiYgZSh0aGlzLCAwID09PSB0ID8gMCA6IHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnZ2V0JyA9PT0gdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGIgJiYgIWgodCkgPyB2b2lkIDAgOiBlKHRoaXMsIDAgPT09IHQgPyAwIDogdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnaGFzJyA9PT0gdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAhKGIgJiYgIWgodCkpICYmIGUodGhpcywgMCA9PT0gdCA/IDAgOiB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAodCwgcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlKHRoaXMsIDAgPT09IHQgPyAwIDogdCwgciksIHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0YShcblx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0IWwoeCkgfHxcblx0XHRcdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRcdFx0YiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KGsuZm9yRWFjaCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQhdihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmV3IHgoKS5lbnRyaWVzKCkubmV4dCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KSlcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KFMgPSByLmdldENvbnN0cnVjdG9yKGUsIHQsIG0sIHcpKSwgYy5lbmFibGUoKTtcblx0XHRcdFx0XHRlbHNlIGlmIChhKHQsICEwKSkge1xuXHRcdFx0XHRcdFx0dmFyIFAgPSBuZXcgUygpLFxuXHRcdFx0XHRcdFx0XHRqID0gUFt3XShiID8ge30gOiAtMCwgMSkgIT09IFAsXG5cdFx0XHRcdFx0XHRcdEwgPSB2KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRQLmhhcygxKTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdF8gPSBkKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IHgodCk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRJID1cblx0XHRcdFx0XHRcdFx0XHQhYiAmJlxuXHRcdFx0XHRcdFx0XHRcdHYoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgdCA9IG5ldyB4KCksIGUgPSA1OyBlLS07ICkgdFt3XShlLCBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAhdC5oYXMoLTApO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XyB8fFxuXHRcdFx0XHRcdFx0XHQoKChTID0gZShmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdGYodCwgayk7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBnKG5ldyB4KCksIHQsIFMpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwKGUpIHx8IHMoZSwgclt3XSwge3RoYXQ6IHIsIEFTX0VOVFJJRVM6IG19KSwgcjtcblx0XHRcdFx0XHRcdFx0fSkpLnByb3RvdHlwZSA9IGspLFxuXHRcdFx0XHRcdFx0XHQoay5jb25zdHJ1Y3RvciA9IFMpKSxcblx0XHRcdFx0XHRcdFx0KEwgfHwgSSkgJiYgKE8oJ2RlbGV0ZScpLCBPKCdoYXMnKSwgbSAmJiBPKCdnZXQnKSksXG5cdFx0XHRcdFx0XHRcdChJIHx8IGopICYmIE8odyksXG5cdFx0XHRcdFx0XHRcdGIgJiYgay5jbGVhciAmJiBkZWxldGUgay5jbGVhcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdChFW3RdID0gUyksXG5cdFx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0Z2xvYmFsOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHRcdFx0Zm9yY2VkOiBTICE9PSB4LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRFXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0eShTLCB0KSxcblx0XHRcdFx0XHRcdGIgfHwgci5zZXRTdHJvbmcoUywgdCwgbSksXG5cdFx0XHRcdFx0XHRTXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4NzU4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjgxMiksXG5cdFx0XHRcdFx0byA9IHIoOTE1MiksXG5cdFx0XHRcdFx0aSA9IHIoMjQ3NCksXG5cdFx0XHRcdFx0YSA9IHIoMjU2MCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgdSA9IG8oZSksIGMgPSBhLmYsIHMgPSBpLmYsIGYgPSAwOyBmIDwgdS5sZW5ndGg7IGYrKykge1xuXHRcdFx0XHRcdFx0dmFyIGwgPSB1W2ZdO1xuXHRcdFx0XHRcdFx0bih0LCBsKSB8fCAociAmJiBuKHIsIGwpKSB8fCBjKHQsIGwsIHMoZSwgbCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3NDEzOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDIwMSkoJ21hdGNoJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSAvLi87XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdCcvLi8nW3RdKGUpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHIpIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoZVtuXSA9ICExKSwgJy8uLydbdF0oZSk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gITE7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MTc0ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2ODkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAhbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHt9XG5cdFx0XHRcdFx0cmV0dXJuICh0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IG51bGwpLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQoKSkgIT09IHQucHJvdG90eXBlO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ3ODA3OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogdCxcblx0XHRcdFx0XHRcdGRvbmU6IGUsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1NzczOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzY5NyksXG5cdFx0XHRcdFx0byA9IHIoMjU2MCksXG5cdFx0XHRcdFx0aSA9IHIoNTY4NCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG5cblx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvLmYodCwgZSwgaSgxLCByKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKHRbZV0gPSByKSwgdDtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTY4NDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0ZW51bWVyYWJsZTogISgxICYgdCksXG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6ICEoMiAmIHQpLFxuXHRcdFx0XHRcdFx0d3JpdGFibGU6ICEoNCAmIHQpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGUsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2NTIyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODM2MCksXG5cdFx0XHRcdFx0byA9IHIoMjU2MCksXG5cdFx0XHRcdFx0aSA9IHIoNTY4NCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0dmFyIGEgPSBuKGUpO1xuXHRcdFx0XHRcdGEgaW4gdCA/IG8uZih0LCBhLCBpKDAsIHIpKSA6ICh0W2FdID0gcik7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MTc5NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDUwMjcpLFxuXHRcdFx0XHRcdG8gPSByKDU4OTkpLFxuXHRcdFx0XHRcdGkgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0aWYgKChuKHRoaXMpLCAnc3RyaW5nJyA9PT0gdCB8fCAnZGVmYXVsdCcgPT09IHQpKSB0ID0gJ3N0cmluZyc7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoJ251bWJlcicgIT09IHQpIHRocm93IG5ldyBpKCdJbmNvcnJlY3QgaGludCcpO1xuXHRcdFx0XHRcdHJldHVybiBvKHRoaXMsIHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDIxNDg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4NzAyKSxcblx0XHRcdFx0XHRvID0gcigyNTYwKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gci5nZXQgJiYgbihyLmdldCwgZSwge2dldHRlcjogITB9KSwgci5zZXQgJiYgbihyLnNldCwgZSwge3NldHRlcjogITB9KSwgby5mKHQsIGUsIHIpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDE4ODA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg1KSxcblx0XHRcdFx0XHRvID0gcigyNTYwKSxcblx0XHRcdFx0XHRpID0gcig4NzAyKSxcblx0XHRcdFx0XHRhID0gcig1MDE0KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIsIHUpIHtcblx0XHRcdFx0XHR1IHx8ICh1ID0ge30pO1xuXHRcdFx0XHRcdHZhciBjID0gdS5lbnVtZXJhYmxlLFxuXHRcdFx0XHRcdFx0cyA9IHZvaWQgMCAhPT0gdS5uYW1lID8gdS5uYW1lIDogZTtcblx0XHRcdFx0XHRpZiAoKG4ocikgJiYgaShyLCBzLCB1KSwgdS5nbG9iYWwpKSBjID8gKHRbZV0gPSByKSA6IGEoZSwgcik7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHR1LnVuc2FmZSA/IHRbZV0gJiYgKGMgPSAhMCkgOiBkZWxldGUgdFtlXTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0XHRjXG5cdFx0XHRcdFx0XHRcdD8gKHRbZV0gPSByKVxuXHRcdFx0XHRcdFx0XHQ6IG8uZih0LCBlLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdGVudW1lcmFibGU6ICExLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhdS5ub25Db25maWd1cmFibGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR3cml0YWJsZTogIXUubm9uV3JpdGFibGUsXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDYwNDU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigxODgwKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBvIGluIGUpIG4odCwgbywgZVtvXSwgcik7XG5cdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTAxNDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDkwMzcpLFxuXHRcdFx0XHRcdG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdG8obiwgdCwge3ZhbHVlOiBlLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITB9KTtcblx0XHRcdFx0XHR9IGNhdGNoIChyKSB7XG5cdFx0XHRcdFx0XHRuW3RdID0gZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzY5NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2ODkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAhbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdDcgIT09XG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHtcblx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDc7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KVsxXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDI2NTk6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHZhciBlID0gJ29iamVjdCcgPT0gdHlwZW9mIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCxcblx0XHRcdFx0XHRyID0gdm9pZCAwID09PSBlICYmIHZvaWQgMCAhPT0gZTtcblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdGFsbDogZSxcblx0XHRcdFx0XHRJU19IVE1MRERBOiByLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDY0MjA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gcig4OTk5KSxcblx0XHRcdFx0XHRpID0gbi5kb2N1bWVudCxcblx0XHRcdFx0XHRhID0gbyhpKSAmJiBvKGkuY3JlYXRlRWxlbWVudCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGEgPyBpLmNyZWF0ZUVsZW1lbnQodCkgOiB7fTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1NTY1OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR2YXIgZSA9IFR5cGVFcnJvcjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRpZiAodCA+IDkwMDcxOTkyNTQ3NDA5OTEpIHRocm93IGUoJ01heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCcpO1xuXHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDYzMzg6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRDU1NSdWxlTGlzdDogMCxcblx0XHRcdFx0XHRDU1NTdHlsZURlY2xhcmF0aW9uOiAwLFxuXHRcdFx0XHRcdENTU1ZhbHVlTGlzdDogMCxcblx0XHRcdFx0XHRDbGllbnRSZWN0TGlzdDogMCxcblx0XHRcdFx0XHRET01SZWN0TGlzdDogMCxcblx0XHRcdFx0XHRET01TdHJpbmdMaXN0OiAwLFxuXHRcdFx0XHRcdERPTVRva2VuTGlzdDogMSxcblx0XHRcdFx0XHREYXRhVHJhbnNmZXJJdGVtTGlzdDogMCxcblx0XHRcdFx0XHRGaWxlTGlzdDogMCxcblx0XHRcdFx0XHRIVE1MQWxsQ29sbGVjdGlvbjogMCxcblx0XHRcdFx0XHRIVE1MQ29sbGVjdGlvbjogMCxcblx0XHRcdFx0XHRIVE1MRm9ybUVsZW1lbnQ6IDAsXG5cdFx0XHRcdFx0SFRNTFNlbGVjdEVsZW1lbnQ6IDAsXG5cdFx0XHRcdFx0TWVkaWFMaXN0OiAwLFxuXHRcdFx0XHRcdE1pbWVUeXBlQXJyYXk6IDAsXG5cdFx0XHRcdFx0TmFtZWROb2RlTWFwOiAwLFxuXHRcdFx0XHRcdE5vZGVMaXN0OiAxLFxuXHRcdFx0XHRcdFBhaW50UmVxdWVzdExpc3Q6IDAsXG5cdFx0XHRcdFx0UGx1Z2luOiAwLFxuXHRcdFx0XHRcdFBsdWdpbkFycmF5OiAwLFxuXHRcdFx0XHRcdFNWR0xlbmd0aExpc3Q6IDAsXG5cdFx0XHRcdFx0U1ZHTnVtYmVyTGlzdDogMCxcblx0XHRcdFx0XHRTVkdQYXRoU2VnTGlzdDogMCxcblx0XHRcdFx0XHRTVkdQb2ludExpc3Q6IDAsXG5cdFx0XHRcdFx0U1ZHU3RyaW5nTGlzdDogMCxcblx0XHRcdFx0XHRTVkdUcmFuc2Zvcm1MaXN0OiAwLFxuXHRcdFx0XHRcdFNvdXJjZUJ1ZmZlckxpc3Q6IDAsXG5cdFx0XHRcdFx0U3R5bGVTaGVldExpc3Q6IDAsXG5cdFx0XHRcdFx0VGV4dFRyYWNrQ3VlTGlzdDogMCxcblx0XHRcdFx0XHRUZXh0VHJhY2tMaXN0OiAwLFxuXHRcdFx0XHRcdFRvdWNoTGlzdDogMCxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQzMjY1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjQyMCkoJ3NwYW4nKS5jbGFzc0xpc3QsXG5cdFx0XHRcdFx0byA9IG4gJiYgbi5jb25zdHJ1Y3RvciAmJiBuLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblx0XHRcdFx0dC5leHBvcnRzID0gbyA9PT0gT2JqZWN0LnByb3RvdHlwZSA/IHZvaWQgMCA6IG87XG5cdFx0XHR9LFxuXHRcdFx0MjUzMjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg1NjMpLFxuXHRcdFx0XHRcdG8gPSByKDgwNik7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICFuICYmICFvICYmICdvYmplY3QnID09IHR5cGVvZiB3aW5kb3cgJiYgJ29iamVjdCcgPT0gdHlwZW9mIGRvY3VtZW50O1xuXHRcdFx0fSxcblx0XHRcdDg1NjM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICdvYmplY3QnID09IHR5cGVvZiBEZW5vICYmIERlbm8gJiYgJ29iamVjdCcgPT0gdHlwZW9mIERlbm8udmVyc2lvbjtcblx0XHRcdH0sXG5cdFx0XHQzMjIxOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzEpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAvaXBhZHxpcGhvbmV8aXBvZC9pLnRlc3QobikgJiYgJ3VuZGVmaW5lZCcgIT0gdHlwZW9mIFBlYmJsZTtcblx0XHRcdH0sXG5cdFx0XHQ0NzY0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzEpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAvKD86aXBhZHxpcGhvbmV8aXBvZCkuKmFwcGxld2Via2l0L2kudGVzdChuKTtcblx0XHRcdH0sXG5cdFx0XHQ4MDY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gcig2NjQ4KTtcblx0XHRcdFx0dC5leHBvcnRzID0gJ3Byb2Nlc3MnID09PSBvKG4ucHJvY2Vzcyk7XG5cdFx0XHR9LFxuXHRcdFx0NzQ4NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDcxKTtcblx0XHRcdFx0dC5leHBvcnRzID0gL3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdChuKTtcblx0XHRcdH0sXG5cdFx0XHQ3MTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0gKCd1bmRlZmluZWQnICE9IHR5cGVvZiBuYXZpZ2F0b3IgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpKSB8fCAnJztcblx0XHRcdH0sXG5cdFx0XHQzNjE1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdGkgPSByKDkwMzcpLFxuXHRcdFx0XHRcdGEgPSByKDcxKSxcblx0XHRcdFx0XHR1ID0gaS5wcm9jZXNzLFxuXHRcdFx0XHRcdGMgPSBpLkRlbm8sXG5cdFx0XHRcdFx0cyA9ICh1ICYmIHUudmVyc2lvbnMpIHx8IChjICYmIGMudmVyc2lvbiksXG5cdFx0XHRcdFx0ZiA9IHMgJiYgcy52ODtcblx0XHRcdFx0ZiAmJiAobyA9IChuID0gZi5zcGxpdCgnLicpKVswXSA+IDAgJiYgblswXSA8IDQgPyAxIDogKyhuWzBdICsgblsxXSkpLFxuXHRcdFx0XHRcdCFvICYmXG5cdFx0XHRcdFx0XHRhICYmXG5cdFx0XHRcdFx0XHQoIShuID0gYS5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pKSB8fCBuWzFdID49IDc0KSAmJlxuXHRcdFx0XHRcdFx0KG4gPSBhLm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKSkgJiZcblx0XHRcdFx0XHRcdChvID0gK25bMV0pLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPSBvKTtcblx0XHRcdH0sXG5cdFx0XHQyNzM5OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBbXG5cdFx0XHRcdFx0J2NvbnN0cnVjdG9yJyxcblx0XHRcdFx0XHQnaGFzT3duUHJvcGVydHknLFxuXHRcdFx0XHRcdCdpc1Byb3RvdHlwZU9mJyxcblx0XHRcdFx0XHQncHJvcGVydHlJc0VudW1lcmFibGUnLFxuXHRcdFx0XHRcdCd0b0xvY2FsZVN0cmluZycsXG5cdFx0XHRcdFx0J3RvU3RyaW5nJyxcblx0XHRcdFx0XHQndmFsdWVPZicsXG5cdFx0XHRcdF07XG5cdFx0XHR9LFxuXHRcdFx0NjYxMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSBFcnJvcixcblx0XHRcdFx0XHRpID0gbignJy5yZXBsYWNlKSxcblx0XHRcdFx0XHRhID0gU3RyaW5nKG5ldyBvKCd6eGNhc2QnKS5zdGFjayksXG5cdFx0XHRcdFx0dSA9IC9cXG5cXHMqYXQgW146XSo6W15cXG5dKi8sXG5cdFx0XHRcdFx0YyA9IHUudGVzdChhKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoYyAmJiAnc3RyaW5nJyA9PSB0eXBlb2YgdCAmJiAhby5wcmVwYXJlU3RhY2tUcmFjZSkgZm9yICg7IGUtLTsgKSB0ID0gaSh0LCB1LCAnJyk7XG5cdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTQxMTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDU3NzMpLFxuXHRcdFx0XHRcdG8gPSByKDY2MTApLFxuXHRcdFx0XHRcdGkgPSByKDk1OTkpLFxuXHRcdFx0XHRcdGEgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIsIHUpIHtcblx0XHRcdFx0XHRpICYmIChhID8gYSh0LCBlKSA6IG4odCwgJ3N0YWNrJywgbyhyLCB1KSkpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDk1OTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KSxcblx0XHRcdFx0XHRvID0gcig1Njg0KTtcblx0XHRcdFx0dC5leHBvcnRzID0gIW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHZhciB0ID0gbmV3IEVycm9yKCdhJyk7XG5cdFx0XHRcdFx0cmV0dXJuICEoJ3N0YWNrJyBpbiB0KSB8fCAoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICdzdGFjaycsIG8oMSwgNykpLCA3ICE9PSB0LnN0YWNrKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0OTk4OTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDkwMzcpLFxuXHRcdFx0XHRcdG8gPSByKDI0NzQpLmYsXG5cdFx0XHRcdFx0aSA9IHIoNTc3MyksXG5cdFx0XHRcdFx0YSA9IHIoMTg4MCksXG5cdFx0XHRcdFx0dSA9IHIoNTAxNCksXG5cdFx0XHRcdFx0YyA9IHIoODc1OCksXG5cdFx0XHRcdFx0cyA9IHIoNTI2Nik7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHRmLFxuXHRcdFx0XHRcdFx0bCxcblx0XHRcdFx0XHRcdHAsXG5cdFx0XHRcdFx0XHRoLFxuXHRcdFx0XHRcdFx0diA9IHQudGFyZ2V0LFxuXHRcdFx0XHRcdFx0ZCA9IHQuZ2xvYmFsLFxuXHRcdFx0XHRcdFx0eSA9IHQuc3RhdDtcblx0XHRcdFx0XHRpZiAoKHIgPSBkID8gbiA6IHkgPyBuW3ZdIHx8IHUodiwge30pIDogKG5bdl0gfHwge30pLnByb3RvdHlwZSkpXG5cdFx0XHRcdFx0XHRmb3IgKGYgaW4gZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0KChwID0gZVtmXSksXG5cdFx0XHRcdFx0XHRcdFx0KGwgPSB0LmRvbnRDYWxsR2V0U2V0ID8gKGggPSBvKHIsIGYpKSAmJiBoLnZhbHVlIDogcltmXSksXG5cdFx0XHRcdFx0XHRcdFx0IXMoZCA/IGYgOiB2ICsgKHkgPyAnLicgOiAnIycpICsgZiwgdC5mb3JjZWQpICYmIHZvaWQgMCAhPT0gbClcblx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBwID09IHR5cGVvZiBsKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRjKHAsIGwpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCh0LnNoYW0gfHwgKGwgJiYgbC5zaGFtKSkgJiYgaShwLCAnc2hhbScsICEwKSwgYShyLCBmLCBwLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQzNjg5OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gISF0KCk7XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICEwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4Njc4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDQwNDMpO1xuXHRcdFx0XHR2YXIgbiA9IHIoNjU3NiksXG5cdFx0XHRcdFx0byA9IHIoMTg4MCksXG5cdFx0XHRcdFx0aSA9IHIoNjMwOCksXG5cdFx0XHRcdFx0YSA9IHIoMzY4OSksXG5cdFx0XHRcdFx0dSA9IHIoNDIwMSksXG5cdFx0XHRcdFx0YyA9IHIoNTc3MyksXG5cdFx0XHRcdFx0cyA9IHUoJ3NwZWNpZXMnKSxcblx0XHRcdFx0XHRmID0gUmVnRXhwLnByb3RvdHlwZTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIsIGwpIHtcblx0XHRcdFx0XHR2YXIgcCA9IHUodCksXG5cdFx0XHRcdFx0XHRoID0gIWEoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IHt9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdChlW3BdID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDc7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0NyAhPT0gJydbdF0oZSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0diA9XG5cdFx0XHRcdFx0XHRcdGggJiZcblx0XHRcdFx0XHRcdFx0IWEoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBlID0gITEsXG5cdFx0XHRcdFx0XHRcdFx0XHRyID0gL2EvO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQnc3BsaXQnID09PSB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgoKHIgPSB7fSkuY29uc3RydWN0b3IgPSB7fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChyLmNvbnN0cnVjdG9yW3NdID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHIuZmxhZ3MgPSAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChyW3BdID0gLy4vW3BdKSksXG5cdFx0XHRcdFx0XHRcdFx0XHQoci5leGVjID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKGUgPSAhMCksIG51bGw7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdHJbcF0oJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0IWVcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAoIWggfHwgIXYgfHwgcikge1xuXHRcdFx0XHRcdFx0dmFyIGQgPSBuKC8uL1twXSksXG5cdFx0XHRcdFx0XHRcdHkgPSBlKHAsICcnW3RdLCBmdW5jdGlvbiAodCwgZSwgciwgbywgYSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciB1ID0gbih0KSxcblx0XHRcdFx0XHRcdFx0XHRcdGMgPSBlLmV4ZWM7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGMgPT09IGkgfHwgYyA9PT0gZi5leGVjXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGggJiYgIWFcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyB7ZG9uZTogITAsIHZhbHVlOiBkKGUsIHIsIG8pfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHtkb25lOiAhMCwgdmFsdWU6IHUociwgZSwgbyl9XG5cdFx0XHRcdFx0XHRcdFx0XHQ6IHtkb25lOiAhMX07XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0byhTdHJpbmcucHJvdG90eXBlLCB0LCB5WzBdKSwgbyhmLCBwLCB5WzFdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bCAmJiBjKGZbcF0sICdzaGFtJywgITApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDE1OTQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KTtcblx0XHRcdFx0dC5leHBvcnRzID0gIW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiBPYmplY3QuaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQxNzM1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzIxNSksXG5cdFx0XHRcdFx0byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0XHRcdFx0XHRpID0gby5hcHBseSxcblx0XHRcdFx0XHRhID0gby5jYWxsO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdCgnb2JqZWN0JyA9PSB0eXBlb2YgUmVmbGVjdCAmJiBSZWZsZWN0LmFwcGx5KSB8fFxuXHRcdFx0XHRcdChuXG5cdFx0XHRcdFx0XHQ/IGEuYmluZChpKVxuXHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGEuYXBwbHkoaSwgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NDA3MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDY1NzYpLFxuXHRcdFx0XHRcdG8gPSByKDUwOSksXG5cdFx0XHRcdFx0aSA9IHIoNzIxNSksXG5cdFx0XHRcdFx0YSA9IG4obi5iaW5kKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0byh0KSxcblx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gZVxuXHRcdFx0XHRcdFx0XHQ/IHRcblx0XHRcdFx0XHRcdFx0OiBpXG5cdFx0XHRcdFx0XHRcdFx0PyBhKHQsIGUpXG5cdFx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFwcGx5KGUsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3MjE1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICFuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHR2YXIgdCA9IGZ1bmN0aW9uICgpIHt9LmJpbmQoKTtcblx0XHRcdFx0XHRyZXR1cm4gJ2Z1bmN0aW9uJyAhPSB0eXBlb2YgdCB8fCB0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Njc2MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDUwOSksXG5cdFx0XHRcdFx0aSA9IHIoODk5OSksXG5cdFx0XHRcdFx0YSA9IHIoNjgxMiksXG5cdFx0XHRcdFx0dSA9IHIoNjAwNCksXG5cdFx0XHRcdFx0YyA9IHIoNzIxNSksXG5cdFx0XHRcdFx0cyA9IEZ1bmN0aW9uLFxuXHRcdFx0XHRcdGYgPSBuKFtdLmNvbmNhdCksXG5cdFx0XHRcdFx0bCA9IG4oW10uam9pbiksXG5cdFx0XHRcdFx0cCA9IHt9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBjXG5cdFx0XHRcdFx0PyBzLmJpbmRcblx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gbyh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRyID0gZS5wcm90b3R5cGUsXG5cdFx0XHRcdFx0XHRcdFx0biA9IHUoYXJndW1lbnRzLCAxKSxcblx0XHRcdFx0XHRcdFx0XHRjID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBmKG4sIHUoYXJndW1lbnRzKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGNcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghYShwLCBlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBuID0gW10sIG8gPSAwOyBvIDwgZTsgbysrKSBuW29dID0gJ2FbJyArIG8gKyAnXSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBbZV0gPSBzKCdDLGEnLCAncmV0dXJuIG5ldyBDKCcgKyBsKG4sICcsJykgKyAnKScpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHBbZV0odCwgcik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoZSwgci5sZW5ndGgsIHIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogZS5hcHBseSh0LCByKTtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaShyKSAmJiAoYy5wcm90b3R5cGUgPSByKSwgYztcblx0XHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MjYxNTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDcyMTUpLFxuXHRcdFx0XHRcdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcblx0XHRcdFx0dC5leHBvcnRzID0gblxuXHRcdFx0XHRcdD8gby5iaW5kKG8pXG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvLmFwcGx5KG8sIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDEyMzY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcig2ODEyKSxcblx0XHRcdFx0XHRpID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuXHRcdFx0XHRcdGEgPSBuICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG5cdFx0XHRcdFx0dSA9IG8oaSwgJ25hbWUnKSxcblx0XHRcdFx0XHRjID0gdSAmJiAnc29tZXRoaW5nJyA9PT0gZnVuY3Rpb24gKCkge30ubmFtZSxcblx0XHRcdFx0XHRzID0gdSAmJiAoIW4gfHwgKG4gJiYgYShpLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0RVhJU1RTOiB1LFxuXHRcdFx0XHRcdFBST1BFUjogYyxcblx0XHRcdFx0XHRDT05GSUdVUkFCTEU6IHMsXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0Mjc0MzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDUwOSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHJldHVybiBuKG8oT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCBlKVtyXSkpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjU3NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDY2NDgpLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmICgnRnVuY3Rpb24nID09PSBuKHQpKSByZXR1cm4gbyh0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4ODQ0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzIxNSksXG5cdFx0XHRcdFx0byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0XHRcdFx0XHRpID0gby5jYWxsLFxuXHRcdFx0XHRcdGEgPSBuICYmIG8uYmluZC5iaW5kKGksIGkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuXG5cdFx0XHRcdFx0PyBhXG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBpLmFwcGx5KHQsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDYwNTg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gcig5OTg1KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyAoKHIgPSBuW3RdKSwgbyhyKSA/IHIgOiB2b2lkIDApIDogblt0XSAmJiBuW3RdW2VdO1xuXHRcdFx0XHRcdHZhciByO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDIzMDI6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdGl0ZXJhdG9yOiB0LFxuXHRcdFx0XHRcdFx0bmV4dDogdC5uZXh0LFxuXHRcdFx0XHRcdFx0ZG9uZTogITEsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxNjY0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTI2KSxcblx0XHRcdFx0XHRvID0gcig0ODQ5KSxcblx0XHRcdFx0XHRpID0gcig5ODEpLFxuXHRcdFx0XHRcdGEgPSByKDk0NzgpLFxuXHRcdFx0XHRcdHUgPSByKDQyMDEpKCdpdGVyYXRvcicpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmICghaSh0KSkgcmV0dXJuIG8odCwgdSkgfHwgbyh0LCAnQEBpdGVyYXRvcicpIHx8IGFbbih0KV07XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTE4NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2MTUpLFxuXHRcdFx0XHRcdG8gPSByKDUwOSksXG5cdFx0XHRcdFx0aSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0YSA9IHIoMzY5MSksXG5cdFx0XHRcdFx0dSA9IHIoMTY2NCksXG5cdFx0XHRcdFx0YyA9IFR5cGVFcnJvcjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHR2YXIgciA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gdSh0KSA6IGU7XG5cdFx0XHRcdFx0aWYgKG8ocikpIHJldHVybiBpKG4ociwgdCkpO1xuXHRcdFx0XHRcdHRocm93IG5ldyBjKGEodCkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDI2NDM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcigyMjk3KSxcblx0XHRcdFx0XHRpID0gcig5OTg1KSxcblx0XHRcdFx0XHRhID0gcig2NjQ4KSxcblx0XHRcdFx0XHR1ID0gcig0MzI3KSxcblx0XHRcdFx0XHRjID0gbihbXS5wdXNoKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRpZiAoaSh0KSkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0aWYgKG8odCkpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0Lmxlbmd0aCwgciA9IFtdLCBuID0gMDsgbiA8IGU7IG4rKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgcyA9IHRbbl07XG5cdFx0XHRcdFx0XHRcdCdzdHJpbmcnID09IHR5cGVvZiBzXG5cdFx0XHRcdFx0XHRcdFx0PyBjKHIsIHMpXG5cdFx0XHRcdFx0XHRcdFx0OiAoJ251bWJlcicgIT0gdHlwZW9mIHMgJiYgJ051bWJlcicgIT09IGEocykgJiYgJ1N0cmluZycgIT09IGEocykpIHx8IGMociwgdShzKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgZiA9IHIubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRsID0gITA7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGwpIHJldHVybiAobCA9ICExKSwgZTtcblx0XHRcdFx0XHRcdFx0aWYgKG8odGhpcykpIHJldHVybiBlO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBuID0gMDsgbiA8IGY7IG4rKykgaWYgKHJbbl0gPT09IHQpIHJldHVybiBlO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NDg0OTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDUwOSksXG5cdFx0XHRcdFx0byA9IHIoOTgxKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHR2YXIgciA9IHRbZV07XG5cdFx0XHRcdFx0cmV0dXJuIG8ocikgPyB2b2lkIDAgOiBuKHIpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDcwMTc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcig2OTApLFxuXHRcdFx0XHRcdGkgPSBNYXRoLmZsb29yLFxuXHRcdFx0XHRcdGEgPSBuKCcnLmNoYXJBdCksXG5cdFx0XHRcdFx0dSA9IG4oJycucmVwbGFjZSksXG5cdFx0XHRcdFx0YyA9IG4oJycuc2xpY2UpLFxuXHRcdFx0XHRcdHMgPSAvXFwkKFskJidgXXxcXGR7MSwyfXw8W14+XSo+KS9nLFxuXHRcdFx0XHRcdGYgPSAvXFwkKFskJidgXXxcXGR7MSwyfSkvZztcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIsIG4sIGwsIHApIHtcblx0XHRcdFx0XHR2YXIgaCA9IHIgKyB0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdHYgPSBuLmxlbmd0aCxcblx0XHRcdFx0XHRcdGQgPSBmO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHR2b2lkIDAgIT09IGwgJiYgKChsID0gbyhsKSksIChkID0gcykpLFxuXHRcdFx0XHRcdFx0dShwLCBkLCBmdW5jdGlvbiAobywgdSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgcztcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChhKHUsIDApKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnJCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJyQnO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJyYnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnYCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYyhlLCAwLCByKTtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiJ1wiOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGMoZSwgaCk7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnPCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRzID0gbFtjKHUsIDEsIC0xKV07XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGYgPSArdTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgwID09PSBmKSByZXR1cm4gbztcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChmID4gdikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcCA9IGkoZiAvIDEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDAgPT09IHBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IG9cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHAgPD0gdlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB2b2lkIDAgPT09IG5bcCAtIDFdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gYSh1LCAxKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IG5bcCAtIDFdICsgYSh1LCAxKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBvO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cyA9IG5bZiAtIDFdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2b2lkIDAgPT09IHMgPyAnJyA6IHM7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0OTAzNzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiB0ICYmIHQuTWF0aCA9PT0gTWF0aCAmJiB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdG4oJ29iamVjdCcgPT0gdHlwZW9mIGdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcykgfHxcblx0XHRcdFx0XHRuKCdvYmplY3QnID09IHR5cGVvZiB3aW5kb3cgJiYgd2luZG93KSB8fFxuXHRcdFx0XHRcdG4oJ29iamVjdCcgPT0gdHlwZW9mIHNlbGYgJiYgc2VsZikgfHxcblx0XHRcdFx0XHRuKCdvYmplY3QnID09IHR5cGVvZiByLmcgJiYgci5nKSB8fFxuXHRcdFx0XHRcdG4oJ29iamVjdCcgPT0gdHlwZW9mIHRoaXMgJiYgdGhpcykgfHxcblx0XHRcdFx0XHQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSkoKSB8fFxuXHRcdFx0XHRcdEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdFx0XHR9LFxuXHRcdFx0NjgxMjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDY5MCksXG5cdFx0XHRcdFx0aSA9IG4oe30uaGFzT3duUHJvcGVydHkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdE9iamVjdC5oYXNPd24gfHxcblx0XHRcdFx0XHRmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGkobyh0KSwgZSk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3MjQ4OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7fTtcblx0XHRcdH0sXG5cdFx0XHQ5MjA6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdDEgPT09IGFyZ3VtZW50cy5sZW5ndGggPyBjb25zb2xlLmVycm9yKHQpIDogY29uc29sZS5lcnJvcih0LCBlKTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDI2ODg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2MDU4KTtcblx0XHRcdFx0dC5leHBvcnRzID0gbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG5cdFx0XHR9LFxuXHRcdFx0ODUwNjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDM2ODkpLFxuXHRcdFx0XHRcdGkgPSByKDY0MjApO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdCFuICYmXG5cdFx0XHRcdFx0IW8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0NyAhPT1cblx0XHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGkoJ2RpdicpLCAnYScsIHtcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiA3O1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0pLmFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NDQxMzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDM2ODkpLFxuXHRcdFx0XHRcdGkgPSByKDY2NDgpLFxuXHRcdFx0XHRcdGEgPSBPYmplY3QsXG5cdFx0XHRcdFx0dSA9IG4oJycuc3BsaXQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXR1cm4gIWEoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAnU3RyaW5nJyA9PT0gaSh0KSA/IHUodCwgJycpIDogYSh0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ6IGE7XG5cdFx0XHR9LFxuXHRcdFx0MzQ1NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODUpLFxuXHRcdFx0XHRcdG8gPSByKDg5OTkpLFxuXHRcdFx0XHRcdGkgPSByKDkzODUpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdHZhciBhLCB1O1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRpICYmIG4oKGEgPSBlLmNvbnN0cnVjdG9yKSkgJiYgYSAhPT0gciAmJiBvKCh1ID0gYS5wcm90b3R5cGUpKSAmJiB1ICE9PSByLnByb3RvdHlwZSAmJiBpKHQsIHUpLFxuXHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjczODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDk5ODUpLFxuXHRcdFx0XHRcdGkgPSByKDQwOTEpLFxuXHRcdFx0XHRcdGEgPSBuKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblx0XHRcdFx0byhpLmluc3BlY3RTb3VyY2UpIHx8XG5cdFx0XHRcdFx0KGkuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYSh0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQodC5leHBvcnRzID0gaS5pbnNwZWN0U291cmNlKTtcblx0XHRcdH0sXG5cdFx0XHQyNTcwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODk5OSksXG5cdFx0XHRcdFx0byA9IHIoNTc3Myk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0bihlKSAmJiAnY2F1c2UnIGluIGUgJiYgbyh0LCAnY2F1c2UnLCBlLmNhdXNlKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1Mzc1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoODg0NCksXG5cdFx0XHRcdFx0aSA9IHIoNzI0OCksXG5cdFx0XHRcdFx0YSA9IHIoODk5OSksXG5cdFx0XHRcdFx0dSA9IHIoNjgxMiksXG5cdFx0XHRcdFx0YyA9IHIoMjU2MCkuZixcblx0XHRcdFx0XHRzID0gcigyNzQxKSxcblx0XHRcdFx0XHRmID0gcig2MDYyKSxcblx0XHRcdFx0XHRsID0gcigxMTI5KSxcblx0XHRcdFx0XHRwID0gcig0NjMwKSxcblx0XHRcdFx0XHRoID0gcigxNTk0KSxcblx0XHRcdFx0XHR2ID0gITEsXG5cdFx0XHRcdFx0ZCA9IHAoJ21ldGEnKSxcblx0XHRcdFx0XHR5ID0gMCxcblx0XHRcdFx0XHRnID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGModCwgZCwge3ZhbHVlOiB7b2JqZWN0SUQ6ICdPJyArIHkrKywgd2Vha0RhdGE6IHt9fX0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bSA9ICh0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0XHRlbmFibGU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0KG0uZW5hYmxlID0gZnVuY3Rpb24gKCkge30pLCAodiA9ICEwKTtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSBzLmYsXG5cdFx0XHRcdFx0XHRcdFx0ZSA9IG8oW10uc3BsaWNlKSxcblx0XHRcdFx0XHRcdFx0XHRyID0ge307XG5cdFx0XHRcdFx0XHRcdChyW2RdID0gMSksXG5cdFx0XHRcdFx0XHRcdFx0dChyKS5sZW5ndGggJiZcblx0XHRcdFx0XHRcdFx0XHRcdCgocy5mID0gZnVuY3Rpb24gKHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbiA9IHQociksIG8gPSAwLCBpID0gbi5sZW5ndGg7IG8gPCBpOyBvKyspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG5bb10gPT09IGQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUobiwgbywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBuO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFyZ2V0OiAnT2JqZWN0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdGF0OiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JjZWQ6ICEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7Z2V0T3duUHJvcGVydHlOYW1lczogZi5mfVxuXHRcdFx0XHRcdFx0XHRcdFx0KSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmFzdEtleTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCFhKHQpKSByZXR1cm4gJ3N5bWJvbCcgPT0gdHlwZW9mIHQgPyB0IDogKCdzdHJpbmcnID09IHR5cGVvZiB0ID8gJ1MnIDogJ1AnKSArIHQ7XG5cdFx0XHRcdFx0XHRcdGlmICghdSh0LCBkKSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICghbCh0KSkgcmV0dXJuICdGJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoIWUpIHJldHVybiAnRSc7XG5cdFx0XHRcdFx0XHRcdFx0Zyh0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdFtkXS5vYmplY3RJRDtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRnZXRXZWFrRGF0YTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCF1KHQsIGQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFsKHQpKSByZXR1cm4gITA7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFlKSByZXR1cm4gITE7XG5cdFx0XHRcdFx0XHRcdFx0Zyh0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdFtkXS53ZWFrRGF0YTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbkZyZWV6ZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGggJiYgdiAmJiBsKHQpICYmICF1KHQsIGQpICYmIGcodCksIHQ7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRpW2RdID0gITA7XG5cdFx0XHR9LFxuXHRcdFx0NjE4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0YSA9IHIoOTgzNCksXG5cdFx0XHRcdFx0dSA9IHIoOTAzNyksXG5cdFx0XHRcdFx0YyA9IHIoODk5OSksXG5cdFx0XHRcdFx0cyA9IHIoNTc3MyksXG5cdFx0XHRcdFx0ZiA9IHIoNjgxMiksXG5cdFx0XHRcdFx0bCA9IHIoNDA5MSksXG5cdFx0XHRcdFx0cCA9IHIoMjcxMyksXG5cdFx0XHRcdFx0aCA9IHIoNzI0OCksXG5cdFx0XHRcdFx0diA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCcsXG5cdFx0XHRcdFx0ZCA9IHUuVHlwZUVycm9yLFxuXHRcdFx0XHRcdHkgPSB1LldlYWtNYXA7XG5cdFx0XHRcdGlmIChhIHx8IGwuc3RhdGUpIHtcblx0XHRcdFx0XHR2YXIgZyA9IGwuc3RhdGUgfHwgKGwuc3RhdGUgPSBuZXcgeSgpKTtcblx0XHRcdFx0XHQoZy5nZXQgPSBnLmdldCksXG5cdFx0XHRcdFx0XHQoZy5oYXMgPSBnLmhhcyksXG5cdFx0XHRcdFx0XHQoZy5zZXQgPSBnLnNldCksXG5cdFx0XHRcdFx0XHQobiA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChnLmhhcyh0KSkgdGhyb3cgbmV3IGQodik7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoZS5mYWNhZGUgPSB0KSwgZy5zZXQodCwgZSksIGU7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdChvID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGcuZ2V0KHQpIHx8IHt9O1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQoaSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBnLmhhcyh0KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZhciBtID0gcCgnc3RhdGUnKTtcblx0XHRcdFx0XHQoaFttXSA9ICEwKSxcblx0XHRcdFx0XHRcdChuID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGYodCwgbSkpIHRocm93IG5ldyBkKHYpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGUuZmFjYWRlID0gdCksIHModCwgbSwgZSksIGU7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdChvID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGYodCwgbSkgPyB0W21dIDoge307XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdChpID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGYodCwgbSk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0c2V0OiBuLFxuXHRcdFx0XHRcdGdldDogbyxcblx0XHRcdFx0XHRoYXM6IGksXG5cdFx0XHRcdFx0ZW5mb3JjZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBpKHQpID8gbyh0KSA6IG4odCwge30pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0dGVyRm9yOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWMoZSkgfHwgKHIgPSBvKGUpKS50eXBlICE9PSB0KVxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBkKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyB0ICsgJyByZXF1aXJlZCcpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcjtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQzMjkyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDIwMSksXG5cdFx0XHRcdFx0byA9IHIoOTQ3OCksXG5cdFx0XHRcdFx0aSA9IG4oJ2l0ZXJhdG9yJyksXG5cdFx0XHRcdFx0YSA9IEFycmF5LnByb3RvdHlwZTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gdm9pZCAwICE9PSB0ICYmIChvLkFycmF5ID09PSB0IHx8IGFbaV0gPT09IHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDIyOTc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2NjQ4KTtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHRBcnJheS5pc0FycmF5IHx8XG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnQXJyYXknID09PSBuKHQpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0OTk4NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2NTkpLFxuXHRcdFx0XHRcdG8gPSBuLmFsbDtcblx0XHRcdFx0dC5leHBvcnRzID0gbi5JU19IVE1MRERBXG5cdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgdCB8fCB0ID09PSBvO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICdmdW5jdGlvbicgPT0gdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDk0Mjk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcig5OTg1KSxcblx0XHRcdFx0XHRhID0gcig5MjYpLFxuXHRcdFx0XHRcdHUgPSByKDYwNTgpLFxuXHRcdFx0XHRcdGMgPSByKDY3MzgpLFxuXHRcdFx0XHRcdHMgPSBmdW5jdGlvbiAoKSB7fSxcblx0XHRcdFx0XHRmID0gW10sXG5cdFx0XHRcdFx0bCA9IHUoJ1JlZmxlY3QnLCAnY29uc3RydWN0JyksXG5cdFx0XHRcdFx0cCA9IC9eXFxzKig/OmNsYXNzfGZ1bmN0aW9uKVxcYi8sXG5cdFx0XHRcdFx0aCA9IG4ocC5leGVjKSxcblx0XHRcdFx0XHR2ID0gIXAudGVzdChzKSxcblx0XHRcdFx0XHRkID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmICghaSh0KSkgcmV0dXJuICExO1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGwocywgZiwgdCksICEwO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gITE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR5ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmICghaSh0KSkgcmV0dXJuICExO1xuXHRcdFx0XHRcdFx0c3dpdGNoIChhKHQpKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ0FzeW5jRnVuY3Rpb24nOlxuXHRcdFx0XHRcdFx0XHRjYXNlICdHZW5lcmF0b3JGdW5jdGlvbic6XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAhMTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2IHx8ICEhaChwLCBjKHQpKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdCh5LnNoYW0gPSAhMCksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0XHQhbCB8fFxuXHRcdFx0XHRcdFx0byhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdGQoZC5jYWxsKSB8fFxuXHRcdFx0XHRcdFx0XHRcdCFkKE9iamVjdCkgfHxcblx0XHRcdFx0XHRcdFx0XHQhZChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0ID0gITA7XG5cdFx0XHRcdFx0XHRcdFx0fSkgfHxcblx0XHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHQ/IHlcblx0XHRcdFx0XHRcdFx0OiBkKTtcblx0XHRcdH0sXG5cdFx0XHQ1MjY2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSksXG5cdFx0XHRcdFx0byA9IHIoOTk4NSksXG5cdFx0XHRcdFx0aSA9IC8jfFxcLnByb3RvdHlwZVxcLi8sXG5cdFx0XHRcdFx0YSA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IGNbdSh0KV07XG5cdFx0XHRcdFx0XHRyZXR1cm4gciA9PT0gZiB8fCAociAhPT0gcyAmJiAobyhlKSA/IG4oZSkgOiAhIWUpKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHUgPSAoYS5ub3JtYWxpemUgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKGksICcuJykudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRjID0gKGEuZGF0YSA9IHt9KSxcblx0XHRcdFx0XHRzID0gKGEuTkFUSVZFID0gJ04nKSxcblx0XHRcdFx0XHRmID0gKGEuUE9MWUZJTEwgPSAnUCcpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBhO1xuXHRcdFx0fSxcblx0XHRcdDk4MTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbCA9PSB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDg5OTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg1KSxcblx0XHRcdFx0XHRvID0gcigyNjU5KSxcblx0XHRcdFx0XHRpID0gby5hbGw7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG8uSVNfSFRNTEREQVxuXHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICdvYmplY3QnID09IHR5cGVvZiB0ID8gbnVsbCAhPT0gdCA6IG4odCkgfHwgdCA9PT0gaTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAnb2JqZWN0JyA9PSB0eXBlb2YgdCA/IG51bGwgIT09IHQgOiBuKHQpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQzOTMxOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAhMTtcblx0XHRcdH0sXG5cdFx0XHQxMjQ1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODk5OSksXG5cdFx0XHRcdFx0byA9IHIoNjY0OCksXG5cdFx0XHRcdFx0aSA9IHIoNDIwMSkoJ21hdGNoJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0dmFyIGU7XG5cdFx0XHRcdFx0cmV0dXJuIG4odCkgJiYgKHZvaWQgMCAhPT0gKGUgPSB0W2ldKSA/ICEhZSA6ICdSZWdFeHAnID09PSBvKHQpKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3MzQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2MDU4KSxcblx0XHRcdFx0XHRvID0gcig5OTg1KSxcblx0XHRcdFx0XHRpID0gcigzNjIyKSxcblx0XHRcdFx0XHRhID0gcig5NTI1KSxcblx0XHRcdFx0XHR1ID0gT2JqZWN0O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBhXG5cdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJ3N5bWJvbCcgPT0gdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IG4oJ1N5bWJvbCcpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbyhlKSAmJiBpKGUucHJvdG90eXBlLCB1KHQpKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjcwNDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2MTUpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdGZvciAodmFyIG8sIGksIGEgPSByID8gdCA6IHQuaXRlcmF0b3IsIHUgPSB0Lm5leHQ7ICEobyA9IG4odSwgYSkpLmRvbmU7IClcblx0XHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IChpID0gZShvLnZhbHVlKSkpIHJldHVybiBpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDg3MzQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig0MDcxKSxcblx0XHRcdFx0XHRvID0gcigyNjE1KSxcblx0XHRcdFx0XHRpID0gcig1MDI3KSxcblx0XHRcdFx0XHRhID0gcigzNjkxKSxcblx0XHRcdFx0XHR1ID0gcigzMjkyKSxcblx0XHRcdFx0XHRjID0gcig2MzEwKSxcblx0XHRcdFx0XHRzID0gcigzNjIyKSxcblx0XHRcdFx0XHRmID0gcig1MTg1KSxcblx0XHRcdFx0XHRsID0gcigxNjY0KSxcblx0XHRcdFx0XHRwID0gcigyMTI1KSxcblx0XHRcdFx0XHRoID0gVHlwZUVycm9yLFxuXHRcdFx0XHRcdHYgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0KHRoaXMuc3RvcHBlZCA9IHQpLCAodGhpcy5yZXN1bHQgPSBlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGQgPSB2LnByb3RvdHlwZTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgeSxcblx0XHRcdFx0XHRcdGcsXG5cdFx0XHRcdFx0XHRtLFxuXHRcdFx0XHRcdFx0Yixcblx0XHRcdFx0XHRcdHcsXG5cdFx0XHRcdFx0XHR4LFxuXHRcdFx0XHRcdFx0ayxcblx0XHRcdFx0XHRcdFMgPSByICYmIHIudGhhdCxcblx0XHRcdFx0XHRcdEUgPSAhKCFyIHx8ICFyLkFTX0VOVFJJRVMpLFxuXHRcdFx0XHRcdFx0TyA9ICEoIXIgfHwgIXIuSVNfUkVDT1JEKSxcblx0XHRcdFx0XHRcdFAgPSAhKCFyIHx8ICFyLklTX0lURVJBVE9SKSxcblx0XHRcdFx0XHRcdGogPSAhKCFyIHx8ICFyLklOVEVSUlVQVEVEKSxcblx0XHRcdFx0XHRcdEwgPSBuKGUsIFMpLFxuXHRcdFx0XHRcdFx0XyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB5ICYmIHAoeSwgJ25vcm1hbCcsIHQpLCBuZXcgdighMCwgdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0SSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBFID8gKGkodCksIGogPyBMKHRbMF0sIHRbMV0sIF8pIDogTCh0WzBdLCB0WzFdKSkgOiBqID8gTCh0LCBfKSA6IEwodCk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChPKSB5ID0gdC5pdGVyYXRvcjtcblx0XHRcdFx0XHRlbHNlIGlmIChQKSB5ID0gdDtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdGlmICghKGcgPSBsKHQpKSkgdGhyb3cgbmV3IGgoYSh0KSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG5cdFx0XHRcdFx0XHRpZiAodShnKSkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKG0gPSAwLCBiID0gYyh0KTsgYiA+IG07IG0rKykgaWYgKCh3ID0gSSh0W21dKSkgJiYgcyhkLCB3KSkgcmV0dXJuIHc7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgdighMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR5ID0gZih0LCBnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yICh4ID0gTyA/IHQubmV4dCA6IHkubmV4dDsgIShrID0gbyh4LCB5KSkuZG9uZTsgKSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHR3ID0gSShrLnZhbHVlKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0cCh5LCAndGhyb3cnLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyA9PSB0eXBlb2YgdyAmJiB3ICYmIHMoZCwgdykpIHJldHVybiB3O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbmV3IHYoITEpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDIxMjU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig1MDI3KSxcblx0XHRcdFx0XHRpID0gcig0ODQ5KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgYSwgdTtcblx0XHRcdFx0XHRvKHQpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRpZiAoIShhID0gaSh0LCAncmV0dXJuJykpKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBlKSB0aHJvdyByO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGEgPSBuKGEsIHQpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdCh1ID0gITApLCAoYSA9IHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gZSkgdGhyb3cgcjtcblx0XHRcdFx0XHRpZiAodSkgdGhyb3cgYTtcblx0XHRcdFx0XHRyZXR1cm4gbyhhKSwgcjtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ5NzQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyMDEzKS5JdGVyYXRvclByb3RvdHlwZSxcblx0XHRcdFx0XHRvID0gcig1MzkxKSxcblx0XHRcdFx0XHRpID0gcig1Njg0KSxcblx0XHRcdFx0XHRhID0gcig1OTk3KSxcblx0XHRcdFx0XHR1ID0gcig5NDc4KSxcblx0XHRcdFx0XHRjID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIsIHMpIHtcblx0XHRcdFx0XHR2YXIgZiA9IGUgKyAnIEl0ZXJhdG9yJztcblx0XHRcdFx0XHRyZXR1cm4gKHQucHJvdG90eXBlID0gbyhuLCB7bmV4dDogaSgrIXMsIHIpfSkpLCBhKHQsIGYsICExLCAhMCksICh1W2ZdID0gYyksIHQ7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTQxOTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2MTUpLFxuXHRcdFx0XHRcdG8gPSByKDUzOTEpLFxuXHRcdFx0XHRcdGkgPSByKDU3NzMpLFxuXHRcdFx0XHRcdGEgPSByKDYwNDUpLFxuXHRcdFx0XHRcdHUgPSByKDQyMDEpLFxuXHRcdFx0XHRcdGMgPSByKDYxOCksXG5cdFx0XHRcdFx0cyA9IHIoNDg0OSksXG5cdFx0XHRcdFx0ZiA9IHIoMjAxMykuSXRlcmF0b3JQcm90b3R5cGUsXG5cdFx0XHRcdFx0bCA9IHIoNzgwNyksXG5cdFx0XHRcdFx0cCA9IHIoMjEyNSksXG5cdFx0XHRcdFx0aCA9IHUoJ3RvU3RyaW5nVGFnJyksXG5cdFx0XHRcdFx0diA9ICdJdGVyYXRvckhlbHBlcicsXG5cdFx0XHRcdFx0ZCA9ICdXcmFwRm9yVmFsaWRJdGVyYXRvcicsXG5cdFx0XHRcdFx0eSA9IGMuc2V0LFxuXHRcdFx0XHRcdGcgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBjLmdldHRlckZvcih0ID8gZCA6IHYpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGEobyhmKSwge1xuXHRcdFx0XHRcdFx0XHRuZXh0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBlKHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRcdGlmICh0KSByZXR1cm4gci5uZXh0SGFuZGxlcigpO1xuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIuZG9uZSA/IHZvaWQgMCA6IHIubmV4dEhhbmRsZXIoKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBsKG4sIHIuZG9uZSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhyb3cgKChyLmRvbmUgPSAhMCksIHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0cmV0dXJuOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBlKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0byA9IHIuaXRlcmF0b3I7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCgoci5kb25lID0gITApLCB0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGkgPSBzKG8sICdyZXR1cm4nKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBpID8gbihpLCBvKSA6IGwodm9pZCAwLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmIChyLmlubmVyKVxuXHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cChyLmlubmVyLml0ZXJhdG9yLCAnbm9ybWFsJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBwKG8sICd0aHJvdycsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwKG8sICdub3JtYWwnKSwgbCh2b2lkIDAsICEwKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bSA9IGcoITApLFxuXHRcdFx0XHRcdGIgPSBnKCExKTtcblx0XHRcdFx0aShiLCBoLCAnSXRlcmF0b3IgSGVscGVyJyksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IGZ1bmN0aW9uIChyLCBuKSB7XG5cdFx0XHRcdFx0XHRcdG4gPyAoKG4uaXRlcmF0b3IgPSByLml0ZXJhdG9yKSwgKG4ubmV4dCA9IHIubmV4dCkpIDogKG4gPSByKSxcblx0XHRcdFx0XHRcdFx0XHQobi50eXBlID0gZSA/IGQgOiB2KSxcblx0XHRcdFx0XHRcdFx0XHQobi5uZXh0SGFuZGxlciA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdChuLmNvdW50ZXIgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQobi5kb25lID0gITEpLFxuXHRcdFx0XHRcdFx0XHRcdHkodGhpcywgbik7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIChyLnByb3RvdHlwZSA9IGUgPyBtIDogYiksIHI7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0MTkzNDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDI2MTUpLFxuXHRcdFx0XHRcdGkgPSByKDM5MzEpLFxuXHRcdFx0XHRcdGEgPSByKDEyMzYpLFxuXHRcdFx0XHRcdHUgPSByKDk5ODUpLFxuXHRcdFx0XHRcdGMgPSByKDk3NCksXG5cdFx0XHRcdFx0cyA9IHIoMTg2OCksXG5cdFx0XHRcdFx0ZiA9IHIoOTM4NSksXG5cdFx0XHRcdFx0bCA9IHIoNTk5NyksXG5cdFx0XHRcdFx0cCA9IHIoNTc3MyksXG5cdFx0XHRcdFx0aCA9IHIoMTg4MCksXG5cdFx0XHRcdFx0diA9IHIoNDIwMSksXG5cdFx0XHRcdFx0ZCA9IHIoOTQ3OCksXG5cdFx0XHRcdFx0eSA9IHIoMjAxMyksXG5cdFx0XHRcdFx0ZyA9IGEuUFJPUEVSLFxuXHRcdFx0XHRcdG0gPSBhLkNPTkZJR1VSQUJMRSxcblx0XHRcdFx0XHRiID0geS5JdGVyYXRvclByb3RvdHlwZSxcblx0XHRcdFx0XHR3ID0geS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLFxuXHRcdFx0XHRcdHggPSB2KCdpdGVyYXRvcicpLFxuXHRcdFx0XHRcdGsgPSAna2V5cycsXG5cdFx0XHRcdFx0UyA9ICd2YWx1ZXMnLFxuXHRcdFx0XHRcdEUgPSAnZW50cmllcycsXG5cdFx0XHRcdFx0TyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCBhLCB2LCB5LCBQKSB7XG5cdFx0XHRcdFx0YyhyLCBlLCBhKTtcblx0XHRcdFx0XHR2YXIgaixcblx0XHRcdFx0XHRcdEwsXG5cdFx0XHRcdFx0XHRfLFxuXHRcdFx0XHRcdFx0SSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0ID09PSB2ICYmIEMpIHJldHVybiBDO1xuXHRcdFx0XHRcdFx0XHRpZiAoIXcgJiYgdCAmJiB0IGluICQpIHJldHVybiAkW3RdO1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIGs6XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBTOlxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgRTpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgcih0aGlzLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IHIodGhpcyk7XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0VCA9IGUgKyAnIEl0ZXJhdG9yJyxcblx0XHRcdFx0XHRcdFIgPSAhMSxcblx0XHRcdFx0XHRcdCQgPSB0LnByb3RvdHlwZSxcblx0XHRcdFx0XHRcdE4gPSAkW3hdIHx8ICRbJ0BAaXRlcmF0b3InXSB8fCAodiAmJiAkW3ZdKSxcblx0XHRcdFx0XHRcdEMgPSAoIXcgJiYgTikgfHwgSSh2KSxcblx0XHRcdFx0XHRcdEEgPSAoJ0FycmF5JyA9PT0gZSAmJiAkLmVudHJpZXMpIHx8IE47XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KEEgJiZcblx0XHRcdFx0XHRcdFx0KGogPSBzKEEuY2FsbChuZXcgdCgpKSkpICE9PSBPYmplY3QucHJvdG90eXBlICYmXG5cdFx0XHRcdFx0XHRcdGoubmV4dCAmJlxuXHRcdFx0XHRcdFx0XHQoaSB8fCBzKGopID09PSBiIHx8IChmID8gZihqLCBiKSA6IHUoalt4XSkgfHwgaChqLCB4LCBPKSksXG5cdFx0XHRcdFx0XHRcdGwoaiwgVCwgITAsICEwKSxcblx0XHRcdFx0XHRcdFx0aSAmJiAoZFtUXSA9IE8pKSxcblx0XHRcdFx0XHRcdGcgJiZcblx0XHRcdFx0XHRcdFx0diA9PT0gUyAmJlxuXHRcdFx0XHRcdFx0XHROICYmXG5cdFx0XHRcdFx0XHRcdE4ubmFtZSAhPT0gUyAmJlxuXHRcdFx0XHRcdFx0XHQoIWkgJiYgbVxuXHRcdFx0XHRcdFx0XHRcdD8gcCgkLCAnbmFtZScsIFMpXG5cdFx0XHRcdFx0XHRcdFx0OiAoKFIgPSAhMCksXG5cdFx0XHRcdFx0XHRcdFx0XHQoQyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG8oTiwgdGhpcyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSkpLFxuXHRcdFx0XHRcdFx0dilcblx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdCgoTCA9IHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXM6IEkoUyksXG5cdFx0XHRcdFx0XHRcdFx0a2V5czogeSA/IEMgOiBJKGspLFxuXHRcdFx0XHRcdFx0XHRcdGVudHJpZXM6IEkoRSksXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRQKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRmb3IgKF8gaW4gTCkgKHcgfHwgUiB8fCAhKF8gaW4gJCkpICYmIGgoJCwgXywgTFtfXSk7XG5cdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dGFyZ2V0OiBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvdG86ICEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yY2VkOiB3IHx8IFIsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRMXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuIChpICYmICFQKSB8fCAkW3hdID09PSBDIHx8IGgoJCwgeCwgQywge25hbWU6IHZ9KSwgKGRbZV0gPSBDKSwgTDtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyMDEzOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0YSA9IHIoMzY4OSksXG5cdFx0XHRcdFx0dSA9IHIoOTk4NSksXG5cdFx0XHRcdFx0YyA9IHIoODk5OSksXG5cdFx0XHRcdFx0cyA9IHIoNTM5MSksXG5cdFx0XHRcdFx0ZiA9IHIoMTg2OCksXG5cdFx0XHRcdFx0bCA9IHIoMTg4MCksXG5cdFx0XHRcdFx0cCA9IHIoNDIwMSksXG5cdFx0XHRcdFx0aCA9IHIoMzkzMSksXG5cdFx0XHRcdFx0diA9IHAoJ2l0ZXJhdG9yJyksXG5cdFx0XHRcdFx0ZCA9ICExO1xuXHRcdFx0XHRbXS5rZXlzICYmICgnbmV4dCcgaW4gKGkgPSBbXS5rZXlzKCkpID8gKG8gPSBmKGYoaSkpKSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiAobiA9IG8pIDogKGQgPSAhMCkpLFxuXHRcdFx0XHRcdCFjKG4pIHx8XG5cdFx0XHRcdFx0YShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHt9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIG5bdl0uY2FsbCh0KSAhPT0gdDtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0PyAobiA9IHt9KVxuXHRcdFx0XHRcdFx0OiBoICYmIChuID0gcyhuKSksXG5cdFx0XHRcdFx0dShuW3ZdKSB8fFxuXHRcdFx0XHRcdFx0bChuLCB2LCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRcdEl0ZXJhdG9yUHJvdG90eXBlOiBuLFxuXHRcdFx0XHRcdFx0QlVHR1lfU0FGQVJJX0lURVJBVE9SUzogZCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ5NDc4OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7fTtcblx0XHRcdH0sXG5cdFx0XHQ2MzEwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzEyNik7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG4odC5sZW5ndGgpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDg3MDI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcig5OTg1KSxcblx0XHRcdFx0XHRhID0gcig2ODEyKSxcblx0XHRcdFx0XHR1ID0gcig3Njk3KSxcblx0XHRcdFx0XHRjID0gcigxMjM2KS5DT05GSUdVUkFCTEUsXG5cdFx0XHRcdFx0cyA9IHIoNjczOCksXG5cdFx0XHRcdFx0ZiA9IHIoNjE4KSxcblx0XHRcdFx0XHRsID0gZi5lbmZvcmNlLFxuXHRcdFx0XHRcdHAgPSBmLmdldCxcblx0XHRcdFx0XHRoID0gU3RyaW5nLFxuXHRcdFx0XHRcdHYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksXG5cdFx0XHRcdFx0ZCA9IG4oJycuc2xpY2UpLFxuXHRcdFx0XHRcdHkgPSBuKCcnLnJlcGxhY2UpLFxuXHRcdFx0XHRcdGcgPSBuKFtdLmpvaW4pLFxuXHRcdFx0XHRcdG0gPVxuXHRcdFx0XHRcdFx0dSAmJlxuXHRcdFx0XHRcdFx0IW8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gOCAhPT0gdihmdW5jdGlvbiAoKSB7fSwgJ2xlbmd0aCcsIHt2YWx1ZTogOH0pLmxlbmd0aDtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGIgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyksXG5cdFx0XHRcdFx0dyA9ICh0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0J1N5bWJvbCgnID09PSBkKGgoZSksIDAsIDcpICYmIChlID0gJ1snICsgeShoKGUpLCAvXlN5bWJvbFxcKChbXildKilcXCkvLCAnJDEnKSArICddJyksXG5cdFx0XHRcdFx0XHRcdHIgJiYgci5nZXR0ZXIgJiYgKGUgPSAnZ2V0ICcgKyBlKSxcblx0XHRcdFx0XHRcdFx0ciAmJiByLnNldHRlciAmJiAoZSA9ICdzZXQgJyArIGUpLFxuXHRcdFx0XHRcdFx0XHQoIWEodCwgJ25hbWUnKSB8fCAoYyAmJiB0Lm5hbWUgIT09IGUpKSAmJlxuXHRcdFx0XHRcdFx0XHRcdCh1ID8gdih0LCAnbmFtZScsIHt2YWx1ZTogZSwgY29uZmlndXJhYmxlOiAhMH0pIDogKHQubmFtZSA9IGUpKSxcblx0XHRcdFx0XHRcdFx0bSAmJiByICYmIGEociwgJ2FyaXR5JykgJiYgdC5sZW5ndGggIT09IHIuYXJpdHkgJiYgdih0LCAnbGVuZ3RoJywge3ZhbHVlOiByLmFyaXR5fSk7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyICYmIGEociwgJ2NvbnN0cnVjdG9yJykgJiYgci5jb25zdHJ1Y3RvclxuXHRcdFx0XHRcdFx0XHRcdD8gdSAmJiB2KHQsICdwcm90b3R5cGUnLCB7d3JpdGFibGU6ICExfSlcblx0XHRcdFx0XHRcdFx0XHQ6IHQucHJvdG90eXBlICYmICh0LnByb3RvdHlwZSA9IHZvaWQgMCk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdFx0dmFyIG4gPSBsKHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGEobiwgJ3NvdXJjZScpIHx8IChuLnNvdXJjZSA9IGcoYiwgJ3N0cmluZycgPT0gdHlwZW9mIGUgPyBlIDogJycpKSwgdDtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gdyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIChpKHRoaXMpICYmIHAodGhpcykuc291cmNlKSB8fCBzKHRoaXMpO1xuXHRcdFx0XHR9LCAndG9TdHJpbmcnKTtcblx0XHRcdH0sXG5cdFx0XHQzOTE0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IE1hcC5wcm90b3R5cGU7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRNYXA6IE1hcCxcblx0XHRcdFx0XHRzZXQ6IG4oby5zZXQpLFxuXHRcdFx0XHRcdGdldDogbihvLmdldCksXG5cdFx0XHRcdFx0aGFzOiBuKG8uaGFzKSxcblx0XHRcdFx0XHRyZW1vdmU6IG4oby5kZWxldGUpLFxuXHRcdFx0XHRcdHByb3RvOiBvLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDYxMzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDY3MDQpLFxuXHRcdFx0XHRcdGkgPSByKDM5MTQpLFxuXHRcdFx0XHRcdGEgPSBpLk1hcCxcblx0XHRcdFx0XHR1ID0gaS5wcm90byxcblx0XHRcdFx0XHRjID0gbih1LmZvckVhY2gpLFxuXHRcdFx0XHRcdHMgPSBuKHUuZW50cmllcyksXG5cdFx0XHRcdFx0ZiA9IHMobmV3IGEoKSkubmV4dDtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gclxuXHRcdFx0XHRcdFx0PyBvKFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZXJhdG9yOiBzKHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0bmV4dDogZixcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZSh0WzFdLCB0WzBdKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdDogYyh0LCBlKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4ODI4OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR2YXIgZSA9IE1hdGguY2VpbCxcblx0XHRcdFx0XHRyID0gTWF0aC5mbG9vcjtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHRNYXRoLnRydW5jIHx8XG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gK3Q7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKG4gPiAwID8gciA6IGUpKG4pO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MjMxOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0YSxcblx0XHRcdFx0XHR1LFxuXHRcdFx0XHRcdGMgPSByKDkwMzcpLFxuXHRcdFx0XHRcdHMgPSByKDQwNzEpLFxuXHRcdFx0XHRcdGYgPSByKDI0NzQpLmYsXG5cdFx0XHRcdFx0bCA9IHIoOTg4Nikuc2V0LFxuXHRcdFx0XHRcdHAgPSByKDQ0MTApLFxuXHRcdFx0XHRcdGggPSByKDQ3NjQpLFxuXHRcdFx0XHRcdHYgPSByKDMyMjEpLFxuXHRcdFx0XHRcdGQgPSByKDc0ODYpLFxuXHRcdFx0XHRcdHkgPSByKDgwNiksXG5cdFx0XHRcdFx0ZyA9IGMuTXV0YXRpb25PYnNlcnZlciB8fCBjLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsXG5cdFx0XHRcdFx0bSA9IGMuZG9jdW1lbnQsXG5cdFx0XHRcdFx0YiA9IGMucHJvY2Vzcyxcblx0XHRcdFx0XHR3ID0gYy5Qcm9taXNlLFxuXHRcdFx0XHRcdHggPSBmKGMsICdxdWV1ZU1pY3JvdGFzaycpLFxuXHRcdFx0XHRcdGsgPSB4ICYmIHgudmFsdWU7XG5cdFx0XHRcdGlmICghaykge1xuXHRcdFx0XHRcdHZhciBTID0gbmV3IHAoKSxcblx0XHRcdFx0XHRcdEUgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0LCBlO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHkgJiYgKHQgPSBiLmRvbWFpbikgJiYgdC5leGl0KCk7IChlID0gUy5nZXQoKSk7IClcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRocm93IChTLmhlYWQgJiYgbigpLCB0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHQgJiYgdC5lbnRlcigpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRoIHx8IHkgfHwgZCB8fCAhZyB8fCAhbVxuXHRcdFx0XHRcdFx0PyAhdiAmJiB3ICYmIHcucmVzb2x2ZVxuXHRcdFx0XHRcdFx0XHQ/ICgoKGEgPSB3LnJlc29sdmUodm9pZCAwKSkuY29uc3RydWN0b3IgPSB3KSxcblx0XHRcdFx0XHRcdFx0XHQodSA9IHMoYS50aGVuLCBhKSksXG5cdFx0XHRcdFx0XHRcdFx0KG4gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1KEUpO1xuXHRcdFx0XHRcdFx0XHRcdH0pKVxuXHRcdFx0XHRcdFx0XHQ6IHlcblx0XHRcdFx0XHRcdFx0XHQ/IChuID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRiLm5leHRUaWNrKEUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQ6ICgobCA9IHMobCwgYykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KG4gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGwoRSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSlcblx0XHRcdFx0XHRcdDogKChvID0gITApLFxuXHRcdFx0XHRcdFx0XHQoaSA9IG0uY3JlYXRlVGV4dE5vZGUoJycpKSxcblx0XHRcdFx0XHRcdFx0bmV3IGcoRSkub2JzZXJ2ZShpLCB7Y2hhcmFjdGVyRGF0YTogITB9KSxcblx0XHRcdFx0XHRcdFx0KG4gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0aS5kYXRhID0gbyA9ICFvO1xuXHRcdFx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdFx0XHQoayA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFMuaGVhZCB8fCBuKCksIFMuYWRkKHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dC5leHBvcnRzID0gaztcblx0XHRcdH0sXG5cdFx0XHQ4NzQyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNTA5KSxcblx0XHRcdFx0XHRvID0gVHlwZUVycm9yLFxuXHRcdFx0XHRcdGkgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUsIHI7XG5cdFx0XHRcdFx0XHQodGhpcy5wcm9taXNlID0gbmV3IHQoZnVuY3Rpb24gKHQsIG4pIHtcblx0XHRcdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gZSB8fCB2b2lkIDAgIT09IHIpIHRocm93IG5ldyBvKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuXHRcdFx0XHRcdFx0XHQoZSA9IHQpLCAociA9IG4pO1xuXHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdFx0XHQodGhpcy5yZXNvbHZlID0gbihlKSksXG5cdFx0XHRcdFx0XHRcdCh0aGlzLnJlamVjdCA9IG4ocikpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cy5mID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gbmV3IGkodCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0Mzg0MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQzMjcpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHJldHVybiB2b2lkIDAgPT09IHQgPyAoYXJndW1lbnRzLmxlbmd0aCA8IDIgPyAnJyA6IGUpIDogbih0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyMTI0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMTI0NSksXG5cdFx0XHRcdFx0byA9IFR5cGVFcnJvcjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRpZiAobih0KSkgdGhyb3cgbmV3IG8oXCJUaGUgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3VsYXIgZXhwcmVzc2lvbnNcIik7XG5cdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTM5NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDI2MTUpLFxuXHRcdFx0XHRcdGEgPSByKDM2ODkpLFxuXHRcdFx0XHRcdHUgPSByKDMwMCksXG5cdFx0XHRcdFx0YyA9IHIoNzUxOCksXG5cdFx0XHRcdFx0cyA9IHIoOTU1NiksXG5cdFx0XHRcdFx0ZiA9IHIoNjkwKSxcblx0XHRcdFx0XHRsID0gcig0NDEzKSxcblx0XHRcdFx0XHRwID0gT2JqZWN0LmFzc2lnbixcblx0XHRcdFx0XHRoID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LFxuXHRcdFx0XHRcdHYgPSBvKFtdLmNvbmNhdCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0IXAgfHxcblx0XHRcdFx0XHRhKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0biAmJlxuXHRcdFx0XHRcdFx0XHQxICE9PVxuXHRcdFx0XHRcdFx0XHRcdHAoXG5cdFx0XHRcdFx0XHRcdFx0XHR7YjogMX0sXG5cdFx0XHRcdFx0XHRcdFx0XHRwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRoKHt9LCAnYScsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbnVtZXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGgodGhpcywgJ2InLCB7dmFsdWU6IDMsIGVudW1lcmFibGU6ICExfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHtiOiAyfVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdCkuYlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gITA7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHt9LFxuXHRcdFx0XHRcdFx0XHRlID0ge30sXG5cdFx0XHRcdFx0XHRcdHIgPSBTeW1ib2woJ2Fzc2lnbiBkZXRlY3Rpb24nKSxcblx0XHRcdFx0XHRcdFx0byA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQodFtyXSA9IDcpLFxuXHRcdFx0XHRcdFx0XHRvLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0ZVt0XSA9IHQ7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHQ3ICE9PSBwKHt9LCB0KVtyXSB8fCB1KHAoe30sIGUpKS5qb2luKCcnKSAhPT0gb1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSBmKHQpLCBvID0gYXJndW1lbnRzLmxlbmd0aCwgYSA9IDEsIHAgPSBjLmYsIGggPSBzLmY7IG8gPiBhOyApXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZCwgeSA9IGwoYXJndW1lbnRzW2ErK10pLCBnID0gcCA/IHYodSh5KSwgcCh5KSkgOiB1KHkpLCBtID0gZy5sZW5ndGgsIGIgPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRtID4gYjtcblxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoZCA9IGdbYisrXSksIChuICYmICFpKGgsIHksIGQpKSB8fCAocltkXSA9IHlbZF0pO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQ6IHA7XG5cdFx0XHR9LFxuXHRcdFx0NTM5MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byA9IHIoNTAyNyksXG5cdFx0XHRcdFx0aSA9IHIoODkyMCksXG5cdFx0XHRcdFx0YSA9IHIoMjczOSksXG5cdFx0XHRcdFx0dSA9IHIoNzI0OCksXG5cdFx0XHRcdFx0YyA9IHIoMjY4OCksXG5cdFx0XHRcdFx0cyA9IHIoNjQyMCksXG5cdFx0XHRcdFx0ZiA9IHIoMjcxMyksXG5cdFx0XHRcdFx0bCA9ICdwcm90b3R5cGUnLFxuXHRcdFx0XHRcdHAgPSAnc2NyaXB0Jyxcblx0XHRcdFx0XHRoID0gZignSUVfUFJPVE8nKSxcblx0XHRcdFx0XHR2ID0gZnVuY3Rpb24gKCkge30sXG5cdFx0XHRcdFx0ZCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJzwnICsgcCArICc+JyArIHQgKyAnPC8nICsgcCArICc+Jztcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHkgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dC53cml0ZShkKCcnKSksIHQuY2xvc2UoKTtcblx0XHRcdFx0XHRcdHZhciBlID0gdC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuICh0ID0gbnVsbCksIGU7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0biA9IG5ldyBBY3RpdmVYT2JqZWN0KCdodG1sZmlsZScpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0XHRcdHZhciB0LCBlLCByO1xuXHRcdFx0XHRcdFx0ZyA9XG5cdFx0XHRcdFx0XHRcdCd1bmRlZmluZWQnICE9IHR5cGVvZiBkb2N1bWVudFxuXHRcdFx0XHRcdFx0XHRcdD8gZG9jdW1lbnQuZG9tYWluICYmIG5cblx0XHRcdFx0XHRcdFx0XHRcdD8geShuKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiAoKGUgPSBzKCdpZnJhbWUnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gJ2phdmEnICsgcCArICc6JyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjLmFwcGVuZENoaWxkKGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5zcmMgPSBTdHJpbmcocikpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQodCA9IGUuY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LndyaXRlKGQoJ2RvY3VtZW50LkY9T2JqZWN0JykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNsb3NlKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQuRilcblx0XHRcdFx0XHRcdFx0XHQ6IHkobik7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBvID0gYS5sZW5ndGg7IG8tLTsgKSBkZWxldGUgZ1tsXVthW29dXTtcblx0XHRcdFx0XHRcdHJldHVybiBnKCk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0KHVbaF0gPSAhMCksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0XHRPYmplY3QuY3JlYXRlIHx8XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgcjtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRudWxsICE9PSB0ID8gKCh2W2xdID0gbyh0KSksIChyID0gbmV3IHYoKSksICh2W2xdID0gbnVsbCksIChyW2hdID0gdCkpIDogKHIgPSBnKCkpLFxuXHRcdFx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gZSA/IHIgOiBpLmYociwgZSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDg5MjA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcig1NjQ4KSxcblx0XHRcdFx0XHRpID0gcigyNTYwKSxcblx0XHRcdFx0XHRhID0gcig1MDI3KSxcblx0XHRcdFx0XHR1ID0gcig1MjkwKSxcblx0XHRcdFx0XHRjID0gcigzMDApO1xuXHRcdFx0XHRlLmYgPVxuXHRcdFx0XHRcdG4gJiYgIW9cblx0XHRcdFx0XHRcdD8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXNcblx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRhKHQpO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHIsIG4gPSB1KGUpLCBvID0gYyhlKSwgcyA9IG8ubGVuZ3RoLCBmID0gMDsgcyA+IGY7IClcblx0XHRcdFx0XHRcdFx0XHRcdGkuZih0LCAociA9IG9bZisrXSksIG5bcl0pO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDI1NjA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcig4NTA2KSxcblx0XHRcdFx0XHRpID0gcig1NjQ4KSxcblx0XHRcdFx0XHRhID0gcig1MDI3KSxcblx0XHRcdFx0XHR1ID0gcig4MzYwKSxcblx0XHRcdFx0XHRjID0gVHlwZUVycm9yLFxuXHRcdFx0XHRcdHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksXG5cdFx0XHRcdFx0ZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG5cdFx0XHRcdFx0bCA9ICdlbnVtZXJhYmxlJyxcblx0XHRcdFx0XHRwID0gJ2NvbmZpZ3VyYWJsZScsXG5cdFx0XHRcdFx0aCA9ICd3cml0YWJsZSc7XG5cdFx0XHRcdGUuZiA9IG5cblx0XHRcdFx0XHQ/IGlcblx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQoYSh0KSxcblx0XHRcdFx0XHRcdFx0XHRcdChlID0gdShlKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRhKHIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgdCAmJiAncHJvdG90eXBlJyA9PT0gZSAmJiAndmFsdWUnIGluIHIgJiYgaCBpbiByICYmICFyW2hdKVxuXHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSBmKHQsIGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0biAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuW2hdICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgodFtlXSA9IHIudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQociA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25maWd1cmFibGU6IHAgaW4gciA/IHJbcF0gOiBuW3BdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVudW1lcmFibGU6IGwgaW4gciA/IHJbbF0gOiBuW2xdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyaXRhYmxlOiAhMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcyh0LCBlLCByKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0OiBzXG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0XHRpZiAoKGEodCksIChlID0gdShlKSksIGEociksIG8pKVxuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcyh0LCBlLCByKTtcblx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdFx0XHRpZiAoJ2dldCcgaW4gciB8fCAnc2V0JyBpbiByKSB0aHJvdyBuZXcgYygnQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICd2YWx1ZScgaW4gciAmJiAodFtlXSA9IHIudmFsdWUpLCB0O1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyNDc0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzY5NyksXG5cdFx0XHRcdFx0byA9IHIoMjYxNSksXG5cdFx0XHRcdFx0aSA9IHIoOTU1NiksXG5cdFx0XHRcdFx0YSA9IHIoNTY4NCksXG5cdFx0XHRcdFx0dSA9IHIoNTI5MCksXG5cdFx0XHRcdFx0YyA9IHIoODM2MCksXG5cdFx0XHRcdFx0cyA9IHIoNjgxMiksXG5cdFx0XHRcdFx0ZiA9IHIoODUwNiksXG5cdFx0XHRcdFx0bCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cdFx0XHRcdGUuZiA9IG5cblx0XHRcdFx0XHQ/IGxcblx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgoKHQgPSB1KHQpKSwgKGUgPSBjKGUpKSwgZikpXG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBsKHQsIGUpO1xuXHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0XHRcdGlmIChzKHQsIGUpKSByZXR1cm4gYSghbyhpLmYsIHQsIGUpLCB0W2VdKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjA2MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDY2NDgpLFxuXHRcdFx0XHRcdG8gPSByKDUyOTApLFxuXHRcdFx0XHRcdGkgPSByKDI3NDEpLmYsXG5cdFx0XHRcdFx0YSA9IHIoOTAxNSksXG5cdFx0XHRcdFx0dSA9XG5cdFx0XHRcdFx0XHQnb2JqZWN0JyA9PSB0eXBlb2Ygd2luZG93ICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuXHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdylcblx0XHRcdFx0XHRcdFx0OiBbXTtcblx0XHRcdFx0dC5leHBvcnRzLmYgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiB1ICYmICdXaW5kb3cnID09PSBuKHQpXG5cdFx0XHRcdFx0XHQ/IChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh0KTtcblx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYSh1KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pKHQpXG5cdFx0XHRcdFx0XHQ6IGkobyh0KSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0Mjc0MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQ5NDgpLFxuXHRcdFx0XHRcdG8gPSByKDI3MzkpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXHRcdFx0XHRlLmYgPVxuXHRcdFx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8XG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBuKHQsIG8pO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzUxODogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0ZS5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblx0XHRcdH0sXG5cdFx0XHQxODY4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjgxMiksXG5cdFx0XHRcdFx0byA9IHIoOTk4NSksXG5cdFx0XHRcdFx0aSA9IHIoNjkwKSxcblx0XHRcdFx0XHRhID0gcigyNzEzKSxcblx0XHRcdFx0XHR1ID0gcigxNzQ4KSxcblx0XHRcdFx0XHRjID0gYSgnSUVfUFJPVE8nKSxcblx0XHRcdFx0XHRzID0gT2JqZWN0LFxuXHRcdFx0XHRcdGYgPSBzLnByb3RvdHlwZTtcblx0XHRcdFx0dC5leHBvcnRzID0gdVxuXHRcdFx0XHRcdD8gcy5nZXRQcm90b3R5cGVPZlxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKHQpO1xuXHRcdFx0XHRcdFx0XHRpZiAobihlLCBjKSkgcmV0dXJuIGVbY107XG5cdFx0XHRcdFx0XHRcdHZhciByID0gZS5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8ocikgJiYgZSBpbnN0YW5jZW9mIHIgPyByLnByb3RvdHlwZSA6IGUgaW5zdGFuY2VvZiBzID8gZiA6IG51bGw7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDExMjk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KSxcblx0XHRcdFx0XHRvID0gcig4OTk5KSxcblx0XHRcdFx0XHRpID0gcig2NjQ4KSxcblx0XHRcdFx0XHRhID0gcigxNjU1KSxcblx0XHRcdFx0XHR1ID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSxcblx0XHRcdFx0XHRjID0gbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR1KDEpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdGMgfHwgYVxuXHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAhIW8odCkgJiYgKCFhIHx8ICdBcnJheUJ1ZmZlcicgIT09IGkodCkpICYmICghdSB8fCB1KHQpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0OiB1O1xuXHRcdFx0fSxcblx0XHRcdDM2MjI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KTtcblx0XHRcdFx0dC5leHBvcnRzID0gbih7fS5pc1Byb3RvdHlwZU9mKTtcblx0XHRcdH0sXG5cdFx0XHQ0OTQ4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IHIoNjgxMiksXG5cdFx0XHRcdFx0aSA9IHIoNTI5MCksXG5cdFx0XHRcdFx0YSA9IHIoNDMyOCkuaW5kZXhPZixcblx0XHRcdFx0XHR1ID0gcig3MjQ4KSxcblx0XHRcdFx0XHRjID0gbihbXS5wdXNoKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHR2YXIgcixcblx0XHRcdFx0XHRcdG4gPSBpKHQpLFxuXHRcdFx0XHRcdFx0cyA9IDAsXG5cdFx0XHRcdFx0XHRmID0gW107XG5cdFx0XHRcdFx0Zm9yIChyIGluIG4pICFvKHUsIHIpICYmIG8obiwgcikgJiYgYyhmLCByKTtcblx0XHRcdFx0XHRmb3IgKDsgZS5sZW5ndGggPiBzOyApIG8obiwgKHIgPSBlW3MrK10pKSAmJiAofmEoZiwgcikgfHwgYyhmLCByKSk7XG5cdFx0XHRcdFx0cmV0dXJuIGY7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzAwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDk0OCksXG5cdFx0XHRcdFx0byA9IHIoMjczOSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0T2JqZWN0LmtleXMgfHxcblx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG4odCwgbyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ5NTU2OiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHR2YXIgciA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuXHRcdFx0XHRcdG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHRcdFx0XHRcdG8gPVxuXHRcdFx0XHRcdFx0biAmJlxuXHRcdFx0XHRcdFx0IXIuY2FsbChcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdDE6IDIsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdDFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdGUuZiA9IG9cblx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gbih0aGlzLCB0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICEhZSAmJiBlLmVudW1lcmFibGU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0OiByO1xuXHRcdFx0fSxcblx0XHRcdDkzODU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNzQzKSxcblx0XHRcdFx0XHRvID0gcig1MDI3KSxcblx0XHRcdFx0XHRpID0gcigzNTUwKTtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHRPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcblx0XHRcdFx0XHQoJ19fcHJvdG9fXycgaW4ge31cblx0XHRcdFx0XHRcdD8gKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgdCxcblx0XHRcdFx0XHRcdFx0XHRcdGUgPSAhMSxcblx0XHRcdFx0XHRcdFx0XHRcdHIgPSB7fTtcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0KHQgPSBuKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nLCAnc2V0JykpKHIsIFtdKSwgKGUgPSByIGluc3RhbmNlb2YgQXJyYXkpO1xuXHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChyLCBuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbyhyKSwgaShuKSwgZSA/IHQociwgbikgOiAoci5fX3Byb3RvX18gPSBuKSwgcjtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9KSgpXG5cdFx0XHRcdFx0XHQ6IHZvaWQgMCk7XG5cdFx0XHR9LFxuXHRcdFx0OTQxOTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDM2ODkpLFxuXHRcdFx0XHRcdGkgPSByKDg4NDQpLFxuXHRcdFx0XHRcdGEgPSByKDE4NjgpLFxuXHRcdFx0XHRcdHUgPSByKDMwMCksXG5cdFx0XHRcdFx0YyA9IHIoNTI5MCksXG5cdFx0XHRcdFx0cyA9IGkocig5NTU2KS5mKSxcblx0XHRcdFx0XHRmID0gaShbXS5wdXNoKSxcblx0XHRcdFx0XHRsID1cblx0XHRcdFx0XHRcdG4gJiZcblx0XHRcdFx0XHRcdG8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAodFsyXSA9IDIpLCAhcyh0LCAyKTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHAgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIsIG8gPSBjKGUpLCBpID0gdShvKSwgcCA9IGwgJiYgbnVsbCA9PT0gYShvKSwgaCA9IGkubGVuZ3RoLCB2ID0gMCwgZCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdGggPiB2O1xuXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQociA9IGlbdisrXSksIChuICYmICEocCA/IHIgaW4gbyA6IHMobywgcikpKSB8fCBmKGQsIHQgPyBbciwgb1tyXV0gOiBvW3JdKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGQ7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRlbnRyaWVzOiBwKCEwKSxcblx0XHRcdFx0XHR2YWx1ZXM6IHAoITEpLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDUwNzM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzMDQzKSxcblx0XHRcdFx0XHRvID0gcig5MjYpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuXG5cdFx0XHRcdFx0PyB7fS50b1N0cmluZ1xuXHRcdFx0XHRcdDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJ1tvYmplY3QgJyArIG8odGhpcykgKyAnXSc7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDU4OTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig5OTg1KSxcblx0XHRcdFx0XHRpID0gcig4OTk5KSxcblx0XHRcdFx0XHRhID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHZhciByLCB1O1xuXHRcdFx0XHRcdGlmICgnc3RyaW5nJyA9PT0gZSAmJiBvKChyID0gdC50b1N0cmluZykpICYmICFpKCh1ID0gbihyLCB0KSkpKSByZXR1cm4gdTtcblx0XHRcdFx0XHRpZiAobygociA9IHQudmFsdWVPZikpICYmICFpKCh1ID0gbihyLCB0KSkpKSByZXR1cm4gdTtcblx0XHRcdFx0XHRpZiAoJ3N0cmluZycgIT09IGUgJiYgbygociA9IHQudG9TdHJpbmcpKSAmJiAhaSgodSA9IG4ociwgdCkpKSkgcmV0dXJuIHU7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IGEoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0OTE1MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDYwNTgpLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDI3NDEpLFxuXHRcdFx0XHRcdGEgPSByKDc1MTgpLFxuXHRcdFx0XHRcdHUgPSByKDUwMjcpLFxuXHRcdFx0XHRcdGMgPSBvKFtdLmNvbmNhdCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0bignUmVmbGVjdCcsICdvd25LZXlzJykgfHxcblx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBpLmYodSh0KSksXG5cdFx0XHRcdFx0XHRcdHIgPSBhLmY7XG5cdFx0XHRcdFx0XHRyZXR1cm4gciA/IGMoZSwgcih0KSkgOiBlO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjY3NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDY4MTIpLFxuXHRcdFx0XHRcdGkgPSBTeW50YXhFcnJvcixcblx0XHRcdFx0XHRhID0gcGFyc2VJbnQsXG5cdFx0XHRcdFx0dSA9IFN0cmluZy5mcm9tQ2hhckNvZGUsXG5cdFx0XHRcdFx0YyA9IG4oJycuY2hhckF0KSxcblx0XHRcdFx0XHRzID0gbignJy5zbGljZSksXG5cdFx0XHRcdFx0ZiA9IG4oLy4vLmV4ZWMpLFxuXHRcdFx0XHRcdGwgPSB7XG5cdFx0XHRcdFx0XHQnXFxcXFwiJzogJ1wiJyxcblx0XHRcdFx0XHRcdCdcXFxcXFxcXCc6ICdcXFxcJyxcblx0XHRcdFx0XHRcdCdcXFxcLyc6ICcvJyxcblx0XHRcdFx0XHRcdCdcXFxcYic6ICdcXGInLFxuXHRcdFx0XHRcdFx0J1xcXFxmJzogJ1xcZicsXG5cdFx0XHRcdFx0XHQnXFxcXG4nOiAnXFxuJyxcblx0XHRcdFx0XHRcdCdcXFxccic6ICdcXHInLFxuXHRcdFx0XHRcdFx0J1xcXFx0JzogJ1xcdCcsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwID0gL15bXFxkYS1mXXs0fSQvaSxcblx0XHRcdFx0XHRoID0gL15bXFx1MDAwMC1cXHUwMDFGXSQvO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdGZvciAodmFyIHIgPSAhMCwgbiA9ICcnOyBlIDwgdC5sZW5ndGg7ICkge1xuXHRcdFx0XHRcdFx0dmFyIHYgPSBjKHQsIGUpO1xuXHRcdFx0XHRcdFx0aWYgKCdcXFxcJyA9PT0gdikge1xuXHRcdFx0XHRcdFx0XHR2YXIgZCA9IHModCwgZSwgZSArIDIpO1xuXHRcdFx0XHRcdFx0XHRpZiAobyhsLCBkKSkgKG4gKz0gbFtkXSksIChlICs9IDIpO1xuXHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ1xcXFx1JyAhPT0gZCkgdGhyb3cgbmV3IGkoJ1Vua25vd24gZXNjYXBlIHNlcXVlbmNlOiBcIicgKyBkICsgJ1wiJyk7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHkgPSBzKHQsIChlICs9IDIpLCBlICsgNCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFmKHAsIHkpKSB0aHJvdyBuZXcgaSgnQmFkIFVuaWNvZGUgZXNjYXBlIGF0OiAnICsgZSk7XG5cdFx0XHRcdFx0XHRcdFx0KG4gKz0gdShhKHksIDE2KSkpLCAoZSArPSA0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKCdcIicgPT09IHYpIHtcblx0XHRcdFx0XHRcdFx0XHQociA9ICExKSwgZSsrO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChmKGgsIHYpKSB0aHJvdyBuZXcgaSgnQmFkIGNvbnRyb2wgY2hhcmFjdGVyIGluIHN0cmluZyBsaXRlcmFsIGF0OiAnICsgZSk7XG5cdFx0XHRcdFx0XHRcdChuICs9IHYpLCBlKys7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChyKSB0aHJvdyBuZXcgaSgnVW50ZXJtaW5hdGVkIHN0cmluZyBhdDogJyArIGUpO1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogbixcblx0XHRcdFx0XHRcdGVuZDogZSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDQ5NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDkwMzcpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuO1xuXHRcdFx0fSxcblx0XHRcdDkzMDI6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdGVycm9yOiAhMSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHQoKSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0ZXJyb3I6ICEwLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDcwNzM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gcig3OTE5KSxcblx0XHRcdFx0XHRpID0gcig5OTg1KSxcblx0XHRcdFx0XHRhID0gcig1MjY2KSxcblx0XHRcdFx0XHR1ID0gcig2NzM4KSxcblx0XHRcdFx0XHRjID0gcig0MjAxKSxcblx0XHRcdFx0XHRzID0gcigyNTMyKSxcblx0XHRcdFx0XHRmID0gcig4NTYzKSxcblx0XHRcdFx0XHRsID0gcigzOTMxKSxcblx0XHRcdFx0XHRwID0gcigzNjE1KSxcblx0XHRcdFx0XHRoID0gbyAmJiBvLnByb3RvdHlwZSxcblx0XHRcdFx0XHR2ID0gYygnc3BlY2llcycpLFxuXHRcdFx0XHRcdGQgPSAhMSxcblx0XHRcdFx0XHR5ID0gaShuLlByb21pc2VSZWplY3Rpb25FdmVudCksXG5cdFx0XHRcdFx0ZyA9IGEoJ1Byb21pc2UnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHUobyksXG5cdFx0XHRcdFx0XHRcdGUgPSB0ICE9PSBTdHJpbmcobyk7XG5cdFx0XHRcdFx0XHRpZiAoIWUgJiYgNjYgPT09IHApIHJldHVybiAhMDtcblx0XHRcdFx0XHRcdGlmIChsICYmICghaC5jYXRjaCB8fCAhaC5maW5hbGx5KSkgcmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0aWYgKCFwIHx8IHAgPCA1MSB8fCAhL25hdGl2ZSBjb2RlLy50ZXN0KHQpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gbmV3IG8oZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHQoMSk7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0biA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge31cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0aWYgKCgoKHIuY29uc3RydWN0b3IgPSB7fSlbdl0gPSBuKSwgIShkID0gci50aGVuKGZ1bmN0aW9uICgpIHt9KSBpbnN0YW5jZW9mIG4pKSkgcmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuICFlICYmIChzIHx8IGYpICYmICF5O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0Q09OU1RSVUNUT1I6IGcsXG5cdFx0XHRcdFx0UkVKRUNUSU9OX0VWRU5UOiB5LFxuXHRcdFx0XHRcdFNVQkNMQVNTSU5HOiBkLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDc5MTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KTtcblx0XHRcdFx0dC5leHBvcnRzID0gbi5Qcm9taXNlO1xuXHRcdFx0fSxcblx0XHRcdDI5NDU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig1MDI3KSxcblx0XHRcdFx0XHRvID0gcig4OTk5KSxcblx0XHRcdFx0XHRpID0gcig4NzQyKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoKG4odCksIG8oZSkgJiYgZS5jb25zdHJ1Y3RvciA9PT0gdCkpIHJldHVybiBlO1xuXHRcdFx0XHRcdHZhciByID0gaS5mKHQpO1xuXHRcdFx0XHRcdHJldHVybiAoMCwgci5yZXNvbHZlKShlKSwgci5wcm9taXNlO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDU2MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc5MTkpLFxuXHRcdFx0XHRcdG8gPSByKDY0MzEpLFxuXHRcdFx0XHRcdGkgPSByKDcwNzMpLkNPTlNUUlVDVE9SO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdGkgfHxcblx0XHRcdFx0XHQhbyhmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0bi5hbGwodCkudGhlbih2b2lkIDAsIGZ1bmN0aW9uICgpIHt9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ4MDU1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjU2MCkuZjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyIGluIHQgfHxcblx0XHRcdFx0XHRcdG4odCwgciwge1xuXHRcdFx0XHRcdFx0XHRjb25maWd1cmFibGU6ICEwLFxuXHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZVtyXTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0c2V0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdGVbcl0gPSB0O1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NDQxMDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dmFyIGUgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0KHRoaXMuaGVhZCA9IG51bGwpLCAodGhpcy50YWlsID0gbnVsbCk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdChlLnByb3RvdHlwZSA9IHtcblx0XHRcdFx0XHRhZGQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRpdGVtOiB0LFxuXHRcdFx0XHRcdFx0XHRcdG5leHQ6IG51bGwsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHIgPSB0aGlzLnRhaWw7XG5cdFx0XHRcdFx0XHRyID8gKHIubmV4dCA9IGUpIDogKHRoaXMuaGVhZCA9IGUpLCAodGhpcy50YWlsID0gZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy5oZWFkO1xuXHRcdFx0XHRcdFx0aWYgKHQpIHJldHVybiBudWxsID09PSAodGhpcy5oZWFkID0gdC5uZXh0KSAmJiAodGhpcy50YWlsID0gbnVsbCksIHQuaXRlbTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KSxcblx0XHRcdFx0XHQodC5leHBvcnRzID0gZSk7XG5cdFx0XHR9LFxuXHRcdFx0NjEwMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2MTUpLFxuXHRcdFx0XHRcdG8gPSByKDUwMjcpLFxuXHRcdFx0XHRcdGkgPSByKDk5ODUpLFxuXHRcdFx0XHRcdGEgPSByKDY2NDgpLFxuXHRcdFx0XHRcdHUgPSByKDYzMDgpLFxuXHRcdFx0XHRcdGMgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dmFyIHIgPSB0LmV4ZWM7XG5cdFx0XHRcdFx0aWYgKGkocikpIHtcblx0XHRcdFx0XHRcdHZhciBzID0gbihyLCB0LCBlKTtcblx0XHRcdFx0XHRcdHJldHVybiBudWxsICE9PSBzICYmIG8ocyksIHM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICgnUmVnRXhwJyA9PT0gYSh0KSkgcmV0dXJuIG4odSwgdCwgZSk7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IGMoJ1JlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXInKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2MzA4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdGkgPSByKDI2MTUpLFxuXHRcdFx0XHRcdGEgPSByKDg4NDQpLFxuXHRcdFx0XHRcdHUgPSByKDQzMjcpLFxuXHRcdFx0XHRcdGMgPSByKDk2MzMpLFxuXHRcdFx0XHRcdHMgPSByKDc5MDEpLFxuXHRcdFx0XHRcdGYgPSByKDM0MzApLFxuXHRcdFx0XHRcdGwgPSByKDUzOTEpLFxuXHRcdFx0XHRcdHAgPSByKDYxOCkuZ2V0LFxuXHRcdFx0XHRcdGggPSByKDIxMDApLFxuXHRcdFx0XHRcdHYgPSByKDY0MjIpLFxuXHRcdFx0XHRcdGQgPSBmKCduYXRpdmUtc3RyaW5nLXJlcGxhY2UnLCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLFxuXHRcdFx0XHRcdHkgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWMsXG5cdFx0XHRcdFx0ZyA9IHksXG5cdFx0XHRcdFx0bSA9IGEoJycuY2hhckF0KSxcblx0XHRcdFx0XHRiID0gYSgnJy5pbmRleE9mKSxcblx0XHRcdFx0XHR3ID0gYSgnJy5yZXBsYWNlKSxcblx0XHRcdFx0XHR4ID0gYSgnJy5zbGljZSksXG5cdFx0XHRcdFx0ayA9ICgobyA9IC9iKi9nKSwgaSh5LCAobiA9IC9hLyksICdhJyksIGkoeSwgbywgJ2EnKSwgMCAhPT0gbi5sYXN0SW5kZXggfHwgMCAhPT0gby5sYXN0SW5kZXgpLFxuXHRcdFx0XHRcdFMgPSBzLkJST0tFTl9DQVJFVCxcblx0XHRcdFx0XHRFID0gdm9pZCAwICE9PSAvKCk/Py8uZXhlYygnJylbMV07XG5cdFx0XHRcdChrIHx8IEUgfHwgUyB8fCBoIHx8IHYpICYmXG5cdFx0XHRcdFx0KGcgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdHIsXG5cdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdHMsXG5cdFx0XHRcdFx0XHRcdGYsXG5cdFx0XHRcdFx0XHRcdGggPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHR2ID0gcChoKSxcblx0XHRcdFx0XHRcdFx0TyA9IHUodCksXG5cdFx0XHRcdFx0XHRcdFAgPSB2LnJhdztcblx0XHRcdFx0XHRcdGlmIChQKSByZXR1cm4gKFAubGFzdEluZGV4ID0gaC5sYXN0SW5kZXgpLCAoZSA9IGkoZywgUCwgTykpLCAoaC5sYXN0SW5kZXggPSBQLmxhc3RJbmRleCksIGU7XG5cdFx0XHRcdFx0XHR2YXIgaiA9IHYuZ3JvdXBzLFxuXHRcdFx0XHRcdFx0XHRMID0gUyAmJiBoLnN0aWNreSxcblx0XHRcdFx0XHRcdFx0XyA9IGkoYywgaCksXG5cdFx0XHRcdFx0XHRcdEkgPSBoLnNvdXJjZSxcblx0XHRcdFx0XHRcdFx0VCA9IDAsXG5cdFx0XHRcdFx0XHRcdFIgPSBPO1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQoTCAmJlxuXHRcdFx0XHRcdFx0XHRcdCgoXyA9IHcoXywgJ3knLCAnJykpLFxuXHRcdFx0XHRcdFx0XHRcdC0xID09PSBiKF8sICdnJykgJiYgKF8gKz0gJ2cnKSxcblx0XHRcdFx0XHRcdFx0XHQoUiA9IHgoTywgaC5sYXN0SW5kZXgpKSxcblx0XHRcdFx0XHRcdFx0XHRoLmxhc3RJbmRleCA+IDAgJiZcblx0XHRcdFx0XHRcdFx0XHRcdCghaC5tdWx0aWxpbmUgfHwgKGgubXVsdGlsaW5lICYmICdcXG4nICE9PSBtKE8sIGgubGFzdEluZGV4IC0gMSkpKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KChJID0gJyg/OiAnICsgSSArICcpJyksIChSID0gJyAnICsgUiksIFQrKyksXG5cdFx0XHRcdFx0XHRcdFx0KHIgPSBuZXcgUmVnRXhwKCdeKD86JyArIEkgKyAnKScsIF8pKSksXG5cdFx0XHRcdFx0XHRcdEUgJiYgKHIgPSBuZXcgUmVnRXhwKCdeJyArIEkgKyAnJCg/IVxcXFxzKScsIF8pKSxcblx0XHRcdFx0XHRcdFx0ayAmJiAobiA9IGgubGFzdEluZGV4KSxcblx0XHRcdFx0XHRcdFx0KG8gPSBpKHksIEwgPyByIDogaCwgUikpLFxuXHRcdFx0XHRcdFx0XHRMXG5cdFx0XHRcdFx0XHRcdFx0PyBvXG5cdFx0XHRcdFx0XHRcdFx0XHQ/ICgoby5pbnB1dCA9IHgoby5pbnB1dCwgVCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQob1swXSA9IHgob1swXSwgVCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoby5pbmRleCA9IGgubGFzdEluZGV4KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGgubGFzdEluZGV4ICs9IG9bMF0ubGVuZ3RoKSlcblx0XHRcdFx0XHRcdFx0XHRcdDogKGgubGFzdEluZGV4ID0gMClcblx0XHRcdFx0XHRcdFx0XHQ6IGsgJiYgbyAmJiAoaC5sYXN0SW5kZXggPSBoLmdsb2JhbCA/IG8uaW5kZXggKyBvWzBdLmxlbmd0aCA6IG4pLFxuXHRcdFx0XHRcdFx0XHRFICYmXG5cdFx0XHRcdFx0XHRcdFx0byAmJlxuXHRcdFx0XHRcdFx0XHRcdG8ubGVuZ3RoID4gMSAmJlxuXHRcdFx0XHRcdFx0XHRcdGkoZCwgb1swXSwgciwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChhID0gMTsgYSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBhKyspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gYXJndW1lbnRzW2FdICYmIChvW2FdID0gdm9pZCAwKTtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0byAmJiBqKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRmb3IgKG8uZ3JvdXBzID0gcyA9IGwobnVsbCksIGEgPSAwOyBhIDwgai5sZW5ndGg7IGErKykgc1soZiA9IGpbYV0pWzBdXSA9IG9bZlsxXV07XG5cdFx0XHRcdFx0XHRyZXR1cm4gbztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQodC5leHBvcnRzID0gZyk7XG5cdFx0XHR9LFxuXHRcdFx0OTYzMzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDUwMjcpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIHQgPSBuKHRoaXMpLFxuXHRcdFx0XHRcdFx0ZSA9ICcnO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHR0Lmhhc0luZGljZXMgJiYgKGUgKz0gJ2QnKSxcblx0XHRcdFx0XHRcdHQuZ2xvYmFsICYmIChlICs9ICdnJyksXG5cdFx0XHRcdFx0XHR0Lmlnbm9yZUNhc2UgJiYgKGUgKz0gJ2knKSxcblx0XHRcdFx0XHRcdHQubXVsdGlsaW5lICYmIChlICs9ICdtJyksXG5cdFx0XHRcdFx0XHR0LmRvdEFsbCAmJiAoZSArPSAncycpLFxuXHRcdFx0XHRcdFx0dC51bmljb2RlICYmIChlICs9ICd1JyksXG5cdFx0XHRcdFx0XHR0LnVuaWNvZGVTZXRzICYmIChlICs9ICd2JyksXG5cdFx0XHRcdFx0XHR0LnN0aWNreSAmJiAoZSArPSAneScpLFxuXHRcdFx0XHRcdFx0ZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzQ3NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2MTUpLFxuXHRcdFx0XHRcdG8gPSByKDY4MTIpLFxuXHRcdFx0XHRcdGkgPSByKDM2MjIpLFxuXHRcdFx0XHRcdGEgPSByKDk2MzMpLFxuXHRcdFx0XHRcdHUgPSBSZWdFeHAucHJvdG90eXBlO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlID0gdC5mbGFncztcblx0XHRcdFx0XHRyZXR1cm4gdm9pZCAwICE9PSBlIHx8ICdmbGFncycgaW4gdSB8fCBvKHQsICdmbGFncycpIHx8ICFpKHUsIHQpID8gZSA6IG4oYSwgdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzkwMTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2ODkpLFxuXHRcdFx0XHRcdG8gPSByKDkwMzcpLlJlZ0V4cCxcblx0XHRcdFx0XHRpID0gbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IG8oJ2EnLCAneScpO1xuXHRcdFx0XHRcdFx0cmV0dXJuICh0Lmxhc3RJbmRleCA9IDIpLCBudWxsICE9PSB0LmV4ZWMoJ2FiY2QnKTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRhID1cblx0XHRcdFx0XHRcdGkgfHxcblx0XHRcdFx0XHRcdG4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gIW8oJ2EnLCAneScpLnN0aWNreTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHUgPVxuXHRcdFx0XHRcdFx0aSB8fFxuXHRcdFx0XHRcdFx0bihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gbygnXnInLCAnZ3knKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICh0Lmxhc3RJbmRleCA9IDIpLCBudWxsICE9PSB0LmV4ZWMoJ3N0cicpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRCUk9LRU5fQ0FSRVQ6IHUsXG5cdFx0XHRcdFx0TUlTU0VEX1NUSUNLWTogYSxcblx0XHRcdFx0XHRVTlNVUFBPUlRFRF9ZOiBpLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDIxMDA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KSxcblx0XHRcdFx0XHRvID0gcig5MDM3KS5SZWdFeHA7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHZhciB0ID0gbygnLicsICdzJyk7XG5cdFx0XHRcdFx0cmV0dXJuICEodC5kb3RBbGwgJiYgdC50ZXN0KCdcXG4nKSAmJiAncycgPT09IHQuZmxhZ3MpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ2NDIyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSksXG5cdFx0XHRcdFx0byA9IHIoOTAzNykuUmVnRXhwO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHR2YXIgdCA9IG8oJyg/PGE+YiknLCAnZycpO1xuXHRcdFx0XHRcdHJldHVybiAnYicgIT09IHQuZXhlYygnYicpLmdyb3Vwcy5hIHx8ICdiYycgIT09ICdiJy5yZXBsYWNlKHQsICckPGE+YycpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ0Njg0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTgxKSxcblx0XHRcdFx0XHRvID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmIChuKHQpKSB0aHJvdyBuZXcgbyhcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgdCk7XG5cdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0ODYwMDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gdCA9PT0gZSB8fCAodCAhPSB0ICYmIGUgIT0gZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NDI0MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDYwNTgpLFxuXHRcdFx0XHRcdG8gPSByKDIxNDgpLFxuXHRcdFx0XHRcdGkgPSByKDQyMDEpLFxuXHRcdFx0XHRcdGEgPSByKDc2OTcpLFxuXHRcdFx0XHRcdHUgPSBpKCdzcGVjaWVzJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSBuKHQpO1xuXHRcdFx0XHRcdGEgJiZcblx0XHRcdFx0XHRcdGUgJiZcblx0XHRcdFx0XHRcdCFlW3VdICYmXG5cdFx0XHRcdFx0XHRvKGUsIHUsIHtcblx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1OTk3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjU2MCkuZixcblx0XHRcdFx0XHRvID0gcig2ODEyKSxcblx0XHRcdFx0XHRpID0gcig0MjAxKSgndG9TdHJpbmdUYWcnKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR0ICYmICFyICYmICh0ID0gdC5wcm90b3R5cGUpLCB0ICYmICFvKHQsIGkpICYmIG4odCwgaSwge2NvbmZpZ3VyYWJsZTogITAsIHZhbHVlOiBlfSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MjcxMzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM0MzApLFxuXHRcdFx0XHRcdG8gPSByKDQ2MzApLFxuXHRcdFx0XHRcdGkgPSBuKCdrZXlzJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGlbdF0gfHwgKGlbdF0gPSBvKHQpKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ0MDkxOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyksXG5cdFx0XHRcdFx0byA9IHIoNTAxNCksXG5cdFx0XHRcdFx0aSA9ICdfX2NvcmUtanNfc2hhcmVkX18nLFxuXHRcdFx0XHRcdGEgPSBuW2ldIHx8IG8oaSwge30pO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBhO1xuXHRcdFx0fSxcblx0XHRcdDM0MzA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzOTMxKSxcblx0XHRcdFx0XHRvID0gcig0MDkxKTtcblx0XHRcdFx0KHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9bdF0gfHwgKG9bdF0gPSB2b2lkIDAgIT09IGUgPyBlIDoge30pO1xuXHRcdFx0XHR9KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG5cdFx0XHRcdFx0dmVyc2lvbjogJzMuMzMuMycsXG5cdFx0XHRcdFx0bW9kZTogbiA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuXHRcdFx0XHRcdGNvcHlyaWdodDogJ8KpIDIwMTQtMjAyMyBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KScsXG5cdFx0XHRcdFx0bGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzMuMy9MSUNFTlNFJyxcblx0XHRcdFx0XHRzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcycsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDYzNzM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig1MDI3KSxcblx0XHRcdFx0XHRvID0gcigyNjU1KSxcblx0XHRcdFx0XHRpID0gcig5ODEpLFxuXHRcdFx0XHRcdGEgPSByKDQyMDEpKCdzcGVjaWVzJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHR1ID0gbih0KS5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRyZXR1cm4gdm9pZCAwID09PSB1IHx8IGkoKHIgPSBuKHUpW2FdKSkgPyBlIDogbyhyKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3MzA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcig4NzAwKSxcblx0XHRcdFx0XHRpID0gcig0MzI3KSxcblx0XHRcdFx0XHRhID0gcig0Njg0KSxcblx0XHRcdFx0XHR1ID0gbignJy5jaGFyQXQpLFxuXHRcdFx0XHRcdGMgPSBuKCcnLmNoYXJDb2RlQXQpLFxuXHRcdFx0XHRcdHMgPSBuKCcnLnNsaWNlKSxcblx0XHRcdFx0XHRmID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSwgcikge1xuXHRcdFx0XHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRcdFx0XHRmLFxuXHRcdFx0XHRcdFx0XHRcdGwgPSBpKGEoZSkpLFxuXHRcdFx0XHRcdFx0XHRcdHAgPSBvKHIpLFxuXHRcdFx0XHRcdFx0XHRcdGggPSBsLmxlbmd0aDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHAgPCAwIHx8IHAgPj0gaFxuXHRcdFx0XHRcdFx0XHRcdD8gdFxuXHRcdFx0XHRcdFx0XHRcdFx0PyAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0OiB2b2lkIDBcblx0XHRcdFx0XHRcdFx0XHQ6IChuID0gYyhsLCBwKSkgPCA1NTI5NiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0ICBuID4gNTYzMTkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdCAgcCArIDEgPT09IGggfHxcblx0XHRcdFx0XHRcdFx0XHRcdCAgKGYgPSBjKGwsIHAgKyAxKSkgPCA1NjMyMCB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0ICBmID4gNTczNDNcblx0XHRcdFx0XHRcdFx0XHRcdD8gdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHUobCwgcClcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiBuXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyBzKGwsIHAsIHAgKyAyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGYgLSA1NjMyMCArICgobiAtIDU1Mjk2KSA8PCAxMCkgKyA2NTUzNjtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdGNvZGVBdDogZighMSksXG5cdFx0XHRcdFx0Y2hhckF0OiBmKCEwKSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2NDMwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IDIxNDc0ODM2NDcsXG5cdFx0XHRcdFx0aSA9IC9bXlxcMC1cXHUwMDdFXS8sXG5cdFx0XHRcdFx0YSA9IC9bLlxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZyxcblx0XHRcdFx0XHR1ID0gJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0XHRcdFx0XHRjID0gUmFuZ2VFcnJvcixcblx0XHRcdFx0XHRzID0gbihhLmV4ZWMpLFxuXHRcdFx0XHRcdGYgPSBNYXRoLmZsb29yLFxuXHRcdFx0XHRcdGwgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLFxuXHRcdFx0XHRcdHAgPSBuKCcnLmNoYXJDb2RlQXQpLFxuXHRcdFx0XHRcdGggPSBuKFtdLmpvaW4pLFxuXHRcdFx0XHRcdHYgPSBuKFtdLnB1c2gpLFxuXHRcdFx0XHRcdGQgPSBuKCcnLnJlcGxhY2UpLFxuXHRcdFx0XHRcdHkgPSBuKCcnLnNwbGl0KSxcblx0XHRcdFx0XHRnID0gbignJy50b0xvd2VyQ2FzZSksXG5cdFx0XHRcdFx0bSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdCArIDIyICsgNzUgKiAodCA8IDI2KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGIgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0dmFyIG4gPSAwO1xuXHRcdFx0XHRcdFx0Zm9yICh0ID0gciA/IGYodCAvIDcwMCkgOiB0ID4+IDEsIHQgKz0gZih0IC8gZSk7IHQgPiA0NTU7ICkgKHQgPSBmKHQgLyAzNSkpLCAobiArPSAzNik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZihuICsgKDM2ICogdCkgLyAodCArIDM4KSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR3ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gW107XG5cdFx0XHRcdFx0XHR0ID0gKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSBbXSwgciA9IDAsIG4gPSB0Lmxlbmd0aDsgciA8IG47ICkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBvID0gcCh0LCByKyspO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvID49IDU1Mjk2ICYmIG8gPD0gNTYzMTkgJiYgciA8IG4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBpID0gcCh0LCByKyspO1xuXHRcdFx0XHRcdFx0XHRcdFx0NTYzMjAgPT0gKDY0NTEyICYgaSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyB2KGUsICgoMTAyMyAmIG8pIDw8IDEwKSArICgxMDIzICYgaSkgKyA2NTUzNilcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAodihlLCBvKSwgci0tKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgdihlLCBvKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHRcdH0pKHQpO1xuXHRcdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdGkgPSB0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0YSA9IDEyOCxcblx0XHRcdFx0XHRcdFx0cyA9IDAsXG5cdFx0XHRcdFx0XHRcdGQgPSA3Mjtcblx0XHRcdFx0XHRcdGZvciAociA9IDA7IHIgPCB0Lmxlbmd0aDsgcisrKSAobiA9IHRbcl0pIDwgMTI4ICYmIHYoZSwgbChuKSk7XG5cdFx0XHRcdFx0XHR2YXIgeSA9IGUubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRnID0geTtcblx0XHRcdFx0XHRcdGZvciAoeSAmJiB2KGUsICctJyk7IGcgPCBpOyApIHtcblx0XHRcdFx0XHRcdFx0dmFyIHcgPSBvO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHIgPSAwOyByIDwgdC5sZW5ndGg7IHIrKykgKG4gPSB0W3JdKSA+PSBhICYmIG4gPCB3ICYmICh3ID0gbik7XG5cdFx0XHRcdFx0XHRcdHZhciB4ID0gZyArIDE7XG5cdFx0XHRcdFx0XHRcdGlmICh3IC0gYSA+IGYoKG8gLSBzKSAvIHgpKSB0aHJvdyBuZXcgYyh1KTtcblx0XHRcdFx0XHRcdFx0Zm9yIChzICs9ICh3IC0gYSkgKiB4LCBhID0gdywgciA9IDA7IHIgPCB0Lmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKChuID0gdFtyXSkgPCBhICYmICsrcyA+IG8pIHRocm93IG5ldyBjKHUpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChuID09PSBhKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBrID0gcywgUyA9IDM2OyA7ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgRSA9IFMgPD0gZCA/IDEgOiBTID49IGQgKyAyNiA/IDI2IDogUyAtIGQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChrIDwgRSkgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBPID0gayAtIEUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0UCA9IDM2IC0gRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dihlLCBsKG0oRSArIChPICUgUCkpKSksIChrID0gZihPIC8gUCkpLCAoUyArPSAzNik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR2KGUsIGwobShrKSkpLCAoZCA9IGIocywgeCwgZyA9PT0geSkpLCAocyA9IDApLCBnKys7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHMrKywgYSsrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIGgoZSwgJycpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRyLFxuXHRcdFx0XHRcdFx0biA9IFtdLFxuXHRcdFx0XHRcdFx0byA9IHkoZChnKHQpLCBhLCAnLicpLCAnLicpO1xuXHRcdFx0XHRcdGZvciAoZSA9IDA7IGUgPCBvLmxlbmd0aDsgZSsrKSAociA9IG9bZV0pLCB2KG4sIHMoaSwgcikgPyAneG4tLScgKyB3KHIpIDogcik7XG5cdFx0XHRcdFx0cmV0dXJuIGgobiwgJy4nKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1OTg0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMTIzNikuUFJPUEVSLFxuXHRcdFx0XHRcdG8gPSByKDM2ODkpLFxuXHRcdFx0XHRcdGkgPSByKDYzNTApO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAhIWlbdF0oKSB8fCAn4oCLwoXhoI4nICE9PSAn4oCLwoXhoI4nW3RdKCkgfHwgKG4gJiYgaVt0XS5uYW1lICE9PSB0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxNDM1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IHIoNDY4NCksXG5cdFx0XHRcdFx0aSA9IHIoNDMyNyksXG5cdFx0XHRcdFx0YSA9IHIoNjM1MCksXG5cdFx0XHRcdFx0dSA9IG4oJycucmVwbGFjZSksXG5cdFx0XHRcdFx0YyA9IFJlZ0V4cCgnXlsnICsgYSArICddKycpLFxuXHRcdFx0XHRcdHMgPSBSZWdFeHAoJyhefFteJyArIGEgKyAnXSlbJyArIGEgKyAnXSskJyksXG5cdFx0XHRcdFx0ZiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHIgPSBpKG8oZSkpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gMSAmIHQgJiYgKHIgPSB1KHIsIGMsICcnKSksIDIgJiB0ICYmIChyID0gdShyLCBzLCAnJDEnKSksIHI7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRzdGFydDogZigxKSxcblx0XHRcdFx0XHRlbmQ6IGYoMiksXG5cdFx0XHRcdFx0dHJpbTogZigzKSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxNDY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjE1KSxcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcig5MDM3KS5TdHJpbmc7XG5cdFx0XHRcdHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmXG5cdFx0XHRcdFx0IW8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcblx0XHRcdFx0XHRcdHJldHVybiAhaSh0KSB8fCAhKE9iamVjdCh0KSBpbnN0YW5jZW9mIFN5bWJvbCkgfHwgKCFTeW1ib2wuc2hhbSAmJiBuICYmIG4gPCA0MSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0MzAzMjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2MTUpLFxuXHRcdFx0XHRcdG8gPSByKDYwNTgpLFxuXHRcdFx0XHRcdGkgPSByKDQyMDEpLFxuXHRcdFx0XHRcdGEgPSByKDE4ODApO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIHQgPSBvKCdTeW1ib2wnKSxcblx0XHRcdFx0XHRcdGUgPSB0ICYmIHQucHJvdG90eXBlLFxuXHRcdFx0XHRcdFx0ciA9IGUgJiYgZS52YWx1ZU9mLFxuXHRcdFx0XHRcdFx0dSA9IGkoJ3RvUHJpbWl0aXZlJyk7XG5cdFx0XHRcdFx0ZSAmJlxuXHRcdFx0XHRcdFx0IWVbdV0gJiZcblx0XHRcdFx0XHRcdGEoXG5cdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdHUsXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG4ociwgdGhpcyk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHthcml0eTogMX1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjU0OTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDE0Nik7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4gJiYgISFTeW1ib2wuZm9yICYmICEhU3ltYm9sLmtleUZvcjtcblx0XHRcdH0sXG5cdFx0XHQ5ODg2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0YSxcblx0XHRcdFx0XHR1ID0gcig5MDM3KSxcblx0XHRcdFx0XHRjID0gcigxNzM1KSxcblx0XHRcdFx0XHRzID0gcig0MDcxKSxcblx0XHRcdFx0XHRmID0gcig5OTg1KSxcblx0XHRcdFx0XHRsID0gcig2ODEyKSxcblx0XHRcdFx0XHRwID0gcigzNjg5KSxcblx0XHRcdFx0XHRoID0gcigyNjg4KSxcblx0XHRcdFx0XHR2ID0gcig2MDA0KSxcblx0XHRcdFx0XHRkID0gcig2NDIwKSxcblx0XHRcdFx0XHR5ID0gcigxNTAwKSxcblx0XHRcdFx0XHRnID0gcig0NzY0KSxcblx0XHRcdFx0XHRtID0gcig4MDYpLFxuXHRcdFx0XHRcdGIgPSB1LnNldEltbWVkaWF0ZSxcblx0XHRcdFx0XHR3ID0gdS5jbGVhckltbWVkaWF0ZSxcblx0XHRcdFx0XHR4ID0gdS5wcm9jZXNzLFxuXHRcdFx0XHRcdGsgPSB1LkRpc3BhdGNoLFxuXHRcdFx0XHRcdFMgPSB1LkZ1bmN0aW9uLFxuXHRcdFx0XHRcdEUgPSB1Lk1lc3NhZ2VDaGFubmVsLFxuXHRcdFx0XHRcdE8gPSB1LlN0cmluZyxcblx0XHRcdFx0XHRQID0gMCxcblx0XHRcdFx0XHRqID0ge30sXG5cdFx0XHRcdFx0TCA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xuXHRcdFx0XHRwKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRuID0gdS5sb2NhdGlvbjtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHZhciBfID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmIChsKGosIHQpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0galt0XTtcblx0XHRcdFx0XHRcdFx0ZGVsZXRlIGpbdF0sIGUoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdEkgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0Xyh0KTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRUID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdF8odC5kYXRhKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFIgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dS5wb3N0TWVzc2FnZShPKHQpLCBuLnByb3RvY29sICsgJy8vJyArIG4uaG9zdCk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0KGIgJiYgdykgfHxcblx0XHRcdFx0XHQoKGIgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0eShhcmd1bWVudHMubGVuZ3RoLCAxKTtcblx0XHRcdFx0XHRcdHZhciBlID0gZih0KSA/IHQgOiBTKHQpLFxuXHRcdFx0XHRcdFx0XHRyID0gdihhcmd1bWVudHMsIDEpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0KGpbKytQXSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRjKGUsIHZvaWQgMCwgcik7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRvKFApLFxuXHRcdFx0XHRcdFx0XHRQXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdCh3ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGRlbGV0ZSBqW3RdO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdG1cblx0XHRcdFx0XHRcdD8gKG8gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHgubmV4dFRpY2soSSh0KSk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQ6IGsgJiYgay5ub3dcblx0XHRcdFx0XHRcdFx0PyAobyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRrLm5vdyhJKHQpKTtcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHQ6IEUgJiYgIWdcblx0XHRcdFx0XHRcdFx0XHQ/ICgoYSA9IChpID0gbmV3IEUoKSkucG9ydDIpLCAoaS5wb3J0MS5vbm1lc3NhZ2UgPSBUKSwgKG8gPSBzKGEucG9zdE1lc3NhZ2UsIGEpKSlcblx0XHRcdFx0XHRcdFx0XHQ6IHUuYWRkRXZlbnRMaXN0ZW5lciAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0ICBmKHUucG9zdE1lc3NhZ2UpICYmXG5cdFx0XHRcdFx0XHRcdFx0XHQgICF1LmltcG9ydFNjcmlwdHMgJiZcblx0XHRcdFx0XHRcdFx0XHRcdCAgbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0ICAnZmlsZTonICE9PSBuLnByb3RvY29sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHQgICFwKFIpXG5cdFx0XHRcdFx0XHRcdFx0XHQ/ICgobyA9IFIpLCB1LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBULCAhMSkpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IChvID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRMIGluIGQoJ3NjcmlwdCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aC5hcHBlbmRDaGlsZChkKCdzY3JpcHQnKSlbTF0gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoLnJlbW92ZUNoaWxkKHRoaXMpLCBfKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KEkodCksIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRcdHNldDogYixcblx0XHRcdFx0XHRcdGNsZWFyOiB3LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDM2NDg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KTtcblx0XHRcdFx0dC5leHBvcnRzID0gbigoMSkudmFsdWVPZik7XG5cdFx0XHR9LFxuXHRcdFx0NzU3ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg3MDApLFxuXHRcdFx0XHRcdG8gPSBNYXRoLm1heCxcblx0XHRcdFx0XHRpID0gTWF0aC5taW47XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dmFyIHIgPSBuKHQpO1xuXHRcdFx0XHRcdHJldHVybiByIDwgMCA/IG8ociArIGUsIDApIDogaShyLCBlKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1MjkwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDQxMyksXG5cdFx0XHRcdFx0byA9IHIoNDY4NCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG4obyh0KSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0ODcwMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4MjgpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlID0gK3Q7XG5cdFx0XHRcdFx0cmV0dXJuIGUgIT0gZSB8fCAwID09PSBlID8gMCA6IG4oZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzEyNjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg3MDApLFxuXHRcdFx0XHRcdG8gPSBNYXRoLm1pbjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gdCA+IDAgPyBvKG4odCksIDkwMDcxOTkyNTQ3NDA5OTEpIDogMDtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2OTA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig0Njg0KSxcblx0XHRcdFx0XHRvID0gT2JqZWN0O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBvKG4odCkpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDg3MzI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig4OTk5KSxcblx0XHRcdFx0XHRpID0gcig3MzQpLFxuXHRcdFx0XHRcdGEgPSByKDQ4NDkpLFxuXHRcdFx0XHRcdHUgPSByKDU4OTkpLFxuXHRcdFx0XHRcdGMgPSByKDQyMDEpLFxuXHRcdFx0XHRcdHMgPSBUeXBlRXJyb3IsXG5cdFx0XHRcdFx0ZiA9IGMoJ3RvUHJpbWl0aXZlJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKCFvKHQpIHx8IGkodCkpIHJldHVybiB0O1xuXHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0YyA9IGEodCwgZik7XG5cdFx0XHRcdFx0aWYgKGMpIHtcblx0XHRcdFx0XHRcdGlmICgodm9pZCAwID09PSBlICYmIChlID0gJ2RlZmF1bHQnKSwgKHIgPSBuKGMsIHQsIGUpKSwgIW8ocikgfHwgaShyKSkpIHJldHVybiByO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IHMoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSAnbnVtYmVyJyksIHUodCwgZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0ODM2MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg3MzIpLFxuXHRcdFx0XHRcdG8gPSByKDczNCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSBuKHQsICdzdHJpbmcnKTtcblx0XHRcdFx0XHRyZXR1cm4gbyhlKSA/IGUgOiBlICsgJyc7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzA0MzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSB7fTtcblx0XHRcdFx0KG5bcig0MjAxKSgndG9TdHJpbmdUYWcnKV0gPSAneicpLCAodC5leHBvcnRzID0gJ1tvYmplY3Qgel0nID09PSBTdHJpbmcobikpO1xuXHRcdFx0fSxcblx0XHRcdDQzMjc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MjYpLFxuXHRcdFx0XHRcdG8gPSBTdHJpbmc7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0aWYgKCdTeW1ib2wnID09PSBuKHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuXHRcdFx0XHRcdHJldHVybiBvKHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDM2OTE6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHZhciBlID0gU3RyaW5nO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZSh0KTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ09iamVjdCc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDQ2MzA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gMCxcblx0XHRcdFx0XHRpID0gTWF0aC5yYW5kb20oKSxcblx0XHRcdFx0XHRhID0gbigoMSkudG9TdHJpbmcpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiAnU3ltYm9sKCcgKyAodm9pZCAwID09PSB0ID8gJycgOiB0KSArICcpXycgKyBhKCsrbyArIGksIDM2KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2ODM3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSksXG5cdFx0XHRcdFx0byA9IHIoNDIwMSksXG5cdFx0XHRcdFx0aSA9IHIoNzY5NyksXG5cdFx0XHRcdFx0YSA9IHIoMzkzMSksXG5cdFx0XHRcdFx0dSA9IG8oJ2l0ZXJhdG9yJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICFuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHR2YXIgdCA9IG5ldyBVUkwoJ2I/YT0xJmI9MiZjPTMnLCAnaHR0cDovL2EnKSxcblx0XHRcdFx0XHRcdGUgPSB0LnNlYXJjaFBhcmFtcyxcblx0XHRcdFx0XHRcdHIgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCdhPTEmYT0yJmI9MycpLFxuXHRcdFx0XHRcdFx0biA9ICcnO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQodC5wYXRobmFtZSA9ICdjJTIwZCcpLFxuXHRcdFx0XHRcdFx0ZS5mb3JFYWNoKGZ1bmN0aW9uICh0LCByKSB7XG5cdFx0XHRcdFx0XHRcdGUuZGVsZXRlKCdiJyksIChuICs9IHIgKyB0KTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0ci5kZWxldGUoJ2EnLCAyKSxcblx0XHRcdFx0XHRcdHIuZGVsZXRlKCdiJywgdm9pZCAwKSxcblx0XHRcdFx0XHRcdChhICYmICghdC50b0pTT04gfHwgIXIuaGFzKCdhJywgMSkgfHwgci5oYXMoJ2EnLCAyKSB8fCAhci5oYXMoJ2EnLCB2b2lkIDApIHx8IHIuaGFzKCdiJykpKSB8fFxuXHRcdFx0XHRcdFx0XHQoIWUuc2l6ZSAmJiAoYSB8fCAhaSkpIHx8XG5cdFx0XHRcdFx0XHRcdCFlLnNvcnQgfHxcblx0XHRcdFx0XHRcdFx0J2h0dHA6Ly9hL2MlMjBkP2E9MSZjPTMnICE9PSB0LmhyZWYgfHxcblx0XHRcdFx0XHRcdFx0JzMnICE9PSBlLmdldCgnYycpIHx8XG5cdFx0XHRcdFx0XHRcdCdhPTEnICE9PSBTdHJpbmcobmV3IFVSTFNlYXJjaFBhcmFtcygnP2E9MScpKSB8fFxuXHRcdFx0XHRcdFx0XHQhZVt1XSB8fFxuXHRcdFx0XHRcdFx0XHQnYScgIT09IG5ldyBVUkwoJ2h0dHBzOi8vYUBiJykudXNlcm5hbWUgfHxcblx0XHRcdFx0XHRcdFx0J2InICE9PSBuZXcgVVJMU2VhcmNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMoJ2E9YicpKS5nZXQoJ2EnKSB8fFxuXHRcdFx0XHRcdFx0XHQneG4tLWUxYXliYycgIT09IG5ldyBVUkwoJ2h0dHA6Ly/RgtC10YHRgicpLmhvc3QgfHxcblx0XHRcdFx0XHRcdFx0JyMlRDAlQjEnICE9PSBuZXcgVVJMKCdodHRwOi8vYSPQsScpLmhhc2ggfHxcblx0XHRcdFx0XHRcdFx0J2ExYzMnICE9PSBuIHx8XG5cdFx0XHRcdFx0XHRcdCd4JyAhPT0gbmV3IFVSTCgnaHR0cDovL3gnLCB2b2lkIDApLmhvc3Rcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ5NTI1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMTQ2KTtcblx0XHRcdFx0dC5leHBvcnRzID0gbiAmJiAhU3ltYm9sLnNoYW0gJiYgJ3N5bWJvbCcgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvcjtcblx0XHRcdH0sXG5cdFx0XHQ1NjQ4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzY5NyksXG5cdFx0XHRcdFx0byA9IHIoMzY4OSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0biAmJlxuXHRcdFx0XHRcdG8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0NDIgIT09XG5cdFx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7fSwgJ3Byb3RvdHlwZScsIHt2YWx1ZTogNDIsIHdyaXRhYmxlOiAhMX0pLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQxNTAwOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR2YXIgZSA9IFR5cGVFcnJvcjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIHIpIHtcblx0XHRcdFx0XHRpZiAodCA8IHIpIHRocm93IG5ldyBlKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xuXHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDk4MzQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gcig5OTg1KSxcblx0XHRcdFx0XHRpID0gbi5XZWFrTWFwO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBvKGkpICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoaSkpO1xuXHRcdFx0fSxcblx0XHRcdDU0MDU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig0OTYpLFxuXHRcdFx0XHRcdG8gPSByKDY4MTIpLFxuXHRcdFx0XHRcdGkgPSByKDYxNDUpLFxuXHRcdFx0XHRcdGEgPSByKDI1NjApLmY7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSBuLlN5bWJvbCB8fCAobi5TeW1ib2wgPSB7fSk7XG5cdFx0XHRcdFx0byhlLCB0KSB8fCBhKGUsIHQsIHt2YWx1ZTogaS5mKHQpfSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjE0NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQyMDEpO1xuXHRcdFx0XHRlLmYgPSBuO1xuXHRcdFx0fSxcblx0XHRcdDQyMDE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gcigzNDMwKSxcblx0XHRcdFx0XHRpID0gcig2ODEyKSxcblx0XHRcdFx0XHRhID0gcig0NjMwKSxcblx0XHRcdFx0XHR1ID0gcigxNDYpLFxuXHRcdFx0XHRcdGMgPSByKDk1MjUpLFxuXHRcdFx0XHRcdHMgPSBuLlN5bWJvbCxcblx0XHRcdFx0XHRmID0gbygnd2tzJyksXG5cdFx0XHRcdFx0bCA9IGMgPyBzLmZvciB8fCBzIDogKHMgJiYgcy53aXRob3V0U2V0dGVyKSB8fCBhO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBpKGYsIHQpIHx8IChmW3RdID0gdSAmJiBpKHMsIHQpID8gc1t0XSA6IGwoJ1N5bWJvbC4nICsgdCkpLCBmW3RdO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDYzNTA6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICdcXHRcXG5cXHZcXGZcXHIgwqDhmoDigIDigIHigILigIPigITigIXigIbigIfigIjigInigIrigK/igZ/jgIBcXHUyMDI4XFx1MjAyOVxcdWZlZmYnO1xuXHRcdFx0fSxcblx0XHRcdDEwNjQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2MDU4KSxcblx0XHRcdFx0XHRvID0gcig2ODEyKSxcblx0XHRcdFx0XHRpID0gcig1NzczKSxcblx0XHRcdFx0XHRhID0gcigzNjIyKSxcblx0XHRcdFx0XHR1ID0gcig5Mzg1KSxcblx0XHRcdFx0XHRjID0gcig4NzU4KSxcblx0XHRcdFx0XHRzID0gcig4MDU1KSxcblx0XHRcdFx0XHRmID0gcigzNDU3KSxcblx0XHRcdFx0XHRsID0gcigzODQxKSxcblx0XHRcdFx0XHRwID0gcigyNTcwKSxcblx0XHRcdFx0XHRoID0gcig1NDExKSxcblx0XHRcdFx0XHR2ID0gcig3Njk3KSxcblx0XHRcdFx0XHRkID0gcigzOTMxKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIsIHkpIHtcblx0XHRcdFx0XHR2YXIgZyA9ICdzdGFja1RyYWNlTGltaXQnLFxuXHRcdFx0XHRcdFx0bSA9IHkgPyAyIDogMSxcblx0XHRcdFx0XHRcdGIgPSB0LnNwbGl0KCcuJyksXG5cdFx0XHRcdFx0XHR3ID0gYltiLmxlbmd0aCAtIDFdLFxuXHRcdFx0XHRcdFx0eCA9IG4uYXBwbHkobnVsbCwgYik7XG5cdFx0XHRcdFx0aWYgKHgpIHtcblx0XHRcdFx0XHRcdHZhciBrID0geC5wcm90b3R5cGU7XG5cdFx0XHRcdFx0XHRpZiAoKCFkICYmIG8oaywgJ2NhdXNlJykgJiYgZGVsZXRlIGsuY2F1c2UsICFyKSkgcmV0dXJuIHg7XG5cdFx0XHRcdFx0XHR2YXIgUyA9IG4oJ0Vycm9yJyksXG5cdFx0XHRcdFx0XHRcdEUgPSBlKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBsKHkgPyBlIDogdCwgdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRcdG4gPSB5ID8gbmV3IHgodCkgOiBuZXcgeCgpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHR2b2lkIDAgIT09IHIgJiYgaShuLCAnbWVzc2FnZScsIHIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0aChuLCBFLCBuLnN0YWNrLCAyKSxcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMgJiYgYShrLCB0aGlzKSAmJiBmKG4sIHRoaXMsIEUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IG0gJiYgcChuLCBhcmd1bWVudHNbbV0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0blxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQoKEUucHJvdG90eXBlID0gayksXG5cdFx0XHRcdFx0XHRcdCdFcnJvcicgIT09IHdcblx0XHRcdFx0XHRcdFx0XHQ/IHVcblx0XHRcdFx0XHRcdFx0XHRcdD8gdShFLCBTKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjKEUsIFMsIHtuYW1lOiAhMH0pXG5cdFx0XHRcdFx0XHRcdFx0OiB2ICYmIGcgaW4geCAmJiAocyhFLCB4LCBnKSwgcyhFLCB4LCAncHJlcGFyZVN0YWNrVHJhY2UnKSksXG5cdFx0XHRcdFx0XHRcdGMoRSwgeCksXG5cdFx0XHRcdFx0XHRcdCFkKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdGsubmFtZSAhPT0gdyAmJiBpKGssICduYW1lJywgdyksIChrLmNvbnN0cnVjdG9yID0gRSk7XG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0XHRyZXR1cm4gRTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NDMzODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDM2ODkpLFxuXHRcdFx0XHRcdGkgPSByKDIyOTcpLFxuXHRcdFx0XHRcdGEgPSByKDg5OTkpLFxuXHRcdFx0XHRcdHUgPSByKDY5MCksXG5cdFx0XHRcdFx0YyA9IHIoNjMxMCksXG5cdFx0XHRcdFx0cyA9IHIoNTU2NSksXG5cdFx0XHRcdFx0ZiA9IHIoNjUyMiksXG5cdFx0XHRcdFx0bCA9IHIoNzEyMCksXG5cdFx0XHRcdFx0cCA9IHIoOTA0MiksXG5cdFx0XHRcdFx0aCA9IHIoNDIwMSksXG5cdFx0XHRcdFx0diA9IHIoMzYxNSksXG5cdFx0XHRcdFx0ZCA9IGgoJ2lzQ29uY2F0U3ByZWFkYWJsZScpLFxuXHRcdFx0XHRcdHkgPVxuXHRcdFx0XHRcdFx0diA+PSA1MSB8fFxuXHRcdFx0XHRcdFx0IW8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKHRbZF0gPSAhMSksIHQuY29uY2F0KClbMF0gIT09IHQ7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRnID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmICghYSh0KSkgcmV0dXJuICExO1xuXHRcdFx0XHRcdFx0dmFyIGUgPSB0W2RdO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHZvaWQgMCAhPT0gZSA/ICEhZSA6IGkodCk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnQXJyYXknLCBwcm90bzogITAsIGFyaXR5OiAxLCBmb3JjZWQ6ICF5IHx8ICFwKCdjb25jYXQnKX0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y29uY2F0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRyLFxuXHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0byxcblx0XHRcdFx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdFx0XHRcdGEgPSB1KHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHAgPSBsKGEsIDApLFxuXHRcdFx0XHRcdFx0XHRcdGggPSAwO1xuXHRcdFx0XHRcdFx0XHRmb3IgKGUgPSAtMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGUgPCBuOyBlKyspXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGcoKGkgPSAtMSA9PT0gZSA/IGEgOiBhcmd1bWVudHNbZV0pKSlcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAobyA9IGMoaSksIHMoaCArIG8pLCByID0gMDsgciA8IG87IHIrKywgaCsrKSByIGluIGkgJiYgZihwLCBoLCBpW3JdKTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIHMoaCArIDEpLCBmKHAsIGgrKywgaSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAocC5sZW5ndGggPSBoKSwgcDtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDgwNzc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigyOTYwKS5maWx0ZXI7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ0FycmF5JywgcHJvdG86ICEwLCBmb3JjZWQ6ICFyKDkwNDIpKCdmaWx0ZXInKX0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZmlsdGVyOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbyh0aGlzLCB0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ1NzI4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMjk2MCkuZmluZCxcblx0XHRcdFx0XHRpID0gcig3MzcwKSxcblx0XHRcdFx0XHRhID0gJ2ZpbmQnLFxuXHRcdFx0XHRcdHUgPSAhMDtcblx0XHRcdFx0YSBpbiBbXSAmJlxuXHRcdFx0XHRcdEFycmF5KDEpW2FdKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHUgPSAhMTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0e3RhcmdldDogJ0FycmF5JywgcHJvdG86ICEwLCBmb3JjZWQ6IHV9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRmaW5kOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBvKHRoaXMsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGkoYSk7XG5cdFx0XHR9LFxuXHRcdFx0NzA0OTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDEwNTUpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ0FycmF5Jyxcblx0XHRcdFx0XHRcdHN0YXQ6ICEwLFxuXHRcdFx0XHRcdFx0Zm9yY2VkOiAhcig2NDMxKShmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRBcnJheS5mcm9tKHQpO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7ZnJvbTogb31cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ2ODAxOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNDMyOCkuaW5jbHVkZXMsXG5cdFx0XHRcdFx0aSA9IHIoMzY4OSksXG5cdFx0XHRcdFx0YSA9IHIoNzM3MCk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiAnQXJyYXknLFxuXHRcdFx0XHRcdFx0cHJvdG86ICEwLFxuXHRcdFx0XHRcdFx0Zm9yY2VkOiBpKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICFBcnJheSgxKS5pbmNsdWRlcygpO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpbmNsdWRlczogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8odGhpcywgdCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCksXG5cdFx0XHRcdFx0YSgnaW5jbHVkZXMnKTtcblx0XHRcdH0sXG5cdFx0XHQ3NTI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig1MjkwKSxcblx0XHRcdFx0XHRvID0gcig3MzcwKSxcblx0XHRcdFx0XHRpID0gcig5NDc4KSxcblx0XHRcdFx0XHRhID0gcig2MTgpLFxuXHRcdFx0XHRcdHUgPSByKDI1NjApLmYsXG5cdFx0XHRcdFx0YyA9IHIoMTkzNCksXG5cdFx0XHRcdFx0cyA9IHIoNzgwNyksXG5cdFx0XHRcdFx0ZiA9IHIoMzkzMSksXG5cdFx0XHRcdFx0bCA9IHIoNzY5NyksXG5cdFx0XHRcdFx0cCA9ICdBcnJheSBJdGVyYXRvcicsXG5cdFx0XHRcdFx0aCA9IGEuc2V0LFxuXHRcdFx0XHRcdHYgPSBhLmdldHRlckZvcihwKTtcblx0XHRcdFx0dC5leHBvcnRzID0gYyhcblx0XHRcdFx0XHRBcnJheSxcblx0XHRcdFx0XHQnQXJyYXknLFxuXHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRoKHRoaXMsIHt0eXBlOiBwLCB0YXJnZXQ6IG4odCksIGluZGV4OiAwLCBraW5kOiBlfSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHYodGhpcyksXG5cdFx0XHRcdFx0XHRcdGUgPSB0LnRhcmdldCxcblx0XHRcdFx0XHRcdFx0ciA9IHQuaW5kZXgrKztcblx0XHRcdFx0XHRcdGlmICghZSB8fCByID49IGUubGVuZ3RoKSByZXR1cm4gKHQudGFyZ2V0ID0gdm9pZCAwKSwgcyh2b2lkIDAsICEwKTtcblx0XHRcdFx0XHRcdHN3aXRjaCAodC5raW5kKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2tleXMnOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBzKHIsICExKTtcblx0XHRcdFx0XHRcdFx0Y2FzZSAndmFsdWVzJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcyhlW3JdLCAhMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gcyhbciwgZVtyXV0sICExKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCd2YWx1ZXMnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHZhciBkID0gKGkuQXJndW1lbnRzID0gaS5BcnJheSk7XG5cdFx0XHRcdGlmICgobygna2V5cycpLCBvKCd2YWx1ZXMnKSwgbygnZW50cmllcycpLCAhZiAmJiBsICYmICd2YWx1ZXMnICE9PSBkLm5hbWUpKVxuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR1KGQsICduYW1lJywge3ZhbHVlOiAndmFsdWVzJ30pO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHR9LFxuXHRcdFx0NjIwMzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDQ0MTMpLFxuXHRcdFx0XHRcdGEgPSByKDUyOTApLFxuXHRcdFx0XHRcdHUgPSByKDY4MzQpLFxuXHRcdFx0XHRcdGMgPSBvKFtdLmpvaW4pO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdBcnJheScsIHByb3RvOiAhMCwgZm9yY2VkOiBpICE9PSBPYmplY3QgfHwgIXUoJ2pvaW4nLCAnLCcpfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRqb2luOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYyhhKHRoaXMpLCB2b2lkIDAgPT09IHQgPyAnLCcgOiB0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDU2MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDY5MCksXG5cdFx0XHRcdFx0aSA9IHIoNjMxMCksXG5cdFx0XHRcdFx0YSA9IHIoNTY0OSksXG5cdFx0XHRcdFx0dSA9IHIoNTU2NSk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiAnQXJyYXknLFxuXHRcdFx0XHRcdFx0cHJvdG86ICEwLFxuXHRcdFx0XHRcdFx0YXJpdHk6IDEsXG5cdFx0XHRcdFx0XHRmb3JjZWQ6XG5cdFx0XHRcdFx0XHRcdHIoMzY4OSkoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQ0Mjk0OTY3Mjk3ICE9PVxuXHRcdFx0XHRcdFx0XHRcdFx0W10ucHVzaC5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoOiA0Mjk0OTY3Mjk2LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQxXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSkgfHxcblx0XHRcdFx0XHRcdFx0IShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgJ2xlbmd0aCcsIHt3cml0YWJsZTogITF9KS5wdXNoKCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgaW5zdGFuY2VvZiBUeXBlRXJyb3I7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0cHVzaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBvKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBpKGUpLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuXHRcdFx0XHRcdFx0XHR1KHIgKyBuKTtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBuOyBjKyspIChlW3JdID0gYXJndW1lbnRzW2NdKSwgcisrO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYShlLCByKSwgcjtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDk3MzA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigyMjk3KSxcblx0XHRcdFx0XHRpID0gcig5NDI5KSxcblx0XHRcdFx0XHRhID0gcig4OTk5KSxcblx0XHRcdFx0XHR1ID0gcig3NTc4KSxcblx0XHRcdFx0XHRjID0gcig2MzEwKSxcblx0XHRcdFx0XHRzID0gcig1MjkwKSxcblx0XHRcdFx0XHRmID0gcig2NTIyKSxcblx0XHRcdFx0XHRsID0gcig0MjAxKSxcblx0XHRcdFx0XHRwID0gcig5MDQyKSxcblx0XHRcdFx0XHRoID0gcig2MDA0KSxcblx0XHRcdFx0XHR2ID0gcCgnc2xpY2UnKSxcblx0XHRcdFx0XHRkID0gbCgnc3BlY2llcycpLFxuXHRcdFx0XHRcdHkgPSBBcnJheSxcblx0XHRcdFx0XHRnID0gTWF0aC5tYXg7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ0FycmF5JywgcHJvdG86ICEwLCBmb3JjZWQ6ICF2fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRzbGljZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0XHRsLFxuXHRcdFx0XHRcdFx0XHRcdHAgPSBzKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHYgPSBjKHApLFxuXHRcdFx0XHRcdFx0XHRcdG0gPSB1KHQsIHYpLFxuXHRcdFx0XHRcdFx0XHRcdGIgPSB1KHZvaWQgMCA9PT0gZSA/IHYgOiBlLCB2KTtcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdG8ocCkgJiZcblx0XHRcdFx0XHRcdFx0XHQoKHIgPSBwLmNvbnN0cnVjdG9yKSxcblx0XHRcdFx0XHRcdFx0XHQoKGkocikgJiYgKHIgPT09IHkgfHwgbyhyLnByb3RvdHlwZSkpKSB8fCAoYShyKSAmJiBudWxsID09PSAociA9IHJbZF0pKSkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdChyID0gdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRyID09PSB5IHx8IHZvaWQgMCA9PT0gcilcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBoKHAsIG0sIGIpO1xuXHRcdFx0XHRcdFx0XHRmb3IgKG4gPSBuZXcgKHZvaWQgMCA9PT0gciA/IHkgOiByKShnKGIgLSBtLCAwKSksIGwgPSAwOyBtIDwgYjsgbSsrLCBsKyspXG5cdFx0XHRcdFx0XHRcdFx0bSBpbiBwICYmIGYobiwgbCwgcFttXSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAobi5sZW5ndGggPSBsKSwgbjtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDk5MDM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2ODEyKSxcblx0XHRcdFx0XHRvID0gcigxODgwKSxcblx0XHRcdFx0XHRpID0gcigxNzk3KSxcblx0XHRcdFx0XHRhID0gcig0MjAxKSgndG9QcmltaXRpdmUnKSxcblx0XHRcdFx0XHR1ID0gRGF0ZS5wcm90b3R5cGU7XG5cdFx0XHRcdG4odSwgYSkgfHwgbyh1LCBhLCBpKTtcblx0XHRcdH0sXG5cdFx0XHQxMDU3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoOTAzNyksXG5cdFx0XHRcdFx0aSA9IHIoMTczNSksXG5cdFx0XHRcdFx0YSA9IHIoMTA2NCksXG5cdFx0XHRcdFx0dSA9ICdXZWJBc3NlbWJseScsXG5cdFx0XHRcdFx0YyA9IG9bdV0sXG5cdFx0XHRcdFx0cyA9IDcgIT09IG5ldyBFcnJvcignZScsIHtjYXVzZTogN30pLmNhdXNlLFxuXHRcdFx0XHRcdGYgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSB7fTtcblx0XHRcdFx0XHRcdChyW3RdID0gYSh0LCBlLCBzKSksXG5cdFx0XHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0Z2xvYmFsOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdGFyaXR5OiAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yY2VkOiBzLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0clxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bCA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRpZiAoYyAmJiBjW3RdKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByID0ge307XG5cdFx0XHRcdFx0XHRcdChyW3RdID0gYSh1ICsgJy4nICsgdCwgZSwgcykpLFxuXHRcdFx0XHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRhcmdldDogdSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3RhdDogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpdHk6IDEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvcmNlZDogcyxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRyXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRmKCdFcnJvcicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gaSh0LCB0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGYoJ0V2YWxFcnJvcicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodCwgdGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0ZignUmFuZ2VFcnJvcicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodCwgdGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0ZignUmVmZXJlbmNlRXJyb3InLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGYoJ1N5bnRheEVycm9yJywgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh0LCB0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRmKCdUeXBlRXJyb3InLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGYoJ1VSSUVycm9yJywgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh0LCB0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRsKCdDb21waWxlRXJyb3InLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGwoJ0xpbmtFcnJvcicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodCwgdGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0bCgnUnVudGltZUVycm9yJywgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh0LCB0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ0Mjg0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzY5NyksXG5cdFx0XHRcdFx0byA9IHIoMTIzNikuRVhJU1RTLFxuXHRcdFx0XHRcdGkgPSByKDg4NDQpLFxuXHRcdFx0XHRcdGEgPSByKDIxNDgpLFxuXHRcdFx0XHRcdHUgPSBGdW5jdGlvbi5wcm90b3R5cGUsXG5cdFx0XHRcdFx0YyA9IGkodS50b1N0cmluZyksXG5cdFx0XHRcdFx0cyA9IC9mdW5jdGlvblxcYig/Olxcc3xcXC9cXCpbXFxTXFxzXSo/XFwqXFwvfFxcL1xcL1teXFxuXFxyXSpbXFxuXFxyXSspKihbXlxccygvXSopLyxcblx0XHRcdFx0XHRmID0gaShzLmV4ZWMpO1xuXHRcdFx0XHRuICYmXG5cdFx0XHRcdFx0IW8gJiZcblx0XHRcdFx0XHRhKHUsICduYW1lJywge1xuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBmKHMsIGModGhpcykpWzFdO1xuXHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICcnO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDgzMjQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig2MDU4KSxcblx0XHRcdFx0XHRpID0gcigxNzM1KSxcblx0XHRcdFx0XHRhID0gcigyNjE1KSxcblx0XHRcdFx0XHR1ID0gcig4ODQ0KSxcblx0XHRcdFx0XHRjID0gcigzNjg5KSxcblx0XHRcdFx0XHRzID0gcig5OTg1KSxcblx0XHRcdFx0XHRmID0gcig3MzQpLFxuXHRcdFx0XHRcdGwgPSByKDYwMDQpLFxuXHRcdFx0XHRcdHAgPSByKDI2NDMpLFxuXHRcdFx0XHRcdGggPSByKDE0NiksXG5cdFx0XHRcdFx0diA9IFN0cmluZyxcblx0XHRcdFx0XHRkID0gbygnSlNPTicsICdzdHJpbmdpZnknKSxcblx0XHRcdFx0XHR5ID0gdSgvLi8uZXhlYyksXG5cdFx0XHRcdFx0ZyA9IHUoJycuY2hhckF0KSxcblx0XHRcdFx0XHRtID0gdSgnJy5jaGFyQ29kZUF0KSxcblx0XHRcdFx0XHRiID0gdSgnJy5yZXBsYWNlKSxcblx0XHRcdFx0XHR3ID0gdSgoMSkudG9TdHJpbmcpLFxuXHRcdFx0XHRcdHggPSAvW1xcdUQ4MDAtXFx1REZGRl0vZyxcblx0XHRcdFx0XHRrID0gL15bXFx1RDgwMC1cXHVEQkZGXSQvLFxuXHRcdFx0XHRcdFMgPSAvXltcXHVEQzAwLVxcdURGRkZdJC8sXG5cdFx0XHRcdFx0RSA9XG5cdFx0XHRcdFx0XHQhaCB8fFxuXHRcdFx0XHRcdFx0YyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gbygnU3ltYm9sJykoJ3N0cmluZ2lmeSBkZXRlY3Rpb24nKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQnW251bGxdJyAhPT0gZChbdF0pIHx8XG5cdFx0XHRcdFx0XHRcdFx0J3t9JyAhPT1cblx0XHRcdFx0XHRcdFx0XHRcdGQoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhOiB0LFxuXHRcdFx0XHRcdFx0XHRcdFx0fSkgfHxcblx0XHRcdFx0XHRcdFx0XHQne30nICE9PSBkKE9iamVjdCh0KSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdE8gPSBjKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnXCJcXFxcdWRmMDZcXFxcdWQ4MzRcIicgIT09IGQoJ1xcdWRmMDZcXHVkODM0JykgfHwgJ1wiXFxcXHVkZWFkXCInICE9PSBkKCdcXHVkZWFkJyk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0UCA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IGwoYXJndW1lbnRzKSxcblx0XHRcdFx0XHRcdFx0biA9IHAoZSk7XG5cdFx0XHRcdFx0XHRpZiAocyhuKSB8fCAodm9pZCAwICE9PSB0ICYmICFmKHQpKSlcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQoclsxXSA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoKHMobikgJiYgKGUgPSBhKG4sIHRoaXMsIHYodCksIGUpKSwgIWYoZSkpKSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRpKGQsIG51bGwsIHIpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRqID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gZyhyLCBlIC0gMSksXG5cdFx0XHRcdFx0XHRcdG8gPSBnKHIsIGUgKyAxKTtcblx0XHRcdFx0XHRcdHJldHVybiAoeShrLCB0KSAmJiAheShTLCBvKSkgfHwgKHkoUywgdCkgJiYgIXkoaywgbikpID8gJ1xcXFx1JyArIHcobSh0LCAwKSwgMTYpIDogdDtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRkICYmXG5cdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdHt0YXJnZXQ6ICdKU09OJywgc3RhdDogITAsIGFyaXR5OiAzLCBmb3JjZWQ6IEUgfHwgT30sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHN0cmluZ2lmeTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IGwoYXJndW1lbnRzKSxcblx0XHRcdFx0XHRcdFx0XHRcdG8gPSBpKEUgPyBQIDogZCwgbnVsbCwgbik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIE8gJiYgJ3N0cmluZycgPT0gdHlwZW9mIG8gPyBiKG8sIHgsIGopIDogbztcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDc2Mjk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KTtcblx0XHRcdFx0cig1OTk3KShuLkpTT04sICdKU09OJywgITApO1xuXHRcdFx0fSxcblx0XHRcdDkzMjI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHIoMzE5KShcblx0XHRcdFx0XHQnTWFwJyxcblx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHZvaWQgMCk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cig4MDApXG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NjY0NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0cig5MzIyKTtcblx0XHRcdH0sXG5cdFx0XHQ3NTA5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDU5OTcpKE1hdGgsICdNYXRoJywgITApO1xuXHRcdFx0fSxcblx0XHRcdDkyODg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigzOTMxKSxcblx0XHRcdFx0XHRpID0gcig3Njk3KSxcblx0XHRcdFx0XHRhID0gcig5MDM3KSxcblx0XHRcdFx0XHR1ID0gcig0OTYpLFxuXHRcdFx0XHRcdGMgPSByKDg4NDQpLFxuXHRcdFx0XHRcdHMgPSByKDUyNjYpLFxuXHRcdFx0XHRcdGYgPSByKDY4MTIpLFxuXHRcdFx0XHRcdGwgPSByKDM0NTcpLFxuXHRcdFx0XHRcdHAgPSByKDM2MjIpLFxuXHRcdFx0XHRcdGggPSByKDczNCksXG5cdFx0XHRcdFx0diA9IHIoODczMiksXG5cdFx0XHRcdFx0ZCA9IHIoMzY4OSksXG5cdFx0XHRcdFx0eSA9IHIoMjc0MSkuZixcblx0XHRcdFx0XHRnID0gcigyNDc0KS5mLFxuXHRcdFx0XHRcdG0gPSByKDI1NjApLmYsXG5cdFx0XHRcdFx0YiA9IHIoMzY0OCksXG5cdFx0XHRcdFx0dyA9IHIoMTQzNSkudHJpbSxcblx0XHRcdFx0XHR4ID0gJ051bWJlcicsXG5cdFx0XHRcdFx0ayA9IGFbeF0sXG5cdFx0XHRcdFx0UyA9IHVbeF0sXG5cdFx0XHRcdFx0RSA9IGsucHJvdG90eXBlLFxuXHRcdFx0XHRcdE8gPSBhLlR5cGVFcnJvcixcblx0XHRcdFx0XHRQID0gYygnJy5zbGljZSksXG5cdFx0XHRcdFx0aiA9IGMoJycuY2hhckNvZGVBdCksXG5cdFx0XHRcdFx0TCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0cixcblx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0byxcblx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0dSxcblx0XHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdFx0cyA9IHYodCwgJ251bWJlcicpO1xuXHRcdFx0XHRcdFx0aWYgKGgocykpIHRocm93IG5ldyBPKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIG51bWJlcicpO1xuXHRcdFx0XHRcdFx0aWYgKCdzdHJpbmcnID09IHR5cGVvZiBzICYmIHMubGVuZ3RoID4gMilcblx0XHRcdFx0XHRcdFx0aWYgKCgocyA9IHcocykpLCA0MyA9PT0gKGUgPSBqKHMsIDApKSB8fCA0NSA9PT0gZSkpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoODggPT09IChyID0gaihzLCAyKSkgfHwgMTIwID09PSByKSByZXR1cm4gTmFOO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKDQ4ID09PSBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChqKHMsIDEpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDY2OlxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA5ODpcblx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSAyKSwgKG8gPSA0OSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA3OTpcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTExOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQobiA9IDgpLCAobyA9IDU1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gK3M7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGZvciAoYSA9IChpID0gUChzLCAyKSkubGVuZ3RoLCB1ID0gMDsgdSA8IGE7IHUrKylcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgoYyA9IGooaSwgdSkpIDwgNDggfHwgYyA+IG8pIHJldHVybiBOYU47XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHBhcnNlSW50KGksIG4pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gK3M7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRfID0gcyh4LCAhaygnIDBvMScpIHx8ICFrKCcwYjEnKSB8fCBrKCcrMHgxJykpLFxuXHRcdFx0XHRcdEkgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdHIgPVxuXHRcdFx0XHRcdFx0XHRcdGFyZ3VtZW50cy5sZW5ndGggPCAxXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IDBcblx0XHRcdFx0XHRcdFx0XHRcdDogayhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlID0gdih0LCAnbnVtYmVyJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ2JpZ2ludCcgPT0gdHlwZW9mIGUgPyBlIDogTChlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSh0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHAoRSwgKGUgPSB0aGlzKSkgJiZcblx0XHRcdFx0XHRcdFx0ZChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0YihlKTtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0PyBsKE9iamVjdChyKSwgdGhpcywgSSlcblx0XHRcdFx0XHRcdFx0OiByO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdChJLnByb3RvdHlwZSA9IEUpLFxuXHRcdFx0XHRcdF8gJiYgIW8gJiYgKEUuY29uc3RydWN0b3IgPSBJKSxcblx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRnbG9iYWw6ICEwLFxuXHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHRcdHdyYXA6ICEwLFxuXHRcdFx0XHRcdFx0XHRmb3JjZWQ6IF8sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e051bWJlcjogSX1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR2YXIgVCA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0XHRuID0gaVxuXHRcdFx0XHRcdFx0XHRcdD8geShlKVxuXHRcdFx0XHRcdFx0XHRcdDogJ01BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04sTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLHBhcnNlRmxvYXQscGFyc2VJbnQsZnJvbVN0cmluZyxyYW5nZScuc3BsaXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCcsJ1xuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0byA9IDA7XG5cdFx0XHRcdFx0XHRuLmxlbmd0aCA+IG87XG5cdFx0XHRcdFx0XHRvKytcblx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRmKGUsIChyID0gbltvXSkpICYmICFmKHQsIHIpICYmIG0odCwgciwgZyhlLCByKSk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdG8gJiYgUyAmJiBUKHVbeF0sIFMpLCAoXyB8fCBvKSAmJiBUKHVbeF0sIGspO1xuXHRcdFx0fSxcblx0XHRcdDY1ODU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5NDE5KS5lbnRyaWVzO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZW50cmllczogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8odCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQxOTE5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMzY4OSksXG5cdFx0XHRcdFx0aSA9IHIoNTI5MCksXG5cdFx0XHRcdFx0YSA9IHIoMjQ3NCkuZixcblx0XHRcdFx0XHR1ID0gcig3Njk3KTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICdPYmplY3QnLFxuXHRcdFx0XHRcdFx0c3RhdDogITAsXG5cdFx0XHRcdFx0XHRmb3JjZWQ6XG5cdFx0XHRcdFx0XHRcdCF1IHx8XG5cdFx0XHRcdFx0XHRcdG8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdGEoMSk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0c2hhbTogIXUsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhKGkodCksIGUpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0OTQ3NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDc2OTcpLFxuXHRcdFx0XHRcdGkgPSByKDkxNTIpLFxuXHRcdFx0XHRcdGEgPSByKDUyOTApLFxuXHRcdFx0XHRcdHUgPSByKDI0NzQpLFxuXHRcdFx0XHRcdGMgPSByKDY1MjIpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiAhMCwgc2hhbTogIW99LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGdldE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUsIHIsIG4gPSBhKHQpLCBvID0gdS5mLCBzID0gaShuKSwgZiA9IHt9LCBsID0gMDsgcy5sZW5ndGggPiBsOyApXG5cdFx0XHRcdFx0XHRcdFx0dm9pZCAwICE9PSAociA9IG8obiwgKGUgPSBzW2wrK10pKSkgJiYgYyhmLCBlLCByKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGY7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ5NDM0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMTQ2KSxcblx0XHRcdFx0XHRpID0gcigzNjg5KSxcblx0XHRcdFx0XHRhID0gcig3NTE4KSxcblx0XHRcdFx0XHR1ID0gcig2OTApO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ09iamVjdCcsXG5cdFx0XHRcdFx0XHRzdGF0OiAhMCxcblx0XHRcdFx0XHRcdGZvcmNlZDpcblx0XHRcdFx0XHRcdFx0IW8gfHxcblx0XHRcdFx0XHRcdFx0aShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0YS5mKDEpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGdldE93blByb3BlcnR5U3ltYm9sczogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBhLmY7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBlID8gZSh1KHQpKSA6IFtdO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0ODA1MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDM2ODkpLFxuXHRcdFx0XHRcdGkgPSByKDY5MCksXG5cdFx0XHRcdFx0YSA9IHIoMTg2OCksXG5cdFx0XHRcdFx0dSA9IHIoMTc0OCk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiAnT2JqZWN0Jyxcblx0XHRcdFx0XHRcdHN0YXQ6ICEwLFxuXHRcdFx0XHRcdFx0Zm9yY2VkOiBvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0YSgxKTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0c2hhbTogIXUsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRnZXRQcm90b3R5cGVPZjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGEoaSh0KSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ5MzU4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNjkwKSxcblx0XHRcdFx0XHRpID0gcigzMDApO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ09iamVjdCcsXG5cdFx0XHRcdFx0XHRzdGF0OiAhMCxcblx0XHRcdFx0XHRcdGZvcmNlZDogcigzNjg5KShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGkoMSk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGtleXM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpKG8odCkpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MjI4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzA0MyksXG5cdFx0XHRcdFx0byA9IHIoMTg4MCksXG5cdFx0XHRcdFx0aSA9IHIoNTA3Myk7XG5cdFx0XHRcdG4gfHwgbyhPYmplY3QucHJvdG90eXBlLCAndG9TdHJpbmcnLCBpLCB7dW5zYWZlOiAhMH0pO1xuXHRcdFx0fSxcblx0XHRcdDE2OTI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigyNjE1KSxcblx0XHRcdFx0XHRpID0gcig1MDkpLFxuXHRcdFx0XHRcdGEgPSByKDg3NDIpLFxuXHRcdFx0XHRcdHUgPSByKDkzMDIpLFxuXHRcdFx0XHRcdGMgPSByKDg3MzQpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogITAsIGZvcmNlZDogcig1NjIpfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRhbGw6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0XHRyID0gYS5mKGUpLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSByLnJlc29sdmUsXG5cdFx0XHRcdFx0XHRcdFx0cyA9IHIucmVqZWN0LFxuXHRcdFx0XHRcdFx0XHRcdGYgPSB1KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByID0gaShlLnJlc29sdmUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhID0gW10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHUgPSAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdGModCwgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGkgPSB1KyssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YyA9ICExO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmKyssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0byhyLCBlLCB0KS50aGVuKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjIHx8ICgoYyA9ICEwKSwgKGFbaV0gPSB0KSwgLS1mIHx8IG4oYSkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC0tZiB8fCBuKGEpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZi5lcnJvciAmJiBzKGYudmFsdWUpLCByLnByb21pc2U7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ1MDg5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMzkzMSksXG5cdFx0XHRcdFx0aSA9IHIoNzA3MykuQ09OU1RSVUNUT1IsXG5cdFx0XHRcdFx0YSA9IHIoNzkxOSksXG5cdFx0XHRcdFx0dSA9IHIoNjA1OCksXG5cdFx0XHRcdFx0YyA9IHIoOTk4NSksXG5cdFx0XHRcdFx0cyA9IHIoMTg4MCksXG5cdFx0XHRcdFx0ZiA9IGEgJiYgYS5wcm90b3R5cGU7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQobihcblx0XHRcdFx0XHRcdHt0YXJnZXQ6ICdQcm9taXNlJywgcHJvdG86ICEwLCBmb3JjZWQ6IGksIHJlYWw6ICEwfSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Y2F0Y2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsIHQpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0IW8gJiYgYyhhKSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dmFyIGwgPSB1KCdQcm9taXNlJykucHJvdG90eXBlLmNhdGNoO1xuXHRcdFx0XHRcdGYuY2F0Y2ggIT09IGwgJiYgcyhmLCAnY2F0Y2gnLCBsLCB7dW5zYWZlOiAhMH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0NjY5NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdGEgPSByKDk5ODkpLFxuXHRcdFx0XHRcdHUgPSByKDM5MzEpLFxuXHRcdFx0XHRcdGMgPSByKDgwNiksXG5cdFx0XHRcdFx0cyA9IHIoOTAzNyksXG5cdFx0XHRcdFx0ZiA9IHIoMjYxNSksXG5cdFx0XHRcdFx0bCA9IHIoMTg4MCksXG5cdFx0XHRcdFx0cCA9IHIoOTM4NSksXG5cdFx0XHRcdFx0aCA9IHIoNTk5NyksXG5cdFx0XHRcdFx0diA9IHIoNDI0MSksXG5cdFx0XHRcdFx0ZCA9IHIoNTA5KSxcblx0XHRcdFx0XHR5ID0gcig5OTg1KSxcblx0XHRcdFx0XHRnID0gcig4OTk5KSxcblx0XHRcdFx0XHRtID0gcig3NjcpLFxuXHRcdFx0XHRcdGIgPSByKDYzNzMpLFxuXHRcdFx0XHRcdHcgPSByKDk4ODYpLnNldCxcblx0XHRcdFx0XHR4ID0gcigyMzEpLFxuXHRcdFx0XHRcdGsgPSByKDkyMCksXG5cdFx0XHRcdFx0UyA9IHIoOTMwMiksXG5cdFx0XHRcdFx0RSA9IHIoNDQxMCksXG5cdFx0XHRcdFx0TyA9IHIoNjE4KSxcblx0XHRcdFx0XHRQID0gcig3OTE5KSxcblx0XHRcdFx0XHRqID0gcig3MDczKSxcblx0XHRcdFx0XHRMID0gcig4NzQyKSxcblx0XHRcdFx0XHRfID0gJ1Byb21pc2UnLFxuXHRcdFx0XHRcdEkgPSBqLkNPTlNUUlVDVE9SLFxuXHRcdFx0XHRcdFQgPSBqLlJFSkVDVElPTl9FVkVOVCxcblx0XHRcdFx0XHRSID0gai5TVUJDTEFTU0lORyxcblx0XHRcdFx0XHQkID0gTy5nZXR0ZXJGb3IoXyksXG5cdFx0XHRcdFx0TiA9IE8uc2V0LFxuXHRcdFx0XHRcdEMgPSBQICYmIFAucHJvdG90eXBlLFxuXHRcdFx0XHRcdEEgPSBQLFxuXHRcdFx0XHRcdFcgPSBDLFxuXHRcdFx0XHRcdEIgPSBzLlR5cGVFcnJvcixcblx0XHRcdFx0XHRGID0gcy5kb2N1bWVudCxcblx0XHRcdFx0XHRVID0gcy5wcm9jZXNzLFxuXHRcdFx0XHRcdE0gPSBMLmYsXG5cdFx0XHRcdFx0RCA9IE0sXG5cdFx0XHRcdFx0RyA9ICEhKEYgJiYgRi5jcmVhdGVFdmVudCAmJiBzLmRpc3BhdGNoRXZlbnQpLFxuXHRcdFx0XHRcdHEgPSAndW5oYW5kbGVkcmVqZWN0aW9uJyxcblx0XHRcdFx0XHRRID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlO1xuXHRcdFx0XHRcdFx0cmV0dXJuICEoIWcodCkgfHwgIXkoKGUgPSB0LnRoZW4pKSkgJiYgZTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdEggPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdGkgPSBlLnZhbHVlLFxuXHRcdFx0XHRcdFx0XHRhID0gMSA9PT0gZS5zdGF0ZSxcblx0XHRcdFx0XHRcdFx0dSA9IGEgPyB0Lm9rIDogdC5mYWlsLFxuXHRcdFx0XHRcdFx0XHRjID0gdC5yZXNvbHZlLFxuXHRcdFx0XHRcdFx0XHRzID0gdC5yZWplY3QsXG5cdFx0XHRcdFx0XHRcdGwgPSB0LmRvbWFpbjtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHVcblx0XHRcdFx0XHRcdFx0XHQ/IChhIHx8ICgyID09PSBlLnJlamVjdGlvbiAmJiBLKGUpLCAoZS5yZWplY3Rpb24gPSAxKSksXG5cdFx0XHRcdFx0XHRcdFx0XHQhMCA9PT0gdSA/IChyID0gaSkgOiAobCAmJiBsLmVudGVyKCksIChyID0gdShpKSksIGwgJiYgKGwuZXhpdCgpLCAobyA9ICEwKSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ciA9PT0gdC5wcm9taXNlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gcyhuZXcgQignUHJvbWlzZS1jaGFpbiBjeWNsZScpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IChuID0gUShyKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGYobiwgciwgYywgcylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGMocikpXG5cdFx0XHRcdFx0XHRcdFx0OiBzKGkpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRsICYmICFvICYmIGwuZXhpdCgpLCBzKHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0eiA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHR0Lm5vdGlmaWVkIHx8XG5cdFx0XHRcdFx0XHRcdCgodC5ub3RpZmllZCA9ICEwKSxcblx0XHRcdFx0XHRcdFx0eChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciwgbiA9IHQucmVhY3Rpb25zOyAociA9IG4uZ2V0KCkpOyApIEgociwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0KHQubm90aWZpZWQgPSAhMSksIGUgJiYgIXQucmVqZWN0aW9uICYmIFYodCk7XG5cdFx0XHRcdFx0XHRcdH0pKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFkgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0dmFyIG4sIG87XG5cdFx0XHRcdFx0XHRHXG5cdFx0XHRcdFx0XHRcdD8gKCgobiA9IEYuY3JlYXRlRXZlbnQoJ0V2ZW50JykpLnByb21pc2UgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHQobi5yZWFzb24gPSByKSxcblx0XHRcdFx0XHRcdFx0XHRuLmluaXRFdmVudCh0LCAhMSwgITApLFxuXHRcdFx0XHRcdFx0XHRcdHMuZGlzcGF0Y2hFdmVudChuKSlcblx0XHRcdFx0XHRcdFx0OiAobiA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdHByb21pc2U6IGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRyZWFzb246IHIsXG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdCFUICYmIChvID0gc1snb24nICsgdF0pID8gbyhuKSA6IHQgPT09IHEgJiYgaygnVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgcik7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRWID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGYodywgcywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRyID0gdC5mYWNhZGUsXG5cdFx0XHRcdFx0XHRcdFx0biA9IHQudmFsdWU7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRKKHQpICYmXG5cdFx0XHRcdFx0XHRcdFx0KChlID0gUyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjID8gVS5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCBuLCByKSA6IFkocSwgciwgbik7XG5cdFx0XHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdFx0XHRcdCh0LnJlamVjdGlvbiA9IGMgfHwgSih0KSA/IDIgOiAxKSxcblx0XHRcdFx0XHRcdFx0XHRlLmVycm9yKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0dGhyb3cgZS52YWx1ZTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0SiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gMSAhPT0gdC5yZWplY3Rpb24gJiYgIXQucGFyZW50O1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0SyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRmKHcsIHMsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSB0LmZhY2FkZTtcblx0XHRcdFx0XHRcdFx0YyA/IFUuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIGUpIDogWSgncmVqZWN0aW9uaGFuZGxlZCcsIGUsIHQudmFsdWUpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRYID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAobikge1xuXHRcdFx0XHRcdFx0XHR0KGUsIG4sIHIpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFogPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0dC5kb25lIHx8ICgodC5kb25lID0gITApLCByICYmICh0ID0gciksICh0LnZhbHVlID0gZSksICh0LnN0YXRlID0gMiksIHoodCwgITApKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHR0ID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdGlmICghdC5kb25lKSB7XG5cdFx0XHRcdFx0XHRcdCh0LmRvbmUgPSAhMCksIHIgJiYgKHQgPSByKTtcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodC5mYWNhZGUgPT09IGUpIHRocm93IG5ldyBCKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSBRKGUpO1xuXHRcdFx0XHRcdFx0XHRcdG5cblx0XHRcdFx0XHRcdFx0XHRcdD8geChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkb25lOiAhMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmKG4sIGUsIFgodHQsIHIsIHQpLCBYKFosIHIsIHQpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRaKHIsIGUsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdDogKCh0LnZhbHVlID0gZSksICh0LnN0YXRlID0gMSksIHoodCwgITEpKTtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFooXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6ICExLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRJICYmXG5cdFx0XHRcdFx0KChXID0gKEEgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0bSh0aGlzLCBXKSwgZCh0KSwgZihuLCB0aGlzKTtcblx0XHRcdFx0XHRcdHZhciBlID0gJCh0aGlzKTtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHQoWCh0dCwgZSksIFgoWiwgZSkpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRaKGUsIHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0KChuID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdE4odGhpcywge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiBfLFxuXHRcdFx0XHRcdFx0XHRkb25lOiAhMSxcblx0XHRcdFx0XHRcdFx0bm90aWZpZWQ6ICExLFxuXHRcdFx0XHRcdFx0XHRwYXJlbnQ6ICExLFxuXHRcdFx0XHRcdFx0XHRyZWFjdGlvbnM6IG5ldyBFKCksXG5cdFx0XHRcdFx0XHRcdHJlamVjdGlvbjogITEsXG5cdFx0XHRcdFx0XHRcdHN0YXRlOiAwLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogdm9pZCAwLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSkucHJvdG90eXBlID0gbChXLCAndGhlbicsIGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9ICQodGhpcyksXG5cdFx0XHRcdFx0XHRcdG4gPSBNKGIodGhpcywgQSkpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0KHIucGFyZW50ID0gITApLFxuXHRcdFx0XHRcdFx0XHQobi5vayA9ICF5KHQpIHx8IHQpLFxuXHRcdFx0XHRcdFx0XHQobi5mYWlsID0geShlKSAmJiBlKSxcblx0XHRcdFx0XHRcdFx0KG4uZG9tYWluID0gYyA/IFUuZG9tYWluIDogdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0MCA9PT0gci5zdGF0ZVxuXHRcdFx0XHRcdFx0XHRcdD8gci5yZWFjdGlvbnMuYWRkKG4pXG5cdFx0XHRcdFx0XHRcdFx0OiB4KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0SChuLCByKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRuLnByb21pc2Vcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdChvID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSBuZXcgbigpLFxuXHRcdFx0XHRcdFx0XHRlID0gJCh0KTtcblx0XHRcdFx0XHRcdCh0aGlzLnByb21pc2UgPSB0KSwgKHRoaXMucmVzb2x2ZSA9IFgodHQsIGUpKSwgKHRoaXMucmVqZWN0ID0gWChaLCBlKSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KEwuZiA9IE0gPVxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgPT09IEEgfHwgdW5kZWZpbmVkID09PSB0ID8gbmV3IG8odCkgOiBEKHQpO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0IXUgJiYgeShQKSAmJiBDICE9PSBPYmplY3QucHJvdG90eXBlKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHQoaSA9IEMudGhlbiksXG5cdFx0XHRcdFx0XHRSIHx8XG5cdFx0XHRcdFx0XHRcdGwoXG5cdFx0XHRcdFx0XHRcdFx0Qyxcblx0XHRcdFx0XHRcdFx0XHQndGhlbicsXG5cdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgQShmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmKGksIHIsIHQsIGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSkudGhlbih0LCBlKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHt1bnNhZmU6ICEwfVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRkZWxldGUgQy5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdHAgJiYgcChDLCBXKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGdsb2JhbDogITAsXG5cdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHR3cmFwOiAhMCxcblx0XHRcdFx0XHRcdGZvcmNlZDogSSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtQcm9taXNlOiBBfVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRcdGgoQSwgXywgITEsICEwKSxcblx0XHRcdFx0XHR2KF8pO1xuXHRcdFx0fSxcblx0XHRcdDM5NjQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHIoNjY5NyksIHIoMTY5MiksIHIoNTA4OSksIHIoODgyOSksIHIoMjA5MiksIHIoNzkwNSk7XG5cdFx0XHR9LFxuXHRcdFx0ODgyOTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDI2MTUpLFxuXHRcdFx0XHRcdGkgPSByKDUwOSksXG5cdFx0XHRcdFx0YSA9IHIoODc0MiksXG5cdFx0XHRcdFx0dSA9IHIoOTMwMiksXG5cdFx0XHRcdFx0YyA9IHIoODczNCk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ1Byb21pc2UnLCBzdGF0OiAhMCwgZm9yY2VkOiByKDU2Mil9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHJhY2U6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0XHRyID0gYS5mKGUpLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSByLnJlamVjdCxcblx0XHRcdFx0XHRcdFx0XHRzID0gdShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgYSA9IGkoZS5yZXNvbHZlKTtcblx0XHRcdFx0XHRcdFx0XHRcdGModCwgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0byhhLCBlLCB0KS50aGVuKHIucmVzb2x2ZSwgbik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHMuZXJyb3IgJiYgbihzLnZhbHVlKSwgci5wcm9taXNlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MjA5MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDI2MTUpLFxuXHRcdFx0XHRcdGkgPSByKDg3NDIpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogITAsIGZvcmNlZDogcig3MDczKS5DT05TVFJVQ1RPUn0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0cmVqZWN0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGkuZih0aGlzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8oZS5yZWplY3QsIHZvaWQgMCwgdCksIGUucHJvbWlzZTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDc5MDU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig2MDU4KSxcblx0XHRcdFx0XHRpID0gcigzOTMxKSxcblx0XHRcdFx0XHRhID0gcig3OTE5KSxcblx0XHRcdFx0XHR1ID0gcig3MDczKS5DT05TVFJVQ1RPUixcblx0XHRcdFx0XHRjID0gcigyOTQ1KSxcblx0XHRcdFx0XHRzID0gbygnUHJvbWlzZScpLFxuXHRcdFx0XHRcdGYgPSBpICYmICF1O1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogITAsIGZvcmNlZDogaSB8fCB1fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRyZXNvbHZlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYyhmICYmIHRoaXMgPT09IHMgPyBhIDogdGhpcywgdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ1MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDYwNTgpLFxuXHRcdFx0XHRcdGkgPSByKDE3MzUpLFxuXHRcdFx0XHRcdGEgPSByKDY3NjEpLFxuXHRcdFx0XHRcdHUgPSByKDI2NTUpLFxuXHRcdFx0XHRcdGMgPSByKDUwMjcpLFxuXHRcdFx0XHRcdHMgPSByKDg5OTkpLFxuXHRcdFx0XHRcdGYgPSByKDUzOTEpLFxuXHRcdFx0XHRcdGwgPSByKDM2ODkpLFxuXHRcdFx0XHRcdHAgPSBvKCdSZWZsZWN0JywgJ2NvbnN0cnVjdCcpLFxuXHRcdFx0XHRcdGggPSBPYmplY3QucHJvdG90eXBlLFxuXHRcdFx0XHRcdHYgPSBbXS5wdXNoLFxuXHRcdFx0XHRcdGQgPSBsKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7fVxuXHRcdFx0XHRcdFx0cmV0dXJuICEocChmdW5jdGlvbiAoKSB7fSwgW10sIHQpIGluc3RhbmNlb2YgdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0eSA9ICFsKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHAoZnVuY3Rpb24gKCkge30pO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGcgPSBkIHx8IHk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ1JlZmxlY3QnLCBzdGF0OiAhMCwgZm9yY2VkOiBnLCBzaGFtOiBnfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRjb25zdHJ1Y3Q6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdHUodCksIGMoZSk7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0IDogdShhcmd1bWVudHNbMl0pO1xuXHRcdFx0XHRcdFx0XHRpZiAoeSAmJiAhZCkgcmV0dXJuIHAodCwgZSwgcik7XG5cdFx0XHRcdFx0XHRcdGlmICh0ID09PSByKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChlLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IHQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyB0KGVbMF0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IHQoZVswXSwgZVsxXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgdChlWzBdLCBlWzFdLCBlWzJdKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyB0KGVbMF0sIGVbMV0sIGVbMl0sIGVbM10pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IFtudWxsXTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh2LCBuLCBlKSwgbmV3IChpKGEsIHQsIG4pKSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gci5wcm90b3R5cGUsXG5cdFx0XHRcdFx0XHRcdFx0bCA9IGYocyhvKSA/IG8gOiBoKSxcblx0XHRcdFx0XHRcdFx0XHRnID0gaSh0LCBsLCBlKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHMoZykgPyBnIDogbDtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDYwMzQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5MDM3KSxcblx0XHRcdFx0XHRpID0gcig1OTk3KTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRnbG9iYWw6ICEwLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1JlZmxlY3Q6IHt9fVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRcdGkoby5SZWZsZWN0LCAnUmVmbGVjdCcsICEwKTtcblx0XHRcdH0sXG5cdFx0XHQyMDAzOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzY5NyksXG5cdFx0XHRcdFx0byA9IHIoOTAzNyksXG5cdFx0XHRcdFx0aSA9IHIoODg0NCksXG5cdFx0XHRcdFx0YSA9IHIoNTI2NiksXG5cdFx0XHRcdFx0dSA9IHIoMzQ1NyksXG5cdFx0XHRcdFx0YyA9IHIoNTc3MyksXG5cdFx0XHRcdFx0cyA9IHIoMjc0MSkuZixcblx0XHRcdFx0XHRmID0gcigzNjIyKSxcblx0XHRcdFx0XHRsID0gcigxMjQ1KSxcblx0XHRcdFx0XHRwID0gcig0MzI3KSxcblx0XHRcdFx0XHRoID0gcigzNDc3KSxcblx0XHRcdFx0XHR2ID0gcig3OTAxKSxcblx0XHRcdFx0XHRkID0gcig4MDU1KSxcblx0XHRcdFx0XHR5ID0gcigxODgwKSxcblx0XHRcdFx0XHRnID0gcigzNjg5KSxcblx0XHRcdFx0XHRtID0gcig2ODEyKSxcblx0XHRcdFx0XHRiID0gcig2MTgpLmVuZm9yY2UsXG5cdFx0XHRcdFx0dyA9IHIoNDI0MSksXG5cdFx0XHRcdFx0eCA9IHIoNDIwMSksXG5cdFx0XHRcdFx0ayA9IHIoMjEwMCksXG5cdFx0XHRcdFx0UyA9IHIoNjQyMiksXG5cdFx0XHRcdFx0RSA9IHgoJ21hdGNoJyksXG5cdFx0XHRcdFx0TyA9IG8uUmVnRXhwLFxuXHRcdFx0XHRcdFAgPSBPLnByb3RvdHlwZSxcblx0XHRcdFx0XHRqID0gby5TeW50YXhFcnJvcixcblx0XHRcdFx0XHRMID0gaShQLmV4ZWMpLFxuXHRcdFx0XHRcdF8gPSBpKCcnLmNoYXJBdCksXG5cdFx0XHRcdFx0SSA9IGkoJycucmVwbGFjZSksXG5cdFx0XHRcdFx0VCA9IGkoJycuaW5kZXhPZiksXG5cdFx0XHRcdFx0UiA9IGkoJycuc2xpY2UpLFxuXHRcdFx0XHRcdCQgPSAvXlxcPzxbXlxcc1xcZCEjJSYqKzw9PkBeXVteXFxzISMlJiorPD0+QF5dKj4vLFxuXHRcdFx0XHRcdE4gPSAvYS9nLFxuXHRcdFx0XHRcdEMgPSAvYS9nLFxuXHRcdFx0XHRcdEEgPSBuZXcgTyhOKSAhPT0gTixcblx0XHRcdFx0XHRXID0gdi5NSVNTRURfU1RJQ0tZLFxuXHRcdFx0XHRcdEIgPSB2LlVOU1VQUE9SVEVEX1ksXG5cdFx0XHRcdFx0RiA9XG5cdFx0XHRcdFx0XHRuICYmXG5cdFx0XHRcdFx0XHQoIUEgfHxcblx0XHRcdFx0XHRcdFx0VyB8fFxuXHRcdFx0XHRcdFx0XHRrIHx8XG5cdFx0XHRcdFx0XHRcdFMgfHxcblx0XHRcdFx0XHRcdFx0ZyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChDW0VdID0gITEpLCBPKE4pICE9PSBOIHx8IE8oQykgPT09IEMgfHwgJy9hL2knICE9PSBTdHJpbmcoTyhOLCAnaScpKTtcblx0XHRcdFx0XHRcdFx0fSkpO1xuXHRcdFx0XHRpZiAoYSgnUmVnRXhwJywgRikpIHtcblx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0dmFyIFUgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0XHRcdHMsXG5cdFx0XHRcdFx0XHRcdFx0XHR2ID0gZihQLCB0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRcdGQgPSBsKHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0eSA9IHZvaWQgMCA9PT0gZSxcblx0XHRcdFx0XHRcdFx0XHRcdGcgPSBbXSxcblx0XHRcdFx0XHRcdFx0XHRcdHcgPSB0O1xuXHRcdFx0XHRcdFx0XHRcdGlmICghdiAmJiBkICYmIHkgJiYgdC5jb25zdHJ1Y3RvciA9PT0gVSkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0KChkIHx8IGYoUCwgdCkpICYmICgodCA9IHQuc291cmNlKSwgeSAmJiAoZSA9IGgodykpKSxcblx0XHRcdFx0XHRcdFx0XHRcdCh0ID0gdm9pZCAwID09PSB0ID8gJycgOiBwKHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdChlID0gdm9pZCAwID09PSBlID8gJycgOiBwKGUpKSxcblx0XHRcdFx0XHRcdFx0XHRcdCh3ID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRrICYmICgnZG90QWxsJyBpbiBOKSAmJiAobiA9ICEhZSAmJiBUKGUsICdzJykgPiAtMSkgJiYgKGUgPSBJKGUsIC9zL2csICcnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHQociA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0VyAmJiAoJ3N0aWNreScgaW4gTikgJiYgKG8gPSAhIWUgJiYgVChlLCAneScpID4gLTEpICYmIEIgJiYgKGUgPSBJKGUsIC95L2csICcnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRTICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgoaSA9IChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuID0gMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byA9ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpID0gW10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSB7fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dSA9ICExLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjID0gITEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHMgPSAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuIDw9IHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuKytcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnXFxcXCcgPT09IChlID0gXyh0LCBuKSkpIGUgKz0gXyh0LCArK24pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ10nID09PSBlKSB1ID0gITE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmICghdSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICghMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ1snID09PSBlOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dSA9ICEwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnKCcgPT09IGU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRMKCQsIFIodCwgbiArIDEpKSAmJiAoKG4gKz0gMiksIChjID0gITApKSwgKG8gKz0gZSksIHMrKztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJz4nID09PSBlICYmIGM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJycgPT09IGYgfHwgbShhLCBmKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IGooJ0ludmFsaWQgY2FwdHVyZSBncm91cCBuYW1lJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoYVtmXSA9ICEwKSwgKGlbaS5sZW5ndGhdID0gW2YsIHNdKSwgKGMgPSAhMSksIChmID0gJycpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGMgPyAoZiArPSBlKSA6IChvICs9IGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gW28sIGldO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KSh0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCh0ID0gaVswXSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChnID0gaVsxXSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KGEgPSB1KE8odCwgZSksIHYgPyB0aGlzIDogUCwgVSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KG4gfHwgbyB8fCBnLmxlbmd0aCkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0KChzID0gYihhKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKHMuZG90QWxsID0gITApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnJhdyA9IFUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSwgciA9IHQubGVuZ3RoLCBuID0gMCwgbyA9ICcnLCBpID0gITE7IG4gPD0gcjsgbisrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdcXFxcJyAhPT0gKGUgPSBfKHQsIG4pKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBpIHx8ICcuJyAhPT0gZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgnWycgPT09IGUgPyAoaSA9ICEwKSA6ICddJyA9PT0gZSAmJiAoaSA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobyArPSBlKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAobyArPSAnW1xcXFxzXFxcXFNdJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogKG8gKz0gZSArIF8odCwgKytuKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkodCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvICYmIChzLnN0aWNreSA9ICEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zy5sZW5ndGggJiYgKHMuZ3JvdXBzID0gZykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gdylcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjKGEsICdzb3VyY2UnLCAnJyA9PT0gdyA/ICcoPzopJyA6IHcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0TSA9IHMoTyksXG5cdFx0XHRcdFx0XHRcdEQgPSAwO1xuXHRcdFx0XHRcdFx0TS5sZW5ndGggPiBEO1xuXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0ZChVLCBPLCBNW0QrK10pO1xuXHRcdFx0XHRcdChQLmNvbnN0cnVjdG9yID0gVSksIChVLnByb3RvdHlwZSA9IFApLCB5KG8sICdSZWdFeHAnLCBVLCB7Y29uc3RydWN0b3I6ICEwfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dygnUmVnRXhwJyk7XG5cdFx0XHR9LFxuXHRcdFx0ODUxODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDIxMDApLFxuXHRcdFx0XHRcdGkgPSByKDY2NDgpLFxuXHRcdFx0XHRcdGEgPSByKDIxNDgpLFxuXHRcdFx0XHRcdHUgPSByKDYxOCkuZ2V0LFxuXHRcdFx0XHRcdGMgPSBSZWdFeHAucHJvdG90eXBlLFxuXHRcdFx0XHRcdHMgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdG4gJiZcblx0XHRcdFx0XHRvICYmXG5cdFx0XHRcdFx0YShjLCAnZG90QWxsJywge1xuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcyAhPT0gYykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgnUmVnRXhwJyA9PT0gaSh0aGlzKSkgcmV0dXJuICEhdSh0aGlzKS5kb3RBbGw7XG5cdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IHMoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgUmVnRXhwIHJlcXVpcmVkJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NDA0MzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDYzMDgpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ1JlZ0V4cCcsXG5cdFx0XHRcdFx0XHRwcm90bzogITAsXG5cdFx0XHRcdFx0XHRmb3JjZWQ6IC8uLy5leGVjICE9PSBvLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e2V4ZWM6IG99XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MzQ0MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDc5MDEpLk1JU1NFRF9TVElDS1ksXG5cdFx0XHRcdFx0aSA9IHIoNjY0OCksXG5cdFx0XHRcdFx0YSA9IHIoMjE0OCksXG5cdFx0XHRcdFx0dSA9IHIoNjE4KS5nZXQsXG5cdFx0XHRcdFx0YyA9IFJlZ0V4cC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0cyA9IFR5cGVFcnJvcjtcblx0XHRcdFx0biAmJlxuXHRcdFx0XHRcdG8gJiZcblx0XHRcdFx0XHRhKGMsICdzdGlja3knLCB7XG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6ICEwLFxuXHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzICE9PSBjKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCdSZWdFeHAnID09PSBpKHRoaXMpKSByZXR1cm4gISF1KHRoaXMpLnN0aWNreTtcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgcygnSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBSZWdFeHAgcmVxdWlyZWQnKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ3NDA5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDQwNDMpO1xuXHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdGkgPSByKDk5ODkpLFxuXHRcdFx0XHRcdGEgPSByKDI2MTUpLFxuXHRcdFx0XHRcdHUgPSByKDk5ODUpLFxuXHRcdFx0XHRcdGMgPSByKDUwMjcpLFxuXHRcdFx0XHRcdHMgPSByKDQzMjcpLFxuXHRcdFx0XHRcdGYgPVxuXHRcdFx0XHRcdFx0KChuID0gITEpLFxuXHRcdFx0XHRcdFx0KChvID0gL1thY10vKS5leGVjID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKG4gPSAhMCksIC8uLy5leGVjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCEwID09PSBvLnRlc3QoJ2FiYycpICYmIG4pLFxuXHRcdFx0XHRcdGwgPSAvLi8udGVzdDtcblx0XHRcdFx0aShcblx0XHRcdFx0XHR7dGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86ICEwLCBmb3JjZWQ6ICFmfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0ZXN0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGModGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IHModCksXG5cdFx0XHRcdFx0XHRcdFx0biA9IGUuZXhlYztcblx0XHRcdFx0XHRcdFx0aWYgKCF1KG4pKSByZXR1cm4gYShsLCBlLCByKTtcblx0XHRcdFx0XHRcdFx0dmFyIG8gPSBhKG4sIGUsIHIpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbnVsbCAhPT0gbyAmJiAoYyhvKSwgITApO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MjgyNjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDEyMzYpLlBST1BFUixcblx0XHRcdFx0XHRvID0gcigxODgwKSxcblx0XHRcdFx0XHRpID0gcig1MDI3KSxcblx0XHRcdFx0XHRhID0gcig0MzI3KSxcblx0XHRcdFx0XHR1ID0gcigzNjg5KSxcblx0XHRcdFx0XHRjID0gcigzNDc3KSxcblx0XHRcdFx0XHRzID0gJ3RvU3RyaW5nJyxcblx0XHRcdFx0XHRmID0gUmVnRXhwLnByb3RvdHlwZVtzXSxcblx0XHRcdFx0XHRsID0gdShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQnL2EvYicgIT09XG5cdFx0XHRcdFx0XHRcdGYuY2FsbCh7XG5cdFx0XHRcdFx0XHRcdFx0c291cmNlOiAnYScsXG5cdFx0XHRcdFx0XHRcdFx0ZmxhZ3M6ICdiJyxcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0cCA9IG4gJiYgZi5uYW1lICE9PSBzO1xuXHRcdFx0XHQobCB8fCBwKSAmJlxuXHRcdFx0XHRcdG8oXG5cdFx0XHRcdFx0XHRSZWdFeHAucHJvdG90eXBlLFxuXHRcdFx0XHRcdFx0cyxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSBpKHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJy8nICsgYSh0LnNvdXJjZSkgKyAnLycgKyBhKGModCkpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHt1bnNhZmU6ICEwfVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0Mzg0MzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDIxMjQpLFxuXHRcdFx0XHRcdGEgPSByKDQ2ODQpLFxuXHRcdFx0XHRcdHUgPSByKDQzMjcpLFxuXHRcdFx0XHRcdGMgPSByKDc0MTMpLFxuXHRcdFx0XHRcdHMgPSBvKCcnLmluZGV4T2YpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogITAsIGZvcmNlZDogIWMoJ2luY2x1ZGVzJyl9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluY2x1ZGVzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gISF+cyh1KGEodGhpcykpLCB1KGkodCkpLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQxNjk0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzMwKS5jaGFyQXQsXG5cdFx0XHRcdFx0byA9IHIoNDMyNyksXG5cdFx0XHRcdFx0aSA9IHIoNjE4KSxcblx0XHRcdFx0XHRhID0gcigxOTM0KSxcblx0XHRcdFx0XHR1ID0gcig3ODA3KSxcblx0XHRcdFx0XHRjID0gJ1N0cmluZyBJdGVyYXRvcicsXG5cdFx0XHRcdFx0cyA9IGkuc2V0LFxuXHRcdFx0XHRcdGYgPSBpLmdldHRlckZvcihjKTtcblx0XHRcdFx0YShcblx0XHRcdFx0XHRTdHJpbmcsXG5cdFx0XHRcdFx0J1N0cmluZycsXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHModGhpcywge3R5cGU6IGMsIHN0cmluZzogbyh0KSwgaW5kZXg6IDB9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0LFxuXHRcdFx0XHRcdFx0XHRlID0gZih0aGlzKSxcblx0XHRcdFx0XHRcdFx0ciA9IGUuc3RyaW5nLFxuXHRcdFx0XHRcdFx0XHRvID0gZS5pbmRleDtcblx0XHRcdFx0XHRcdHJldHVybiBvID49IHIubGVuZ3RoID8gdSh2b2lkIDAsICEwKSA6ICgodCA9IG4ociwgbykpLCAoZS5pbmRleCArPSB0Lmxlbmd0aCksIHUodCwgITEpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MjQ2MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2MTUpLFxuXHRcdFx0XHRcdG8gPSByKDg2NzgpLFxuXHRcdFx0XHRcdGkgPSByKDUwMjcpLFxuXHRcdFx0XHRcdGEgPSByKDk4MSksXG5cdFx0XHRcdFx0dSA9IHIoMzEyNiksXG5cdFx0XHRcdFx0YyA9IHIoNDMyNyksXG5cdFx0XHRcdFx0cyA9IHIoNDY4NCksXG5cdFx0XHRcdFx0ZiA9IHIoNDg0OSksXG5cdFx0XHRcdFx0bCA9IHIoMTUxNCksXG5cdFx0XHRcdFx0cCA9IHIoNjEwMCk7XG5cdFx0XHRcdG8oJ21hdGNoJywgZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHIgPSBzKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdG8gPSBhKGUpID8gdm9pZCAwIDogZihlLCB0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8gPyBuKG8sIGUsIHIpIDogbmV3IFJlZ0V4cChlKVt0XShjKHIpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgbiA9IGkodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0byA9IGModCksXG5cdFx0XHRcdFx0XHRcdFx0YSA9IHIoZSwgbiwgbyk7XG5cdFx0XHRcdFx0XHRcdGlmIChhLmRvbmUpIHJldHVybiBhLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRpZiAoIW4uZ2xvYmFsKSByZXR1cm4gcChuLCBvKTtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBuLnVuaWNvZGU7XG5cdFx0XHRcdFx0XHRcdG4ubGFzdEluZGV4ID0gMDtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZiwgaCA9IFtdLCB2ID0gMDsgbnVsbCAhPT0gKGYgPSBwKG4sIG8pKTsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBjKGZbMF0pO1xuXHRcdFx0XHRcdFx0XHRcdChoW3ZdID0gZCksICcnID09PSBkICYmIChuLmxhc3RJbmRleCA9IGwobywgdShuLmxhc3RJbmRleCksIHMpKSwgdisrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiAwID09PSB2ID8gbnVsbCA6IGg7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDcyNjc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigxNzM1KSxcblx0XHRcdFx0XHRvID0gcigyNjE1KSxcblx0XHRcdFx0XHRpID0gcig4ODQ0KSxcblx0XHRcdFx0XHRhID0gcig4Njc4KSxcblx0XHRcdFx0XHR1ID0gcigzNjg5KSxcblx0XHRcdFx0XHRjID0gcig1MDI3KSxcblx0XHRcdFx0XHRzID0gcig5OTg1KSxcblx0XHRcdFx0XHRmID0gcig5ODEpLFxuXHRcdFx0XHRcdGwgPSByKDg3MDApLFxuXHRcdFx0XHRcdHAgPSByKDMxMjYpLFxuXHRcdFx0XHRcdGggPSByKDQzMjcpLFxuXHRcdFx0XHRcdHYgPSByKDQ2ODQpLFxuXHRcdFx0XHRcdGQgPSByKDE1MTQpLFxuXHRcdFx0XHRcdHkgPSByKDQ4NDkpLFxuXHRcdFx0XHRcdGcgPSByKDcwMTcpLFxuXHRcdFx0XHRcdG0gPSByKDYxMDApLFxuXHRcdFx0XHRcdGIgPSByKDQyMDEpKCdyZXBsYWNlJyksXG5cdFx0XHRcdFx0dyA9IE1hdGgubWF4LFxuXHRcdFx0XHRcdHggPSBNYXRoLm1pbixcblx0XHRcdFx0XHRrID0gaShbXS5jb25jYXQpLFxuXHRcdFx0XHRcdFMgPSBpKFtdLnB1c2gpLFxuXHRcdFx0XHRcdEUgPSBpKCcnLmluZGV4T2YpLFxuXHRcdFx0XHRcdE8gPSBpKCcnLnNsaWNlKSxcblx0XHRcdFx0XHRQID0gJyQwJyA9PT0gJ2EnLnJlcGxhY2UoLy4vLCAnJDAnKSxcblx0XHRcdFx0XHRqID0gISEvLi9bYl0gJiYgJycgPT09IC8uL1tiXSgnYScsICckMCcpO1xuXHRcdFx0XHRhKFxuXHRcdFx0XHRcdCdyZXBsYWNlJyxcblx0XHRcdFx0XHRmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0dmFyIGkgPSBqID8gJyQnIDogJyQwJztcblx0XHRcdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCByKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSB2KHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0aSA9IGYodCkgPyB2b2lkIDAgOiB5KHQsIGIpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBpID8gbyhpLCB0LCBuLCByKSA6IG8oZSwgaChuKSwgdCwgcik7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGEgPSBjKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dSA9IGgodCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCdzdHJpbmcnID09IHR5cGVvZiBvICYmIC0xID09PSBFKG8sIGkpICYmIC0xID09PSBFKG8sICckPCcpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZiA9IHIoZSwgYSwgdSwgbyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZi5kb25lKSByZXR1cm4gZi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHYgPSBzKG8pO1xuXHRcdFx0XHRcdFx0XHRcdHYgfHwgKG8gPSBoKG8pKTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgeSxcblx0XHRcdFx0XHRcdFx0XHRcdGIgPSBhLmdsb2JhbDtcblx0XHRcdFx0XHRcdFx0XHRiICYmICgoeSA9IGEudW5pY29kZSksIChhLmxhc3RJbmRleCA9IDApKTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBQLCBqID0gW107IG51bGwgIT09IChQID0gbShhLCB1KSkgJiYgKFMoaiwgUCksIGIpOyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdCcnID09PSBoKFBbMF0pICYmIChhLmxhc3RJbmRleCA9IGQodSwgcChhLmxhc3RJbmRleCksIHkpKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgTCwgXyA9ICcnLCBJID0gMCwgVCA9IDA7IFQgPCBqLmxlbmd0aDsgVCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgUiwgJCA9IGgoKFAgPSBqW1RdKVswXSksIE4gPSB3KHgobChQLmluZGV4KSwgdS5sZW5ndGgpLCAwKSwgQyA9IFtdLCBBID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0QSA8IFAubGVuZ3RoO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRBKytcblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0UyhDLCB2b2lkIDAgPT09IChMID0gUFtBXSkgPyBMIDogU3RyaW5nKEwpKTtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBXID0gUC5ncm91cHM7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgQiA9IGsoWyRdLCBDLCBOLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dm9pZCAwICE9PSBXICYmIFMoQiwgVyksIChSID0gaChuKG8sIHZvaWQgMCwgQikpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBSID0gZygkLCB1LCBOLCBDLCBXLCBvKTtcblx0XHRcdFx0XHRcdFx0XHRcdE4gPj0gSSAmJiAoKF8gKz0gTyh1LCBJLCBOKSArIFIpLCAoSSA9IE4gKyAkLmxlbmd0aCkpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gXyArIE8odSwgSSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ISF1KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gLy4vO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0KHQuZXhlYyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQodC5ncm91cHMgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGE6ICc3Jyxcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHQnNycgIT09ICcnLnJlcGxhY2UodCwgJyQ8YT4nKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSB8fFxuXHRcdFx0XHRcdFx0IVAgfHxcblx0XHRcdFx0XHRcdGpcblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ4NDM2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMTQzNSkudHJpbTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86ICEwLCBmb3JjZWQ6IHIoNTk4NCkoJ3RyaW0nKX0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dHJpbTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbyh0aGlzKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDgzNzM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHIoNTQwNSkoJ2FzeW5jSXRlcmF0b3InKTtcblx0XHRcdH0sXG5cdFx0XHQ3ODU1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoOTAzNyksXG5cdFx0XHRcdFx0aSA9IHIoMjYxNSksXG5cdFx0XHRcdFx0YSA9IHIoODg0NCksXG5cdFx0XHRcdFx0dSA9IHIoMzkzMSksXG5cdFx0XHRcdFx0YyA9IHIoNzY5NyksXG5cdFx0XHRcdFx0cyA9IHIoMTQ2KSxcblx0XHRcdFx0XHRmID0gcigzNjg5KSxcblx0XHRcdFx0XHRsID0gcig2ODEyKSxcblx0XHRcdFx0XHRwID0gcigzNjIyKSxcblx0XHRcdFx0XHRoID0gcig1MDI3KSxcblx0XHRcdFx0XHR2ID0gcig1MjkwKSxcblx0XHRcdFx0XHRkID0gcig4MzYwKSxcblx0XHRcdFx0XHR5ID0gcig0MzI3KSxcblx0XHRcdFx0XHRnID0gcig1Njg0KSxcblx0XHRcdFx0XHRtID0gcig1MzkxKSxcblx0XHRcdFx0XHRiID0gcigzMDApLFxuXHRcdFx0XHRcdHcgPSByKDI3NDEpLFxuXHRcdFx0XHRcdHggPSByKDYwNjIpLFxuXHRcdFx0XHRcdGsgPSByKDc1MTgpLFxuXHRcdFx0XHRcdFMgPSByKDI0NzQpLFxuXHRcdFx0XHRcdEUgPSByKDI1NjApLFxuXHRcdFx0XHRcdE8gPSByKDg5MjApLFxuXHRcdFx0XHRcdFAgPSByKDk1NTYpLFxuXHRcdFx0XHRcdGogPSByKDE4ODApLFxuXHRcdFx0XHRcdEwgPSByKDIxNDgpLFxuXHRcdFx0XHRcdF8gPSByKDM0MzApLFxuXHRcdFx0XHRcdEkgPSByKDI3MTMpLFxuXHRcdFx0XHRcdFQgPSByKDcyNDgpLFxuXHRcdFx0XHRcdFIgPSByKDQ2MzApLFxuXHRcdFx0XHRcdCQgPSByKDQyMDEpLFxuXHRcdFx0XHRcdE4gPSByKDYxNDUpLFxuXHRcdFx0XHRcdEMgPSByKDU0MDUpLFxuXHRcdFx0XHRcdEEgPSByKDMwMzIpLFxuXHRcdFx0XHRcdFcgPSByKDU5OTcpLFxuXHRcdFx0XHRcdEIgPSByKDYxOCksXG5cdFx0XHRcdFx0RiA9IHIoMjk2MCkuZm9yRWFjaCxcblx0XHRcdFx0XHRVID0gSSgnaGlkZGVuJyksXG5cdFx0XHRcdFx0TSA9ICdTeW1ib2wnLFxuXHRcdFx0XHRcdEQgPSAncHJvdG90eXBlJyxcblx0XHRcdFx0XHRHID0gQi5zZXQsXG5cdFx0XHRcdFx0cSA9IEIuZ2V0dGVyRm9yKE0pLFxuXHRcdFx0XHRcdFEgPSBPYmplY3RbRF0sXG5cdFx0XHRcdFx0SCA9IG8uU3ltYm9sLFxuXHRcdFx0XHRcdHogPSBIICYmIEhbRF0sXG5cdFx0XHRcdFx0WSA9IG8uUmFuZ2VFcnJvcixcblx0XHRcdFx0XHRWID0gby5UeXBlRXJyb3IsXG5cdFx0XHRcdFx0SiA9IG8uUU9iamVjdCxcblx0XHRcdFx0XHRLID0gUy5mLFxuXHRcdFx0XHRcdFggPSBFLmYsXG5cdFx0XHRcdFx0WiA9IHguZixcblx0XHRcdFx0XHR0dCA9IFAuZixcblx0XHRcdFx0XHRldCA9IGEoW10ucHVzaCksXG5cdFx0XHRcdFx0cnQgPSBfKCdzeW1ib2xzJyksXG5cdFx0XHRcdFx0bnQgPSBfKCdvcC1zeW1ib2xzJyksXG5cdFx0XHRcdFx0b3QgPSBfKCd3a3MnKSxcblx0XHRcdFx0XHRpdCA9ICFKIHx8ICFKW0RdIHx8ICFKW0RdLmZpbmRDaGlsZCxcblx0XHRcdFx0XHRhdCA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbiA9IEsoUSwgZSk7XG5cdFx0XHRcdFx0XHRuICYmIGRlbGV0ZSBRW2VdLCBYKHQsIGUsIHIpLCBuICYmIHQgIT09IFEgJiYgWChRLCBlLCBuKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHV0ID1cblx0XHRcdFx0XHRcdGMgJiZcblx0XHRcdFx0XHRcdGYoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdDcgIT09XG5cdFx0XHRcdFx0XHRcdFx0bShcblx0XHRcdFx0XHRcdFx0XHRcdFgoe30sICdhJywge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gWCh0aGlzLCAnYScsIHt2YWx1ZTogN30pLmE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdCkuYVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0PyBhdFxuXHRcdFx0XHRcdFx0XHQ6IFgsXG5cdFx0XHRcdFx0Y3QgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSAocnRbdF0gPSBtKHopKTtcblx0XHRcdFx0XHRcdHJldHVybiBHKHIsIHt0eXBlOiBNLCB0YWc6IHQsIGRlc2NyaXB0aW9uOiBlfSksIGMgfHwgKHIuZGVzY3JpcHRpb24gPSBlKSwgcjtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN0ID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHQgPT09IFEgJiYgc3QobnQsIGUsIHIpLCBoKHQpO1xuXHRcdFx0XHRcdFx0dmFyIG4gPSBkKGUpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0aChyKSxcblx0XHRcdFx0XHRcdFx0bChydCwgbilcblx0XHRcdFx0XHRcdFx0XHQ/IChyLmVudW1lcmFibGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAobCh0LCBVKSAmJiB0W1VdW25dICYmICh0W1VdW25dID0gITEpLCAociA9IG0ociwge2VudW1lcmFibGU6IGcoMCwgITEpfSkpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IChsKHQsIFUpIHx8IFgodCwgVSwgZygxLCB7fSkpLCAodFtVXVtuXSA9ICEwKSksXG5cdFx0XHRcdFx0XHRcdFx0XHR1dCh0LCBuLCByKSlcblx0XHRcdFx0XHRcdFx0XHQ6IFgodCwgbiwgcilcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmdCA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRoKHQpO1xuXHRcdFx0XHRcdFx0dmFyIHIgPSB2KGUpLFxuXHRcdFx0XHRcdFx0XHRuID0gYihyKS5jb25jYXQodnQocikpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0RihuLCBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdChjICYmICFpKGx0LCByLCBlKSkgfHwgc3QodCwgZSwgcltlXSk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bHQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBkKHQpLFxuXHRcdFx0XHRcdFx0XHRyID0gaSh0dCwgdGhpcywgZSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQhKHRoaXMgPT09IFEgJiYgbChydCwgZSkgJiYgIWwobnQsIGUpKSAmJlxuXHRcdFx0XHRcdFx0XHQoIShyIHx8ICFsKHRoaXMsIGUpIHx8ICFsKHJ0LCBlKSB8fCAobCh0aGlzLCBVKSAmJiB0aGlzW1VdW2VdKSkgfHwgcilcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwdCA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IHYodCksXG5cdFx0XHRcdFx0XHRcdG4gPSBkKGUpO1xuXHRcdFx0XHRcdFx0aWYgKHIgIT09IFEgfHwgIWwocnQsIG4pIHx8IGwobnQsIG4pKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gSyhyLCBuKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICFvIHx8ICFsKHJ0LCBuKSB8fCAobChyLCBVKSAmJiByW1VdW25dKSB8fCAoby5lbnVtZXJhYmxlID0gITApLCBvO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0aHQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBaKHYodCkpLFxuXHRcdFx0XHRcdFx0XHRyID0gW107XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRGKGUsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0bChydCwgdCkgfHwgbChULCB0KSB8fCBldChyLCB0KTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdHJcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR2dCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IHQgPT09IFEsXG5cdFx0XHRcdFx0XHRcdHIgPSBaKGUgPyBudCA6IHYodCkpLFxuXHRcdFx0XHRcdFx0XHRuID0gW107XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRGKHIsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0IWwocnQsIHQpIHx8IChlICYmICFsKFEsIHQpKSB8fCBldChuLCBydFt0XSk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRuXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHMgfHxcblx0XHRcdFx0XHQoKEggPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRpZiAocCh6LCB0aGlzKSkgdGhyb3cgbmV3IFYoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvcicpO1xuXHRcdFx0XHRcdFx0dmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8geShhcmd1bWVudHNbMF0pIDogdm9pZCAwLFxuXHRcdFx0XHRcdFx0XHRlID0gUih0KSxcblx0XHRcdFx0XHRcdFx0ciA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSB2b2lkIDAgPT09IHRoaXMgPyBvIDogdGhpcztcblx0XHRcdFx0XHRcdFx0XHRuID09PSBRICYmIGkociwgbnQsIHQpLCBsKG4sIFUpICYmIGwobltVXSwgZSkgJiYgKG5bVV1bZV0gPSAhMSk7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGEgPSBnKDEsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1dChuLCBlLCBhKTtcblx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISh0IGluc3RhbmNlb2YgWSkpIHRocm93IHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdChuLCBlLCBhKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gYyAmJiBpdCAmJiB1dChRLCBlLCB7Y29uZmlndXJhYmxlOiAhMCwgc2V0OiByfSksIGN0KGUsIHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGooKHogPSBIW0RdKSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHEodGhpcykudGFnO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGooSCwgJ3dpdGhvdXRTZXR0ZXInLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGN0KFIodCksIHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChQLmYgPSBsdCksXG5cdFx0XHRcdFx0KEUuZiA9IHN0KSxcblx0XHRcdFx0XHQoTy5mID0gZnQpLFxuXHRcdFx0XHRcdChTLmYgPSBwdCksXG5cdFx0XHRcdFx0KHcuZiA9IHguZiA9IGh0KSxcblx0XHRcdFx0XHQoay5mID0gdnQpLFxuXHRcdFx0XHRcdChOLmYgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGN0KCQodCksIHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGMgJiZcblx0XHRcdFx0XHRcdChMKHosICdkZXNjcmlwdGlvbicsIHtcblx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHEodGhpcykuZGVzY3JpcHRpb247XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHUgfHwgaihRLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCBsdCwge3Vuc2FmZTogITB9KSkpLFxuXHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGdsb2JhbDogITAsXG5cdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiAhMCxcblx0XHRcdFx0XHRcdFx0d3JhcDogITAsXG5cdFx0XHRcdFx0XHRcdGZvcmNlZDogIXMsXG5cdFx0XHRcdFx0XHRcdHNoYW06ICFzLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtTeW1ib2w6IEh9XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRGKGIob3QpLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0Qyh0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0e3RhcmdldDogTSwgc3RhdDogITAsIGZvcmNlZDogIXN9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRpdCA9ICEwO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRpdCA9ICExO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdHt0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiAhMCwgZm9yY2VkOiAhcywgc2hhbTogIWN9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRjcmVhdGU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZvaWQgMCA9PT0gZSA/IG0odCkgOiBmdChtKHQpLCBlKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0ZGVmaW5lUHJvcGVydHk6IHN0LFxuXHRcdFx0XHRcdFx0XHRkZWZpbmVQcm9wZXJ0aWVzOiBmdCxcblx0XHRcdFx0XHRcdFx0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiBwdCxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRhcmdldDogJ09iamVjdCcsXG5cdFx0XHRcdFx0XHRcdHN0YXQ6ICEwLFxuXHRcdFx0XHRcdFx0XHRmb3JjZWQ6ICFzLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtnZXRPd25Qcm9wZXJ0eU5hbWVzOiBodH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdEEoKSxcblx0XHRcdFx0XHRXKEgsIE0pLFxuXHRcdFx0XHRcdChUW1VdID0gITApO1xuXHRcdFx0fSxcblx0XHRcdDY1NDQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig3Njk3KSxcblx0XHRcdFx0XHRpID0gcig5MDM3KSxcblx0XHRcdFx0XHRhID0gcig4ODQ0KSxcblx0XHRcdFx0XHR1ID0gcig2ODEyKSxcblx0XHRcdFx0XHRjID0gcig5OTg1KSxcblx0XHRcdFx0XHRzID0gcigzNjIyKSxcblx0XHRcdFx0XHRmID0gcig0MzI3KSxcblx0XHRcdFx0XHRsID0gcigyMTQ4KSxcblx0XHRcdFx0XHRwID0gcig4NzU4KSxcblx0XHRcdFx0XHRoID0gaS5TeW1ib2wsXG5cdFx0XHRcdFx0diA9IGggJiYgaC5wcm90b3R5cGU7XG5cdFx0XHRcdGlmIChvICYmIGMoaCkgJiYgKCEoJ2Rlc2NyaXB0aW9uJyBpbiB2KSB8fCB2b2lkIDAgIT09IGgoKS5kZXNjcmlwdGlvbikpIHtcblx0XHRcdFx0XHR2YXIgZCA9IHt9LFxuXHRcdFx0XHRcdFx0eSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMSB8fCB2b2lkIDAgPT09IGFyZ3VtZW50c1swXSA/IHZvaWQgMCA6IGYoYXJndW1lbnRzWzBdKSxcblx0XHRcdFx0XHRcdFx0XHRlID0gcyh2LCB0aGlzKSA/IG5ldyBoKHQpIDogdm9pZCAwID09PSB0ID8gaCgpIDogaCh0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICcnID09PSB0ICYmIChkW2VdID0gITApLCBlO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRwKHksIGgpLCAoeS5wcm90b3R5cGUgPSB2KSwgKHYuY29uc3RydWN0b3IgPSB5KTtcblx0XHRcdFx0XHR2YXIgZyA9ICdTeW1ib2woZGVzY3JpcHRpb24gZGV0ZWN0aW9uKScgPT09IFN0cmluZyhoKCdkZXNjcmlwdGlvbiBkZXRlY3Rpb24nKSksXG5cdFx0XHRcdFx0XHRtID0gYSh2LnZhbHVlT2YpLFxuXHRcdFx0XHRcdFx0YiA9IGEodi50b1N0cmluZyksXG5cdFx0XHRcdFx0XHR3ID0gL15TeW1ib2xcXCgoLiopXFwpW14pXSskLyxcblx0XHRcdFx0XHRcdHggPSBhKCcnLnJlcGxhY2UpLFxuXHRcdFx0XHRcdFx0ayA9IGEoJycuc2xpY2UpO1xuXHRcdFx0XHRcdGwodiwgJ2Rlc2NyaXB0aW9uJywge1xuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IG0odGhpcyk7XG5cdFx0XHRcdFx0XHRcdGlmICh1KGQsIHQpKSByZXR1cm4gJyc7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gYih0KSxcblx0XHRcdFx0XHRcdFx0XHRyID0gZyA/IGsoZSwgNywgLTEpIDogeChlLCB3LCAnJDEnKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICcnID09PSByID8gdm9pZCAwIDogcjtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0Z2xvYmFsOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHRcdFx0Zm9yY2VkOiAhMCxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1N5bWJvbDogeX1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQzOTc1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNjA1OCksXG5cdFx0XHRcdFx0aSA9IHIoNjgxMiksXG5cdFx0XHRcdFx0YSA9IHIoNDMyNyksXG5cdFx0XHRcdFx0dSA9IHIoMzQzMCksXG5cdFx0XHRcdFx0YyA9IHIoNjU0OSksXG5cdFx0XHRcdFx0cyA9IHUoJ3N0cmluZy10by1zeW1ib2wtcmVnaXN0cnknKSxcblx0XHRcdFx0XHRmID0gdSgnc3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeScpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdTeW1ib2wnLCBzdGF0OiAhMCwgZm9yY2VkOiAhY30sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Zm9yOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGEodCk7XG5cdFx0XHRcdFx0XHRcdGlmIChpKHMsIGUpKSByZXR1cm4gc1tlXTtcblx0XHRcdFx0XHRcdFx0dmFyIHIgPSBvKCdTeW1ib2wnKShlKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChzW2VdID0gciksIChmW3JdID0gZSksIHI7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ0MjU0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDU0MDUpKCdpdGVyYXRvcicpO1xuXHRcdFx0fSxcblx0XHRcdDk3NDk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHIoNzg1NSksIHIoMzk3NSksIHIoMTQ0NSksIHIoODMyNCksIHIoOTQzNCk7XG5cdFx0XHR9LFxuXHRcdFx0MTQ0NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDY4MTIpLFxuXHRcdFx0XHRcdGkgPSByKDczNCksXG5cdFx0XHRcdFx0YSA9IHIoMzY5MSksXG5cdFx0XHRcdFx0dSA9IHIoMzQzMCksXG5cdFx0XHRcdFx0YyA9IHIoNjU0OSksXG5cdFx0XHRcdFx0cyA9IHUoJ3N5bWJvbC10by1zdHJpbmctcmVnaXN0cnknKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnU3ltYm9sJywgc3RhdDogITAsIGZvcmNlZDogIWN9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGtleUZvcjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCFpKHQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKGEodCkgKyAnIGlzIG5vdCBhIHN5bWJvbCcpO1xuXHRcdFx0XHRcdFx0XHRpZiAobyhzLCB0KSkgcmV0dXJuIHNbdF07XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ5MzczOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNTQwNSksXG5cdFx0XHRcdFx0byA9IHIoMzAzMik7XG5cdFx0XHRcdG4oJ3RvUHJpbWl0aXZlJyksIG8oKTtcblx0XHRcdH0sXG5cdFx0XHQ2NzkzOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjA1OCksXG5cdFx0XHRcdFx0byA9IHIoNTQwNSksXG5cdFx0XHRcdFx0aSA9IHIoNTk5Nyk7XG5cdFx0XHRcdG8oJ3RvU3RyaW5nVGFnJyksIGkobignU3ltYm9sJyksICdTeW1ib2wnKTtcblx0XHRcdH0sXG5cdFx0XHQ2MjM3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMjYxNSksXG5cdFx0XHRcdFx0aSA9IHIoNTA5KSxcblx0XHRcdFx0XHRhID0gcig1MDI3KSxcblx0XHRcdFx0XHR1ID0gcig4OTk5KSxcblx0XHRcdFx0XHRjID0gcigyMzAyKSxcblx0XHRcdFx0XHRzID0gcig3Mzk0KSxcblx0XHRcdFx0XHRmID0gcig3ODA3KSxcblx0XHRcdFx0XHRsID0gcigyMzk5KSxcblx0XHRcdFx0XHRwID0gcigzOTMxKSxcblx0XHRcdFx0XHRoID0gcyhmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHRyID0gZS5pdGVyYXRvcixcblx0XHRcdFx0XHRcdFx0biA9IGUucHJlZGljYXRlO1xuXHRcdFx0XHRcdFx0cmV0dXJuIG5ldyB0KGZ1bmN0aW9uIChpLCBjKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdChlLmRvbmUgPSAhMCksIGModCk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRwID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGwociwgcywgdCwgcyk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRoID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC5yZXNvbHZlKGEobyhlLm5leHQsIHIpKSkudGhlbihmdW5jdGlvbiAocikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYShyKS5kb25lKSAoZS5kb25lID0gITApLCBpKGYodm9pZCAwLCAhMCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBvID0gci52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IG4obywgZS5jb3VudGVyKyspLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQgPyBpKGYobywgITEpKSA6IGgoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dShjKSA/IHQucmVzb2x2ZShjKS50aGVuKGwsIHApIDogbChjKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHAodCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgcyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHModCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0aCgpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6IHB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZpbHRlcjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGEodGhpcyksIGkodCksIG5ldyBoKGModGhpcyksIHtwcmVkaWNhdGU6IHR9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDE5NTQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigyNDg5KS5maW5kO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdBc3luY0l0ZXJhdG9yJywgcHJvdG86ICEwLCByZWFsOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZmluZDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8odGhpcywgdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ5NjY3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMjQ4OSkuZm9yRWFjaDtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiAhMCwgcmVhbDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZvckVhY2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvKHRoaXMsIHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NzYwMjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDkwMzcpLFxuXHRcdFx0XHRcdGkgPSByKDc2NyksXG5cdFx0XHRcdFx0YSA9IHIoOTk4NSksXG5cdFx0XHRcdFx0dSA9IHIoMTg2OCksXG5cdFx0XHRcdFx0YyA9IHIoNTc3MyksXG5cdFx0XHRcdFx0cyA9IHIoMzY4OSksXG5cdFx0XHRcdFx0ZiA9IHIoNjgxMiksXG5cdFx0XHRcdFx0bCA9IHIoNDIwMSksXG5cdFx0XHRcdFx0cCA9IHIoMjAxMykuSXRlcmF0b3JQcm90b3R5cGUsXG5cdFx0XHRcdFx0aCA9IHIoMzkzMSksXG5cdFx0XHRcdFx0diA9IGwoJ3RvU3RyaW5nVGFnJyksXG5cdFx0XHRcdFx0ZCA9IFR5cGVFcnJvcixcblx0XHRcdFx0XHR5ID0gby5JdGVyYXRvcixcblx0XHRcdFx0XHRnID1cblx0XHRcdFx0XHRcdGggfHxcblx0XHRcdFx0XHRcdCFhKHkpIHx8XG5cdFx0XHRcdFx0XHR5LnByb3RvdHlwZSAhPT0gcCB8fFxuXHRcdFx0XHRcdFx0IXMoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR5KHt9KTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdG0gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRpZiAoKGkodGhpcywgcCksIHUodGhpcykgPT09IHApKVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgZCgnQWJzdHJhY3QgY2xhc3MgSXRlcmF0b3Igbm90IGRpcmVjdGx5IGNvbnN0cnVjdGFibGUnKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRmKHAsIHYpIHx8IGMocCwgdiwgJ0l0ZXJhdG9yJyksXG5cdFx0XHRcdFx0KCFnICYmIGYocCwgJ2NvbnN0cnVjdG9yJykgJiYgcC5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB8fCBjKHAsICdjb25zdHJ1Y3RvcicsIG0pLFxuXHRcdFx0XHRcdChtLnByb3RvdHlwZSA9IHApLFxuXHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGdsb2JhbDogITAsXG5cdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiAhMCxcblx0XHRcdFx0XHRcdFx0Zm9yY2VkOiBnLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtJdGVyYXRvcjogbX1cblx0XHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDM0NzY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigyNjE1KSxcblx0XHRcdFx0XHRpID0gcig1MDkpLFxuXHRcdFx0XHRcdGEgPSByKDUwMjcpLFxuXHRcdFx0XHRcdHUgPSByKDIzMDIpLFxuXHRcdFx0XHRcdGMgPSByKDU0MTkpLFxuXHRcdFx0XHRcdHMgPSByKDEyMjgpLFxuXHRcdFx0XHRcdGYgPSByKDM5MzEpLFxuXHRcdFx0XHRcdGwgPSBjKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIHQsIGUsIHIgPSB0aGlzLml0ZXJhdG9yLCBuID0gdGhpcy5wcmVkaWNhdGUsIGkgPSB0aGlzLm5leHQ7IDsgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgoKHQgPSBhKG8oaSwgcikpKSwgKHRoaXMuZG9uZSA9ICEhdC5kb25lKSkpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0aWYgKCgoZSA9IHQudmFsdWUpLCBzKHIsIG4sIFtlLCB0aGlzLmNvdW50ZXIrK10sICEwKSkpIHJldHVybiBlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdJdGVyYXRvcicsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogZn0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZmlsdGVyOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYSh0aGlzKSwgaSh0KSwgbmV3IGwodSh0aGlzKSwge3ByZWRpY2F0ZTogdH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0OTI4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoODczNCksXG5cdFx0XHRcdFx0aSA9IHIoNTA5KSxcblx0XHRcdFx0XHRhID0gcig1MDI3KSxcblx0XHRcdFx0XHR1ID0gcigyMzAyKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogITAsIHJlYWw6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmaW5kOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRhKHRoaXMpLCBpKHQpO1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IHUodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IDA7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvKFxuXHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKGUsIG4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh0KGUsIHIrKykpIHJldHVybiBuKGUpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e0lTX1JFQ09SRDogITAsIElOVEVSUlVQVEVEOiAhMH1cblx0XHRcdFx0XHRcdFx0KS5yZXN1bHQ7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoODczNCksXG5cdFx0XHRcdFx0aSA9IHIoNTA5KSxcblx0XHRcdFx0XHRhID0gcig1MDI3KSxcblx0XHRcdFx0XHR1ID0gcigyMzAyKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogITAsIHJlYWw6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmb3JFYWNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRhKHRoaXMpLCBpKHQpO1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IHUodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IDA7XG5cdFx0XHRcdFx0XHRcdG8oXG5cdFx0XHRcdFx0XHRcdFx0ZSxcblx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dChlLCByKyspO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e0lTX1JFQ09SRDogITB9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ2OTE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig3Njk3KSxcblx0XHRcdFx0XHRpID0gcig5MDM3KSxcblx0XHRcdFx0XHRhID0gcig2MDU4KSxcblx0XHRcdFx0XHR1ID0gcig4ODQ0KSxcblx0XHRcdFx0XHRjID0gcigyNjE1KSxcblx0XHRcdFx0XHRzID0gcig5OTg1KSxcblx0XHRcdFx0XHRmID0gcig4OTk5KSxcblx0XHRcdFx0XHRsID0gcigyMjk3KSxcblx0XHRcdFx0XHRwID0gcig2ODEyKSxcblx0XHRcdFx0XHRoID0gcig0MzI3KSxcblx0XHRcdFx0XHR2ID0gcig2MzEwKSxcblx0XHRcdFx0XHRkID0gcig2NTIyKSxcblx0XHRcdFx0XHR5ID0gcigzNjg5KSxcblx0XHRcdFx0XHRnID0gcig2Njc1KSxcblx0XHRcdFx0XHRtID0gcigxNDYpLFxuXHRcdFx0XHRcdGIgPSBpLkpTT04sXG5cdFx0XHRcdFx0dyA9IGkuTnVtYmVyLFxuXHRcdFx0XHRcdHggPSBpLlN5bnRheEVycm9yLFxuXHRcdFx0XHRcdGsgPSBiICYmIGIucGFyc2UsXG5cdFx0XHRcdFx0UyA9IGEoJ09iamVjdCcsICdrZXlzJyksXG5cdFx0XHRcdFx0RSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG5cdFx0XHRcdFx0TyA9IHUoJycuY2hhckF0KSxcblx0XHRcdFx0XHRQID0gdSgnJy5zbGljZSksXG5cdFx0XHRcdFx0aiA9IHUoLy4vLmV4ZWMpLFxuXHRcdFx0XHRcdEwgPSB1KFtdLnB1c2gpLFxuXHRcdFx0XHRcdF8gPSAvXlxcZCQvLFxuXHRcdFx0XHRcdEkgPSAvXlsxLTldJC8sXG5cdFx0XHRcdFx0VCA9IC9eKD86LXxcXGQpJC8sXG5cdFx0XHRcdFx0UiA9IC9eW1xcdFxcblxcciBdJC8sXG5cdFx0XHRcdFx0JCA9IGZ1bmN0aW9uICh0LCBlLCByLCBuKSB7XG5cdFx0XHRcdFx0XHR2YXIgbyxcblx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0dSxcblx0XHRcdFx0XHRcdFx0cyxcblx0XHRcdFx0XHRcdFx0aCA9IHRbZV0sXG5cdFx0XHRcdFx0XHRcdGQgPSBuICYmIGggPT09IG4udmFsdWUsXG5cdFx0XHRcdFx0XHRcdHkgPSBkICYmICdzdHJpbmcnID09IHR5cGVvZiBuLnNvdXJjZSA/IHtzb3VyY2U6IG4uc291cmNlfSA6IHt9O1xuXHRcdFx0XHRcdFx0aWYgKGYoaCkpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGcgPSBsKGgpLFxuXHRcdFx0XHRcdFx0XHRcdG0gPSBkID8gbi5ub2RlcyA6IGcgPyBbXSA6IHt9O1xuXHRcdFx0XHRcdFx0XHRpZiAoZylcblx0XHRcdFx0XHRcdFx0XHRmb3IgKG8gPSBtLmxlbmd0aCwgYSA9IHYoaCksIHUgPSAwOyB1IDwgYTsgdSsrKVxuXHRcdFx0XHRcdFx0XHRcdFx0TihoLCB1LCAkKGgsICcnICsgdSwgciwgdSA8IG8gPyBtW3VdIDogdm9pZCAwKSk7XG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGkgPSBTKGgpLCBhID0gdihpKSwgdSA9IDA7IHUgPCBhOyB1KyspXG5cdFx0XHRcdFx0XHRcdFx0XHQocyA9IGlbdV0pLCBOKGgsIHMsICQoaCwgcywgciwgcChtLCBzKSA/IG1bc10gOiB2b2lkIDApKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiBjKHIsIHQsIGUsIGgsIHkpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0TiA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRpZiAobykge1xuXHRcdFx0XHRcdFx0XHR2YXIgbiA9IEUodCwgZSk7XG5cdFx0XHRcdFx0XHRcdGlmIChuICYmICFuLmNvbmZpZ3VyYWJsZSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dm9pZCAwID09PSByID8gZGVsZXRlIHRbZV0gOiBkKHQsIGUsIHIpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0QyA9IGZ1bmN0aW9uICh0LCBlLCByLCBuKSB7XG5cdFx0XHRcdFx0XHQodGhpcy52YWx1ZSA9IHQpLCAodGhpcy5lbmQgPSBlKSwgKHRoaXMuc291cmNlID0gciksICh0aGlzLm5vZGVzID0gbik7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRBID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdCh0aGlzLnNvdXJjZSA9IHQpLCAodGhpcy5pbmRleCA9IGUpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdEEucHJvdG90eXBlID0ge1xuXHRcdFx0XHRcdGZvcms6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbmV3IEEodGhpcy5zb3VyY2UsIHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cGFyc2U6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy5zb3VyY2UsXG5cdFx0XHRcdFx0XHRcdGUgPSB0aGlzLnNraXAoUiwgdGhpcy5pbmRleCksXG5cdFx0XHRcdFx0XHRcdHIgPSB0aGlzLmZvcmsoZSksXG5cdFx0XHRcdFx0XHRcdG4gPSBPKHQsIGUpO1xuXHRcdFx0XHRcdFx0aWYgKGooVCwgbikpIHJldHVybiByLm51bWJlcigpO1xuXHRcdFx0XHRcdFx0c3dpdGNoIChuKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3snOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByLm9iamVjdCgpO1xuXHRcdFx0XHRcdFx0XHRjYXNlICdbJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gci5hcnJheSgpO1xuXHRcdFx0XHRcdFx0XHRjYXNlICdcIic6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIuc3RyaW5nKCk7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3QnOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByLmtleXdvcmQoITApO1xuXHRcdFx0XHRcdFx0XHRjYXNlICdmJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gci5rZXl3b3JkKCExKTtcblx0XHRcdFx0XHRcdFx0Y2FzZSAnbic6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIua2V5d29yZChudWxsKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRocm93IG5ldyB4KCdVbmV4cGVjdGVkIGNoYXJhY3RlcjogXCInICsgbiArICdcIiBhdDogJyArIGUpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bm9kZTogZnVuY3Rpb24gKHQsIGUsIHIsIG4sIG8pIHtcblx0XHRcdFx0XHRcdHJldHVybiBuZXcgQyhlLCBuLCB0ID8gbnVsbCA6IFAodGhpcy5zb3VyY2UsIHIsIG4pLCBvKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG9iamVjdDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgdCA9IHRoaXMuc291cmNlLCBlID0gdGhpcy5pbmRleCArIDEsIHIgPSAhMSwgbiA9IHt9LCBvID0ge307IGUgPCB0Lmxlbmd0aDsgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgoKGUgPSB0aGlzLnVudGlsKFsnXCInLCAnfSddLCBlKSksICd9JyA9PT0gTyh0LCBlKSAmJiAhcikpIHtcblx0XHRcdFx0XHRcdFx0XHRlKys7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dmFyIGkgPSB0aGlzLmZvcmsoZSkuc3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0YSA9IGkudmFsdWU7XG5cdFx0XHRcdFx0XHRcdChlID0gaS5lbmQpLFxuXHRcdFx0XHRcdFx0XHRcdChlID0gdGhpcy51bnRpbChbJzonXSwgZSkgKyAxKSxcblx0XHRcdFx0XHRcdFx0XHQoZSA9IHRoaXMuc2tpcChSLCBlKSksXG5cdFx0XHRcdFx0XHRcdFx0KGkgPSB0aGlzLmZvcmsoZSkucGFyc2UoKSksXG5cdFx0XHRcdFx0XHRcdFx0ZChvLCBhLCBpKSxcblx0XHRcdFx0XHRcdFx0XHRkKG4sIGEsIGkudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdChlID0gdGhpcy51bnRpbChbJywnLCAnfSddLCBpLmVuZCkpO1xuXHRcdFx0XHRcdFx0XHR2YXIgdSA9IE8odCwgZSk7XG5cdFx0XHRcdFx0XHRcdGlmICgnLCcgPT09IHUpIChyID0gITApLCBlKys7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKCd9JyA9PT0gdSkge1xuXHRcdFx0XHRcdFx0XHRcdGUrKztcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMubm9kZSgxLCBuLCB0aGlzLmluZGV4LCBlLCBvKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGFycmF5OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciB0ID0gdGhpcy5zb3VyY2UsIGUgPSB0aGlzLmluZGV4ICsgMSwgciA9ICExLCBuID0gW10sIG8gPSBbXTsgZSA8IHQubGVuZ3RoOyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCgoZSA9IHRoaXMuc2tpcChSLCBlKSksICddJyA9PT0gTyh0LCBlKSAmJiAhcikpIHtcblx0XHRcdFx0XHRcdFx0XHRlKys7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dmFyIGkgPSB0aGlzLmZvcmsoZSkucGFyc2UoKTtcblx0XHRcdFx0XHRcdFx0aWYgKChMKG8sIGkpLCBMKG4sIGkudmFsdWUpLCAoZSA9IHRoaXMudW50aWwoWycsJywgJ10nXSwgaS5lbmQpKSwgJywnID09PSBPKHQsIGUpKSlcblx0XHRcdFx0XHRcdFx0XHQociA9ICEwKSwgZSsrO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmICgnXScgPT09IE8odCwgZSkpIHtcblx0XHRcdFx0XHRcdFx0XHRlKys7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm5vZGUoMSwgbiwgdGhpcy5pbmRleCwgZSwgbyk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzdHJpbmc6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy5pbmRleCxcblx0XHRcdFx0XHRcdFx0ZSA9IGcodGhpcy5zb3VyY2UsIHRoaXMuaW5kZXggKyAxKTtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm5vZGUoMCwgZS52YWx1ZSwgdCwgZS5lbmQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bnVtYmVyOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMuc291cmNlLFxuXHRcdFx0XHRcdFx0XHRlID0gdGhpcy5pbmRleCxcblx0XHRcdFx0XHRcdFx0ciA9IGU7XG5cdFx0XHRcdFx0XHRpZiAoKCctJyA9PT0gTyh0LCByKSAmJiByKyssICcwJyA9PT0gTyh0LCByKSkpIHIrKztcblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpZiAoIWooSSwgTyh0LCByKSkpIHRocm93IG5ldyB4KCdGYWlsZWQgdG8gcGFyc2UgbnVtYmVyIGF0OiAnICsgcik7XG5cdFx0XHRcdFx0XHRcdHIgPSB0aGlzLnNraXAoXywgKytyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0KCcuJyA9PT0gTyh0LCByKSAmJiAociA9IHRoaXMuc2tpcChfLCArK3IpKSwgJ2UnID09PSBPKHQsIHIpIHx8ICdFJyA9PT0gTyh0LCByKSkgJiZcblx0XHRcdFx0XHRcdFx0KHIrKywgKCcrJyAhPT0gTyh0LCByKSAmJiAnLScgIT09IE8odCwgcikpIHx8IHIrKywgciA9PT0gKHIgPSB0aGlzLnNraXAoXywgcikpKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgeChcIkZhaWxlZCB0byBwYXJzZSBudW1iZXIncyBleHBvbmVudCB2YWx1ZSBhdDogXCIgKyByKTtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm5vZGUoMCwgdyhQKHQsIGUsIHIpKSwgZSwgcik7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRrZXl3b3JkOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSAnJyArIHQsXG5cdFx0XHRcdFx0XHRcdHIgPSB0aGlzLmluZGV4LFxuXHRcdFx0XHRcdFx0XHRuID0gciArIGUubGVuZ3RoO1xuXHRcdFx0XHRcdFx0aWYgKFAodGhpcy5zb3VyY2UsIHIsIG4pICE9PSBlKSB0aHJvdyBuZXcgeCgnRmFpbGVkIHRvIHBhcnNlIHZhbHVlIGF0OiAnICsgcik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ub2RlKDAsIHQsIHIsIG4pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2tpcDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSB0aGlzLnNvdXJjZTsgZSA8IHIubGVuZ3RoICYmIGoodCwgTyhyLCBlKSk7IGUrKyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHVudGlsOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0ZSA9IHRoaXMuc2tpcChSLCBlKTtcblx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSBPKHRoaXMuc291cmNlLCBlKSwgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSBpZiAodFtuXSA9PT0gcikgcmV0dXJuIGU7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgeCgnVW5leHBlY3RlZCBjaGFyYWN0ZXI6IFwiJyArIHIgKyAnXCIgYXQ6ICcgKyBlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9O1xuXHRcdFx0XHR2YXIgVyA9IHkoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQsXG5cdFx0XHRcdFx0XHRcdGUgPSAnOTAwNzE5OTI1NDc0MDk5Myc7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRrKGUsIGZ1bmN0aW9uIChlLCByLCBuKSB7XG5cdFx0XHRcdFx0XHRcdFx0dCA9IG4uc291cmNlO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0dCAhPT0gZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRCID1cblx0XHRcdFx0XHRcdG0gJiZcblx0XHRcdFx0XHRcdCF5KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIDEgLyBrKCctMCBcXHQnKSAhPSAtMSAvIDA7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnSlNPTicsIHN0YXQ6ICEwLCBmb3JjZWQ6IFd9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHBhcnNlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQiAmJiAhcyhlKVxuXHRcdFx0XHRcdFx0XHRcdD8gayh0KVxuXHRcdFx0XHRcdFx0XHRcdDogKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQgPSBoKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IG5ldyBBKHQsIDAsICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuID0gci5wYXJzZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8gPSBuLnZhbHVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSByLnNraXAoUiwgbi5lbmQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaSA8IHQubGVuZ3RoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyB4KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1VuZXhwZWN0ZWQgZXh0cmEgY2hhcmFjdGVyOiBcIicgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRPKHQsIGkpICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1wiIGFmdGVyIHRoZSBwYXJzZWQgZGF0YSBhdDogJyArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcyhlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gJChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcnOiBvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0blxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogbztcblx0XHRcdFx0XHRcdFx0XHRcdH0pKHQsIGUpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NzQ0NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDk5NDUpLFxuXHRcdFx0XHRcdGkgPSByKDM5MTQpLnJlbW92ZTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZGVsZXRlQWxsOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHQsIGUgPSBvKHRoaXMpLCByID0gITAsIG4gPSAwLCBhID0gYXJndW1lbnRzLmxlbmd0aDsgbiA8IGE7IG4rKylcblx0XHRcdFx0XHRcdFx0XHQodCA9IGkoZSwgYXJndW1lbnRzW25dKSksIChyID0gciAmJiB0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICEhcjtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDc5Njg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5OTQ1KSxcblx0XHRcdFx0XHRpID0gcigzOTE0KSxcblx0XHRcdFx0XHRhID0gaS5nZXQsXG5cdFx0XHRcdFx0dSA9IGkuaGFzLFxuXHRcdFx0XHRcdGMgPSBpLnNldDtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZW1wbGFjZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0XHRpID0gbyh0aGlzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHUoaSwgdClcblx0XHRcdFx0XHRcdFx0XHQ/ICgociA9IGEoaSwgdCkpLCAndXBkYXRlJyBpbiBlICYmICgociA9IGUudXBkYXRlKHIsIHQsIGkpKSwgYyhpLCB0LCByKSksIHIpXG5cdFx0XHRcdFx0XHRcdFx0OiAoKG4gPSBlLmluc2VydCh0LCBpKSksIGMoaSwgdCwgbiksIG4pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NzQ3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNDA3MSksXG5cdFx0XHRcdFx0aSA9IHIoOTk0NSksXG5cdFx0XHRcdFx0YSA9IHIoNjEzKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZXZlcnk6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gaSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRyID0gbyh0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0ITEgIT09XG5cdFx0XHRcdFx0XHRcdFx0YShcblx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXIodCwgbiwgZSkpIHJldHVybiAhMTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHQhMFxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDEwOTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig0MDcxKSxcblx0XHRcdFx0XHRpID0gcig5OTQ1KSxcblx0XHRcdFx0XHRhID0gcigzOTE0KSxcblx0XHRcdFx0XHR1ID0gcig2MTMpLFxuXHRcdFx0XHRcdGMgPSBhLk1hcCxcblx0XHRcdFx0XHRzID0gYS5zZXQ7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZpbHRlcjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBvKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gbmV3IGMoKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHR1KGUsIGZ1bmN0aW9uICh0LCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyKHQsIG8sIGUpICYmIHMobiwgbywgdCk7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0blxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0ODc2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNDA3MSksXG5cdFx0XHRcdFx0aSA9IHIoOTk0NSksXG5cdFx0XHRcdFx0YSA9IHIoNjEzKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZmluZEtleTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBvKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gYShcblx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocih0LCBuLCBlKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBuLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0ITBcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbiAmJiBuLmtleTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDYzMjA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig0MDcxKSxcblx0XHRcdFx0XHRpID0gcig5OTQ1KSxcblx0XHRcdFx0XHRhID0gcig2MTMpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdNYXAnLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmaW5kOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGkodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IG8odCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSBhKFxuXHRcdFx0XHRcdFx0XHRcdFx0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChyKHQsIG4sIGUpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdCEwXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG4gJiYgbi52YWx1ZTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDY3OTE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig4NjAwKSxcblx0XHRcdFx0XHRpID0gcig5OTQ1KSxcblx0XHRcdFx0XHRhID0gcig2MTMpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdNYXAnLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpbmNsdWRlczogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQhMCA9PT1cblx0XHRcdFx0XHRcdFx0XHRhKFxuXHRcdFx0XHRcdFx0XHRcdFx0aSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChvKGUsIHQpKSByZXR1cm4gITA7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0ITBcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQxOTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDk5NDUpLFxuXHRcdFx0XHRcdGkgPSByKDYxMyk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGtleU9mOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGkoXG5cdFx0XHRcdFx0XHRcdFx0byh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoZSwgcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUgPT09IHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5OiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0ITBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGUgJiYgZS5rZXk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQyMzQzOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNDA3MSksXG5cdFx0XHRcdFx0aSA9IHIoOTk0NSksXG5cdFx0XHRcdFx0YSA9IHIoMzkxNCksXG5cdFx0XHRcdFx0dSA9IHIoNjEzKSxcblx0XHRcdFx0XHRjID0gYS5NYXAsXG5cdFx0XHRcdFx0cyA9IGEuc2V0O1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdNYXAnLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRtYXBLZXlzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGkodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IG8odCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSBuZXcgYygpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdHUoZSwgZnVuY3Rpb24gKHQsIG8pIHtcblx0XHRcdFx0XHRcdFx0XHRcdHMobiwgcih0LCBvLCBlKSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0blxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MTA5NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDQwNzEpLFxuXHRcdFx0XHRcdGkgPSByKDk5NDUpLFxuXHRcdFx0XHRcdGEgPSByKDM5MTQpLFxuXHRcdFx0XHRcdHUgPSByKDYxMyksXG5cdFx0XHRcdFx0YyA9IGEuTWFwLFxuXHRcdFx0XHRcdHMgPSBhLnNldDtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bWFwVmFsdWVzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGkodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IG8odCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSBuZXcgYygpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdHUoZSwgZnVuY3Rpb24gKHQsIG8pIHtcblx0XHRcdFx0XHRcdFx0XHRcdHMobiwgbywgcih0LCBvLCBlKSk7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0blxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NDMxNDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDk5NDUpLFxuXHRcdFx0XHRcdGkgPSByKDg3MzQpLFxuXHRcdFx0XHRcdGEgPSByKDM5MTQpLnNldDtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgYXJpdHk6IDEsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG1lcmdlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gbyh0aGlzKSwgciA9IGFyZ3VtZW50cy5sZW5ndGgsIG4gPSAwOyBuIDwgcjsgKVxuXHRcdFx0XHRcdFx0XHRcdGkoXG5cdFx0XHRcdFx0XHRcdFx0XHRhcmd1bWVudHNbbisrXSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCByKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGEoZSwgdCwgcik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e0FTX0VOVFJJRVM6ICEwfVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MzM0NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDUwOSksXG5cdFx0XHRcdFx0aSA9IHIoOTk0NSksXG5cdFx0XHRcdFx0YSA9IHIoNjEzKSxcblx0XHRcdFx0XHR1ID0gVHlwZUVycm9yO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdNYXAnLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRyZWR1Y2U6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gaSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRyID0gYXJndW1lbnRzLmxlbmd0aCA8IDIsXG5cdFx0XHRcdFx0XHRcdFx0biA9IHIgPyB2b2lkIDAgOiBhcmd1bWVudHNbMV07XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHQobyh0KSxcblx0XHRcdFx0XHRcdFx0XHRhKGUsIGZ1bmN0aW9uIChvLCBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyID8gKChyID0gITEpLCAobiA9IG8pKSA6IChuID0gdChuLCBvLCBpLCBlKSk7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0cilcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyB1KCdSZWR1Y2Ugb2YgZW1wdHkgbWFwIHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbjtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDQ5ODQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig0MDcxKSxcblx0XHRcdFx0XHRpID0gcig5OTQ1KSxcblx0XHRcdFx0XHRhID0gcig2MTMpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdNYXAnLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRzb21lOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGkodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IG8odCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCEwID09PVxuXHRcdFx0XHRcdFx0XHRcdGEoXG5cdFx0XHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIG4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHIodCwgbiwgZSkpIHJldHVybiAhMDtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHQhMFxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDQwNzg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig1MDkpLFxuXHRcdFx0XHRcdGkgPSByKDk5NDUpLFxuXHRcdFx0XHRcdGEgPSByKDM5MTQpLFxuXHRcdFx0XHRcdHUgPSBUeXBlRXJyb3IsXG5cdFx0XHRcdFx0YyA9IGEuZ2V0LFxuXHRcdFx0XHRcdHMgPSBhLmhhcyxcblx0XHRcdFx0XHRmID0gYS5zZXQ7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHVwZGF0ZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHIgPSBpKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuXHRcdFx0XHRcdFx0XHRvKGUpO1xuXHRcdFx0XHRcdFx0XHR2YXIgYSA9IHMociwgdCk7XG5cdFx0XHRcdFx0XHRcdGlmICghYSAmJiBuIDwgMykgdGhyb3cgbmV3IHUoJ1VwZGF0aW5nIGFic2VudCB2YWx1ZScpO1xuXHRcdFx0XHRcdFx0XHR2YXIgbCA9IGEgPyBjKHIsIHQpIDogbyhuID4gMiA/IGFyZ3VtZW50c1syXSA6IHZvaWQgMCkodCwgcik7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmKHIsIHQsIGUobCwgdCwgcikpLCByO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NzUyMjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDkwMzcpLFxuXHRcdFx0XHRcdG8gPSByKDYzMzgpLFxuXHRcdFx0XHRcdGkgPSByKDMyNjUpLFxuXHRcdFx0XHRcdGEgPSByKDc2MTIpLFxuXHRcdFx0XHRcdHUgPSByKDU3NzMpLFxuXHRcdFx0XHRcdGMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0aWYgKHQgJiYgdC5mb3JFYWNoICE9PSBhKVxuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdHUodCwgJ2ZvckVhY2gnLCBhKTtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdHQuZm9yRWFjaCA9IGE7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRmb3IgKHZhciBzIGluIG8pIG9bc10gJiYgYyhuW3NdICYmIG5bc10ucHJvdG90eXBlKTtcblx0XHRcdFx0YyhpKTtcblx0XHRcdH0sXG5cdFx0XHQ2MjY1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyksXG5cdFx0XHRcdFx0byA9IHIoNjMzOCksXG5cdFx0XHRcdFx0aSA9IHIoMzI2NSksXG5cdFx0XHRcdFx0YSA9IHIoNzUyKSxcblx0XHRcdFx0XHR1ID0gcig1NzczKSxcblx0XHRcdFx0XHRjID0gcig0MjAxKSxcblx0XHRcdFx0XHRzID0gYygnaXRlcmF0b3InKSxcblx0XHRcdFx0XHRmID0gYygndG9TdHJpbmdUYWcnKSxcblx0XHRcdFx0XHRsID0gYS52YWx1ZXMsXG5cdFx0XHRcdFx0cCA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRpZiAodCkge1xuXHRcdFx0XHRcdFx0XHRpZiAodFtzXSAhPT0gbClcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dSh0LCBzLCBsKTtcblx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0W3NdID0gbDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmICgodFtmXSB8fCB1KHQsIGYsIGUpLCBvW2VdKSlcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciByIGluIGEpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodFtyXSAhPT0gYVtyXSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1KHQsIHIsIGFbcl0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dFtyXSA9IGFbcl07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRmb3IgKHZhciBoIGluIG8pIHAobltoXSAmJiBuW2hdLnByb3RvdHlwZSwgaCk7XG5cdFx0XHRcdHAoaSwgJ0RPTVRva2VuTGlzdCcpO1xuXHRcdFx0fSxcblx0XHRcdDI2MjU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHIoNzUyKTtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDkwMzcpLFxuXHRcdFx0XHRcdGkgPSByKDI2MTUpLFxuXHRcdFx0XHRcdGEgPSByKDg4NDQpLFxuXHRcdFx0XHRcdHUgPSByKDc2OTcpLFxuXHRcdFx0XHRcdGMgPSByKDY4MzcpLFxuXHRcdFx0XHRcdHMgPSByKDE4ODApLFxuXHRcdFx0XHRcdGYgPSByKDIxNDgpLFxuXHRcdFx0XHRcdGwgPSByKDYwNDUpLFxuXHRcdFx0XHRcdHAgPSByKDU5OTcpLFxuXHRcdFx0XHRcdGggPSByKDk3NCksXG5cdFx0XHRcdFx0diA9IHIoNjE4KSxcblx0XHRcdFx0XHRkID0gcig3NjcpLFxuXHRcdFx0XHRcdHkgPSByKDk5ODUpLFxuXHRcdFx0XHRcdGcgPSByKDY4MTIpLFxuXHRcdFx0XHRcdG0gPSByKDQwNzEpLFxuXHRcdFx0XHRcdGIgPSByKDkyNiksXG5cdFx0XHRcdFx0dyA9IHIoNTAyNyksXG5cdFx0XHRcdFx0eCA9IHIoODk5OSksXG5cdFx0XHRcdFx0ayA9IHIoNDMyNyksXG5cdFx0XHRcdFx0UyA9IHIoNTM5MSksXG5cdFx0XHRcdFx0RSA9IHIoNTY4NCksXG5cdFx0XHRcdFx0TyA9IHIoNTE4NSksXG5cdFx0XHRcdFx0UCA9IHIoMTY2NCksXG5cdFx0XHRcdFx0aiA9IHIoNzgwNyksXG5cdFx0XHRcdFx0TCA9IHIoMTUwMCksXG5cdFx0XHRcdFx0XyA9IHIoNDIwMSksXG5cdFx0XHRcdFx0SSA9IHIoMzgyKSxcblx0XHRcdFx0XHRUID0gXygnaXRlcmF0b3InKSxcblx0XHRcdFx0XHRSID0gJ1VSTFNlYXJjaFBhcmFtcycsXG5cdFx0XHRcdFx0JCA9IFIgKyAnSXRlcmF0b3InLFxuXHRcdFx0XHRcdE4gPSB2LnNldCxcblx0XHRcdFx0XHRDID0gdi5nZXR0ZXJGb3IoUiksXG5cdFx0XHRcdFx0QSA9IHYuZ2V0dGVyRm9yKCQpLFxuXHRcdFx0XHRcdFcgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHRcdFx0XHRcdEIgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0aWYgKCF1KSByZXR1cm4gb1t0XTtcblx0XHRcdFx0XHRcdHZhciBlID0gVyhvLCB0KTtcblx0XHRcdFx0XHRcdHJldHVybiBlICYmIGUudmFsdWU7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRGID0gQignZmV0Y2gnKSxcblx0XHRcdFx0XHRVID0gQignUmVxdWVzdCcpLFxuXHRcdFx0XHRcdE0gPSBCKCdIZWFkZXJzJyksXG5cdFx0XHRcdFx0RCA9IFUgJiYgVS5wcm90b3R5cGUsXG5cdFx0XHRcdFx0RyA9IE0gJiYgTS5wcm90b3R5cGUsXG5cdFx0XHRcdFx0cSA9IG8uUmVnRXhwLFxuXHRcdFx0XHRcdFEgPSBvLlR5cGVFcnJvcixcblx0XHRcdFx0XHRIID0gby5kZWNvZGVVUklDb21wb25lbnQsXG5cdFx0XHRcdFx0eiA9IG8uZW5jb2RlVVJJQ29tcG9uZW50LFxuXHRcdFx0XHRcdFkgPSBhKCcnLmNoYXJBdCksXG5cdFx0XHRcdFx0ViA9IGEoW10uam9pbiksXG5cdFx0XHRcdFx0SiA9IGEoW10ucHVzaCksXG5cdFx0XHRcdFx0SyA9IGEoJycucmVwbGFjZSksXG5cdFx0XHRcdFx0WCA9IGEoW10uc2hpZnQpLFxuXHRcdFx0XHRcdFogPSBhKFtdLnNwbGljZSksXG5cdFx0XHRcdFx0dHQgPSBhKCcnLnNwbGl0KSxcblx0XHRcdFx0XHRldCA9IGEoJycuc2xpY2UpLFxuXHRcdFx0XHRcdHJ0ID0gL1xcKy9nLFxuXHRcdFx0XHRcdG50ID0gQXJyYXkoNCksXG5cdFx0XHRcdFx0b3QgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG50W3QgLSAxXSB8fCAobnRbdCAtIDFdID0gcSgnKCg/OiVbXFxcXGRhLWZdezJ9KXsnICsgdCArICd9KScsICdnaScpKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGl0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBIKHQpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGF0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gSyh0LCBydCwgJyAnKSxcblx0XHRcdFx0XHRcdFx0ciA9IDQ7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gSChlKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICg7IHI7ICkgZSA9IEsoZSwgb3Qoci0tKSwgaXQpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHV0ID0gL1shJygpfl18JTIwL2csXG5cdFx0XHRcdFx0Y3QgPSB7XG5cdFx0XHRcdFx0XHQnISc6ICclMjEnLFxuXHRcdFx0XHRcdFx0XCInXCI6ICclMjcnLFxuXHRcdFx0XHRcdFx0JygnOiAnJTI4Jyxcblx0XHRcdFx0XHRcdCcpJzogJyUyOScsXG5cdFx0XHRcdFx0XHQnfic6ICclN0UnLFxuXHRcdFx0XHRcdFx0JyUyMCc6ICcrJyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBjdFt0XTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZ0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBLKHoodCksIHV0LCBzdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRsdCA9IGgoXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHROKHRoaXMsIHt0eXBlOiAkLCB0YXJnZXQ6IEModCkuZW50cmllcywgaW5kZXg6IDAsIGtpbmQ6IGV9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRSLFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IEEodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ZSA9IHQudGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRcdHIgPSB0LmluZGV4Kys7XG5cdFx0XHRcdFx0XHRcdGlmICghZSB8fCByID49IGUubGVuZ3RoKSByZXR1cm4gKHQudGFyZ2V0ID0gdm9pZCAwKSwgaih2b2lkIDAsICEwKTtcblx0XHRcdFx0XHRcdFx0dmFyIG4gPSBlW3JdO1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKHQua2luZCkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2tleXMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGoobi5rZXksICExKTtcblx0XHRcdFx0XHRcdFx0XHRjYXNlICd2YWx1ZXMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGoobi52YWx1ZSwgITEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiBqKFtuLmtleSwgbi52YWx1ZV0sICExKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHQhMFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0cHQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0KHRoaXMuZW50cmllcyA9IFtdKSxcblx0XHRcdFx0XHRcdFx0KHRoaXMudXJsID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdHZvaWQgMCAhPT0gdCAmJlxuXHRcdFx0XHRcdFx0XHRcdCh4KHQpXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMucGFyc2VPYmplY3QodClcblx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5wYXJzZVF1ZXJ5KCdzdHJpbmcnID09IHR5cGVvZiB0ID8gKCc/JyA9PT0gWSh0LCAwKSA/IGV0KHQsIDEpIDogdCkgOiBrKHQpKSk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0cHQucHJvdG90eXBlID0ge1xuXHRcdFx0XHRcdHR5cGU6IFIsXG5cdFx0XHRcdFx0YmluZFVSTDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdCh0aGlzLnVybCA9IHQpLCB0aGlzLnVwZGF0ZSgpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cGFyc2VPYmplY3Q6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0cixcblx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0byxcblx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0dSxcblx0XHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdFx0cyA9IHRoaXMuZW50cmllcyxcblx0XHRcdFx0XHRcdFx0ZiA9IFAodCk7XG5cdFx0XHRcdFx0XHRpZiAoZilcblx0XHRcdFx0XHRcdFx0Zm9yIChyID0gKGUgPSBPKHQsIGYpKS5uZXh0OyAhKG4gPSBpKHIsIGUpKS5kb25lOyApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQoKGEgPSAobyA9IE8odyhuLnZhbHVlKSkpLm5leHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHUgPSBpKGEsIG8pKS5kb25lIHx8IChjID0gaShhLCBvKSkuZG9uZSB8fCAhaShhLCBvKS5kb25lKVxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBRKCdFeHBlY3RlZCBzZXF1ZW5jZSB3aXRoIGxlbmd0aCAyJyk7XG5cdFx0XHRcdFx0XHRcdFx0SihzLCB7a2V5OiBrKHUudmFsdWUpLCB2YWx1ZTogayhjLnZhbHVlKX0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIGZvciAodmFyIGwgaW4gdCkgZyh0LCBsKSAmJiBKKHMsIHtrZXk6IGwsIHZhbHVlOiBrKHRbbF0pfSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwYXJzZVF1ZXJ5OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0aWYgKHQpXG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUsIHIsIG4gPSB0aGlzLmVudHJpZXMsIG8gPSB0dCh0LCAnJicpLCBpID0gMDsgaSA8IG8ubGVuZ3RoOyApXG5cdFx0XHRcdFx0XHRcdFx0KGUgPSBvW2krK10pLmxlbmd0aCAmJiAoKHIgPSB0dChlLCAnPScpKSwgSihuLCB7a2V5OiBhdChYKHIpKSwgdmFsdWU6IGF0KFYociwgJz0nKSl9KSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXJpYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIHQsIGUgPSB0aGlzLmVudHJpZXMsIHIgPSBbXSwgbiA9IDA7IG4gPCBlLmxlbmd0aDsgKVxuXHRcdFx0XHRcdFx0XHQodCA9IGVbbisrXSksIEoociwgZnQodC5rZXkpICsgJz0nICsgZnQodC52YWx1ZSkpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIFYociwgJyYnKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHVwZGF0ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0KHRoaXMuZW50cmllcy5sZW5ndGggPSAwKSwgdGhpcy5wYXJzZVF1ZXJ5KHRoaXMudXJsLnF1ZXJ5KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHVwZGF0ZVVSTDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dGhpcy51cmwgJiYgdGhpcy51cmwudXBkYXRlKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fTtcblx0XHRcdFx0dmFyIGh0ID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0ZCh0aGlzLCB2dCk7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IE4odGhpcywgbmV3IHB0KGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdm9pZCAwKSk7XG5cdFx0XHRcdFx0XHR1IHx8ICh0aGlzLnNpemUgPSB0LmVudHJpZXMubGVuZ3RoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHZ0ID0gaHQucHJvdG90eXBlO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KGwoXG5cdFx0XHRcdFx0XHR2dCxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0YXBwZW5kOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gQyh0aGlzKTtcblx0XHRcdFx0XHRcdFx0XHRMKGFyZ3VtZW50cy5sZW5ndGgsIDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0SihyLmVudHJpZXMsIHtrZXk6IGsodCksIHZhbHVlOiBrKGUpfSksXG5cdFx0XHRcdFx0XHRcdFx0XHR1IHx8IHRoaXMubGVuZ3RoKyssXG5cdFx0XHRcdFx0XHRcdFx0XHRyLnVwZGF0ZVVSTCgpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRkZWxldGU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBlID0gQyh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IEwoYXJndW1lbnRzLmxlbmd0aCwgMSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4gPSBlLmVudHJpZXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG8gPSBrKHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpID0gciA8IDIgPyB2b2lkIDAgOiBhcmd1bWVudHNbMV0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSB2b2lkIDAgPT09IGkgPyBpIDogayhpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YyA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0XHRjIDwgbi5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBzID0gbltjXTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChzLmtleSAhPT0gbyB8fCAodm9pZCAwICE9PSBhICYmIHMudmFsdWUgIT09IGEpKSBjKys7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmICgoWihuLCBjLCAxKSwgdm9pZCAwICE9PSBhKSkgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHUgfHwgKHRoaXMuc2l6ZSA9IG4ubGVuZ3RoKSwgZS51cGRhdGVVUkwoKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBlID0gQyh0aGlzKS5lbnRyaWVzO1xuXHRcdFx0XHRcdFx0XHRcdEwoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IGsodCksIG4gPSAwOyBuIDwgZS5sZW5ndGg7IG4rKykgaWYgKGVbbl0ua2V5ID09PSByKSByZXR1cm4gZVtuXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0Z2V0QWxsOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBlID0gQyh0aGlzKS5lbnRyaWVzO1xuXHRcdFx0XHRcdFx0XHRcdEwoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IGsodCksIG4gPSBbXSwgbyA9IDA7IG8gPCBlLmxlbmd0aDsgbysrKSBlW29dLmtleSA9PT0gciAmJiBKKG4sIGVbb10udmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRoYXM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBlID0gQyh0aGlzKS5lbnRyaWVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gTChhcmd1bWVudHMubGVuZ3RoLCAxKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0biA9IGsodCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG8gPSByIDwgMiA/IHZvaWQgMCA6IGFyZ3VtZW50c1sxXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9IHZvaWQgMCA9PT0gbyA/IG8gOiBrKG8pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdGEgPCBlLmxlbmd0aDtcblxuXHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHUgPSBlW2ErK107XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodS5rZXkgPT09IG4gJiYgKHZvaWQgMCA9PT0gaSB8fCB1LnZhbHVlID09PSBpKSkgcmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gITE7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNldDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IEModGhpcyk7XG5cdFx0XHRcdFx0XHRcdFx0TChhcmd1bWVudHMubGVuZ3RoLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBuLCBvID0gci5lbnRyaWVzLCBpID0gITEsIGEgPSBrKHQpLCBjID0gayhlKSwgcyA9IDA7IHMgPCBvLmxlbmd0aDsgcysrKVxuXHRcdFx0XHRcdFx0XHRcdFx0KG4gPSBvW3NdKS5rZXkgPT09IGEgJiYgKGkgPyBaKG8sIHMtLSwgMSkgOiAoKGkgPSAhMCksIChuLnZhbHVlID0gYykpKTtcblx0XHRcdFx0XHRcdFx0XHRpIHx8IEoobywge2tleTogYSwgdmFsdWU6IGN9KSwgdSB8fCAodGhpcy5zaXplID0gby5sZW5ndGgpLCByLnVwZGF0ZVVSTCgpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzb3J0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBDKHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRcdEkodC5lbnRyaWVzLCBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQua2V5ID4gZS5rZXkgPyAxIDogLTE7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHR0LnVwZGF0ZVVSTCgpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRmb3JFYWNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IEModGhpcykuZW50cmllcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0biA9IG0odCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdG8gPCByLmxlbmd0aDtcblxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdG4oKGUgPSByW28rK10pLnZhbHVlLCBlLmtleSwgdGhpcyk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGtleXM6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IGx0KHRoaXMsICdrZXlzJyk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHZhbHVlczogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgbHQodGhpcywgJ3ZhbHVlcycpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRlbnRyaWVzOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBsdCh0aGlzLCAnZW50cmllcycpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtlbnVtZXJhYmxlOiAhMH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHModnQsIFQsIHZ0LmVudHJpZXMsIHtuYW1lOiAnZW50cmllcyd9KSxcblx0XHRcdFx0XHRzKFxuXHRcdFx0XHRcdFx0dnQsXG5cdFx0XHRcdFx0XHQndG9TdHJpbmcnLFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQyh0aGlzKS5zZXJpYWxpemUoKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7ZW51bWVyYWJsZTogITB9XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR1ICYmXG5cdFx0XHRcdFx0XHRmKHZ0LCAnc2l6ZScsIHtcblx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIEModGhpcykuZW50cmllcy5sZW5ndGg7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRcdGVudW1lcmFibGU6ICEwLFxuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0cChodCwgUiksXG5cdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Z2xvYmFsOiAhMCxcblx0XHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6ICEwLFxuXHRcdFx0XHRcdFx0XHRmb3JjZWQ6ICFjLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtVUkxTZWFyY2hQYXJhbXM6IGh0fVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0IWMgJiYgeShNKSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dmFyIGR0ID0gYShHLmhhcyksXG5cdFx0XHRcdFx0XHR5dCA9IGEoRy5zZXQpLFxuXHRcdFx0XHRcdFx0Z3QgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoeCh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0ciA9IHQuYm9keTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYihyKSA9PT0gUilcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChlID0gdC5oZWFkZXJzID8gbmV3IE0odC5oZWFkZXJzKSA6IG5ldyBNKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkdChlLCAnY29udGVudC10eXBlJykgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR5dChlLCAnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFModCwge2JvZHk6IEUoMCwgayhyKSksIGhlYWRlcnM6IEUoMCwgZSl9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KHkoRikgJiZcblx0XHRcdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdFx0XHR7Z2xvYmFsOiAhMCwgZW51bWVyYWJsZTogITAsIGRvbnRDYWxsR2V0U2V0OiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmV0Y2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBGKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gZ3QoYXJndW1lbnRzWzFdKSA6IHt9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0eShVKSlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHZhciBtdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBkKHRoaXMsIEQpLCBuZXcgVSh0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGd0KGFyZ3VtZW50c1sxXSkgOiB7fSk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0KEQuY29uc3RydWN0b3IgPSBtdCksXG5cdFx0XHRcdFx0XHRcdChtdC5wcm90b3R5cGUgPSBEKSxcblx0XHRcdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRnbG9iYWw6ICEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6ICEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZG9udENhbGxHZXRTZXQ6ICEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yY2VkOiAhMCxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtSZXF1ZXN0OiBtdH1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdFVSTFNlYXJjaFBhcmFtczogaHQsXG5cdFx0XHRcdFx0Z2V0U3RhdGU6IEMsXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0ODg1ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDE4ODApLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDQzMjcpLFxuXHRcdFx0XHRcdGEgPSByKDE1MDApLFxuXHRcdFx0XHRcdHUgPSBVUkxTZWFyY2hQYXJhbXMsXG5cdFx0XHRcdFx0YyA9IHUucHJvdG90eXBlLFxuXHRcdFx0XHRcdHMgPSBvKGMuYXBwZW5kKSxcblx0XHRcdFx0XHRmID0gbyhjLmRlbGV0ZSksXG5cdFx0XHRcdFx0bCA9IG8oYy5mb3JFYWNoKSxcblx0XHRcdFx0XHRwID0gbyhbXS5wdXNoKSxcblx0XHRcdFx0XHRoID0gbmV3IHUoJ2E9MSZhPTImYj0zJyk7XG5cdFx0XHRcdGguZGVsZXRlKCdhJywgMSksXG5cdFx0XHRcdFx0aC5kZWxldGUoJ2InLCB2b2lkIDApLFxuXHRcdFx0XHRcdGggKyAnJyAhPSAnYT0yJyAmJlxuXHRcdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdFx0J2RlbGV0ZScsXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0ciA9IGUgPCAyID8gdm9pZCAwIDogYXJndW1lbnRzWzFdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChlICYmIHZvaWQgMCA9PT0gcikgcmV0dXJuIGYodGhpcywgdCk7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRsKHRoaXMsIGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwKG4sIHtrZXk6IGUsIHZhbHVlOiB0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRhKGUsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIG8sIHUgPSBpKHQpLCBjID0gaShyKSwgaCA9IDAsIHYgPSAwLCBkID0gITEsIHkgPSBuLmxlbmd0aDsgaCA8IHk7IClcblx0XHRcdFx0XHRcdFx0XHRcdChvID0gbltoKytdKSwgZCB8fCBvLmtleSA9PT0gdSA/ICgoZCA9ICEwKSwgZih0aGlzLCBvLmtleSkpIDogdisrO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoOyB2IDwgeTsgKSAoKG8gPSBuW3YrK10pLmtleSA9PT0gdSAmJiBvLnZhbHVlID09PSBjKSB8fCBzKHRoaXMsIG8ua2V5LCBvLnZhbHVlKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e2VudW1lcmFibGU6ICEwLCB1bnNhZmU6ICEwfVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQxMzE4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMTg4MCksXG5cdFx0XHRcdFx0byA9IHIoODg0NCksXG5cdFx0XHRcdFx0aSA9IHIoNDMyNyksXG5cdFx0XHRcdFx0YSA9IHIoMTUwMCksXG5cdFx0XHRcdFx0dSA9IFVSTFNlYXJjaFBhcmFtcyxcblx0XHRcdFx0XHRjID0gdS5wcm90b3R5cGUsXG5cdFx0XHRcdFx0cyA9IG8oYy5nZXRBbGwpLFxuXHRcdFx0XHRcdGYgPSBvKGMuaGFzKSxcblx0XHRcdFx0XHRsID0gbmV3IHUoJ2E9MScpO1xuXHRcdFx0XHQoIWwuaGFzKCdhJywgMikgJiYgbC5oYXMoJ2EnLCB2b2lkIDApKSB8fFxuXHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHRjLFxuXHRcdFx0XHRcdFx0J2hhcycsXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0ciA9IGUgPCAyID8gdm9pZCAwIDogYXJndW1lbnRzWzFdO1xuXHRcdFx0XHRcdFx0XHRpZiAoZSAmJiB2b2lkIDAgPT09IHIpIHJldHVybiBmKHRoaXMsIHQpO1xuXHRcdFx0XHRcdFx0XHR2YXIgbiA9IHModGhpcywgdCk7XG5cdFx0XHRcdFx0XHRcdGEoZSwgMSk7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIG8gPSBpKHIpLCB1ID0gMDsgdSA8IG4ubGVuZ3RoOyApIGlmIChuW3UrK10gPT09IG8pIHJldHVybiAhMDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICExO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtlbnVtZXJhYmxlOiAhMCwgdW5zYWZlOiAhMH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDkzMDc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHIoMjYyNSk7XG5cdFx0XHR9LFxuXHRcdFx0MzIyODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDIxNDgpLFxuXHRcdFx0XHRcdGEgPSBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLFxuXHRcdFx0XHRcdHUgPSBvKGEuZm9yRWFjaCk7XG5cdFx0XHRcdG4gJiZcblx0XHRcdFx0XHQhKCdzaXplJyBpbiBhKSAmJlxuXHRcdFx0XHRcdGkoYSwgJ3NpemUnLCB7XG5cdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSAwO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdHUodGhpcywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dCsrO1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6ICEwLFxuXHRcdFx0XHRcdFx0ZW51bWVyYWJsZTogITAsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0OTM5MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0cigxNjk0KTtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byA9IHIoOTk4OSksXG5cdFx0XHRcdFx0aSA9IHIoNzY5NyksXG5cdFx0XHRcdFx0YSA9IHIoNjgzNyksXG5cdFx0XHRcdFx0dSA9IHIoOTAzNyksXG5cdFx0XHRcdFx0YyA9IHIoNDA3MSksXG5cdFx0XHRcdFx0cyA9IHIoODg0NCksXG5cdFx0XHRcdFx0ZiA9IHIoMTg4MCksXG5cdFx0XHRcdFx0bCA9IHIoMjE0OCksXG5cdFx0XHRcdFx0cCA9IHIoNzY3KSxcblx0XHRcdFx0XHRoID0gcig2ODEyKSxcblx0XHRcdFx0XHR2ID0gcig1Mzk0KSxcblx0XHRcdFx0XHRkID0gcigxMDU1KSxcblx0XHRcdFx0XHR5ID0gcig5MDE1KSxcblx0XHRcdFx0XHRnID0gcig3MzApLmNvZGVBdCxcblx0XHRcdFx0XHRtID0gcig2NDMwKSxcblx0XHRcdFx0XHRiID0gcig0MzI3KSxcblx0XHRcdFx0XHR3ID0gcig1OTk3KSxcblx0XHRcdFx0XHR4ID0gcigxNTAwKSxcblx0XHRcdFx0XHRrID0gcigyNjI1KSxcblx0XHRcdFx0XHRTID0gcig2MTgpLFxuXHRcdFx0XHRcdEUgPSBTLnNldCxcblx0XHRcdFx0XHRPID0gUy5nZXR0ZXJGb3IoJ1VSTCcpLFxuXHRcdFx0XHRcdFAgPSBrLlVSTFNlYXJjaFBhcmFtcyxcblx0XHRcdFx0XHRqID0gay5nZXRTdGF0ZSxcblx0XHRcdFx0XHRMID0gdS5VUkwsXG5cdFx0XHRcdFx0XyA9IHUuVHlwZUVycm9yLFxuXHRcdFx0XHRcdEkgPSB1LnBhcnNlSW50LFxuXHRcdFx0XHRcdFQgPSBNYXRoLmZsb29yLFxuXHRcdFx0XHRcdFIgPSBNYXRoLnBvdyxcblx0XHRcdFx0XHQkID0gcygnJy5jaGFyQXQpLFxuXHRcdFx0XHRcdE4gPSBzKC8uLy5leGVjKSxcblx0XHRcdFx0XHRDID0gcyhbXS5qb2luKSxcblx0XHRcdFx0XHRBID0gcygoMSkudG9TdHJpbmcpLFxuXHRcdFx0XHRcdFcgPSBzKFtdLnBvcCksXG5cdFx0XHRcdFx0QiA9IHMoW10ucHVzaCksXG5cdFx0XHRcdFx0RiA9IHMoJycucmVwbGFjZSksXG5cdFx0XHRcdFx0VSA9IHMoW10uc2hpZnQpLFxuXHRcdFx0XHRcdE0gPSBzKCcnLnNwbGl0KSxcblx0XHRcdFx0XHREID0gcygnJy5zbGljZSksXG5cdFx0XHRcdFx0RyA9IHMoJycudG9Mb3dlckNhc2UpLFxuXHRcdFx0XHRcdHEgPSBzKFtdLnVuc2hpZnQpLFxuXHRcdFx0XHRcdFEgPSAnSW52YWxpZCBzY2hlbWUnLFxuXHRcdFx0XHRcdEggPSAnSW52YWxpZCBob3N0Jyxcblx0XHRcdFx0XHR6ID0gJ0ludmFsaWQgcG9ydCcsXG5cdFx0XHRcdFx0WSA9IC9bYS16XS9pLFxuXHRcdFx0XHRcdFYgPSAvW1xcZCstLmEtel0vaSxcblx0XHRcdFx0XHRKID0gL1xcZC8sXG5cdFx0XHRcdFx0SyA9IC9eMHgvaSxcblx0XHRcdFx0XHRYID0gL15bMC03XSskLyxcblx0XHRcdFx0XHRaID0gL15cXGQrJC8sXG5cdFx0XHRcdFx0dHQgPSAvXltcXGRhLWZdKyQvaSxcblx0XHRcdFx0XHRldCA9IC9bXFwwXFx0XFxuXFxyICMlLzo8Pj9AW1xcXFxcXF1efF0vLFxuXHRcdFx0XHRcdHJ0ID0gL1tcXDBcXHRcXG5cXHIgIy86PD4/QFtcXFxcXFxdXnxdLyxcblx0XHRcdFx0XHRudCA9IC9eW1xcdTAwMDAtXFx1MDAyMF0rLyxcblx0XHRcdFx0XHRvdCA9IC8oXnxbXlxcdTAwMDAtXFx1MDAyMF0pW1xcdTAwMDAtXFx1MDAyMF0rJC8sXG5cdFx0XHRcdFx0aXQgPSAvW1xcdFxcblxccl0vZyxcblx0XHRcdFx0XHRhdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSwgciwgbiwgbztcblx0XHRcdFx0XHRcdGlmICgnbnVtYmVyJyA9PSB0eXBlb2YgdCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKGUgPSBbXSwgciA9IDA7IHIgPCA0OyByKyspIHEoZSwgdCAlIDI1NiksICh0ID0gVCh0IC8gMjU2KSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBDKGUsICcuJyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgPT0gdHlwZW9mIHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdFx0XHRlID0gJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRuID0gKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSBudWxsLCByID0gMSwgbiA9IG51bGwsIG8gPSAwLCBpID0gMDsgaSA8IDg7IGkrKylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQwICE9PSB0W2ldXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IChvID4gciAmJiAoKGUgPSBuKSwgKHIgPSBvKSksIChuID0gbnVsbCksIChvID0gMCkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IChudWxsID09PSBuICYmIChuID0gaSksICsrbyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvID4gciAmJiAoKGUgPSBuKSwgKHIgPSBvKSksIGU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSh0KSxcblx0XHRcdFx0XHRcdFx0XHRcdHIgPSAwO1xuXHRcdFx0XHRcdFx0XHRcdHIgPCA4O1xuXHRcdFx0XHRcdFx0XHRcdHIrK1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KG8gJiYgMCA9PT0gdFtyXSkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdChvICYmIChvID0gITEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0biA9PT0gclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgoZSArPSByID8gJzonIDogJzo6JyksIChvID0gITApKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICgoZSArPSBBKHRbcl0sIDE2KSksIHIgPCA3ICYmIChlICs9ICc6JykpKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICdbJyArIGUgKyAnXSc7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHV0ID0ge30sXG5cdFx0XHRcdFx0Y3QgPSB2KHt9LCB1dCwgeycgJzogMSwgJ1wiJzogMSwgJzwnOiAxLCAnPic6IDEsICdgJzogMX0pLFxuXHRcdFx0XHRcdHN0ID0gdih7fSwgY3QsIHsnIyc6IDEsICc/JzogMSwgJ3snOiAxLCAnfSc6IDF9KSxcblx0XHRcdFx0XHRmdCA9IHYoe30sIHN0LCB7Jy8nOiAxLCAnOic6IDEsICc7JzogMSwgJz0nOiAxLCAnQCc6IDEsICdbJzogMSwgJ1xcXFwnOiAxLCAnXSc6IDEsICdeJzogMSwgJ3wnOiAxfSksXG5cdFx0XHRcdFx0bHQgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBnKHQsIDApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHIgPiAzMiAmJiByIDwgMTI3ICYmICFoKGUsIHQpID8gdCA6IGVuY29kZVVSSUNvbXBvbmVudCh0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHB0ID0ge1xuXHRcdFx0XHRcdFx0ZnRwOiAyMSxcblx0XHRcdFx0XHRcdGZpbGU6IG51bGwsXG5cdFx0XHRcdFx0XHRodHRwOiA4MCxcblx0XHRcdFx0XHRcdGh0dHBzOiA0NDMsXG5cdFx0XHRcdFx0XHR3czogODAsXG5cdFx0XHRcdFx0XHR3c3M6IDQ0Myxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGh0ID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdHZhciByO1xuXHRcdFx0XHRcdFx0cmV0dXJuIDIgPT09IHQubGVuZ3RoICYmIE4oWSwgJCh0LCAwKSkgJiYgKCc6JyA9PT0gKHIgPSAkKHQsIDEpKSB8fCAoIWUgJiYgJ3wnID09PSByKSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR2dCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdHQubGVuZ3RoID4gMSAmJlxuXHRcdFx0XHRcdFx0XHRodChEKHQsIDAsIDIpKSAmJlxuXHRcdFx0XHRcdFx0XHQoMiA9PT0gdC5sZW5ndGggfHwgJy8nID09PSAoZSA9ICQodCwgMikpIHx8ICdcXFxcJyA9PT0gZSB8fCAnPycgPT09IGUgfHwgJyMnID09PSBlKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGR0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnLicgPT09IHQgfHwgJyUyZScgPT09IEcodCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR5dCA9IHt9LFxuXHRcdFx0XHRcdGd0ID0ge30sXG5cdFx0XHRcdFx0bXQgPSB7fSxcblx0XHRcdFx0XHRidCA9IHt9LFxuXHRcdFx0XHRcdHd0ID0ge30sXG5cdFx0XHRcdFx0eHQgPSB7fSxcblx0XHRcdFx0XHRrdCA9IHt9LFxuXHRcdFx0XHRcdFN0ID0ge30sXG5cdFx0XHRcdFx0RXQgPSB7fSxcblx0XHRcdFx0XHRPdCA9IHt9LFxuXHRcdFx0XHRcdFB0ID0ge30sXG5cdFx0XHRcdFx0anQgPSB7fSxcblx0XHRcdFx0XHRMdCA9IHt9LFxuXHRcdFx0XHRcdF90ID0ge30sXG5cdFx0XHRcdFx0SXQgPSB7fSxcblx0XHRcdFx0XHRUdCA9IHt9LFxuXHRcdFx0XHRcdFJ0ID0ge30sXG5cdFx0XHRcdFx0JHQgPSB7fSxcblx0XHRcdFx0XHROdCA9IHt9LFxuXHRcdFx0XHRcdEN0ID0ge30sXG5cdFx0XHRcdFx0QXQgPSB7fSxcblx0XHRcdFx0XHRXdCA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRcdFx0byxcblx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0YSA9IGIodCk7XG5cdFx0XHRcdFx0XHRpZiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoKG8gPSB0aGlzLnBhcnNlKGEpKSkgdGhyb3cgbmV3IF8obyk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2VhcmNoUGFyYW1zID0gbnVsbDtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGlmICgodm9pZCAwICE9PSByICYmIChuID0gbmV3IFd0KHIsICEwKSksIChvID0gdGhpcy5wYXJzZShhLCBudWxsLCBuKSkpKSB0aHJvdyBuZXcgXyhvKTtcblx0XHRcdFx0XHRcdFx0KGkgPSBqKG5ldyBQKCkpKS5iaW5kVVJMKHRoaXMpLCAodGhpcy5zZWFyY2hQYXJhbXMgPSBpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRXdC5wcm90b3R5cGUgPSB7XG5cdFx0XHRcdFx0dHlwZTogJ1VSTCcsXG5cdFx0XHRcdFx0cGFyc2U6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbyxcblx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0dSxcblx0XHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdFx0cyA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdGYgPSBlIHx8IHl0LFxuXHRcdFx0XHRcdFx0XHRsID0gMCxcblx0XHRcdFx0XHRcdFx0cCA9ICcnLFxuXHRcdFx0XHRcdFx0XHR2ID0gITEsXG5cdFx0XHRcdFx0XHRcdGcgPSAhMSxcblx0XHRcdFx0XHRcdFx0bSA9ICExO1xuXHRcdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdFx0dCA9IGIodCksXG5cdFx0XHRcdFx0XHRcdFx0ZSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KChzLnNjaGVtZSA9ICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChzLnVzZXJuYW1lID0gJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHMucGFzc3dvcmQgPSAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHQocy5ob3N0ID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0XHQocy5wb3J0ID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0XHQocy5wYXRoID0gW10pLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHMucXVlcnkgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHRcdChzLmZyYWdtZW50ID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0XHQocy5jYW5ub3RCZUFCYXNlVVJMID0gITEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHQgPSBGKHQsIG50LCAnJykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHQgPSBGKHQsIG90LCAnJDEnKSkpLFxuXHRcdFx0XHRcdFx0XHRcdHQgPSBGKHQsIGl0LCAnJyksXG5cdFx0XHRcdFx0XHRcdFx0byA9IGQodCk7XG5cdFx0XHRcdFx0XHRcdGwgPD0gby5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCgoaSA9IG9bbF0pLCBmKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgeXQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIWkgfHwgIU4oWSwgaSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUpIHJldHVybiBRO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gbXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KHAgKz0gRyhpKSksIChmID0gZ3QpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBndDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChpICYmIChOKFYsIGkpIHx8ICcrJyA9PT0gaSB8fCAnLScgPT09IGkgfHwgJy4nID09PSBpKSkgcCArPSBHKGkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnOicgIT09IGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZSkgcmV0dXJuIFE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHAgPSAnJyksIChmID0gbXQpLCAobCA9IDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuaXNTcGVjaWFsKCkgIT09IGgocHQsIHApIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoJ2ZpbGUnID09PSBwICYmIChzLmluY2x1ZGVzQ3JlZGVudGlhbHMoKSB8fCBudWxsICE9PSBzLnBvcnQpKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KCdmaWxlJyA9PT0gcy5zY2hlbWUgJiYgIXMuaG9zdCkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgoKHMuc2NoZW1lID0gcCksIGUpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB2b2lkIChzLmlzU3BlY2lhbCgpICYmIHB0W3Muc2NoZW1lXSA9PT0gcy5wb3J0ICYmIChzLnBvcnQgPSBudWxsKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChwID0gJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdmaWxlJyA9PT0gcy5zY2hlbWVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gKGYgPSBfdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogcy5pc1NwZWNpYWwoKSAmJiByICYmIHIuc2NoZW1lID09PSBzLnNjaGVtZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IChmID0gYnQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogcy5pc1NwZWNpYWwoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gKGYgPSBTdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICcvJyA9PT0gb1tsICsgMV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gKChmID0gd3QpLCBsKyspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICgocy5jYW5ub3RCZUFCYXNlVVJMID0gITApLCBCKHMucGF0aCwgJycpLCAoZiA9IE50KSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIG10OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFyIHx8IChyLmNhbm5vdEJlQUJhc2VVUkwgJiYgJyMnICE9PSBpKSkgcmV0dXJuIFE7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoci5jYW5ub3RCZUFCYXNlVVJMICYmICcjJyA9PT0gaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQocy5zY2hlbWUgPSByLnNjaGVtZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucGF0aCA9IHkoci5wYXRoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucXVlcnkgPSByLnF1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5mcmFnbWVudCA9ICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5jYW5ub3RCZUFCYXNlVVJMID0gITApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmID0gQXQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGYgPSAnZmlsZScgPT09IHIuc2NoZW1lID8gX3QgOiB4dDtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgYnQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJy8nICE9PSBpIHx8ICcvJyAhPT0gb1tsICsgMV0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9IHh0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdChmID0gRXQpLCBsKys7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIHd0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCcvJyA9PT0gaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gT3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZiA9ICR0O1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSB4dDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgoKHMuc2NoZW1lID0gci5zY2hlbWUpLCBpID09PSBuKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHMudXNlcm5hbWUgPSByLnVzZXJuYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXNzd29yZCA9IHIucGFzc3dvcmQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmhvc3QgPSByLmhvc3QpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBvcnQgPSByLnBvcnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBhdGggPSB5KHIucGF0aCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnF1ZXJ5ID0gci5xdWVyeSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmICgnLycgPT09IGkgfHwgKCdcXFxcJyA9PT0gaSAmJiBzLmlzU3BlY2lhbCgpKSkgZiA9IGt0O1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJz8nID09PSBpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQocy51c2VybmFtZSA9IHIudXNlcm5hbWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBhc3N3b3JkID0gci5wYXNzd29yZCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuaG9zdCA9IHIuaG9zdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucG9ydCA9IHIucG9ydCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucGF0aCA9IHkoci5wYXRoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucXVlcnkgPSAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGYgPSBDdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCcjJyAhPT0gaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnVzZXJuYW1lID0gci51c2VybmFtZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXNzd29yZCA9IHIucGFzc3dvcmQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuaG9zdCA9IHIuaG9zdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wb3J0ID0gci5wb3J0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBhdGggPSB5KHIucGF0aCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cy5wYXRoLmxlbmd0aC0tLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGYgPSAkdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0KHMudXNlcm5hbWUgPSByLnVzZXJuYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXNzd29yZCA9IHIucGFzc3dvcmQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmhvc3QgPSByLmhvc3QpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBvcnQgPSByLnBvcnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBhdGggPSB5KHIucGF0aCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnF1ZXJ5ID0gci5xdWVyeSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuZnJhZ21lbnQgPSAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGYgPSBBdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIGt0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFzLmlzU3BlY2lhbCgpIHx8ICgnLycgIT09IGkgJiYgJ1xcXFwnICE9PSBpKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJy8nICE9PSBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMudXNlcm5hbWUgPSByLnVzZXJuYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBhc3N3b3JkID0gci5wYXNzd29yZCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5ob3N0ID0gci5ob3N0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBvcnQgPSByLnBvcnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGYgPSAkdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9IE90O1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGYgPSBFdDtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgU3Q6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoKChmID0gRXQpLCAnLycgIT09IGkgfHwgJy8nICE9PSAkKHAsIGwgKyAxKSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0bCsrO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBFdDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgnLycgIT09IGkgJiYgJ1xcXFwnICE9PSBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSBPdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIE90OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCdAJyA9PT0gaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2ICYmIChwID0gJyU0MCcgKyBwKSwgKHYgPSAhMCksIChhID0gZChwKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHcgPSAwOyB3IDwgYS5sZW5ndGg7IHcrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB4ID0gYVt3XTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJzonICE9PSB4IHx8IG0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBrID0gbHQoeCwgZnQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bSA/IChzLnBhc3N3b3JkICs9IGspIDogKHMudXNlcm5hbWUgKz0gayk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIG0gPSAhMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpID09PSBuIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCcvJyA9PT0gaSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnPycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0JyMnID09PSBpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgnXFxcXCcgPT09IGkgJiYgcy5pc1NwZWNpYWwoKSlcblx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodiAmJiAnJyA9PT0gcCkgcmV0dXJuICdJbnZhbGlkIGF1dGhvcml0eSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChsIC09IGQocCkubGVuZ3RoICsgMSksIChwID0gJycpLCAoZiA9IFB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBwICs9IGk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFB0OlxuXHRcdFx0XHRcdFx0XHRcdGNhc2UganQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZSAmJiAnZmlsZScgPT09IHMuc2NoZW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSBUdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJzonICE9PSBpIHx8IGcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkgPT09IG4gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnLycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnPycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnIycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoJ1xcXFwnID09PSBpICYmIHMuaXNTcGVjaWFsKCkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChzLmlzU3BlY2lhbCgpICYmICcnID09PSBwKSByZXR1cm4gSDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZSAmJiAnJyA9PT0gcCAmJiAocy5pbmNsdWRlc0NyZWRlbnRpYWxzKCkgfHwgbnVsbCAhPT0gcy5wb3J0KSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgodSA9IHMucGFyc2VIb3N0KHApKSkgcmV0dXJuIHU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgocCA9ICcnKSwgKGYgPSBSdCksIGUpKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0J1snID09PSBpID8gKGcgPSAhMCkgOiAnXScgPT09IGkgJiYgKGcgPSAhMSksIChwICs9IGkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCcnID09PSBwKSByZXR1cm4gSDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCh1ID0gcy5wYXJzZUhvc3QocCkpKSByZXR1cm4gdTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgocCA9ICcnKSwgKGYgPSBMdCksIGUgPT09IGp0KSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBMdDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghTihKLCBpKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9PT0gbiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcvJyA9PT0gaSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCc/JyA9PT0gaSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjJyA9PT0gaSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgnXFxcXCcgPT09IGkgJiYgcy5pc1NwZWNpYWwoKSkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnJyAhPT0gcCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIFMgPSBJKHAsIDEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChTID4gNjU1MzUpIHJldHVybiB6O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucG9ydCA9IHMuaXNTcGVjaWFsKCkgJiYgUyA9PT0gcHRbcy5zY2hlbWVdID8gbnVsbCA6IFMpLCAocCA9ICcnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gUnQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHo7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRwICs9IGk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIF90OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgocy5zY2hlbWUgPSAnZmlsZScpLCAnLycgPT09IGkgfHwgJ1xcXFwnID09PSBpKSkgZiA9IEl0O1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghciB8fCAnZmlsZScgIT09IHIuc2NoZW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9ICR0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2Ugbjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmhvc3QgPSByLmhvc3QpLCAocy5wYXRoID0geShyLnBhdGgpKSwgKHMucXVlcnkgPSByLnF1ZXJ5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJz8nOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuaG9zdCA9IHIuaG9zdCksIChzLnBhdGggPSB5KHIucGF0aCkpLCAocy5xdWVyeSA9ICcnKSwgKGYgPSBDdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICcjJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmhvc3QgPSByLmhvc3QpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXRoID0geShyLnBhdGgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucXVlcnkgPSByLnF1ZXJ5KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuZnJhZ21lbnQgPSAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmID0gQXQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZ0KEMoeShvLCBsKSwgJycpKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKHMuaG9zdCA9IHIuaG9zdCksIChzLnBhdGggPSB5KHIucGF0aCkpLCBzLnNob3J0ZW5QYXRoKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZiA9ICR0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIEl0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCcvJyA9PT0gaSB8fCAnXFxcXCcgPT09IGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9IFR0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHIgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2ZpbGUnID09PSByLnNjaGVtZSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQhdnQoQyh5KG8sIGwpLCAnJykpICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChodChyLnBhdGhbMF0sICEwKSA/IEIocy5wYXRoLCByLnBhdGhbMF0pIDogKHMuaG9zdCA9IHIuaG9zdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoZiA9ICR0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgVHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaSA9PT0gbiB8fCAnLycgPT09IGkgfHwgJ1xcXFwnID09PSBpIHx8ICc/JyA9PT0gaSB8fCAnIycgPT09IGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFlICYmIGh0KHApKSBmID0gJHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKCcnID09PSBwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgocy5ob3N0ID0gJycpLCBlKSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSBSdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoKHUgPSBzLnBhcnNlSG9zdChwKSkpIHJldHVybiB1O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgoJ2xvY2FsaG9zdCcgPT09IHMuaG9zdCAmJiAocy5ob3N0ID0gJycpLCBlKSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChwID0gJycpLCAoZiA9IFJ0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHAgKz0gaTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgUnQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocy5pc1NwZWNpYWwoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoKChmID0gJHQpLCAnLycgIT09IGkgJiYgJ1xcXFwnICE9PSBpKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGUgfHwgJz8nICE9PSBpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoZSB8fCAnIycgIT09IGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaSAhPT0gbiAmJiAoKGYgPSAkdCksICcvJyAhPT0gaSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgKHMuZnJhZ21lbnQgPSAnJyksIChmID0gQXQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSAocy5xdWVyeSA9ICcnKSwgKGYgPSBDdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlICR0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpID09PSBuIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCcvJyA9PT0gaSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoJ1xcXFwnID09PSBpICYmIHMuaXNTcGVjaWFsKCkpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCghZSAmJiAoJz8nID09PSBpIHx8ICcjJyA9PT0gaSkpXG5cdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgnLi4nID09PSAoYyA9IEcoKGMgPSBwKSkpIHx8ICclMmUuJyA9PT0gYyB8fCAnLiUyZScgPT09IGMgfHwgJyUyZSUyZScgPT09IGNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gKHMuc2hvcnRlblBhdGgoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Jy8nID09PSBpIHx8ICgnXFxcXCcgPT09IGkgJiYgcy5pc1NwZWNpYWwoKSkgfHwgQihzLnBhdGgsICcnKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZHQocClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAnLycgPT09IGkgfHwgKCdcXFxcJyA9PT0gaSAmJiBzLmlzU3BlY2lhbCgpKSB8fCBCKHMucGF0aCwgJycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogKCdmaWxlJyA9PT0gcy5zY2hlbWUgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCFzLnBhdGgubGVuZ3RoICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRodChwKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuaG9zdCAmJiAocy5ob3N0ID0gJycpLCAocCA9ICQocCwgMCkgKyAnOicpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRCKHMucGF0aCwgcCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChwID0gJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdmaWxlJyA9PT0gcy5zY2hlbWUgJiYgKGkgPT09IG4gfHwgJz8nID09PSBpIHx8ICcjJyA9PT0gaSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgcy5wYXRoLmxlbmd0aCA+IDEgJiYgJycgPT09IHMucGF0aFswXTsgKSBVKHMucGF0aCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCc/JyA9PT0gaVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gKChzLnF1ZXJ5ID0gJycpLCAoZiA9IEN0KSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICcjJyA9PT0gaSAmJiAoKHMuZnJhZ21lbnQgPSAnJyksIChmID0gQXQpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBwICs9IGx0KGksIHN0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgTnQ6XG5cdFx0XHRcdFx0XHRcdFx0XHQnPycgPT09IGlcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoKHMucXVlcnkgPSAnJyksIChmID0gQ3QpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICcjJyA9PT0gaVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gKChzLmZyYWdtZW50ID0gJycpLCAoZiA9IEF0KSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGkgIT09IG4gJiYgKHMucGF0aFswXSArPSBsdChpLCB1dCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBDdDpcblx0XHRcdFx0XHRcdFx0XHRcdGUgfHwgJyMnICE9PSBpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gaSAhPT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChcIidcIiA9PT0gaSAmJiBzLmlzU3BlY2lhbCgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IChzLnF1ZXJ5ICs9ICclMjcnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAocy5xdWVyeSArPSAnIycgPT09IGkgPyAnJTIzJyA6IGx0KGksIHV0KSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogKChzLmZyYWdtZW50ID0gJycpLCAoZiA9IEF0KSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIEF0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aSAhPT0gbiAmJiAocy5mcmFnbWVudCArPSBsdChpLCBjdCkpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGwrKztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHBhcnNlSG9zdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlLCByLCBuO1xuXHRcdFx0XHRcdFx0aWYgKCdbJyA9PT0gJCh0LCAwKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ10nICE9PSAkKHQsIHQubGVuZ3RoIC0gMSkpIHJldHVybiBIO1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0KChlID0gKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cixcblx0XHRcdFx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0XHRcdFx0byxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cyA9IDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSBudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsID0gMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJCh0LCBsKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgnOicgPT09IHAoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJzonICE9PSAkKHQsIDEpKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChsICs9IDIpLCAoZiA9ICsrcyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgcCgpOyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKDggPT09IHMpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCc6JyAhPT0gcCgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChlID0gciA9IDA7IHIgPCA0ICYmIE4odHQsIHAoKSk7ICkgKGUgPSAxNiAqIGUgKyBJKHAoKSwgMTYpKSwgbCsrLCByKys7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCcuJyA9PT0gcCgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoMCA9PT0gcikgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgobCAtPSByKSwgcyA+IDYpKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKG4gPSAwOyBwKCk7ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoKChvID0gbnVsbCksIG4gPiAwKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghKCcuJyA9PT0gcCgpICYmIG4gPCA0KSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGwrKztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIU4oSiwgcCgpKSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgTihKLCBwKCkpOyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoKChpID0gSShwKCksIDEwKSksIG51bGwgPT09IG8pKSBvID0gaTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgwID09PSBvKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gMTAgKiBvICsgaTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG8gPiAyNTUpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsKys7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNbc10gPSAyNTYgKiBjW3NdICsgbyksICgyICE9ICsrbiAmJiA0ICE9PSBuKSB8fCBzKys7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoNCAhPT0gbikgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnOicgPT09IHAoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKChsKyssICFwKCkpKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChwKCkpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjW3MrK10gPSBlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChudWxsICE9PSBmKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bCsrLCAoZiA9ICsrcyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGlmIChudWxsICE9PSBmKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGEgPSBzIC0gZiwgcyA9IDc7IDAgIT09IHMgJiYgYSA+IDA7IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodSA9IGNbc10pLCAoY1tzLS1dID0gY1tmICsgYSAtIDFdKSwgKGNbZiArIC0tYV0gPSB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKDggIT09IHMpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBjO1xuXHRcdFx0XHRcdFx0XHRcdH0pKEQodCwgMSwgLTEpKSksXG5cdFx0XHRcdFx0XHRcdFx0IWUpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gSDtcblx0XHRcdFx0XHRcdFx0dGhpcy5ob3N0ID0gZTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5pc1NwZWNpYWwoKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoKCh0ID0gbSh0KSksIE4oZXQsIHQpKSkgcmV0dXJuIEg7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHQoKGUgPSAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjID0gTSh0LCAnLicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKChjLmxlbmd0aCAmJiAnJyA9PT0gY1tjLmxlbmd0aCAtIDFdICYmIGMubGVuZ3RoLS0sIChlID0gYy5sZW5ndGgpID4gNCkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChyID0gW10sIG4gPSAwOyBuIDwgZTsgbisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnJyA9PT0gKG8gPSBjW25dKSkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKGkgPSAxMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0by5sZW5ndGggPiAxICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnMCcgPT09ICQobywgMCkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgoaSA9IE4oSywgbykgPyAxNiA6IDgpLCAobyA9IEQobywgOCA9PT0gaSA/IDEgOiAyKSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcnID09PSBvKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YSA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghTigxMCA9PT0gaSA/IFogOiA4ID09PSBpID8gWCA6IHR0LCBvKSkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YSA9IEkobywgaSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0QihyLCBhKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGZvciAobiA9IDA7IG4gPCBlOyBuKyspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgoKGEgPSByW25dKSwgbiA9PT0gZSAtIDEpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGEgPj0gUigyNTYsIDUgLSBlKSkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYSA+IDI1NSkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHUgPSBXKHIpLCBuID0gMDsgbiA8IHIubGVuZ3RoOyBuKyspIHUgKz0gcltuXSAqIFIoMjU2LCAzIC0gbik7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdTtcblx0XHRcdFx0XHRcdFx0XHR9KSh0KSksXG5cdFx0XHRcdFx0XHRcdFx0bnVsbCA9PT0gZSlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBIO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmhvc3QgPSBlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKE4ocnQsIHQpKSByZXR1cm4gSDtcblx0XHRcdFx0XHRcdFx0Zm9yIChlID0gJycsIHIgPSBkKHQpLCBuID0gMDsgbiA8IHIubGVuZ3RoOyBuKyspIGUgKz0gbHQocltuXSwgdXQpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmhvc3QgPSBlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Y2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gIXRoaXMuaG9zdCB8fCB0aGlzLmNhbm5vdEJlQUJhc2VVUkwgfHwgJ2ZpbGUnID09PSB0aGlzLnNjaGVtZTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGluY2x1ZGVzQ3JlZGVudGlhbHM6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnJyAhPT0gdGhpcy51c2VybmFtZSB8fCAnJyAhPT0gdGhpcy5wYXNzd29yZDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGlzU3BlY2lhbDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGgocHQsIHRoaXMuc2NoZW1lKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNob3J0ZW5QYXRoOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMucGF0aCxcblx0XHRcdFx0XHRcdFx0ZSA9IHQubGVuZ3RoO1xuXHRcdFx0XHRcdFx0IWUgfHwgKCdmaWxlJyA9PT0gdGhpcy5zY2hlbWUgJiYgMSA9PT0gZSAmJiBodCh0WzBdLCAhMCkpIHx8IHQubGVuZ3RoLS07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXJpYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0ZSA9IHQuc2NoZW1lLFxuXHRcdFx0XHRcdFx0XHRyID0gdC51c2VybmFtZSxcblx0XHRcdFx0XHRcdFx0biA9IHQucGFzc3dvcmQsXG5cdFx0XHRcdFx0XHRcdG8gPSB0Lmhvc3QsXG5cdFx0XHRcdFx0XHRcdGkgPSB0LnBvcnQsXG5cdFx0XHRcdFx0XHRcdGEgPSB0LnBhdGgsXG5cdFx0XHRcdFx0XHRcdHUgPSB0LnF1ZXJ5LFxuXHRcdFx0XHRcdFx0XHRjID0gdC5mcmFnbWVudCxcblx0XHRcdFx0XHRcdFx0cyA9IGUgKyAnOic7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRudWxsICE9PSBvXG5cdFx0XHRcdFx0XHRcdFx0PyAoKHMgKz0gJy8vJyksXG5cdFx0XHRcdFx0XHRcdFx0XHR0LmluY2x1ZGVzQ3JlZGVudGlhbHMoKSAmJiAocyArPSByICsgKG4gPyAnOicgKyBuIDogJycpICsgJ0AnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChzICs9IGF0KG8pKSxcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwgIT09IGkgJiYgKHMgKz0gJzonICsgaSkpXG5cdFx0XHRcdFx0XHRcdFx0OiAnZmlsZScgPT09IGUgJiYgKHMgKz0gJy8vJyksXG5cdFx0XHRcdFx0XHRcdChzICs9IHQuY2Fubm90QmVBQmFzZVVSTCA/IGFbMF0gOiBhLmxlbmd0aCA/ICcvJyArIEMoYSwgJy8nKSA6ICcnKSxcblx0XHRcdFx0XHRcdFx0bnVsbCAhPT0gdSAmJiAocyArPSAnPycgKyB1KSxcblx0XHRcdFx0XHRcdFx0bnVsbCAhPT0gYyAmJiAocyArPSAnIycgKyBjKSxcblx0XHRcdFx0XHRcdFx0c1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNldEhyZWY6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IHRoaXMucGFyc2UodCk7XG5cdFx0XHRcdFx0XHRpZiAoZSkgdGhyb3cgbmV3IF8oZSk7XG5cdFx0XHRcdFx0XHR0aGlzLnNlYXJjaFBhcmFtcy51cGRhdGUoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldE9yaWdpbjogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnNjaGVtZSxcblx0XHRcdFx0XHRcdFx0ZSA9IHRoaXMucG9ydDtcblx0XHRcdFx0XHRcdGlmICgnYmxvYicgPT09IHQpXG5cdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBCdCh0LnBhdGhbMF0pLm9yaWdpbjtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAnbnVsbCc7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiAnZmlsZScgIT09IHQgJiYgdGhpcy5pc1NwZWNpYWwoKVxuXHRcdFx0XHRcdFx0XHQ/IHQgKyAnOi8vJyArIGF0KHRoaXMuaG9zdCkgKyAobnVsbCAhPT0gZSA/ICc6JyArIGUgOiAnJylcblx0XHRcdFx0XHRcdFx0OiAnbnVsbCc7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRQcm90b2NvbDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuc2NoZW1lICsgJzonO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2V0UHJvdG9jb2w6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLnBhcnNlKGIodCkgKyAnOicsIHl0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldFVzZXJuYW1lOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy51c2VybmFtZTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNldFVzZXJuYW1lOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBkKGIodCkpO1xuXHRcdFx0XHRcdFx0aWYgKCF0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXNlcm5hbWUgPSAnJztcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB0aGlzLnVzZXJuYW1lICs9IGx0KGVbcl0sIGZ0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldFBhc3N3b3JkOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5wYXNzd29yZDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNldFBhc3N3b3JkOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBkKGIodCkpO1xuXHRcdFx0XHRcdFx0aWYgKCF0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGFzc3dvcmQgPSAnJztcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB0aGlzLnBhc3N3b3JkICs9IGx0KGVbcl0sIGZ0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldEhvc3Q6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy5ob3N0LFxuXHRcdFx0XHRcdFx0XHRlID0gdGhpcy5wb3J0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIG51bGwgPT09IHQgPyAnJyA6IG51bGwgPT09IGUgPyBhdCh0KSA6IGF0KHQpICsgJzonICsgZTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNldEhvc3Q6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNhbm5vdEJlQUJhc2VVUkwgfHwgdGhpcy5wYXJzZSh0LCBQdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRIb3N0bmFtZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLmhvc3Q7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbnVsbCA9PT0gdCA/ICcnIDogYXQodCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRIb3N0bmFtZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuY2Fubm90QmVBQmFzZVVSTCB8fCB0aGlzLnBhcnNlKHQsIGp0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldFBvcnQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy5wb3J0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIG51bGwgPT09IHQgPyAnJyA6IGIodCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRQb3J0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSB8fFxuXHRcdFx0XHRcdFx0XHQoJycgPT09ICh0ID0gYih0KSkgPyAodGhpcy5wb3J0ID0gbnVsbCkgOiB0aGlzLnBhcnNlKHQsIEx0KSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRQYXRobmFtZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnBhdGg7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5jYW5ub3RCZUFCYXNlVVJMID8gdFswXSA6IHQubGVuZ3RoID8gJy8nICsgQyh0LCAnLycpIDogJyc7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRQYXRobmFtZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuY2Fubm90QmVBQmFzZVVSTCB8fCAoKHRoaXMucGF0aCA9IFtdKSwgdGhpcy5wYXJzZSh0LCBSdCkpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0U2VhcmNoOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMucXVlcnk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdCA/ICc/JyArIHQgOiAnJztcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNldFNlYXJjaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdCcnID09PSAodCA9IGIodCkpXG5cdFx0XHRcdFx0XHRcdD8gKHRoaXMucXVlcnkgPSBudWxsKVxuXHRcdFx0XHRcdFx0XHQ6ICgnPycgPT09ICQodCwgMCkgJiYgKHQgPSBEKHQsIDEpKSwgKHRoaXMucXVlcnkgPSAnJyksIHRoaXMucGFyc2UodCwgQ3QpKSxcblx0XHRcdFx0XHRcdFx0dGhpcy5zZWFyY2hQYXJhbXMudXBkYXRlKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRTZWFyY2hQYXJhbXM6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnNlYXJjaFBhcmFtcy5mYWNhZGU7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRIYXNoOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMuZnJhZ21lbnQ7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdCA/ICcjJyArIHQgOiAnJztcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNldEhhc2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHQnJyAhPT0gKHQgPSBiKHQpKVxuXHRcdFx0XHRcdFx0XHQ/ICgnIycgPT09ICQodCwgMCkgJiYgKHQgPSBEKHQsIDEpKSwgKHRoaXMuZnJhZ21lbnQgPSAnJyksIHRoaXMucGFyc2UodCwgQXQpKVxuXHRcdFx0XHRcdFx0XHQ6ICh0aGlzLmZyYWdtZW50ID0gbnVsbCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1cGRhdGU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHRoaXMucXVlcnkgPSB0aGlzLnNlYXJjaFBhcmFtcy5zZXJpYWxpemUoKSB8fCBudWxsO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH07XG5cdFx0XHRcdHZhciBCdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IHAodGhpcywgRnQpLFxuXHRcdFx0XHRcdFx0XHRyID0geChhcmd1bWVudHMubGVuZ3RoLCAxKSA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDAsXG5cdFx0XHRcdFx0XHRcdG4gPSBFKGUsIG5ldyBXdCh0LCAhMSwgcikpO1xuXHRcdFx0XHRcdFx0aSB8fFxuXHRcdFx0XHRcdFx0XHQoKGUuaHJlZiA9IG4uc2VyaWFsaXplKCkpLFxuXHRcdFx0XHRcdFx0XHQoZS5vcmlnaW4gPSBuLmdldE9yaWdpbigpKSxcblx0XHRcdFx0XHRcdFx0KGUucHJvdG9jb2wgPSBuLmdldFByb3RvY29sKCkpLFxuXHRcdFx0XHRcdFx0XHQoZS51c2VybmFtZSA9IG4uZ2V0VXNlcm5hbWUoKSksXG5cdFx0XHRcdFx0XHRcdChlLnBhc3N3b3JkID0gbi5nZXRQYXNzd29yZCgpKSxcblx0XHRcdFx0XHRcdFx0KGUuaG9zdCA9IG4uZ2V0SG9zdCgpKSxcblx0XHRcdFx0XHRcdFx0KGUuaG9zdG5hbWUgPSBuLmdldEhvc3RuYW1lKCkpLFxuXHRcdFx0XHRcdFx0XHQoZS5wb3J0ID0gbi5nZXRQb3J0KCkpLFxuXHRcdFx0XHRcdFx0XHQoZS5wYXRobmFtZSA9IG4uZ2V0UGF0aG5hbWUoKSksXG5cdFx0XHRcdFx0XHRcdChlLnNlYXJjaCA9IG4uZ2V0U2VhcmNoKCkpLFxuXHRcdFx0XHRcdFx0XHQoZS5zZWFyY2hQYXJhbXMgPSBuLmdldFNlYXJjaFBhcmFtcygpKSxcblx0XHRcdFx0XHRcdFx0KGUuaGFzaCA9IG4uZ2V0SGFzaCgpKSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRGdCA9IEJ0LnByb3RvdHlwZSxcblx0XHRcdFx0XHRVdCA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTyh0aGlzKVt0XSgpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZXQ6XG5cdFx0XHRcdFx0XHRcdFx0ZSAmJlxuXHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTyh0aGlzKVtlXSh0KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRjb25maWd1cmFibGU6ICEwLFxuXHRcdFx0XHRcdFx0XHRlbnVtZXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChpICYmXG5cdFx0XHRcdFx0XHQobChGdCwgJ2hyZWYnLCBVdCgnc2VyaWFsaXplJywgJ3NldEhyZWYnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAnb3JpZ2luJywgVXQoJ2dldE9yaWdpbicpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdwcm90b2NvbCcsIFV0KCdnZXRQcm90b2NvbCcsICdzZXRQcm90b2NvbCcpKSxcblx0XHRcdFx0XHRcdGwoRnQsICd1c2VybmFtZScsIFV0KCdnZXRVc2VybmFtZScsICdzZXRVc2VybmFtZScpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdwYXNzd29yZCcsIFV0KCdnZXRQYXNzd29yZCcsICdzZXRQYXNzd29yZCcpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdob3N0JywgVXQoJ2dldEhvc3QnLCAnc2V0SG9zdCcpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdob3N0bmFtZScsIFV0KCdnZXRIb3N0bmFtZScsICdzZXRIb3N0bmFtZScpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdwb3J0JywgVXQoJ2dldFBvcnQnLCAnc2V0UG9ydCcpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdwYXRobmFtZScsIFV0KCdnZXRQYXRobmFtZScsICdzZXRQYXRobmFtZScpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdzZWFyY2gnLCBVdCgnZ2V0U2VhcmNoJywgJ3NldFNlYXJjaCcpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdzZWFyY2hQYXJhbXMnLCBVdCgnZ2V0U2VhcmNoUGFyYW1zJykpLFxuXHRcdFx0XHRcdFx0bChGdCwgJ2hhc2gnLCBVdCgnZ2V0SGFzaCcsICdzZXRIYXNoJykpKSxcblx0XHRcdFx0XHRmKFxuXHRcdFx0XHRcdFx0RnQsXG5cdFx0XHRcdFx0XHQndG9KU09OJyxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIE8odGhpcykuc2VyaWFsaXplKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e2VudW1lcmFibGU6ICEwfVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Zihcblx0XHRcdFx0XHRcdEZ0LFxuXHRcdFx0XHRcdFx0J3RvU3RyaW5nJyxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIE8odGhpcykuc2VyaWFsaXplKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e2VudW1lcmFibGU6ICEwfVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0TClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dmFyIE10ID0gTC5jcmVhdGVPYmplY3RVUkwsXG5cdFx0XHRcdFx0XHREdCA9IEwucmV2b2tlT2JqZWN0VVJMO1xuXHRcdFx0XHRcdE10ICYmIGYoQnQsICdjcmVhdGVPYmplY3RVUkwnLCBjKE10LCBMKSksIER0ICYmIGYoQnQsICdyZXZva2VPYmplY3RVUkwnLCBjKER0LCBMKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dyhCdCwgJ1VSTCcpLFxuXHRcdFx0XHRcdG8oXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGdsb2JhbDogITAsXG5cdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiAhMCxcblx0XHRcdFx0XHRcdFx0Zm9yY2VkOiAhYSxcblx0XHRcdFx0XHRcdFx0c2hhbTogIWksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1VSTDogQnR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ4NzMwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDkzOTEpO1xuXHRcdFx0fSxcblx0XHR9LFxuXHRcdGUgPSB7fTtcblx0ZnVuY3Rpb24gcihuKSB7XG5cdFx0dmFyIG8gPSBlW25dO1xuXHRcdGlmICh2b2lkIDAgIT09IG8pIHJldHVybiBvLmV4cG9ydHM7XG5cdFx0dmFyIGkgPSAoZVtuXSA9IHtcblx0XHRcdGV4cG9ydHM6IHt9LFxuXHRcdH0pO1xuXHRcdHJldHVybiB0W25dLmNhbGwoaS5leHBvcnRzLCBpLCBpLmV4cG9ydHMsIHIpLCBpLmV4cG9ydHM7XG5cdH1cblx0KHIuZyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0aWYgKCdvYmplY3QnID09IHR5cGVvZiBnbG9iYWxUaGlzKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0aWYgKCdvYmplY3QnID09IHR5cGVvZiB3aW5kb3cpIHJldHVybiB3aW5kb3c7XG5cdFx0fVxuXHR9KSgpKSxcblx0XHQoZnVuY3Rpb24gKCkge1xuXHRcdFx0cig2ODAxKSxcblx0XHRcdFx0cigzODQzKSxcblx0XHRcdFx0cig0MzM4KSxcblx0XHRcdFx0cig2MjAzKSxcblx0XHRcdFx0cig0MDQzKSxcblx0XHRcdFx0cig3MjY3KSxcblx0XHRcdFx0cig5MzU4KSxcblx0XHRcdFx0cig2OTEpLFxuXHRcdFx0XHRyKDIyOCksXG5cdFx0XHRcdHIoMzk2NCksXG5cdFx0XHRcdHIoOTc0OSksXG5cdFx0XHRcdHIoNjU0NCksXG5cdFx0XHRcdHIoNDI1NCksXG5cdFx0XHRcdHIoNzUyKSxcblx0XHRcdFx0cigxNjk0KSxcblx0XHRcdFx0cig2MjY1KSxcblx0XHRcdFx0cig4MzczKSxcblx0XHRcdFx0cig2NzkzKSxcblx0XHRcdFx0cig3NjI5KSxcblx0XHRcdFx0cig3NTA5KSxcblx0XHRcdFx0cig4MDUyKSxcblx0XHRcdFx0cigxMDU3KSxcblx0XHRcdFx0cig1NjApLFxuXHRcdFx0XHRyKDk2NjcpLFxuXHRcdFx0XHRyKDc2MDIpLFxuXHRcdFx0XHRyKDUpLFxuXHRcdFx0XHRyKDc1MjIpLFxuXHRcdFx0XHRyKDQyODQpLFxuXHRcdFx0XHRyKDk3MzApLFxuXHRcdFx0XHRyKDkzNzMpLFxuXHRcdFx0XHRyKDk5MDMpLFxuXHRcdFx0XHRyKDkyODgpLFxuXHRcdFx0XHRyKDgwNzcpLFxuXHRcdFx0XHRyKDYyMzcpLFxuXHRcdFx0XHRyKDM0NzYpLFxuXHRcdFx0XHRyKDE5MTkpLFxuXHRcdFx0XHRyKDk0NzQpLFxuXHRcdFx0XHRyKDg3MzApLFxuXHRcdFx0XHRyKDkzMDcpLFxuXHRcdFx0XHRyKDg4NTgpLFxuXHRcdFx0XHRyKDEzMTgpLFxuXHRcdFx0XHRyKDMyMjgpLFxuXHRcdFx0XHRyKDY1ODUpLFxuXHRcdFx0XHRyKDI4MjYpLFxuXHRcdFx0XHRyKDcwNDkpLFxuXHRcdFx0XHRyKDc0MDkpO1xuXHRcdFx0ZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KHQgPVxuXHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmICdzeW1ib2wnID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3Jcblx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ICE9PSBTeW1ib2wucHJvdG90eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gJ3N5bWJvbCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR0KGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBlKHQsIGUpIHtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0dmFyIG8gPSBlW3JdO1xuXHRcdFx0XHRcdChvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEpLFxuXHRcdFx0XHRcdFx0KG8uY29uZmlndXJhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0J3ZhbHVlJyBpbiBvICYmIChvLndyaXRhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIG4oby5rZXkpLCBvKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gbihlKSB7XG5cdFx0XHRcdHZhciByID0gKGZ1bmN0aW9uIChlLCByKSB7XG5cdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSB0KGUpIHx8IG51bGwgPT09IGUpIHJldHVybiBlO1xuXHRcdFx0XHRcdHZhciBuID0gZVtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IG4pIHtcblx0XHRcdFx0XHRcdHZhciBvID0gbi5jYWxsKGUsIHIgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gdChvKSkgcmV0dXJuIG87XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gKCdzdHJpbmcnID09PSByID8gU3RyaW5nIDogTnVtYmVyKShlKTtcblx0XHRcdFx0fSkoZSwgJ3N0cmluZycpO1xuXHRcdFx0XHRyZXR1cm4gJ3N5bWJvbCcgPT09IHQocikgPyByIDogU3RyaW5nKHIpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIG8gPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHR2YXIgZSwgciwgbztcblx0XHRcdFx0XHRcdCEoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCEodCBpbnN0YW5jZW9mIGUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHRcdH0pKHRoaXMsIHQpLFxuXHRcdFx0XHRcdFx0XHQoZSA9IHRoaXMpLFxuXHRcdFx0XHRcdFx0XHQobyA9ICc0LjAuMTInKSxcblx0XHRcdFx0XHRcdFx0KHIgPSBuKChyID0gJ3ZlcnNpb24nKSkpIGluIGVcblx0XHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbnVtZXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JpdGFibGU6ICEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQ6IChlW3JdID0gbyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciByLCBvLCBpO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQociA9IHQpLFxuXHRcdFx0XHRcdFx0KG8gPSBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpc0FydGljbGUnLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCd3Z0lzQXJ0aWNsZScpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdjdXJyZW50UGFnZU5hbWUnLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykucmVwbGFjZSgvIC9nLCAnXycpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdhcnRpY2xlSWQnLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCd3Z0FydGljbGVJZCcpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdyZXZpc2lvbklkJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dSZXZpc2lvbklkJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2xhdGVzdFJldmlzaW9uSWQnLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCd3Z0N1clJldmlzaW9uSWQnKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnYXJ0aWNsZVBhdGgnLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCd3Z0FydGljbGVQYXRoJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3NjcmlwdFBhdGgnLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCd3Z1NjcmlwdFBhdGgnKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnYWN0aW9uJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dBY3Rpb24nKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnc2tpbicsXG5cdFx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd2luZG93Lm13LmNvbmZpZy5nZXQoJ3NraW4nKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAndXNlckdyb3VwcycsXG5cdFx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd2luZG93Lm13LmNvbmZpZy5nZXQoJ3dnVXNlckdyb3VwcycpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICd3aWtpSWQnLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCd3Z1dpa2lJRCcpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdKSAmJiBlKHIucHJvdG90eXBlLCBvKSxcblx0XHRcdFx0XHRcdGkgJiYgZShyLCBpKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pLFxuXHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pKCksXG5cdFx0XHRcdGkgPSBuZXcgbygpO1xuXHRcdFx0ZnVuY3Rpb24gYSh0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KGEgPVxuXHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmICdzeW1ib2wnID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3Jcblx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ICE9PSBTeW1ib2wucHJvdG90eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gJ3N5bWJvbCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRhKHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiB1KHQsIGUpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHQpKSByZXR1cm4gdDtcblx0XHRcdFx0XHR9KSh0KSB8fFxuXHRcdFx0XHRcdChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPVxuXHRcdFx0XHRcdFx0XHRudWxsID09IHQgPyBudWxsIDogKCd1bmRlZmluZWQnICE9IHR5cGVvZiBTeW1ib2wgJiYgdFtTeW1ib2wuaXRlcmF0b3JdKSB8fCB0WydAQGl0ZXJhdG9yJ107XG5cdFx0XHRcdFx0XHRpZiAobnVsbCAhPSByKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBuLFxuXHRcdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0XHRhLFxuXHRcdFx0XHRcdFx0XHRcdHUgPSBbXSxcblx0XHRcdFx0XHRcdFx0XHRjID0gITAsXG5cdFx0XHRcdFx0XHRcdFx0cyA9ICExO1xuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoKGkgPSAociA9IHIuY2FsbCh0KSkubmV4dCksIDAgPT09IGUpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoT2JqZWN0KHIpICE9PSByKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRjID0gITE7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGZvciAoOyAhKGMgPSAobiA9IGkuY2FsbChyKSkuZG9uZSkgJiYgKHUucHVzaChuLnZhbHVlKSwgdS5sZW5ndGggIT09IGUpOyBjID0gITApO1xuXHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0KHMgPSAhMCksIChvID0gdCk7XG5cdFx0XHRcdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghYyAmJiBudWxsICE9IHIucmV0dXJuICYmICgoYSA9IHIucmV0dXJuKCkpLCBPYmplY3QoYSkgIT09IGEpKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChzKSB0aHJvdyBvO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSh0LCBlKSB8fFxuXHRcdFx0XHRcdChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0aWYgKCF0KSByZXR1cm47XG5cdFx0XHRcdFx0XHRpZiAoJ3N0cmluZycgPT0gdHlwZW9mIHQpIHJldHVybiBjKHQsIGUpO1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwgLTEpO1xuXHRcdFx0XHRcdFx0J09iamVjdCcgPT09IHIgJiYgdC5jb25zdHJ1Y3RvciAmJiAociA9IHQuY29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoJ01hcCcgPT09IHIgfHwgJ1NldCcgPT09IHIpIHJldHVybiBBcnJheS5mcm9tKHQpO1xuXHRcdFx0XHRcdFx0aWYgKCdBcmd1bWVudHMnID09PSByIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpKSByZXR1cm4gYyh0LCBlKTtcblx0XHRcdFx0XHR9KSh0LCBlKSB8fFxuXHRcdFx0XHRcdChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxuXHRcdFx0XHRcdFx0XHQnSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuJ1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBjKHQsIGUpIHtcblx0XHRcdFx0KG51bGwgPT0gZSB8fCBlID4gdC5sZW5ndGgpICYmIChlID0gdC5sZW5ndGgpO1xuXHRcdFx0XHRmb3IgKHZhciByID0gMCwgbiA9IG5ldyBBcnJheShlKTsgciA8IGU7IHIrKykgbltyXSA9IHRbcl07XG5cdFx0XHRcdHJldHVybiBuO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gcygpIHtcblx0XHRcdFx0LyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9ibG9iL21haW4vTElDRU5TRSAqLyBzID1cblx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR2YXIgdCxcblx0XHRcdFx0XHRlID0ge30sXG5cdFx0XHRcdFx0ciA9IE9iamVjdC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0biA9IHIuaGFzT3duUHJvcGVydHksXG5cdFx0XHRcdFx0byA9XG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkgfHxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdHRbZV0gPSByLnZhbHVlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRpID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sXG5cdFx0XHRcdFx0dSA9IGkuaXRlcmF0b3IgfHwgJ0BAaXRlcmF0b3InLFxuXHRcdFx0XHRcdGMgPSBpLmFzeW5jSXRlcmF0b3IgfHwgJ0BAYXN5bmNJdGVyYXRvcicsXG5cdFx0XHRcdFx0ZiA9IGkudG9TdHJpbmdUYWcgfHwgJ0BAdG9TdHJpbmdUYWcnO1xuXHRcdFx0XHRmdW5jdGlvbiBsKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHt2YWx1ZTogciwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pLCB0W2VdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGwoe30sICcnKTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdGwgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuICh0W2VdID0gcik7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBwKHQsIGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgaSA9IGUgJiYgZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBiID8gZSA6IGIsXG5cdFx0XHRcdFx0XHRhID0gT2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0XHR1ID0gbmV3IFIobiB8fCBbXSk7XG5cdFx0XHRcdFx0cmV0dXJuIG8oYSwgJ19pbnZva2UnLCB7dmFsdWU6IEwodCwgciwgdSl9KSwgYTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBoKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ25vcm1hbCcsXG5cdFx0XHRcdFx0XHRcdGFyZzogdC5jYWxsKGUsIHIpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAndGhyb3cnLFxuXHRcdFx0XHRcdFx0XHRhcmc6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlLndyYXAgPSBwO1xuXHRcdFx0XHR2YXIgdiA9ICdzdXNwZW5kZWRTdGFydCcsXG5cdFx0XHRcdFx0ZCA9ICdzdXNwZW5kZWRZaWVsZCcsXG5cdFx0XHRcdFx0eSA9ICdleGVjdXRpbmcnLFxuXHRcdFx0XHRcdGcgPSAnY29tcGxldGVkJyxcblx0XHRcdFx0XHRtID0ge307XG5cdFx0XHRcdGZ1bmN0aW9uIGIoKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiB3KCkge31cblx0XHRcdFx0ZnVuY3Rpb24geCgpIHt9XG5cdFx0XHRcdHZhciBrID0ge307XG5cdFx0XHRcdGwoaywgdSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dmFyIFMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG5cdFx0XHRcdFx0RSA9IFMgJiYgUyhTKCQoW10pKSk7XG5cdFx0XHRcdEUgJiYgRSAhPT0gciAmJiBuLmNhbGwoRSwgdSkgJiYgKGsgPSBFKTtcblx0XHRcdFx0dmFyIE8gPSAoeC5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoaykpO1xuXHRcdFx0XHRmdW5jdGlvbiBQKHQpIHtcblx0XHRcdFx0XHRbJ25leHQnLCAndGhyb3cnLCAncmV0dXJuJ10uZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0bCh0LCBlLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5faW52b2tlKGUsIHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gaih0LCBlKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcihvLCBpLCB1LCBjKSB7XG5cdFx0XHRcdFx0XHR2YXIgcyA9IGgodFtvXSwgdCwgaSk7XG5cdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyAhPT0gcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBmID0gcy5hcmcsXG5cdFx0XHRcdFx0XHRcdFx0bCA9IGYudmFsdWU7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBsICYmICdvYmplY3QnID09IGEobCkgJiYgbi5jYWxsKGwsICdfX2F3YWl0Jylcblx0XHRcdFx0XHRcdFx0XHQ/IGUucmVzb2x2ZShsLl9fYXdhaXQpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cignbmV4dCcsIHQsIHUsIGMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoJ3Rocm93JywgdCwgdSwgYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQ6IGUucmVzb2x2ZShsKS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmLnZhbHVlID0gdCksIHUoZik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIoJ3Rocm93JywgdCwgdSwgYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjKHMuYXJnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGk7XG5cdFx0XHRcdFx0byh0aGlzLCAnX2ludm9rZScsIHtcblx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgZShmdW5jdGlvbiAoZSwgbykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cih0LCBuLCBlLCBvKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkgPSBpID8gaS50aGVuKG8sIG8pIDogbygpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gTChlLCByLCBuKSB7XG5cdFx0XHRcdFx0dmFyIG8gPSB2O1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoaSwgYSkge1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IHkpIHRocm93IG5ldyBFcnJvcignR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZycpO1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IGcpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkpIHRocm93IGE7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHRcdFx0ZG9uZTogITAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmb3IgKG4ubWV0aG9kID0gaSwgbi5hcmcgPSBhOyA7ICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdSA9IG4uZGVsZWdhdGU7XG5cdFx0XHRcdFx0XHRcdGlmICh1KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBfKHUsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyA9PT0gbSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCduZXh0JyA9PT0gbi5tZXRob2QpIG4uc2VudCA9IG4uX3NlbnQgPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ3Rocm93JyA9PT0gbi5tZXRob2QpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAobyA9PT0gdikgdGhyb3cgKChvID0gZyksIG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0XHRuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlICdyZXR1cm4nID09PSBuLm1ldGhvZCAmJiBuLmFicnVwdCgncmV0dXJuJywgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRvID0geTtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBoKGUsIHIsIG4pO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ25vcm1hbCcgPT09IHMudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoKG8gPSBuLmRvbmUgPyBnIDogZCksIHMuYXJnID09PSBtKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBzLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6IG4uZG9uZSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCd0aHJvdycgPT09IHMudHlwZSAmJiAoKG8gPSBnKSwgKG4ubWV0aG9kID0gJ3Rocm93JyksIChuLmFyZyA9IHMuYXJnKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBfKGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgbiA9IHIubWV0aG9kLFxuXHRcdFx0XHRcdFx0byA9IGUuaXRlcmF0b3Jbbl07XG5cdFx0XHRcdFx0aWYgKG8gPT09IHQpXG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHQoJ3Rocm93JyA9PT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdGUuaXRlcmF0b3IucmV0dXJuICYmXG5cdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICdyZXR1cm4nKSwgKHIuYXJnID0gdCksIF8oZSwgciksICd0aHJvdycgPT09IHIubWV0aG9kKSkgfHxcblx0XHRcdFx0XHRcdFx0XHQoJ3JldHVybicgIT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdCgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcIiArIG4gKyBcIicgbWV0aG9kXCIpKSkpLFxuXHRcdFx0XHRcdFx0XHRtXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHZhciBpID0gaChvLCBlLml0ZXJhdG9yLCByLmFyZyk7XG5cdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkudHlwZSkgcmV0dXJuIChyLm1ldGhvZCA9ICd0aHJvdycpLCAoci5hcmcgPSBpLmFyZyksIChyLmRlbGVnYXRlID0gbnVsbCksIG07XG5cdFx0XHRcdFx0dmFyIGEgPSBpLmFyZztcblx0XHRcdFx0XHRyZXR1cm4gYVxuXHRcdFx0XHRcdFx0PyBhLmRvbmVcblx0XHRcdFx0XHRcdFx0PyAoKHJbZS5yZXN1bHROYW1lXSA9IGEudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBlLm5leHRMb2MpLFxuXHRcdFx0XHRcdFx0XHRcdCdyZXR1cm4nICE9PSByLm1ldGhvZCAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0bSlcblx0XHRcdFx0XHRcdFx0OiBhXG5cdFx0XHRcdFx0XHQ6ICgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QnKSksXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdG0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEkodCkge1xuXHRcdFx0XHRcdHZhciBlID0ge1xuXHRcdFx0XHRcdFx0dHJ5TG9jOiB0WzBdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0MSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksXG5cdFx0XHRcdFx0XHQyIGluIHQgJiYgKChlLmZpbmFsbHlMb2MgPSB0WzJdKSwgKGUuYWZ0ZXJMb2MgPSB0WzNdKSksXG5cdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMucHVzaChlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBUKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHQuY29tcGxldGlvbiB8fCB7fTtcblx0XHRcdFx0XHQoZS50eXBlID0gJ25vcm1hbCcpLCBkZWxldGUgZS5hcmcsICh0LmNvbXBsZXRpb24gPSBlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBSKHQpIHtcblx0XHRcdFx0XHQodGhpcy50cnlFbnRyaWVzID0gW3t0cnlMb2M6ICdyb290J31dKSwgdC5mb3JFYWNoKEksIHRoaXMpLCB0aGlzLnJlc2V0KCEwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiAkKGUpIHtcblx0XHRcdFx0XHRpZiAoZSB8fCAnJyA9PT0gZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBlW3VdO1xuXHRcdFx0XHRcdFx0aWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG5cdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZS5uZXh0KSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdGlmICghaXNOYU4oZS5sZW5ndGgpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gLTEsXG5cdFx0XHRcdFx0XHRcdFx0aSA9IGZ1bmN0aW9uIHIoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgKytvIDwgZS5sZW5ndGg7IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4uY2FsbChlLCBvKSkgcmV0dXJuIChyLnZhbHVlID0gZVtvXSksIChyLmRvbmUgPSAhMSksIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHIudmFsdWUgPSB0KSwgKHIuZG9uZSA9ICEwKSwgcjtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkubmV4dCA9IGkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGEoZSkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KHcucHJvdG90eXBlID0geCksXG5cdFx0XHRcdFx0byhPLCAnY29uc3RydWN0b3InLCB7dmFsdWU6IHgsIGNvbmZpZ3VyYWJsZTogITB9KSxcblx0XHRcdFx0XHRvKHgsICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogdywgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdCh3LmRpc3BsYXlOYW1lID0gbCh4LCBmLCAnR2VuZXJhdG9yRnVuY3Rpb24nKSksXG5cdFx0XHRcdFx0KGUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9ICdmdW5jdGlvbicgPT0gdHlwZW9mIHQgJiYgdC5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdHJldHVybiAhIWUgJiYgKGUgPT09IHcgfHwgJ0dlbmVyYXRvckZ1bmN0aW9uJyA9PT0gKGUuZGlzcGxheU5hbWUgfHwgZS5uYW1lKSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUubWFyayA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRPYmplY3Quc2V0UHJvdG90eXBlT2Zcblx0XHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCB4KVxuXHRcdFx0XHRcdFx0XHRcdDogKCh0Ll9fcHJvdG9fXyA9IHgpLCBsKHQsIGYsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHRcdFx0KHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShPKSksXG5cdFx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuYXdyYXAgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0X19hd2FpdDogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0UChqLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0bChqLnByb3RvdHlwZSwgYywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuQXN5bmNJdGVyYXRvciA9IGopLFxuXHRcdFx0XHRcdChlLmFzeW5jID0gZnVuY3Rpb24gKHQsIHIsIG4sIG8sIGkpIHtcblx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gaSAmJiAoaSA9IFByb21pc2UpO1xuXHRcdFx0XHRcdFx0dmFyIGEgPSBuZXcgaihwKHQsIHIsIG4sIG8pLCBpKTtcblx0XHRcdFx0XHRcdHJldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocilcblx0XHRcdFx0XHRcdFx0PyBhXG5cdFx0XHRcdFx0XHRcdDogYS5uZXh0KCkudGhlbihmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuZG9uZSA/IHQudmFsdWUgOiBhLm5leHQoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRQKE8pLFxuXHRcdFx0XHRcdGwoTywgZiwgJ0dlbmVyYXRvcicpLFxuXHRcdFx0XHRcdGwoTywgdSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0bChPLCAndG9TdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ1tvYmplY3QgR2VuZXJhdG9yXSc7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUua2V5cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IE9iamVjdCh0KSxcblx0XHRcdFx0XHRcdFx0ciA9IFtdO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgbiBpbiBlKSByLnB1c2gobik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRyLnJldmVyc2UoKSxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgci5sZW5ndGg7ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLnBvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4gaW4gZSkgcmV0dXJuICh0LnZhbHVlID0gbiksICh0LmRvbmUgPSAhMSksIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5kb25lID0gITApLCB0O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLnZhbHVlcyA9ICQpLFxuXHRcdFx0XHRcdChSLnByb3RvdHlwZSA9IHtcblx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiBSLFxuXHRcdFx0XHRcdFx0cmVzZXQ6IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHQoKHRoaXMucHJldiA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRvbmUgPSAhMSksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAnbmV4dCcpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmFyZyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLFxuXHRcdFx0XHRcdFx0XHRcdCFlKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciBpbiB0aGlzKVxuXHRcdFx0XHRcdFx0XHRcdFx0J3QnID09PSByLmNoYXJBdCgwKSAmJiBuLmNhbGwodGhpcywgcikgJiYgIWlzTmFOKCtyLnNsaWNlKDEpKSAmJiAodGhpc1tyXSA9IHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHN0b3A6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kb25lID0gITA7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ydmFsO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5kb25lKSB0aHJvdyBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8obiwgbykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQodS50eXBlID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdFx0XHQodS5hcmcgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBuKSxcblx0XHRcdFx0XHRcdFx0XHRcdG8gJiYgKChyLm1ldGhvZCA9ICduZXh0JyksIChyLmFyZyA9IHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdCEhb1xuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhID0gdGhpcy50cnlFbnRyaWVzW2ldLFxuXHRcdFx0XHRcdFx0XHRcdFx0dSA9IGEuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ3Jvb3QnID09PSBhLnRyeUxvYykgcmV0dXJuIG8oJ2VuZCcpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhLnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBjID0gbi5jYWxsKGEsICdjYXRjaExvYycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzID0gbi5jYWxsKGEsICdmaW5hbGx5TG9jJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyAmJiBzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcykgdGhyb3cgbmV3IEVycm9yKCd0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseScpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFicnVwdDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyByID49IDA7IC0tcikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBvID0gdGhpcy50cnlFbnRyaWVzW3JdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvLnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgbi5jYWxsKG8sICdmaW5hbGx5TG9jJykgJiYgdGhpcy5wcmV2IDwgby5maW5hbGx5TG9jKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgaSA9IG87XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aSAmJlxuXHRcdFx0XHRcdFx0XHRcdCgnYnJlYWsnID09PSB0IHx8ICdjb250aW51ZScgPT09IHQpICYmXG5cdFx0XHRcdFx0XHRcdFx0aS50cnlMb2MgPD0gZSAmJlxuXHRcdFx0XHRcdFx0XHRcdGUgPD0gaS5maW5hbGx5TG9jICYmXG5cdFx0XHRcdFx0XHRcdFx0KGkgPSBudWxsKTtcblx0XHRcdFx0XHRcdFx0dmFyIGEgPSBpID8gaS5jb21wbGV0aW9uIDoge307XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KGEudHlwZSA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdChhLmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdGkgPyAoKHRoaXMubWV0aG9kID0gJ25leHQnKSwgKHRoaXMubmV4dCA9IGkuZmluYWxseUxvYyksIG0pIDogdGhpcy5jb21wbGV0ZShhKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNvbXBsZXRlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQnYnJlYWsnID09PSB0LnR5cGUgfHwgJ2NvbnRpbnVlJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHQ/ICh0aGlzLm5leHQgPSB0LmFyZylcblx0XHRcdFx0XHRcdFx0XHRcdDogJ3JldHVybicgPT09IHQudHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubWV0aG9kID0gJ3JldHVybicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAnZW5kJykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJ25vcm1hbCcgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRtXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmluaXNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgVChyKSwgbTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIudHJ5TG9jID09PSB0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBuLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0VChyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2lsbGVnYWwgY2F0Y2ggYXR0ZW1wdCcpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIChlLCByLCBuKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVyYXRvcjogJChlKSxcblx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdE5hbWU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXh0TG9jOiBuLFxuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdCduZXh0JyA9PT0gdGhpcy5tZXRob2QgJiYgKHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0bVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBmKHQsIGUsIHIsIG4sIG8sIGksIGEpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR2YXIgdSA9IHRbaV0oYSksXG5cdFx0XHRcdFx0XHRjID0gdS52YWx1ZTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHJldHVybiB2b2lkIHIodCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dS5kb25lID8gZShjKSA6IFByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sIG8pO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gbCh0KSB7XG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB0aGlzLFxuXHRcdFx0XHRcdFx0ciA9IGFyZ3VtZW50cztcblx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKG4sIG8pIHtcblx0XHRcdFx0XHRcdHZhciBpID0gdC5hcHBseShlLCByKTtcblx0XHRcdFx0XHRcdGZ1bmN0aW9uIGEodCkge1xuXHRcdFx0XHRcdFx0XHRmKGksIG4sIG8sIGEsIHUsICduZXh0JywgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiB1KHQpIHtcblx0XHRcdFx0XHRcdFx0ZihpLCBuLCBvLCBhLCB1LCAndGhyb3cnLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGEodm9pZCAwKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHAodCwgZSkge1xuXHRcdFx0XHRmb3IgKHZhciByID0gMDsgciA8IGUubGVuZ3RoOyByKyspIHtcblx0XHRcdFx0XHR2YXIgbiA9IGVbcl07XG5cdFx0XHRcdFx0KG4uZW51bWVyYWJsZSA9IG4uZW51bWVyYWJsZSB8fCAhMSksXG5cdFx0XHRcdFx0XHQobi5jb25maWd1cmFibGUgPSAhMCksXG5cdFx0XHRcdFx0XHQndmFsdWUnIGluIG4gJiYgKG4ud3JpdGFibGUgPSAhMCksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgaChuLmtleSksIG4pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBoKHQpIHtcblx0XHRcdFx0dmFyIGUgPSAoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IGEodCkgfHwgbnVsbCA9PT0gdCkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0dmFyIHIgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG5cdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gcikge1xuXHRcdFx0XHRcdFx0dmFyIG4gPSByLmNhbGwodCwgZSB8fCAnZGVmYXVsdCcpO1xuXHRcdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBhKG4pKSByZXR1cm4gbjtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0BAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiAoJ3N0cmluZycgPT09IGUgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xuXHRcdFx0XHR9KSh0LCAnc3RyaW5nJyk7XG5cdFx0XHRcdHJldHVybiAnc3ltYm9sJyA9PT0gYShlKSA/IGUgOiBTdHJpbmcoZSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgdixcblx0XHRcdFx0ZCxcblx0XHRcdFx0eSxcblx0XHRcdFx0ZyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdCEoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCEodCBpbnN0YW5jZW9mIGUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHRcdH0pKHRoaXMsIHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgZSwgciwgbiwgbywgYTtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0KGUgPSB0KSxcblx0XHRcdFx0XHRcdChyID0gbnVsbCksXG5cdFx0XHRcdFx0XHQobiA9IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2dldCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHQoKGEgPSBsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzKCkubWFyayhmdW5jdGlvbiBlKHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiwgbztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcygpLndyYXAoZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKGUucHJldiA9IGUubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobiA9IG5ldyBVUkwodC5iYXNlKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuLnNlYXJjaFBhcmFtcy5hcHBlbmQodCwgclt0XSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5uZXh0ID0gNCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZldGNoKG4sIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnQXBpLVVzZXItQWdlbnQnOiAnV2lraXBsdXMvJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KGkudmVyc2lvbiwgJyAoJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChpLndpa2lJZCwgJyknKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKG8gPSBlLnNlbnQpLCAoZS5uZXh0ID0gNyksIG8uanNvbigpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlLmFicnVwdCgncmV0dXJuJywgZS5zZW50KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDg6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlLnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdwb3N0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgobyA9IGwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHMoKS5tYXJrKGZ1bmN0aW9uIGUocikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBuLCBvLCBhO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzKCkud3JhcChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgoZS5wcmV2ID0gZS5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gbmV3IFVSTCh0LmJhc2UpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG8gPSBuZXcgRm9ybURhdGEoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE9iamVjdC5lbnRyaWVzKHIpLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IHUodCwgMiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gZVswXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4gPSBlWzFdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8uYXBwZW5kKHIsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUubmV4dCA9IDUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmZXRjaChuLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ym9keTogbyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnQXBpLVVzZXItQWdlbnQnOiAnV2lraXBsdXMvJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KGkudmVyc2lvbiwgJyAoJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChpLndpa2lJZCwgJyknKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKGEgPSBlLnNlbnQpLCAoZS5uZXh0ID0gOCksIGEuanNvbigpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgODpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlLmFicnVwdCgncmV0dXJuJywgZS5zZW50KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDk6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlLnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdKSxcblx0XHRcdFx0XHRcdHIgJiYgcChlLnByb3RvdHlwZSwgciksXG5cdFx0XHRcdFx0XHRuICYmIHAoZSwgbiksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpO1xuXHRcdFx0KHYgPSBnKSxcblx0XHRcdFx0KGQgPSAnYmFzZScpLFxuXHRcdFx0XHQoeSA9ICcnLmNvbmNhdChsb2NhdGlvbi5wcm90b2NvbCwgJy8vJykuY29uY2F0KGxvY2F0aW9uLmhvc3QpLmNvbmNhdChpLnNjcmlwdFBhdGgsICcvYXBpLnBocCcpKSxcblx0XHRcdFx0KGQgPSBoKGQpKSBpbiB2XG5cdFx0XHRcdFx0PyBPYmplY3QuZGVmaW5lUHJvcGVydHkodiwgZCwge3ZhbHVlOiB5LCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSlcblx0XHRcdFx0XHQ6ICh2W2RdID0geSk7XG5cdFx0XHR2YXIgbSA9IGc7XG5cdFx0XHRyKDIwMDMpLFxuXHRcdFx0XHRyKDg1MTgpLFxuXHRcdFx0XHRyKDM0NDApLFxuXHRcdFx0XHRyKDYwMzQpLFxuXHRcdFx0XHRyKDUwKSxcblx0XHRcdFx0cig2NjQ2KSxcblx0XHRcdFx0cig3NDQ0KSxcblx0XHRcdFx0cig3OTY4KSxcblx0XHRcdFx0cig3NDcpLFxuXHRcdFx0XHRyKDEwOTkpLFxuXHRcdFx0XHRyKDYzMjApLFxuXHRcdFx0XHRyKDg3NiksXG5cdFx0XHRcdHIoNjc5MSksXG5cdFx0XHRcdHIoMTkpLFxuXHRcdFx0XHRyKDIzNDMpLFxuXHRcdFx0XHRyKDEwOTYpLFxuXHRcdFx0XHRyKDQzMTQpLFxuXHRcdFx0XHRyKDMzNDYpLFxuXHRcdFx0XHRyKDQ5ODQpLFxuXHRcdFx0XHRyKDQwNzgpLFxuXHRcdFx0XHRyKDgzMjQpO1xuXHRcdFx0ZnVuY3Rpb24gYih0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KGIgPVxuXHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmICdzeW1ib2wnID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3Jcblx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ICE9PSBTeW1ib2wucHJvdG90eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gJ3N5bWJvbCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRiKHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiB3KCkge1xuXHRcdFx0XHQvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9MSUNFTlNFICovIHcgPVxuXHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHZhciB0LFxuXHRcdFx0XHRcdGUgPSB7fSxcblx0XHRcdFx0XHRyID0gT2JqZWN0LnByb3RvdHlwZSxcblx0XHRcdFx0XHRuID0gci5oYXNPd25Qcm9wZXJ0eSxcblx0XHRcdFx0XHRvID1cblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0dFtlXSA9IHIudmFsdWU7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGkgPSAnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcblx0XHRcdFx0XHRhID0gaS5pdGVyYXRvciB8fCAnQEBpdGVyYXRvcicsXG5cdFx0XHRcdFx0dSA9IGkuYXN5bmNJdGVyYXRvciB8fCAnQEBhc3luY0l0ZXJhdG9yJyxcblx0XHRcdFx0XHRjID0gaS50b1N0cmluZ1RhZyB8fCAnQEB0b1N0cmluZ1RhZyc7XG5cdFx0XHRcdGZ1bmN0aW9uIHModCwgZSwgcikge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSksIHRbZV1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0cyh7fSwgJycpO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKHRbZV0gPSByKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGYodCwgZSwgciwgbikge1xuXHRcdFx0XHRcdHZhciBpID0gZSAmJiBlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGcgPyBlIDogZyxcblx0XHRcdFx0XHRcdGEgPSBPYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxcblx0XHRcdFx0XHRcdHUgPSBuZXcgUihuIHx8IFtdKTtcblx0XHRcdFx0XHRyZXR1cm4gbyhhLCAnX2ludm9rZScsIHt2YWx1ZTogTCh0LCByLCB1KX0pLCBhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGwodCwgZSwgcikge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnbm9ybWFsJyxcblx0XHRcdFx0XHRcdFx0YXJnOiB0LmNhbGwoZSwgciksXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0aHJvdycsXG5cdFx0XHRcdFx0XHRcdGFyZzogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGUud3JhcCA9IGY7XG5cdFx0XHRcdHZhciBwID0gJ3N1c3BlbmRlZFN0YXJ0Jyxcblx0XHRcdFx0XHRoID0gJ3N1c3BlbmRlZFlpZWxkJyxcblx0XHRcdFx0XHR2ID0gJ2V4ZWN1dGluZycsXG5cdFx0XHRcdFx0ZCA9ICdjb21wbGV0ZWQnLFxuXHRcdFx0XHRcdHkgPSB7fTtcblx0XHRcdFx0ZnVuY3Rpb24gZygpIHt9XG5cdFx0XHRcdGZ1bmN0aW9uIG0oKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiB4KCkge31cblx0XHRcdFx0dmFyIGsgPSB7fTtcblx0XHRcdFx0cyhrLCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR2YXIgUyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcblx0XHRcdFx0XHRFID0gUyAmJiBTKFMoJChbXSkpKTtcblx0XHRcdFx0RSAmJiBFICE9PSByICYmIG4uY2FsbChFLCBhKSAmJiAoayA9IEUpO1xuXHRcdFx0XHR2YXIgTyA9ICh4LnByb3RvdHlwZSA9IGcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShrKSk7XG5cdFx0XHRcdGZ1bmN0aW9uIFAodCkge1xuXHRcdFx0XHRcdFsnbmV4dCcsICd0aHJvdycsICdyZXR1cm4nXS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRzKHQsIGUsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBqKHQsIGUpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiByKG8sIGksIGEsIHUpIHtcblx0XHRcdFx0XHRcdHZhciBjID0gbCh0W29dLCB0LCBpKTtcblx0XHRcdFx0XHRcdGlmICgndGhyb3cnICE9PSBjLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBjLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRmID0gcy52YWx1ZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGYgJiYgJ29iamVjdCcgPT0gYihmKSAmJiBuLmNhbGwoZiwgJ19fYXdhaXQnKVxuXHRcdFx0XHRcdFx0XHRcdD8gZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyKCduZXh0JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cigndGhyb3cnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdDogZS5yZXNvbHZlKGYpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMudmFsdWUgPSB0KSwgYShzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcigndGhyb3cnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHUoYy5hcmcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaTtcblx0XHRcdFx0XHRvKHRoaXMsICdfaW52b2tlJywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0LCBuKSB7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8oKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBlKGZ1bmN0aW9uIChlLCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyKHQsIG4sIGUsIG8pO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoaSA9IGkgPyBpLnRoZW4obywgbykgOiBvKCkpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBMKGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgbyA9IHA7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChpLCBhKSB7XG5cdFx0XHRcdFx0XHRpZiAobyA9PT0gdikgdGhyb3cgbmV3IEVycm9yKCdHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nJyk7XG5cdFx0XHRcdFx0XHRpZiAobyA9PT0gZCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gaSkgdGhyb3cgYTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdCxcblx0XHRcdFx0XHRcdFx0XHRkb25lOiAhMCxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGZvciAobi5tZXRob2QgPSBpLCBuLmFyZyA9IGE7IDsgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB1ID0gbi5kZWxlZ2F0ZTtcblx0XHRcdFx0XHRcdFx0aWYgKHUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IF8odSwgbik7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjID09PSB5KSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBjO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoJ25leHQnID09PSBuLm1ldGhvZCkgbi5zZW50ID0gbi5fc2VudCA9IG4uYXJnO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmICgndGhyb3cnID09PSBuLm1ldGhvZCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvID09PSBwKSB0aHJvdyAoKG8gPSBkKSwgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRcdG4uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgJ3JldHVybicgPT09IG4ubWV0aG9kICYmIG4uYWJydXB0KCdyZXR1cm4nLCBuLmFyZyk7XG5cdFx0XHRcdFx0XHRcdG8gPSB2O1xuXHRcdFx0XHRcdFx0XHR2YXIgcyA9IGwoZSwgciwgbik7XG5cdFx0XHRcdFx0XHRcdGlmICgnbm9ybWFsJyA9PT0gcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCgobyA9IG4uZG9uZSA/IGQgOiBoKSwgcy5hcmcgPT09IHkpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHMuYXJnLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZG9uZTogbi5kb25lLFxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0J3Rocm93JyA9PT0gcy50eXBlICYmICgobyA9IGQpLCAobi5tZXRob2QgPSAndGhyb3cnKSwgKG4uYXJnID0gcy5hcmcpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIF8oZSwgcikge1xuXHRcdFx0XHRcdHZhciBuID0gci5tZXRob2QsXG5cdFx0XHRcdFx0XHRvID0gZS5pdGVyYXRvcltuXTtcblx0XHRcdFx0XHRpZiAobyA9PT0gdClcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdCgndGhyb3cnID09PSBuICYmXG5cdFx0XHRcdFx0XHRcdFx0ZS5pdGVyYXRvci5yZXR1cm4gJiZcblx0XHRcdFx0XHRcdFx0XHQoKHIubWV0aG9kID0gJ3JldHVybicpLCAoci5hcmcgPSB0KSwgXyhlLCByKSwgJ3Rocm93JyA9PT0gci5tZXRob2QpKSB8fFxuXHRcdFx0XHRcdFx0XHRcdCgncmV0dXJuJyAhPT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1wiICsgbiArIFwiJyBtZXRob2RcIikpKSksXG5cdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dmFyIGkgPSBsKG8sIGUuaXRlcmF0b3IsIHIuYXJnKTtcblx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gaS50eXBlKSByZXR1cm4gKHIubWV0aG9kID0gJ3Rocm93JyksIChyLmFyZyA9IGkuYXJnKSwgKHIuZGVsZWdhdGUgPSBudWxsKSwgeTtcblx0XHRcdFx0XHR2YXIgYSA9IGkuYXJnO1xuXHRcdFx0XHRcdHJldHVybiBhXG5cdFx0XHRcdFx0XHQ/IGEuZG9uZVxuXHRcdFx0XHRcdFx0XHQ/ICgocltlLnJlc3VsdE5hbWVdID0gYS52YWx1ZSksXG5cdFx0XHRcdFx0XHRcdFx0KHIubmV4dCA9IGUubmV4dExvYyksXG5cdFx0XHRcdFx0XHRcdFx0J3JldHVybicgIT09IHIubWV0aG9kICYmICgoci5tZXRob2QgPSAnbmV4dCcpLCAoci5hcmcgPSB0KSksXG5cdFx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHR5KVxuXHRcdFx0XHRcdFx0XHQ6IGFcblx0XHRcdFx0XHRcdDogKChyLm1ldGhvZCA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHQoci5hcmcgPSBuZXcgVHlwZUVycm9yKCdpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCcpKSxcblx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gSSh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB7XG5cdFx0XHRcdFx0XHR0cnlMb2M6IHRbMF0sXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHQxIGluIHQgJiYgKGUuY2F0Y2hMb2MgPSB0WzFdKSxcblx0XHRcdFx0XHRcdDIgaW4gdCAmJiAoKGUuZmluYWxseUxvYyA9IHRbMl0pLCAoZS5hZnRlckxvYyA9IHRbM10pKSxcblx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5wdXNoKGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIFQodCkge1xuXHRcdFx0XHRcdHZhciBlID0gdC5jb21wbGV0aW9uIHx8IHt9O1xuXHRcdFx0XHRcdChlLnR5cGUgPSAnbm9ybWFsJyksIGRlbGV0ZSBlLmFyZywgKHQuY29tcGxldGlvbiA9IGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIFIodCkge1xuXHRcdFx0XHRcdCh0aGlzLnRyeUVudHJpZXMgPSBbe3RyeUxvYzogJ3Jvb3QnfV0pLCB0LmZvckVhY2goSSwgdGhpcyksIHRoaXMucmVzZXQoITApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uICQoZSkge1xuXHRcdFx0XHRcdGlmIChlIHx8ICcnID09PSBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IGVbYV07XG5cdFx0XHRcdFx0XHRpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcblx0XHRcdFx0XHRcdGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBlLm5leHQpIHJldHVybiBlO1xuXHRcdFx0XHRcdFx0aWYgKCFpc05hTihlLmxlbmd0aCkpIHtcblx0XHRcdFx0XHRcdFx0dmFyIG8gPSAtMSxcblx0XHRcdFx0XHRcdFx0XHRpID0gZnVuY3Rpb24gcigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOyArK28gPCBlLmxlbmd0aDsgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAobi5jYWxsKGUsIG8pKSByZXR1cm4gKHIudmFsdWUgPSBlW29dKSwgKHIuZG9uZSA9ICExKSwgcjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoci52YWx1ZSA9IHQpLCAoci5kb25lID0gITApLCByO1xuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoaS5uZXh0ID0gaSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYihlKSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQobS5wcm90b3R5cGUgPSB4KSxcblx0XHRcdFx0XHRvKE8sICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogeCwgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdG8oeCwgJ2NvbnN0cnVjdG9yJywge3ZhbHVlOiBtLCBjb25maWd1cmFibGU6ICEwfSksXG5cdFx0XHRcdFx0KG0uZGlzcGxheU5hbWUgPSBzKHgsIGMsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHQoZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgdCAmJiB0LmNvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0cmV0dXJuICEhZSAmJiAoZSA9PT0gbSB8fCAnR2VuZXJhdG9yRnVuY3Rpb24nID09PSAoZS5kaXNwbGF5TmFtZSB8fCBlLm5hbWUpKTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5tYXJrID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5zZXRQcm90b3R5cGVPZlxuXHRcdFx0XHRcdFx0XHRcdD8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsIHgpXG5cdFx0XHRcdFx0XHRcdFx0OiAoKHQuX19wcm90b19fID0geCksIHModCwgYywgJ0dlbmVyYXRvckZ1bmN0aW9uJykpLFxuXHRcdFx0XHRcdFx0XHQodC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE8pKSxcblx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5hd3JhcCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRfX2F3YWl0OiB0LFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRQKGoucHJvdG90eXBlKSxcblx0XHRcdFx0XHRzKGoucHJvdG90eXBlLCB1LCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5Bc3luY0l0ZXJhdG9yID0gaiksXG5cdFx0XHRcdFx0KGUuYXN5bmMgPSBmdW5jdGlvbiAodCwgciwgbiwgbywgaSkge1xuXHRcdFx0XHRcdFx0dm9pZCAwID09PSBpICYmIChpID0gUHJvbWlzZSk7XG5cdFx0XHRcdFx0XHR2YXIgYSA9IG5ldyBqKGYodCwgciwgbiwgbyksIGkpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKVxuXHRcdFx0XHRcdFx0XHQ/IGFcblx0XHRcdFx0XHRcdFx0OiBhLm5leHQoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5kb25lID8gdC52YWx1ZSA6IGEubmV4dCgpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFAoTyksXG5cdFx0XHRcdFx0cyhPLCBjLCAnR2VuZXJhdG9yJyksXG5cdFx0XHRcdFx0cyhPLCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRzKE8sICd0b1N0cmluZycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnW29iamVjdCBHZW5lcmF0b3JdJztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5rZXlzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gT2JqZWN0KHQpLFxuXHRcdFx0XHRcdFx0XHRyID0gW107XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBuIGluIGUpIHIucHVzaChuKTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdHIucmV2ZXJzZSgpLFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoOyByLmxlbmd0aDsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIucG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobiBpbiBlKSByZXR1cm4gKHQudmFsdWUgPSBuKSwgKHQuZG9uZSA9ICExKSwgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICh0LmRvbmUgPSAhMCksIHQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUudmFsdWVzID0gJCksXG5cdFx0XHRcdFx0KFIucHJvdG90eXBlID0ge1xuXHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6IFIsXG5cdFx0XHRcdFx0XHRyZXNldDogZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdCgodGhpcy5wcmV2ID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMubmV4dCA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZG9uZSA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm1ldGhvZCA9ICduZXh0JyksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy50cnlFbnRyaWVzLmZvckVhY2goVCksXG5cdFx0XHRcdFx0XHRcdFx0IWUpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciByIGluIHRoaXMpXG5cdFx0XHRcdFx0XHRcdFx0XHQndCcgPT09IHIuY2hhckF0KDApICYmIG4uY2FsbCh0aGlzLCByKSAmJiAhaXNOYU4oK3Iuc2xpY2UoMSkpICYmICh0aGlzW3JdID0gdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c3RvcDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRvbmUgPSAhMDtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnJ2YWw7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmRvbmUpIHRocm93IGU7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcztcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gbyhuLCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdCh1LnR5cGUgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdCh1LmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIubmV4dCA9IG4pLFxuXHRcdFx0XHRcdFx0XHRcdFx0byAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ISFvXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGEgPSB0aGlzLnRyeUVudHJpZXNbaV0sXG5cdFx0XHRcdFx0XHRcdFx0XHR1ID0gYS5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdGlmICgncm9vdCcgPT09IGEudHJ5TG9jKSByZXR1cm4gbygnZW5kJyk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGEudHJ5TG9jIDw9IHRoaXMucHJldikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBuLmNhbGwoYSwgJ2NhdGNoTG9jJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHMgPSBuLmNhbGwoYSwgJ2ZpbmFsbHlMb2MnKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjICYmIHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFzKSB0aHJvdyBuZXcgRXJyb3IoJ3RyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0YWJydXB0OiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciByID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IHIgPj0gMDsgLS1yKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSB0aGlzLnRyeUVudHJpZXNbcl07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG8udHJ5TG9jIDw9IHRoaXMucHJldiAmJiBuLmNhbGwobywgJ2ZpbmFsbHlMb2MnKSAmJiB0aGlzLnByZXYgPCBvLmZpbmFsbHlMb2MpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBpID0gbztcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpICYmXG5cdFx0XHRcdFx0XHRcdFx0KCdicmVhaycgPT09IHQgfHwgJ2NvbnRpbnVlJyA9PT0gdCkgJiZcblx0XHRcdFx0XHRcdFx0XHRpLnRyeUxvYyA8PSBlICYmXG5cdFx0XHRcdFx0XHRcdFx0ZSA8PSBpLmZpbmFsbHlMb2MgJiZcblx0XHRcdFx0XHRcdFx0XHQoaSA9IG51bGwpO1xuXHRcdFx0XHRcdFx0XHR2YXIgYSA9IGkgPyBpLmNvbXBsZXRpb24gOiB7fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQoYS50eXBlID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KGEuYXJnID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0aSA/ICgodGhpcy5tZXRob2QgPSAnbmV4dCcpLCAodGhpcy5uZXh0ID0gaS5maW5hbGx5TG9jKSwgeSkgOiB0aGlzLmNvbXBsZXRlKGEpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y29tcGxldGU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCdicmVhaycgPT09IHQudHlwZSB8fCAnY29udGludWUnID09PSB0LnR5cGVcblx0XHRcdFx0XHRcdFx0XHRcdD8gKHRoaXMubmV4dCA9IHQuYXJnKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiAncmV0dXJuJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKCh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHQuYXJnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAncmV0dXJuJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubmV4dCA9ICdlbmQnKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnbm9ybWFsJyA9PT0gdC50eXBlICYmIGUgJiYgKHRoaXMubmV4dCA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmaW5pc2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoci5maW5hbGx5TG9jID09PSB0KSByZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sIHIuYWZ0ZXJMb2MpLCBUKHIpLCB5O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoci50cnlMb2MgPT09IHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gci5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IG4udHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IG4uYXJnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRUKHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG87XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignaWxsZWdhbCBjYXRjaCBhdHRlbXB0Jyk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24gKGUsIHIsIG4pIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kZWxlZ2F0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZXJhdG9yOiAkKGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0TmFtZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdG5leHRMb2M6IG4sXG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0J25leHQnID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHgodCwgZSwgciwgbiwgbywgaSwgYSkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHZhciB1ID0gdFtpXShhKSxcblx0XHRcdFx0XHRcdGMgPSB1LnZhbHVlO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZvaWQgcih0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR1LmRvbmUgPyBlKGMpIDogUHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obiwgbyk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBrKHQsIGUpIHtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBlW3JdO1xuXHRcdFx0XHRcdChuLmVudW1lcmFibGUgPSBuLmVudW1lcmFibGUgfHwgITEpLFxuXHRcdFx0XHRcdFx0KG4uY29uZmlndXJhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0J3ZhbHVlJyBpbiBuICYmIChuLndyaXRhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIEUobi5rZXkpLCBuKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gUyh0LCBlLCByKSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KGUgPSBFKGUpKSBpbiB0XG5cdFx0XHRcdFx0XHQ/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCB7dmFsdWU6IHIsIGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITB9KVxuXHRcdFx0XHRcdFx0OiAodFtlXSA9IHIpLFxuXHRcdFx0XHRcdHRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIEUodCkge1xuXHRcdFx0XHR2YXIgZSA9IChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gYih0KSB8fCBudWxsID09PSB0KSByZXR1cm4gdDtcblx0XHRcdFx0XHR2YXIgciA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcblx0XHRcdFx0XHRpZiAodm9pZCAwICE9PSByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbiA9IHIuY2FsbCh0LCBlIHx8ICdkZWZhdWx0Jyk7XG5cdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IGIobikpIHJldHVybiBuO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuICgnc3RyaW5nJyA9PT0gZSA/IFN0cmluZyA6IE51bWJlcikodCk7XG5cdFx0XHRcdH0pKHQsICdzdHJpbmcnKTtcblx0XHRcdFx0cmV0dXJuICdzeW1ib2wnID09PSBiKGUpID8gZSA6IFN0cmluZyhlKTtcblx0XHRcdH1cblx0XHRcdHZhciBPID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0dmFyIGU7XG5cdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0XHR9KSh0aGlzLCB0KSxcblx0XHRcdFx0XHRcdFx0Uyh0aGlzLCAnbGFuZ3VhZ2UnLCB2b2lkIDApLFxuXHRcdFx0XHRcdFx0XHRTKHRoaXMsICdpMThuRGF0YScsIHt9KSxcblx0XHRcdFx0XHRcdFx0Uyh0aGlzLCAnc2Vzc2lvblVwZGF0ZUxvZycsIFtdKTtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5XaWtpcGx1c19TZXR0aW5ncykubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLmxhbmd1YWdlLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdGUgPSAobmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvci5icm93c2VyTGFuZ3VhZ2UpXG5cdFx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoL2hhbltzdF0tPy9pLCAnJylcblx0XHRcdFx0XHRcdFx0XHQudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMubGFuZ3VhZ2UgPSBlO1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1dpa2lwbHVzX2kxOG5DYWNoZScpKSxcblx0XHRcdFx0XHRcdFx0XHRcdG4gPSAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0byA9IE9iamVjdC5rZXlzKHIpO1xuXHRcdFx0XHRcdFx0XHRcdG4gPCBvLmxlbmd0aDtcblx0XHRcdFx0XHRcdFx0XHRuKytcblx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGkgPSBvW25dO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaTE4bkRhdGFbaV0gPSByW2ldO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdXaWtpcGx1c19pMThuQ2FjaGUnLCAne30nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGUsIHIsIG4sIG8sIGk7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdChlID0gdCksXG5cdFx0XHRcdFx0XHQociA9IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3RyYW5zbGF0ZScsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogW10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMubGFuZ3VhZ2UgaW4gdGhpcy5pMThuRGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gdCBpbiB0aGlzLmkxOG5EYXRhW3RoaXMubGFuZ3VhZ2VdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IChyID0gdGhpcy5pMThuRGF0YVt0aGlzLmxhbmd1YWdlXVt0XSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogKHRoaXMubG9hZExhbmd1YWdlKHRoaXMubGFuZ3VhZ2UpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9IHQgaW4gdGhpcy5pMThuRGF0YVsnZW4tdXMnXSA/IHRoaXMuaTE4bkRhdGFbJ2VuLXVzJ11bdF0gOiB0KSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMubG9hZExhbmd1YWdlKHRoaXMubGFuZ3VhZ2UpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLmZvckVhY2goZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSByLnJlcGxhY2UoJyQnLmNvbmNhdChlICsgMSksIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdsb2FkTGFuZ3VhZ2UnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0KChvID0gdygpLm1hcmsoZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByLCBuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdygpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuc2Vzc2lvblVwZGF0ZUxvZy5pbmNsdWRlcyhlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFicnVwdCgncmV0dXJuJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gNSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZldGNoKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdodHRwczovL2dpdGNkbi5xaXV3ZW4ubmV0LmNuL0ludGVyZmFjZUFkbWluL1dpa2lwbHVzL3Jhdy9icmFuY2gvZGV2L2xhbmd1YWdlcy8nLmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnLmpzb24nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5uZXh0ID0gNyksIHQuc2VudC5qc29uKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA3OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSB0LnNlbnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobiA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1dpa2lwbHVzX0xhbmd1YWdlVmVyc2lvbicpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JzAwMCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNlc3Npb25VcGRhdGVMb2cucHVzaChlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIuX192ZXJzaW9uID09PSBuICYmIGUgaW4gdGhpcy5pMThuRGF0YSkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY29uc29sZS5pbmZvKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1VwZGF0ZSAnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoZSwgJyBzdXBwb3J0IHRvIHZlcnNpb24gJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChyLl9fdmVyc2lvbilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLmkxOG5EYXRhW2VdID0gciksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnV2lraXBsdXNfaTE4bkNhY2hlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHRoaXMuaTE4bkRhdGEpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAxNSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEzOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDEzKSwgKHQudDAgPSB0LmNhdGNoKDIpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbWzIsIDEzXV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdFx0XHRcdChpID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZSA9IGFyZ3VtZW50cztcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGkgPSBvLmFwcGx5KHQsIGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIGEodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eChpLCByLCBuLCBhLCB1LCAnbmV4dCcsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiB1KHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHgoaSwgciwgbiwgYSwgdSwgJ3Rocm93JywgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEodm9pZCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0pLFxuXHRcdFx0XHRcdFx0ciAmJiBrKGUucHJvdG90eXBlLCByKSxcblx0XHRcdFx0XHRcdG4gJiYgayhlLCBuKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pLFxuXHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pKCksXG5cdFx0XHRcdFAgPSBuZXcgTygpO1xuXHRcdFx0ZnVuY3Rpb24gaih0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KGogPVxuXHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmICdzeW1ib2wnID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3Jcblx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ICE9PSBTeW1ib2wucHJvdG90eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gJ3N5bWJvbCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRqKHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBMKHQsIGUpIHtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBlW3JdO1xuXHRcdFx0XHRcdChuLmVudW1lcmFibGUgPSBuLmVudW1lcmFibGUgfHwgITEpLFxuXHRcdFx0XHRcdFx0KG4uY29uZmlndXJhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0J3ZhbHVlJyBpbiBuICYmIChuLndyaXRhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIEkobi5rZXkpLCBuKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gXyh0LCBlLCByKSB7XG5cdFx0XHRcdHJldHVybiBlICYmIEwodC5wcm90b3R5cGUsIGUpLCByICYmIEwodCwgciksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pLCB0O1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gSSh0KSB7XG5cdFx0XHRcdHZhciBlID0gKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBqKHQpIHx8IG51bGwgPT09IHQpIHJldHVybiB0O1xuXHRcdFx0XHRcdHZhciByID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gci5jYWxsKHQsIGUgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gaihuKSkgcmV0dXJuIG47XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gKCdzdHJpbmcnID09PSBlID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcblx0XHRcdFx0fSkodCwgJ3N0cmluZycpO1xuXHRcdFx0XHRyZXR1cm4gJ3N5bWJvbCcgPT09IGooZSkgPyBlIDogU3RyaW5nKGUpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gVCh0LCBlKSB7XG5cdFx0XHRcdGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBSKHQpIHtcblx0XHRcdFx0dmFyIGUgPSBBKCk7XG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHRuID0gQih0KTtcblx0XHRcdFx0XHRpZiAoZSkge1xuXHRcdFx0XHRcdFx0dmFyIG8gPSBCKHRoaXMpLmNvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0ciA9IFJlZmxlY3QuY29uc3RydWN0KG4sIGFyZ3VtZW50cywgbyk7XG5cdFx0XHRcdFx0fSBlbHNlIHIgPSBuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0cmV0dXJuIChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0aWYgKGUgJiYgKCdvYmplY3QnID09PSBqKGUpIHx8ICdmdW5jdGlvbicgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IGUpXG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Rlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkJyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGlmICh2b2lkIDAgPT09IHQpXG5cdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHRcdH0pKHQpO1xuXHRcdFx0XHRcdH0pKHRoaXMsIHIpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gTih0KSB7XG5cdFx0XHRcdHZhciBlID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgTWFwID8gbmV3IE1hcCgpIDogdm9pZCAwO1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChOID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0bnVsbCA9PT0gdCB8fFxuXHRcdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAtMSAhPT0gRnVuY3Rpb24udG9TdHJpbmcuY2FsbCh0KS5pbmRleE9mKCdbbmF0aXZlIGNvZGVdJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICdmdW5jdGlvbicgPT0gdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KSh0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHRcdGlmICgnZnVuY3Rpb24nICE9IHR5cGVvZiB0KVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZS5oYXModCkpIHJldHVybiBlLmdldCh0KTtcblx0XHRcdFx0XHRcdFx0ZS5zZXQodCwgcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiByKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQyh0LCBhcmd1bWVudHMsIEIodGhpcykuY29uc3RydWN0b3IpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0KHIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSwge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiB7dmFsdWU6IHIsIGVudW1lcmFibGU6ICExLCB3cml0YWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITB9LFxuXHRcdFx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdFx0XHRcdFcociwgdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0Tih0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gQyh0LCBlLCByKSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KEMgPSBBKClcblx0XHRcdFx0XHRcdD8gUmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpXG5cdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSBbbnVsbF07XG5cdFx0XHRcdFx0XHRcdFx0bi5wdXNoLmFwcGx5KG4sIGUpO1xuXHRcdFx0XHRcdFx0XHRcdHZhciBvID0gbmV3IChGdW5jdGlvbi5iaW5kLmFwcGx5KHQsIG4pKSgpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByICYmIFcobywgci5wcm90b3R5cGUpLCBvO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cylcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIEEoKSB7XG5cdFx0XHRcdGlmICgndW5kZWZpbmVkJyA9PSB0eXBlb2YgUmVmbGVjdCB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiAhMTtcblx0XHRcdFx0aWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiAhMTtcblx0XHRcdFx0aWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIFByb3h5KSByZXR1cm4gITA7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKSwgITA7XG5cdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gITE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIFcodCwgZSkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChXID0gT2JqZWN0LnNldFByb3RvdHlwZU9mXG5cdFx0XHRcdFx0XHQ/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKClcblx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHQuX19wcm90b19fID0gZSksIHQ7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFcodCwgZSlcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIEIodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChCID0gT2JqZWN0LnNldFByb3RvdHlwZU9mXG5cdFx0XHRcdFx0XHQ/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKClcblx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRCKHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgRiA9IChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdCEoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdGlmICgnZnVuY3Rpb24nICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpXG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0XHQodC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcblx0XHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6IHt2YWx1ZTogdCwgd3JpdGFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwfSxcblx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsICdwcm90b3R5cGUnLCB7d3JpdGFibGU6ICExfSksXG5cdFx0XHRcdFx0XHRcdGUgJiYgVyh0LCBlKTtcblx0XHRcdFx0XHR9KShyLCB0KTtcblx0XHRcdFx0XHR2YXIgZSA9IFIocik7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcih0LCBuKSB7XG5cdFx0XHRcdFx0XHR2YXIgbztcblx0XHRcdFx0XHRcdHJldHVybiBUKHRoaXMsIHIpLCAoKG8gPSBlLmNhbGwodGhpcywgdCkpLmNvZGUgPSBuKSwgbztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIF8ocik7XG5cdFx0XHRcdH0pKE4oRXJyb3IpKSxcblx0XHRcdFx0VSA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFQodGhpcywgdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRfKHQsIG51bGwsIFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2RlYnVnJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6ICcnO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5kZWJ1ZygnW1dpa2lwbHVzLURFQlVHXSAnLmNvbmNhdCh0KSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2luZm8nLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogJyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmluZm8oJ1tXaWtpcGx1cy1JTkZPXSAnLmNvbmNhdCh0KSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2Vycm9yJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBbXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IFAudHJhbnNsYXRlKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhyb3cgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5mb3JFYWNoKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gci5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFwnLmNvbmNhdChlICsgMSksICdpZycpLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignW1dpa2lwbHVzLUVSUk9SXSAnLmNvbmNhdChyKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5ldyBGKCcnLmNvbmNhdChyKSwgdCkpXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdKSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRNID0gVTtcblx0XHRcdGZ1bmN0aW9uIEQodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChEID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0RCh0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gRyh0LCBlKSB7XG5cdFx0XHRcdHZhciByID0gT2JqZWN0LmtleXModCk7XG5cdFx0XHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO1xuXHRcdFx0XHRcdGUgJiZcblx0XHRcdFx0XHRcdChuID0gbi5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgZSkuZW51bWVyYWJsZTtcblx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdHIucHVzaC5hcHBseShyLCBuKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcjtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHEodCkge1xuXHRcdFx0XHRmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuXHRcdFx0XHRcdHZhciByID0gbnVsbCAhPSBhcmd1bWVudHNbZV0gPyBhcmd1bWVudHNbZV0gOiB7fTtcblx0XHRcdFx0XHRlICUgMlxuXHRcdFx0XHRcdFx0PyBHKE9iamVjdChyKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRWKHQsIGUsIHJbZV0pO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0OiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yc1xuXHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKVxuXHRcdFx0XHRcdFx0XHQ6IEcoT2JqZWN0KHIpKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLCBlKSk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBRKCkge1xuXHRcdFx0XHQvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9MSUNFTlNFICovIFEgPVxuXHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHZhciB0LFxuXHRcdFx0XHRcdGUgPSB7fSxcblx0XHRcdFx0XHRyID0gT2JqZWN0LnByb3RvdHlwZSxcblx0XHRcdFx0XHRuID0gci5oYXNPd25Qcm9wZXJ0eSxcblx0XHRcdFx0XHRvID1cblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0dFtlXSA9IHIudmFsdWU7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGkgPSAnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcblx0XHRcdFx0XHRhID0gaS5pdGVyYXRvciB8fCAnQEBpdGVyYXRvcicsXG5cdFx0XHRcdFx0dSA9IGkuYXN5bmNJdGVyYXRvciB8fCAnQEBhc3luY0l0ZXJhdG9yJyxcblx0XHRcdFx0XHRjID0gaS50b1N0cmluZ1RhZyB8fCAnQEB0b1N0cmluZ1RhZyc7XG5cdFx0XHRcdGZ1bmN0aW9uIHModCwgZSwgcikge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSksIHRbZV1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0cyh7fSwgJycpO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKHRbZV0gPSByKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGYodCwgZSwgciwgbikge1xuXHRcdFx0XHRcdHZhciBpID0gZSAmJiBlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGcgPyBlIDogZyxcblx0XHRcdFx0XHRcdGEgPSBPYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxcblx0XHRcdFx0XHRcdHUgPSBuZXcgSShuIHx8IFtdKTtcblx0XHRcdFx0XHRyZXR1cm4gbyhhLCAnX2ludm9rZScsIHt2YWx1ZTogUCh0LCByLCB1KX0pLCBhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGwodCwgZSwgcikge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnbm9ybWFsJyxcblx0XHRcdFx0XHRcdFx0YXJnOiB0LmNhbGwoZSwgciksXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0aHJvdycsXG5cdFx0XHRcdFx0XHRcdGFyZzogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGUud3JhcCA9IGY7XG5cdFx0XHRcdHZhciBwID0gJ3N1c3BlbmRlZFN0YXJ0Jyxcblx0XHRcdFx0XHRoID0gJ3N1c3BlbmRlZFlpZWxkJyxcblx0XHRcdFx0XHR2ID0gJ2V4ZWN1dGluZycsXG5cdFx0XHRcdFx0ZCA9ICdjb21wbGV0ZWQnLFxuXHRcdFx0XHRcdHkgPSB7fTtcblx0XHRcdFx0ZnVuY3Rpb24gZygpIHt9XG5cdFx0XHRcdGZ1bmN0aW9uIG0oKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiBiKCkge31cblx0XHRcdFx0dmFyIHcgPSB7fTtcblx0XHRcdFx0cyh3LCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR2YXIgeCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcblx0XHRcdFx0XHRrID0geCAmJiB4KHgoVChbXSkpKTtcblx0XHRcdFx0ayAmJiBrICE9PSByICYmIG4uY2FsbChrLCBhKSAmJiAodyA9IGspO1xuXHRcdFx0XHR2YXIgUyA9IChiLnByb3RvdHlwZSA9IGcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh3KSk7XG5cdFx0XHRcdGZ1bmN0aW9uIEUodCkge1xuXHRcdFx0XHRcdFsnbmV4dCcsICd0aHJvdycsICdyZXR1cm4nXS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRzKHQsIGUsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBPKHQsIGUpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiByKG8sIGksIGEsIHUpIHtcblx0XHRcdFx0XHRcdHZhciBjID0gbCh0W29dLCB0LCBpKTtcblx0XHRcdFx0XHRcdGlmICgndGhyb3cnICE9PSBjLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBjLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRmID0gcy52YWx1ZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGYgJiYgJ29iamVjdCcgPT0gRChmKSAmJiBuLmNhbGwoZiwgJ19fYXdhaXQnKVxuXHRcdFx0XHRcdFx0XHRcdD8gZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyKCduZXh0JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cigndGhyb3cnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdDogZS5yZXNvbHZlKGYpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMudmFsdWUgPSB0KSwgYShzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcigndGhyb3cnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHUoYy5hcmcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaTtcblx0XHRcdFx0XHRvKHRoaXMsICdfaW52b2tlJywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0LCBuKSB7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8oKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBlKGZ1bmN0aW9uIChlLCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyKHQsIG4sIGUsIG8pO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoaSA9IGkgPyBpLnRoZW4obywgbykgOiBvKCkpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBQKGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgbyA9IHA7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChpLCBhKSB7XG5cdFx0XHRcdFx0XHRpZiAobyA9PT0gdikgdGhyb3cgbmV3IEVycm9yKCdHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nJyk7XG5cdFx0XHRcdFx0XHRpZiAobyA9PT0gZCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gaSkgdGhyb3cgYTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdCxcblx0XHRcdFx0XHRcdFx0XHRkb25lOiAhMCxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGZvciAobi5tZXRob2QgPSBpLCBuLmFyZyA9IGE7IDsgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB1ID0gbi5kZWxlZ2F0ZTtcblx0XHRcdFx0XHRcdFx0aWYgKHUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IGoodSwgbik7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjID09PSB5KSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBjO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoJ25leHQnID09PSBuLm1ldGhvZCkgbi5zZW50ID0gbi5fc2VudCA9IG4uYXJnO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmICgndGhyb3cnID09PSBuLm1ldGhvZCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvID09PSBwKSB0aHJvdyAoKG8gPSBkKSwgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRcdG4uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgJ3JldHVybicgPT09IG4ubWV0aG9kICYmIG4uYWJydXB0KCdyZXR1cm4nLCBuLmFyZyk7XG5cdFx0XHRcdFx0XHRcdG8gPSB2O1xuXHRcdFx0XHRcdFx0XHR2YXIgcyA9IGwoZSwgciwgbik7XG5cdFx0XHRcdFx0XHRcdGlmICgnbm9ybWFsJyA9PT0gcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCgobyA9IG4uZG9uZSA/IGQgOiBoKSwgcy5hcmcgPT09IHkpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHMuYXJnLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZG9uZTogbi5kb25lLFxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0J3Rocm93JyA9PT0gcy50eXBlICYmICgobyA9IGQpLCAobi5tZXRob2QgPSAndGhyb3cnKSwgKG4uYXJnID0gcy5hcmcpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGooZSwgcikge1xuXHRcdFx0XHRcdHZhciBuID0gci5tZXRob2QsXG5cdFx0XHRcdFx0XHRvID0gZS5pdGVyYXRvcltuXTtcblx0XHRcdFx0XHRpZiAobyA9PT0gdClcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdCgndGhyb3cnID09PSBuICYmXG5cdFx0XHRcdFx0XHRcdFx0ZS5pdGVyYXRvci5yZXR1cm4gJiZcblx0XHRcdFx0XHRcdFx0XHQoKHIubWV0aG9kID0gJ3JldHVybicpLCAoci5hcmcgPSB0KSwgaihlLCByKSwgJ3Rocm93JyA9PT0gci5tZXRob2QpKSB8fFxuXHRcdFx0XHRcdFx0XHRcdCgncmV0dXJuJyAhPT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1wiICsgbiArIFwiJyBtZXRob2RcIikpKSksXG5cdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dmFyIGkgPSBsKG8sIGUuaXRlcmF0b3IsIHIuYXJnKTtcblx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gaS50eXBlKSByZXR1cm4gKHIubWV0aG9kID0gJ3Rocm93JyksIChyLmFyZyA9IGkuYXJnKSwgKHIuZGVsZWdhdGUgPSBudWxsKSwgeTtcblx0XHRcdFx0XHR2YXIgYSA9IGkuYXJnO1xuXHRcdFx0XHRcdHJldHVybiBhXG5cdFx0XHRcdFx0XHQ/IGEuZG9uZVxuXHRcdFx0XHRcdFx0XHQ/ICgocltlLnJlc3VsdE5hbWVdID0gYS52YWx1ZSksXG5cdFx0XHRcdFx0XHRcdFx0KHIubmV4dCA9IGUubmV4dExvYyksXG5cdFx0XHRcdFx0XHRcdFx0J3JldHVybicgIT09IHIubWV0aG9kICYmICgoci5tZXRob2QgPSAnbmV4dCcpLCAoci5hcmcgPSB0KSksXG5cdFx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHR5KVxuXHRcdFx0XHRcdFx0XHQ6IGFcblx0XHRcdFx0XHRcdDogKChyLm1ldGhvZCA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHQoci5hcmcgPSBuZXcgVHlwZUVycm9yKCdpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCcpKSxcblx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gTCh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB7XG5cdFx0XHRcdFx0XHR0cnlMb2M6IHRbMF0sXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHQxIGluIHQgJiYgKGUuY2F0Y2hMb2MgPSB0WzFdKSxcblx0XHRcdFx0XHRcdDIgaW4gdCAmJiAoKGUuZmluYWxseUxvYyA9IHRbMl0pLCAoZS5hZnRlckxvYyA9IHRbM10pKSxcblx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5wdXNoKGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIF8odCkge1xuXHRcdFx0XHRcdHZhciBlID0gdC5jb21wbGV0aW9uIHx8IHt9O1xuXHRcdFx0XHRcdChlLnR5cGUgPSAnbm9ybWFsJyksIGRlbGV0ZSBlLmFyZywgKHQuY29tcGxldGlvbiA9IGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEkodCkge1xuXHRcdFx0XHRcdCh0aGlzLnRyeUVudHJpZXMgPSBbe3RyeUxvYzogJ3Jvb3QnfV0pLCB0LmZvckVhY2goTCwgdGhpcyksIHRoaXMucmVzZXQoITApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIFQoZSkge1xuXHRcdFx0XHRcdGlmIChlIHx8ICcnID09PSBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IGVbYV07XG5cdFx0XHRcdFx0XHRpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcblx0XHRcdFx0XHRcdGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBlLm5leHQpIHJldHVybiBlO1xuXHRcdFx0XHRcdFx0aWYgKCFpc05hTihlLmxlbmd0aCkpIHtcblx0XHRcdFx0XHRcdFx0dmFyIG8gPSAtMSxcblx0XHRcdFx0XHRcdFx0XHRpID0gZnVuY3Rpb24gcigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOyArK28gPCBlLmxlbmd0aDsgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAobi5jYWxsKGUsIG8pKSByZXR1cm4gKHIudmFsdWUgPSBlW29dKSwgKHIuZG9uZSA9ICExKSwgcjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoci52YWx1ZSA9IHQpLCAoci5kb25lID0gITApLCByO1xuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoaS5uZXh0ID0gaSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoRChlKSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQobS5wcm90b3R5cGUgPSBiKSxcblx0XHRcdFx0XHRvKFMsICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogYiwgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdG8oYiwgJ2NvbnN0cnVjdG9yJywge3ZhbHVlOiBtLCBjb25maWd1cmFibGU6ICEwfSksXG5cdFx0XHRcdFx0KG0uZGlzcGxheU5hbWUgPSBzKGIsIGMsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHQoZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgdCAmJiB0LmNvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0cmV0dXJuICEhZSAmJiAoZSA9PT0gbSB8fCAnR2VuZXJhdG9yRnVuY3Rpb24nID09PSAoZS5kaXNwbGF5TmFtZSB8fCBlLm5hbWUpKTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5tYXJrID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5zZXRQcm90b3R5cGVPZlxuXHRcdFx0XHRcdFx0XHRcdD8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsIGIpXG5cdFx0XHRcdFx0XHRcdFx0OiAoKHQuX19wcm90b19fID0gYiksIHModCwgYywgJ0dlbmVyYXRvckZ1bmN0aW9uJykpLFxuXHRcdFx0XHRcdFx0XHQodC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFMpKSxcblx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5hd3JhcCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRfX2F3YWl0OiB0LFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRFKE8ucHJvdG90eXBlKSxcblx0XHRcdFx0XHRzKE8ucHJvdG90eXBlLCB1LCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5Bc3luY0l0ZXJhdG9yID0gTyksXG5cdFx0XHRcdFx0KGUuYXN5bmMgPSBmdW5jdGlvbiAodCwgciwgbiwgbywgaSkge1xuXHRcdFx0XHRcdFx0dm9pZCAwID09PSBpICYmIChpID0gUHJvbWlzZSk7XG5cdFx0XHRcdFx0XHR2YXIgYSA9IG5ldyBPKGYodCwgciwgbiwgbyksIGkpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKVxuXHRcdFx0XHRcdFx0XHQ/IGFcblx0XHRcdFx0XHRcdFx0OiBhLm5leHQoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5kb25lID8gdC52YWx1ZSA6IGEubmV4dCgpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdEUoUyksXG5cdFx0XHRcdFx0cyhTLCBjLCAnR2VuZXJhdG9yJyksXG5cdFx0XHRcdFx0cyhTLCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRzKFMsICd0b1N0cmluZycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnW29iamVjdCBHZW5lcmF0b3JdJztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5rZXlzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gT2JqZWN0KHQpLFxuXHRcdFx0XHRcdFx0XHRyID0gW107XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBuIGluIGUpIHIucHVzaChuKTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdHIucmV2ZXJzZSgpLFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoOyByLmxlbmd0aDsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIucG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobiBpbiBlKSByZXR1cm4gKHQudmFsdWUgPSBuKSwgKHQuZG9uZSA9ICExKSwgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICh0LmRvbmUgPSAhMCksIHQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUudmFsdWVzID0gVCksXG5cdFx0XHRcdFx0KEkucHJvdG90eXBlID0ge1xuXHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6IEksXG5cdFx0XHRcdFx0XHRyZXNldDogZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdCgodGhpcy5wcmV2ID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMubmV4dCA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZG9uZSA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm1ldGhvZCA9ICduZXh0JyksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy50cnlFbnRyaWVzLmZvckVhY2goXyksXG5cdFx0XHRcdFx0XHRcdFx0IWUpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciByIGluIHRoaXMpXG5cdFx0XHRcdFx0XHRcdFx0XHQndCcgPT09IHIuY2hhckF0KDApICYmIG4uY2FsbCh0aGlzLCByKSAmJiAhaXNOYU4oK3Iuc2xpY2UoMSkpICYmICh0aGlzW3JdID0gdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c3RvcDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRvbmUgPSAhMDtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnJ2YWw7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmRvbmUpIHRocm93IGU7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcztcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gbyhuLCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdCh1LnR5cGUgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdCh1LmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIubmV4dCA9IG4pLFxuXHRcdFx0XHRcdFx0XHRcdFx0byAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ISFvXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGEgPSB0aGlzLnRyeUVudHJpZXNbaV0sXG5cdFx0XHRcdFx0XHRcdFx0XHR1ID0gYS5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdGlmICgncm9vdCcgPT09IGEudHJ5TG9jKSByZXR1cm4gbygnZW5kJyk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGEudHJ5TG9jIDw9IHRoaXMucHJldikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBuLmNhbGwoYSwgJ2NhdGNoTG9jJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHMgPSBuLmNhbGwoYSwgJ2ZpbmFsbHlMb2MnKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjICYmIHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFzKSB0aHJvdyBuZXcgRXJyb3IoJ3RyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0YWJydXB0OiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciByID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IHIgPj0gMDsgLS1yKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSB0aGlzLnRyeUVudHJpZXNbcl07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG8udHJ5TG9jIDw9IHRoaXMucHJldiAmJiBuLmNhbGwobywgJ2ZpbmFsbHlMb2MnKSAmJiB0aGlzLnByZXYgPCBvLmZpbmFsbHlMb2MpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBpID0gbztcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpICYmXG5cdFx0XHRcdFx0XHRcdFx0KCdicmVhaycgPT09IHQgfHwgJ2NvbnRpbnVlJyA9PT0gdCkgJiZcblx0XHRcdFx0XHRcdFx0XHRpLnRyeUxvYyA8PSBlICYmXG5cdFx0XHRcdFx0XHRcdFx0ZSA8PSBpLmZpbmFsbHlMb2MgJiZcblx0XHRcdFx0XHRcdFx0XHQoaSA9IG51bGwpO1xuXHRcdFx0XHRcdFx0XHR2YXIgYSA9IGkgPyBpLmNvbXBsZXRpb24gOiB7fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQoYS50eXBlID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KGEuYXJnID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0aSA/ICgodGhpcy5tZXRob2QgPSAnbmV4dCcpLCAodGhpcy5uZXh0ID0gaS5maW5hbGx5TG9jKSwgeSkgOiB0aGlzLmNvbXBsZXRlKGEpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y29tcGxldGU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCdicmVhaycgPT09IHQudHlwZSB8fCAnY29udGludWUnID09PSB0LnR5cGVcblx0XHRcdFx0XHRcdFx0XHRcdD8gKHRoaXMubmV4dCA9IHQuYXJnKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiAncmV0dXJuJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKCh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHQuYXJnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAncmV0dXJuJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubmV4dCA9ICdlbmQnKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnbm9ybWFsJyA9PT0gdC50eXBlICYmIGUgJiYgKHRoaXMubmV4dCA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmaW5pc2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoci5maW5hbGx5TG9jID09PSB0KSByZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sIHIuYWZ0ZXJMb2MpLCBfKHIpLCB5O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoci50cnlMb2MgPT09IHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gci5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IG4udHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IG4uYXJnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRfKHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG87XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignaWxsZWdhbCBjYXRjaCBhdHRlbXB0Jyk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24gKGUsIHIsIG4pIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kZWxlZ2F0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZXJhdG9yOiBUKGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0TmFtZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdG5leHRMb2M6IG4sXG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0J25leHQnID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIEgodCwgZSwgciwgbiwgbywgaSwgYSkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHZhciB1ID0gdFtpXShhKSxcblx0XHRcdFx0XHRcdGMgPSB1LnZhbHVlO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZvaWQgcih0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR1LmRvbmUgPyBlKGMpIDogUHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obiwgbyk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiB6KHQpIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHRoaXMsXG5cdFx0XHRcdFx0XHRyID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAobiwgbykge1xuXHRcdFx0XHRcdFx0dmFyIGkgPSB0LmFwcGx5KGUsIHIpO1xuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gYSh0KSB7XG5cdFx0XHRcdFx0XHRcdEgoaSwgbiwgbywgYSwgdSwgJ25leHQnLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGZ1bmN0aW9uIHUodCkge1xuXHRcdFx0XHRcdFx0XHRIKGksIG4sIG8sIGEsIHUsICd0aHJvdycsIHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YSh2b2lkIDApO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gWSh0LCBlKSB7XG5cdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykge1xuXHRcdFx0XHRcdHZhciBuID0gZVtyXTtcblx0XHRcdFx0XHQobi5lbnVtZXJhYmxlID0gbi5lbnVtZXJhYmxlIHx8ICExKSxcblx0XHRcdFx0XHRcdChuLmNvbmZpZ3VyYWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdCd2YWx1ZScgaW4gbiAmJiAobi53cml0YWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBKKG4ua2V5KSwgbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIFYodCwgZSwgcikge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChlID0gSihlKSkgaW4gdFxuXHRcdFx0XHRcdFx0PyBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSlcblx0XHRcdFx0XHRcdDogKHRbZV0gPSByKSxcblx0XHRcdFx0XHR0XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBKKHQpIHtcblx0XHRcdFx0dmFyIGUgPSAoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IEQodCkgfHwgbnVsbCA9PT0gdCkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0dmFyIHIgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG5cdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gcikge1xuXHRcdFx0XHRcdFx0dmFyIG4gPSByLmNhbGwodCwgZSB8fCAnZGVmYXVsdCcpO1xuXHRcdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBEKG4pKSByZXR1cm4gbjtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0BAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiAoJ3N0cmluZycgPT09IGUgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xuXHRcdFx0XHR9KSh0LCAnc3RyaW5nJyk7XG5cdFx0XHRcdHJldHVybiAnc3ltYm9sJyA9PT0gRChlKSA/IGUgOiBTdHJpbmcoZSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgSyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdCEoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCEodCBpbnN0YW5jZW9mIGUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHRcdH0pKHRoaXMsIHQpLFxuXHRcdFx0XHRcdFx0XHRWKHRoaXMsICdwYWdlSW5mb0NhY2hlJywge30pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgZSwgciwgbiwgbywgYSwgdSwgYywgcywgZjtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0KGUgPSB0KSxcblx0XHRcdFx0XHRcdChyID0gW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZ2V0RWRpdFRva2VuJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgoZiA9IHooXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFEoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFEoKS53cmFwKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtLmdldCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1ldGE6ICd0b2tlbnMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCEoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUgPSB0LnNlbnQpLnF1ZXJ5ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5xdWVyeS50b2tlbnMgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLnF1ZXJ5LnRva2Vucy5jc3JmdG9rZW4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnK1xcXFwnICE9PSBlLnF1ZXJ5LnRva2Vucy5jc3JmdG9rZW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYWJydXB0KCdyZXR1cm4nLCBlLnF1ZXJ5LnRva2Vucy5jc3JmdG9rZW4pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFicnVwdCgncmV0dXJuJywgTS5lcnJvcignZmFpbF90b19nZXRfZWRpdHRva2VuJykpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgODpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZ2V0UGFnZUluZm8nLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0KChzID0geihcblx0XHRcdFx0XHRcdFx0XHRcdFx0USgpLm1hcmsoZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIsIG4sIG8sIGksIGE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFEoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKHIgPSBlLnRpdGxlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobiA9IGUucmV2aXNpb25JZCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvcDogJ3JldmlzaW9uc3xpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJ2cHJvcDogJ3RpbWVzdGFtcHxpZHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IW4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG8ucmV2aWRzID0gbiksICh0Lm5leHQgPSAxMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA3OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMucGFnZUluZm9DYWNoZVtyXSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDEwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFicnVwdCgncmV0dXJuJywge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpbWVzdGFtcDogdGhpcy5wYWdlSW5mb0NhY2hlW3JdLnRpbWVzdGFtcCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXZpc2lvbklkOiB0aGlzLnBhZ2VJbmZvQ2FjaGVbcl0ucmV2aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0by50aXRsZXMgPSByO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICh0Lm5leHQgPSAxMyksIG0uZ2V0KG8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEoaSA9IHQuc2VudCkucXVlcnkgfHwgIWkucXVlcnkucGFnZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAyMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJy0xJyAhPT0gT2JqZWN0LmtleXMoaS5xdWVyeS5wYWdlcylbMF0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxNztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hYnJ1cHQoJ3JldHVybicsIHt9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGEgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aS5xdWVyeS5wYWdlc1tPYmplY3Qua2V5cyhpLnF1ZXJ5LnBhZ2VzKVswXV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnJldmlzaW9uc1swXSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ciAmJiAodGhpcy5wYWdlSW5mb0NhY2hlW3JdID0gYSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5hYnJ1cHQoJ3JldHVybicsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpbWVzdGFtcDogYS50aW1lc3RhbXAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXZpc2lvbklkOiBhLnJldmlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDIwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAyNTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDIyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5wcmV2ID0gMjIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnQwID0gdC5jYXRjaCgxKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5lcnJvcignZmFpbF90b19nZXRfZWRpdHRva2VuJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDI1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtbMSwgMjJdXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2dldFdpa2lUZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgoYyA9IHooXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFEoKS5tYXJrKGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByLCBuLCBvO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBRKCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gZS5zZWN0aW9uKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobiA9IGUucmV2aXNpb25JZCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSA0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmZXRjaChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQobG9jYXRpb24ucHJvdG9jb2wsICcvLycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQobG9jYXRpb24uaG9zdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChpLnNjcmlwdFBhdGgsICcvaW5kZXgucGhwP29sZGlkPScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQobiwgJyZzZWN0aW9uPScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQociwgJyZhY3Rpb249cmF3Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5uZXh0ID0gNiksIHQuc2VudC50ZXh0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDY6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAobyA9IHQuc2VudCksIHQuYWJydXB0KCdyZXR1cm4nLCBvKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSAxMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQudDAgPSB0LmNhdGNoKDEpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRNLmVycm9yKCdmYWlsX3RvX2dldF93aWtpdGV4dCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbWzEsIDEwXV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdwYXJzZVdpa2lUZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgodSA9IHooXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFEoKS5tYXJrKGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8gPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFEoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSBvLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBvWzFdID8gb1sxXSA6ICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5wcmV2ID0gMiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG0ucG9zdCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFjdGlvbjogJ3BhcnNlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ6IGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBzdDogJ3RydWUnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghKG4gPSB0LnNlbnQpLnBhcnNlIHx8ICFuLnBhcnNlLnRleHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSA4O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFicnVwdCgncmV0dXJuJywgbi5wYXJzZS50ZXh0WycqJ10pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA4OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxMztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5wcmV2ID0gMTApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnQwID0gdC5jYXRjaCgyKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5lcnJvcignY2FudF9wYXJzZV93aWtpdGV4dCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbWzIsIDEwXV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdlZGl0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgoYSA9IHooXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFEoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGYsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBRKCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gKGUgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bC5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gbFswXSA/IGxbMF0gOiB7fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50aXRsZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSBlLmNvbnRlbnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvID0gZS5lZGl0VG9rZW4pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChpID0gZS50aW1lc3RhbXApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChhID0gZS5jb25maWcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh1ID0gdm9pZCAwID09PSBhID8ge30gOiBhKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoYyA9IGUuYWRkaXRpb25hbENvbmZpZyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMgPSB2b2lkIDAgPT09IGMgPyB7fSA6IGMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSAxKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gNCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bS5wb3N0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRxKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhY3Rpb246ICdlZGl0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ6IG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b2tlbjogbyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpID8ge2Jhc2V0aW1lc3RhbXA6IGl9IDoge31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGYgPSB0LnNlbnQpLCAodC5uZXh0ID0gMTApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnQwID0gdC5jYXRjaCgxKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5lcnJvcignbmV0d29ya19lZGl0X2Vycm9yJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIWYuZWRpdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDIyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnU3VjY2VzcycgIT09IGYuZWRpdC5yZXN1bHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxNTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hYnJ1cHQoJ3JldHVybicsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghZi5lZGl0LmNvZGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxOTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoUC50cmFuc2xhdGUoJ2hpdF9hYnVzZWZpbHRlcicpLCAnOicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmLmVkaXQuaW5mby5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcvSGl0IEFidXNlRmlsdGVyOiAvaWcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdcXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogc21hbGxlcjtcIj4nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmLmVkaXQud2FybmluZyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JzwvZGl2PlxcbiAgICAgICAgICAgICAgICAgICAgJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxOTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5lcnJvcigndW5rbm93bl9lZGl0X2Vycm9yJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDIwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAyMztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDIyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmLmVycm9yICYmIGYuZXJyb3IuY29kZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gTS5lcnJvcihmLmVycm9yLmNvZGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBmLmNvZGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gTS5lcnJvcihmLmNvZGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IE0uZXJyb3IoJ3Vua25vd25fZWRpdF9lcnJvcicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbWzEsIDddXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGEuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZ2V0TGF0ZXN0UmV2aXNpb25JZEZvclBhZ2UnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0KChvID0geihcblx0XHRcdFx0XHRcdFx0XHRcdFx0USgpLm1hcmsoZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIsIG47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFEoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0UGFnZUluZm8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9IHQuc2VudCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSByLnJldmlzaW9uSWQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuYWJydXB0KCdyZXR1cm4nLCBuKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0pLFxuXHRcdFx0XHRcdFx0ciAmJiBZKGUucHJvdG90eXBlLCByKSxcblx0XHRcdFx0XHRcdG4gJiYgWShlLCBuKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pLFxuXHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pKCksXG5cdFx0XHRcdFggPSBuZXcgSygpO1xuXHRcdFx0ZnVuY3Rpb24gWih0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KFogPVxuXHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmICdzeW1ib2wnID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3Jcblx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ICE9PSBTeW1ib2wucHJvdG90eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gJ3N5bWJvbCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRaKHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiB0dCh0LCBlKSB7XG5cdFx0XHRcdHZhciByID0gT2JqZWN0LmtleXModCk7XG5cdFx0XHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO1xuXHRcdFx0XHRcdGUgJiZcblx0XHRcdFx0XHRcdChuID0gbi5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgZSkuZW51bWVyYWJsZTtcblx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdHIucHVzaC5hcHBseShyLCBuKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcjtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIGV0KHQpIHtcblx0XHRcdFx0Zm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcblx0XHRcdFx0XHR2YXIgciA9IG51bGwgIT0gYXJndW1lbnRzW2VdID8gYXJndW1lbnRzW2VdIDoge307XG5cdFx0XHRcdFx0ZSAlIDJcblx0XHRcdFx0XHRcdD8gdHQoT2JqZWN0KHIpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdGF0KHQsIGUsIHJbZV0pO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0OiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yc1xuXHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKVxuXHRcdFx0XHRcdFx0XHQ6IHR0KE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IociwgZSkpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gcnQoKSB7XG5cdFx0XHRcdC8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi8gcnQgPVxuXHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHZhciB0LFxuXHRcdFx0XHRcdGUgPSB7fSxcblx0XHRcdFx0XHRyID0gT2JqZWN0LnByb3RvdHlwZSxcblx0XHRcdFx0XHRuID0gci5oYXNPd25Qcm9wZXJ0eSxcblx0XHRcdFx0XHRvID1cblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0dFtlXSA9IHIudmFsdWU7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGkgPSAnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcblx0XHRcdFx0XHRhID0gaS5pdGVyYXRvciB8fCAnQEBpdGVyYXRvcicsXG5cdFx0XHRcdFx0dSA9IGkuYXN5bmNJdGVyYXRvciB8fCAnQEBhc3luY0l0ZXJhdG9yJyxcblx0XHRcdFx0XHRjID0gaS50b1N0cmluZ1RhZyB8fCAnQEB0b1N0cmluZ1RhZyc7XG5cdFx0XHRcdGZ1bmN0aW9uIHModCwgZSwgcikge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSksIHRbZV1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0cyh7fSwgJycpO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKHRbZV0gPSByKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGYodCwgZSwgciwgbikge1xuXHRcdFx0XHRcdHZhciBpID0gZSAmJiBlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGcgPyBlIDogZyxcblx0XHRcdFx0XHRcdGEgPSBPYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxcblx0XHRcdFx0XHRcdHUgPSBuZXcgSShuIHx8IFtdKTtcblx0XHRcdFx0XHRyZXR1cm4gbyhhLCAnX2ludm9rZScsIHt2YWx1ZTogUCh0LCByLCB1KX0pLCBhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGwodCwgZSwgcikge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnbm9ybWFsJyxcblx0XHRcdFx0XHRcdFx0YXJnOiB0LmNhbGwoZSwgciksXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0aHJvdycsXG5cdFx0XHRcdFx0XHRcdGFyZzogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGUud3JhcCA9IGY7XG5cdFx0XHRcdHZhciBwID0gJ3N1c3BlbmRlZFN0YXJ0Jyxcblx0XHRcdFx0XHRoID0gJ3N1c3BlbmRlZFlpZWxkJyxcblx0XHRcdFx0XHR2ID0gJ2V4ZWN1dGluZycsXG5cdFx0XHRcdFx0ZCA9ICdjb21wbGV0ZWQnLFxuXHRcdFx0XHRcdHkgPSB7fTtcblx0XHRcdFx0ZnVuY3Rpb24gZygpIHt9XG5cdFx0XHRcdGZ1bmN0aW9uIG0oKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiBiKCkge31cblx0XHRcdFx0dmFyIHcgPSB7fTtcblx0XHRcdFx0cyh3LCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR2YXIgeCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcblx0XHRcdFx0XHRrID0geCAmJiB4KHgoVChbXSkpKTtcblx0XHRcdFx0ayAmJiBrICE9PSByICYmIG4uY2FsbChrLCBhKSAmJiAodyA9IGspO1xuXHRcdFx0XHR2YXIgUyA9IChiLnByb3RvdHlwZSA9IGcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh3KSk7XG5cdFx0XHRcdGZ1bmN0aW9uIEUodCkge1xuXHRcdFx0XHRcdFsnbmV4dCcsICd0aHJvdycsICdyZXR1cm4nXS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRzKHQsIGUsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBPKHQsIGUpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiByKG8sIGksIGEsIHUpIHtcblx0XHRcdFx0XHRcdHZhciBjID0gbCh0W29dLCB0LCBpKTtcblx0XHRcdFx0XHRcdGlmICgndGhyb3cnICE9PSBjLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBjLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRmID0gcy52YWx1ZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGYgJiYgJ29iamVjdCcgPT0gWihmKSAmJiBuLmNhbGwoZiwgJ19fYXdhaXQnKVxuXHRcdFx0XHRcdFx0XHRcdD8gZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyKCduZXh0JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cigndGhyb3cnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdDogZS5yZXNvbHZlKGYpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMudmFsdWUgPSB0KSwgYShzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcigndGhyb3cnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHUoYy5hcmcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaTtcblx0XHRcdFx0XHRvKHRoaXMsICdfaW52b2tlJywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0LCBuKSB7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8oKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBlKGZ1bmN0aW9uIChlLCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyKHQsIG4sIGUsIG8pO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoaSA9IGkgPyBpLnRoZW4obywgbykgOiBvKCkpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBQKGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgbyA9IHA7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChpLCBhKSB7XG5cdFx0XHRcdFx0XHRpZiAobyA9PT0gdikgdGhyb3cgbmV3IEVycm9yKCdHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nJyk7XG5cdFx0XHRcdFx0XHRpZiAobyA9PT0gZCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gaSkgdGhyb3cgYTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdCxcblx0XHRcdFx0XHRcdFx0XHRkb25lOiAhMCxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGZvciAobi5tZXRob2QgPSBpLCBuLmFyZyA9IGE7IDsgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB1ID0gbi5kZWxlZ2F0ZTtcblx0XHRcdFx0XHRcdFx0aWYgKHUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IGoodSwgbik7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjID09PSB5KSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBjO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoJ25leHQnID09PSBuLm1ldGhvZCkgbi5zZW50ID0gbi5fc2VudCA9IG4uYXJnO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmICgndGhyb3cnID09PSBuLm1ldGhvZCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvID09PSBwKSB0aHJvdyAoKG8gPSBkKSwgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRcdG4uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgJ3JldHVybicgPT09IG4ubWV0aG9kICYmIG4uYWJydXB0KCdyZXR1cm4nLCBuLmFyZyk7XG5cdFx0XHRcdFx0XHRcdG8gPSB2O1xuXHRcdFx0XHRcdFx0XHR2YXIgcyA9IGwoZSwgciwgbik7XG5cdFx0XHRcdFx0XHRcdGlmICgnbm9ybWFsJyA9PT0gcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCgobyA9IG4uZG9uZSA/IGQgOiBoKSwgcy5hcmcgPT09IHkpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHMuYXJnLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZG9uZTogbi5kb25lLFxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0J3Rocm93JyA9PT0gcy50eXBlICYmICgobyA9IGQpLCAobi5tZXRob2QgPSAndGhyb3cnKSwgKG4uYXJnID0gcy5hcmcpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGooZSwgcikge1xuXHRcdFx0XHRcdHZhciBuID0gci5tZXRob2QsXG5cdFx0XHRcdFx0XHRvID0gZS5pdGVyYXRvcltuXTtcblx0XHRcdFx0XHRpZiAobyA9PT0gdClcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdCgndGhyb3cnID09PSBuICYmXG5cdFx0XHRcdFx0XHRcdFx0ZS5pdGVyYXRvci5yZXR1cm4gJiZcblx0XHRcdFx0XHRcdFx0XHQoKHIubWV0aG9kID0gJ3JldHVybicpLCAoci5hcmcgPSB0KSwgaihlLCByKSwgJ3Rocm93JyA9PT0gci5tZXRob2QpKSB8fFxuXHRcdFx0XHRcdFx0XHRcdCgncmV0dXJuJyAhPT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1wiICsgbiArIFwiJyBtZXRob2RcIikpKSksXG5cdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dmFyIGkgPSBsKG8sIGUuaXRlcmF0b3IsIHIuYXJnKTtcblx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gaS50eXBlKSByZXR1cm4gKHIubWV0aG9kID0gJ3Rocm93JyksIChyLmFyZyA9IGkuYXJnKSwgKHIuZGVsZWdhdGUgPSBudWxsKSwgeTtcblx0XHRcdFx0XHR2YXIgYSA9IGkuYXJnO1xuXHRcdFx0XHRcdHJldHVybiBhXG5cdFx0XHRcdFx0XHQ/IGEuZG9uZVxuXHRcdFx0XHRcdFx0XHQ/ICgocltlLnJlc3VsdE5hbWVdID0gYS52YWx1ZSksXG5cdFx0XHRcdFx0XHRcdFx0KHIubmV4dCA9IGUubmV4dExvYyksXG5cdFx0XHRcdFx0XHRcdFx0J3JldHVybicgIT09IHIubWV0aG9kICYmICgoci5tZXRob2QgPSAnbmV4dCcpLCAoci5hcmcgPSB0KSksXG5cdFx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHR5KVxuXHRcdFx0XHRcdFx0XHQ6IGFcblx0XHRcdFx0XHRcdDogKChyLm1ldGhvZCA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHQoci5hcmcgPSBuZXcgVHlwZUVycm9yKCdpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCcpKSxcblx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gTCh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB7XG5cdFx0XHRcdFx0XHR0cnlMb2M6IHRbMF0sXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHQxIGluIHQgJiYgKGUuY2F0Y2hMb2MgPSB0WzFdKSxcblx0XHRcdFx0XHRcdDIgaW4gdCAmJiAoKGUuZmluYWxseUxvYyA9IHRbMl0pLCAoZS5hZnRlckxvYyA9IHRbM10pKSxcblx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5wdXNoKGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIF8odCkge1xuXHRcdFx0XHRcdHZhciBlID0gdC5jb21wbGV0aW9uIHx8IHt9O1xuXHRcdFx0XHRcdChlLnR5cGUgPSAnbm9ybWFsJyksIGRlbGV0ZSBlLmFyZywgKHQuY29tcGxldGlvbiA9IGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEkodCkge1xuXHRcdFx0XHRcdCh0aGlzLnRyeUVudHJpZXMgPSBbe3RyeUxvYzogJ3Jvb3QnfV0pLCB0LmZvckVhY2goTCwgdGhpcyksIHRoaXMucmVzZXQoITApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIFQoZSkge1xuXHRcdFx0XHRcdGlmIChlIHx8ICcnID09PSBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IGVbYV07XG5cdFx0XHRcdFx0XHRpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcblx0XHRcdFx0XHRcdGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBlLm5leHQpIHJldHVybiBlO1xuXHRcdFx0XHRcdFx0aWYgKCFpc05hTihlLmxlbmd0aCkpIHtcblx0XHRcdFx0XHRcdFx0dmFyIG8gPSAtMSxcblx0XHRcdFx0XHRcdFx0XHRpID0gZnVuY3Rpb24gcigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOyArK28gPCBlLmxlbmd0aDsgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAobi5jYWxsKGUsIG8pKSByZXR1cm4gKHIudmFsdWUgPSBlW29dKSwgKHIuZG9uZSA9ICExKSwgcjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoci52YWx1ZSA9IHQpLCAoci5kb25lID0gITApLCByO1xuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoaS5uZXh0ID0gaSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoWihlKSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQobS5wcm90b3R5cGUgPSBiKSxcblx0XHRcdFx0XHRvKFMsICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogYiwgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdG8oYiwgJ2NvbnN0cnVjdG9yJywge3ZhbHVlOiBtLCBjb25maWd1cmFibGU6ICEwfSksXG5cdFx0XHRcdFx0KG0uZGlzcGxheU5hbWUgPSBzKGIsIGMsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHQoZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgdCAmJiB0LmNvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0cmV0dXJuICEhZSAmJiAoZSA9PT0gbSB8fCAnR2VuZXJhdG9yRnVuY3Rpb24nID09PSAoZS5kaXNwbGF5TmFtZSB8fCBlLm5hbWUpKTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5tYXJrID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5zZXRQcm90b3R5cGVPZlxuXHRcdFx0XHRcdFx0XHRcdD8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsIGIpXG5cdFx0XHRcdFx0XHRcdFx0OiAoKHQuX19wcm90b19fID0gYiksIHModCwgYywgJ0dlbmVyYXRvckZ1bmN0aW9uJykpLFxuXHRcdFx0XHRcdFx0XHQodC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFMpKSxcblx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5hd3JhcCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRfX2F3YWl0OiB0LFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRFKE8ucHJvdG90eXBlKSxcblx0XHRcdFx0XHRzKE8ucHJvdG90eXBlLCB1LCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5Bc3luY0l0ZXJhdG9yID0gTyksXG5cdFx0XHRcdFx0KGUuYXN5bmMgPSBmdW5jdGlvbiAodCwgciwgbiwgbywgaSkge1xuXHRcdFx0XHRcdFx0dm9pZCAwID09PSBpICYmIChpID0gUHJvbWlzZSk7XG5cdFx0XHRcdFx0XHR2YXIgYSA9IG5ldyBPKGYodCwgciwgbiwgbyksIGkpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKVxuXHRcdFx0XHRcdFx0XHQ/IGFcblx0XHRcdFx0XHRcdFx0OiBhLm5leHQoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5kb25lID8gdC52YWx1ZSA6IGEubmV4dCgpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdEUoUyksXG5cdFx0XHRcdFx0cyhTLCBjLCAnR2VuZXJhdG9yJyksXG5cdFx0XHRcdFx0cyhTLCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRzKFMsICd0b1N0cmluZycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnW29iamVjdCBHZW5lcmF0b3JdJztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5rZXlzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gT2JqZWN0KHQpLFxuXHRcdFx0XHRcdFx0XHRyID0gW107XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBuIGluIGUpIHIucHVzaChuKTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdHIucmV2ZXJzZSgpLFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoOyByLmxlbmd0aDsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIucG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobiBpbiBlKSByZXR1cm4gKHQudmFsdWUgPSBuKSwgKHQuZG9uZSA9ICExKSwgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICh0LmRvbmUgPSAhMCksIHQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUudmFsdWVzID0gVCksXG5cdFx0XHRcdFx0KEkucHJvdG90eXBlID0ge1xuXHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6IEksXG5cdFx0XHRcdFx0XHRyZXNldDogZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdCgodGhpcy5wcmV2ID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMubmV4dCA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZG9uZSA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm1ldGhvZCA9ICduZXh0JyksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy50cnlFbnRyaWVzLmZvckVhY2goXyksXG5cdFx0XHRcdFx0XHRcdFx0IWUpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciByIGluIHRoaXMpXG5cdFx0XHRcdFx0XHRcdFx0XHQndCcgPT09IHIuY2hhckF0KDApICYmIG4uY2FsbCh0aGlzLCByKSAmJiAhaXNOYU4oK3Iuc2xpY2UoMSkpICYmICh0aGlzW3JdID0gdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c3RvcDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRvbmUgPSAhMDtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnJ2YWw7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmRvbmUpIHRocm93IGU7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcztcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gbyhuLCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdCh1LnR5cGUgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdCh1LmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIubmV4dCA9IG4pLFxuXHRcdFx0XHRcdFx0XHRcdFx0byAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ISFvXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGEgPSB0aGlzLnRyeUVudHJpZXNbaV0sXG5cdFx0XHRcdFx0XHRcdFx0XHR1ID0gYS5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdGlmICgncm9vdCcgPT09IGEudHJ5TG9jKSByZXR1cm4gbygnZW5kJyk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGEudHJ5TG9jIDw9IHRoaXMucHJldikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBuLmNhbGwoYSwgJ2NhdGNoTG9jJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHMgPSBuLmNhbGwoYSwgJ2ZpbmFsbHlMb2MnKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjICYmIHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFzKSB0aHJvdyBuZXcgRXJyb3IoJ3RyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0YWJydXB0OiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciByID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IHIgPj0gMDsgLS1yKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSB0aGlzLnRyeUVudHJpZXNbcl07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG8udHJ5TG9jIDw9IHRoaXMucHJldiAmJiBuLmNhbGwobywgJ2ZpbmFsbHlMb2MnKSAmJiB0aGlzLnByZXYgPCBvLmZpbmFsbHlMb2MpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBpID0gbztcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpICYmXG5cdFx0XHRcdFx0XHRcdFx0KCdicmVhaycgPT09IHQgfHwgJ2NvbnRpbnVlJyA9PT0gdCkgJiZcblx0XHRcdFx0XHRcdFx0XHRpLnRyeUxvYyA8PSBlICYmXG5cdFx0XHRcdFx0XHRcdFx0ZSA8PSBpLmZpbmFsbHlMb2MgJiZcblx0XHRcdFx0XHRcdFx0XHQoaSA9IG51bGwpO1xuXHRcdFx0XHRcdFx0XHR2YXIgYSA9IGkgPyBpLmNvbXBsZXRpb24gOiB7fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQoYS50eXBlID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KGEuYXJnID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0aSA/ICgodGhpcy5tZXRob2QgPSAnbmV4dCcpLCAodGhpcy5uZXh0ID0gaS5maW5hbGx5TG9jKSwgeSkgOiB0aGlzLmNvbXBsZXRlKGEpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y29tcGxldGU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCdicmVhaycgPT09IHQudHlwZSB8fCAnY29udGludWUnID09PSB0LnR5cGVcblx0XHRcdFx0XHRcdFx0XHRcdD8gKHRoaXMubmV4dCA9IHQuYXJnKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiAncmV0dXJuJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKCh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHQuYXJnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAncmV0dXJuJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubmV4dCA9ICdlbmQnKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnbm9ybWFsJyA9PT0gdC50eXBlICYmIGUgJiYgKHRoaXMubmV4dCA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmaW5pc2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoci5maW5hbGx5TG9jID09PSB0KSByZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sIHIuYWZ0ZXJMb2MpLCBfKHIpLCB5O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoci50cnlMb2MgPT09IHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gci5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IG4udHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IG4uYXJnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRfKHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG87XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignaWxsZWdhbCBjYXRjaCBhdHRlbXB0Jyk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24gKGUsIHIsIG4pIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kZWxlZ2F0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZXJhdG9yOiBUKGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0TmFtZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdG5leHRMb2M6IG4sXG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0J25leHQnID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIG50KHQsIGUsIHIsIG4sIG8sIGksIGEpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR2YXIgdSA9IHRbaV0oYSksXG5cdFx0XHRcdFx0XHRjID0gdS52YWx1ZTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHJldHVybiB2b2lkIHIodCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dS5kb25lID8gZShjKSA6IFByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sIG8pO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gb3QodCkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHZhciBlID0gdGhpcyxcblx0XHRcdFx0XHRcdHIgPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChuLCBvKSB7XG5cdFx0XHRcdFx0XHR2YXIgaSA9IHQuYXBwbHkoZSwgcik7XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiBhKHQpIHtcblx0XHRcdFx0XHRcdFx0bnQoaSwgbiwgbywgYSwgdSwgJ25leHQnLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGZ1bmN0aW9uIHUodCkge1xuXHRcdFx0XHRcdFx0XHRudChpLCBuLCBvLCBhLCB1LCAndGhyb3cnLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGEodm9pZCAwKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIGl0KHQsIGUpIHtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBlW3JdO1xuXHRcdFx0XHRcdChuLmVudW1lcmFibGUgPSBuLmVudW1lcmFibGUgfHwgITEpLFxuXHRcdFx0XHRcdFx0KG4uY29uZmlndXJhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0J3ZhbHVlJyBpbiBuICYmIChuLndyaXRhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIHV0KG4ua2V5KSwgbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIGF0KHQsIGUsIHIpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoZSA9IHV0KGUpKSBpbiB0XG5cdFx0XHRcdFx0XHQ/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCB7dmFsdWU6IHIsIGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITB9KVxuXHRcdFx0XHRcdFx0OiAodFtlXSA9IHIpLFxuXHRcdFx0XHRcdHRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHV0KHQpIHtcblx0XHRcdFx0dmFyIGUgPSAoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IFoodCkgfHwgbnVsbCA9PT0gdCkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0dmFyIHIgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG5cdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gcikge1xuXHRcdFx0XHRcdFx0dmFyIG4gPSByLmNhbGwodCwgZSB8fCAnZGVmYXVsdCcpO1xuXHRcdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBaKG4pKSByZXR1cm4gbjtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0BAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiAoJ3N0cmluZycgPT09IGUgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xuXHRcdFx0XHR9KSh0LCAnc3RyaW5nJyk7XG5cdFx0XHRcdHJldHVybiAnc3ltYm9sJyA9PT0gWihlKSA/IGUgOiBTdHJpbmcoZSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgY3QgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBlLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRuID0gZS5yZXZpc2lvbklkO1xuXHRcdFx0XHRcdFx0IShmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoISh0IGluc3RhbmNlb2YgZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHRcdFx0fSkodGhpcywgdCksXG5cdFx0XHRcdFx0XHRcdGF0KHRoaXMsICd0aW1lc3RhbXAnLCB2b2lkIDApLFxuXHRcdFx0XHRcdFx0XHRhdCh0aGlzLCAnZWRpdFRva2VuJywgdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0YXQodGhpcywgJ3RpdGxlJywgdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0YXQodGhpcywgJ3JldmlzaW9uSWQnLCB2b2lkIDApLFxuXHRcdFx0XHRcdFx0XHRhdCh0aGlzLCAnaW5pdGVkJywgITEpLFxuXHRcdFx0XHRcdFx0XHRhdCh0aGlzLCAnaXNOZXdQYWdlJywgITEpLFxuXHRcdFx0XHRcdFx0XHRhdCh0aGlzLCAnc2VjdGlvbkNhY2hlJywge30pLFxuXHRcdFx0XHRcdFx0XHQodGhpcy50aXRsZSA9IHIpLFxuXHRcdFx0XHRcdFx0XHQodGhpcy5yZXZpc2lvbklkID0gbiksXG5cdFx0XHRcdFx0XHRcdCh0aGlzLmlzTmV3UGFnZSA9ICFuKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGUsIHIsIG4sIG8sIGksIGEsIHUsIGMsIHM7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdChlID0gdCksXG5cdFx0XHRcdFx0XHQociA9IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2luaXQnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0KChzID0gb3QoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJ0KCkubWFyayhmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBydCgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZSA9IChvLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBvWzBdID8gb1swXSA6IHt9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmVkaXRUb2tlbiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSB2b2lkIDAgPT09IGUgPyAnJyA6IGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gW3RoaXMuZ2V0VGltZXN0YW1wKCldKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyIHx8IG4ucHVzaCh0aGlzLmdldEVkaXRUb2tlbigpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gNSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UHJvbWlzZS5hbGwobilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMuaW5pdGVkID0gITApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uaW5mbyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdQYWdlIGluaXRpYWxpemF0aW9uIGZvciAnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQodGhpcy50aXRsZSwgJyMnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KHRoaXMucmV2aXNpb25JZCwgJyBmaW5pc2hlZC4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdnZXRFZGl0VG9rZW4nLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0KChjID0gb3QoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJ0KCkubWFyayhmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBydCgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICh0Lm5leHQgPSAyKSwgbXcubG9hZGVyLnVzaW5nKCdtZWRpYXdpa2kudXNlcicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IW13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJykgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnK1xcXFwnID09PSBtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5lZGl0VG9rZW4gPSBtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmFicnVwdCgncmV0dXJuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICh0Lm5leHQgPSA3KSwgWC5nZXRFZGl0VG9rZW4oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5lZGl0VG9rZW4gPSB0LnNlbnQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDg6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdnZXRUaW1lc3RhbXAnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0KCh1ID0gb3QoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJ0KCkubWFyayhmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlLCByLCBuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBydCgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gMiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0WC5nZXRQYWdlSW5mbyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXZpc2lvbklkOiB0aGlzLnJldmlzaW9uSWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdGhpcy50aXRsZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZSA9IHQuc2VudCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSBlLnRpbWVzdGFtcCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSBlLnJldmlzaW9uSWQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLnRpbWVzdGFtcCA9IHIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4gJiYgKCh0aGlzLnJldmlzaW9uSWQgPSBuKSwgKHRoaXMuaXNOZXdQYWdlID0gITEpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB1LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2dldFdpa2lUZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgoYSA9IG90KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRydCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJ0KCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KChlID0gKGkubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGlbMF0gPyBpWzBdIDoge30pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuc2VjdGlvbiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSAtMSA9PT0gKHIgPSB2b2lkIDAgPT09IGUgPyAnJyA6IGUpID8gJycgOiByKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhdGhpcy5zZWN0aW9uQ2FjaGVbbl0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYWJydXB0KCdyZXR1cm4nLCB0aGlzLnNlY3Rpb25DYWNoZVtuXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDYpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFguZ2V0V2lraVRleHQoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbjogbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldmlzaW9uSWQ6IHRoaXMucmV2aXNpb25JZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA2OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvID0gdC5zZW50KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRNLmluZm8oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnV2lraXRleHQgb2YgJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KHRoaXMudGl0bGUsICcjJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChyLCAnIGZldGNoZWQuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLnNlY3Rpb25DYWNoZVtuXSA9IG8pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuYWJydXB0KCdyZXR1cm4nLCBvKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3BhcnNlV2lraVRleHQnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0KChpID0gb3QoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJ0KCkubWFyayhmdW5jdGlvbiB0KGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcnQoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFicnVwdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQncmV0dXJuJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRYLnBhcnNlV2lraVRleHQoZSwgdGhpcy50aXRsZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdlZGl0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgobyA9IG90KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRydCgpLm1hcmsoZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJ0KCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5lZGl0VG9rZW4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5lcnJvcignZmFpbF90b19nZXRfZWRpdHRva2VuJyksIHQuYWJydXB0KCdyZXR1cm4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy50aW1lc3RhbXAgfHwgdGhpcy5pc05ld1BhZ2UpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSA2O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5lcnJvcignZmFpbF90b19nZXRfdGltZXN0YW1wJyksIHQuYWJydXB0KCdyZXR1cm4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA2OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hYnJ1cHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3JldHVybicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0WC5lZGl0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGV0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGV0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdGhpcy50aXRsZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWRpdFRva2VuOiB0aGlzLmVkaXRUb2tlbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnRpbWVzdGFtcFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHt0aW1lc3RhbXA6IHRoaXMudGltZXN0YW1wfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHt9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWRkaXRpb25hbENvbmZpZzogZXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuaXNOZXdQYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8ge2NyZWF0ZW9ubHk6IHRoaXMuaXNOZXdQYWdlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHt9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdKSxcblx0XHRcdFx0XHRcdHIgJiYgaXQoZS5wcm90b3R5cGUsIHIpLFxuXHRcdFx0XHRcdFx0biAmJiBpdChlLCBuKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pLFxuXHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pKCksXG5cdFx0XHRcdHN0ID0gY3Q7XG5cdFx0XHRyKDU3MjgpLCByKDE5NTQpLCByKDkyOCksIHIoMjQ2MiksIHIoODQzNik7XG5cdFx0XHRmdW5jdGlvbiBmdCh0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KGZ0ID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0ZnQodClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIGx0KHQsIGUpIHtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBlW3JdO1xuXHRcdFx0XHRcdChuLmVudW1lcmFibGUgPSBuLmVudW1lcmFibGUgfHwgITEpLFxuXHRcdFx0XHRcdFx0KG4uY29uZmlndXJhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0J3ZhbHVlJyBpbiBuICYmIChuLndyaXRhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIHB0KG4ua2V5KSwgbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHB0KHQpIHtcblx0XHRcdFx0dmFyIGUgPSAoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IGZ0KHQpIHx8IG51bGwgPT09IHQpIHJldHVybiB0O1xuXHRcdFx0XHRcdHZhciByID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gci5jYWxsKHQsIGUgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gZnQobikpIHJldHVybiBuO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuICgnc3RyaW5nJyA9PT0gZSA/IFN0cmluZyA6IE51bWJlcikodCk7XG5cdFx0XHRcdH0pKHQsICdzdHJpbmcnKTtcblx0XHRcdFx0cmV0dXJuICdzeW1ib2wnID09PSBmdChlKSA/IGUgOiBTdHJpbmcoZSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgaHQgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0XHR9KSh0aGlzLCB0KSxcblx0XHRcdFx0XHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBlLCByLCBuO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQoZSA9IHQpLFxuXHRcdFx0XHRcdFx0KHIgPSBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpbml0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0JCgnYm9keScpLmFwcGVuZCgnPGRpdiBpZD1cIk1vZU5vdGlmaWNhdGlvblwiPjwvZGl2PicpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdkaXNwbGF5Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6ICfllrV+Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogJ3N1Y2Nlc3MnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBhcmd1bWVudHNbMl1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKCkge307XG5cdFx0XHRcdFx0XHRcdFx0XHQkKCcjTW9lTm90aWZpY2F0aW9uJykuYXBwZW5kKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdNb2VOb3RpZmljYXRpb24tbm90aWNlJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ01vZU5vdGlmaWNhdGlvbi1ub3RpY2UtJyArIGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZCgnPHNwYW4+JyArIHQgKyAnPC9zcGFuPicpXG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjTW9lTm90aWZpY2F0aW9uJykuZmluZCgnLk1vZU5vdGlmaWNhdGlvbi1ub3RpY2UnKS5sYXN0KCkuZmFkZUluKDMwMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYmluZCgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmNsZWFyKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIoJCgnI01vZU5vdGlmaWNhdGlvbicpLmZpbmQoJy5Nb2VOb3RpZmljYXRpb24tbm90aWNlJykubGFzdCgpKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnYmluZCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRcdCQoJy5Nb2VOb3RpZmljYXRpb24tbm90aWNlJykub24oJ21vdXNlb3ZlcicsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC5zbGlkZUxlZnQoJCh0aGlzKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnc3VjY2VzcycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkodCwgJ3N1Y2Nlc3MnLCBlKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnd2FybmluZycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkodCwgJ3dhcm5pbmcnLCBlKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZXJyb3InLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KHQsICdlcnJvcicsIGUpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdjbGVhcicsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdCQoJy5Nb2VOb3RpZmljYXRpb24tbm90aWNlJykubGVuZ3RoID49IDEwICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgkKCcjTW9lTm90aWZpY2F0aW9uJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY2hpbGRyZW4oKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5maXJzdCgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmZhZGVPdXQoMTUwLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHRoaXMpLnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KHRoaXMuY2xlYXIsIDMwMCkpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdlbXB0eScsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQkKCcuTW9lTm90aWZpY2F0aW9uLW5vdGljZScpLmVhY2goZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgciA9ICQodGhpcyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0KHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIDIwMCAqIGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHRoaXMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuZGVsYXkoMjAwICogZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHRoaXMpLnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnc2xpZGVMZWZ0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHQuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmFuaW1hdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGVmdDogJy0yMDAlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUgfHwgMTUwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQodGhpcykuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCh0aGlzKS5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRyICYmIGx0KGUucHJvdG90eXBlLCByKSxcblx0XHRcdFx0XHRcdG4gJiYgbHQoZSwgbiksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpLFxuXHRcdFx0XHR2dCA9IG5ldyBodCgpLFxuXHRcdFx0XHRkdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0VGltZW91dChlLCB0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdGZ1bmN0aW9uIHl0KHQpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoeXQgPVxuXHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmICdzeW1ib2wnID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3Jcblx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ICE9PSBTeW1ib2wucHJvdG90eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gJ3N5bWJvbCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR5dCh0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gZ3QoKSB7XG5cdFx0XHRcdC8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi8gZ3QgPVxuXHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHZhciB0LFxuXHRcdFx0XHRcdGUgPSB7fSxcblx0XHRcdFx0XHRyID0gT2JqZWN0LnByb3RvdHlwZSxcblx0XHRcdFx0XHRuID0gci5oYXNPd25Qcm9wZXJ0eSxcblx0XHRcdFx0XHRvID1cblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0dFtlXSA9IHIudmFsdWU7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGkgPSAnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcblx0XHRcdFx0XHRhID0gaS5pdGVyYXRvciB8fCAnQEBpdGVyYXRvcicsXG5cdFx0XHRcdFx0dSA9IGkuYXN5bmNJdGVyYXRvciB8fCAnQEBhc3luY0l0ZXJhdG9yJyxcblx0XHRcdFx0XHRjID0gaS50b1N0cmluZ1RhZyB8fCAnQEB0b1N0cmluZ1RhZyc7XG5cdFx0XHRcdGZ1bmN0aW9uIHModCwgZSwgcikge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSksIHRbZV1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0cyh7fSwgJycpO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKHRbZV0gPSByKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGYodCwgZSwgciwgbikge1xuXHRcdFx0XHRcdHZhciBpID0gZSAmJiBlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGcgPyBlIDogZyxcblx0XHRcdFx0XHRcdGEgPSBPYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxcblx0XHRcdFx0XHRcdHUgPSBuZXcgSShuIHx8IFtdKTtcblx0XHRcdFx0XHRyZXR1cm4gbyhhLCAnX2ludm9rZScsIHt2YWx1ZTogUCh0LCByLCB1KX0pLCBhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGwodCwgZSwgcikge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnbm9ybWFsJyxcblx0XHRcdFx0XHRcdFx0YXJnOiB0LmNhbGwoZSwgciksXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0aHJvdycsXG5cdFx0XHRcdFx0XHRcdGFyZzogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGUud3JhcCA9IGY7XG5cdFx0XHRcdHZhciBwID0gJ3N1c3BlbmRlZFN0YXJ0Jyxcblx0XHRcdFx0XHRoID0gJ3N1c3BlbmRlZFlpZWxkJyxcblx0XHRcdFx0XHR2ID0gJ2V4ZWN1dGluZycsXG5cdFx0XHRcdFx0ZCA9ICdjb21wbGV0ZWQnLFxuXHRcdFx0XHRcdHkgPSB7fTtcblx0XHRcdFx0ZnVuY3Rpb24gZygpIHt9XG5cdFx0XHRcdGZ1bmN0aW9uIG0oKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiBiKCkge31cblx0XHRcdFx0dmFyIHcgPSB7fTtcblx0XHRcdFx0cyh3LCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR2YXIgeCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcblx0XHRcdFx0XHRrID0geCAmJiB4KHgoVChbXSkpKTtcblx0XHRcdFx0ayAmJiBrICE9PSByICYmIG4uY2FsbChrLCBhKSAmJiAodyA9IGspO1xuXHRcdFx0XHR2YXIgUyA9IChiLnByb3RvdHlwZSA9IGcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh3KSk7XG5cdFx0XHRcdGZ1bmN0aW9uIEUodCkge1xuXHRcdFx0XHRcdFsnbmV4dCcsICd0aHJvdycsICdyZXR1cm4nXS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRzKHQsIGUsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBPKHQsIGUpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiByKG8sIGksIGEsIHUpIHtcblx0XHRcdFx0XHRcdHZhciBjID0gbCh0W29dLCB0LCBpKTtcblx0XHRcdFx0XHRcdGlmICgndGhyb3cnICE9PSBjLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBjLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRmID0gcy52YWx1ZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGYgJiYgJ29iamVjdCcgPT0geXQoZikgJiYgbi5jYWxsKGYsICdfX2F3YWl0Jylcblx0XHRcdFx0XHRcdFx0XHQ/IGUucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cignbmV4dCcsIHQsIGEsIHUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQ6IGUucmVzb2x2ZShmKS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnZhbHVlID0gdCksIGEocyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1KGMuYXJnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGk7XG5cdFx0XHRcdFx0byh0aGlzLCAnX2ludm9rZScsIHtcblx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgZShmdW5jdGlvbiAoZSwgbykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cih0LCBuLCBlLCBvKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkgPSBpID8gaS50aGVuKG8sIG8pIDogbygpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gUChlLCByLCBuKSB7XG5cdFx0XHRcdFx0dmFyIG8gPSBwO1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoaSwgYSkge1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IHYpIHRocm93IG5ldyBFcnJvcignR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZycpO1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IGQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkpIHRocm93IGE7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHRcdFx0ZG9uZTogITAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmb3IgKG4ubWV0aG9kID0gaSwgbi5hcmcgPSBhOyA7ICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdSA9IG4uZGVsZWdhdGU7XG5cdFx0XHRcdFx0XHRcdGlmICh1KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBqKHUsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyA9PT0geSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCduZXh0JyA9PT0gbi5tZXRob2QpIG4uc2VudCA9IG4uX3NlbnQgPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ3Rocm93JyA9PT0gbi5tZXRob2QpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAobyA9PT0gcCkgdGhyb3cgKChvID0gZCksIG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0XHRuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlICdyZXR1cm4nID09PSBuLm1ldGhvZCAmJiBuLmFicnVwdCgncmV0dXJuJywgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRvID0gdjtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBsKGUsIHIsIG4pO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ25vcm1hbCcgPT09IHMudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoKG8gPSBuLmRvbmUgPyBkIDogaCksIHMuYXJnID09PSB5KSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBzLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6IG4uZG9uZSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCd0aHJvdycgPT09IHMudHlwZSAmJiAoKG8gPSBkKSwgKG4ubWV0aG9kID0gJ3Rocm93JyksIChuLmFyZyA9IHMuYXJnKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBqKGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgbiA9IHIubWV0aG9kLFxuXHRcdFx0XHRcdFx0byA9IGUuaXRlcmF0b3Jbbl07XG5cdFx0XHRcdFx0aWYgKG8gPT09IHQpXG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHQoJ3Rocm93JyA9PT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdGUuaXRlcmF0b3IucmV0dXJuICYmXG5cdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICdyZXR1cm4nKSwgKHIuYXJnID0gdCksIGooZSwgciksICd0aHJvdycgPT09IHIubWV0aG9kKSkgfHxcblx0XHRcdFx0XHRcdFx0XHQoJ3JldHVybicgIT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdCgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcIiArIG4gKyBcIicgbWV0aG9kXCIpKSkpLFxuXHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHZhciBpID0gbChvLCBlLml0ZXJhdG9yLCByLmFyZyk7XG5cdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkudHlwZSkgcmV0dXJuIChyLm1ldGhvZCA9ICd0aHJvdycpLCAoci5hcmcgPSBpLmFyZyksIChyLmRlbGVnYXRlID0gbnVsbCksIHk7XG5cdFx0XHRcdFx0dmFyIGEgPSBpLmFyZztcblx0XHRcdFx0XHRyZXR1cm4gYVxuXHRcdFx0XHRcdFx0PyBhLmRvbmVcblx0XHRcdFx0XHRcdFx0PyAoKHJbZS5yZXN1bHROYW1lXSA9IGEudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBlLm5leHRMb2MpLFxuXHRcdFx0XHRcdFx0XHRcdCdyZXR1cm4nICE9PSByLm1ldGhvZCAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0eSlcblx0XHRcdFx0XHRcdFx0OiBhXG5cdFx0XHRcdFx0XHQ6ICgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QnKSksXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdHkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEwodCkge1xuXHRcdFx0XHRcdHZhciBlID0ge1xuXHRcdFx0XHRcdFx0dHJ5TG9jOiB0WzBdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0MSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksXG5cdFx0XHRcdFx0XHQyIGluIHQgJiYgKChlLmZpbmFsbHlMb2MgPSB0WzJdKSwgKGUuYWZ0ZXJMb2MgPSB0WzNdKSksXG5cdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMucHVzaChlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBfKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHQuY29tcGxldGlvbiB8fCB7fTtcblx0XHRcdFx0XHQoZS50eXBlID0gJ25vcm1hbCcpLCBkZWxldGUgZS5hcmcsICh0LmNvbXBsZXRpb24gPSBlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBJKHQpIHtcblx0XHRcdFx0XHQodGhpcy50cnlFbnRyaWVzID0gW3t0cnlMb2M6ICdyb290J31dKSwgdC5mb3JFYWNoKEwsIHRoaXMpLCB0aGlzLnJlc2V0KCEwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBUKGUpIHtcblx0XHRcdFx0XHRpZiAoZSB8fCAnJyA9PT0gZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBlW2FdO1xuXHRcdFx0XHRcdFx0aWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG5cdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZS5uZXh0KSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdGlmICghaXNOYU4oZS5sZW5ndGgpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gLTEsXG5cdFx0XHRcdFx0XHRcdFx0aSA9IGZ1bmN0aW9uIHIoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgKytvIDwgZS5sZW5ndGg7IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4uY2FsbChlLCBvKSkgcmV0dXJuIChyLnZhbHVlID0gZVtvXSksIChyLmRvbmUgPSAhMSksIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHIudmFsdWUgPSB0KSwgKHIuZG9uZSA9ICEwKSwgcjtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkubmV4dCA9IGkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKHl0KGUpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChtLnByb3RvdHlwZSA9IGIpLFxuXHRcdFx0XHRcdG8oUywgJ2NvbnN0cnVjdG9yJywge3ZhbHVlOiBiLCBjb25maWd1cmFibGU6ICEwfSksXG5cdFx0XHRcdFx0byhiLCAnY29uc3RydWN0b3InLCB7dmFsdWU6IG0sIGNvbmZpZ3VyYWJsZTogITB9KSxcblx0XHRcdFx0XHQobS5kaXNwbGF5TmFtZSA9IHMoYiwgYywgJ0dlbmVyYXRvckZ1bmN0aW9uJykpLFxuXHRcdFx0XHRcdChlLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSAnZnVuY3Rpb24nID09IHR5cGVvZiB0ICYmIHQuY29uc3RydWN0b3I7XG5cdFx0XHRcdFx0XHRyZXR1cm4gISFlICYmIChlID09PSBtIHx8ICdHZW5lcmF0b3JGdW5jdGlvbicgPT09IChlLmRpc3BsYXlOYW1lIHx8IGUubmFtZSkpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLm1hcmsgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0T2JqZWN0LnNldFByb3RvdHlwZU9mXG5cdFx0XHRcdFx0XHRcdFx0PyBPYmplY3Quc2V0UHJvdG90eXBlT2YodCwgYilcblx0XHRcdFx0XHRcdFx0XHQ6ICgodC5fX3Byb3RvX18gPSBiKSwgcyh0LCBjLCAnR2VuZXJhdG9yRnVuY3Rpb24nKSksXG5cdFx0XHRcdFx0XHRcdCh0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUykpLFxuXHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLmF3cmFwID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdF9fYXdhaXQ6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdEUoTy5wcm90b3R5cGUpLFxuXHRcdFx0XHRcdHMoTy5wcm90b3R5cGUsIHUsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLkFzeW5jSXRlcmF0b3IgPSBPKSxcblx0XHRcdFx0XHQoZS5hc3luYyA9IGZ1bmN0aW9uICh0LCByLCBuLCBvLCBpKSB7XG5cdFx0XHRcdFx0XHR2b2lkIDAgPT09IGkgJiYgKGkgPSBQcm9taXNlKTtcblx0XHRcdFx0XHRcdHZhciBhID0gbmV3IE8oZih0LCByLCBuLCBvKSwgaSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpXG5cdFx0XHRcdFx0XHRcdD8gYVxuXHRcdFx0XHRcdFx0XHQ6IGEubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmRvbmUgPyB0LnZhbHVlIDogYS5uZXh0KCk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0RShTKSxcblx0XHRcdFx0XHRzKFMsIGMsICdHZW5lcmF0b3InKSxcblx0XHRcdFx0XHRzKFMsIGEsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHMoUywgJ3RvU3RyaW5nJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICdbb2JqZWN0IEdlbmVyYXRvcl0nO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLmtleXMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBPYmplY3QodCksXG5cdFx0XHRcdFx0XHRcdHIgPSBbXTtcblx0XHRcdFx0XHRcdGZvciAodmFyIG4gaW4gZSkgci5wdXNoKG4pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0ci5yZXZlcnNlKCksXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICg7IHIubGVuZ3RoOyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gci5wb3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChuIGluIGUpIHJldHVybiAodC52YWx1ZSA9IG4pLCAodC5kb25lID0gITEpLCB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHQuZG9uZSA9ICEwKSwgdDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS52YWx1ZXMgPSBUKSxcblx0XHRcdFx0XHQoSS5wcm90b3R5cGUgPSB7XG5cdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogSSxcblx0XHRcdFx0XHRcdHJlc2V0OiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0KCh0aGlzLnByZXYgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5uZXh0ID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kb25lID0gITEpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMubWV0aG9kID0gJ25leHQnKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5hcmcgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChfKSxcblx0XHRcdFx0XHRcdFx0XHQhZSlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgaW4gdGhpcylcblx0XHRcdFx0XHRcdFx0XHRcdCd0JyA9PT0gci5jaGFyQXQoMCkgJiYgbi5jYWxsKHRoaXMsIHIpICYmICFpc05hTigrci5zbGljZSgxKSkgJiYgKHRoaXNbcl0gPSB0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzdG9wOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZG9uZSA9ICEwO1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMucnZhbDtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuZG9uZSkgdGhyb3cgZTtcblx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzO1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKG4sIG8pIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0KHUudHlwZSA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHUuYXJnID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0XHQoci5uZXh0ID0gbiksXG5cdFx0XHRcdFx0XHRcdFx0XHRvICYmICgoci5tZXRob2QgPSAnbmV4dCcpLCAoci5hcmcgPSB0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHQhIW9cblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYSA9IHRoaXMudHJ5RW50cmllc1tpXSxcblx0XHRcdFx0XHRcdFx0XHRcdHUgPSBhLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCdyb290JyA9PT0gYS50cnlMb2MpIHJldHVybiBvKCdlbmQnKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IG4uY2FsbChhLCAnY2F0Y2hMb2MnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cyA9IG4uY2FsbChhLCAnZmluYWxseUxvYycpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGMgJiYgcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXMpIHRocm93IG5ldyBFcnJvcigndHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHknKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhYnJ1cHQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgciA+PSAwOyAtLXIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IHRoaXMudHJ5RW50cmllc1tyXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoby50cnlMb2MgPD0gdGhpcy5wcmV2ICYmIG4uY2FsbChvLCAnZmluYWxseUxvYycpICYmIHRoaXMucHJldiA8IG8uZmluYWxseUxvYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGkgPSBvO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGkgJiZcblx0XHRcdFx0XHRcdFx0XHQoJ2JyZWFrJyA9PT0gdCB8fCAnY29udGludWUnID09PSB0KSAmJlxuXHRcdFx0XHRcdFx0XHRcdGkudHJ5TG9jIDw9IGUgJiZcblx0XHRcdFx0XHRcdFx0XHRlIDw9IGkuZmluYWxseUxvYyAmJlxuXHRcdFx0XHRcdFx0XHRcdChpID0gbnVsbCk7XG5cdFx0XHRcdFx0XHRcdHZhciBhID0gaSA/IGkuY29tcGxldGlvbiA6IHt9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdChhLnR5cGUgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHQoYS5hcmcgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRpID8gKCh0aGlzLm1ldGhvZCA9ICduZXh0JyksICh0aGlzLm5leHQgPSBpLmZpbmFsbHlMb2MpLCB5KSA6IHRoaXMuY29tcGxldGUoYSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjb21wbGV0ZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0J2JyZWFrJyA9PT0gdC50eXBlIHx8ICdjb250aW51ZScgPT09IHQudHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0PyAodGhpcy5uZXh0ID0gdC5hcmcpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICdyZXR1cm4nID09PSB0LnR5cGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoKHRoaXMucnZhbCA9IHRoaXMuYXJnID0gdC5hcmcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLm1ldGhvZCA9ICdyZXR1cm4nKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5uZXh0ID0gJ2VuZCcpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICdub3JtYWwnID09PSB0LnR5cGUgJiYgZSAmJiAodGhpcy5uZXh0ID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0eVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGZpbmlzaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyLmZpbmFsbHlMb2MgPT09IHQpIHJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbiwgci5hZnRlckxvYyksIF8ociksIHk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjYXRjaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyLnRyeUxvYyA9PT0gdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gbi50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBvID0gbi5hcmc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdF8ocik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdpbGxlZ2FsIGNhdGNoIGF0dGVtcHQnKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiAoZSwgciwgbikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRlbGVnYXRlID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aXRlcmF0b3I6IFQoZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHROYW1lOiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0bmV4dExvYzogbixcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHQnbmV4dCcgPT09IHRoaXMubWV0aG9kICYmICh0aGlzLmFyZyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gbXQodCwgZSwgciwgbiwgbywgaSwgYSkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHZhciB1ID0gdFtpXShhKSxcblx0XHRcdFx0XHRcdGMgPSB1LnZhbHVlO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZvaWQgcih0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR1LmRvbmUgPyBlKGMpIDogUHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obiwgbyk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBidCh0KSB7XG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB0aGlzLFxuXHRcdFx0XHRcdFx0ciA9IGFyZ3VtZW50cztcblx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKG4sIG8pIHtcblx0XHRcdFx0XHRcdHZhciBpID0gdC5hcHBseShlLCByKTtcblx0XHRcdFx0XHRcdGZ1bmN0aW9uIGEodCkge1xuXHRcdFx0XHRcdFx0XHRtdChpLCBuLCBvLCBhLCB1LCAnbmV4dCcsIHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gdSh0KSB7XG5cdFx0XHRcdFx0XHRcdG10KGksIG4sIG8sIGEsIHUsICd0aHJvdycsIHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YSh2b2lkIDApO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gd3QodCwgZSkge1xuXHRcdFx0XHRmb3IgKHZhciByID0gMDsgciA8IGUubGVuZ3RoOyByKyspIHtcblx0XHRcdFx0XHR2YXIgbiA9IGVbcl07XG5cdFx0XHRcdFx0KG4uZW51bWVyYWJsZSA9IG4uZW51bWVyYWJsZSB8fCAhMSksXG5cdFx0XHRcdFx0XHQobi5jb25maWd1cmFibGUgPSAhMCksXG5cdFx0XHRcdFx0XHQndmFsdWUnIGluIG4gJiYgKG4ud3JpdGFibGUgPSAhMCksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwga3Qobi5rZXkpLCBuKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24geHQodCwgZSwgcikge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChlID0ga3QoZSkpIGluIHRcblx0XHRcdFx0XHRcdD8gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHt2YWx1ZTogciwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pXG5cdFx0XHRcdFx0XHQ6ICh0W2VdID0gciksXG5cdFx0XHRcdFx0dFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24ga3QodCkge1xuXHRcdFx0XHR2YXIgZSA9IChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0geXQodCkgfHwgbnVsbCA9PT0gdCkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0dmFyIHIgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG5cdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gcikge1xuXHRcdFx0XHRcdFx0dmFyIG4gPSByLmNhbGwodCwgZSB8fCAnZGVmYXVsdCcpO1xuXHRcdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSB5dChuKSkgcmV0dXJuIG47XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gKCdzdHJpbmcnID09PSBlID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcblx0XHRcdFx0fSkodCwgJ3N0cmluZycpO1xuXHRcdFx0XHRyZXR1cm4gJ3N5bWJvbCcgPT09IHl0KGUpID8gZSA6IFN0cmluZyhlKTtcblx0XHRcdH1cblx0XHRcdHZhciBTdCA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdCEoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCEodCBpbnN0YW5jZW9mIGUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHRcdH0pKHRoaXMsIHQpLFxuXHRcdFx0XHRcdFx0XHR4dCh0aGlzLCAncXVpY2tFZGl0UGFuZWxWaXNpYmxlJywgITEpLFxuXHRcdFx0XHRcdFx0XHR4dCh0aGlzLCAnc2Nyb2xsVG9wJywgMCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBlLCByLCBuO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQoZSA9IHQpLFxuXHRcdFx0XHRcdFx0KHIgPSBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdjcmVhdGVEaWFsb2dCb3gnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogJ1dpa2lwbHVzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogJycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IDYwMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0biA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM11cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gYXJndW1lbnRzWzNdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICgpIHt9O1xuXHRcdFx0XHRcdFx0XHRcdFx0JCgnLldpa2lwbHVzLUludGVyQm94JykubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtSW50ZXJCb3gnKS5lYWNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHRoaXMpLnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBvID0gd2luZG93LmlubmVyV2lkdGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSB3aW5kb3cuaW5uZXJIZWlnaHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSBNYXRoLm1pbihvLCByKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dSA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUludGVyQm94Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdtYXJnaW4tbGVmdCc6IG8gLyAyIC0gYSAvIDIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b3A6ICQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpICsgMC4yICogaSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk6ICdub25lJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoJCgnPGRpdj4nKS5hZGRDbGFzcygnV2lraXBsdXMtSW50ZXJCb3gtSGVhZGVyJykuaHRtbCh0KSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKCQoJzxkaXY+JykuYWRkQ2xhc3MoJ1dpa2lwbHVzLUludGVyQm94LUNvbnRlbnQnKS5hcHBlbmQoZSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZCgkKCc8c3Bhbj4nKS50ZXh0KCfDlycpLmFkZENsYXNzKCdXaWtpcGx1cy1JbnRlckJveC1DbG9zZScpKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCQoJ2JvZHknKS5hcHBlbmQodSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCQoJy5XaWtpcGx1cy1JbnRlckJveCcpLndpZHRoKGEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtSW50ZXJCb3gtQ2xvc2UnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCh0aGlzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnBhcmVudCgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHdpbmRvdy5vbmNsb3NlID0gd2luZG93Lm9uYmVmb3JldW5sb2FkID0gdm9pZCAwKSwgJCh0aGlzKS5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUubW91c2Vkb3duKGZ1bmN0aW9uIChyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIuY2xpZW50WCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byA9IHIuY2xpZW50WSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9IGUucGFyZW50KCkub2Zmc2V0KCkubGVmdCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YSA9IGUucGFyZW50KCkub2Zmc2V0KCkudG9wO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChkb2N1bWVudCkub24oJ21vdXNlbW92ZScsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUucGFyZW50KCkuY3NzKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbWFyZ2luLWxlZnQnOiBpICsgdC5jbGllbnRYIC0gbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b3A6IGEgKyB0LmNsaWVudFkgLSBvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKGRvY3VtZW50KS5vbignbW91c2V1cCcsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLnVuYmluZCgnbW91c2Vkb3duJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKGRvY3VtZW50KS5vZmYoJ21vdXNlbW92ZScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChkb2N1bWVudCkub2ZmKCdtb3VzZXVwJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0KGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoJCgnLldpa2lwbHVzLUludGVyQm94LUhlYWRlcicpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnLldpa2lwbHVzLUludGVyQm94JykuZmFkZUluKDUwMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4oKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnYWRkRnVuY3Rpb25CdXR0b24nLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGkuc2tpbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdtaW5lcnZhJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gJCgnPGxpPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCBlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCd0b2dnbGUtbGlzdC1pdGVtJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJzxhPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J213LXVpLWljb24gbXctdWktaWNvbi1iZWZvcmUgdG9nZ2xlLWxpc3QtaXRlbV9fYW5jaG9yJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnPHNwYW4+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCAnamF2YXNjcmlwdDp2b2lkKDApOycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygndG9nZ2xlLWxpc3QtaXRlbV9fbGFiZWwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dCh0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ21vZXNraW4nOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSAkKCc8bGk+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnV2lraXBsdXMtTW9yZS1GdW5jdGlvbi1CdXR0b24nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoJCgnPGE+JykuYXR0cignaHJlZicsICdqYXZhc2NyaXB0OnZvaWQoMCk7JykudGV4dCh0KSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9ICQoJzxsaT4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdtdy1saXN0LWl0ZW0nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCd2ZWN0b3ItdGFiLW5vaWNvbicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCBlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZCgkKCc8YT4nKS5hdHRyKCdocmVmJywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKS50ZXh0KHQpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAnbWluZXJ2YScgPT09IGkuc2tpbiAmJiAkKCcjcC10YicpLmxlbmd0aCA+IDBcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoJCgnI3AtdGInKS5hcHBlbmQociksICQoJyMnLmNvbmNhdChlKSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJ21vZXNraW4nID09PSBpLnNraW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgkKCcubW9yZS1hY3Rpb25zLWxpc3QnKS5maXJzdCgpLmFwcGVuZChyKSwgJCgnIycuY29uY2F0KGUpKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICQoJyNwLWNhY3Rpb25zJykubGVuZ3RoID4gMFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoJCgnI3AtY2FjdGlvbnMgdWwnKS5hcHBlbmQociksICQoJyMnLmNvbmNhdChlKSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHZvaWQgTS5pbmZvKFAudHJhbnNsYXRlKCdjYW50X2FkZF9mdW5jYnRuJykpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpbnNlcnRTaW1wbGVSZWRpcmVjdEJ1dHRvbicsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBhcmd1bWVudHNbMF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKCkge30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGUgPSB0aGlzLmFkZEZ1bmN0aW9uQnV0dG9uKFAudHJhbnNsYXRlKCdyZWRpcmVjdF9mcm9tJyksICdXaWtpcGx1cy1TUi1JbnRybycpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZSAmJiBlLm9uKCdjbGljaycsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpbnNlcnRTZXR0aW5nc1BhbmVsQnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGFyZ3VtZW50c1swXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAoKSB7fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZSA9IHRoaXMuYWRkRnVuY3Rpb25CdXR0b24oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoJ3dpa2lwbHVzX3NldHRpbmdzJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1dpa2lwbHVzLVNldHRpbmdzLUludHJvJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZSAmJiBlLm9uKCdjbGljaycsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpbnNlcnRUb3BRdWlja0VkaXRFbnRyeScsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9ICQoJzxsaT4nKS5hdHRyKCdpZCcsICdXaWtpcGx1cy1FZGl0LVRvcEJ0bicpLmF0dHIoJ2NsYXNzJywgJ213LWxpc3QtaXRlbScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gJCgnPGE+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICdqYXZhc2NyaXB0OnZvaWQoMCknKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KCcnLmNvbmNhdChQLnRyYW5zbGF0ZSgncXVpY2tlZGl0X3RvcGJ0bicpKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKChlLmFwcGVuZChyKSwgaS5za2luKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdtaW5lcnZhJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLmNzcyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk6ICdmbGV4Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUuZmluZCgnc3BhbicpLmFkZENsYXNzKCdwYWdlLWFjdGlvbnMtbWVudV9fbGlzdC1pdGVtJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5maW5kKCdhJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdtdy11aS1pY29uIG13LXVpLWljb24tZWxlbWVudCBtdy11aS1pY29uLXdpa2ltZWRpYS1lZGl0LWJhc2UyMCBtdy11aS1pY29uLXdpdGgtbGFiZWwtZGVza3RvcCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY3NzKCd2ZXJ0aWNhbC1hbGlnbicsICdtaWRkbGUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAndmVjdG9yLTIwMjInOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUuYWRkQ2xhc3MoJ3ZlY3Rvci10YWItbm9pY29uJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ3ZlY3Rvcic6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5hcHBlbmQoJCgnPHNwYW4+JykuYXBwZW5kKHIpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCQoZSkub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uTnVtYmVyOiAtMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YXJnZXRQYWdlTmFtZTogaS5jdXJyZW50UGFnZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCQoJyNjYS1lZGl0JykubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDAgPT09ICQoJyNXaWtpcGx1cy1FZGl0LVRvcEJ0bicpLmxlbmd0aCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgnbWluZXJ2YScgPT09IGkuc2tpblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAkKCcjY2EtZWRpdCcpLnBhcmVudCgpLmFmdGVyKGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICQoJyNjYS1lZGl0JykuYWZ0ZXIoZSkpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpbnNlcnRTZWN0aW9uUXVpY2tFZGl0RW50cmllcycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBhcmd1bWVudHNbMF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKCkge30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGUgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdtaW5lcnZhJyA9PT0gaS5za2luXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICQoJzxzcGFuPicpLmFwcGVuZChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCc8YT4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnV2lraXBsdXMtRWRpdC1TZWN0aW9uQnRuIG13LXVpLWljb24gbXctdWktaWNvbi1lbGVtZW50IG13LXVpLWljb24td2lraW1lZGlhLWVkaXQtYmFzZTIwIGVkaXQtcGFnZSBtdy11aS1pY29uLWZsdXNoLXJpZ2h0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNzcygnbWFyZ2luLWxlZnQnLCAnMC43NWVtJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdocmVmJywgJ2phdmFzY3JpcHQ6dm9pZCgwKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cigndGl0bGUnLCBQLnRyYW5zbGF0ZSgncXVpY2tlZGl0X3NlY3Rpb25idG4nKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCc8c3Bhbj4nKS5hZGRDbGFzcygnbXctZWRpdHNlY3Rpb24tZGl2aWRlcicpLnRleHQoJyB8ICcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCc8YT4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUVkaXQtU2VjdGlvbkJ0bicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdocmVmJywgJ2phdmFzY3JpcHQ6dm9pZCgwKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFAudHJhbnNsYXRlKCdxdWlja2VkaXRfc2VjdGlvbmJ0bicpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHQkKCcubXctZWRpdHNlY3Rpb24nKS5lYWNoKGZ1bmN0aW9uIChyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSAkKHRoaXMpLmZpbmQoXCJhW2hyZWYqPSdhY3Rpb249ZWRpdCddXCIpLmZpcnN0KCkuYXR0cignaHJlZicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byA9IG4ubWF0Y2goLyZbdmVdKnNlY3Rpb25cXD0oW14mXSspLylbMV0ucmVwbGFjZSgvVC0vZ2ksICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSBkZWNvZGVVUklDb21wb25lbnQobi5tYXRjaCgvdGl0bGU9KC4rPykmLylbMV0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dSA9ICQodGhpcykucHJldigpLmNsb25lKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dS5maW5kKCcubXctaGVhZGxpbmUtbnVtYmVyJykucmVtb3ZlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSB1LnRleHQoKS50cmltKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzID0gZS5jbG9uZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHMuZmluZCgnLldpa2lwbHVzLUVkaXQtU2VjdGlvbkJ0bicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uTnVtYmVyOiBvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uTmFtZTogYyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFyZ2V0UGFnZU5hbWU6IGEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdtaW5lcnZhJyA9PT0gaS5za2luXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gJCh0aGlzKS5hcHBlbmQocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAkKHRoaXMpLmZpbmQoJy5tdy1lZGl0c2VjdGlvbi1icmFja2V0JykubGFzdCgpLmJlZm9yZShzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uZXJyb3IoJ2ZhaWxfdG9faW5pdF9xdWlja2VkaXQnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2luc2VydExpbmtFZGl0RW50cmllcycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiBmdW5jdGlvbiAoKSB7fTtcblx0XHRcdFx0XHRcdFx0XHRcdCQoJyNtdy1jb250ZW50LXRleHQgYS5leHRlcm5hbCcpLmVhY2goZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlLCByID0gLygoW14/Jj1dKykoPzo9KFtePyY9XSopKSopL2csIG4gPSB7fTsgKGUgPSByLmV4ZWModCkpOyApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuW2VbMl1dID0gZGVjb2RlVVJJQ29tcG9uZW50KGVbM10pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuW2VbMl1dID0gZVszXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoJCh0aGlzKS5hdHRyKCdocmVmJykpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnZWRpdCcgPT09IHIuYWN0aW9uICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dm9pZCAwICE9PSByLnRpdGxlICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J25ldycgIT09IHIuc2VjdGlvbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQodGhpcykuYWZ0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCc8YT4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cih7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aHJlZjogJ2phdmFzY3JpcHQ6dm9pZCgwKScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M6ICdXaWtpcGx1cy1FZGl0LUV2ZXJ5V2hlcmVCdG4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dCgnKCcuY29uY2F0KFAudHJhbnNsYXRlKCdxdWlja2VkaXRfc2VjdGlvbmJ0bicpLCAnKScpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFyZ2V0UGFnZU5hbWU6IHIudGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uTnVtYmVyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRudWxsICE9PSAoZSA9IHIuc2VjdGlvbikgJiYgdm9pZCAwICE9PSBlID8gZSA6IC0xLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnc2hvd1F1aWNrRWRpdFBhbmVsJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBlID0gdC50aXRsZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IHZvaWQgMCA9PT0gZSA/ICcnIDogZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0biA9IHQuY29udGVudCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0byA9IHZvaWQgMCA9PT0gbiA/ICcnIDogbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9IHQuc3VtbWFyeSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YSA9IHZvaWQgMCA9PT0gaSA/ICcnIDogaSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dSA9IHQub25CYWNrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjID0gdm9pZCAwID09PSB1ID8gZnVuY3Rpb24gKCkge30gOiB1LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzID0gdC5vblBhcnNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gdm9pZCAwID09PSBzID8gZnVuY3Rpb24gKCkge30gOiBzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsID0gdC5vbkVkaXQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHAgPSB2b2lkIDAgPT09IGwgPyBmdW5jdGlvbiAoKSB7fSA6IGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGggPSB0LmVzY0V4aXQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHYgPSB2b2lkIDAgIT09IGggJiYgaCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZCA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5zY3JvbGxUb3AgPSAkKGRvY3VtZW50KS5zY3JvbGxUb3AoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucXVpY2tFZGl0UGFuZWxWaXNpYmxlICYmIHRoaXMuaGlkZVF1aWNrRWRpdFBhbmVsKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLnF1aWNrRWRpdFBhbmVsVmlzaWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHdpbmRvdy5vbmNsb3NlID0gd2luZG93Lm9uYmVmb3JldW5sb2FkID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJycuY29uY2F0KFAudHJhbnNsYXRlKCdvbmNsb3NlX2NvbmZpcm0nKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgeSA9ICQoJy5ub2FydGljbGV0ZXh0JykubGVuZ3RoID4gMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZyA9ICQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVF1aWNrZWRpdC1CYWNrJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUJ0bicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoJycuY29uY2F0KFAudHJhbnNsYXRlKCdiYWNrJykpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bSA9ICQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVF1aWNrZWRpdC1KdW1wJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUJ0bicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJzxhPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdocmVmJywgJyNXaWtpcGx1cy1RdWlja2VkaXQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dCgnJy5jb25jYXQoUC50cmFuc2xhdGUoJ2dvdG9fZWRpdGJveCcpKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRiID0gJCgnPHRleHRhcmVhPicpLmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVF1aWNrZWRpdCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3ID0gJCgnPGRpdj4nKS5hdHRyKCdpZCcsICdXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1PdXRwdXQnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eCA9ICQoJzxpbnB1dD4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1RdWlja2VkaXQtU3VtbWFyeS1JbnB1dCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ3BsYWNlaG9sZGVyJywgJycuY29uY2F0KFAudHJhbnNsYXRlKCdzdW1tYXJ5X3BsYWNlaG9sZCcpKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGsgPSAkKCc8YnV0dG9uPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVF1aWNrZWRpdC1TdWJtaXQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JycuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZSh5ID8gJ3B1Ymxpc2hfcGFnZScgOiAncHVibGlzaF9jaGFuZ2UnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyhDdHJsK1MpJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFMgPSAkKCc8YnV0dG9uPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LVN1Ym1pdCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoJycuY29uY2F0KFAudHJhbnNsYXRlKCdwcmV2aWV3JykpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0RSA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnPGlucHV0PicpLmF0dHIoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnY2hlY2tib3gnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZDogJ1dpa2lwbHVzLVF1aWNrZWRpdC1NaW5vckVkaXQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJzxsYWJlbD4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignZm9yJywgJ1dpa2lwbHVzLVF1aWNrZWRpdC1NaW5vckVkaXQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dCgnJy5jb25jYXQoUC50cmFuc2xhdGUoJ21hcmtfbWlub3JlZGl0JyksICcoQ3RybCtTaGlmdCtTKScpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY3NzKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1hcmdpbjogJzVweCA1cHggNXB4IC0zcHgnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheTogJ2lubGluZScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE8gPSAkKCc8ZGl2PicpLmFwcGVuZChnLCBtLCB3LCBiLCB4LCAkKCc8YnI+JyksIEUsIGssIFMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5jcmVhdGVEaWFsb2dCb3gociwgTywgMWUzLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCQoJyNXaWtpcGx1cy1RdWlja2VkaXQnKS52YWwobyksICQoJyNXaWtpcGx1cy1RdWlja2VkaXQtU3VtbWFyeS1JbnB1dCcpLnZhbChhKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtUXVpY2tlZGl0LUJhY2snKS5vbignY2xpY2snLCBjKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LVN1Ym1pdCcpLm9uKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdjbGljaycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRndCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsIHIsIG47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBndCgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZSA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUJhbm5lcicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnJy5jb25jYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCdsb2FkaW5nX3ByZXZpZXcnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9ICQoJyNXaWtpcGx1cy1RdWlja2VkaXQnKS52YWwoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQodGhpcykuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LU91dHB1dCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5mYWRlT3V0KDEwMCwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1PdXRwdXQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lmh0bWwoJycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1PdXRwdXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLmZhZGVJbigxMDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnaHRtbCwgYm9keScpLmFuaW1hdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3Njcm9sbFRvcDogZC5zY3JvbGxUb3B9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDIwMFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gNyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGYocilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA3OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSB0LnNlbnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLmZhZGVPdXQoJzEwMCcsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1PdXRwdXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5odG1sKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Jzxocj48ZGl2IGNsYXNzPVwibXctYm9keS1jb250ZW50XCI+JyArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4gK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnPC9kaXY+PGhyPidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1PdXRwdXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLmZhZGVJbignMTAwJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LVN1Ym1pdCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkucHJvcCgnZGlzYWJsZWQnLCAhMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgOTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtUXVpY2tlZGl0LVN1Ym1pdCcpLm9uKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdjbGljaycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRndCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsIHIsIG4sIG87XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBndCgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZSA9IG5ldyBEYXRlKCkudmFsdWVPZigpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1CYW5uZXInKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JycuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZSgnc3VibWl0dGluZ19lZGl0Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3VtbWFyeTogJChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVN1bW1hcnktSW5wdXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS52YWwoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiAkKCcjV2lraXBsdXMtUXVpY2tlZGl0JykudmFsKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXNNaW5vckVkaXQ6ICQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnI1dpa2lwbHVzLVF1aWNrZWRpdC1NaW5vckVkaXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5pcygnOmNoZWNrZWQnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQtU3VibWl0LCNXaWtpcGx1cy1RdWlja2VkaXQsI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LVN1Ym1pdCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCdodG1sLCBib2R5JykuYW5pbWF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7c2Nyb2xsVG9wOiBkLnNjcm9sbFRvcH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0MjAwXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1PdXRwdXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkuZmFkZU91dCgxMDAsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5odG1sKCcnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZChyKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5mYWRlSW4oMTAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSA2KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwKG4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgOTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvID0gbmV3IERhdGUoKS52YWx1ZU9mKCkgLSBlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LU91dHB1dCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmZpbmQoJy5XaWtpcGx1cy1CYW5uZXInKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jc3MoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnYmFja2dyb3VuZCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQncmdiYSg2LCAyMzksIDkyLCAwLjQ0KSdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnLldpa2lwbHVzLUJhbm5lcicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnJy5jb25jYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCdlZGl0X3N1Y2Nlc3MnLCBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0by50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh3aW5kb3cub25jbG9zZSA9IHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bG9jYXRpb24ucmVsb2FkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIDUwMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAyMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE2OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDE2KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQudDAgPSB0LmNhdGNoKDYpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2codC50MCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJy5XaWtpcGx1cy1CYW5uZXInKS5jc3MoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2JhY2tncm91bmQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdyZ2JhKDIxOCwgMTQyLCAxNjcsIDAuNjUpJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtQmFubmVyJykuaHRtbCh0LnQwLm1lc3NhZ2UpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjE6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5wcmV2ID0gMjEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVN1Ym1pdCwjV2lraXBsdXMtUXVpY2tlZGl0LCNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1TdWJtaXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkucHJvcCgnZGlzYWJsZWQnLCAhMSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuZmluaXNoKDIxKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDI0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbWzYsIDE2LCAyMSwgMjRdXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQsI1dpa2lwbHVzLVF1aWNrZWRpdC1TdW1tYXJ5LUlucHV0LCNXaWtpcGx1cy1RdWlja2VkaXQtTWlub3JFZGl0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmN0cmxLZXkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDgzID09PSB0LndoaWNoICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5zaGlmdEtleSAmJiAkKCcjV2lraXBsdXMtUXVpY2tlZGl0LU1pbm9yRWRpdCcpLnRyaWdnZXIoJ2NsaWNrJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtUXVpY2tlZGl0LVN1Ym1pdCcpLnRyaWdnZXIoJ2NsaWNrJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LnByZXZlbnREZWZhdWx0KCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LnN0b3BQcm9wYWdhdGlvbigpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHYgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKGRvY3VtZW50KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQyNyA9PT0gdC53aGljaCAmJiAkKCcjV2lraXBsdXMtUXVpY2tlZGl0LUJhY2snKS5jbGljaygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdoaWRlUXVpY2tFZGl0UGFuZWwnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5xdWlja0VkaXRQYW5lbFZpc2libGUgPSAhMSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCQoJy5XaWtpcGx1cy1JbnRlckJveCcpLmZhZGVPdXQoJ2Zhc3QnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHdpbmRvdy5vbmNsb3NlID0gd2luZG93Lm9uYmVmb3JldW5sb2FkID0gdm9pZCAwKSwgJCh0aGlzKS5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3Nob3dTaW1wbGVSZWRpcmVjdFBhbmVsJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiB7fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IGUub25FZGl0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuID0gdm9pZCAwID09PSByID8gZnVuY3Rpb24gKCkge30gOiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gZS5vblN1Y2Nlc3MsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSB2b2lkIDAgPT09IG8gPyBmdW5jdGlvbiAoKSB7fSA6IG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSAkKCc8aW5wdXQ+JykuYWRkQ2xhc3MoJ1dpa2lwbHVzLUludGVyQm94LUlucHV0JyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHUgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1JbnRlckJveC1CdG4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1TUi1BcHBseScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoUC50cmFuc2xhdGUoJ3N1Ym1pdCcpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YyA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUludGVyQm94LUJ0bicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVNSLUNhbmNlbCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoUC50cmFuc2xhdGUoJ2NhbmNlbCcpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cyA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUludGVyQm94LUJ0bicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVNSLUNvbnRpbnVlJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dChQLnRyYW5zbGF0ZSgnY29udGludWUnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSAkKCc8ZGl2PicpLmFwcGVuZChhKS5hcHBlbmQoJCgnPGhyPicpKS5hcHBlbmQodSkuYXBwZW5kKGMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsID0gdGhpcy5jcmVhdGVEaWFsb2dCb3goUC50cmFuc2xhdGUoJ3JlZGlyZWN0X2Rlc2MnKSwgZiwgNjAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdHUub24oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdjbGljaycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGd0KCkubWFyayhmdW5jdGlvbiBlKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZ3QoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKChlLnByZXYgPSBlLm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSAkKCcuV2lraXBsdXMtSW50ZXJCb3gtSW5wdXQnKS52YWwoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtSW50ZXJCb3gtQ29udGVudCcpLmh0bWwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwiV2lraXBsdXMtQmFubmVyXCI+Jy5jb25jYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoJ3N1Ym1pdHRpbmdfZWRpdCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCc8L2Rpdj4nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5wcmV2ID0gMiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5uZXh0ID0gNSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcmNlT3ZlcndyaXRlOiAhMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJy5XaWtpcGx1cy1CYW5uZXInKS50ZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoJ3JlZGlyZWN0X3NhdmVkJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5oaWRlU2ltcGxlUmVkaXJlY3RQYW5lbChsKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUubmV4dCA9IDE1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5wcmV2ID0gMTApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUudDAgPSBlLmNhdGNoKDIpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJy5XaWtpcGx1cy1CYW5uZXInKS5jc3MoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdiYWNrZ3JvdW5kJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3JnYmEoMjE4LCAxNDIsIDE2NywgMC42NSknXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnLldpa2lwbHVzLUJhbm5lcicpLnRleHQoZS50MC5tZXNzYWdlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdhcnRpY2xlZXhpc3RzJyA9PT0gZS50MC5jb2RlICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgkKCcuV2lraXBsdXMtSW50ZXJCb3gtQ29udGVudCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZCgkKCc8aHI+JykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZChzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoYyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGMub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuaGlkZVNpbXBsZVJlZGlyZWN0UGFuZWwobCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzLm9uKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdjbGljaycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRndCgpLm1hcmsoZnVuY3Rpb24gZSgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGd0KCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5wcmV2ID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUubmV4dClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnLldpa2lwbHVzLUludGVyQm94LUNvbnRlbnQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkuaHRtbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cIldpa2lwbHVzLUJhbm5lclwiPicuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdzdWJtaXR0aW5nX2VkaXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JzwvZGl2Pidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLnByZXYgPSAxKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUubmV4dCA9IDQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JjZU92ZXJ3cml0ZTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnLldpa2lwbHVzLUJhbm5lcidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3JlZGlyZWN0X3NhdmVkJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmhpZGVTaW1wbGVSZWRpcmVjdFBhbmVsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5uZXh0ID0gMTMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA5OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUucHJldiA9IDkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS50MCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5jYXRjaChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnLldpa2lwbHVzLUJhbm5lcidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5jc3MoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2JhY2tncm91bmQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdyZ2JhKDIxOCwgMTQyLCAxNjcsIDAuNjUpJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcuV2lraXBsdXMtQmFubmVyJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLnRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS50MFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lm1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEzOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZS5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbWzEsIDldXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlLnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W1syLCAxMF1dXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGMub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuaGlkZVNpbXBsZVJlZGlyZWN0UGFuZWwobCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdoaWRlU2ltcGxlUmVkaXJlY3RQYW5lbCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdChhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6ICQoJ2JvZHknKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmZpbmQoJy5XaWtpcGx1cy1JbnRlckJveC1DbG9zZScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC50cmlnZ2VyKCdjbGljaycpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdzaG93U2V0dGluZ3NQYW5lbCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZSA9IChhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5vblN1Ym1pdCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IHZvaWQgMCA9PT0gZSA/IGZ1bmN0aW9uICgpIHt9IDogZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0biA9ICQoJzx0ZXh0YXJlYT4nKS5hdHRyKCdpZCcsICdXaWtpcGx1cy1TZXR0aW5nLUlucHV0JykuYXR0cigncm93cycsICcxMCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gJCgnPGRpdj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnV2lraXBsdXMtSW50ZXJCb3gtQnRuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCAnV2lraXBsdXMtU2V0dGluZy1BcHBseScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoUC50cmFuc2xhdGUoJ3N1Ym1pdCcpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUludGVyQm94LUJ0bicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVNldHRpbmctQ2FuY2VsJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dChQLnRyYW5zbGF0ZSgnY2FuY2VsJykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhID0gJCgnPGRpdj4nKS5hcHBlbmQobikuYXBwZW5kKCQoJzxocj4nKSkuYXBwZW5kKG8pLmFwcGVuZChpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dSA9IHRoaXMuY3JlYXRlRGlhbG9nQm94KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCd3aWtpcGx1c19zZXR0aW5nc19kZXNjJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ2MDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxvY2FsU3RvcmFnZS5XaWtpcGx1c19TZXR0aW5ncykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtU2V0dGluZy1JbnB1dCcpLnZhbChsb2NhbFN0b3JhZ2UuV2lraXBsdXNfU2V0dGluZ3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuV2lraXBsdXNfU2V0dGluZ3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJyNXaWtpcGx1cy1TZXR0aW5nLUlucHV0JykudmFsKEpTT04uc3RyaW5naWZ5KHQsIG51bGwsIDIpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtU2V0dGluZy1JbnB1dCcpLmF0dHIoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3BsYWNlaG9sZGVyJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZSgnd2lraXBsdXNfc2V0dGluZ3NfcGxhY2Vob2xkZXInKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdG8ub24oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdjbGljaycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGd0KCkubWFyayhmdW5jdGlvbiBlKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4sIG87XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZ3QoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKChlLnByZXYgPSBlLm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnV2lraXBsdXMtQmFubmVyJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoJ3dpa2lwbHVzX3NldHRpbmdzX3NhdmVkJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobyA9ICQoJyNXaWtpcGx1cy1TZXR0aW5nLUlucHV0JykudmFsKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUucHJldiA9IDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cih7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNldHRpbmdzOiBvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtSW50ZXJCb3gtQ29udGVudCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5odG1sKCcnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKG4pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUubmV4dCA9IDcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZHQoMTUwMClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5oaWRlU2V0dGluZ3NQYW5lbCh1KSwgKGUubmV4dCA9IDEzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5wcmV2ID0gMTApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUudDAgPSBlLmNhdGNoKDIpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZ0LmVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnd2lraXBsdXNfc2V0dGluZ3NfZ3JhbW1hcl9lcnJvcidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZS5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtbMiwgMTBdXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmhpZGVTZXR0aW5nc1BhbmVsKHUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaGlkZVNldHRpbmdzUGFuZWwnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAkKCdib2R5JykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5maW5kKCcuV2lraXBsdXMtSW50ZXJCb3gtQ2xvc2UnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQudHJpZ2dlcignY2xpY2snKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnYmluZFByZWxvYWRFdmVudHMnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0JCgnI3RvYycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5jaGlsZHJlbigndWwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnYScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5lYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCh0aGlzKS5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCh0aGlzKS5vZmYoJ21vdXNlb3ZlcicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uTnVtYmVyOiBlICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdKSxcblx0XHRcdFx0XHRcdHIgJiYgd3QoZS5wcm90b3R5cGUsIHIpLFxuXHRcdFx0XHRcdFx0biAmJiB3dChlLCBuKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pLFxuXHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pKCksXG5cdFx0XHRcdEV0ID0gbmV3IFN0KCk7XG5cdFx0XHRmdW5jdGlvbiBPdCh0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KE90ID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0T3QodClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIFB0KHQsIGUpIHtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBlW3JdO1xuXHRcdFx0XHRcdChuLmVudW1lcmFibGUgPSBuLmVudW1lcmFibGUgfHwgITEpLFxuXHRcdFx0XHRcdFx0KG4uY29uZmlndXJhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0J3ZhbHVlJyBpbiBuICYmIChuLndyaXRhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGp0KG4ua2V5KSwgbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIGp0KHQpIHtcblx0XHRcdFx0dmFyIGUgPSAoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IE90KHQpIHx8IG51bGwgPT09IHQpIHJldHVybiB0O1xuXHRcdFx0XHRcdHZhciByID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gci5jYWxsKHQsIGUgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gT3QobikpIHJldHVybiBuO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuICgnc3RyaW5nJyA9PT0gZSA/IFN0cmluZyA6IE51bWJlcikodCk7XG5cdFx0XHRcdH0pKHQsICdzdHJpbmcnKTtcblx0XHRcdFx0cmV0dXJuICdzeW1ib2wnID09PSBPdChlKSA/IGUgOiBTdHJpbmcoZSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgTHQgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0XHR9KSh0aGlzLCB0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGUsIHIsIG47XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdChlID0gdCksXG5cdFx0XHRcdFx0XHQociA9IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2dldFNldHRpbmcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IHt9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuID0gcjtcblx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5XaWtpcGx1c19TZXR0aW5ncyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBvID0gbmV3IEZ1bmN0aW9uKCdyZXR1cm4gJyArIGVbdF0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyAhPSB0eXBlb2YgbykgcmV0dXJuIGVbdF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICEwID09PSBvKCkobikgPyB2b2lkIDAgOiBvKCkobikgfHwgZVt0XTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAocikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlW3RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoIChuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IGVbdF0sIGEgPSAwLCB1ID0gT2JqZWN0LmtleXMocik7IGEgPCB1Lmxlbmd0aDsgYSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IHVbYV07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpID0gaS5yZXBsYWNlKCckeycuY29uY2F0KGMsICd9JyksIHJbY10pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdKSxcblx0XHRcdFx0XHRcdHIgJiYgUHQoZS5wcm90b3R5cGUsIHIpLFxuXHRcdFx0XHRcdFx0biAmJiBQdChlLCBuKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pLFxuXHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pKCksXG5cdFx0XHRcdF90ID0gbmV3IEx0KCk7XG5cdFx0XHRmdW5jdGlvbiBJdCh0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KEl0ID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0SXQodClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIFR0KHQsIGUpIHtcblx0XHRcdFx0dmFyIHIgPSBPYmplY3Qua2V5cyh0KTtcblx0XHRcdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdFx0XHR2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7XG5cdFx0XHRcdFx0ZSAmJlxuXHRcdFx0XHRcdFx0KG4gPSBuLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCBlKS5lbnVtZXJhYmxlO1xuXHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdFx0ci5wdXNoLmFwcGx5KHIsIG4pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gUnQodCkge1xuXHRcdFx0XHRmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuXHRcdFx0XHRcdHZhciByID0gbnVsbCAhPSBhcmd1bWVudHNbZV0gPyBhcmd1bWVudHNbZV0gOiB7fTtcblx0XHRcdFx0XHRlICUgMlxuXHRcdFx0XHRcdFx0PyBUdChPYmplY3QociksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0JHQodCwgZSwgcltlXSk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQ6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzXG5cdFx0XHRcdFx0XHRcdD8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXModCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpXG5cdFx0XHRcdFx0XHRcdDogVHQoT2JqZWN0KHIpKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLCBlKSk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiAkdCh0LCBlLCByKSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KGUgPSAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gSXQodCkgfHwgbnVsbCA9PT0gdCkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdFx0XHRpZiAodm9pZCAwICE9PSByKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLmNhbGwodCwgZSB8fCAnZGVmYXVsdCcpO1xuXHRcdFx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gSXQobikpIHJldHVybiBuO1xuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0BAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuICgnc3RyaW5nJyA9PT0gZSA/IFN0cmluZyA6IE51bWJlcikodCk7XG5cdFx0XHRcdFx0XHR9KSh0LCAnc3RyaW5nJyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ3N5bWJvbCcgPT09IEl0KGUpID8gZSA6IFN0cmluZyhlKTtcblx0XHRcdFx0XHR9KShlKSkgaW4gdFxuXHRcdFx0XHRcdFx0PyBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSlcblx0XHRcdFx0XHRcdDogKHRbZV0gPSByKSxcblx0XHRcdFx0XHR0XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBOdCgpIHtcblx0XHRcdFx0LyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9ibG9iL21haW4vTElDRU5TRSAqLyBOdCA9XG5cdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0dmFyIHQsXG5cdFx0XHRcdFx0ZSA9IHt9LFxuXHRcdFx0XHRcdHIgPSBPYmplY3QucHJvdG90eXBlLFxuXHRcdFx0XHRcdG4gPSByLmhhc093blByb3BlcnR5LFxuXHRcdFx0XHRcdG8gPVxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5IHx8XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0XHR0W2VdID0gci52YWx1ZTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0aSA9ICdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCA/IFN5bWJvbCA6IHt9LFxuXHRcdFx0XHRcdGEgPSBpLml0ZXJhdG9yIHx8ICdAQGl0ZXJhdG9yJyxcblx0XHRcdFx0XHR1ID0gaS5hc3luY0l0ZXJhdG9yIHx8ICdAQGFzeW5jSXRlcmF0b3InLFxuXHRcdFx0XHRcdGMgPSBpLnRvU3RyaW5nVGFnIHx8ICdAQHRvU3RyaW5nVGFnJztcblx0XHRcdFx0ZnVuY3Rpb24gcyh0LCBlLCByKSB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCB7dmFsdWU6IHIsIGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITB9KSwgdFtlXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRzKHt9LCAnJyk7XG5cdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHJldHVybiAodFtlXSA9IHIpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gZih0LCBlLCByLCBuKSB7XG5cdFx0XHRcdFx0dmFyIGkgPSBlICYmIGUucHJvdG90eXBlIGluc3RhbmNlb2YgZyA/IGUgOiBnLFxuXHRcdFx0XHRcdFx0YSA9IE9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLFxuXHRcdFx0XHRcdFx0dSA9IG5ldyBJKG4gfHwgW10pO1xuXHRcdFx0XHRcdHJldHVybiBvKGEsICdfaW52b2tlJywge3ZhbHVlOiBQKHQsIHIsIHUpfSksIGE7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gbCh0LCBlLCByKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdub3JtYWwnLFxuXHRcdFx0XHRcdFx0XHRhcmc6IHQuY2FsbChlLCByKSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3Rocm93Jyxcblx0XHRcdFx0XHRcdFx0YXJnOiB0LFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZS53cmFwID0gZjtcblx0XHRcdFx0dmFyIHAgPSAnc3VzcGVuZGVkU3RhcnQnLFxuXHRcdFx0XHRcdGggPSAnc3VzcGVuZGVkWWllbGQnLFxuXHRcdFx0XHRcdHYgPSAnZXhlY3V0aW5nJyxcblx0XHRcdFx0XHRkID0gJ2NvbXBsZXRlZCcsXG5cdFx0XHRcdFx0eSA9IHt9O1xuXHRcdFx0XHRmdW5jdGlvbiBnKCkge31cblx0XHRcdFx0ZnVuY3Rpb24gbSgpIHt9XG5cdFx0XHRcdGZ1bmN0aW9uIGIoKSB7fVxuXHRcdFx0XHR2YXIgdyA9IHt9O1xuXHRcdFx0XHRzKHcsIGEsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHZhciB4ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuXHRcdFx0XHRcdGsgPSB4ICYmIHgoeChUKFtdKSkpO1xuXHRcdFx0XHRrICYmIGsgIT09IHIgJiYgbi5jYWxsKGssIGEpICYmICh3ID0gayk7XG5cdFx0XHRcdHZhciBTID0gKGIucHJvdG90eXBlID0gZy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHcpKTtcblx0XHRcdFx0ZnVuY3Rpb24gRSh0KSB7XG5cdFx0XHRcdFx0WyduZXh0JywgJ3Rocm93JywgJ3JldHVybiddLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdHModCwgZSwgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2ludm9rZShlLCB0KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIE8odCwgZSkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHIobywgaSwgYSwgdSkge1xuXHRcdFx0XHRcdFx0dmFyIGMgPSBsKHRbb10sIHQsIGkpO1xuXHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgIT09IGMudHlwZSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgcyA9IGMuYXJnLFxuXHRcdFx0XHRcdFx0XHRcdGYgPSBzLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZiAmJiAnb2JqZWN0JyA9PSBJdChmKSAmJiBuLmNhbGwoZiwgJ19fYXdhaXQnKVxuXHRcdFx0XHRcdFx0XHRcdD8gZS5yZXNvbHZlKGYuX19hd2FpdCkudGhlbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyKCduZXh0JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cigndGhyb3cnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdDogZS5yZXNvbHZlKGYpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMudmFsdWUgPSB0KSwgYShzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcigndGhyb3cnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHUoYy5hcmcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaTtcblx0XHRcdFx0XHRvKHRoaXMsICdfaW52b2tlJywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0LCBuKSB7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8oKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBlKGZ1bmN0aW9uIChlLCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyKHQsIG4sIGUsIG8pO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoaSA9IGkgPyBpLnRoZW4obywgbykgOiBvKCkpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBQKGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgbyA9IHA7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChpLCBhKSB7XG5cdFx0XHRcdFx0XHRpZiAobyA9PT0gdikgdGhyb3cgbmV3IEVycm9yKCdHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nJyk7XG5cdFx0XHRcdFx0XHRpZiAobyA9PT0gZCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gaSkgdGhyb3cgYTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdCxcblx0XHRcdFx0XHRcdFx0XHRkb25lOiAhMCxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGZvciAobi5tZXRob2QgPSBpLCBuLmFyZyA9IGE7IDsgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB1ID0gbi5kZWxlZ2F0ZTtcblx0XHRcdFx0XHRcdFx0aWYgKHUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IGoodSwgbik7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjID09PSB5KSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBjO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoJ25leHQnID09PSBuLm1ldGhvZCkgbi5zZW50ID0gbi5fc2VudCA9IG4uYXJnO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmICgndGhyb3cnID09PSBuLm1ldGhvZCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvID09PSBwKSB0aHJvdyAoKG8gPSBkKSwgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRcdG4uZGlzcGF0Y2hFeGNlcHRpb24obi5hcmcpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgJ3JldHVybicgPT09IG4ubWV0aG9kICYmIG4uYWJydXB0KCdyZXR1cm4nLCBuLmFyZyk7XG5cdFx0XHRcdFx0XHRcdG8gPSB2O1xuXHRcdFx0XHRcdFx0XHR2YXIgcyA9IGwoZSwgciwgbik7XG5cdFx0XHRcdFx0XHRcdGlmICgnbm9ybWFsJyA9PT0gcy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCgobyA9IG4uZG9uZSA/IGQgOiBoKSwgcy5hcmcgPT09IHkpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHMuYXJnLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZG9uZTogbi5kb25lLFxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0J3Rocm93JyA9PT0gcy50eXBlICYmICgobyA9IGQpLCAobi5tZXRob2QgPSAndGhyb3cnKSwgKG4uYXJnID0gcy5hcmcpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGooZSwgcikge1xuXHRcdFx0XHRcdHZhciBuID0gci5tZXRob2QsXG5cdFx0XHRcdFx0XHRvID0gZS5pdGVyYXRvcltuXTtcblx0XHRcdFx0XHRpZiAobyA9PT0gdClcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdCgndGhyb3cnID09PSBuICYmXG5cdFx0XHRcdFx0XHRcdFx0ZS5pdGVyYXRvci5yZXR1cm4gJiZcblx0XHRcdFx0XHRcdFx0XHQoKHIubWV0aG9kID0gJ3JldHVybicpLCAoci5hcmcgPSB0KSwgaihlLCByKSwgJ3Rocm93JyA9PT0gci5tZXRob2QpKSB8fFxuXHRcdFx0XHRcdFx0XHRcdCgncmV0dXJuJyAhPT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ1wiICsgbiArIFwiJyBtZXRob2RcIikpKSksXG5cdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0dmFyIGkgPSBsKG8sIGUuaXRlcmF0b3IsIHIuYXJnKTtcblx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gaS50eXBlKSByZXR1cm4gKHIubWV0aG9kID0gJ3Rocm93JyksIChyLmFyZyA9IGkuYXJnKSwgKHIuZGVsZWdhdGUgPSBudWxsKSwgeTtcblx0XHRcdFx0XHR2YXIgYSA9IGkuYXJnO1xuXHRcdFx0XHRcdHJldHVybiBhXG5cdFx0XHRcdFx0XHQ/IGEuZG9uZVxuXHRcdFx0XHRcdFx0XHQ/ICgocltlLnJlc3VsdE5hbWVdID0gYS52YWx1ZSksXG5cdFx0XHRcdFx0XHRcdFx0KHIubmV4dCA9IGUubmV4dExvYyksXG5cdFx0XHRcdFx0XHRcdFx0J3JldHVybicgIT09IHIubWV0aG9kICYmICgoci5tZXRob2QgPSAnbmV4dCcpLCAoci5hcmcgPSB0KSksXG5cdFx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHR5KVxuXHRcdFx0XHRcdFx0XHQ6IGFcblx0XHRcdFx0XHRcdDogKChyLm1ldGhvZCA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHQoci5hcmcgPSBuZXcgVHlwZUVycm9yKCdpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCcpKSxcblx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gTCh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB7XG5cdFx0XHRcdFx0XHR0cnlMb2M6IHRbMF0sXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHQxIGluIHQgJiYgKGUuY2F0Y2hMb2MgPSB0WzFdKSxcblx0XHRcdFx0XHRcdDIgaW4gdCAmJiAoKGUuZmluYWxseUxvYyA9IHRbMl0pLCAoZS5hZnRlckxvYyA9IHRbM10pKSxcblx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5wdXNoKGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIF8odCkge1xuXHRcdFx0XHRcdHZhciBlID0gdC5jb21wbGV0aW9uIHx8IHt9O1xuXHRcdFx0XHRcdChlLnR5cGUgPSAnbm9ybWFsJyksIGRlbGV0ZSBlLmFyZywgKHQuY29tcGxldGlvbiA9IGUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEkodCkge1xuXHRcdFx0XHRcdCh0aGlzLnRyeUVudHJpZXMgPSBbe3RyeUxvYzogJ3Jvb3QnfV0pLCB0LmZvckVhY2goTCwgdGhpcyksIHRoaXMucmVzZXQoITApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIFQoZSkge1xuXHRcdFx0XHRcdGlmIChlIHx8ICcnID09PSBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgciA9IGVbYV07XG5cdFx0XHRcdFx0XHRpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcblx0XHRcdFx0XHRcdGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBlLm5leHQpIHJldHVybiBlO1xuXHRcdFx0XHRcdFx0aWYgKCFpc05hTihlLmxlbmd0aCkpIHtcblx0XHRcdFx0XHRcdFx0dmFyIG8gPSAtMSxcblx0XHRcdFx0XHRcdFx0XHRpID0gZnVuY3Rpb24gcigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOyArK28gPCBlLmxlbmd0aDsgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAobi5jYWxsKGUsIG8pKSByZXR1cm4gKHIudmFsdWUgPSBlW29dKSwgKHIuZG9uZSA9ICExKSwgcjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoci52YWx1ZSA9IHQpLCAoci5kb25lID0gITApLCByO1xuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoaS5uZXh0ID0gaSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoSXQoZSkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KG0ucHJvdG90eXBlID0gYiksXG5cdFx0XHRcdFx0byhTLCAnY29uc3RydWN0b3InLCB7dmFsdWU6IGIsIGNvbmZpZ3VyYWJsZTogITB9KSxcblx0XHRcdFx0XHRvKGIsICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogbSwgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdChtLmRpc3BsYXlOYW1lID0gcyhiLCBjLCAnR2VuZXJhdG9yRnVuY3Rpb24nKSksXG5cdFx0XHRcdFx0KGUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9ICdmdW5jdGlvbicgPT0gdHlwZW9mIHQgJiYgdC5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdHJldHVybiAhIWUgJiYgKGUgPT09IG0gfHwgJ0dlbmVyYXRvckZ1bmN0aW9uJyA9PT0gKGUuZGlzcGxheU5hbWUgfHwgZS5uYW1lKSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUubWFyayA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRPYmplY3Quc2V0UHJvdG90eXBlT2Zcblx0XHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCBiKVxuXHRcdFx0XHRcdFx0XHRcdDogKCh0Ll9fcHJvdG9fXyA9IGIpLCBzKHQsIGMsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHRcdFx0KHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTKSksXG5cdFx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuYXdyYXAgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0X19hd2FpdDogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0RShPLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0cyhPLnByb3RvdHlwZSwgdSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuQXN5bmNJdGVyYXRvciA9IE8pLFxuXHRcdFx0XHRcdChlLmFzeW5jID0gZnVuY3Rpb24gKHQsIHIsIG4sIG8sIGkpIHtcblx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gaSAmJiAoaSA9IFByb21pc2UpO1xuXHRcdFx0XHRcdFx0dmFyIGEgPSBuZXcgTyhmKHQsIHIsIG4sIG8pLCBpKTtcblx0XHRcdFx0XHRcdHJldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocilcblx0XHRcdFx0XHRcdFx0PyBhXG5cdFx0XHRcdFx0XHRcdDogYS5uZXh0KCkudGhlbihmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuZG9uZSA/IHQudmFsdWUgOiBhLm5leHQoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRFKFMpLFxuXHRcdFx0XHRcdHMoUywgYywgJ0dlbmVyYXRvcicpLFxuXHRcdFx0XHRcdHMoUywgYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0cyhTLCAndG9TdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ1tvYmplY3QgR2VuZXJhdG9yXSc7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUua2V5cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IE9iamVjdCh0KSxcblx0XHRcdFx0XHRcdFx0ciA9IFtdO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgbiBpbiBlKSByLnB1c2gobik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRyLnJldmVyc2UoKSxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgci5sZW5ndGg7ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLnBvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4gaW4gZSkgcmV0dXJuICh0LnZhbHVlID0gbiksICh0LmRvbmUgPSAhMSksIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5kb25lID0gITApLCB0O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLnZhbHVlcyA9IFQpLFxuXHRcdFx0XHRcdChJLnByb3RvdHlwZSA9IHtcblx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiBJLFxuXHRcdFx0XHRcdFx0cmVzZXQ6IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHQoKHRoaXMucHJldiA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRvbmUgPSAhMSksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAnbmV4dCcpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmFyZyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKF8pLFxuXHRcdFx0XHRcdFx0XHRcdCFlKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciBpbiB0aGlzKVxuXHRcdFx0XHRcdFx0XHRcdFx0J3QnID09PSByLmNoYXJBdCgwKSAmJiBuLmNhbGwodGhpcywgcikgJiYgIWlzTmFOKCtyLnNsaWNlKDEpKSAmJiAodGhpc1tyXSA9IHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHN0b3A6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kb25lID0gITA7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ydmFsO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5kb25lKSB0aHJvdyBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8obiwgbykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQodS50eXBlID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdFx0XHQodS5hcmcgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBuKSxcblx0XHRcdFx0XHRcdFx0XHRcdG8gJiYgKChyLm1ldGhvZCA9ICduZXh0JyksIChyLmFyZyA9IHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdCEhb1xuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhID0gdGhpcy50cnlFbnRyaWVzW2ldLFxuXHRcdFx0XHRcdFx0XHRcdFx0dSA9IGEuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ3Jvb3QnID09PSBhLnRyeUxvYykgcmV0dXJuIG8oJ2VuZCcpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhLnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBjID0gbi5jYWxsKGEsICdjYXRjaExvYycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzID0gbi5jYWxsKGEsICdmaW5hbGx5TG9jJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyAmJiBzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcykgdGhyb3cgbmV3IEVycm9yKCd0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseScpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFicnVwdDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyByID49IDA7IC0tcikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBvID0gdGhpcy50cnlFbnRyaWVzW3JdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvLnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgbi5jYWxsKG8sICdmaW5hbGx5TG9jJykgJiYgdGhpcy5wcmV2IDwgby5maW5hbGx5TG9jKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgaSA9IG87XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aSAmJlxuXHRcdFx0XHRcdFx0XHRcdCgnYnJlYWsnID09PSB0IHx8ICdjb250aW51ZScgPT09IHQpICYmXG5cdFx0XHRcdFx0XHRcdFx0aS50cnlMb2MgPD0gZSAmJlxuXHRcdFx0XHRcdFx0XHRcdGUgPD0gaS5maW5hbGx5TG9jICYmXG5cdFx0XHRcdFx0XHRcdFx0KGkgPSBudWxsKTtcblx0XHRcdFx0XHRcdFx0dmFyIGEgPSBpID8gaS5jb21wbGV0aW9uIDoge307XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KGEudHlwZSA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdChhLmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdGkgPyAoKHRoaXMubWV0aG9kID0gJ25leHQnKSwgKHRoaXMubmV4dCA9IGkuZmluYWxseUxvYyksIHkpIDogdGhpcy5jb21wbGV0ZShhKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNvbXBsZXRlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQnYnJlYWsnID09PSB0LnR5cGUgfHwgJ2NvbnRpbnVlJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHQ/ICh0aGlzLm5leHQgPSB0LmFyZylcblx0XHRcdFx0XHRcdFx0XHRcdDogJ3JldHVybicgPT09IHQudHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubWV0aG9kID0gJ3JldHVybicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAnZW5kJykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJ25vcm1hbCcgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmluaXNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgXyhyKSwgeTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIudHJ5TG9jID09PSB0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBuLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XyhyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2lsbGVnYWwgY2F0Y2ggYXR0ZW1wdCcpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIChlLCByLCBuKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVyYXRvcjogVChlKSxcblx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdE5hbWU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXh0TG9jOiBuLFxuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdCduZXh0JyA9PT0gdGhpcy5tZXRob2QgJiYgKHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0eVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBDdCh0LCBlLCByLCBuLCBvLCBpLCBhKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dmFyIHUgPSB0W2ldKGEpLFxuXHRcdFx0XHRcdFx0YyA9IHUudmFsdWU7XG5cdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gdm9pZCByKHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHUuZG9uZSA/IGUoYykgOiBQcm9taXNlLnJlc29sdmUoYykudGhlbihuLCBvKTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIEF0KHQpIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHRoaXMsXG5cdFx0XHRcdFx0XHRyID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAobiwgbykge1xuXHRcdFx0XHRcdFx0dmFyIGkgPSB0LmFwcGx5KGUsIHIpO1xuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gYSh0KSB7XG5cdFx0XHRcdFx0XHRcdEN0KGksIG4sIG8sIGEsIHUsICduZXh0JywgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiB1KHQpIHtcblx0XHRcdFx0XHRcdFx0Q3QoaSwgbiwgbywgYSwgdSwgJ3Rocm93JywgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRhKHZvaWQgMCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHQkKFxuXHRcdFx0XHRBdChcblx0XHRcdFx0XHROdCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdHZhciBlLCByLCBuLCBvLCBhLCB1LCBjLCBzLCBmLCBsO1xuXHRcdFx0XHRcdFx0cmV0dXJuIE50KCkud3JhcChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgoZSA9IHt9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9ICQoJy5ub2FydGljbGV0ZXh0JykubGVuZ3RoID4gMCAmJiAwID09PSBpLmFydGljbGVJZCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBBdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TnQoKS5tYXJrKGZ1bmN0aW9uIHQocikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBuLCBvLCBpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBOdCgpLndyYXAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgobiA9IHIucmV2aXNpb25JZCksIChvID0gci50aXRsZSksICFlW25dKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYWJydXB0KCdyZXR1cm4nLCBlW25dKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoaSA9IG5ldyBzdCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV2aXNpb25JZDogbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogbyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gNiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkuaW5pdCgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoZVtuXSA9IGkpLCB0LmFicnVwdCgncmV0dXJuJywgZVtuXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA4OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5pbmZvKCdXaWtpcGx1cyBub3cgbG9hZGluZy4gVmVyc2lvbjogJy5jb25jYXQoaS52ZXJzaW9uKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93Lm13KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSA3O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ01lZGlhd2lraSBKYXZhU2NyaXB0IG5vdCBsb2FkZWQgb3Igbm90IGEgTWVkaWF3aWtpIHdlYnNpdGUuJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5hYnJ1cHQoJ3JldHVybicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpLnVzZXJHcm91cHMuaW5jbHVkZXMoJ2F1dG9jb25maXJtZWQnKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDExO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dnQuZXJyb3IoUC50cmFuc2xhdGUoJ25vdF9hdXRvY29uZmlybWVkX3VzZXInKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5pbmZvKFAudHJhbnNsYXRlKCdub3RfYXV0b2NvbmZpcm1lZF91c2VyJykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuYWJydXB0KCdyZXR1cm4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGkuaXNBcnRpY2xlICYmICd2aWV3JyA9PT0gaS5hY3Rpb24pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxNDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTS5pbmZvKCdOb3QgYW4gZWRpdGFibGUgcGFnZS4gU3RvcCBpbml0aWFsaXphdGlvbi4nKSwgdC5hYnJ1cHQoJ3JldHVybicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxNDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQod2luZG93Ll9XaWtpcGx1c1BhZ2VzID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG8gPSBpLmN1cnJlbnRQYWdlTmFtZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGEgPSBpLnJldmlzaW9uSWQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAxOSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bih7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXZpc2lvbklkOiBhLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTk6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCh1ID0gdC5zZW50KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoYyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IEF0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHROdCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBOdCgpLndyYXAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgoYSA9IChlID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBrWzBdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGtbMF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDoge30pLnNlY3Rpb25OdW1iZXIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodSA9IGUuc2VjdGlvbk5hbWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoYyA9IGUudGFyZ2V0UGFnZU5hbWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhKHMgPSBjICE9PSBvKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkubGF0ZXN0UmV2aXNpb25JZCA9PT0gaS5yZXZpc2lvbklkKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dCA9IDU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5lcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnY3Jvc3NfcGFnZV9oaXN0b3J5X3JldmlzaW9uX2VkaXRfd2FybmluZydcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5hYnJ1cHQoJ3JldHVybicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gOCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFguZ2V0TGF0ZXN0UmV2aXNpb25JZEZvclBhZ2UoYylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA4OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQudDAgPSB0LnNlbnQpLCAodC5uZXh0ID0gMTIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQudDAgPSBpLnJldmlzaW9uSWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmID0gdC50MCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAxNSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldmlzaW9uSWQ6IGYsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IGMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobCA9IHQuc2VudCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChwID0gX3QuZ2V0U2V0dGluZygnZGVmYXVsdFN1bW1hcnknLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbk5hbWU6IHUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbk51bWJlcjogYSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uVGFyZ2V0TmFtZTogYyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoaCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cCB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh1XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICcvKiAnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdCh1LCAnICovICcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZGVmYXVsdF9zdW1tYXJ5X3N1ZmZpeCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFAudHJhbnNsYXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdkZWZhdWx0X3N1bW1hcnlfc3VmZml4J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh2ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dnQuc3VjY2VzcyhQLnRyYW5zbGF0ZSgnbG9hZGluZycpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgMjAwKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAyMSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGwuZ2V0V2lraVRleHQoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNlY3Rpb246IGEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjE6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZCA9IHQuc2VudCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh5ID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhcyAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkubGF0ZXN0UmV2aXNpb25JZCAhPT0gaS5yZXZpc2lvbklkKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGcgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCEwID09PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0X3QuZ2V0U2V0dGluZyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2VzY190b19leGl0X3F1aWNrZWRpdCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQndHJ1ZScgPT09XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfdC5nZXRTZXR0aW5nKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZXNjX3RvX2V4aXRfcXVpY2tlZGl0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCEwID09PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0X3QuZ2V0U2V0dGluZyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2VzY1RvRXhpdFF1aWNrRWRpdCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQndHJ1ZScgPT09XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfdC5nZXRTZXR0aW5nKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZXNjVG9FeGl0UXVpY2tFZGl0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChtID0gX3QuZ2V0U2V0dGluZygnY3VzdG9tX2VkaXRfdGFncycpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGIgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxvY2F0aW9uLmhvc3QuaW5jbHVkZXMoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnemgud2lraXBlZGlhLm9yZydcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bG9jYXRpb24uaG9zdC5pbmNsdWRlcyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd6aC5tLndpa2lwZWRpYS5vcmcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBbJ3dpa2lwbHVzJ11cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogW10pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodyA9IG51bGwgIT0gbSAmJiBtLmxlbmd0aCA/IG0gOiBiKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHYpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2dC5lbXB0eSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR5ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dnQud2FybmluZyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCdoaXN0b3J5X2VkaXRfd2FybmluZycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHggPSBzID8gIWYgOiByKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuc2hvd1F1aWNrRWRpdFBhbmVsKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJydcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCdxdWlja2VkaXRfdG9wYnRuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFAudHJhbnNsYXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnaGlzdG9yeV9lZGl0X3dhcm5pbmcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiB4XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFAudHJhbnNsYXRlKCdjcmVhdGVfcGFnZV90aXAnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN1bW1hcnk6IGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25CYWNrOiBFdC5oaWRlUXVpY2tFZGl0UGFuZWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25QYXJzZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBsLnBhcnNlV2lraVRleHQodCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkVkaXQ6IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IEF0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHROdCgpLm1hcmsoZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIsIG4sIG8sIGk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIE50KCkud3JhcChmdW5jdGlvbiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5jb250ZW50KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUuc3VtbWFyeSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLmlzTWlub3JFZGl0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGkgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlnOiBSdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFJ0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3VtbWFyeTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC0xICE9PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDoge31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3Lmxlbmd0aFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhZ3M6IHcuam9pbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiB7fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoaS5jb25maWcubWlub3IgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQndHJ1ZScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAoaS5jb25maWcubm90bWlub3IgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQndHJ1ZScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gNSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGwuZWRpdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlc2NFeGl0OiBnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDMyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IEF0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHROdCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTnQoKS53cmFwKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuc2hvd1NpbXBsZVJlZGlyZWN0UGFuZWwoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkVkaXQ6IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBBdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE50KCkubWFyayhmdW5jdGlvbiB0KGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIsIG8sIGEsIHUsIGMsIHM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBOdCgpLndyYXAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IHQubmV4dClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS50aXRsZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobyA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUuZm9yY2VPdmVyd3JpdGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGEgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2b2lkIDAgIT09XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAzKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuc2VudCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoYyA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkuY3VycmVudFBhZ2VOYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjUkVESVJFQ1QgW1snLmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnXV0nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3VtbWFyeTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQncmVkaXJlY3RfZnJvbV9zdW1tYXJ5Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5jb25maWcuY3JlYXRlb25seSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3RydWUnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSA5KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHUuZWRpdChzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgOTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvblN1Y2Nlc3M6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUgPSB0LnRpdGxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxvY2F0aW9uLmhyZWYgPSBpLmFydGljbGVQYXRoLnJlcGxhY2UoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvXFwkMS9naSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZiA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IEF0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHROdCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTnQoKS53cmFwKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuc2hvd1NldHRpbmdzUGFuZWwoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvblN1Ym1pdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IHQuc2V0dGluZ3M7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5wYXJzZShlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnV2lraXBsdXNfU2V0dGluZ3MnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobCA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IEF0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHROdCgpLm1hcmsoZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIE50KCkud3JhcChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gZS5zZWN0aW9uTnVtYmVyKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1LmdldFdpa2lUZXh0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uOiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRFdC5pbnNlcnRUb3BRdWlja0VkaXRFbnRyeShjKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRFdC5pbnNlcnRTZWN0aW9uUXVpY2tFZGl0RW50cmllcyhjKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRFdC5pbnNlcnRMaW5rRWRpdEVudHJpZXMoYyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuaW5zZXJ0U2ltcGxlUmVkaXJlY3RCdXR0b24ocyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuaW5zZXJ0U2V0dGluZ3NQYW5lbEJ1dHRvbihmKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRFdC5iaW5kUHJlbG9hZEV2ZW50cyhsKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMzA6XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSwgdCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9KSgpO1xufSkoKTtcblxuZXhwb3J0IHt9O1xuIiwgImltcG9ydCAnLi9XaWtpcGx1cy5sZXNzJztcblxuKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0Y29uc3Qge3dnQWN0aW9uLCB3Z0lzQXJ0aWNsZX0gPSBtdy5jb25maWcuZ2V0KCk7XG5cdGlmICh3Z0FjdGlvbiAhPT0gJ3ZpZXcnIHx8ICF3Z0lzQXJ0aWNsZSkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHsndmlzdWFsZWRpdG9yLWVuYWJsZSc6IGlzVmVFbmFibGV9ID0gbXcudXNlci5vcHRpb25zLmdldCgpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdGNvbnN0IGxvYWRlciA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRhd2FpdCBpbXBvcnQoJy4vbW9kdWxlcy9jb3JlJyk7XG5cdH07XG5cblx0Lyogc2VlIDxodHRwczovL2dpdGh1Yi5jb20vV2lraXBsdXMvV2lraXBsdXMvaXNzdWVzLzY1PiAqL1xuXHRpZiAoaXNWZUVuYWJsZSkge1xuXHRcdGF3YWl0IG13LmxvYWRlci51c2luZygnZXh0LnZpc3VhbEVkaXRvci5jb3JlJyk7XG5cdH1cblxuXHR2b2lkIGxvYWRlcigpO1xufSkoKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQSx1RkFBQUEsU0FBQTtBQUFBO0FBQ0EsSUFBQUEsUUFBTyxVQUFVLFNBQVUsTUFBTTtBQUMvQixVQUFJO0FBQ0YsZUFBTyxDQUFDLENBQUMsS0FBSztBQUFBLE1BQ2hCLFNBQVMsT0FBTztBQUNkLGVBQU87QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ1BBO0FBQUEsNkZBQUFDLFNBQUE7QUFBQTtBQUNBLFFBQUksUUFBUTtBQUdaLElBQUFBLFFBQU8sVUFBVSxDQUFDLE1BQU0sV0FBWTtBQUVsQyxhQUFPLE9BQU8sZUFBZSxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssV0FBWTtBQUFFLGVBQU87QUFBQSxNQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTTtBQUFBLElBQ2pGLENBQUM7QUFBQTtBQUFBOzs7QUNQRDtBQUFBLHNHQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLFFBQVE7QUFFWixJQUFBQSxRQUFPLFVBQVUsQ0FBQyxNQUFNLFdBQVk7QUFFbEMsVUFBSSxPQUFRLFdBQVk7QUFBQSxNQUFjLEVBQUcs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USx3QkFBd0JucEIsRUFBQyxHQUM1QjBZLEdBQUcwUSw4QkFBOEJwcEIsRUFBQyxHQUNsQzBZLEdBQUcyUSxzQkFBc0JycEIsRUFBQyxHQUMxQjBZLEdBQUc0USwyQkFBMkJycEIsRUFBQyxHQUMvQnlZLEdBQUc2USwwQkFBMEIxckIsRUFBQyxHQUM5QjZhLEdBQUc4USxrQkFBa0JscEIsRUFBQztjQUN4QixLQUFLO2NBQ0wsS0FBSztBQUNKLHVCQUFPaEIsR0FBRThmLEtBQUs7WUFDaEI7VUFDRixHQUFHbGtCLEVBQUM7UUFDTCxDQUFDLENBQ0YsQ0FDRDtNQUNELEVBQUc7SUFDTCxHQUFHO0VBQUE7QUFBQSxDQUFBOztrQkN2dGFGLGFBQTJCO0FBQzNCLFFBQU07SUFBQ3V1QjtJQUFVQztFQUFXLElBQUlsTixHQUFHQyxPQUFPdmEsSUFBSTtBQUM5QyxNQUFJdW5CLGFBQWEsVUFBVSxDQUFDQyxhQUFhO0FBQ3hDO0VBQ0Q7QUFFQSxRQUFNO0lBQUMsdUJBQXVCQztFQUFVLElBQUluTixHQUFHMkcsS0FBS3lHLFFBQVExbkIsSUFBSTtBQUVoRSxRQUFNK2dCLFNBQUEsMkJBQUE7QUFBQSxRQUFBNEcsUUFBQUMsa0JBQVMsYUFBMkI7QUFDekMsWUFBTWpmLFFBQUF6TCxRQUFBLEVBQUFDLEtBQUEsT0FBQS9FLFVBQUEsR0FBQUQsYUFBQTtJQUNQLENBQUE7QUFBQSxXQUFBLFNBRk00b0IsVUFBQTtBQUFBLGFBQUE0RyxNQUFBemlCLE1BQUEsTUFBQS9LLFNBQUE7SUFBQTtFQUFBLEVBQUE7QUFLTixNQUFJc3RCLFlBQVk7QUFDZixVQUFNbk4sR0FBR3lHLE9BQU9DLE1BQU0sdUJBQXVCO0VBQzlDO0FBRUEsT0FBS0QsT0FBTztBQUNiLENBQUEsRUFBRzsiLAogICJuYW1lcyI6IFsibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJkb2N1bWVudCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAiRGVubyIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJTeW1ib2wiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbCIsICJUeXBlRXJyb3IiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWwiLCAibW9kdWxlIiwgImdsb2JhbCIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgIkFycmF5QnVmZmVyIiwgIlR5cGVFcnJvciIsICIkIiwgIiQiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImNvcmVfZXhwb3J0cyIsICJpbml0X2NvcmUiLCAiX19lc20iLCAiV2lraXBsdXMiLCAidCIsICJ0MiIsICJlMiIsICJyMiIsICJuIiwgIm8iLCAiaSIsICJUeXBlRXJyb3IiLCAiZXhwb3J0cyIsICJ0MyIsICJoYXMiLCAiU3RyaW5nIiwgImYiLCAiYSIsICJ1IiwgIkFycmF5IiwgInByb3RvdHlwZSIsICJjb25maWd1cmFibGUiLCAidmFsdWUiLCAiY2hhckF0IiwgImUzIiwgInIzIiwgImxlbmd0aCIsICJBcnJheUJ1ZmZlciIsICJPYmplY3QiLCAiaXNFeHRlbnNpYmxlIiwgImRlZmluZVByb3BlcnR5IiwgImZvckVhY2giLCAiYXJndW1lbnRzIiwgImMiLCAicyIsICJsIiwgInAiLCAiaCIsICJ2IiwgImQiLCAieSIsICJnIiwgIm0iLCAiYiIsICJ3IiwgIngiLCAiayIsICJTIiwgIkUiLCAibmV4dCIsICJkb25lIiwgImEyIiwgImluY2x1ZGVzIiwgImluZGV4T2YiLCAicHVzaCIsICJvMiIsICJmMiIsICJPIiwgIlAiLCAibWFwIiwgImZpbHRlciIsICJzb21lIiwgImV2ZXJ5IiwgImZpbmQiLCAiZmluZEluZGV4IiwgImZpbHRlclJlamVjdCIsICJjb25zdHJ1Y3RvciIsICJmb28iLCAiQm9vbGVhbiIsICJjYWxsIiwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsICJ3cml0YWJsZSIsICJNYXRoIiwgIm1heCIsICJzbGljZSIsICJmbG9vciIsICJuMiIsICJpMiIsICJ1MiIsICJyZXNvbHZlIiwgInRoZW4iLCAidDQiLCAic2V0IiwgImdldHRlckZvciIsICJlcnJvciIsICJleGl0IiwgInJlamVjdCIsICJlNCIsICJyNCIsICJuZXh0SGFuZGxlciIsICJyZXR1cm4iLCAiYzIiLCAiczIiLCAiaXRlcmF0b3IiLCAiaW5uZXIiLCAidHlwZSIsICJjb3VudGVyIiwgImwyIiwgInQ1IiwgInQ2IiwgInkyIiwgImIyIiwgIm4zIiwgInRvQXJyYXkiLCAiQXN5bmNJdGVyYXRvciIsICJBc3luY0l0ZXJhdG9yUHJvdG90eXBlIiwgIkZ1bmN0aW9uIiwgImZyb20iLCAidG9TdHJpbmciLCAiY2FsbGVlIiwgImZhc3RLZXkiLCAiZ2V0Q29uc3RydWN0b3IiLCAicDIiLCAiaW5kZXgiLCAiZmlyc3QiLCAibGFzdCIsICJzaXplIiwgInRoYXQiLCAiQVNfRU5UUklFUyIsICJkMiIsICJrZXkiLCAicHJldmlvdXMiLCAicmVtb3ZlZCIsICJjbGVhciIsICJkZWxldGUiLCAiZ2V0IiwgImFkZCIsICJzZXRTdHJvbmciLCAidGFyZ2V0IiwgInN0YXRlIiwgImtpbmQiLCAiZW50cmllcyIsICJlbmFibGUiLCAiaiIsICJMIiwgIl8iLCAiSSIsICJnbG9iYWwiLCAiZm9yY2VkIiwgImdldFByb3RvdHlwZU9mIiwgImVudW1lcmFibGUiLCAiZ2V0dGVyIiwgInNldHRlciIsICJuYW1lIiwgInVuc2FmZSIsICJub25Db25maWd1cmFibGUiLCAibm9uV3JpdGFibGUiLCAiZG9jdW1lbnQiLCAiYWxsIiwgIklTX0hUTUxEREEiLCAiY3JlYXRlRWxlbWVudCIsICJDU1NSdWxlTGlzdCIsICJDU1NTdHlsZURlY2xhcmF0aW9uIiwgIkNTU1ZhbHVlTGlzdCIsICJDbGllbnRSZWN0TGlzdCIsICJET01SZWN0TGlzdCIsICJET01TdHJpbmdMaXN0IiwgIkRPTVRva2VuTGlzdCIsICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIsICJGaWxlTGlzdCIsICJIVE1MQWxsQ29sbGVjdGlvbiIsICJIVE1MQ29sbGVjdGlvbiIsICJIVE1MRm9ybUVsZW1lbnQiLCAiSFRNTFNlbGVjdEVsZW1lbnQiLCAiTWVkaWFMaXN0IiwgIk1pbWVUeXBlQXJyYXkiLCAiTmFtZWROb2RlTWFwIiwgIk5vZGVMaXN0IiwgIlBhaW50UmVxdWVzdExpc3QiLCAiUGx1Z2luIiwgIlBsdWdpbkFycmF5IiwgIlNWR0xlbmd0aExpc3QiLCAiU1ZHTnVtYmVyTGlzdCIsICJTVkdQYXRoU2VnTGlzdCIsICJTVkdQb2ludExpc3QiLCAiU1ZHU3RyaW5nTGlzdCIsICJTVkdUcmFuc2Zvcm1MaXN0IiwgIlNvdXJjZUJ1ZmZlckxpc3QiLCAiU3R5bGVTaGVldExpc3QiLCAiVGV4dFRyYWNrQ3VlTGlzdCIsICJUZXh0VHJhY2tMaXN0IiwgIlRvdWNoTGlzdCIsICJjbGFzc0xpc3QiLCAid2luZG93IiwgIkRlbm8iLCAidmVyc2lvbiIsICJ0ZXN0IiwgIlBlYmJsZSIsICJwcm9jZXNzIiwgIm5hdmlnYXRvciIsICJ1c2VyQWdlbnQiLCAidmVyc2lvbnMiLCAidjgiLCAic3BsaXQiLCAibWF0Y2giLCAiRXJyb3IiLCAicmVwbGFjZSIsICJzdGFjayIsICJwcmVwYXJlU3RhY2tUcmFjZSIsICJjYXB0dXJlU3RhY2tUcmFjZSIsICJzdGF0IiwgImRvbnRDYWxsR2V0U2V0IiwgInNoYW0iLCAiUmVnRXhwIiwgImZsYWdzIiwgImV4ZWMiLCAicHJldmVudEV4dGVuc2lvbnMiLCAiYXBwbHkiLCAiUmVmbGVjdCIsICJiaW5kIiwgImhhc093blByb3BlcnR5IiwgImNvbmNhdCIsICJqb2luIiwgInI1IiwgIkVYSVNUUyIsICJQUk9QRVIiLCAiQ09ORklHVVJBQkxFIiwgImdsb2JhbFRoaXMiLCAic2VsZiIsICJoYXNPd24iLCAiY29uc29sZSIsICJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsICJpbnNwZWN0U291cmNlIiwgImNhdXNlIiwgIm9iamVjdElEIiwgIndlYWtEYXRhIiwgInNwbGljZSIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgImdldFdlYWtEYXRhIiwgIm9uRnJlZXplIiwgIldlYWtNYXAiLCAiZmFjYWRlIiwgImVuZm9yY2UiLCAiaXNBcnJheSIsICJub3JtYWxpemUiLCAidG9Mb3dlckNhc2UiLCAiZGF0YSIsICJOQVRJVkUiLCAiUE9MWUZJTEwiLCAic3RvcHBlZCIsICJyZXN1bHQiLCAiSVNfUkVDT1JEIiwgIklTX0lURVJBVE9SIiwgIklOVEVSUlVQVEVEIiwgIkl0ZXJhdG9yUHJvdG90eXBlIiwgIkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMiLCAidjIiLCAiQyIsICIkMiIsICJUIiwgIlIiLCAiTiIsICJBIiwgInZhbHVlcyIsICJrZXlzIiwgInByb3RvIiwgImFyaXR5IiwgInNvdXJjZSIsICJNYXAiLCAicmVtb3ZlIiwgImNlaWwiLCAidHJ1bmMiLCAiTXV0YXRpb25PYnNlcnZlciIsICJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiwgIlByb21pc2UiLCAiZG9tYWluIiwgImhlYWQiLCAiZW50ZXIiLCAibmV4dFRpY2siLCAiY3JlYXRlVGV4dE5vZGUiLCAib2JzZXJ2ZSIsICJjaGFyYWN0ZXJEYXRhIiwgInByb21pc2UiLCAiYXNzaWduIiwgIlN5bWJvbCIsICJoMiIsICJ3cml0ZSIsICJjbG9zZSIsICJwYXJlbnRXaW5kb3ciLCAiQWN0aXZlWE9iamVjdCIsICJzdHlsZSIsICJkaXNwbGF5IiwgImFwcGVuZENoaWxkIiwgInNyYyIsICJjb250ZW50V2luZG93IiwgIm9wZW4iLCAiRiIsICJjcmVhdGUiLCAiZGVmaW5lUHJvcGVydGllcyIsICJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCAiaXNQcm90b3R5cGVPZiIsICJzZXRQcm90b3R5cGVPZiIsICJfX3Byb3RvX18iLCAidmFsdWVPZiIsICJTeW50YXhFcnJvciIsICJwYXJzZUludCIsICJmcm9tQ2hhckNvZGUiLCAiZW5kIiwgIlByb21pc2VSZWplY3Rpb25FdmVudCIsICJjYXRjaCIsICJmaW5hbGx5IiwgIkNPTlNUUlVDVE9SIiwgIlJFSkVDVElPTl9FVkVOVCIsICJTVUJDTEFTU0lORyIsICJ0YWlsIiwgIml0ZW0iLCAibGFzdEluZGV4IiwgIkJST0tFTl9DQVJFVCIsICJyYXciLCAiZ3JvdXBzIiwgInN0aWNreSIsICJtdWx0aWxpbmUiLCAiaW5wdXQiLCAiaGFzSW5kaWNlcyIsICJpZ25vcmVDYXNlIiwgImRvdEFsbCIsICJ1bmljb2RlIiwgInVuaWNvZGVTZXRzIiwgIk1JU1NFRF9TVElDS1kiLCAiVU5TVVBQT1JURURfWSIsICJtb2RlIiwgImNvcHlyaWdodCIsICJsaWNlbnNlIiwgImNoYXJDb2RlQXQiLCAiY29kZUF0IiwgIlJhbmdlRXJyb3IiLCAiaTMiLCAiZzIiLCAidzIiLCAic3RhcnQiLCAidHJpbSIsICJmb3IiLCAia2V5Rm9yIiwgInNldEltbWVkaWF0ZSIsICJjbGVhckltbWVkaWF0ZSIsICJEaXNwYXRjaCIsICJNZXNzYWdlQ2hhbm5lbCIsICJsb2NhdGlvbiIsICJwb3N0TWVzc2FnZSIsICJwcm90b2NvbCIsICJob3N0IiwgIm5vdyIsICJwb3J0MiIsICJwb3J0MSIsICJvbm1lc3NhZ2UiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJpbXBvcnRTY3JpcHRzIiwgInJlbW92ZUNoaWxkIiwgInNldFRpbWVvdXQiLCAibWluIiwgInJhbmRvbSIsICJVUkwiLCAic2VhcmNoUGFyYW1zIiwgIlVSTFNlYXJjaFBhcmFtcyIsICJwYXRobmFtZSIsICJ0b0pTT04iLCAic29ydCIsICJocmVmIiwgInVzZXJuYW1lIiwgImhhc2giLCAid2l0aG91dFNldHRlciIsICJBcmd1bWVudHMiLCAiRGF0ZSIsICJzdHJpbmdpZnkiLCAiSlNPTiIsICJOYU4iLCAid3JhcCIsICJOdW1iZXIiLCAiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsICJyZWFsIiwgIlciLCAiQiIsICJVIiwgIk0iLCAiRCIsICJHIiwgImNyZWF0ZUV2ZW50IiwgImRpc3BhdGNoRXZlbnQiLCAicSIsICJRIiwgIkgiLCAib2siLCAiZmFpbCIsICJyZWplY3Rpb24iLCAiSyIsICJ6IiwgIm5vdGlmaWVkIiwgInJlYWN0aW9ucyIsICJWIiwgIlkiLCAicmVhc29uIiwgImluaXRFdmVudCIsICJKIiwgImVtaXQiLCAicGFyZW50IiwgIlgiLCAiWiIsICJ0dCIsICJyYWNlIiwgImNvbnN0cnVjdCIsICJvMyIsICJhMyIsICJzMyIsICJzdHJpbmciLCAiUDIiLCAiajIiLCAiUU9iamVjdCIsICJldCIsICJydCIsICJudCIsICJvdCIsICJpdCIsICJmaW5kQ2hpbGQiLCAiYXQiLCAidXQiLCAiY3QiLCAidGFnIiwgImRlc2NyaXB0aW9uIiwgInN0IiwgImZ0IiwgInZ0IiwgImx0IiwgInB0IiwgImh0IiwgInVzZVNldHRlciIsICJ1c2VTaW1wbGUiLCAicHJlZGljYXRlIiwgImMzIiwgIkl0ZXJhdG9yIiwgInBhcnNlIiwgIm0yIiwgIm5vZGVzIiwgImZvcmsiLCAic2tpcCIsICJudW1iZXIiLCAib2JqZWN0IiwgImFycmF5IiwgImtleXdvcmQiLCAibm9kZSIsICJ1bnRpbCIsICJkZWxldGVBbGwiLCAiZW1wbGFjZSIsICJ1cGRhdGUiLCAiaW5zZXJ0IiwgImZpbmRLZXkiLCAia2V5T2YiLCAibWFwS2V5cyIsICJtYXBWYWx1ZXMiLCAibWVyZ2UiLCAicmVkdWNlIiwgImRlY29kZVVSSUNvbXBvbmVudCIsICJlbmNvZGVVUklDb21wb25lbnQiLCAic2hpZnQiLCAidXJsIiwgInBhcnNlT2JqZWN0IiwgInBhcnNlUXVlcnkiLCAiYmluZFVSTCIsICJzZXJpYWxpemUiLCAicXVlcnkiLCAidXBkYXRlVVJMIiwgImFwcGVuZCIsICJnZXRBbGwiLCAiZHQiLCAieXQiLCAiZ3QiLCAiYm9keSIsICJoZWFkZXJzIiwgImZldGNoIiwgIm10IiwgIlJlcXVlc3QiLCAiZ2V0U3RhdGUiLCAicG93IiwgInBvcCIsICJ1bnNoaWZ0IiwgImZ0cCIsICJmaWxlIiwgImh0dHAiLCAiaHR0cHMiLCAid3MiLCAid3NzIiwgImJ0IiwgInd0IiwgInh0IiwgImt0IiwgIlN0IiwgIkV0IiwgIk90IiwgIlB0IiwgImp0IiwgIkx0IiwgIl90IiwgIkl0IiwgIlR0IiwgIlJ0IiwgIiR0IiwgIk50IiwgIkN0IiwgIkF0IiwgIld0IiwgInNjaGVtZSIsICJwYXNzd29yZCIsICJwb3J0IiwgInBhdGgiLCAiZnJhZ21lbnQiLCAiY2Fubm90QmVBQmFzZVVSTCIsICJpc1NwZWNpYWwiLCAiaW5jbHVkZXNDcmVkZW50aWFscyIsICJ4MiIsICJrMiIsICJwYXJzZUhvc3QiLCAiUzIiLCAic2hvcnRlblBhdGgiLCAiY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0IiwgInNldEhyZWYiLCAiZ2V0T3JpZ2luIiwgIkJ0IiwgIm9yaWdpbiIsICJnZXRQcm90b2NvbCIsICJzZXRQcm90b2NvbCIsICJnZXRVc2VybmFtZSIsICJzZXRVc2VybmFtZSIsICJnZXRQYXNzd29yZCIsICJzZXRQYXNzd29yZCIsICJnZXRIb3N0IiwgInNldEhvc3QiLCAiZ2V0SG9zdG5hbWUiLCAic2V0SG9zdG5hbWUiLCAiZ2V0UG9ydCIsICJzZXRQb3J0IiwgImdldFBhdGhuYW1lIiwgInNldFBhdGhuYW1lIiwgImdldFNlYXJjaCIsICJzZXRTZWFyY2giLCAiZ2V0U2VhcmNoUGFyYW1zIiwgImdldEhhc2giLCAic2V0SGFzaCIsICJGdCIsICJob3N0bmFtZSIsICJzZWFyY2giLCAiVXQiLCAiTXQiLCAiY3JlYXRlT2JqZWN0VVJMIiwgIkR0IiwgInJldm9rZU9iamVjdFVSTCIsICJlIiwgInIiLCAidG9QcmltaXRpdmUiLCAibXciLCAiY29uZmlnIiwgImFzeW5jSXRlcmF0b3IiLCAidG9TdHJpbmdUYWciLCAidTMiLCAiUjIiLCAiTDIiLCAiYXJnIiwgIkUyIiwgIk8yIiwgIl9pbnZva2UiLCAiaTQiLCAiZjMiLCAibDMiLCAiX19hd2FpdCIsICJlNSIsICJvNCIsICJtZXRob2QiLCAiZGVsZWdhdGUiLCAiXzIiLCAic2VudCIsICJfc2VudCIsICJkaXNwYXRjaEV4Y2VwdGlvbiIsICJhYnJ1cHQiLCAicmVzdWx0TmFtZSIsICJuZXh0TG9jIiwgIkkyIiwgInRyeUxvYyIsICJjYXRjaExvYyIsICJmaW5hbGx5TG9jIiwgImFmdGVyTG9jIiwgInRyeUVudHJpZXMiLCAiVDIiLCAiY29tcGxldGlvbiIsICJyZXNldCIsICJpc05hTiIsICJkaXNwbGF5TmFtZSIsICJpc0dlbmVyYXRvckZ1bmN0aW9uIiwgIm1hcmsiLCAiYXdyYXAiLCAiYXN5bmMiLCAicmV2ZXJzZSIsICJuNCIsICJwcmV2IiwgInN0b3AiLCAicnZhbCIsICJjb21wbGV0ZSIsICJmaW5pc2giLCAiZGVsZWdhdGVZaWVsZCIsICJiYXNlIiwgImNyZWRlbnRpYWxzIiwgIndpa2lJZCIsICJqc29uIiwgIkZvcm1EYXRhIiwgImU2IiwgInNjcmlwdFBhdGgiLCAibG9jYWxTdG9yYWdlIiwgIldpa2lwbHVzX1NldHRpbmdzIiwgImxhbmd1YWdlIiwgImJyb3dzZXJMYW5ndWFnZSIsICJnZXRJdGVtIiwgImkxOG5EYXRhIiwgInNldEl0ZW0iLCAibG9hZExhbmd1YWdlIiwgInNlc3Npb25VcGRhdGVMb2ciLCAiX192ZXJzaW9uIiwgImluZm8iLCAidDAiLCAiUmVmZXJlbmNlRXJyb3IiLCAiUHJveHkiLCAiY29kZSIsICJkZWJ1ZyIsICJ0cmFuc2xhdGUiLCAiYWN0aW9uIiwgIm1ldGEiLCAiZm9ybWF0IiwgInRva2VucyIsICJjc3JmdG9rZW4iLCAidGl0bGUiLCAicmV2aXNpb25JZCIsICJwcm9wIiwgInJ2cHJvcCIsICJyZXZpZHMiLCAicGFnZUluZm9DYWNoZSIsICJ0aW1lc3RhbXAiLCAicmV2aWQiLCAidGl0bGVzIiwgInBhZ2VzIiwgInJldmlzaW9ucyIsICJzZWN0aW9uIiwgInRleHQiLCAicG9zdCIsICJwc3QiLCAiY29udGVudCIsICJlZGl0VG9rZW4iLCAiYWRkaXRpb25hbENvbmZpZyIsICJ0b2tlbiIsICJiYXNldGltZXN0YW1wIiwgImVkaXQiLCAid2FybmluZyIsICJnZXRQYWdlSW5mbyIsICJpc05ld1BhZ2UiLCAiZ2V0VGltZXN0YW1wIiwgImdldEVkaXRUb2tlbiIsICJpbml0ZWQiLCAibG9hZGVyIiwgInVzaW5nIiwgInVzZXIiLCAic2VjdGlvbkNhY2hlIiwgImdldFdpa2lUZXh0IiwgInBhcnNlV2lraVRleHQiLCAiY3JlYXRlb25seSIsICJpbml0IiwgIiQiLCAiYWRkQ2xhc3MiLCAiZmFkZUluIiwgIm9uIiwgInNsaWRlTGVmdCIsICJjaGlsZHJlbiIsICJmYWRlT3V0IiwgImVhY2giLCAiZGVsYXkiLCAiY3NzIiwgImFuaW1hdGUiLCAibGVmdCIsICJpbm5lcldpZHRoIiwgImlubmVySGVpZ2h0IiwgInRvcCIsICJzY3JvbGxUb3AiLCAiaHRtbCIsICJ3aWR0aCIsICJvbmNsb3NlIiwgIm9uYmVmb3JldW5sb2FkIiwgIm1vdXNlZG93biIsICJjbGllbnRYIiwgImNsaWVudFkiLCAib2Zmc2V0IiwgInVuYmluZCIsICJvZmYiLCAic2tpbiIsICJhdHRyIiwgImFkZEZ1bmN0aW9uQnV0dG9uIiwgInNlY3Rpb25OdW1iZXIiLCAidGFyZ2V0UGFnZU5hbWUiLCAiY3VycmVudFBhZ2VOYW1lIiwgImFmdGVyIiwgImNsb25lIiwgInNlY3Rpb25OYW1lIiwgImJlZm9yZSIsICJjbGFzcyIsICJzdW1tYXJ5IiwgIm9uQmFjayIsICJvblBhcnNlIiwgIm9uRWRpdCIsICJlc2NFeGl0IiwgInF1aWNrRWRpdFBhbmVsVmlzaWJsZSIsICJoaWRlUXVpY2tFZGl0UGFuZWwiLCAiaWQiLCAibWFyZ2luIiwgImNyZWF0ZURpYWxvZ0JveCIsICJ2YWwiLCAiaXNNaW5vckVkaXQiLCAiaXMiLCAicmVsb2FkIiwgImxvZyIsICJtZXNzYWdlIiwgImN0cmxLZXkiLCAid2hpY2giLCAic2hpZnRLZXkiLCAidHJpZ2dlciIsICJwcmV2ZW50RGVmYXVsdCIsICJzdG9wUHJvcGFnYXRpb24iLCAiY2xpY2siLCAib25TdWNjZXNzIiwgImZvcmNlT3ZlcndyaXRlIiwgImhpZGVTaW1wbGVSZWRpcmVjdFBhbmVsIiwgImU3IiwgImU4IiwgIm9uU3VibWl0IiwgInNldHRpbmdzIiwgImhpZGVTZXR0aW5nc1BhbmVsIiwgImFydGljbGVJZCIsICJ0NyIsICJ1c2VyR3JvdXBzIiwgImlzQXJ0aWNsZSIsICJfV2lraXBsdXNQYWdlcyIsICJsYXRlc3RSZXZpc2lvbklkIiwgImdldExhdGVzdFJldmlzaW9uSWRGb3JQYWdlIiwgImdldFNldHRpbmciLCAic2VjdGlvblRhcmdldE5hbWUiLCAic3VjY2VzcyIsICJjbGVhclRpbWVvdXQiLCAiZW1wdHkiLCAic2hvd1F1aWNrRWRpdFBhbmVsIiwgInQ4IiwgInQ5IiwgInQxMCIsICJ0YWdzIiwgIm1pbm9yIiwgIm5vdG1pbm9yIiwgInNob3dTaW1wbGVSZWRpcmVjdFBhbmVsIiwgImFydGljbGVQYXRoIiwgInNob3dTZXR0aW5nc1BhbmVsIiwgImluc2VydFRvcFF1aWNrRWRpdEVudHJ5IiwgImluc2VydFNlY3Rpb25RdWlja0VkaXRFbnRyaWVzIiwgImluc2VydExpbmtFZGl0RW50cmllcyIsICJpbnNlcnRTaW1wbGVSZWRpcmVjdEJ1dHRvbiIsICJpbnNlcnRTZXR0aW5nc1BhbmVsQnV0dG9uIiwgImJpbmRQcmVsb2FkRXZlbnRzIiwgIndnQWN0aW9uIiwgIndnSXNBcnRpY2xlIiwgImlzVmVFbmFibGUiLCAib3B0aW9ucyIsICJfcmVmMiIsICJfYXN5bmNUb0dlbmVyYXRvciJdCn0K +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC12OC12ZXJzaW9uLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItYnl0ZS1sZW5ndGguanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItaXMtZGV0YWNoZWQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXktYnVmZmVyLmRldGFjaGVkLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hdGgtdHJ1bmMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZS5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1ub3QtZGV0YWNoZWQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLW5vZGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4tbm9kZS1tb2R1bGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJ1Y3R1cmVkLWNsb25lLXByb3Blci10cmFuc2Zlci5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RldGFjaC10cmFuc2ZlcmFibGUuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItdHJhbnNmZXIuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXktYnVmZmVyLnRyYW5zZmVyLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LWJ1ZmZlci50cmFuc2Zlci10by1maXhlZC1sZW5ndGguanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aC5qcyIsICJub2RlX21vZHVsZXMvLnBucG0vY29yZS1qc0AzLjM4LjAvbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuZGVsZXRlLmpzIiwgIm5vZGVfbW9kdWxlcy8ucG5wbS9jb3JlLWpzQDMuMzguMC9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5oYXMuanMiLCAibm9kZV9tb2R1bGVzLy5wbnBtL2NvcmUtanNAMy4zOC4wL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLnNpemUuanMiLCAic3JjL1dpa2lwbHVzL21vZHVsZXMvY29yZS5qcyIsICJzcmMvV2lraXBsdXMvV2lraXBsdXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIERldGVjdCBJRTgncyBpbmNvbXBsZXRlIGRlZmluZVByb3BlcnR5IGltcGxlbWVudGF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgMSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSlbMV0gIT09IDc7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZnVuY3Rpb24tcHJvdG90eXBlLWJpbmQgLS0gc2FmZVxuICB2YXIgdGVzdCA9IChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pLmJpbmQoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiB0eXBlb2YgdGVzdCAhPSAnZnVuY3Rpb24nIHx8IHRlc3QuaGFzT3duUHJvcGVydHkoJ3Byb3RvdHlwZScpO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90XG52YXIgZG9jdW1lbnRBbGwgPSB0eXBlb2YgZG9jdW1lbnQgPT0gJ29iamVjdCcgJiYgZG9jdW1lbnQuYWxsO1xuXG4vLyBgSXNDYWxsYWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWQgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIGRvY3VtZW50QWxsID09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50QWxsICE9PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PSAnZnVuY3Rpb24nIHx8IGFyZ3VtZW50ID09PSBkb2N1bWVudEFsbDtcbn0gOiBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PSAnZnVuY3Rpb24nO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXQpKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiAkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZ2xvYmFsLXRoaXMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKSB8fFxuICBjaGVjayh0eXBlb2YgdGhpcyA9PSAnb2JqZWN0JyAmJiB0aGlzKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIGtleSwgeyB2YWx1ZTogdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsVGhpc1trZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gbW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxUaGlzW1NIQVJFRF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoU0hBUkVELCB7fSk7XG5cbihzdG9yZS52ZXJzaW9ucyB8fCAoc3RvcmUudmVyc2lvbnMgPSBbXSkpLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zOC4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjQgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zOC4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbFRoaXMuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPT0gNztcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxUaGlzW25hbWVzcGFjZV0pIDogZ2xvYmFsVGhpc1tuYW1lc3BhY2VdICYmIGdsb2JhbFRoaXNbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxudmFyIG5hdmlnYXRvciA9IGdsb2JhbFRoaXMubmF2aWdhdG9yO1xudmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVzZXJBZ2VudCA/IFN0cmluZyh1c2VyQWdlbnQpIDogJyc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsVGhpcy5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG52YXIgJFN0cmluZyA9IGdsb2JhbFRoaXMuU3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnc3ltYm9sIGRldGVjdGlvbicpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIC8vIG5iOiBEbyBub3QgY2FsbCBgU3RyaW5nYCBkaXJlY3RseSB0byBhdm9pZCB0aGlzIGJlaW5nIG9wdGltaXplZCBvdXQgdG8gYHN5bWJvbCsnJ2Agd2hpY2ggd2lsbCxcbiAgLy8gb2YgY291cnNlLCBmYWlsLlxuICByZXR1cm4gISRTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdPYmplY3QnO1xuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQoZnVuYykgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgT3JkaW5hcnlUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAocHJlZiA9PT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBTeW1ib2wgPSBnbG9iYWxUaGlzLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcblxuLy8gYFRvUHJvcGVydHlLZXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIga2V5ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdzdHJpbmcnKTtcbiAgcmV0dXJuIGlzU3ltYm9sKGtleSkgPyBrZXkgOiBrZXkgKyAnJztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0ge307XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWxUaGlzLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBzdG9yZS5zZXQoaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5nZXQoaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuaGFzKGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkuKiQvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLmdldCwgbmFtZSwgeyBnZXR0ZXI6IHRydWUgfSk7XG4gIGlmIChkZXNjcmlwdG9yLnNldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5zZXQsIG5hbWUsIHsgc2V0dGVyOiB0cnVlIH0pO1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkuZih0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbikge1xuICAvLyBOYXNob3JuIGJ1ZzpcbiAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTEyOFxuICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xMTMwXG4gIGlmIChjbGFzc29mUmF3KGZuKSA9PT0gJ0Z1bmN0aW9uJykgcmV0dXJuIHVuY3VycnlUaGlzKGZuKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCBtZXRob2QpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG4gICAgcmV0dXJuIHVuY3VycnlUaGlzKGFDYWxsYWJsZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwga2V5KVttZXRob2RdKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciB1bmN1cnJ5VGhpc0FjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3NvcicpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyIEFycmF5QnVmZmVyID0gZ2xvYmFsVGhpcy5BcnJheUJ1ZmZlcjtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWxUaGlzLlR5cGVFcnJvcjtcblxuLy8gSW5jbHVkZXNcbi8vIC0gUGVyZm9ybSA/IFJlcXVpcmVJbnRlcm5hbFNsb3QoTywgW1tBcnJheUJ1ZmZlckRhdGFdXSkuXG4vLyAtIElmIElzU2hhcmVkQXJyYXlCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLlxubW9kdWxlLmV4cG9ydHMgPSBBcnJheUJ1ZmZlciAmJiB1bmN1cnJ5VGhpc0FjY2Vzc29yKEFycmF5QnVmZmVyLnByb3RvdHlwZSwgJ2J5dGVMZW5ndGgnLCAnZ2V0JykgfHwgZnVuY3Rpb24gKE8pIHtcbiAgaWYgKGNsYXNzb2YoTykgIT09ICdBcnJheUJ1ZmZlcicpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5QnVmZmVyIGV4cGVjdGVkJyk7XG4gIHJldHVybiBPLmJ5dGVMZW5ndGg7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZScpO1xudmFyIGFycmF5QnVmZmVyQnl0ZUxlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItYnl0ZS1sZW5ndGgnKTtcblxudmFyIEFycmF5QnVmZmVyID0gZ2xvYmFsVGhpcy5BcnJheUJ1ZmZlcjtcbnZhciBBcnJheUJ1ZmZlclByb3RvdHlwZSA9IEFycmF5QnVmZmVyICYmIEFycmF5QnVmZmVyLnByb3RvdHlwZTtcbnZhciBzbGljZSA9IEFycmF5QnVmZmVyUHJvdG90eXBlICYmIHVuY3VycnlUaGlzKEFycmF5QnVmZmVyUHJvdG90eXBlLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTykge1xuICBpZiAoYXJyYXlCdWZmZXJCeXRlTGVuZ3RoKE8pICE9PSAwKSByZXR1cm4gZmFsc2U7XG4gIGlmICghc2xpY2UpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBzbGljZShPLCAwLCAwKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xudmFyIGlzRGV0YWNoZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLWlzLWRldGFjaGVkJyk7XG5cbnZhciBBcnJheUJ1ZmZlclByb3RvdHlwZSA9IEFycmF5QnVmZmVyLnByb3RvdHlwZTtcblxuaWYgKERFU0NSSVBUT1JTICYmICEoJ2RldGFjaGVkJyBpbiBBcnJheUJ1ZmZlclByb3RvdHlwZSkpIHtcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKEFycmF5QnVmZmVyUHJvdG90eXBlLCAnZGV0YWNoZWQnLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gZGV0YWNoZWQoKSB7XG4gICAgICByZXR1cm4gaXNEZXRhY2hlZCh0aGlzKTtcbiAgICB9XG4gIH0pO1xufVxuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBOYXNob3JuIH4gSkRLOCBidWdcbnZhciBOQVNIT1JOX0JVRyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiAhJHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICEkT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6ICRPYmplY3QoaXQpO1xufSA6ICRPYmplY3Q7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzT3duKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYsIE8sIFApLCBPW1BdKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMuZW51bWVyYWJsZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSBtYWtlQnVpbHRJbih2YWx1ZSwgbmFtZSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lR2xvYmFsUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy51bnNhZmUpIGRlbGV0ZSBPW2tleV07XG4gICAgICBlbHNlIGlmIChPW2tleV0pIHNpbXBsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiAhb3B0aW9ucy5ub25Db25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogIW9wdGlvbnMubm9uV3JpdGFibGVcbiAgICB9KTtcbiAgfSByZXR1cm4gTztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgTWF0aC50cnVuY2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgudHJ1bmNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLXRydW5jIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTWF0aC50cnVuYyB8fCBmdW5jdGlvbiB0cnVuYyh4KSB7XG4gIHZhciBuID0gK3g7XG4gIHJldHVybiAobiA+IDAgPyBmbG9vciA6IGNlaWwpKG4pO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdHJ1bmMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC10cnVuYycpO1xuXG4vLyBgVG9JbnRlZ2VyT3JJbmZpbml0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBudW1iZXIgPSArYXJndW1lbnQ7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiBudW1iZXIgIT09IG51bWJlciB8fCBudW1iZXIgPT09IDAgPyAwIDogdHJ1bmMobnVtYmVyKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGxlbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpO1xuICByZXR1cm4gbGVuID4gMCA/IG1pbihsZW4sIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBMZW5ndGhPZkFycmF5TGlrZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxlbmd0aG9mYXJyYXlsaWtlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHRvTGVuZ3RoKG9iai5sZW5ndGgpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT09IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzT3duKGhpZGRlbktleXMsIGtleSkgJiYgaGFzT3duKE8sIGtleSkgJiYgcHVzaChyZXN1bHQsIGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXNPd24oTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcHVzaChyZXN1bHQsIGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQoa2V5cywgZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlLCBleGNlcHRpb25zKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzT3duKHRhcmdldCwga2V5KSAmJiAhKGV4Y2VwdGlvbnMgJiYgaGFzT3duKGV4Y2VwdGlvbnMsIGtleSkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgfVxuICB9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IGlzQ2FsbGFibGUoZGV0ZWN0aW9uKSA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgICAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLmRvbnRDYWxsR2V0U2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuICBvcHRpb25zLm5hbWUgICAgICAgICAgIC0gdGhlIC5uYW1lIG9mIHRoZSBmdW5jdGlvbiBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUga2V5XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpcztcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzW1RBUkdFVF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpc1tUQVJHRVRdICYmIGdsb2JhbFRoaXNbVEFSR0VUXS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5kb250Q2FsbEdldFNldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICBkZWZpbmVCdWlsdEluKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG52YXIgJFJhbmdlRXJyb3IgPSBSYW5nZUVycm9yO1xuXG4vLyBgVG9JbmRleGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW5kZXhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgdmFyIG51bWJlciA9IHRvSW50ZWdlck9ySW5maW5pdHkoaXQpO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgobnVtYmVyKTtcbiAgaWYgKG51bWJlciAhPT0gbGVuZ3RoKSB0aHJvdyBuZXcgJFJhbmdlRXJyb3IoJ1dyb25nIGxlbmd0aCBvciBpbmRleCcpO1xuICByZXR1cm4gbGVuZ3RoO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgaXNEZXRhY2hlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItaXMtZGV0YWNoZWQnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc0RldGFjaGVkKGl0KSkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0FycmF5QnVmZmVyIGlzIGRldGFjaGVkJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogZ2xvYmFsIEJ1biwgRGVubyAtLSBkZXRlY3Rpb24gKi9cbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciB1c2VyQWdlbnRTdGFydHNXaXRoID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gdXNlckFnZW50LnNsaWNlKDAsIHN0cmluZy5sZW5ndGgpID09PSBzdHJpbmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IChmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2VyQWdlbnRTdGFydHNXaXRoKCdCdW4vJykpIHJldHVybiAnQlVOJztcbiAgaWYgKHVzZXJBZ2VudFN0YXJ0c1dpdGgoJ0Nsb3VkZmxhcmUtV29ya2VycycpKSByZXR1cm4gJ0NMT1VERkxBUkUnO1xuICBpZiAodXNlckFnZW50U3RhcnRzV2l0aCgnRGVuby8nKSkgcmV0dXJuICdERU5PJztcbiAgaWYgKHVzZXJBZ2VudFN0YXJ0c1dpdGgoJ05vZGUuanMvJykpIHJldHVybiAnTk9ERSc7XG4gIGlmIChnbG9iYWxUaGlzLkJ1biAmJiB0eXBlb2YgQnVuLnZlcnNpb24gPT0gJ3N0cmluZycpIHJldHVybiAnQlVOJztcbiAgaWYgKGdsb2JhbFRoaXMuRGVubyAmJiB0eXBlb2YgRGVuby52ZXJzaW9uID09ICdvYmplY3QnKSByZXR1cm4gJ0RFTk8nO1xuICBpZiAoY2xhc3NvZihnbG9iYWxUaGlzLnByb2Nlc3MpID09PSAncHJvY2VzcycpIHJldHVybiAnTk9ERSc7XG4gIGlmIChnbG9iYWxUaGlzLndpbmRvdyAmJiBnbG9iYWxUaGlzLmRvY3VtZW50KSByZXR1cm4gJ0JST1dTRVInO1xuICByZXR1cm4gJ1JFU1QnO1xufSkoKTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgRU5WSVJPTk1FTlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFTlZJUk9OTUVOVCA9PT0gJ05PREUnO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1ub2RlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKElTX05PREUpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXRCdWlsdGluTW9kdWxlKG5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICB0cnkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIHNhZmVcbiAgICAgIHJldHVybiBGdW5jdGlvbigncmV0dXJuIHJlcXVpcmUoXCInICsgbmFtZSArICdcIiknKSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgVjggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbicpO1xudmFyIEVOVklST05NRU5UID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50Jyk7XG5cbnZhciBzdHJ1Y3R1cmVkQ2xvbmUgPSBnbG9iYWxUaGlzLnN0cnVjdHVyZWRDbG9uZTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIXN0cnVjdHVyZWRDbG9uZSAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBwcmV2ZW50IFY4IEFycmF5QnVmZmVyRGV0YWNoaW5nIHByb3RlY3RvciBjZWxsIGludmFsaWRhdGlvbiBhbmQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxuICBpZiAoKEVOVklST05NRU5UID09PSAnREVOTycgJiYgVjggPiA5MikgfHwgKEVOVklST05NRU5UID09PSAnTk9ERScgJiYgVjggPiA5NCkgfHwgKEVOVklST05NRU5UID09PSAnQlJPV1NFUicgJiYgVjggPiA5NykpIHJldHVybiBmYWxzZTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig4KTtcbiAgdmFyIGNsb25lID0gc3RydWN0dXJlZENsb25lKGJ1ZmZlciwgeyB0cmFuc2ZlcjogW2J1ZmZlcl0gfSk7XG4gIHJldHVybiBidWZmZXIuYnl0ZUxlbmd0aCAhPT0gMCB8fCBjbG9uZS5ieXRlTGVuZ3RoICE9PSA4O1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBnZXRCdWlsdEluTm9kZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4tbm9kZS1tb2R1bGUnKTtcbnZhciBQUk9QRVJfU1RSVUNUVVJFRF9DTE9ORV9UUkFOU0ZFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJ1Y3R1cmVkLWNsb25lLXByb3Blci10cmFuc2ZlcicpO1xuXG52YXIgc3RydWN0dXJlZENsb25lID0gZ2xvYmFsVGhpcy5zdHJ1Y3R1cmVkQ2xvbmU7XG52YXIgJEFycmF5QnVmZmVyID0gZ2xvYmFsVGhpcy5BcnJheUJ1ZmZlcjtcbnZhciAkTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWxUaGlzLk1lc3NhZ2VDaGFubmVsO1xudmFyIGRldGFjaCA9IGZhbHNlO1xudmFyIFdvcmtlclRocmVhZHMsIGNoYW5uZWwsIGJ1ZmZlciwgJGRldGFjaDtcblxuaWYgKFBST1BFUl9TVFJVQ1RVUkVEX0NMT05FX1RSQU5TRkVSKSB7XG4gIGRldGFjaCA9IGZ1bmN0aW9uICh0cmFuc2ZlcmFibGUpIHtcbiAgICBzdHJ1Y3R1cmVkQ2xvbmUodHJhbnNmZXJhYmxlLCB7IHRyYW5zZmVyOiBbdHJhbnNmZXJhYmxlXSB9KTtcbiAgfTtcbn0gZWxzZSBpZiAoJEFycmF5QnVmZmVyKSB0cnkge1xuICBpZiAoISRNZXNzYWdlQ2hhbm5lbCkge1xuICAgIFdvcmtlclRocmVhZHMgPSBnZXRCdWlsdEluTm9kZU1vZHVsZSgnd29ya2VyX3RocmVhZHMnKTtcbiAgICBpZiAoV29ya2VyVGhyZWFkcykgJE1lc3NhZ2VDaGFubmVsID0gV29ya2VyVGhyZWFkcy5NZXNzYWdlQ2hhbm5lbDtcbiAgfVxuXG4gIGlmICgkTWVzc2FnZUNoYW5uZWwpIHtcbiAgICBjaGFubmVsID0gbmV3ICRNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIGJ1ZmZlciA9IG5ldyAkQXJyYXlCdWZmZXIoMik7XG5cbiAgICAkZGV0YWNoID0gZnVuY3Rpb24gKHRyYW5zZmVyYWJsZSkge1xuICAgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZShudWxsLCBbdHJhbnNmZXJhYmxlXSk7XG4gICAgfTtcblxuICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA9PT0gMikge1xuICAgICAgJGRldGFjaChidWZmZXIpO1xuICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoID09PSAwKSBkZXRhY2ggPSAkZGV0YWNoO1xuICAgIH1cbiAgfVxufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRldGFjaDtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHVuY3VycnlUaGlzQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWFjY2Vzc29yJyk7XG52YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleCcpO1xudmFyIG5vdERldGFjaGVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1ub3QtZGV0YWNoZWQnKTtcbnZhciBhcnJheUJ1ZmZlckJ5dGVMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLWJ5dGUtbGVuZ3RoJyk7XG52YXIgZGV0YWNoVHJhbnNmZXJhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RldGFjaC10cmFuc2ZlcmFibGUnKTtcbnZhciBQUk9QRVJfU1RSVUNUVVJFRF9DTE9ORV9UUkFOU0ZFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJ1Y3R1cmVkLWNsb25lLXByb3Blci10cmFuc2ZlcicpO1xuXG52YXIgc3RydWN0dXJlZENsb25lID0gZ2xvYmFsVGhpcy5zdHJ1Y3R1cmVkQ2xvbmU7XG52YXIgQXJyYXlCdWZmZXIgPSBnbG9iYWxUaGlzLkFycmF5QnVmZmVyO1xudmFyIERhdGFWaWV3ID0gZ2xvYmFsVGhpcy5EYXRhVmlldztcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBBcnJheUJ1ZmZlclByb3RvdHlwZSA9IEFycmF5QnVmZmVyLnByb3RvdHlwZTtcbnZhciBEYXRhVmlld1Byb3RvdHlwZSA9IERhdGFWaWV3LnByb3RvdHlwZTtcbnZhciBzbGljZSA9IHVuY3VycnlUaGlzKEFycmF5QnVmZmVyUHJvdG90eXBlLnNsaWNlKTtcbnZhciBpc1Jlc2l6YWJsZSA9IHVuY3VycnlUaGlzQWNjZXNzb3IoQXJyYXlCdWZmZXJQcm90b3R5cGUsICdyZXNpemFibGUnLCAnZ2V0Jyk7XG52YXIgbWF4Qnl0ZUxlbmd0aCA9IHVuY3VycnlUaGlzQWNjZXNzb3IoQXJyYXlCdWZmZXJQcm90b3R5cGUsICdtYXhCeXRlTGVuZ3RoJywgJ2dldCcpO1xudmFyIGdldEludDggPSB1bmN1cnJ5VGhpcyhEYXRhVmlld1Byb3RvdHlwZS5nZXRJbnQ4KTtcbnZhciBzZXRJbnQ4ID0gdW5jdXJyeVRoaXMoRGF0YVZpZXdQcm90b3R5cGUuc2V0SW50OCk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFBST1BFUl9TVFJVQ1RVUkVEX0NMT05FX1RSQU5TRkVSIHx8IGRldGFjaFRyYW5zZmVyYWJsZSkgJiYgZnVuY3Rpb24gKGFycmF5QnVmZmVyLCBuZXdMZW5ndGgsIHByZXNlcnZlUmVzaXphYmlsaXR5KSB7XG4gIHZhciBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXJCeXRlTGVuZ3RoKGFycmF5QnVmZmVyKTtcbiAgdmFyIG5ld0J5dGVMZW5ndGggPSBuZXdMZW5ndGggPT09IHVuZGVmaW5lZCA/IGJ5dGVMZW5ndGggOiB0b0luZGV4KG5ld0xlbmd0aCk7XG4gIHZhciBmaXhlZExlbmd0aCA9ICFpc1Jlc2l6YWJsZSB8fCAhaXNSZXNpemFibGUoYXJyYXlCdWZmZXIpO1xuICB2YXIgbmV3QnVmZmVyO1xuICBub3REZXRhY2hlZChhcnJheUJ1ZmZlcik7XG4gIGlmIChQUk9QRVJfU1RSVUNUVVJFRF9DTE9ORV9UUkFOU0ZFUikge1xuICAgIGFycmF5QnVmZmVyID0gc3RydWN0dXJlZENsb25lKGFycmF5QnVmZmVyLCB7IHRyYW5zZmVyOiBbYXJyYXlCdWZmZXJdIH0pO1xuICAgIGlmIChieXRlTGVuZ3RoID09PSBuZXdCeXRlTGVuZ3RoICYmIChwcmVzZXJ2ZVJlc2l6YWJpbGl0eSB8fCBmaXhlZExlbmd0aCkpIHJldHVybiBhcnJheUJ1ZmZlcjtcbiAgfVxuICBpZiAoYnl0ZUxlbmd0aCA+PSBuZXdCeXRlTGVuZ3RoICYmICghcHJlc2VydmVSZXNpemFiaWxpdHkgfHwgZml4ZWRMZW5ndGgpKSB7XG4gICAgbmV3QnVmZmVyID0gc2xpY2UoYXJyYXlCdWZmZXIsIDAsIG5ld0J5dGVMZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHZhciBvcHRpb25zID0gcHJlc2VydmVSZXNpemFiaWxpdHkgJiYgIWZpeGVkTGVuZ3RoICYmIG1heEJ5dGVMZW5ndGggPyB7IG1heEJ5dGVMZW5ndGg6IG1heEJ5dGVMZW5ndGgoYXJyYXlCdWZmZXIpIH0gOiB1bmRlZmluZWQ7XG4gICAgbmV3QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKG5ld0J5dGVMZW5ndGgsIG9wdGlvbnMpO1xuICAgIHZhciBhID0gbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyKTtcbiAgICB2YXIgYiA9IG5ldyBEYXRhVmlldyhuZXdCdWZmZXIpO1xuICAgIHZhciBjb3B5TGVuZ3RoID0gbWluKG5ld0J5dGVMZW5ndGgsIGJ5dGVMZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29weUxlbmd0aDsgaSsrKSBzZXRJbnQ4KGIsIGksIGdldEludDgoYSwgaSkpO1xuICB9XG4gIGlmICghUFJPUEVSX1NUUlVDVFVSRURfQ0xPTkVfVFJBTlNGRVIpIGRldGFjaFRyYW5zZmVyYWJsZShhcnJheUJ1ZmZlcik7XG4gIHJldHVybiBuZXdCdWZmZXI7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICR0cmFuc2ZlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdHJhbnNmZXInKTtcblxuLy8gYEFycmF5QnVmZmVyLnByb3RvdHlwZS50cmFuc2ZlcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtYXJyYXlidWZmZXItdHJhbnNmZXIvI3NlYy1hcnJheWJ1ZmZlci5wcm90b3R5cGUudHJhbnNmZXJcbmlmICgkdHJhbnNmZXIpICQoeyB0YXJnZXQ6ICdBcnJheUJ1ZmZlcicsIHByb3RvOiB0cnVlIH0sIHtcbiAgdHJhbnNmZXI6IGZ1bmN0aW9uIHRyYW5zZmVyKCkge1xuICAgIHJldHVybiAkdHJhbnNmZXIodGhpcywgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIH1cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICR0cmFuc2ZlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdHJhbnNmZXInKTtcblxuLy8gYEFycmF5QnVmZmVyLnByb3RvdHlwZS50cmFuc2ZlclRvRml4ZWRMZW5ndGhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWFycmF5YnVmZmVyLXRyYW5zZmVyLyNzZWMtYXJyYXlidWZmZXIucHJvdG90eXBlLnRyYW5zZmVydG9maXhlZGxlbmd0aFxuaWYgKCR0cmFuc2ZlcikgJCh7IHRhcmdldDogJ0FycmF5QnVmZmVyJywgcHJvdG86IHRydWUgfSwge1xuICB0cmFuc2ZlclRvRml4ZWRMZW5ndGg6IGZ1bmN0aW9uIHRyYW5zZmVyVG9GaXhlZExlbmd0aCgpIHtcbiAgICByZXR1cm4gJHRyYW5zZmVyKHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQsIGZhbHNlKTtcbiAgfVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciB0ZXN0ID0ge307XG5cbnRlc3RbVE9fU1RSSU5HX1RBR10gPSAneic7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSAnW29iamVjdCB6XSc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gRVM2KyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2Bcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8gY2xhc3NvZlJhdyA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgdGFnLCByZXN1bHQ7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mICh0YWcgPSB0cnlHZXQoTyA9ICRPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGNsYXNzb2YoYXJndW1lbnQpID09PSAnU3ltYm9sJykgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcnKTtcbiAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc2VkLCByZXF1aXJlZCkge1xuICBpZiAocGFzc2VkIDwgcmVxdWlyZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xuICByZXR1cm4gcGFzc2VkO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG5cbnZhciAkVVJMU2VhcmNoUGFyYW1zID0gVVJMU2VhcmNoUGFyYW1zO1xudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9ICRVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGFwcGVuZCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5hcHBlbmQpO1xudmFyICRkZWxldGUgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGVbJ2RlbGV0ZSddKTtcbnZhciBmb3JFYWNoID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmZvckVhY2gpO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciBwYXJhbXMgPSBuZXcgJFVSTFNlYXJjaFBhcmFtcygnYT0xJmE9MiZiPTMnKTtcblxucGFyYW1zWydkZWxldGUnXSgnYScsIDEpO1xuLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG5wYXJhbXNbJ2RlbGV0ZSddKCdiJywgdW5kZWZpbmVkKTtcblxuaWYgKHBhcmFtcyArICcnICE9PSAnYT0yJykge1xuICBkZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ2RlbGV0ZScsIGZ1bmN0aW9uIChuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAobGVuZ3RoICYmICR2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJGRlbGV0ZSh0aGlzLCBuYW1lKTtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24gKHYsIGspIHsgLy8gYWxzbyB2YWxpZGF0ZXMgYHRoaXNgXG4gICAgICBwdXNoKGVudHJpZXMsIHsga2V5OiBrLCB2YWx1ZTogdiB9KTtcbiAgICB9KTtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChsZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSB0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgdmFsdWUgPSB0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGRpbmRleCA9IDA7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgdmFyIGVudHJpZXNMZW5ndGggPSBlbnRyaWVzLmxlbmd0aDtcbiAgICB2YXIgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllc0xlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgaWYgKGZvdW5kIHx8IGVudHJ5LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgJGRlbGV0ZSh0aGlzLCBlbnRyeS5rZXkpO1xuICAgICAgfSBlbHNlIGRpbmRleCsrO1xuICAgIH1cbiAgICB3aGlsZSAoZGluZGV4IDwgZW50cmllc0xlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2RpbmRleCsrXTtcbiAgICAgIGlmICghKGVudHJ5LmtleSA9PT0ga2V5ICYmIGVudHJ5LnZhbHVlID09PSB2YWx1ZSkpIGFwcGVuZCh0aGlzLCBlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTtcbiAgICB9XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSwgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcblxudmFyICRVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXM7XG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gJFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgZ2V0QWxsID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmdldEFsbCk7XG52YXIgJGhhcyA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5oYXMpO1xudmFyIHBhcmFtcyA9IG5ldyAkVVJMU2VhcmNoUGFyYW1zKCdhPTEnKTtcblxuLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG5pZiAocGFyYW1zLmhhcygnYScsIDIpIHx8ICFwYXJhbXMuaGFzKCdhJywgdW5kZWZpbmVkKSkge1xuICBkZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ2hhcycsIGZ1bmN0aW9uIGhhcyhuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAobGVuZ3RoICYmICR2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJGhhcyh0aGlzLCBuYW1lKTtcbiAgICB2YXIgdmFsdWVzID0gZ2V0QWxsKHRoaXMsIG5hbWUpOyAvLyBhbHNvIHZhbGlkYXRlcyBgdGhpc2BcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChsZW5ndGgsIDEpO1xuICAgIHZhciB2YWx1ZSA9IHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodmFsdWVzW2luZGV4KytdID09PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgfSByZXR1cm4gZmFsc2U7XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSwgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGRlZmluZUJ1aWx0SW5BY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3InKTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9IFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5mb3JFYWNoKTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc2l6ZWAgZ2V0dGVyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3VybC9wdWxsLzczNFxuaWYgKERFU0NSSVBUT1JTICYmICEoJ3NpemUnIGluIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSkpIHtcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBzaXplKCkge1xuICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24gKCkgeyBjb3VudCsrOyB9KTtcbiAgICAgIHJldHVybiBjb3VudDtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1ub2NoZWNrXG4oZnVuY3Rpb24gV2lraXBsdXMoKSB7XG5cdC8qISBXaWtpcGx1cyAtIDQuMC4xMSB8IEVyaWRhbnVzIFNvcmEgKOWmueepuumFsSkgfCBDQy1CWS1TQS00LjAgPGh0dHBzOi8vcXdiay5jYy9IOkNDLUJZLVNBLTQuMD4gKi9cblx0dmFyIHQgPSB7XG5cdFx0XHQ1MDk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg1KSxcblx0XHRcdFx0XHRvID0gcigzNjkxKSxcblx0XHRcdFx0XHRpID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmIChuKHQpKSByZXR1cm4gdDtcblx0XHRcdFx0XHR0aHJvdyBuZXcgaShvKHQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDI2NTU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5NDI5KSxcblx0XHRcdFx0XHRvID0gcigzNjkxKSxcblx0XHRcdFx0XHRpID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmIChuKHQpKSByZXR1cm4gdDtcblx0XHRcdFx0XHR0aHJvdyBuZXcgaShvKHQpICsgJyBpcyBub3QgYSBjb25zdHJ1Y3RvcicpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDk5NDU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzOTE0KS5oYXM7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG4odCksIHQ7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzU1MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODUpLFxuXHRcdFx0XHRcdG8gPSBTdHJpbmcsXG5cdFx0XHRcdFx0aSA9IFR5cGVFcnJvcjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRpZiAoJ29iamVjdCcgPT0gdHlwZW9mIHQgfHwgbih0KSkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IGkoXCJDYW4ndCBzZXQgXCIgKyBvKHQpICsgJyBhcyBhIHByb3RvdHlwZScpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDczNzA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig0MjAxKSxcblx0XHRcdFx0XHRvID0gcig1MzkxKSxcblx0XHRcdFx0XHRpID0gcigyNTYwKS5mLFxuXHRcdFx0XHRcdGEgPSBuKCd1bnNjb3BhYmxlcycpLFxuXHRcdFx0XHRcdHUgPSBBcnJheS5wcm90b3R5cGU7XG5cdFx0XHRcdHZvaWQgMCA9PT0gdVthXSAmJiBpKHUsIGEsIHtjb25maWd1cmFibGU6ICEwLCB2YWx1ZTogbyhudWxsKX0pLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dVthXVt0XSA9ICEwO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDE1MTQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3MzApLmNoYXJBdDtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gZSArIChyID8gbih0LCBlKS5sZW5ndGggOiAxKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3Njc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjIyKSxcblx0XHRcdFx0XHRvID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdGlmIChuKGUsIHQpKSByZXR1cm4gdDtcblx0XHRcdFx0XHR0aHJvdyBuZXcgbygnSW5jb3JyZWN0IGludm9jYXRpb24nKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1MDI3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODk5OSksXG5cdFx0XHRcdFx0byA9IFN0cmluZyxcblx0XHRcdFx0XHRpID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmIChuKHQpKSByZXR1cm4gdDtcblx0XHRcdFx0XHR0aHJvdyBuZXcgaShvKHQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MTY1NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2ODkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgQXJyYXlCdWZmZXIpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gbmV3IEFycmF5QnVmZmVyKDgpO1xuXHRcdFx0XHRcdFx0T2JqZWN0LmlzRXh0ZW5zaWJsZSh0KSAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgJ2EnLCB7dmFsdWU6IDh9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDc2MTI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyOTYwKS5mb3JFYWNoLFxuXHRcdFx0XHRcdG8gPSByKDY4MzQpKCdmb3JFYWNoJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG9cblx0XHRcdFx0XHQ/IFtdLmZvckVhY2hcblx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuKHRoaXMsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MTA1NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQwNzEpLFxuXHRcdFx0XHRcdG8gPSByKDI2MTUpLFxuXHRcdFx0XHRcdGkgPSByKDY5MCksXG5cdFx0XHRcdFx0YSA9IHIoMTIyOCksXG5cdFx0XHRcdFx0dSA9IHIoMzI5MiksXG5cdFx0XHRcdFx0YyA9IHIoOTQyOSksXG5cdFx0XHRcdFx0cyA9IHIoNjMxMCksXG5cdFx0XHRcdFx0ZiA9IHIoNjUyMiksXG5cdFx0XHRcdFx0bCA9IHIoNTE4NSksXG5cdFx0XHRcdFx0cCA9IHIoMTY2NCksXG5cdFx0XHRcdFx0aCA9IEFycmF5O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlID0gaSh0KSxcblx0XHRcdFx0XHRcdHIgPSBjKHRoaXMpLFxuXHRcdFx0XHRcdFx0diA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0XHRcdFx0XHRkID0gdiA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDAsXG5cdFx0XHRcdFx0XHR5ID0gdm9pZCAwICE9PSBkO1xuXHRcdFx0XHRcdHkgJiYgKGQgPSBuKGQsIHYgPiAyID8gYXJndW1lbnRzWzJdIDogdm9pZCAwKSk7XG5cdFx0XHRcdFx0dmFyIGcsXG5cdFx0XHRcdFx0XHRtLFxuXHRcdFx0XHRcdFx0Yixcblx0XHRcdFx0XHRcdHcsXG5cdFx0XHRcdFx0XHR4LFxuXHRcdFx0XHRcdFx0ayxcblx0XHRcdFx0XHRcdFMgPSBwKGUpLFxuXHRcdFx0XHRcdFx0RSA9IDA7XG5cdFx0XHRcdFx0aWYgKCFTIHx8ICh0aGlzID09PSBoICYmIHUoUykpKVxuXHRcdFx0XHRcdFx0Zm9yIChnID0gcyhlKSwgbSA9IHIgPyBuZXcgdGhpcyhnKSA6IGgoZyk7IGcgPiBFOyBFKyspIChrID0geSA/IGQoZVtFXSwgRSkgOiBlW0VdKSwgZihtLCBFLCBrKTtcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRmb3IgKHggPSAodyA9IGwoZSwgUykpLm5leHQsIG0gPSByID8gbmV3IHRoaXMoKSA6IFtdOyAhKGIgPSBvKHgsIHcpKS5kb25lOyBFKyspXG5cdFx0XHRcdFx0XHRcdChrID0geSA/IGEodywgZCwgW2IudmFsdWUsIEVdLCAhMCkgOiBiLnZhbHVlKSwgZihtLCBFLCBrKTtcblx0XHRcdFx0XHRyZXR1cm4gKG0ubGVuZ3RoID0gRSksIG07XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NDMyODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDUyOTApLFxuXHRcdFx0XHRcdG8gPSByKDc1NzgpLFxuXHRcdFx0XHRcdGkgPSByKDYzMTApLFxuXHRcdFx0XHRcdGEgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlLCByLCBhKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB1LFxuXHRcdFx0XHRcdFx0XHRcdGMgPSBuKGUpLFxuXHRcdFx0XHRcdFx0XHRcdHMgPSBpKGMpLFxuXHRcdFx0XHRcdFx0XHRcdGYgPSBvKGEsIHMpO1xuXHRcdFx0XHRcdFx0XHRpZiAodCAmJiByICE9IHIpIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgcyA+IGY7ICkgaWYgKCh1ID0gY1tmKytdKSAhPSB1KSByZXR1cm4gITA7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBmb3IgKDsgcyA+IGY7IGYrKykgaWYgKCh0IHx8IGYgaW4gYykgJiYgY1tmXSA9PT0gcikgcmV0dXJuIHQgfHwgZiB8fCAwO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gIXQgJiYgLTE7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRpbmNsdWRlczogYSghMCksXG5cdFx0XHRcdFx0aW5kZXhPZjogYSghMSksXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0Mjk2MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQwNzEpLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDQ0MTMpLFxuXHRcdFx0XHRcdGEgPSByKDY5MCksXG5cdFx0XHRcdFx0dSA9IHIoNjMxMCksXG5cdFx0XHRcdFx0YyA9IHIoNzEyMCksXG5cdFx0XHRcdFx0cyA9IG8oW10ucHVzaCksXG5cdFx0XHRcdFx0ZiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IDEgPT09IHQsXG5cdFx0XHRcdFx0XHRcdHIgPSAyID09PSB0LFxuXHRcdFx0XHRcdFx0XHRvID0gMyA9PT0gdCxcblx0XHRcdFx0XHRcdFx0ZiA9IDQgPT09IHQsXG5cdFx0XHRcdFx0XHRcdGwgPSA2ID09PSB0LFxuXHRcdFx0XHRcdFx0XHRwID0gNyA9PT0gdCxcblx0XHRcdFx0XHRcdFx0aCA9IDUgPT09IHQgfHwgbDtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAodiwgZCwgeSwgZykge1xuXHRcdFx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0XHRcdHZhciBtLFxuXHRcdFx0XHRcdFx0XHRcdFx0Yixcblx0XHRcdFx0XHRcdFx0XHRcdHcgPSBhKHYpLFxuXHRcdFx0XHRcdFx0XHRcdFx0eCA9IGkodyksXG5cdFx0XHRcdFx0XHRcdFx0XHRrID0gbihkLCB5KSxcblx0XHRcdFx0XHRcdFx0XHRcdFMgPSB1KHgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0RSA9IDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRPID0gZyB8fCBjLFxuXHRcdFx0XHRcdFx0XHRcdFx0UCA9IGUgPyBPKHYsIFMpIDogciB8fCBwID8gTyh2LCAwKSA6IHZvaWQgMDtcblx0XHRcdFx0XHRcdFx0XHRTID4gRTtcblx0XHRcdFx0XHRcdFx0XHRFKytcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdGlmICgoaCB8fCBFIGluIHgpICYmICgoYiA9IGsoKG0gPSB4W0VdKSwgRSwgdykpLCB0KSlcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChlKSBQW0VdID0gYjtcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAhMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDY6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzKFAsIG0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAhMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzKFAsIG0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiBsID8gLTEgOiBvIHx8IGYgPyBmIDogUDtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdGZvckVhY2g6IGYoMCksXG5cdFx0XHRcdFx0bWFwOiBmKDEpLFxuXHRcdFx0XHRcdGZpbHRlcjogZigyKSxcblx0XHRcdFx0XHRzb21lOiBmKDMpLFxuXHRcdFx0XHRcdGV2ZXJ5OiBmKDQpLFxuXHRcdFx0XHRcdGZpbmQ6IGYoNSksXG5cdFx0XHRcdFx0ZmluZEluZGV4OiBmKDYpLFxuXHRcdFx0XHRcdGZpbHRlclJlamVjdDogZig3KSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ5MDQyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSksXG5cdFx0XHRcdFx0byA9IHIoNDIwMSksXG5cdFx0XHRcdFx0aSA9IHIoMzYxNSksXG5cdFx0XHRcdFx0YSA9IG8oJ3NwZWNpZXMnKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0aSA+PSA1MSB8fFxuXHRcdFx0XHRcdFx0IW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCgoZS5jb25zdHJ1Y3RvciA9IHt9KVthXSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvbzogMSxcblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0MSAhPT0gZVt0XShCb29sZWFuKS5mb29cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2ODM0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dmFyIHIgPSBbXVt0XTtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0ISFyICYmXG5cdFx0XHRcdFx0XHRuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0ci5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0ZSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0MVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDU2NDk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcigyMjk3KSxcblx0XHRcdFx0XHRpID0gVHlwZUVycm9yLFxuXHRcdFx0XHRcdGEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHRcdFx0XHRcdHUgPVxuXHRcdFx0XHRcdFx0biAmJlxuXHRcdFx0XHRcdFx0IShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IHRoaXMpIHJldHVybiAhMDtcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sICdsZW5ndGgnLCB7d3JpdGFibGU6ICExfSkubGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0IGluc3RhbmNlb2YgVHlwZUVycm9yO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KSgpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB1XG5cdFx0XHRcdFx0PyBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAobyh0KSAmJiAhYSh0LCAnbGVuZ3RoJykud3JpdGFibGUpIHRocm93IG5ldyBpKCdDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoJyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAodC5sZW5ndGggPSBlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAodC5sZW5ndGggPSBlKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0OTAxNTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc1NzgpLFxuXHRcdFx0XHRcdG8gPSByKDYzMTApLFxuXHRcdFx0XHRcdGkgPSByKDY1MjIpLFxuXHRcdFx0XHRcdGEgPSBBcnJheSxcblx0XHRcdFx0XHR1ID0gTWF0aC5tYXg7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdHZhciBjID0gbyh0KSwgcyA9IG4oZSwgYyksIGYgPSBuKHZvaWQgMCA9PT0gciA/IGMgOiByLCBjKSwgbCA9IGEodShmIC0gcywgMCkpLCBwID0gMDtcblx0XHRcdFx0XHRcdHMgPCBmO1xuXHRcdFx0XHRcdFx0cysrLCBwKytcblx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRpKGwsIHAsIHRbc10pO1xuXHRcdFx0XHRcdHJldHVybiAobC5sZW5ndGggPSBwKSwgbDtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2MDA0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4oW10uc2xpY2UpO1xuXHRcdFx0fSxcblx0XHRcdDM4MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDkwMTUpLFxuXHRcdFx0XHRcdG8gPSBNYXRoLmZsb29yLFxuXHRcdFx0XHRcdGkgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSB0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0YyA9IG8ociAvIDIpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHIgPCA4ID8gYSh0LCBlKSA6IHUodCwgaShuKHQsIDAsIGMpLCBlKSwgaShuKHQsIGMpLCBlKSwgZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIHIsIG4sIG8gPSB0Lmxlbmd0aCwgaSA9IDE7IGkgPCBvOyApIHtcblx0XHRcdFx0XHRcdFx0Zm9yIChuID0gaSwgciA9IHRbaV07IG4gJiYgZSh0W24gLSAxXSwgcikgPiAwOyApIHRbbl0gPSB0Wy0tbl07XG5cdFx0XHRcdFx0XHRcdG4gIT09IGkrKyAmJiAodFtuXSA9IHIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1ID0gZnVuY3Rpb24gKHQsIGUsIHIsIG4pIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIG8gPSBlLmxlbmd0aCwgaSA9IHIubGVuZ3RoLCBhID0gMCwgdSA9IDA7IGEgPCBvIHx8IHUgPCBpOyApXG5cdFx0XHRcdFx0XHRcdHRbYSArIHVdID1cblx0XHRcdFx0XHRcdFx0XHRhIDwgbyAmJiB1IDwgaSA/IChuKGVbYV0sIHJbdV0pIDw9IDAgPyBlW2ErK10gOiByW3UrK10pIDogYSA8IG8gPyBlW2ErK10gOiByW3UrK107XG5cdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBpO1xuXHRcdFx0fSxcblx0XHRcdDUyNzE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyMjk3KSxcblx0XHRcdFx0XHRvID0gcig5NDI5KSxcblx0XHRcdFx0XHRpID0gcig4OTk5KSxcblx0XHRcdFx0XHRhID0gcig0MjAxKSgnc3BlY2llcycpLFxuXHRcdFx0XHRcdHUgPSBBcnJheTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHR2YXIgZTtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0bih0KSAmJlxuXHRcdFx0XHRcdFx0XHQoKGUgPSB0LmNvbnN0cnVjdG9yKSxcblx0XHRcdFx0XHRcdFx0KChvKGUpICYmIChlID09PSB1IHx8IG4oZS5wcm90b3R5cGUpKSkgfHwgKGkoZSkgJiYgbnVsbCA9PT0gKGUgPSBlW2FdKSkpICYmIChlID0gdm9pZCAwKSksXG5cdFx0XHRcdFx0XHR2b2lkIDAgPT09IGUgPyB1IDogZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzEyMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDUyNzEpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHJldHVybiBuZXcgKG4odCkpKDAgPT09IGUgPyAwIDogZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MjM5OTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI2MTUpLFxuXHRcdFx0XHRcdG8gPSByKDYwNTgpLFxuXHRcdFx0XHRcdGkgPSByKDQ4NDkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgciwgYSkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR2YXIgdSA9IGkodCwgJ3JldHVybicpO1xuXHRcdFx0XHRcdFx0aWYgKHUpXG5cdFx0XHRcdFx0XHRcdHJldHVybiBvKCdQcm9taXNlJylcblx0XHRcdFx0XHRcdFx0XHQucmVzb2x2ZShuKHUsIHQpKVxuXHRcdFx0XHRcdFx0XHRcdC50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRlKHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGEodCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYSh0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZShyKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3Mzk0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjYxNSksXG5cdFx0XHRcdFx0byA9IHIoOTMwMiksXG5cdFx0XHRcdFx0aSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0YSA9IHIoNTM5MSksXG5cdFx0XHRcdFx0dSA9IHIoNTc3MyksXG5cdFx0XHRcdFx0YyA9IHIoNjA0NSksXG5cdFx0XHRcdFx0cyA9IHIoNDIwMSksXG5cdFx0XHRcdFx0ZiA9IHIoNjE4KSxcblx0XHRcdFx0XHRsID0gcig2MDU4KSxcblx0XHRcdFx0XHRwID0gcig0ODQ5KSxcblx0XHRcdFx0XHRoID0gcigzMDcwKSxcblx0XHRcdFx0XHR2ID0gcig3ODA3KSxcblx0XHRcdFx0XHRkID0gcigyMTI1KSxcblx0XHRcdFx0XHR5ID0gbCgnUHJvbWlzZScpLFxuXHRcdFx0XHRcdGcgPSBzKCd0b1N0cmluZ1RhZycpLFxuXHRcdFx0XHRcdG0gPSAnQXN5bmNJdGVyYXRvckhlbHBlcicsXG5cdFx0XHRcdFx0YiA9ICdXcmFwRm9yVmFsaWRBc3luY0l0ZXJhdG9yJyxcblx0XHRcdFx0XHR3ID0gZi5zZXQsXG5cdFx0XHRcdFx0eCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9ICF0LFxuXHRcdFx0XHRcdFx0XHRyID0gZi5nZXR0ZXJGb3IodCA/IGIgOiBtKSxcblx0XHRcdFx0XHRcdFx0dSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSBvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIodCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdGkgPSBuLmVycm9yLFxuXHRcdFx0XHRcdFx0XHRcdFx0YSA9IG4udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGkgfHwgKGUgJiYgYS5kb25lKVxuXHRcdFx0XHRcdFx0XHRcdFx0PyB7ZXhpdDogITAsIHZhbHVlOiBpID8geS5yZWplY3QoYSkgOiB5LnJlc29sdmUodih2b2lkIDAsICEwKSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQ6IHtleGl0OiAhMSwgdmFsdWU6IGF9O1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGMoYShoKSwge1xuXHRcdFx0XHRcdFx0XHRuZXh0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSB1KHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZSA9IHQudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHQuZXhpdCkgcmV0dXJuIGU7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGkoZS5uZXh0SGFuZGxlcih5KSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdG4gPSByLmVycm9yLFxuXHRcdFx0XHRcdFx0XHRcdFx0YSA9IHIudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG4gJiYgKGUuZG9uZSA9ICEwKSwgbiA/IHkucmVqZWN0KGEpIDogeS5yZXNvbHZlKGEpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRyZXR1cm46IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IHUodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0XHRyID0gZS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoZS5leGl0KSByZXR1cm4gcjtcblx0XHRcdFx0XHRcdFx0XHRyLmRvbmUgPSAhMDtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYSxcblx0XHRcdFx0XHRcdFx0XHRcdGMsXG5cdFx0XHRcdFx0XHRcdFx0XHRzID0gci5pdGVyYXRvcixcblx0XHRcdFx0XHRcdFx0XHRcdGYgPSBvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHIuaW5uZXIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGQoci5pbm5lci5pdGVyYXRvciwgJ25vcm1hbCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBkKHMsICd0aHJvdycsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHAocywgJ3JldHVybicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdChhID0gYyA9IGYudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0Zi5lcnJvclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHkucmVqZWN0KGMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdm9pZCAwID09PSBhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB5LnJlc29sdmUodih2b2lkIDAsICEwKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICgoYyA9IChmID0gbyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBuKGEsIHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpLnZhbHVlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGYuZXJyb3Jcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB5LnJlamVjdChjKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHkucmVzb2x2ZShjKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogeS5yZXNvbHZlKGMpLnRoZW4oZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodCksIHYodm9pZCAwLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSlcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRrID0geCghMCksXG5cdFx0XHRcdFx0UyA9IHgoITEpO1xuXHRcdFx0XHR1KFMsIGcsICdBc3luYyBJdGVyYXRvciBIZWxwZXInKSxcblx0XHRcdFx0XHQodC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdHZhciByID0gZnVuY3Rpb24gKHIsIG4pIHtcblx0XHRcdFx0XHRcdFx0biA/ICgobi5pdGVyYXRvciA9IHIuaXRlcmF0b3IpLCAobi5uZXh0ID0gci5uZXh0KSkgOiAobiA9IHIpLFxuXHRcdFx0XHRcdFx0XHRcdChuLnR5cGUgPSBlID8gYiA6IG0pLFxuXHRcdFx0XHRcdFx0XHRcdChuLm5leHRIYW5kbGVyID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KG4uY291bnRlciA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdChuLmRvbmUgPSAhMSksXG5cdFx0XHRcdFx0XHRcdFx0dyh0aGlzLCBuKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gKHIucHJvdG90eXBlID0gZSA/IGsgOiBTKSwgcjtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQyNDg5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjYxNSksXG5cdFx0XHRcdFx0byA9IHIoNTA5KSxcblx0XHRcdFx0XHRpID0gcig1MDI3KSxcblx0XHRcdFx0XHRhID0gcig4OTk5KSxcblx0XHRcdFx0XHR1ID0gcig1NTY1KSxcblx0XHRcdFx0XHRjID0gcig2MDU4KSxcblx0XHRcdFx0XHRzID0gcigyMzAyKSxcblx0XHRcdFx0XHRmID0gcigyMzk5KSxcblx0XHRcdFx0XHRsID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gMCA9PT0gdCxcblx0XHRcdFx0XHRcdFx0ciA9IDEgPT09IHQsXG5cdFx0XHRcdFx0XHRcdGwgPSAyID09PSB0LFxuXHRcdFx0XHRcdFx0XHRwID0gMyA9PT0gdDtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAodCwgaCwgdikge1xuXHRcdFx0XHRcdFx0XHRpKHQpO1xuXHRcdFx0XHRcdFx0XHR2YXIgZCA9IHZvaWQgMCAhPT0gaDtcblx0XHRcdFx0XHRcdFx0KCFkICYmIGUpIHx8IG8oaCk7XG5cdFx0XHRcdFx0XHRcdHZhciB5ID0gcyh0KSxcblx0XHRcdFx0XHRcdFx0XHRnID0gYygnUHJvbWlzZScpLFxuXHRcdFx0XHRcdFx0XHRcdG0gPSB5Lml0ZXJhdG9yLFxuXHRcdFx0XHRcdFx0XHRcdGIgPSB5Lm5leHQsXG5cdFx0XHRcdFx0XHRcdFx0dyA9IDA7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgZyhmdW5jdGlvbiAodCwgbykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBjID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZihtLCBvLCB0LCBvKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRzID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChkKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dSh3KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Yyh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRnLnJlc29sdmUoaShuKGIsIG0pKSkudGhlbihmdW5jdGlvbiAobikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGkobikuZG9uZSkgZSA/ICgodi5sZW5ndGggPSB3KSwgdCh2KSkgOiB0KCFwICYmIChsIHx8IHZvaWQgMCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdSA9IG4udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB5ID0gaCh1LCB3KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRiID0gZnVuY3Rpb24gKG4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChyKSBzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChsKSBuID8gcygpIDogZihtLCB0LCAhMSwgbyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh2W3crK10gPSBuKSwgcygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Yyh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBuID8gZihtLCB0LCBwIHx8IHUsIG8pIDogcygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEoeSkgPyBnLnJlc29sdmUoeSkudGhlbihiLCBjKSA6IGIoeSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgKHZbdysrXSA9IHUpLCBzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Yyh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCBvKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8odCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0cygpO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdHRvQXJyYXk6IGwoMCksXG5cdFx0XHRcdFx0Zm9yRWFjaDogbCgxKSxcblx0XHRcdFx0XHRldmVyeTogbCgyKSxcblx0XHRcdFx0XHRzb21lOiBsKDMpLFxuXHRcdFx0XHRcdGZpbmQ6IGwoNCksXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzA3MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpID0gcig5MDM3KSxcblx0XHRcdFx0XHRhID0gcig0MDkxKSxcblx0XHRcdFx0XHR1ID0gcig5OTg1KSxcblx0XHRcdFx0XHRjID0gcig1MzkxKSxcblx0XHRcdFx0XHRzID0gcigxODY4KSxcblx0XHRcdFx0XHRmID0gcigxODgwKSxcblx0XHRcdFx0XHRsID0gcig0MjAxKSxcblx0XHRcdFx0XHRwID0gcigzOTMxKSxcblx0XHRcdFx0XHRoID0gJ1VTRV9GVU5DVElPTl9DT05TVFJVQ1RPUicsXG5cdFx0XHRcdFx0diA9IGwoJ2FzeW5jSXRlcmF0b3InKSxcblx0XHRcdFx0XHRkID0gaS5Bc3luY0l0ZXJhdG9yLFxuXHRcdFx0XHRcdHkgPSBhLkFzeW5jSXRlcmF0b3JQcm90b3R5cGU7XG5cdFx0XHRcdGlmICh5KSBuID0geTtcblx0XHRcdFx0ZWxzZSBpZiAodShkKSkgbiA9IGQucHJvdG90eXBlO1xuXHRcdFx0XHRlbHNlIGlmIChhW2hdIHx8IGlbaF0pXG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdChvID0gcyhzKHMoRnVuY3Rpb24oJ3JldHVybiBhc3luYyBmdW5jdGlvbiooKXt9KCknKSgpKSkpKSwgcyhvKSA9PT0gT2JqZWN0LnByb3RvdHlwZSAmJiAobiA9IG8pO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdG4gPyBwICYmIChuID0gYyhuKSkgOiAobiA9IHt9KSxcblx0XHRcdFx0XHR1KG5bdl0pIHx8XG5cdFx0XHRcdFx0XHRmKG4sIHYsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQodC5leHBvcnRzID0gbik7XG5cdFx0XHR9LFxuXHRcdFx0MTIyODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDUwMjcpLFxuXHRcdFx0XHRcdG8gPSByKDIxMjUpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgciwgaSkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gaSA/IGUobihyKVswXSwgclsxXSkgOiBlKHIpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdG8odCwgJ3Rocm93JywgZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDY0MzE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig0MjAxKSgnaXRlcmF0b3InKSxcblx0XHRcdFx0XHRvID0gITE7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dmFyIGkgPSAwLFxuXHRcdFx0XHRcdFx0YSA9IHtcblx0XHRcdFx0XHRcdFx0bmV4dDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRkb25lOiAhIWkrKyxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRyZXR1cm46IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRvID0gITA7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdChhW25dID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRBcnJheS5mcm9tKGEsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgMjtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRpZiAoIWUgJiYgIW8pIHJldHVybiAhMTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gITE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciByID0gITE7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHZhciBpID0ge307XG5cdFx0XHRcdFx0XHQoaVtuXSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRuZXh0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkb25lOiAociA9ICEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR0KGkpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0cmV0dXJuIHI7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjY0ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSBuKHt9LnRvU3RyaW5nKSxcblx0XHRcdFx0XHRpID0gbignJy5zbGljZSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGkobyh0KSwgOCwgLTEpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDkyNjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDMwNDMpLFxuXHRcdFx0XHRcdG8gPSByKDk5ODUpLFxuXHRcdFx0XHRcdGkgPSByKDY2NDgpLFxuXHRcdFx0XHRcdGEgPSByKDQyMDEpKCd0b1N0cmluZ1RhZycpLFxuXHRcdFx0XHRcdHUgPSBPYmplY3QsXG5cdFx0XHRcdFx0YyA9XG5cdFx0XHRcdFx0XHQnQXJndW1lbnRzJyA9PT1cblx0XHRcdFx0XHRcdGkoXG5cdFx0XHRcdFx0XHRcdChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGFyZ3VtZW50cztcblx0XHRcdFx0XHRcdFx0fSkoKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0dC5leHBvcnRzID0gblxuXHRcdFx0XHRcdD8gaVxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUsIHIsIG47XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2b2lkIDAgPT09IHRcblx0XHRcdFx0XHRcdFx0XHQ/ICdVbmRlZmluZWQnXG5cdFx0XHRcdFx0XHRcdFx0OiBudWxsID09PSB0XG5cdFx0XHRcdFx0XHRcdFx0XHQ/ICdOdWxsJ1xuXHRcdFx0XHRcdFx0XHRcdFx0OiAnc3RyaW5nJyA9PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIHR5cGVvZiAociA9IChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRbZV07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0pKChlID0gdSh0KSksIGEpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiBjXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBpKGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnT2JqZWN0JyA9PT0gKG4gPSBpKGUpKSAmJiBvKGUuY2FsbGVlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAnQXJndW1lbnRzJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBuO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4MDA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig1MzkxKSxcblx0XHRcdFx0XHRvID0gcigyMTQ4KSxcblx0XHRcdFx0XHRpID0gcig2MDQ1KSxcblx0XHRcdFx0XHRhID0gcig0MDcxKSxcblx0XHRcdFx0XHR1ID0gcig3NjcpLFxuXHRcdFx0XHRcdGMgPSByKDk4MSksXG5cdFx0XHRcdFx0cyA9IHIoODczNCksXG5cdFx0XHRcdFx0ZiA9IHIoMTkzNCksXG5cdFx0XHRcdFx0bCA9IHIoNzgwNyksXG5cdFx0XHRcdFx0cCA9IHIoNDI0MSksXG5cdFx0XHRcdFx0aCA9IHIoNzY5NyksXG5cdFx0XHRcdFx0diA9IHIoNTM3NSkuZmFzdEtleSxcblx0XHRcdFx0XHRkID0gcig2MTgpLFxuXHRcdFx0XHRcdHkgPSBkLnNldCxcblx0XHRcdFx0XHRnID0gZC5nZXR0ZXJGb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24gKHQsIGUsIHIsIGYpIHtcblx0XHRcdFx0XHRcdHZhciBsID0gdChmdW5jdGlvbiAodCwgbykge1xuXHRcdFx0XHRcdFx0XHRcdHUodCwgcCksXG5cdFx0XHRcdFx0XHRcdFx0XHR5KHQsIHt0eXBlOiBlLCBpbmRleDogbihudWxsKSwgZmlyc3Q6IHZvaWQgMCwgbGFzdDogdm9pZCAwLCBzaXplOiAwfSksXG5cdFx0XHRcdFx0XHRcdFx0XHRoIHx8ICh0LnNpemUgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHRcdGMobykgfHwgcyhvLCB0W2ZdLCB7dGhhdDogdCwgQVNfRU5UUklFUzogcn0pO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0cCA9IGwucHJvdG90eXBlLFxuXHRcdFx0XHRcdFx0XHRkID0gZyhlKSxcblx0XHRcdFx0XHRcdFx0bSA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdFx0XHRcdFx0aSA9IGQodCksXG5cdFx0XHRcdFx0XHRcdFx0XHRhID0gYih0LCBlKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0YVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IChhLnZhbHVlID0gcilcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAoKGkubGFzdCA9IGEgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbmRleDogKG8gPSB2KGUsICEwKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGtleTogZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXZpb3VzOiAobiA9IGkubGFzdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5leHQ6IHZvaWQgMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVtb3ZlZDogITEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpLmZpcnN0IHx8IChpLmZpcnN0ID0gYSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0biAmJiAobi5uZXh0ID0gYSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aCA/IGkuc2l6ZSsrIDogdC5zaXplKyssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J0YnICE9PSBvICYmIChpLmluZGV4W29dID0gYSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGIgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0XHRcdFx0biA9IGQodCksXG5cdFx0XHRcdFx0XHRcdFx0XHRvID0gdihlKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ0YnICE9PSBvKSByZXR1cm4gbi5pbmRleFtvXTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHIgPSBuLmZpcnN0OyByOyByID0gci5uZXh0KSBpZiAoci5rZXkgPT09IGUpIHJldHVybiByO1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0aShwLCB7XG5cdFx0XHRcdFx0XHRcdFx0Y2xlYXI6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHQgPSBkKHRoaXMpLCBlID0gdC5pbmRleCwgciA9IHQuZmlyc3Q7IHI7IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHIucmVtb3ZlZCA9ICEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyLnByZXZpb3VzICYmIChyLnByZXZpb3VzID0gci5wcmV2aW91cy5uZXh0ID0gdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWxldGUgZVtyLmluZGV4XSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9IHIubmV4dCk7XG5cdFx0XHRcdFx0XHRcdFx0XHQodC5maXJzdCA9IHQubGFzdCA9IHZvaWQgMCksIGggPyAodC5zaXplID0gMCkgOiAodGhpcy5zaXplID0gMCk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRkZWxldGU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSBkKGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuID0gYihlLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBvID0gbi5uZXh0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSBuLnByZXZpb3VzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWxldGUgci5pbmRleFtuLmluZGV4XSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobi5yZW1vdmVkID0gITApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkgJiYgKGkubmV4dCA9IG8pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8gJiYgKG8ucHJldmlvdXMgPSBpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyLmZpcnN0ID09PSBuICYmIChyLmZpcnN0ID0gbyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ci5sYXN0ID09PSBuICYmIChyLmxhc3QgPSBpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoID8gci5zaXplLS0gOiBlLnNpemUtLTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAhIW47XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRmb3JFYWNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsIHIgPSBkKHRoaXMpLCBuID0gYSh0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChlID0gZSA/IGUubmV4dCA6IHIuZmlyc3QpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAobihlLnZhbHVlLCBlLmtleSwgdGhpcyk7IGUgJiYgZS5yZW1vdmVkOyApIGUgPSBlLnByZXZpb3VzO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0aGFzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICEhYih0aGlzLCB0KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0aShcblx0XHRcdFx0XHRcdFx0XHRwLFxuXHRcdFx0XHRcdFx0XHRcdHJcblx0XHRcdFx0XHRcdFx0XHRcdD8ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlID0gYih0aGlzLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBlICYmIGUudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZXQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbSh0aGlzLCAwID09PSB0ID8gMCA6IHQsIGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFkZDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBtKHRoaXMsICh0ID0gMCA9PT0gdCA/IDAgOiB0KSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRoICYmXG5cdFx0XHRcdFx0XHRcdFx0byhwLCAnc2l6ZScsIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGQodGhpcykuc2l6ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdGxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRTdHJvbmc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbiA9IGUgKyAnIEl0ZXJhdG9yJyxcblx0XHRcdFx0XHRcdFx0byA9IGcoZSksXG5cdFx0XHRcdFx0XHRcdGkgPSBnKG4pO1xuXHRcdFx0XHRcdFx0Zihcblx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0ZSxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHR5KHRoaXMsIHt0eXBlOiBuLCB0YXJnZXQ6IHQsIHN0YXRlOiBvKHQpLCBraW5kOiBlLCBsYXN0OiB2b2lkIDB9KTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHQgPSBpKHRoaXMpLCBlID0gdC5raW5kLCByID0gdC5sYXN0OyByICYmIHIucmVtb3ZlZDsgKSByID0gci5wcmV2aW91cztcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC50YXJnZXQgJiYgKHQubGFzdCA9IHIgPSByID8gci5uZXh0IDogdC5zdGF0ZS5maXJzdClcblx0XHRcdFx0XHRcdFx0XHRcdD8gbCgna2V5cycgPT09IGUgPyByLmtleSA6ICd2YWx1ZXMnID09PSBlID8gci52YWx1ZSA6IFtyLmtleSwgci52YWx1ZV0sICExKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiAoKHQudGFyZ2V0ID0gdm9pZCAwKSwgbCh2b2lkIDAsICEwKSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHIgPyAnZW50cmllcycgOiAndmFsdWVzJyxcblx0XHRcdFx0XHRcdFx0IXIsXG5cdFx0XHRcdFx0XHRcdCEwXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRwKGUpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzE5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoOTAzNyksXG5cdFx0XHRcdFx0aSA9IHIoODg0NCksXG5cdFx0XHRcdFx0YSA9IHIoNTI2NiksXG5cdFx0XHRcdFx0dSA9IHIoMTg4MCksXG5cdFx0XHRcdFx0YyA9IHIoNTM3NSksXG5cdFx0XHRcdFx0cyA9IHIoODczNCksXG5cdFx0XHRcdFx0ZiA9IHIoNzY3KSxcblx0XHRcdFx0XHRsID0gcig5OTg1KSxcblx0XHRcdFx0XHRwID0gcig5ODEpLFxuXHRcdFx0XHRcdGggPSByKDg5OTkpLFxuXHRcdFx0XHRcdHYgPSByKDM2ODkpLFxuXHRcdFx0XHRcdGQgPSByKDY0MzEpLFxuXHRcdFx0XHRcdHkgPSByKDU5OTcpLFxuXHRcdFx0XHRcdGcgPSByKDM0NTcpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdHZhciBtID0gLTEgIT09IHQuaW5kZXhPZignTWFwJyksXG5cdFx0XHRcdFx0XHRiID0gLTEgIT09IHQuaW5kZXhPZignV2VhaycpLFxuXHRcdFx0XHRcdFx0dyA9IG0gPyAnc2V0JyA6ICdhZGQnLFxuXHRcdFx0XHRcdFx0eCA9IG9bdF0sXG5cdFx0XHRcdFx0XHRrID0geCAmJiB4LnByb3RvdHlwZSxcblx0XHRcdFx0XHRcdFMgPSB4LFxuXHRcdFx0XHRcdFx0RSA9IHt9LFxuXHRcdFx0XHRcdFx0TyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gaShrW3RdKTtcblx0XHRcdFx0XHRcdFx0dShcblx0XHRcdFx0XHRcdFx0XHRrLFxuXHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0J2FkZCcgPT09IHRcblx0XHRcdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZSh0aGlzLCAwID09PSB0ID8gMCA6IHQpLCB0aGlzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICdkZWxldGUnID09PSB0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAhKGIgJiYgIWgodCkpICYmIGUodGhpcywgMCA9PT0gdCA/IDAgOiB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJ2dldCcgPT09IHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBiICYmICFoKHQpID8gdm9pZCAwIDogZSh0aGlzLCAwID09PSB0ID8gMCA6IHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogJ2hhcycgPT09IHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gIShiICYmICFoKHQpKSAmJiBlKHRoaXMsIDAgPT09IHQgPyAwIDogdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQsIHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZSh0aGlzLCAwID09PSB0ID8gMCA6IHQsIHIpLCB0aGlzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGEoXG5cdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdCFsKHgpIHx8XG5cdFx0XHRcdFx0XHRcdFx0IShcblx0XHRcdFx0XHRcdFx0XHRcdGIgfHxcblx0XHRcdFx0XHRcdFx0XHRcdChrLmZvckVhY2ggJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0IXYoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5ldyB4KCkuZW50cmllcygpLm5leHQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdChTID0gci5nZXRDb25zdHJ1Y3RvcihlLCB0LCBtLCB3KSksIGMuZW5hYmxlKCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYSh0LCAhMCkpIHtcblx0XHRcdFx0XHRcdHZhciBQID0gbmV3IFMoKSxcblx0XHRcdFx0XHRcdFx0aiA9IFBbd10oYiA/IHt9IDogLTAsIDEpICE9PSBQLFxuXHRcdFx0XHRcdFx0XHRMID0gdihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0UC5oYXMoMSk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRfID0gZChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdG5ldyB4KHQpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0SSA9XG5cdFx0XHRcdFx0XHRcdFx0IWIgJiZcblx0XHRcdFx0XHRcdFx0XHR2KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHQgPSBuZXcgeCgpLCBlID0gNTsgZS0tOyApIHRbd10oZSwgZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gIXQuaGFzKC0wKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdF8gfHxcblx0XHRcdFx0XHRcdFx0KCgoUyA9IGUoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRmKHQsIGspO1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gZyhuZXcgeCgpLCB0LCBTKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcChlKSB8fCBzKGUsIHJbd10sIHt0aGF0OiByLCBBU19FTlRSSUVTOiBtfSksIHI7XG5cdFx0XHRcdFx0XHRcdH0pKS5wcm90b3R5cGUgPSBrKSxcblx0XHRcdFx0XHRcdFx0KGsuY29uc3RydWN0b3IgPSBTKSksXG5cdFx0XHRcdFx0XHRcdChMIHx8IEkpICYmIChPKCdkZWxldGUnKSwgTygnaGFzJyksIG0gJiYgTygnZ2V0JykpLFxuXHRcdFx0XHRcdFx0XHQoSSB8fCBqKSAmJiBPKHcpLFxuXHRcdFx0XHRcdFx0XHRiICYmIGsuY2xlYXIgJiYgZGVsZXRlIGsuY2xlYXI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQoRVt0XSA9IFMpLFxuXHRcdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGdsb2JhbDogITAsXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6ICEwLFxuXHRcdFx0XHRcdFx0XHRcdGZvcmNlZDogUyAhPT0geCxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0RVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHkoUywgdCksXG5cdFx0XHRcdFx0XHRiIHx8IHIuc2V0U3Ryb25nKFMsIHQsIG0pLFxuXHRcdFx0XHRcdFx0U1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0ODc1ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDY4MTIpLFxuXHRcdFx0XHRcdG8gPSByKDkxNTIpLFxuXHRcdFx0XHRcdGkgPSByKDI0NzQpLFxuXHRcdFx0XHRcdGEgPSByKDI1NjApO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdGZvciAodmFyIHUgPSBvKGUpLCBjID0gYS5mLCBzID0gaS5mLCBmID0gMDsgZiA8IHUubGVuZ3RoOyBmKyspIHtcblx0XHRcdFx0XHRcdHZhciBsID0gdVtmXTtcblx0XHRcdFx0XHRcdG4odCwgbCkgfHwgKHIgJiYgbihyLCBsKSkgfHwgYyh0LCBsLCBzKGUsIGwpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzQxMzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQyMDEpKCdtYXRjaCcpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlID0gLy4vO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHQnLy4vJ1t0XShlKTtcblx0XHRcdFx0XHR9IGNhdGNoIChyKSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGVbbl0gPSAhMSksICcvLi8nW3RdKGUpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuICExO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDE3NDg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KTtcblx0XHRcdFx0dC5leHBvcnRzID0gIW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7fVxuXHRcdFx0XHRcdHJldHVybiAodC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsKSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyB0KCkpICE9PSB0LnByb3RvdHlwZTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NzgwNzogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHRkb25lOiBlLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTc3MzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDI1NjApLFxuXHRcdFx0XHRcdGkgPSByKDU2ODQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuXG5cdFx0XHRcdFx0PyBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gby5mKHQsIGUsIGkoMSwgcikpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICh0W2VdID0gciksIHQ7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDU2ODQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdGVudW1lcmFibGU6ICEoMSAmIHQpLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhKDIgJiB0KSxcblx0XHRcdFx0XHRcdHdyaXRhYmxlOiAhKDQgJiB0KSxcblx0XHRcdFx0XHRcdHZhbHVlOiBlLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjUyMjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDgzNjApLFxuXHRcdFx0XHRcdG8gPSByKDI1NjApLFxuXHRcdFx0XHRcdGkgPSByKDU2ODQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdHZhciBhID0gbihlKTtcblx0XHRcdFx0XHRhIGluIHQgPyBvLmYodCwgYSwgaSgwLCByKSkgOiAodFthXSA9IHIpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDE3OTc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig1MDI3KSxcblx0XHRcdFx0XHRvID0gcig1ODk5KSxcblx0XHRcdFx0XHRpID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmICgobih0aGlzKSwgJ3N0cmluZycgPT09IHQgfHwgJ2RlZmF1bHQnID09PSB0KSkgdCA9ICdzdHJpbmcnO1xuXHRcdFx0XHRcdGVsc2UgaWYgKCdudW1iZXInICE9PSB0KSB0aHJvdyBuZXcgaSgnSW5jb3JyZWN0IGhpbnQnKTtcblx0XHRcdFx0XHRyZXR1cm4gbyh0aGlzLCB0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyMTQ4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODcwMiksXG5cdFx0XHRcdFx0byA9IHIoMjU2MCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHIuZ2V0ICYmIG4oci5nZXQsIGUsIHtnZXR0ZXI6ICEwfSksIHIuc2V0ICYmIG4oci5zZXQsIGUsIHtzZXR0ZXI6ICEwfSksIG8uZih0LCBlLCByKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxODgwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4NSksXG5cdFx0XHRcdFx0byA9IHIoMjU2MCksXG5cdFx0XHRcdFx0aSA9IHIoODcwMiksXG5cdFx0XHRcdFx0YSA9IHIoNTAxNCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCB1KSB7XG5cdFx0XHRcdFx0dSB8fCAodSA9IHt9KTtcblx0XHRcdFx0XHR2YXIgYyA9IHUuZW51bWVyYWJsZSxcblx0XHRcdFx0XHRcdHMgPSB2b2lkIDAgIT09IHUubmFtZSA/IHUubmFtZSA6IGU7XG5cdFx0XHRcdFx0aWYgKChuKHIpICYmIGkociwgcywgdSksIHUuZ2xvYmFsKSkgYyA/ICh0W2VdID0gcikgOiBhKGUsIHIpO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0dS51bnNhZmUgPyB0W2VdICYmIChjID0gITApIDogZGVsZXRlIHRbZV07XG5cdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdFx0Y1xuXHRcdFx0XHRcdFx0XHQ/ICh0W2VdID0gcilcblx0XHRcdFx0XHRcdFx0OiBvLmYodCwgZSwge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnVtZXJhYmxlOiAhMSxcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogIXUubm9uQ29uZmlndXJhYmxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0d3JpdGFibGU6ICF1Lm5vbldyaXRhYmxlLFxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2MDQ1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMTg4MCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgbyBpbiBlKSBuKHQsIG8sIGVbb10sIHIpO1xuXHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDUwMTQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRvKG4sIHQsIHt2YWx1ZTogZSwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSk7XG5cdFx0XHRcdFx0fSBjYXRjaCAocikge1xuXHRcdFx0XHRcdFx0blt0XSA9IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDc2OTc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KTtcblx0XHRcdFx0dC5leHBvcnRzID0gIW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQ3ICE9PVxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7XG5cdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiA3O1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSlbMV1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQyNjU5OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR2YXIgZSA9ICdvYmplY3QnID09IHR5cGVvZiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwsXG5cdFx0XHRcdFx0ciA9IHZvaWQgMCA9PT0gZSAmJiB2b2lkIDAgIT09IGU7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRhbGw6IGUsXG5cdFx0XHRcdFx0SVNfSFRNTEREQTogcixcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2NDIwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyksXG5cdFx0XHRcdFx0byA9IHIoODk5OSksXG5cdFx0XHRcdFx0aSA9IG4uZG9jdW1lbnQsXG5cdFx0XHRcdFx0YSA9IG8oaSkgJiYgbyhpLmNyZWF0ZUVsZW1lbnQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBhID8gaS5jcmVhdGVFbGVtZW50KHQpIDoge307XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTU2NTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dmFyIGUgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0aWYgKHQgPiA5MDA3MTk5MjU0NzQwOTkxKSB0aHJvdyBlKCdNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQnKTtcblx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2MzM4OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0Q1NTUnVsZUxpc3Q6IDAsXG5cdFx0XHRcdFx0Q1NTU3R5bGVEZWNsYXJhdGlvbjogMCxcblx0XHRcdFx0XHRDU1NWYWx1ZUxpc3Q6IDAsXG5cdFx0XHRcdFx0Q2xpZW50UmVjdExpc3Q6IDAsXG5cdFx0XHRcdFx0RE9NUmVjdExpc3Q6IDAsXG5cdFx0XHRcdFx0RE9NU3RyaW5nTGlzdDogMCxcblx0XHRcdFx0XHRET01Ub2tlbkxpc3Q6IDEsXG5cdFx0XHRcdFx0RGF0YVRyYW5zZmVySXRlbUxpc3Q6IDAsXG5cdFx0XHRcdFx0RmlsZUxpc3Q6IDAsXG5cdFx0XHRcdFx0SFRNTEFsbENvbGxlY3Rpb246IDAsXG5cdFx0XHRcdFx0SFRNTENvbGxlY3Rpb246IDAsXG5cdFx0XHRcdFx0SFRNTEZvcm1FbGVtZW50OiAwLFxuXHRcdFx0XHRcdEhUTUxTZWxlY3RFbGVtZW50OiAwLFxuXHRcdFx0XHRcdE1lZGlhTGlzdDogMCxcblx0XHRcdFx0XHRNaW1lVHlwZUFycmF5OiAwLFxuXHRcdFx0XHRcdE5hbWVkTm9kZU1hcDogMCxcblx0XHRcdFx0XHROb2RlTGlzdDogMSxcblx0XHRcdFx0XHRQYWludFJlcXVlc3RMaXN0OiAwLFxuXHRcdFx0XHRcdFBsdWdpbjogMCxcblx0XHRcdFx0XHRQbHVnaW5BcnJheTogMCxcblx0XHRcdFx0XHRTVkdMZW5ndGhMaXN0OiAwLFxuXHRcdFx0XHRcdFNWR051bWJlckxpc3Q6IDAsXG5cdFx0XHRcdFx0U1ZHUGF0aFNlZ0xpc3Q6IDAsXG5cdFx0XHRcdFx0U1ZHUG9pbnRMaXN0OiAwLFxuXHRcdFx0XHRcdFNWR1N0cmluZ0xpc3Q6IDAsXG5cdFx0XHRcdFx0U1ZHVHJhbnNmb3JtTGlzdDogMCxcblx0XHRcdFx0XHRTb3VyY2VCdWZmZXJMaXN0OiAwLFxuXHRcdFx0XHRcdFN0eWxlU2hlZXRMaXN0OiAwLFxuXHRcdFx0XHRcdFRleHRUcmFja0N1ZUxpc3Q6IDAsXG5cdFx0XHRcdFx0VGV4dFRyYWNrTGlzdDogMCxcblx0XHRcdFx0XHRUb3VjaExpc3Q6IDAsXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzI2NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDY0MjApKCdzcGFuJykuY2xhc3NMaXN0LFxuXHRcdFx0XHRcdG8gPSBuICYmIG4uY29uc3RydWN0b3IgJiYgbi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG8gPT09IE9iamVjdC5wcm90b3R5cGUgPyB2b2lkIDAgOiBvO1xuXHRcdFx0fSxcblx0XHRcdDI1MzI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4NTYzKSxcblx0XHRcdFx0XHRvID0gcig4MDYpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAhbiAmJiAhbyAmJiAnb2JqZWN0JyA9PSB0eXBlb2Ygd2luZG93ICYmICdvYmplY3QnID09IHR5cGVvZiBkb2N1bWVudDtcblx0XHRcdH0sXG5cdFx0XHQ4NTYzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAnb2JqZWN0JyA9PSB0eXBlb2YgRGVubyAmJiBEZW5vICYmICdvYmplY3QnID09IHR5cGVvZiBEZW5vLnZlcnNpb247XG5cdFx0XHR9LFxuXHRcdFx0MzIyMTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDcxKTtcblx0XHRcdFx0dC5leHBvcnRzID0gL2lwYWR8aXBob25lfGlwb2QvaS50ZXN0KG4pICYmICd1bmRlZmluZWQnICE9IHR5cGVvZiBQZWJibGU7XG5cdFx0XHR9LFxuXHRcdFx0NDc2NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDcxKTtcblx0XHRcdFx0dC5leHBvcnRzID0gLyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3Qobik7XG5cdFx0XHR9LFxuXHRcdFx0ODA2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyksXG5cdFx0XHRcdFx0byA9IHIoNjY0OCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICdwcm9jZXNzJyA9PT0gbyhuLnByb2Nlc3MpO1xuXHRcdFx0fSxcblx0XHRcdDc0ODY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3MSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IC93ZWIwcyg/IS4qY2hyb21lKS9pLnRlc3Qobik7XG5cdFx0XHR9LFxuXHRcdFx0NzE6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICgndW5kZWZpbmVkJyAhPSB0eXBlb2YgbmF2aWdhdG9yICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSkgfHwgJyc7XG5cdFx0XHR9LFxuXHRcdFx0MzYxNTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpID0gcig5MDM3KSxcblx0XHRcdFx0XHRhID0gcig3MSksXG5cdFx0XHRcdFx0dSA9IGkucHJvY2Vzcyxcblx0XHRcdFx0XHRjID0gaS5EZW5vLFxuXHRcdFx0XHRcdHMgPSAodSAmJiB1LnZlcnNpb25zKSB8fCAoYyAmJiBjLnZlcnNpb24pLFxuXHRcdFx0XHRcdGYgPSBzICYmIHMudjg7XG5cdFx0XHRcdGYgJiYgKG8gPSAobiA9IGYuc3BsaXQoJy4nKSlbMF0gPiAwICYmIG5bMF0gPCA0ID8gMSA6ICsoblswXSArIG5bMV0pKSxcblx0XHRcdFx0XHQhbyAmJlxuXHRcdFx0XHRcdFx0YSAmJlxuXHRcdFx0XHRcdFx0KCEobiA9IGEubWF0Y2goL0VkZ2VcXC8oXFxkKykvKSkgfHwgblsxXSA+PSA3NCkgJiZcblx0XHRcdFx0XHRcdChuID0gYS5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLykpICYmXG5cdFx0XHRcdFx0XHQobyA9ICtuWzFdKSxcblx0XHRcdFx0XHQodC5leHBvcnRzID0gbyk7XG5cdFx0XHR9LFxuXHRcdFx0MjczOTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0gW1xuXHRcdFx0XHRcdCdjb25zdHJ1Y3RvcicsXG5cdFx0XHRcdFx0J2hhc093blByb3BlcnR5Jyxcblx0XHRcdFx0XHQnaXNQcm90b3R5cGVPZicsXG5cdFx0XHRcdFx0J3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcblx0XHRcdFx0XHQndG9Mb2NhbGVTdHJpbmcnLFxuXHRcdFx0XHRcdCd0b1N0cmluZycsXG5cdFx0XHRcdFx0J3ZhbHVlT2YnLFxuXHRcdFx0XHRdO1xuXHRcdFx0fSxcblx0XHRcdDY2MTA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gRXJyb3IsXG5cdFx0XHRcdFx0aSA9IG4oJycucmVwbGFjZSksXG5cdFx0XHRcdFx0YSA9IFN0cmluZyhuZXcgbygnenhjYXNkJykuc3RhY2spLFxuXHRcdFx0XHRcdHUgPSAvXFxuXFxzKmF0IFteOl0qOlteXFxuXSovLFxuXHRcdFx0XHRcdGMgPSB1LnRlc3QoYSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKGMgJiYgJ3N0cmluZycgPT0gdHlwZW9mIHQgJiYgIW8ucHJlcGFyZVN0YWNrVHJhY2UpIGZvciAoOyBlLS07ICkgdCA9IGkodCwgdSwgJycpO1xuXHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDU0MTE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig1NzczKSxcblx0XHRcdFx0XHRvID0gcig2NjEwKSxcblx0XHRcdFx0XHRpID0gcig5NTk5KSxcblx0XHRcdFx0XHRhID0gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCB1KSB7XG5cdFx0XHRcdFx0aSAmJiAoYSA/IGEodCwgZSkgOiBuKHQsICdzdGFjaycsIG8ociwgdSkpKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ5NTk5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSksXG5cdFx0XHRcdFx0byA9IHIoNTY4NCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICFuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHR2YXIgdCA9IG5ldyBFcnJvcignYScpO1xuXHRcdFx0XHRcdHJldHVybiAhKCdzdGFjaycgaW4gdCkgfHwgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAnc3RhY2snLCBvKDEsIDcpKSwgNyAhPT0gdC5zdGFjayk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDk5ODk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gcigyNDc0KS5mLFxuXHRcdFx0XHRcdGkgPSByKDU3NzMpLFxuXHRcdFx0XHRcdGEgPSByKDE4ODApLFxuXHRcdFx0XHRcdHUgPSByKDUwMTQpLFxuXHRcdFx0XHRcdGMgPSByKDg3NTgpLFxuXHRcdFx0XHRcdHMgPSByKDUyNjYpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0Zixcblx0XHRcdFx0XHRcdGwsXG5cdFx0XHRcdFx0XHRwLFxuXHRcdFx0XHRcdFx0aCxcblx0XHRcdFx0XHRcdHYgPSB0LnRhcmdldCxcblx0XHRcdFx0XHRcdGQgPSB0Lmdsb2JhbCxcblx0XHRcdFx0XHRcdHkgPSB0LnN0YXQ7XG5cdFx0XHRcdFx0aWYgKChyID0gZCA/IG4gOiB5ID8gblt2XSB8fCB1KHYsIHt9KSA6IChuW3ZdIHx8IHt9KS5wcm90b3R5cGUpKVxuXHRcdFx0XHRcdFx0Zm9yIChmIGluIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdCgocCA9IGVbZl0pLFxuXHRcdFx0XHRcdFx0XHRcdChsID0gdC5kb250Q2FsbEdldFNldCA/IChoID0gbyhyLCBmKSkgJiYgaC52YWx1ZSA6IHJbZl0pLFxuXHRcdFx0XHRcdFx0XHRcdCFzKGQgPyBmIDogdiArICh5ID8gJy4nIDogJyMnKSArIGYsIHQuZm9yY2VkKSAmJiB2b2lkIDAgIT09IGwpXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgcCA9PSB0eXBlb2YgbCkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0YyhwLCBsKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQodC5zaGFtIHx8IChsICYmIGwuc2hhbSkpICYmIGkocCwgJ3NoYW0nLCAhMCksIGEociwgZiwgcCwgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzY4OTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICEhdCgpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiAhMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0ODY3ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0cig0MDQzKTtcblx0XHRcdFx0dmFyIG4gPSByKDY1NzYpLFxuXHRcdFx0XHRcdG8gPSByKDE4ODApLFxuXHRcdFx0XHRcdGkgPSByKDYzMDgpLFxuXHRcdFx0XHRcdGEgPSByKDM2ODkpLFxuXHRcdFx0XHRcdHUgPSByKDQyMDEpLFxuXHRcdFx0XHRcdGMgPSByKDU3NzMpLFxuXHRcdFx0XHRcdHMgPSB1KCdzcGVjaWVzJyksXG5cdFx0XHRcdFx0ZiA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCBsKSB7XG5cdFx0XHRcdFx0dmFyIHAgPSB1KHQpLFxuXHRcdFx0XHRcdFx0aCA9ICFhKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSB7fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQoZVtwXSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiA3O1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdDcgIT09ICcnW3RdKGUpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHYgPVxuXHRcdFx0XHRcdFx0XHRoICYmXG5cdFx0XHRcdFx0XHRcdCFhKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9ICExLFxuXHRcdFx0XHRcdFx0XHRcdFx0ciA9IC9hLztcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0J3NwbGl0JyA9PT0gdCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoKChyID0ge30pLmNvbnN0cnVjdG9yID0ge30pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoci5jb25zdHJ1Y3RvcltzXSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChyLmZsYWdzID0gJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQocltwXSA9IC8uL1twXSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIuZXhlYyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChlID0gITApLCBudWxsO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRyW3BdKCcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdCFlXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0aWYgKCFoIHx8ICF2IHx8IHIpIHtcblx0XHRcdFx0XHRcdHZhciBkID0gbigvLi9bcF0pLFxuXHRcdFx0XHRcdFx0XHR5ID0gZShwLCAnJ1t0XSwgZnVuY3Rpb24gKHQsIGUsIHIsIG8sIGEpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgdSA9IG4odCksXG5cdFx0XHRcdFx0XHRcdFx0XHRjID0gZS5leGVjO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBjID09PSBpIHx8IGMgPT09IGYuZXhlY1xuXHRcdFx0XHRcdFx0XHRcdFx0PyBoICYmICFhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8ge2RvbmU6ICEwLCB2YWx1ZTogZChlLCByLCBvKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0OiB7ZG9uZTogITAsIHZhbHVlOiB1KHIsIGUsIG8pfVxuXHRcdFx0XHRcdFx0XHRcdFx0OiB7ZG9uZTogITF9O1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdG8oU3RyaW5nLnByb3RvdHlwZSwgdCwgeVswXSksIG8oZiwgcCwgeVsxXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGwgJiYgYyhmW3BdLCAnc2hhbScsICEwKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxNTk0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9ICFuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0MTczNTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDcyMTUpLFxuXHRcdFx0XHRcdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG5cdFx0XHRcdFx0aSA9IG8uYXBwbHksXG5cdFx0XHRcdFx0YSA9IG8uY2FsbDtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHQoJ29iamVjdCcgPT0gdHlwZW9mIFJlZmxlY3QgJiYgUmVmbGVjdC5hcHBseSkgfHxcblx0XHRcdFx0XHQoblxuXHRcdFx0XHRcdFx0PyBhLmJpbmQoaSlcblx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhLmFwcGx5KGksIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDQwNzE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2NTc2KSxcblx0XHRcdFx0XHRvID0gcig1MDkpLFxuXHRcdFx0XHRcdGkgPSByKDcyMTUpLFxuXHRcdFx0XHRcdGEgPSBuKG4uYmluZCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdG8odCksXG5cdFx0XHRcdFx0XHR2b2lkIDAgPT09IGVcblx0XHRcdFx0XHRcdFx0PyB0XG5cdFx0XHRcdFx0XHRcdDogaVxuXHRcdFx0XHRcdFx0XHRcdD8gYSh0LCBlKVxuXHRcdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hcHBseShlLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzIxNTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2ODkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAhbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIHQgPSBmdW5jdGlvbiAoKSB7fS5iaW5kKCk7XG5cdFx0XHRcdFx0cmV0dXJuICdmdW5jdGlvbicgIT0gdHlwZW9mIHQgfHwgdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDY3NjE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcig1MDkpLFxuXHRcdFx0XHRcdGkgPSByKDg5OTkpLFxuXHRcdFx0XHRcdGEgPSByKDY4MTIpLFxuXHRcdFx0XHRcdHUgPSByKDYwMDQpLFxuXHRcdFx0XHRcdGMgPSByKDcyMTUpLFxuXHRcdFx0XHRcdHMgPSBGdW5jdGlvbixcblx0XHRcdFx0XHRmID0gbihbXS5jb25jYXQpLFxuXHRcdFx0XHRcdGwgPSBuKFtdLmpvaW4pLFxuXHRcdFx0XHRcdHAgPSB7fTtcblx0XHRcdFx0dC5leHBvcnRzID0gY1xuXHRcdFx0XHRcdD8gcy5iaW5kXG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IG8odGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IGUucHJvdG90eXBlLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSB1KGFyZ3VtZW50cywgMSksXG5cdFx0XHRcdFx0XHRcdFx0YyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByID0gZihuLCB1KGFyZ3VtZW50cykpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBjXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIWEocCwgZSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbiA9IFtdLCBvID0gMDsgbyA8IGU7IG8rKykgbltvXSA9ICdhWycgKyBvICsgJ10nO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwW2VdID0gcygnQyxhJywgJ3JldHVybiBuZXcgQygnICsgbChuLCAnLCcpICsgJyknKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBwW2VdKHQsIHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKGUsIHIubGVuZ3RoLCByKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGUuYXBwbHkodCwgcik7XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGkocikgJiYgKGMucHJvdG90eXBlID0gciksIGM7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDI2MTU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3MjE1KSxcblx0XHRcdFx0XHRvID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG5cblx0XHRcdFx0XHQ/IG8uYmluZChvKVxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gby5hcHBseShvLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxMjM2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzY5NyksXG5cdFx0XHRcdFx0byA9IHIoNjgxMiksXG5cdFx0XHRcdFx0aSA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0XHRcdFx0XHRhID0gbiAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHRcdFx0XHRcdHUgPSBvKGksICduYW1lJyksXG5cdFx0XHRcdFx0YyA9IHUgJiYgJ3NvbWV0aGluZycgPT09IGZ1bmN0aW9uICgpIHt9Lm5hbWUsXG5cdFx0XHRcdFx0cyA9IHUgJiYgKCFuIHx8IChuICYmIGEoaSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdEVYSVNUUzogdSxcblx0XHRcdFx0XHRQUk9QRVI6IGMsXG5cdFx0XHRcdFx0Q09ORklHVVJBQkxFOiBzLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDI3NDM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcig1MDkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbihvKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgZSlbcl0pKTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDY1NzY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2NjQ4KSxcblx0XHRcdFx0XHRvID0gcig4ODQ0KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRpZiAoJ0Z1bmN0aW9uJyA9PT0gbih0KSkgcmV0dXJuIG8odCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0ODg0NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDcyMTUpLFxuXHRcdFx0XHRcdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG5cdFx0XHRcdFx0aSA9IG8uY2FsbCxcblx0XHRcdFx0XHRhID0gbiAmJiBvLmJpbmQuYmluZChpLCBpKTtcblx0XHRcdFx0dC5leHBvcnRzID0gblxuXHRcdFx0XHRcdD8gYVxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaS5hcHBseSh0LCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2MDU4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyksXG5cdFx0XHRcdFx0byA9IHIoOTk4NSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gKChyID0gblt0XSksIG8ocikgPyByIDogdm9pZCAwKSA6IG5bdF0gJiYgblt0XVtlXTtcblx0XHRcdFx0XHR2YXIgcjtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyMzAyOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRpdGVyYXRvcjogdCxcblx0XHRcdFx0XHRcdG5leHQ6IHQubmV4dCxcblx0XHRcdFx0XHRcdGRvbmU6ICExLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MTY2NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDkyNiksXG5cdFx0XHRcdFx0byA9IHIoNDg0OSksXG5cdFx0XHRcdFx0aSA9IHIoOTgxKSxcblx0XHRcdFx0XHRhID0gcig5NDc4KSxcblx0XHRcdFx0XHR1ID0gcig0MjAxKSgnaXRlcmF0b3InKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRpZiAoIWkodCkpIHJldHVybiBvKHQsIHUpIHx8IG8odCwgJ0BAaXRlcmF0b3InKSB8fCBhW24odCldO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDUxODU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig1MDkpLFxuXHRcdFx0XHRcdGkgPSByKDUwMjcpLFxuXHRcdFx0XHRcdGEgPSByKDM2OTEpLFxuXHRcdFx0XHRcdHUgPSByKDE2NjQpLFxuXHRcdFx0XHRcdGMgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dmFyIHIgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHUodCkgOiBlO1xuXHRcdFx0XHRcdGlmIChvKHIpKSByZXR1cm4gaShuKHIsIHQpKTtcblx0XHRcdFx0XHR0aHJvdyBuZXcgYyhhKHQpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyNjQzOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IHIoMjI5NyksXG5cdFx0XHRcdFx0aSA9IHIoOTk4NSksXG5cdFx0XHRcdFx0YSA9IHIoNjY0OCksXG5cdFx0XHRcdFx0dSA9IHIoNDMyNyksXG5cdFx0XHRcdFx0YyA9IG4oW10ucHVzaCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0aWYgKGkodCkpIHJldHVybiB0O1xuXHRcdFx0XHRcdGlmIChvKHQpKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdC5sZW5ndGgsIHIgPSBbXSwgbiA9IDA7IG4gPCBlOyBuKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSB0W25dO1xuXHRcdFx0XHRcdFx0XHQnc3RyaW5nJyA9PSB0eXBlb2Ygc1xuXHRcdFx0XHRcdFx0XHRcdD8gYyhyLCBzKVxuXHRcdFx0XHRcdFx0XHRcdDogKCdudW1iZXInICE9IHR5cGVvZiBzICYmICdOdW1iZXInICE9PSBhKHMpICYmICdTdHJpbmcnICE9PSBhKHMpKSB8fCBjKHIsIHUocykpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIGYgPSByLmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0bCA9ICEwO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChsKSByZXR1cm4gKGwgPSAhMSksIGU7XG5cdFx0XHRcdFx0XHRcdGlmIChvKHRoaXMpKSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbiA9IDA7IG4gPCBmOyBuKyspIGlmIChyW25dID09PSB0KSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDQ4NDk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig1MDkpLFxuXHRcdFx0XHRcdG8gPSByKDk4MSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dmFyIHIgPSB0W2VdO1xuXHRcdFx0XHRcdHJldHVybiBvKHIpID8gdm9pZCAwIDogbihyKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3MDE3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IHIoNjkwKSxcblx0XHRcdFx0XHRpID0gTWF0aC5mbG9vcixcblx0XHRcdFx0XHRhID0gbignJy5jaGFyQXQpLFxuXHRcdFx0XHRcdHUgPSBuKCcnLnJlcGxhY2UpLFxuXHRcdFx0XHRcdGMgPSBuKCcnLnNsaWNlKSxcblx0XHRcdFx0XHRzID0gL1xcJChbJCYnYF18XFxkezEsMn18PFtePl0qPikvZyxcblx0XHRcdFx0XHRmID0gL1xcJChbJCYnYF18XFxkezEsMn0pL2c7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCBuLCBsLCBwKSB7XG5cdFx0XHRcdFx0dmFyIGggPSByICsgdC5sZW5ndGgsXG5cdFx0XHRcdFx0XHR2ID0gbi5sZW5ndGgsXG5cdFx0XHRcdFx0XHRkID0gZjtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0dm9pZCAwICE9PSBsICYmICgobCA9IG8obCkpLCAoZCA9IHMpKSxcblx0XHRcdFx0XHRcdHUocCwgZCwgZnVuY3Rpb24gKG8sIHUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHM7XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoYSh1LCAwKSkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJyQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICckJztcblx0XHRcdFx0XHRcdFx0XHRjYXNlICcmJzpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2AnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGMoZSwgMCwgcik7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIidcIjpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBjKGUsIGgpO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgJzwnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cyA9IGxbYyh1LCAxLCAtMSldO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBmID0gK3U7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoMCA9PT0gZikgcmV0dXJuIG87XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZiA+IHYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHAgPSBpKGYgLyAxMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAwID09PSBwXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBvXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBwIDw9IHZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gdm9pZCAwID09PSBuW3AgLSAxXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGEodSwgMSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBuW3AgLSAxXSArIGEodSwgMSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogbztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHMgPSBuW2YgLSAxXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdm9pZCAwID09PSBzID8gJycgOiBzO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDkwMzc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gdCAmJiB0Lk1hdGggPT09IE1hdGggJiYgdDtcblx0XHRcdFx0fTtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHRuKCdvYmplY3QnID09IHR5cGVvZiBnbG9iYWxUaGlzICYmIGdsb2JhbFRoaXMpIHx8XG5cdFx0XHRcdFx0bignb2JqZWN0JyA9PSB0eXBlb2Ygd2luZG93ICYmIHdpbmRvdykgfHxcblx0XHRcdFx0XHRuKCdvYmplY3QnID09IHR5cGVvZiBzZWxmICYmIHNlbGYpIHx8XG5cdFx0XHRcdFx0bignb2JqZWN0JyA9PSB0eXBlb2Ygci5nICYmIHIuZykgfHxcblx0XHRcdFx0XHRuKCdvYmplY3QnID09IHR5cGVvZiB0aGlzICYmIHRoaXMpIHx8XG5cdFx0XHRcdFx0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH0pKCkgfHxcblx0XHRcdFx0XHRGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHRcdFx0fSxcblx0XHRcdDY4MTI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcig2OTApLFxuXHRcdFx0XHRcdGkgPSBuKHt9Lmhhc093blByb3BlcnR5KTtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHRPYmplY3QuaGFzT3duIHx8XG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBpKG8odCksIGUpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzI0ODogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0ge307XG5cdFx0XHR9LFxuXHRcdFx0OTIwOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHQxID09PSBhcmd1bWVudHMubGVuZ3RoID8gY29uc29sZS5lcnJvcih0KSA6IGNvbnNvbGUuZXJyb3IodCwgZSk7XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyNjg4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjA1OCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuXHRcdFx0fSxcblx0XHRcdDg1MDY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcig2NDIwKTtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHQhbiAmJlxuXHRcdFx0XHRcdCFvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdDcgIT09XG5cdFx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpKCdkaXYnKSwgJ2EnLCB7XG5cdFx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gNztcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9KS5hXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDQ0MTM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcig2NjQ4KSxcblx0XHRcdFx0XHRhID0gT2JqZWN0LFxuXHRcdFx0XHRcdHUgPSBuKCcnLnNwbGl0KTtcblx0XHRcdFx0dC5leHBvcnRzID0gbyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuICFhKCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJ1N0cmluZycgPT09IGkodCkgPyB1KHQsICcnKSA6IGEodCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0OiBhO1xuXHRcdFx0fSxcblx0XHRcdDM0NTc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg1KSxcblx0XHRcdFx0XHRvID0gcig4OTk5KSxcblx0XHRcdFx0XHRpID0gcig5Mzg1KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgYSwgdTtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0aSAmJiBuKChhID0gZS5jb25zdHJ1Y3RvcikpICYmIGEgIT09IHIgJiYgbygodSA9IGEucHJvdG90eXBlKSkgJiYgdSAhPT0gci5wcm90b3R5cGUgJiYgaSh0LCB1KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDY3Mzg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcig5OTg1KSxcblx0XHRcdFx0XHRpID0gcig0MDkxKSxcblx0XHRcdFx0XHRhID0gbihGdW5jdGlvbi50b1N0cmluZyk7XG5cdFx0XHRcdG8oaS5pbnNwZWN0U291cmNlKSB8fFxuXHRcdFx0XHRcdChpLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGEodCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9IGkuaW5zcGVjdFNvdXJjZSk7XG5cdFx0XHR9LFxuXHRcdFx0MjU3MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg5OTkpLFxuXHRcdFx0XHRcdG8gPSByKDU3NzMpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdG4oZSkgJiYgJ2NhdXNlJyBpbiBlICYmIG8odCwgJ2NhdXNlJywgZS5jYXVzZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTM3NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDcyNDgpLFxuXHRcdFx0XHRcdGEgPSByKDg5OTkpLFxuXHRcdFx0XHRcdHUgPSByKDY4MTIpLFxuXHRcdFx0XHRcdGMgPSByKDI1NjApLmYsXG5cdFx0XHRcdFx0cyA9IHIoMjc0MSksXG5cdFx0XHRcdFx0ZiA9IHIoNjA2MiksXG5cdFx0XHRcdFx0bCA9IHIoMTEyOSksXG5cdFx0XHRcdFx0cCA9IHIoNDYzMCksXG5cdFx0XHRcdFx0aCA9IHIoMTU5NCksXG5cdFx0XHRcdFx0diA9ICExLFxuXHRcdFx0XHRcdGQgPSBwKCdtZXRhJyksXG5cdFx0XHRcdFx0eSA9IDAsXG5cdFx0XHRcdFx0ZyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRjKHQsIGQsIHt2YWx1ZToge29iamVjdElEOiAnTycgKyB5KyssIHdlYWtEYXRhOiB7fX19KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG0gPSAodC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdFx0ZW5hYmxlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdChtLmVuYWJsZSA9IGZ1bmN0aW9uICgpIHt9KSwgKHYgPSAhMCk7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gcy5mLFxuXHRcdFx0XHRcdFx0XHRcdGUgPSBvKFtdLnNwbGljZSksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IHt9O1xuXHRcdFx0XHRcdFx0XHQocltkXSA9IDEpLFxuXHRcdFx0XHRcdFx0XHRcdHQocikubGVuZ3RoICYmXG5cdFx0XHRcdFx0XHRcdFx0XHQoKHMuZiA9IGZ1bmN0aW9uIChyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIG4gPSB0KHIpLCBvID0gMCwgaSA9IG4ubGVuZ3RoOyBvIDwgaTsgbysrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChuW29dID09PSBkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlKG4sIG8sIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbjtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcmdldDogJ09iamVjdCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3RhdDogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yY2VkOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0e2dldE93blByb3BlcnR5TmFtZXM6IGYuZn1cblx0XHRcdFx0XHRcdFx0XHRcdCkpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGZhc3RLZXk6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghYSh0KSkgcmV0dXJuICdzeW1ib2wnID09IHR5cGVvZiB0ID8gdCA6ICgnc3RyaW5nJyA9PSB0eXBlb2YgdCA/ICdTJyA6ICdQJykgKyB0O1xuXHRcdFx0XHRcdFx0XHRpZiAoIXUodCwgZCkpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIWwodCkpIHJldHVybiAnRic7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFlKSByZXR1cm4gJ0UnO1xuXHRcdFx0XHRcdFx0XHRcdGcodCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRbZF0ub2JqZWN0SUQ7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Z2V0V2Vha0RhdGE6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghdSh0LCBkKSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICghbCh0KSkgcmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0XHRcdGlmICghZSkgcmV0dXJuICExO1xuXHRcdFx0XHRcdFx0XHRcdGcodCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRbZF0ud2Vha0RhdGE7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25GcmVlemU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBoICYmIHYgJiYgbCh0KSAmJiAhdSh0LCBkKSAmJiBnKHQpLCB0O1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0aVtkXSA9ICEwO1xuXHRcdFx0fSxcblx0XHRcdDYxODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdGEgPSByKDk4MzQpLFxuXHRcdFx0XHRcdHUgPSByKDkwMzcpLFxuXHRcdFx0XHRcdGMgPSByKDg5OTkpLFxuXHRcdFx0XHRcdHMgPSByKDU3NzMpLFxuXHRcdFx0XHRcdGYgPSByKDY4MTIpLFxuXHRcdFx0XHRcdGwgPSByKDQwOTEpLFxuXHRcdFx0XHRcdHAgPSByKDI3MTMpLFxuXHRcdFx0XHRcdGggPSByKDcyNDgpLFxuXHRcdFx0XHRcdHYgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnLFxuXHRcdFx0XHRcdGQgPSB1LlR5cGVFcnJvcixcblx0XHRcdFx0XHR5ID0gdS5XZWFrTWFwO1xuXHRcdFx0XHRpZiAoYSB8fCBsLnN0YXRlKSB7XG5cdFx0XHRcdFx0dmFyIGcgPSBsLnN0YXRlIHx8IChsLnN0YXRlID0gbmV3IHkoKSk7XG5cdFx0XHRcdFx0KGcuZ2V0ID0gZy5nZXQpLFxuXHRcdFx0XHRcdFx0KGcuaGFzID0gZy5oYXMpLFxuXHRcdFx0XHRcdFx0KGcuc2V0ID0gZy5zZXQpLFxuXHRcdFx0XHRcdFx0KG4gPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZy5oYXModCkpIHRocm93IG5ldyBkKHYpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGUuZmFjYWRlID0gdCksIGcuc2V0KHQsIGUpLCBlO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQobyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBnLmdldCh0KSB8fCB7fTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0KGkgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZy5oYXModCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YXIgbSA9IHAoJ3N0YXRlJyk7XG5cdFx0XHRcdFx0KGhbbV0gPSAhMCksXG5cdFx0XHRcdFx0XHQobiA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChmKHQsIG0pKSB0aHJvdyBuZXcgZCh2KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChlLmZhY2FkZSA9IHQpLCBzKHQsIG0sIGUpLCBlO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQobyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmKHQsIG0pID8gdFttXSA6IHt9O1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQoaSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmKHQsIG0pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdHNldDogbixcblx0XHRcdFx0XHRnZXQ6IG8sXG5cdFx0XHRcdFx0aGFzOiBpLFxuXHRcdFx0XHRcdGVuZm9yY2U6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gaSh0KSA/IG8odCkgOiBuKHQsIHt9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldHRlckZvcjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgcjtcblx0XHRcdFx0XHRcdFx0aWYgKCFjKGUpIHx8IChyID0gbyhlKSkudHlwZSAhPT0gdClcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgZCgnSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgdCArICcgcmVxdWlyZWQnKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHI7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzI5MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQyMDEpLFxuXHRcdFx0XHRcdG8gPSByKDk0NzgpLFxuXHRcdFx0XHRcdGkgPSBuKCdpdGVyYXRvcicpLFxuXHRcdFx0XHRcdGEgPSBBcnJheS5wcm90b3R5cGU7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZvaWQgMCAhPT0gdCAmJiAoby5BcnJheSA9PT0gdCB8fCBhW2ldID09PSB0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyMjk3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjY0OCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0QXJyYXkuaXNBcnJheSB8fFxuXHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ0FycmF5JyA9PT0gbih0KTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDk5ODU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjU5KSxcblx0XHRcdFx0XHRvID0gbi5hbGw7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4uSVNfSFRNTEREQVxuXHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICdmdW5jdGlvbicgPT0gdHlwZW9mIHQgfHwgdCA9PT0gbztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAnZnVuY3Rpb24nID09IHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ5NDI5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IHIoMzY4OSksXG5cdFx0XHRcdFx0aSA9IHIoOTk4NSksXG5cdFx0XHRcdFx0YSA9IHIoOTI2KSxcblx0XHRcdFx0XHR1ID0gcig2MDU4KSxcblx0XHRcdFx0XHRjID0gcig2NzM4KSxcblx0XHRcdFx0XHRzID0gZnVuY3Rpb24gKCkge30sXG5cdFx0XHRcdFx0ZiA9IFtdLFxuXHRcdFx0XHRcdGwgPSB1KCdSZWZsZWN0JywgJ2NvbnN0cnVjdCcpLFxuXHRcdFx0XHRcdHAgPSAvXlxccyooPzpjbGFzc3xmdW5jdGlvbilcXGIvLFxuXHRcdFx0XHRcdGggPSBuKHAuZXhlYyksXG5cdFx0XHRcdFx0diA9ICFwLnRlc3QocyksXG5cdFx0XHRcdFx0ZCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRpZiAoIWkodCkpIHJldHVybiAhMTtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBsKHMsIGYsIHQpLCAhMDtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICExO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0eSA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRpZiAoIWkodCkpIHJldHVybiAhMTtcblx0XHRcdFx0XHRcdHN3aXRjaCAoYSh0KSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlICdBc3luY0Z1bmN0aW9uJzpcblx0XHRcdFx0XHRcdFx0Y2FzZSAnR2VuZXJhdG9yRnVuY3Rpb24nOlxuXHRcdFx0XHRcdFx0XHRjYXNlICdBc3luY0dlbmVyYXRvckZ1bmN0aW9uJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gITE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdiB8fCAhIWgocCwgYyh0KSk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAhMDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHQoeS5zaGFtID0gITApLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdFx0IWwgfHxcblx0XHRcdFx0XHRcdG8oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRkKGQuY2FsbCkgfHxcblx0XHRcdFx0XHRcdFx0XHQhZChPYmplY3QpIHx8XG5cdFx0XHRcdFx0XHRcdFx0IWQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dCA9ICEwO1xuXHRcdFx0XHRcdFx0XHRcdH0pIHx8XG5cdFx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0PyB5XG5cdFx0XHRcdFx0XHRcdDogZCk7XG5cdFx0XHR9LFxuXHRcdFx0NTI2NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2ODkpLFxuXHRcdFx0XHRcdG8gPSByKDk5ODUpLFxuXHRcdFx0XHRcdGkgPSAvI3xcXC5wcm90b3R5cGVcXC4vLFxuXHRcdFx0XHRcdGEgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBjW3UodCldO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHIgPT09IGYgfHwgKHIgIT09IHMgJiYgKG8oZSkgPyBuKGUpIDogISFlKSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1ID0gKGEubm9ybWFsaXplID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBTdHJpbmcodCkucmVwbGFjZShpLCAnLicpLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0YyA9IChhLmRhdGEgPSB7fSksXG5cdFx0XHRcdFx0cyA9IChhLk5BVElWRSA9ICdOJyksXG5cdFx0XHRcdFx0ZiA9IChhLlBPTFlGSUxMID0gJ1AnKTtcblx0XHRcdFx0dC5leHBvcnRzID0gYTtcblx0XHRcdH0sXG5cdFx0XHQ5ODE6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGwgPT0gdDtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4OTk5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4NSksXG5cdFx0XHRcdFx0byA9IHIoMjY1OSksXG5cdFx0XHRcdFx0aSA9IG8uYWxsO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBvLklTX0hUTUxEREFcblx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAnb2JqZWN0JyA9PSB0eXBlb2YgdCA/IG51bGwgIT09IHQgOiBuKHQpIHx8IHQgPT09IGk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gJ29iamVjdCcgPT0gdHlwZW9mIHQgPyBudWxsICE9PSB0IDogbih0KTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MzkzMTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0gITE7XG5cdFx0XHR9LFxuXHRcdFx0MTI0NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg5OTkpLFxuXHRcdFx0XHRcdG8gPSByKDY2NDgpLFxuXHRcdFx0XHRcdGkgPSByKDQyMDEpKCdtYXRjaCcpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlO1xuXHRcdFx0XHRcdHJldHVybiBuKHQpICYmICh2b2lkIDAgIT09IChlID0gdFtpXSkgPyAhIWUgOiAnUmVnRXhwJyA9PT0gbyh0KSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzM0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjA1OCksXG5cdFx0XHRcdFx0byA9IHIoOTk4NSksXG5cdFx0XHRcdFx0aSA9IHIoMzYyMiksXG5cdFx0XHRcdFx0YSA9IHIoOTUyNSksXG5cdFx0XHRcdFx0dSA9IE9iamVjdDtcblx0XHRcdFx0dC5leHBvcnRzID0gYVxuXHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICdzeW1ib2wnID09IHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBuKCdTeW1ib2wnKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8oZSkgJiYgaShlLnByb3RvdHlwZSwgdSh0KSk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDY3MDQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBvLCBpLCBhID0gciA/IHQgOiB0Lml0ZXJhdG9yLCB1ID0gdC5uZXh0OyAhKG8gPSBuKHUsIGEpKS5kb25lOyApXG5cdFx0XHRcdFx0XHRpZiAodm9pZCAwICE9PSAoaSA9IGUoby52YWx1ZSkpKSByZXR1cm4gaTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4NzM0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDA3MSksXG5cdFx0XHRcdFx0byA9IHIoMjYxNSksXG5cdFx0XHRcdFx0aSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0YSA9IHIoMzY5MSksXG5cdFx0XHRcdFx0dSA9IHIoMzI5MiksXG5cdFx0XHRcdFx0YyA9IHIoNjMxMCksXG5cdFx0XHRcdFx0cyA9IHIoMzYyMiksXG5cdFx0XHRcdFx0ZiA9IHIoNTE4NSksXG5cdFx0XHRcdFx0bCA9IHIoMTY2NCksXG5cdFx0XHRcdFx0cCA9IHIoMjEyNSksXG5cdFx0XHRcdFx0aCA9IFR5cGVFcnJvcixcblx0XHRcdFx0XHR2ID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdCh0aGlzLnN0b3BwZWQgPSB0KSwgKHRoaXMucmVzdWx0ID0gZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRkID0gdi5wcm90b3R5cGU7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0dmFyIHksXG5cdFx0XHRcdFx0XHRnLFxuXHRcdFx0XHRcdFx0bSxcblx0XHRcdFx0XHRcdGIsXG5cdFx0XHRcdFx0XHR3LFxuXHRcdFx0XHRcdFx0eCxcblx0XHRcdFx0XHRcdGssXG5cdFx0XHRcdFx0XHRTID0gciAmJiByLnRoYXQsXG5cdFx0XHRcdFx0XHRFID0gISghciB8fCAhci5BU19FTlRSSUVTKSxcblx0XHRcdFx0XHRcdE8gPSAhKCFyIHx8ICFyLklTX1JFQ09SRCksXG5cdFx0XHRcdFx0XHRQID0gISghciB8fCAhci5JU19JVEVSQVRPUiksXG5cdFx0XHRcdFx0XHRqID0gISghciB8fCAhci5JTlRFUlJVUFRFRCksXG5cdFx0XHRcdFx0XHRMID0gbihlLCBTKSxcblx0XHRcdFx0XHRcdF8gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4geSAmJiBwKHksICdub3JtYWwnLCB0KSwgbmV3IHYoITAsIHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdEkgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gRSA/IChpKHQpLCBqID8gTCh0WzBdLCB0WzFdLCBfKSA6IEwodFswXSwgdFsxXSkpIDogaiA/IEwodCwgXykgOiBMKHQpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRpZiAoTykgeSA9IHQuaXRlcmF0b3I7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoUCkgeSA9IHQ7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAoIShnID0gbCh0KSkpIHRocm93IG5ldyBoKGEodCkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuXHRcdFx0XHRcdFx0aWYgKHUoZykpIHtcblx0XHRcdFx0XHRcdFx0Zm9yIChtID0gMCwgYiA9IGModCk7IGIgPiBtOyBtKyspIGlmICgodyA9IEkodFttXSkpICYmIHMoZCwgdykpIHJldHVybiB3O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IHYoITEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0eSA9IGYodCwgZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZvciAoeCA9IE8gPyB0Lm5leHQgOiB5Lm5leHQ7ICEoayA9IG8oeCwgeSkpLmRvbmU7ICkge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0dyA9IEkoay52YWx1ZSk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdHAoeSwgJ3Rocm93JywgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgPT0gdHlwZW9mIHcgJiYgdyAmJiBzKGQsIHcpKSByZXR1cm4gdztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyB2KCExKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyMTI1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjYxNSksXG5cdFx0XHRcdFx0byA9IHIoNTAyNyksXG5cdFx0XHRcdFx0aSA9IHIoNDg0OSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0dmFyIGEsIHU7XG5cdFx0XHRcdFx0byh0KTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0aWYgKCEoYSA9IGkodCwgJ3JldHVybicpKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gZSkgdGhyb3cgcjtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRhID0gbihhLCB0KTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHQodSA9ICEwKSwgKGEgPSB0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGUpIHRocm93IHI7XG5cdFx0XHRcdFx0aWYgKHUpIHRocm93IGE7XG5cdFx0XHRcdFx0cmV0dXJuIG8oYSksIHI7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0OTc0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjAxMykuSXRlcmF0b3JQcm90b3R5cGUsXG5cdFx0XHRcdFx0byA9IHIoNTM5MSksXG5cdFx0XHRcdFx0aSA9IHIoNTY4NCksXG5cdFx0XHRcdFx0YSA9IHIoNTk5NyksXG5cdFx0XHRcdFx0dSA9IHIoOTQ3OCksXG5cdFx0XHRcdFx0YyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCBzKSB7XG5cdFx0XHRcdFx0dmFyIGYgPSBlICsgJyBJdGVyYXRvcic7XG5cdFx0XHRcdFx0cmV0dXJuICh0LnByb3RvdHlwZSA9IG8obiwge25leHQ6IGkoKyFzLCByKX0pKSwgYSh0LCBmLCAhMSwgITApLCAodVtmXSA9IGMpLCB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDU0MTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig1MzkxKSxcblx0XHRcdFx0XHRpID0gcig1NzczKSxcblx0XHRcdFx0XHRhID0gcig2MDQ1KSxcblx0XHRcdFx0XHR1ID0gcig0MjAxKSxcblx0XHRcdFx0XHRjID0gcig2MTgpLFxuXHRcdFx0XHRcdHMgPSByKDQ4NDkpLFxuXHRcdFx0XHRcdGYgPSByKDIwMTMpLkl0ZXJhdG9yUHJvdG90eXBlLFxuXHRcdFx0XHRcdGwgPSByKDc4MDcpLFxuXHRcdFx0XHRcdHAgPSByKDIxMjUpLFxuXHRcdFx0XHRcdGggPSB1KCd0b1N0cmluZ1RhZycpLFxuXHRcdFx0XHRcdHYgPSAnSXRlcmF0b3JIZWxwZXInLFxuXHRcdFx0XHRcdGQgPSAnV3JhcEZvclZhbGlkSXRlcmF0b3InLFxuXHRcdFx0XHRcdHkgPSBjLnNldCxcblx0XHRcdFx0XHRnID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gYy5nZXR0ZXJGb3IodCA/IGQgOiB2KTtcblx0XHRcdFx0XHRcdHJldHVybiBhKG8oZiksIHtcblx0XHRcdFx0XHRcdFx0bmV4dDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gZSh0aGlzKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAodCkgcmV0dXJuIHIubmV4dEhhbmRsZXIoKTtcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLmRvbmUgPyB2b2lkIDAgOiByLm5leHRIYW5kbGVyKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbChuLCByLmRvbmUpO1xuXHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRocm93ICgoci5kb25lID0gITApLCB0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHJldHVybjogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gZSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRcdG8gPSByLml0ZXJhdG9yO1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoKHIuZG9uZSA9ICEwKSwgdCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBpID0gcyhvLCAncmV0dXJuJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaSA/IG4oaSwgbykgOiBsKHZvaWQgMCwgITApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoci5pbm5lcilcblx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHAoci5pbm5lci5pdGVyYXRvciwgJ25vcm1hbCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcChvLCAndGhyb3cnLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcChvLCAnbm9ybWFsJyksIGwodm9pZCAwLCAhMCk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG0gPSBnKCEwKSxcblx0XHRcdFx0XHRiID0gZyghMSk7XG5cdFx0XHRcdGkoYiwgaCwgJ0l0ZXJhdG9yIEhlbHBlcicpLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBmdW5jdGlvbiAociwgbikge1xuXHRcdFx0XHRcdFx0XHRuID8gKChuLml0ZXJhdG9yID0gci5pdGVyYXRvciksIChuLm5leHQgPSByLm5leHQpKSA6IChuID0gciksXG5cdFx0XHRcdFx0XHRcdFx0KG4udHlwZSA9IGUgPyBkIDogdiksXG5cdFx0XHRcdFx0XHRcdFx0KG4ubmV4dEhhbmRsZXIgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHQobi5jb3VudGVyID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KG4uZG9uZSA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHR5KHRoaXMsIG4pO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHJldHVybiAoci5wcm90b3R5cGUgPSBlID8gbSA6IGIpLCByO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDE5MzQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigyNjE1KSxcblx0XHRcdFx0XHRpID0gcigzOTMxKSxcblx0XHRcdFx0XHRhID0gcigxMjM2KSxcblx0XHRcdFx0XHR1ID0gcig5OTg1KSxcblx0XHRcdFx0XHRjID0gcig5NzQpLFxuXHRcdFx0XHRcdHMgPSByKDE4NjgpLFxuXHRcdFx0XHRcdGYgPSByKDkzODUpLFxuXHRcdFx0XHRcdGwgPSByKDU5OTcpLFxuXHRcdFx0XHRcdHAgPSByKDU3NzMpLFxuXHRcdFx0XHRcdGggPSByKDE4ODApLFxuXHRcdFx0XHRcdHYgPSByKDQyMDEpLFxuXHRcdFx0XHRcdGQgPSByKDk0NzgpLFxuXHRcdFx0XHRcdHkgPSByKDIwMTMpLFxuXHRcdFx0XHRcdGcgPSBhLlBST1BFUixcblx0XHRcdFx0XHRtID0gYS5DT05GSUdVUkFCTEUsXG5cdFx0XHRcdFx0YiA9IHkuSXRlcmF0b3JQcm90b3R5cGUsXG5cdFx0XHRcdFx0dyA9IHkuQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxcblx0XHRcdFx0XHR4ID0gdignaXRlcmF0b3InKSxcblx0XHRcdFx0XHRrID0gJ2tleXMnLFxuXHRcdFx0XHRcdFMgPSAndmFsdWVzJyxcblx0XHRcdFx0XHRFID0gJ2VudHJpZXMnLFxuXHRcdFx0XHRcdE8gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgciwgYSwgdiwgeSwgUCkge1xuXHRcdFx0XHRcdGMociwgZSwgYSk7XG5cdFx0XHRcdFx0dmFyIGosXG5cdFx0XHRcdFx0XHRMLFxuXHRcdFx0XHRcdFx0Xyxcblx0XHRcdFx0XHRcdEkgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRpZiAodCA9PT0gdiAmJiBDKSByZXR1cm4gQztcblx0XHRcdFx0XHRcdFx0aWYgKCF3ICYmIHQgJiYgdCBpbiAkKSByZXR1cm4gJFt0XTtcblx0XHRcdFx0XHRcdFx0c3dpdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBrOlxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgUzpcblx0XHRcdFx0XHRcdFx0XHRjYXNlIEU6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IHIodGhpcywgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyByKHRoaXMpO1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFQgPSBlICsgJyBJdGVyYXRvcicsXG5cdFx0XHRcdFx0XHRSID0gITEsXG5cdFx0XHRcdFx0XHQkID0gdC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0XHROID0gJFt4XSB8fCAkWydAQGl0ZXJhdG9yJ10gfHwgKHYgJiYgJFt2XSksXG5cdFx0XHRcdFx0XHRDID0gKCF3ICYmIE4pIHx8IEkodiksXG5cdFx0XHRcdFx0XHRBID0gKCdBcnJheScgPT09IGUgJiYgJC5lbnRyaWVzKSB8fCBOO1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdChBICYmXG5cdFx0XHRcdFx0XHRcdChqID0gcyhBLmNhbGwobmV3IHQoKSkpKSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJlxuXHRcdFx0XHRcdFx0XHRqLm5leHQgJiZcblx0XHRcdFx0XHRcdFx0KGkgfHwgcyhqKSA9PT0gYiB8fCAoZiA/IGYoaiwgYikgOiB1KGpbeF0pIHx8IGgoaiwgeCwgTykpLFxuXHRcdFx0XHRcdFx0XHRsKGosIFQsICEwLCAhMCksXG5cdFx0XHRcdFx0XHRcdGkgJiYgKGRbVF0gPSBPKSksXG5cdFx0XHRcdFx0XHRnICYmXG5cdFx0XHRcdFx0XHRcdHYgPT09IFMgJiZcblx0XHRcdFx0XHRcdFx0TiAmJlxuXHRcdFx0XHRcdFx0XHROLm5hbWUgIT09IFMgJiZcblx0XHRcdFx0XHRcdFx0KCFpICYmIG1cblx0XHRcdFx0XHRcdFx0XHQ/IHAoJCwgJ25hbWUnLCBTKVxuXHRcdFx0XHRcdFx0XHRcdDogKChSID0gITApLFxuXHRcdFx0XHRcdFx0XHRcdFx0KEMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvKE4sIHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSkpKSxcblx0XHRcdFx0XHRcdHYpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQoKEwgPSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWVzOiBJKFMpLFxuXHRcdFx0XHRcdFx0XHRcdGtleXM6IHkgPyBDIDogSShrKSxcblx0XHRcdFx0XHRcdFx0XHRlbnRyaWVzOiBJKEUpLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0UClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0Zm9yIChfIGluIEwpICh3IHx8IFIgfHwgIShfIGluICQpKSAmJiBoKCQsIF8sIExbX10pO1xuXHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdHRhcmdldDogZSxcblx0XHRcdFx0XHRcdFx0XHRcdHByb3RvOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdGZvcmNlZDogdyB8fCBSLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0TFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiAoaSAmJiAhUCkgfHwgJFt4XSA9PT0gQyB8fCBoKCQsIHgsIEMsIHtuYW1lOiB2fSksIChkW2VdID0gQyksIEw7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MjAxMzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdGEgPSByKDM2ODkpLFxuXHRcdFx0XHRcdHUgPSByKDk5ODUpLFxuXHRcdFx0XHRcdGMgPSByKDg5OTkpLFxuXHRcdFx0XHRcdHMgPSByKDUzOTEpLFxuXHRcdFx0XHRcdGYgPSByKDE4NjgpLFxuXHRcdFx0XHRcdGwgPSByKDE4ODApLFxuXHRcdFx0XHRcdHAgPSByKDQyMDEpLFxuXHRcdFx0XHRcdGggPSByKDM5MzEpLFxuXHRcdFx0XHRcdHYgPSBwKCdpdGVyYXRvcicpLFxuXHRcdFx0XHRcdGQgPSAhMTtcblx0XHRcdFx0W10ua2V5cyAmJiAoJ25leHQnIGluIChpID0gW10ua2V5cygpKSA/IChvID0gZihmKGkpKSkgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgKG4gPSBvKSA6IChkID0gITApKSxcblx0XHRcdFx0XHQhYyhuKSB8fFxuXHRcdFx0XHRcdGEoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB7fTtcblx0XHRcdFx0XHRcdHJldHVybiBuW3ZdLmNhbGwodCkgIT09IHQ7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdD8gKG4gPSB7fSlcblx0XHRcdFx0XHRcdDogaCAmJiAobiA9IHMobikpLFxuXHRcdFx0XHRcdHUoblt2XSkgfHxcblx0XHRcdFx0XHRcdGwobiwgdiwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0XHRJdGVyYXRvclByb3RvdHlwZTogbixcblx0XHRcdFx0XHRcdEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6IGQsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0OTQ3ODogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dC5leHBvcnRzID0ge307XG5cdFx0XHR9LFxuXHRcdFx0NjMxMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDMxMjYpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBuKHQubGVuZ3RoKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4NzAyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IHIoMzY4OSksXG5cdFx0XHRcdFx0aSA9IHIoOTk4NSksXG5cdFx0XHRcdFx0YSA9IHIoNjgxMiksXG5cdFx0XHRcdFx0dSA9IHIoNzY5NyksXG5cdFx0XHRcdFx0YyA9IHIoMTIzNikuQ09ORklHVVJBQkxFLFxuXHRcdFx0XHRcdHMgPSByKDY3MzgpLFxuXHRcdFx0XHRcdGYgPSByKDYxOCksXG5cdFx0XHRcdFx0bCA9IGYuZW5mb3JjZSxcblx0XHRcdFx0XHRwID0gZi5nZXQsXG5cdFx0XHRcdFx0aCA9IFN0cmluZyxcblx0XHRcdFx0XHR2ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LFxuXHRcdFx0XHRcdGQgPSBuKCcnLnNsaWNlKSxcblx0XHRcdFx0XHR5ID0gbignJy5yZXBsYWNlKSxcblx0XHRcdFx0XHRnID0gbihbXS5qb2luKSxcblx0XHRcdFx0XHRtID1cblx0XHRcdFx0XHRcdHUgJiZcblx0XHRcdFx0XHRcdCFvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIDggIT09IHYoZnVuY3Rpb24gKCkge30sICdsZW5ndGgnLCB7dmFsdWU6IDh9KS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRiID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpLFxuXHRcdFx0XHRcdHcgPSAodC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdCdTeW1ib2woJyA9PT0gZChoKGUpLCAwLCA3KSAmJiAoZSA9ICdbJyArIHkoaChlKSwgL15TeW1ib2xcXCgoW14pXSopXFwpLywgJyQxJykgKyAnXScpLFxuXHRcdFx0XHRcdFx0XHRyICYmIHIuZ2V0dGVyICYmIChlID0gJ2dldCAnICsgZSksXG5cdFx0XHRcdFx0XHRcdHIgJiYgci5zZXR0ZXIgJiYgKGUgPSAnc2V0ICcgKyBlKSxcblx0XHRcdFx0XHRcdFx0KCFhKHQsICduYW1lJykgfHwgKGMgJiYgdC5uYW1lICE9PSBlKSkgJiZcblx0XHRcdFx0XHRcdFx0XHQodSA/IHYodCwgJ25hbWUnLCB7dmFsdWU6IGUsIGNvbmZpZ3VyYWJsZTogITB9KSA6ICh0Lm5hbWUgPSBlKSksXG5cdFx0XHRcdFx0XHRcdG0gJiYgciAmJiBhKHIsICdhcml0eScpICYmIHQubGVuZ3RoICE9PSByLmFyaXR5ICYmIHYodCwgJ2xlbmd0aCcsIHt2YWx1ZTogci5hcml0eX0pO1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0ciAmJiBhKHIsICdjb25zdHJ1Y3RvcicpICYmIHIuY29uc3RydWN0b3Jcblx0XHRcdFx0XHRcdFx0XHQ/IHUgJiYgdih0LCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pXG5cdFx0XHRcdFx0XHRcdFx0OiB0LnByb3RvdHlwZSAmJiAodC5wcm90b3R5cGUgPSB2b2lkIDApO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0XHRcdHZhciBuID0gbCh0KTtcblx0XHRcdFx0XHRcdHJldHVybiBhKG4sICdzb3VyY2UnKSB8fCAobi5zb3VyY2UgPSBnKGIsICdzdHJpbmcnID09IHR5cGVvZiBlID8gZSA6ICcnKSksIHQ7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IHcoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiAoaSh0aGlzKSAmJiBwKHRoaXMpLnNvdXJjZSkgfHwgcyh0aGlzKTtcblx0XHRcdFx0fSwgJ3RvU3RyaW5nJyk7XG5cdFx0XHR9LFxuXHRcdFx0MzkxNDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSBNYXAucHJvdG90eXBlO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0TWFwOiBNYXAsXG5cdFx0XHRcdFx0c2V0OiBuKG8uc2V0KSxcblx0XHRcdFx0XHRnZXQ6IG4oby5nZXQpLFxuXHRcdFx0XHRcdGhhczogbihvLmhhcyksXG5cdFx0XHRcdFx0cmVtb3ZlOiBuKG8uZGVsZXRlKSxcblx0XHRcdFx0XHRwcm90bzogbyxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2MTM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcig2NzA0KSxcblx0XHRcdFx0XHRpID0gcigzOTE0KSxcblx0XHRcdFx0XHRhID0gaS5NYXAsXG5cdFx0XHRcdFx0dSA9IGkucHJvdG8sXG5cdFx0XHRcdFx0YyA9IG4odS5mb3JFYWNoKSxcblx0XHRcdFx0XHRzID0gbih1LmVudHJpZXMpLFxuXHRcdFx0XHRcdGYgPSBzKG5ldyBhKCkpLm5leHQ7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJcblx0XHRcdFx0XHRcdD8gbyhcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVyYXRvcjogcyh0KSxcblx0XHRcdFx0XHRcdFx0XHRcdG5leHQ6IGYsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGUodFsxXSwgdFswXSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQ6IGModCwgZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0ODgyODogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dmFyIGUgPSBNYXRoLmNlaWwsXG5cdFx0XHRcdFx0ciA9IE1hdGguZmxvb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0TWF0aC50cnVuYyB8fFxuXHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgbiA9ICt0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIChuID4gMCA/IHIgOiBlKShuKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDIzMTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0dSxcblx0XHRcdFx0XHRjID0gcig5MDM3KSxcblx0XHRcdFx0XHRzID0gcig0MDcxKSxcblx0XHRcdFx0XHRmID0gcigyNDc0KS5mLFxuXHRcdFx0XHRcdGwgPSByKDk4ODYpLnNldCxcblx0XHRcdFx0XHRwID0gcig0NDEwKSxcblx0XHRcdFx0XHRoID0gcig0NzY0KSxcblx0XHRcdFx0XHR2ID0gcigzMjIxKSxcblx0XHRcdFx0XHRkID0gcig3NDg2KSxcblx0XHRcdFx0XHR5ID0gcig4MDYpLFxuXHRcdFx0XHRcdGcgPSBjLk11dGF0aW9uT2JzZXJ2ZXIgfHwgYy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLFxuXHRcdFx0XHRcdG0gPSBjLmRvY3VtZW50LFxuXHRcdFx0XHRcdGIgPSBjLnByb2Nlc3MsXG5cdFx0XHRcdFx0dyA9IGMuUHJvbWlzZSxcblx0XHRcdFx0XHR4ID0gZihjLCAncXVldWVNaWNyb3Rhc2snKSxcblx0XHRcdFx0XHRrID0geCAmJiB4LnZhbHVlO1xuXHRcdFx0XHRpZiAoIWspIHtcblx0XHRcdFx0XHR2YXIgUyA9IG5ldyBwKCksXG5cdFx0XHRcdFx0XHRFID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdCwgZTtcblx0XHRcdFx0XHRcdFx0Zm9yICh5ICYmICh0ID0gYi5kb21haW4pICYmIHQuZXhpdCgpOyAoZSA9IFMuZ2V0KCkpOyApXG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdGUoKTtcblx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aHJvdyAoUy5oZWFkICYmIG4oKSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0ICYmIHQuZW50ZXIoKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aCB8fCB5IHx8IGQgfHwgIWcgfHwgIW1cblx0XHRcdFx0XHRcdD8gIXYgJiYgdyAmJiB3LnJlc29sdmVcblx0XHRcdFx0XHRcdFx0PyAoKChhID0gdy5yZXNvbHZlKHZvaWQgMCkpLmNvbnN0cnVjdG9yID0gdyksXG5cdFx0XHRcdFx0XHRcdFx0KHUgPSBzKGEudGhlbiwgYSkpLFxuXHRcdFx0XHRcdFx0XHRcdChuID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dShFKTtcblx0XHRcdFx0XHRcdFx0XHR9KSlcblx0XHRcdFx0XHRcdFx0OiB5XG5cdFx0XHRcdFx0XHRcdFx0PyAobiA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Yi5uZXh0VGljayhFKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0OiAoKGwgPSBzKGwsIGMpKSxcblx0XHRcdFx0XHRcdFx0XHRcdChuID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsKEUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSkpXG5cdFx0XHRcdFx0XHQ6ICgobyA9ICEwKSxcblx0XHRcdFx0XHRcdFx0KGkgPSBtLmNyZWF0ZVRleHROb2RlKCcnKSksXG5cdFx0XHRcdFx0XHRcdG5ldyBnKEUpLm9ic2VydmUoaSwge2NoYXJhY3RlckRhdGE6ICEwfSksXG5cdFx0XHRcdFx0XHRcdChuID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdGkuZGF0YSA9IG8gPSAhbztcblx0XHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdFx0KGsgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRTLmhlYWQgfHwgbigpLCBTLmFkZCh0KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGs7XG5cdFx0XHR9LFxuXHRcdFx0ODc0MjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDUwOSksXG5cdFx0XHRcdFx0byA9IFR5cGVFcnJvcixcblx0XHRcdFx0XHRpID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlLCByO1xuXHRcdFx0XHRcdFx0KHRoaXMucHJvbWlzZSA9IG5ldyB0KGZ1bmN0aW9uICh0LCBuKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IGUgfHwgdm9pZCAwICE9PSByKSB0aHJvdyBuZXcgbygnQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcblx0XHRcdFx0XHRcdFx0KGUgPSB0KSwgKHIgPSBuKTtcblx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdFx0KHRoaXMucmVzb2x2ZSA9IG4oZSkpLFxuXHRcdFx0XHRcdFx0XHQodGhpcy5yZWplY3QgPSBuKHIpKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMuZiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBpKHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDM4NDE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig0MzI3KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gdm9pZCAwID09PSB0ID8gKGFyZ3VtZW50cy5sZW5ndGggPCAyID8gJycgOiBlKSA6IG4odCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MjEyNDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDEyNDUpLFxuXHRcdFx0XHRcdG8gPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0aWYgKG4odCkpIHRocm93IG5ldyBvKFwiVGhlIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCByZWd1bGFyIGV4cHJlc3Npb25zXCIpO1xuXHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDUzOTQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcig4ODQ0KSxcblx0XHRcdFx0XHRpID0gcigyNjE1KSxcblx0XHRcdFx0XHRhID0gcigzNjg5KSxcblx0XHRcdFx0XHR1ID0gcigzMDApLFxuXHRcdFx0XHRcdGMgPSByKDc1MTgpLFxuXHRcdFx0XHRcdHMgPSByKDk1NTYpLFxuXHRcdFx0XHRcdGYgPSByKDY5MCksXG5cdFx0XHRcdFx0bCA9IHIoNDQxMyksXG5cdFx0XHRcdFx0cCA9IE9iamVjdC5hc3NpZ24sXG5cdFx0XHRcdFx0aCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSxcblx0XHRcdFx0XHR2ID0gbyhbXS5jb25jYXQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdCFwIHx8XG5cdFx0XHRcdFx0YShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdG4gJiZcblx0XHRcdFx0XHRcdFx0MSAhPT1cblx0XHRcdFx0XHRcdFx0XHRwKFxuXHRcdFx0XHRcdFx0XHRcdFx0e2I6IDF9LFxuXHRcdFx0XHRcdFx0XHRcdFx0cChcblx0XHRcdFx0XHRcdFx0XHRcdFx0aCh7fSwgJ2EnLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZW51bWVyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoKHRoaXMsICdiJywge3ZhbHVlOiAzLCBlbnVtZXJhYmxlOiAhMX0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7YjogMn1cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQpLmJcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0cmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB7fSxcblx0XHRcdFx0XHRcdFx0ZSA9IHt9LFxuXHRcdFx0XHRcdFx0XHRyID0gU3ltYm9sKCdhc3NpZ24gZGV0ZWN0aW9uJyksXG5cdFx0XHRcdFx0XHRcdG8gPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0KHRbcl0gPSA3KSxcblx0XHRcdFx0XHRcdFx0by5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdGVbdF0gPSB0O1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0NyAhPT0gcCh7fSwgdClbcl0gfHwgdShwKHt9LCBlKSkuam9pbignJykgIT09IG9cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciByID0gZih0KSwgbyA9IGFyZ3VtZW50cy5sZW5ndGgsIGEgPSAxLCBwID0gYy5mLCBoID0gcy5mOyBvID4gYTsgKVxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGQsIHkgPSBsKGFyZ3VtZW50c1thKytdKSwgZyA9IHAgPyB2KHUoeSksIHAoeSkpIDogdSh5KSwgbSA9IGcubGVuZ3RoLCBiID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bSA+IGI7XG5cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGQgPSBnW2IrK10pLCAobiAmJiAhaShoLCB5LCBkKSkgfHwgKHJbZF0gPSB5W2RdKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0OiBwO1xuXHRcdFx0fSxcblx0XHRcdDUzOTE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuLFxuXHRcdFx0XHRcdG8gPSByKDUwMjcpLFxuXHRcdFx0XHRcdGkgPSByKDg5MjApLFxuXHRcdFx0XHRcdGEgPSByKDI3MzkpLFxuXHRcdFx0XHRcdHUgPSByKDcyNDgpLFxuXHRcdFx0XHRcdGMgPSByKDI2ODgpLFxuXHRcdFx0XHRcdHMgPSByKDY0MjApLFxuXHRcdFx0XHRcdGYgPSByKDI3MTMpLFxuXHRcdFx0XHRcdGwgPSAncHJvdG90eXBlJyxcblx0XHRcdFx0XHRwID0gJ3NjcmlwdCcsXG5cdFx0XHRcdFx0aCA9IGYoJ0lFX1BST1RPJyksXG5cdFx0XHRcdFx0diA9IGZ1bmN0aW9uICgpIHt9LFxuXHRcdFx0XHRcdGQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICc8JyArIHAgKyAnPicgKyB0ICsgJzwvJyArIHAgKyAnPic7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR5ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHQud3JpdGUoZCgnJykpLCB0LmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IHQucGFyZW50V2luZG93Lk9iamVjdDtcblx0XHRcdFx0XHRcdHJldHVybiAodCA9IG51bGwpLCBlO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdG4gPSBuZXcgQWN0aXZlWE9iamVjdCgnaHRtbGZpbGUnKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0XHR2YXIgdCwgZSwgcjtcblx0XHRcdFx0XHRcdGcgPVxuXHRcdFx0XHRcdFx0XHQndW5kZWZpbmVkJyAhPSB0eXBlb2YgZG9jdW1lbnRcblx0XHRcdFx0XHRcdFx0XHQ/IGRvY3VtZW50LmRvbWFpbiAmJiBuXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHkobilcblx0XHRcdFx0XHRcdFx0XHRcdDogKChlID0gcygnaWZyYW1lJykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQociA9ICdqYXZhJyArIHAgKyAnOicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Yy5hcHBlbmRDaGlsZChlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGUuc3JjID0gU3RyaW5nKHIpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHQgPSBlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC53cml0ZShkKCdkb2N1bWVudC5GPU9iamVjdCcpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC5jbG9zZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LkYpXG5cdFx0XHRcdFx0XHRcdFx0OiB5KG4pO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgbyA9IGEubGVuZ3RoOyBvLS07ICkgZGVsZXRlIGdbbF1bYVtvXV07XG5cdFx0XHRcdFx0XHRyZXR1cm4gZygpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdCh1W2hdID0gITApLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdFx0T2JqZWN0LmNyZWF0ZSB8fFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHI7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0bnVsbCAhPT0gdCA/ICgodltsXSA9IG8odCkpLCAociA9IG5ldyB2KCkpLCAodltsXSA9IG51bGwpLCAocltoXSA9IHQpKSA6IChyID0gZygpKSxcblx0XHRcdFx0XHRcdFx0XHR2b2lkIDAgPT09IGUgPyByIDogaS5mKHIsIGUpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ4OTIwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzY5NyksXG5cdFx0XHRcdFx0byA9IHIoNTY0OCksXG5cdFx0XHRcdFx0aSA9IHIoMjU2MCksXG5cdFx0XHRcdFx0YSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0dSA9IHIoNTI5MCksXG5cdFx0XHRcdFx0YyA9IHIoMzAwKTtcblx0XHRcdFx0ZS5mID1cblx0XHRcdFx0XHRuICYmICFvXG5cdFx0XHRcdFx0XHQ/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzXG5cdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0YSh0KTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciByLCBuID0gdShlKSwgbyA9IGMoZSksIHMgPSBvLmxlbmd0aCwgZiA9IDA7IHMgPiBmOyApXG5cdFx0XHRcdFx0XHRcdFx0XHRpLmYodCwgKHIgPSBvW2YrK10pLCBuW3JdKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyNTYwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNzY5NyksXG5cdFx0XHRcdFx0byA9IHIoODUwNiksXG5cdFx0XHRcdFx0aSA9IHIoNTY0OCksXG5cdFx0XHRcdFx0YSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0dSA9IHIoODM2MCksXG5cdFx0XHRcdFx0YyA9IFR5cGVFcnJvcixcblx0XHRcdFx0XHRzID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LFxuXHRcdFx0XHRcdGYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHRcdFx0XHRcdGwgPSAnZW51bWVyYWJsZScsXG5cdFx0XHRcdFx0cCA9ICdjb25maWd1cmFibGUnLFxuXHRcdFx0XHRcdGggPSAnd3JpdGFibGUnO1xuXHRcdFx0XHRlLmYgPSBuXG5cdFx0XHRcdFx0PyBpXG5cdFx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0KGEodCksXG5cdFx0XHRcdFx0XHRcdFx0XHQoZSA9IHUoZSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0YShyKSxcblx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIHQgJiYgJ3Byb3RvdHlwZScgPT09IGUgJiYgJ3ZhbHVlJyBpbiByICYmIGggaW4gciAmJiAhcltoXSlcblx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gZih0LCBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0bltoXSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoKHRbZV0gPSByLnZhbHVlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiBwIGluIHIgPyByW3BdIDogbltwXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbnVtZXJhYmxlOiBsIGluIHIgPyByW2xdIDogbltsXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3cml0YWJsZTogITEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHModCwgZSwgcik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdDogc1xuXHRcdFx0XHRcdDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0aWYgKChhKHQpLCAoZSA9IHUoZSkpLCBhKHIpLCBvKSlcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHModCwgZSwgcik7XG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0XHRcdFx0aWYgKCdnZXQnIGluIHIgfHwgJ3NldCcgaW4gcikgdGhyb3cgbmV3IGMoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAndmFsdWUnIGluIHIgJiYgKHRbZV0gPSByLnZhbHVlKSwgdDtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MjQ3NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDI2MTUpLFxuXHRcdFx0XHRcdGkgPSByKDk1NTYpLFxuXHRcdFx0XHRcdGEgPSByKDU2ODQpLFxuXHRcdFx0XHRcdHUgPSByKDUyOTApLFxuXHRcdFx0XHRcdGMgPSByKDgzNjApLFxuXHRcdFx0XHRcdHMgPSByKDY4MTIpLFxuXHRcdFx0XHRcdGYgPSByKDg1MDYpLFxuXHRcdFx0XHRcdGwgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXHRcdFx0XHRlLmYgPSBuXG5cdFx0XHRcdFx0PyBsXG5cdFx0XHRcdFx0OiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoKCh0ID0gdSh0KSksIChlID0gYyhlKSksIGYpKVxuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbCh0LCBlKTtcblx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdFx0XHRpZiAocyh0LCBlKSkgcmV0dXJuIGEoIW8oaS5mLCB0LCBlKSwgdFtlXSk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDYwNjI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2NjQ4KSxcblx0XHRcdFx0XHRvID0gcig1MjkwKSxcblx0XHRcdFx0XHRpID0gcigyNzQxKS5mLFxuXHRcdFx0XHRcdGEgPSByKDkwMTUpLFxuXHRcdFx0XHRcdHUgPVxuXHRcdFx0XHRcdFx0J29iamVjdCcgPT0gdHlwZW9mIHdpbmRvdyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcblx0XHRcdFx0XHRcdFx0PyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpXG5cdFx0XHRcdFx0XHRcdDogW107XG5cdFx0XHRcdHQuZXhwb3J0cy5mID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gdSAmJiAnV2luZG93JyA9PT0gbih0KVxuXHRcdFx0XHRcdFx0PyAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGEodSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KSh0KVxuXHRcdFx0XHRcdFx0OiBpKG8odCkpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDI3NDE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig0OTQ4KSxcblx0XHRcdFx0XHRvID0gcigyNzM5KS5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblx0XHRcdFx0ZS5mID1cblx0XHRcdFx0XHRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fFxuXHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbih0LCBvKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDc1MTg6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdGUuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cdFx0XHR9LFxuXHRcdFx0MTg2ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDY4MTIpLFxuXHRcdFx0XHRcdG8gPSByKDk5ODUpLFxuXHRcdFx0XHRcdGkgPSByKDY5MCksXG5cdFx0XHRcdFx0YSA9IHIoMjcxMyksXG5cdFx0XHRcdFx0dSA9IHIoMTc0OCksXG5cdFx0XHRcdFx0YyA9IGEoJ0lFX1BST1RPJyksXG5cdFx0XHRcdFx0cyA9IE9iamVjdCxcblx0XHRcdFx0XHRmID0gcy5wcm90b3R5cGU7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHVcblx0XHRcdFx0XHQ/IHMuZ2V0UHJvdG90eXBlT2Zcblx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gaSh0KTtcblx0XHRcdFx0XHRcdFx0aWYgKG4oZSwgYykpIHJldHVybiBlW2NdO1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IGUuY29uc3RydWN0b3I7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvKHIpICYmIGUgaW5zdGFuY2VvZiByID8gci5wcm90b3R5cGUgOiBlIGluc3RhbmNlb2YgcyA/IGYgOiBudWxsO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQxMTI5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSksXG5cdFx0XHRcdFx0byA9IHIoODk5OSksXG5cdFx0XHRcdFx0aSA9IHIoNjY0OCksXG5cdFx0XHRcdFx0YSA9IHIoMTY1NSksXG5cdFx0XHRcdFx0dSA9IE9iamVjdC5pc0V4dGVuc2libGUsXG5cdFx0XHRcdFx0YyA9IG4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dSgxKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHRjIHx8IGFcblx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gISFvKHQpICYmICghYSB8fCAnQXJyYXlCdWZmZXInICE9PSBpKHQpKSAmJiAoIXUgfHwgdSh0KSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdDogdTtcblx0XHRcdH0sXG5cdFx0XHQzNjIyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4oe30uaXNQcm90b3R5cGVPZik7XG5cdFx0XHR9LFxuXHRcdFx0NDk0ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDY4MTIpLFxuXHRcdFx0XHRcdGkgPSByKDUyOTApLFxuXHRcdFx0XHRcdGEgPSByKDQzMjgpLmluZGV4T2YsXG5cdFx0XHRcdFx0dSA9IHIoNzI0OCksXG5cdFx0XHRcdFx0YyA9IG4oW10ucHVzaCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0dmFyIHIsXG5cdFx0XHRcdFx0XHRuID0gaSh0KSxcblx0XHRcdFx0XHRcdHMgPSAwLFxuXHRcdFx0XHRcdFx0ZiA9IFtdO1xuXHRcdFx0XHRcdGZvciAociBpbiBuKSAhbyh1LCByKSAmJiBvKG4sIHIpICYmIGMoZiwgcik7XG5cdFx0XHRcdFx0Zm9yICg7IGUubGVuZ3RoID4gczsgKSBvKG4sIChyID0gZVtzKytdKSkgJiYgKH5hKGYsIHIpIHx8IGMoZiwgcikpO1xuXHRcdFx0XHRcdHJldHVybiBmO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDMwMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQ5NDgpLFxuXHRcdFx0XHRcdG8gPSByKDI3MzkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdE9iamVjdC5rZXlzIHx8XG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBuKHQsIG8pO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0OTU1NjogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0dmFyIHIgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcblx0XHRcdFx0XHRuID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixcblx0XHRcdFx0XHRvID1cblx0XHRcdFx0XHRcdG4gJiZcblx0XHRcdFx0XHRcdCFyLmNhbGwoXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQxOiAyLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHQxXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRlLmYgPSBvXG5cdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IG4odGhpcywgdCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAhIWUgJiYgZS5lbnVtZXJhYmxlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDogcjtcblx0XHRcdH0sXG5cdFx0XHQ5Mzg1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjc0MyksXG5cdFx0XHRcdFx0byA9IHIoNTAyNyksXG5cdFx0XHRcdFx0aSA9IHIoMzU1MCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9XG5cdFx0XHRcdFx0T2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG5cdFx0XHRcdFx0KCdfX3Byb3RvX18nIGluIHt9XG5cdFx0XHRcdFx0XHQ/IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRlID0gITEsXG5cdFx0XHRcdFx0XHRcdFx0XHRyID0ge307XG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdCh0ID0gbihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJywgJ3NldCcpKShyLCBbXSksIChlID0gciBpbnN0YW5jZW9mIEFycmF5KTtcblx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAociwgbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG8ociksIGkobiksIGUgPyB0KHIsIG4pIDogKHIuX19wcm90b19fID0gbiksIHI7XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fSkoKVxuXHRcdFx0XHRcdFx0OiB2b2lkIDApO1xuXHRcdFx0fSxcblx0XHRcdDk0MTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcig4ODQ0KSxcblx0XHRcdFx0XHRhID0gcigxODY4KSxcblx0XHRcdFx0XHR1ID0gcigzMDApLFxuXHRcdFx0XHRcdGMgPSByKDUyOTApLFxuXHRcdFx0XHRcdHMgPSBpKHIoOTU1NikuZiksXG5cdFx0XHRcdFx0ZiA9IGkoW10ucHVzaCksXG5cdFx0XHRcdFx0bCA9XG5cdFx0XHRcdFx0XHRuICYmXG5cdFx0XHRcdFx0XHRvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKHRbMl0gPSAyKSwgIXModCwgMik7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRwID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0XHRcdHZhciByLCBvID0gYyhlKSwgaSA9IHUobyksIHAgPSBsICYmIG51bGwgPT09IGEobyksIGggPSBpLmxlbmd0aCwgdiA9IDAsIGQgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRoID4gdjtcblxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KHIgPSBpW3YrK10pLCAobiAmJiAhKHAgPyByIGluIG8gOiBzKG8sIHIpKSkgfHwgZihkLCB0ID8gW3IsIG9bcl1dIDogb1tyXSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBkO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0ZW50cmllczogcCghMCksXG5cdFx0XHRcdFx0dmFsdWVzOiBwKCExKSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1MDczOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzA0MyksXG5cdFx0XHRcdFx0byA9IHIoOTI2KTtcblx0XHRcdFx0dC5leHBvcnRzID0gblxuXHRcdFx0XHRcdD8ge30udG9TdHJpbmdcblx0XHRcdFx0XHQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICdbb2JqZWN0ICcgKyBvKHRoaXMpICsgJ10nO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1ODk5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjYxNSksXG5cdFx0XHRcdFx0byA9IHIoOTk4NSksXG5cdFx0XHRcdFx0aSA9IHIoODk5OSksXG5cdFx0XHRcdFx0YSA9IFR5cGVFcnJvcjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHR2YXIgciwgdTtcblx0XHRcdFx0XHRpZiAoJ3N0cmluZycgPT09IGUgJiYgbygociA9IHQudG9TdHJpbmcpKSAmJiAhaSgodSA9IG4ociwgdCkpKSkgcmV0dXJuIHU7XG5cdFx0XHRcdFx0aWYgKG8oKHIgPSB0LnZhbHVlT2YpKSAmJiAhaSgodSA9IG4ociwgdCkpKSkgcmV0dXJuIHU7XG5cdFx0XHRcdFx0aWYgKCdzdHJpbmcnICE9PSBlICYmIG8oKHIgPSB0LnRvU3RyaW5nKSkgJiYgIWkoKHUgPSBuKHIsIHQpKSkpIHJldHVybiB1O1xuXHRcdFx0XHRcdHRocm93IG5ldyBhKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDkxNTI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2MDU4KSxcblx0XHRcdFx0XHRvID0gcig4ODQ0KSxcblx0XHRcdFx0XHRpID0gcigyNzQxKSxcblx0XHRcdFx0XHRhID0gcig3NTE4KSxcblx0XHRcdFx0XHR1ID0gcig1MDI3KSxcblx0XHRcdFx0XHRjID0gbyhbXS5jb25jYXQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdG4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8XG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gaS5mKHUodCkpLFxuXHRcdFx0XHRcdFx0XHRyID0gYS5mO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHIgPyBjKGUsIHIodCkpIDogZTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDY2NzU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODQ0KSxcblx0XHRcdFx0XHRvID0gcig2ODEyKSxcblx0XHRcdFx0XHRpID0gU3ludGF4RXJyb3IsXG5cdFx0XHRcdFx0YSA9IHBhcnNlSW50LFxuXHRcdFx0XHRcdHUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLFxuXHRcdFx0XHRcdGMgPSBuKCcnLmNoYXJBdCksXG5cdFx0XHRcdFx0cyA9IG4oJycuc2xpY2UpLFxuXHRcdFx0XHRcdGYgPSBuKC8uLy5leGVjKSxcblx0XHRcdFx0XHRsID0ge1xuXHRcdFx0XHRcdFx0J1xcXFxcIic6ICdcIicsXG5cdFx0XHRcdFx0XHQnXFxcXFxcXFwnOiAnXFxcXCcsXG5cdFx0XHRcdFx0XHQnXFxcXC8nOiAnLycsXG5cdFx0XHRcdFx0XHQnXFxcXGInOiAnXFxiJyxcblx0XHRcdFx0XHRcdCdcXFxcZic6ICdcXGYnLFxuXHRcdFx0XHRcdFx0J1xcXFxuJzogJ1xcbicsXG5cdFx0XHRcdFx0XHQnXFxcXHInOiAnXFxyJyxcblx0XHRcdFx0XHRcdCdcXFxcdCc6ICdcXHQnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cCA9IC9eW1xcZGEtZl17NH0kL2ksXG5cdFx0XHRcdFx0aCA9IC9eW1xcdTAwMDAtXFx1MDAxRl0kLztcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRmb3IgKHZhciByID0gITAsIG4gPSAnJzsgZSA8IHQubGVuZ3RoOyApIHtcblx0XHRcdFx0XHRcdHZhciB2ID0gYyh0LCBlKTtcblx0XHRcdFx0XHRcdGlmICgnXFxcXCcgPT09IHYpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGQgPSBzKHQsIGUsIGUgKyAyKTtcblx0XHRcdFx0XHRcdFx0aWYgKG8obCwgZCkpIChuICs9IGxbZF0pLCAoZSArPSAyKTtcblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCdcXFxcdScgIT09IGQpIHRocm93IG5ldyBpKCdVbmtub3duIGVzY2FwZSBzZXF1ZW5jZTogXCInICsgZCArICdcIicpO1xuXHRcdFx0XHRcdFx0XHRcdHZhciB5ID0gcyh0LCAoZSArPSAyKSwgZSArIDQpO1xuXHRcdFx0XHRcdFx0XHRcdGlmICghZihwLCB5KSkgdGhyb3cgbmV3IGkoJ0JhZCBVbmljb2RlIGVzY2FwZSBhdDogJyArIGUpO1xuXHRcdFx0XHRcdFx0XHRcdChuICs9IHUoYSh5LCAxNikpKSwgKGUgKz0gNCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGlmICgnXCInID09PSB2KSB7XG5cdFx0XHRcdFx0XHRcdFx0KHIgPSAhMSksIGUrKztcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoZihoLCB2KSkgdGhyb3cgbmV3IGkoJ0JhZCBjb250cm9sIGNoYXJhY3RlciBpbiBzdHJpbmcgbGl0ZXJhbCBhdDogJyArIGUpO1xuXHRcdFx0XHRcdFx0XHQobiArPSB2KSwgZSsrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocikgdGhyb3cgbmV3IGkoJ1VudGVybWluYXRlZCBzdHJpbmcgYXQ6ICcgKyBlKTtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0dmFsdWU6IG4sXG5cdFx0XHRcdFx0XHRlbmQ6IGUsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ0OTY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KTtcblx0XHRcdFx0dC5leHBvcnRzID0gbjtcblx0XHRcdH0sXG5cdFx0XHQ5MzAyOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRlcnJvcjogITEsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB0KCksXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdGVycm9yOiAhMCxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3MDczOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyksXG5cdFx0XHRcdFx0byA9IHIoNzkxOSksXG5cdFx0XHRcdFx0aSA9IHIoOTk4NSksXG5cdFx0XHRcdFx0YSA9IHIoNTI2NiksXG5cdFx0XHRcdFx0dSA9IHIoNjczOCksXG5cdFx0XHRcdFx0YyA9IHIoNDIwMSksXG5cdFx0XHRcdFx0cyA9IHIoMjUzMiksXG5cdFx0XHRcdFx0ZiA9IHIoODU2MyksXG5cdFx0XHRcdFx0bCA9IHIoMzkzMSksXG5cdFx0XHRcdFx0cCA9IHIoMzYxNSksXG5cdFx0XHRcdFx0aCA9IG8gJiYgby5wcm90b3R5cGUsXG5cdFx0XHRcdFx0diA9IGMoJ3NwZWNpZXMnKSxcblx0XHRcdFx0XHRkID0gITEsXG5cdFx0XHRcdFx0eSA9IGkobi5Qcm9taXNlUmVqZWN0aW9uRXZlbnQpLFxuXHRcdFx0XHRcdGcgPSBhKCdQcm9taXNlJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB1KG8pLFxuXHRcdFx0XHRcdFx0XHRlID0gdCAhPT0gU3RyaW5nKG8pO1xuXHRcdFx0XHRcdFx0aWYgKCFlICYmIDY2ID09PSBwKSByZXR1cm4gITA7XG5cdFx0XHRcdFx0XHRpZiAobCAmJiAoIWguY2F0Y2ggfHwgIWguZmluYWxseSkpIHJldHVybiAhMDtcblx0XHRcdFx0XHRcdGlmICghcCB8fCBwIDwgNTEgfHwgIS9uYXRpdmUgY29kZS8udGVzdCh0KSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IG5ldyBvKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0KDEpO1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHt9XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdGlmICgoKChyLmNvbnN0cnVjdG9yID0ge30pW3ZdID0gbiksICEoZCA9IHIudGhlbihmdW5jdGlvbiAoKSB7fSkgaW5zdGFuY2VvZiBuKSkpIHJldHVybiAhMDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiAhZSAmJiAocyB8fCBmKSAmJiAheTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0dC5leHBvcnRzID0ge1xuXHRcdFx0XHRcdENPTlNUUlVDVE9SOiBnLFxuXHRcdFx0XHRcdFJFSkVDVElPTl9FVkVOVDogeSxcblx0XHRcdFx0XHRTVUJDTEFTU0lORzogZCxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ3OTE5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4uUHJvbWlzZTtcblx0XHRcdH0sXG5cdFx0XHQyOTQ1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNTAyNyksXG5cdFx0XHRcdFx0byA9IHIoODk5OSksXG5cdFx0XHRcdFx0aSA9IHIoODc0Mik7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKChuKHQpLCBvKGUpICYmIGUuY29uc3RydWN0b3IgPT09IHQpKSByZXR1cm4gZTtcblx0XHRcdFx0XHR2YXIgciA9IGkuZih0KTtcblx0XHRcdFx0XHRyZXR1cm4gKDAsIHIucmVzb2x2ZSkoZSksIHIucHJvbWlzZTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ1NjI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3OTE5KSxcblx0XHRcdFx0XHRvID0gcig2NDMxKSxcblx0XHRcdFx0XHRpID0gcig3MDczKS5DT05TVFJVQ1RPUjtcblx0XHRcdFx0dC5leHBvcnRzID1cblx0XHRcdFx0XHRpIHx8XG5cdFx0XHRcdFx0IW8oZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdG4uYWxsKHQpLnRoZW4odm9pZCAwLCBmdW5jdGlvbiAoKSB7fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0ODA1NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI1NjApLmY7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0ciBpbiB0IHx8XG5cdFx0XHRcdFx0XHRuKHQsIHIsIHtcblx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGVbcl07XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNldDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRlW3JdID0gdDtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDQ0MTA6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHZhciBlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdCh0aGlzLmhlYWQgPSBudWxsKSwgKHRoaXMudGFpbCA9IG51bGwpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHQoZS5wcm90b3R5cGUgPSB7XG5cdFx0XHRcdFx0YWRkOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0aXRlbTogdCxcblx0XHRcdFx0XHRcdFx0XHRuZXh0OiBudWxsLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRyID0gdGhpcy50YWlsO1xuXHRcdFx0XHRcdFx0ciA/IChyLm5leHQgPSBlKSA6ICh0aGlzLmhlYWQgPSBlKSwgKHRoaXMudGFpbCA9IGUpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMuaGVhZDtcblx0XHRcdFx0XHRcdGlmICh0KSByZXR1cm4gbnVsbCA9PT0gKHRoaXMuaGVhZCA9IHQubmV4dCkgJiYgKHRoaXMudGFpbCA9IG51bGwpLCB0Lml0ZW07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9IGUpO1xuXHRcdFx0fSxcblx0XHRcdDYxMDA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig1MDI3KSxcblx0XHRcdFx0XHRpID0gcig5OTg1KSxcblx0XHRcdFx0XHRhID0gcig2NjQ4KSxcblx0XHRcdFx0XHR1ID0gcig2MzA4KSxcblx0XHRcdFx0XHRjID0gVHlwZUVycm9yO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHZhciByID0gdC5leGVjO1xuXHRcdFx0XHRcdGlmIChpKHIpKSB7XG5cdFx0XHRcdFx0XHR2YXIgcyA9IG4ociwgdCwgZSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbnVsbCAhPT0gcyAmJiBvKHMpLCBzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoJ1JlZ0V4cCcgPT09IGEodCkpIHJldHVybiBuKHUsIHQsIGUpO1xuXHRcdFx0XHRcdHRocm93IG5ldyBjKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjMwODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpID0gcigyNjE1KSxcblx0XHRcdFx0XHRhID0gcig4ODQ0KSxcblx0XHRcdFx0XHR1ID0gcig0MzI3KSxcblx0XHRcdFx0XHRjID0gcig5NjMzKSxcblx0XHRcdFx0XHRzID0gcig3OTAxKSxcblx0XHRcdFx0XHRmID0gcigzNDMwKSxcblx0XHRcdFx0XHRsID0gcig1MzkxKSxcblx0XHRcdFx0XHRwID0gcig2MTgpLmdldCxcblx0XHRcdFx0XHRoID0gcigyMTAwKSxcblx0XHRcdFx0XHR2ID0gcig2NDIyKSxcblx0XHRcdFx0XHRkID0gZignbmF0aXZlLXN0cmluZy1yZXBsYWNlJywgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKSxcblx0XHRcdFx0XHR5ID0gUmVnRXhwLnByb3RvdHlwZS5leGVjLFxuXHRcdFx0XHRcdGcgPSB5LFxuXHRcdFx0XHRcdG0gPSBhKCcnLmNoYXJBdCksXG5cdFx0XHRcdFx0YiA9IGEoJycuaW5kZXhPZiksXG5cdFx0XHRcdFx0dyA9IGEoJycucmVwbGFjZSksXG5cdFx0XHRcdFx0eCA9IGEoJycuc2xpY2UpLFxuXHRcdFx0XHRcdGsgPSAoKG8gPSAvYiovZyksIGkoeSwgKG4gPSAvYS8pLCAnYScpLCBpKHksIG8sICdhJyksIDAgIT09IG4ubGFzdEluZGV4IHx8IDAgIT09IG8ubGFzdEluZGV4KSxcblx0XHRcdFx0XHRTID0gcy5CUk9LRU5fQ0FSRVQsXG5cdFx0XHRcdFx0RSA9IHZvaWQgMCAhPT0gLygpPz8vLmV4ZWMoJycpWzFdO1xuXHRcdFx0XHQoayB8fCBFIHx8IFMgfHwgaCB8fCB2KSAmJlxuXHRcdFx0XHRcdChnID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlLFxuXHRcdFx0XHRcdFx0XHRyLFxuXHRcdFx0XHRcdFx0XHRuLFxuXHRcdFx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdFx0XHRhLFxuXHRcdFx0XHRcdFx0XHRzLFxuXHRcdFx0XHRcdFx0XHRmLFxuXHRcdFx0XHRcdFx0XHRoID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0diA9IHAoaCksXG5cdFx0XHRcdFx0XHRcdE8gPSB1KHQpLFxuXHRcdFx0XHRcdFx0XHRQID0gdi5yYXc7XG5cdFx0XHRcdFx0XHRpZiAoUCkgcmV0dXJuIChQLmxhc3RJbmRleCA9IGgubGFzdEluZGV4KSwgKGUgPSBpKGcsIFAsIE8pKSwgKGgubGFzdEluZGV4ID0gUC5sYXN0SW5kZXgpLCBlO1xuXHRcdFx0XHRcdFx0dmFyIGogPSB2Lmdyb3Vwcyxcblx0XHRcdFx0XHRcdFx0TCA9IFMgJiYgaC5zdGlja3ksXG5cdFx0XHRcdFx0XHRcdF8gPSBpKGMsIGgpLFxuXHRcdFx0XHRcdFx0XHRJID0gaC5zb3VyY2UsXG5cdFx0XHRcdFx0XHRcdFQgPSAwLFxuXHRcdFx0XHRcdFx0XHRSID0gTztcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0KEwgJiZcblx0XHRcdFx0XHRcdFx0XHQoKF8gPSB3KF8sICd5JywgJycpKSxcblx0XHRcdFx0XHRcdFx0XHQtMSA9PT0gYihfLCAnZycpICYmIChfICs9ICdnJyksXG5cdFx0XHRcdFx0XHRcdFx0KFIgPSB4KE8sIGgubGFzdEluZGV4KSksXG5cdFx0XHRcdFx0XHRcdFx0aC5sYXN0SW5kZXggPiAwICYmXG5cdFx0XHRcdFx0XHRcdFx0XHQoIWgubXVsdGlsaW5lIHx8IChoLm11bHRpbGluZSAmJiAnXFxuJyAhPT0gbShPLCBoLmxhc3RJbmRleCAtIDEpKSkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdCgoSSA9ICcoPzogJyArIEkgKyAnKScpLCAoUiA9ICcgJyArIFIpLCBUKyspLFxuXHRcdFx0XHRcdFx0XHRcdChyID0gbmV3IFJlZ0V4cCgnXig/OicgKyBJICsgJyknLCBfKSkpLFxuXHRcdFx0XHRcdFx0XHRFICYmIChyID0gbmV3IFJlZ0V4cCgnXicgKyBJICsgJyQoPyFcXFxccyknLCBfKSksXG5cdFx0XHRcdFx0XHRcdGsgJiYgKG4gPSBoLmxhc3RJbmRleCksXG5cdFx0XHRcdFx0XHRcdChvID0gaSh5LCBMID8gciA6IGgsIFIpKSxcblx0XHRcdFx0XHRcdFx0TFxuXHRcdFx0XHRcdFx0XHRcdD8gb1xuXHRcdFx0XHRcdFx0XHRcdFx0PyAoKG8uaW5wdXQgPSB4KG8uaW5wdXQsIFQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KG9bMF0gPSB4KG9bMF0sIFQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KG8uaW5kZXggPSBoLmxhc3RJbmRleCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChoLmxhc3RJbmRleCArPSBvWzBdLmxlbmd0aCkpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IChoLmxhc3RJbmRleCA9IDApXG5cdFx0XHRcdFx0XHRcdFx0OiBrICYmIG8gJiYgKGgubGFzdEluZGV4ID0gaC5nbG9iYWwgPyBvLmluZGV4ICsgb1swXS5sZW5ndGggOiBuKSxcblx0XHRcdFx0XHRcdFx0RSAmJlxuXHRcdFx0XHRcdFx0XHRcdG8gJiZcblx0XHRcdFx0XHRcdFx0XHRvLmxlbmd0aCA+IDEgJiZcblx0XHRcdFx0XHRcdFx0XHRpKGQsIG9bMF0sIHIsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAoYSA9IDE7IGEgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgYSsrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2b2lkIDAgPT09IGFyZ3VtZW50c1thXSAmJiAob1thXSA9IHZvaWQgMCk7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdG8gJiYgailcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0Zm9yIChvLmdyb3VwcyA9IHMgPSBsKG51bGwpLCBhID0gMDsgYSA8IGoubGVuZ3RoOyBhKyspIHNbKGYgPSBqW2FdKVswXV0gPSBvW2ZbMV1dO1xuXHRcdFx0XHRcdFx0cmV0dXJuIG87XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KHQuZXhwb3J0cyA9IGcpO1xuXHRcdFx0fSxcblx0XHRcdDk2MzM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig1MDI3KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHZhciB0ID0gbih0aGlzKSxcblx0XHRcdFx0XHRcdGUgPSAnJztcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0dC5oYXNJbmRpY2VzICYmIChlICs9ICdkJyksXG5cdFx0XHRcdFx0XHR0Lmdsb2JhbCAmJiAoZSArPSAnZycpLFxuXHRcdFx0XHRcdFx0dC5pZ25vcmVDYXNlICYmIChlICs9ICdpJyksXG5cdFx0XHRcdFx0XHR0Lm11bHRpbGluZSAmJiAoZSArPSAnbScpLFxuXHRcdFx0XHRcdFx0dC5kb3RBbGwgJiYgKGUgKz0gJ3MnKSxcblx0XHRcdFx0XHRcdHQudW5pY29kZSAmJiAoZSArPSAndScpLFxuXHRcdFx0XHRcdFx0dC51bmljb2RlU2V0cyAmJiAoZSArPSAndicpLFxuXHRcdFx0XHRcdFx0dC5zdGlja3kgJiYgKGUgKz0gJ3knKSxcblx0XHRcdFx0XHRcdGVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDM0Nzc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig2ODEyKSxcblx0XHRcdFx0XHRpID0gcigzNjIyKSxcblx0XHRcdFx0XHRhID0gcig5NjMzKSxcblx0XHRcdFx0XHR1ID0gUmVnRXhwLnByb3RvdHlwZTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHQuZmxhZ3M7XG5cdFx0XHRcdFx0cmV0dXJuIHZvaWQgMCAhPT0gZSB8fCAnZmxhZ3MnIGluIHUgfHwgbyh0LCAnZmxhZ3MnKSB8fCAhaSh1LCB0KSA/IGUgOiBuKGEsIHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDc5MDE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNjg5KSxcblx0XHRcdFx0XHRvID0gcig5MDM3KS5SZWdFeHAsXG5cdFx0XHRcdFx0aSA9IG4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSBvKCdhJywgJ3knKTtcblx0XHRcdFx0XHRcdHJldHVybiAodC5sYXN0SW5kZXggPSAyKSwgbnVsbCAhPT0gdC5leGVjKCdhYmNkJyk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0YSA9XG5cdFx0XHRcdFx0XHRpIHx8XG5cdFx0XHRcdFx0XHRuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICFvKCdhJywgJ3knKS5zdGlja3k7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR1ID1cblx0XHRcdFx0XHRcdGkgfHxcblx0XHRcdFx0XHRcdG4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IG8oJ15yJywgJ2d5Jyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAodC5sYXN0SW5kZXggPSAyKSwgbnVsbCAhPT0gdC5leGVjKCdzdHInKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0QlJPS0VOX0NBUkVUOiB1LFxuXHRcdFx0XHRcdE1JU1NFRF9TVElDS1k6IGEsXG5cdFx0XHRcdFx0VU5TVVBQT1JURURfWTogaSxcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQyMTAwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzY4OSksXG5cdFx0XHRcdFx0byA9IHIoOTAzNykuUmVnRXhwO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHR2YXIgdCA9IG8oJy4nLCAncycpO1xuXHRcdFx0XHRcdHJldHVybiAhKHQuZG90QWxsICYmIHQudGVzdCgnXFxuJykgJiYgJ3MnID09PSB0LmZsYWdzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NjQyMjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2ODkpLFxuXHRcdFx0XHRcdG8gPSByKDkwMzcpLlJlZ0V4cDtcblx0XHRcdFx0dC5leHBvcnRzID0gbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIHQgPSBvKCcoPzxhPmIpJywgJ2cnKTtcblx0XHRcdFx0XHRyZXR1cm4gJ2InICE9PSB0LmV4ZWMoJ2InKS5ncm91cHMuYSB8fCAnYmMnICE9PSAnYicucmVwbGFjZSh0LCAnJDxhPmMnKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NDY4NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk4MSksXG5cdFx0XHRcdFx0byA9IFR5cGVFcnJvcjtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRpZiAobih0KSkgdGhyb3cgbmV3IG8oXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIHQpO1xuXHRcdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDg2MDA6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHQgPT09IGUgfHwgKHQgIT0gdCAmJiBlICE9IGUpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDQyNDE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig2MDU4KSxcblx0XHRcdFx0XHRvID0gcigyMTQ4KSxcblx0XHRcdFx0XHRpID0gcig0MjAxKSxcblx0XHRcdFx0XHRhID0gcig3Njk3KSxcblx0XHRcdFx0XHR1ID0gaSgnc3BlY2llcycpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlID0gbih0KTtcblx0XHRcdFx0XHRhICYmXG5cdFx0XHRcdFx0XHRlICYmXG5cdFx0XHRcdFx0XHQhZVt1XSAmJlxuXHRcdFx0XHRcdFx0byhlLCB1LCB7XG5cdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTk5NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDI1NjApLmYsXG5cdFx0XHRcdFx0byA9IHIoNjgxMiksXG5cdFx0XHRcdFx0aSA9IHIoNDIwMSkoJ3RvU3RyaW5nVGFnJyk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0dCAmJiAhciAmJiAodCA9IHQucHJvdG90eXBlKSwgdCAmJiAhbyh0LCBpKSAmJiBuKHQsIGksIHtjb25maWd1cmFibGU6ICEwLCB2YWx1ZTogZX0pO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDI3MTM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigzNDMwKSxcblx0XHRcdFx0XHRvID0gcig0NjMwKSxcblx0XHRcdFx0XHRpID0gbigna2V5cycpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBpW3RdIHx8IChpW3RdID0gbyh0KSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NDA5MTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDkwMzcpLFxuXHRcdFx0XHRcdG8gPSByKDUwMTQpLFxuXHRcdFx0XHRcdGkgPSAnX19jb3JlLWpzX3NoYXJlZF9fJyxcblx0XHRcdFx0XHRhID0gbltpXSB8fCBvKGksIHt9KTtcblx0XHRcdFx0dC5leHBvcnRzID0gYTtcblx0XHRcdH0sXG5cdFx0XHQzNDMwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzkzMSksXG5cdFx0XHRcdFx0byA9IHIoNDA5MSk7XG5cdFx0XHRcdCh0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHJldHVybiBvW3RdIHx8IChvW3RdID0gdm9pZCAwICE9PSBlID8gZSA6IHt9KTtcblx0XHRcdFx0fSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuXHRcdFx0XHRcdHZlcnNpb246ICczLjMzLjMnLFxuXHRcdFx0XHRcdG1vZGU6IG4gPyAncHVyZScgOiAnZ2xvYmFsJyxcblx0XHRcdFx0XHRjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjMgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuXHRcdFx0XHRcdGxpY2Vuc2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjMzLjMvTElDRU5TRScsXG5cdFx0XHRcdFx0c291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ2MzczOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNTAyNyksXG5cdFx0XHRcdFx0byA9IHIoMjY1NSksXG5cdFx0XHRcdFx0aSA9IHIoOTgxKSxcblx0XHRcdFx0XHRhID0gcig0MjAxKSgnc3BlY2llcycpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0dSA9IG4odCkuY29uc3RydWN0b3I7XG5cdFx0XHRcdFx0cmV0dXJuIHZvaWQgMCA9PT0gdSB8fCBpKChyID0gbih1KVthXSkpID8gZSA6IG8ocik7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NzMwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IHIoODcwMCksXG5cdFx0XHRcdFx0aSA9IHIoNDMyNyksXG5cdFx0XHRcdFx0YSA9IHIoNDY4NCksXG5cdFx0XHRcdFx0dSA9IG4oJycuY2hhckF0KSxcblx0XHRcdFx0XHRjID0gbignJy5jaGFyQ29kZUF0KSxcblx0XHRcdFx0XHRzID0gbignJy5zbGljZSksXG5cdFx0XHRcdFx0ZiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0XHRcdFx0Zixcblx0XHRcdFx0XHRcdFx0XHRsID0gaShhKGUpKSxcblx0XHRcdFx0XHRcdFx0XHRwID0gbyhyKSxcblx0XHRcdFx0XHRcdFx0XHRoID0gbC5sZW5ndGg7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBwIDwgMCB8fCBwID49IGhcblx0XHRcdFx0XHRcdFx0XHQ/IHRcblx0XHRcdFx0XHRcdFx0XHRcdD8gJydcblx0XHRcdFx0XHRcdFx0XHRcdDogdm9pZCAwXG5cdFx0XHRcdFx0XHRcdFx0OiAobiA9IGMobCwgcCkpIDwgNTUyOTYgfHxcblx0XHRcdFx0XHRcdFx0XHRcdCAgbiA+IDU2MzE5IHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQgIHAgKyAxID09PSBoIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQgIChmID0gYyhsLCBwICsgMSkpIDwgNTYzMjAgfHxcblx0XHRcdFx0XHRcdFx0XHRcdCAgZiA+IDU3MzQzXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyB1KGwsIHApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogblxuXHRcdFx0XHRcdFx0XHRcdFx0OiB0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gcyhsLCBwLCBwICsgMilcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiBmIC0gNTYzMjAgKyAoKG4gLSA1NTI5NikgPDwgMTApICsgNjU1MzY7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRjb2RlQXQ6IGYoITEpLFxuXHRcdFx0XHRcdGNoYXJBdDogZighMCksXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjQzMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSAyMTQ3NDgzNjQ3LFxuXHRcdFx0XHRcdGkgPSAvW15cXDAtXFx1MDA3RV0vLFxuXHRcdFx0XHRcdGEgPSAvWy5cXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2csXG5cdFx0XHRcdFx0dSA9ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcycsXG5cdFx0XHRcdFx0YyA9IFJhbmdlRXJyb3IsXG5cdFx0XHRcdFx0cyA9IG4oYS5leGVjKSxcblx0XHRcdFx0XHRmID0gTWF0aC5mbG9vcixcblx0XHRcdFx0XHRsID0gU3RyaW5nLmZyb21DaGFyQ29kZSxcblx0XHRcdFx0XHRwID0gbignJy5jaGFyQ29kZUF0KSxcblx0XHRcdFx0XHRoID0gbihbXS5qb2luKSxcblx0XHRcdFx0XHR2ID0gbihbXS5wdXNoKSxcblx0XHRcdFx0XHRkID0gbignJy5yZXBsYWNlKSxcblx0XHRcdFx0XHR5ID0gbignJy5zcGxpdCksXG5cdFx0XHRcdFx0ZyA9IG4oJycudG9Mb3dlckNhc2UpLFxuXHRcdFx0XHRcdG0gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHQgKyAyMiArIDc1ICogKHQgPCAyNik7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRiID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gMDtcblx0XHRcdFx0XHRcdGZvciAodCA9IHIgPyBmKHQgLyA3MDApIDogdCA+PiAxLCB0ICs9IGYodCAvIGUpOyB0ID4gNDU1OyApICh0ID0gZih0IC8gMzUpKSwgKG4gKz0gMzYpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGYobiArICgzNiAqIHQpIC8gKHQgKyAzOCkpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IFtdO1xuXHRcdFx0XHRcdFx0dCA9IChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gW10sIHIgPSAwLCBuID0gdC5sZW5ndGg7IHIgPCBuOyApIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IHAodCwgcisrKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAobyA+PSA1NTI5NiAmJiBvIDw9IDU2MzE5ICYmIHIgPCBuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgaSA9IHAodCwgcisrKTtcblx0XHRcdFx0XHRcdFx0XHRcdDU2MzIwID09ICg2NDUxMiAmIGkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gdihlLCAoKDEwMjMgJiBvKSA8PCAxMCkgKyAoMTAyMyAmIGkpICsgNjU1MzYpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogKHYoZSwgbyksIHItLSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHYoZSwgbyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHRcdFx0XHR9KSh0KTtcblx0XHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0XHRuLFxuXHRcdFx0XHRcdFx0XHRpID0gdC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdGEgPSAxMjgsXG5cdFx0XHRcdFx0XHRcdHMgPSAwLFxuXHRcdFx0XHRcdFx0XHRkID0gNzI7XG5cdFx0XHRcdFx0XHRmb3IgKHIgPSAwOyByIDwgdC5sZW5ndGg7IHIrKykgKG4gPSB0W3JdKSA8IDEyOCAmJiB2KGUsIGwobikpO1xuXHRcdFx0XHRcdFx0dmFyIHkgPSBlLmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0ZyA9IHk7XG5cdFx0XHRcdFx0XHRmb3IgKHkgJiYgdihlLCAnLScpOyBnIDwgaTsgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB3ID0gbztcblx0XHRcdFx0XHRcdFx0Zm9yIChyID0gMDsgciA8IHQubGVuZ3RoOyByKyspIChuID0gdFtyXSkgPj0gYSAmJiBuIDwgdyAmJiAodyA9IG4pO1xuXHRcdFx0XHRcdFx0XHR2YXIgeCA9IGcgKyAxO1xuXHRcdFx0XHRcdFx0XHRpZiAodyAtIGEgPiBmKChvIC0gcykgLyB4KSkgdGhyb3cgbmV3IGModSk7XG5cdFx0XHRcdFx0XHRcdGZvciAocyArPSAodyAtIGEpICogeCwgYSA9IHcsIHIgPSAwOyByIDwgdC5sZW5ndGg7IHIrKykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgobiA9IHRbcl0pIDwgYSAmJiArK3MgPiBvKSB0aHJvdyBuZXcgYyh1KTtcblx0XHRcdFx0XHRcdFx0XHRpZiAobiA9PT0gYSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgayA9IHMsIFMgPSAzNjsgOyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIEUgPSBTIDw9IGQgPyAxIDogUyA+PSBkICsgMjYgPyAyNiA6IFMgLSBkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoayA8IEUpIGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgTyA9IGsgLSBFLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAgPSAzNiAtIEU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHYoZSwgbChtKEUgKyAoTyAlIFApKSkpLCAoayA9IGYoTyAvIFApKSwgKFMgKz0gMzYpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dihlLCBsKG0oaykpKSwgKGQgPSBiKHMsIHgsIGcgPT09IHkpKSwgKHMgPSAwKSwgZysrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRzKyssIGErKztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiBoKGUsICcnKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlLFxuXHRcdFx0XHRcdFx0cixcblx0XHRcdFx0XHRcdG4gPSBbXSxcblx0XHRcdFx0XHRcdG8gPSB5KGQoZyh0KSwgYSwgJy4nKSwgJy4nKTtcblx0XHRcdFx0XHRmb3IgKGUgPSAwOyBlIDwgby5sZW5ndGg7IGUrKykgKHIgPSBvW2VdKSwgdihuLCBzKGksIHIpID8gJ3huLS0nICsgdyhyKSA6IHIpO1xuXHRcdFx0XHRcdHJldHVybiBoKG4sICcuJyk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTk4NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDEyMzYpLlBST1BFUixcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcig2MzUwKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gbyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gISFpW3RdKCkgfHwgJ+KAi8KF4aCOJyAhPT0gJ+KAi8KF4aCOJ1t0XSgpIHx8IChuICYmIGlbdF0ubmFtZSAhPT0gdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MTQzNTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDg4NDQpLFxuXHRcdFx0XHRcdG8gPSByKDQ2ODQpLFxuXHRcdFx0XHRcdGkgPSByKDQzMjcpLFxuXHRcdFx0XHRcdGEgPSByKDYzNTApLFxuXHRcdFx0XHRcdHUgPSBuKCcnLnJlcGxhY2UpLFxuXHRcdFx0XHRcdGMgPSBSZWdFeHAoJ15bJyArIGEgKyAnXSsnKSxcblx0XHRcdFx0XHRzID0gUmVnRXhwKCcoXnxbXicgKyBhICsgJ10pWycgKyBhICsgJ10rJCcpLFxuXHRcdFx0XHRcdGYgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gaShvKGUpKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIDEgJiB0ICYmIChyID0gdShyLCBjLCAnJykpLCAyICYgdCAmJiAociA9IHUociwgcywgJyQxJykpLCByO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0c3RhcnQ6IGYoMSksXG5cdFx0XHRcdFx0ZW5kOiBmKDIpLFxuXHRcdFx0XHRcdHRyaW06IGYoMyksXG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0MTQ2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMzYxNSksXG5cdFx0XHRcdFx0byA9IHIoMzY4OSksXG5cdFx0XHRcdFx0aSA9IHIoOTAzNykuU3RyaW5nO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdCEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJlxuXHRcdFx0XHRcdCFvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gIWkodCkgfHwgIShPYmplY3QodCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8ICghU3ltYm9sLnNoYW0gJiYgbiAmJiBuIDwgNDEpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDMwMzI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig2MDU4KSxcblx0XHRcdFx0XHRpID0gcig0MjAxKSxcblx0XHRcdFx0XHRhID0gcigxODgwKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHZhciB0ID0gbygnU3ltYm9sJyksXG5cdFx0XHRcdFx0XHRlID0gdCAmJiB0LnByb3RvdHlwZSxcblx0XHRcdFx0XHRcdHIgPSBlICYmIGUudmFsdWVPZixcblx0XHRcdFx0XHRcdHUgPSBpKCd0b1ByaW1pdGl2ZScpO1xuXHRcdFx0XHRcdGUgJiZcblx0XHRcdFx0XHRcdCFlW3VdICYmXG5cdFx0XHRcdFx0XHRhKFxuXHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHR1LFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuKHIsIHRoaXMpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7YXJpdHk6IDF9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDY1NDk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigxNDYpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBuICYmICEhU3ltYm9sLmZvciAmJiAhIVN5bWJvbC5rZXlGb3I7XG5cdFx0XHR9LFxuXHRcdFx0OTg4NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0dSA9IHIoOTAzNyksXG5cdFx0XHRcdFx0YyA9IHIoMTczNSksXG5cdFx0XHRcdFx0cyA9IHIoNDA3MSksXG5cdFx0XHRcdFx0ZiA9IHIoOTk4NSksXG5cdFx0XHRcdFx0bCA9IHIoNjgxMiksXG5cdFx0XHRcdFx0cCA9IHIoMzY4OSksXG5cdFx0XHRcdFx0aCA9IHIoMjY4OCksXG5cdFx0XHRcdFx0diA9IHIoNjAwNCksXG5cdFx0XHRcdFx0ZCA9IHIoNjQyMCksXG5cdFx0XHRcdFx0eSA9IHIoMTUwMCksXG5cdFx0XHRcdFx0ZyA9IHIoNDc2NCksXG5cdFx0XHRcdFx0bSA9IHIoODA2KSxcblx0XHRcdFx0XHRiID0gdS5zZXRJbW1lZGlhdGUsXG5cdFx0XHRcdFx0dyA9IHUuY2xlYXJJbW1lZGlhdGUsXG5cdFx0XHRcdFx0eCA9IHUucHJvY2Vzcyxcblx0XHRcdFx0XHRrID0gdS5EaXNwYXRjaCxcblx0XHRcdFx0XHRTID0gdS5GdW5jdGlvbixcblx0XHRcdFx0XHRFID0gdS5NZXNzYWdlQ2hhbm5lbCxcblx0XHRcdFx0XHRPID0gdS5TdHJpbmcsXG5cdFx0XHRcdFx0UCA9IDAsXG5cdFx0XHRcdFx0aiA9IHt9LFxuXHRcdFx0XHRcdEwgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcblx0XHRcdFx0cChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0biA9IHUubG9jYXRpb247XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR2YXIgXyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRpZiAobChqLCB0KSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGpbdF07XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSBqW3RdLCBlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRJID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdF8odCk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0VCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRfKHQuZGF0YSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRSID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHUucG9zdE1lc3NhZ2UoTyh0KSwgbi5wcm90b2NvbCArICcvLycgKyBuLmhvc3QpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdChiICYmIHcpIHx8XG5cdFx0XHRcdFx0KChiID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHkoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IGYodCkgPyB0IDogUyh0KSxcblx0XHRcdFx0XHRcdFx0ciA9IHYoYXJndW1lbnRzLCAxKTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdChqWysrUF0gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0YyhlLCB2b2lkIDAsIHIpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0byhQKSxcblx0XHRcdFx0XHRcdFx0UFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQodyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRkZWxldGUgalt0XTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRtXG5cdFx0XHRcdFx0XHQ/IChvID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHR4Lm5leHRUaWNrKEkodCkpO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0OiBrICYmIGsubm93XG5cdFx0XHRcdFx0XHRcdD8gKG8gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ay5ub3coSSh0KSk7XG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0OiBFICYmICFnXG5cdFx0XHRcdFx0XHRcdFx0PyAoKGEgPSAoaSA9IG5ldyBFKCkpLnBvcnQyKSwgKGkucG9ydDEub25tZXNzYWdlID0gVCksIChvID0gcyhhLnBvc3RNZXNzYWdlLCBhKSkpXG5cdFx0XHRcdFx0XHRcdFx0OiB1LmFkZEV2ZW50TGlzdGVuZXIgJiZcblx0XHRcdFx0XHRcdFx0XHRcdCAgZih1LnBvc3RNZXNzYWdlKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0ICAhdS5pbXBvcnRTY3JpcHRzICYmXG5cdFx0XHRcdFx0XHRcdFx0XHQgIG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdCAgJ2ZpbGU6JyAhPT0gbi5wcm90b2NvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0ICAhcChSKVxuXHRcdFx0XHRcdFx0XHRcdFx0PyAoKG8gPSBSKSwgdS5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgVCwgITEpKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiAobyA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0TCBpbiBkKCdzY3JpcHQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGguYXBwZW5kQ2hpbGQoZCgnc2NyaXB0JykpW0xdID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aC5yZW1vdmVDaGlsZCh0aGlzKSwgXyh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0VGltZW91dChJKHQpLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdCh0LmV4cG9ydHMgPSB7XG5cdFx0XHRcdFx0XHRzZXQ6IGIsXG5cdFx0XHRcdFx0XHRjbGVhcjogdyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQzNjQ4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4oKDEpLnZhbHVlT2YpO1xuXHRcdFx0fSxcblx0XHRcdDc1Nzg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4NzAwKSxcblx0XHRcdFx0XHRvID0gTWF0aC5tYXgsXG5cdFx0XHRcdFx0aSA9IE1hdGgubWluO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdHZhciByID0gbih0KTtcblx0XHRcdFx0XHRyZXR1cm4gciA8IDAgPyBvKHIgKyBlLCAwKSA6IGkociwgZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NTI5MDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDQ0MTMpLFxuXHRcdFx0XHRcdG8gPSByKDQ2ODQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBuKG8odCkpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDg3MDA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4ODI4KTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9ICt0O1xuXHRcdFx0XHRcdHJldHVybiBlICE9IGUgfHwgMCA9PT0gZSA/IDAgOiBuKGUpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDMxMjY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4NzAwKSxcblx0XHRcdFx0XHRvID0gTWF0aC5taW47XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHQgPiAwID8gbyhuKHQpLCA5MDA3MTk5MjU0NzQwOTkxKSA6IDA7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjkwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDY4NCksXG5cdFx0XHRcdFx0byA9IE9iamVjdDtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gbyhuKHQpKTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ4NzMyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMjYxNSksXG5cdFx0XHRcdFx0byA9IHIoODk5OSksXG5cdFx0XHRcdFx0aSA9IHIoNzM0KSxcblx0XHRcdFx0XHRhID0gcig0ODQ5KSxcblx0XHRcdFx0XHR1ID0gcig1ODk5KSxcblx0XHRcdFx0XHRjID0gcig0MjAxKSxcblx0XHRcdFx0XHRzID0gVHlwZUVycm9yLFxuXHRcdFx0XHRcdGYgPSBjKCd0b1ByaW1pdGl2ZScpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdGlmICghbyh0KSB8fCBpKHQpKSByZXR1cm4gdDtcblx0XHRcdFx0XHR2YXIgcixcblx0XHRcdFx0XHRcdGMgPSBhKHQsIGYpO1xuXHRcdFx0XHRcdGlmIChjKSB7XG5cdFx0XHRcdFx0XHRpZiAoKHZvaWQgMCA9PT0gZSAmJiAoZSA9ICdkZWZhdWx0JyksIChyID0gbihjLCB0LCBlKSksICFvKHIpIHx8IGkocikpKSByZXR1cm4gcjtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBzKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdm9pZCAwID09PSBlICYmIChlID0gJ251bWJlcicpLCB1KHQsIGUpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDgzNjA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig4NzMyKSxcblx0XHRcdFx0XHRvID0gcig3MzQpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlID0gbih0LCAnc3RyaW5nJyk7XG5cdFx0XHRcdFx0cmV0dXJuIG8oZSkgPyBlIDogZSArICcnO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDMwNDM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0ge307XG5cdFx0XHRcdChuW3IoNDIwMSkoJ3RvU3RyaW5nVGFnJyldID0gJ3onKSwgKHQuZXhwb3J0cyA9ICdbb2JqZWN0IHpdJyA9PT0gU3RyaW5nKG4pKTtcblx0XHRcdH0sXG5cdFx0XHQ0MzI3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTI2KSxcblx0XHRcdFx0XHRvID0gU3RyaW5nO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdGlmICgnU3ltYm9sJyA9PT0gbih0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcnKTtcblx0XHRcdFx0XHRyZXR1cm4gbyh0KTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQzNjkxOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR2YXIgZSA9IFN0cmluZztcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUodCk7XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICdPYmplY3QnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ0NjMwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoODg0NCksXG5cdFx0XHRcdFx0byA9IDAsXG5cdFx0XHRcdFx0aSA9IE1hdGgucmFuZG9tKCksXG5cdFx0XHRcdFx0YSA9IG4oKDEpLnRvU3RyaW5nKTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gJ1N5bWJvbCgnICsgKHZvaWQgMCA9PT0gdCA/ICcnIDogdCkgKyAnKV8nICsgYSgrK28gKyBpLCAzNik7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0NjgzNzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDM2ODkpLFxuXHRcdFx0XHRcdG8gPSByKDQyMDEpLFxuXHRcdFx0XHRcdGkgPSByKDc2OTcpLFxuXHRcdFx0XHRcdGEgPSByKDM5MzEpLFxuXHRcdFx0XHRcdHUgPSBvKCdpdGVyYXRvcicpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAhbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIHQgPSBuZXcgVVJMKCdiP2E9MSZiPTImYz0zJywgJ2h0dHA6Ly9hJyksXG5cdFx0XHRcdFx0XHRlID0gdC5zZWFyY2hQYXJhbXMsXG5cdFx0XHRcdFx0XHRyID0gbmV3IFVSTFNlYXJjaFBhcmFtcygnYT0xJmE9MiZiPTMnKSxcblx0XHRcdFx0XHRcdG4gPSAnJztcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0KHQucGF0aG5hbWUgPSAnYyUyMGQnKSxcblx0XHRcdFx0XHRcdGUuZm9yRWFjaChmdW5jdGlvbiAodCwgcikge1xuXHRcdFx0XHRcdFx0XHRlLmRlbGV0ZSgnYicpLCAobiArPSByICsgdCk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHIuZGVsZXRlKCdhJywgMiksXG5cdFx0XHRcdFx0XHRyLmRlbGV0ZSgnYicsIHZvaWQgMCksXG5cdFx0XHRcdFx0XHQoYSAmJiAoIXQudG9KU09OIHx8ICFyLmhhcygnYScsIDEpIHx8IHIuaGFzKCdhJywgMikgfHwgIXIuaGFzKCdhJywgdm9pZCAwKSB8fCByLmhhcygnYicpKSkgfHxcblx0XHRcdFx0XHRcdFx0KCFlLnNpemUgJiYgKGEgfHwgIWkpKSB8fFxuXHRcdFx0XHRcdFx0XHQhZS5zb3J0IHx8XG5cdFx0XHRcdFx0XHRcdCdodHRwOi8vYS9jJTIwZD9hPTEmYz0zJyAhPT0gdC5ocmVmIHx8XG5cdFx0XHRcdFx0XHRcdCczJyAhPT0gZS5nZXQoJ2MnKSB8fFxuXHRcdFx0XHRcdFx0XHQnYT0xJyAhPT0gU3RyaW5nKG5ldyBVUkxTZWFyY2hQYXJhbXMoJz9hPTEnKSkgfHxcblx0XHRcdFx0XHRcdFx0IWVbdV0gfHxcblx0XHRcdFx0XHRcdFx0J2EnICE9PSBuZXcgVVJMKCdodHRwczovL2FAYicpLnVzZXJuYW1lIHx8XG5cdFx0XHRcdFx0XHRcdCdiJyAhPT0gbmV3IFVSTFNlYXJjaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKCdhPWInKSkuZ2V0KCdhJykgfHxcblx0XHRcdFx0XHRcdFx0J3huLS1lMWF5YmMnICE9PSBuZXcgVVJMKCdodHRwOi8v0YLQtdGB0YInKS5ob3N0IHx8XG5cdFx0XHRcdFx0XHRcdCcjJUQwJUIxJyAhPT0gbmV3IFVSTCgnaHR0cDovL2Ej0LEnKS5oYXNoIHx8XG5cdFx0XHRcdFx0XHRcdCdhMWMzJyAhPT0gbiB8fFxuXHRcdFx0XHRcdFx0XHQneCcgIT09IG5ldyBVUkwoJ2h0dHA6Ly94Jywgdm9pZCAwKS5ob3N0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0OTUyNTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDE0Nik7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IG4gJiYgIVN5bWJvbC5zaGFtICYmICdzeW1ib2wnID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3I7XG5cdFx0XHR9LFxuXHRcdFx0NTY0ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDM2ODkpO1xuXHRcdFx0XHR0LmV4cG9ydHMgPVxuXHRcdFx0XHRcdG4gJiZcblx0XHRcdFx0XHRvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdDQyICE9PVxuXHRcdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkge30sICdwcm90b3R5cGUnLCB7dmFsdWU6IDQyLCB3cml0YWJsZTogITF9KS5wcm90b3R5cGVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0MTUwMDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0dmFyIGUgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCByKSB7XG5cdFx0XHRcdFx0aWYgKHQgPCByKSB0aHJvdyBuZXcgZSgnTm90IGVub3VnaCBhcmd1bWVudHMnKTtcblx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ5ODM0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyksXG5cdFx0XHRcdFx0byA9IHIoOTk4NSksXG5cdFx0XHRcdFx0aSA9IG4uV2Vha01hcDtcblx0XHRcdFx0dC5leHBvcnRzID0gbyhpKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKGkpKTtcblx0XHRcdH0sXG5cdFx0XHQ1NDA1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNDk2KSxcblx0XHRcdFx0XHRvID0gcig2ODEyKSxcblx0XHRcdFx0XHRpID0gcig2MTQ1KSxcblx0XHRcdFx0XHRhID0gcigyNTYwKS5mO1xuXHRcdFx0XHR0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHZhciBlID0gbi5TeW1ib2wgfHwgKG4uU3ltYm9sID0ge30pO1xuXHRcdFx0XHRcdG8oZSwgdCkgfHwgYShlLCB0LCB7dmFsdWU6IGkuZih0KX0pO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDYxNDU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig0MjAxKTtcblx0XHRcdFx0ZS5mID0gbjtcblx0XHRcdH0sXG5cdFx0XHQ0MjAxOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyksXG5cdFx0XHRcdFx0byA9IHIoMzQzMCksXG5cdFx0XHRcdFx0aSA9IHIoNjgxMiksXG5cdFx0XHRcdFx0YSA9IHIoNDYzMCksXG5cdFx0XHRcdFx0dSA9IHIoMTQ2KSxcblx0XHRcdFx0XHRjID0gcig5NTI1KSxcblx0XHRcdFx0XHRzID0gbi5TeW1ib2wsXG5cdFx0XHRcdFx0ZiA9IG8oJ3drcycpLFxuXHRcdFx0XHRcdGwgPSBjID8gcy5mb3IgfHwgcyA6IChzICYmIHMud2l0aG91dFNldHRlcikgfHwgYTtcblx0XHRcdFx0dC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gaShmLCB0KSB8fCAoZlt0XSA9IHUgJiYgaShzLCB0KSA/IHNbdF0gOiBsKCdTeW1ib2wuJyArIHQpKSwgZlt0XTtcblx0XHRcdFx0fTtcblx0XHRcdH0sXG5cdFx0XHQ2MzUwOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHR0LmV4cG9ydHMgPSAnXFx0XFxuXFx2XFxmXFxyIMKg4ZqA4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXFx1MjAyOFxcdTIwMjlcXHVmZWZmJztcblx0XHRcdH0sXG5cdFx0XHQxMDY0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjA1OCksXG5cdFx0XHRcdFx0byA9IHIoNjgxMiksXG5cdFx0XHRcdFx0aSA9IHIoNTc3MyksXG5cdFx0XHRcdFx0YSA9IHIoMzYyMiksXG5cdFx0XHRcdFx0dSA9IHIoOTM4NSksXG5cdFx0XHRcdFx0YyA9IHIoODc1OCksXG5cdFx0XHRcdFx0cyA9IHIoODA1NSksXG5cdFx0XHRcdFx0ZiA9IHIoMzQ1NyksXG5cdFx0XHRcdFx0bCA9IHIoMzg0MSksXG5cdFx0XHRcdFx0cCA9IHIoMjU3MCksXG5cdFx0XHRcdFx0aCA9IHIoNTQxMSksXG5cdFx0XHRcdFx0diA9IHIoNzY5NyksXG5cdFx0XHRcdFx0ZCA9IHIoMzkzMSk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCByLCB5KSB7XG5cdFx0XHRcdFx0dmFyIGcgPSAnc3RhY2tUcmFjZUxpbWl0Jyxcblx0XHRcdFx0XHRcdG0gPSB5ID8gMiA6IDEsXG5cdFx0XHRcdFx0XHRiID0gdC5zcGxpdCgnLicpLFxuXHRcdFx0XHRcdFx0dyA9IGJbYi5sZW5ndGggLSAxXSxcblx0XHRcdFx0XHRcdHggPSBuLmFwcGx5KG51bGwsIGIpO1xuXHRcdFx0XHRcdGlmICh4KSB7XG5cdFx0XHRcdFx0XHR2YXIgayA9IHgucHJvdG90eXBlO1xuXHRcdFx0XHRcdFx0aWYgKCghZCAmJiBvKGssICdjYXVzZScpICYmIGRlbGV0ZSBrLmNhdXNlLCAhcikpIHJldHVybiB4O1xuXHRcdFx0XHRcdFx0dmFyIFMgPSBuKCdFcnJvcicpLFxuXHRcdFx0XHRcdFx0XHRFID0gZShmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gbCh5ID8gZSA6IHQsIHZvaWQgMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRuID0geSA/IG5ldyB4KHQpIDogbmV3IHgoKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0dm9pZCAwICE9PSByICYmIGkobiwgJ21lc3NhZ2UnLCByKSxcblx0XHRcdFx0XHRcdFx0XHRcdGgobiwgRSwgbi5zdGFjaywgMiksXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzICYmIGEoaywgdGhpcykgJiYgZihuLCB0aGlzLCBFKSxcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3VtZW50cy5sZW5ndGggPiBtICYmIHAobiwgYXJndW1lbnRzW21dKSxcblx0XHRcdFx0XHRcdFx0XHRcdG5cblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0KChFLnByb3RvdHlwZSA9IGspLFxuXHRcdFx0XHRcdFx0XHQnRXJyb3InICE9PSB3XG5cdFx0XHRcdFx0XHRcdFx0PyB1XG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHUoRSwgUylcblx0XHRcdFx0XHRcdFx0XHRcdDogYyhFLCBTLCB7bmFtZTogITB9KVxuXHRcdFx0XHRcdFx0XHRcdDogdiAmJiBnIGluIHggJiYgKHMoRSwgeCwgZyksIHMoRSwgeCwgJ3ByZXBhcmVTdGFja1RyYWNlJykpLFxuXHRcdFx0XHRcdFx0XHRjKEUsIHgpLFxuXHRcdFx0XHRcdFx0XHQhZClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRrLm5hbWUgIT09IHcgJiYgaShrLCAnbmFtZScsIHcpLCAoay5jb25zdHJ1Y3RvciA9IEUpO1xuXHRcdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0XHRcdFx0cmV0dXJuIEU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDQzMzg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcigyMjk3KSxcblx0XHRcdFx0XHRhID0gcig4OTk5KSxcblx0XHRcdFx0XHR1ID0gcig2OTApLFxuXHRcdFx0XHRcdGMgPSByKDYzMTApLFxuXHRcdFx0XHRcdHMgPSByKDU1NjUpLFxuXHRcdFx0XHRcdGYgPSByKDY1MjIpLFxuXHRcdFx0XHRcdGwgPSByKDcxMjApLFxuXHRcdFx0XHRcdHAgPSByKDkwNDIpLFxuXHRcdFx0XHRcdGggPSByKDQyMDEpLFxuXHRcdFx0XHRcdHYgPSByKDM2MTUpLFxuXHRcdFx0XHRcdGQgPSBoKCdpc0NvbmNhdFNwcmVhZGFibGUnKSxcblx0XHRcdFx0XHR5ID1cblx0XHRcdFx0XHRcdHYgPj0gNTEgfHxcblx0XHRcdFx0XHRcdCFvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSBbXTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICh0W2RdID0gITEpLCB0LmNvbmNhdCgpWzBdICE9PSB0O1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0ZyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRpZiAoIWEodCkpIHJldHVybiAhMTtcblx0XHRcdFx0XHRcdHZhciBlID0gdFtkXTtcblx0XHRcdFx0XHRcdHJldHVybiB2b2lkIDAgIT09IGUgPyAhIWUgOiBpKHQpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ0FycmF5JywgcHJvdG86ICEwLCBhcml0eTogMSwgZm9yY2VkOiAheSB8fCAhcCgnY29uY2F0Jyl9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNvbmNhdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0cixcblx0XHRcdFx0XHRcdFx0XHRuLFxuXHRcdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0XHRhID0gdSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRwID0gbChhLCAwKSxcblx0XHRcdFx0XHRcdFx0XHRoID0gMDtcblx0XHRcdFx0XHRcdFx0Zm9yIChlID0gLTEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBlIDwgbjsgZSsrKVxuXHRcdFx0XHRcdFx0XHRcdGlmIChnKChpID0gLTEgPT09IGUgPyBhIDogYXJndW1lbnRzW2VdKSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKG8gPSBjKGkpLCBzKGggKyBvKSwgciA9IDA7IHIgPCBvOyByKyssIGgrKykgciBpbiBpICYmIGYocCwgaCwgaVtyXSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBzKGggKyAxKSwgZihwLCBoKyssIGkpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKHAubGVuZ3RoID0gaCksIHA7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ4MDc3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMjk2MCkuZmlsdGVyO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdBcnJheScsIHByb3RvOiAhMCwgZm9yY2VkOiAhcig5MDQyKSgnZmlsdGVyJyl9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZpbHRlcjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8odGhpcywgdCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NTcyODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDI5NjApLmZpbmQsXG5cdFx0XHRcdFx0aSA9IHIoNzM3MCksXG5cdFx0XHRcdFx0YSA9ICdmaW5kJyxcblx0XHRcdFx0XHR1ID0gITA7XG5cdFx0XHRcdGEgaW4gW10gJiZcblx0XHRcdFx0XHRBcnJheSgxKVthXShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR1ID0gITE7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdHt0YXJnZXQ6ICdBcnJheScsIHByb3RvOiAhMCwgZm9yY2VkOiB1fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0ZmluZDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbyh0aGlzLCB0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRpKGEpO1xuXHRcdFx0fSxcblx0XHRcdDcwNDk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigxMDU1KTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICdBcnJheScsXG5cdFx0XHRcdFx0XHRzdGF0OiAhMCxcblx0XHRcdFx0XHRcdGZvcmNlZDogIXIoNjQzMSkoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0QXJyYXkuZnJvbSh0KTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e2Zyb206IG99XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NjgwMTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDQzMjgpLmluY2x1ZGVzLFxuXHRcdFx0XHRcdGkgPSByKDM2ODkpLFxuXHRcdFx0XHRcdGEgPSByKDczNzApO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ0FycmF5Jyxcblx0XHRcdFx0XHRcdHByb3RvOiAhMCxcblx0XHRcdFx0XHRcdGZvcmNlZDogaShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAhQXJyYXkoMSkuaW5jbHVkZXMoKTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5jbHVkZXM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvKHRoaXMsIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRcdGEoJ2luY2x1ZGVzJyk7XG5cdFx0XHR9LFxuXHRcdFx0NzUyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNTI5MCksXG5cdFx0XHRcdFx0byA9IHIoNzM3MCksXG5cdFx0XHRcdFx0aSA9IHIoOTQ3OCksXG5cdFx0XHRcdFx0YSA9IHIoNjE4KSxcblx0XHRcdFx0XHR1ID0gcigyNTYwKS5mLFxuXHRcdFx0XHRcdGMgPSByKDE5MzQpLFxuXHRcdFx0XHRcdHMgPSByKDc4MDcpLFxuXHRcdFx0XHRcdGYgPSByKDM5MzEpLFxuXHRcdFx0XHRcdGwgPSByKDc2OTcpLFxuXHRcdFx0XHRcdHAgPSAnQXJyYXkgSXRlcmF0b3InLFxuXHRcdFx0XHRcdGggPSBhLnNldCxcblx0XHRcdFx0XHR2ID0gYS5nZXR0ZXJGb3IocCk7XG5cdFx0XHRcdHQuZXhwb3J0cyA9IGMoXG5cdFx0XHRcdFx0QXJyYXksXG5cdFx0XHRcdFx0J0FycmF5Jyxcblx0XHRcdFx0XHRmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0aCh0aGlzLCB7dHlwZTogcCwgdGFyZ2V0OiBuKHQpLCBpbmRleDogMCwga2luZDogZX0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB2KHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRlID0gdC50YXJnZXQsXG5cdFx0XHRcdFx0XHRcdHIgPSB0LmluZGV4Kys7XG5cdFx0XHRcdFx0XHRpZiAoIWUgfHwgciA+PSBlLmxlbmd0aCkgcmV0dXJuICh0LnRhcmdldCA9IHZvaWQgMCksIHModm9pZCAwLCAhMCk7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHQua2luZCkge1xuXHRcdFx0XHRcdFx0XHRjYXNlICdrZXlzJzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcyhyLCAhMSk7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ3ZhbHVlcyc6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHMoZVtyXSwgITEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHMoW3IsIGVbcl1dLCAhMSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQndmFsdWVzJ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHR2YXIgZCA9IChpLkFyZ3VtZW50cyA9IGkuQXJyYXkpO1xuXHRcdFx0XHRpZiAoKG8oJ2tleXMnKSwgbygndmFsdWVzJyksIG8oJ2VudHJpZXMnKSwgIWYgJiYgbCAmJiAndmFsdWVzJyAhPT0gZC5uYW1lKSlcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dShkLCAnbmFtZScsIHt2YWx1ZTogJ3ZhbHVlcyd9KTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7fVxuXHRcdFx0fSxcblx0XHRcdDYyMDM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig4ODQ0KSxcblx0XHRcdFx0XHRpID0gcig0NDEzKSxcblx0XHRcdFx0XHRhID0gcig1MjkwKSxcblx0XHRcdFx0XHR1ID0gcig2ODM0KSxcblx0XHRcdFx0XHRjID0gbyhbXS5qb2luKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnQXJyYXknLCBwcm90bzogITAsIGZvcmNlZDogaSAhPT0gT2JqZWN0IHx8ICF1KCdqb2luJywgJywnKX0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0am9pbjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGMoYSh0aGlzKSwgdm9pZCAwID09PSB0ID8gJywnIDogdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ1NjA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig2OTApLFxuXHRcdFx0XHRcdGkgPSByKDYzMTApLFxuXHRcdFx0XHRcdGEgPSByKDU2NDkpLFxuXHRcdFx0XHRcdHUgPSByKDU1NjUpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ0FycmF5Jyxcblx0XHRcdFx0XHRcdHByb3RvOiAhMCxcblx0XHRcdFx0XHRcdGFyaXR5OiAxLFxuXHRcdFx0XHRcdFx0Zm9yY2VkOlxuXHRcdFx0XHRcdFx0XHRyKDM2ODkpKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0NDI5NDk2NzI5NyAhPT1cblx0XHRcdFx0XHRcdFx0XHRcdFtdLnB1c2guY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aDogNDI5NDk2NzI5Nixcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0MVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0pIHx8XG5cdFx0XHRcdFx0XHRcdCEoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sICdsZW5ndGgnLCB7d3JpdGFibGU6ICExfSkucHVzaCgpO1xuXHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0IGluc3RhbmNlb2YgVHlwZUVycm9yO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSkoKSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHB1c2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gbyh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRyID0gaShlKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gYXJndW1lbnRzLmxlbmd0aDtcblx0XHRcdFx0XHRcdFx0dShyICsgbik7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgbjsgYysrKSAoZVtyXSA9IGFyZ3VtZW50c1tjXSksIHIrKztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGEoZSwgciksIHI7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ5NzMwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMjI5NyksXG5cdFx0XHRcdFx0aSA9IHIoOTQyOSksXG5cdFx0XHRcdFx0YSA9IHIoODk5OSksXG5cdFx0XHRcdFx0dSA9IHIoNzU3OCksXG5cdFx0XHRcdFx0YyA9IHIoNjMxMCksXG5cdFx0XHRcdFx0cyA9IHIoNTI5MCksXG5cdFx0XHRcdFx0ZiA9IHIoNjUyMiksXG5cdFx0XHRcdFx0bCA9IHIoNDIwMSksXG5cdFx0XHRcdFx0cCA9IHIoOTA0MiksXG5cdFx0XHRcdFx0aCA9IHIoNjAwNCksXG5cdFx0XHRcdFx0diA9IHAoJ3NsaWNlJyksXG5cdFx0XHRcdFx0ZCA9IGwoJ3NwZWNpZXMnKSxcblx0XHRcdFx0XHR5ID0gQXJyYXksXG5cdFx0XHRcdFx0ZyA9IE1hdGgubWF4O1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdBcnJheScsIHByb3RvOiAhMCwgZm9yY2VkOiAhdn0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0c2xpY2U6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0bCxcblx0XHRcdFx0XHRcdFx0XHRwID0gcyh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHR2ID0gYyhwKSxcblx0XHRcdFx0XHRcdFx0XHRtID0gdSh0LCB2KSxcblx0XHRcdFx0XHRcdFx0XHRiID0gdSh2b2lkIDAgPT09IGUgPyB2IDogZSwgdik7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRvKHApICYmXG5cdFx0XHRcdFx0XHRcdFx0KChyID0gcC5jb25zdHJ1Y3RvciksXG5cdFx0XHRcdFx0XHRcdFx0KChpKHIpICYmIChyID09PSB5IHx8IG8oci5wcm90b3R5cGUpKSkgfHwgKGEocikgJiYgbnVsbCA9PT0gKHIgPSByW2RdKSkpICYmXG5cdFx0XHRcdFx0XHRcdFx0XHQociA9IHZvaWQgMCksXG5cdFx0XHRcdFx0XHRcdFx0ciA9PT0geSB8fCB2b2lkIDAgPT09IHIpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaChwLCBtLCBiKTtcblx0XHRcdFx0XHRcdFx0Zm9yIChuID0gbmV3ICh2b2lkIDAgPT09IHIgPyB5IDogcikoZyhiIC0gbSwgMCkpLCBsID0gMDsgbSA8IGI7IG0rKywgbCsrKVxuXHRcdFx0XHRcdFx0XHRcdG0gaW4gcCAmJiBmKG4sIGwsIHBbbV0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKG4ubGVuZ3RoID0gbCksIG47XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ5OTAzOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoNjgxMiksXG5cdFx0XHRcdFx0byA9IHIoMTg4MCksXG5cdFx0XHRcdFx0aSA9IHIoMTc5NyksXG5cdFx0XHRcdFx0YSA9IHIoNDIwMSkoJ3RvUHJpbWl0aXZlJyksXG5cdFx0XHRcdFx0dSA9IERhdGUucHJvdG90eXBlO1xuXHRcdFx0XHRuKHUsIGEpIHx8IG8odSwgYSwgaSk7XG5cdFx0XHR9LFxuXHRcdFx0MTA1NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDkwMzcpLFxuXHRcdFx0XHRcdGkgPSByKDE3MzUpLFxuXHRcdFx0XHRcdGEgPSByKDEwNjQpLFxuXHRcdFx0XHRcdHUgPSAnV2ViQXNzZW1ibHknLFxuXHRcdFx0XHRcdGMgPSBvW3VdLFxuXHRcdFx0XHRcdHMgPSA3ICE9PSBuZXcgRXJyb3IoJ2UnLCB7Y2F1c2U6IDd9KS5jYXVzZSxcblx0XHRcdFx0XHRmID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdHZhciByID0ge307XG5cdFx0XHRcdFx0XHQoclt0XSA9IGEodCwgZSwgcykpLFxuXHRcdFx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGdsb2JhbDogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRhcml0eTogMSxcblx0XHRcdFx0XHRcdFx0XHRcdGZvcmNlZDogcyxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHJcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGwgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0aWYgKGMgJiYgY1t0XSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IHt9O1xuXHRcdFx0XHRcdFx0XHQoclt0XSA9IGEodSArICcuJyArIHQsIGUsIHMpKSxcblx0XHRcdFx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0YXJnZXQ6IHUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN0YXQ6ICEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFyaXR5OiAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JjZWQ6IHMsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0clxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0ZignRXJyb3InLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGkodCwgdGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0XHRmKCdFdmFsRXJyb3InLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGYoJ1JhbmdlRXJyb3InLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGYoJ1JlZmVyZW5jZUVycm9yJywgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh0LCB0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRmKCdTeW50YXhFcnJvcicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodCwgdGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0ZignVHlwZUVycm9yJywgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh0LCB0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRmKCdVUklFcnJvcicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodCwgdGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0bCgnQ29tcGlsZUVycm9yJywgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaSh0LCB0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRsKCdMaW5rRXJyb3InLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBpKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGwoJ1J1bnRpbWVFcnJvcicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodCwgdGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NDI4NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDEyMzYpLkVYSVNUUyxcblx0XHRcdFx0XHRpID0gcig4ODQ0KSxcblx0XHRcdFx0XHRhID0gcigyMTQ4KSxcblx0XHRcdFx0XHR1ID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuXHRcdFx0XHRcdGMgPSBpKHUudG9TdHJpbmcpLFxuXHRcdFx0XHRcdHMgPSAvZnVuY3Rpb25cXGIoPzpcXHN8XFwvXFwqW1xcU1xcc10qP1xcKlxcL3xcXC9cXC9bXlxcblxccl0qW1xcblxccl0rKSooW15cXHMoL10qKS8sXG5cdFx0XHRcdFx0ZiA9IGkocy5leGVjKTtcblx0XHRcdFx0biAmJlxuXHRcdFx0XHRcdCFvICYmXG5cdFx0XHRcdFx0YSh1LCAnbmFtZScsIHtcblx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZihzLCBjKHRoaXMpKVsxXTtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAnJztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ4MzI0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNjA1OCksXG5cdFx0XHRcdFx0aSA9IHIoMTczNSksXG5cdFx0XHRcdFx0YSA9IHIoMjYxNSksXG5cdFx0XHRcdFx0dSA9IHIoODg0NCksXG5cdFx0XHRcdFx0YyA9IHIoMzY4OSksXG5cdFx0XHRcdFx0cyA9IHIoOTk4NSksXG5cdFx0XHRcdFx0ZiA9IHIoNzM0KSxcblx0XHRcdFx0XHRsID0gcig2MDA0KSxcblx0XHRcdFx0XHRwID0gcigyNjQzKSxcblx0XHRcdFx0XHRoID0gcigxNDYpLFxuXHRcdFx0XHRcdHYgPSBTdHJpbmcsXG5cdFx0XHRcdFx0ZCA9IG8oJ0pTT04nLCAnc3RyaW5naWZ5JyksXG5cdFx0XHRcdFx0eSA9IHUoLy4vLmV4ZWMpLFxuXHRcdFx0XHRcdGcgPSB1KCcnLmNoYXJBdCksXG5cdFx0XHRcdFx0bSA9IHUoJycuY2hhckNvZGVBdCksXG5cdFx0XHRcdFx0YiA9IHUoJycucmVwbGFjZSksXG5cdFx0XHRcdFx0dyA9IHUoKDEpLnRvU3RyaW5nKSxcblx0XHRcdFx0XHR4ID0gL1tcXHVEODAwLVxcdURGRkZdL2csXG5cdFx0XHRcdFx0ayA9IC9eW1xcdUQ4MDAtXFx1REJGRl0kLyxcblx0XHRcdFx0XHRTID0gL15bXFx1REMwMC1cXHVERkZGXSQvLFxuXHRcdFx0XHRcdEUgPVxuXHRcdFx0XHRcdFx0IWggfHxcblx0XHRcdFx0XHRcdGMoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IG8oJ1N5bWJvbCcpKCdzdHJpbmdpZnkgZGV0ZWN0aW9uJyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0J1tudWxsXScgIT09IGQoW3RdKSB8fFxuXHRcdFx0XHRcdFx0XHRcdCd7fScgIT09XG5cdFx0XHRcdFx0XHRcdFx0XHRkKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YTogdCxcblx0XHRcdFx0XHRcdFx0XHRcdH0pIHx8XG5cdFx0XHRcdFx0XHRcdFx0J3t9JyAhPT0gZChPYmplY3QodCkpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRPID0gYyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ1wiXFxcXHVkZjA2XFxcXHVkODM0XCInICE9PSBkKCdcXHVkZjA2XFx1ZDgzNCcpIHx8ICdcIlxcXFx1ZGVhZFwiJyAhPT0gZCgnXFx1ZGVhZCcpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFAgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBsKGFyZ3VtZW50cyksXG5cdFx0XHRcdFx0XHRcdG4gPSBwKGUpO1xuXHRcdFx0XHRcdFx0aWYgKHMobikgfHwgKHZvaWQgMCAhPT0gdCAmJiAhZih0KSkpXG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KHJbMV0gPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKChzKG4pICYmIChlID0gYShuLCB0aGlzLCB2KHQpLCBlKSksICFmKGUpKSkgcmV0dXJuIGU7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0aShkLCBudWxsLCByKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0aiA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbiA9IGcociwgZSAtIDEpLFxuXHRcdFx0XHRcdFx0XHRvID0gZyhyLCBlICsgMSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKHkoaywgdCkgJiYgIXkoUywgbykpIHx8ICh5KFMsIHQpICYmICF5KGssIG4pKSA/ICdcXFxcdScgKyB3KG0odCwgMCksIDE2KSA6IHQ7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0ZCAmJlxuXHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHR7dGFyZ2V0OiAnSlNPTicsIHN0YXQ6ICEwLCBhcml0eTogMywgZm9yY2VkOiBFIHx8IE99LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRzdHJpbmdpZnk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSBsKGFyZ3VtZW50cyksXG5cdFx0XHRcdFx0XHRcdFx0XHRvID0gaShFID8gUCA6IGQsIG51bGwsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBPICYmICdzdHJpbmcnID09IHR5cGVvZiBvID8gYihvLCB4LCBqKSA6IG87XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ3NjI5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTAzNyk7XG5cdFx0XHRcdHIoNTk5Nykobi5KU09OLCAnSlNPTicsICEwKTtcblx0XHRcdH0sXG5cdFx0XHQ5MzIyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDMxOSkoXG5cdFx0XHRcdFx0J01hcCcsXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB2b2lkIDApO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHIoODAwKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDY2NDY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHIoOTMyMik7XG5cdFx0XHR9LFxuXHRcdFx0NzUwOTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0cig1OTk3KShNYXRoLCAnTWF0aCcsICEwKTtcblx0XHRcdH0sXG5cdFx0XHQ5Mjg4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMzkzMSksXG5cdFx0XHRcdFx0aSA9IHIoNzY5NyksXG5cdFx0XHRcdFx0YSA9IHIoOTAzNyksXG5cdFx0XHRcdFx0dSA9IHIoNDk2KSxcblx0XHRcdFx0XHRjID0gcig4ODQ0KSxcblx0XHRcdFx0XHRzID0gcig1MjY2KSxcblx0XHRcdFx0XHRmID0gcig2ODEyKSxcblx0XHRcdFx0XHRsID0gcigzNDU3KSxcblx0XHRcdFx0XHRwID0gcigzNjIyKSxcblx0XHRcdFx0XHRoID0gcig3MzQpLFxuXHRcdFx0XHRcdHYgPSByKDg3MzIpLFxuXHRcdFx0XHRcdGQgPSByKDM2ODkpLFxuXHRcdFx0XHRcdHkgPSByKDI3NDEpLmYsXG5cdFx0XHRcdFx0ZyA9IHIoMjQ3NCkuZixcblx0XHRcdFx0XHRtID0gcigyNTYwKS5mLFxuXHRcdFx0XHRcdGIgPSByKDM2NDgpLFxuXHRcdFx0XHRcdHcgPSByKDE0MzUpLnRyaW0sXG5cdFx0XHRcdFx0eCA9ICdOdW1iZXInLFxuXHRcdFx0XHRcdGsgPSBhW3hdLFxuXHRcdFx0XHRcdFMgPSB1W3hdLFxuXHRcdFx0XHRcdEUgPSBrLnByb3RvdHlwZSxcblx0XHRcdFx0XHRPID0gYS5UeXBlRXJyb3IsXG5cdFx0XHRcdFx0UCA9IGMoJycuc2xpY2UpLFxuXHRcdFx0XHRcdGogPSBjKCcnLmNoYXJDb2RlQXQpLFxuXHRcdFx0XHRcdEwgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdHIsXG5cdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdHUsXG5cdFx0XHRcdFx0XHRcdGMsXG5cdFx0XHRcdFx0XHRcdHMgPSB2KHQsICdudW1iZXInKTtcblx0XHRcdFx0XHRcdGlmIChoKHMpKSB0aHJvdyBuZXcgTygnQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBudW1iZXInKTtcblx0XHRcdFx0XHRcdGlmICgnc3RyaW5nJyA9PSB0eXBlb2YgcyAmJiBzLmxlbmd0aCA+IDIpXG5cdFx0XHRcdFx0XHRcdGlmICgoKHMgPSB3KHMpKSwgNDMgPT09IChlID0gaihzLCAwKSkgfHwgNDUgPT09IGUpKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKDg4ID09PSAociA9IGoocywgMikpIHx8IDEyMCA9PT0gcikgcmV0dXJuIE5hTjtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICg0OCA9PT0gZSkge1xuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoaihzLCAxKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA2Njpcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgOTg6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gMiksIChvID0gNDkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzk6XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDExMTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSA4KSwgKG8gPSA1NSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICtzO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRmb3IgKGEgPSAoaSA9IFAocywgMikpLmxlbmd0aCwgdSA9IDA7IHUgPCBhOyB1KyspXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoKGMgPSBqKGksIHUpKSA8IDQ4IHx8IGMgPiBvKSByZXR1cm4gTmFOO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwYXJzZUludChpLCBuKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuICtzO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XyA9IHMoeCwgIWsoJyAwbzEnKSB8fCAhaygnMGIxJykgfHwgaygnKzB4MScpKSxcblx0XHRcdFx0XHRJID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlLFxuXHRcdFx0XHRcdFx0XHRyID1cblx0XHRcdFx0XHRcdFx0XHRhcmd1bWVudHMubGVuZ3RoIDwgMVxuXHRcdFx0XHRcdFx0XHRcdFx0PyAwXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IGsoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IHYodCwgJ251bWJlcicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICdiaWdpbnQnID09IHR5cGVvZiBlID8gZSA6IEwoZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkodClcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybiBwKEUsIChlID0gdGhpcykpICYmXG5cdFx0XHRcdFx0XHRcdGQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdGIoZSk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdD8gbChPYmplY3QociksIHRoaXMsIEkpXG5cdFx0XHRcdFx0XHRcdDogcjtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHQoSS5wcm90b3R5cGUgPSBFKSxcblx0XHRcdFx0XHRfICYmICFvICYmIChFLmNvbnN0cnVjdG9yID0gSSksXG5cdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Z2xvYmFsOiAhMCxcblx0XHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6ICEwLFxuXHRcdFx0XHRcdFx0XHR3cmFwOiAhMCxcblx0XHRcdFx0XHRcdFx0Zm9yY2VkOiBfLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtOdW1iZXI6IEl9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0dmFyIFQgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHR2YXIgcixcblx0XHRcdFx0XHRcdFx0biA9IGlcblx0XHRcdFx0XHRcdFx0XHQ/IHkoZSlcblx0XHRcdFx0XHRcdFx0XHQ6ICdNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSxFUFNJTE9OLE1BWF9TQUZFX0lOVEVHRVIsTUlOX1NBRkVfSU5URUdFUixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixwYXJzZUZsb2F0LHBhcnNlSW50LGZyb21TdHJpbmcscmFuZ2UnLnNwbGl0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnLCdcblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdG8gPSAwO1xuXHRcdFx0XHRcdFx0bi5sZW5ndGggPiBvO1xuXHRcdFx0XHRcdFx0bysrXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0ZihlLCAociA9IG5bb10pKSAmJiAhZih0LCByKSAmJiBtKHQsIHIsIGcoZSwgcikpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRvICYmIFMgJiYgVCh1W3hdLCBTKSwgKF8gfHwgbykgJiYgVCh1W3hdLCBrKTtcblx0XHRcdH0sXG5cdFx0XHQ2NTg1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoOTQxOSkuZW50cmllcztcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGVudHJpZXM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvKHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MTkxOTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDM2ODkpLFxuXHRcdFx0XHRcdGkgPSByKDUyOTApLFxuXHRcdFx0XHRcdGEgPSByKDI0NzQpLmYsXG5cdFx0XHRcdFx0dSA9IHIoNzY5Nyk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiAnT2JqZWN0Jyxcblx0XHRcdFx0XHRcdHN0YXQ6ICEwLFxuXHRcdFx0XHRcdFx0Zm9yY2VkOlxuXHRcdFx0XHRcdFx0XHQhdSB8fFxuXHRcdFx0XHRcdFx0XHRvKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRhKDEpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHNoYW06ICF1LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYShpKHQpLCBlKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDk0NzQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig3Njk3KSxcblx0XHRcdFx0XHRpID0gcig5MTUyKSxcblx0XHRcdFx0XHRhID0gcig1MjkwKSxcblx0XHRcdFx0XHR1ID0gcigyNDc0KSxcblx0XHRcdFx0XHRjID0gcig2NTIyKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogITAsIHNoYW06ICFvfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlLCByLCBuID0gYSh0KSwgbyA9IHUuZiwgcyA9IGkobiksIGYgPSB7fSwgbCA9IDA7IHMubGVuZ3RoID4gbDsgKVxuXHRcdFx0XHRcdFx0XHRcdHZvaWQgMCAhPT0gKHIgPSBvKG4sIChlID0gc1tsKytdKSkpICYmIGMoZiwgZSwgcik7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0OTQzNDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDE0NiksXG5cdFx0XHRcdFx0aSA9IHIoMzY4OSksXG5cdFx0XHRcdFx0YSA9IHIoNzUxOCksXG5cdFx0XHRcdFx0dSA9IHIoNjkwKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICdPYmplY3QnLFxuXHRcdFx0XHRcdFx0c3RhdDogITAsXG5cdFx0XHRcdFx0XHRmb3JjZWQ6XG5cdFx0XHRcdFx0XHRcdCFvIHx8XG5cdFx0XHRcdFx0XHRcdGkoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdGEuZigxKTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gYS5mO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZSA/IGUodSh0KSkgOiBbXTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDgwNTI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigzNjg5KSxcblx0XHRcdFx0XHRpID0gcig2OTApLFxuXHRcdFx0XHRcdGEgPSByKDE4NjgpLFxuXHRcdFx0XHRcdHUgPSByKDE3NDgpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ09iamVjdCcsXG5cdFx0XHRcdFx0XHRzdGF0OiAhMCxcblx0XHRcdFx0XHRcdGZvcmNlZDogbyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGEoMSk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHNoYW06ICF1LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Z2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhKGkodCkpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0OTM1ODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDY5MCksXG5cdFx0XHRcdFx0aSA9IHIoMzAwKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICdPYmplY3QnLFxuXHRcdFx0XHRcdFx0c3RhdDogITAsXG5cdFx0XHRcdFx0XHRmb3JjZWQ6IHIoMzY4OSkoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRpKDEpO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXlzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaShvKHQpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDIyODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDMwNDMpLFxuXHRcdFx0XHRcdG8gPSByKDE4ODApLFxuXHRcdFx0XHRcdGkgPSByKDUwNzMpO1xuXHRcdFx0XHRuIHx8IG8oT2JqZWN0LnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgaSwge3Vuc2FmZTogITB9KTtcblx0XHRcdH0sXG5cdFx0XHQxNjkyOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMjYxNSksXG5cdFx0XHRcdFx0aSA9IHIoNTA5KSxcblx0XHRcdFx0XHRhID0gcig4NzQyKSxcblx0XHRcdFx0XHR1ID0gcig5MzAyKSxcblx0XHRcdFx0XHRjID0gcig4NzM0KTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6ICEwLCBmb3JjZWQ6IHIoNTYyKX0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0YWxsOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0ciA9IGEuZihlKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gci5yZXNvbHZlLFxuXHRcdFx0XHRcdFx0XHRcdHMgPSByLnJlamVjdCxcblx0XHRcdFx0XHRcdFx0XHRmID0gdShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IGkoZS5yZXNvbHZlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YSA9IFtdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1ID0gMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRjKHQsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpID0gdSsrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGMgPSAhMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZisrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8ociwgZSwgdCkudGhlbihmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YyB8fCAoKGMgPSAhMCksIChhW2ldID0gdCksIC0tZiB8fCBuKGEpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCBzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQtLWYgfHwgbihhKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGYuZXJyb3IgJiYgcyhmLnZhbHVlKSwgci5wcm9taXNlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NTA4OTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDM5MzEpLFxuXHRcdFx0XHRcdGkgPSByKDcwNzMpLkNPTlNUUlVDVE9SLFxuXHRcdFx0XHRcdGEgPSByKDc5MTkpLFxuXHRcdFx0XHRcdHUgPSByKDYwNTgpLFxuXHRcdFx0XHRcdGMgPSByKDk5ODUpLFxuXHRcdFx0XHRcdHMgPSByKDE4ODApLFxuXHRcdFx0XHRcdGYgPSBhICYmIGEucHJvdG90eXBlO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KG4oXG5cdFx0XHRcdFx0XHR7dGFyZ2V0OiAnUHJvbWlzZScsIHByb3RvOiAhMCwgZm9yY2VkOiBpLCByZWFsOiAhMH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGNhdGNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnRoZW4odm9pZCAwLCB0KTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCFvICYmIGMoYSkpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHZhciBsID0gdSgnUHJvbWlzZScpLnByb3RvdHlwZS5jYXRjaDtcblx0XHRcdFx0XHRmLmNhdGNoICE9PSBsICYmIHMoZiwgJ2NhdGNoJywgbCwge3Vuc2FmZTogITB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdDY2OTc6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuLFxuXHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRhID0gcig5OTg5KSxcblx0XHRcdFx0XHR1ID0gcigzOTMxKSxcblx0XHRcdFx0XHRjID0gcig4MDYpLFxuXHRcdFx0XHRcdHMgPSByKDkwMzcpLFxuXHRcdFx0XHRcdGYgPSByKDI2MTUpLFxuXHRcdFx0XHRcdGwgPSByKDE4ODApLFxuXHRcdFx0XHRcdHAgPSByKDkzODUpLFxuXHRcdFx0XHRcdGggPSByKDU5OTcpLFxuXHRcdFx0XHRcdHYgPSByKDQyNDEpLFxuXHRcdFx0XHRcdGQgPSByKDUwOSksXG5cdFx0XHRcdFx0eSA9IHIoOTk4NSksXG5cdFx0XHRcdFx0ZyA9IHIoODk5OSksXG5cdFx0XHRcdFx0bSA9IHIoNzY3KSxcblx0XHRcdFx0XHRiID0gcig2MzczKSxcblx0XHRcdFx0XHR3ID0gcig5ODg2KS5zZXQsXG5cdFx0XHRcdFx0eCA9IHIoMjMxKSxcblx0XHRcdFx0XHRrID0gcig5MjApLFxuXHRcdFx0XHRcdFMgPSByKDkzMDIpLFxuXHRcdFx0XHRcdEUgPSByKDQ0MTApLFxuXHRcdFx0XHRcdE8gPSByKDYxOCksXG5cdFx0XHRcdFx0UCA9IHIoNzkxOSksXG5cdFx0XHRcdFx0aiA9IHIoNzA3MyksXG5cdFx0XHRcdFx0TCA9IHIoODc0MiksXG5cdFx0XHRcdFx0XyA9ICdQcm9taXNlJyxcblx0XHRcdFx0XHRJID0gai5DT05TVFJVQ1RPUixcblx0XHRcdFx0XHRUID0gai5SRUpFQ1RJT05fRVZFTlQsXG5cdFx0XHRcdFx0UiA9IGouU1VCQ0xBU1NJTkcsXG5cdFx0XHRcdFx0JCA9IE8uZ2V0dGVyRm9yKF8pLFxuXHRcdFx0XHRcdE4gPSBPLnNldCxcblx0XHRcdFx0XHRDID0gUCAmJiBQLnByb3RvdHlwZSxcblx0XHRcdFx0XHRBID0gUCxcblx0XHRcdFx0XHRXID0gQyxcblx0XHRcdFx0XHRCID0gcy5UeXBlRXJyb3IsXG5cdFx0XHRcdFx0RiA9IHMuZG9jdW1lbnQsXG5cdFx0XHRcdFx0VSA9IHMucHJvY2Vzcyxcblx0XHRcdFx0XHRNID0gTC5mLFxuXHRcdFx0XHRcdEQgPSBNLFxuXHRcdFx0XHRcdEcgPSAhIShGICYmIEYuY3JlYXRlRXZlbnQgJiYgcy5kaXNwYXRjaEV2ZW50KSxcblx0XHRcdFx0XHRxID0gJ3VuaGFuZGxlZHJlamVjdGlvbicsXG5cdFx0XHRcdFx0USA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZTtcblx0XHRcdFx0XHRcdHJldHVybiAhKCFnKHQpIHx8ICF5KChlID0gdC50aGVuKSkpICYmIGU7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRIID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0XHRuLFxuXHRcdFx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdFx0XHRpID0gZS52YWx1ZSxcblx0XHRcdFx0XHRcdFx0YSA9IDEgPT09IGUuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdHUgPSBhID8gdC5vayA6IHQuZmFpbCxcblx0XHRcdFx0XHRcdFx0YyA9IHQucmVzb2x2ZSxcblx0XHRcdFx0XHRcdFx0cyA9IHQucmVqZWN0LFxuXHRcdFx0XHRcdFx0XHRsID0gdC5kb21haW47XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHR1XG5cdFx0XHRcdFx0XHRcdFx0PyAoYSB8fCAoMiA9PT0gZS5yZWplY3Rpb24gJiYgSyhlKSwgKGUucmVqZWN0aW9uID0gMSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ITAgPT09IHUgPyAociA9IGkpIDogKGwgJiYgbC5lbnRlcigpLCAociA9IHUoaSkpLCBsICYmIChsLmV4aXQoKSwgKG8gPSAhMCkpKSxcblx0XHRcdFx0XHRcdFx0XHRcdHIgPT09IHQucHJvbWlzZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHMobmV3IEIoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAobiA9IFEocikpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBmKG4sIHIsIGMsIHMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBjKHIpKVxuXHRcdFx0XHRcdFx0XHRcdDogcyhpKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0bCAmJiAhbyAmJiBsLmV4aXQoKSwgcyh0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHogPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dC5ub3RpZmllZCB8fFxuXHRcdFx0XHRcdFx0XHQoKHQubm90aWZpZWQgPSAhMCksXG5cdFx0XHRcdFx0XHRcdHgoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHIsIG4gPSB0LnJlYWN0aW9uczsgKHIgPSBuLmdldCgpKTsgKSBIKHIsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdCh0Lm5vdGlmaWVkID0gITEpLCBlICYmICF0LnJlamVjdGlvbiAmJiBWKHQpO1xuXHRcdFx0XHRcdFx0XHR9KSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRZID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHZhciBuLCBvO1xuXHRcdFx0XHRcdFx0R1xuXHRcdFx0XHRcdFx0XHQ/ICgoKG4gPSBGLmNyZWF0ZUV2ZW50KCdFdmVudCcpKS5wcm9taXNlID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0KG4ucmVhc29uID0gciksXG5cdFx0XHRcdFx0XHRcdFx0bi5pbml0RXZlbnQodCwgITEsICEwKSxcblx0XHRcdFx0XHRcdFx0XHRzLmRpc3BhdGNoRXZlbnQobikpXG5cdFx0XHRcdFx0XHRcdDogKG4gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9taXNlOiBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVhc29uOiByLFxuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHQhVCAmJiAobyA9IHNbJ29uJyArIHRdKSA/IG8obikgOiB0ID09PSBxICYmIGsoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHIpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ViA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRmKHcsIHMsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0ciA9IHQuZmFjYWRlLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSB0LnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0Sih0KSAmJlxuXHRcdFx0XHRcdFx0XHRcdCgoZSA9IFMoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YyA/IFUuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgbiwgcikgOiBZKHEsIHIsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdFx0XHQodC5yZWplY3Rpb24gPSBjIHx8IEoodCkgPyAyIDogMSksXG5cdFx0XHRcdFx0XHRcdFx0ZS5lcnJvcilcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdHRocm93IGUudmFsdWU7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdEogPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIDEgIT09IHQucmVqZWN0aW9uICYmICF0LnBhcmVudDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdEsgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0Zih3LCBzLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gdC5mYWNhZGU7XG5cdFx0XHRcdFx0XHRcdGMgPyBVLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBlKSA6IFkoJ3JlamVjdGlvbmhhbmRsZWQnLCBlLCB0LnZhbHVlKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0WCA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKG4pIHtcblx0XHRcdFx0XHRcdFx0dChlLCBuLCByKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRaID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHQuZG9uZSB8fCAoKHQuZG9uZSA9ICEwKSwgciAmJiAodCA9IHIpLCAodC52YWx1ZSA9IGUpLCAodC5zdGF0ZSA9IDIpLCB6KHQsICEwKSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0dCA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRpZiAoIXQuZG9uZSkge1xuXHRcdFx0XHRcdFx0XHQodC5kb25lID0gITApLCByICYmICh0ID0gcik7XG5cdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHQuZmFjYWRlID09PSBlKSB0aHJvdyBuZXcgQihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuXHRcdFx0XHRcdFx0XHRcdHZhciBuID0gUShlKTtcblx0XHRcdFx0XHRcdFx0XHRuXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IHgoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZG9uZTogITEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZihuLCBlLCBYKHR0LCByLCB0KSwgWChaLCByLCB0KSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0WihyLCBlLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICgodC52YWx1ZSA9IGUpLCAodC5zdGF0ZSA9IDEpLCB6KHQsICExKSk7XG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRaKFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkb25lOiAhMSxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0SSAmJlxuXHRcdFx0XHRcdCgoVyA9IChBID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdG0odGhpcywgVyksIGQodCksIGYobiwgdGhpcyk7XG5cdFx0XHRcdFx0XHR2YXIgZSA9ICQodGhpcyk7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHR0KFgodHQsIGUpLCBYKFosIGUpKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0WihlLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5wcm90b3R5cGUpLFxuXHRcdFx0XHRcdCgobiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHROKHRoaXMsIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogXyxcblx0XHRcdFx0XHRcdFx0ZG9uZTogITEsXG5cdFx0XHRcdFx0XHRcdG5vdGlmaWVkOiAhMSxcblx0XHRcdFx0XHRcdFx0cGFyZW50OiAhMSxcblx0XHRcdFx0XHRcdFx0cmVhY3Rpb25zOiBuZXcgRSgpLFxuXHRcdFx0XHRcdFx0XHRyZWplY3Rpb246ICExLFxuXHRcdFx0XHRcdFx0XHRzdGF0ZTogMCxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHZvaWQgMCxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pLnByb3RvdHlwZSA9IGwoVywgJ3RoZW4nLCBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSAkKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRuID0gTShiKHRoaXMsIEEpKTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdChyLnBhcmVudCA9ICEwKSxcblx0XHRcdFx0XHRcdFx0KG4ub2sgPSAheSh0KSB8fCB0KSxcblx0XHRcdFx0XHRcdFx0KG4uZmFpbCA9IHkoZSkgJiYgZSksXG5cdFx0XHRcdFx0XHRcdChuLmRvbWFpbiA9IGMgPyBVLmRvbWFpbiA6IHZvaWQgMCksXG5cdFx0XHRcdFx0XHRcdDAgPT09IHIuc3RhdGVcblx0XHRcdFx0XHRcdFx0XHQ/IHIucmVhY3Rpb25zLmFkZChuKVxuXHRcdFx0XHRcdFx0XHRcdDogeChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdEgobiwgcik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0bi5wcm9taXNlXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHQobyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gbmV3IG4oKSxcblx0XHRcdFx0XHRcdFx0ZSA9ICQodCk7XG5cdFx0XHRcdFx0XHQodGhpcy5wcm9taXNlID0gdCksICh0aGlzLnJlc29sdmUgPSBYKHR0LCBlKSksICh0aGlzLnJlamVjdCA9IFgoWiwgZSkpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChMLmYgPSBNID1cblx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0ID09PSBBIHx8IHVuZGVmaW5lZCA9PT0gdCA/IG5ldyBvKHQpIDogRCh0KTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdCF1ICYmIHkoUCkgJiYgQyAhPT0gT2JqZWN0LnByb3RvdHlwZSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0KGkgPSBDLnRoZW4pLFxuXHRcdFx0XHRcdFx0UiB8fFxuXHRcdFx0XHRcdFx0XHRsKFxuXHRcdFx0XHRcdFx0XHRcdEMsXG5cdFx0XHRcdFx0XHRcdFx0J3RoZW4nLFxuXHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IEEoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZihpLCByLCB0LCBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLnRoZW4odCwgZSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHR7dW5zYWZlOiAhMH1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0ZGVsZXRlIEMuY29uc3RydWN0b3I7XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge31cblx0XHRcdFx0XHRwICYmIHAoQywgVyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YShcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRnbG9iYWw6ICEwLFxuXHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6ICEwLFxuXHRcdFx0XHRcdFx0d3JhcDogITAsXG5cdFx0XHRcdFx0XHRmb3JjZWQ6IEksXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7UHJvbWlzZTogQX1cblx0XHRcdFx0KSxcblx0XHRcdFx0XHRoKEEsIF8sICExLCAhMCksXG5cdFx0XHRcdFx0dihfKTtcblx0XHRcdH0sXG5cdFx0XHQzOTY0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDY2OTcpLCByKDE2OTIpLCByKDUwODkpLCByKDg4MjkpLCByKDIwOTIpLCByKDc5MDUpO1xuXHRcdFx0fSxcblx0XHRcdDg4Mjk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigyNjE1KSxcblx0XHRcdFx0XHRpID0gcig1MDkpLFxuXHRcdFx0XHRcdGEgPSByKDg3NDIpLFxuXHRcdFx0XHRcdHUgPSByKDkzMDIpLFxuXHRcdFx0XHRcdGMgPSByKDg3MzQpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogITAsIGZvcmNlZDogcig1NjIpfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRyYWNlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0ciA9IGEuZihlKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gci5yZWplY3QsXG5cdFx0XHRcdFx0XHRcdFx0cyA9IHUoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGEgPSBpKGUucmVzb2x2ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjKHQsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG8oYSwgZSwgdCkudGhlbihyLnJlc29sdmUsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzLmVycm9yICYmIG4ocy52YWx1ZSksIHIucHJvbWlzZTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDIwOTI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcigyNjE1KSxcblx0XHRcdFx0XHRpID0gcig4NzQyKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6ICEwLCBmb3JjZWQ6IHIoNzA3MykuQ09OU1RSVUNUT1J9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHJlamVjdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpLmYodGhpcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvKGUucmVqZWN0LCB2b2lkIDAsIHQpLCBlLnByb21pc2U7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ3OTA1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNjA1OCksXG5cdFx0XHRcdFx0aSA9IHIoMzkzMSksXG5cdFx0XHRcdFx0YSA9IHIoNzkxOSksXG5cdFx0XHRcdFx0dSA9IHIoNzA3MykuQ09OU1RSVUNUT1IsXG5cdFx0XHRcdFx0YyA9IHIoMjk0NSksXG5cdFx0XHRcdFx0cyA9IG8oJ1Byb21pc2UnKSxcblx0XHRcdFx0XHRmID0gaSAmJiAhdTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6ICEwLCBmb3JjZWQ6IGkgfHwgdX0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0cmVzb2x2ZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGMoZiAmJiB0aGlzID09PSBzID8gYSA6IHRoaXMsIHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NTA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig2MDU4KSxcblx0XHRcdFx0XHRpID0gcigxNzM1KSxcblx0XHRcdFx0XHRhID0gcig2NzYxKSxcblx0XHRcdFx0XHR1ID0gcigyNjU1KSxcblx0XHRcdFx0XHRjID0gcig1MDI3KSxcblx0XHRcdFx0XHRzID0gcig4OTk5KSxcblx0XHRcdFx0XHRmID0gcig1MzkxKSxcblx0XHRcdFx0XHRsID0gcigzNjg5KSxcblx0XHRcdFx0XHRwID0gbygnUmVmbGVjdCcsICdjb25zdHJ1Y3QnKSxcblx0XHRcdFx0XHRoID0gT2JqZWN0LnByb3RvdHlwZSxcblx0XHRcdFx0XHR2ID0gW10ucHVzaCxcblx0XHRcdFx0XHRkID0gbChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge31cblx0XHRcdFx0XHRcdHJldHVybiAhKHAoZnVuY3Rpb24gKCkge30sIFtdLCB0KSBpbnN0YW5jZW9mIHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHkgPSAhbChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRwKGZ1bmN0aW9uICgpIHt9KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRnID0gZCB8fCB5O1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdSZWZsZWN0Jywgc3RhdDogITAsIGZvcmNlZDogZywgc2hhbTogZ30sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y29uc3RydWN0OiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHR1KHQpLCBjKGUpO1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdCA6IHUoYXJndW1lbnRzWzJdKTtcblx0XHRcdFx0XHRcdFx0aWYgKHkgJiYgIWQpIHJldHVybiBwKHQsIGUsIHIpO1xuXHRcdFx0XHRcdFx0XHRpZiAodCA9PT0gcikge1xuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoZS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyB0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgdChlWzBdKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyB0KGVbMF0sIGVbMV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IHQoZVswXSwgZVsxXSwgZVsyXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgdChlWzBdLCBlWzFdLCBlWzJdLCBlWzNdKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSBbbnVsbF07XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGkodiwgbiwgZSksIG5ldyAoaShhLCB0LCBuKSkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR2YXIgbyA9IHIucHJvdG90eXBlLFxuXHRcdFx0XHRcdFx0XHRcdGwgPSBmKHMobykgPyBvIDogaCksXG5cdFx0XHRcdFx0XHRcdFx0ZyA9IGkodCwgbCwgZSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzKGcpID8gZyA6IGw7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ2MDM0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoOTAzNyksXG5cdFx0XHRcdFx0aSA9IHIoNTk5Nyk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Z2xvYmFsOiAhMCxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtSZWZsZWN0OiB7fX1cblx0XHRcdFx0KSxcblx0XHRcdFx0XHRpKG8uUmVmbGVjdCwgJ1JlZmxlY3QnLCAhMCk7XG5cdFx0XHR9LFxuXHRcdFx0MjAwMzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDc2OTcpLFxuXHRcdFx0XHRcdG8gPSByKDkwMzcpLFxuXHRcdFx0XHRcdGkgPSByKDg4NDQpLFxuXHRcdFx0XHRcdGEgPSByKDUyNjYpLFxuXHRcdFx0XHRcdHUgPSByKDM0NTcpLFxuXHRcdFx0XHRcdGMgPSByKDU3NzMpLFxuXHRcdFx0XHRcdHMgPSByKDI3NDEpLmYsXG5cdFx0XHRcdFx0ZiA9IHIoMzYyMiksXG5cdFx0XHRcdFx0bCA9IHIoMTI0NSksXG5cdFx0XHRcdFx0cCA9IHIoNDMyNyksXG5cdFx0XHRcdFx0aCA9IHIoMzQ3NyksXG5cdFx0XHRcdFx0diA9IHIoNzkwMSksXG5cdFx0XHRcdFx0ZCA9IHIoODA1NSksXG5cdFx0XHRcdFx0eSA9IHIoMTg4MCksXG5cdFx0XHRcdFx0ZyA9IHIoMzY4OSksXG5cdFx0XHRcdFx0bSA9IHIoNjgxMiksXG5cdFx0XHRcdFx0YiA9IHIoNjE4KS5lbmZvcmNlLFxuXHRcdFx0XHRcdHcgPSByKDQyNDEpLFxuXHRcdFx0XHRcdHggPSByKDQyMDEpLFxuXHRcdFx0XHRcdGsgPSByKDIxMDApLFxuXHRcdFx0XHRcdFMgPSByKDY0MjIpLFxuXHRcdFx0XHRcdEUgPSB4KCdtYXRjaCcpLFxuXHRcdFx0XHRcdE8gPSBvLlJlZ0V4cCxcblx0XHRcdFx0XHRQID0gTy5wcm90b3R5cGUsXG5cdFx0XHRcdFx0aiA9IG8uU3ludGF4RXJyb3IsXG5cdFx0XHRcdFx0TCA9IGkoUC5leGVjKSxcblx0XHRcdFx0XHRfID0gaSgnJy5jaGFyQXQpLFxuXHRcdFx0XHRcdEkgPSBpKCcnLnJlcGxhY2UpLFxuXHRcdFx0XHRcdFQgPSBpKCcnLmluZGV4T2YpLFxuXHRcdFx0XHRcdFIgPSBpKCcnLnNsaWNlKSxcblx0XHRcdFx0XHQkID0gL15cXD88W15cXHNcXGQhIyUmKis8PT5AXl1bXlxccyEjJSYqKzw9PkBeXSo+Lyxcblx0XHRcdFx0XHROID0gL2EvZyxcblx0XHRcdFx0XHRDID0gL2EvZyxcblx0XHRcdFx0XHRBID0gbmV3IE8oTikgIT09IE4sXG5cdFx0XHRcdFx0VyA9IHYuTUlTU0VEX1NUSUNLWSxcblx0XHRcdFx0XHRCID0gdi5VTlNVUFBPUlRFRF9ZLFxuXHRcdFx0XHRcdEYgPVxuXHRcdFx0XHRcdFx0biAmJlxuXHRcdFx0XHRcdFx0KCFBIHx8XG5cdFx0XHRcdFx0XHRcdFcgfHxcblx0XHRcdFx0XHRcdFx0ayB8fFxuXHRcdFx0XHRcdFx0XHRTIHx8XG5cdFx0XHRcdFx0XHRcdGcoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoQ1tFXSA9ICExKSwgTyhOKSAhPT0gTiB8fCBPKEMpID09PSBDIHx8ICcvYS9pJyAhPT0gU3RyaW5nKE8oTiwgJ2knKSk7XG5cdFx0XHRcdFx0XHRcdH0pKTtcblx0XHRcdFx0aWYgKGEoJ1JlZ0V4cCcsIEYpKSB7XG5cdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdHZhciBVID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcixcblx0XHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdFx0XHRzLFxuXHRcdFx0XHRcdFx0XHRcdFx0diA9IGYoUCwgdGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0XHRkID0gbCh0KSxcblx0XHRcdFx0XHRcdFx0XHRcdHkgPSB2b2lkIDAgPT09IGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRnID0gW10sXG5cdFx0XHRcdFx0XHRcdFx0XHR3ID0gdDtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIXYgJiYgZCAmJiB5ICYmIHQuY29uc3RydWN0b3IgPT09IFUpIHJldHVybiB0O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdCgoZCB8fCBmKFAsIHQpKSAmJiAoKHQgPSB0LnNvdXJjZSksIHkgJiYgKGUgPSBoKHcpKSksXG5cdFx0XHRcdFx0XHRcdFx0XHQodCA9IHZvaWQgMCA9PT0gdCA/ICcnIDogcCh0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHQoZSA9IHZvaWQgMCA9PT0gZSA/ICcnIDogcChlKSksXG5cdFx0XHRcdFx0XHRcdFx0XHQodyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ayAmJiAoJ2RvdEFsbCcgaW4gTikgJiYgKG4gPSAhIWUgJiYgVChlLCAncycpID4gLTEpICYmIChlID0gSShlLCAvcy9nLCAnJykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFcgJiYgKCdzdGlja3knIGluIE4pICYmIChvID0gISFlICYmIFQoZSwgJ3knKSA+IC0xKSAmJiBCICYmIChlID0gSShlLCAveS9nLCAnJykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0UyAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoKGkgPSAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSB0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0biA9IDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8gPSAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9IFtdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhID0ge30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHUgPSAhMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YyA9ICExLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzID0gMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0biA8PSByO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bisrXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJ1xcXFwnID09PSAoZSA9IF8odCwgbikpKSBlICs9IF8odCwgKytuKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKCddJyA9PT0gZSkgdSA9ICExO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoIXUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoITApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdbJyA9PT0gZTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHUgPSAhMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJygnID09PSBlOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TCgkLCBSKHQsIG4gKyAxKSkgJiYgKChuICs9IDIpLCAoYyA9ICEwKSksIChvICs9IGUpLCBzKys7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICc+JyA9PT0gZSAmJiBjOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCcnID09PSBmIHx8IG0oYSwgZikpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBqKCdJbnZhbGlkIGNhcHR1cmUgZ3JvdXAgbmFtZScpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGFbZl0gPSAhMCksIChpW2kubGVuZ3RoXSA9IFtmLCBzXSksIChjID0gITEpLCAoZiA9ICcnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjID8gKGYgKz0gZSkgOiAobyArPSBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFtvLCBpXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkodCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQodCA9IGlbMF0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoZyA9IGlbMV0pKSxcblx0XHRcdFx0XHRcdFx0XHRcdChhID0gdShPKHQsIGUpLCB2ID8gdGhpcyA6IFAsIFUpKSxcblx0XHRcdFx0XHRcdFx0XHRcdChuIHx8IG8gfHwgZy5sZW5ndGgpICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCgocyA9IGIoYSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KChzLmRvdEFsbCA9ICEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5yYXcgPSBVKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGUsIHIgPSB0Lmxlbmd0aCwgbiA9IDAsIG8gPSAnJywgaSA9ICExOyBuIDw9IHI7IG4rKylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnXFxcXCcgIT09IChlID0gXyh0LCBuKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gaSB8fCAnLicgIT09IGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoJ1snID09PSBlID8gKGkgPSAhMCkgOiAnXScgPT09IGUgJiYgKGkgPSAhMSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG8gKz0gZSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogKG8gKz0gJ1tcXFxcc1xcXFxTXScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IChvICs9IGUgKyBfKHQsICsrbikpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0byAmJiAocy5zdGlja3kgPSAhMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGcubGVuZ3RoICYmIChzLmdyb3VwcyA9IGcpKSxcblx0XHRcdFx0XHRcdFx0XHRcdHQgIT09IHcpXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YyhhLCAnc291cmNlJywgJycgPT09IHcgPyAnKD86KScgOiB3KTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGE7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdE0gPSBzKE8pLFxuXHRcdFx0XHRcdFx0XHREID0gMDtcblx0XHRcdFx0XHRcdE0ubGVuZ3RoID4gRDtcblxuXHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdGQoVSwgTywgTVtEKytdKTtcblx0XHRcdFx0XHQoUC5jb25zdHJ1Y3RvciA9IFUpLCAoVS5wcm90b3R5cGUgPSBQKSwgeShvLCAnUmVnRXhwJywgVSwge2NvbnN0cnVjdG9yOiAhMH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHcoJ1JlZ0V4cCcpO1xuXHRcdFx0fSxcblx0XHRcdDg1MTg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcigyMTAwKSxcblx0XHRcdFx0XHRpID0gcig2NjQ4KSxcblx0XHRcdFx0XHRhID0gcigyMTQ4KSxcblx0XHRcdFx0XHR1ID0gcig2MTgpLmdldCxcblx0XHRcdFx0XHRjID0gUmVnRXhwLnByb3RvdHlwZSxcblx0XHRcdFx0XHRzID0gVHlwZUVycm9yO1xuXHRcdFx0XHRuICYmXG5cdFx0XHRcdFx0byAmJlxuXHRcdFx0XHRcdGEoYywgJ2RvdEFsbCcsIHtcblx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMgIT09IGMpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ1JlZ0V4cCcgPT09IGkodGhpcykpIHJldHVybiAhIXUodGhpcykuZG90QWxsO1xuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBzKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFJlZ0V4cCByZXF1aXJlZCcpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDQwNDM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig2MzA4KTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6ICdSZWdFeHAnLFxuXHRcdFx0XHRcdFx0cHJvdG86ICEwLFxuXHRcdFx0XHRcdFx0Zm9yY2VkOiAvLi8uZXhlYyAhPT0gbyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtleGVjOiBvfVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDM0NDA6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcig3OTAxKS5NSVNTRURfU1RJQ0tZLFxuXHRcdFx0XHRcdGkgPSByKDY2NDgpLFxuXHRcdFx0XHRcdGEgPSByKDIxNDgpLFxuXHRcdFx0XHRcdHUgPSByKDYxOCkuZ2V0LFxuXHRcdFx0XHRcdGMgPSBSZWdFeHAucHJvdG90eXBlLFxuXHRcdFx0XHRcdHMgPSBUeXBlRXJyb3I7XG5cdFx0XHRcdG4gJiZcblx0XHRcdFx0XHRvICYmXG5cdFx0XHRcdFx0YShjLCAnc3RpY2t5Jywge1xuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcyAhPT0gYykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgnUmVnRXhwJyA9PT0gaSh0aGlzKSkgcmV0dXJuICEhdSh0aGlzKS5zdGlja3k7XG5cdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IHMoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgUmVnRXhwIHJlcXVpcmVkJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0NzQwOTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0cig0MDQzKTtcblx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0byxcblx0XHRcdFx0XHRpID0gcig5OTg5KSxcblx0XHRcdFx0XHRhID0gcigyNjE1KSxcblx0XHRcdFx0XHR1ID0gcig5OTg1KSxcblx0XHRcdFx0XHRjID0gcig1MDI3KSxcblx0XHRcdFx0XHRzID0gcig0MzI3KSxcblx0XHRcdFx0XHRmID1cblx0XHRcdFx0XHRcdCgobiA9ICExKSxcblx0XHRcdFx0XHRcdCgobyA9IC9bYWNdLykuZXhlYyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChuID0gITApLCAvLi8uZXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQhMCA9PT0gby50ZXN0KCdhYmMnKSAmJiBuKSxcblx0XHRcdFx0XHRsID0gLy4vLnRlc3Q7XG5cdFx0XHRcdGkoXG5cdFx0XHRcdFx0e3RhcmdldDogJ1JlZ0V4cCcsIHByb3RvOiAhMCwgZm9yY2VkOiAhZn0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dGVzdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBjKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBzKHQpLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSBlLmV4ZWM7XG5cdFx0XHRcdFx0XHRcdGlmICghdShuKSkgcmV0dXJuIGEobCwgZSwgcik7XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gYShuLCBlLCByKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG51bGwgIT09IG8gJiYgKGMobyksICEwKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDI4MjY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigxMjM2KS5QUk9QRVIsXG5cdFx0XHRcdFx0byA9IHIoMTg4MCksXG5cdFx0XHRcdFx0aSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0YSA9IHIoNDMyNyksXG5cdFx0XHRcdFx0dSA9IHIoMzY4OSksXG5cdFx0XHRcdFx0YyA9IHIoMzQ3NyksXG5cdFx0XHRcdFx0cyA9ICd0b1N0cmluZycsXG5cdFx0XHRcdFx0ZiA9IFJlZ0V4cC5wcm90b3R5cGVbc10sXG5cdFx0XHRcdFx0bCA9IHUoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0Jy9hL2InICE9PVxuXHRcdFx0XHRcdFx0XHRmLmNhbGwoe1xuXHRcdFx0XHRcdFx0XHRcdHNvdXJjZTogJ2EnLFxuXHRcdFx0XHRcdFx0XHRcdGZsYWdzOiAnYicsXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHAgPSBuICYmIGYubmFtZSAhPT0gcztcblx0XHRcdFx0KGwgfHwgcCkgJiZcblx0XHRcdFx0XHRvKFxuXHRcdFx0XHRcdFx0UmVnRXhwLnByb3RvdHlwZSxcblx0XHRcdFx0XHRcdHMsXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gaSh0aGlzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICcvJyArIGEodC5zb3VyY2UpICsgJy8nICsgYShjKHQpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7dW5zYWZlOiAhMH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDM4NDM6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig4ODQ0KSxcblx0XHRcdFx0XHRpID0gcigyMTI0KSxcblx0XHRcdFx0XHRhID0gcig0Njg0KSxcblx0XHRcdFx0XHR1ID0gcig0MzI3KSxcblx0XHRcdFx0XHRjID0gcig3NDEzKSxcblx0XHRcdFx0XHRzID0gbygnJy5pbmRleE9mKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86ICEwLCBmb3JjZWQ6ICFjKCdpbmNsdWRlcycpfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpbmNsdWRlczogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuICEhfnModShhKHRoaXMpKSwgdShpKHQpKSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MTY5NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDczMCkuY2hhckF0LFxuXHRcdFx0XHRcdG8gPSByKDQzMjcpLFxuXHRcdFx0XHRcdGkgPSByKDYxOCksXG5cdFx0XHRcdFx0YSA9IHIoMTkzNCksXG5cdFx0XHRcdFx0dSA9IHIoNzgwNyksXG5cdFx0XHRcdFx0YyA9ICdTdHJpbmcgSXRlcmF0b3InLFxuXHRcdFx0XHRcdHMgPSBpLnNldCxcblx0XHRcdFx0XHRmID0gaS5nZXR0ZXJGb3IoYyk7XG5cdFx0XHRcdGEoXG5cdFx0XHRcdFx0U3RyaW5nLFxuXHRcdFx0XHRcdCdTdHJpbmcnLFxuXHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRzKHRoaXMsIHt0eXBlOiBjLCBzdHJpbmc6IG8odCksIGluZGV4OiAwfSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCxcblx0XHRcdFx0XHRcdFx0ZSA9IGYodGhpcyksXG5cdFx0XHRcdFx0XHRcdHIgPSBlLnN0cmluZyxcblx0XHRcdFx0XHRcdFx0byA9IGUuaW5kZXg7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbyA+PSByLmxlbmd0aCA/IHUodm9pZCAwLCAhMCkgOiAoKHQgPSBuKHIsIG8pKSwgKGUuaW5kZXggKz0gdC5sZW5ndGgpLCB1KHQsICExKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDI0NjI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigyNjE1KSxcblx0XHRcdFx0XHRvID0gcig4Njc4KSxcblx0XHRcdFx0XHRpID0gcig1MDI3KSxcblx0XHRcdFx0XHRhID0gcig5ODEpLFxuXHRcdFx0XHRcdHUgPSByKDMxMjYpLFxuXHRcdFx0XHRcdGMgPSByKDQzMjcpLFxuXHRcdFx0XHRcdHMgPSByKDQ2ODQpLFxuXHRcdFx0XHRcdGYgPSByKDQ4NDkpLFxuXHRcdFx0XHRcdGwgPSByKDE1MTQpLFxuXHRcdFx0XHRcdHAgPSByKDYxMDApO1xuXHRcdFx0XHRvKCdtYXRjaCcsIGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHRcdGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gcyh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRvID0gYShlKSA/IHZvaWQgMCA6IGYoZSwgdCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvID8gbihvLCBlLCByKSA6IG5ldyBSZWdFeHAoZSlbdF0oYyhyKSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIG4gPSBpKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdG8gPSBjKHQpLFxuXHRcdFx0XHRcdFx0XHRcdGEgPSByKGUsIG4sIG8pO1xuXHRcdFx0XHRcdFx0XHRpZiAoYS5kb25lKSByZXR1cm4gYS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuLmdsb2JhbCkgcmV0dXJuIHAobiwgbyk7XG5cdFx0XHRcdFx0XHRcdHZhciBzID0gbi51bmljb2RlO1xuXHRcdFx0XHRcdFx0XHRuLmxhc3RJbmRleCA9IDA7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGYsIGggPSBbXSwgdiA9IDA7IG51bGwgIT09IChmID0gcChuLCBvKSk7ICkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBkID0gYyhmWzBdKTtcblx0XHRcdFx0XHRcdFx0XHQoaFt2XSA9IGQpLCAnJyA9PT0gZCAmJiAobi5sYXN0SW5kZXggPSBsKG8sIHUobi5sYXN0SW5kZXgpLCBzKSksIHYrKztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gMCA9PT0gdiA/IG51bGwgOiBoO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQ3MjY3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoMTczNSksXG5cdFx0XHRcdFx0byA9IHIoMjYxNSksXG5cdFx0XHRcdFx0aSA9IHIoODg0NCksXG5cdFx0XHRcdFx0YSA9IHIoODY3OCksXG5cdFx0XHRcdFx0dSA9IHIoMzY4OSksXG5cdFx0XHRcdFx0YyA9IHIoNTAyNyksXG5cdFx0XHRcdFx0cyA9IHIoOTk4NSksXG5cdFx0XHRcdFx0ZiA9IHIoOTgxKSxcblx0XHRcdFx0XHRsID0gcig4NzAwKSxcblx0XHRcdFx0XHRwID0gcigzMTI2KSxcblx0XHRcdFx0XHRoID0gcig0MzI3KSxcblx0XHRcdFx0XHR2ID0gcig0Njg0KSxcblx0XHRcdFx0XHRkID0gcigxNTE0KSxcblx0XHRcdFx0XHR5ID0gcig0ODQ5KSxcblx0XHRcdFx0XHRnID0gcig3MDE3KSxcblx0XHRcdFx0XHRtID0gcig2MTAwKSxcblx0XHRcdFx0XHRiID0gcig0MjAxKSgncmVwbGFjZScpLFxuXHRcdFx0XHRcdHcgPSBNYXRoLm1heCxcblx0XHRcdFx0XHR4ID0gTWF0aC5taW4sXG5cdFx0XHRcdFx0ayA9IGkoW10uY29uY2F0KSxcblx0XHRcdFx0XHRTID0gaShbXS5wdXNoKSxcblx0XHRcdFx0XHRFID0gaSgnJy5pbmRleE9mKSxcblx0XHRcdFx0XHRPID0gaSgnJy5zbGljZSksXG5cdFx0XHRcdFx0UCA9ICckMCcgPT09ICdhJy5yZXBsYWNlKC8uLywgJyQwJyksXG5cdFx0XHRcdFx0aiA9ICEhLy4vW2JdICYmICcnID09PSAvLi9bYl0oJ2EnLCAnJDAnKTtcblx0XHRcdFx0YShcblx0XHRcdFx0XHQncmVwbGFjZScsXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHZhciBpID0gaiA/ICckJyA6ICckMCc7XG5cdFx0XHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgcikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBuID0gdih0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRcdGkgPSBmKHQpID8gdm9pZCAwIDogeSh0LCBiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaSA/IG8oaSwgdCwgbiwgcikgOiBvKGUsIGgobiksIHQsIHIpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgbykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhID0gYyh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRcdHUgPSBoKHQpO1xuXHRcdFx0XHRcdFx0XHRcdGlmICgnc3RyaW5nJyA9PSB0eXBlb2YgbyAmJiAtMSA9PT0gRShvLCBpKSAmJiAtMSA9PT0gRShvLCAnJDwnKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGYgPSByKGUsIGEsIHUsIG8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGYuZG9uZSkgcmV0dXJuIGYudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHZhciB2ID0gcyhvKTtcblx0XHRcdFx0XHRcdFx0XHR2IHx8IChvID0gaChvKSk7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHksXG5cdFx0XHRcdFx0XHRcdFx0XHRiID0gYS5nbG9iYWw7XG5cdFx0XHRcdFx0XHRcdFx0YiAmJiAoKHkgPSBhLnVuaWNvZGUpLCAoYS5sYXN0SW5kZXggPSAwKSk7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgUCwgaiA9IFtdOyBudWxsICE9PSAoUCA9IG0oYSwgdSkpICYmIChTKGosIFApLCBiKTsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQnJyA9PT0gaChQWzBdKSAmJiAoYS5sYXN0SW5kZXggPSBkKHUsIHAoYS5sYXN0SW5kZXgpLCB5KSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIEwsIF8gPSAnJywgSSA9IDAsIFQgPSAwOyBUIDwgai5sZW5ndGg7IFQrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIFIsICQgPSBoKChQID0galtUXSlbMF0pLCBOID0gdyh4KGwoUC5pbmRleCksIHUubGVuZ3RoKSwgMCksIEMgPSBbXSwgQSA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdEEgPCBQLmxlbmd0aDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0QSsrXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFMoQywgdm9pZCAwID09PSAoTCA9IFBbQV0pID8gTCA6IFN0cmluZyhMKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgVyA9IFAuZ3JvdXBzO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIEIgPSBrKFskXSwgQywgTiwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZvaWQgMCAhPT0gVyAmJiBTKEIsIFcpLCAoUiA9IGgobihvLCB2b2lkIDAsIEIpKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgUiA9IGcoJCwgdSwgTiwgQywgVywgbyk7XG5cdFx0XHRcdFx0XHRcdFx0XHROID49IEkgJiYgKChfICs9IE8odSwgSSwgTikgKyBSKSwgKEkgPSBOICsgJC5sZW5ndGgpKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF8gKyBPKHUsIEkpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdCEhdShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IC8uLztcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdCh0LmV4ZWMgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0KHQuZ3JvdXBzID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhOiAnNycsXG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0JzcnICE9PSAnJy5yZXBsYWNlKHQsICckPGE+Jylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSkgfHxcblx0XHRcdFx0XHRcdCFQIHx8XG5cdFx0XHRcdFx0XHRqXG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0ODQzNjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDE0MzUpLnRyaW07XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ1N0cmluZycsIHByb3RvOiAhMCwgZm9yY2VkOiByKDU5ODQpKCd0cmltJyl9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRyaW06IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG8odGhpcyk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ4MzczOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDU0MDUpKCdhc3luY0l0ZXJhdG9yJyk7XG5cdFx0XHR9LFxuXHRcdFx0Nzg1NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDkwMzcpLFxuXHRcdFx0XHRcdGkgPSByKDI2MTUpLFxuXHRcdFx0XHRcdGEgPSByKDg4NDQpLFxuXHRcdFx0XHRcdHUgPSByKDM5MzEpLFxuXHRcdFx0XHRcdGMgPSByKDc2OTcpLFxuXHRcdFx0XHRcdHMgPSByKDE0NiksXG5cdFx0XHRcdFx0ZiA9IHIoMzY4OSksXG5cdFx0XHRcdFx0bCA9IHIoNjgxMiksXG5cdFx0XHRcdFx0cCA9IHIoMzYyMiksXG5cdFx0XHRcdFx0aCA9IHIoNTAyNyksXG5cdFx0XHRcdFx0diA9IHIoNTI5MCksXG5cdFx0XHRcdFx0ZCA9IHIoODM2MCksXG5cdFx0XHRcdFx0eSA9IHIoNDMyNyksXG5cdFx0XHRcdFx0ZyA9IHIoNTY4NCksXG5cdFx0XHRcdFx0bSA9IHIoNTM5MSksXG5cdFx0XHRcdFx0YiA9IHIoMzAwKSxcblx0XHRcdFx0XHR3ID0gcigyNzQxKSxcblx0XHRcdFx0XHR4ID0gcig2MDYyKSxcblx0XHRcdFx0XHRrID0gcig3NTE4KSxcblx0XHRcdFx0XHRTID0gcigyNDc0KSxcblx0XHRcdFx0XHRFID0gcigyNTYwKSxcblx0XHRcdFx0XHRPID0gcig4OTIwKSxcblx0XHRcdFx0XHRQID0gcig5NTU2KSxcblx0XHRcdFx0XHRqID0gcigxODgwKSxcblx0XHRcdFx0XHRMID0gcigyMTQ4KSxcblx0XHRcdFx0XHRfID0gcigzNDMwKSxcblx0XHRcdFx0XHRJID0gcigyNzEzKSxcblx0XHRcdFx0XHRUID0gcig3MjQ4KSxcblx0XHRcdFx0XHRSID0gcig0NjMwKSxcblx0XHRcdFx0XHQkID0gcig0MjAxKSxcblx0XHRcdFx0XHROID0gcig2MTQ1KSxcblx0XHRcdFx0XHRDID0gcig1NDA1KSxcblx0XHRcdFx0XHRBID0gcigzMDMyKSxcblx0XHRcdFx0XHRXID0gcig1OTk3KSxcblx0XHRcdFx0XHRCID0gcig2MTgpLFxuXHRcdFx0XHRcdEYgPSByKDI5NjApLmZvckVhY2gsXG5cdFx0XHRcdFx0VSA9IEkoJ2hpZGRlbicpLFxuXHRcdFx0XHRcdE0gPSAnU3ltYm9sJyxcblx0XHRcdFx0XHREID0gJ3Byb3RvdHlwZScsXG5cdFx0XHRcdFx0RyA9IEIuc2V0LFxuXHRcdFx0XHRcdHEgPSBCLmdldHRlckZvcihNKSxcblx0XHRcdFx0XHRRID0gT2JqZWN0W0RdLFxuXHRcdFx0XHRcdEggPSBvLlN5bWJvbCxcblx0XHRcdFx0XHR6ID0gSCAmJiBIW0RdLFxuXHRcdFx0XHRcdFkgPSBvLlJhbmdlRXJyb3IsXG5cdFx0XHRcdFx0ViA9IG8uVHlwZUVycm9yLFxuXHRcdFx0XHRcdEogPSBvLlFPYmplY3QsXG5cdFx0XHRcdFx0SyA9IFMuZixcblx0XHRcdFx0XHRYID0gRS5mLFxuXHRcdFx0XHRcdFogPSB4LmYsXG5cdFx0XHRcdFx0dHQgPSBQLmYsXG5cdFx0XHRcdFx0ZXQgPSBhKFtdLnB1c2gpLFxuXHRcdFx0XHRcdHJ0ID0gXygnc3ltYm9scycpLFxuXHRcdFx0XHRcdG50ID0gXygnb3Atc3ltYm9scycpLFxuXHRcdFx0XHRcdG90ID0gXygnd2tzJyksXG5cdFx0XHRcdFx0aXQgPSAhSiB8fCAhSltEXSB8fCAhSltEXS5maW5kQ2hpbGQsXG5cdFx0XHRcdFx0YXQgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0dmFyIG4gPSBLKFEsIGUpO1xuXHRcdFx0XHRcdFx0biAmJiBkZWxldGUgUVtlXSwgWCh0LCBlLCByKSwgbiAmJiB0ICE9PSBRICYmIFgoUSwgZSwgbik7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1dCA9XG5cdFx0XHRcdFx0XHRjICYmXG5cdFx0XHRcdFx0XHRmKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQ3ICE9PVxuXHRcdFx0XHRcdFx0XHRcdG0oXG5cdFx0XHRcdFx0XHRcdFx0XHRYKHt9LCAnYScsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFgodGhpcywgJ2EnLCB7dmFsdWU6IDd9KS5hO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQpLmFcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdD8gYXRcblx0XHRcdFx0XHRcdFx0OiBYLFxuXHRcdFx0XHRcdGN0ID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdHZhciByID0gKHJ0W3RdID0gbSh6KSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gRyhyLCB7dHlwZTogTSwgdGFnOiB0LCBkZXNjcmlwdGlvbjogZX0pLCBjIHx8IChyLmRlc2NyaXB0aW9uID0gZSksIHI7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzdCA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHR0ID09PSBRICYmIHN0KG50LCBlLCByKSwgaCh0KTtcblx0XHRcdFx0XHRcdHZhciBuID0gZChlKTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdGgociksXG5cdFx0XHRcdFx0XHRcdGwocnQsIG4pXG5cdFx0XHRcdFx0XHRcdFx0PyAoci5lbnVtZXJhYmxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKGwodCwgVSkgJiYgdFtVXVtuXSAmJiAodFtVXVtuXSA9ICExKSwgKHIgPSBtKHIsIHtlbnVtZXJhYmxlOiBnKDAsICExKX0pKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAobCh0LCBVKSB8fCBYKHQsIFUsIGcoMSwge30pKSwgKHRbVV1bbl0gPSAhMCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXQodCwgbiwgcikpXG5cdFx0XHRcdFx0XHRcdFx0OiBYKHQsIG4sIHIpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZnQgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0aCh0KTtcblx0XHRcdFx0XHRcdHZhciByID0gdihlKSxcblx0XHRcdFx0XHRcdFx0biA9IGIocikuY29uY2F0KHZ0KHIpKTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdEYobiwgZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHQoYyAmJiAhaShsdCwgciwgZSkpIHx8IHN0KHQsIGUsIHJbZV0pO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGx0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gZCh0KSxcblx0XHRcdFx0XHRcdFx0ciA9IGkodHQsIHRoaXMsIGUpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0ISh0aGlzID09PSBRICYmIGwocnQsIGUpICYmICFsKG50LCBlKSkgJiZcblx0XHRcdFx0XHRcdFx0KCEociB8fCAhbCh0aGlzLCBlKSB8fCAhbChydCwgZSkgfHwgKGwodGhpcywgVSkgJiYgdGhpc1tVXVtlXSkpIHx8IHIpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cHQgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSB2KHQpLFxuXHRcdFx0XHRcdFx0XHRuID0gZChlKTtcblx0XHRcdFx0XHRcdGlmIChyICE9PSBRIHx8ICFsKHJ0LCBuKSB8fCBsKG50LCBuKSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgbyA9IEsociwgbik7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAhbyB8fCAhbChydCwgbikgfHwgKGwociwgVSkgJiYgcltVXVtuXSkgfHwgKG8uZW51bWVyYWJsZSA9ICEwKSwgbztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGh0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gWih2KHQpKSxcblx0XHRcdFx0XHRcdFx0ciA9IFtdO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0RihlLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdGwocnQsIHQpIHx8IGwoVCwgdCkgfHwgZXQociwgdCk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRyXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dnQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSB0ID09PSBRLFxuXHRcdFx0XHRcdFx0XHRyID0gWihlID8gbnQgOiB2KHQpKSxcblx0XHRcdFx0XHRcdFx0biA9IFtdO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0RihyLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdCFsKHJ0LCB0KSB8fCAoZSAmJiAhbChRLCB0KSkgfHwgZXQobiwgcnRbdF0pO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0blxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRzIHx8XG5cdFx0XHRcdFx0KChIID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0aWYgKHAoeiwgdGhpcykpIHRocm93IG5ldyBWKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcblx0XHRcdFx0XHRcdHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IHkoYXJndW1lbnRzWzBdKSA6IHZvaWQgMCxcblx0XHRcdFx0XHRcdFx0ZSA9IFIodCksXG5cdFx0XHRcdFx0XHRcdHIgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBuID0gdm9pZCAwID09PSB0aGlzID8gbyA6IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0biA9PT0gUSAmJiBpKHIsIG50LCB0KSwgbChuLCBVKSAmJiBsKG5bVV0sIGUpICYmIChuW1VdW2VdID0gITEpO1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhID0gZygxLCB0KTtcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dXQobiwgZSwgYSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEodCBpbnN0YW5jZW9mIFkpKSB0aHJvdyB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0YXQobiwgZSwgYSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGMgJiYgaXQgJiYgdXQoUSwgZSwge2NvbmZpZ3VyYWJsZTogITAsIHNldDogcn0pLCBjdChlLCB0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRqKCh6ID0gSFtEXSksICd0b1N0cmluZycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiBxKHRoaXMpLnRhZztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRqKEgsICd3aXRob3V0U2V0dGVyJywgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBjdChSKHQpLCB0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoUC5mID0gbHQpLFxuXHRcdFx0XHRcdChFLmYgPSBzdCksXG5cdFx0XHRcdFx0KE8uZiA9IGZ0KSxcblx0XHRcdFx0XHQoUy5mID0gcHQpLFxuXHRcdFx0XHRcdCh3LmYgPSB4LmYgPSBodCksXG5cdFx0XHRcdFx0KGsuZiA9IHZ0KSxcblx0XHRcdFx0XHQoTi5mID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBjdCgkKHQpLCB0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRjICYmXG5cdFx0XHRcdFx0XHQoTCh6LCAnZGVzY3JpcHRpb24nLCB7XG5cdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBxKHRoaXMpLmRlc2NyaXB0aW9uO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR1IHx8IGooUSwgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgbHQsIHt1bnNhZmU6ICEwfSkpKSxcblx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRnbG9iYWw6ICEwLFxuXHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHRcdHdyYXA6ICEwLFxuXHRcdFx0XHRcdFx0XHRmb3JjZWQ6ICFzLFxuXHRcdFx0XHRcdFx0XHRzaGFtOiAhcyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7U3ltYm9sOiBIfVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0RihiKG90KSwgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdEModCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdHt0YXJnZXQ6IE0sIHN0YXQ6ICEwLCBmb3JjZWQ6ICFzfSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dXNlU2V0dGVyOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0aXQgPSAhMDtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0dXNlU2ltcGxlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0aXQgPSAhMTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHR7dGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogITAsIGZvcmNlZDogIXMsIHNoYW06ICFjfSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Y3JlYXRlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB2b2lkIDAgPT09IGUgPyBtKHQpIDogZnQobSh0KSwgZSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGRlZmluZVByb3BlcnR5OiBzdCxcblx0XHRcdFx0XHRcdFx0ZGVmaW5lUHJvcGVydGllczogZnQsXG5cdFx0XHRcdFx0XHRcdGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogcHQsXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQ6ICdPYmplY3QnLFxuXHRcdFx0XHRcdFx0XHRzdGF0OiAhMCxcblx0XHRcdFx0XHRcdFx0Zm9yY2VkOiAhcyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7Z2V0T3duUHJvcGVydHlOYW1lczogaHR9XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRBKCksXG5cdFx0XHRcdFx0VyhILCBNKSxcblx0XHRcdFx0XHQoVFtVXSA9ICEwKTtcblx0XHRcdH0sXG5cdFx0XHQ2NTQ0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNzY5NyksXG5cdFx0XHRcdFx0aSA9IHIoOTAzNyksXG5cdFx0XHRcdFx0YSA9IHIoODg0NCksXG5cdFx0XHRcdFx0dSA9IHIoNjgxMiksXG5cdFx0XHRcdFx0YyA9IHIoOTk4NSksXG5cdFx0XHRcdFx0cyA9IHIoMzYyMiksXG5cdFx0XHRcdFx0ZiA9IHIoNDMyNyksXG5cdFx0XHRcdFx0bCA9IHIoMjE0OCksXG5cdFx0XHRcdFx0cCA9IHIoODc1OCksXG5cdFx0XHRcdFx0aCA9IGkuU3ltYm9sLFxuXHRcdFx0XHRcdHYgPSBoICYmIGgucHJvdG90eXBlO1xuXHRcdFx0XHRpZiAobyAmJiBjKGgpICYmICghKCdkZXNjcmlwdGlvbicgaW4gdikgfHwgdm9pZCAwICE9PSBoKCkuZGVzY3JpcHRpb24pKSB7XG5cdFx0XHRcdFx0dmFyIGQgPSB7fSxcblx0XHRcdFx0XHRcdHkgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA8IDEgfHwgdm9pZCAwID09PSBhcmd1bWVudHNbMF0gPyB2b2lkIDAgOiBmKGFyZ3VtZW50c1swXSksXG5cdFx0XHRcdFx0XHRcdFx0ZSA9IHModiwgdGhpcykgPyBuZXcgaCh0KSA6IHZvaWQgMCA9PT0gdCA/IGgoKSA6IGgodCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAnJyA9PT0gdCAmJiAoZFtlXSA9ICEwKSwgZTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0cCh5LCBoKSwgKHkucHJvdG90eXBlID0gdiksICh2LmNvbnN0cnVjdG9yID0geSk7XG5cdFx0XHRcdFx0dmFyIGcgPSAnU3ltYm9sKGRlc2NyaXB0aW9uIGRldGVjdGlvbiknID09PSBTdHJpbmcoaCgnZGVzY3JpcHRpb24gZGV0ZWN0aW9uJykpLFxuXHRcdFx0XHRcdFx0bSA9IGEodi52YWx1ZU9mKSxcblx0XHRcdFx0XHRcdGIgPSBhKHYudG9TdHJpbmcpLFxuXHRcdFx0XHRcdFx0dyA9IC9eU3ltYm9sXFwoKC4qKVxcKVteKV0rJC8sXG5cdFx0XHRcdFx0XHR4ID0gYSgnJy5yZXBsYWNlKSxcblx0XHRcdFx0XHRcdGsgPSBhKCcnLnNsaWNlKTtcblx0XHRcdFx0XHRsKHYsICdkZXNjcmlwdGlvbicsIHtcblx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSBtKHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRpZiAodShkLCB0KSkgcmV0dXJuICcnO1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGIodCksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IGcgPyBrKGUsIDcsIC0xKSA6IHgoZSwgdywgJyQxJyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAnJyA9PT0gciA/IHZvaWQgMCA6IHI7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0bihcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGdsb2JhbDogITAsXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6ICEwLFxuXHRcdFx0XHRcdFx0XHRcdGZvcmNlZDogITAsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtTeW1ib2w6IHl9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Mzk3NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDYwNTgpLFxuXHRcdFx0XHRcdGkgPSByKDY4MTIpLFxuXHRcdFx0XHRcdGEgPSByKDQzMjcpLFxuXHRcdFx0XHRcdHUgPSByKDM0MzApLFxuXHRcdFx0XHRcdGMgPSByKDY1NDkpLFxuXHRcdFx0XHRcdHMgPSB1KCdzdHJpbmctdG8tc3ltYm9sLXJlZ2lzdHJ5JyksXG5cdFx0XHRcdFx0ZiA9IHUoJ3N5bWJvbC10by1zdHJpbmctcmVnaXN0cnknKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnU3ltYm9sJywgc3RhdDogITAsIGZvcmNlZDogIWN9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZvcjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBhKHQpO1xuXHRcdFx0XHRcdFx0XHRpZiAoaShzLCBlKSkgcmV0dXJuIHNbZV07XG5cdFx0XHRcdFx0XHRcdHZhciByID0gbygnU3ltYm9sJykoZSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoc1tlXSA9IHIpLCAoZltyXSA9IGUpLCByO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NDI1NDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0cig1NDA1KSgnaXRlcmF0b3InKTtcblx0XHRcdH0sXG5cdFx0XHQ5NzQ5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDc4NTUpLCByKDM5NzUpLCByKDE0NDUpLCByKDgzMjQpLCByKDk0MzQpO1xuXHRcdFx0fSxcblx0XHRcdDE0NDU6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig2ODEyKSxcblx0XHRcdFx0XHRpID0gcig3MzQpLFxuXHRcdFx0XHRcdGEgPSByKDM2OTEpLFxuXHRcdFx0XHRcdHUgPSByKDM0MzApLFxuXHRcdFx0XHRcdGMgPSByKDY1NDkpLFxuXHRcdFx0XHRcdHMgPSB1KCdzeW1ib2wtdG8tc3RyaW5nLXJlZ2lzdHJ5Jyk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ1N5bWJvbCcsIHN0YXQ6ICEwLCBmb3JjZWQ6ICFjfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXlGb3I6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGlmICghaSh0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihhKHQpICsgJyBpcyBub3QgYSBzeW1ib2wnKTtcblx0XHRcdFx0XHRcdFx0aWYgKG8ocywgdCkpIHJldHVybiBzW3RdO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0OTM3MzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDU0MDUpLFxuXHRcdFx0XHRcdG8gPSByKDMwMzIpO1xuXHRcdFx0XHRuKCd0b1ByaW1pdGl2ZScpLCBvKCk7XG5cdFx0XHR9LFxuXHRcdFx0Njc5MzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDYwNTgpLFxuXHRcdFx0XHRcdG8gPSByKDU0MDUpLFxuXHRcdFx0XHRcdGkgPSByKDU5OTcpO1xuXHRcdFx0XHRvKCd0b1N0cmluZ1RhZycpLCBpKG4oJ1N5bWJvbCcpLCAnU3ltYm9sJyk7XG5cdFx0XHR9LFxuXHRcdFx0NjIzNzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDI2MTUpLFxuXHRcdFx0XHRcdGkgPSByKDUwOSksXG5cdFx0XHRcdFx0YSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0dSA9IHIoODk5OSksXG5cdFx0XHRcdFx0YyA9IHIoMjMwMiksXG5cdFx0XHRcdFx0cyA9IHIoNzM5NCksXG5cdFx0XHRcdFx0ZiA9IHIoNzgwNyksXG5cdFx0XHRcdFx0bCA9IHIoMjM5OSksXG5cdFx0XHRcdFx0cCA9IHIoMzkzMSksXG5cdFx0XHRcdFx0aCA9IHMoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0ciA9IGUuaXRlcmF0b3IsXG5cdFx0XHRcdFx0XHRcdG4gPSBlLnByZWRpY2F0ZTtcblx0XHRcdFx0XHRcdHJldHVybiBuZXcgdChmdW5jdGlvbiAoaSwgYykge1xuXHRcdFx0XHRcdFx0XHR2YXIgcyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQoZS5kb25lID0gITApLCBjKHQpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0cCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsKHIsIHMsIHQsIHMpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0aCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQucmVzb2x2ZShhKG8oZS5uZXh0LCByKSkpLnRoZW4oZnVuY3Rpb24gKHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGEocikuZG9uZSkgKGUuZG9uZSA9ICEwKSwgaShmKHZvaWQgMCwgITApKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IHIudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBuKG8sIGUuY291bnRlcisrKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGwgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ID8gaShmKG8sICExKSkgOiBoKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHUoYykgPyB0LnJlc29sdmUoYykudGhlbihsLCBwKSA6IGwoYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cyh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRzKHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdGgoKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdBc3luY0l0ZXJhdG9yJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiBwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmaWx0ZXI6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhKHRoaXMpLCBpKHQpLCBuZXcgaChjKHRoaXMpLCB7cHJlZGljYXRlOiB0fSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQxOTU0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMjQ4OSkuZmluZDtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnQXN5bmNJdGVyYXRvcicsIHByb3RvOiAhMCwgcmVhbDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZpbmQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvKHRoaXMsIHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0OTY2NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDI0ODkpLmZvckVhY2g7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ0FzeW5jSXRlcmF0b3InLCBwcm90bzogITAsIHJlYWw6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmb3JFYWNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbyh0aGlzLCB0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDc2MDI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5MDM3KSxcblx0XHRcdFx0XHRpID0gcig3NjcpLFxuXHRcdFx0XHRcdGEgPSByKDk5ODUpLFxuXHRcdFx0XHRcdHUgPSByKDE4NjgpLFxuXHRcdFx0XHRcdGMgPSByKDU3NzMpLFxuXHRcdFx0XHRcdHMgPSByKDM2ODkpLFxuXHRcdFx0XHRcdGYgPSByKDY4MTIpLFxuXHRcdFx0XHRcdGwgPSByKDQyMDEpLFxuXHRcdFx0XHRcdHAgPSByKDIwMTMpLkl0ZXJhdG9yUHJvdG90eXBlLFxuXHRcdFx0XHRcdGggPSByKDM5MzEpLFxuXHRcdFx0XHRcdHYgPSBsKCd0b1N0cmluZ1RhZycpLFxuXHRcdFx0XHRcdGQgPSBUeXBlRXJyb3IsXG5cdFx0XHRcdFx0eSA9IG8uSXRlcmF0b3IsXG5cdFx0XHRcdFx0ZyA9XG5cdFx0XHRcdFx0XHRoIHx8XG5cdFx0XHRcdFx0XHQhYSh5KSB8fFxuXHRcdFx0XHRcdFx0eS5wcm90b3R5cGUgIT09IHAgfHxcblx0XHRcdFx0XHRcdCFzKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0eSh7fSk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRtID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0aWYgKChpKHRoaXMsIHApLCB1KHRoaXMpID09PSBwKSlcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IGQoJ0Fic3RyYWN0IGNsYXNzIEl0ZXJhdG9yIG5vdCBkaXJlY3RseSBjb25zdHJ1Y3RhYmxlJyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0ZihwLCB2KSB8fCBjKHAsIHYsICdJdGVyYXRvcicpLFxuXHRcdFx0XHRcdCghZyAmJiBmKHAsICdjb25zdHJ1Y3RvcicpICYmIHAuY29uc3RydWN0b3IgIT09IE9iamVjdCkgfHwgYyhwLCAnY29uc3RydWN0b3InLCBtKSxcblx0XHRcdFx0XHQobS5wcm90b3R5cGUgPSBwKSxcblx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRnbG9iYWw6ICEwLFxuXHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHRcdGZvcmNlZDogZyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7SXRlcmF0b3I6IG19XG5cdFx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQzNDc2OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoMjYxNSksXG5cdFx0XHRcdFx0aSA9IHIoNTA5KSxcblx0XHRcdFx0XHRhID0gcig1MDI3KSxcblx0XHRcdFx0XHR1ID0gcigyMzAyKSxcblx0XHRcdFx0XHRjID0gcig1NDE5KSxcblx0XHRcdFx0XHRzID0gcigxMjI4KSxcblx0XHRcdFx0XHRmID0gcigzOTMxKSxcblx0XHRcdFx0XHRsID0gYyhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciB0LCBlLCByID0gdGhpcy5pdGVyYXRvciwgbiA9IHRoaXMucHJlZGljYXRlLCBpID0gdGhpcy5uZXh0OyA7ICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoKCh0ID0gYShvKGksIHIpKSksICh0aGlzLmRvbmUgPSAhIXQuZG9uZSkpKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdGlmICgoKGUgPSB0LnZhbHVlKSwgcyhyLCBuLCBbZSwgdGhpcy5jb3VudGVyKytdLCAhMCkpKSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnSXRlcmF0b3InLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6IGZ9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZpbHRlcjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGEodGhpcyksIGkodCksIG5ldyBsKHUodGhpcyksIHtwcmVkaWNhdGU6IHR9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDkyODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDg3MzQpLFxuXHRcdFx0XHRcdGkgPSByKDUwOSksXG5cdFx0XHRcdFx0YSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0dSA9IHIoMjMwMik7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86ICEwLCByZWFsOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZmluZDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0YSh0aGlzKSwgaSh0KTtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSB1KHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSAwO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbyhcblx0XHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIChlLCBuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodChlLCByKyspKSByZXR1cm4gbihlKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtJU19SRUNPUkQ6ICEwLCBJTlRFUlJVUFRFRDogITB9XG5cdFx0XHRcdFx0XHRcdCkucmVzdWx0O1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDg3MzQpLFxuXHRcdFx0XHRcdGkgPSByKDUwOSksXG5cdFx0XHRcdFx0YSA9IHIoNTAyNyksXG5cdFx0XHRcdFx0dSA9IHIoMjMwMik7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ0l0ZXJhdG9yJywgcHJvdG86ICEwLCByZWFsOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Zm9yRWFjaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0YSh0aGlzKSwgaSh0KTtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSB1KHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSAwO1xuXHRcdFx0XHRcdFx0XHRvKFxuXHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHQoZSwgcisrKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtJU19SRUNPUkQ6ICEwfVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0NjkxOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNzY5NyksXG5cdFx0XHRcdFx0aSA9IHIoOTAzNyksXG5cdFx0XHRcdFx0YSA9IHIoNjA1OCksXG5cdFx0XHRcdFx0dSA9IHIoODg0NCksXG5cdFx0XHRcdFx0YyA9IHIoMjYxNSksXG5cdFx0XHRcdFx0cyA9IHIoOTk4NSksXG5cdFx0XHRcdFx0ZiA9IHIoODk5OSksXG5cdFx0XHRcdFx0bCA9IHIoMjI5NyksXG5cdFx0XHRcdFx0cCA9IHIoNjgxMiksXG5cdFx0XHRcdFx0aCA9IHIoNDMyNyksXG5cdFx0XHRcdFx0diA9IHIoNjMxMCksXG5cdFx0XHRcdFx0ZCA9IHIoNjUyMiksXG5cdFx0XHRcdFx0eSA9IHIoMzY4OSksXG5cdFx0XHRcdFx0ZyA9IHIoNjY3NSksXG5cdFx0XHRcdFx0bSA9IHIoMTQ2KSxcblx0XHRcdFx0XHRiID0gaS5KU09OLFxuXHRcdFx0XHRcdHcgPSBpLk51bWJlcixcblx0XHRcdFx0XHR4ID0gaS5TeW50YXhFcnJvcixcblx0XHRcdFx0XHRrID0gYiAmJiBiLnBhcnNlLFxuXHRcdFx0XHRcdFMgPSBhKCdPYmplY3QnLCAna2V5cycpLFxuXHRcdFx0XHRcdEUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHRcdFx0XHRcdE8gPSB1KCcnLmNoYXJBdCksXG5cdFx0XHRcdFx0UCA9IHUoJycuc2xpY2UpLFxuXHRcdFx0XHRcdGogPSB1KC8uLy5leGVjKSxcblx0XHRcdFx0XHRMID0gdShbXS5wdXNoKSxcblx0XHRcdFx0XHRfID0gL15cXGQkLyxcblx0XHRcdFx0XHRJID0gL15bMS05XSQvLFxuXHRcdFx0XHRcdFQgPSAvXig/Oi18XFxkKSQvLFxuXHRcdFx0XHRcdFIgPSAvXltcXHRcXG5cXHIgXSQvLFxuXHRcdFx0XHRcdCQgPSBmdW5jdGlvbiAodCwgZSwgciwgbikge1xuXHRcdFx0XHRcdFx0dmFyIG8sXG5cdFx0XHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdHUsXG5cdFx0XHRcdFx0XHRcdHMsXG5cdFx0XHRcdFx0XHRcdGggPSB0W2VdLFxuXHRcdFx0XHRcdFx0XHRkID0gbiAmJiBoID09PSBuLnZhbHVlLFxuXHRcdFx0XHRcdFx0XHR5ID0gZCAmJiAnc3RyaW5nJyA9PSB0eXBlb2Ygbi5zb3VyY2UgPyB7c291cmNlOiBuLnNvdXJjZX0gOiB7fTtcblx0XHRcdFx0XHRcdGlmIChmKGgpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBnID0gbChoKSxcblx0XHRcdFx0XHRcdFx0XHRtID0gZCA/IG4ubm9kZXMgOiBnID8gW10gOiB7fTtcblx0XHRcdFx0XHRcdFx0aWYgKGcpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChvID0gbS5sZW5ndGgsIGEgPSB2KGgpLCB1ID0gMDsgdSA8IGE7IHUrKylcblx0XHRcdFx0XHRcdFx0XHRcdE4oaCwgdSwgJChoLCAnJyArIHUsIHIsIHUgPCBvID8gbVt1XSA6IHZvaWQgMCkpO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChpID0gUyhoKSwgYSA9IHYoaSksIHUgPSAwOyB1IDwgYTsgdSsrKVxuXHRcdFx0XHRcdFx0XHRcdFx0KHMgPSBpW3VdKSwgTihoLCBzLCAkKGgsIHMsIHIsIHAobSwgcykgPyBtW3NdIDogdm9pZCAwKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gYyhyLCB0LCBlLCBoLCB5KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdE4gPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0aWYgKG8pIHtcblx0XHRcdFx0XHRcdFx0dmFyIG4gPSBFKHQsIGUpO1xuXHRcdFx0XHRcdFx0XHRpZiAobiAmJiAhbi5jb25maWd1cmFibGUpIHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gciA/IGRlbGV0ZSB0W2VdIDogZCh0LCBlLCByKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdEMgPSBmdW5jdGlvbiAodCwgZSwgciwgbikge1xuXHRcdFx0XHRcdFx0KHRoaXMudmFsdWUgPSB0KSwgKHRoaXMuZW5kID0gZSksICh0aGlzLnNvdXJjZSA9IHIpLCAodGhpcy5ub2RlcyA9IG4pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0QSA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHQodGhpcy5zb3VyY2UgPSB0KSwgKHRoaXMuaW5kZXggPSBlKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRBLnByb3RvdHlwZSA9IHtcblx0XHRcdFx0XHRmb3JrOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBBKHRoaXMuc291cmNlLCB0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHBhcnNlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMuc291cmNlLFxuXHRcdFx0XHRcdFx0XHRlID0gdGhpcy5za2lwKFIsIHRoaXMuaW5kZXgpLFxuXHRcdFx0XHRcdFx0XHRyID0gdGhpcy5mb3JrKGUpLFxuXHRcdFx0XHRcdFx0XHRuID0gTyh0LCBlKTtcblx0XHRcdFx0XHRcdGlmIChqKFQsIG4pKSByZXR1cm4gci5udW1iZXIoKTtcblx0XHRcdFx0XHRcdHN3aXRjaCAobikge1xuXHRcdFx0XHRcdFx0XHRjYXNlICd7Jzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gci5vYmplY3QoKTtcblx0XHRcdFx0XHRcdFx0Y2FzZSAnWyc6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIuYXJyYXkoKTtcblx0XHRcdFx0XHRcdFx0Y2FzZSAnXCInOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByLnN0cmluZygpO1xuXHRcdFx0XHRcdFx0XHRjYXNlICd0Jzpcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gci5rZXl3b3JkKCEwKTtcblx0XHRcdFx0XHRcdFx0Y2FzZSAnZic6XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIua2V5d29yZCghMSk7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByLmtleXdvcmQobnVsbCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgeCgnVW5leHBlY3RlZCBjaGFyYWN0ZXI6IFwiJyArIG4gKyAnXCIgYXQ6ICcgKyBlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG5vZGU6IGZ1bmN0aW9uICh0LCBlLCByLCBuLCBvKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbmV3IEMoZSwgbiwgdCA/IG51bGwgOiBQKHRoaXMuc291cmNlLCByLCBuKSwgbyk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRvYmplY3Q6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIHQgPSB0aGlzLnNvdXJjZSwgZSA9IHRoaXMuaW5kZXggKyAxLCByID0gITEsIG4gPSB7fSwgbyA9IHt9OyBlIDwgdC5sZW5ndGg7ICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoKChlID0gdGhpcy51bnRpbChbJ1wiJywgJ30nXSwgZSkpLCAnfScgPT09IE8odCwgZSkgJiYgIXIpKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZSsrO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHZhciBpID0gdGhpcy5mb3JrKGUpLnN0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdGEgPSBpLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHQoZSA9IGkuZW5kKSxcblx0XHRcdFx0XHRcdFx0XHQoZSA9IHRoaXMudW50aWwoWyc6J10sIGUpICsgMSksXG5cdFx0XHRcdFx0XHRcdFx0KGUgPSB0aGlzLnNraXAoUiwgZSkpLFxuXHRcdFx0XHRcdFx0XHRcdChpID0gdGhpcy5mb3JrKGUpLnBhcnNlKCkpLFxuXHRcdFx0XHRcdFx0XHRcdGQobywgYSwgaSksXG5cdFx0XHRcdFx0XHRcdFx0ZChuLCBhLCBpLnZhbHVlKSxcblx0XHRcdFx0XHRcdFx0XHQoZSA9IHRoaXMudW50aWwoWycsJywgJ30nXSwgaS5lbmQpKTtcblx0XHRcdFx0XHRcdFx0dmFyIHUgPSBPKHQsIGUpO1xuXHRcdFx0XHRcdFx0XHRpZiAoJywnID09PSB1KSAociA9ICEwKSwgZSsrO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmICgnfScgPT09IHUpIHtcblx0XHRcdFx0XHRcdFx0XHRlKys7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm5vZGUoMSwgbiwgdGhpcy5pbmRleCwgZSwgbyk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhcnJheTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgdCA9IHRoaXMuc291cmNlLCBlID0gdGhpcy5pbmRleCArIDEsIHIgPSAhMSwgbiA9IFtdLCBvID0gW107IGUgPCB0Lmxlbmd0aDsgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgoKGUgPSB0aGlzLnNraXAoUiwgZSkpLCAnXScgPT09IE8odCwgZSkgJiYgIXIpKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZSsrO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHZhciBpID0gdGhpcy5mb3JrKGUpLnBhcnNlKCk7XG5cdFx0XHRcdFx0XHRcdGlmICgoTChvLCBpKSwgTChuLCBpLnZhbHVlKSwgKGUgPSB0aGlzLnVudGlsKFsnLCcsICddJ10sIGkuZW5kKSksICcsJyA9PT0gTyh0LCBlKSkpXG5cdFx0XHRcdFx0XHRcdFx0KHIgPSAhMCksIGUrKztcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ10nID09PSBPKHQsIGUpKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZSsrO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ub2RlKDEsIG4sIHRoaXMuaW5kZXgsIGUsIG8pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3RyaW5nOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMuaW5kZXgsXG5cdFx0XHRcdFx0XHRcdGUgPSBnKHRoaXMuc291cmNlLCB0aGlzLmluZGV4ICsgMSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ub2RlKDAsIGUudmFsdWUsIHQsIGUuZW5kKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG51bWJlcjogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnNvdXJjZSxcblx0XHRcdFx0XHRcdFx0ZSA9IHRoaXMuaW5kZXgsXG5cdFx0XHRcdFx0XHRcdHIgPSBlO1xuXHRcdFx0XHRcdFx0aWYgKCgnLScgPT09IE8odCwgcikgJiYgcisrLCAnMCcgPT09IE8odCwgcikpKSByKys7XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKCFqKEksIE8odCwgcikpKSB0aHJvdyBuZXcgeCgnRmFpbGVkIHRvIHBhcnNlIG51bWJlciBhdDogJyArIHIpO1xuXHRcdFx0XHRcdFx0XHRyID0gdGhpcy5za2lwKF8sICsrcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdCgnLicgPT09IE8odCwgcikgJiYgKHIgPSB0aGlzLnNraXAoXywgKytyKSksICdlJyA9PT0gTyh0LCByKSB8fCAnRScgPT09IE8odCwgcikpICYmXG5cdFx0XHRcdFx0XHRcdChyKyssICgnKycgIT09IE8odCwgcikgJiYgJy0nICE9PSBPKHQsIHIpKSB8fCByKyssIHIgPT09IChyID0gdGhpcy5za2lwKF8sIHIpKSlcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IHgoXCJGYWlsZWQgdG8gcGFyc2UgbnVtYmVyJ3MgZXhwb25lbnQgdmFsdWUgYXQ6IFwiICsgcik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ub2RlKDAsIHcoUCh0LCBlLCByKSksIGUsIHIpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0a2V5d29yZDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gJycgKyB0LFxuXHRcdFx0XHRcdFx0XHRyID0gdGhpcy5pbmRleCxcblx0XHRcdFx0XHRcdFx0biA9IHIgKyBlLmxlbmd0aDtcblx0XHRcdFx0XHRcdGlmIChQKHRoaXMuc291cmNlLCByLCBuKSAhPT0gZSkgdGhyb3cgbmV3IHgoJ0ZhaWxlZCB0byBwYXJzZSB2YWx1ZSBhdDogJyArIHIpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMubm9kZSgwLCB0LCByLCBuKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNraXA6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciByID0gdGhpcy5zb3VyY2U7IGUgPCByLmxlbmd0aCAmJiBqKHQsIE8ociwgZSkpOyBlKyspO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1bnRpbDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdGUgPSB0aGlzLnNraXAoUiwgZSk7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciByID0gTyh0aGlzLnNvdXJjZSwgZSksIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgaWYgKHRbbl0gPT09IHIpIHJldHVybiBlO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IHgoJ1VuZXhwZWN0ZWQgY2hhcmFjdGVyOiBcIicgKyByICsgJ1wiIGF0OiAnICsgZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fTtcblx0XHRcdFx0dmFyIFcgPSB5KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0LFxuXHRcdFx0XHRcdFx0XHRlID0gJzkwMDcxOTkyNTQ3NDA5OTMnO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0ayhlLCBmdW5jdGlvbiAoZSwgciwgbikge1xuXHRcdFx0XHRcdFx0XHRcdHQgPSBuLnNvdXJjZTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdHQgIT09IGVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0QiA9XG5cdFx0XHRcdFx0XHRtICYmXG5cdFx0XHRcdFx0XHQheShmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAxIC8gaygnLTAgXFx0JykgIT0gLTEgLyAwO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ0pTT04nLCBzdGF0OiAhMCwgZm9yY2VkOiBXfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRwYXJzZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEIgJiYgIXMoZSlcblx0XHRcdFx0XHRcdFx0XHQ/IGsodClcblx0XHRcdFx0XHRcdFx0XHQ6IChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ID0gaCh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBuZXcgQSh0LCAwLCAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0biA9IHIucGFyc2UoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gbi52YWx1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpID0gci5za2lwKFIsIG4uZW5kKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGkgPCB0Lmxlbmd0aClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgeChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdVbmV4cGVjdGVkIGV4dHJhIGNoYXJhY3RlcjogXCInICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Tyh0LCBpKSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdcIiBhZnRlciB0aGUgcGFyc2VkIGRhdGEgYXQ6ICcgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHMoZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnJzogbyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IG87XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSh0LCBlKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDc0NDQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5OTQ1KSxcblx0XHRcdFx0XHRpID0gcigzOTE0KS5yZW1vdmU7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGRlbGV0ZUFsbDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciB0LCBlID0gbyh0aGlzKSwgciA9ICEwLCBuID0gMCwgYSA9IGFyZ3VtZW50cy5sZW5ndGg7IG4gPCBhOyBuKyspXG5cdFx0XHRcdFx0XHRcdFx0KHQgPSBpKGUsIGFyZ3VtZW50c1tuXSkpLCAociA9IHIgJiYgdCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAhIXI7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ3OTY4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoOTk0NSksXG5cdFx0XHRcdFx0aSA9IHIoMzkxNCksXG5cdFx0XHRcdFx0YSA9IGkuZ2V0LFxuXHRcdFx0XHRcdHUgPSBpLmhhcyxcblx0XHRcdFx0XHRjID0gaS5zZXQ7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGVtcGxhY2U6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0aSA9IG8odGhpcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB1KGksIHQpXG5cdFx0XHRcdFx0XHRcdFx0PyAoKHIgPSBhKGksIHQpKSwgJ3VwZGF0ZScgaW4gZSAmJiAoKHIgPSBlLnVwZGF0ZShyLCB0LCBpKSksIGMoaSwgdCwgcikpLCByKVxuXHRcdFx0XHRcdFx0XHRcdDogKChuID0gZS5pbnNlcnQodCwgaSkpLCBjKGksIHQsIG4pLCBuKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDc0NzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDQwNzEpLFxuXHRcdFx0XHRcdGkgPSByKDk5NDUpLFxuXHRcdFx0XHRcdGEgPSByKDYxMyk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGV2ZXJ5OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGkodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IG8odCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCExICE9PVxuXHRcdFx0XHRcdFx0XHRcdGEoXG5cdFx0XHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIG4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFyKHQsIG4sIGUpKSByZXR1cm4gITE7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0ITBcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQxMDk5OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNDA3MSksXG5cdFx0XHRcdFx0aSA9IHIoOTk0NSksXG5cdFx0XHRcdFx0YSA9IHIoMzkxNCksXG5cdFx0XHRcdFx0dSA9IHIoNjEzKSxcblx0XHRcdFx0XHRjID0gYS5NYXAsXG5cdFx0XHRcdFx0cyA9IGEuc2V0O1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdNYXAnLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmaWx0ZXI6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gaSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRyID0gbyh0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCksXG5cdFx0XHRcdFx0XHRcdFx0biA9IG5ldyBjKCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0dShlLCBmdW5jdGlvbiAodCwgbykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cih0LCBvLCBlKSAmJiBzKG4sIG8sIHQpO1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdG5cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDg3NjogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDQwNzEpLFxuXHRcdFx0XHRcdGkgPSByKDk5NDUpLFxuXHRcdFx0XHRcdGEgPSByKDYxMyk7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZpbmRLZXk6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlID0gaSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRyID0gbyh0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCksXG5cdFx0XHRcdFx0XHRcdFx0biA9IGEoXG5cdFx0XHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIG4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHIodCwgbiwgZSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGtleTogbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdCEwXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG4gJiYgbi5rZXk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ2MzIwOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNDA3MSksXG5cdFx0XHRcdFx0aSA9IHIoOTk0NSksXG5cdFx0XHRcdFx0YSA9IHIoNjEzKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0ZmluZDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBvKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gYShcblx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocih0LCBuLCBlKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHQhMFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuICYmIG4udmFsdWU7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ2NzkxOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoODYwMCksXG5cdFx0XHRcdFx0aSA9IHIoOTk0NSksXG5cdFx0XHRcdFx0YSA9IHIoNjEzKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5jbHVkZXM6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0ITAgPT09XG5cdFx0XHRcdFx0XHRcdFx0YShcblx0XHRcdFx0XHRcdFx0XHRcdGkodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAobyhlLCB0KSkgcmV0dXJuICEwO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdCEwXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MTk6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5OTQ1KSxcblx0XHRcdFx0XHRpID0gcig2MTMpO1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdNYXAnLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXlPZjogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKFxuXHRcdFx0XHRcdFx0XHRcdG8odGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChlID09PSB0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGtleTogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdCEwXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBlICYmIGUua2V5O1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MjM0MzogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDk5ODkpLFxuXHRcdFx0XHRcdG8gPSByKDQwNzEpLFxuXHRcdFx0XHRcdGkgPSByKDk5NDUpLFxuXHRcdFx0XHRcdGEgPSByKDM5MTQpLFxuXHRcdFx0XHRcdHUgPSByKDYxMyksXG5cdFx0XHRcdFx0YyA9IGEuTWFwLFxuXHRcdFx0XHRcdHMgPSBhLnNldDtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bWFwS2V5czogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBvKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gbmV3IGMoKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHR1KGUsIGZ1bmN0aW9uICh0LCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzKG4sIHIodCwgbywgZSksIHQpO1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdG5cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDEwOTY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig0MDcxKSxcblx0XHRcdFx0XHRpID0gcig5OTQ1KSxcblx0XHRcdFx0XHRhID0gcigzOTE0KSxcblx0XHRcdFx0XHR1ID0gcig2MTMpLFxuXHRcdFx0XHRcdGMgPSBhLk1hcCxcblx0XHRcdFx0XHRzID0gYS5zZXQ7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG1hcFZhbHVlczogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBvKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gbmV3IGMoKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHR1KGUsIGZ1bmN0aW9uICh0LCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzKG4sIG8sIHIodCwgbywgZSkpO1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdG5cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDQzMTQ6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5OTQ1KSxcblx0XHRcdFx0XHRpID0gcig4NzM0KSxcblx0XHRcdFx0XHRhID0gcigzOTE0KS5zZXQ7XG5cdFx0XHRcdG4oXG5cdFx0XHRcdFx0e3RhcmdldDogJ01hcCcsIHByb3RvOiAhMCwgcmVhbDogITAsIGFyaXR5OiAxLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRtZXJnZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSA9IG8odGhpcyksIHIgPSBhcmd1bWVudHMubGVuZ3RoLCBuID0gMDsgbiA8IHI7IClcblx0XHRcdFx0XHRcdFx0XHRpKFxuXHRcdFx0XHRcdFx0XHRcdFx0YXJndW1lbnRzW24rK10sXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhKGUsIHQsIHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtBU19FTlRSSUVTOiAhMH1cblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDMzNDY6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig1MDkpLFxuXHRcdFx0XHRcdGkgPSByKDk5NDUpLFxuXHRcdFx0XHRcdGEgPSByKDYxMyksXG5cdFx0XHRcdFx0dSA9IFR5cGVFcnJvcjtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0cmVkdWNlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZSA9IGkodGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0ciA9IGFyZ3VtZW50cy5sZW5ndGggPCAyLFxuXHRcdFx0XHRcdFx0XHRcdG4gPSByID8gdm9pZCAwIDogYXJndW1lbnRzWzFdO1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0KG8odCksXG5cdFx0XHRcdFx0XHRcdFx0YShlLCBmdW5jdGlvbiAobywgaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ciA/ICgociA9ICExKSwgKG4gPSBvKSkgOiAobiA9IHQobiwgbywgaSwgZSkpO1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdHIpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgdSgnUmVkdWNlIG9mIGVtcHR5IG1hcCB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG47XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ0OTg0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNDA3MSksXG5cdFx0XHRcdFx0aSA9IHIoOTk0NSksXG5cdFx0XHRcdFx0YSA9IHIoNjEzKTtcblx0XHRcdFx0bihcblx0XHRcdFx0XHR7dGFyZ2V0OiAnTWFwJywgcHJvdG86ICEwLCByZWFsOiAhMCwgZm9yY2VkOiAhMH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0c29tZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBpKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBvKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQhMCA9PT1cblx0XHRcdFx0XHRcdFx0XHRhKFxuXHRcdFx0XHRcdFx0XHRcdFx0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChyKHQsIG4sIGUpKSByZXR1cm4gITA7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0ITBcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ0MDc4OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHR2YXIgbiA9IHIoOTk4OSksXG5cdFx0XHRcdFx0byA9IHIoNTA5KSxcblx0XHRcdFx0XHRpID0gcig5OTQ1KSxcblx0XHRcdFx0XHRhID0gcigzOTE0KSxcblx0XHRcdFx0XHR1ID0gVHlwZUVycm9yLFxuXHRcdFx0XHRcdGMgPSBhLmdldCxcblx0XHRcdFx0XHRzID0gYS5oYXMsXG5cdFx0XHRcdFx0ZiA9IGEuc2V0O1xuXHRcdFx0XHRuKFxuXHRcdFx0XHRcdHt0YXJnZXQ6ICdNYXAnLCBwcm90bzogITAsIHJlYWw6ICEwLCBmb3JjZWQ6ICEwfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR1cGRhdGU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gaSh0aGlzKSxcblx0XHRcdFx0XHRcdFx0XHRuID0gYXJndW1lbnRzLmxlbmd0aDtcblx0XHRcdFx0XHRcdFx0byhlKTtcblx0XHRcdFx0XHRcdFx0dmFyIGEgPSBzKHIsIHQpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWEgJiYgbiA8IDMpIHRocm93IG5ldyB1KCdVcGRhdGluZyBhYnNlbnQgdmFsdWUnKTtcblx0XHRcdFx0XHRcdFx0dmFyIGwgPSBhID8gYyhyLCB0KSA6IG8obiA+IDIgPyBhcmd1bWVudHNbMl0gOiB2b2lkIDApKHQsIHIpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZihyLCB0LCBlKGwsIHQsIHIpKSwgcjtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdDc1MjI6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig5MDM3KSxcblx0XHRcdFx0XHRvID0gcig2MzM4KSxcblx0XHRcdFx0XHRpID0gcigzMjY1KSxcblx0XHRcdFx0XHRhID0gcig3NjEyKSxcblx0XHRcdFx0XHR1ID0gcig1NzczKSxcblx0XHRcdFx0XHRjID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmICh0ICYmIHQuZm9yRWFjaCAhPT0gYSlcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHR1KHQsICdmb3JFYWNoJywgYSk7XG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdFx0XHR0LmZvckVhY2ggPSBhO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0Zm9yICh2YXIgcyBpbiBvKSBvW3NdICYmIGMobltzXSAmJiBuW3NdLnByb3RvdHlwZSk7XG5cdFx0XHRcdGMoaSk7XG5cdFx0XHR9LFxuXHRcdFx0NjI2NTogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDkwMzcpLFxuXHRcdFx0XHRcdG8gPSByKDYzMzgpLFxuXHRcdFx0XHRcdGkgPSByKDMyNjUpLFxuXHRcdFx0XHRcdGEgPSByKDc1MiksXG5cdFx0XHRcdFx0dSA9IHIoNTc3MyksXG5cdFx0XHRcdFx0YyA9IHIoNDIwMSksXG5cdFx0XHRcdFx0cyA9IGMoJ2l0ZXJhdG9yJyksXG5cdFx0XHRcdFx0ZiA9IGMoJ3RvU3RyaW5nVGFnJyksXG5cdFx0XHRcdFx0bCA9IGEudmFsdWVzLFxuXHRcdFx0XHRcdHAgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0aWYgKHQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRbc10gIT09IGwpXG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdHUodCwgcywgbCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dFtzXSA9IGw7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoKHRbZl0gfHwgdSh0LCBmLCBlKSwgb1tlXSkpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciBpbiBhKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRbcl0gIT09IGFbcl0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dSh0LCByLCBhW3JdKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRbcl0gPSBhW3JdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0Zm9yICh2YXIgaCBpbiBvKSBwKG5baF0gJiYgbltoXS5wcm90b3R5cGUsIGgpO1xuXHRcdFx0XHRwKGksICdET01Ub2tlbkxpc3QnKTtcblx0XHRcdH0sXG5cdFx0XHQyNjI1OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDc1Mik7XG5cdFx0XHRcdHZhciBuID0gcig5OTg5KSxcblx0XHRcdFx0XHRvID0gcig5MDM3KSxcblx0XHRcdFx0XHRpID0gcigyNjE1KSxcblx0XHRcdFx0XHRhID0gcig4ODQ0KSxcblx0XHRcdFx0XHR1ID0gcig3Njk3KSxcblx0XHRcdFx0XHRjID0gcig2ODM3KSxcblx0XHRcdFx0XHRzID0gcigxODgwKSxcblx0XHRcdFx0XHRmID0gcigyMTQ4KSxcblx0XHRcdFx0XHRsID0gcig2MDQ1KSxcblx0XHRcdFx0XHRwID0gcig1OTk3KSxcblx0XHRcdFx0XHRoID0gcig5NzQpLFxuXHRcdFx0XHRcdHYgPSByKDYxOCksXG5cdFx0XHRcdFx0ZCA9IHIoNzY3KSxcblx0XHRcdFx0XHR5ID0gcig5OTg1KSxcblx0XHRcdFx0XHRnID0gcig2ODEyKSxcblx0XHRcdFx0XHRtID0gcig0MDcxKSxcblx0XHRcdFx0XHRiID0gcig5MjYpLFxuXHRcdFx0XHRcdHcgPSByKDUwMjcpLFxuXHRcdFx0XHRcdHggPSByKDg5OTkpLFxuXHRcdFx0XHRcdGsgPSByKDQzMjcpLFxuXHRcdFx0XHRcdFMgPSByKDUzOTEpLFxuXHRcdFx0XHRcdEUgPSByKDU2ODQpLFxuXHRcdFx0XHRcdE8gPSByKDUxODUpLFxuXHRcdFx0XHRcdFAgPSByKDE2NjQpLFxuXHRcdFx0XHRcdGogPSByKDc4MDcpLFxuXHRcdFx0XHRcdEwgPSByKDE1MDApLFxuXHRcdFx0XHRcdF8gPSByKDQyMDEpLFxuXHRcdFx0XHRcdEkgPSByKDM4MiksXG5cdFx0XHRcdFx0VCA9IF8oJ2l0ZXJhdG9yJyksXG5cdFx0XHRcdFx0UiA9ICdVUkxTZWFyY2hQYXJhbXMnLFxuXHRcdFx0XHRcdCQgPSBSICsgJ0l0ZXJhdG9yJyxcblx0XHRcdFx0XHROID0gdi5zZXQsXG5cdFx0XHRcdFx0QyA9IHYuZ2V0dGVyRm9yKFIpLFxuXHRcdFx0XHRcdEEgPSB2LmdldHRlckZvcigkKSxcblx0XHRcdFx0XHRXID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixcblx0XHRcdFx0XHRCID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmICghdSkgcmV0dXJuIG9bdF07XG5cdFx0XHRcdFx0XHR2YXIgZSA9IFcobywgdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZSAmJiBlLnZhbHVlO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0RiA9IEIoJ2ZldGNoJyksXG5cdFx0XHRcdFx0VSA9IEIoJ1JlcXVlc3QnKSxcblx0XHRcdFx0XHRNID0gQignSGVhZGVycycpLFxuXHRcdFx0XHRcdEQgPSBVICYmIFUucHJvdG90eXBlLFxuXHRcdFx0XHRcdEcgPSBNICYmIE0ucHJvdG90eXBlLFxuXHRcdFx0XHRcdHEgPSBvLlJlZ0V4cCxcblx0XHRcdFx0XHRRID0gby5UeXBlRXJyb3IsXG5cdFx0XHRcdFx0SCA9IG8uZGVjb2RlVVJJQ29tcG9uZW50LFxuXHRcdFx0XHRcdHogPSBvLmVuY29kZVVSSUNvbXBvbmVudCxcblx0XHRcdFx0XHRZID0gYSgnJy5jaGFyQXQpLFxuXHRcdFx0XHRcdFYgPSBhKFtdLmpvaW4pLFxuXHRcdFx0XHRcdEogPSBhKFtdLnB1c2gpLFxuXHRcdFx0XHRcdEsgPSBhKCcnLnJlcGxhY2UpLFxuXHRcdFx0XHRcdFggPSBhKFtdLnNoaWZ0KSxcblx0XHRcdFx0XHRaID0gYShbXS5zcGxpY2UpLFxuXHRcdFx0XHRcdHR0ID0gYSgnJy5zcGxpdCksXG5cdFx0XHRcdFx0ZXQgPSBhKCcnLnNsaWNlKSxcblx0XHRcdFx0XHRydCA9IC9cXCsvZyxcblx0XHRcdFx0XHRudCA9IEFycmF5KDQpLFxuXHRcdFx0XHRcdG90ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBudFt0IC0gMV0gfHwgKG50W3QgLSAxXSA9IHEoJygoPzolW1xcXFxkYS1mXXsyfSl7JyArIHQgKyAnfSknLCAnZ2knKSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRpdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gSCh0KTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IEsodCwgcnQsICcgJyksXG5cdFx0XHRcdFx0XHRcdHIgPSA0O1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEgoZSk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoOyByOyApIGUgPSBLKGUsIG90KHItLSksIGl0KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1dCA9IC9bIScoKX5dfCUyMC9nLFxuXHRcdFx0XHRcdGN0ID0ge1xuXHRcdFx0XHRcdFx0JyEnOiAnJTIxJyxcblx0XHRcdFx0XHRcdFwiJ1wiOiAnJTI3Jyxcblx0XHRcdFx0XHRcdCcoJzogJyUyOCcsXG5cdFx0XHRcdFx0XHQnKSc6ICclMjknLFxuXHRcdFx0XHRcdFx0J34nOiAnJTdFJyxcblx0XHRcdFx0XHRcdCclMjAnOiAnKycsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY3RbdF07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gSyh6KHQpLCB1dCwgc3QpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bHQgPSBoKFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0Tih0aGlzLCB7dHlwZTogJCwgdGFyZ2V0OiBDKHQpLmVudHJpZXMsIGluZGV4OiAwLCBraW5kOiBlfSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Uixcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSBBKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdGUgPSB0LnRhcmdldCxcblx0XHRcdFx0XHRcdFx0XHRyID0gdC5pbmRleCsrO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWUgfHwgciA+PSBlLmxlbmd0aCkgcmV0dXJuICh0LnRhcmdldCA9IHZvaWQgMCksIGoodm9pZCAwLCAhMCk7XG5cdFx0XHRcdFx0XHRcdHZhciBuID0gZVtyXTtcblx0XHRcdFx0XHRcdFx0c3dpdGNoICh0LmtpbmQpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlICdrZXlzJzpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBqKG4ua2V5LCAhMSk7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAndmFsdWVzJzpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBqKG4udmFsdWUsICExKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaihbbi5rZXksIG4udmFsdWVdLCAhMSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ITBcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHB0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdCh0aGlzLmVudHJpZXMgPSBbXSksXG5cdFx0XHRcdFx0XHRcdCh0aGlzLnVybCA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHR2b2lkIDAgIT09IHQgJiZcblx0XHRcdFx0XHRcdFx0XHQoeCh0KVxuXHRcdFx0XHRcdFx0XHRcdFx0PyB0aGlzLnBhcnNlT2JqZWN0KHQpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucGFyc2VRdWVyeSgnc3RyaW5nJyA9PSB0eXBlb2YgdCA/ICgnPycgPT09IFkodCwgMCkgPyBldCh0LCAxKSA6IHQpIDogayh0KSkpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHB0LnByb3RvdHlwZSA9IHtcblx0XHRcdFx0XHR0eXBlOiBSLFxuXHRcdFx0XHRcdGJpbmRVUkw6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHQodGhpcy51cmwgPSB0KSwgdGhpcy51cGRhdGUoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHBhcnNlT2JqZWN0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdHIsXG5cdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdHUsXG5cdFx0XHRcdFx0XHRcdGMsXG5cdFx0XHRcdFx0XHRcdHMgPSB0aGlzLmVudHJpZXMsXG5cdFx0XHRcdFx0XHRcdGYgPSBQKHQpO1xuXHRcdFx0XHRcdFx0aWYgKGYpXG5cdFx0XHRcdFx0XHRcdGZvciAociA9IChlID0gTyh0LCBmKSkubmV4dDsgIShuID0gaShyLCBlKSkuZG9uZTsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0KChhID0gKG8gPSBPKHcobi52YWx1ZSkpKS5uZXh0KSxcblx0XHRcdFx0XHRcdFx0XHRcdCh1ID0gaShhLCBvKSkuZG9uZSB8fCAoYyA9IGkoYSwgbykpLmRvbmUgfHwgIWkoYSwgbykuZG9uZSlcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgUSgnRXhwZWN0ZWQgc2VxdWVuY2Ugd2l0aCBsZW5ndGggMicpO1xuXHRcdFx0XHRcdFx0XHRcdEoocywge2tleTogayh1LnZhbHVlKSwgdmFsdWU6IGsoYy52YWx1ZSl9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSBmb3IgKHZhciBsIGluIHQpIGcodCwgbCkgJiYgSihzLCB7a2V5OiBsLCB2YWx1ZTogayh0W2xdKX0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cGFyc2VRdWVyeTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdGlmICh0KVxuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlLCByLCBuID0gdGhpcy5lbnRyaWVzLCBvID0gdHQodCwgJyYnKSwgaSA9IDA7IGkgPCBvLmxlbmd0aDsgKVxuXHRcdFx0XHRcdFx0XHRcdChlID0gb1tpKytdKS5sZW5ndGggJiYgKChyID0gdHQoZSwgJz0nKSksIEoobiwge2tleTogYXQoWChyKSksIHZhbHVlOiBhdChWKHIsICc9JykpfSkpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2VyaWFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciB0LCBlID0gdGhpcy5lbnRyaWVzLCByID0gW10sIG4gPSAwOyBuIDwgZS5sZW5ndGg7IClcblx0XHRcdFx0XHRcdFx0KHQgPSBlW24rK10pLCBKKHIsIGZ0KHQua2V5KSArICc9JyArIGZ0KHQudmFsdWUpKTtcblx0XHRcdFx0XHRcdHJldHVybiBWKHIsICcmJyk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1cGRhdGU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdCh0aGlzLmVudHJpZXMubGVuZ3RoID0gMCksIHRoaXMucGFyc2VRdWVyeSh0aGlzLnVybC5xdWVyeSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1cGRhdGVVUkw6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHRoaXMudXJsICYmIHRoaXMudXJsLnVwZGF0ZSgpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH07XG5cdFx0XHRcdHZhciBodCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdGQodGhpcywgdnQpO1xuXHRcdFx0XHRcdFx0dmFyIHQgPSBOKHRoaXMsIG5ldyBwdChhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHZvaWQgMCkpO1xuXHRcdFx0XHRcdFx0dSB8fCAodGhpcy5zaXplID0gdC5lbnRyaWVzLmxlbmd0aCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR2dCA9IGh0LnByb3RvdHlwZTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChsKFxuXHRcdFx0XHRcdFx0dnQsXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGFwcGVuZDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IEModGhpcyk7XG5cdFx0XHRcdFx0XHRcdFx0TChhcmd1bWVudHMubGVuZ3RoLCAyKSxcblx0XHRcdFx0XHRcdFx0XHRcdEooci5lbnRyaWVzLCB7a2V5OiBrKHQpLCB2YWx1ZTogayhlKX0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0dSB8fCB0aGlzLmxlbmd0aCsrLFxuXHRcdFx0XHRcdFx0XHRcdFx0ci51cGRhdGVVUkwoKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0ZGVsZXRlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IEModGhpcyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSBMKGFyZ3VtZW50cy5sZW5ndGgsIDEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuID0gZS5lbnRyaWVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gayh0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9IHIgPCAyID8gdm9pZCAwIDogYXJndW1lbnRzWzFdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhID0gdm9pZCAwID09PSBpID8gaSA6IGsoaSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGMgPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0YyA8IG4ubGVuZ3RoO1xuXG5cdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcyA9IG5bY107XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocy5rZXkgIT09IG8gfHwgKHZvaWQgMCAhPT0gYSAmJiBzLnZhbHVlICE9PSBhKSkgYysrO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoKFoobiwgYywgMSksIHZvaWQgMCAhPT0gYSkpIGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR1IHx8ICh0aGlzLnNpemUgPSBuLmxlbmd0aCksIGUudXBkYXRlVVJMKCk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IEModGhpcykuZW50cmllcztcblx0XHRcdFx0XHRcdFx0XHRMKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSBrKHQpLCBuID0gMDsgbiA8IGUubGVuZ3RoOyBuKyspIGlmIChlW25dLmtleSA9PT0gcikgcmV0dXJuIGVbbl0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGdldEFsbDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IEModGhpcykuZW50cmllcztcblx0XHRcdFx0XHRcdFx0XHRMKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSBrKHQpLCBuID0gW10sIG8gPSAwOyBvIDwgZS5sZW5ndGg7IG8rKykgZVtvXS5rZXkgPT09IHIgJiYgSihuLCBlW29dLnZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbjtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0aGFzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IEModGhpcykuZW50cmllcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IEwoYXJndW1lbnRzLmxlbmd0aCwgMSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4gPSBrKHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gciA8IDIgPyB2b2lkIDAgOiBhcmd1bWVudHNbMV0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSB2b2lkIDAgPT09IG8gPyBvIDogayhvKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YSA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0XHRhIDwgZS5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB1ID0gZVthKytdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHUua2V5ID09PSBuICYmICh2b2lkIDAgPT09IGkgfHwgdS52YWx1ZSA9PT0gaSkpIHJldHVybiAhMDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICExO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZXQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBDKHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRcdEwoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbiwgbyA9IHIuZW50cmllcywgaSA9ICExLCBhID0gayh0KSwgYyA9IGsoZSksIHMgPSAwOyBzIDwgby5sZW5ndGg7IHMrKylcblx0XHRcdFx0XHRcdFx0XHRcdChuID0gb1tzXSkua2V5ID09PSBhICYmIChpID8gWihvLCBzLS0sIDEpIDogKChpID0gITApLCAobi52YWx1ZSA9IGMpKSk7XG5cdFx0XHRcdFx0XHRcdFx0aSB8fCBKKG8sIHtrZXk6IGEsIHZhbHVlOiBjfSksIHUgfHwgKHRoaXMuc2l6ZSA9IG8ubGVuZ3RoKSwgci51cGRhdGVVUkwoKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0c29ydDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gQyh0aGlzKTtcblx0XHRcdFx0XHRcdFx0XHRJKHQuZW50cmllcywgZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmtleSA+IGUua2V5ID8gMSA6IC0xO1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0dC51cGRhdGVVUkwoKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0Zm9yRWFjaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSBDKHRoaXMpLmVudHJpZXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4gPSBtKHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0byA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0XHRvIDwgci5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRuKChlID0gcltvKytdKS52YWx1ZSwgZS5rZXksIHRoaXMpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRrZXlzOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBsdCh0aGlzLCAna2V5cycpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR2YWx1ZXM6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IGx0KHRoaXMsICd2YWx1ZXMnKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0ZW50cmllczogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgbHQodGhpcywgJ2VudHJpZXMnKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7ZW51bWVyYWJsZTogITB9XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRzKHZ0LCBULCB2dC5lbnRyaWVzLCB7bmFtZTogJ2VudHJpZXMnfSksXG5cdFx0XHRcdFx0cyhcblx0XHRcdFx0XHRcdHZ0LFxuXHRcdFx0XHRcdFx0J3RvU3RyaW5nJyxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEModGhpcykuc2VyaWFsaXplKCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e2VudW1lcmFibGU6ICEwfVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0dSAmJlxuXHRcdFx0XHRcdFx0Zih2dCwgJ3NpemUnLCB7XG5cdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBDKHRoaXMpLmVudHJpZXMubGVuZ3RoO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRjb25maWd1cmFibGU6ICEwLFxuXHRcdFx0XHRcdFx0XHRlbnVtZXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHAoaHQsIFIpLFxuXHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGdsb2JhbDogITAsXG5cdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiAhMCxcblx0XHRcdFx0XHRcdFx0Zm9yY2VkOiAhYyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7VVJMU2VhcmNoUGFyYW1zOiBodH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCFjICYmIHkoTSkpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHZhciBkdCA9IGEoRy5oYXMpLFxuXHRcdFx0XHRcdFx0eXQgPSBhKEcuc2V0KSxcblx0XHRcdFx0XHRcdGd0ID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHgodCkpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRcdHIgPSB0LmJvZHk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGIocikgPT09IFIpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoZSA9IHQuaGVhZGVycyA/IG5ldyBNKHQuaGVhZGVycykgOiBuZXcgTSgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZHQoZSwgJ2NvbnRlbnQtdHlwZScpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eXQoZSwgJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRTKHQsIHtib2R5OiBFKDAsIGsocikpLCBoZWFkZXJzOiBFKDAsIGUpfSlcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCh5KEYpICYmXG5cdFx0XHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHRcdFx0e2dsb2JhbDogITAsIGVudW1lcmFibGU6ICEwLCBkb250Q2FsbEdldFNldDogITAsIGZvcmNlZDogITB9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGZldGNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gRih0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGd0KGFyZ3VtZW50c1sxXSkgOiB7fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHkoVSkpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR2YXIgbXQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZCh0aGlzLCBEKSwgbmV3IFUodCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBndChhcmd1bWVudHNbMV0pIDoge30pO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdChELmNvbnN0cnVjdG9yID0gbXQpLFxuXHRcdFx0XHRcdFx0XHQobXQucHJvdG90eXBlID0gRCksXG5cdFx0XHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0Z2xvYmFsOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdGRvbnRDYWxsR2V0U2V0OiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdGZvcmNlZDogITAsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHR7UmVxdWVzdDogbXR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHQuZXhwb3J0cyA9IHtcblx0XHRcdFx0XHRVUkxTZWFyY2hQYXJhbXM6IGh0LFxuXHRcdFx0XHRcdGdldFN0YXRlOiBDLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHRcdDg4NTg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcigxODgwKSxcblx0XHRcdFx0XHRvID0gcig4ODQ0KSxcblx0XHRcdFx0XHRpID0gcig0MzI3KSxcblx0XHRcdFx0XHRhID0gcigxNTAwKSxcblx0XHRcdFx0XHR1ID0gVVJMU2VhcmNoUGFyYW1zLFxuXHRcdFx0XHRcdGMgPSB1LnByb3RvdHlwZSxcblx0XHRcdFx0XHRzID0gbyhjLmFwcGVuZCksXG5cdFx0XHRcdFx0ZiA9IG8oYy5kZWxldGUpLFxuXHRcdFx0XHRcdGwgPSBvKGMuZm9yRWFjaCksXG5cdFx0XHRcdFx0cCA9IG8oW10ucHVzaCksXG5cdFx0XHRcdFx0aCA9IG5ldyB1KCdhPTEmYT0yJmI9MycpO1xuXHRcdFx0XHRoLmRlbGV0ZSgnYScsIDEpLFxuXHRcdFx0XHRcdGguZGVsZXRlKCdiJywgdm9pZCAwKSxcblx0XHRcdFx0XHRoICsgJycgIT0gJ2E9MicgJiZcblx0XHRcdFx0XHRcdG4oXG5cdFx0XHRcdFx0XHRcdGMsXG5cdFx0XHRcdFx0XHRcdCdkZWxldGUnLFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdHIgPSBlIDwgMiA/IHZvaWQgMCA6IGFyZ3VtZW50c1sxXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoZSAmJiB2b2lkIDAgPT09IHIpIHJldHVybiBmKHRoaXMsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdHZhciBuID0gW107XG5cdFx0XHRcdFx0XHRcdFx0bCh0aGlzLCBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cChuLCB7a2V5OiBlLCB2YWx1ZTogdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0YShlLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBvLCB1ID0gaSh0KSwgYyA9IGkociksIGggPSAwLCB2ID0gMCwgZCA9ICExLCB5ID0gbi5sZW5ndGg7IGggPCB5OyApXG5cdFx0XHRcdFx0XHRcdFx0XHQobyA9IG5baCsrXSksIGQgfHwgby5rZXkgPT09IHUgPyAoKGQgPSAhMCksIGYodGhpcywgby5rZXkpKSA6IHYrKztcblx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgdiA8IHk7ICkgKChvID0gblt2KytdKS5rZXkgPT09IHUgJiYgby52YWx1ZSA9PT0gYykgfHwgcyh0aGlzLCBvLmtleSwgby52YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtlbnVtZXJhYmxlOiAhMCwgdW5zYWZlOiAhMH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0MTMxODogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0dmFyIG4gPSByKDE4ODApLFxuXHRcdFx0XHRcdG8gPSByKDg4NDQpLFxuXHRcdFx0XHRcdGkgPSByKDQzMjcpLFxuXHRcdFx0XHRcdGEgPSByKDE1MDApLFxuXHRcdFx0XHRcdHUgPSBVUkxTZWFyY2hQYXJhbXMsXG5cdFx0XHRcdFx0YyA9IHUucHJvdG90eXBlLFxuXHRcdFx0XHRcdHMgPSBvKGMuZ2V0QWxsKSxcblx0XHRcdFx0XHRmID0gbyhjLmhhcyksXG5cdFx0XHRcdFx0bCA9IG5ldyB1KCdhPTEnKTtcblx0XHRcdFx0KCFsLmhhcygnYScsIDIpICYmIGwuaGFzKCdhJywgdm9pZCAwKSkgfHxcblx0XHRcdFx0XHRuKFxuXHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdCdoYXMnLFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHIgPSBlIDwgMiA/IHZvaWQgMCA6IGFyZ3VtZW50c1sxXTtcblx0XHRcdFx0XHRcdFx0aWYgKGUgJiYgdm9pZCAwID09PSByKSByZXR1cm4gZih0aGlzLCB0KTtcblx0XHRcdFx0XHRcdFx0dmFyIG4gPSBzKHRoaXMsIHQpO1xuXHRcdFx0XHRcdFx0XHRhKGUsIDEpO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBvID0gaShyKSwgdSA9IDA7IHUgPCBuLmxlbmd0aDsgKSBpZiAoblt1KytdID09PSBvKSByZXR1cm4gITA7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAhMTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7ZW51bWVyYWJsZTogITAsIHVuc2FmZTogITB9XG5cdFx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQ5MzA3OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRyKDI2MjUpO1xuXHRcdFx0fSxcblx0XHRcdDMyMjg6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHZhciBuID0gcig3Njk3KSxcblx0XHRcdFx0XHRvID0gcig4ODQ0KSxcblx0XHRcdFx0XHRpID0gcigyMTQ4KSxcblx0XHRcdFx0XHRhID0gVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZSxcblx0XHRcdFx0XHR1ID0gbyhhLmZvckVhY2gpO1xuXHRcdFx0XHRuICYmXG5cdFx0XHRcdFx0ISgnc2l6ZScgaW4gYSkgJiZcblx0XHRcdFx0XHRpKGEsICdzaXplJywge1xuXHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gMDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHR1KHRoaXMsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHQrKztcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdGVudW1lcmFibGU6ICEwLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdDkzOTE6IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdHIoMTY5NCk7XG5cdFx0XHRcdHZhciBuLFxuXHRcdFx0XHRcdG8gPSByKDk5ODkpLFxuXHRcdFx0XHRcdGkgPSByKDc2OTcpLFxuXHRcdFx0XHRcdGEgPSByKDY4MzcpLFxuXHRcdFx0XHRcdHUgPSByKDkwMzcpLFxuXHRcdFx0XHRcdGMgPSByKDQwNzEpLFxuXHRcdFx0XHRcdHMgPSByKDg4NDQpLFxuXHRcdFx0XHRcdGYgPSByKDE4ODApLFxuXHRcdFx0XHRcdGwgPSByKDIxNDgpLFxuXHRcdFx0XHRcdHAgPSByKDc2NyksXG5cdFx0XHRcdFx0aCA9IHIoNjgxMiksXG5cdFx0XHRcdFx0diA9IHIoNTM5NCksXG5cdFx0XHRcdFx0ZCA9IHIoMTA1NSksXG5cdFx0XHRcdFx0eSA9IHIoOTAxNSksXG5cdFx0XHRcdFx0ZyA9IHIoNzMwKS5jb2RlQXQsXG5cdFx0XHRcdFx0bSA9IHIoNjQzMCksXG5cdFx0XHRcdFx0YiA9IHIoNDMyNyksXG5cdFx0XHRcdFx0dyA9IHIoNTk5NyksXG5cdFx0XHRcdFx0eCA9IHIoMTUwMCksXG5cdFx0XHRcdFx0ayA9IHIoMjYyNSksXG5cdFx0XHRcdFx0UyA9IHIoNjE4KSxcblx0XHRcdFx0XHRFID0gUy5zZXQsXG5cdFx0XHRcdFx0TyA9IFMuZ2V0dGVyRm9yKCdVUkwnKSxcblx0XHRcdFx0XHRQID0gay5VUkxTZWFyY2hQYXJhbXMsXG5cdFx0XHRcdFx0aiA9IGsuZ2V0U3RhdGUsXG5cdFx0XHRcdFx0TCA9IHUuVVJMLFxuXHRcdFx0XHRcdF8gPSB1LlR5cGVFcnJvcixcblx0XHRcdFx0XHRJID0gdS5wYXJzZUludCxcblx0XHRcdFx0XHRUID0gTWF0aC5mbG9vcixcblx0XHRcdFx0XHRSID0gTWF0aC5wb3csXG5cdFx0XHRcdFx0JCA9IHMoJycuY2hhckF0KSxcblx0XHRcdFx0XHROID0gcygvLi8uZXhlYyksXG5cdFx0XHRcdFx0QyA9IHMoW10uam9pbiksXG5cdFx0XHRcdFx0QSA9IHMoKDEpLnRvU3RyaW5nKSxcblx0XHRcdFx0XHRXID0gcyhbXS5wb3ApLFxuXHRcdFx0XHRcdEIgPSBzKFtdLnB1c2gpLFxuXHRcdFx0XHRcdEYgPSBzKCcnLnJlcGxhY2UpLFxuXHRcdFx0XHRcdFUgPSBzKFtdLnNoaWZ0KSxcblx0XHRcdFx0XHRNID0gcygnJy5zcGxpdCksXG5cdFx0XHRcdFx0RCA9IHMoJycuc2xpY2UpLFxuXHRcdFx0XHRcdEcgPSBzKCcnLnRvTG93ZXJDYXNlKSxcblx0XHRcdFx0XHRxID0gcyhbXS51bnNoaWZ0KSxcblx0XHRcdFx0XHRRID0gJ0ludmFsaWQgc2NoZW1lJyxcblx0XHRcdFx0XHRIID0gJ0ludmFsaWQgaG9zdCcsXG5cdFx0XHRcdFx0eiA9ICdJbnZhbGlkIHBvcnQnLFxuXHRcdFx0XHRcdFkgPSAvW2Etel0vaSxcblx0XHRcdFx0XHRWID0gL1tcXGQrLS5hLXpdL2ksXG5cdFx0XHRcdFx0SiA9IC9cXGQvLFxuXHRcdFx0XHRcdEsgPSAvXjB4L2ksXG5cdFx0XHRcdFx0WCA9IC9eWzAtN10rJC8sXG5cdFx0XHRcdFx0WiA9IC9eXFxkKyQvLFxuXHRcdFx0XHRcdHR0ID0gL15bXFxkYS1mXSskL2ksXG5cdFx0XHRcdFx0ZXQgPSAvW1xcMFxcdFxcblxcciAjJS86PD4/QFtcXFxcXFxdXnxdLyxcblx0XHRcdFx0XHRydCA9IC9bXFwwXFx0XFxuXFxyICMvOjw+P0BbXFxcXFxcXV58XS8sXG5cdFx0XHRcdFx0bnQgPSAvXltcXHUwMDAwLVxcdTAwMjBdKy8sXG5cdFx0XHRcdFx0b3QgPSAvKF58W15cXHUwMDAwLVxcdTAwMjBdKVtcXHUwMDAwLVxcdTAwMjBdKyQvLFxuXHRcdFx0XHRcdGl0ID0gL1tcXHRcXG5cXHJdL2csXG5cdFx0XHRcdFx0YXQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUsIHIsIG4sIG87XG5cdFx0XHRcdFx0XHRpZiAoJ251bWJlcicgPT0gdHlwZW9mIHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yIChlID0gW10sIHIgPSAwOyByIDwgNDsgcisrKSBxKGUsIHQgJSAyNTYpLCAodCA9IFQodCAvIDI1NikpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQyhlLCAnLicpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCdvYmplY3QnID09IHR5cGVvZiB0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdFx0ZSA9ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0biA9IChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gbnVsbCwgciA9IDEsIG4gPSBudWxsLCBvID0gMCwgaSA9IDA7IGkgPCA4OyBpKyspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0MCAhPT0gdFtpXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAobyA+IHIgJiYgKChlID0gbiksIChyID0gbykpLCAobiA9IG51bGwpLCAobyA9IDApKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAobnVsbCA9PT0gbiAmJiAobiA9IGkpLCArK28pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbyA+IHIgJiYgKChlID0gbiksIChyID0gbykpLCBlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSkodCksXG5cdFx0XHRcdFx0XHRcdFx0XHRyID0gMDtcblx0XHRcdFx0XHRcdFx0XHRyIDwgODtcblx0XHRcdFx0XHRcdFx0XHRyKytcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdChvICYmIDAgPT09IHRbcl0pIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQobyAmJiAobyA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHRcdG4gPT09IHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoKGUgKz0gciA/ICc6JyA6ICc6OicpLCAobyA9ICEwKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAoKGUgKz0gQSh0W3JdLCAxNikpLCByIDwgNyAmJiAoZSArPSAnOicpKSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAnWycgKyBlICsgJ10nO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR1dCA9IHt9LFxuXHRcdFx0XHRcdGN0ID0gdih7fSwgdXQsIHsnICc6IDEsICdcIic6IDEsICc8JzogMSwgJz4nOiAxLCAnYCc6IDF9KSxcblx0XHRcdFx0XHRzdCA9IHYoe30sIGN0LCB7JyMnOiAxLCAnPyc6IDEsICd7JzogMSwgJ30nOiAxfSksXG5cdFx0XHRcdFx0ZnQgPSB2KHt9LCBzdCwgeycvJzogMSwgJzonOiAxLCAnOyc6IDEsICc9JzogMSwgJ0AnOiAxLCAnWyc6IDEsICdcXFxcJzogMSwgJ10nOiAxLCAnXic6IDEsICd8JzogMX0pLFxuXHRcdFx0XHRcdGx0ID0gZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdHZhciByID0gZyh0LCAwKTtcblx0XHRcdFx0XHRcdHJldHVybiByID4gMzIgJiYgciA8IDEyNyAmJiAhaChlLCB0KSA/IHQgOiBlbmNvZGVVUklDb21wb25lbnQodCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwdCA9IHtcblx0XHRcdFx0XHRcdGZ0cDogMjEsXG5cdFx0XHRcdFx0XHRmaWxlOiBudWxsLFxuXHRcdFx0XHRcdFx0aHR0cDogODAsXG5cdFx0XHRcdFx0XHRodHRwczogNDQzLFxuXHRcdFx0XHRcdFx0d3M6IDgwLFxuXHRcdFx0XHRcdFx0d3NzOiA0NDMsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRodCA9IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHR2YXIgcjtcblx0XHRcdFx0XHRcdHJldHVybiAyID09PSB0Lmxlbmd0aCAmJiBOKFksICQodCwgMCkpICYmICgnOicgPT09IChyID0gJCh0LCAxKSkgfHwgKCFlICYmICd8JyA9PT0gcikpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dnQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGU7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHR0Lmxlbmd0aCA+IDEgJiZcblx0XHRcdFx0XHRcdFx0aHQoRCh0LCAwLCAyKSkgJiZcblx0XHRcdFx0XHRcdFx0KDIgPT09IHQubGVuZ3RoIHx8ICcvJyA9PT0gKGUgPSAkKHQsIDIpKSB8fCAnXFxcXCcgPT09IGUgfHwgJz8nID09PSBlIHx8ICcjJyA9PT0gZSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRkdCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJy4nID09PSB0IHx8ICclMmUnID09PSBHKHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0eXQgPSB7fSxcblx0XHRcdFx0XHRndCA9IHt9LFxuXHRcdFx0XHRcdG10ID0ge30sXG5cdFx0XHRcdFx0YnQgPSB7fSxcblx0XHRcdFx0XHR3dCA9IHt9LFxuXHRcdFx0XHRcdHh0ID0ge30sXG5cdFx0XHRcdFx0a3QgPSB7fSxcblx0XHRcdFx0XHRTdCA9IHt9LFxuXHRcdFx0XHRcdEV0ID0ge30sXG5cdFx0XHRcdFx0T3QgPSB7fSxcblx0XHRcdFx0XHRQdCA9IHt9LFxuXHRcdFx0XHRcdGp0ID0ge30sXG5cdFx0XHRcdFx0THQgPSB7fSxcblx0XHRcdFx0XHRfdCA9IHt9LFxuXHRcdFx0XHRcdEl0ID0ge30sXG5cdFx0XHRcdFx0VHQgPSB7fSxcblx0XHRcdFx0XHRSdCA9IHt9LFxuXHRcdFx0XHRcdCR0ID0ge30sXG5cdFx0XHRcdFx0TnQgPSB7fSxcblx0XHRcdFx0XHRDdCA9IHt9LFxuXHRcdFx0XHRcdEF0ID0ge30sXG5cdFx0XHRcdFx0V3QgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0dmFyIG4sXG5cdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0XHRcdGEgPSBiKHQpO1xuXHRcdFx0XHRcdFx0aWYgKGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKChvID0gdGhpcy5wYXJzZShhKSkpIHRocm93IG5ldyBfKG8pO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNlYXJjaFBhcmFtcyA9IG51bGw7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpZiAoKHZvaWQgMCAhPT0gciAmJiAobiA9IG5ldyBXdChyLCAhMCkpLCAobyA9IHRoaXMucGFyc2UoYSwgbnVsbCwgbikpKSkgdGhyb3cgbmV3IF8obyk7XG5cdFx0XHRcdFx0XHRcdChpID0gaihuZXcgUCgpKSkuYmluZFVSTCh0aGlzKSwgKHRoaXMuc2VhcmNoUGFyYW1zID0gaSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0V3QucHJvdG90eXBlID0ge1xuXHRcdFx0XHRcdHR5cGU6ICdVUkwnLFxuXHRcdFx0XHRcdHBhcnNlOiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0dmFyIG8sXG5cdFx0XHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdHUsXG5cdFx0XHRcdFx0XHRcdGMsXG5cdFx0XHRcdFx0XHRcdHMgPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHRmID0gZSB8fCB5dCxcblx0XHRcdFx0XHRcdFx0bCA9IDAsXG5cdFx0XHRcdFx0XHRcdHAgPSAnJyxcblx0XHRcdFx0XHRcdFx0diA9ICExLFxuXHRcdFx0XHRcdFx0XHRnID0gITEsXG5cdFx0XHRcdFx0XHRcdG0gPSAhMTtcblx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdHQgPSBiKHQpLFxuXHRcdFx0XHRcdFx0XHRcdGUgfHxcblx0XHRcdFx0XHRcdFx0XHRcdCgocy5zY2hlbWUgPSAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHQocy51c2VybmFtZSA9ICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChzLnBhc3N3b3JkID0gJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHMuaG9zdCA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHMucG9ydCA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHMucGF0aCA9IFtdKSxcblx0XHRcdFx0XHRcdFx0XHRcdChzLnF1ZXJ5ID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0XHQocy5mcmFnbWVudCA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHMuY2Fubm90QmVBQmFzZVVSTCA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHRcdCh0ID0gRih0LCBudCwgJycpKSxcblx0XHRcdFx0XHRcdFx0XHRcdCh0ID0gRih0LCBvdCwgJyQxJykpKSxcblx0XHRcdFx0XHRcdFx0XHR0ID0gRih0LCBpdCwgJycpLFxuXHRcdFx0XHRcdFx0XHRcdG8gPSBkKHQpO1xuXHRcdFx0XHRcdFx0XHRsIDw9IG8ubGVuZ3RoO1xuXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0c3dpdGNoICgoKGkgPSBvW2xdKSwgZikpIHtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIHl0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFpIHx8ICFOKFksIGkpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChlKSByZXR1cm4gUTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9IG10O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdChwICs9IEcoaSkpLCAoZiA9IGd0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgZ3Q6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaSAmJiAoTihWLCBpKSB8fCAnKycgPT09IGkgfHwgJy0nID09PSBpIHx8ICcuJyA9PT0gaSkpIHAgKz0gRyhpKTtcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJzonICE9PSBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUpIHJldHVybiBRO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChwID0gJycpLCAoZiA9IG10KSwgKGwgPSAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmlzU3BlY2lhbCgpICE9PSBoKHB0LCBwKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KCdmaWxlJyA9PT0gcCAmJiAocy5pbmNsdWRlc0NyZWRlbnRpYWxzKCkgfHwgbnVsbCAhPT0gcy5wb3J0KSkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgnZmlsZScgPT09IHMuc2NoZW1lICYmICFzLmhvc3QpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoKChzLnNjaGVtZSA9IHApLCBlKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdm9pZCAocy5pc1NwZWNpYWwoKSAmJiBwdFtzLnNjaGVtZV0gPT09IHMucG9ydCAmJiAocy5wb3J0ID0gbnVsbCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQocCA9ICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZmlsZScgPT09IHMuc2NoZW1lXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IChmID0gX3QpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHMuaXNTcGVjaWFsKCkgJiYgciAmJiByLnNjaGVtZSA9PT0gcy5zY2hlbWVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoZiA9IGJ0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHMuaXNTcGVjaWFsKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IChmID0gU3QpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnLycgPT09IG9bbCArIDFdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgoZiA9IHd0KSwgbCsrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAoKHMuY2Fubm90QmVBQmFzZVVSTCA9ICEwKSwgQihzLnBhdGgsICcnKSwgKGYgPSBOdCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBtdDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghciB8fCAoci5jYW5ub3RCZUFCYXNlVVJMICYmICcjJyAhPT0gaSkpIHJldHVybiBRO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHIuY2Fubm90QmVBQmFzZVVSTCAmJiAnIycgPT09IGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuc2NoZW1lID0gci5zY2hlbWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBhdGggPSB5KHIucGF0aCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnF1ZXJ5ID0gci5xdWVyeSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuZnJhZ21lbnQgPSAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuY2Fubm90QmVBQmFzZVVSTCA9ICEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZiA9IEF0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRmID0gJ2ZpbGUnID09PSByLnNjaGVtZSA/IF90IDogeHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIGJ0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCcvJyAhPT0gaSB8fCAnLycgIT09IG9bbCArIDFdKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSB4dDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQoZiA9IEV0KSwgbCsrO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSB3dDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgnLycgPT09IGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9IE90O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGYgPSAkdDtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgeHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoKChzLnNjaGVtZSA9IHIuc2NoZW1lKSwgaSA9PT0gbikpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChzLnVzZXJuYW1lID0gci51c2VybmFtZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucGFzc3dvcmQgPSByLnBhc3N3b3JkKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5ob3N0ID0gci5ob3N0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wb3J0ID0gci5wb3J0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXRoID0geShyLnBhdGgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5xdWVyeSA9IHIucXVlcnkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJy8nID09PSBpIHx8ICgnXFxcXCcgPT09IGkgJiYgcy5pc1NwZWNpYWwoKSkpIGYgPSBrdDtcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKCc/JyA9PT0gaSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHMudXNlcm5hbWUgPSByLnVzZXJuYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXNzd29yZCA9IHIucGFzc3dvcmQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmhvc3QgPSByLmhvc3QpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBvcnQgPSByLnBvcnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBhdGggPSB5KHIucGF0aCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnF1ZXJ5ID0gJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmID0gQ3QpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnIycgIT09IGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy51c2VybmFtZSA9IHIudXNlcm5hbWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucGFzc3dvcmQgPSByLnBhc3N3b3JkKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmhvc3QgPSByLmhvc3QpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucG9ydCA9IHIucG9ydCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXRoID0geShyLnBhdGgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHMucGF0aC5sZW5ndGgtLSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmID0gJHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChzLnVzZXJuYW1lID0gci51c2VybmFtZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucGFzc3dvcmQgPSByLnBhc3N3b3JkKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5ob3N0ID0gci5ob3N0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wb3J0ID0gci5wb3J0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXRoID0geShyLnBhdGgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5xdWVyeSA9IHIucXVlcnkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmZyYWdtZW50ID0gJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmID0gQXQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBrdDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghcy5pc1NwZWNpYWwoKSB8fCAoJy8nICE9PSBpICYmICdcXFxcJyAhPT0gaSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCcvJyAhPT0gaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnVzZXJuYW1lID0gci51c2VybmFtZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wYXNzd29yZCA9IHIucGFzc3dvcmQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuaG9zdCA9IHIuaG9zdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5wb3J0ID0gci5wb3J0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmID0gJHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSBPdDtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBmID0gRXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFN0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgoZiA9IEV0KSwgJy8nICE9PSBpIHx8ICcvJyAhPT0gJChwLCBsICsgMSkpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdGwrKztcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgRXQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJy8nICE9PSBpICYmICdcXFxcJyAhPT0gaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gT3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBPdDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgnQCcgPT09IGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0diAmJiAocCA9ICclNDAnICsgcCksICh2ID0gITApLCAoYSA9IGQocCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciB3ID0gMDsgdyA8IGEubGVuZ3RoOyB3KyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgeCA9IGFbd107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCc6JyAhPT0geCB8fCBtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgayA9IGx0KHgsIGZ0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG0gPyAocy5wYXNzd29yZCArPSBrKSA6IChzLnVzZXJuYW1lICs9IGspO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBtID0gITA7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0cCA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9PT0gbiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnLycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Jz8nID09PSBpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCcjJyA9PT0gaSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoJ1xcXFwnID09PSBpICYmIHMuaXNTcGVjaWFsKCkpXG5cdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHYgJiYgJycgPT09IHApIHJldHVybiAnSW52YWxpZCBhdXRob3JpdHknO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQobCAtPSBkKHApLmxlbmd0aCArIDEpLCAocCA9ICcnKSwgKGYgPSBQdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgcCArPSBpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBQdDpcblx0XHRcdFx0XHRcdFx0XHRjYXNlIGp0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUgJiYgJ2ZpbGUnID09PSBzLnNjaGVtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gVHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCc6JyAhPT0gaSB8fCBnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpID09PSBuIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Jy8nID09PSBpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Jz8nID09PSBpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyMnID09PSBpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KCdcXFxcJyA9PT0gaSAmJiBzLmlzU3BlY2lhbCgpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocy5pc1NwZWNpYWwoKSAmJiAnJyA9PT0gcCkgcmV0dXJuIEg7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUgJiYgJycgPT09IHAgJiYgKHMuaW5jbHVkZXNDcmVkZW50aWFscygpIHx8IG51bGwgIT09IHMucG9ydCkpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoKHUgPSBzLnBhcnNlSG9zdChwKSkpIHJldHVybiB1O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgoKHAgPSAnJyksIChmID0gUnQpLCBlKSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdbJyA9PT0gaSA/IChnID0gITApIDogJ10nID09PSBpICYmIChnID0gITEpLCAocCArPSBpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnJyA9PT0gcCkgcmV0dXJuIEg7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgodSA9IHMucGFyc2VIb3N0KHApKSkgcmV0dXJuIHU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgoKHAgPSAnJyksIChmID0gTHQpLCBlID09PSBqdCkpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgTHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIU4oSiwgaSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkgPT09IG4gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnLycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnPycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnIycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoJ1xcXFwnID09PSBpICYmIHMuaXNTcGVjaWFsKCkpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJycgIT09IHApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBTID0gSShwLCAxMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoUyA+IDY1NTM1KSByZXR1cm4gejtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnBvcnQgPSBzLmlzU3BlY2lhbCgpICYmIFMgPT09IHB0W3Muc2NoZW1lXSA/IG51bGwgOiBTKSwgKHAgPSAnJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChlKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9IFJ0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB6O1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cCArPSBpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBfdDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgoKHMuc2NoZW1lID0gJ2ZpbGUnKSwgJy8nID09PSBpIHx8ICdcXFxcJyA9PT0gaSkpIGYgPSBJdDtcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXIgfHwgJ2ZpbGUnICE9PSByLnNjaGVtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSAkdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIG46XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5ob3N0ID0gci5ob3N0KSwgKHMucGF0aCA9IHkoci5wYXRoKSksIChzLnF1ZXJ5ID0gci5xdWVyeSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICc/Jzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmhvc3QgPSByLmhvc3QpLCAocy5wYXRoID0geShyLnBhdGgpKSwgKHMucXVlcnkgPSAnJyksIChmID0gQ3QpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnIyc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy5ob3N0ID0gci5ob3N0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMucGF0aCA9IHkoci5wYXRoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnF1ZXJ5ID0gci5xdWVyeSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmZyYWdtZW50ID0gJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZiA9IEF0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2dChDKHkobywgbCksICcnKSkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KChzLmhvc3QgPSByLmhvc3QpLCAocy5wYXRoID0geShyLnBhdGgpKSwgcy5zaG9ydGVuUGF0aCgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGYgPSAkdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBJdDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgnLycgPT09IGkgfHwgJ1xcXFwnID09PSBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGYgPSBUdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRyICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmaWxlJyA9PT0gci5zY2hlbWUgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0IXZ0KEMoeShvLCBsKSwgJycpKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoaHQoci5wYXRoWzBdLCAhMCkgPyBCKHMucGF0aCwgci5wYXRoWzBdKSA6IChzLmhvc3QgPSByLmhvc3QpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGYgPSAkdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFR0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGkgPT09IG4gfHwgJy8nID09PSBpIHx8ICdcXFxcJyA9PT0gaSB8fCAnPycgPT09IGkgfHwgJyMnID09PSBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghZSAmJiBodChwKSkgZiA9ICR0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmICgnJyA9PT0gcCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgoKHMuaG9zdCA9ICcnKSwgZSkpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gUnQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCh1ID0gcy5wYXJzZUhvc3QocCkpKSByZXR1cm4gdTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoKCdsb2NhbGhvc3QnID09PSBzLmhvc3QgJiYgKHMuaG9zdCA9ICcnKSwgZSkpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocCA9ICcnKSwgKGYgPSBSdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRwICs9IGk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFJ0OlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHMuaXNTcGVjaWFsKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgoZiA9ICR0KSwgJy8nICE9PSBpICYmICdcXFxcJyAhPT0gaSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChlIHx8ICc/JyAhPT0gaSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUgfHwgJyMnICE9PSBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGkgIT09IG4gJiYgKChmID0gJHQpLCAnLycgIT09IGkpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIChzLmZyYWdtZW50ID0gJycpLCAoZiA9IEF0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgKHMucXVlcnkgPSAnJyksIChmID0gQ3QpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAkdDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9PT0gbiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnLycgPT09IGkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCdcXFxcJyA9PT0gaSAmJiBzLmlzU3BlY2lhbCgpKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIWUgJiYgKCc/JyA9PT0gaSB8fCAnIycgPT09IGkpKVxuXHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoJy4uJyA9PT0gKGMgPSBHKChjID0gcCkpKSB8fCAnJTJlLicgPT09IGMgfHwgJy4lMmUnID09PSBjIHx8ICclMmUlMmUnID09PSBjXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IChzLnNob3J0ZW5QYXRoKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcvJyA9PT0gaSB8fCAoJ1xcXFwnID09PSBpICYmIHMuaXNTcGVjaWFsKCkpIHx8IEIocy5wYXRoLCAnJykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGR0KHApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gJy8nID09PSBpIHx8ICgnXFxcXCcgPT09IGkgJiYgcy5pc1NwZWNpYWwoKSkgfHwgQihzLnBhdGgsICcnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICgnZmlsZScgPT09IHMuc2NoZW1lICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhcy5wYXRoLmxlbmd0aCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aHQocCkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLmhvc3QgJiYgKHMuaG9zdCA9ICcnKSwgKHAgPSAkKHAsIDApICsgJzonKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QihzLnBhdGgsIHApKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocCA9ICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZmlsZScgPT09IHMuc2NoZW1lICYmIChpID09PSBuIHx8ICc/JyA9PT0gaSB8fCAnIycgPT09IGkpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7IHMucGF0aC5sZW5ndGggPiAxICYmICcnID09PSBzLnBhdGhbMF07ICkgVShzLnBhdGgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnPycgPT09IGlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgocy5xdWVyeSA9ICcnKSwgKGYgPSBDdCkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnIycgPT09IGkgJiYgKChzLmZyYWdtZW50ID0gJycpLCAoZiA9IEF0KSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgcCArPSBsdChpLCBzdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIE50OlxuXHRcdFx0XHRcdFx0XHRcdFx0Jz8nID09PSBpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKChzLnF1ZXJ5ID0gJycpLCAoZiA9IEN0KSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnIycgPT09IGlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgocy5mcmFnbWVudCA9ICcnKSwgKGYgPSBBdCkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBpICE9PSBuICYmIChzLnBhdGhbMF0gKz0gbHQoaSwgdXQpKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgQ3Q6XG5cdFx0XHRcdFx0XHRcdFx0XHRlIHx8ICcjJyAhPT0gaVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGkgIT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoXCInXCIgPT09IGkgJiYgcy5pc1NwZWNpYWwoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAocy5xdWVyeSArPSAnJTI3Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogKHMucXVlcnkgKz0gJyMnID09PSBpID8gJyUyMycgOiBsdChpLCB1dCkpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICgocy5mcmFnbWVudCA9ICcnKSwgKGYgPSBBdCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBBdDpcblx0XHRcdFx0XHRcdFx0XHRcdGkgIT09IG4gJiYgKHMuZnJhZ21lbnQgKz0gbHQoaSwgY3QpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRsKys7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwYXJzZUhvc3Q6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSwgciwgbjtcblx0XHRcdFx0XHRcdGlmICgnWycgPT09ICQodCwgMCkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCddJyAhPT0gJCh0LCB0Lmxlbmd0aCAtIDEpKSByZXR1cm4gSDtcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdCgoZSA9IChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGMgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHMgPSAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bCA9IDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHAgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICQodCwgbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJzonID09PSBwKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCc6JyAhPT0gJCh0LCAxKSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQobCArPSAyKSwgKGYgPSArK3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7IHAoKTsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICg4ID09PSBzKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnOicgIT09IHAoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoZSA9IHIgPSAwOyByIDwgNCAmJiBOKHR0LCBwKCkpOyApIChlID0gMTYgKiBlICsgSShwKCksIDE2KSksIGwrKywgcisrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnLicgPT09IHAoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKDAgPT09IHIpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgoKGwgLT0gciksIHMgPiA2KSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChuID0gMDsgcCgpOyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgobyA9IG51bGwpLCBuID4gMCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoISgnLicgPT09IHAoKSAmJiBuIDwgNCkpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsKys7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFOKEosIHAoKSkpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7IE4oSiwgcCgpKTsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCgoaSA9IEkocCgpLCAxMCkpLCBudWxsID09PSBvKSkgbyA9IGk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoMCA9PT0gbykgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byA9IDEwICogbyArIGk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChvID4gMjU1KSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bCsrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjW3NdID0gMjU2ICogY1tzXSArIG8pLCAoMiAhPSArK24gJiYgNCAhPT0gbikgfHwgcysrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKDQgIT09IG4pIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJzonID09PSBwKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgobCsrLCAhcCgpKSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAocCgpKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y1tzKytdID0gZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAobnVsbCAhPT0gZikgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGwrKywgKGYgPSArK3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobnVsbCAhPT0gZilcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChhID0gcyAtIGYsIHMgPSA3OyAwICE9PSBzICYmIGEgPiAwOyApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHUgPSBjW3NdKSwgKGNbcy0tXSA9IGNbZiArIGEgLSAxXSksIChjW2YgKyAtLWFdID0gdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmICg4ICE9PSBzKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYztcblx0XHRcdFx0XHRcdFx0XHR9KShEKHQsIDEsIC0xKSkpLFxuXHRcdFx0XHRcdFx0XHRcdCFlKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIEg7XG5cdFx0XHRcdFx0XHRcdHRoaXMuaG9zdCA9IGU7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuaXNTcGVjaWFsKCkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCgodCA9IG0odCkpLCBOKGV0LCB0KSkpIHJldHVybiBIO1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0KChlID0gKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cixcblx0XHRcdFx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0XHRcdFx0byxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YyA9IE0odCwgJy4nKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgoYy5sZW5ndGggJiYgJycgPT09IGNbYy5sZW5ndGggLSAxXSAmJiBjLmxlbmd0aC0tLCAoZSA9IGMubGVuZ3RoKSA+IDQpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAociA9IFtdLCBuID0gMDsgbiA8IGU7IG4rKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJycgPT09IChvID0gY1tuXSkpIHJldHVybiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KChpID0gMTApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8ubGVuZ3RoID4gMSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JzAnID09PSAkKG8sIDApICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKGkgPSBOKEssIG8pID8gMTYgOiA4KSwgKG8gPSBEKG8sIDggPT09IGkgPyAxIDogMikpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnJyA9PT0gbylcblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIU4oMTAgPT09IGkgPyBaIDogOCA9PT0gaSA/IFggOiB0dCwgbykpIHJldHVybiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSBJKG8sIGkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdEIociwgYSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKG4gPSAwOyBuIDwgZTsgbisrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoKChhID0gcltuXSksIG4gPT09IGUgLSAxKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhID49IFIoMjU2LCA1IC0gZSkpIHJldHVybiBudWxsO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGEgPiAyNTUpIHJldHVybiBudWxsO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh1ID0gVyhyKSwgbiA9IDA7IG4gPCByLmxlbmd0aDsgbisrKSB1ICs9IHJbbl0gKiBSKDI1NiwgMyAtIG4pO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHU7XG5cdFx0XHRcdFx0XHRcdFx0fSkodCkpLFxuXHRcdFx0XHRcdFx0XHRcdG51bGwgPT09IGUpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gSDtcblx0XHRcdFx0XHRcdFx0dGhpcy5ob3N0ID0gZTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGlmIChOKHJ0LCB0KSkgcmV0dXJuIEg7XG5cdFx0XHRcdFx0XHRcdGZvciAoZSA9ICcnLCByID0gZCh0KSwgbiA9IDA7IG4gPCByLmxlbmd0aDsgbisrKSBlICs9IGx0KHJbbl0sIHV0KTtcblx0XHRcdFx0XHRcdFx0dGhpcy5ob3N0ID0gZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICF0aGlzLmhvc3QgfHwgdGhpcy5jYW5ub3RCZUFCYXNlVVJMIHx8ICdmaWxlJyA9PT0gdGhpcy5zY2hlbWU7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRpbmNsdWRlc0NyZWRlbnRpYWxzOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJycgIT09IHRoaXMudXNlcm5hbWUgfHwgJycgIT09IHRoaXMucGFzc3dvcmQ7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRpc1NwZWNpYWw6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiBoKHB0LCB0aGlzLnNjaGVtZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzaG9ydGVuUGF0aDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnBhdGgsXG5cdFx0XHRcdFx0XHRcdGUgPSB0Lmxlbmd0aDtcblx0XHRcdFx0XHRcdCFlIHx8ICgnZmlsZScgPT09IHRoaXMuc2NoZW1lICYmIDEgPT09IGUgJiYgaHQodFswXSwgITApKSB8fCB0Lmxlbmd0aC0tO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2VyaWFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdGUgPSB0LnNjaGVtZSxcblx0XHRcdFx0XHRcdFx0ciA9IHQudXNlcm5hbWUsXG5cdFx0XHRcdFx0XHRcdG4gPSB0LnBhc3N3b3JkLFxuXHRcdFx0XHRcdFx0XHRvID0gdC5ob3N0LFxuXHRcdFx0XHRcdFx0XHRpID0gdC5wb3J0LFxuXHRcdFx0XHRcdFx0XHRhID0gdC5wYXRoLFxuXHRcdFx0XHRcdFx0XHR1ID0gdC5xdWVyeSxcblx0XHRcdFx0XHRcdFx0YyA9IHQuZnJhZ21lbnQsXG5cdFx0XHRcdFx0XHRcdHMgPSBlICsgJzonO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0bnVsbCAhPT0gb1xuXHRcdFx0XHRcdFx0XHRcdD8gKChzICs9ICcvLycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0dC5pbmNsdWRlc0NyZWRlbnRpYWxzKCkgJiYgKHMgKz0gciArIChuID8gJzonICsgbiA6ICcnKSArICdAJyksXG5cdFx0XHRcdFx0XHRcdFx0XHQocyArPSBhdChvKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsICE9PSBpICYmIChzICs9ICc6JyArIGkpKVxuXHRcdFx0XHRcdFx0XHRcdDogJ2ZpbGUnID09PSBlICYmIChzICs9ICcvLycpLFxuXHRcdFx0XHRcdFx0XHQocyArPSB0LmNhbm5vdEJlQUJhc2VVUkwgPyBhWzBdIDogYS5sZW5ndGggPyAnLycgKyBDKGEsICcvJykgOiAnJyksXG5cdFx0XHRcdFx0XHRcdG51bGwgIT09IHUgJiYgKHMgKz0gJz8nICsgdSksXG5cdFx0XHRcdFx0XHRcdG51bGwgIT09IGMgJiYgKHMgKz0gJyMnICsgYyksXG5cdFx0XHRcdFx0XHRcdHNcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRIcmVmOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSB0aGlzLnBhcnNlKHQpO1xuXHRcdFx0XHRcdFx0aWYgKGUpIHRocm93IG5ldyBfKGUpO1xuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2hQYXJhbXMudXBkYXRlKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRPcmlnaW46IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy5zY2hlbWUsXG5cdFx0XHRcdFx0XHRcdGUgPSB0aGlzLnBvcnQ7XG5cdFx0XHRcdFx0XHRpZiAoJ2Jsb2InID09PSB0KVxuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgQnQodC5wYXRoWzBdKS5vcmlnaW47XG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ251bGwnO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ2ZpbGUnICE9PSB0ICYmIHRoaXMuaXNTcGVjaWFsKClcblx0XHRcdFx0XHRcdFx0PyB0ICsgJzovLycgKyBhdCh0aGlzLmhvc3QpICsgKG51bGwgIT09IGUgPyAnOicgKyBlIDogJycpXG5cdFx0XHRcdFx0XHRcdDogJ251bGwnO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0UHJvdG9jb2w6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnNjaGVtZSArICc6Jztcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHNldFByb3RvY29sOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dGhpcy5wYXJzZShiKHQpICsgJzonLCB5dCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRVc2VybmFtZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMudXNlcm5hbWU7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRVc2VybmFtZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gZChiKHQpKTtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnVzZXJuYW1lID0gJyc7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykgdGhpcy51c2VybmFtZSArPSBsdChlW3JdLCBmdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRQYXNzd29yZDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMucGFzc3dvcmQ7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRQYXNzd29yZDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gZChiKHQpKTtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBhc3N3b3JkID0gJyc7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykgdGhpcy5wYXNzd29yZCArPSBsdChlW3JdLCBmdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRIb3N0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMuaG9zdCxcblx0XHRcdFx0XHRcdFx0ZSA9IHRoaXMucG9ydDtcblx0XHRcdFx0XHRcdHJldHVybiBudWxsID09PSB0ID8gJycgOiBudWxsID09PSBlID8gYXQodCkgOiBhdCh0KSArICc6JyArIGU7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRIb3N0OiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dGhpcy5jYW5ub3RCZUFCYXNlVVJMIHx8IHRoaXMucGFyc2UodCwgUHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0SG9zdG5hbWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy5ob3N0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIG51bGwgPT09IHQgPyAnJyA6IGF0KHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2V0SG9zdG5hbWU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNhbm5vdEJlQUJhc2VVUkwgfHwgdGhpcy5wYXJzZSh0LCBqdCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRQb3J0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMucG9ydDtcblx0XHRcdFx0XHRcdHJldHVybiBudWxsID09PSB0ID8gJycgOiBiKHQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2V0UG9ydDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KCkgfHxcblx0XHRcdFx0XHRcdFx0KCcnID09PSAodCA9IGIodCkpID8gKHRoaXMucG9ydCA9IG51bGwpIDogdGhpcy5wYXJzZSh0LCBMdCkpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0UGF0aG5hbWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy5wYXRoO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuY2Fubm90QmVBQmFzZVVSTCA/IHRbMF0gOiB0Lmxlbmd0aCA/ICcvJyArIEModCwgJy8nKSA6ICcnO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c2V0UGF0aG5hbWU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNhbm5vdEJlQUJhc2VVUkwgfHwgKCh0aGlzLnBhdGggPSBbXSksIHRoaXMucGFyc2UodCwgUnQpKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldFNlYXJjaDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnF1ZXJ5O1xuXHRcdFx0XHRcdFx0cmV0dXJuIHQgPyAnPycgKyB0IDogJyc7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRTZWFyY2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHQnJyA9PT0gKHQgPSBiKHQpKVxuXHRcdFx0XHRcdFx0XHQ/ICh0aGlzLnF1ZXJ5ID0gbnVsbClcblx0XHRcdFx0XHRcdFx0OiAoJz8nID09PSAkKHQsIDApICYmICh0ID0gRCh0LCAxKSksICh0aGlzLnF1ZXJ5ID0gJycpLCB0aGlzLnBhcnNlKHQsIEN0KSksXG5cdFx0XHRcdFx0XHRcdHRoaXMuc2VhcmNoUGFyYW1zLnVwZGF0ZSgpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0U2VhcmNoUGFyYW1zOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5zZWFyY2hQYXJhbXMuZmFjYWRlO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0SGFzaDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLmZyYWdtZW50O1xuXHRcdFx0XHRcdFx0cmV0dXJuIHQgPyAnIycgKyB0IDogJyc7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRIYXNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0JycgIT09ICh0ID0gYih0KSlcblx0XHRcdFx0XHRcdFx0PyAoJyMnID09PSAkKHQsIDApICYmICh0ID0gRCh0LCAxKSksICh0aGlzLmZyYWdtZW50ID0gJycpLCB0aGlzLnBhcnNlKHQsIEF0KSlcblx0XHRcdFx0XHRcdFx0OiAodGhpcy5mcmFnbWVudCA9IG51bGwpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dXBkYXRlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnF1ZXJ5ID0gdGhpcy5zZWFyY2hQYXJhbXMuc2VyaWFsaXplKCkgfHwgbnVsbDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9O1xuXHRcdFx0XHR2YXIgQnQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBwKHRoaXMsIEZ0KSxcblx0XHRcdFx0XHRcdFx0ciA9IHgoYXJndW1lbnRzLmxlbmd0aCwgMSkgPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwLFxuXHRcdFx0XHRcdFx0XHRuID0gRShlLCBuZXcgV3QodCwgITEsIHIpKTtcblx0XHRcdFx0XHRcdGkgfHxcblx0XHRcdFx0XHRcdFx0KChlLmhyZWYgPSBuLnNlcmlhbGl6ZSgpKSxcblx0XHRcdFx0XHRcdFx0KGUub3JpZ2luID0gbi5nZXRPcmlnaW4oKSksXG5cdFx0XHRcdFx0XHRcdChlLnByb3RvY29sID0gbi5nZXRQcm90b2NvbCgpKSxcblx0XHRcdFx0XHRcdFx0KGUudXNlcm5hbWUgPSBuLmdldFVzZXJuYW1lKCkpLFxuXHRcdFx0XHRcdFx0XHQoZS5wYXNzd29yZCA9IG4uZ2V0UGFzc3dvcmQoKSksXG5cdFx0XHRcdFx0XHRcdChlLmhvc3QgPSBuLmdldEhvc3QoKSksXG5cdFx0XHRcdFx0XHRcdChlLmhvc3RuYW1lID0gbi5nZXRIb3N0bmFtZSgpKSxcblx0XHRcdFx0XHRcdFx0KGUucG9ydCA9IG4uZ2V0UG9ydCgpKSxcblx0XHRcdFx0XHRcdFx0KGUucGF0aG5hbWUgPSBuLmdldFBhdGhuYW1lKCkpLFxuXHRcdFx0XHRcdFx0XHQoZS5zZWFyY2ggPSBuLmdldFNlYXJjaCgpKSxcblx0XHRcdFx0XHRcdFx0KGUuc2VhcmNoUGFyYW1zID0gbi5nZXRTZWFyY2hQYXJhbXMoKSksXG5cdFx0XHRcdFx0XHRcdChlLmhhc2ggPSBuLmdldEhhc2goKSkpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0RnQgPSBCdC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0VXQgPSBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIE8odGhpcylbdF0oKTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0c2V0OlxuXHRcdFx0XHRcdFx0XHRcdGUgJiZcblx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIE8odGhpcylbZV0odCk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0ZW51bWVyYWJsZTogITAsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQoaSAmJlxuXHRcdFx0XHRcdFx0KGwoRnQsICdocmVmJywgVXQoJ3NlcmlhbGl6ZScsICdzZXRIcmVmJykpLFxuXHRcdFx0XHRcdFx0bChGdCwgJ29yaWdpbicsIFV0KCdnZXRPcmlnaW4nKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAncHJvdG9jb2wnLCBVdCgnZ2V0UHJvdG9jb2wnLCAnc2V0UHJvdG9jb2wnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAndXNlcm5hbWUnLCBVdCgnZ2V0VXNlcm5hbWUnLCAnc2V0VXNlcm5hbWUnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAncGFzc3dvcmQnLCBVdCgnZ2V0UGFzc3dvcmQnLCAnc2V0UGFzc3dvcmQnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAnaG9zdCcsIFV0KCdnZXRIb3N0JywgJ3NldEhvc3QnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAnaG9zdG5hbWUnLCBVdCgnZ2V0SG9zdG5hbWUnLCAnc2V0SG9zdG5hbWUnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAncG9ydCcsIFV0KCdnZXRQb3J0JywgJ3NldFBvcnQnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAncGF0aG5hbWUnLCBVdCgnZ2V0UGF0aG5hbWUnLCAnc2V0UGF0aG5hbWUnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAnc2VhcmNoJywgVXQoJ2dldFNlYXJjaCcsICdzZXRTZWFyY2gnKSksXG5cdFx0XHRcdFx0XHRsKEZ0LCAnc2VhcmNoUGFyYW1zJywgVXQoJ2dldFNlYXJjaFBhcmFtcycpKSxcblx0XHRcdFx0XHRcdGwoRnQsICdoYXNoJywgVXQoJ2dldEhhc2gnLCAnc2V0SGFzaCcpKSksXG5cdFx0XHRcdFx0Zihcblx0XHRcdFx0XHRcdEZ0LFxuXHRcdFx0XHRcdFx0J3RvSlNPTicsXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBPKHRoaXMpLnNlcmlhbGl6ZSgpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtlbnVtZXJhYmxlOiAhMH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGYoXG5cdFx0XHRcdFx0XHRGdCxcblx0XHRcdFx0XHRcdCd0b1N0cmluZycsXG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBPKHRoaXMpLnNlcmlhbGl6ZSgpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtlbnVtZXJhYmxlOiAhMH1cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdEwpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHZhciBNdCA9IEwuY3JlYXRlT2JqZWN0VVJMLFxuXHRcdFx0XHRcdFx0RHQgPSBMLnJldm9rZU9iamVjdFVSTDtcblx0XHRcdFx0XHRNdCAmJiBmKEJ0LCAnY3JlYXRlT2JqZWN0VVJMJywgYyhNdCwgTCkpLCBEdCAmJiBmKEJ0LCAncmV2b2tlT2JqZWN0VVJMJywgYyhEdCwgTCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHcoQnQsICdVUkwnKSxcblx0XHRcdFx0XHRvKFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRnbG9iYWw6ICEwLFxuXHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogITAsXG5cdFx0XHRcdFx0XHRcdGZvcmNlZDogIWEsXG5cdFx0XHRcdFx0XHRcdHNoYW06ICFpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtVUkw6IEJ0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0ODczMDogZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0cig5MzkxKTtcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRlID0ge307XG5cdGZ1bmN0aW9uIHIobikge1xuXHRcdHZhciBvID0gZVtuXTtcblx0XHRpZiAodm9pZCAwICE9PSBvKSByZXR1cm4gby5leHBvcnRzO1xuXHRcdHZhciBpID0gKGVbbl0gPSB7XG5cdFx0XHRleHBvcnRzOiB7fSxcblx0XHR9KTtcblx0XHRyZXR1cm4gdFtuXS5jYWxsKGkuZXhwb3J0cywgaSwgaS5leHBvcnRzLCByKSwgaS5leHBvcnRzO1xuXHR9XG5cdChyLmcgPSAoZnVuY3Rpb24gKCkge1xuXHRcdGlmICgnb2JqZWN0JyA9PSB0eXBlb2YgZ2xvYmFsVGhpcykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdGlmICgnb2JqZWN0JyA9PSB0eXBlb2Ygd2luZG93KSByZXR1cm4gd2luZG93O1xuXHRcdH1cblx0fSkoKSksXG5cdFx0KGZ1bmN0aW9uICgpIHtcblx0XHRcdHIoNjgwMSksXG5cdFx0XHRcdHIoMzg0MyksXG5cdFx0XHRcdHIoNDMzOCksXG5cdFx0XHRcdHIoNjIwMyksXG5cdFx0XHRcdHIoNDA0MyksXG5cdFx0XHRcdHIoNzI2NyksXG5cdFx0XHRcdHIoOTM1OCksXG5cdFx0XHRcdHIoNjkxKSxcblx0XHRcdFx0cigyMjgpLFxuXHRcdFx0XHRyKDM5NjQpLFxuXHRcdFx0XHRyKDk3NDkpLFxuXHRcdFx0XHRyKDY1NDQpLFxuXHRcdFx0XHRyKDQyNTQpLFxuXHRcdFx0XHRyKDc1MiksXG5cdFx0XHRcdHIoMTY5NCksXG5cdFx0XHRcdHIoNjI2NSksXG5cdFx0XHRcdHIoODM3MyksXG5cdFx0XHRcdHIoNjc5MyksXG5cdFx0XHRcdHIoNzYyOSksXG5cdFx0XHRcdHIoNzUwOSksXG5cdFx0XHRcdHIoODA1MiksXG5cdFx0XHRcdHIoMTA1NyksXG5cdFx0XHRcdHIoNTYwKSxcblx0XHRcdFx0cig5NjY3KSxcblx0XHRcdFx0cig3NjAyKSxcblx0XHRcdFx0cig1KSxcblx0XHRcdFx0cig3NTIyKSxcblx0XHRcdFx0cig0Mjg0KSxcblx0XHRcdFx0cig5NzMwKSxcblx0XHRcdFx0cig5MzczKSxcblx0XHRcdFx0cig5OTAzKSxcblx0XHRcdFx0cig5Mjg4KSxcblx0XHRcdFx0cig4MDc3KSxcblx0XHRcdFx0cig2MjM3KSxcblx0XHRcdFx0cigzNDc2KSxcblx0XHRcdFx0cigxOTE5KSxcblx0XHRcdFx0cig5NDc0KSxcblx0XHRcdFx0cig4NzMwKSxcblx0XHRcdFx0cig5MzA3KSxcblx0XHRcdFx0cig4ODU4KSxcblx0XHRcdFx0cigxMzE4KSxcblx0XHRcdFx0cigzMjI4KSxcblx0XHRcdFx0cig2NTg1KSxcblx0XHRcdFx0cigyODI2KSxcblx0XHRcdFx0cig3MDQ5KSxcblx0XHRcdFx0cig3NDA5KTtcblx0XHRcdGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdCh0ID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0dChlKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gZSh0LCBlKSB7XG5cdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykge1xuXHRcdFx0XHRcdHZhciBvID0gZVtyXTtcblx0XHRcdFx0XHQoby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExKSxcblx0XHRcdFx0XHRcdChvLmNvbmZpZ3VyYWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdCd2YWx1ZScgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBuKG8ua2V5KSwgbyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIG4oZSkge1xuXHRcdFx0XHR2YXIgciA9IChmdW5jdGlvbiAoZSwgcikge1xuXHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gdChlKSB8fCBudWxsID09PSBlKSByZXR1cm4gZTtcblx0XHRcdFx0XHR2YXIgbiA9IGVbU3ltYm9sLnRvUHJpbWl0aXZlXTtcblx0XHRcdFx0XHRpZiAodm9pZCAwICE9PSBuKSB7XG5cdFx0XHRcdFx0XHR2YXIgbyA9IG4uY2FsbChlLCByIHx8ICdkZWZhdWx0Jyk7XG5cdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IHQobykpIHJldHVybiBvO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuICgnc3RyaW5nJyA9PT0gciA/IFN0cmluZyA6IE51bWJlcikoZSk7XG5cdFx0XHRcdH0pKGUsICdzdHJpbmcnKTtcblx0XHRcdFx0cmV0dXJuICdzeW1ib2wnID09PSB0KHIpID8gciA6IFN0cmluZyhyKTtcblx0XHRcdH1cblx0XHRcdHZhciBvID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0dmFyIGUsIHIsIG87XG5cdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0XHR9KSh0aGlzLCB0KSxcblx0XHRcdFx0XHRcdFx0KGUgPSB0aGlzKSxcblx0XHRcdFx0XHRcdFx0KG8gPSAnNC4wLjEyJyksXG5cdFx0XHRcdFx0XHRcdChyID0gbigociA9ICd2ZXJzaW9uJykpKSBpbiBlXG5cdFx0XHRcdFx0XHRcdFx0PyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogbyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZW51bWVyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogITAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdyaXRhYmxlOiAhMCxcblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0OiAoZVtyXSA9IG8pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgciwgbywgaTtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0KHIgPSB0KSxcblx0XHRcdFx0XHRcdChvID0gW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaXNBcnRpY2xlJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dJc0FydGljbGUnKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnY3VycmVudFBhZ2VOYW1lJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpLnJlcGxhY2UoLyAvZywgJ18nKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnYXJ0aWNsZUlkJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dBcnRpY2xlSWQnKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAncmV2aXNpb25JZCcsXG5cdFx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd2luZG93Lm13LmNvbmZpZy5nZXQoJ3dnUmV2aXNpb25JZCcpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdsYXRlc3RSZXZpc2lvbklkJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dDdXJSZXZpc2lvbklkJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2FydGljbGVQYXRoJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dBcnRpY2xlUGF0aCcpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdzY3JpcHRQYXRoJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dTY3JpcHRQYXRoJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2FjdGlvbicsXG5cdFx0XHRcdFx0XHRcdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd2luZG93Lm13LmNvbmZpZy5nZXQoJ3dnQWN0aW9uJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3NraW4nLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCdza2luJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3VzZXJHcm91cHMnLFxuXHRcdFx0XHRcdFx0XHRcdGdldDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdpbmRvdy5tdy5jb25maWcuZ2V0KCd3Z1VzZXJHcm91cHMnKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnd2lraUlkJyxcblx0XHRcdFx0XHRcdFx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3aW5kb3cubXcuY29uZmlnLmdldCgnd2dXaWtpSUQnKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSkgJiYgZShyLnByb3RvdHlwZSwgbyksXG5cdFx0XHRcdFx0XHRpICYmIGUociwgaSksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkociwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRpID0gbmV3IG8oKTtcblx0XHRcdGZ1bmN0aW9uIGEodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChhID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0YSh0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gdSh0LCBlKSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0KSkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0fSkodCkgfHxcblx0XHRcdFx0XHQoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdHZhciByID1cblx0XHRcdFx0XHRcdFx0bnVsbCA9PSB0ID8gbnVsbCA6ICgndW5kZWZpbmVkJyAhPSB0eXBlb2YgU3ltYm9sICYmIHRbU3ltYm9sLml0ZXJhdG9yXSkgfHwgdFsnQEBpdGVyYXRvciddO1xuXHRcdFx0XHRcdFx0aWYgKG51bGwgIT0gcikge1xuXHRcdFx0XHRcdFx0XHR2YXIgbixcblx0XHRcdFx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdFx0XHRcdGksXG5cdFx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0XHR1ID0gW10sXG5cdFx0XHRcdFx0XHRcdFx0YyA9ICEwLFxuXHRcdFx0XHRcdFx0XHRcdHMgPSAhMTtcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoKChpID0gKHIgPSByLmNhbGwodCkpLm5leHQpLCAwID09PSBlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKE9iamVjdChyKSAhPT0gcikgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0YyA9ICExO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBmb3IgKDsgIShjID0gKG4gPSBpLmNhbGwocikpLmRvbmUpICYmICh1LnB1c2gobi52YWx1ZSksIHUubGVuZ3RoICE9PSBlKTsgYyA9ICEwKTtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdChzID0gITApLCAobyA9IHQpO1xuXHRcdFx0XHRcdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIWMgJiYgbnVsbCAhPSByLnJldHVybiAmJiAoKGEgPSByLnJldHVybigpKSwgT2JqZWN0KGEpICE9PSBhKSkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocykgdGhyb3cgbztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkodCwgZSkgfHxcblx0XHRcdFx0XHQoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdGlmICghdCkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0aWYgKCdzdHJpbmcnID09IHR5cGVvZiB0KSByZXR1cm4gYyh0LCBlKTtcblx0XHRcdFx0XHRcdHZhciByID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsIC0xKTtcblx0XHRcdFx0XHRcdCdPYmplY3QnID09PSByICYmIHQuY29uc3RydWN0b3IgJiYgKHIgPSB0LmNvbnN0cnVjdG9yLm5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCdNYXAnID09PSByIHx8ICdTZXQnID09PSByKSByZXR1cm4gQXJyYXkuZnJvbSh0KTtcblx0XHRcdFx0XHRcdGlmICgnQXJndW1lbnRzJyA9PT0gciB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKSkgcmV0dXJuIGModCwgZSk7XG5cdFx0XHRcdFx0fSkodCwgZSkgfHxcblx0XHRcdFx0XHQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcblx0XHRcdFx0XHRcdFx0J0ludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLidcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSkoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gYyh0LCBlKSB7XG5cdFx0XHRcdChudWxsID09IGUgfHwgZSA+IHQubGVuZ3RoKSAmJiAoZSA9IHQubGVuZ3RoKTtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDAsIG4gPSBuZXcgQXJyYXkoZSk7IHIgPCBlOyByKyspIG5bcl0gPSB0W3JdO1xuXHRcdFx0XHRyZXR1cm4gbjtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHMoKSB7XG5cdFx0XHRcdC8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi8gcyA9XG5cdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGU7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0dmFyIHQsXG5cdFx0XHRcdFx0ZSA9IHt9LFxuXHRcdFx0XHRcdHIgPSBPYmplY3QucHJvdG90eXBlLFxuXHRcdFx0XHRcdG4gPSByLmhhc093blByb3BlcnR5LFxuXHRcdFx0XHRcdG8gPVxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5IHx8XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0XHR0W2VdID0gci52YWx1ZTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0aSA9ICdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCA/IFN5bWJvbCA6IHt9LFxuXHRcdFx0XHRcdHUgPSBpLml0ZXJhdG9yIHx8ICdAQGl0ZXJhdG9yJyxcblx0XHRcdFx0XHRjID0gaS5hc3luY0l0ZXJhdG9yIHx8ICdAQGFzeW5jSXRlcmF0b3InLFxuXHRcdFx0XHRcdGYgPSBpLnRvU3RyaW5nVGFnIHx8ICdAQHRvU3RyaW5nVGFnJztcblx0XHRcdFx0ZnVuY3Rpb24gbCh0LCBlLCByKSB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCB7dmFsdWU6IHIsIGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITB9KSwgdFtlXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRsKHt9LCAnJyk7XG5cdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRsID0gZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdHJldHVybiAodFtlXSA9IHIpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gcCh0LCBlLCByLCBuKSB7XG5cdFx0XHRcdFx0dmFyIGkgPSBlICYmIGUucHJvdG90eXBlIGluc3RhbmNlb2YgYiA/IGUgOiBiLFxuXHRcdFx0XHRcdFx0YSA9IE9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLFxuXHRcdFx0XHRcdFx0dSA9IG5ldyBSKG4gfHwgW10pO1xuXHRcdFx0XHRcdHJldHVybiBvKGEsICdfaW52b2tlJywge3ZhbHVlOiBMKHQsIHIsIHUpfSksIGE7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gaCh0LCBlLCByKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICdub3JtYWwnLFxuXHRcdFx0XHRcdFx0XHRhcmc6IHQuY2FsbChlLCByKSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3Rocm93Jyxcblx0XHRcdFx0XHRcdFx0YXJnOiB0LFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZS53cmFwID0gcDtcblx0XHRcdFx0dmFyIHYgPSAnc3VzcGVuZGVkU3RhcnQnLFxuXHRcdFx0XHRcdGQgPSAnc3VzcGVuZGVkWWllbGQnLFxuXHRcdFx0XHRcdHkgPSAnZXhlY3V0aW5nJyxcblx0XHRcdFx0XHRnID0gJ2NvbXBsZXRlZCcsXG5cdFx0XHRcdFx0bSA9IHt9O1xuXHRcdFx0XHRmdW5jdGlvbiBiKCkge31cblx0XHRcdFx0ZnVuY3Rpb24gdygpIHt9XG5cdFx0XHRcdGZ1bmN0aW9uIHgoKSB7fVxuXHRcdFx0XHR2YXIgayA9IHt9O1xuXHRcdFx0XHRsKGssIHUsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHZhciBTID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuXHRcdFx0XHRcdEUgPSBTICYmIFMoUygkKFtdKSkpO1xuXHRcdFx0XHRFICYmIEUgIT09IHIgJiYgbi5jYWxsKEUsIHUpICYmIChrID0gRSk7XG5cdFx0XHRcdHZhciBPID0gKHgucHJvdG90eXBlID0gYi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGspKTtcblx0XHRcdFx0ZnVuY3Rpb24gUCh0KSB7XG5cdFx0XHRcdFx0WyduZXh0JywgJ3Rocm93JywgJ3JldHVybiddLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdGwodCwgZSwgZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2ludm9rZShlLCB0KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGoodCwgZSkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHIobywgaSwgdSwgYykge1xuXHRcdFx0XHRcdFx0dmFyIHMgPSBoKHRbb10sIHQsIGkpO1xuXHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgIT09IHMudHlwZSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZiA9IHMuYXJnLFxuXHRcdFx0XHRcdFx0XHRcdGwgPSBmLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbCAmJiAnb2JqZWN0JyA9PSBhKGwpICYmIG4uY2FsbChsLCAnX19hd2FpdCcpXG5cdFx0XHRcdFx0XHRcdFx0PyBlLnJlc29sdmUobC5fX2F3YWl0KS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoJ25leHQnLCB0LCB1LCBjKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyKCd0aHJvdycsIHQsIHUsIGMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0OiBlLnJlc29sdmUobCkudGhlbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZi52YWx1ZSA9IHQpLCB1KGYpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByKCd0aHJvdycsIHQsIHUsIGMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YyhzLmFyZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpO1xuXHRcdFx0XHRcdG8odGhpcywgJ19pbnZva2UnLCB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQsIG4pIHtcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gbygpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IGUoZnVuY3Rpb24gKGUsIG8pIHtcblx0XHRcdFx0XHRcdFx0XHRcdHIodCwgbiwgZSwgbyk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIChpID0gaSA/IGkudGhlbihvLCBvKSA6IG8oKSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEwoZSwgciwgbikge1xuXHRcdFx0XHRcdHZhciBvID0gdjtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGksIGEpIHtcblx0XHRcdFx0XHRcdGlmIChvID09PSB5KSB0aHJvdyBuZXcgRXJyb3IoJ0dlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmcnKTtcblx0XHRcdFx0XHRcdGlmIChvID09PSBnKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBpKSB0aHJvdyBhO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB0LFxuXHRcdFx0XHRcdFx0XHRcdGRvbmU6ICEwLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Zm9yIChuLm1ldGhvZCA9IGksIG4uYXJnID0gYTsgOyApIHtcblx0XHRcdFx0XHRcdFx0dmFyIHUgPSBuLmRlbGVnYXRlO1xuXHRcdFx0XHRcdFx0XHRpZiAodSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBjID0gXyh1LCBuKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGMgPT09IG0pIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGM7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmICgnbmV4dCcgPT09IG4ubWV0aG9kKSBuLnNlbnQgPSBuLl9zZW50ID0gbi5hcmc7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKCd0aHJvdycgPT09IG4ubWV0aG9kKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG8gPT09IHYpIHRocm93ICgobyA9IGcpLCBuLmFyZyk7XG5cdFx0XHRcdFx0XHRcdFx0bi5kaXNwYXRjaEV4Y2VwdGlvbihuLmFyZyk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSAncmV0dXJuJyA9PT0gbi5tZXRob2QgJiYgbi5hYnJ1cHQoJ3JldHVybicsIG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0byA9IHk7XG5cdFx0XHRcdFx0XHRcdHZhciBzID0gaChlLCByLCBuKTtcblx0XHRcdFx0XHRcdFx0aWYgKCdub3JtYWwnID09PSBzLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoKChvID0gbi5kb25lID8gZyA6IGQpLCBzLmFyZyA9PT0gbSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcy5hcmcsXG5cdFx0XHRcdFx0XHRcdFx0XHRkb25lOiBuLmRvbmUsXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQndGhyb3cnID09PSBzLnR5cGUgJiYgKChvID0gZyksIChuLm1ldGhvZCA9ICd0aHJvdycpLCAobi5hcmcgPSBzLmFyZykpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gXyhlLCByKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSByLm1ldGhvZCxcblx0XHRcdFx0XHRcdG8gPSBlLml0ZXJhdG9yW25dO1xuXHRcdFx0XHRcdGlmIChvID09PSB0KVxuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0KCd0aHJvdycgPT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRlLml0ZXJhdG9yLnJldHVybiAmJlxuXHRcdFx0XHRcdFx0XHRcdCgoci5tZXRob2QgPSAncmV0dXJuJyksIChyLmFyZyA9IHQpLCBfKGUsIHIpLCAndGhyb3cnID09PSByLm1ldGhvZCkpIHx8XG5cdFx0XHRcdFx0XHRcdFx0KCdyZXR1cm4nICE9PSBuICYmXG5cdFx0XHRcdFx0XHRcdFx0XHQoKHIubWV0aG9kID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdFx0XHQoci5hcmcgPSBuZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnXCIgKyBuICsgXCInIG1ldGhvZFwiKSkpKSxcblx0XHRcdFx0XHRcdFx0bVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR2YXIgaSA9IGgobywgZS5pdGVyYXRvciwgci5hcmcpO1xuXHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBpLnR5cGUpIHJldHVybiAoci5tZXRob2QgPSAndGhyb3cnKSwgKHIuYXJnID0gaS5hcmcpLCAoci5kZWxlZ2F0ZSA9IG51bGwpLCBtO1xuXHRcdFx0XHRcdHZhciBhID0gaS5hcmc7XG5cdFx0XHRcdFx0cmV0dXJuIGFcblx0XHRcdFx0XHRcdD8gYS5kb25lXG5cdFx0XHRcdFx0XHRcdD8gKChyW2UucmVzdWx0TmFtZV0gPSBhLnZhbHVlKSxcblx0XHRcdFx0XHRcdFx0XHQoci5uZXh0ID0gZS5uZXh0TG9jKSxcblx0XHRcdFx0XHRcdFx0XHQncmV0dXJuJyAhPT0gci5tZXRob2QgJiYgKChyLm1ldGhvZCA9ICduZXh0JyksIChyLmFyZyA9IHQpKSxcblx0XHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdG0pXG5cdFx0XHRcdFx0XHRcdDogYVxuXHRcdFx0XHRcdFx0OiAoKHIubWV0aG9kID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdChyLmFyZyA9IG5ldyBUeXBlRXJyb3IoJ2l0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0JykpLFxuXHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRtKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBJKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHtcblx0XHRcdFx0XHRcdHRyeUxvYzogdFswXSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdDEgaW4gdCAmJiAoZS5jYXRjaExvYyA9IHRbMV0pLFxuXHRcdFx0XHRcdFx0MiBpbiB0ICYmICgoZS5maW5hbGx5TG9jID0gdFsyXSksIChlLmFmdGVyTG9jID0gdFszXSkpLFxuXHRcdFx0XHRcdFx0dGhpcy50cnlFbnRyaWVzLnB1c2goZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gVCh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB0LmNvbXBsZXRpb24gfHwge307XG5cdFx0XHRcdFx0KGUudHlwZSA9ICdub3JtYWwnKSwgZGVsZXRlIGUuYXJnLCAodC5jb21wbGV0aW9uID0gZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gUih0KSB7XG5cdFx0XHRcdFx0KHRoaXMudHJ5RW50cmllcyA9IFt7dHJ5TG9jOiAncm9vdCd9XSksIHQuZm9yRWFjaChJLCB0aGlzKSwgdGhpcy5yZXNldCghMCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gJChlKSB7XG5cdFx0XHRcdFx0aWYgKGUgfHwgJycgPT09IGUpIHtcblx0XHRcdFx0XHRcdHZhciByID0gZVt1XTtcblx0XHRcdFx0XHRcdGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuXHRcdFx0XHRcdFx0aWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGUubmV4dCkgcmV0dXJuIGU7XG5cdFx0XHRcdFx0XHRpZiAoIWlzTmFOKGUubGVuZ3RoKSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgbyA9IC0xLFxuXHRcdFx0XHRcdFx0XHRcdGkgPSBmdW5jdGlvbiByKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7ICsrbyA8IGUubGVuZ3RoOyApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChuLmNhbGwoZSwgbykpIHJldHVybiAoci52YWx1ZSA9IGVbb10pLCAoci5kb25lID0gITEpLCByO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChyLnZhbHVlID0gdCksIChyLmRvbmUgPSAhMCksIHI7XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChpLm5leHQgPSBpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihhKGUpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdCh3LnByb3RvdHlwZSA9IHgpLFxuXHRcdFx0XHRcdG8oTywgJ2NvbnN0cnVjdG9yJywge3ZhbHVlOiB4LCBjb25maWd1cmFibGU6ICEwfSksXG5cdFx0XHRcdFx0byh4LCAnY29uc3RydWN0b3InLCB7dmFsdWU6IHcsIGNvbmZpZ3VyYWJsZTogITB9KSxcblx0XHRcdFx0XHQody5kaXNwbGF5TmFtZSA9IGwoeCwgZiwgJ0dlbmVyYXRvckZ1bmN0aW9uJykpLFxuXHRcdFx0XHRcdChlLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSAnZnVuY3Rpb24nID09IHR5cGVvZiB0ICYmIHQuY29uc3RydWN0b3I7XG5cdFx0XHRcdFx0XHRyZXR1cm4gISFlICYmIChlID09PSB3IHx8ICdHZW5lcmF0b3JGdW5jdGlvbicgPT09IChlLmRpc3BsYXlOYW1lIHx8IGUubmFtZSkpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLm1hcmsgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0T2JqZWN0LnNldFByb3RvdHlwZU9mXG5cdFx0XHRcdFx0XHRcdFx0PyBPYmplY3Quc2V0UHJvdG90eXBlT2YodCwgeClcblx0XHRcdFx0XHRcdFx0XHQ6ICgodC5fX3Byb3RvX18gPSB4KSwgbCh0LCBmLCAnR2VuZXJhdG9yRnVuY3Rpb24nKSksXG5cdFx0XHRcdFx0XHRcdCh0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTykpLFxuXHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLmF3cmFwID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdF9fYXdhaXQ6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFAoai5wcm90b3R5cGUpLFxuXHRcdFx0XHRcdGwoai5wcm90b3R5cGUsIGMsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLkFzeW5jSXRlcmF0b3IgPSBqKSxcblx0XHRcdFx0XHQoZS5hc3luYyA9IGZ1bmN0aW9uICh0LCByLCBuLCBvLCBpKSB7XG5cdFx0XHRcdFx0XHR2b2lkIDAgPT09IGkgJiYgKGkgPSBQcm9taXNlKTtcblx0XHRcdFx0XHRcdHZhciBhID0gbmV3IGoocCh0LCByLCBuLCBvKSwgaSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpXG5cdFx0XHRcdFx0XHRcdD8gYVxuXHRcdFx0XHRcdFx0XHQ6IGEubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmRvbmUgPyB0LnZhbHVlIDogYS5uZXh0KCk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0UChPKSxcblx0XHRcdFx0XHRsKE8sIGYsICdHZW5lcmF0b3InKSxcblx0XHRcdFx0XHRsKE8sIHUsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGwoTywgJ3RvU3RyaW5nJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICdbb2JqZWN0IEdlbmVyYXRvcl0nO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLmtleXMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBPYmplY3QodCksXG5cdFx0XHRcdFx0XHRcdHIgPSBbXTtcblx0XHRcdFx0XHRcdGZvciAodmFyIG4gaW4gZSkgci5wdXNoKG4pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0ci5yZXZlcnNlKCksXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICg7IHIubGVuZ3RoOyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gci5wb3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChuIGluIGUpIHJldHVybiAodC52YWx1ZSA9IG4pLCAodC5kb25lID0gITEpLCB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHQuZG9uZSA9ICEwKSwgdDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS52YWx1ZXMgPSAkKSxcblx0XHRcdFx0XHQoUi5wcm90b3R5cGUgPSB7XG5cdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogUixcblx0XHRcdFx0XHRcdHJlc2V0OiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0KCh0aGlzLnByZXYgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5uZXh0ID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kb25lID0gITEpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMubWV0aG9kID0gJ25leHQnKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5hcmcgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSxcblx0XHRcdFx0XHRcdFx0XHQhZSlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgaW4gdGhpcylcblx0XHRcdFx0XHRcdFx0XHRcdCd0JyA9PT0gci5jaGFyQXQoMCkgJiYgbi5jYWxsKHRoaXMsIHIpICYmICFpc05hTigrci5zbGljZSgxKSkgJiYgKHRoaXNbcl0gPSB0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzdG9wOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZG9uZSA9ICEwO1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMucnZhbDtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuZG9uZSkgdGhyb3cgZTtcblx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzO1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKG4sIG8pIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0KHUudHlwZSA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHUuYXJnID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0XHQoci5uZXh0ID0gbiksXG5cdFx0XHRcdFx0XHRcdFx0XHRvICYmICgoci5tZXRob2QgPSAnbmV4dCcpLCAoci5hcmcgPSB0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHQhIW9cblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYSA9IHRoaXMudHJ5RW50cmllc1tpXSxcblx0XHRcdFx0XHRcdFx0XHRcdHUgPSBhLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCdyb290JyA9PT0gYS50cnlMb2MpIHJldHVybiBvKCdlbmQnKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IG4uY2FsbChhLCAnY2F0Y2hMb2MnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cyA9IG4uY2FsbChhLCAnZmluYWxseUxvYycpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGMgJiYgcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXMpIHRocm93IG5ldyBFcnJvcigndHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHknKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhYnJ1cHQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgciA+PSAwOyAtLXIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IHRoaXMudHJ5RW50cmllc1tyXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoby50cnlMb2MgPD0gdGhpcy5wcmV2ICYmIG4uY2FsbChvLCAnZmluYWxseUxvYycpICYmIHRoaXMucHJldiA8IG8uZmluYWxseUxvYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGkgPSBvO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGkgJiZcblx0XHRcdFx0XHRcdFx0XHQoJ2JyZWFrJyA9PT0gdCB8fCAnY29udGludWUnID09PSB0KSAmJlxuXHRcdFx0XHRcdFx0XHRcdGkudHJ5TG9jIDw9IGUgJiZcblx0XHRcdFx0XHRcdFx0XHRlIDw9IGkuZmluYWxseUxvYyAmJlxuXHRcdFx0XHRcdFx0XHRcdChpID0gbnVsbCk7XG5cdFx0XHRcdFx0XHRcdHZhciBhID0gaSA/IGkuY29tcGxldGlvbiA6IHt9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdChhLnR5cGUgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHQoYS5hcmcgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRpID8gKCh0aGlzLm1ldGhvZCA9ICduZXh0JyksICh0aGlzLm5leHQgPSBpLmZpbmFsbHlMb2MpLCBtKSA6IHRoaXMuY29tcGxldGUoYSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjb21wbGV0ZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0J2JyZWFrJyA9PT0gdC50eXBlIHx8ICdjb250aW51ZScgPT09IHQudHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0PyAodGhpcy5uZXh0ID0gdC5hcmcpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICdyZXR1cm4nID09PSB0LnR5cGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoKHRoaXMucnZhbCA9IHRoaXMuYXJnID0gdC5hcmcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLm1ldGhvZCA9ICdyZXR1cm4nKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5uZXh0ID0gJ2VuZCcpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICdub3JtYWwnID09PSB0LnR5cGUgJiYgZSAmJiAodGhpcy5uZXh0ID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0bVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGZpbmlzaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyLmZpbmFsbHlMb2MgPT09IHQpIHJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbiwgci5hZnRlckxvYyksIFQociksIG07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjYXRjaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyLnRyeUxvYyA9PT0gdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gbi50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBvID0gbi5hcmc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFQocik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdpbGxlZ2FsIGNhdGNoIGF0dGVtcHQnKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiAoZSwgciwgbikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRlbGVnYXRlID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aXRlcmF0b3I6ICQoZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHROYW1lOiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0bmV4dExvYzogbixcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHQnbmV4dCcgPT09IHRoaXMubWV0aG9kICYmICh0aGlzLmFyZyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdG1cblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gZih0LCBlLCByLCBuLCBvLCBpLCBhKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dmFyIHUgPSB0W2ldKGEpLFxuXHRcdFx0XHRcdFx0YyA9IHUudmFsdWU7XG5cdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gdm9pZCByKHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHUuZG9uZSA/IGUoYykgOiBQcm9taXNlLnJlc29sdmUoYykudGhlbihuLCBvKTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIGwodCkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHZhciBlID0gdGhpcyxcblx0XHRcdFx0XHRcdHIgPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChuLCBvKSB7XG5cdFx0XHRcdFx0XHR2YXIgaSA9IHQuYXBwbHkoZSwgcik7XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiBhKHQpIHtcblx0XHRcdFx0XHRcdFx0ZihpLCBuLCBvLCBhLCB1LCAnbmV4dCcsIHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gdSh0KSB7XG5cdFx0XHRcdFx0XHRcdGYoaSwgbiwgbywgYSwgdSwgJ3Rocm93JywgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRhKHZvaWQgMCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBwKHQsIGUpIHtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBlW3JdO1xuXHRcdFx0XHRcdChuLmVudW1lcmFibGUgPSBuLmVudW1lcmFibGUgfHwgITEpLFxuXHRcdFx0XHRcdFx0KG4uY29uZmlndXJhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0J3ZhbHVlJyBpbiBuICYmIChuLndyaXRhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGgobi5rZXkpLCBuKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gaCh0KSB7XG5cdFx0XHRcdHZhciBlID0gKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBhKHQpIHx8IG51bGwgPT09IHQpIHJldHVybiB0O1xuXHRcdFx0XHRcdHZhciByID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gci5jYWxsKHQsIGUgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gYShuKSkgcmV0dXJuIG47XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gKCdzdHJpbmcnID09PSBlID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcblx0XHRcdFx0fSkodCwgJ3N0cmluZycpO1xuXHRcdFx0XHRyZXR1cm4gJ3N5bWJvbCcgPT09IGEoZSkgPyBlIDogU3RyaW5nKGUpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIHYsXG5cdFx0XHRcdGQsXG5cdFx0XHRcdHksXG5cdFx0XHRcdGcgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0XHR9KSh0aGlzLCB0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGUsIHIsIG4sIG8sIGE7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdChlID0gdCksXG5cdFx0XHRcdFx0XHQociA9IG51bGwpLFxuXHRcdFx0XHRcdFx0KG4gPSBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdnZXQnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0KChhID0gbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0cygpLm1hcmsoZnVuY3Rpb24gZShyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4sIG87XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHMoKS53cmFwKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKChlLnByZXYgPSBlLm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSBuZXcgVVJMKHQuYmFzZSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bi5zZWFyY2hQYXJhbXMuYXBwZW5kKHQsIHJbdF0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUubmV4dCA9IDQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmZXRjaChuLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J0FwaS1Vc2VyLUFnZW50JzogJ1dpa2lwbHVzLydcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChpLnZlcnNpb24sICcgKCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoaS53aWtpSWQsICcpJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChvID0gZS5zZW50KSwgKGUubmV4dCA9IDcpLCBvLmpzb24oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZS5hYnJ1cHQoJ3JldHVybicsIGUuc2VudCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA4OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZS5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGEuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAncG9zdCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHQoKG8gPSBsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzKCkubWFyayhmdW5jdGlvbiBlKHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiwgbywgYTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcygpLndyYXAoZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKGUucHJldiA9IGUubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobiA9IG5ldyBVUkwodC5iYXNlKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvID0gbmV3IEZvcm1EYXRhKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRPYmplY3QuZW50cmllcyhyKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUgPSB1KHQsIDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IGVbMF0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuID0gZVsxXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvLmFwcGVuZChyLCBuKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLm5leHQgPSA1KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmV0Y2gobiwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJvZHk6IG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J0FwaS1Vc2VyLUFnZW50JzogJ1dpa2lwbHVzLydcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChpLnZlcnNpb24sICcgKCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoaS53aWtpSWQsICcpJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChhID0gZS5zZW50KSwgKGUubmV4dCA9IDgpLCBhLmpzb24oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDg6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZS5hYnJ1cHQoJ3JldHVybicsIGUuc2VudCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA5OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZS5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG8uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRyICYmIHAoZS5wcm90b3R5cGUsIHIpLFxuXHRcdFx0XHRcdFx0biAmJiBwKGUsIG4pLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICdwcm90b3R5cGUnLCB7d3JpdGFibGU6ICExfSksXG5cdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSkoKTtcblx0XHRcdCh2ID0gZyksXG5cdFx0XHRcdChkID0gJ2Jhc2UnKSxcblx0XHRcdFx0KHkgPSAnJy5jb25jYXQobG9jYXRpb24ucHJvdG9jb2wsICcvLycpLmNvbmNhdChsb2NhdGlvbi5ob3N0KS5jb25jYXQoaS5zY3JpcHRQYXRoLCAnL2FwaS5waHAnKSksXG5cdFx0XHRcdChkID0gaChkKSkgaW4gdlxuXHRcdFx0XHRcdD8gT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsIGQsIHt2YWx1ZTogeSwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pXG5cdFx0XHRcdFx0OiAodltkXSA9IHkpO1xuXHRcdFx0dmFyIG0gPSBnO1xuXHRcdFx0cigyMDAzKSxcblx0XHRcdFx0cig4NTE4KSxcblx0XHRcdFx0cigzNDQwKSxcblx0XHRcdFx0cig2MDM0KSxcblx0XHRcdFx0cig1MCksXG5cdFx0XHRcdHIoNjY0NiksXG5cdFx0XHRcdHIoNzQ0NCksXG5cdFx0XHRcdHIoNzk2OCksXG5cdFx0XHRcdHIoNzQ3KSxcblx0XHRcdFx0cigxMDk5KSxcblx0XHRcdFx0cig2MzIwKSxcblx0XHRcdFx0cig4NzYpLFxuXHRcdFx0XHRyKDY3OTEpLFxuXHRcdFx0XHRyKDE5KSxcblx0XHRcdFx0cigyMzQzKSxcblx0XHRcdFx0cigxMDk2KSxcblx0XHRcdFx0cig0MzE0KSxcblx0XHRcdFx0cigzMzQ2KSxcblx0XHRcdFx0cig0OTg0KSxcblx0XHRcdFx0cig0MDc4KSxcblx0XHRcdFx0cig4MzI0KTtcblx0XHRcdGZ1bmN0aW9uIGIodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChiID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0Yih0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gdygpIHtcblx0XHRcdFx0LyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9ibG9iL21haW4vTElDRU5TRSAqLyB3ID1cblx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR2YXIgdCxcblx0XHRcdFx0XHRlID0ge30sXG5cdFx0XHRcdFx0ciA9IE9iamVjdC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0biA9IHIuaGFzT3duUHJvcGVydHksXG5cdFx0XHRcdFx0byA9XG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkgfHxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdHRbZV0gPSByLnZhbHVlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRpID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sXG5cdFx0XHRcdFx0YSA9IGkuaXRlcmF0b3IgfHwgJ0BAaXRlcmF0b3InLFxuXHRcdFx0XHRcdHUgPSBpLmFzeW5jSXRlcmF0b3IgfHwgJ0BAYXN5bmNJdGVyYXRvcicsXG5cdFx0XHRcdFx0YyA9IGkudG9TdHJpbmdUYWcgfHwgJ0BAdG9TdHJpbmdUYWcnO1xuXHRcdFx0XHRmdW5jdGlvbiBzKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHt2YWx1ZTogciwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pLCB0W2VdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHMoe30sICcnKTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuICh0W2VdID0gcik7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBmKHQsIGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgaSA9IGUgJiYgZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnID8gZSA6IGcsXG5cdFx0XHRcdFx0XHRhID0gT2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0XHR1ID0gbmV3IFIobiB8fCBbXSk7XG5cdFx0XHRcdFx0cmV0dXJuIG8oYSwgJ19pbnZva2UnLCB7dmFsdWU6IEwodCwgciwgdSl9KSwgYTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBsKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ25vcm1hbCcsXG5cdFx0XHRcdFx0XHRcdGFyZzogdC5jYWxsKGUsIHIpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAndGhyb3cnLFxuXHRcdFx0XHRcdFx0XHRhcmc6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlLndyYXAgPSBmO1xuXHRcdFx0XHR2YXIgcCA9ICdzdXNwZW5kZWRTdGFydCcsXG5cdFx0XHRcdFx0aCA9ICdzdXNwZW5kZWRZaWVsZCcsXG5cdFx0XHRcdFx0diA9ICdleGVjdXRpbmcnLFxuXHRcdFx0XHRcdGQgPSAnY29tcGxldGVkJyxcblx0XHRcdFx0XHR5ID0ge307XG5cdFx0XHRcdGZ1bmN0aW9uIGcoKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiBtKCkge31cblx0XHRcdFx0ZnVuY3Rpb24geCgpIHt9XG5cdFx0XHRcdHZhciBrID0ge307XG5cdFx0XHRcdHMoaywgYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dmFyIFMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG5cdFx0XHRcdFx0RSA9IFMgJiYgUyhTKCQoW10pKSk7XG5cdFx0XHRcdEUgJiYgRSAhPT0gciAmJiBuLmNhbGwoRSwgYSkgJiYgKGsgPSBFKTtcblx0XHRcdFx0dmFyIE8gPSAoeC5wcm90b3R5cGUgPSBnLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoaykpO1xuXHRcdFx0XHRmdW5jdGlvbiBQKHQpIHtcblx0XHRcdFx0XHRbJ25leHQnLCAndGhyb3cnLCAncmV0dXJuJ10uZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0cyh0LCBlLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5faW52b2tlKGUsIHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gaih0LCBlKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcihvLCBpLCBhLCB1KSB7XG5cdFx0XHRcdFx0XHR2YXIgYyA9IGwodFtvXSwgdCwgaSk7XG5cdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyAhPT0gYy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBzID0gYy5hcmcsXG5cdFx0XHRcdFx0XHRcdFx0ZiA9IHMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmICYmICdvYmplY3QnID09IGIoZikgJiYgbi5jYWxsKGYsICdfX2F3YWl0Jylcblx0XHRcdFx0XHRcdFx0XHQ/IGUucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cignbmV4dCcsIHQsIGEsIHUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQ6IGUucmVzb2x2ZShmKS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnZhbHVlID0gdCksIGEocyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1KGMuYXJnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGk7XG5cdFx0XHRcdFx0byh0aGlzLCAnX2ludm9rZScsIHtcblx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgZShmdW5jdGlvbiAoZSwgbykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cih0LCBuLCBlLCBvKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkgPSBpID8gaS50aGVuKG8sIG8pIDogbygpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gTChlLCByLCBuKSB7XG5cdFx0XHRcdFx0dmFyIG8gPSBwO1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoaSwgYSkge1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IHYpIHRocm93IG5ldyBFcnJvcignR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZycpO1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IGQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkpIHRocm93IGE7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHRcdFx0ZG9uZTogITAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmb3IgKG4ubWV0aG9kID0gaSwgbi5hcmcgPSBhOyA7ICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdSA9IG4uZGVsZWdhdGU7XG5cdFx0XHRcdFx0XHRcdGlmICh1KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBfKHUsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyA9PT0geSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCduZXh0JyA9PT0gbi5tZXRob2QpIG4uc2VudCA9IG4uX3NlbnQgPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ3Rocm93JyA9PT0gbi5tZXRob2QpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAobyA9PT0gcCkgdGhyb3cgKChvID0gZCksIG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0XHRuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlICdyZXR1cm4nID09PSBuLm1ldGhvZCAmJiBuLmFicnVwdCgncmV0dXJuJywgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRvID0gdjtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBsKGUsIHIsIG4pO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ25vcm1hbCcgPT09IHMudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoKG8gPSBuLmRvbmUgPyBkIDogaCksIHMuYXJnID09PSB5KSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBzLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6IG4uZG9uZSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCd0aHJvdycgPT09IHMudHlwZSAmJiAoKG8gPSBkKSwgKG4ubWV0aG9kID0gJ3Rocm93JyksIChuLmFyZyA9IHMuYXJnKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBfKGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgbiA9IHIubWV0aG9kLFxuXHRcdFx0XHRcdFx0byA9IGUuaXRlcmF0b3Jbbl07XG5cdFx0XHRcdFx0aWYgKG8gPT09IHQpXG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHQoJ3Rocm93JyA9PT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdGUuaXRlcmF0b3IucmV0dXJuICYmXG5cdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICdyZXR1cm4nKSwgKHIuYXJnID0gdCksIF8oZSwgciksICd0aHJvdycgPT09IHIubWV0aG9kKSkgfHxcblx0XHRcdFx0XHRcdFx0XHQoJ3JldHVybicgIT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdCgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcIiArIG4gKyBcIicgbWV0aG9kXCIpKSkpLFxuXHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHZhciBpID0gbChvLCBlLml0ZXJhdG9yLCByLmFyZyk7XG5cdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkudHlwZSkgcmV0dXJuIChyLm1ldGhvZCA9ICd0aHJvdycpLCAoci5hcmcgPSBpLmFyZyksIChyLmRlbGVnYXRlID0gbnVsbCksIHk7XG5cdFx0XHRcdFx0dmFyIGEgPSBpLmFyZztcblx0XHRcdFx0XHRyZXR1cm4gYVxuXHRcdFx0XHRcdFx0PyBhLmRvbmVcblx0XHRcdFx0XHRcdFx0PyAoKHJbZS5yZXN1bHROYW1lXSA9IGEudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBlLm5leHRMb2MpLFxuXHRcdFx0XHRcdFx0XHRcdCdyZXR1cm4nICE9PSByLm1ldGhvZCAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0eSlcblx0XHRcdFx0XHRcdFx0OiBhXG5cdFx0XHRcdFx0XHQ6ICgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QnKSksXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdHkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEkodCkge1xuXHRcdFx0XHRcdHZhciBlID0ge1xuXHRcdFx0XHRcdFx0dHJ5TG9jOiB0WzBdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0MSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksXG5cdFx0XHRcdFx0XHQyIGluIHQgJiYgKChlLmZpbmFsbHlMb2MgPSB0WzJdKSwgKGUuYWZ0ZXJMb2MgPSB0WzNdKSksXG5cdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMucHVzaChlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBUKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHQuY29tcGxldGlvbiB8fCB7fTtcblx0XHRcdFx0XHQoZS50eXBlID0gJ25vcm1hbCcpLCBkZWxldGUgZS5hcmcsICh0LmNvbXBsZXRpb24gPSBlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBSKHQpIHtcblx0XHRcdFx0XHQodGhpcy50cnlFbnRyaWVzID0gW3t0cnlMb2M6ICdyb290J31dKSwgdC5mb3JFYWNoKEksIHRoaXMpLCB0aGlzLnJlc2V0KCEwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiAkKGUpIHtcblx0XHRcdFx0XHRpZiAoZSB8fCAnJyA9PT0gZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBlW2FdO1xuXHRcdFx0XHRcdFx0aWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG5cdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZS5uZXh0KSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdGlmICghaXNOYU4oZS5sZW5ndGgpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gLTEsXG5cdFx0XHRcdFx0XHRcdFx0aSA9IGZ1bmN0aW9uIHIoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgKytvIDwgZS5sZW5ndGg7IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4uY2FsbChlLCBvKSkgcmV0dXJuIChyLnZhbHVlID0gZVtvXSksIChyLmRvbmUgPSAhMSksIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHIudmFsdWUgPSB0KSwgKHIuZG9uZSA9ICEwKSwgcjtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkubmV4dCA9IGkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGIoZSkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KG0ucHJvdG90eXBlID0geCksXG5cdFx0XHRcdFx0byhPLCAnY29uc3RydWN0b3InLCB7dmFsdWU6IHgsIGNvbmZpZ3VyYWJsZTogITB9KSxcblx0XHRcdFx0XHRvKHgsICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogbSwgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdChtLmRpc3BsYXlOYW1lID0gcyh4LCBjLCAnR2VuZXJhdG9yRnVuY3Rpb24nKSksXG5cdFx0XHRcdFx0KGUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9ICdmdW5jdGlvbicgPT0gdHlwZW9mIHQgJiYgdC5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdHJldHVybiAhIWUgJiYgKGUgPT09IG0gfHwgJ0dlbmVyYXRvckZ1bmN0aW9uJyA9PT0gKGUuZGlzcGxheU5hbWUgfHwgZS5uYW1lKSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUubWFyayA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRPYmplY3Quc2V0UHJvdG90eXBlT2Zcblx0XHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCB4KVxuXHRcdFx0XHRcdFx0XHRcdDogKCh0Ll9fcHJvdG9fXyA9IHgpLCBzKHQsIGMsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHRcdFx0KHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShPKSksXG5cdFx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuYXdyYXAgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0X19hd2FpdDogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0UChqLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0cyhqLnByb3RvdHlwZSwgdSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuQXN5bmNJdGVyYXRvciA9IGopLFxuXHRcdFx0XHRcdChlLmFzeW5jID0gZnVuY3Rpb24gKHQsIHIsIG4sIG8sIGkpIHtcblx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gaSAmJiAoaSA9IFByb21pc2UpO1xuXHRcdFx0XHRcdFx0dmFyIGEgPSBuZXcgaihmKHQsIHIsIG4sIG8pLCBpKTtcblx0XHRcdFx0XHRcdHJldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocilcblx0XHRcdFx0XHRcdFx0PyBhXG5cdFx0XHRcdFx0XHRcdDogYS5uZXh0KCkudGhlbihmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuZG9uZSA/IHQudmFsdWUgOiBhLm5leHQoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRQKE8pLFxuXHRcdFx0XHRcdHMoTywgYywgJ0dlbmVyYXRvcicpLFxuXHRcdFx0XHRcdHMoTywgYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0cyhPLCAndG9TdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ1tvYmplY3QgR2VuZXJhdG9yXSc7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUua2V5cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IE9iamVjdCh0KSxcblx0XHRcdFx0XHRcdFx0ciA9IFtdO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgbiBpbiBlKSByLnB1c2gobik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRyLnJldmVyc2UoKSxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgci5sZW5ndGg7ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLnBvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4gaW4gZSkgcmV0dXJuICh0LnZhbHVlID0gbiksICh0LmRvbmUgPSAhMSksIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5kb25lID0gITApLCB0O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLnZhbHVlcyA9ICQpLFxuXHRcdFx0XHRcdChSLnByb3RvdHlwZSA9IHtcblx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiBSLFxuXHRcdFx0XHRcdFx0cmVzZXQ6IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHQoKHRoaXMucHJldiA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRvbmUgPSAhMSksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAnbmV4dCcpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmFyZyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKFQpLFxuXHRcdFx0XHRcdFx0XHRcdCFlKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciBpbiB0aGlzKVxuXHRcdFx0XHRcdFx0XHRcdFx0J3QnID09PSByLmNoYXJBdCgwKSAmJiBuLmNhbGwodGhpcywgcikgJiYgIWlzTmFOKCtyLnNsaWNlKDEpKSAmJiAodGhpc1tyXSA9IHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHN0b3A6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kb25lID0gITA7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ydmFsO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5kb25lKSB0aHJvdyBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8obiwgbykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQodS50eXBlID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdFx0XHQodS5hcmcgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBuKSxcblx0XHRcdFx0XHRcdFx0XHRcdG8gJiYgKChyLm1ldGhvZCA9ICduZXh0JyksIChyLmFyZyA9IHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdCEhb1xuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhID0gdGhpcy50cnlFbnRyaWVzW2ldLFxuXHRcdFx0XHRcdFx0XHRcdFx0dSA9IGEuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ3Jvb3QnID09PSBhLnRyeUxvYykgcmV0dXJuIG8oJ2VuZCcpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhLnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBjID0gbi5jYWxsKGEsICdjYXRjaExvYycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzID0gbi5jYWxsKGEsICdmaW5hbGx5TG9jJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyAmJiBzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcykgdGhyb3cgbmV3IEVycm9yKCd0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseScpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFicnVwdDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyByID49IDA7IC0tcikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBvID0gdGhpcy50cnlFbnRyaWVzW3JdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvLnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgbi5jYWxsKG8sICdmaW5hbGx5TG9jJykgJiYgdGhpcy5wcmV2IDwgby5maW5hbGx5TG9jKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgaSA9IG87XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aSAmJlxuXHRcdFx0XHRcdFx0XHRcdCgnYnJlYWsnID09PSB0IHx8ICdjb250aW51ZScgPT09IHQpICYmXG5cdFx0XHRcdFx0XHRcdFx0aS50cnlMb2MgPD0gZSAmJlxuXHRcdFx0XHRcdFx0XHRcdGUgPD0gaS5maW5hbGx5TG9jICYmXG5cdFx0XHRcdFx0XHRcdFx0KGkgPSBudWxsKTtcblx0XHRcdFx0XHRcdFx0dmFyIGEgPSBpID8gaS5jb21wbGV0aW9uIDoge307XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KGEudHlwZSA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdChhLmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdGkgPyAoKHRoaXMubWV0aG9kID0gJ25leHQnKSwgKHRoaXMubmV4dCA9IGkuZmluYWxseUxvYyksIHkpIDogdGhpcy5jb21wbGV0ZShhKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNvbXBsZXRlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQnYnJlYWsnID09PSB0LnR5cGUgfHwgJ2NvbnRpbnVlJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHQ/ICh0aGlzLm5leHQgPSB0LmFyZylcblx0XHRcdFx0XHRcdFx0XHRcdDogJ3JldHVybicgPT09IHQudHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubWV0aG9kID0gJ3JldHVybicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAnZW5kJykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJ25vcm1hbCcgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmluaXNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgVChyKSwgeTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIudHJ5TG9jID09PSB0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBuLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0VChyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2lsbGVnYWwgY2F0Y2ggYXR0ZW1wdCcpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIChlLCByLCBuKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVyYXRvcjogJChlKSxcblx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdE5hbWU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXh0TG9jOiBuLFxuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdCduZXh0JyA9PT0gdGhpcy5tZXRob2QgJiYgKHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0eVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiB4KHQsIGUsIHIsIG4sIG8sIGksIGEpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR2YXIgdSA9IHRbaV0oYSksXG5cdFx0XHRcdFx0XHRjID0gdS52YWx1ZTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHJldHVybiB2b2lkIHIodCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dS5kb25lID8gZShjKSA6IFByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sIG8pO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gayh0LCBlKSB7XG5cdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykge1xuXHRcdFx0XHRcdHZhciBuID0gZVtyXTtcblx0XHRcdFx0XHQobi5lbnVtZXJhYmxlID0gbi5lbnVtZXJhYmxlIHx8ICExKSxcblx0XHRcdFx0XHRcdChuLmNvbmZpZ3VyYWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdCd2YWx1ZScgaW4gbiAmJiAobi53cml0YWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBFKG4ua2V5KSwgbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIFModCwgZSwgcikge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChlID0gRShlKSkgaW4gdFxuXHRcdFx0XHRcdFx0PyBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSlcblx0XHRcdFx0XHRcdDogKHRbZV0gPSByKSxcblx0XHRcdFx0XHR0XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBFKHQpIHtcblx0XHRcdFx0dmFyIGUgPSAoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IGIodCkgfHwgbnVsbCA9PT0gdCkgcmV0dXJuIHQ7XG5cdFx0XHRcdFx0dmFyIHIgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG5cdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gcikge1xuXHRcdFx0XHRcdFx0dmFyIG4gPSByLmNhbGwodCwgZSB8fCAnZGVmYXVsdCcpO1xuXHRcdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBiKG4pKSByZXR1cm4gbjtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0BAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiAoJ3N0cmluZycgPT09IGUgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xuXHRcdFx0XHR9KSh0LCAnc3RyaW5nJyk7XG5cdFx0XHRcdHJldHVybiAnc3ltYm9sJyA9PT0gYihlKSA/IGUgOiBTdHJpbmcoZSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgTyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdHZhciBlO1xuXHRcdFx0XHRcdFx0IShmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoISh0IGluc3RhbmNlb2YgZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHRcdFx0fSkodGhpcywgdCksXG5cdFx0XHRcdFx0XHRcdFModGhpcywgJ2xhbmd1YWdlJywgdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0Uyh0aGlzLCAnaTE4bkRhdGEnLCB7fSksXG5cdFx0XHRcdFx0XHRcdFModGhpcywgJ3Nlc3Npb25VcGRhdGVMb2cnLCBbXSk7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuV2lraXBsdXNfU2V0dGluZ3MpLmxhbmd1YWdlIHx8IG5hdmlnYXRvci5sYW5ndWFnZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRlID0gKG5hdmlnYXRvci5sYW5ndWFnZSB8fCBuYXZpZ2F0b3IuYnJvd3Nlckxhbmd1YWdlKVxuXHRcdFx0XHRcdFx0XHRcdC5yZXBsYWNlKC9oYW5bc3RdLT8vaSwgJycpXG5cdFx0XHRcdFx0XHRcdFx0LnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLmxhbmd1YWdlID0gZTtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdXaWtpcGx1c19pMThuQ2FjaGUnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRuID0gMCxcblx0XHRcdFx0XHRcdFx0XHRcdG8gPSBPYmplY3Qua2V5cyhyKTtcblx0XHRcdFx0XHRcdFx0XHRuIDwgby5sZW5ndGg7XG5cdFx0XHRcdFx0XHRcdFx0bisrXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBpID0gb1tuXTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmkxOG5EYXRhW2ldID0gcltpXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnV2lraXBsdXNfaTE4bkNhY2hlJywgJ3t9Jyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBlLCByLCBuLCBvLCBpO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQoZSA9IHQpLFxuXHRcdFx0XHRcdFx0KHIgPSBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICd0cmFuc2xhdGUnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IFtdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxhbmd1YWdlIGluIHRoaXMuaTE4bkRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHQgaW4gdGhpcy5pMThuRGF0YVt0aGlzLmxhbmd1YWdlXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAociA9IHRoaXMuaTE4bkRhdGFbdGhpcy5sYW5ndWFnZV1bdF0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICh0aGlzLmxvYWRMYW5ndWFnZSh0aGlzLmxhbmd1YWdlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSB0IGluIHRoaXMuaTE4bkRhdGFbJ2VuLXVzJ10gPyB0aGlzLmkxOG5EYXRhWydlbi11cyddW3RdIDogdCkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiB0aGlzLmxvYWRMYW5ndWFnZSh0aGlzLmxhbmd1YWdlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5mb3JFYWNoKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gci5yZXBsYWNlKCckJy5jb25jYXQoZSArIDEpLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0clxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnbG9hZExhbmd1YWdlJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgobyA9IHcoKS5tYXJrKGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgciwgbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHcoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLnNlc3Npb25VcGRhdGVMb2cuaW5jbHVkZXMoZSkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hYnJ1cHQoJ3JldHVybicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSAyKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmZXRjaChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnaHR0cHM6Ly9naXRjZG4ucWl1d2VuLm5ldC5jbi9JbnRlcmZhY2VBZG1pbi9XaWtpcGx1cy9yYXcvYnJhbmNoL2Rldi9sYW5ndWFnZXMvJy5jb25jYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Jy5qc29uJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHQubmV4dCA9IDcpLCB0LnNlbnQuanNvbigpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gdC5zZW50KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdXaWtpcGx1c19MYW5ndWFnZVZlcnNpb24nKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcwMDAnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXNzaW9uVXBkYXRlTG9nLnB1c2goZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyLl9fdmVyc2lvbiA9PT0gbiAmJiBlIGluIHRoaXMuaTE4bkRhdGEpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNvbnNvbGUuaW5mbyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdVcGRhdGUgJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KGUsICcgc3VwcG9ydCB0byB2ZXJzaW9uICcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoci5fX3ZlcnNpb24pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5pMThuRGF0YVtlXSA9IHIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1dpa2lwbHVzX2kxOG5DYWNoZScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRKU09OLnN0cmluZ2lmeSh0aGlzLmkxOG5EYXRhKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gMTUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSAxMyksICh0LnQwID0gdC5jYXRjaCgyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0W1syLCAxM11dXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdFx0XHRcdFx0XHQoaSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUgPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpID0gby5hcHBseSh0LCBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBhKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHgoaSwgciwgbiwgYSwgdSwgJ25leHQnLCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gdSh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR4KGksIHIsIG4sIGEsIHUsICd0aHJvdycsIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhKHZvaWQgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdKSxcblx0XHRcdFx0XHRcdHIgJiYgayhlLnByb3RvdHlwZSwgciksXG5cdFx0XHRcdFx0XHRuICYmIGsoZSwgbiksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRQID0gbmV3IE8oKTtcblx0XHRcdGZ1bmN0aW9uIGoodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChqID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0aih0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gTCh0LCBlKSB7XG5cdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykge1xuXHRcdFx0XHRcdHZhciBuID0gZVtyXTtcblx0XHRcdFx0XHQobi5lbnVtZXJhYmxlID0gbi5lbnVtZXJhYmxlIHx8ICExKSxcblx0XHRcdFx0XHRcdChuLmNvbmZpZ3VyYWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdCd2YWx1ZScgaW4gbiAmJiAobi53cml0YWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBJKG4ua2V5KSwgbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIF8odCwgZSwgcikge1xuXHRcdFx0XHRyZXR1cm4gZSAmJiBMKHQucHJvdG90eXBlLCBlKSwgciAmJiBMKHQsIHIpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSwgdDtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIEkodCkge1xuXHRcdFx0XHR2YXIgZSA9IChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gaih0KSB8fCBudWxsID09PSB0KSByZXR1cm4gdDtcblx0XHRcdFx0XHR2YXIgciA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcblx0XHRcdFx0XHRpZiAodm9pZCAwICE9PSByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbiA9IHIuY2FsbCh0LCBlIHx8ICdkZWZhdWx0Jyk7XG5cdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IGoobikpIHJldHVybiBuO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuICgnc3RyaW5nJyA9PT0gZSA/IFN0cmluZyA6IE51bWJlcikodCk7XG5cdFx0XHRcdH0pKHQsICdzdHJpbmcnKTtcblx0XHRcdFx0cmV0dXJuICdzeW1ib2wnID09PSBqKGUpID8gZSA6IFN0cmluZyhlKTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIFQodCwgZSkge1xuXHRcdFx0XHRpZiAoISh0IGluc3RhbmNlb2YgZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gUih0KSB7XG5cdFx0XHRcdHZhciBlID0gQSgpO1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHZhciByLFxuXHRcdFx0XHRcdFx0biA9IEIodCk7XG5cdFx0XHRcdFx0aWYgKGUpIHtcblx0XHRcdFx0XHRcdHZhciBvID0gQih0aGlzKS5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdHIgPSBSZWZsZWN0LmNvbnN0cnVjdChuLCBhcmd1bWVudHMsIG8pO1xuXHRcdFx0XHRcdH0gZWxzZSByID0gbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdHJldHVybiAoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdGlmIChlICYmICgnb2JqZWN0JyA9PT0gaihlKSB8fCAnZnVuY3Rpb24nID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG5cdFx0XHRcdFx0XHRpZiAodm9pZCAwICE9PSBlKVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCcpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRpZiAodm9pZCAwID09PSB0KVxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHR9KSh0KTtcblx0XHRcdFx0XHR9KSh0aGlzLCByKTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIE4odCkge1xuXHRcdFx0XHR2YXIgZSA9ICdmdW5jdGlvbicgPT0gdHlwZW9mIE1hcCA/IG5ldyBNYXAoKSA6IHZvaWQgMDtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoTiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdG51bGwgPT09IHQgfHxcblx0XHRcdFx0XHRcdFx0IShmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gLTEgIT09IEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwodCkuaW5kZXhPZignW25hdGl2ZSBjb2RlXScpO1xuXHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAnZnVuY3Rpb24nID09IHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSkodClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHQ7XG5cdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyAhPSB0eXBlb2YgdClcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGUuaGFzKHQpKSByZXR1cm4gZS5nZXQodCk7XG5cdFx0XHRcdFx0XHRcdGUuc2V0KHQsIHIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gcigpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEModCwgYXJndW1lbnRzLCBCKHRoaXMpLmNvbnN0cnVjdG9yKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdChyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUsIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdHJ1Y3Rvcjoge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMSwgd3JpdGFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwfSxcblx0XHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdFx0XHRXKHIsIHQpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdE4odClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIEModCwgZSwgcikge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChDID0gQSgpXG5cdFx0XHRcdFx0XHQ/IFJlZmxlY3QuY29uc3RydWN0LmJpbmQoKVxuXHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBuID0gW251bGxdO1xuXHRcdFx0XHRcdFx0XHRcdG4ucHVzaC5hcHBseShuLCBlKTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IG5ldyAoRnVuY3Rpb24uYmluZC5hcHBseSh0LCBuKSkoKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gciAmJiBXKG8sIHIucHJvdG90eXBlKSwgbztcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0Qy5hcHBseShudWxsLCBhcmd1bWVudHMpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBBKCkge1xuXHRcdFx0XHRpZiAoJ3VuZGVmaW5lZCcgPT0gdHlwZW9mIFJlZmxlY3QgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gITE7XG5cdFx0XHRcdGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gITE7XG5cdFx0XHRcdGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBQcm94eSkgcmV0dXJuICEwO1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHJldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSksICEwO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuICExO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBXKHQsIGUpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoVyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZlxuXHRcdFx0XHRcdFx0PyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpXG5cdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICh0Ll9fcHJvdG9fXyA9IGUpLCB0O1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRXKHQsIGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBCKHQpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoQiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZlxuXHRcdFx0XHRcdFx0PyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpXG5cdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0Qih0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIEYgPSAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHRcdFx0KHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiB7dmFsdWU6IHQsIHdyaXRhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMH0sXG5cdFx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCAncHJvdG90eXBlJywge3dyaXRhYmxlOiAhMX0pLFxuXHRcdFx0XHRcdFx0XHRlICYmIFcodCwgZSk7XG5cdFx0XHRcdFx0fSkociwgdCk7XG5cdFx0XHRcdFx0dmFyIGUgPSBSKHIpO1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHIodCwgbikge1xuXHRcdFx0XHRcdFx0dmFyIG87XG5cdFx0XHRcdFx0XHRyZXR1cm4gVCh0aGlzLCByKSwgKChvID0gZS5jYWxsKHRoaXMsIHQpKS5jb2RlID0gbiksIG87XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBfKHIpO1xuXHRcdFx0XHR9KShOKEVycm9yKSksXG5cdFx0XHRcdFUgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRUKHRoaXMsIHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0Xyh0LCBudWxsLCBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdkZWJ1ZycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAnJztcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZGVidWcoJ1tXaWtpcGx1cy1ERUJVR10gJy5jb25jYXQodCkpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6ICcnO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5pbmZvKCdbV2lraXBsdXMtSU5GT10gJy5jb25jYXQodCkpO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdlcnJvcicsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogW10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSBQLnRyYW5zbGF0ZSh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdHRocm93IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGUubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUuZm9yRWFjaChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9IHIucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcJy5jb25jYXQoZSArIDEpLCAnaWcnKSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1tXaWtpcGx1cy1FUlJPUl0gJy5jb25jYXQocikpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuZXcgRignJy5jb25jYXQociksIHQpKVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSkoKSxcblx0XHRcdFx0TSA9IFU7XG5cdFx0XHRmdW5jdGlvbiBEKHQpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoRCA9XG5cdFx0XHRcdFx0XHQnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgJiYgJ3N5bWJvbCcgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvclxuXHRcdFx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQgIT09IFN5bWJvbC5wcm90b3R5cGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAnc3ltYm9sJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdEQodClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIEcodCwgZSkge1xuXHRcdFx0XHR2YXIgciA9IE9iamVjdC5rZXlzKHQpO1xuXHRcdFx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0XHRcdHZhciBuID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtcblx0XHRcdFx0XHRlICYmXG5cdFx0XHRcdFx0XHQobiA9IG4uZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIGUpLmVudW1lcmFibGU7XG5cdFx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdFx0XHRyLnB1c2guYXBwbHkociwgbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHI7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBxKHQpIHtcblx0XHRcdFx0Zm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcblx0XHRcdFx0XHR2YXIgciA9IG51bGwgIT0gYXJndW1lbnRzW2VdID8gYXJndW1lbnRzW2VdIDoge307XG5cdFx0XHRcdFx0ZSAlIDJcblx0XHRcdFx0XHRcdD8gRyhPYmplY3QociksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0Vih0LCBlLCByW2VdKTtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnNcblx0XHRcdFx0XHRcdFx0PyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSlcblx0XHRcdFx0XHRcdFx0OiBHKE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IociwgZSkpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gUSgpIHtcblx0XHRcdFx0LyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9ibG9iL21haW4vTElDRU5TRSAqLyBRID1cblx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR2YXIgdCxcblx0XHRcdFx0XHRlID0ge30sXG5cdFx0XHRcdFx0ciA9IE9iamVjdC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0biA9IHIuaGFzT3duUHJvcGVydHksXG5cdFx0XHRcdFx0byA9XG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkgfHxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdHRbZV0gPSByLnZhbHVlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRpID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sXG5cdFx0XHRcdFx0YSA9IGkuaXRlcmF0b3IgfHwgJ0BAaXRlcmF0b3InLFxuXHRcdFx0XHRcdHUgPSBpLmFzeW5jSXRlcmF0b3IgfHwgJ0BAYXN5bmNJdGVyYXRvcicsXG5cdFx0XHRcdFx0YyA9IGkudG9TdHJpbmdUYWcgfHwgJ0BAdG9TdHJpbmdUYWcnO1xuXHRcdFx0XHRmdW5jdGlvbiBzKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHt2YWx1ZTogciwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pLCB0W2VdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHMoe30sICcnKTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuICh0W2VdID0gcik7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBmKHQsIGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgaSA9IGUgJiYgZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnID8gZSA6IGcsXG5cdFx0XHRcdFx0XHRhID0gT2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0XHR1ID0gbmV3IEkobiB8fCBbXSk7XG5cdFx0XHRcdFx0cmV0dXJuIG8oYSwgJ19pbnZva2UnLCB7dmFsdWU6IFAodCwgciwgdSl9KSwgYTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBsKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ25vcm1hbCcsXG5cdFx0XHRcdFx0XHRcdGFyZzogdC5jYWxsKGUsIHIpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAndGhyb3cnLFxuXHRcdFx0XHRcdFx0XHRhcmc6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlLndyYXAgPSBmO1xuXHRcdFx0XHR2YXIgcCA9ICdzdXNwZW5kZWRTdGFydCcsXG5cdFx0XHRcdFx0aCA9ICdzdXNwZW5kZWRZaWVsZCcsXG5cdFx0XHRcdFx0diA9ICdleGVjdXRpbmcnLFxuXHRcdFx0XHRcdGQgPSAnY29tcGxldGVkJyxcblx0XHRcdFx0XHR5ID0ge307XG5cdFx0XHRcdGZ1bmN0aW9uIGcoKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiBtKCkge31cblx0XHRcdFx0ZnVuY3Rpb24gYigpIHt9XG5cdFx0XHRcdHZhciB3ID0ge307XG5cdFx0XHRcdHModywgYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dmFyIHggPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG5cdFx0XHRcdFx0ayA9IHggJiYgeCh4KFQoW10pKSk7XG5cdFx0XHRcdGsgJiYgayAhPT0gciAmJiBuLmNhbGwoaywgYSkgJiYgKHcgPSBrKTtcblx0XHRcdFx0dmFyIFMgPSAoYi5wcm90b3R5cGUgPSBnLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodykpO1xuXHRcdFx0XHRmdW5jdGlvbiBFKHQpIHtcblx0XHRcdFx0XHRbJ25leHQnLCAndGhyb3cnLCAncmV0dXJuJ10uZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0cyh0LCBlLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5faW52b2tlKGUsIHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gTyh0LCBlKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcihvLCBpLCBhLCB1KSB7XG5cdFx0XHRcdFx0XHR2YXIgYyA9IGwodFtvXSwgdCwgaSk7XG5cdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyAhPT0gYy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBzID0gYy5hcmcsXG5cdFx0XHRcdFx0XHRcdFx0ZiA9IHMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmICYmICdvYmplY3QnID09IEQoZikgJiYgbi5jYWxsKGYsICdfX2F3YWl0Jylcblx0XHRcdFx0XHRcdFx0XHQ/IGUucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cignbmV4dCcsIHQsIGEsIHUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQ6IGUucmVzb2x2ZShmKS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnZhbHVlID0gdCksIGEocyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1KGMuYXJnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGk7XG5cdFx0XHRcdFx0byh0aGlzLCAnX2ludm9rZScsIHtcblx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgZShmdW5jdGlvbiAoZSwgbykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cih0LCBuLCBlLCBvKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkgPSBpID8gaS50aGVuKG8sIG8pIDogbygpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gUChlLCByLCBuKSB7XG5cdFx0XHRcdFx0dmFyIG8gPSBwO1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoaSwgYSkge1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IHYpIHRocm93IG5ldyBFcnJvcignR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZycpO1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IGQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkpIHRocm93IGE7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHRcdFx0ZG9uZTogITAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmb3IgKG4ubWV0aG9kID0gaSwgbi5hcmcgPSBhOyA7ICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdSA9IG4uZGVsZWdhdGU7XG5cdFx0XHRcdFx0XHRcdGlmICh1KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBqKHUsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyA9PT0geSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCduZXh0JyA9PT0gbi5tZXRob2QpIG4uc2VudCA9IG4uX3NlbnQgPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ3Rocm93JyA9PT0gbi5tZXRob2QpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAobyA9PT0gcCkgdGhyb3cgKChvID0gZCksIG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0XHRuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlICdyZXR1cm4nID09PSBuLm1ldGhvZCAmJiBuLmFicnVwdCgncmV0dXJuJywgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRvID0gdjtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBsKGUsIHIsIG4pO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ25vcm1hbCcgPT09IHMudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoKG8gPSBuLmRvbmUgPyBkIDogaCksIHMuYXJnID09PSB5KSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBzLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6IG4uZG9uZSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCd0aHJvdycgPT09IHMudHlwZSAmJiAoKG8gPSBkKSwgKG4ubWV0aG9kID0gJ3Rocm93JyksIChuLmFyZyA9IHMuYXJnKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBqKGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgbiA9IHIubWV0aG9kLFxuXHRcdFx0XHRcdFx0byA9IGUuaXRlcmF0b3Jbbl07XG5cdFx0XHRcdFx0aWYgKG8gPT09IHQpXG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHQoJ3Rocm93JyA9PT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdGUuaXRlcmF0b3IucmV0dXJuICYmXG5cdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICdyZXR1cm4nKSwgKHIuYXJnID0gdCksIGooZSwgciksICd0aHJvdycgPT09IHIubWV0aG9kKSkgfHxcblx0XHRcdFx0XHRcdFx0XHQoJ3JldHVybicgIT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdCgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcIiArIG4gKyBcIicgbWV0aG9kXCIpKSkpLFxuXHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHZhciBpID0gbChvLCBlLml0ZXJhdG9yLCByLmFyZyk7XG5cdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkudHlwZSkgcmV0dXJuIChyLm1ldGhvZCA9ICd0aHJvdycpLCAoci5hcmcgPSBpLmFyZyksIChyLmRlbGVnYXRlID0gbnVsbCksIHk7XG5cdFx0XHRcdFx0dmFyIGEgPSBpLmFyZztcblx0XHRcdFx0XHRyZXR1cm4gYVxuXHRcdFx0XHRcdFx0PyBhLmRvbmVcblx0XHRcdFx0XHRcdFx0PyAoKHJbZS5yZXN1bHROYW1lXSA9IGEudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBlLm5leHRMb2MpLFxuXHRcdFx0XHRcdFx0XHRcdCdyZXR1cm4nICE9PSByLm1ldGhvZCAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0eSlcblx0XHRcdFx0XHRcdFx0OiBhXG5cdFx0XHRcdFx0XHQ6ICgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QnKSksXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdHkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEwodCkge1xuXHRcdFx0XHRcdHZhciBlID0ge1xuXHRcdFx0XHRcdFx0dHJ5TG9jOiB0WzBdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0MSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksXG5cdFx0XHRcdFx0XHQyIGluIHQgJiYgKChlLmZpbmFsbHlMb2MgPSB0WzJdKSwgKGUuYWZ0ZXJMb2MgPSB0WzNdKSksXG5cdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMucHVzaChlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBfKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHQuY29tcGxldGlvbiB8fCB7fTtcblx0XHRcdFx0XHQoZS50eXBlID0gJ25vcm1hbCcpLCBkZWxldGUgZS5hcmcsICh0LmNvbXBsZXRpb24gPSBlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBJKHQpIHtcblx0XHRcdFx0XHQodGhpcy50cnlFbnRyaWVzID0gW3t0cnlMb2M6ICdyb290J31dKSwgdC5mb3JFYWNoKEwsIHRoaXMpLCB0aGlzLnJlc2V0KCEwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBUKGUpIHtcblx0XHRcdFx0XHRpZiAoZSB8fCAnJyA9PT0gZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBlW2FdO1xuXHRcdFx0XHRcdFx0aWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG5cdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZS5uZXh0KSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdGlmICghaXNOYU4oZS5sZW5ndGgpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gLTEsXG5cdFx0XHRcdFx0XHRcdFx0aSA9IGZ1bmN0aW9uIHIoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgKytvIDwgZS5sZW5ndGg7IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4uY2FsbChlLCBvKSkgcmV0dXJuIChyLnZhbHVlID0gZVtvXSksIChyLmRvbmUgPSAhMSksIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHIudmFsdWUgPSB0KSwgKHIuZG9uZSA9ICEwKSwgcjtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkubmV4dCA9IGkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKEQoZSkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KG0ucHJvdG90eXBlID0gYiksXG5cdFx0XHRcdFx0byhTLCAnY29uc3RydWN0b3InLCB7dmFsdWU6IGIsIGNvbmZpZ3VyYWJsZTogITB9KSxcblx0XHRcdFx0XHRvKGIsICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogbSwgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdChtLmRpc3BsYXlOYW1lID0gcyhiLCBjLCAnR2VuZXJhdG9yRnVuY3Rpb24nKSksXG5cdFx0XHRcdFx0KGUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9ICdmdW5jdGlvbicgPT0gdHlwZW9mIHQgJiYgdC5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdHJldHVybiAhIWUgJiYgKGUgPT09IG0gfHwgJ0dlbmVyYXRvckZ1bmN0aW9uJyA9PT0gKGUuZGlzcGxheU5hbWUgfHwgZS5uYW1lKSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUubWFyayA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRPYmplY3Quc2V0UHJvdG90eXBlT2Zcblx0XHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCBiKVxuXHRcdFx0XHRcdFx0XHRcdDogKCh0Ll9fcHJvdG9fXyA9IGIpLCBzKHQsIGMsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHRcdFx0KHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTKSksXG5cdFx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuYXdyYXAgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0X19hd2FpdDogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0RShPLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0cyhPLnByb3RvdHlwZSwgdSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuQXN5bmNJdGVyYXRvciA9IE8pLFxuXHRcdFx0XHRcdChlLmFzeW5jID0gZnVuY3Rpb24gKHQsIHIsIG4sIG8sIGkpIHtcblx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gaSAmJiAoaSA9IFByb21pc2UpO1xuXHRcdFx0XHRcdFx0dmFyIGEgPSBuZXcgTyhmKHQsIHIsIG4sIG8pLCBpKTtcblx0XHRcdFx0XHRcdHJldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocilcblx0XHRcdFx0XHRcdFx0PyBhXG5cdFx0XHRcdFx0XHRcdDogYS5uZXh0KCkudGhlbihmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuZG9uZSA/IHQudmFsdWUgOiBhLm5leHQoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRFKFMpLFxuXHRcdFx0XHRcdHMoUywgYywgJ0dlbmVyYXRvcicpLFxuXHRcdFx0XHRcdHMoUywgYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0cyhTLCAndG9TdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ1tvYmplY3QgR2VuZXJhdG9yXSc7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUua2V5cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IE9iamVjdCh0KSxcblx0XHRcdFx0XHRcdFx0ciA9IFtdO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgbiBpbiBlKSByLnB1c2gobik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRyLnJldmVyc2UoKSxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgci5sZW5ndGg7ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLnBvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4gaW4gZSkgcmV0dXJuICh0LnZhbHVlID0gbiksICh0LmRvbmUgPSAhMSksIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5kb25lID0gITApLCB0O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLnZhbHVlcyA9IFQpLFxuXHRcdFx0XHRcdChJLnByb3RvdHlwZSA9IHtcblx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiBJLFxuXHRcdFx0XHRcdFx0cmVzZXQ6IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHQoKHRoaXMucHJldiA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRvbmUgPSAhMSksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAnbmV4dCcpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmFyZyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKF8pLFxuXHRcdFx0XHRcdFx0XHRcdCFlKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciBpbiB0aGlzKVxuXHRcdFx0XHRcdFx0XHRcdFx0J3QnID09PSByLmNoYXJBdCgwKSAmJiBuLmNhbGwodGhpcywgcikgJiYgIWlzTmFOKCtyLnNsaWNlKDEpKSAmJiAodGhpc1tyXSA9IHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHN0b3A6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kb25lID0gITA7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ydmFsO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5kb25lKSB0aHJvdyBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8obiwgbykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQodS50eXBlID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdFx0XHQodS5hcmcgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBuKSxcblx0XHRcdFx0XHRcdFx0XHRcdG8gJiYgKChyLm1ldGhvZCA9ICduZXh0JyksIChyLmFyZyA9IHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdCEhb1xuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhID0gdGhpcy50cnlFbnRyaWVzW2ldLFxuXHRcdFx0XHRcdFx0XHRcdFx0dSA9IGEuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ3Jvb3QnID09PSBhLnRyeUxvYykgcmV0dXJuIG8oJ2VuZCcpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhLnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBjID0gbi5jYWxsKGEsICdjYXRjaExvYycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzID0gbi5jYWxsKGEsICdmaW5hbGx5TG9jJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyAmJiBzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcykgdGhyb3cgbmV3IEVycm9yKCd0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseScpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFicnVwdDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyByID49IDA7IC0tcikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBvID0gdGhpcy50cnlFbnRyaWVzW3JdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvLnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgbi5jYWxsKG8sICdmaW5hbGx5TG9jJykgJiYgdGhpcy5wcmV2IDwgby5maW5hbGx5TG9jKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgaSA9IG87XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aSAmJlxuXHRcdFx0XHRcdFx0XHRcdCgnYnJlYWsnID09PSB0IHx8ICdjb250aW51ZScgPT09IHQpICYmXG5cdFx0XHRcdFx0XHRcdFx0aS50cnlMb2MgPD0gZSAmJlxuXHRcdFx0XHRcdFx0XHRcdGUgPD0gaS5maW5hbGx5TG9jICYmXG5cdFx0XHRcdFx0XHRcdFx0KGkgPSBudWxsKTtcblx0XHRcdFx0XHRcdFx0dmFyIGEgPSBpID8gaS5jb21wbGV0aW9uIDoge307XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KGEudHlwZSA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdChhLmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdGkgPyAoKHRoaXMubWV0aG9kID0gJ25leHQnKSwgKHRoaXMubmV4dCA9IGkuZmluYWxseUxvYyksIHkpIDogdGhpcy5jb21wbGV0ZShhKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNvbXBsZXRlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQnYnJlYWsnID09PSB0LnR5cGUgfHwgJ2NvbnRpbnVlJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHQ/ICh0aGlzLm5leHQgPSB0LmFyZylcblx0XHRcdFx0XHRcdFx0XHRcdDogJ3JldHVybicgPT09IHQudHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubWV0aG9kID0gJ3JldHVybicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAnZW5kJykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJ25vcm1hbCcgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmluaXNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgXyhyKSwgeTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIudHJ5TG9jID09PSB0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBuLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XyhyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2lsbGVnYWwgY2F0Y2ggYXR0ZW1wdCcpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIChlLCByLCBuKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVyYXRvcjogVChlKSxcblx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdE5hbWU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXh0TG9jOiBuLFxuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdCduZXh0JyA9PT0gdGhpcy5tZXRob2QgJiYgKHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0eVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBIKHQsIGUsIHIsIG4sIG8sIGksIGEpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR2YXIgdSA9IHRbaV0oYSksXG5cdFx0XHRcdFx0XHRjID0gdS52YWx1ZTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHJldHVybiB2b2lkIHIodCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dS5kb25lID8gZShjKSA6IFByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sIG8pO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24geih0KSB7XG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB0aGlzLFxuXHRcdFx0XHRcdFx0ciA9IGFyZ3VtZW50cztcblx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKG4sIG8pIHtcblx0XHRcdFx0XHRcdHZhciBpID0gdC5hcHBseShlLCByKTtcblx0XHRcdFx0XHRcdGZ1bmN0aW9uIGEodCkge1xuXHRcdFx0XHRcdFx0XHRIKGksIG4sIG8sIGEsIHUsICduZXh0JywgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiB1KHQpIHtcblx0XHRcdFx0XHRcdFx0SChpLCBuLCBvLCBhLCB1LCAndGhyb3cnLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGEodm9pZCAwKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIFkodCwgZSkge1xuXHRcdFx0XHRmb3IgKHZhciByID0gMDsgciA8IGUubGVuZ3RoOyByKyspIHtcblx0XHRcdFx0XHR2YXIgbiA9IGVbcl07XG5cdFx0XHRcdFx0KG4uZW51bWVyYWJsZSA9IG4uZW51bWVyYWJsZSB8fCAhMSksXG5cdFx0XHRcdFx0XHQobi5jb25maWd1cmFibGUgPSAhMCksXG5cdFx0XHRcdFx0XHQndmFsdWUnIGluIG4gJiYgKG4ud3JpdGFibGUgPSAhMCksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgSihuLmtleSksIG4pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBWKHQsIGUsIHIpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoZSA9IEooZSkpIGluIHRcblx0XHRcdFx0XHRcdD8gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHt2YWx1ZTogciwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pXG5cdFx0XHRcdFx0XHQ6ICh0W2VdID0gciksXG5cdFx0XHRcdFx0dFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gSih0KSB7XG5cdFx0XHRcdHZhciBlID0gKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBEKHQpIHx8IG51bGwgPT09IHQpIHJldHVybiB0O1xuXHRcdFx0XHRcdHZhciByID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gci5jYWxsKHQsIGUgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gRChuKSkgcmV0dXJuIG47XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gKCdzdHJpbmcnID09PSBlID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcblx0XHRcdFx0fSkodCwgJ3N0cmluZycpO1xuXHRcdFx0XHRyZXR1cm4gJ3N5bWJvbCcgPT09IEQoZSkgPyBlIDogU3RyaW5nKGUpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIEsgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0XHR9KSh0aGlzLCB0KSxcblx0XHRcdFx0XHRcdFx0Vih0aGlzLCAncGFnZUluZm9DYWNoZScsIHt9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGUsIHIsIG4sIG8sIGEsIHUsIGMsIHMsIGY7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdChlID0gdCksXG5cdFx0XHRcdFx0XHQociA9IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2dldEVkaXRUb2tlbicsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHQoKGYgPSB6KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRRKCkubWFyayhmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBRKCkud3JhcChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAyKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bS5nZXQoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlID0gdC5zZW50KS5xdWVyeSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUucXVlcnkudG9rZW5zICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5xdWVyeS50b2tlbnMuY3NyZnRva2VuICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JytcXFxcJyAhPT0gZS5xdWVyeS50b2tlbnMuY3NyZnRva2VuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSA3O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFicnVwdCgncmV0dXJuJywgZS5xdWVyeS50b2tlbnMuY3NyZnRva2VuKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hYnJ1cHQoJ3JldHVybicsIE0uZXJyb3IoJ2ZhaWxfdG9fZ2V0X2VkaXR0b2tlbicpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDg6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2dldFBhZ2VJbmZvJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgocyA9IHooXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFEoKS5tYXJrKGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByLCBuLCBvLCBpLCBhO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBRKCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KChyID0gZS50aXRsZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSBlLnJldmlzaW9uSWQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSAxKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByb3A6ICdyZXZpc2lvbnN8aW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRydnByb3A6ICd0aW1lc3RhbXB8aWRzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCFuKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSA3O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvLnJldmlkcyA9IG4pLCAodC5uZXh0ID0gMTEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMTE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLnBhZ2VJbmZvQ2FjaGVbcl0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hYnJ1cHQoJ3JldHVybicsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aW1lc3RhbXA6IHRoaXMucGFnZUluZm9DYWNoZVtyXS50aW1lc3RhbXAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV2aXNpb25JZDogdGhpcy5wYWdlSW5mb0NhY2hlW3JdLnJldmlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8udGl0bGVzID0gcjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTE6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5uZXh0ID0gMTMpLCBtLmdldChvKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghKGkgPSB0LnNlbnQpLnF1ZXJ5IHx8ICFpLnF1ZXJ5LnBhZ2VzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMjA7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCctMScgIT09IE9iamVjdC5rZXlzKGkucXVlcnkucGFnZXMpWzBdKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMTc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYWJydXB0KCdyZXR1cm4nLCB7fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE3OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChhID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkucXVlcnkucGFnZXNbT2JqZWN0LmtleXMoaS5xdWVyeS5wYWdlcylbMF1dXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5yZXZpc2lvbnNbMF0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIgJiYgKHRoaXMucGFnZUluZm9DYWNoZVtyXSA9IGEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuYWJydXB0KCdyZXR1cm4nLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aW1lc3RhbXA6IGEudGltZXN0YW1wLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV2aXNpb25JZDogYS5yZXZpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMjU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDIyKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC50MCA9IHQuY2F0Y2goMSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uZXJyb3IoJ2ZhaWxfdG9fZ2V0X2VkaXR0b2tlbicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbWzEsIDIyXV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdnZXRXaWtpVGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHQoKGMgPSB6KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRRKCkubWFyayhmdW5jdGlvbiB0KGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgciwgbiwgbztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gUSgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9IGUuc2VjdGlvbiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG4gPSBlLnJldmlzaW9uSWQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSAxKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gNCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmV0Y2goXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KGxvY2F0aW9uLnByb3RvY29sLCAnLy8nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KGxvY2F0aW9uLmhvc3QpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoaS5zY3JpcHRQYXRoLCAnL2luZGV4LnBocD9vbGRpZD0nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KG4sICcmc2VjdGlvbj0nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KHIsICcmYWN0aW9uPXJhdycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHQubmV4dCA9IDYpLCB0LnNlbnQudGV4dCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA2OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKG8gPSB0LnNlbnQpLCB0LmFicnVwdCgncmV0dXJuJywgbyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5wcmV2ID0gMTApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnQwID0gdC5jYXRjaCgxKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5lcnJvcignZmFpbF90b19nZXRfd2lraXRleHQnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W1sxLCAxMF1dXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAncGFyc2VXaWtpVGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHQoKHUgPSB6KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRRKCkubWFyayhmdW5jdGlvbiB0KGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBRKCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gby5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gb1sxXSA/IG9bMV0gOiAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSA1KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtLnBvc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhY3Rpb246ICdwYXJzZScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0OiBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwc3Q6ICd0cnVlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIShuID0gdC5zZW50KS5wYXJzZSB8fCAhbi5wYXJzZS50ZXh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gODtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hYnJ1cHQoJ3JldHVybicsIG4ucGFyc2UudGV4dFsnKiddKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgODpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMTM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC50MCA9IHQuY2F0Y2goMikpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uZXJyb3IoJ2NhbnRfcGFyc2Vfd2lraXRleHQnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W1syLCAxMF1dXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZWRpdCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHQoKGEgPSB6KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRRKCkubWFyayhmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Yyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bCA9IGFyZ3VtZW50cztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gUSgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9IChlID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGwubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGxbMF0gPyBsWzBdIDoge30pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGl0bGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gZS5jb250ZW50KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobyA9IGUuZWRpdFRva2VuKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoaSA9IGUudGltZXN0YW1wKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoYSA9IGUuY29uZmlnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodSA9IHZvaWQgMCA9PT0gYSA/IHt9IDogYSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGMgPSBlLmFkZGl0aW9uYWxDb25maWcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzID0gdm9pZCAwID09PSBjID8ge30gOiBjKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5wcmV2ID0gMSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG0ucG9zdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHEoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHEoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWN0aW9uOiAnZWRpdCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0OiBuLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9rZW46IG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSA/IHtiYXNldGltZXN0YW1wOiBpfSA6IHt9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChmID0gdC5zZW50KSwgKHQubmV4dCA9IDEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSA3KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC50MCA9IHQuY2F0Y2goMSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uZXJyb3IoJ25ldHdvcmtfZWRpdF9lcnJvcicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFmLmVkaXQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAyMjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJ1N1Y2Nlc3MnICE9PSBmLmVkaXQucmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMTU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYWJydXB0KCdyZXR1cm4nLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIWYuZWRpdC5jb2RlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMTk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KFAudHJhbnNsYXRlKCdoaXRfYWJ1c2VmaWx0ZXInKSwgJzonKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zi5lZGl0LmluZm8ucmVwbGFjZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnL0hpdCBBYnVzZUZpbHRlcjogL2lnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6IHNtYWxsZXI7XCI+J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zi5lZGl0Lndhcm5pbmcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCc8L2Rpdj5cXG4gICAgICAgICAgICAgICAgICAgICdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTk6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uZXJyb3IoJ3Vua25vd25fZWRpdF9lcnJvcicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMjM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zi5lcnJvciAmJiBmLmVycm9yLmNvZGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IE0uZXJyb3IoZi5lcnJvci5jb2RlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZi5jb2RlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IE0uZXJyb3IoZi5jb2RlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBNLmVycm9yKCd1bmtub3duX2VkaXRfZXJyb3InKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W1sxLCA3XV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2dldExhdGVzdFJldmlzaW9uSWRGb3JQYWdlJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgobyA9IHooXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFEoKS5tYXJrKGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByLCBuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBRKCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAyKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFBhZ2VJbmZvKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSB0LnNlbnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gci5yZXZpc2lvbklkKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmFicnVwdCgncmV0dXJuJywgbilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdKSxcblx0XHRcdFx0XHRcdHIgJiYgWShlLnByb3RvdHlwZSwgciksXG5cdFx0XHRcdFx0XHRuICYmIFkoZSwgbiksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRYID0gbmV3IEsoKTtcblx0XHRcdGZ1bmN0aW9uIFoodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChaID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0Wih0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gdHQodCwgZSkge1xuXHRcdFx0XHR2YXIgciA9IE9iamVjdC5rZXlzKHQpO1xuXHRcdFx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0XHRcdHZhciBuID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtcblx0XHRcdFx0XHRlICYmXG5cdFx0XHRcdFx0XHQobiA9IG4uZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIGUpLmVudW1lcmFibGU7XG5cdFx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdFx0XHRyLnB1c2guYXBwbHkociwgbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHI7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBldCh0KSB7XG5cdFx0XHRcdGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG5cdFx0XHRcdFx0dmFyIHIgPSBudWxsICE9IGFyZ3VtZW50c1tlXSA/IGFyZ3VtZW50c1tlXSA6IHt9O1xuXHRcdFx0XHRcdGUgJSAyXG5cdFx0XHRcdFx0XHQ/IHR0KE9iamVjdChyKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRhdCh0LCBlLCByW2VdKTtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnNcblx0XHRcdFx0XHRcdFx0PyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSlcblx0XHRcdFx0XHRcdFx0OiB0dChPYmplY3QocikpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsIGUpKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdDtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHJ0KCkge1xuXHRcdFx0XHQvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9MSUNFTlNFICovIHJ0ID1cblx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR2YXIgdCxcblx0XHRcdFx0XHRlID0ge30sXG5cdFx0XHRcdFx0ciA9IE9iamVjdC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0biA9IHIuaGFzT3duUHJvcGVydHksXG5cdFx0XHRcdFx0byA9XG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkgfHxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdHRbZV0gPSByLnZhbHVlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRpID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sXG5cdFx0XHRcdFx0YSA9IGkuaXRlcmF0b3IgfHwgJ0BAaXRlcmF0b3InLFxuXHRcdFx0XHRcdHUgPSBpLmFzeW5jSXRlcmF0b3IgfHwgJ0BAYXN5bmNJdGVyYXRvcicsXG5cdFx0XHRcdFx0YyA9IGkudG9TdHJpbmdUYWcgfHwgJ0BAdG9TdHJpbmdUYWcnO1xuXHRcdFx0XHRmdW5jdGlvbiBzKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHt2YWx1ZTogciwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pLCB0W2VdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHMoe30sICcnKTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuICh0W2VdID0gcik7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBmKHQsIGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgaSA9IGUgJiYgZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnID8gZSA6IGcsXG5cdFx0XHRcdFx0XHRhID0gT2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0XHR1ID0gbmV3IEkobiB8fCBbXSk7XG5cdFx0XHRcdFx0cmV0dXJuIG8oYSwgJ19pbnZva2UnLCB7dmFsdWU6IFAodCwgciwgdSl9KSwgYTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBsKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ25vcm1hbCcsXG5cdFx0XHRcdFx0XHRcdGFyZzogdC5jYWxsKGUsIHIpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAndGhyb3cnLFxuXHRcdFx0XHRcdFx0XHRhcmc6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlLndyYXAgPSBmO1xuXHRcdFx0XHR2YXIgcCA9ICdzdXNwZW5kZWRTdGFydCcsXG5cdFx0XHRcdFx0aCA9ICdzdXNwZW5kZWRZaWVsZCcsXG5cdFx0XHRcdFx0diA9ICdleGVjdXRpbmcnLFxuXHRcdFx0XHRcdGQgPSAnY29tcGxldGVkJyxcblx0XHRcdFx0XHR5ID0ge307XG5cdFx0XHRcdGZ1bmN0aW9uIGcoKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiBtKCkge31cblx0XHRcdFx0ZnVuY3Rpb24gYigpIHt9XG5cdFx0XHRcdHZhciB3ID0ge307XG5cdFx0XHRcdHModywgYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dmFyIHggPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG5cdFx0XHRcdFx0ayA9IHggJiYgeCh4KFQoW10pKSk7XG5cdFx0XHRcdGsgJiYgayAhPT0gciAmJiBuLmNhbGwoaywgYSkgJiYgKHcgPSBrKTtcblx0XHRcdFx0dmFyIFMgPSAoYi5wcm90b3R5cGUgPSBnLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodykpO1xuXHRcdFx0XHRmdW5jdGlvbiBFKHQpIHtcblx0XHRcdFx0XHRbJ25leHQnLCAndGhyb3cnLCAncmV0dXJuJ10uZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0cyh0LCBlLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5faW52b2tlKGUsIHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gTyh0LCBlKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcihvLCBpLCBhLCB1KSB7XG5cdFx0XHRcdFx0XHR2YXIgYyA9IGwodFtvXSwgdCwgaSk7XG5cdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyAhPT0gYy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBzID0gYy5hcmcsXG5cdFx0XHRcdFx0XHRcdFx0ZiA9IHMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmICYmICdvYmplY3QnID09IFooZikgJiYgbi5jYWxsKGYsICdfX2F3YWl0Jylcblx0XHRcdFx0XHRcdFx0XHQ/IGUucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cignbmV4dCcsIHQsIGEsIHUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQ6IGUucmVzb2x2ZShmKS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnZhbHVlID0gdCksIGEocyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1KGMuYXJnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGk7XG5cdFx0XHRcdFx0byh0aGlzLCAnX2ludm9rZScsIHtcblx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgZShmdW5jdGlvbiAoZSwgbykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cih0LCBuLCBlLCBvKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkgPSBpID8gaS50aGVuKG8sIG8pIDogbygpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gUChlLCByLCBuKSB7XG5cdFx0XHRcdFx0dmFyIG8gPSBwO1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoaSwgYSkge1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IHYpIHRocm93IG5ldyBFcnJvcignR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZycpO1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IGQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkpIHRocm93IGE7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHRcdFx0ZG9uZTogITAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmb3IgKG4ubWV0aG9kID0gaSwgbi5hcmcgPSBhOyA7ICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdSA9IG4uZGVsZWdhdGU7XG5cdFx0XHRcdFx0XHRcdGlmICh1KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBqKHUsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyA9PT0geSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCduZXh0JyA9PT0gbi5tZXRob2QpIG4uc2VudCA9IG4uX3NlbnQgPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ3Rocm93JyA9PT0gbi5tZXRob2QpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAobyA9PT0gcCkgdGhyb3cgKChvID0gZCksIG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0XHRuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlICdyZXR1cm4nID09PSBuLm1ldGhvZCAmJiBuLmFicnVwdCgncmV0dXJuJywgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRvID0gdjtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBsKGUsIHIsIG4pO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ25vcm1hbCcgPT09IHMudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoKG8gPSBuLmRvbmUgPyBkIDogaCksIHMuYXJnID09PSB5KSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBzLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6IG4uZG9uZSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCd0aHJvdycgPT09IHMudHlwZSAmJiAoKG8gPSBkKSwgKG4ubWV0aG9kID0gJ3Rocm93JyksIChuLmFyZyA9IHMuYXJnKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBqKGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgbiA9IHIubWV0aG9kLFxuXHRcdFx0XHRcdFx0byA9IGUuaXRlcmF0b3Jbbl07XG5cdFx0XHRcdFx0aWYgKG8gPT09IHQpXG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHQoJ3Rocm93JyA9PT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdGUuaXRlcmF0b3IucmV0dXJuICYmXG5cdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICdyZXR1cm4nKSwgKHIuYXJnID0gdCksIGooZSwgciksICd0aHJvdycgPT09IHIubWV0aG9kKSkgfHxcblx0XHRcdFx0XHRcdFx0XHQoJ3JldHVybicgIT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdCgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcIiArIG4gKyBcIicgbWV0aG9kXCIpKSkpLFxuXHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHZhciBpID0gbChvLCBlLml0ZXJhdG9yLCByLmFyZyk7XG5cdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkudHlwZSkgcmV0dXJuIChyLm1ldGhvZCA9ICd0aHJvdycpLCAoci5hcmcgPSBpLmFyZyksIChyLmRlbGVnYXRlID0gbnVsbCksIHk7XG5cdFx0XHRcdFx0dmFyIGEgPSBpLmFyZztcblx0XHRcdFx0XHRyZXR1cm4gYVxuXHRcdFx0XHRcdFx0PyBhLmRvbmVcblx0XHRcdFx0XHRcdFx0PyAoKHJbZS5yZXN1bHROYW1lXSA9IGEudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBlLm5leHRMb2MpLFxuXHRcdFx0XHRcdFx0XHRcdCdyZXR1cm4nICE9PSByLm1ldGhvZCAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0eSlcblx0XHRcdFx0XHRcdFx0OiBhXG5cdFx0XHRcdFx0XHQ6ICgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QnKSksXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdHkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEwodCkge1xuXHRcdFx0XHRcdHZhciBlID0ge1xuXHRcdFx0XHRcdFx0dHJ5TG9jOiB0WzBdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0MSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksXG5cdFx0XHRcdFx0XHQyIGluIHQgJiYgKChlLmZpbmFsbHlMb2MgPSB0WzJdKSwgKGUuYWZ0ZXJMb2MgPSB0WzNdKSksXG5cdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMucHVzaChlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBfKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHQuY29tcGxldGlvbiB8fCB7fTtcblx0XHRcdFx0XHQoZS50eXBlID0gJ25vcm1hbCcpLCBkZWxldGUgZS5hcmcsICh0LmNvbXBsZXRpb24gPSBlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBJKHQpIHtcblx0XHRcdFx0XHQodGhpcy50cnlFbnRyaWVzID0gW3t0cnlMb2M6ICdyb290J31dKSwgdC5mb3JFYWNoKEwsIHRoaXMpLCB0aGlzLnJlc2V0KCEwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBUKGUpIHtcblx0XHRcdFx0XHRpZiAoZSB8fCAnJyA9PT0gZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBlW2FdO1xuXHRcdFx0XHRcdFx0aWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG5cdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZS5uZXh0KSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdGlmICghaXNOYU4oZS5sZW5ndGgpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gLTEsXG5cdFx0XHRcdFx0XHRcdFx0aSA9IGZ1bmN0aW9uIHIoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgKytvIDwgZS5sZW5ndGg7IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4uY2FsbChlLCBvKSkgcmV0dXJuIChyLnZhbHVlID0gZVtvXSksIChyLmRvbmUgPSAhMSksIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHIudmFsdWUgPSB0KSwgKHIuZG9uZSA9ICEwKSwgcjtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkubmV4dCA9IGkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFooZSkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KG0ucHJvdG90eXBlID0gYiksXG5cdFx0XHRcdFx0byhTLCAnY29uc3RydWN0b3InLCB7dmFsdWU6IGIsIGNvbmZpZ3VyYWJsZTogITB9KSxcblx0XHRcdFx0XHRvKGIsICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogbSwgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdChtLmRpc3BsYXlOYW1lID0gcyhiLCBjLCAnR2VuZXJhdG9yRnVuY3Rpb24nKSksXG5cdFx0XHRcdFx0KGUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9ICdmdW5jdGlvbicgPT0gdHlwZW9mIHQgJiYgdC5jb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdHJldHVybiAhIWUgJiYgKGUgPT09IG0gfHwgJ0dlbmVyYXRvckZ1bmN0aW9uJyA9PT0gKGUuZGlzcGxheU5hbWUgfHwgZS5uYW1lKSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUubWFyayA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRPYmplY3Quc2V0UHJvdG90eXBlT2Zcblx0XHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCBiKVxuXHRcdFx0XHRcdFx0XHRcdDogKCh0Ll9fcHJvdG9fXyA9IGIpLCBzKHQsIGMsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHRcdFx0KHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTKSksXG5cdFx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuYXdyYXAgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0X19hd2FpdDogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0RShPLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0cyhPLnByb3RvdHlwZSwgdSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUuQXN5bmNJdGVyYXRvciA9IE8pLFxuXHRcdFx0XHRcdChlLmFzeW5jID0gZnVuY3Rpb24gKHQsIHIsIG4sIG8sIGkpIHtcblx0XHRcdFx0XHRcdHZvaWQgMCA9PT0gaSAmJiAoaSA9IFByb21pc2UpO1xuXHRcdFx0XHRcdFx0dmFyIGEgPSBuZXcgTyhmKHQsIHIsIG4sIG8pLCBpKTtcblx0XHRcdFx0XHRcdHJldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocilcblx0XHRcdFx0XHRcdFx0PyBhXG5cdFx0XHRcdFx0XHRcdDogYS5uZXh0KCkudGhlbihmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuZG9uZSA/IHQudmFsdWUgOiBhLm5leHQoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRFKFMpLFxuXHRcdFx0XHRcdHMoUywgYywgJ0dlbmVyYXRvcicpLFxuXHRcdFx0XHRcdHMoUywgYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0cyhTLCAndG9TdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJ1tvYmplY3QgR2VuZXJhdG9yXSc7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUua2V5cyA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IE9iamVjdCh0KSxcblx0XHRcdFx0XHRcdFx0ciA9IFtdO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgbiBpbiBlKSByLnB1c2gobik7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRyLnJldmVyc2UoKSxcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgci5sZW5ndGg7ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLnBvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4gaW4gZSkgcmV0dXJuICh0LnZhbHVlID0gbiksICh0LmRvbmUgPSAhMSksIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5kb25lID0gITApLCB0O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLnZhbHVlcyA9IFQpLFxuXHRcdFx0XHRcdChJLnByb3RvdHlwZSA9IHtcblx0XHRcdFx0XHRcdGNvbnN0cnVjdG9yOiBJLFxuXHRcdFx0XHRcdFx0cmVzZXQ6IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHQoKHRoaXMucHJldiA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRvbmUgPSAhMSksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAnbmV4dCcpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmFyZyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKF8pLFxuXHRcdFx0XHRcdFx0XHRcdCFlKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciBpbiB0aGlzKVxuXHRcdFx0XHRcdFx0XHRcdFx0J3QnID09PSByLmNoYXJBdCgwKSAmJiBuLmNhbGwodGhpcywgcikgJiYgIWlzTmFOKCtyLnNsaWNlKDEpKSAmJiAodGhpc1tyXSA9IHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHN0b3A6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kb25lID0gITA7XG5cdFx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5ydmFsO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5kb25lKSB0aHJvdyBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIG8obiwgbykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQodS50eXBlID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdFx0XHQodS5hcmcgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBuKSxcblx0XHRcdFx0XHRcdFx0XHRcdG8gJiYgKChyLm1ldGhvZCA9ICduZXh0JyksIChyLmFyZyA9IHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdCEhb1xuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhID0gdGhpcy50cnlFbnRyaWVzW2ldLFxuXHRcdFx0XHRcdFx0XHRcdFx0dSA9IGEuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ3Jvb3QnID09PSBhLnRyeUxvYykgcmV0dXJuIG8oJ2VuZCcpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhLnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBjID0gbi5jYWxsKGEsICdjYXRjaExvYycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzID0gbi5jYWxsKGEsICdmaW5hbGx5TG9jJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyAmJiBzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcykgdGhyb3cgbmV3IEVycm9yKCd0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseScpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFicnVwdDogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgciA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyByID49IDA7IC0tcikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBvID0gdGhpcy50cnlFbnRyaWVzW3JdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChvLnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgbi5jYWxsKG8sICdmaW5hbGx5TG9jJykgJiYgdGhpcy5wcmV2IDwgby5maW5hbGx5TG9jKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgaSA9IG87XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aSAmJlxuXHRcdFx0XHRcdFx0XHRcdCgnYnJlYWsnID09PSB0IHx8ICdjb250aW51ZScgPT09IHQpICYmXG5cdFx0XHRcdFx0XHRcdFx0aS50cnlMb2MgPD0gZSAmJlxuXHRcdFx0XHRcdFx0XHRcdGUgPD0gaS5maW5hbGx5TG9jICYmXG5cdFx0XHRcdFx0XHRcdFx0KGkgPSBudWxsKTtcblx0XHRcdFx0XHRcdFx0dmFyIGEgPSBpID8gaS5jb21wbGV0aW9uIDoge307XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KGEudHlwZSA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdChhLmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdGkgPyAoKHRoaXMubWV0aG9kID0gJ25leHQnKSwgKHRoaXMubmV4dCA9IGkuZmluYWxseUxvYyksIHkpIDogdGhpcy5jb21wbGV0ZShhKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNvbXBsZXRlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQnYnJlYWsnID09PSB0LnR5cGUgfHwgJ2NvbnRpbnVlJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHQ/ICh0aGlzLm5leHQgPSB0LmFyZylcblx0XHRcdFx0XHRcdFx0XHRcdDogJ3JldHVybicgPT09IHQudHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICgodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubWV0aG9kID0gJ3JldHVybicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLm5leHQgPSAnZW5kJykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJ25vcm1hbCcgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmluaXNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIuZmluYWxseUxvYyA9PT0gdCkgcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLCByLmFmdGVyTG9jKSwgXyhyKSwgeTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIudHJ5TG9jID09PSB0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIuY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBuLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XyhyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ2lsbGVnYWwgY2F0Y2ggYXR0ZW1wdCcpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIChlLCByLCBuKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZGVsZWdhdGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVyYXRvcjogVChlKSxcblx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdE5hbWU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXh0TG9jOiBuLFxuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdCduZXh0JyA9PT0gdGhpcy5tZXRob2QgJiYgKHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0eVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBudCh0LCBlLCByLCBuLCBvLCBpLCBhKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dmFyIHUgPSB0W2ldKGEpLFxuXHRcdFx0XHRcdFx0YyA9IHUudmFsdWU7XG5cdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gdm9pZCByKHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHUuZG9uZSA/IGUoYykgOiBQcm9taXNlLnJlc29sdmUoYykudGhlbihuLCBvKTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIG90KHQpIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHRoaXMsXG5cdFx0XHRcdFx0XHRyID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAobiwgbykge1xuXHRcdFx0XHRcdFx0dmFyIGkgPSB0LmFwcGx5KGUsIHIpO1xuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gYSh0KSB7XG5cdFx0XHRcdFx0XHRcdG50KGksIG4sIG8sIGEsIHUsICduZXh0JywgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiB1KHQpIHtcblx0XHRcdFx0XHRcdFx0bnQoaSwgbiwgbywgYSwgdSwgJ3Rocm93JywgdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRhKHZvaWQgMCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBpdCh0LCBlKSB7XG5cdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykge1xuXHRcdFx0XHRcdHZhciBuID0gZVtyXTtcblx0XHRcdFx0XHQobi5lbnVtZXJhYmxlID0gbi5lbnVtZXJhYmxlIHx8ICExKSxcblx0XHRcdFx0XHRcdChuLmNvbmZpZ3VyYWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdCd2YWx1ZScgaW4gbiAmJiAobi53cml0YWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCB1dChuLmtleSksIG4pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBhdCh0LCBlLCByKSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KGUgPSB1dChlKSkgaW4gdFxuXHRcdFx0XHRcdFx0PyBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSlcblx0XHRcdFx0XHRcdDogKHRbZV0gPSByKSxcblx0XHRcdFx0XHR0XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiB1dCh0KSB7XG5cdFx0XHRcdHZhciBlID0gKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBaKHQpIHx8IG51bGwgPT09IHQpIHJldHVybiB0O1xuXHRcdFx0XHRcdHZhciByID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gci5jYWxsKHQsIGUgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0gWihuKSkgcmV0dXJuIG47XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gKCdzdHJpbmcnID09PSBlID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcblx0XHRcdFx0fSkodCwgJ3N0cmluZycpO1xuXHRcdFx0XHRyZXR1cm4gJ3N5bWJvbCcgPT09IFooZSkgPyBlIDogU3RyaW5nKGUpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN0ID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiB0KGUpIHtcblx0XHRcdFx0XHRcdHZhciByID0gZS50aXRsZSxcblx0XHRcdFx0XHRcdFx0biA9IGUucmV2aXNpb25JZDtcblx0XHRcdFx0XHRcdCEoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCEodCBpbnN0YW5jZW9mIGUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHRcdH0pKHRoaXMsIHQpLFxuXHRcdFx0XHRcdFx0XHRhdCh0aGlzLCAndGltZXN0YW1wJywgdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0YXQodGhpcywgJ2VkaXRUb2tlbicsIHZvaWQgMCksXG5cdFx0XHRcdFx0XHRcdGF0KHRoaXMsICd0aXRsZScsIHZvaWQgMCksXG5cdFx0XHRcdFx0XHRcdGF0KHRoaXMsICdyZXZpc2lvbklkJywgdm9pZCAwKSxcblx0XHRcdFx0XHRcdFx0YXQodGhpcywgJ2luaXRlZCcsICExKSxcblx0XHRcdFx0XHRcdFx0YXQodGhpcywgJ2lzTmV3UGFnZScsICExKSxcblx0XHRcdFx0XHRcdFx0YXQodGhpcywgJ3NlY3Rpb25DYWNoZScsIHt9KSxcblx0XHRcdFx0XHRcdFx0KHRoaXMudGl0bGUgPSByKSxcblx0XHRcdFx0XHRcdFx0KHRoaXMucmV2aXNpb25JZCA9IG4pLFxuXHRcdFx0XHRcdFx0XHQodGhpcy5pc05ld1BhZ2UgPSAhbik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBlLCByLCBuLCBvLCBpLCBhLCB1LCBjLCBzO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQoZSA9IHQpLFxuXHRcdFx0XHRcdFx0KHIgPSBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpbml0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgocyA9IG90KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRydCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byA9IGFyZ3VtZW50cztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcnQoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUgPSAoby5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gb1swXSA/IG9bMF0gOiB7fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5lZGl0VG9rZW4pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gdm9pZCAwID09PSBlID8gJycgOiBlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobiA9IFt0aGlzLmdldFRpbWVzdGFtcCgpXSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ciB8fCBuLnB1c2godGhpcy5nZXRFZGl0VG9rZW4oKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFByb21pc2UuYWxsKG4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLmluaXRlZCA9ICEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRNLmluZm8oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnUGFnZSBpbml0aWFsaXphdGlvbiBmb3IgJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KHRoaXMudGl0bGUsICcjJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdCh0aGlzLnJldmlzaW9uSWQsICcgZmluaXNoZWQuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA3OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZ2V0RWRpdFRva2VuJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgoYyA9IG90KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRydCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcnQoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5uZXh0ID0gMiksIG13LmxvYWRlci51c2luZygnbWVkaWF3aWtpLnVzZXInKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCFtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JytcXFxcJyA9PT0gbXcudXNlci50b2tlbnMuZ2V0KCdjc3JmVG9rZW4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSA1O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMuZWRpdFRva2VuID0gbXcudXNlci50b2tlbnMuZ2V0KCdjc3JmVG9rZW4nKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5hYnJ1cHQoJ3JldHVybicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAodC5uZXh0ID0gNyksIFguZ2V0RWRpdFRva2VuKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZWRpdFRva2VuID0gdC5zZW50O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA4OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZ2V0VGltZXN0YW1wJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgodSA9IG90KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRydCgpLm1hcmsoZnVuY3Rpb24gdCgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSwgciwgbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcnQoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFguZ2V0UGFnZUluZm8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV2aXNpb25JZDogdGhpcy5yZXZpc2lvbklkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHRoaXMudGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUgPSB0LnNlbnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gZS50aW1lc3RhbXApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gZS5yZXZpc2lvbklkKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy50aW1lc3RhbXAgPSByKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuICYmICgodGhpcy5yZXZpc2lvbklkID0gbiksICh0aGlzLmlzTmV3UGFnZSA9ICExKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdnZXRXaWtpVGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHQoKGEgPSBvdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0cnQoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBydCgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCgoZSA9IChpLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBpWzBdID8gaVswXSA6IHt9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnNlY3Rpb24pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gLTEgPT09IChyID0gdm9pZCAwID09PSBlID8gJycgOiBlKSA/ICcnIDogciksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IXRoaXMuc2VjdGlvbkNhY2hlW25dKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSA0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFicnVwdCgncmV0dXJuJywgdGhpcy5zZWN0aW9uQ2FjaGVbbl0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSA2KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRYLmdldFdpa2lUZXh0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNlY3Rpb246IG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXZpc2lvbklkOiB0aGlzLnJldmlzaW9uSWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobyA9IHQuc2VudCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TS5pbmZvKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1dpa2l0ZXh0IG9mICdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNvbmNhdCh0aGlzLnRpdGxlLCAnIycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQociwgJyBmZXRjaGVkLicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5zZWN0aW9uQ2FjaGVbbl0gPSBvKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmFicnVwdCgncmV0dXJuJywgbylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdwYXJzZVdpa2lUZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTpcblx0XHRcdFx0XHRcdFx0XHRcdCgoaSA9IG90KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRydCgpLm1hcmsoZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJ0KCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5hYnJ1cHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3JldHVybicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0WC5wYXJzZVdpa2lUZXh0KGUsIHRoaXMudGl0bGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGkuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZWRpdCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHQoKG8gPSBvdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0cnQoKS5tYXJrKGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBydCgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuZWRpdFRva2VuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uZXJyb3IoJ2ZhaWxfdG9fZ2V0X2VkaXR0b2tlbicpLCB0LmFicnVwdCgncmV0dXJuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMudGltZXN0YW1wIHx8IHRoaXMuaXNOZXdQYWdlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gNjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uZXJyb3IoJ2ZhaWxfdG9fZ2V0X3RpbWVzdGFtcCcpLCB0LmFicnVwdCgncmV0dXJuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYWJydXB0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdyZXR1cm4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFguZWRpdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGV0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRldChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRldChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHRoaXMudGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVkaXRUb2tlbjogdGhpcy5lZGl0VG9rZW4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy50aW1lc3RhbXBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB7dGltZXN0YW1wOiB0aGlzLnRpbWVzdGFtcH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiB7fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFkZGl0aW9uYWxDb25maWc6IGV0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmlzTmV3UGFnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHtjcmVhdGVvbmx5OiB0aGlzLmlzTmV3UGFnZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiB7fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG8uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRyICYmIGl0KGUucHJvdG90eXBlLCByKSxcblx0XHRcdFx0XHRcdG4gJiYgaXQoZSwgbiksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRzdCA9IGN0O1xuXHRcdFx0cig1NzI4KSwgcigxOTU0KSwgcig5MjgpLCByKDI0NjIpLCByKDg0MzYpO1xuXHRcdFx0ZnVuY3Rpb24gZnQodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChmdCA9XG5cdFx0XHRcdFx0XHQnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgJiYgJ3N5bWJvbCcgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvclxuXHRcdFx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQgIT09IFN5bWJvbC5wcm90b3R5cGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAnc3ltYm9sJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGZ0KHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBsdCh0LCBlKSB7XG5cdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykge1xuXHRcdFx0XHRcdHZhciBuID0gZVtyXTtcblx0XHRcdFx0XHQobi5lbnVtZXJhYmxlID0gbi5lbnVtZXJhYmxlIHx8ICExKSxcblx0XHRcdFx0XHRcdChuLmNvbmZpZ3VyYWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdCd2YWx1ZScgaW4gbiAmJiAobi53cml0YWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBwdChuLmtleSksIG4pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBwdCh0KSB7XG5cdFx0XHRcdHZhciBlID0gKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBmdCh0KSB8fCBudWxsID09PSB0KSByZXR1cm4gdDtcblx0XHRcdFx0XHR2YXIgciA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcblx0XHRcdFx0XHRpZiAodm9pZCAwICE9PSByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbiA9IHIuY2FsbCh0LCBlIHx8ICdkZWZhdWx0Jyk7XG5cdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IGZ0KG4pKSByZXR1cm4gbjtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0BAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiAoJ3N0cmluZycgPT09IGUgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xuXHRcdFx0XHR9KSh0LCAnc3RyaW5nJyk7XG5cdFx0XHRcdHJldHVybiAnc3ltYm9sJyA9PT0gZnQoZSkgPyBlIDogU3RyaW5nKGUpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGh0ID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0IShmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoISh0IGluc3RhbmNlb2YgZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHRcdFx0fSkodGhpcywgdCksXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5pdCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgZSwgciwgbjtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0KGUgPSB0KSxcblx0XHRcdFx0XHRcdChyID0gW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaW5pdCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdCQoJ2JvZHknKS5hcHBlbmQoJzxkaXYgaWQ9XCJNb2VOb3RpZmljYXRpb25cIj48L2Rpdj4nKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZGlzcGxheScsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAn5Za1ficsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6ICdzdWNjZXNzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gYXJndW1lbnRzWzJdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICgpIHt9O1xuXHRcdFx0XHRcdFx0XHRcdFx0JCgnI01vZU5vdGlmaWNhdGlvbicpLmFwcGVuZChcblx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnPGRpdj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnTW9lTm90aWZpY2F0aW9uLW5vdGljZScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdNb2VOb3RpZmljYXRpb24tbm90aWNlLScgKyBlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoJzxzcGFuPicgKyB0ICsgJzwvc3Bhbj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI01vZU5vdGlmaWNhdGlvbicpLmZpbmQoJy5Nb2VOb3RpZmljYXRpb24tbm90aWNlJykubGFzdCgpLmZhZGVJbigzMDApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmJpbmQoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5jbGVhcigpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyKCQoJyNNb2VOb3RpZmljYXRpb24nKS5maW5kKCcuTW9lTm90aWZpY2F0aW9uLW5vdGljZScpLmxhc3QoKSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2JpbmQnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHQkKCcuTW9lTm90aWZpY2F0aW9uLW5vdGljZScpLm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQuc2xpZGVMZWZ0KCQodGhpcykpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3N1Y2Nlc3MnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KHQsICdzdWNjZXNzJywgZSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3dhcm5pbmcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KHQsICd3YXJuaW5nJywgZSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2Vycm9yJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSh0LCAnZXJyb3InLCBlKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnY2xlYXInLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQkKCcuTW9lTm90aWZpY2F0aW9uLW5vdGljZScpLmxlbmd0aCA+PSAxMCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoJCgnI01vZU5vdGlmaWNhdGlvbicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNoaWxkcmVuKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuZmlyc3QoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWRlT3V0KDE1MCwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCh0aGlzKS5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCh0aGlzLmNsZWFyLCAzMDApKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnZW1wdHknLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0JCgnLk1vZU5vdGlmaWNhdGlvbi1ub3RpY2UnKS5lYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiB0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHIgPSAkKHRoaXMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dChyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCAyMDAgKiBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCh0aGlzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmRlbGF5KDIwMCAqIGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCh0aGlzKS5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3NsaWRlTGVmdCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0LmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC5hbmltYXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlZnQ6ICctMjAwJScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlIHx8IDE1MCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHRoaXMpLmZhZGVPdXQoJ2Zhc3QnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQodGhpcykucmVtb3ZlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0pLFxuXHRcdFx0XHRcdFx0ciAmJiBsdChlLnByb3RvdHlwZSwgciksXG5cdFx0XHRcdFx0XHRuICYmIGx0KGUsIG4pLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICdwcm90b3R5cGUnLCB7d3JpdGFibGU6ICExfSksXG5cdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSkoKSxcblx0XHRcdFx0dnQgPSBuZXcgaHQoKSxcblx0XHRcdFx0ZHQgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoZSwgdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHRmdW5jdGlvbiB5dCh0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0KHl0ID1cblx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJiAnc3ltYm9sJyA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yXG5cdFx0XHRcdFx0XHRcdD8gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdmdW5jdGlvbicgPT0gdHlwZW9mIFN5bWJvbCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCAhPT0gU3ltYm9sLnByb3RvdHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICdzeW1ib2wnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0eXQodClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIGd0KCkge1xuXHRcdFx0XHQvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9MSUNFTlNFICovIGd0ID1cblx0XHRcdFx0XHRmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR2YXIgdCxcblx0XHRcdFx0XHRlID0ge30sXG5cdFx0XHRcdFx0ciA9IE9iamVjdC5wcm90b3R5cGUsXG5cdFx0XHRcdFx0biA9IHIuaGFzT3duUHJvcGVydHksXG5cdFx0XHRcdFx0byA9XG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkgfHxcblx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRcdHRbZV0gPSByLnZhbHVlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRpID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sXG5cdFx0XHRcdFx0YSA9IGkuaXRlcmF0b3IgfHwgJ0BAaXRlcmF0b3InLFxuXHRcdFx0XHRcdHUgPSBpLmFzeW5jSXRlcmF0b3IgfHwgJ0BAYXN5bmNJdGVyYXRvcicsXG5cdFx0XHRcdFx0YyA9IGkudG9TdHJpbmdUYWcgfHwgJ0BAdG9TdHJpbmdUYWcnO1xuXHRcdFx0XHRmdW5jdGlvbiBzKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHt2YWx1ZTogciwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pLCB0W2VdXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHMoe30sICcnKTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHMgPSBmdW5jdGlvbiAodCwgZSwgcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuICh0W2VdID0gcik7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBmKHQsIGUsIHIsIG4pIHtcblx0XHRcdFx0XHR2YXIgaSA9IGUgJiYgZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBnID8gZSA6IGcsXG5cdFx0XHRcdFx0XHRhID0gT2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksXG5cdFx0XHRcdFx0XHR1ID0gbmV3IEkobiB8fCBbXSk7XG5cdFx0XHRcdFx0cmV0dXJuIG8oYSwgJ19pbnZva2UnLCB7dmFsdWU6IFAodCwgciwgdSl9KSwgYTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBsKHQsIGUsIHIpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ25vcm1hbCcsXG5cdFx0XHRcdFx0XHRcdGFyZzogdC5jYWxsKGUsIHIpLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAndGhyb3cnLFxuXHRcdFx0XHRcdFx0XHRhcmc6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlLndyYXAgPSBmO1xuXHRcdFx0XHR2YXIgcCA9ICdzdXNwZW5kZWRTdGFydCcsXG5cdFx0XHRcdFx0aCA9ICdzdXNwZW5kZWRZaWVsZCcsXG5cdFx0XHRcdFx0diA9ICdleGVjdXRpbmcnLFxuXHRcdFx0XHRcdGQgPSAnY29tcGxldGVkJyxcblx0XHRcdFx0XHR5ID0ge307XG5cdFx0XHRcdGZ1bmN0aW9uIGcoKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiBtKCkge31cblx0XHRcdFx0ZnVuY3Rpb24gYigpIHt9XG5cdFx0XHRcdHZhciB3ID0ge307XG5cdFx0XHRcdHModywgYSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dmFyIHggPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG5cdFx0XHRcdFx0ayA9IHggJiYgeCh4KFQoW10pKSk7XG5cdFx0XHRcdGsgJiYgayAhPT0gciAmJiBuLmNhbGwoaywgYSkgJiYgKHcgPSBrKTtcblx0XHRcdFx0dmFyIFMgPSAoYi5wcm90b3R5cGUgPSBnLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodykpO1xuXHRcdFx0XHRmdW5jdGlvbiBFKHQpIHtcblx0XHRcdFx0XHRbJ25leHQnLCAndGhyb3cnLCAncmV0dXJuJ10uZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0cyh0LCBlLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5faW52b2tlKGUsIHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gTyh0LCBlKSB7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcihvLCBpLCBhLCB1KSB7XG5cdFx0XHRcdFx0XHR2YXIgYyA9IGwodFtvXSwgdCwgaSk7XG5cdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyAhPT0gYy50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBzID0gYy5hcmcsXG5cdFx0XHRcdFx0XHRcdFx0ZiA9IHMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmICYmICdvYmplY3QnID09IHl0KGYpICYmIG4uY2FsbChmLCAnX19hd2FpdCcpXG5cdFx0XHRcdFx0XHRcdFx0PyBlLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoJ25leHQnLCB0LCBhLCB1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyKCd0aHJvdycsIHQsIGEsIHUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0OiBlLnJlc29sdmUoZikudGhlbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocy52YWx1ZSA9IHQpLCBhKHMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByKCd0aHJvdycsIHQsIGEsIHUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dShjLmFyZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpO1xuXHRcdFx0XHRcdG8odGhpcywgJ19pbnZva2UnLCB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQsIG4pIHtcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gbygpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbmV3IGUoZnVuY3Rpb24gKGUsIG8pIHtcblx0XHRcdFx0XHRcdFx0XHRcdHIodCwgbiwgZSwgbyk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIChpID0gaSA/IGkudGhlbihvLCBvKSA6IG8oKSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIFAoZSwgciwgbikge1xuXHRcdFx0XHRcdHZhciBvID0gcDtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGksIGEpIHtcblx0XHRcdFx0XHRcdGlmIChvID09PSB2KSB0aHJvdyBuZXcgRXJyb3IoJ0dlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmcnKTtcblx0XHRcdFx0XHRcdGlmIChvID09PSBkKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBpKSB0aHJvdyBhO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB0LFxuXHRcdFx0XHRcdFx0XHRcdGRvbmU6ICEwLFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Zm9yIChuLm1ldGhvZCA9IGksIG4uYXJnID0gYTsgOyApIHtcblx0XHRcdFx0XHRcdFx0dmFyIHUgPSBuLmRlbGVnYXRlO1xuXHRcdFx0XHRcdFx0XHRpZiAodSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBjID0gaih1LCBuKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGMgPT09IHkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGM7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmICgnbmV4dCcgPT09IG4ubWV0aG9kKSBuLnNlbnQgPSBuLl9zZW50ID0gbi5hcmc7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKCd0aHJvdycgPT09IG4ubWV0aG9kKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG8gPT09IHApIHRocm93ICgobyA9IGQpLCBuLmFyZyk7XG5cdFx0XHRcdFx0XHRcdFx0bi5kaXNwYXRjaEV4Y2VwdGlvbihuLmFyZyk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSAncmV0dXJuJyA9PT0gbi5tZXRob2QgJiYgbi5hYnJ1cHQoJ3JldHVybicsIG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0byA9IHY7XG5cdFx0XHRcdFx0XHRcdHZhciBzID0gbChlLCByLCBuKTtcblx0XHRcdFx0XHRcdFx0aWYgKCdub3JtYWwnID09PSBzLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoKChvID0gbi5kb25lID8gZCA6IGgpLCBzLmFyZyA9PT0geSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcy5hcmcsXG5cdFx0XHRcdFx0XHRcdFx0XHRkb25lOiBuLmRvbmUsXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQndGhyb3cnID09PSBzLnR5cGUgJiYgKChvID0gZCksIChuLm1ldGhvZCA9ICd0aHJvdycpLCAobi5hcmcgPSBzLmFyZykpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gaihlLCByKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSByLm1ldGhvZCxcblx0XHRcdFx0XHRcdG8gPSBlLml0ZXJhdG9yW25dO1xuXHRcdFx0XHRcdGlmIChvID09PSB0KVxuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0KHIuZGVsZWdhdGUgPSBudWxsKSxcblx0XHRcdFx0XHRcdFx0KCd0aHJvdycgPT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRlLml0ZXJhdG9yLnJldHVybiAmJlxuXHRcdFx0XHRcdFx0XHRcdCgoci5tZXRob2QgPSAncmV0dXJuJyksIChyLmFyZyA9IHQpLCBqKGUsIHIpLCAndGhyb3cnID09PSByLm1ldGhvZCkpIHx8XG5cdFx0XHRcdFx0XHRcdFx0KCdyZXR1cm4nICE9PSBuICYmXG5cdFx0XHRcdFx0XHRcdFx0XHQoKHIubWV0aG9kID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdFx0XHQoci5hcmcgPSBuZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnXCIgKyBuICsgXCInIG1ldGhvZFwiKSkpKSxcblx0XHRcdFx0XHRcdFx0eVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR2YXIgaSA9IGwobywgZS5pdGVyYXRvciwgci5hcmcpO1xuXHRcdFx0XHRcdGlmICgndGhyb3cnID09PSBpLnR5cGUpIHJldHVybiAoci5tZXRob2QgPSAndGhyb3cnKSwgKHIuYXJnID0gaS5hcmcpLCAoci5kZWxlZ2F0ZSA9IG51bGwpLCB5O1xuXHRcdFx0XHRcdHZhciBhID0gaS5hcmc7XG5cdFx0XHRcdFx0cmV0dXJuIGFcblx0XHRcdFx0XHRcdD8gYS5kb25lXG5cdFx0XHRcdFx0XHRcdD8gKChyW2UucmVzdWx0TmFtZV0gPSBhLnZhbHVlKSxcblx0XHRcdFx0XHRcdFx0XHQoci5uZXh0ID0gZS5uZXh0TG9jKSxcblx0XHRcdFx0XHRcdFx0XHQncmV0dXJuJyAhPT0gci5tZXRob2QgJiYgKChyLm1ldGhvZCA9ICduZXh0JyksIChyLmFyZyA9IHQpKSxcblx0XHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdHkpXG5cdFx0XHRcdFx0XHRcdDogYVxuXHRcdFx0XHRcdFx0OiAoKHIubWV0aG9kID0gJ3Rocm93JyksXG5cdFx0XHRcdFx0XHRcdChyLmFyZyA9IG5ldyBUeXBlRXJyb3IoJ2l0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0JykpLFxuXHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHR5KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBMKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHtcblx0XHRcdFx0XHRcdHRyeUxvYzogdFswXSxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdDEgaW4gdCAmJiAoZS5jYXRjaExvYyA9IHRbMV0pLFxuXHRcdFx0XHRcdFx0MiBpbiB0ICYmICgoZS5maW5hbGx5TG9jID0gdFsyXSksIChlLmFmdGVyTG9jID0gdFszXSkpLFxuXHRcdFx0XHRcdFx0dGhpcy50cnlFbnRyaWVzLnB1c2goZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gXyh0KSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB0LmNvbXBsZXRpb24gfHwge307XG5cdFx0XHRcdFx0KGUudHlwZSA9ICdub3JtYWwnKSwgZGVsZXRlIGUuYXJnLCAodC5jb21wbGV0aW9uID0gZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gSSh0KSB7XG5cdFx0XHRcdFx0KHRoaXMudHJ5RW50cmllcyA9IFt7dHJ5TG9jOiAncm9vdCd9XSksIHQuZm9yRWFjaChMLCB0aGlzKSwgdGhpcy5yZXNldCghMCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gVChlKSB7XG5cdFx0XHRcdFx0aWYgKGUgfHwgJycgPT09IGUpIHtcblx0XHRcdFx0XHRcdHZhciByID0gZVthXTtcblx0XHRcdFx0XHRcdGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuXHRcdFx0XHRcdFx0aWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGUubmV4dCkgcmV0dXJuIGU7XG5cdFx0XHRcdFx0XHRpZiAoIWlzTmFOKGUubGVuZ3RoKSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgbyA9IC0xLFxuXHRcdFx0XHRcdFx0XHRcdGkgPSBmdW5jdGlvbiByKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7ICsrbyA8IGUubGVuZ3RoOyApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChuLmNhbGwoZSwgbykpIHJldHVybiAoci52YWx1ZSA9IGVbb10pLCAoci5kb25lID0gITEpLCByO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChyLnZhbHVlID0gdCksIChyLmRvbmUgPSAhMCksIHI7XG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChpLm5leHQgPSBpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcih5dChlKSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQobS5wcm90b3R5cGUgPSBiKSxcblx0XHRcdFx0XHRvKFMsICdjb25zdHJ1Y3RvcicsIHt2YWx1ZTogYiwgY29uZmlndXJhYmxlOiAhMH0pLFxuXHRcdFx0XHRcdG8oYiwgJ2NvbnN0cnVjdG9yJywge3ZhbHVlOiBtLCBjb25maWd1cmFibGU6ICEwfSksXG5cdFx0XHRcdFx0KG0uZGlzcGxheU5hbWUgPSBzKGIsIGMsICdHZW5lcmF0b3JGdW5jdGlvbicpKSxcblx0XHRcdFx0XHQoZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgdCAmJiB0LmNvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0cmV0dXJuICEhZSAmJiAoZSA9PT0gbSB8fCAnR2VuZXJhdG9yRnVuY3Rpb24nID09PSAoZS5kaXNwbGF5TmFtZSB8fCBlLm5hbWUpKTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5tYXJrID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5zZXRQcm90b3R5cGVPZlxuXHRcdFx0XHRcdFx0XHRcdD8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsIGIpXG5cdFx0XHRcdFx0XHRcdFx0OiAoKHQuX19wcm90b19fID0gYiksIHModCwgYywgJ0dlbmVyYXRvckZ1bmN0aW9uJykpLFxuXHRcdFx0XHRcdFx0XHQodC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFMpKSxcblx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5hd3JhcCA9IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRfX2F3YWl0OiB0LFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRFKE8ucHJvdG90eXBlKSxcblx0XHRcdFx0XHRzKE8ucHJvdG90eXBlLCB1LCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5Bc3luY0l0ZXJhdG9yID0gTyksXG5cdFx0XHRcdFx0KGUuYXN5bmMgPSBmdW5jdGlvbiAodCwgciwgbiwgbywgaSkge1xuXHRcdFx0XHRcdFx0dm9pZCAwID09PSBpICYmIChpID0gUHJvbWlzZSk7XG5cdFx0XHRcdFx0XHR2YXIgYSA9IG5ldyBPKGYodCwgciwgbiwgbyksIGkpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKVxuXHRcdFx0XHRcdFx0XHQ/IGFcblx0XHRcdFx0XHRcdFx0OiBhLm5leHQoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5kb25lID8gdC52YWx1ZSA6IGEubmV4dCgpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdEUoUyksXG5cdFx0XHRcdFx0cyhTLCBjLCAnR2VuZXJhdG9yJyksXG5cdFx0XHRcdFx0cyhTLCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRzKFMsICd0b1N0cmluZycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiAnW29iamVjdCBHZW5lcmF0b3JdJztcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS5rZXlzID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHZhciBlID0gT2JqZWN0KHQpLFxuXHRcdFx0XHRcdFx0XHRyID0gW107XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBuIGluIGUpIHIucHVzaChuKTtcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdHIucmV2ZXJzZSgpLFxuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAoOyByLmxlbmd0aDsgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiA9IHIucG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobiBpbiBlKSByZXR1cm4gKHQudmFsdWUgPSBuKSwgKHQuZG9uZSA9ICExKSwgdDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICh0LmRvbmUgPSAhMCksIHQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KGUudmFsdWVzID0gVCksXG5cdFx0XHRcdFx0KEkucHJvdG90eXBlID0ge1xuXHRcdFx0XHRcdFx0Y29uc3RydWN0b3I6IEksXG5cdFx0XHRcdFx0XHRyZXNldDogZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdCgodGhpcy5wcmV2ID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMubmV4dCA9IDApLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuZG9uZSA9ICExKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLm1ldGhvZCA9ICduZXh0JyksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuYXJnID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy50cnlFbnRyaWVzLmZvckVhY2goXyksXG5cdFx0XHRcdFx0XHRcdFx0IWUpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciByIGluIHRoaXMpXG5cdFx0XHRcdFx0XHRcdFx0XHQndCcgPT09IHIuY2hhckF0KDApICYmIG4uY2FsbCh0aGlzLCByKSAmJiAhaXNOYU4oK3Iuc2xpY2UoMSkpICYmICh0aGlzW3JdID0gdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c3RvcDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRvbmUgPSAhMDtcblx0XHRcdFx0XHRcdFx0dmFyIHQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLnJ2YWw7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmRvbmUpIHRocm93IGU7XG5cdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcztcblx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gbyhuLCBvKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdCh1LnR5cGUgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdCh1LmFyZyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHIubmV4dCA9IG4pLFxuXHRcdFx0XHRcdFx0XHRcdFx0byAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0ISFvXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGEgPSB0aGlzLnRyeUVudHJpZXNbaV0sXG5cdFx0XHRcdFx0XHRcdFx0XHR1ID0gYS5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdGlmICgncm9vdCcgPT09IGEudHJ5TG9jKSByZXR1cm4gbygnZW5kJyk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGEudHJ5TG9jIDw9IHRoaXMucHJldikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBuLmNhbGwoYSwgJ2NhdGNoTG9jJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHMgPSBuLmNhbGwoYSwgJ2ZpbmFsbHlMb2MnKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjICYmIHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuY2F0Y2hMb2MpIHJldHVybiBvKGEuY2F0Y2hMb2MsICEwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFzKSB0aHJvdyBuZXcgRXJyb3IoJ3RyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmZpbmFsbHlMb2MpIHJldHVybiBvKGEuZmluYWxseUxvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0YWJydXB0OiBmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciByID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IHIgPj0gMDsgLS1yKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG8gPSB0aGlzLnRyeUVudHJpZXNbcl07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG8udHJ5TG9jIDw9IHRoaXMucHJldiAmJiBuLmNhbGwobywgJ2ZpbmFsbHlMb2MnKSAmJiB0aGlzLnByZXYgPCBvLmZpbmFsbHlMb2MpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBpID0gbztcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpICYmXG5cdFx0XHRcdFx0XHRcdFx0KCdicmVhaycgPT09IHQgfHwgJ2NvbnRpbnVlJyA9PT0gdCkgJiZcblx0XHRcdFx0XHRcdFx0XHRpLnRyeUxvYyA8PSBlICYmXG5cdFx0XHRcdFx0XHRcdFx0ZSA8PSBpLmZpbmFsbHlMb2MgJiZcblx0XHRcdFx0XHRcdFx0XHQoaSA9IG51bGwpO1xuXHRcdFx0XHRcdFx0XHR2YXIgYSA9IGkgPyBpLmNvbXBsZXRpb24gOiB7fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQoYS50eXBlID0gdCksXG5cdFx0XHRcdFx0XHRcdFx0KGEuYXJnID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0aSA/ICgodGhpcy5tZXRob2QgPSAnbmV4dCcpLCAodGhpcy5uZXh0ID0gaS5maW5hbGx5TG9jKSwgeSkgOiB0aGlzLmNvbXBsZXRlKGEpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y29tcGxldGU6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICgndGhyb3cnID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCdicmVhaycgPT09IHQudHlwZSB8fCAnY29udGludWUnID09PSB0LnR5cGVcblx0XHRcdFx0XHRcdFx0XHRcdD8gKHRoaXMubmV4dCA9IHQuYXJnKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiAncmV0dXJuJyA9PT0gdC50eXBlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKCh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHQuYXJnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5tZXRob2QgPSAncmV0dXJuJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMubmV4dCA9ICdlbmQnKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiAnbm9ybWFsJyA9PT0gdC50eXBlICYmIGUgJiYgKHRoaXMubmV4dCA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmaW5pc2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoci5maW5hbGx5TG9jID09PSB0KSByZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sIHIuYWZ0ZXJMb2MpLCBfKHIpLCB5O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgciA9IHRoaXMudHJ5RW50cmllc1tlXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoci50cnlMb2MgPT09IHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gci5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IG4udHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IG4uYXJnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRfKHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG87XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignaWxsZWdhbCBjYXRjaCBhdHRlbXB0Jyk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24gKGUsIHIsIG4pIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kZWxlZ2F0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZXJhdG9yOiBUKGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0TmFtZTogcixcblx0XHRcdFx0XHRcdFx0XHRcdG5leHRMb2M6IG4sXG5cdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0J25leHQnID09PSB0aGlzLm1ldGhvZCAmJiAodGhpcy5hcmcgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIG10KHQsIGUsIHIsIG4sIG8sIGksIGEpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR2YXIgdSA9IHRbaV0oYSksXG5cdFx0XHRcdFx0XHRjID0gdS52YWx1ZTtcblx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdHJldHVybiB2b2lkIHIodCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dS5kb25lID8gZShjKSA6IFByb21pc2UucmVzb2x2ZShjKS50aGVuKG4sIG8pO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gYnQodCkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHZhciBlID0gdGhpcyxcblx0XHRcdFx0XHRcdHIgPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChuLCBvKSB7XG5cdFx0XHRcdFx0XHR2YXIgaSA9IHQuYXBwbHkoZSwgcik7XG5cdFx0XHRcdFx0XHRmdW5jdGlvbiBhKHQpIHtcblx0XHRcdFx0XHRcdFx0bXQoaSwgbiwgbywgYSwgdSwgJ25leHQnLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGZ1bmN0aW9uIHUodCkge1xuXHRcdFx0XHRcdFx0XHRtdChpLCBuLCBvLCBhLCB1LCAndGhyb3cnLCB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGEodm9pZCAwKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHd0KHQsIGUpIHtcblx0XHRcdFx0Zm9yICh2YXIgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBlW3JdO1xuXHRcdFx0XHRcdChuLmVudW1lcmFibGUgPSBuLmVudW1lcmFibGUgfHwgITEpLFxuXHRcdFx0XHRcdFx0KG4uY29uZmlndXJhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0J3ZhbHVlJyBpbiBuICYmIChuLndyaXRhYmxlID0gITApLFxuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGt0KG4ua2V5KSwgbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIHh0KHQsIGUsIHIpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQoZSA9IGt0KGUpKSBpbiB0XG5cdFx0XHRcdFx0XHQ/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCB7dmFsdWU6IHIsIGVudW1lcmFibGU6ICEwLCBjb25maWd1cmFibGU6ICEwLCB3cml0YWJsZTogITB9KVxuXHRcdFx0XHRcdFx0OiAodFtlXSA9IHIpLFxuXHRcdFx0XHRcdHRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIGt0KHQpIHtcblx0XHRcdFx0dmFyIGUgPSAoZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IHl0KHQpIHx8IG51bGwgPT09IHQpIHJldHVybiB0O1xuXHRcdFx0XHRcdHZhciByID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuXHRcdFx0XHRcdGlmICh2b2lkIDAgIT09IHIpIHtcblx0XHRcdFx0XHRcdHZhciBuID0gci5jYWxsKHQsIGUgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdGlmICgnb2JqZWN0JyAhPT0geXQobikpIHJldHVybiBuO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuICgnc3RyaW5nJyA9PT0gZSA/IFN0cmluZyA6IE51bWJlcikodCk7XG5cdFx0XHRcdH0pKHQsICdzdHJpbmcnKTtcblx0XHRcdFx0cmV0dXJuICdzeW1ib2wnID09PSB5dChlKSA/IGUgOiBTdHJpbmcoZSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgU3QgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHQhKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0XHR9KSh0aGlzLCB0KSxcblx0XHRcdFx0XHRcdFx0eHQodGhpcywgJ3F1aWNrRWRpdFBhbmVsVmlzaWJsZScsICExKSxcblx0XHRcdFx0XHRcdFx0eHQodGhpcywgJ3Njcm9sbFRvcCcsIDApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgZSwgciwgbjtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0KGUgPSB0KSxcblx0XHRcdFx0XHRcdChyID0gW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnY3JlYXRlRGlhbG9nQm94Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6ICdXaWtpcGx1cycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiA2MDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IGFyZ3VtZW50c1szXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBmdW5jdGlvbiAoKSB7fTtcblx0XHRcdFx0XHRcdFx0XHRcdCQoJy5XaWtpcGx1cy1JbnRlckJveCcpLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnLldpa2lwbHVzLUludGVyQm94JykuZWFjaChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCh0aGlzKS5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IHdpbmRvdy5pbm5lcldpZHRoLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpID0gd2luZG93LmlubmVySGVpZ2h0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhID0gTWF0aC5taW4obywgciksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHUgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1JbnRlckJveCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbWFyZ2luLWxlZnQnOiBvIC8gMiAtIGEgLyAyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9wOiAkKGRvY3VtZW50KS5zY3JvbGxUb3AoKSArIDAuMiAqIGksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKCQoJzxkaXY+JykuYWRkQ2xhc3MoJ1dpa2lwbHVzLUludGVyQm94LUhlYWRlcicpLmh0bWwodCkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZCgkKCc8ZGl2PicpLmFkZENsYXNzKCdXaWtpcGx1cy1JbnRlckJveC1Db250ZW50JykuYXBwZW5kKGUpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoJCgnPHNwYW4+JykudGV4dCgnw5cnKS5hZGRDbGFzcygnV2lraXBsdXMtSW50ZXJCb3gtQ2xvc2UnKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCdib2R5JykuYXBwZW5kKHUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtSW50ZXJCb3gnKS53aWR0aChhKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnLldpa2lwbHVzLUludGVyQm94LUNsb3NlJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQodGhpcylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5wYXJlbnQoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmZhZGVPdXQoJ2Zhc3QnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh3aW5kb3cub25jbG9zZSA9IHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IHZvaWQgMCksICQodGhpcykucmVtb3ZlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChmdW5jdGlvbiB0KGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLm1vdXNlZG93bihmdW5jdGlvbiAocikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLmNsaWVudFgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8gPSByLmNsaWVudFksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSBlLnBhcmVudCgpLm9mZnNldCgpLmxlZnQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSBlLnBhcmVudCgpLm9mZnNldCgpLnRvcDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoZG9jdW1lbnQpLm9uKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLnBhcmVudCgpLmNzcyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J21hcmdpbi1sZWZ0JzogaSArIHQuY2xpZW50WCAtIG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9wOiBhICsgdC5jbGllbnRZIC0gbyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChkb2N1bWVudCkub24oJ21vdXNldXAnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS51bmJpbmQoJ21vdXNlZG93bicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChkb2N1bWVudCkub2ZmKCdtb3VzZW1vdmUnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoZG9jdW1lbnQpLm9mZignbW91c2V1cCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dChlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pKCQoJy5XaWtpcGx1cy1JbnRlckJveC1IZWFkZXInKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCQoJy5XaWtpcGx1cy1JbnRlckJveCcpLmZhZGVJbig1MDApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRuKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2FkZEZ1bmN0aW9uQnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciByO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChpLnNraW4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnbWluZXJ2YSc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9ICQoJzxsaT4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygndG9nZ2xlLWxpc3QtaXRlbScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCc8YT4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdtdy11aS1pY29uIG13LXVpLWljb24tYmVmb3JlIHRvZ2dsZS1saXN0LWl0ZW1fX2FuY2hvcidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJzxzcGFuPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdocmVmJywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ3RvZ2dsZS1saXN0LWl0ZW1fX2xhYmVsJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQodClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdtb2Vza2luJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gJCgnPGxpPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLU1vcmUtRnVuY3Rpb24tQnV0dG9uJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsIGUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKCQoJzxhPicpLmF0dHIoJ2hyZWYnLCAnamF2YXNjcmlwdDp2b2lkKDApOycpLnRleHQodCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSAkKCc8bGk+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnbXctbGlzdC1pdGVtJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygndmVjdG9yLXRhYi1ub2ljb24nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoJCgnPGE+JykuYXR0cignaHJlZicsICdqYXZhc2NyaXB0OnZvaWQoMCk7JykudGV4dCh0KSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJ21pbmVydmEnID09PSBpLnNraW4gJiYgJCgnI3AtdGInKS5sZW5ndGggPiAwXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gKCQoJyNwLXRiJykuYXBwZW5kKHIpLCAkKCcjJy5jb25jYXQoZSkpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICdtb2Vza2luJyA9PT0gaS5za2luXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoJCgnLm1vcmUtYWN0aW9ucy1saXN0JykuZmlyc3QoKS5hcHBlbmQociksICQoJyMnLmNvbmNhdChlKSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAkKCcjcC1jYWN0aW9ucycpLmxlbmd0aCA+IDBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gKCQoJyNwLWNhY3Rpb25zIHVsJykuYXBwZW5kKHIpLCAkKCcjJy5jb25jYXQoZSkpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiB2b2lkIE0uaW5mbyhQLnRyYW5zbGF0ZSgnY2FudF9hZGRfZnVuY2J0bicpKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaW5zZXJ0U2ltcGxlUmVkaXJlY3RCdXR0b24nLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gYXJndW1lbnRzWzBdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICgpIHt9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlID0gdGhpcy5hZGRGdW5jdGlvbkJ1dHRvbihQLnRyYW5zbGF0ZSgncmVkaXJlY3RfZnJvbScpLCAnV2lraXBsdXMtU1ItSW50cm8nKTtcblx0XHRcdFx0XHRcdFx0XHRcdGUgJiYgZS5vbignY2xpY2snLCB0KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaW5zZXJ0U2V0dGluZ3NQYW5lbEJ1dHRvbicsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBhcmd1bWVudHNbMF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZnVuY3Rpb24gKCkge30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGUgPSB0aGlzLmFkZEZ1bmN0aW9uQnV0dG9uKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCd3aWtpcGx1c19zZXR0aW5ncycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdXaWtpcGx1cy1TZXR0aW5ncy1JbnRybydcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGUgJiYgZS5vbignY2xpY2snLCB0KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaW5zZXJ0VG9wUXVpY2tFZGl0RW50cnknLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUgPSAkKCc8bGk+JykuYXR0cignaWQnLCAnV2lraXBsdXMtRWRpdC1Ub3BCdG4nKS5hdHRyKCdjbGFzcycsICdtdy1saXN0LWl0ZW0nKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ciA9ICQoJzxhPicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2hyZWYnLCAnamF2YXNjcmlwdDp2b2lkKDApJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dCgnJy5jb25jYXQoUC50cmFuc2xhdGUoJ3F1aWNrZWRpdF90b3BidG4nKSkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgoZS5hcHBlbmQociksIGkuc2tpbikpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnbWluZXJ2YSc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5jc3Moe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2FsaWduLWl0ZW1zJzogJ2NlbnRlcicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiAnZmxleCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLmZpbmQoJ3NwYW4nKS5hZGRDbGFzcygncGFnZS1hY3Rpb25zLW1lbnVfX2xpc3QtaXRlbScpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnYScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbXctdWktaWNvbiBtdy11aS1pY29uLWVsZW1lbnQgbXctdWktaWNvbi13aWtpbWVkaWEtZWRpdC1iYXNlMjAgbXctdWktaWNvbi13aXRoLWxhYmVsLWRlc2t0b3AnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNzcygndmVydGljYWwtYWxpZ24nLCAnbWlkZGxlJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ3ZlY3Rvci0yMDIyJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLmFkZENsYXNzKCd2ZWN0b3ItdGFiLW5vaWNvbicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICd2ZWN0b3InOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUuYXBwZW5kKCQoJzxzcGFuPicpLmFwcGVuZChyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQkKGUpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbk51bWJlcjogLTEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFyZ2V0UGFnZU5hbWU6IGkuY3VycmVudFBhZ2VOYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjY2EtZWRpdCcpLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQwID09PSAkKCcjV2lraXBsdXMtRWRpdC1Ub3BCdG4nKS5sZW5ndGggJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoJ21pbmVydmEnID09PSBpLnNraW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gJCgnI2NhLWVkaXQnKS5wYXJlbnQoKS5hZnRlcihlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAkKCcjY2EtZWRpdCcpLmFmdGVyKGUpKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaW5zZXJ0U2VjdGlvblF1aWNrRWRpdEVudHJpZXMnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gYXJndW1lbnRzWzBdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICgpIHt9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbWluZXJ2YScgPT09IGkuc2tpblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAkKCc8c3Bhbj4nKS5hcHBlbmQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnPGE+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1dpa2lwbHVzLUVkaXQtU2VjdGlvbkJ0biBtdy11aS1pY29uIG13LXVpLWljb24tZWxlbWVudCBtdy11aS1pY29uLXdpa2ltZWRpYS1lZGl0LWJhc2UyMCBlZGl0LXBhZ2UgbXctdWktaWNvbi1mbHVzaC1yaWdodCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jc3MoJ21hcmdpbi1sZWZ0JywgJzAuNzVlbScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICdqYXZhc2NyaXB0OnZvaWQoMCknKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ3RpdGxlJywgUC50cmFuc2xhdGUoJ3F1aWNrZWRpdF9zZWN0aW9uYnRuJykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogJCgnPHNwYW4+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnPHNwYW4+JykuYWRkQ2xhc3MoJ213LWVkaXRzZWN0aW9uLWRpdmlkZXInKS50ZXh0KCcgfCAnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnPGE+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1FZGl0LVNlY3Rpb25CdG4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICdqYXZhc2NyaXB0OnZvaWQoMCknKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dChQLnRyYW5zbGF0ZSgncXVpY2tlZGl0X3NlY3Rpb25idG4nKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0JCgnLm13LWVkaXRzZWN0aW9uJykuZWFjaChmdW5jdGlvbiAocikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gJCh0aGlzKS5maW5kKFwiYVtocmVmKj0nYWN0aW9uPWVkaXQnXVwiKS5maXJzdCgpLmF0dHIoJ2hyZWYnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8gPSBuLm1hdGNoKC8mW3ZlXSpzZWN0aW9uXFw9KFteJl0rKS8pWzFdLnJlcGxhY2UoL1QtL2dpLCAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhID0gZGVjb2RlVVJJQ29tcG9uZW50KG4ubWF0Y2goL3RpdGxlPSguKz8pJi8pWzFdKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHUgPSAkKHRoaXMpLnByZXYoKS5jbG9uZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHUuZmluZCgnLm13LWhlYWRsaW5lLW51bWJlcicpLnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjID0gdS50ZXh0KCkudHJpbSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cyA9IGUuY2xvbmUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzLmZpbmQoJy5XaWtpcGx1cy1FZGl0LVNlY3Rpb25CdG4nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbk51bWJlcjogbyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbk5hbWU6IGMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcmdldFBhZ2VOYW1lOiBhLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbWluZXJ2YScgPT09IGkuc2tpblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/ICQodGhpcykuYXBwZW5kKHMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogJCh0aGlzKS5maW5kKCcubXctZWRpdHNlY3Rpb24tYnJhY2tldCcpLmxhc3QoKS5iZWZvcmUocyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRNLmVycm9yKCdmYWlsX3RvX2luaXRfcXVpY2tlZGl0Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdpbnNlcnRMaW5rRWRpdEVudHJpZXMnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogZnVuY3Rpb24gKCkge307XG5cdFx0XHRcdFx0XHRcdFx0XHQkKCcjbXctY29udGVudC10ZXh0IGEuZXh0ZXJuYWwnKS5lYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByID0gKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSwgciA9IC8oKFtePyY9XSspKD86PShbXj8mPV0qKSkqKS9nLCBuID0ge307IChlID0gci5leGVjKHQpKTsgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bltlWzJdXSA9IGRlY29kZVVSSUNvbXBvbmVudChlWzNdKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bltlWzJdXSA9IGVbM107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pKCQodGhpcykuYXR0cignaHJlZicpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2VkaXQnID09PSByLmFjdGlvbiAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZvaWQgMCAhPT0gci50aXRsZSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCduZXcnICE9PSByLnNlY3Rpb24gJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHRoaXMpLmFmdGVyKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnPGE+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhyZWY6ICdqYXZhc2NyaXB0OnZvaWQoMCknLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzOiAnV2lraXBsdXMtRWRpdC1FdmVyeVdoZXJlQnRuJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoJygnLmNvbmNhdChQLnRyYW5zbGF0ZSgncXVpY2tlZGl0X3NlY3Rpb25idG4nKSwgJyknKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcmdldFBhZ2VOYW1lOiByLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbk51bWJlcjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCAhPT0gKGUgPSByLnNlY3Rpb24pICYmIHZvaWQgMCAhPT0gZSA/IGUgOiAtMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3Nob3dRdWlja0VkaXRQYW5lbCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgZSA9IHQudGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSB2b2lkIDAgPT09IGUgPyAnJyA6IGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4gPSB0LmNvbnRlbnQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG8gPSB2b2lkIDAgPT09IG4gPyAnJyA6IG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSB0LnN1bW1hcnksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGEgPSB2b2lkIDAgPT09IGkgPyAnJyA6IGksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHUgPSB0Lm9uQmFjayxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YyA9IHZvaWQgMCA9PT0gdSA/IGZ1bmN0aW9uICgpIHt9IDogdSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cyA9IHQub25QYXJzZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZiA9IHZvaWQgMCA9PT0gcyA/IGZ1bmN0aW9uICgpIHt9IDogcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bCA9IHQub25FZGl0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwID0gdm9pZCAwID09PSBsID8gZnVuY3Rpb24gKCkge30gOiBsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRoID0gdC5lc2NFeGl0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2ID0gdm9pZCAwICE9PSBoICYmIGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGQgPSB0aGlzO1xuXHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMuc2Nyb2xsVG9wID0gJChkb2N1bWVudCkuc2Nyb2xsVG9wKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnF1aWNrRWRpdFBhbmVsVmlzaWJsZSAmJiB0aGlzLmhpZGVRdWlja0VkaXRQYW5lbCgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5xdWlja0VkaXRQYW5lbFZpc2libGUgPSAhMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCh3aW5kb3cub25jbG9zZSA9IHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICcnLmNvbmNhdChQLnRyYW5zbGF0ZSgnb25jbG9zZV9jb25maXJtJykpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHkgPSAkKCcubm9hcnRpY2xldGV4dCcpLmxlbmd0aCA+IDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGcgPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1RdWlja2VkaXQtQmFjaycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1CdG4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KCcnLmNvbmNhdChQLnRyYW5zbGF0ZSgnYmFjaycpKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG0gPSAkKCc8c3Bhbj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1RdWlja2VkaXQtSnVtcCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1CdG4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCc8YT4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaHJlZicsICcjV2lraXBsdXMtUXVpY2tlZGl0Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoJycuY29uY2F0KFAudHJhbnNsYXRlKCdnb3RvX2VkaXRib3gnKSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YiA9ICQoJzx0ZXh0YXJlYT4nKS5hdHRyKCdpZCcsICdXaWtpcGx1cy1RdWlja2VkaXQnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dyA9ICQoJzxkaXY+JykuYXR0cignaWQnLCAnV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0JyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHggPSAkKCc8aW5wdXQ+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCAnV2lraXBsdXMtUXVpY2tlZGl0LVN1bW1hcnktSW5wdXQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdwbGFjZWhvbGRlcicsICcnLmNvbmNhdChQLnRyYW5zbGF0ZSgnc3VtbWFyeV9wbGFjZWhvbGQnKSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRrID0gJCgnPGJ1dHRvbj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1RdWlja2VkaXQtU3VibWl0Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcnLmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoeSA/ICdwdWJsaXNoX3BhZ2UnIDogJ3B1Ymxpc2hfY2hhbmdlJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcoQ3RybCtTKSdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRTID0gJCgnPGJ1dHRvbj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1TdWJtaXQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KCcnLmNvbmNhdChQLnRyYW5zbGF0ZSgncHJldmlldycpKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEUgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJzxpbnB1dD4nKS5hdHRyKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2NoZWNrYm94Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ6ICdXaWtpcGx1cy1RdWlja2VkaXQtTWlub3JFZGl0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCc8bGFiZWw+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2ZvcicsICdXaWtpcGx1cy1RdWlja2VkaXQtTWlub3JFZGl0Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoJycuY29uY2F0KFAudHJhbnNsYXRlKCdtYXJrX21pbm9yZWRpdCcpLCAnKEN0cmwrU2hpZnQrUyknKSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmNzcyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtYXJnaW46ICc1cHggNXB4IDVweCAtM3B4Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk6ICdpbmxpbmUnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRPID0gJCgnPGRpdj4nKS5hcHBlbmQoZywgbSwgdywgYiwgeCwgJCgnPGJyPicpLCBFLCBrLCBTKTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuY3JlYXRlRGlhbG9nQm94KHIsIE8sIDFlMywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtUXVpY2tlZGl0JykudmFsKG8pLCAkKCcjV2lraXBsdXMtUXVpY2tlZGl0LVN1bW1hcnktSW5wdXQnKS52YWwoYSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1CYWNrJykub24oJ2NsaWNrJywgYyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCQoJyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1TdWJtaXQnKS5vbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnY2xpY2snLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJ0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Z3QoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlLCByLCBuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZ3QoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1CYW5uZXInKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JycuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZSgnbG9hZGluZ19wcmV2aWV3Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSAkKCcjV2lraXBsdXMtUXVpY2tlZGl0JykudmFsKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKHRoaXMpLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1PdXRwdXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkuZmFkZU91dCgxMDAsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5odG1sKCcnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZChlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5mYWRlSW4oMTAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtzY3JvbGxUb3A6IGQuc2Nyb2xsVG9wfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQyMDBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmKHIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gdC5zZW50KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LU91dHB1dCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5mYWRlT3V0KCcxMDAnLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkuaHRtbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCc8aHI+PGRpdiBjbGFzcz1cIm13LWJvZHktY29udGVudFwiPicgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JzwvZGl2Pjxocj4nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS5mYWRlSW4oJzEwMCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1TdWJtaXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLnByb3AoJ2Rpc2FibGVkJywgITEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDk6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LnN0b3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1TdWJtaXQnKS5vbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnY2xpY2snLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJ0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Z3QoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlLCByLCBuLCBvO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZ3QoKS53cmFwKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUgPSBuZXcgRGF0ZSgpLnZhbHVlT2YoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gJCgnPGRpdj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnV2lraXBsdXMtQmFubmVyJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcnLmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoJ3N1Ym1pdHRpbmdfZWRpdCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN1bW1hcnk6ICQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnI1dpa2lwbHVzLVF1aWNrZWRpdC1TdW1tYXJ5LUlucHV0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkudmFsKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogJCgnI1dpa2lwbHVzLVF1aWNrZWRpdCcpLnZhbCgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlzTWlub3JFZGl0OiAkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JyNXaWtpcGx1cy1RdWlja2VkaXQtTWlub3JFZGl0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkuaXMoJzpjaGVja2VkJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVN1Ym1pdCwjV2lraXBsdXMtUXVpY2tlZGl0LCNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1TdWJtaXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnaHRtbCwgYm9keScpLmFuaW1hdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3Njcm9sbFRvcDogZC5zY3JvbGxUb3B9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDIwMFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctT3V0cHV0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLmZhZGVPdXQoMTAwLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LU91dHB1dCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuaHRtbCgnJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQociksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LU91dHB1dCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkuZmFkZUluKDEwMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5wcmV2ID0gNiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSA5KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cChuKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDk6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobyA9IG5ldyBEYXRlKCkudmFsdWVPZigpIC0gZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJyNXaWtpcGx1cy1RdWlja2VkaXQtUHJldmlldy1PdXRwdXQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5maW5kKCcuV2lraXBsdXMtQmFubmVyJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY3NzKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2JhY2tncm91bmQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3JnYmEoNiwgMjM5LCA5MiwgMC40NCknXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1QcmV2aWV3LU91dHB1dCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmZpbmQoJy5XaWtpcGx1cy1CYW5uZXInKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JycuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZSgnZWRpdF9zdWNjZXNzJywgW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8udG9TdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQod2luZG93Lm9uY2xvc2UgPSB3aW5kb3cub25iZWZvcmV1bmxvYWQgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZvaWQgMCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxvY2F0aW9uLnJlbG9hZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCA1MDApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gMjEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxNjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSAxNiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnQwID0gdC5jYXRjaCg2KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHQudDApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtQmFubmVyJykuY3NzKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdiYWNrZ3JvdW5kJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQncmdiYSgyMTgsIDE0MiwgMTY3LCAwLjY1KSdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnLldpa2lwbHVzLUJhbm5lcicpLmh0bWwodC50MC5tZXNzYWdlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDIxOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQucHJldiA9IDIxKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnI1dpa2lwbHVzLVF1aWNrZWRpdC1TdWJtaXQsI1dpa2lwbHVzLVF1aWNrZWRpdCwjV2lraXBsdXMtUXVpY2tlZGl0LVByZXZpZXctU3VibWl0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLnByb3AoJ2Rpc2FibGVkJywgITEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmZpbmlzaCgyMSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAyNDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W1s2LCAxNiwgMjEsIDI0XV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCcjV2lraXBsdXMtUXVpY2tlZGl0LCNXaWtpcGx1cy1RdWlja2VkaXQtU3VtbWFyeS1JbnB1dCwjV2lraXBsdXMtUXVpY2tlZGl0LU1pbm9yRWRpdCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0KS5vbigna2V5ZG93bicsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5jdHJsS2V5ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ4MyA9PT0gdC53aGljaCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQuc2hpZnRLZXkgJiYgJCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1NaW5vckVkaXQnKS50cmlnZ2VyKCdjbGljaycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1TdWJtaXQnKS50cmlnZ2VyKCdjbGljaycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5wcmV2ZW50RGVmYXVsdCgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5zdG9wUHJvcGFnYXRpb24oKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2ICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChkb2N1bWVudCkub24oJ2tleWRvd24nLCBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0MjcgPT09IHQud2hpY2ggJiYgJCgnI1dpa2lwbHVzLVF1aWNrZWRpdC1CYWNrJykuY2xpY2soKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaGlkZVF1aWNrRWRpdFBhbmVsJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMucXVpY2tFZGl0UGFuZWxWaXNpYmxlID0gITEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtSW50ZXJCb3gnKS5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh3aW5kb3cub25jbG9zZSA9IHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IHZvaWQgMCksICQodGhpcykucmVtb3ZlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdzaG93U2ltcGxlUmVkaXJlY3RQYW5lbCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gdGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDoge30sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSBlLm9uRWRpdCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0biA9IHZvaWQgMCA9PT0gciA/IGZ1bmN0aW9uICgpIHt9IDogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0byA9IGUub25TdWNjZXNzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpID0gdm9pZCAwID09PSBvID8gZnVuY3Rpb24gKCkge30gOiBvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhID0gJCgnPGlucHV0PicpLmFkZENsYXNzKCdXaWtpcGx1cy1JbnRlckJveC1JbnB1dCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1ID0gJCgnPGRpdj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hZGRDbGFzcygnV2lraXBsdXMtSW50ZXJCb3gtQnRuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXR0cignaWQnLCAnV2lraXBsdXMtU1ItQXBwbHknKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFAudHJhbnNsYXRlKCdzdWJtaXQnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGMgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1JbnRlckJveC1CdG4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1TUi1DYW5jZWwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFAudHJhbnNsYXRlKCdjYW5jZWwnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHMgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1JbnRlckJveC1CdG4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1TUi1Db250aW51ZScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoUC50cmFuc2xhdGUoJ2NvbnRpbnVlJykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmID0gJCgnPGRpdj4nKS5hcHBlbmQoYSkuYXBwZW5kKCQoJzxocj4nKSkuYXBwZW5kKHUpLmFwcGVuZChjKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bCA9IHRoaXMuY3JlYXRlRGlhbG9nQm94KFAudHJhbnNsYXRlKCdyZWRpcmVjdF9kZXNjJyksIGYsIDYwMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR1Lm9uKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnY2xpY2snLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRndCgpLm1hcmsoZnVuY3Rpb24gZSgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGd0KCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgoZS5wcmV2ID0gZS5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyID0gJCgnLldpa2lwbHVzLUludGVyQm94LUlucHV0JykudmFsKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnLldpa2lwbHVzLUludGVyQm94LUNvbnRlbnQnKS5odG1sKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cIldpa2lwbHVzLUJhbm5lclwiPicuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCdzdWJtaXR0aW5nX2VkaXQnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnPC9kaXY+J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUucHJldiA9IDIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUubmV4dCA9IDUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bih7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JjZU92ZXJ3cml0ZTogITEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtQmFubmVyJykudGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCdyZWRpcmVjdF9zYXZlZCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuaGlkZVNpbXBsZVJlZGlyZWN0UGFuZWwobCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLm5leHQgPSAxNSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUucHJldiA9IDEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLnQwID0gZS5jYXRjaCgyKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcuV2lraXBsdXMtQmFubmVyJykuY3NzKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnYmFja2dyb3VuZCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdyZ2JhKDIxOCwgMTQyLCAxNjcsIDAuNjUpJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoJy5XaWtpcGx1cy1CYW5uZXInKS50ZXh0KGUudDAubWVzc2FnZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnYXJ0aWNsZWV4aXN0cycgPT09IGUudDAuY29kZSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoJCgnLldpa2lwbHVzLUludGVyQm94LUNvbnRlbnQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQoJCgnPGhyPicpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hcHBlbmQocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYXBwZW5kKGMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmhpZGVTaW1wbGVSZWRpcmVjdFBhbmVsKGwpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cy5vbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnY2xpY2snLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJ0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Z3QoKS5tYXJrKGZ1bmN0aW9uIGUoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBndCgpLndyYXAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUucHJldiA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLm5leHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Jy5XaWtpcGx1cy1JbnRlckJveC1Db250ZW50J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLmh0bWwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JzxkaXYgY2xhc3M9XCJXaWtpcGx1cy1CYW5uZXJcIj4nLmNvbmNhdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnc3VibWl0dGluZ19lZGl0J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCc8L2Rpdj4nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZS5wcmV2ID0gMSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLm5leHQgPSA0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bih7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yY2VPdmVyd3JpdGU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Jy5XaWtpcGx1cy1CYW5uZXInXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLnRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdyZWRpcmVjdF9zYXZlZCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5oaWRlU2ltcGxlUmVkaXJlY3RQYW5lbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUubmV4dCA9IDEzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgOTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLnByZXYgPSA5KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUudDAgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUuY2F0Y2goXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQxXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Jy5XaWtpcGx1cy1CYW5uZXInXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkuY3NzKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdiYWNrZ3JvdW5kJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQncmdiYSgyMTgsIDE0MiwgMTY3LCAwLjY1KSdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnLldpa2lwbHVzLUJhbm5lcidcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KS50ZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUudDBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5tZXNzYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGUuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W1sxLCA5XV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAxNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZS5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtbMiwgMTBdXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmhpZGVTaW1wbGVSZWRpcmVjdFBhbmVsKGwpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnaGlkZVNpbXBsZVJlZGlyZWN0UGFuZWwnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAkKCdib2R5JykpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5maW5kKCcuV2lraXBsdXMtSW50ZXJCb3gtQ2xvc2UnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQudHJpZ2dlcignY2xpY2snKTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiAnc2hvd1NldHRpbmdzUGFuZWwnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGUgPSAoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiB7fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQub25TdWJtaXQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHIgPSB2b2lkIDAgPT09IGUgPyBmdW5jdGlvbiAoKSB7fSA6IGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG4gPSAkKCc8dGV4dGFyZWE+JykuYXR0cignaWQnLCAnV2lraXBsdXMtU2V0dGluZy1JbnB1dCcpLmF0dHIoJ3Jvd3MnLCAnMTAnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0byA9ICQoJzxkaXY+Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUludGVyQm94LUJ0bicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmF0dHIoJ2lkJywgJ1dpa2lwbHVzLVNldHRpbmctQXBwbHknKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFAudHJhbnNsYXRlKCdzdWJtaXQnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGkgPSAkKCc8ZGl2PicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFkZENsYXNzKCdXaWtpcGx1cy1JbnRlckJveC1CdG4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5hdHRyKCdpZCcsICdXaWtpcGx1cy1TZXR0aW5nLUNhbmNlbCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnRleHQoUC50cmFuc2xhdGUoJ2NhbmNlbCcpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YSA9ICQoJzxkaXY+JykuYXBwZW5kKG4pLmFwcGVuZCgkKCc8aHI+JykpLmFwcGVuZChvKS5hcHBlbmQoaSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHUgPSB0aGlzLmNyZWF0ZURpYWxvZ0JveChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZSgnd2lraXBsdXNfc2V0dGluZ3NfZGVzYycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0NjAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChsb2NhbFN0b3JhZ2UuV2lraXBsdXNfU2V0dGluZ3MpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVNldHRpbmctSW5wdXQnKS52YWwobG9jYWxTdG9yYWdlLldpa2lwbHVzX1NldHRpbmdzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLldpa2lwbHVzX1NldHRpbmdzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkKCcjV2lraXBsdXMtU2V0dGluZy1JbnB1dCcpLnZhbChKU09OLnN0cmluZ2lmeSh0LCBudWxsLCAyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHt9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnI1dpa2lwbHVzLVNldHRpbmctSW5wdXQnKS5hdHRyKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdwbGFjZWhvbGRlcicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoJ3dpa2lwbHVzX3NldHRpbmdzX3BsYWNlaG9sZGVyJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRvLm9uKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnY2xpY2snLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRndCgpLm1hcmsoZnVuY3Rpb24gZSgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBuLCBvO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGd0KCkud3JhcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgoZS5wcmV2ID0gZS5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gJCgnPGRpdj4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ1dpa2lwbHVzLUJhbm5lcicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC50ZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFAudHJhbnNsYXRlKCd3aWtpcGx1c19zZXR0aW5nc19zYXZlZCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG8gPSAkKCcjV2lraXBsdXMtU2V0dGluZy1JbnB1dCcpLnZhbCgpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLnByZXYgPSAyKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZXR0aW5nczogbyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JCgnLldpa2lwbHVzLUludGVyQm94LUNvbnRlbnQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuaHRtbCgnJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmFwcGVuZChuKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLm5leHQgPSA3KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGR0KDE1MDApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA3OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuaGlkZVNldHRpbmdzUGFuZWwodSksIChlLm5leHQgPSAxMyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGUucHJldiA9IDEwKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlLnQwID0gZS5jYXRjaCgyKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2dC5lcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UC50cmFuc2xhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3dpa2lwbHVzX3NldHRpbmdzX2dyYW1tYXJfZXJyb3InXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTM6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGUuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbWzIsIDEwXV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5oaWRlU2V0dGluZ3NQYW5lbCh1KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2hpZGVTZXR0aW5nc1BhbmVsJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0KGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogJCgnYm9keScpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZmluZCgnLldpa2lwbHVzLUludGVyQm94LUNsb3NlJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnRyaWdnZXIoJ2NsaWNrJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGtleTogJ2JpbmRQcmVsb2FkRXZlbnRzJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdCQoJyN0b2MnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuY2hpbGRyZW4oJ3VsJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmZpbmQoJ2EnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQodGhpcykub24oJ21vdXNlb3ZlcicsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCQodGhpcykub2ZmKCdtb3VzZW92ZXInKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbk51bWJlcjogZSArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRyICYmIHd0KGUucHJvdG90eXBlLCByKSxcblx0XHRcdFx0XHRcdG4gJiYgd3QoZSwgbiksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRFdCA9IG5ldyBTdCgpO1xuXHRcdFx0ZnVuY3Rpb24gT3QodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChPdCA9XG5cdFx0XHRcdFx0XHQnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgJiYgJ3N5bWJvbCcgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvclxuXHRcdFx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQgIT09IFN5bWJvbC5wcm90b3R5cGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAnc3ltYm9sJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdE90KHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBQdCh0LCBlKSB7XG5cdFx0XHRcdGZvciAodmFyIHIgPSAwOyByIDwgZS5sZW5ndGg7IHIrKykge1xuXHRcdFx0XHRcdHZhciBuID0gZVtyXTtcblx0XHRcdFx0XHQobi5lbnVtZXJhYmxlID0gbi5lbnVtZXJhYmxlIHx8ICExKSxcblx0XHRcdFx0XHRcdChuLmNvbmZpZ3VyYWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdCd2YWx1ZScgaW4gbiAmJiAobi53cml0YWJsZSA9ICEwKSxcblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBqdChuLmtleSksIG4pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBqdCh0KSB7XG5cdFx0XHRcdHZhciBlID0gKGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0aWYgKCdvYmplY3QnICE9PSBPdCh0KSB8fCBudWxsID09PSB0KSByZXR1cm4gdDtcblx0XHRcdFx0XHR2YXIgciA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcblx0XHRcdFx0XHRpZiAodm9pZCAwICE9PSByKSB7XG5cdFx0XHRcdFx0XHR2YXIgbiA9IHIuY2FsbCh0LCBlIHx8ICdkZWZhdWx0Jyk7XG5cdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IE90KG4pKSByZXR1cm4gbjtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0BAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiAoJ3N0cmluZycgPT09IGUgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xuXHRcdFx0XHR9KSh0LCAnc3RyaW5nJyk7XG5cdFx0XHRcdHJldHVybiAnc3ltYm9sJyA9PT0gT3QoZSkgPyBlIDogU3RyaW5nKGUpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIEx0ID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiB0KCkge1xuXHRcdFx0XHRcdFx0IShmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoISh0IGluc3RhbmNlb2YgZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpO1xuXHRcdFx0XHRcdFx0fSkodGhpcywgdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBlLCByLCBuO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQoZSA9IHQpLFxuXHRcdFx0XHRcdFx0KHIgPSBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICdnZXRTZXR0aW5nJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiB7fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0biA9IHI7XG5cdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuV2lraXBsdXNfU2V0dGluZ3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IG5ldyBGdW5jdGlvbigncmV0dXJuICcgKyBlW3RdKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCdmdW5jdGlvbicgIT0gdHlwZW9mIG8pIHJldHVybiBlW3RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAhMCA9PT0gbygpKG4pID8gdm9pZCAwIDogbygpKG4pIHx8IGVbdF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZVt0XTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAobikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSBlW3RdLCBhID0gMCwgdSA9IE9iamVjdC5rZXlzKHIpOyBhIDwgdS5sZW5ndGg7IGErKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSB1W2FdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aSA9IGkucmVwbGFjZSgnJHsnLmNvbmNhdChjLCAnfScpLCByW2NdKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRyICYmIFB0KGUucHJvdG90eXBlLCByKSxcblx0XHRcdFx0XHRcdG4gJiYgUHQoZSwgbiksXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgJ3Byb3RvdHlwZScsIHt3cml0YWJsZTogITF9KSxcblx0XHRcdFx0XHRcdHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KSgpLFxuXHRcdFx0XHRfdCA9IG5ldyBMdCgpO1xuXHRcdFx0ZnVuY3Rpb24gSXQodCkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChJdCA9XG5cdFx0XHRcdFx0XHQnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgJiYgJ3N5bWJvbCcgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvclxuXHRcdFx0XHRcdFx0XHQ/IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIHQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdCAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0dC5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHQgIT09IFN5bWJvbC5wcm90b3R5cGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAnc3ltYm9sJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHR5cGVvZiB0O1xuXHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdEl0KHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBUdCh0LCBlKSB7XG5cdFx0XHRcdHZhciByID0gT2JqZWN0LmtleXModCk7XG5cdFx0XHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRcdFx0dmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO1xuXHRcdFx0XHRcdGUgJiZcblx0XHRcdFx0XHRcdChuID0gbi5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgZSkuZW51bWVyYWJsZTtcblx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdHIucHVzaC5hcHBseShyLCBuKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcjtcblx0XHRcdH1cblx0XHRcdGZ1bmN0aW9uIFJ0KHQpIHtcblx0XHRcdFx0Zm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcblx0XHRcdFx0XHR2YXIgciA9IG51bGwgIT0gYXJndW1lbnRzW2VdID8gYXJndW1lbnRzW2VdIDoge307XG5cdFx0XHRcdFx0ZSAlIDJcblx0XHRcdFx0XHRcdD8gVHQoT2JqZWN0KHIpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdCR0KHQsIGUsIHJbZV0pO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0OiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yc1xuXHRcdFx0XHRcdFx0XHQ/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKVxuXHRcdFx0XHRcdFx0XHQ6IFR0KE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IociwgZSkpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0O1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gJHQodCwgZSwgcikge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChlID0gKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHR2YXIgZSA9IChmdW5jdGlvbiAodCwgZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IEl0KHQpIHx8IG51bGwgPT09IHQpIHJldHVybiB0O1xuXHRcdFx0XHRcdFx0XHR2YXIgciA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcblx0XHRcdFx0XHRcdFx0aWYgKHZvaWQgMCAhPT0gcikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBuID0gci5jYWxsKHQsIGUgfHwgJ2RlZmF1bHQnKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ29iamVjdCcgIT09IEl0KG4pKSByZXR1cm4gbjtcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLicpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoJ3N0cmluZycgPT09IGUgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xuXHRcdFx0XHRcdFx0fSkodCwgJ3N0cmluZycpO1xuXHRcdFx0XHRcdFx0cmV0dXJuICdzeW1ib2wnID09PSBJdChlKSA/IGUgOiBTdHJpbmcoZSk7XG5cdFx0XHRcdFx0fSkoZSkpIGluIHRcblx0XHRcdFx0XHRcdD8gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHt2YWx1ZTogciwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMH0pXG5cdFx0XHRcdFx0XHQ6ICh0W2VdID0gciksXG5cdFx0XHRcdFx0dFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gTnQoKSB7XG5cdFx0XHRcdC8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi8gTnQgPVxuXHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHZhciB0LFxuXHRcdFx0XHRcdGUgPSB7fSxcblx0XHRcdFx0XHRyID0gT2JqZWN0LnByb3RvdHlwZSxcblx0XHRcdFx0XHRuID0gci5oYXNPd25Qcm9wZXJ0eSxcblx0XHRcdFx0XHRvID1cblx0XHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB8fFxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gKHQsIGUsIHIpIHtcblx0XHRcdFx0XHRcdFx0dFtlXSA9IHIudmFsdWU7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGkgPSAnZnVuY3Rpb24nID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcblx0XHRcdFx0XHRhID0gaS5pdGVyYXRvciB8fCAnQEBpdGVyYXRvcicsXG5cdFx0XHRcdFx0dSA9IGkuYXN5bmNJdGVyYXRvciB8fCAnQEBhc3luY0l0ZXJhdG9yJyxcblx0XHRcdFx0XHRjID0gaS50b1N0cmluZ1RhZyB8fCAnQEB0b1N0cmluZ1RhZyc7XG5cdFx0XHRcdGZ1bmN0aW9uIHModCwgZSwgcikge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge3ZhbHVlOiByLCBlbnVtZXJhYmxlOiAhMCwgY29uZmlndXJhYmxlOiAhMCwgd3JpdGFibGU6ICEwfSksIHRbZV1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0cyh7fSwgJycpO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cyA9IGZ1bmN0aW9uICh0LCBlLCByKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKHRbZV0gPSByKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGYodCwgZSwgciwgbikge1xuXHRcdFx0XHRcdHZhciBpID0gZSAmJiBlLnByb3RvdHlwZSBpbnN0YW5jZW9mIGcgPyBlIDogZyxcblx0XHRcdFx0XHRcdGEgPSBPYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxcblx0XHRcdFx0XHRcdHUgPSBuZXcgSShuIHx8IFtdKTtcblx0XHRcdFx0XHRyZXR1cm4gbyhhLCAnX2ludm9rZScsIHt2YWx1ZTogUCh0LCByLCB1KX0pLCBhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIGwodCwgZSwgcikge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiAnbm9ybWFsJyxcblx0XHRcdFx0XHRcdFx0YXJnOiB0LmNhbGwoZSwgciksXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gY2F0Y2ggKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0aHJvdycsXG5cdFx0XHRcdFx0XHRcdGFyZzogdCxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGUud3JhcCA9IGY7XG5cdFx0XHRcdHZhciBwID0gJ3N1c3BlbmRlZFN0YXJ0Jyxcblx0XHRcdFx0XHRoID0gJ3N1c3BlbmRlZFlpZWxkJyxcblx0XHRcdFx0XHR2ID0gJ2V4ZWN1dGluZycsXG5cdFx0XHRcdFx0ZCA9ICdjb21wbGV0ZWQnLFxuXHRcdFx0XHRcdHkgPSB7fTtcblx0XHRcdFx0ZnVuY3Rpb24gZygpIHt9XG5cdFx0XHRcdGZ1bmN0aW9uIG0oKSB7fVxuXHRcdFx0XHRmdW5jdGlvbiBiKCkge31cblx0XHRcdFx0dmFyIHcgPSB7fTtcblx0XHRcdFx0cyh3LCBhLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR2YXIgeCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcblx0XHRcdFx0XHRrID0geCAmJiB4KHgoVChbXSkpKTtcblx0XHRcdFx0ayAmJiBrICE9PSByICYmIG4uY2FsbChrLCBhKSAmJiAodyA9IGspO1xuXHRcdFx0XHR2YXIgUyA9IChiLnByb3RvdHlwZSA9IGcucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh3KSk7XG5cdFx0XHRcdGZ1bmN0aW9uIEUodCkge1xuXHRcdFx0XHRcdFsnbmV4dCcsICd0aHJvdycsICdyZXR1cm4nXS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRzKHQsIGUsIGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLl9pbnZva2UoZSwgdCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBPKHQsIGUpIHtcblx0XHRcdFx0XHRmdW5jdGlvbiByKG8sIGksIGEsIHUpIHtcblx0XHRcdFx0XHRcdHZhciBjID0gbCh0W29dLCB0LCBpKTtcblx0XHRcdFx0XHRcdGlmICgndGhyb3cnICE9PSBjLnR5cGUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBjLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRmID0gcy52YWx1ZTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGYgJiYgJ29iamVjdCcgPT0gSXQoZikgJiYgbi5jYWxsKGYsICdfX2F3YWl0Jylcblx0XHRcdFx0XHRcdFx0XHQ/IGUucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cignbmV4dCcsIHQsIGEsIHUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQ6IGUucmVzb2x2ZShmKS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChzLnZhbHVlID0gdCksIGEocyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHIoJ3Rocm93JywgdCwgYSwgdSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1KGMuYXJnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGk7XG5cdFx0XHRcdFx0byh0aGlzLCAnX2ludm9rZScsIHtcblx0XHRcdFx0XHRcdHZhbHVlOiBmdW5jdGlvbiAodCwgbikge1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgZShmdW5jdGlvbiAoZSwgbykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cih0LCBuLCBlLCBvKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkgPSBpID8gaS50aGVuKG8sIG8pIDogbygpKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gUChlLCByLCBuKSB7XG5cdFx0XHRcdFx0dmFyIG8gPSBwO1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoaSwgYSkge1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IHYpIHRocm93IG5ldyBFcnJvcignR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZycpO1xuXHRcdFx0XHRcdFx0aWYgKG8gPT09IGQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkpIHRocm93IGE7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHQsXG5cdFx0XHRcdFx0XHRcdFx0ZG9uZTogITAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRmb3IgKG4ubWV0aG9kID0gaSwgbi5hcmcgPSBhOyA7ICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdSA9IG4uZGVsZWdhdGU7XG5cdFx0XHRcdFx0XHRcdGlmICh1KSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGMgPSBqKHUsIG4pO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYyA9PT0geSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCduZXh0JyA9PT0gbi5tZXRob2QpIG4uc2VudCA9IG4uX3NlbnQgPSBuLmFyZztcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoJ3Rocm93JyA9PT0gbi5tZXRob2QpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAobyA9PT0gcCkgdGhyb3cgKChvID0gZCksIG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0XHRuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlICdyZXR1cm4nID09PSBuLm1ldGhvZCAmJiBuLmFicnVwdCgncmV0dXJuJywgbi5hcmcpO1xuXHRcdFx0XHRcdFx0XHRvID0gdjtcblx0XHRcdFx0XHRcdFx0dmFyIHMgPSBsKGUsIHIsIG4pO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ25vcm1hbCcgPT09IHMudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoKG8gPSBuLmRvbmUgPyBkIDogaCksIHMuYXJnID09PSB5KSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBzLmFyZyxcblx0XHRcdFx0XHRcdFx0XHRcdGRvbmU6IG4uZG9uZSxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCd0aHJvdycgPT09IHMudHlwZSAmJiAoKG8gPSBkKSwgKG4ubWV0aG9kID0gJ3Rocm93JyksIChuLmFyZyA9IHMuYXJnKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBqKGUsIHIpIHtcblx0XHRcdFx0XHR2YXIgbiA9IHIubWV0aG9kLFxuXHRcdFx0XHRcdFx0byA9IGUuaXRlcmF0b3Jbbl07XG5cdFx0XHRcdFx0aWYgKG8gPT09IHQpXG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQoci5kZWxlZ2F0ZSA9IG51bGwpLFxuXHRcdFx0XHRcdFx0XHQoJ3Rocm93JyA9PT0gbiAmJlxuXHRcdFx0XHRcdFx0XHRcdGUuaXRlcmF0b3IucmV0dXJuICYmXG5cdFx0XHRcdFx0XHRcdFx0KChyLm1ldGhvZCA9ICdyZXR1cm4nKSwgKHIuYXJnID0gdCksIGooZSwgciksICd0aHJvdycgPT09IHIubWV0aG9kKSkgfHxcblx0XHRcdFx0XHRcdFx0XHQoJ3JldHVybicgIT09IG4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdCgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0XHRcdChyLmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcIiArIG4gKyBcIicgbWV0aG9kXCIpKSkpLFxuXHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHZhciBpID0gbChvLCBlLml0ZXJhdG9yLCByLmFyZyk7XG5cdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IGkudHlwZSkgcmV0dXJuIChyLm1ldGhvZCA9ICd0aHJvdycpLCAoci5hcmcgPSBpLmFyZyksIChyLmRlbGVnYXRlID0gbnVsbCksIHk7XG5cdFx0XHRcdFx0dmFyIGEgPSBpLmFyZztcblx0XHRcdFx0XHRyZXR1cm4gYVxuXHRcdFx0XHRcdFx0PyBhLmRvbmVcblx0XHRcdFx0XHRcdFx0PyAoKHJbZS5yZXN1bHROYW1lXSA9IGEudmFsdWUpLFxuXHRcdFx0XHRcdFx0XHRcdChyLm5leHQgPSBlLm5leHRMb2MpLFxuXHRcdFx0XHRcdFx0XHRcdCdyZXR1cm4nICE9PSByLm1ldGhvZCAmJiAoKHIubWV0aG9kID0gJ25leHQnKSwgKHIuYXJnID0gdCkpLFxuXHRcdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0eSlcblx0XHRcdFx0XHRcdFx0OiBhXG5cdFx0XHRcdFx0XHQ6ICgoci5tZXRob2QgPSAndGhyb3cnKSxcblx0XHRcdFx0XHRcdFx0KHIuYXJnID0gbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QnKSksXG5cdFx0XHRcdFx0XHRcdChyLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdHkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZ1bmN0aW9uIEwodCkge1xuXHRcdFx0XHRcdHZhciBlID0ge1xuXHRcdFx0XHRcdFx0dHJ5TG9jOiB0WzBdLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0MSBpbiB0ICYmIChlLmNhdGNoTG9jID0gdFsxXSksXG5cdFx0XHRcdFx0XHQyIGluIHQgJiYgKChlLmZpbmFsbHlMb2MgPSB0WzJdKSwgKGUuYWZ0ZXJMb2MgPSB0WzNdKSksXG5cdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMucHVzaChlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBfKHQpIHtcblx0XHRcdFx0XHR2YXIgZSA9IHQuY29tcGxldGlvbiB8fCB7fTtcblx0XHRcdFx0XHQoZS50eXBlID0gJ25vcm1hbCcpLCBkZWxldGUgZS5hcmcsICh0LmNvbXBsZXRpb24gPSBlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBJKHQpIHtcblx0XHRcdFx0XHQodGhpcy50cnlFbnRyaWVzID0gW3t0cnlMb2M6ICdyb290J31dKSwgdC5mb3JFYWNoKEwsIHRoaXMpLCB0aGlzLnJlc2V0KCEwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBUKGUpIHtcblx0XHRcdFx0XHRpZiAoZSB8fCAnJyA9PT0gZSkge1xuXHRcdFx0XHRcdFx0dmFyIHIgPSBlW2FdO1xuXHRcdFx0XHRcdFx0aWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG5cdFx0XHRcdFx0XHRpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZS5uZXh0KSByZXR1cm4gZTtcblx0XHRcdFx0XHRcdGlmICghaXNOYU4oZS5sZW5ndGgpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBvID0gLTEsXG5cdFx0XHRcdFx0XHRcdFx0aSA9IGZ1bmN0aW9uIHIoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDsgKytvIDwgZS5sZW5ndGg7IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG4uY2FsbChlLCBvKSkgcmV0dXJuIChyLnZhbHVlID0gZVtvXSksIChyLmRvbmUgPSAhMSksIHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHIudmFsdWUgPSB0KSwgKHIuZG9uZSA9ICEwKSwgcjtcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKGkubmV4dCA9IGkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKEl0KGUpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChtLnByb3RvdHlwZSA9IGIpLFxuXHRcdFx0XHRcdG8oUywgJ2NvbnN0cnVjdG9yJywge3ZhbHVlOiBiLCBjb25maWd1cmFibGU6ICEwfSksXG5cdFx0XHRcdFx0byhiLCAnY29uc3RydWN0b3InLCB7dmFsdWU6IG0sIGNvbmZpZ3VyYWJsZTogITB9KSxcblx0XHRcdFx0XHQobS5kaXNwbGF5TmFtZSA9IHMoYiwgYywgJ0dlbmVyYXRvckZ1bmN0aW9uJykpLFxuXHRcdFx0XHRcdChlLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSAnZnVuY3Rpb24nID09IHR5cGVvZiB0ICYmIHQuY29uc3RydWN0b3I7XG5cdFx0XHRcdFx0XHRyZXR1cm4gISFlICYmIChlID09PSBtIHx8ICdHZW5lcmF0b3JGdW5jdGlvbicgPT09IChlLmRpc3BsYXlOYW1lIHx8IGUubmFtZSkpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLm1hcmsgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0T2JqZWN0LnNldFByb3RvdHlwZU9mXG5cdFx0XHRcdFx0XHRcdFx0PyBPYmplY3Quc2V0UHJvdG90eXBlT2YodCwgYilcblx0XHRcdFx0XHRcdFx0XHQ6ICgodC5fX3Byb3RvX18gPSBiKSwgcyh0LCBjLCAnR2VuZXJhdG9yRnVuY3Rpb24nKSksXG5cdFx0XHRcdFx0XHRcdCh0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUykpLFxuXHRcdFx0XHRcdFx0XHR0XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLmF3cmFwID0gZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdF9fYXdhaXQ6IHQsXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdEUoTy5wcm90b3R5cGUpLFxuXHRcdFx0XHRcdHMoTy5wcm90b3R5cGUsIHUsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLkFzeW5jSXRlcmF0b3IgPSBPKSxcblx0XHRcdFx0XHQoZS5hc3luYyA9IGZ1bmN0aW9uICh0LCByLCBuLCBvLCBpKSB7XG5cdFx0XHRcdFx0XHR2b2lkIDAgPT09IGkgJiYgKGkgPSBQcm9taXNlKTtcblx0XHRcdFx0XHRcdHZhciBhID0gbmV3IE8oZih0LCByLCBuLCBvKSwgaSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpXG5cdFx0XHRcdFx0XHRcdD8gYVxuXHRcdFx0XHRcdFx0XHQ6IGEubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmRvbmUgPyB0LnZhbHVlIDogYS5uZXh0KCk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0RShTKSxcblx0XHRcdFx0XHRzKFMsIGMsICdHZW5lcmF0b3InKSxcblx0XHRcdFx0XHRzKFMsIGEsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHMoUywgJ3RvU3RyaW5nJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICdbb2JqZWN0IEdlbmVyYXRvcl0nO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdChlLmtleXMgPSBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0dmFyIGUgPSBPYmplY3QodCksXG5cdFx0XHRcdFx0XHRcdHIgPSBbXTtcblx0XHRcdFx0XHRcdGZvciAodmFyIG4gaW4gZSkgci5wdXNoKG4pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0ci5yZXZlcnNlKCksXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICg7IHIubGVuZ3RoOyApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBuID0gci5wb3AoKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChuIGluIGUpIHJldHVybiAodC52YWx1ZSA9IG4pLCAodC5kb25lID0gITEpLCB0O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKHQuZG9uZSA9ICEwKSwgdDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQoZS52YWx1ZXMgPSBUKSxcblx0XHRcdFx0XHQoSS5wcm90b3R5cGUgPSB7XG5cdFx0XHRcdFx0XHRjb25zdHJ1Y3RvcjogSSxcblx0XHRcdFx0XHRcdHJlc2V0OiBmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0KCh0aGlzLnByZXYgPSAwKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5uZXh0ID0gMCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5kb25lID0gITEpLFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRlbGVnYXRlID0gbnVsbCksXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMubWV0aG9kID0gJ25leHQnKSxcblx0XHRcdFx0XHRcdFx0XHQodGhpcy5hcmcgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChfKSxcblx0XHRcdFx0XHRcdFx0XHQhZSlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgaW4gdGhpcylcblx0XHRcdFx0XHRcdFx0XHRcdCd0JyA9PT0gci5jaGFyQXQoMCkgJiYgbi5jYWxsKHRoaXMsIHIpICYmICFpc05hTigrci5zbGljZSgxKSkgJiYgKHRoaXNbcl0gPSB0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzdG9wOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZG9uZSA9ICEwO1xuXHRcdFx0XHRcdFx0XHR2YXIgdCA9IHRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO1xuXHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gdC50eXBlKSB0aHJvdyB0LmFyZztcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMucnZhbDtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuZG9uZSkgdGhyb3cgZTtcblx0XHRcdFx0XHRcdFx0dmFyIHIgPSB0aGlzO1xuXHRcdFx0XHRcdFx0XHRmdW5jdGlvbiBvKG4sIG8pIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0KHUudHlwZSA9ICd0aHJvdycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0KHUuYXJnID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0XHQoci5uZXh0ID0gbiksXG5cdFx0XHRcdFx0XHRcdFx0XHRvICYmICgoci5tZXRob2QgPSAnbmV4dCcpLCAoci5hcmcgPSB0KSksXG5cdFx0XHRcdFx0XHRcdFx0XHQhIW9cblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYSA9IHRoaXMudHJ5RW50cmllc1tpXSxcblx0XHRcdFx0XHRcdFx0XHRcdHUgPSBhLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCdyb290JyA9PT0gYS50cnlMb2MpIHJldHVybiBvKCdlbmQnKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgYyA9IG4uY2FsbChhLCAnY2F0Y2hMb2MnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cyA9IG4uY2FsbChhLCAnZmluYWxseUxvYycpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGMgJiYgcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5jYXRjaExvYykgcmV0dXJuIG8oYS5jYXRjaExvYywgITApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5wcmV2IDwgYS5maW5hbGx5TG9jKSByZXR1cm4gbyhhLmZpbmFsbHlMb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByZXYgPCBhLmNhdGNoTG9jKSByZXR1cm4gbyhhLmNhdGNoTG9jLCAhMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXMpIHRocm93IG5ldyBFcnJvcigndHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHknKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJldiA8IGEuZmluYWxseUxvYykgcmV0dXJuIG8oYS5maW5hbGx5TG9jKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhYnJ1cHQ6IGZ1bmN0aW9uICh0LCBlKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHIgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgciA+PSAwOyAtLXIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgbyA9IHRoaXMudHJ5RW50cmllc1tyXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoby50cnlMb2MgPD0gdGhpcy5wcmV2ICYmIG4uY2FsbChvLCAnZmluYWxseUxvYycpICYmIHRoaXMucHJldiA8IG8uZmluYWxseUxvYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGkgPSBvO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGkgJiZcblx0XHRcdFx0XHRcdFx0XHQoJ2JyZWFrJyA9PT0gdCB8fCAnY29udGludWUnID09PSB0KSAmJlxuXHRcdFx0XHRcdFx0XHRcdGkudHJ5TG9jIDw9IGUgJiZcblx0XHRcdFx0XHRcdFx0XHRlIDw9IGkuZmluYWxseUxvYyAmJlxuXHRcdFx0XHRcdFx0XHRcdChpID0gbnVsbCk7XG5cdFx0XHRcdFx0XHRcdHZhciBhID0gaSA/IGkuY29tcGxldGlvbiA6IHt9O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdChhLnR5cGUgPSB0KSxcblx0XHRcdFx0XHRcdFx0XHQoYS5hcmcgPSBlKSxcblx0XHRcdFx0XHRcdFx0XHRpID8gKCh0aGlzLm1ldGhvZCA9ICduZXh0JyksICh0aGlzLm5leHQgPSBpLmZpbmFsbHlMb2MpLCB5KSA6IHRoaXMuY29tcGxldGUoYSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjb21wbGV0ZTogZnVuY3Rpb24gKHQsIGUpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCd0aHJvdycgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0J2JyZWFrJyA9PT0gdC50eXBlIHx8ICdjb250aW51ZScgPT09IHQudHlwZVxuXHRcdFx0XHRcdFx0XHRcdFx0PyAodGhpcy5uZXh0ID0gdC5hcmcpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ICdyZXR1cm4nID09PSB0LnR5cGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAoKHRoaXMucnZhbCA9IHRoaXMuYXJnID0gdC5hcmcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0aGlzLm1ldGhvZCA9ICdyZXR1cm4nKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5uZXh0ID0gJ2VuZCcpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICdub3JtYWwnID09PSB0LnR5cGUgJiYgZSAmJiAodGhpcy5uZXh0ID0gZSksXG5cdFx0XHRcdFx0XHRcdFx0eVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGZpbmlzaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyLmZpbmFsbHlMb2MgPT09IHQpIHJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbiwgci5hZnRlckxvYyksIF8ociksIHk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjYXRjaDogZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChyLnRyeUxvYyA9PT0gdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG4gPSByLmNvbXBsZXRpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJ3Rocm93JyA9PT0gbi50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBvID0gbi5hcmc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdF8ocik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdpbGxlZ2FsIGNhdGNoIGF0dGVtcHQnKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiAoZSwgciwgbikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdCh0aGlzLmRlbGVnYXRlID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aXRlcmF0b3I6IFQoZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHROYW1lOiByLFxuXHRcdFx0XHRcdFx0XHRcdFx0bmV4dExvYzogbixcblx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHQnbmV4dCcgPT09IHRoaXMubWV0aG9kICYmICh0aGlzLmFyZyA9IHQpLFxuXHRcdFx0XHRcdFx0XHRcdHlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0ZnVuY3Rpb24gQ3QodCwgZSwgciwgbiwgbywgaSwgYSkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHZhciB1ID0gdFtpXShhKSxcblx0XHRcdFx0XHRcdGMgPSB1LnZhbHVlO1xuXHRcdFx0XHR9IGNhdGNoICh0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZvaWQgcih0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR1LmRvbmUgPyBlKGMpIDogUHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4obiwgbyk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBBdCh0KSB7XG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0dmFyIGUgPSB0aGlzLFxuXHRcdFx0XHRcdFx0ciA9IGFyZ3VtZW50cztcblx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKG4sIG8pIHtcblx0XHRcdFx0XHRcdHZhciBpID0gdC5hcHBseShlLCByKTtcblx0XHRcdFx0XHRcdGZ1bmN0aW9uIGEodCkge1xuXHRcdFx0XHRcdFx0XHRDdChpLCBuLCBvLCBhLCB1LCAnbmV4dCcsIHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZnVuY3Rpb24gdSh0KSB7XG5cdFx0XHRcdFx0XHRcdEN0KGksIG4sIG8sIGEsIHUsICd0aHJvdycsIHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YSh2b2lkIDApO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0JChcblx0XHRcdFx0QXQoXG5cdFx0XHRcdFx0TnQoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHR2YXIgZSwgciwgbiwgbywgYSwgdSwgYywgcywgZiwgbDtcblx0XHRcdFx0XHRcdHJldHVybiBOdCgpLndyYXAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKGUgPSB7fSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPSAkKCcubm9hcnRpY2xldGV4dCcpLmxlbmd0aCA+IDAgJiYgMCA9PT0gaS5hcnRpY2xlSWQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gQXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE50KCkubWFyayhmdW5jdGlvbiB0KHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbiwgbywgaTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTnQoKS53cmFwKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKG4gPSByLnJldmlzaW9uSWQpLCAobyA9IHIudGl0bGUpLCAhZVtuXSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFicnVwdCgncmV0dXJuJywgZVtuXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGkgPSBuZXcgc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldmlzaW9uSWQ6IG4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG8sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDYpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpLmluaXQoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDY6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKGVbbl0gPSBpKSwgdC5hYnJ1cHQoJ3JldHVybicsIGVbbl0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgODpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uaW5mbygnV2lraXBsdXMgbm93IGxvYWRpbmcuIFZlcnNpb246ICcuY29uY2F0KGkudmVyc2lvbikpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5tdylcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gNztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdNZWRpYXdpa2kgSmF2YVNjcmlwdCBub3QgbG9hZGVkIG9yIG5vdCBhIE1lZGlhd2lraSB3ZWJzaXRlLicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuYWJydXB0KCdyZXR1cm4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSA3OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaS51c2VyR3JvdXBzLmluY2x1ZGVzKCdhdXRvY29uZmlybWVkJykpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSAxMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZ0LmVycm9yKFAudHJhbnNsYXRlKCdub3RfYXV0b2NvbmZpcm1lZF91c2VyJykpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uaW5mbyhQLnRyYW5zbGF0ZSgnbm90X2F1dG9jb25maXJtZWRfdXNlcicpKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LmFicnVwdCgncmV0dXJuJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTE6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpLmlzQXJ0aWNsZSAmJiAndmlldycgPT09IGkuYWN0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMTQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIE0uaW5mbygnTm90IGFuIGVkaXRhYmxlIHBhZ2UuIFN0b3AgaW5pdGlhbGl6YXRpb24uJyksIHQuYWJydXB0KCdyZXR1cm4nKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHdpbmRvdy5fV2lraXBsdXNQYWdlcyA9IGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvID0gaS5jdXJyZW50UGFnZU5hbWUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChhID0gaS5yZXZpc2lvbklkKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gMTkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG4oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV2aXNpb25JZDogYSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBvLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE5OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQodSA9IHQuc2VudCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGMgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBBdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TnQoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHYsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Yixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ayA9IGFyZ3VtZW50cztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTnQoKS53cmFwKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKDs7KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKCh0LnByZXYgPSB0Lm5leHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKGEgPSAoZSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ay5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0ga1swXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBrWzBdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHt9KS5zZWN0aW9uTnVtYmVyKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHUgPSBlLnNlY3Rpb25OYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGMgPSBlLnRhcmdldFBhZ2VOYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IShzID0gYyAhPT0gbykgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpLmxhdGVzdFJldmlzaW9uSWQgPT09IGkucmV2aXNpb25JZClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0Lm5leHQgPSA1O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdE0uZXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2Nyb3NzX3BhZ2VfaGlzdG9yeV9yZXZpc2lvbl9lZGl0X3dhcm5pbmcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQuYWJydXB0KCdyZXR1cm4nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dC5uZXh0ID0gMTE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRYLmdldExhdGVzdFJldmlzaW9uSWRGb3JQYWdlKGMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgODpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnQwID0gdC5zZW50KSwgKHQubmV4dCA9IDEyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTE6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LnQwID0gaS5yZXZpc2lvbklkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZiA9IHQudDApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gMTUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXZpc2lvbklkOiBmLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBjLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGwgPSB0LnNlbnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocCA9IF90LmdldFNldHRpbmcoJ2RlZmF1bHRTdW1tYXJ5Jywge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNlY3Rpb25OYW1lOiB1LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNlY3Rpb25OdW1iZXI6IGEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvblRhcmdldE5hbWU6IGMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGggPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHAgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyAnLyogJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQodSwgJyAqLyAnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5jb25jYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2RlZmF1bHRfc3VtbWFyeV9zdWZmaXgnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBQLnRyYW5zbGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZGVmYXVsdF9zdW1tYXJ5X3N1ZmZpeCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodiA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZ0LnN1Y2Nlc3MoUC50cmFuc2xhdGUoJ2xvYWRpbmcnKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIDIwMCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gMjEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsLmdldFdpa2lUZXh0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uOiBhLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDIxOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGQgPSB0LnNlbnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoeSA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IXMgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpLmxhdGVzdFJldmlzaW9uSWQgIT09IGkucmV2aXNpb25JZCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChnID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhMCA9PT1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF90LmdldFNldHRpbmcoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdlc2NfdG9fZXhpdF9xdWlja2VkaXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3RydWUnID09PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0X3QuZ2V0U2V0dGluZyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2VzY190b19leGl0X3F1aWNrZWRpdCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhMCA9PT1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF90LmdldFNldHRpbmcoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdlc2NUb0V4aXRRdWlja0VkaXQnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3RydWUnID09PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0X3QuZ2V0U2V0dGluZyhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2VzY1RvRXhpdFF1aWNrRWRpdCdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobSA9IF90LmdldFNldHRpbmcoJ2N1c3RvbV9lZGl0X3RhZ3MnKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChiID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsb2NhdGlvbi5ob3N0LmluY2x1ZGVzKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3poLndpa2lwZWRpYS5vcmcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxvY2F0aW9uLmhvc3QuaW5jbHVkZXMoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnemgubS53aWtpcGVkaWEub3JnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gWyd3aWtpcGx1cyddXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFtdKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHcgPSBudWxsICE9IG0gJiYgbS5sZW5ndGggPyBtIDogYiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsZWFyVGltZW91dCh2KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dnQuZW1wdHkoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZ0Lndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZSgnaGlzdG9yeV9lZGl0X3dhcm5pbmcnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh4ID0gcyA/ICFmIDogciksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEV0LnNob3dRdWlja0VkaXRQYW5lbCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZSgncXVpY2tlZGl0X3RvcGJ0bicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBQLnRyYW5zbGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2hpc3RvcnlfZWRpdF93YXJuaW5nJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogJydcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogeFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBQLnRyYW5zbGF0ZSgnY3JlYXRlX3BhZ2VfdGlwJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiBoLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uQmFjazogRXQuaGlkZVF1aWNrRWRpdFBhbmVsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uUGFyc2U6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbC5wYXJzZVdpa2lUZXh0KHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25FZGl0OiAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBBdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TnQoKS5tYXJrKGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByLCBuLCBvLCBpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBOdCgpLndyYXAoZnVuY3Rpb24gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5wcmV2ID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHQubmV4dClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHIgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUuY29udGVudCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChuID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLnN1bW1hcnkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobyA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5pc01pbm9yRWRpdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChpID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpZzogUnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRSdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN1bW1hcnk6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQtMSAhPT1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNlY3Rpb246XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHt9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dy5sZW5ndGhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdzOiB3LmpvaW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd8J1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDoge31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD8gKGkuY29uZmlnLm1pbm9yID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3RydWUnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogKGkuY29uZmlnLm5vdG1pbm9yID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3RydWUnKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHQubmV4dCA9IDUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsLmVkaXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXNjRXhpdDogZyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAzMjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBBdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TnQoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIE50KCkud3JhcChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEV0LnNob3dTaW1wbGVSZWRpcmVjdFBhbmVsKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25FZGl0OiAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciB0ID0gQXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHROdCgpLm1hcmsoZnVuY3Rpb24gdChlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByLCBvLCBhLCB1LCBjLCBzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTnQoKS53cmFwKGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0LnByZXYgPSB0Lm5leHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGUudGl0bGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KG8gPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLmZvcmNlT3ZlcndyaXRlKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChhID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dm9pZCAwICE9PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG8gJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0byksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gMyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHUgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0LnNlbnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGMgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpLmN1cnJlbnRQYWdlTmFtZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnI1JFRElSRUNUIFtbJy5jb25jYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J11dJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN1bW1hcnk6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRQLnRyYW5zbGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3JlZGlyZWN0X2Zyb21fc3VtbWFyeScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGEgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHMuY29uZmlnLmNyZWF0ZW9ubHkgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd0cnVlJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQodC5uZXh0ID0gOSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1LmVkaXQocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDk6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25TdWNjZXNzOiBmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBlID0gdC50aXRsZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsb2NhdGlvbi5ocmVmID0gaS5hcnRpY2xlUGF0aC5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0L1xcJDEvZ2ksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGYgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBBdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TnQoKS5tYXJrKGZ1bmN0aW9uIHQoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIE50KCkud3JhcChmdW5jdGlvbiAodCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICg7Oylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoICgodC5wcmV2ID0gdC5uZXh0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEV0LnNob3dTZXR0aW5nc1BhbmVsKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25TdWJtaXQ6IGZ1bmN0aW9uICh0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGUgPSB0LnNldHRpbmdzO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEpTT04ucGFyc2UoZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J1dpa2lwbHVzX1NldHRpbmdzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGwgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHQgPSBBdChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0TnQoKS5tYXJrKGZ1bmN0aW9uIHQoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBOdCgpLndyYXAoZnVuY3Rpb24gKHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoOzspXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAoKHQucHJldiA9IHQubmV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQociA9IGUuc2VjdGlvbk51bWJlciksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCh0Lm5leHQgPSAzKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dS5nZXRXaWtpVGV4dCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2VjdGlvbjogcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdC5zdG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LCB0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkoKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuaW5zZXJ0VG9wUXVpY2tFZGl0RW50cnkoYyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuaW5zZXJ0U2VjdGlvblF1aWNrRWRpdEVudHJpZXMoYyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuaW5zZXJ0TGlua0VkaXRFbnRyaWVzKGMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEV0Lmluc2VydFNpbXBsZVJlZGlyZWN0QnV0dG9uKHMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEV0Lmluc2VydFNldHRpbmdzUGFuZWxCdXR0b24oZiksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0RXQuYmluZFByZWxvYWRFdmVudHMobCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDMwOlxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZW5kJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHQuc3RvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sIHQpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fSkoKTtcbn0pKCk7XG5cbmV4cG9ydCB7fTtcbiIsICJpbXBvcnQgJy4vV2lraXBsdXMubGVzcyc7XG5cbihhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdGNvbnN0IHt3Z0FjdGlvbiwgd2dJc0FydGljbGV9ID0gbXcuY29uZmlnLmdldCgpO1xuXHRpZiAod2dBY3Rpb24gIT09ICd2aWV3JyB8fCAhd2dJc0FydGljbGUpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB7J3Zpc3VhbGVkaXRvci1lbmFibGUnOiBpc1ZlRW5hYmxlfSA9IG13LnVzZXIub3B0aW9ucy5nZXQoKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRjb25zdCBsb2FkZXIgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0YXdhaXQgaW1wb3J0KCcuL21vZHVsZXMvY29yZScpO1xuXHR9O1xuXG5cdC8qIHNlZSA8aHR0cHM6Ly9naXRodWIuY29tL1dpa2lwbHVzL1dpa2lwbHVzL2lzc3Vlcy82NT4gKi9cblx0aWYgKGlzVmVFbmFibGUpIHtcblx0XHRhd2FpdCBtdy5sb2FkZXIudXNpbmcoJ2V4dC52aXN1YWxFZGl0b3IuY29yZScpO1xuXHR9XG5cblx0dm9pZCBsb2FkZXIoKTtcbn0pKCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUEsdUZBQUFBLFNBQUE7QUFBQTtBQUNBLElBQUFBLFFBQU8sVUFBVSxTQUFVLE1BQU07QUFDL0IsVUFBSTtBQUNGLGVBQU8sQ0FBQyxDQUFDLEtBQUs7QUFBQSxNQUNoQixTQUFTLE9BQU87QUFDZCxlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNQQTtBQUFBLDZGQUFBQyxTQUFBO0FBQUE7QUFDQSxRQUFJLFFBQVE7QUFHWixJQUFBQSxRQUFPLFVBQVUsQ0FBQyxNQUFNLFdBQVk7QUFFbEMsYUFBTyxPQUFPLGVBQWUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLFdBQVk7QUFBRSxlQUFPO0FBQUEsTUFBRyxFQUFFLENBQUMsRUFB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IiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJkb2N1bWVudCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm5hdmlnYXRvciIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJEZW5vIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAiU3ltYm9sIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIlR5cGVFcnJvciIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIkFycmF5QnVmZmVyIiwgIlR5cGVFcnJvciIsICJtb2R1bGUiLCAiZ2xvYmFsVGhpcyIsICJBcnJheUJ1ZmZlciIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAibW9kdWxlIiwgImdsb2JhbFRoaXMiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIm1vZHVsZSIsICJnbG9iYWxUaGlzIiwgIkFycmF5QnVmZmVyIiwgIiQiLCAiJCIsICJtb2R1bGUiLCAibW9kdWxlIiwgIm1vZHVsZSIsICJtb2R1bGUiLCAiY29yZV9leHBvcnRzIiwgImluaXRfY29yZSIsICJfX2VzbSIsICJXaWtpcGx1cyIsICJ0IiwgInQyIiwgImUyIiwgInIyIiwgIm4iLCAibyIsICJpIiwgIlR5cGVFcnJvciIsICJleHBvcnRzIiwgInQzIiwgImhhcyIsICJTdHJpbmciLCAiZiIsICJhIiwgInUiLCAiQXJyYXkiLCAicHJvdG90eXBlIiwgImNvbmZpZ3VyYWJsZSIsICJ2YWx1ZSIsICJjaGFyQXQiLCAiZTMiLCAicjMiLCAibGVuZ3RoIiwgIkFycmF5QnVmZmVyIiwgIk9iamVjdCIsICJpc0V4dGVuc2libGUiLCAiZGVmaW5lUHJvcGVydHkiLCAiZm9yRWFjaCIsICJhcmd1bWVudHMiLCAiYyIsICJzIiwgImwiLCAicCIsICJoIiwgInYiLCAiZCIsICJ5IiwgImciLCAibSIsICJiIiwgInciLCAieCIsICJrIiwgIlMiLCAiRSIsICJuZXh0IiwgImRvbmUiLCAiYTIiLCAiaW5jbHVkZXMiLCAiaW5kZXhPZiIsICJwdXNoIiwgIm8yIiwgImYyIiwgIk8iLCAiUCIsICJtYXAiLCAiZmlsdGVyIiwgInNvbWUiLCAiZXZlcnkiLCAiZmluZCIsICJmaW5kSW5kZXgiLCAiZmlsdGVyUmVqZWN0IiwgImNvbnN0cnVjdG9yIiwgImZvbyIsICJCb29sZWFuIiwgImNhbGwiLCAiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwgIndyaXRhYmxlIiwgIk1hdGgiLCAibWF4IiwgInNsaWNlIiwgImZsb29yIiwgIm4yIiwgImkyIiwgInUyIiwgInJlc29sdmUiLCAidGhlbiIsICJ0NCIsICJzZXQiLCAiZ2V0dGVyRm9yIiwgImVycm9yIiwgImV4aXQiLCAicmVqZWN0IiwgImU0IiwgInI0IiwgIm5leHRIYW5kbGVyIiwgInJldHVybiIsICJjMiIsICJzMiIsICJpdGVyYXRvciIsICJpbm5lciIsICJ0eXBlIiwgImNvdW50ZXIiLCAibDIiLCAidDUiLCAidDYiLCAieTIiLCAiYjIiLCAibjMiLCAidG9BcnJheSIsICJBc3luY0l0ZXJhdG9yIiwgIkFzeW5jSXRlcmF0b3JQcm90b3R5cGUiLCAiRnVuY3Rpb24iLCAiZnJvbSIsICJ0b1N0cmluZyIsICJjYWxsZWUiLCAiZmFzdEtleSIsICJnZXRDb25zdHJ1Y3RvciIsICJwMiIsICJpbmRleCIsICJmaXJzdCIsICJsYXN0IiwgInNpemUiLCAidGhhdCIsICJBU19FTlRSSUVTIiwgImQyIiwgImtleSIsICJwcmV2aW91cyIsICJyZW1vdmVkIiwgImNsZWFyIiwgImRlbGV0ZSIsICJnZXQiLCAiYWRkIiwgInNldFN0cm9uZyIsICJ0YXJnZXQiLCAic3RhdGUiLCAia2luZCIsICJlbnRyaWVzIiwgImVuYWJsZSIsICJqIiwgIkwiLCAiXyIsICJJIiwgImdsb2JhbCIsICJmb3JjZWQiLCAiZ2V0UHJvdG90eXBlT2YiLCAiZW51bWVyYWJsZSIsICJnZXR0ZXIiLCAic2V0dGVyIiwgIm5hbWUiLCAidW5zYWZlIiwgIm5vbkNvbmZpZ3VyYWJsZSIsICJub25Xcml0YWJsZSIsICJkb2N1bWVudCIsICJhbGwiLCAiSVNfSFRNTEREQSIsICJjcmVhdGVFbGVtZW50IiwgIkNTU1J1bGVMaXN0IiwgIkNTU1N0eWxlRGVjbGFyYXRpb24iLCAiQ1NTVmFsdWVMaXN0IiwgIkNsaWVudFJlY3RMaXN0IiwgIkRPTVJlY3RMaXN0IiwgIkRPTVN0cmluZ0xpc3QiLCAiRE9NVG9rZW5MaXN0IiwgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiwgIkZpbGVMaXN0IiwgIkhUTUxBbGxDb2xsZWN0aW9uIiwgIkhUTUxDb2xsZWN0aW9uIiwgIkhUTUxGb3JtRWxlbWVudCIsICJIVE1MU2VsZWN0RWxlbWVudCIsICJNZWRpYUxpc3QiLCAiTWltZVR5cGVBcnJheSIsICJOYW1lZE5vZGVNYXAiLCAiTm9kZUxpc3QiLCAiUGFpbnRSZXF1ZXN0TGlzdCIsICJQbHVnaW4iLCAiUGx1Z2luQXJyYXkiLCAiU1ZHTGVuZ3RoTGlzdCIsICJTVkdOdW1iZXJMaXN0IiwgIlNWR1BhdGhTZWdMaXN0IiwgIlNWR1BvaW50TGlzdCIsICJTVkdTdHJpbmdMaXN0IiwgIlNWR1RyYW5zZm9ybUxpc3QiLCAiU291cmNlQnVmZmVyTGlzdCIsICJTdHlsZVNoZWV0TGlzdCIsICJUZXh0VHJhY2tDdWVMaXN0IiwgIlRleHRUcmFja0xpc3QiLCAiVG91Y2hMaXN0IiwgImNsYXNzTGlzdCIsICJ3aW5kb3ciLCAiRGVubyIsICJ2ZXJzaW9uIiwgInRlc3QiLCAiUGViYmxlIiwgInByb2Nlc3MiLCAibmF2aWdhdG9yIiwgInVzZXJBZ2VudCIsICJ2ZXJzaW9ucyIsICJ2OCIsICJzcGxpdCIsICJtYXRjaCIsICJFcnJvciIsICJyZXBsYWNlIiwgInN0YWNrIiwgInByZXBhcmVTdGFja1RyYWNlIiwgImNhcHR1cmVTdGFja1RyYWNlIiwgInN0YXQiLCAiZG9udENhbGxHZXRTZXQiLCAic2hhbSIsICJSZWdFeHAiLCAiZmxhZ3MiLCAiZXhlYyIsICJwcmV2ZW50RXh0ZW5zaW9ucyIsICJhcHBseSIsICJSZWZsZWN0IiwgImJpbmQiLCAiaGFzT3duUHJvcGVydHkiLCAiY29uY2F0IiwgImpvaW4iLCAicjUiLCAiRVhJU1RTIiwgIlBST1BFUiIsICJDT05GSUdVUkFCTEUiLCAiZ2xvYmFsVGhpcyIsICJzZWxmIiwgImhhc093biIsICJjb25zb2xlIiwgInByb3BlcnR5SXNFbnVtZXJhYmxlIiwgImluc3BlY3RTb3VyY2UiLCAiY2F1c2UiLCAib2JqZWN0SUQiLCAid2Vha0RhdGEiLCAic3BsaWNlIiwgImdldE93blByb3BlcnR5TmFtZXMiLCAiZ2V0V2Vha0RhdGEiLCAib25GcmVlemUiLCAiV2Vha01hcCIsICJmYWNhZGUiLCAiZW5mb3JjZSIsICJpc0FycmF5IiwgIm5vcm1hbGl6ZSIsICJ0b0xvd2VyQ2FzZSIsICJkYXRhIiwgIk5BVElWRSIsICJQT0xZRklMTCIsICJzdG9wcGVkIiwgInJlc3VsdCIsICJJU19SRUNPUkQiLCAiSVNfSVRFUkFUT1IiLCAiSU5URVJSVVBURUQiLCAiSXRlcmF0b3JQcm90b3R5cGUiLCAiQlVHR1lfU0FGQVJJX0lURVJBVE9SUyIsICJ2MiIsICJDIiwgIiQyIiwgIlQiLCAiUiIsICJOIiwgIkEiLCAidmFsdWVzIiwgImtleXMiLCAicHJvdG8iLCAiYXJpdHkiLCAic291cmNlIiwgIk1hcCIsICJyZW1vdmUiLCAiY2VpbCIsICJ0cnVuYyIsICJNdXRhdGlvbk9ic2VydmVyIiwgIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiLCAiUHJvbWlzZSIsICJkb21haW4iLCAiaGVhZCIsICJlbnRlciIsICJuZXh0VGljayIsICJjcmVhdGVUZXh0Tm9kZSIsICJvYnNlcnZlIiwgImNoYXJhY3RlckRhdGEiLCAicHJvbWlzZSIsICJhc3NpZ24iLCAiU3ltYm9sIiwgImgyIiwgIndyaXRlIiwgImNsb3NlIiwgInBhcmVudFdpbmRvdyIsICJBY3RpdmVYT2JqZWN0IiwgInN0eWxlIiwgImRpc3BsYXkiLCAiYXBwZW5kQ2hpbGQiLCAic3JjIiwgImNvbnRlbnRXaW5kb3ciLCAib3BlbiIsICJGIiwgImNyZWF0ZSIsICJkZWZpbmVQcm9wZXJ0aWVzIiwgImdldE93blByb3BlcnR5U3ltYm9scyIsICJpc1Byb3RvdHlwZU9mIiwgInNldFByb3RvdHlwZU9mIiwgIl9fcHJvdG9fXyIsICJ2YWx1ZU9mIiwgIlN5bnRheEVycm9yIiwgInBhcnNlSW50IiwgImZyb21DaGFyQ29kZSIsICJlbmQiLCAiUHJvbWlzZVJlamVjdGlvbkV2ZW50IiwgImNhdGNoIiwgImZpbmFsbHkiLCAiQ09OU1RSVUNUT1IiLCAiUkVKRUNUSU9OX0VWRU5UIiwgIlNVQkNMQVNTSU5HIiwgInRhaWwiLCAiaXRlbSIsICJsYXN0SW5kZXgiLCAiQlJPS0VOX0NBUkVUIiwgInJhdyIsICJncm91cHMiLCAic3RpY2t5IiwgIm11bHRpbGluZSIsICJpbnB1dCIsICJoYXNJbmRpY2VzIiwgImlnbm9yZUNhc2UiLCAiZG90QWxsIiwgInVuaWNvZGUiLCAidW5pY29kZVNldHMiLCAiTUlTU0VEX1NUSUNLWSIsICJVTlNVUFBPUlRFRF9ZIiwgIm1vZGUiLCAiY29weXJpZ2h0IiwgImxpY2Vuc2UiLCAiY2hhckNvZGVBdCIsICJjb2RlQXQiLCAiUmFuZ2VFcnJvciIsICJpMyIsICJnMiIsICJ3MiIsICJzdGFydCIsICJ0cmltIiwgImZvciIsICJrZXlGb3IiLCAic2V0SW1tZWRpYXRlIiwgImNsZWFySW1tZWRpYXRlIiwgIkRpc3BhdGNoIiwgIk1lc3NhZ2VDaGFubmVsIiwgImxvY2F0aW9uIiwgInBvc3RNZXNzYWdlIiwgInByb3RvY29sIiwgImhvc3QiLCAibm93IiwgInBvcnQyIiwgInBvcnQxIiwgIm9ubWVzc2FnZSIsICJhZGRFdmVudExpc3RlbmVyIiwgImltcG9ydFNjcmlwdHMiLCAicmVtb3ZlQ2hpbGQiLCAic2V0VGltZW91dCIsICJtaW4iLCAicmFuZG9tIiwgIlVSTCIsICJzZWFyY2hQYXJhbXMiLCAiVVJMU2VhcmNoUGFyYW1zIiwgInBhdGhuYW1lIiwgInRvSlNPTiIsICJzb3J0IiwgImhyZWYiLCAidXNlcm5hbWUiLCAiaGFzaCIsICJ3aXRob3V0U2V0dGVyIiwgIkFyZ3VtZW50cyIsICJEYXRlIiwgInN0cmluZ2lmeSIsICJKU09OIiwgIk5hTiIsICJ3cmFwIiwgIk51bWJlciIsICJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwgInJlYWwiLCAiVyIsICJCIiwgIlUiLCAiTSIsICJEIiwgIkciLCAiY3JlYXRlRXZlbnQiLCAiZGlzcGF0Y2hFdmVudCIsICJxIiwgIlEiLCAiSCIsICJvayIsICJmYWlsIiwgInJlamVjdGlvbiIsICJLIiwgInoiLCAibm90aWZpZWQiLCAicmVhY3Rpb25zIiwgIlYiLCAiWSIsICJyZWFzb24iLCAiaW5pdEV2ZW50IiwgIkoiLCAiZW1pdCIsICJwYXJlbnQiLCAiWCIsICJaIiwgInR0IiwgInJhY2UiLCAiY29uc3RydWN0IiwgIm8zIiwgImEzIiwgInMzIiwgInN0cmluZyIsICJQMiIsICJqMiIsICJRT2JqZWN0IiwgImV0IiwgInJ0IiwgIm50IiwgIm90IiwgIml0IiwgImZpbmRDaGlsZCIsICJhdCIsICJ1dCIsICJjdCIsICJ0YWciLCAiZGVzY3JpcHRpb24iLCAic3QiLCAiZnQiLCAidnQiLCAibHQiLCAicHQiLCAiaHQiLCAidXNlU2V0dGVyIiwgInVzZVNpbXBsZSIsICJwcmVkaWNhdGUiLCAiYzMiLCAiSXRlcmF0b3IiLCAicGFyc2UiLCAibTIiLCAibm9kZXMiLCAiZm9yayIsICJza2lwIiwgIm51bWJlciIsICJvYmplY3QiLCAiYXJyYXkiLCAia2V5d29yZCIsICJub2RlIiwgInVudGlsIiwgImRlbGV0ZUFsbCIsICJlbXBsYWNlIiwgInVwZGF0ZSIsICJpbnNlcnQiLCAiZmluZEtleSIsICJrZXlPZiIsICJtYXBLZXlzIiwgIm1hcFZhbHVlcyIsICJtZXJnZSIsICJyZWR1Y2UiLCAiZGVjb2RlVVJJQ29tcG9uZW50IiwgImVuY29kZVVSSUNvbXBvbmVudCIsICJzaGlmdCIsICJ1cmwiLCAicGFyc2VPYmplY3QiLCAicGFyc2VRdWVyeSIsICJiaW5kVVJMIiwgInNlcmlhbGl6ZSIsICJxdWVyeSIsICJ1cGRhdGVVUkwiLCAiYXBwZW5kIiwgImdldEFsbCIsICJkdCIsICJ5dCIsICJndCIsICJib2R5IiwgImhlYWRlcnMiLCAiZmV0Y2giLCAibXQiLCAiUmVxdWVzdCIsICJnZXRTdGF0ZSIsICJwb3ciLCAicG9wIiwgInVuc2hpZnQiLCAiZnRwIiwgImZpbGUiLCAiaHR0cCIsICJodHRwcyIsICJ3cyIsICJ3c3MiLCAiYnQiLCAid3QiLCAieHQiLCAia3QiLCAiU3QiLCAiRXQiLCAiT3QiLCAiUHQiLCAianQiLCAiTHQiLCAiX3QiLCAiSXQiLCAiVHQiLCAiUnQiLCAiJHQiLCAiTnQiLCAiQ3QiLCAiQXQiLCAiV3QiLCAic2NoZW1lIiwgInBhc3N3b3JkIiwgInBvcnQiLCAicGF0aCIsICJmcmFnbWVudCIsICJjYW5ub3RCZUFCYXNlVVJMIiwgImlzU3BlY2lhbCIsICJpbmNsdWRlc0NyZWRlbnRpYWxzIiwgIngyIiwgImsyIiwgInBhcnNlSG9zdCIsICJTMiIsICJzaG9ydGVuUGF0aCIsICJjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQiLCAic2V0SHJlZiIsICJnZXRPcmlnaW4iLCAiQnQiLCAib3JpZ2luIiwgImdldFByb3RvY29sIiwgInNldFByb3RvY29sIiwgImdldFVzZXJuYW1lIiwgInNldFVzZXJuYW1lIiwgImdldFBhc3N3b3JkIiwgInNldFBhc3N3b3JkIiwgImdldEhvc3QiLCAic2V0SG9zdCIsICJnZXRIb3N0bmFtZSIsICJzZXRIb3N0bmFtZSIsICJnZXRQb3J0IiwgInNldFBvcnQiLCAiZ2V0UGF0aG5hbWUiLCAic2V0UGF0aG5hbWUiLCAiZ2V0U2VhcmNoIiwgInNldFNlYXJjaCIsICJnZXRTZWFyY2hQYXJhbXMiLCAiZ2V0SGFzaCIsICJzZXRIYXNoIiwgIkZ0IiwgImhvc3RuYW1lIiwgInNlYXJjaCIsICJVdCIsICJNdCIsICJjcmVhdGVPYmplY3RVUkwiLCAiRHQiLCAicmV2b2tlT2JqZWN0VVJMIiwgImUiLCAiciIsICJ0b1ByaW1pdGl2ZSIsICJtdyIsICJjb25maWciLCAiYXN5bmNJdGVyYXRvciIsICJ0b1N0cmluZ1RhZyIsICJ1MyIsICJSMiIsICJMMiIsICJhcmciLCAiRTIiLCAiTzIiLCAiX2ludm9rZSIsICJpNCIsICJmMyIsICJsMyIsICJfX2F3YWl0IiwgImU1IiwgIm80IiwgIm1ldGhvZCIsICJkZWxlZ2F0ZSIsICJfMiIsICJzZW50IiwgIl9zZW50IiwgImRpc3BhdGNoRXhjZXB0aW9uIiwgImFicnVwdCIsICJyZXN1bHROYW1lIiwgIm5leHRMb2MiLCAiSTIiLCAidHJ5TG9jIiwgImNhdGNoTG9jIiwgImZpbmFsbHlMb2MiLCAiYWZ0ZXJMb2MiLCAidHJ5RW50cmllcyIsICJUMiIsICJjb21wbGV0aW9uIiwgInJlc2V0IiwgImlzTmFOIiwgImRpc3BsYXlOYW1lIiwgImlzR2VuZXJhdG9yRnVuY3Rpb24iLCAibWFyayIsICJhd3JhcCIsICJhc3luYyIsICJyZXZlcnNlIiwgIm40IiwgInByZXYiLCAic3RvcCIsICJydmFsIiwgImNvbXBsZXRlIiwgImZpbmlzaCIsICJkZWxlZ2F0ZVlpZWxkIiwgImJhc2UiLCAiY3JlZGVudGlhbHMiLCAid2lraUlkIiwgImpzb24iLCAiRm9ybURhdGEiLCAiZTYiLCAic2NyaXB0UGF0aCIsICJsb2NhbFN0b3JhZ2UiLCAiV2lraXBsdXNfU2V0dGluZ3MiLCAibGFuZ3VhZ2UiLCAiYnJvd3Nlckxhbmd1YWdlIiwgImdldEl0ZW0iLCAiaTE4bkRhdGEiLCAic2V0SXRlbSIsICJsb2FkTGFuZ3VhZ2UiLCAic2Vzc2lvblVwZGF0ZUxvZyIsICJfX3ZlcnNpb24iLCAiaW5mbyIsICJ0MCIsICJSZWZlcmVuY2VFcnJvciIsICJQcm94eSIsICJjb2RlIiwgImRlYnVnIiwgInRyYW5zbGF0ZSIsICJhY3Rpb24iLCAibWV0YSIsICJmb3JtYXQiLCAidG9rZW5zIiwgImNzcmZ0b2tlbiIsICJ0aXRsZSIsICJyZXZpc2lvbklkIiwgInByb3AiLCAicnZwcm9wIiwgInJldmlkcyIsICJwYWdlSW5mb0NhY2hlIiwgInRpbWVzdGFtcCIsICJyZXZpZCIsICJ0aXRsZXMiLCAicGFnZXMiLCAicmV2aXNpb25zIiwgInNlY3Rpb24iLCAidGV4dCIsICJwb3N0IiwgInBzdCIsICJjb250ZW50IiwgImVkaXRUb2tlbiIsICJhZGRpdGlvbmFsQ29uZmlnIiwgInRva2VuIiwgImJhc2V0aW1lc3RhbXAiLCAiZWRpdCIsICJ3YXJuaW5nIiwgImdldFBhZ2VJbmZvIiwgImlzTmV3UGFnZSIsICJnZXRUaW1lc3RhbXAiLCAiZ2V0RWRpdFRva2VuIiwgImluaXRlZCIsICJsb2FkZXIiLCAidXNpbmciLCAidXNlciIsICJzZWN0aW9uQ2FjaGUiLCAiZ2V0V2lraVRleHQiLCAicGFyc2VXaWtpVGV4dCIsICJjcmVhdGVvbmx5IiwgImluaXQiLCAiJCIsICJhZGRDbGFzcyIsICJmYWRlSW4iLCAib24iLCAic2xpZGVMZWZ0IiwgImNoaWxkcmVuIiwgImZhZGVPdXQiLCAiZWFjaCIsICJkZWxheSIsICJjc3MiLCAiYW5pbWF0ZSIsICJsZWZ0IiwgImlubmVyV2lkdGgiLCAiaW5uZXJIZWlnaHQiLCAidG9wIiwgInNjcm9sbFRvcCIsICJodG1sIiwgIndpZHRoIiwgIm9uY2xvc2UiLCAib25iZWZvcmV1bmxvYWQiLCAibW91c2Vkb3duIiwgImNsaWVudFgiLCAiY2xpZW50WSIsICJvZmZzZXQiLCAidW5iaW5kIiwgIm9mZiIsICJza2luIiwgImF0dHIiLCAiYWRkRnVuY3Rpb25CdXR0b24iLCAic2VjdGlvbk51bWJlciIsICJ0YXJnZXRQYWdlTmFtZSIsICJjdXJyZW50UGFnZU5hbWUiLCAiYWZ0ZXIiLCAiY2xvbmUiLCAic2VjdGlvbk5hbWUiLCAiYmVmb3JlIiwgImNsYXNzIiwgInN1bW1hcnkiLCAib25CYWNrIiwgIm9uUGFyc2UiLCAib25FZGl0IiwgImVzY0V4aXQiLCAicXVpY2tFZGl0UGFuZWxWaXNpYmxlIiwgImhpZGVRdWlja0VkaXRQYW5lbCIsICJpZCIsICJtYXJnaW4iLCAiY3JlYXRlRGlhbG9nQm94IiwgInZhbCIsICJpc01pbm9yRWRpdCIsICJpcyIsICJyZWxvYWQiLCAibG9nIiwgIm1lc3NhZ2UiLCAiY3RybEtleSIsICJ3aGljaCIsICJzaGlmdEtleSIsICJ0cmlnZ2VyIiwgInByZXZlbnREZWZhdWx0IiwgInN0b3BQcm9wYWdhdGlvbiIsICJjbGljayIsICJvblN1Y2Nlc3MiLCAiZm9yY2VPdmVyd3JpdGUiLCAiaGlkZVNpbXBsZVJlZGlyZWN0UGFuZWwiLCAiZTciLCAiZTgiLCAib25TdWJtaXQiLCAic2V0dGluZ3MiLCAiaGlkZVNldHRpbmdzUGFuZWwiLCAiYXJ0aWNsZUlkIiwgInQ3IiwgInVzZXJHcm91cHMiLCAiaXNBcnRpY2xlIiwgIl9XaWtpcGx1c1BhZ2VzIiwgImxhdGVzdFJldmlzaW9uSWQiLCAiZ2V0TGF0ZXN0UmV2aXNpb25JZEZvclBhZ2UiLCAiZ2V0U2V0dGluZyIsICJzZWN0aW9uVGFyZ2V0TmFtZSIsICJzdWNjZXNzIiwgImNsZWFyVGltZW91dCIsICJlbXB0eSIsICJzaG93UXVpY2tFZGl0UGFuZWwiLCAidDgiLCAidDkiLCAidDEwIiwgInRhZ3MiLCAibWlub3IiLCAibm90bWlub3IiLCAic2hvd1NpbXBsZVJlZGlyZWN0UGFuZWwiLCAiYXJ0aWNsZVBhdGgiLCAic2hvd1NldHRpbmdzUGFuZWwiLCAiaW5zZXJ0VG9wUXVpY2tFZGl0RW50cnkiLCAiaW5zZXJ0U2VjdGlvblF1aWNrRWRpdEVudHJpZXMiLCAiaW5zZXJ0TGlua0VkaXRFbnRyaWVzIiwgImluc2VydFNpbXBsZVJlZGlyZWN0QnV0dG9uIiwgImluc2VydFNldHRpbmdzUGFuZWxCdXR0b24iLCAiYmluZFByZWxvYWRFdmVudHMiLCAid2dBY3Rpb24iLCAid2dJc0FydGljbGUiLCAiaXNWZUVuYWJsZSIsICJvcHRpb25zIiwgIl9yZWYyIiwgIl9hc3luY1RvR2VuZXJhdG9yIl0KfQo= diff --git a/dist/morebits/morebits.js b/dist/morebits/morebits.js index d5e2d1ab2..4e40f8b82 100644 --- a/dist/morebits/morebits.js +++ b/dist/morebits/morebits.js @@ -2637,9 +2637,9 @@ var import_ext_gadget = require("ext.gadget.Util"); ctx.contentModel = page.contentmodel; ctx.watched = page.watchlistexpiry || page.watched; if (Morebits.userIsSysop) { - const editProt = page.protection.filter((pr) => { + const editProt = page.protection.findLast((pr) => { return pr.type === "edit" && pr.level === "sysop"; - }).pop(); + }); if (editProt) { ctx.fullyProtected = editProt.expiry; } else { @@ -2906,13 +2906,13 @@ var import_ext_gadget = require("ext.gadget.Util"); } let editprot; if (action === "undelete") { - editprot = response.pages[0].protection.filter((pr) => { + editprot = response.pages[0].protection.findLast((pr) => { return pr.type === "create" && pr.level === "sysop"; - }).pop(); + }); } else if (action === "delete" || action === "move") { - editprot = response.pages[0].protection.filter((pr) => { + editprot = response.pages[0].protection.findLast((pr) => { return pr.type === "edit" && pr.level === "sysop"; - }).pop(); + }); } if (editprot && !ctx.suppressProtectWarning && !confirm(window.wgULS("您即将对全保护页面“", "您即將對全保護頁面「") + ctx.pageName + (editprot.expiry === "infinity" ? window.wgULS("”(永久)", "」(永久)") : "".concat(window.wgULS("”(到期:", "」(到期:") + new Morebits.date(editprot.expiry).calendar("utc"), " (UTC))")) + window.wgULS("”进行“", "」進行「") + action + window.wgULS("”操作", "」操作") + window.wgULS("。\n\n单击确定以继续操作,或单击取消以取消操作。", "。\n\n點擊確定以繼續操作,或點擊取消以取消操作。"))) { ctx.statusElement.error(window.wgULS("已取消对全保护页面的操作。", "已取消對全保護頁面的操作。")); @@ -4139,4 +4139,4 @@ var import_ext_gadget = require("ext.gadget.Util"); /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21vcmViaXRzL21vcmViaXRzLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSBtb3JlYml0cy5qcyAqL1xuXG4vKipcbiAqIEEgbGlicmFyeSBmdWxsIG9mIGxvdHMgb2YgZ29vZG5lc3MgZm9yIHVzZXIgc2NyaXB0cyBvbiBNZWRpYVdpa2kgd2lraXMuXG4gKlxuICogVGhlIGhpZ2hsaWdodHMgaW5jbHVkZTpcbiAqIC0ge0BsaW5rIE1vcmViaXRzLndpa2kuYXBpfSAtIG1ha2UgY2FsbHMgdG8gdGhlIE1lZGlhV2lraSBBUElcbiAqIC0ge0BsaW5rIE1vcmViaXRzLndpa2kucGFnZX0gLSBtb2RpZnkgcGFnZXMgb24gdGhlIHdpa2kgKGVkaXQsIHJldmVydCwgZGVsZXRlLCBldGMuKVxuICogLSB7QGxpbmsgTW9yZWJpdHMuZGF0ZX0gLSBlbmhhbmNlZCBkYXRlIG9iamVjdCBwcm9jZXNzaW5nLCBzb3J0IG9mIGEgbGlnaHQgbW9tZW50LmpzXG4gKiAtIHtAbGluayBNb3JlYml0cy5xdWlja0Zvcm19IC0gZ2VuZXJhdGUgcXVpY2sgSFRNTCBmb3JtcyBvbiB0aGUgZmx5XG4gKiAtIHtAbGluayBNb3JlYml0cy5zaW1wbGVXaW5kb3d9IC0gYSB3cmFwcGVyIGZvciBqUXVlcnkgVUkgRGlhbG9nIHdpdGggYSBjdXN0b20gbG9vayBhbmQgZXh0cmEgZmVhdHVyZXNcbiAqIC0ge0BsaW5rIE1vcmViaXRzLnN0YXR1c30gLSBhIHJvdWdoLWFuZC1yZWFkeSBzdGF0dXMgbWVzc2FnZSBkaXNwbGF5ZXIsIHVzZWQgYnkgdGhlIE1vcmViaXRzLndpa2kgY2xhc3Nlc1xuICogLSB7QGxpbmsgTW9yZWJpdHMud2lraXRleHR9IC0gdXRpbGl0aWVzIGZvciBkZWFsaW5nIHdpdGggd2lraXRleHRcbiAqIC0ge0BsaW5rIE1vcmViaXRzLnN0cmluZ30gLSB1dGlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyBzdHJpbmdzXG4gKiAtIHtAbGluayBNb3JlYml0cy5hcnJheX0gLSB1dGlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyBhcnJheXNcbiAqIC0ge0BsaW5rIE1vcmViaXRzLmlwfSAtIHV0aWxpdGllcyB0byBoZWxwIHByb2Nlc3MgSVAgYWRkcmVzc2VzXG4gKlxuICogRGVwZW5kZW5jaWVzOlxuICogLSBUaGUgd2hvbGUgdGhpbmcgcmVsaWVzIG9uIGpRdWVyeS4gIEJ1dCBtb3N0IHdpa2lzIHNob3VsZCBwcm92aWRlIHRoaXMgYnkgZGVmYXVsdC5cbiAqIC0ge0BsaW5rIE1vcmViaXRzLnF1aWNrRm9ybX0sIHtAbGluayBNb3JlYml0cy5zaW1wbGVXaW5kb3d9LCBhbmQge0BsaW5rIE1vcmViaXRzLnN0YXR1c30gcmVseSBvbiB0aGUgXCJtb3JlYml0cy5jc3NcIiBmaWxlIGZvciB0aGVpciBzdHlsaW5nLlxuICogLSB7QGxpbmsgTW9yZWJpdHMuc2ltcGxlV2luZG93fSBhbmQge0BsaW5rIE1vcmViaXRzLnF1aWNrRm9ybX0gdG9vbHRpcHMgcmVseSBvbiBqUXVlcnkgVUkgRGlhbG9nIChmcm9tIFJlc291cmNlTG9hZGVyIG1vZHVsZSBuYW1lICdqcXVlcnkudWknKS5cbiAqIC0gVG8gY3JlYXRlIGEgZ2FkZ2V0IGJhc2VkIG9uIG1vcmViaXRzLmpzLCB1c2UgdGhpcyBzeW50YXggaW4gTWVkaWFXaWtpOkdhZGdldHMtZGVmaW5pdGlvbjpcbiAqICAgICAtIGAqR2FkZ2V0TmFtZVtSZXNvdXJjZUxvYWRlcnxkZXBlbmRlbmNpZXM9bWVkaWF3aWtpLnVzZXIsbWVkaWF3aWtpLnV0aWwsbWVkaWF3aWtpLlRpdGxlLGpxdWVyeS51aV18bW9yZWJpdHMuanN8bW9yZWJpdHMuY3NzfEdhZGdldE5hbWUuanNgXG4gKiAtIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29uZmlndXJlIG1vcmViaXRzLmpzIGFzIGEgaGlkZGVuIGdhZGdldCBpbiBNZWRpYVdpa2k6R2FkZ2V0cy1kZWZpbml0aW9uOlxuICogICAgIC0gYCptb3JlYml0c1tSZXNvdXJjZUxvYWRlcnxkZXBlbmRlbmNpZXM9bWVkaWF3aWtpLnVzZXIsbWVkaWF3aWtpLnV0aWwsbWVkaWF3aWtpLlRpdGxlLGpxdWVyeS51aXxoaWRkZW5dfG1vcmViaXRzLmpzfG1vcmViaXRzLmNzc2BcbiAqICAgICBhbmQgdGhlbiBsb2FkIGV4dC5nYWRnZXQubW9yZWJpdHMgYXMgb25lIG9mIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgZ2FkZ2V0LlxuICpcbiAqIEFsbCB0aGUgc3R1ZmYgaGVyZSB3b3JrcyBvbiBhbGwgYnJvd3NlcnMgZm9yIHdoaWNoIE1lZGlhV2lraSBwcm92aWRlcyBKYXZhU2NyaXB0IHN1cHBvcnQuXG4gKlxuICogVGhpcyBsaWJyYXJ5IGlzIG1haW50YWluZWQgYnkgdGhlIG1haW50YWluZXJzIG9mIFR3aW5rbGUuXG4gKiBGb3IgcXVlcmllcywgc3VnZ2VzdGlvbnMsIGhlbHAsIGV0Yy4sIGhlYWQgdG8gW0hlbHA6VHdpbmtsZV0oaHR0cHM6Ly93d3cucWl1d2VuYmFpa2UuY24vd2lraS9IOlRXKS5cbiAqIFRoZSBsYXRlc3QgZGV2ZWxvcG1lbnQgc291cmNlIGlzIGF2YWlsYWJsZSBhdCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3dpa2ltZWRpYS1nYWRnZXRzL3R3aW5rbGUvYmxvYi9tYXN0ZXIvbW9yZWJpdHMuanN8R2l0SHVifS5cbiAqXG4gKiBAcGFyYW0ge0pRdWVyeX0gJFxuICogQG5hbWVzcGFjZSBNb3JlYml0c1xuICovXG5pbXBvcnQgJy4vbW9yZWJpdHMubGVzcyc7XG5pbXBvcnQge2dlbmVyYXRlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbihmdW5jdGlvbiBtb3JlYml0cygkKSB7XG5cdC8vIFdyYXAgZW50aXJlIGZpbGUgd2l0aCBhbm9ueW1vdXMgZnVuY3Rpb25cblx0LyoqIEBsZW5kcyBNb3JlYml0cyAqL1xuXHRjb25zdCBNb3JlYml0cyA9IHt9O1xuXHR3aW5kb3cuTW9yZWJpdHMgPSBNb3JlYml0czsgLy8gYWxsb3cgZ2xvYmFsIGFjY2Vzc1xuXHQvLyBObyBNb3JlYml0cy5pMThuIGF0IHRoaXMgdGltZVxuXHQvKipcblx0ICogV2lraS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgTW9yZWJpdHNcblx0ICovXG5cdE1vcmViaXRzLmwxMG4gPSB7XG5cdFx0LyoqXG5cdFx0ICogTG9jYWwgYWxpYXNlcyBmb3IgXCJyZWRpcmVjdFwiIG1hZ2ljIHdvcmQuXG5cdFx0ICogQ2hlY2sgdXNpbmcgYXBpLnBocD9hY3Rpb249cXVlcnkmZm9ybWF0PWpzb24mbWV0YT1zaXRlaW5mbyZmb3JtYXR2ZXJzaW9uPTImc2lwcm9wPW1hZ2ljd29yZHNcblx0XHQgKi9cblx0XHRyZWRpcmVjdFRhZ0FsaWFzZXM6IFsnI1JFRElSRUNUJywgJyPph43lrprlkJEnXSxcblx0XHQvKipcblx0XHQgKiBUYWtlcyBhIHN0cmluZyBhcyBhcmd1bWVudCBhbmQgY2hlY2tzIGlmIGl0IGlzIGEgdGltZXN0YW1wIG9yIG5vdFxuXHRcdCAqIElmIG5vdCwgaXQgcmV0dXJucyBudWxsLiBJZiB5ZXMsIGl0IHJldHVybnMgYW4gYXJyYXkgb2YgaW50ZWdlcnNcblx0XHQgKiBpbiB0aGUgZm9ybWF0IFt5ZWFyLCBtb250aCwgZGF0ZSwgaG91ciwgbWludXRlLCBzZWNvbmRdXG5cdFx0ICogd2hpY2ggY2FuIGJlIHBhc3NlZCB0byBEYXRlLlVUQygpXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG5cdFx0ICogQHJldHVybnMge251bWJlcltdIHwgbnVsbH1cblx0XHQgKi9cblx0XHRzaWduYXR1cmVUaW1lc3RhbXBGb3JtYXQ6IChzdHIpID0+IHtcblx0XHRcdGNvbnN0IHJneFVUQyA9IC8oXFxkezR9KeW5tChcXGR7MSwyfSnmnIgoXFxkezEsMn0p5pelIFxcKC5cXCkgKFxcZHsyfSk6KFxcZHsyfSkgXFwoVVRDXFwpLzsgLy8gWVlZWeW5tE1vbnRo5pyIRETml6UgKHcpIEhIOm1tIChVVEMpXG5cdFx0XHRjb25zdCByZ3hDU1QgPSAvKFxcZHs0fSnlubQoXFxkezEsMn0p5pyIKFxcZHsxLDJ9KeaXpSBcXCguXFwpIChcXGR7Mn0pOihcXGR7Mn0pIFxcKENTVFxcKS87IC8vIFlZWVnlubRNb250aOaciERE5pelICh3KSBISDptbSAoQ1NUKVxuXHRcdFx0Y29uc3QgbWF0Y2ggPSByZ3hVVEMuZXhlYyhzdHIpIHx8IHJneENTVC5leGVjKHN0cik7XG5cdFx0XHRjb25zdCBtYXRjaENTVCA9IHJneENTVC5leGVjKHN0cik7XG5cdFx0XHRpZiAoIW1hdGNoKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbW9udGggPSBNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEubW9udGhzLmluZGV4T2YobWF0Y2hbNF0pO1xuXHRcdFx0aWYgKG1vbnRoID09PSAtMSkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHRcdC8vIC4uLi4uIHllYXIgLi4uLiBtb250aCAuLi4gZGF0ZSAuLi4uIGhvdXIgLi4uIG1pbnV0ZVxuXHRcdFx0cmV0dXJuIG1hdGNoQ1NUXG5cdFx0XHRcdD8gW21hdGNoWzFdLCBtYXRjaFsyXSAtIDEsIG1hdGNoWzNdLCBtYXRjaFs0XSAtIDgsIG1hdGNoWzVdXVxuXHRcdFx0XHQ6IFttYXRjaFsxXSwgbWF0Y2hbMl0gLSAxLCBtYXRjaFszXSwgbWF0Y2hbNF0sIG1hdGNoWzVdXTtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogU2ltcGxlIGhlbHBlciBmdW5jdGlvbiB0byBzZWUgd2hhdCBncm91cHMgYSB1c2VyIG1pZ2h0IGJlbG9uZy5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwIC0gZS5nLiBgc3lzb3BgLCBgYXV0b2NvbmZpcm1lZGAsIGV0Yy5cblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRNb3JlYml0cy51c2VySXNJbkdyb3VwID0gKGdyb3VwKSA9PiB7XG5cdFx0cmV0dXJuIG13LmNvbmZpZy5nZXQoJ3dnVXNlckdyb3VwcycpLmluY2x1ZGVzKGdyb3VwKSB8fCBtdy5jb25maWcuZ2V0KCd3Z0dsb2JhbEdyb3VwcycpLmluY2x1ZGVzKGdyb3VwKTtcblx0fTtcblx0LyoqXG5cdCAqIEhhcmRjb2RlcyB3aGV0aGVyIHRoZSB1c2VyIGlzIGEgc3lzb3AsIHVzZWQgYSBsb3QuXG5cdCAqXG5cdCAqIEB0eXBlIHtib29sZWFufVxuXHQgKi9cblx0TW9yZWJpdHMudXNlcklzU3lzb3AgPVxuXHRcdE1vcmViaXRzLnVzZXJJc0luR3JvdXAoJ3N5c29wJykgfHwgTW9yZWJpdHMudXNlcklzSW5Hcm91cCgnc3Rld2FyZCcpIHx8IE1vcmViaXRzLnVzZXJJc0luR3JvdXAoJ3FpdXdlbicpO1xuXHQvKipcblx0ICogRGVwcmVjYXRlZCBhcyBvZiBGZWJydWFyeSAyMDIxLCB1c2Uge0BsaW5rIE1vcmViaXRzLmlwLnNhbml0aXplSVB2Nn0uXG5cdCAqXG5cdCAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgTW9yZWJpdHMuaXAuc2FuaXRpemVJUHY2fS5cblx0ICogQ29udmVydHMgYW4gSVB2NiBhZGRyZXNzIHRvIHRoZSBjYW5vbmljYWwgZm9ybSBzdG9yZWQgYW5kIHVzZWQgYnkgTWVkaWFXaWtpLlxuXHQgKiBKYXZhU2NyaXB0IHRyYW5zbGF0aW9uIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9nZXJyaXQud2lraW1lZGlhLm9yZy9yL3BsdWdpbnMvZ2l0aWxlcy9tZWRpYXdpa2kvY29yZS8rLzhlYjZhYzNlODRlYTMzMTJkMzkxY2E5NmMxMmM0OWUzYWQwNzUzYmIvaW5jbHVkZXMvdXRpbHMvSVAucGhwIzEzMXxgSVA6OnNhbml0aXplSVAoKWB9XG5cdCAqIGZ1bmN0aW9uIGZyb20gdGhlIElQVXRpbHMgbGlicmFyeS4gIEFkZHJlc3NlcyBhcmUgdmVyYm9zZSwgdXBwZXJjYXNlLFxuXHQgKiBub3JtYWxpemVkLCBhbmQgZXhwYW5kZWQgdG8gOCB3b3Jkcy5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgSVB2NiBhZGRyZXNzLCB3aXRoIG9yIHdpdGhvdXQgQ0lEUi5cblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdE1vcmViaXRzLnNhbml0aXplSVB2NiA9IChhZGRyZXNzKSA9PiB7XG5cdFx0Y29uc29sZS53YXJuKFxuXHRcdFx0J1tNb3JlYml0c10gTk9URTogTW9yZWJpdHMuc2FuaXRpemVJUHY2IHdhcyByZW5hbWVkIHRvIE1vcmViaXRzLmlwLnNhbml0aXplSVB2NiBpbiBGZWJydWFyeSAyMDIxLCBwbGVhc2UgdXNlIHRoYXQgaW5zdGVhZCdcblx0XHQpO1xuXHRcdHJldHVybiBNb3JlYml0cy5pcC5zYW5pdGl6ZUlQdjYoYWRkcmVzcyk7XG5cdH07XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgcGFnZSBpcyBhIHJlZGlyZWN0IG9yIHNvZnQgcmVkaXJlY3QuIEZhaWxzXG5cdCAqIHRvIGRldGVjdCBzb2Z0IHJlZGlyZWN0cyBvbiBlZGl0LCBoaXN0b3J5LCBldGMuIHBhZ2VzLiAgV2lsbCBhdHRlbXB0IHRvXG5cdCAqIGRldGVjdCBNb2R1bGU6UmZELCB3aXRoIHRoZSBzYW1lIGZhaWx1cmUgcG9pbnRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdE1vcmViaXRzLmlzUGFnZVJlZGlyZWN0ID0gKCkgPT4ge1xuXHRcdHJldHVybiAhIShcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnSXNSZWRpcmVjdCcpIHx8XG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc29mdHJlZGlyZWN0JykgfHxcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ib3gtUmZEJykgfHxcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ib3gtUmVkaXJlY3RfY2F0ZWdvcnlfc2hlbGwnKVxuXHRcdCk7XG5cdH07XG5cdC8qKlxuXHQgKiBTdG9yZXMgYSBub3JtYWxpemVkICh1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8gc3BhY2VzKSB2ZXJzaW9uIG9mIHRoZVxuXHQgKiBgd2dQYWdlTmFtZWAgdmFyaWFibGUuXG5cdCAqXG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqL1xuXHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykucmVwbGFjZSgvXy9nLCAnICcpO1xuXHQvKipcblx0ICogQ3JlYXRlIGEgc3RyaW5nIGZvciB1c2UgaW4gcmVnZXggbWF0Y2hpbmcgYSBwYWdlIG5hbWUuICBBY2NvdW50cyBmb3Jcblx0ICogbGVhZGluZyBjaGFyYWN0ZXIncyBjYXBpdGFsaXphdGlvbiwgdW5kZXJzY29yZXMgYXMgc3BhY2VzLCBhbmQgc3BlY2lhbFxuXHQgKiBjaGFyYWN0ZXJzIGJlaW5nIGVzY2FwZWQuICBTZWUgYWxzbyB7QGxpbmsgTW9yZWJpdHMubmFtZXNwYWNlUmVnZXh9LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGFnZU5hbWUgLSBQYWdlIG5hbWUgd2l0aG91dCBuYW1lc3BhY2UuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRm9yIGEgcGFnZSBuYW1lIGBGb28gYmFyYCwgcmV0dXJucyB0aGUgc3RyaW5nIGBbRmZdb29bXyBdYmFyYC5cblx0ICovXG5cdE1vcmViaXRzLnBhZ2VOYW1lUmVnZXggPSAocGFnZU5hbWUpID0+IHtcblx0XHRpZiAocGFnZU5hbWUgPT09ICcnKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXHRcdGNvbnN0IFtmaXJzdENoYXJdID0gcGFnZU5hbWU7XG5cdFx0Y29uc3QgcmVtYWluZGVyID0gTW9yZWJpdHMuc3RyaW5nLmVzY2FwZVJlZ0V4cChwYWdlTmFtZS5zbGljZSgxKSk7XG5cdFx0aWYgKG13LlRpdGxlLnBocENoYXJUb1VwcGVyKGZpcnN0Q2hhcikgIT09IGZpcnN0Q2hhci50b0xvd2VyQ2FzZSgpKSB7XG5cdFx0XHRyZXR1cm4gYFske213LlRpdGxlLnBocENoYXJUb1VwcGVyKGZpcnN0Q2hhcil9JHtmaXJzdENoYXIudG9Mb3dlckNhc2UoKX1dJHtyZW1haW5kZXJ9YDtcblx0XHR9XG5cdFx0cmV0dXJuIE1vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAoZmlyc3RDaGFyKSArIHJlbWFpbmRlcjtcblx0fTtcblx0LyoqXG5cdCAqIENvbnZlcnRzIHN0cmluZyBvciBhcnJheSBvZiBET00gbm9kZXMgaW50byBhbiBIVE1MIGZyYWdtZW50LlxuXHQgKiBXaWtpbGluayBzeW50YXggKGBbWy4uLl1dYCkgaXMgdHJhbnNmb3JtZWQgaW50byBIVE1MIGFuY2hvci5cblx0ICogVXNlZCBpbiBNb3JlYml0cy5xdWlja0Zvcm0gYW5kIE1vcmViaXRzLnN0YXR1c1xuXHQgKlxuXHQgKiBAaW50ZXJuYWxcblx0ICogQHBhcmFtIHtzdHJpbmd8Tm9kZXwoc3RyaW5nfE5vZGUpW119IGlucHV0XG5cdCAqIEByZXR1cm5zIHtEb2N1bWVudEZyYWdtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMuY3JlYXRlSHRtbCA9IChpbnB1dCkgPT4ge1xuXHRcdGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXHRcdGlmICghaW5wdXQpIHtcblx0XHRcdHJldHVybiBmcmFnbWVudDtcblx0XHR9XG5cdFx0aW5wdXQgPSBnZW5lcmF0ZUFycmF5KGlucHV0KTtcblx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgaW5wdXQpIHtcblx0XHRcdGlmIChlbGVtZW50IGluc3RhbmNlb2YgTm9kZSkge1xuXHRcdFx0XHRmcmFnbWVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgbm9kZSBvZiAkLnBhcnNlSFRNTChNb3JlYml0cy5jcmVhdGVIdG1sLnJlbmRlcldpa2lsaW5rcyhlbGVtZW50KSkpIHtcblx0XHRcdFx0XHRmcmFnbWVudC5hcHBlbmRDaGlsZChub2RlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZnJhZ21lbnQ7XG5cdH07XG5cdC8qKlxuXHQgKiBDb252ZXJ0cyB3aWtpbGlua3MgdG8gSFRNTCBhbmNob3IgdGFncy5cblx0ICpcblx0ICogQHBhcmFtIHRleHRcblx0ICogQHJldHVybnMgeyp9XG5cdCAqL1xuXHRNb3JlYml0cy5jcmVhdGVIdG1sLnJlbmRlcldpa2lsaW5rcyA9ICh0ZXh0KSA9PiB7XG5cdFx0Y29uc3QgdWIgPSBuZXcgTW9yZWJpdHMudW5iaW5kZXIodGV4dCk7XG5cdFx0Ly8gRG9uJ3QgY29udmVydCB3aWtpbGlua3Mgd2l0aGluIGNvZGUgdGFncyBhcyB0aGV5J3JlIHVzZWQgZm9yIGRpc3BsYXlpbmcgd2lraS1jb2RlXG5cdFx0dWIudW5iaW5kKCc8Y29kZT4nLCAnPC9jb2RlPicpO1xuXHRcdHViLmNvbnRlbnQgPSB1Yi5jb250ZW50LnJlcGxhY2UoL1xcW1xcWzo/KD86KFtefFxcXV0rPylcXHwpPyhbXlxcXXxdKz8pXFxdXFxdL2csIChfLCB0YXJnZXQsIHRleHRfKSA9PiB7XG5cdFx0XHR0YXJnZXQgfHw9IHRleHRfO1xuXHRcdFx0cmV0dXJuIGA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKHRhcmdldCl9XCIgdGl0bGU9XCIke3RhcmdldC5yZXBsYWNlKFxuXHRcdFx0XHQvXCIvZyxcblx0XHRcdFx0JyYjMzQ7J1xuXHRcdFx0KX1cIj4ke3RleHRffTwvYT5gO1xuXHRcdH0pO1xuXHRcdHJldHVybiB1Yi5yZWJpbmQoKTtcblx0fTtcblx0LyoqXG5cdCAqIENyZWF0ZSBhIHN0cmluZyBmb3IgdXNlIGluIHJlZ2V4IG1hdGNoaW5nIGFsbCBuYW1lc3BhY2UgYWxpYXNlcywgcmVnYXJkbGVzc1xuXHQgKiBvZiB0aGUgY2FwaXRhbGl6YXRpb24gYW5kIHVuZGVyc2NvcmVzL3NwYWNlcy4gIERvZXNuJ3QgaW5jbHVkZSB0aGUgb3B0aW9uYWxcblx0ICogbGVhZGluZyBgOmAsIGJ1dCBpZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgaXRlbSwgd3JhcHMgdGhlIGxpc3QgaW4gYVxuXHQgKiBub24tY2FwdHVyaW5nIGdyb3VwLiAgVGhpcyBtZWFucyB5b3UgY2FuIGRvIGBNb3JlYml0cy5uYW1lc3BhY2VSZWdleChbNF0pICtcblx0ICogJzonICsgTW9yZWJpdHMucGFnZU5hbWVSZWdleCgnVHdpbmtsZScpYCB0byBtYXRjaCBhIGZ1bGwgcGFnZS4gIFVzZXNcblx0ICoge0BsaW5rIE1vcmViaXRzLnBhZ2VOYW1lUmVnZXh9LlxuXHQgKlxuXHQgKiBAcGFyYW0ge251bWJlcltdfSBuYW1lc3BhY2VzIC0gQXJyYXkgb2YgbmFtZXNwYWNlIG51bWJlcnMuICBVbnVzZWQvaW52YWxpZFxuXHQgKiBuYW1lc3BhY2UgbnVtYmVycyBhcmUgc2lsZW50bHkgZGlzY2FyZGVkLlxuXHQgKiBAZXhhbXBsZVxuXHQgKiAvLyByZXR1cm5zICcoPzpbRmZdW0lpXVtMbF1bRWVdfFtJaV1bTW1dW0FhXVtHZ11bRWVdKSdcblx0ICogTW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoWzZdKVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJlZ2V4LXN1aXRhYmxlIHN0cmluZyBvZiBhbGwgbmFtZXNwYWNlIGFsaWFzZXMuXG5cdCAqL1xuXHRNb3JlYml0cy5uYW1lc3BhY2VSZWdleCA9IChuYW1lc3BhY2VzKSA9PiB7XG5cdFx0bmFtZXNwYWNlcyA9IGdlbmVyYXRlQXJyYXkobmFtZXNwYWNlcyk7XG5cdFx0Y29uc3QgYWxpYXNlcyA9IFtdO1xuXHRcdGxldCByZWdleDtcblx0XHRmb3IgKGNvbnN0IFtuYW1lLCBudW1iZXJdIG9mIE9iamVjdC5lbnRyaWVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlSWRzJykpKSB7XG5cdFx0XHRpZiAobmFtZXNwYWNlcy5pbmNsdWRlcyhudW1iZXIpKSB7XG5cdFx0XHRcdC8vIE5hbWVzcGFjZXMgYXJlIGNvbXBsZXRlbHkgYWdub3N0aWMgYXMgdG8gY2FzZSxcblx0XHRcdFx0Ly8gYW5kIGEgcmVnZXggc3RyaW5nIGlzIG1vcmUgdXNlZnVsL2NvbXBhdGlibGUgdGhhbiBhIFJlZ0V4cCBvYmplY3QsXG5cdFx0XHRcdC8vIHNvIHdlIGFjY2VwdCBhbnkgY2FzaW5nIGZvciBhbnkgbGV0dGVyLlxuXHRcdFx0XHRhbGlhc2VzW2FsaWFzZXMubGVuZ3RoXSA9IFsuLi5uYW1lXVxuXHRcdFx0XHRcdC5tYXAoKGNoYXIpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KGNoYXIpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oJycpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRzd2l0Y2ggKGFsaWFzZXMubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDA6XG5cdFx0XHRcdHJlZ2V4ID0gJyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRbcmVnZXhdID0gYWxpYXNlcztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZWdleCA9IGAoPzoke2FsaWFzZXMuam9pbignfCcpfSlgO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHJlZ2V4O1xuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLnF1aWNrRm9ybSAqKioqKioqKioqKioqKioqICovXG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBvZiBzaW1wbGUgYW5kIHN0YW5kYXJkIGZvcm1zIHdpdGhvdXQgbXVjaCBzcGVjaWZpYyBjb2RpbmcuXG5cdCAqXG5cdCAqIEBuYW1lc3BhY2UgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtldmVudH0gZXZlbnQgLSBGdW5jdGlvbiB0byBleGVjdXRlIHdoZW4gZm9ybSBpcyBzdWJtaXR0ZWQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbZXZlbnRUeXBlPXN1Ym1pdF0gLSBUeXBlIG9mIHRoZSBldmVudC5cblx0ICovXG5cdE1vcmViaXRzLnF1aWNrRm9ybSA9IGZ1bmN0aW9uIChldmVudCwgZXZlbnRUeXBlKSB7XG5cdFx0dGhpcy5yb290ID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdHR5cGU6ICdmb3JtJyxcblx0XHRcdGV2ZW50LFxuXHRcdFx0ZXZlbnRUeXBlLFxuXHRcdH0pO1xuXHR9O1xuXHQvKipcblx0ICogUmVuZGVycyB0aGUgSFRNTCBvdXRwdXQgb2YgdGhlIHF1aWNrRm9ybS5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcmV0dXJucyB7SFRNTEVsZW1lbnR9XG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcblx0XHRjb25zdCByZXQgPSB0aGlzLnJvb3QucmVuZGVyKCk7XG5cdFx0cmV0Lm5hbWVzID0ge307XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcblx0LyoqXG5cdCAqIEFwcGVuZCBlbGVtZW50IHRvIHRoZSBmb3JtLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7KG9iamVjdHxNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCl9IGRhdGEgLSBBIHF1aWNrZm9ybSBlbGVtZW50LCBvciB0aGUgb2JqZWN0IHdpdGggd2hpY2hcblx0ICogYSBxdWlja2Zvcm0gZWxlbWVudCBpcyBjb25zdHJ1Y3RlZC5cblx0ICogQHJldHVybnMge01vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50fSAtIFNhbWUgYXMgd2hhdCBpcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuXHRcdHJldHVybiB0aGlzLnJvb3QuYXBwZW5kKGRhdGEpO1xuXHR9O1xuXHQvKipcblx0ICogQ3JlYXRlIGEgbmV3IGVsZW1lbnQgZm9yIHRoZSB0aGUgZm9ybS5cblx0ICpcblx0ICogSW5kZXggdG8gTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQgdHlwZXM6XG5cdCAqIC0gR2xvYmFsIGF0dHJpYnV0ZXM6IGlkLCBjbGFzc05hbWUsIHN0eWxlLCB0b29sdGlwLCBleHRyYSwgJGRhdGEsIGFkbWlub25seVxuXHQgKiAtIGBzZWxlY3RgOiBBIGNvbWJvIGJveCAoYWthIGRyb3AtZG93bikuXG5cdCAqICAgICAtIEF0dHJpYnV0ZXM6IG5hbWUsIGxhYmVsLCBtdWx0aXBsZSwgc2l6ZSwgbGlzdCwgZXZlbnQsIGRpc2FibGVkXG5cdCAqICAtIGBvcHRpb25gOiBBbiBlbGVtZW50IGZvciBhIGNvbWJvIGJveC5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IHZhbHVlLCBsYWJlbCwgc2VsZWN0ZWQsIGRpc2FibGVkXG5cdCAqICAtIGBvcHRncm91cGA6IEEgZ3JvdXAgb2YgXCJvcHRpb25cInMuXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBsYWJlbCwgbGlzdFxuXHQgKiAgLSBgZmllbGRgOiBBIGZpZWxkc2V0IChha2EgZ3JvdXAgYm94KS5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IG5hbWUsIGxhYmVsLCBkaXNhYmxlZFxuXHQgKiAgLSBgY2hlY2tib3hgOiBBIGNoZWNrYm94LiBNdXN0IHVzZSBcImxpc3RcIiBwYXJhbWV0ZXIuXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCBsaXN0LCBldmVudFxuXHQgKiAgICAgIC0gQXR0cmlidXRlcyAod2l0aGluIGxpc3QpOiBuYW1lLCBsYWJlbCwgdmFsdWUsIGNoZWNrZWQsIGRpc2FibGVkLCBldmVudCwgc3ViZ3JvdXBcblx0ICogIC0gYHJhZGlvYDogQSByYWRpbyBidXR0b24uIE11c3QgdXNlIFwibGlzdFwiIHBhcmFtZXRlci5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IG5hbWUsIGxpc3QsIGV2ZW50XG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzICh3aXRoaW4gbGlzdCk6IG5hbWUsIGxhYmVsLCB2YWx1ZSwgY2hlY2tlZCwgZGlzYWJsZWQsIGV2ZW50LCBzdWJncm91cFxuXHQgKiAgLSBgaW5wdXRgOiBBIHRleHQgaW5wdXQgYm94LlxuXHQgKiAgICAgIC0gQXR0cmlidXRlczogbmFtZSwgbGFiZWwsIHZhbHVlLCBzaXplLCBwbGFjZWhvbGRlciwgbWF4bGVuZ3RoLCBkaXNhYmxlZCwgcmVxdWlyZWQsIHJlYWRvbmx5LCBldmVudFxuXHQgKiAgLSBgbnVtYmVyYDogQSBudW1iZXIgaW5wdXQgYm94LlxuXHQgKiAgICAgIC0gQXR0cmlidXRlczogRXZlcnl0aGluZyB0aGUgdGV4dCBgaW5wdXRgIGhhcywgYXMgd2VsbCBhczogbWluLCBtYXgsIHN0ZXAsIGxpc3Rcblx0ICogIC0gYGR5bmlucHV0YDogQSBzZXQgb2YgdGV4dCBib3hlcyB3aXRoIFwiUmVtb3ZlXCIgYnV0dG9ucyBhbmQgYW4gXCJBZGRcIiBidXR0b24uXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCBsYWJlbCwgbWluLCBtYXgsIHN1YmxhYmVsLCB2YWx1ZSwgc2l6ZSwgbWF4bGVuZ3RoLCBldmVudFxuXHQgKiAgLSBgaGlkZGVuYDogQW4gaW52aXNpYmxlIGZvcm0gZmllbGQuXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCB2YWx1ZVxuXHQgKiAgLSBgaGVhZGVyYDogQSBsZXZlbCA1IGhlYWRlci5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IGxhYmVsXG5cdCAqICAtIGBkaXZgOiBBIGdlbmVyaWMgcGxhY2Vob2xkZXIgZWxlbWVudCBvciBsYWJlbC5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IG5hbWUsIGxhYmVsXG5cdCAqICAtIGBzdWJtaXRgOiBBIHN1Ym1pdCBidXR0b24uIE1vcmViaXRzLnNpbXBsZVdpbmRvdyBtb3ZlcyB0aGVzZSB0byB0aGUgZm9vdGVyIG9mIHRoZSBkaWFsb2cuXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCBsYWJlbCwgZGlzYWJsZWRcblx0ICogIC0gYGJ1dHRvbmA6IEEgZ2VuZXJpYyBidXR0b24uXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCBsYWJlbCwgZGlzYWJsZWQsIGV2ZW50XG5cdCAqICAtIGB0ZXh0YXJlYWA6IEEgYmlnLCBtdWx0aS1saW5lIHRleHQgYm94LlxuXHQgKiAgICAgIC0gQXR0cmlidXRlczogbmFtZSwgbGFiZWwsIHZhbHVlLCBjb2xzLCByb3dzLCBkaXNhYmxlZCwgcmVxdWlyZWQsIHJlYWRvbmx5XG5cdCAqICAtIGBmcmFnbWVudGA6IEEgRG9jdW1lbnRGcmFnbWVudCBvYmplY3QuXG5cdCAqICAgICAgLSBObyBhdHRyaWJ1dGVzLCBhbmQgbm8gZ2xvYmFsIGF0dHJpYnV0ZXMgZXhjZXB0IGFkbWlub25seS5cblx0ICogVGhlcmUgaXMgc29tZSBkaWZmZXJlbmNlIG9uIGhvdyB0eXBlcyBoYW5kbGUgdGhlIGBsYWJlbGAgYXR0cmlidXRlOlxuXHQgKiAtIGBkaXZgLCBgc2VsZWN0YCwgYGZpZWxkYCwgYGNoZWNrYm94YC9gcmFkaW9gLCBgaW5wdXRgLCBgdGV4dGFyZWFgLCBgaGVhZGVyYCwgYW5kIGBkeW5pbnB1dGAgY2FuIGFjY2VwdCBhbiBhcnJheSBvZiBpdGVtcyxcblx0ICogYW5kIHRoZSBsYWJlbCBpdGVtKHMpIGNhbiBiZSBgRWxlbWVudGBzLlxuXHQgKiAtIGBvcHRpb25gLCBgb3B0Z3JvdXBgLCBgX2R5bmlucHV0X2VsZW1lbnRgLCBgc3VibWl0YCwgYW5kIGBidXR0b25gIGFjY2VwdCBvbmx5IGEgc2luZ2xlIHN0cmluZy5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBxdWlja2Zvcm0gZWxlbWVudC4gU2hvdWxkXG5cdCAqIHNwZWNpZnkgb25lIG9mIHRoZSBhdmFpbGFibGUgdHlwZXMgZnJvbSB0aGUgaW5kZXggYWJvdmUsIGFzIHdlbGwgYXMgYW55XG5cdCAqIHJlbGV2YW50IGFuZCBhdmFpbGFibGUgYXR0cmlidXRlcy5cblx0ICogQGV4YW1wbGUgbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0ICogICAgIG5hbWU6ICd0YXJnZXQnLFxuXHQgKiAgICAgdHlwZTogJ2lucHV0Jyxcblx0ICogICAgIGxhYmVsOiAnWW91ciB0YXJnZXQ6Jyxcblx0ICogICAgIHRvb2x0aXA6ICdFbnRlciB5b3VyIHRhcmdldC4gUmVxdWlyZWQuJyxcblx0ICogICAgIHJlcXVpcmVkOiB0cnVlXG5cdCAqIH0pO1xuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQgPSBmdW5jdGlvbiAoZGF0YSkge1xuXHRcdHRoaXMuZGF0YSA9IGRhdGE7XG5cdFx0dGhpcy5jaGlsZHMgPSBbXTtcblx0fTtcblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudFxuXHQgKiBAdHlwZSB7bnVtYmVyfVxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQuaWQgPSAwO1xuXHQvKipcblx0ICogQXBwZW5kcyBhbiBlbGVtZW50IHRvIGN1cnJlbnQgZWxlbWVudC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50XG5cdCAqIEBwYXJhbSB7TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnR9IGRhdGEgLSBBIHF1aWNrRm9ybSBlbGVtZW50IG9yIHRoZSBvYmplY3QgcmVxdWlyZWQgdG9cblx0ICogY3JlYXRlIHRoZSBxdWlja0Zvcm0gZWxlbWVudC5cblx0ICogQHJldHVybnMge01vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50fSBUaGUgc2FtZSBlbGVtZW50IHBhc3NlZCBpbi5cblx0ICovXG5cdE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50LnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuXHRcdGxldCBjaGlsZDtcblx0XHRpZiAoZGF0YSBpbnN0YW5jZW9mIE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KSB7XG5cdFx0XHRjaGlsZCA9IGRhdGE7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoaWxkID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KGRhdGEpO1xuXHRcdH1cblx0XHR0aGlzLmNoaWxkc1t0aGlzLmNoaWxkcy5sZW5ndGhdID0gY2hpbGQ7XG5cdFx0cmV0dXJuIGNoaWxkO1xuXHR9O1xuXHQvKipcblx0ICogUmVuZGVycyB0aGUgSFRNTCBvdXRwdXQgZm9yIHRoZSBxdWlja0Zvcm0gZWxlbWVudC4gIFRoaXMgc2hvdWxkIGJlIGNhbGxlZFxuXHQgKiB3aXRob3V0IHBhcmFtZXRlcnM6IGBmb3JtLnJlbmRlcigpYC5cblx0ICpcblx0ICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsU3ViZ3JvdXBJZFxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnRcblx0ICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChpbnRlcm5hbFN1Ymdyb3VwSWQpIHtcblx0XHRjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMuY29tcHV0ZSh0aGlzLmRhdGEsIGludGVybmFsU3ViZ3JvdXBJZCk7XG5cdFx0Zm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcykge1xuXHRcdFx0Ly8gZG8gbm90IHBhc3MgaW50ZXJuYWxfc3ViZ3JvdXBfaWQgdG8gcmVjdXJzaXZlIGNhbGxzXG5cdFx0XHRjdXJyZW50Tm9kZVsxXS5hcHBlbmRDaGlsZChjaGlsZC5yZW5kZXIoKSk7XG5cdFx0fVxuXHRcdHJldHVybiBjdXJyZW50Tm9kZVswXTtcblx0fTtcblx0LyoqXG5cdCAqIEBwYXJhbSB7Kn0gZGF0YVxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5JZFxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnRcblx0ICovXG5cdE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50LnByb3RvdHlwZS5jb21wdXRlID0gZnVuY3Rpb24gKGRhdGEsIGluSWQpIHtcblx0XHRsZXQgbm9kZTtcblx0XHRsZXQgY2hpbGRDb250YWluZXIgPSBudWxsO1xuXHRcdGxldCBsYWJlbDtcblx0XHRjb25zdCBpZCA9IGAke2luSWQgPyBgJHtpbklkfV9gIDogJyd9bm9kZV8ke01vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50LmlkKyt9YDtcblx0XHRpZiAoZGF0YS5hZG1pbm9ubHkgJiYgIU1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHQvLyBoZWxsIGhhY2sgYWxwaGFcblx0XHRcdGRhdGEudHlwZSA9ICdoaWRkZW4nO1xuXHRcdH1cblx0XHRsZXQgaTtcblx0XHRsZXQgY3VycmVudDtcblx0XHRsZXQgc3Vibm9kZTtcblx0XHRzd2l0Y2ggKGRhdGEudHlwZSkge1xuXHRcdFx0Y2FzZSAnZm9ybSc6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7XG5cdFx0XHRcdG5vZGUuY2xhc3NOYW1lID0gJ3F1aWNrZm9ybSc7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zY3JpcHQtdXJsXG5cdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdhY3Rpb24nLCAnamF2YXNjcmlwdDp2b2lkKDApOycpO1xuXHRcdFx0XHRpZiAoZGF0YS5ldmVudCkge1xuXHRcdFx0XHRcdG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihkYXRhLmV2ZW50VHlwZSB8fCAnc3VibWl0JywgZGF0YS5ldmVudCwgZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZnJhZ21lbnQnOlxuXHRcdFx0XHRub2RlID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXHRcdFx0XHQvLyBmcmFnbWVudHMgY2FuJ3QgaGF2ZSBhbnkgYXR0cmlidXRlcywgc28ganVzdCByZXR1cm4gaXQgc3RyYWlnaHQgYXdheVxuXHRcdFx0XHRyZXR1cm4gW25vZGUsIG5vZGVdO1xuXHRcdFx0Y2FzZSAnc2VsZWN0Jzoge1xuXHRcdFx0XHRub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdpZCcsIGBkaXZfJHtpZH1gKTtcblx0XHRcdFx0aWYgKGRhdGEubGFiZWwpIHtcblx0XHRcdFx0XHRsYWJlbCA9IG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKSk7XG5cdFx0XHRcdFx0bGFiZWwuc2V0QXR0cmlidXRlKCdmb3InLCBpZCk7XG5cdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoTW9yZWJpdHMuY3JlYXRlSHRtbChkYXRhLmxhYmVsKSk7XG5cdFx0XHRcdFx0Ly8gTm8gbWFyZ2luXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBzZWxlY3QgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpKTtcblx0XHRcdFx0aWYgKGRhdGEuZXZlbnQpIHtcblx0XHRcdFx0XHRzZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZGF0YS5ldmVudCwgZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLm11bHRpcGxlKSB7XG5cdFx0XHRcdFx0c2VsZWN0LnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnbXVsdGlwbGUnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5zaXplKSB7XG5cdFx0XHRcdFx0c2VsZWN0LnNldEF0dHJpYnV0ZSgnc2l6ZScsIGRhdGEuc2l6ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEuZGlzYWJsZWQpIHtcblx0XHRcdFx0XHRzZWxlY3QuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNlbGVjdC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBkYXRhLm5hbWUpO1xuXHRcdFx0XHRpZiAoZGF0YS5saXN0KSB7XG5cdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGRhdGEubGlzdC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudCA9IGRhdGEubGlzdFtpXTtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50Lmxpc3QpIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudC50eXBlID0gJ29wdGdyb3VwJztcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnQudHlwZSA9ICdvcHRpb24nO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0c3Vibm9kZSA9IHRoaXMuY29tcHV0ZShjdXJyZW50KTtcblx0XHRcdFx0XHRcdHNlbGVjdC5hcHBlbmRDaGlsZChzdWJub2RlWzBdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBzZWxlY3Q7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnb3B0aW9uJzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXHRcdFx0XHRub2RlLnZhbHVlcyA9IGRhdGEudmFsdWU7XG5cdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEudmFsdWUpO1xuXHRcdFx0XHRpZiAoZGF0YS5zZWxlY3RlZCkge1xuXHRcdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLmRpc2FibGVkKSB7XG5cdFx0XHRcdFx0bm9kZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gQWRkIGhpZGRlbiBhdHRyXG5cdFx0XHRcdGlmIChkYXRhLmhpZGRlbikge1xuXHRcdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bm9kZS5zZXRBdHRyaWJ1dGUoJ2xhYmVsJywgZGF0YS5sYWJlbCk7XG5cdFx0XHRcdG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGF0YS5sYWJlbCkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ29wdGdyb3VwJzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGdyb3VwJyk7XG5cdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdsYWJlbCcsIGRhdGEubGFiZWwpO1xuXHRcdFx0XHRpZiAoZGF0YS5saXN0KSB7XG5cdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGRhdGEubGlzdC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudCA9IGRhdGEubGlzdFtpXTtcblx0XHRcdFx0XHRcdGN1cnJlbnQudHlwZSA9ICdvcHRpb24nOyAvLyBtdXN0IGJlIG9wdGlvbnMgaGVyZVxuXHRcdFx0XHRcdFx0c3Vibm9kZSA9IHRoaXMuY29tcHV0ZShjdXJyZW50KTtcblx0XHRcdFx0XHRcdG5vZGUuYXBwZW5kQ2hpbGQoc3Vibm9kZVswXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmllbGQnOlxuXHRcdFx0XHRub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZmllbGRzZXQnKTtcblx0XHRcdFx0bGFiZWwgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xlZ2VuZCcpKTtcblx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoTW9yZWJpdHMuY3JlYXRlSHRtbChkYXRhLmxhYmVsKSk7XG5cdFx0XHRcdGlmIChkYXRhLm5hbWUpIHtcblx0XHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgnbmFtZScsIGRhdGEubmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEuZGlzYWJsZWQpIHtcblx0XHRcdFx0XHRub2RlLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2NoZWNrYm94Jzpcblx0XHRcdGNhc2UgJ3JhZGlvJzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0XHRpZiAoZGF0YS5saXN0KSB7XG5cdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGRhdGEubGlzdC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY3VySWQgPSBgJHtpZH1fJHtpfWA7XG5cdFx0XHRcdFx0XHRjdXJyZW50ID0gZGF0YS5saXN0W2ldO1xuXHRcdFx0XHRcdFx0bGV0IGN1ckRpdjtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50LnR5cGUgPT09ICdoZWFkZXInKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGlubGluZSBoYWNrXG5cdFx0XHRcdFx0XHRcdGN1ckRpdiA9IG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDYnKSk7XG5cdFx0XHRcdFx0XHRcdGN1ckRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjdXJyZW50LmxhYmVsKSk7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50LnRvb2x0aXApIHtcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudC5nZW5lcmF0ZVRvb2x0aXAoY3VyRGl2LCBjdXJyZW50KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGN1ckRpdiA9IG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuXHRcdFx0XHRcdFx0Ly8gQWRkIGhpZGRlbiBhdHRyXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudC5oaWRkZW4pIHtcblx0XHRcdFx0XHRcdFx0Y3VyRGl2LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0c3Vibm9kZSA9IGN1ckRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTtcblx0XHRcdFx0XHRcdHN1Ym5vZGUudmFsdWVzID0gY3VycmVudC52YWx1ZTtcblx0XHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGN1cnJlbnQudmFsdWUpO1xuXHRcdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBkYXRhLnR5cGUpO1xuXHRcdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgY3VySWQpO1xuXHRcdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBjdXJyZW50Lm5hbWUgfHwgZGF0YS5uYW1lKTtcblx0XHRcdFx0XHRcdC8vIElmIG5hbWUgaXMgcHJvdmlkZWQgb24gdGhlIGluZGl2aWR1YWwgY2hlY2tib3gsIGFkZCBhIGRhdGEtc2luZ2xlXG5cdFx0XHRcdFx0XHQvLyBhdHRyaWJ1dGUgd2hpY2ggaW5kaWNhdGVzIGl0IGlzbid0IHBhcnQgb2YgYSBsaXN0IG9mIGNoZWNrYm94ZXMgd2l0aFxuXHRcdFx0XHRcdFx0Ly8gc2FtZSBuYW1lLiBVc2VkIGluIGdldElucHV0RGF0YSgpXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudC5uYW1lKSB7XG5cdFx0XHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXNpbmdsZScsICdkYXRhLXNpbmdsZScpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnQuY2hlY2tlZCkge1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnQuZGlzYWJsZWQpIHtcblx0XHRcdFx0XHRcdFx0c3Vibm9kZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRsYWJlbCA9IGN1ckRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpKTtcblx0XHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKE1vcmViaXRzLmNyZWF0ZUh0bWwoY3VycmVudC5sYWJlbCkpO1xuXHRcdFx0XHRcdFx0bGFiZWwuc2V0QXR0cmlidXRlKCdmb3InLCBjdXJJZCk7XG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudC50b29sdGlwKSB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50LmdlbmVyYXRlVG9vbHRpcChsYWJlbCwgY3VycmVudCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBzdHlsZXMgZ28gb24gdGhlIGxhYmVsLCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gc3R5bGUgYSBjaGVja2JveC9yYWRpb1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnQuc3R5bGUpIHtcblx0XHRcdFx0XHRcdFx0bGFiZWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIGN1cnJlbnQuc3R5bGUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bGV0IGV2ZW50O1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnQuc3ViZ3JvdXApIHtcblx0XHRcdFx0XHRcdFx0bGV0IHRtcGdyb3VwID0gY3VycmVudC5zdWJncm91cDtcblx0XHRcdFx0XHRcdFx0dG1wZ3JvdXAgPSBnZW5lcmF0ZUFycmF5KHRtcGdyb3VwKTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3ViZ3JvdXBSYXcgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdGlkOiBgJHtpZH1fJHtpfV9zdWJncm91cGAsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGVsIG9mIHRtcGdyb3VwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3RWwgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQuLi5lbCxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdG5ld0VsLnR5cGUgfHw9IGRhdGEudHlwZTtcblx0XHRcdFx0XHRcdFx0XHRuZXdFbC5uYW1lID0gYCR7Y3VycmVudC5uYW1lIHx8IGRhdGEubmFtZX0uJHtuZXdFbC5uYW1lfWA7XG5cdFx0XHRcdFx0XHRcdFx0c3ViZ3JvdXBSYXcuYXBwZW5kKG5ld0VsKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb25zdCBzdWJncm91cCA9IHN1Ymdyb3VwUmF3LnJlbmRlcihjdXJJZCk7XG5cdFx0XHRcdFx0XHRcdHN1Ymdyb3VwLmNsYXNzTmFtZSA9ICdxdWlja2Zvcm1TdWJncm91cCc7XG5cdFx0XHRcdFx0XHRcdHN1Ym5vZGUuc3ViZ3JvdXAgPSBzdWJncm91cDtcblx0XHRcdFx0XHRcdFx0c3Vibm9kZS5zaG93biA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRldmVudCA9IChlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGUudGFyZ2V0LmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGUudGFyZ2V0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZS50YXJnZXQuc3ViZ3JvdXApO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUudGFyZ2V0LnR5cGUgPT09ICdyYWRpbycpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qge25hbWV9ID0gZS50YXJnZXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdLnN1Ymdyb3VwXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdID0gZS50YXJnZXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGUudGFyZ2V0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS50YXJnZXQuc3ViZ3JvdXApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0c3Vibm9kZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBldmVudCwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50LmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRzdWJub2RlLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoc3ViZ3JvdXApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGRhdGEudHlwZSA9PT0gJ3JhZGlvJykge1xuXHRcdFx0XHRcdFx0XHRldmVudCA9IChlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGUudGFyZ2V0LmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHtuYW1lfSA9IGUudGFyZ2V0O1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUudGFyZ2V0LmZvcm0ubmFtZXNbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS50YXJnZXQuZm9ybS5uYW1lc1tuYW1lXS5zdWJncm91cFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIGUudGFyZ2V0LmZvcm0ubmFtZXNbbmFtZV07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGV2ZW50LCB0cnVlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIGFkZCB1c2VycycgZXZlbnQgbGFzdCwgc28gaXQgY2FuIGludGVyYWN0IHdpdGggdGhlIHN1Ymdyb3VwXG5cdFx0XHRcdFx0XHRpZiAoZGF0YS5ldmVudCkge1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGRhdGEuZXZlbnQsIGZhbHNlKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoY3VycmVudC5ldmVudCkge1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGN1cnJlbnQuZXZlbnQsIHRydWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5zaGlmdENsaWNrU3VwcG9ydCAmJiBkYXRhLnR5cGUgPT09ICdjaGVja2JveCcpIHtcblx0XHRcdFx0XHRNb3JlYml0cy5jaGVja2JveFNoaWZ0Q2xpY2tTdXBwb3J0KE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhub2RlLCBkYXRhLm5hbWUpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIGlucHV0IGlzIGFjdHVhbGx5IGEgdGV4dC10eXBlLCBzbyBudW1iZXIgaGVyZSBpbmhlcml0cyB0aGUgc2FtZSBzdHVmZlxuXHRcdFx0Y2FzZSAnbnVtYmVyJzpcblx0XHRcdGNhc2UgJ2lucHV0Jzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgnaWQnLCBgZGl2XyR7aWR9YCk7XG5cdFx0XHRcdC8vIEFkZCBoaWRkZW4gYXR0clxuXHRcdFx0XHRpZiAoZGF0YS5oaWRkZW4pIHtcblx0XHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLmxhYmVsKSB7XG5cdFx0XHRcdFx0bGFiZWwgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJykpO1xuXHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKE1vcmViaXRzLmNyZWF0ZUh0bWwoZGF0YS5sYWJlbCkpO1xuXHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgZGF0YS5pZCB8fCBpZCk7XG5cdFx0XHRcdFx0Ly8gTm8gbWFyZ2luXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzdWJub2RlID0gbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTtcblx0XHRcdFx0Ly8gQWRkIHZhbHVlIGFuZCBwbGFjZWhvbGRlciBhdHRyc1xuXHRcdFx0XHRpZiAoZGF0YS52YWx1ZSkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEudmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLnBsYWNlaG9sZGVyKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgZGF0YS5wbGFjZWhvbGRlcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBkYXRhLm5hbWUpO1xuXHRcdFx0XHRpZiAoZGF0YS50eXBlID09PSAnaW5wdXQnKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCd0eXBlJywgJ251bWJlcicpO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgYXR0IG9mIFsnbWluJywgJ21heCcsICdzdGVwJywgJ2xpc3QnXSkge1xuXHRcdFx0XHRcdFx0aWYgKGRhdGFbYXR0XSkge1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLnNldEF0dHJpYnV0ZShhdHQsIGRhdGFbYXR0XSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoY29uc3QgYXR0IG9mIFsndmFsdWUnLCAnc2l6ZScsICdwbGFjZWhvbGRlcicsICdtYXhsZW5ndGgnXSkge1xuXHRcdFx0XHRcdGlmIChkYXRhW2F0dF0pIHtcblx0XHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKGF0dCwgZGF0YVthdHRdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBhdHQgb2YgWydkaXNhYmxlZCcsICdyZXF1aXJlZCcsICdyZWFkb25seSddKSB7XG5cdFx0XHRcdFx0aWYgKGRhdGFbYXR0XSkge1xuXHRcdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoYXR0LCBhdHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5ldmVudCkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBkYXRhLmV2ZW50LCBmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBzdWJub2RlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2R5bmlucHV0Jzoge1xuXHRcdFx0XHRjb25zdCBtaW4gPSBkYXRhLm1pbiB8fCAxO1xuXHRcdFx0XHRjb25zdCBtYXggPSBkYXRhLm1heCB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0bGFiZWwgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2g1JykpO1xuXHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChNb3JlYml0cy5jcmVhdGVIdG1sKGRhdGEubGFiZWwpKTtcblx0XHRcdFx0Y29uc3QgbGlzdE5vZGUgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcblx0XHRcdFx0Y29uc3QgbW9yZSA9IHRoaXMuY29tcHV0ZSh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6ICfmm7TlpJonLFxuXHRcdFx0XHRcdGRpc2FibGVkOiBtaW4gPj0gbWF4LFxuXHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgbmV3Tm9kZSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudChlLnRhcmdldC5zdWJsaXN0KTtcblx0XHRcdFx0XHRcdGUudGFyZ2V0LmFyZWEuYXBwZW5kQ2hpbGQobmV3Tm9kZS5yZW5kZXIoKSk7XG5cdFx0XHRcdFx0XHRpZiAoKytlLnRhcmdldC5jb3VudGVyID49IGUudGFyZ2V0Lm1heCkge1xuXHRcdFx0XHRcdFx0XHRlLnRhcmdldC5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRub2RlLmFwcGVuZENoaWxkKG1vcmVbMF0pO1xuXHRcdFx0XHRjb25zdCBbLCBtb3JlQnV0dG9uXSA9IG1vcmU7XG5cdFx0XHRcdGNvbnN0IHN1Ymxpc3QgPSB7XG5cdFx0XHRcdFx0dHlwZTogJ19keW5pbnB1dF9lbGVtZW50Jyxcblx0XHRcdFx0XHRsYWJlbDogZGF0YS5zdWJsYWJlbCB8fCBkYXRhLmxhYmVsLFxuXHRcdFx0XHRcdG5hbWU6IGRhdGEubmFtZSxcblx0XHRcdFx0XHR2YWx1ZTogZGF0YS52YWx1ZSxcblx0XHRcdFx0XHRzaXplOiBkYXRhLnNpemUsXG5cdFx0XHRcdFx0cmVtb3ZlOiBmYWxzZSxcblx0XHRcdFx0XHRtYXhsZW5ndGg6IGRhdGEubWF4bGVuZ3RoLFxuXHRcdFx0XHRcdGV2ZW50OiBkYXRhLmV2ZW50LFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgbWluOyArK2kpIHtcblx0XHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHN1Ymxpc3QpO1xuXHRcdFx0XHRcdGxpc3ROb2RlLmFwcGVuZENoaWxkKGVsZW0ucmVuZGVyKCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1Ymxpc3QucmVtb3ZlID0gdHJ1ZTtcblx0XHRcdFx0c3VibGlzdC5tb3JlYnV0dG9uID0gbW9yZUJ1dHRvbjtcblx0XHRcdFx0c3VibGlzdC5saXN0bm9kZSA9IGxpc3ROb2RlO1xuXHRcdFx0XHRtb3JlQnV0dG9uLnN1Ymxpc3QgPSBzdWJsaXN0O1xuXHRcdFx0XHRtb3JlQnV0dG9uLmFyZWEgPSBsaXN0Tm9kZTtcblx0XHRcdFx0bW9yZUJ1dHRvbi5tYXggPSBtYXggLSBtaW47XG5cdFx0XHRcdG1vcmVCdXR0b24uY291bnRlciA9IDA7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnX2R5bmlucHV0X2VsZW1lbnQnOlxuXHRcdFx0XHQvLyBQcml2YXRlLCBzaW1pbGFyIHRvIG5vcm1hbCBpbnB1dFxuXHRcdFx0XHRub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdGlmIChkYXRhLmxhYmVsKSB7XG5cdFx0XHRcdFx0bGFiZWwgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJykpO1xuXHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRhdGEubGFiZWwpKTtcblx0XHRcdFx0XHRsYWJlbC5zZXRBdHRyaWJ1dGUoJ2ZvcicsIGlkKTtcblx0XHRcdFx0XHQvLyBObyBtYXJnaW5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHN1Ym5vZGUgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpO1xuXHRcdFx0XHRpZiAoZGF0YS52YWx1ZSkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEudmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCduYW1lJywgZGF0YS5uYW1lKTtcblx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpO1xuXHRcdFx0XHRpZiAoZGF0YS5zaXplKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3NpemUnLCBkYXRhLnNpemUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLm1heGxlbmd0aCkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCdtYXhsZW5ndGgnLCBkYXRhLm1heGxlbmd0aCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEuZXZlbnQpIHtcblx0XHRcdFx0XHRzdWJub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZGF0YS5ldmVudCwgZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLnJlbW92ZSkge1xuXHRcdFx0XHRcdGNvbnN0IHJlbW92ZSA9IHRoaXMuY29tcHV0ZSh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiAn56e76ZmkJyxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBsaXN0ID0gZS50YXJnZXQubGlzdG5vZGU7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5vZGVfID0gZS50YXJnZXQuaW5wdXRub2RlO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBtb3JlID0gZS50YXJnZXQubW9yZWJ1dHRvbjtcblx0XHRcdFx0XHRcdFx0bGlzdC5yZW1vdmVDaGlsZChub2RlXyk7XG5cdFx0XHRcdFx0XHRcdC0tbW9yZS5jb3VudGVyO1xuXHRcdFx0XHRcdFx0XHRtb3JlLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcblx0XHRcdFx0XHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0bm9kZS5hcHBlbmRDaGlsZChyZW1vdmVbMF0pO1xuXHRcdFx0XHRcdGNvbnN0IFssIHJlbW92ZUJ1dHRvbl0gPSByZW1vdmU7XG5cdFx0XHRcdFx0cmVtb3ZlQnV0dG9uLmlucHV0bm9kZSA9IG5vZGU7XG5cdFx0XHRcdFx0cmVtb3ZlQnV0dG9uLmxpc3Rub2RlID0gZGF0YS5saXN0bm9kZTtcblx0XHRcdFx0XHRyZW1vdmVCdXR0b24ubW9yZWJ1dHRvbiA9IGRhdGEubW9yZWJ1dHRvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2hpZGRlbic6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKTtcblx0XHRcdFx0bm9kZS52YWx1ZXMgPSBkYXRhLnZhbHVlO1xuXHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBkYXRhLnZhbHVlKTtcblx0XHRcdFx0bm9kZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBkYXRhLm5hbWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2hlYWRlcic6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoNScpO1xuXHRcdFx0XHRub2RlLmFwcGVuZENoaWxkKE1vcmViaXRzLmNyZWF0ZUh0bWwoZGF0YS5sYWJlbCkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2Rpdic6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0aWYgKGRhdGEubmFtZSkge1xuXHRcdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCduYW1lJywgZGF0YS5uYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5sYWJlbCkge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdFx0XHRyZXN1bHQuY2xhc3NOYW1lID0gJ3F1aWNrZm9ybURlc2NyaXB0aW9uJztcblx0XHRcdFx0XHRyZXN1bHQuYXBwZW5kQ2hpbGQoTW9yZWJpdHMuY3JlYXRlSHRtbChkYXRhLmxhYmVsKSk7XG5cdFx0XHRcdFx0bm9kZS5hcHBlbmRDaGlsZChyZXN1bHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3VibWl0Jzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpO1xuXHRcdFx0XHRjaGlsZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7XG5cdFx0XHRcdGlmIChkYXRhLmxhYmVsKSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEubGFiZWwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNoaWxkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnbmFtZScsIGRhdGEubmFtZSB8fCAnc3VibWl0Jyk7XG5cdFx0XHRcdGlmIChkYXRhLmRpc2FibGVkKSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnYnV0dG9uJzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpO1xuXHRcdFx0XHRjaGlsZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7XG5cdFx0XHRcdGlmIChkYXRhLmxhYmVsKSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEubGFiZWwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNoaWxkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnbmFtZScsIGRhdGEubmFtZSk7XG5cdFx0XHRcdGlmIChkYXRhLmRpc2FibGVkKSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLmV2ZW50KSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBkYXRhLmV2ZW50LCBmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd0ZXh0YXJlYSc6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0bm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgYGRpdl8ke2lkfWApO1xuXHRcdFx0XHQvLyBBZGQgaGlkZGVuIGF0dHJcblx0XHRcdFx0aWYgKGRhdGEuaGlkZGVuKSB7XG5cdFx0XHRcdFx0bm9kZS5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5sYWJlbCkge1xuXHRcdFx0XHRcdGxhYmVsID0gbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoNScpKTtcblx0XHRcdFx0XHRjb25zdCBsYWJlbEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xuXHRcdFx0XHRcdGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChNb3JlYml0cy5jcmVhdGVIdG1sKGRhdGEubGFiZWwpKTtcblx0XHRcdFx0XHRsYWJlbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmb3InLCBkYXRhLmlkIHx8IGlkKTtcblx0XHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChsYWJlbEVsZW1lbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1Ym5vZGUgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJykpO1xuXHRcdFx0XHRzdWJub2RlLnNldEF0dHJpYnV0ZSgnbmFtZScsIGRhdGEubmFtZSk7XG5cdFx0XHRcdGlmIChkYXRhLmNvbHMpIHtcblx0XHRcdFx0XHRzdWJub2RlLnNldEF0dHJpYnV0ZSgnY29scycsIGRhdGEuY29scyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEucm93cykge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCdyb3dzJywgZGF0YS5yb3dzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5kaXNhYmxlZCkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLnJlcXVpcmVkKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJywgJ3JlcXVpcmVkJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEucmVhZG9ubHkpIHtcblx0XHRcdFx0XHRzdWJub2RlLnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCAncmVhZG9ubHknKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS52YWx1ZSkge1xuXHRcdFx0XHRcdHN1Ym5vZGUudmFsdWUgPSBkYXRhLnZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEFkZCBwbGFjZWhvbGRlciBhdHRyXG5cdFx0XHRcdGlmIChkYXRhLnBsYWNlaG9sZGVyKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5wbGFjZWhvbGRlciA9IGRhdGEucGxhY2Vob2xkZXI7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBzdWJub2RlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTW9yZWJpdHMucXVpY2tGb3JtOiB1bmtub3duIGVsZW1lbnQgdHlwZSAke2RhdGEudHlwZS50b1N0cmluZygpfWApO1xuXHRcdH1cblx0XHRjaGlsZENvbnRhaW5lciB8fD0gbm9kZTtcblx0XHRpZiAoZGF0YS50b29sdGlwKSB7XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudC5nZW5lcmF0ZVRvb2x0aXAobGFiZWwgfHwgbm9kZSwgZGF0YSk7XG5cdFx0fVxuXHRcdGlmIChkYXRhLmV4dHJhKSB7XG5cdFx0XHRjaGlsZENvbnRhaW5lci5leHRyYSA9IGRhdGEuZXh0cmE7XG5cdFx0fVxuXHRcdGlmIChkYXRhLiRkYXRhKSB7XG5cdFx0XHQkKGNoaWxkQ29udGFpbmVyKS5kYXRhKGRhdGEuJGRhdGEpO1xuXHRcdH1cblx0XHRpZiAoZGF0YS5zdHlsZSkge1xuXHRcdFx0Y2hpbGRDb250YWluZXIuc2V0QXR0cmlidXRlKCdzdHlsZScsIGRhdGEuc3R5bGUpO1xuXHRcdH1cblx0XHRpZiAoZGF0YS5jbGFzc05hbWUpIHtcblx0XHRcdGNoaWxkQ29udGFpbmVyLmNsYXNzTmFtZSA9IGNoaWxkQ29udGFpbmVyLmNsYXNzTmFtZVxuXHRcdFx0XHQ/IGAke2NoaWxkQ29udGFpbmVyLmNsYXNzTmFtZX0gJHtkYXRhLmNsYXNzTmFtZX1gXG5cdFx0XHRcdDogZGF0YS5jbGFzc05hbWU7XG5cdFx0fVxuXHRcdGNoaWxkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCBkYXRhLmlkIHx8IGlkKTtcblx0XHRyZXR1cm4gW25vZGUsIGNoaWxkQ29udGFpbmVyXTtcblx0fTtcblx0LyoqXG5cdCAqIENyZWF0ZSBhIGpRdWVyeSBVSS1iYXNlZCB0b29sdGlwLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnRcblx0ICogQHJlcXVpcmVzIGpxdWVyeS51aVxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIC0gVGhlIEhUTUwgZWxlbWVudCBiZXNpZGUgd2hpY2ggYSB0b29sdGlwIGlzIHRvIGJlIGdlbmVyYXRlZC5cblx0ICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBUb29sdGlwLXJlbGF0ZWQgY29uZmlndXJhdGlvbiBkYXRhLlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQuZ2VuZXJhdGVUb29sdGlwID0gKG5vZGUsIGRhdGEpID0+IHtcblx0XHRjb25zdCB0b29sdGlwQnV0dG9uID0gbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpO1xuXHRcdHRvb2x0aXBCdXR0b24uY2xhc3NOYW1lID0gJ21vcmViaXRzLXRvb2x0aXBCdXR0b24nO1xuXHRcdHRvb2x0aXBCdXR0b24udGl0bGUgPSBkYXRhLnRvb2x0aXA7IC8vIFByb3ZpZGVzIHRoZSBjb250ZW50IGZvciBqUXVlcnkgVUlcblx0XHR0b29sdGlwQnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCc/JykpO1xuXHRcdCQodG9vbHRpcEJ1dHRvbikudG9vbHRpcCh7XG5cdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRteTogJ2xlZnQgdG9wJyxcblx0XHRcdFx0YXQ6ICdjZW50ZXIgYm90dG9tJyxcblx0XHRcdFx0Y29sbGlzaW9uOiAnZmxpcGZpdCcsXG5cdFx0XHR9LFxuXHRcdFx0Ly8gRGVwcmVjYXRlZCBpbiBVSSAxLjEyLCBidXQgTVcgc3R1Y2sgb24gMS45LjIgaW5kZWZpbml0ZWx5OyBzZWUgIzM5OCBhbmQgVDcxMzg2XG5cdFx0XHR0b29sdGlwQ2xhc3M6ICdtb3JlYml0cy11aS10b29sdGlwJyxcblx0XHR9KTtcblx0fTtcblx0Ly8gU29tZSB1dGlsaXR5IG1ldGhvZHMgZm9yIG1hbmlwdWxhdGluZyBxdWlja0Zvcm1zIGFmdGVyIHRoZWlyIGNyZWF0aW9uOlxuXHQvLyAoTm9uZSBvZiB0aGVzZSB3b3JrIGZvciBcImR5bmlucHV0XCIgdHlwZSBmaWVsZHMgYXQgcHJlc2VudClcblx0LyoqXG5cdCAqIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIGZpbGxlZCBmb3JtIGRhdGEgZW50ZXJlZCBieSB0aGUgdXNlciwgd2l0aCB0aGUgb2JqZWN0XG5cdCAqIGtleXMgYmVpbmcgdGhlIGZvcm0gZWxlbWVudCBuYW1lcy4gRGlzYWJsZWQgZmllbGRzIHdpbGwgYmUgaWdub3JlZCwgYnV0IG5vdCBoaWRkZW4gZmllbGRzLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7SFRNTEZvcm1FbGVtZW50fSBmb3JtXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9IFdpdGggZmllbGQgbmFtZXMgYXMga2V5cywgaW5wdXQgZGF0YSBhcyB2YWx1ZXMuXG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhID0gKGZvcm0pID0+IHtcblx0XHRjb25zdCByZXN1bHQgPSB7fTtcblx0XHRmb3IgKGNvbnN0IGZpZWxkIG9mIGZvcm0uZWxlbWVudHMpIHtcblx0XHRcdGlmIChmaWVsZC5kaXNhYmxlZCB8fCAhZmllbGQubmFtZSB8fCAhZmllbGQudHlwZSB8fCBmaWVsZC50eXBlID09PSAnc3VibWl0JyB8fCBmaWVsZC50eXBlID09PSAnYnV0dG9uJykge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdC8vIEZvciBlbGVtZW50cyBpbiBzdWJncm91cHMsIHF1aWNrZm9ybSBwcmVwZW5kcyBlbGVtZW50IG5hbWVzIHdpdGhcblx0XHRcdC8vIG5hbWUgb2YgdGhlIHBhcmVudCBncm91cCBmb2xsb3dlZCBieSBhIHBlcmlvZCwgZ2V0IHJpZCBvZiB0aGF0LlxuXHRcdFx0Y29uc3QgZmllbGROYW1lTm9ybSA9IGZpZWxkLm5hbWUuc2xpY2UoZmllbGQubmFtZS5pbmRleE9mKCcuJykgKyAxKTtcblx0XHRcdHN3aXRjaCAoZmllbGQudHlwZSkge1xuXHRcdFx0XHRjYXNlICdyYWRpbyc6XG5cdFx0XHRcdFx0aWYgKGZpZWxkLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdHJlc3VsdFtmaWVsZE5hbWVOb3JtXSA9IGZpZWxkLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnY2hlY2tib3gnOlxuXHRcdFx0XHRcdGlmIChmaWVsZC5kYXRhc2V0LnNpbmdsZSkge1xuXHRcdFx0XHRcdFx0cmVzdWx0W2ZpZWxkTmFtZU5vcm1dID0gZmllbGQuY2hlY2tlZDsgLy8gYm9vbGVhblxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRbZmllbGROYW1lTm9ybV0gfHw9IFtdO1xuXHRcdFx0XHRcdFx0aWYgKGZpZWxkLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0W2ZpZWxkTmFtZU5vcm1dW3Jlc3VsdFtmaWVsZE5hbWVOb3JtXS5sZW5ndGhdID0gZmllbGQudmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzZWxlY3QtbXVsdGlwbGUnOlxuXHRcdFx0XHRcdHJlc3VsdFtmaWVsZE5hbWVOb3JtXSA9ICQoZmllbGQpLnZhbCgpOyAvLyBmaWVsZC52YWx1ZSBkb2Vzbid0IHdvcmtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAndGV4dCc6IC8vIGZhbGxzIHRocm91Z2hcblx0XHRcdFx0Y2FzZSAndGV4dGFyZWEnOlxuXHRcdFx0XHRcdHJlc3VsdFtmaWVsZE5hbWVOb3JtXSA9IGZpZWxkLnZhbHVlLnRyaW0oKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHQvLyBjb3VsZCBiZSBzZWxlY3Qtb25lLCBkYXRlLCBudW1iZXIsIGVtYWlsLCBldGNcblx0XHRcdFx0XHRpZiAoZmllbGQudmFsdWUpIHtcblx0XHRcdFx0XHRcdHJlc3VsdFtmaWVsZE5hbWVOb3JtXSA9IGZpZWxkLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblx0LyoqXG5cdCAqIFJldHVybnMgYWxsIGZvcm0gZWxlbWVudHMgd2l0aCBhIGdpdmVuIGZpZWxkIG5hbWUgb3IgSUQuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5xdWlja0Zvcm1cblx0ICogQHBhcmFtIHtIVE1MRm9ybUVsZW1lbnR9IGZvcm1cblx0ICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkTmFtZSAtIFRoZSBuYW1lIG9yIGlkIG9mIHRoZSBmaWVsZHMuXG5cdCAqIEByZXR1cm5zIHtIVE1MRWxlbWVudFtdfSAtIEFycmF5IG9mIG1hdGNoaW5nIGZvcm0gZWxlbWVudHMuXG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMgPSAoZm9ybSwgZmllbGROYW1lKSA9PiB7XG5cdFx0Y29uc3QgJGZvcm0gPSAkKGZvcm0pO1xuXHRcdGZpZWxkTmFtZSA9ICQuZXNjYXBlU2VsZWN0b3IoZmllbGROYW1lKTsgLy8gc2FuaXRpemUgaW5wdXRcblx0XHRsZXQgJGVsZW1lbnRzID0gJGZvcm0uZmluZChgW25hbWU9XCIke2ZpZWxkTmFtZX1cIl1gKTtcblx0XHRpZiAoJGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiAkZWxlbWVudHMudG9BcnJheSgpO1xuXHRcdH1cblx0XHQkZWxlbWVudHMgPSAkZm9ybS5maW5kKGAjJHtmaWVsZE5hbWV9YCk7XG5cdFx0cmV0dXJuICRlbGVtZW50cy50b0FycmF5KCk7XG5cdH07XG5cdC8qKlxuXHQgKiBTZWFyY2hlcyB0aGUgYXJyYXkgb2YgZWxlbWVudHMgZm9yIGEgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uIHdpdGggYSBjZXJ0YWluXG5cdCAqIGB2YWx1ZWAgYXR0cmlidXRlLCBhbmQgcmV0dXJucyB0aGUgZmlyc3Qgc3VjaCBlbGVtZW50LiBSZXR1cm5zIG51bGwgaWYgbm90IGZvdW5kLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudFtdfSBlbGVtZW50QXJyYXkgLSBBcnJheSBvZiBjaGVja2JveCBvciByYWRpbyBlbGVtZW50cy5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gc2VhcmNoIGZvci5cblx0ICogQHJldHVybnMge0hUTUxJbnB1dEVsZW1lbnR9XG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0uZ2V0Q2hlY2tib3hPclJhZGlvID0gKGVsZW1lbnRBcnJheSwgdmFsdWUpID0+IHtcblx0XHRjb25zdCBmb3VuZCA9IGVsZW1lbnRBcnJheS5maWx0ZXIoKGVsZW1lbnQpID0+IHtcblx0XHRcdHJldHVybiBlbGVtZW50LnZhbHVlID09PSB2YWx1ZTtcblx0XHR9KTtcblx0XHRpZiAoZm91bmQubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIGZvdW5kWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fTtcblx0LyoqXG5cdCAqIFJldHVybnMgdGhlICZsdDtkaXY+IGNvbnRhaW5pbmcgdGhlIGZvcm0gZWxlbWVudCwgb3IgdGhlIGZvcm0gZWxlbWVudCBpdHNlbGZcblx0ICogTWF5IG5vdCB3b3JrIGFzIGV4cGVjdGVkIG9uIGNoZWNrYm94ZXMgb3IgcmFkaW9zLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcblx0ICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRDb250YWluZXIgPSAoZWxlbWVudCkgPT4ge1xuXHRcdC8vIGZvciBkaXZzLCBoZWFkaW5ncyBhbmQgZmllbGRzZXRzLCB0aGUgY29udGFpbmVyIGlzIHRoZSBlbGVtZW50IGl0c2VsZlxuXHRcdGlmIChcblx0XHRcdGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRmllbGRTZXRFbGVtZW50IHx8XG5cdFx0XHRlbGVtZW50IGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQgfHxcblx0XHRcdGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSGVhZGluZ0VsZW1lbnRcblx0XHQpIHtcblx0XHRcdHJldHVybiBlbGVtZW50O1xuXHRcdH1cblx0XHQvLyBmb3Igb3RoZXJzLCBqdXN0IHJldHVybiB0aGUgcGFyZW50IG5vZGVcblx0XHRyZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlO1xuXHR9O1xuXHQvKipcblx0ICogR2V0cyB0aGUgSFRNTCBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIGxhYmVsIG9mIHRoZSBnaXZlbiBmb3JtIGVsZW1lbnRcblx0ICogKG1haW5seSBmb3IgaW50ZXJuYWwgdXNlKS5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcGFyYW0geyhIVE1MRWxlbWVudHxNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCl9IGVsZW1lbnRcblx0ICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRMYWJlbE9iamVjdCA9IChlbGVtZW50KSA9PiB7XG5cdFx0Ly8gZm9yIGJ1dHRvbnMsIGRpdnMgYW5kIGhlYWRlcnMsIHRoZSBsYWJlbCBpcyBvbiB0aGUgZWxlbWVudCBpdHNlbGZcblx0XHRpZiAoXG5cdFx0XHRlbGVtZW50LnR5cGUgPT09ICdidXR0b24nIHx8XG5cdFx0XHRlbGVtZW50LnR5cGUgPT09ICdzdWJtaXQnIHx8XG5cdFx0XHRlbGVtZW50IGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQgfHxcblx0XHRcdGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSGVhZGluZ0VsZW1lbnRcblx0XHQpIHtcblx0XHRcdHJldHVybiBlbGVtZW50O1xuXHRcdFx0Ly8gZm9yIGZpZWxkc2V0cywgdGhlIGxhYmVsIGlzIHRoZSBjaGlsZCA8bGVnZW5kPiBlbGVtZW50XG5cdFx0fSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTEZpZWxkU2V0RWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvcignbGVnZW5kJyk7XG5cdFx0XHQvLyBmb3IgdGV4dGFyZWFzLCB0aGUgbGFiZWwgaXMgdGhlIHNpYmxpbmcgPGg1PiBlbGVtZW50XG5cdFx0fSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCdoNScpO1xuXHRcdH1cblx0XHQvLyBmb3Igb3RoZXJzLCB0aGUgbGFiZWwgaXMgdGhlIHNpYmxpbmcgPGxhYmVsPiBlbGVtZW50XG5cdFx0cmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCdsYWJlbCcpO1xuXHR9O1xuXHQvKipcblx0ICogR2V0cyB0aGUgbGFiZWwgdGV4dCBvZiB0aGUgZWxlbWVudC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcGFyYW0geyhIVE1MRWxlbWVudHxNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCl9IGVsZW1lbnRcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50TGFiZWwgPSAoZWxlbWVudCkgPT4ge1xuXHRcdGNvbnN0IGxhYmVsRWxlbWVudCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50TGFiZWxPYmplY3QoZWxlbWVudCk7XG5cdFx0aWYgKCFsYWJlbEVsZW1lbnQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gbGFiZWxFbGVtZW50LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQ7XG5cdH07XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBsYWJlbCBvZiB0aGUgZWxlbWVudCB0byB0aGUgZ2l2ZW4gdGV4dC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcGFyYW0geyhIVE1MRWxlbWVudHxNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCl9IGVsZW1lbnRcblx0ICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsVGV4dFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBzdWNjZWVkZWQsIGZhbHNlIGlmIHRoZSBsYWJlbCBlbGVtZW50IGlzIHVuYXZhaWxhYmxlLlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRMYWJlbCA9IChlbGVtZW50LCBsYWJlbFRleHQpID0+IHtcblx0XHRjb25zdCBsYWJlbEVsZW1lbnQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudExhYmVsT2JqZWN0KGVsZW1lbnQpO1xuXHRcdGlmICghbGFiZWxFbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGxhYmVsRWxlbWVudC5maXJzdENoaWxkLnRleHRDb250ZW50ID0gbGFiZWxUZXh0O1xuXHRcdHJldHVybiB0cnVlO1xuXHR9O1xuXHQvKipcblx0ICogU3RvcmVzIHRoZSBlbGVtZW50J3MgY3VycmVudCBsYWJlbCwgYW5kIHRlbXBvcmFyaWx5IHNldHMgdGhlIGxhYmVsIHRvIHRoZSBnaXZlbiB0ZXh0LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7KEhUTUxFbGVtZW50fE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KX0gZWxlbWVudFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGVtcG9yYXJ5TGFiZWxUZXh0XG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgc3VjY2VlZGVkLCBgZmFsc2VgIGlmIHRoZSBsYWJlbCBlbGVtZW50IGlzIHVuYXZhaWxhYmxlLlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLm92ZXJyaWRlRWxlbWVudExhYmVsID0gKGVsZW1lbnQsIHRlbXBvcmFyeUxhYmVsVGV4dCkgPT4ge1xuXHRcdGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtb2xkbGFiZWwnKSkge1xuXHRcdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb2xkbGFiZWwnLCBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudExhYmVsKGVsZW1lbnQpKTtcblx0XHR9XG5cdFx0cmV0dXJuIE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50TGFiZWwoZWxlbWVudCwgdGVtcG9yYXJ5TGFiZWxUZXh0KTtcblx0fTtcblx0LyoqXG5cdCAqIFJlc3RvcmVzIHRoZSBsYWJlbCBzdG9yZWQgYnkgb3ZlcnJpZGVFbGVtZW50TGFiZWwuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5xdWlja0Zvcm1cblx0ICogQHBhcmFtIHsoSFRNTEVsZW1lbnR8TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQpfSBlbGVtZW50XG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHN1Y2NlZWRlZCwgZmFsc2UgaWYgdGhlIGxhYmVsIGVsZW1lbnQgaXMgdW5hdmFpbGFibGUuXG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0ucmVzZXRFbGVtZW50TGFiZWwgPSAoZWxlbWVudCkgPT4ge1xuXHRcdGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1vbGRsYWJlbCcpKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRMYWJlbChlbGVtZW50LCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1vbGRsYWJlbCcpKTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH07XG5cdC8qKlxuXHQgKiBTaG93cyBvciBoaWRlcyBhIGZvcm0gZWxlbWVudCBwbHVzIGl0cyBsYWJlbCBhbmQgdG9vbHRpcC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcGFyYW0geyhIVE1MRWxlbWVudHxqUXVlcnl8c3RyaW5nKX0gZWxlbWVudCAtIEhUTUwvalF1ZXJ5IGVsZW1lbnQsIG9yIGpRdWVyeSBzZWxlY3RvciBzdHJpbmcuXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW3Zpc2liaWxpdHldIC0gU2tpcCB0aGlzIHRvIHRvZ2dsZSB2aXNpYmlsaXR5LlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5ID0gKGVsZW1lbnQsIHZpc2liaWxpdHkpID0+IHtcblx0XHQkKGVsZW1lbnQpLnRvZ2dsZSh2aXNpYmlsaXR5KTtcblx0fTtcblx0LyoqXG5cdCAqIFNob3dzIG9yIGhpZGVzIHRoZSBxdWVzdGlvbiBtYXJrIGljb24gKHdoaWNoIGRpc3BsYXlzIHRoZSB0b29sdGlwKSBuZXh0IHRvIGEgZm9ybSBlbGVtZW50LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7KEhUTUxFbGVtZW50fGpRdWVyeSl9IGVsZW1lbnRcblx0ICogQHBhcmFtIHtib29sZWFufSBbdmlzaWJpbGl0eV0gLSBTa2lwIHRoaXMgdG8gdG9nZ2xlIHZpc2liaWxpdHkuXG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5ID0gKGVsZW1lbnQsIHZpc2liaWxpdHkpID0+IHtcblx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50Q29udGFpbmVyKGVsZW1lbnQpKS5maW5kKCcubW9yZWJpdHMtdG9vbHRpcEJ1dHRvbicpLnRvZ2dsZSh2aXNpYmlsaXR5KTtcblx0fTtcblx0LyoqXG5cdCAqIEBleHRlcm5hbCBIVE1MRm9ybUVsZW1lbnRcblx0ICovXG5cdC8qKlxuXHQgKiBHZXQgY2hlY2tlZCBpdGVtcyBpbiB0aGUgZm9ybS5cblx0ICpcblx0ICogQGZ1bmN0aW9uIGV4dGVybmFsOkhUTUxGb3JtRWxlbWVudC5nZXRDaGVja2VkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gRmluZCBjaGVja2VkIHByb3BlcnR5IG9mIGVsZW1lbnRzIChpLmUuIGEgY2hlY2tib3hcblx0ICogb3IgYSByYWRpb2J1dHRvbikgd2l0aCB0aGUgZ2l2ZW4gbmFtZSwgb3Igc2VsZWN0IG9wdGlvbnMgdGhhdCBoYXZlIHNlbGVjdGVkXG5cdCAqIHNldCB0byB0cnVlIChkb24ndCB0cnkgdG8gbWl4IHNlbGVjdHMgd2l0aCByYWRpby9jaGVja2JveGVzKS5cblx0ICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlXSAtIE9wdGlvbmFsbHkgc3BlY2lmeSBlaXRoZXIgcmFkaW8gb3IgY2hlY2tib3ggKGZvclxuXHQgKiB0aGUgZXZlbnQgdGhhdCBib3RoIGNoZWNrYm94ZXMgYW5kIHJhZGlvYnV0dG9ucyBoYXZlIHRoZSBzYW1lIG5hbWUpLlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nW119IC0gQ29udGFpbnMgdGhlIHZhbHVlcyBvZiBlbGVtZW50cyB3aXRoIHRoZSBnaXZlbiBuYW1lXG5cdCAqIGNoZWNrZWQgcHJvcGVydHkgc2V0IHRvIHRydWUuXG5cdCAqL1xuXHRIVE1MRm9ybUVsZW1lbnQucHJvdG90eXBlLmdldENoZWNrZWQgPSBmdW5jdGlvbiAobmFtZSwgdHlwZSkge1xuXHRcdGNvbnN0IGVsZW1lbnRzID0gdGhpcy5lbGVtZW50c1tuYW1lXTtcblx0XHRpZiAoIWVsZW1lbnRzKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGNvbnN0IHJldHVybkFycmF5ID0gW107XG5cdFx0bGV0IGk7XG5cdFx0aWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpIHtcblx0XHRcdGNvbnN0IHtvcHRpb25zfSA9IGVsZW1lbnRzO1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYgKG9wdGlvbnNbaV0uc2VsZWN0ZWQpIHtcblx0XHRcdFx0XHRpZiAob3B0aW9uc1tpXS52YWx1ZXMpIHtcblx0XHRcdFx0XHRcdHJldHVybkFycmF5W3JldHVybkFycmF5Lmxlbmd0aF0gPSBvcHRpb25zW2ldLnZhbHVlcztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IG9wdGlvbnNbaV0udmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChlbGVtZW50cyBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcblx0XHRcdGlmICh0eXBlICYmIGVsZW1lbnRzLnR5cGUgIT09IHR5cGUpIHtcblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fSBlbHNlIGlmIChlbGVtZW50cy5jaGVja2VkKSB7XG5cdFx0XHRcdHJldHVybiBbZWxlbWVudHMudmFsdWVdO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYgKGVsZW1lbnRzW2ldLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRpZiAodHlwZSAmJiBlbGVtZW50c1tpXS50eXBlICE9PSB0eXBlKSB7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnRzW2ldLnZhbHVlcykge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IGVsZW1lbnRzW2ldLnZhbHVlcztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IGVsZW1lbnRzW2ldLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmV0dXJuQXJyYXk7XG5cdH07XG5cdC8qKlxuXHQgKiBEb2VzIHRoZSBzYW1lIGFzIHtAbGluayBIVE1MRm9ybUVsZW1lbnQuZ2V0Q2hlY2tlZHxnZXRDaGVja2VkfSwgYnV0IHdpdGggdW5jaGVja2VkIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb24gZXh0ZXJuYWw6SFRNTEZvcm1FbGVtZW50LmdldFVuY2hlY2tlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEZpbmQgY2hlY2tlZCBwcm9wZXJ0eSBvZiBlbGVtZW50cyAoaS5lLiBhIGNoZWNrYm94XG5cdCAqIG9yIGEgcmFkaW9idXR0b24pIHdpdGggdGhlIGdpdmVuIG5hbWUsIG9yIHNlbGVjdCBvcHRpb25zIHRoYXQgaGF2ZSBzZWxlY3RlZFxuXHQgKiBzZXQgdG8gdHJ1ZSAoZG9uJ3QgdHJ5IHRvIG1peCBzZWxlY3RzIHdpdGggcmFkaW8vY2hlY2tib3hlcykuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZV0gLSBPcHRpb25hbGx5IHNwZWNpZnkgZWl0aGVyIHJhZGlvIG9yIGNoZWNrYm94IChmb3Jcblx0ICogdGhlIGV2ZW50IHRoYXQgYm90aCBjaGVja2JveGVzIGFuZCByYWRpb2J1dHRvbnMgaGF2ZSB0aGUgc2FtZSBuYW1lKS5cblx0ICogQHJldHVybnMge3N0cmluZ1tdfSAtIENvbnRhaW5zIHRoZSB2YWx1ZXMgb2YgZWxlbWVudHMgd2l0aCB0aGUgZ2l2ZW4gbmFtZVxuXHQgKiBjaGVja2VkIHByb3BlcnR5IHNldCB0byB0cnVlLlxuXHQgKi9cblx0SFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5nZXRVbmNoZWNrZWQgPSBmdW5jdGlvbiAobmFtZSwgdHlwZSkge1xuXHRcdGNvbnN0IGVsZW1lbnRzID0gdGhpcy5lbGVtZW50c1tuYW1lXTtcblx0XHRpZiAoIWVsZW1lbnRzKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGNvbnN0IHJldHVybkFycmF5ID0gW107XG5cdFx0bGV0IGk7XG5cdFx0aWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpIHtcblx0XHRcdGNvbnN0IHtvcHRpb25zfSA9IGVsZW1lbnRzO1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYgKCFvcHRpb25zW2ldLnNlbGVjdGVkKSB7XG5cdFx0XHRcdFx0aWYgKG9wdGlvbnNbaV0udmFsdWVzKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm5BcnJheVtyZXR1cm5BcnJheS5sZW5ndGhdID0gb3B0aW9uc1tpXS52YWx1ZXM7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybkFycmF5W3JldHVybkFycmF5Lmxlbmd0aF0gPSBvcHRpb25zW2ldLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudHMgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG5cdFx0XHRpZiAodHlwZSAmJiBlbGVtZW50cy50eXBlICE9PSB0eXBlKSB7XG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH0gZWxzZSBpZiAoIWVsZW1lbnRzLmNoZWNrZWQpIHtcblx0XHRcdFx0cmV0dXJuIFtlbGVtZW50cy52YWx1ZV07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRpZiAoIWVsZW1lbnRzW2ldLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRpZiAodHlwZSAmJiBlbGVtZW50c1tpXS50eXBlICE9PSB0eXBlKSB7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnRzW2ldLnZhbHVlcykge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IGVsZW1lbnRzW2ldLnZhbHVlcztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IGVsZW1lbnRzW2ldLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmV0dXJuQXJyYXk7XG5cdH07XG5cdC8qKlxuXHQgKiBVdGlsaXRpZXMgdG8gaGVscCBwcm9jZXNzIElQIGFkZHJlc3Nlcy5cblx0ICpcblx0ICogQG5hbWVzcGFjZSBNb3JlYml0cy5pcFxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICovXG5cdE1vcmViaXRzLmlwID0ge1xuXHRcdC8qKlxuXHRcdCAqIENvbnZlcnRzIGFuIElQdjYgYWRkcmVzcyB0byB0aGUgY2Fub25pY2FsIGZvcm0gc3RvcmVkIGFuZCB1c2VkIGJ5IE1lZGlhV2lraS5cblx0XHQgKiBKYXZhU2NyaXB0IHRyYW5zbGF0aW9uIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9nZXJyaXQud2lraW1lZGlhLm9yZy9yL3BsdWdpbnMvZ2l0aWxlcy9tZWRpYXdpa2kvY29yZS8rLzhlYjZhYzNlODRlYTMzMTJkMzkxY2E5NmMxMmM0OWUzYWQwNzUzYmIvaW5jbHVkZXMvdXRpbHMvSVAucGhwIzEzMXxgSVA6OnNhbml0aXplSVAoKWB9XG5cdFx0ICogZnVuY3Rpb24gZnJvbSB0aGUgSVBVdGlscyBsaWJyYXJ5LiAgQWRkcmVzc2VzIGFyZSB2ZXJib3NlLCB1cHBlcmNhc2UsXG5cdFx0ICogbm9ybWFsaXplZCwgYW5kIGV4cGFuZGVkIHRvIDggd29yZHMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBJUHY2IGFkZHJlc3MsIHdpdGggb3Igd2l0aG91dCBDSURSLlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0c2FuaXRpemVJUHY2OiAoYWRkcmVzcykgPT4ge1xuXHRcdFx0YWRkcmVzcyA9IGFkZHJlc3MudHJpbSgpO1xuXHRcdFx0aWYgKGFkZHJlc3MgPT09ICcnKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFtdy51dGlsLmlzSVB2NkFkZHJlc3MoYWRkcmVzcywgdHJ1ZSkpIHtcblx0XHRcdFx0cmV0dXJuIGFkZHJlc3M7IC8vIG5vdGhpbmcgZWxzZSB0byBkbyBmb3IgSVB2NCBhZGRyZXNzZXMgb3IgaW52YWxpZCBvbmVzXG5cdFx0XHR9XG5cdFx0XHQvLyBSZW1vdmUgYW55IHdoaXRlc3BhY2VzLCBjb252ZXJ0IHRvIHVwcGVyIGNhc2Vcblx0XHRcdGFkZHJlc3MgPSBhZGRyZXNzLnRvVXBwZXJDYXNlKCk7XG5cdFx0XHQvLyBFeHBhbmQgemVybyBhYmJyZXZpYXRpb25zXG5cdFx0XHRjb25zdCBhYmJyZXZQb3MgPSBhZGRyZXNzLmluZGV4T2YoJzo6Jyk7XG5cdFx0XHRpZiAoYWJicmV2UG9zID4gLTEpIHtcblx0XHRcdFx0Ly8gV2Uga25vdyB0aGlzIGlzIHZhbGlkIElQdjYuIEZpbmQgdGhlIGxhc3QgaW5kZXggb2YgdGhlXG5cdFx0XHRcdC8vIGFkZHJlc3MgYmVmb3JlIGFueSBDSURSIG51bWJlciAoZS5nLiBcImE6YjpjOjovMjRcIikuXG5cdFx0XHRcdGNvbnN0IENJRFJTdGFydCA9IGFkZHJlc3MuaW5kZXhPZignLycpO1xuXHRcdFx0XHRjb25zdCBhZGRyZXNzRW5kID0gQ0lEUlN0YXJ0ID09PSAtMSA/IGFkZHJlc3MubGVuZ3RoIC0gMSA6IENJRFJTdGFydCAtIDE7XG5cdFx0XHRcdC8vIElmIHRoZSAnOjonIGlzIGF0IHRoZSBiZWdpbm5pbmcuLi5cblx0XHRcdFx0bGV0IHJlcGVhdDtcblx0XHRcdFx0bGV0IGV4dHJhO1xuXHRcdFx0XHRsZXQgcGFkO1xuXHRcdFx0XHRpZiAoYWJicmV2UG9zID09PSAwKSB7XG5cdFx0XHRcdFx0cmVwZWF0ID0gJzA6Jztcblx0XHRcdFx0XHRleHRyYSA9IGFkZHJlc3MgPT09ICc6OicgPyAnMCcgOiAnJzsgLy8gZm9yIHRoZSBhZGRyZXNzICc6Oidcblx0XHRcdFx0XHRwYWQgPSA5OyAvLyA3KzIgKGR1ZSB0byAnOjonKVxuXHRcdFx0XHRcdC8vIElmIHRoZSAnOjonIGlzIGF0IHRoZSBlbmQuLi5cblx0XHRcdFx0fSBlbHNlIGlmIChhYmJyZXZQb3MgPT09IGFkZHJlc3NFbmQgLSAxKSB7XG5cdFx0XHRcdFx0cmVwZWF0ID0gJzowJztcblx0XHRcdFx0XHRleHRyYSA9ICcnO1xuXHRcdFx0XHRcdHBhZCA9IDk7IC8vIDcrMiAoZHVlIHRvICc6OicpXG5cdFx0XHRcdFx0Ly8gSWYgdGhlICc6OicgaXMgaW4gdGhlIG1pZGRsZS4uLlxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlcGVhdCA9ICc6MCc7XG5cdFx0XHRcdFx0ZXh0cmEgPSAnOic7XG5cdFx0XHRcdFx0cGFkID0gODsgLy8gNisyIChkdWUgdG8gJzo6Jylcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCByZXBsYWNlbWVudCA9IHJlcGVhdDtcblx0XHRcdFx0cGFkIC09IGFkZHJlc3Muc3BsaXQoJzonKS5sZW5ndGggLSAxO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHBhZDsgaSsrKSB7XG5cdFx0XHRcdFx0cmVwbGFjZW1lbnQgKz0gcmVwZWF0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlcGxhY2VtZW50ICs9IGV4dHJhO1xuXHRcdFx0XHRhZGRyZXNzID0gYWRkcmVzcy5yZXBsYWNlKCc6OicsIHJlcGxhY2VtZW50KTtcblx0XHRcdH1cblx0XHRcdC8vIFJlbW92ZSBsZWFkaW5nIHplcm9zIGZyb20gZWFjaCBibG9jIGFzIG5lZWRlZFxuXHRcdFx0cmV0dXJuIGFkZHJlc3MucmVwbGFjZSgvKF58OikwKyhbMC05QS1GYS1mXXsxLDR9KS9nLCAnJDEkMicpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBJUCBhZGRyZXNzIGlzIGEgcmFuZ2UuICBKdXN0IGNvbmpvaW5zXG5cdFx0ICogYG13LnV0aWwuaXNJUEFkZHJlc3NgIHdpdGggYW5kIHdpdGhvdXQgdGhlIGBhbGxvd0Jsb2NrYCBvcHRpb24uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gaXBcblx0XHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIGdpdmVuIGEgdmFsaWQgSVAgYWRkcmVzcyByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHRcdCAqL1xuXHRcdGlzUmFuZ2U6IChpcCkgPT4ge1xuXHRcdFx0cmV0dXJuIG13LnV0aWwuaXNJUEFkZHJlc3MoaXAsIHRydWUpICYmICFtdy51dGlsLmlzSVBBZGRyZXNzKGlwKTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIENoZWNrIHRoYXQgYW4gSVAgcmFuZ2UgaXMgd2l0aGluIHRoZSBDSURSIGxpbWl0cy4gIE1vc3QgbGlrZWx5IHRvIGJlIHVzZWZ1bFxuXHRcdCAqIGluIGNvbmp1bmN0aW9uIHdpdGggYHdnUmVsZXZhbnRVc2VyTmFtZWAuICBDSURSIGxpbWl0cyBhcmUgaGFyZGNvZGVkIGFzIC8xNlxuXHRcdCAqIGZvciBJUHY0IGFuZCAvMzIgZm9yIElQdjYuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gaXBcblx0XHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGZvciB2YWxpZCByYW5nZXMgd2l0aGluIHRoZSBDSURSIGxpbWl0cyxcblx0XHQgKiBvdGhlcndpc2UgZmFsc2UgKHJhbmdlcyBvdXRzaWRlIHRoZSBsaW1pdCwgc2luZ2xlIElQcywgbm9uLUlQcykuXG5cdFx0ICovXG5cdFx0dmFsaWRDSURSOiAoaXApID0+IHtcblx0XHRcdGlmIChNb3JlYml0cy5pcC5pc1JhbmdlKGlwKSkge1xuXHRcdFx0XHRjb25zdCBzdWJuZXQgPSBOdW1iZXIucGFyc2VJbnQoaXAubWF0Y2goL1xcLyhcXGR7MSwzfSkkLylbMV0sIDEwKTtcblx0XHRcdFx0aWYgKHN1Ym5ldCkge1xuXHRcdFx0XHRcdC8vIFNob3VsZCBiZSByZWR1bmRhbnRcblx0XHRcdFx0XHRpZiAobXcudXRpbC5pc0lQdjZBZGRyZXNzKGlwLCB0cnVlKSkge1xuXHRcdFx0XHRcdFx0aWYgKHN1Ym5ldCA+PSAzMikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2UgaWYgKHN1Ym5ldCA+PSAxNikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBHZXQgdGhlIC82NCBzdWJuZXQgZm9yIGFuIElQdjYgYWRkcmVzcy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBpcHY2IC0gVGhlIElQdjYgYWRkcmVzcywgd2l0aCBvciB3aXRob3V0IGEgc3VibmV0LlxuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufHN0cmluZ30gLSBGYWxzZSBpZiBub3QgSVB2NiBvciBiaWdnZXIgdGhhbiBhIDY0LFxuXHRcdCAqIG90aGVyd2lzZSB0aGUgKHNhbml0aXplZCkgLzY0IGFkZHJlc3MuXG5cdFx0ICovXG5cdFx0Z2V0NjQ6IChpcHY2KSA9PiB7XG5cdFx0XHRpZiAoIWlwdjYgfHwgIW13LnV0aWwuaXNJUHY2QWRkcmVzcyhpcHY2LCB0cnVlKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzdWJuZXRNYXRjaCA9IGlwdjYubWF0Y2goL1xcLyhcXGR7MSwzfSkkLyk7XG5cdFx0XHRpZiAoc3VibmV0TWF0Y2ggJiYgTnVtYmVyLnBhcnNlSW50KHN1Ym5ldE1hdGNoWzFdLCAxMCkgPCA2NCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRpcHY2ID0gTW9yZWJpdHMuaXAuc2FuaXRpemVJUHY2KGlwdjYpO1xuXHRcdFx0Y29uc3QgaXBSZWdleCA9IC9eKCg/OlswLTlBLUZdezEsNH06KXs0fSkoPzpbMC05QS1GXXsxLDR9Oil7M31bMC05QS1GXXsxLDR9KD86XFwvXFxkezEsM30pPyQvO1xuXHRcdFx0cmV0dXJuIGlwdjYucmVwbGFjZShpcFJlZ2V4LCAnJDEnLmNvbmNhdCgnMDowOjA6MC82NCcpKTtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogSGVscGVyIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIHN0cmluZ3MuXG5cdCAqXG5cdCAqIEBuYW1lc3BhY2UgTW9yZWJpdHMuc3RyaW5nXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKi9cblx0TW9yZWJpdHMuc3RyaW5nID0ge1xuXHRcdC8qKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHRvVXBwZXJDYXNlRmlyc3RDaGFyOiAoc3RyKSA9PiB7XG5cdFx0XHRzdHIgPSBzdHIudG9TdHJpbmcoKTtcblx0XHRcdHJldHVybiBzdHIuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHRvTG93ZXJDYXNlRmlyc3RDaGFyOiAoc3RyKSA9PiB7XG5cdFx0XHRzdHIgPSBzdHIudG9TdHJpbmcoKTtcblx0XHRcdHJldHVybiBzdHIuc2xpY2UoMCwgMSkudG9Mb3dlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEdpdmVzIGFuIGFycmF5IG9mIHN1YnN0cmluZ3Mgb2YgYHN0cmAgLSBzdGFydGluZyB3aXRoIGBzdGFydGAgYW5kXG5cdFx0ICogZW5kaW5nIHdpdGggYGVuZGAgLSB3aGljaCBpcyBub3QgaW4gYHNraXBsaXN0YC4gIEludGVuZGVkIGZvciB1c2Vcblx0XHQgKiBvbiB3aWtpdGV4dCB3aXRoIHRlbXBsYXRlcyBvciBsaW5rcy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RhcnRcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gZW5kXG5cdFx0ICogQHBhcmFtIHsoc3RyaW5nW118c3RyaW5nKX0gW3NraXBsaXN0XVxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmdbXX1cblx0XHQgKiBAdGhyb3dzIElmIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBzdHJpbmdzIGFyZW4ndCBvZiB0aGUgc2FtZSBsZW5ndGguXG5cdFx0ICogQHRocm93cyBJZiBgc2tpcGxpc3RgIGlzbid0IGFuIGFycmF5IG9yIHN0cmluZ1xuXHRcdCAqL1xuXHRcdHNwbGl0V2VpZ2h0ZWRCeUtleXM6IChzdHIsIHN0YXJ0LCBlbmQsIHNraXBsaXN0KSA9PiB7XG5cdFx0XHRpZiAoc3RhcnQubGVuZ3RoICE9PSBlbmQubGVuZ3RoKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignc3RhcnQgbWFya2VyIGFuZCBlbmQgbWFya2VyIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoJyk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgbGV2ZWwgPSAwO1xuXHRcdFx0bGV0IGluaXRpYWwgPSBudWxsO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc2tpcGxpc3QpKSB7XG5cdFx0XHRcdGlmIChza2lwbGlzdCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0c2tpcGxpc3QgPSBbXTtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygc2tpcGxpc3QgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0c2tpcGxpc3QgPSBbc2tpcGxpc3RdO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ25vbi1hcHBsaWNhYmxlIHNraXBsaXN0IHBhcmFtZXRlcicpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygc2tpcGxpc3QpIHtcblx0XHRcdFx0XHRpZiAoc3RyLnNsaWNlKGksIGkgKyBlbGVtZW50Lmxlbmd0aCkgPT09IGVsZW1lbnQpIHtcblx0XHRcdFx0XHRcdGkgKz0gZWxlbWVudC5sZW5ndGggLSAxO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzdHIuc2xpY2UoaSwgaSArIHN0YXJ0Lmxlbmd0aCkgPT09IHN0YXJ0KSB7XG5cdFx0XHRcdFx0aWYgKGluaXRpYWwgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdGluaXRpYWwgPSBpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQrK2xldmVsO1xuXHRcdFx0XHRcdGkgKz0gc3RhcnQubGVuZ3RoIC0gMTtcblx0XHRcdFx0fSBlbHNlIGlmIChzdHIuc2xpY2UoaSwgaSArIGVuZC5sZW5ndGgpID09PSBlbmQpIHtcblx0XHRcdFx0XHQtLWxldmVsO1xuXHRcdFx0XHRcdGkgKz0gZW5kLmxlbmd0aCAtIDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFsZXZlbCAmJiBpbml0aWFsICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0cmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gc3RyLnNsaWNlKGluaXRpYWwsIGkgKyAxKTtcblx0XHRcdFx0XHRpbml0aWFsID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEZvcm1hdHMgZnJlZWZvcm0gXCJyZWFzb25cIiAoZnJvbSBhIHRleHRhcmVhKSBmb3IgZGVsZXRpb24vb3RoZXJcblx0XHQgKiB0ZW1wbGF0ZXMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgc3Vic3RpdHV0ZWQsIChlLmcuIFBST0QsIFhGRCwgUlBQKS5cblx0XHQgKiBIYW5kbGVzIGB8YCBvdXRzaWRlIGEgbm93aWtpIHRhZy5cblx0XHQgKiBPcHRpb25hbGx5LCBhbHNvIGFkZHMgYSBzaWduYXR1cmUgaWYgbm90IHByZXNlbnQgYWxyZWFkeS5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFthZGRTaWddXG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRmb3JtYXRSZWFzb25UZXh0OiAoc3RyLCBhZGRTaWcpID0+IHtcblx0XHRcdGxldCByZWFzb24gPSAoc3RyIHx8ICcnKS50b1N0cmluZygpLnRyaW0oKTtcblx0XHRcdGNvbnN0IHVuYmluZGVyID0gbmV3IE1vcmViaXRzLnVuYmluZGVyKHJlYXNvbik7XG5cdFx0XHR1bmJpbmRlci51bmJpbmQoJzxubycuY29uY2F0KCd3aWtpJywgJz4nKSwgJzwvbm8nLmNvbmNhdCgnd2lraScsICc+JykpO1xuXHRcdFx0dW5iaW5kZXIuY29udGVudCA9IHVuYmluZGVyLmNvbnRlbnQucmVwbGFjZSgvXFx8L2csICd7eycuY29uY2F0KCdzdWJzdDonLCAnIX19JykpO1xuXHRcdFx0cmVhc29uID0gdW5iaW5kZXIucmViaW5kKCk7XG5cdFx0XHRpZiAoYWRkU2lnKSB7XG5cdFx0XHRcdGNvbnN0IHNpZyA9ICd+ficuY29uY2F0KCd+ficpO1xuXHRcdFx0XHRjb25zdCBzaWdJbmRleCA9IHJlYXNvbi5sYXN0SW5kZXhPZihzaWcpO1xuXHRcdFx0XHRpZiAoc2lnSW5kZXggPT09IC0xIHx8IHNpZ0luZGV4ICE9PSByZWFzb24ubGVuZ3RoIC0gc2lnLmxlbmd0aCkge1xuXHRcdFx0XHRcdHJlYXNvbiArPSBgICR7c2lnfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiByZWFzb24udHJpbSgpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRm9ybWF0cyBhIFwicmVhc29uXCIgKGZyb20gYSB0ZXh0YXJlYSkgZm9yIGluY2x1c2lvbiBpbiBhIHVzZXJzcGFjZVxuXHRcdCAqIGxvZy4gIFJlcGxhY2VzIG5ld2xpbmVzIHdpdGgge3tQYn19LCBhbmQgYWRkcyBhbiBleHRyYSBgI2AgYmVmb3JlXG5cdFx0ICogbGlzdCBpdGVtcyBmb3IgcHJvcGVyIGZvcm1hdHRpbmcuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRmb3JtYXRSZWFzb25Gb3JMb2c6IChzdHIpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHN0clxuXHRcdFx0XHRcdC8vIGhhbmRsZSBsaW5lIGJyZWFrcywgd2hpY2ggb3RoZXJ3aXNlIGJyZWFrIG51bWJlcmluZ1xuXHRcdFx0XHRcdC5yZXBsYWNlKC9cXG4rL2csICd7e3BifX0nKVxuXHRcdFx0XHRcdC8vIHB1dCBhbiBleHRyYSAjIGluIGZyb250IGJlZm9yZSBidWxsZXRlZCBvciBudW1iZXJlZCBsaXN0IGl0ZW1zXG5cdFx0XHRcdFx0LnJlcGxhY2UoL14oIyspL2dtLCAnIyQxJylcblx0XHRcdFx0XHQucmVwbGFjZSgvXihcXCorKS9nbSwgJyMkMScpXG5cdFx0XHQpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogTGlrZSBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKClgLCBidXQgZXNjYXBlcyBhbnkgZG9sbGFyIHNpZ25zIGluXG5cdFx0ICogdGhlIHJlcGxhY2VtZW50IHN0cmluZy4gIFVzZWZ1bCB3aGVuIHRoZSB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIGlzXG5cdFx0ICogYXJiaXRyYXJ5LCBzdWNoIGFzIGEgdXNlcm5hbWUgb3IgZnJlZWZvcm0gdXNlciBpbnB1dCwgYW5kIGNvdWxkXG5cdFx0ICogY29udGFpbiBkb2xsYXIgc2lnbnMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIC0gVGV4dCBpbiB3aGljaCB0byByZXBsYWNlLlxuXHRcdCAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHApfSBwYXR0ZXJuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50XG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRzYWZlUmVwbGFjZTogKHN0cmluZywgcGF0dGVybiwgcmVwbGFjZW1lbnQpID0+IHtcblx0XHRcdHJldHVybiBzdHJpbmcucmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC5yZXBsYWNlKC9cXCQvZywgJyQkJCQnKSk7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBEZXRlcm1pbmUgaWYgdGhlIHVzZXItcHJvdmlkZWQgZXhwaXJhdGlvbiB3aWxsIGJlIGNvbnNpZGVyZWQgYW5cblx0XHQgKiBpbmZpbml0ZS1sZW5ndGggYnkgTVcuXG5cdFx0ICpcblx0XHQgKiBAc2VlIHtAbGluayBodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDY4NjQ2fVxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGV4cGlyeVxuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHRcdCAqL1xuXHRcdGlzSW5maW5pdHk6IChleHBpcnkpID0+IHtcblx0XHRcdHJldHVybiBbJ2luZGVmaW5pdGUnLCAnaW5maW5pdHknLCAnaW5maW5pdGUnLCAnbmV2ZXInXS5pbmNsdWRlcyhleHBpcnkpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRXNjYXBlcyBhIHN0cmluZyB0byBiZSB1c2VkIGluIGEgUmVnRXhwLCByZXBsYWNpbmcgc3BhY2VzIGFuZFxuXHRcdCAqIHVuZGVyc2NvcmVzIHdpdGggYFtfIF1gIGFzIHRoZXkgYXJlIG9mdGVuIGVxdWl2YWxlbnQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFN0cmluZyB0byBiZSBlc2NhcGVkLlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGVzY2FwZWQgdGV4dC5cblx0XHQgKi9cblx0XHRlc2NhcGVSZWdFeHA6ICh0ZXh0KSA9PiB7XG5cdFx0XHRyZXR1cm4gbXcudXRpbC5lc2NhcGVSZWdFeHAodGV4dCkucmVwbGFjZSgvIHxfL2csICdbXyBdJyk7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBmb3JtYXRUaW1lXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0geyp9IHRpbWUgVGhlIHN0cmluZyB0byBmb3JhbXRcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGZvcm1hdFRpbWU6ICh0aW1lKSA9PiB7XG5cdFx0XHRsZXQgbTtcblx0XHRcdGlmICgobSA9IHRpbWUubWF0Y2goL15cXHMqKFxcZCspXFxzKnNlYyhvbmQpP3M/XFxzKiQvKSkgIT09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuIGAke21bMV1956eSYDtcblx0XHRcdH1cblx0XHRcdGlmICgobSA9IHRpbWUubWF0Y2goL15cXHMqKFxcZCspXFxzKm1pbih1dGUpP3M/XFxzKiQvKSkgIT09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuIGAke21bMV195YiGYDtcblx0XHRcdH1cblx0XHRcdGlmICgobSA9IHRpbWUubWF0Y2goL15cXHMqKFxcZCspXFxzKmhvdXJzP1xccyokLykpICE9PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBtWzFdICsgd2luZG93LndnVUxTKCflsI/ml7YnLCAn5bCP5pmCJyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoKG0gPSB0aW1lLm1hdGNoKC9eXFxzKihcXGQrKVxccypkYXlzP1xccyokLykpICE9PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBgJHttWzFdfeWkqWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAoKG0gPSB0aW1lLm1hdGNoKC9eXFxzKihcXGQrKVxccyp3ZWVrcz9cXHMqJC8pKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gbVsxXSArIHdpbmRvdy53Z1VMUygn5ZGoJywgJ+mAsScpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKChtID0gdGltZS5tYXRjaCgvXlxccyooXFxkKylcXHMqbW9udGhzP1xccyokLykpICE9PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBtWzFdICsgd2luZG93LndnVUxTKCfkuKrmnIgnLCAn5YCL5pyIJyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoKG0gPSB0aW1lLm1hdGNoKC9eXFxzKihcXGQrKVxccyp5ZWFycz9cXHMqJC8pKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gYCR7bVsxXX3lubRgO1xuXHRcdFx0fVxuXHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHRpbWUudHJpbSgpKSkge1xuXHRcdFx0XHRyZXR1cm4gd2luZG93LndnVUxTKCfml6DpmZDmnJ8nLCAn54Sh6ZmQ5pyfJyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGltZTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEFwcGVuZCBwdW5jdHVhdGlvbiB0byBhIHN0cmluZyB3aGVuIGl0J3MgbWlzc2luZ1xuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHN0clxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBwdW5jdHVhdGlvblxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0YXBwZW5kUHVuY3R1YXRpb246IChzdHIsIHB1bmN0dWF0aW9uKSA9PiB7XG5cdFx0XHRpZiAocHVuY3R1YXRpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRwdW5jdHVhdGlvbiA9ICfjgIInO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0ci5zZWFyY2goL1suPyE744CC77yf77yB77ybXSQvKSA9PT0gLTEpIHtcblx0XHRcdFx0c3RyICs9IHB1bmN0dWF0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHN0cjtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogSGVscGVyIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIGFycmF5cy5cblx0ICpcblx0ICogQG5hbWVzcGFjZSBNb3JlYml0cy5hcnJheVxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICovXG5cdE1vcmViaXRzLmFycmF5ID0ge1xuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZSBkdXBsaWNhdGVkIGl0ZW1zIGZyb20gYW4gYXJyYXkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0FycmF5fSBhcnJcblx0XHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgY29weSBvZiB0aGUgYXJyYXkgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQuXG5cdFx0ICogQHRocm93cyBXaGVuIHByb3ZpZGVkIGEgbm9uLWFycmF5LlxuXHRcdCAqL1xuXHRcdHVuaXE6IChhcnIpID0+IHtcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Egbm9uLWFycmF5IG9iamVjdCBwYXNzZWQgdG8gTW9yZWJpdHMuYXJyYXkudW5pcScpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFyci5maWx0ZXIoKGl0ZW0sIGlkeCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYXJyLmluZGV4T2YoaXRlbSkgPT09IGlkeDtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlIG5vbi1kdXBsaWNhdGVkIGl0ZW1zIGZyb20gYW4gYXJyYXkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0FycmF5fSBhcnJcblx0XHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgY29weSBvZiB0aGUgYXJyYXkgd2l0aCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgZWFjaCB2YWx1ZVxuXHRcdCAqIHJlbW92ZWQ7IHN1YnNlcXVlbnQgaW5zdGFuY2VzIG9mIHRob3NlIHZhbHVlcyAoZHVwbGljYXRlcykgcmVtYWluLlxuXHRcdCAqIEB0aHJvd3MgV2hlbiBwcm92aWRlZCBhIG5vbi1hcnJheS5cblx0XHQgKi9cblx0XHRkdXBzOiAoYXJyKSA9PiB7XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdBIG5vbi1hcnJheSBvYmplY3QgcGFzc2VkIHRvIE1vcmViaXRzLmFycmF5LmR1cHMnKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBhcnIuZmlsdGVyKChpdGVtLCBpZHgpID0+IHtcblx0XHRcdFx0cmV0dXJuIGFyci5pbmRleE9mKGl0ZW0pICE9PSBpZHg7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEJyZWFrIHVwIGFuIGFycmF5IGludG8gc21hbGxlciBhcnJheXMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0FycmF5fSBhcnJcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAtIFNpemUgb2YgZWFjaCBjaHVuayAoZXhjZXB0IHRoZSBsYXN0LCB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQpLlxuXHRcdCAqIEByZXR1cm5zIHtBcnJheVtdfSBBbiBhcnJheSBjb250YWluaW5nIHRoZSBzbWFsbGVyLCBjaHVua2VkIGFycmF5cy5cblx0XHQgKiBAdGhyb3dzIFdoZW4gcHJvdmlkZWQgYSBub24tYXJyYXkuXG5cdFx0ICovXG5cdFx0Y2h1bms6IChhcnIsIHNpemUpID0+IHtcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Egbm9uLWFycmF5IG9iamVjdCBwYXNzZWQgdG8gTW9yZWJpdHMuYXJyYXkuY2h1bmsnKTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicgfHwgc2l6ZSA8PSAwKSB7XG5cdFx0XHRcdC8vIHByZXR0eSBpbXBvc3NpYmxlIHRvIGRvIGFueXRoaW5nIDopXG5cdFx0XHRcdHJldHVybiBbYXJyXTsgLy8gd2UgcmV0dXJuIGFuIGFycmF5IGNvbnNpc3Rpbmcgb2YgdGhpcyBhcnJheS5cblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgbnVtQ2h1bmtzID0gTWF0aC5jZWlsKGFyci5sZW5ndGggLyBzaXplKTtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IEFycmF5LmZyb20oe1xuXHRcdFx0XHRsZW5ndGg6IG51bUNodW5rcyxcblx0XHRcdH0pO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBudW1DaHVua3M7IGkrKykge1xuXHRcdFx0XHRyZXN1bHRbaV0gPSBhcnIuc2xpY2UoaSAqIHNpemUsIChpICsgMSkgKiBzaXplKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fSxcblx0fTtcblx0LyoqXG5cdCAqIFV0aWxpdGllcyB0byBlbmhhbmNlIHNlbGVjdDIgbWVudXMuIFNlZSB0d2lua2xld2FybiwgdHdpbmtsZWJsb2NrXG5cdCAqIGZvciBzYW1wbGUgdXNhZ2VzLlxuXHQgKlxuXHQgKiBAc2VlIHtAbGluayBodHRwczovL3NlbGVjdDIub3JnL31cblx0ICpcblx0ICogQG5hbWVzcGFjZSBNb3JlYml0cy5zZWxlY3QyXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKiBAcmVxdWlyZXMganF1ZXJ5LnNlbGVjdDJcblx0ICovXG5cdE1vcmViaXRzLnNlbGVjdDIgPSB7XG5cdFx0bWF0Y2hlcnM6IHtcblx0XHRcdC8qKlxuXHRcdFx0ICogQ3VzdG9tIG1hdGNoZXIgaW4gd2hpY2ggaWYgdGhlIG9wdGdyb3VwIG5hbWUgbWF0Y2hlcywgYWxsIG9wdGlvbnMgaW4gdGhhdFxuXHRcdFx0ICogZ3JvdXAgYXJlIHNob3duLCBsaWtlIGluIGpxdWVyeS5jaG9zZW4uXG5cdFx0XHQgKlxuXHRcdFx0ICogQHBhcmFtIHsqfSBwYXJhbXNcblx0XHRcdCAqIEBwYXJhbSB7Kn0gZGF0YVxuXHRcdFx0ICovXG5cdFx0XHRvcHRncm91cEZ1bGw6IChwYXJhbXMsIGRhdGEpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3JpZ2luYWxNYXRjaGVyID0gJC5mbi5zZWxlY3QyLmRlZmF1bHRzLmRlZmF1bHRzLm1hdGNoZXI7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsTWF0Y2hlcihwYXJhbXMsIGRhdGEpO1xuXHRcdFx0XHRpZiAocmVzdWx0ICYmIHBhcmFtcy50ZXJtICYmIGRhdGEudGV4dC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHBhcmFtcy50ZXJtLnRvVXBwZXJDYXNlKCkpKSB7XG5cdFx0XHRcdFx0cmVzdWx0LmNoaWxkcmVuID0gZGF0YS5jaGlsZHJlbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogQ3VzdG9tIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB3b3JkcyBvbmx5LlxuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7Kn0gcGFyYW1zXG5cdFx0XHQgKiBAcGFyYW0geyp9IGRhdGFcblx0XHRcdCAqL1xuXHRcdFx0d29yZEJlZ2lubmluZzogKHBhcmFtcywgZGF0YSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvcmlnaW5hbE1hdGNoZXIgPSAkLmZuLnNlbGVjdDIuZGVmYXVsdHMuZGVmYXVsdHMubWF0Y2hlcjtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gb3JpZ2luYWxNYXRjaGVyKHBhcmFtcywgZGF0YSk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQhcGFyYW1zLnRlcm0gfHxcblx0XHRcdFx0XHQocmVzdWx0ICYmIG5ldyBSZWdFeHAoYFxcXFxiJHttdy51dGlsLmVzY2FwZVJlZ0V4cChwYXJhbXMudGVybSl9YCwgJ2knKS50ZXN0KHJlc3VsdC50ZXh0KSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH0sXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBVbmRlcmxpbmUgbWF0Y2hlZCBwYXJ0IG9mIG9wdGlvbnMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0geyp9IGRhdGFcblx0XHQgKi9cblx0XHRoaWdobGlnaHRTZWFyY2hNYXRjaGVzOiAoZGF0YSkgPT4ge1xuXHRcdFx0Y29uc3Qgc2VhcmNoVGVybSA9IE1vcmViaXRzLnNlbGVjdDJTZWFyY2hRdWVyeTtcblx0XHRcdGlmICghc2VhcmNoVGVybSB8fCBkYXRhLmxvYWRpbmcpIHtcblx0XHRcdFx0cmV0dXJuIGRhdGEudGV4dDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGlkeCA9IGRhdGEudGV4dC50b1VwcGVyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGVybS50b1VwcGVyQ2FzZSgpKTtcblx0XHRcdGlmIChpZHggPCAwKSB7XG5cdFx0XHRcdHJldHVybiBkYXRhLnRleHQ7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gJCgnPHNwYW4+JykuYXBwZW5kKFxuXHRcdFx0XHRkYXRhLnRleHQuc2xpY2UoMCwgaWR4KSxcblx0XHRcdFx0JCgnPHNwYW4+Jylcblx0XHRcdFx0XHQuY3NzKCd0ZXh0LWRlY29yYXRpb24nLCAndW5kZXJsaW5lJylcblx0XHRcdFx0XHQudGV4dChkYXRhLnRleHQuc2xpY2UoaWR4LCBpZHggKyBzZWFyY2hUZXJtLmxlbmd0aCkpLFxuXHRcdFx0XHRkYXRhLnRleHQuc2xpY2UoaWR4ICsgc2VhcmNoVGVybS5sZW5ndGgpXG5cdFx0XHQpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogSW50ZXJjZXB0IHF1ZXJ5IGFzIGl0IGlzIGhhcHBlbmluZywgZm9yIHVzZSBpbiBoaWdobGlnaHRTZWFyY2hNYXRjaGVzLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHsqfSBwYXJhbXNcblx0XHQgKi9cblx0XHRxdWVyeUludGVyY2VwdG9yOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRNb3JlYml0cy5zZWxlY3QyU2VhcmNoUXVlcnkgPSBwYXJhbXMgJiYgcGFyYW1zLnRlcm07XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBPcGVuIGRyb3Bkb3duIGFuZCBiZWdpbiBzZWFyY2ggd2hlbiB0aGUgYC5zZWxlY3QyLXNlbGVjdGlvbmAgaGFzXG5cdFx0ICogZm9jdXMgYW5kIGEga2V5IGlzIHByZXNzZWQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2XG5cdFx0ICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3NlbGVjdDIvc2VsZWN0Mi9pc3N1ZXMvMzI3OSNpc3N1ZWNvbW1lbnQtNDQyNTI0MTQ3fVxuXHRcdCAqL1xuXHRcdGF1dG9TdGFydDogKGV2KSA9PiB7XG5cdFx0XHRpZiAoZXYud2hpY2ggPCA0OCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsZXQgdGFyZ2V0ID0gJChldi50YXJnZXQpLmNsb3Nlc3QoJy5zZWxlY3QyLWNvbnRhaW5lcicpO1xuXHRcdFx0aWYgKCF0YXJnZXQubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRhcmdldCA9IHRhcmdldC5wcmV2KCk7XG5cdFx0XHR0YXJnZXQuc2VsZWN0Mignb3BlbicpO1xuXHRcdFx0Y29uc3Qgc2VhcmNoID0gdGFyZ2V0LmRhdGEoJ3NlbGVjdDInKS5kcm9wZG93bi4kc2VhcmNoIHx8IHRhcmdldC5kYXRhKCdzZWxlY3QyJykuc2VsZWN0aW9uLiRzZWFyY2g7XG5cdFx0XHQvLyBVc2UgRE9NIC5mb2N1cygpIHRvIHdvcmsgYXJvdW5kIGEgalF1ZXJ5IDMuNi4wIHJlZ3Jlc3Npb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9zZWxlY3QyL3NlbGVjdDIvaXNzdWVzLzU5OTMpXG5cdFx0XHRzZWFyY2hbMF0uZm9jdXMoKTtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogVGVtcG9yYXJpbHkgaGlkZSBhIHBhcnQgb2YgYSBzdHJpbmcgd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVzdCBvZiBpdC5cblx0ICogVXNlZCBieSB7QGxpbmsgTW9yZWJpdHMud2lraXRleHQucGFnZSNjb21tZW50T3V0SW1hZ2V8TW9yZWJpdHMud2lraXRleHQucGFnZS5jb21tZW50T3V0SW1hZ2V9LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICogQGNsYXNzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBUaGUgaW5pdGlhbCB0ZXh0IHRvIHByb2Nlc3MuXG5cdCAqIEBleGFtcGxlIGNvbnN0IHUgPSBuZXcgTW9yZWJpdHMudW5iaW5kZXIoJ0hlbGxvIHdvcmxkIDwhLS0gd29ybGQgLS0+IHdvcmxkJyk7XG5cdCAqIHUudW5iaW5kKCc8IS0tJywgJy0tPicpOyAvLyB0ZXh0IGluc2lkZSBjb21tZW50IHJlbWFpbnMgaW50YWN0XG5cdCAqIHUuY29udGVudCA9IHUuY29udGVudC5yZXBsYWNlKC93b3JsZC9nLCAnZWFydGgnKTtcblx0ICogdS5yZWJpbmQoKTsgLy8gZ2l2ZXMgJ0hlbGxvIGVhcnRoIDwhLS0gd29ybGQgLS0+IGVhcnRoJ1xuXHQgKi9cblx0TW9yZWJpdHMudW5iaW5kZXIgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG5cdFx0aWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBzdHJpbmcnKTtcblx0XHR9XG5cdFx0LyoqIFRoZSB0ZXh0IGJlaW5nIHByb2Nlc3NlZC4gKi9cblx0XHR0aGlzLmNvbnRlbnQgPSBzdHJpbmc7XG5cdFx0dGhpcy5jb3VudGVyID0gMDtcblx0XHR0aGlzLmhpc3RvcnkgPSB7fTtcblx0XHR0aGlzLnByZWZpeCA9IGAlVU5JUTo6JHtNYXRoLnJhbmRvbSgpfTo6YDtcblx0XHR0aGlzLnBvc3RmaXggPSAnOjpVTklRJSc7XG5cdH07XG5cdE1vcmViaXRzLnVuYmluZGVyLnByb3RvdHlwZSA9IHtcblx0XHQvKipcblx0XHQgKiBIaWRlIHRoZSByZWdpb24gZW5jYXBzdWxhdGVkIGJ5IHRoZSBgcHJlZml4YCBhbmQgYHBvc3RmaXhgIGZyb21cblx0XHQgKiBzdHJpbmcgcHJvY2Vzc2luZy4gIGBwcmVmaXhgIGFuZCBgcG9zdGZpeGAgd2lsbCBiZSB1c2VkIGluIGFcblx0XHQgKiBSZWdFeHAsIHNvIGl0ZW1zIHRoYXQgbmVlZCBlc2NhcGluZyBzaG91bGQgYmUgdXNlIGBcXFxcYC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXhcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcG9zdGZpeFxuXHRcdCAqIEB0aHJvd3MgSWYgZWl0aGVyIGBwcmVmaXhgIG9yIGBwb3N0Zml4YCBpcyBtaXNzaW5nLlxuXHRcdCAqL1xuXHRcdHVuYmluZChwcmVmaXgsIHBvc3RmaXgpIHtcblx0XHRcdGlmICghcHJlZml4IHx8ICFwb3N0Zml4KSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignQm90aCBwcmVmaXggYW5kIHBvc3RmaXggbXVzdCBiZSBwcm92aWRlZCcpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmUgPSBuZXcgUmVnRXhwKGAke3ByZWZpeH0oW1xcXFxzXFxcXFNdKj8pJHtwb3N0Zml4fWAsICdnJyk7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNvbnRlbnQucmVwbGFjZShyZSwgTW9yZWJpdHMudW5iaW5kZXIuZ2V0Q2FsbGJhY2sodGhpcykpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogUmVzdG9yZSB0aGUgaGlkZGVuIHBvcnRpb24gb2YgdGhlIGBjb250ZW50YCBzdHJpbmcuXG5cdFx0ICpcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcHJvY2Vzc2VkIG91dHB1dC5cblx0XHQgKi9cblx0XHRyZWJpbmQoKSB7XG5cdFx0XHRsZXQge2NvbnRlbnR9ID0gdGhpcztcblx0XHRcdGZvciAoY29uc3QgY3VycmVudCBpbiB0aGlzLmhpc3RvcnkpIHtcblx0XHRcdFx0aWYgKCFPYmplY3QuaGFzT3duKHRoaXMuaGlzdG9yeSwgY3VycmVudCkpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250ZW50ID0gY29udGVudC5yZXBsYWNlKGN1cnJlbnQsIHRoaXMuaGlzdG9yeVtjdXJyZW50XSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY29udGVudDtcblx0XHR9LFxuXHRcdHByZWZpeDogbnVsbCxcblx0XHQvLyAlVU5JUTo6MC41OTU1OTgxNjQ0OTM4MzI0Ojpcblx0XHRwb3N0Zml4OiBudWxsLFxuXHRcdC8vIDo6VU5JUSVcblx0XHRjb250ZW50OiBudWxsLFxuXHRcdC8vIHN0cmluZ1xuXHRcdGNvdW50ZXI6IG51bGwsXG5cdFx0Ly8gMCsrXG5cdFx0aGlzdG9yeTogbnVsbCwgLy8ge31cblx0fTtcblx0LyoqXG5cdCAqIEBwYXJhbSB7dHlwZW9mIE1vcmViaXRzfSBzZWxmXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy51bmJpbmRlclxuXHQgKi9cblx0TW9yZWJpdHMudW5iaW5kZXIuZ2V0Q2FsbGJhY2sgPSAoc2VsZikgPT4ge1xuXHRcdHJldHVybiAobWF0Y2gpID0+IHtcblx0XHRcdGNvbnN0IGN1cnJlbnQgPSBzZWxmLnByZWZpeCArIHNlbGYuY291bnRlciArIHNlbGYucG9zdGZpeDtcblx0XHRcdHNlbGYuaGlzdG9yeVtjdXJyZW50XSA9IG1hdGNoO1xuXHRcdFx0KytzZWxmLmNvdW50ZXI7XG5cdFx0XHRyZXR1cm4gY3VycmVudDtcblx0XHR9O1xuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLmRhdGUgKioqKioqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogQ3JlYXRlIGEgZGF0ZSBvYmplY3Qgd2l0aCBlbmhhbmNlZCBwcm9jZXNzaW5nIGNhcGFiaWxpdGllcywgYSBsYVxuXHQgKiB7QGxpbmsgaHR0cHM6Ly9tb21lbnRqcy5jb20vfG1vbWVudC5qc30uIE1lZGlhV2lraSB0aW1lc3RhbXAgZm9ybWF0IGlzIGFsc29cblx0ICogYWNjZXB0YWJsZSwgaW4gYWRkaXRpb24gdG8gZXZlcnl0aGluZyB0aGF0IEpTIERhdGUoKSBhY2NlcHRzLlxuXHQgKlxuXHQgKiBAcGFyYW0gey4uLmFueX0gYXJnc1xuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICogQGNsYXNzXG5cdCAqL1xuXHRNb3JlYml0cy5kYXRlID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHQvLyBDaGVjayBNZWRpYVdpa2kgZm9ybWF0c1xuXHRcdC8vIE11c3QgYmUgZmlyc3Qgc2luY2UgZmlyZWZveCBlcnJvbmVvdXNseSBhY2NlcHRzIHRoZSB0aW1lc3RhbXBcblx0XHQvLyBmb3JtYXQsIHNhbnMgdGltZXpvbmUgKFNlZSBhbHNvOiAjOTIxLCAjOTM2LCAjMTE3NCwgIzExODcpLCBhbmQgdGhlXG5cdFx0Ly8gMTQtZGlnaXQgc3RyaW5nIHdpbGwgYmUgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkuXG5cdFx0aWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCBbcGFyYW1dID0gYXJncztcblx0XHRcdGlmICgvXlxcZHsxNH0kLy50ZXN0KHBhcmFtKSkge1xuXHRcdFx0XHQvLyBZWVlZTU1EREhIbW1zc1xuXHRcdFx0XHRjb25zdCBkaWdpdE1hdGNoID0gLyhcXGR7NH0pKFxcZHsyfSkoXFxkezJ9KShcXGR7Mn0pKFxcZHsyfSkoXFxkezJ9KS8uZXhlYyhwYXJhbSk7XG5cdFx0XHRcdGlmIChkaWdpdE1hdGNoKSB7XG5cdFx0XHRcdFx0Ly8gLi4uLi4geWVhciAuLi4gbW9udGggLi4gZGF0ZSAuLi4gaG91ciAuLi4uIG1pbnV0ZSAuLi4uLiBzZWNvbmRcblx0XHRcdFx0XHR0aGlzLl9kID0gbmV3IERhdGUoXG5cdFx0XHRcdFx0XHRSZWZsZWN0LmFwcGx5KERhdGUuVVRDLCBudWxsLCBbXG5cdFx0XHRcdFx0XHRcdGRpZ2l0TWF0Y2hbMV0sXG5cdFx0XHRcdFx0XHRcdGRpZ2l0TWF0Y2hbMl0gLSAxLFxuXHRcdFx0XHRcdFx0XHRkaWdpdE1hdGNoWzNdLFxuXHRcdFx0XHRcdFx0XHRkaWdpdE1hdGNoWzRdLFxuXHRcdFx0XHRcdFx0XHRkaWdpdE1hdGNoWzVdLFxuXHRcdFx0XHRcdFx0XHRkaWdpdE1hdGNoWzZdLFxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0Ly8gV2lraXRleHQgc2lnbmF0dXJlIHRpbWVzdGFtcFxuXHRcdFx0XHRjb25zdCBkYXRlUGFydHMgPSBNb3JlYml0cy5sMTBuLnNpZ25hdHVyZVRpbWVzdGFtcEZvcm1hdChwYXJhbSk7XG5cdFx0XHRcdGlmIChkYXRlUGFydHMpIHtcblx0XHRcdFx0XHR0aGlzLl9kID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgZGF0ZVBhcnRzKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gVHJ5IHN0YW5kYXJkIGRhdGVcblx0XHR0aGlzLl9kID8/PSBuZXcgKEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KERhdGUsIFtEYXRlLCAuLi5nZW5lcmF0ZUFycmF5KGFyZ3MpXSkpKCk7XG5cdFx0Ly8gU3RpbGwgbm8/XG5cdFx0aWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuXHRcdFx0bXcubG9nLndhcm4oJ0ludmFsaWQgTW9yZWJpdHMuZGF0ZSBpbml0aWFsaXNhdGlvbjonLCBhcmdzKTtcblx0XHR9XG5cdH07XG5cdC8qKlxuXHQgKiBMb2NhbGl6ZWQgc3RyaW5ncyBmb3IgZGF0ZSBwcm9jZXNzaW5nLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMuZGF0ZVxuXHQgKiBAdHlwZSB7b2JqZWN0LjxzdHJpbmcsIHN0cmluZz59XG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IG1vbnRoc1xuXHQgKiBAcHJvcGVydHkge3N0cmluZ1tdfSBtb250aHNTaG9ydFxuXHQgKiBAcHJvcGVydHkge3N0cmluZ1tdfSBkYXlzXG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGRheXNTaG9ydFxuXHQgKiBAcHJvcGVydHkge29iamVjdC48c3RyaW5nLCBzdHJpbmc+fSByZWxhdGl2ZVRpbWVzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEgPSB7XG5cdFx0Ly8gbWVzc2FnZSBuYW1lcyBoZXJlIGNvcnJlc3BvbmQgdG8gTWVkaWFXaWtpIG1lc3NhZ2UgbmFtZXNcblx0XHQvLyBObyBpMThuIGF0IHRoaXMgdGltZVxuXHRcdG1vbnRoczogWycx5pyIJywgJzLmnIgnLCAnM+aciCcsICc05pyIJywgJzXmnIgnLCAnNuaciCcsICc35pyIJywgJzjmnIgnLCAnOeaciCcsICcxMOaciCcsICcxMeaciCcsICcxMuaciCddLFxuXHRcdG1vbnRoc1Nob3J0OiBbJzHmnIgnLCAnMuaciCcsICcz5pyIJywgJzTmnIgnLCAnNeaciCcsICc25pyIJywgJzfmnIgnLCAnOOaciCcsICc55pyIJywgJzEw5pyIJywgJzEx5pyIJywgJzEy5pyIJ10sXG5cdFx0ZGF5czogWyfmmJ/mnJ/ml6UnLCAn5pif5pyf5LiAJywgJ+aYn+acn+S6jCcsICfmmJ/mnJ/kuIknLCAn5pif5pyf5ZubJywgJ+aYn+acn+S6lCcsICfmmJ/mnJ/lha0nXSxcblx0XHRkYXlzU2hvcnQ6IFsn5pelJywgJ+S4gCcsICfkuownLCAn5LiJJywgJ+WbmycsICfkupQnLCAn5YWtJ10sXG5cdFx0cmVsYXRpdmVUaW1lczoge1xuXHRcdFx0dGhpc0RheTogJ1vku4rlpKldQSBoaDptbScsXG5cdFx0XHRwcmV2RGF5OiAnW+aYqOWkqV1BIGhoOm1tJyxcblx0XHRcdG5leHREYXk6ICdb5piO5aSpXUEgaGg6bW0nLFxuXHRcdFx0dGhpc1dlZWs6ICdkZGRkQSBoaDptbScsXG5cdFx0XHRwYXN0V2VlazogJ1vkuIpdZGRkZEEgaGg6bW0nLFxuXHRcdFx0b3RoZXI6ICdZWVlZLU1NLUREJyxcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogTWFwIHVuaXRzIHdpdGggZ2V0dGVyL3NldHRlciBmdW5jdGlvbiBuYW1lcywgZm9yIGBhZGRgIGFuZCBgc3VidHJhY3RgXG5cdCAqIG1ldGhvZHMuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5kYXRlXG5cdCAqIEB0eXBlIHtvYmplY3QuPHN0cmluZywgc3RyaW5nPn1cblx0ICogQHByb3BlcnR5IHtzdHJpbmd9IHNlY29uZHNcblx0ICogQHByb3BlcnR5IHtzdHJpbmd9IG1pbnV0ZXNcblx0ICogQHByb3BlcnR5IHtzdHJpbmd9IGhvdXJzXG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYXlzXG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3ZWVrc1xuXHQgKiBAcHJvcGVydHkge3N0cmluZ30gbW9udGhzXG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB5ZWFyc1xuXHQgKi9cblx0TW9yZWJpdHMuZGF0ZS51bml0TWFwID0ge1xuXHRcdHNlY29uZHM6ICdTZWNvbmRzJyxcblx0XHRtaW51dGVzOiAnTWludXRlcycsXG5cdFx0aG91cnM6ICdIb3VycycsXG5cdFx0ZGF5czogJ0RhdGUnLFxuXHRcdHdlZWtzOiAnV2VlaycsXG5cdFx0Ly8gTm90IGEgZnVuY3Rpb24gYnV0IGhhbmRsZWQgaW4gYGFkZGAgdGhyb3VnaCBjdW5uaW5nIHVzZSBvZiBtdWx0aXBsaWNhdGlvblxuXHRcdG1vbnRoczogJ01vbnRoJyxcblx0XHR5ZWFyczogJ0Z1bGxZZWFyJyxcblx0fTtcblx0TW9yZWJpdHMuZGF0ZS5wcm90b3R5cGUgPSB7XG5cdFx0LyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuXHRcdGlzVmFsaWQoKSB7XG5cdFx0XHRyZXR1cm4gIU51bWJlci5pc05hTih0aGlzLmdldFRpbWUoKSk7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBAcGFyYW0geyhEYXRlfE1vcmViaXRzLmRhdGUpfSBkYXRlXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdFx0ICovXG5cdFx0aXNCZWZvcmUoZGF0ZSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0VGltZSgpIDwgZGF0ZS5nZXRUaW1lKCk7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBAcGFyYW0geyhEYXRlfE1vcmViaXRzLmRhdGUpfSBkYXRlXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdFx0ICovXG5cdFx0aXNBZnRlcihkYXRlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRUaW1lKCkgPiBkYXRlLmdldFRpbWUoKTtcblx0XHR9LFxuXHRcdC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuXHRcdGdldFVUQ01vbnRoTmFtZSgpIHtcblx0XHRcdHJldHVybiBNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEubW9udGhzW3RoaXMuZ2V0VVRDTW9udGgoKV07XG5cdFx0fSxcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gKi9cblx0XHRnZXRVVENNb250aE5hbWVBYmJyZXYoKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLm1vbnRoc1Nob3J0W3RoaXMuZ2V0VVRDTW9udGgoKV07XG5cdFx0fSxcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gKi9cblx0XHRnZXRNb250aE5hbWUoKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLm1vbnRoc1t0aGlzLmdldE1vbnRoKCldO1xuXHRcdH0sXG5cdFx0LyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG5cdFx0Z2V0TW9udGhOYW1lQWJicmV2KCkge1xuXHRcdFx0cmV0dXJuIE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5tb250aHNTaG9ydFt0aGlzLmdldE1vbnRoKCldO1xuXHRcdH0sXG5cdFx0LyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG5cdFx0Z2V0VVRDRGF5TmFtZSgpIHtcblx0XHRcdHJldHVybiBNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEuZGF5c1t0aGlzLmdldFVUQ0RheSgpXTtcblx0XHR9LFxuXHRcdC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuXHRcdGdldFVUQ0RheU5hbWVBYmJyZXYoKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLmRheXNTaG9ydFt0aGlzLmdldFVUQ0RheSgpXTtcblx0XHR9LFxuXHRcdC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuXHRcdGdldERheU5hbWUoKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLmRheXNbdGhpcy5nZXREYXkoKV07XG5cdFx0fSxcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gKi9cblx0XHRnZXREYXlOYW1lQWJicmV2KCkge1xuXHRcdFx0cmV0dXJuIE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5kYXlzU2hvcnRbdGhpcy5nZXREYXkoKV07XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBBZGQgYSBnaXZlbiBudW1iZXIgb2YgbWludXRlcywgaG91cnMsIGRheXMsIHdlZWtzLCBtb250aHMsIG9yIHllYXJzIHRvIHRoZSBkYXRlLlxuXHRcdCAqIFRoaXMgaXMgZG9uZSBpbi1wbGFjZS4gVGhlIG1vZGlmaWVkIGRhdGUgb2JqZWN0IGlzIGFsc28gcmV0dXJuZWQsIGFsbG93aW5nIGNoYWluaW5nLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciAtIFNob3VsZCBiZSBhbiBpbnRlZ2VyLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB1bml0XG5cdFx0ICogQHRocm93cyBJZiBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIHVuaXQgaXMgZ2l2ZW4uXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLmRhdGV9XG5cdFx0ICovXG5cdFx0YWRkKG51bWJlciwgdW5pdCkge1xuXHRcdFx0bGV0IG51bSA9IE51bWJlci5wYXJzZUludChudW1iZXIsIDEwKTsgLy8gbm9ybWFsaXplXG5cdFx0XHRpZiAoTnVtYmVyLmlzTmFOKG51bSkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBudW1iZXIgXCIke251bWJlcn1cIiBwcm92aWRlZC5gKTtcblx0XHRcdH1cblx0XHRcdHVuaXQgPSB1bml0LnRvTG93ZXJDYXNlKCk7IC8vIG5vcm1hbGl6ZVxuXHRcdFx0Y29uc3Qge3VuaXRNYXB9ID0gTW9yZWJpdHMuZGF0ZTtcblx0XHRcdGxldCB1bml0Tm9ybSA9IHVuaXRNYXBbdW5pdF0gfHwgdW5pdE1hcFtgJHt1bml0fXNgXTsgLy8gc28gdGhhdCBib3RoIHNpbmd1bGFyIGFuZCAgcGx1cmFsIGZvcm1zIHdvcmtcblx0XHRcdGlmICh1bml0Tm9ybSkge1xuXHRcdFx0XHQvLyBObyBidWlsdC1pbiB3ZWVrIGZ1bmN0aW9ucywgc28gcmF0aGVyIHRoYW4gYnVpbGQgb3V0IElTTydzIGdldFdlZWsvc2V0V2VlaywganVzdCBtdWx0aXBseVxuXHRcdFx0XHQvLyBQcm9iYWJseSBjYW4ndCBiZSB1c2VkIGZvciBKdWxpYW4tPkdyZWdvcmlhbiBjaGFuZ2VvdmVycywgZXRjLlxuXHRcdFx0XHRpZiAodW5pdE5vcm0gPT09ICdXZWVrJykge1xuXHRcdFx0XHRcdHVuaXROb3JtID0gJ0RhdGUnO1xuXHRcdFx0XHRcdG51bSAqPSA3O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXNbYHNldCR7dW5pdE5vcm19YF0odGhpc1tgZ2V0JHt1bml0Tm9ybX1gXSgpICsgbnVtKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdCBcIiR7dW5pdH1cIjogT25seSAke09iamVjdC5rZXlzKHVuaXRNYXApLmpvaW4oJywgJyl9IGFyZSBhbGxvd2VkLmApO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU3VidHJhY3RzIGEgZ2l2ZW4gbnVtYmVyIG9mIG1pbnV0ZXMsIGhvdXJzLCBkYXlzLCB3ZWVrcywgbW9udGhzLCBvciB5ZWFycyB0byB0aGUgZGF0ZS5cblx0XHQgKiBUaGlzIGlzIGRvbmUgaW4tcGxhY2UuIFRoZSBtb2RpZmllZCBkYXRlIG9iamVjdCBpcyBhbHNvIHJldHVybmVkLCBhbGxvd2luZyBjaGFpbmluZy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgLSBTaG91bGQgYmUgYW4gaW50ZWdlci5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdW5pdFxuXHRcdCAqIEB0aHJvd3MgSWYgaW52YWxpZCBvciB1bnN1cHBvcnRlZCB1bml0IGlzIGdpdmVuLlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy5kYXRlfVxuXHRcdCAqL1xuXHRcdHN1YnRyYWN0KG51bWJlciwgdW5pdCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYWRkKC1udW1iZXIsIHVuaXQpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRm9ybWF0IHRoZSBkYXRlIGludG8gYSBzdHJpbmcgcGVyIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLlxuXHRcdCAqIFJlcGxhY2VtZW50IHN5bnRheCBpcyBhIHN1YnNldCBvZiB0aGF0IGluIG1vbWVudC5qczpcblx0XHQgKlxuXHRcdCAqIHwgU3ludGF4IHwgT3V0cHV0IHxcblx0XHQgKiB8LS0tLS0tLS18LS0tLS0tLS18XG5cdFx0ICogfCBIIHwgSG91cnMgKDI0LWhvdXIpIHxcblx0XHQgKiB8IEhIIHwgSG91cnMgKDI0LWhvdXIsIHBhZGRlZCB0byAyIGRpZ2l0cykgfFxuXHRcdCAqIHwgaCB8IEhvdXJzICgxMi1ob3VyKSB8XG5cdFx0ICogfCBoaCB8IEhvdXJzICgxMi1ob3VyLCBwYWRkZWQgdG8gMiBkaWdpdHMpIHxcblx0XHQgKiB8IEEgfCBBTSBvciBQTSB8XG5cdFx0ICogfCBtIHwgTWludXRlcyB8XG5cdFx0ICogfCBtbSB8IE1pbnV0ZXMgKHBhZGRlZCB0byAyIGRpZ2l0cykgfFxuXHRcdCAqIHwgcyB8IFNlY29uZHMgfFxuXHRcdCAqIHwgc3MgfCBTZWNvbmRzIChwYWRkZWQgdG8gMiBkaWdpdHMpIHxcblx0XHQgKiB8IFNTUyB8IE1pbGxpc2Vjb25kcyBmcmFnbWVudCwgMyBkaWdpdHMgfFxuXHRcdCAqIHwgZCB8IERheSBudW1iZXIgb2YgdGhlIHdlZWsgKFN1bj0wKSB8XG5cdFx0ICogfCBkZGQgfCBBYmJyZXZpYXRlZCBkYXkgbmFtZSB8XG5cdFx0ICogfCBkZGRkIHwgRnVsbCBkYXkgbmFtZSB8XG5cdFx0ICogfCBEIHwgRGF0ZSB8XG5cdFx0ICogfCBERCB8IERhdGUgKHBhZGRlZCB0byAyIGRpZ2l0cykgfFxuXHRcdCAqIHwgTSB8IE1vbnRoIG51bWJlciAoMS1pbmRleGVkKSB8XG5cdFx0ICogfCBNTSB8IE1vbnRoIG51bWJlciAoMS1pbmRleGVkLCBwYWRkZWQgdG8gMiBkaWdpdHMpIHxcblx0XHQgKiB8IE1NTSB8IEFiYnJldmlhdGVkIG1vbnRoIG5hbWUgfFxuXHRcdCAqIHwgTU1NTSB8IEZ1bGwgbW9udGggbmFtZSB8XG5cdFx0ICogfCBZIHwgWWVhciB8XG5cdFx0ICogfCBZWSB8IEZpbmFsIHR3byBkaWdpdHMgb2YgeWVhciAoMjAgZm9yIDIwMjAsIDQyIGZvciAxOTQyKSB8XG5cdFx0ICogfCBZWVlZIHwgWWVhciAoc2FtZSBhcyBgWWApIHxcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRzdHIgLSBGb3JtYXQgdGhlIGRhdGUgaW50byBhIHN0cmluZywgdXNpbmdcblx0XHQgKiB0aGUgcmVwbGFjZW1lbnQgc3ludGF4LiAgVXNlIGBbYCBhbmQgYF1gIHRvIGVzY2FwZSBpdGVtcy4gIElmIG5vdFxuXHRcdCAqIHByb3ZpZGVkLCB3aWxsIHJldHVybiB0aGUgSVNPLTg2MDEtZm9ybWF0dGVkIHN0cmluZy5cblx0XHQgKiBAcGFyYW0geyhzdHJpbmd8bnVtYmVyKX0gW3pvbmU9c3lzdGVtXSAtIGBzeXN0ZW1gIChmb3IgYnJvd3Nlci1kZWZhdWx0IHRpbWUgem9uZSksXG5cdFx0ICogYHV0Y2AsIG9yIHNwZWNpZnkgYSB0aW1lIHpvbmUgYXMgbnVtYmVyIG9mIG1pbnV0ZXMgcmVsYXRpdmUgdG8gVVRDLlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Zm9ybWF0KGZvcm1hdHN0ciwgem9uZSkge1xuXHRcdFx0aWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuXHRcdFx0XHRyZXR1cm4gJ0ludmFsaWQgZGF0ZSc7IC8vIFB1dCB0aGUgdHJ1dGggb3V0LCBwcmVmZXJhYmxlIHRvIFwiTmFOTmFOTmFuIE5hTjpOYU5cIiBvciB3aGF0ZXZlclxuXHRcdFx0fVxuXG5cdFx0XHRsZXQgdWRhdGUgPSB0aGlzO1xuXHRcdFx0Ly8gY3JlYXRlIGEgbmV3IGRhdGUgb2JqZWN0IHRoYXQgd2lsbCBjb250YWluIHRoZSBkYXRlIHRvIGRpc3BsYXkgYXMgc3lzdGVtIHRpbWVcblx0XHRcdGlmICh6b25lID09PSAndXRjJykge1xuXHRcdFx0XHR1ZGF0ZSA9IG5ldyBNb3JlYml0cy5kYXRlKHRoaXMuZ2V0VGltZSgpKS5hZGQodGhpcy5nZXRUaW1lem9uZU9mZnNldCgpLCAnbWludXRlcycpO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygem9uZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Ly8gY29udmVydCB0byB1dGMsIHRoZW4gYWRkIHRoZSB1dGMgb2Zmc2V0IGdpdmVuXG5cdFx0XHRcdHVkYXRlID0gbmV3IE1vcmViaXRzLmRhdGUodGhpcy5nZXRUaW1lKCkpLmFkZCh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgKyB6b25lLCAnbWludXRlcycpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gZGVmYXVsdCB0byBJU09TdHJpbmdcblx0XHRcdGlmICghZm9ybWF0c3RyKSB7XG5cdFx0XHRcdHJldHVybiB1ZGF0ZS50b0lTT1N0cmluZygpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFkID0gKG51bSwgbGVuKSA9PiB7XG5cdFx0XHRcdGxlbiB8fD0gMjsgLy8gVXAgdG8gbGVuZ3RoIG9mIDAwICsgMVxuXHRcdFx0XHRyZXR1cm4gYDAwJHtudW19YC50b1N0cmluZygpLnNsaWNlKDAgLSBsZW4pO1xuXHRcdFx0fTtcblx0XHRcdGNvbnN0IGgyNCA9IHVkYXRlLmdldEhvdXJzKCk7XG5cdFx0XHRjb25zdCBtID0gdWRhdGUuZ2V0TWludXRlcygpO1xuXHRcdFx0Y29uc3QgcyA9IHVkYXRlLmdldFNlY29uZHMoKTtcblx0XHRcdGNvbnN0IG1zID0gdWRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XG5cdFx0XHRjb25zdCBEID0gdWRhdGUuZ2V0RGF0ZSgpO1xuXHRcdFx0Y29uc3QgTSA9IHVkYXRlLmdldE1vbnRoKCkgKyAxO1xuXHRcdFx0Y29uc3QgWSA9IHVkYXRlLmdldEZ1bGxZZWFyKCk7XG5cdFx0XHRjb25zdCBoMTIgPSBoMjQgJSAxMiB8fCAxMjtcblx0XHRcdGNvbnN0IGFtT3JQbSA9IGgyNCA+PSAxMiA/ICfkuIvljYgnIDogJ+S4iuWNiCc7XG5cdFx0XHRjb25zdCByZXBsYWNlbWVudE1hcCA9IHtcblx0XHRcdFx0SEg6IHBhZChoMjQpLFxuXHRcdFx0XHRIOiBoMjQsXG5cdFx0XHRcdGhoOiBwYWQoaDEyKSxcblx0XHRcdFx0aDogaDEyLFxuXHRcdFx0XHRBOiBhbU9yUG0sXG5cdFx0XHRcdG1tOiBwYWQobSksXG5cdFx0XHRcdG0sXG5cdFx0XHRcdHNzOiBwYWQocyksXG5cdFx0XHRcdHMsXG5cdFx0XHRcdFNTUzogcGFkKG1zLCAzKSxcblx0XHRcdFx0ZGRkZDogdWRhdGUuZ2V0RGF5TmFtZSgpLFxuXHRcdFx0XHRkZGQ6IHVkYXRlLmdldERheU5hbWVBYmJyZXYoKSxcblx0XHRcdFx0ZDogdWRhdGUuZ2V0RGF5KCksXG5cdFx0XHRcdEREOiBwYWQoRCksXG5cdFx0XHRcdEQsXG5cdFx0XHRcdE1NTU06IHVkYXRlLmdldE1vbnRoTmFtZSgpLFxuXHRcdFx0XHRNTU06IHVkYXRlLmdldE1vbnRoTmFtZUFiYnJldigpLFxuXHRcdFx0XHRNTTogcGFkKE0pLFxuXHRcdFx0XHRNLFxuXHRcdFx0XHRZWVlZOiBZLFxuXHRcdFx0XHRZWTogcGFkKFkgJSAxMDApLFxuXHRcdFx0XHRZLFxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IHVuYmluZGVyID0gbmV3IE1vcmViaXRzLnVuYmluZGVyKGZvcm1hdHN0cik7IC8vIGVzY2FwZSBzdHVmZiBiZXR3ZWVuIFsuLi5dXG5cdFx0XHR1bmJpbmRlci51bmJpbmQoU3RyaW5nLnJhd2BcXFtgLCBTdHJpbmcucmF3YFxcXWApO1xuXHRcdFx0dW5iaW5kZXIuY29udGVudCA9IHVuYmluZGVyLmNvbnRlbnQucmVwbGFjZShcblx0XHRcdFx0LyogUmVnZXggbm90ZXM6XG5cdFx0XHRcdCAqIGQoZHsyLDN9KT8gbWF0Y2hlcyBleGFjdGx5IDEsIDMgb3IgNCBvY2N1cnJlbmNlcyBvZiAnZCcgKCdkZCcgaXMgdHJlYXRlZCBhcyBhIGRvdWJsZSBtYXRjaCBvZiAnZCcpXG5cdFx0XHRcdCAqIFl7MSwyfShZezJ9KT8gbWF0Y2hlcyBleGFjdGx5IDEsIDIgb3IgNCBvY2N1cnJlbmNlcyBvZiAnWSdcblx0XHRcdFx0ICovXG5cdFx0XHRcdC9IezEsMn18aHsxLDJ9fG17MSwyfXxzezEsMn18U1NTfGQoZHsyLDN9KT98RHsxLDJ9fE17MSw0fXxZezEsMn0oWXsyfSk/fEEvZyxcblx0XHRcdFx0KG1hdGNoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlcGxhY2VtZW50TWFwW21hdGNoXTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB1bmJpbmRlci5yZWJpbmQoKS5yZXBsYWNlKC9cXFsoLio/KVxcXS9nLCAnJDEnKTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEdpdmVzIGEgcmVhZGFibGUgcmVsYXRpdmUgdGltZSBzdHJpbmcgc3VjaCBhcyBcIlllc3RlcmRheSBhdCA2OjQzIFBNXCIgb3IgXCJMYXN0IFRodXJzZGF5IGF0IDExOjQ1IEFNXCIuXG5cdFx0ICogU2ltaWxhciB0byBgY2FsZW5kYXJgIGluIG1vbWVudC5qcywgYnV0IHdpdGggdGltZSB6b25lIHN1cHBvcnQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0geyhzdHJpbmd8bnVtYmVyKX0gW3pvbmU9c3lzdGVtXSAtICdzeXN0ZW0nIChmb3IgYnJvd3Nlci1kZWZhdWx0IHRpbWUgem9uZSksXG5cdFx0ICogJ3V0YycgKGZvciBVVEMpLCBvciBzcGVjaWZ5IGEgdGltZSB6b25lIGFzIG51bWJlciBvZiBtaW51dGVzIHBhc3QgVVRDLlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Y2FsZW5kYXIoem9uZSkge1xuXHRcdFx0Ly8gWmVybyBvdXQgdGhlIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgLSBrZWVwaW5nIG9ubHkgdGhlIGRhdGU7XG5cdFx0XHQvLyBmaW5kIHRoZSBkaWZmZXJlbmNlLiBOb3RlIHRoYXQgc2V0SG91cnMoKSByZXR1cm5zIHRoZSBzYW1lIHRoaW5nIGFzIGdldFRpbWUoKS5cblx0XHRcdGNvbnN0IGRhdGVEaWZmID0gKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkgLSBuZXcgRGF0ZSh0aGlzKS5zZXRIb3VycygwLCAwLCAwLCAwKSkgLyA4LjY0ZTc7XG5cdFx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRcdFx0Y2FzZSBkYXRlRGlmZiA9PT0gMDpcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5mb3JtYXQoTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLnJlbGF0aXZlVGltZXMudGhpc0RheSwgem9uZSk7XG5cdFx0XHRcdGNhc2UgZGF0ZURpZmYgPT09IDE6XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0KE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5yZWxhdGl2ZVRpbWVzLnByZXZEYXksIHpvbmUpO1xuXHRcdFx0XHRjYXNlIGRhdGVEaWZmID4gMCAmJiBkYXRlRGlmZiA8IDc6XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0KE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5yZWxhdGl2ZVRpbWVzLnBhc3RXZWVrLCB6b25lKTtcblx0XHRcdFx0Y2FzZSBkYXRlRGlmZiA9PT0gLTE6XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0KE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5yZWxhdGl2ZVRpbWVzLm5leHREYXksIHpvbmUpO1xuXHRcdFx0XHRjYXNlIGRhdGVEaWZmIDwgMCAmJiBkYXRlRGlmZiA+IC03OlxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmZvcm1hdChNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEucmVsYXRpdmVUaW1lcy50aGlzV2Vlaywgem9uZSk7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0KE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5yZWxhdGl2ZVRpbWVzLm90aGVyLCB6b25lKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEdldCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgd2lraXRleHQgc2VjdGlvbiB0aXRsZXMsIHN1Y2hcblx0XHQgKiBhcyBgPT1EZWNlbWJlciAyMDE5PT1gIG9yIGA9PT0gSmFuIDIwMTggPT09YC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtSZWdFeHB9XG5cdFx0ICovXG5cdFx0bW9udGhIZWFkZXJSZWdleCgpIHtcblx0XHRcdHJldHVybiBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgXig9PSspXFxcXHMqJHt0aGlzLmdldFVUQ0Z1bGxZZWFyKCl95bm0KD86JHt0aGlzLmdldFVUQ01vbnRoTmFtZSgpfXwke3RoaXMuZ2V0VVRDTW9udGhOYW1lQWJicmV2KCl9KVxcXFxzKlxcXFwxYCxcblx0XHRcdFx0J21nJ1xuXHRcdFx0KTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIENyZWF0ZXMgYSB3aWtpdGV4dCBzZWN0aW9uIGhlYWRlciB3aXRoIHRoZSBtb250aCBhbmQgeWVhci5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7bnVtYmVyfSBbbGV2ZWw9Ml0gLSBIZWFkZXIgbGV2ZWwuICBQYXNzIDAgZm9yIGp1c3QgdGhlIHRleHRcblx0XHQgKiB3aXRoIG5vIHdpa2l0ZXh0IG1hcmtlcnMgKD09KS5cblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdG1vbnRoSGVhZGVyKGxldmVsKSB7XG5cdFx0XHQvLyBEZWZhdWx0IHRvIDIsIGJ1dCBhbGxvdyBmb3IgMCBvciBzdHJpbmd5IG51bWJlcnNcblx0XHRcdGxldmVsID0gTnVtYmVyLnBhcnNlSW50KGxldmVsLCAxMCk7XG5cdFx0XHRsZXZlbCA9IE51bWJlci5pc05hTihsZXZlbCkgPyAyIDogbGV2ZWw7XG5cdFx0XHRjb25zdCBoZWFkZXIgPSAnPScucmVwZWF0KGxldmVsKTtcblx0XHRcdGNvbnN0IHRleHQgPSBgJHt0aGlzLmdldFVUQ0Z1bGxZZWFyKCl95bm0JHt0aGlzLmdldFVUQ01vbnRoTmFtZSgpfWA7XG5cdFx0XHRpZiAoaGVhZGVyLmxlbmd0aCkge1xuXHRcdFx0XHQvLyB3aWtpdGV4dC1mb3JtYXR0ZWQgaGVhZGVyXG5cdFx0XHRcdHJldHVybiBgJHtoZWFkZXJ9ICR7dGV4dH0gJHtoZWFkZXJ9YDtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0ZXh0OyAvLyBKdXN0IHRoZSBzdHJpbmdcblx0XHR9LFxuXHR9O1xuXHQvLyBBbGxvdyBuYXRpdmUgRGF0ZS5wcm90b3R5cGUgbWV0aG9kcyB0byBiZSB1c2VkIG9uIE1vcmViaXRzLmRhdGUgb2JqZWN0c1xuXHRmb3IgKGNvbnN0IGZ1bmMgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoRGF0ZS5wcm90b3R5cGUpKSB7XG5cdFx0Ly8gRXhjbHVkZSBtZXRob2RzIHRoYXQgY29sbGlkZSB3aXRoIFBhZ2VUcmlhZ2UncyBEYXRlLmpzIGV4dGVybmFsLCB3aGljaCBjbG9iYmVycyBuYXRpdmUgRGF0ZVxuXHRcdGlmICghWydhZGQnLCAnZ2V0RGF5TmFtZScsICdnZXRNb250aE5hbWUnXS5pbmNsdWRlcyhmdW5jKSkge1xuXHRcdFx0TW9yZWJpdHMuZGF0ZS5wcm90b3R5cGVbZnVuY10gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fZFtmdW5jXSguLi5hcmdzKTtcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cdC8qICoqKioqKioqKioqKioqKiogTW9yZWJpdHMud2lraSAqKioqKioqKioqKioqKioqICovXG5cdC8qKlxuXHQgKiBWYXJpb3VzIG9iamVjdHMgZm9yIHdpa2kgZWRpdGluZyBhbmQgQVBJIGFjY2VzcywgaW5jbHVkaW5nXG5cdCAqIHtAbGluayBNb3JlYml0cy53aWtpLmFwaX0gYW5kIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2V9LlxuXHQgKlxuXHQgKiBAbmFtZXNwYWNlIE1vcmViaXRzLndpa2lcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzXG5cdCAqL1xuXHRNb3JlYml0cy53aWtpID0ge307XG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCBhcyBvZiBOb3ZlbWJlciAyMDIwXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0TW9yZWJpdHMud2lraS5pc1BhZ2VSZWRpcmVjdCA9ICgpID0+IHtcblx0XHRjb25zb2xlLndhcm4oXG5cdFx0XHQnW01vcmViaXRzXSBOT1RFOiBNb3JlYml0cy53aWtpLmlzUGFnZVJlZGlyZWN0IGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZSBNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCBpbnN0ZWFkLidcblx0XHQpO1xuXHRcdHJldHVybiBNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpO1xuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkICoqKioqKioqKioqKioqKiogKi9cblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpXG5cdCAqIEB0eXBlIHtudW1iZXJ9XG5cdCAqL1xuXHRNb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQgPSAwO1xuXHQvKipcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLndpa2lcblx0ICogQHR5cGUge251bWJlcn1cblx0ICovXG5cdE1vcmViaXRzLndpa2kubmJyT2ZDaGVja3BvaW50c0xlZnQgPSAwO1xuXHQvKipcblx0ICogRGlzcGxheSBtZXNzYWdlIGFuZC9vciByZWRpcmVjdCB0byBwYWdlIHVwb24gY29tcGxldGlvbiBvZiB0YXNrcy5cblx0ICpcblx0ICogRXZlcnkgY2FsbCB0byBNb3JlYml0cy53aWtpLmFwaS5wb3N0KCkgcmVzdWx0cyBpbiB0aGUgZGlzcGF0Y2ggb2YgYW5cblx0ICogYXN5bmNocm9ub3VzIGNhbGxiYWNrLiBFYWNoIGNhbGxiYWNrIGNhbiBpbiB0dXJuIG1ha2UgYW4gYWRkaXRpb25hbCBjYWxsIHRvXG5cdCAqIE1vcmViaXRzLndpa2kuYXBpLnBvc3QoKSB0byBjb250aW51ZSBhIHByb2Nlc3Npbmcgc2VxdWVuY2UuIEF0IHRoZVxuXHQgKiBjb25jbHVzaW9uIG9mIHRoZSBmaW5hbCBjYWxsYmFjayBvZiBhIHByb2Nlc3Npbmcgc2VxdWVuY2UsIGl0IGlzIG5vdFxuXHQgKiBwb3NzaWJsZSB0byBzaW1wbHkgcmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIgYmVjYXVzZSB0aGVyZSBpcyBubyBjYWxsXG5cdCAqIHN0YWNrIGxlYWRpbmcgYmFjayB0byB0aGUgb3JpZ2luYWwgY29udGV4dC4gSW5zdGVhZCxcblx0ICogTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZXZlbnQoKSBpcyBjYWxsZWQgdG8gZGlzcGxheSB0aGUgcmVzdWx0IHRvXG5cdCAqIHRoZSB1c2VyIGFuZCB0byBwZXJmb3JtIGFuIG9wdGlvbmFsIHBhZ2UgcmVkaXJlY3QuXG5cdCAqXG5cdCAqIFRoZSBkZXRlcm1pbmF0aW9uIG9mIHdoZW4gdG8gY2FsbCBNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ldmVudCgpIGlzXG5cdCAqIG1hbmFnZWQgdGhyb3VnaCB0aGUgZ2xvYmFscyBNb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQgYW5kXG5cdCAqIE1vcmViaXRzLndpa2kubmJyT2ZDaGVja3BvaW50c0xlZnQuIE1vcmViaXRzLndpa2kubnVtYmVyT2ZBY3Rpb25zTGVmdCBpc1xuXHQgKiBpbmNyZW1lbnRlZCBhdCB0aGUgc3RhcnQgb2YgZXZlcnkgTW9yZWJpdHMud2lraS5hcGkgY2FsbCBhbmQgZGVjcmVtZW50ZWRcblx0ICogYWZ0ZXIgdGhlIGNvbXBsZXRpb24gb2YgYSBjYWxsYmFjayBmdW5jdGlvbi4gSWYgYSBjYWxsYmFjayBmdW5jdGlvbiBkb2VzXG5cdCAqIG5vdCBjcmVhdGUgYSBuZXcgTW9yZWJpdHMud2lraS5hcGkgb2JqZWN0IGJlZm9yZSBleGl0aW5nLCBpdCBpcyB0aGUgZmluYWxcblx0ICogc3RlcCBpbiB0aGUgcHJvY2Vzc2luZyBjaGFpbiBhbmQgTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZXZlbnQoKSB3aWxsXG5cdCAqIHRoZW4gYmUgY2FsbGVkLlxuXHQgKlxuXHQgKiBPcHRpb25hbGx5LCBjYWxsZXJzIG1heSB1c2UgTW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCkgdG8gaW5kaWNhdGUgdGhhdFxuXHQgKiBwcm9jZXNzaW5nIGlzIG5vdCBjb21wbGV0ZSB1cG9uIHRoZSBjb25jbHVzaW9uIG9mIHRoZSBmaW5hbCBjYWxsYmFja1xuXHQgKiBmdW5jdGlvbi4gIFRoaXMgaXMgdXNlZCBmb3IgYmF0Y2ggb3BlcmF0aW9ucy4gVGhlIGVuZCBvZiBhIGJhdGNoIGlzXG5cdCAqIHNpZ25hbGVkIGJ5IGNhbGxpbmcgTW9yZWJpdHMud2lraS5yZW1vdmVDaGVja3BvaW50KCkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7dHlwZW9mIE1vcmViaXRzfSBzZWxmXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpXG5cdCAqL1xuXHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZCA9IChzZWxmKSA9PiB7XG5cdFx0aWYgKC0tTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0IDw9IDAgJiYgTW9yZWJpdHMud2lraS5uYnJPZkNoZWNrcG9pbnRzTGVmdCA8PSAwKSB7XG5cdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ldmVudChzZWxmKTtcblx0XHR9XG5cdH07XG5cdC8vIENoYW5nZSBwZXIgYWN0aW9uIHdhbnRlZFxuXHQvKiogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kgKi9cblx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZXZlbnQgPSAoKSA9PiB7XG5cdFx0aWYgKE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSkge1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmFjdGlvbkNvbXBsZXRlZChNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UpO1xuXHRcdH1cblx0XHRpZiAoTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QpIHtcblx0XHRcdC8vIGlmIGl0IGlzbid0IGEgVVJMLCBtYWtlIGl0IG9uZS4gVE9ETzogVGhpcyBicmVha3Mgb24gdGhlIGFydGljbGVzICdodHRwOi8vJywgJ2Z0cDovLycsIGFuZCBzaW1pbGFyIG9uZXMuXG5cdFx0XHRpZiAoIS9eXFx3KzpcXC9cXC8vLnRlc3QoTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QpKSB7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbXcudXRpbC5nZXRVcmwoTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QpO1xuXHRcdFx0XHRpZiAoTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgKz0gJz9yZWRpcmVjdD1ubyc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRsb2NhdGlvbiA9IE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0O1xuXHRcdFx0fSwgTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQudGltZU91dCk7XG5cdFx0fVxuXHR9O1xuXHQvKiogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kgKi9cblx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQudGltZU91dCA9XG5cdFx0d2luZG93LndwQWN0aW9uQ29tcGxldGVkVGltZU91dCA9PT0gdW5kZWZpbmVkID8gNTAwMCA6IHdpbmRvdy53cEFjdGlvbkNvbXBsZXRlZFRpbWVPdXQ7XG5cdC8qKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraSAqL1xuXHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG51bGw7XG5cdC8qKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraSAqL1xuXHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSBudWxsO1xuXHQvKiogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kgKi9cblx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50ID0gKCkgPT4ge1xuXHRcdCsrTW9yZWJpdHMud2lraS5uYnJPZkNoZWNrcG9pbnRzTGVmdDtcblx0fTtcblx0LyoqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpICovXG5cdE1vcmViaXRzLndpa2kucmVtb3ZlQ2hlY2twb2ludCA9ICgpID0+IHtcblx0XHRpZiAoLS1Nb3JlYml0cy53aWtpLm5ick9mQ2hlY2twb2ludHNMZWZ0IDw9IDAgJiYgTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0IDw9IDApIHtcblx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLmV2ZW50KCk7XG5cdFx0fVxuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLndpa2kuYXBpICoqKioqKioqKioqKioqKiogKi9cblx0LyoqXG5cdCAqIEFuIGVhc3kgd2F5IHRvIHRhbGsgdG8gdGhlIE1lZGlhV2lraSBBUEkuICBBY2NlcHRzIGVpdGhlciBqc29uIG9yIHhtbFxuXHQgKiAoZGVmYXVsdCkgZm9ybWF0czsgaWYganNvbiBpcyBzZWxlY3RlZCwgd2lsbCBkZWZhdWx0IHRvIGBmb3JtYXR2ZXJzaW9uPTJgXG5cdCAqIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLiAgU2ltaWxhcmx5LCBlbmZvcmNlcyBuZXdlciBgZXJyb3Jmb3JtYXRgcyxcblx0ICogZGVmYXVsdGluZyB0byBgaHRtbGAgaWYgdW5zcGVjaWZpZWQuICBgdXNlbGFuZ2AgZW5mb3JjZWQgdG8gdGhlIHdpa2knc1xuXHQgKiBjb250ZW50IGxhbmd1YWdlLlxuXHQgKlxuXHQgKiBJbiBuZXcgY29kZSwgdGhlIHVzZSBvZiB0aGUgbGFzdCAzIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGF2b2lkZWQsIGluc3RlYWRcblx0ICogdXNlIHtAbGluayBNb3JlYml0cy53aWtpLmFwaSNzZXRTdGF0dXNFbGVtZW50fHNldFN0YXR1c0VsZW1lbnQoKX0gdG8gYmluZFxuXHQgKiB0aGUgc3RhdHVzIGVsZW1lbnQgKGlmIG5lZWRlZCkgYW5kIHVzZSBgLnRoZW4oKWAgb3IgYC5jYXRjaCgpYCBvbiB0aGVcblx0ICogcHJvbWlzZSByZXR1cm5lZCBieSBgcG9zdCgpYCwgcmF0aGVyIHRoYW4gc3BlY2lmeSB0aGUgYG9uU3VjY2Vzc2Agb3Jcblx0ICogYG9uRmFpbHVyZWAgY2FsbGJhY2tzLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraVxuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRBY3Rpb24gLSBUaGUgY3VycmVudCBhY3Rpb24gKHJlcXVpcmVkKS5cblx0ICogQHBhcmFtIHtPYmplY3R9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IChyZXF1aXJlZCkuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvblN1Y2Nlc3NdIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWwuXG5cdCAqIEBwYXJhbSB7TW9yZWJpdHMuc3RhdHVzfSBbc3RhdHVzRWxlbWVudF0gLSBBIE1vcmViaXRzLnN0YXR1cyBvYmplY3QgdG8gdXNlIGZvciBzdGF0dXMgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvbkVycm9yXSAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIGlmIGFuIGVycm9yIG9jY3Vycy5cblx0ICovXG5cdE1vcmViaXRzLndpa2kuYXBpID0gZnVuY3Rpb24gKGN1cnJlbnRBY3Rpb24sIHF1ZXJ5LCBvblN1Y2Nlc3MsIHN0YXR1c0VsZW1lbnQsIG9uRXJyb3IpIHtcblx0XHR0aGlzLmN1cnJlbnRBY3Rpb24gPSBjdXJyZW50QWN0aW9uO1xuXHRcdHRoaXMucXVlcnkgPSBxdWVyeTtcblx0XHR0aGlzLnF1ZXJ5LmFzc2VydCA9ICd1c2VyJztcblx0XHQvLyBFbmZvcmNlIG5ld2VyIGVycm9yIGZvcm1hdHMsIHByZWZlcnJpbmcgaHRtbFxuXHRcdGlmICghcXVlcnkuZXJyb3Jmb3JtYXQgfHwgIVsnd2lraXRleHQnLCAncGxhaW50ZXh0J10uaW5jbHVkZXMocXVlcnkuZXJyb3Jmb3JtYXQpKSB7XG5cdFx0XHR0aGlzLnF1ZXJ5LmVycm9yZm9ybWF0ID0gJ2h0bWwnO1xuXHRcdH1cblx0XHQvLyBFeHBsaWNpdGx5IHVzZSB0aGUgd2lraSdzIGNvbnRlbnQgbGFuZ3VhZ2UgdG8gbWluaW1pemUgY29uZnVzaW9uLFxuXHRcdC8vIHNlZSAjMTE3OSBmb3IgZGlzY3Vzc2lvblxuXHRcdHRoaXMucXVlcnkudXNlbGFuZyB8fD0gJ2NvbnRlbnQnOyAvLyBVc2Ugd2dVc2VyTGFuZ3VhZ2UgZm9yIHByZXZpZXdcblx0XHR0aGlzLnF1ZXJ5LmVycm9ybGFuZyA9ICd1c2VsYW5nJztcblx0XHR0aGlzLnF1ZXJ5LmVycm9yc3VzZWxvY2FsID0gMTtcblx0XHR0aGlzLm9uU3VjY2VzcyA9IG9uU3VjY2Vzcztcblx0XHR0aGlzLm9uRXJyb3IgPSBvbkVycm9yO1xuXHRcdGlmIChzdGF0dXNFbGVtZW50KSB7XG5cdFx0XHR0aGlzLnNldFN0YXR1c0VsZW1lbnQoc3RhdHVzRWxlbWVudCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc3RhdGVsZW0gPSBuZXcgTW9yZWJpdHMuc3RhdHVzKGN1cnJlbnRBY3Rpb24pO1xuXHRcdH1cblx0XHQvLyBKU09OIGlzIHVzZWQgdGhyb3VnaG91dCBNb3JlYml0cy9Ud2lua2xlLCBidXQgeG1sIHJlbWFpbnMgdGhlIGRlZmF1bHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0aWYgKCFxdWVyeS5mb3JtYXQpIHtcblx0XHRcdHRoaXMucXVlcnkuZm9ybWF0ID0gJ3htbCc7XG5cdFx0fSBlbHNlIGlmIChxdWVyeS5mb3JtYXQgPT09ICdqc29uJyAmJiAhcXVlcnkuZm9ybWF0dmVyc2lvbikge1xuXHRcdFx0dGhpcy5xdWVyeS5mb3JtYXR2ZXJzaW9uID0gJzInO1xuXHRcdH0gZWxzZSBpZiAoIVsneG1sJywgJ2pzb24nXS5pbmNsdWRlcyhxdWVyeS5mb3JtYXQpKSB7XG5cdFx0XHR0aGlzLnN0YXRlbGVtLmVycm9yKCdJbnZhbGlkIEFQSSBmb3JtYXQ6IG9ubHkgeG1sIGFuZCBqc29uIGFyZSBzdXBwb3J0ZWQuJyk7XG5cdFx0fVxuXHRcdC8vIElnbm9yZSB0YWdzIGZvciBxdWVyaWVzIGFuZCBtb3N0IGNvbW1vbiB1bnN1cHBvcnRlZCBhY3Rpb25zLCBwcm9kdWNlcyB3YXJuaW5nc1xuXHRcdGlmIChxdWVyeS5hY3Rpb24gJiYgWydxdWVyeScsICd3YXRjaCddLmluY2x1ZGVzKHF1ZXJ5LmFjdGlvbikpIHtcblx0XHRcdGRlbGV0ZSBxdWVyeS50YWdzO1xuXHRcdH0gZWxzZSBpZiAoIXF1ZXJ5LnRhZ3MgJiYgbW9yZWJpdHNXaWtpQ2hhbmdlVGFnKSB7XG5cdFx0XHRxdWVyeS50YWdzID0gbW9yZWJpdHNXaWtpQ2hhbmdlVGFnO1xuXHRcdH1cblx0fTtcblx0TW9yZWJpdHMud2lraS5hcGkucHJvdG90eXBlID0ge1xuXHRcdGN1cnJlbnRBY3Rpb246ICcnLFxuXHRcdG9uU3VjY2VzczogbnVsbCxcblx0XHRvbkVycm9yOiBudWxsLFxuXHRcdHBhcmVudDogd2luZG93LFxuXHRcdC8vIHVzZSBnbG9iYWwgY29udGV4dCBpZiB0aGVyZSBpcyBubyBwYXJlbnQgb2JqZWN0XG5cdFx0cXVlcnk6IG51bGwsXG5cdFx0cmVzcG9uc2U6IG51bGwsXG5cdFx0cmVzcG9uc2VYTUw6IG51bGwsXG5cdFx0Ly8gdXNlIGByZXNwb25zZWAgaW5zdGVhZDsgcmV0YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0c3RhdGVsZW06IG51bGwsXG5cdFx0Ly8gdGhpcyBub24tc3RhbmRhcmQgbmFtZSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXHRcdHN0YXR1c1RleHQ6IG51bGwsXG5cdFx0Ly8gcmVzdWx0IHJlY2VpdmVkIGZyb20gdGhlIEFQSSwgbm9ybWFsbHkgXCJzdWNjZXNzXCIgb3IgXCJlcnJvclwiXG5cdFx0ZXJyb3JDb2RlOiBudWxsLFxuXHRcdC8vIHNob3J0IHRleHQgZXJyb3IgY29kZSwgaWYgYW55LCBhcyBkb2N1bWVudGVkIGluIHRoZSBNZWRpYVdpa2kgQVBJXG5cdFx0ZXJyb3JUZXh0OiBudWxsLFxuXHRcdC8vIGZ1bGwgZXJyb3IgZGVzY3JpcHRpb24sIGlmIGFueVxuXHRcdGJhZHRva2VuUmV0cnk6IGZhbHNlLFxuXHRcdC8vIHNldCB0byB0cnVlIGlmIHRoaXMgb24gYSByZXRyeSBhdHRlbXB0ZWQgYWZ0ZXIgYSBiYWR0b2tlbiBlcnJvclxuXHRcdC8qKlxuXHRcdCAqIEtlZXAgdHJhY2sgb2YgcGFyZW50IG9iamVjdCBmb3IgY2FsbGJhY2tzLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHsqfSBwYXJlbnRcblx0XHQgKi9cblx0XHRzZXRQYXJlbnQocGFyZW50KSB7XG5cdFx0XHR0aGlzLnBhcmVudCA9IHBhcmVudDtcblx0XHR9LFxuXHRcdC8qKiBAcGFyYW0ge01vcmViaXRzLnN0YXR1c30gc3RhdHVzRWxlbWVudCAqL1xuXHRcdHNldFN0YXR1c0VsZW1lbnQoc3RhdHVzRWxlbWVudCkge1xuXHRcdFx0dGhpcy5zdGF0ZWxlbSA9IHN0YXR1c0VsZW1lbnQ7XG5cdFx0XHR0aGlzLnN0YXRlbGVtLnN0YXR1cyh0aGlzLmN1cnJlbnRBY3Rpb24pO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogQ2Fycnkgb3V0IHRoZSByZXF1ZXN0LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGNhbGxlckFqYXhQYXJhbWV0ZXJzIC0gRG8gbm90IHNwZWNpZnkgYSBwYXJhbWV0ZXIgdW5sZXNzIHlvdSByZWFsbHlcblx0XHQgKiByZWFsbHkgd2FudCB0byBnaXZlIGpRdWVyeSBzb21lIGV4dHJhIHBhcmFtZXRlcnMuXG5cdFx0ICogQHJldHVybnMge3Byb21pc2V9IC0gQSBqUXVlcnkgcHJvbWlzZSBvYmplY3QgdGhhdCBpcyByZXNvbHZlZCBvciByZWplY3RlZCB3aXRoIHRoZSBhcGkgb2JqZWN0LlxuXHRcdCAqL1xuXHRcdHBvc3QoY2FsbGVyQWpheFBhcmFtZXRlcnMpIHtcblx0XHRcdCsrTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0O1xuXHRcdFx0Y29uc3QgcXVlcnlTdHJpbmdBcnIgPSBbXTtcblx0XHRcdGZvciAoY29uc3QgW2ksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5xdWVyeSkpIHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuXHRcdFx0XHRcdHF1ZXJ5U3RyaW5nQXJyW3F1ZXJ5U3RyaW5nQXJyLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0YCR7ZW5jb2RlVVJJQ29tcG9uZW50KGkpfT0ke3ZhbC5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KS5qb2luKCd8Jyl9YDtcblx0XHRcdFx0fSBlbHNlIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHF1ZXJ5U3RyaW5nQXJyW3F1ZXJ5U3RyaW5nQXJyLmxlbmd0aF0gPSBgJHtlbmNvZGVVUklDb21wb25lbnQoaSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbCl9YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZ0Fyci5qb2luKCcmJykucmVwbGFjZSgvXiguKj8pKFxcYnRva2VuPVteJl0qKSYoLiopLywgJyQxJDMmJDInKTtcblx0XHRcdC8vIHRva2VuIHNob3VsZCBhbHdheXMgYmUgdGhlIGxhc3QgaXRlbSBpbiB0aGUgcXVlcnkgc3RyaW5nIChidWcgVFctQi0wMDEzKVxuXHRcdFx0Y29uc3QgYWpheHBhcmFtcyA9IHtcblx0XHRcdFx0Y29udGV4dDogdGhpcyxcblx0XHRcdFx0dHlwZTogdGhpcy5xdWVyeS5hY3Rpb24gPT09ICdxdWVyeScgPyAnR0VUJyA6ICdQT1NUJyxcblx0XHRcdFx0dXJsOiBtdy51dGlsLndpa2lTY3JpcHQoJ2FwaScpLFxuXHRcdFx0XHRkYXRhOiBxdWVyeVN0cmluZyxcblx0XHRcdFx0ZGF0YVR5cGU6IHRoaXMucXVlcnkuZm9ybWF0LFxuXHRcdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFx0J0FwaS1Vc2VyLUFnZW50JzogbW9yZWJpdHNXaWtpQXBpVXNlckFnZW50LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQuLi5jYWxsZXJBamF4UGFyYW1ldGVycyxcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gJC5hamF4KGFqYXhwYXJhbXMpLnRoZW4oXG5cdFx0XHRcdGZ1bmN0aW9uIG9uQVBJc3VjY2VzcyhyZXNwb25zZSwgc3RhdHVzVGV4dCkge1xuXHRcdFx0XHRcdHRoaXMuc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQ7XG5cdFx0XHRcdFx0dGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuXHRcdFx0XHRcdHRoaXMucmVzcG9uc2VYTUwgPSByZXNwb25zZTtcblx0XHRcdFx0XHQvLyBMaW1pdCB0byBmaXJzdCBlcnJvclxuXHRcdFx0XHRcdGlmICh0aGlzLnF1ZXJ5LmZvcm1hdCA9PT0gJ2pzb24nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmVycm9yQ29kZSA9IHJlc3BvbnNlLmVycm9ycyAmJiByZXNwb25zZS5lcnJvcnNbMF0uY29kZTtcblx0XHRcdFx0XHRcdGlmICh0aGlzLnF1ZXJ5LmVycm9yZm9ybWF0ID09PSAnaHRtbCcpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvclRleHQgPSByZXNwb25zZS5lcnJvcnMgJiYgcmVzcG9uc2UuZXJyb3JzWzBdLmh0bWw7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMucXVlcnkuZXJyb3Jmb3JtYXQgPT09ICd3aWtpdGV4dCcgfHwgdGhpcy5xdWVyeS5lcnJvcmZvcm1hdCA9PT0gJ3BsYWludGV4dCcpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvclRleHQgPSByZXNwb25zZS5lcnJvcnMgJiYgcmVzcG9uc2UuZXJyb3JzWzBdLnRleHQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JDb2RlID0gJChyZXNwb25zZSkuZmluZCgnZXJyb3JzIGVycm9yJykuZXEoMCkuYXR0cignY29kZScpO1xuXHRcdFx0XHRcdFx0Ly8gU3VmZmljaWVudCBmb3IgaHRtbCwgd2lraXRleHQsIG9yIHBsYWludGV4dCBlcnJvcmZvcm1hdHNcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JUZXh0ID0gJChyZXNwb25zZSkuZmluZCgnZXJyb3JzIGVycm9yJykuZXEoMCkudGV4dCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodHlwZW9mIHRoaXMuZXJyb3JDb2RlID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0Ly8gdGhlIEFQSSBkaWRuJ3QgbGlrZSB3aGF0IHdlIHRvbGQgaXQsIGUuZy4sIGJhZCBlZGl0IHRva2VuIG9yIGFuIGVycm9yIGNyZWF0aW5nIGEgcGFnZVxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMucmV0dXJuRXJyb3IoY2FsbGVyQWpheFBhcmFtZXRlcnMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBpbnZva2Ugc3VjY2VzcyBjYWxsYmFjayBpZiBvbmUgd2FzIHN1cHBsaWVkXG5cdFx0XHRcdFx0aWYgKHRoaXMub25TdWNjZXNzKSB7XG5cdFx0XHRcdFx0XHQvLyBzZXQgdGhlIGNhbGxiYWNrIGNvbnRleHQgdG8gdGhpcy5wYXJlbnQgZm9yIG5ldyBjb2RlIGFuZCBzdXBwbHkgdGhlIEFQSSBvYmplY3Rcblx0XHRcdFx0XHRcdC8vIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY2FsbGJhY2sgKGZvciBsZWdhY3kgY29kZSlcblx0XHRcdFx0XHRcdHRoaXMub25TdWNjZXNzLmNhbGwodGhpcy5wYXJlbnQsIHRoaXMpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLnN0YXRlbGVtLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZCgpO1xuXHRcdFx0XHRcdHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZVdpdGgodGhpcy5wYXJlbnQsIFt0aGlzXSk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIG9ubHkgbmV0d29yayBhbmQgc2VydmVyIGVycm9ycyByZWFjaCBoZXJlIC0gY29tcGxhaW50cyBmcm9tIHRoZSBBUEkgaXRzZWxmIGFyZSBjYXVnaHQgaW4gc3VjY2VzcygpXG5cdFx0XHRcdGZ1bmN0aW9uIG9uQVBJZmFpbHVyZShlcnJvciwgc3RhdHVzVGV4dCwgZXJyb3JUaHJvd24pIHtcblx0XHRcdFx0XHR0aGlzLnN0YXR1c1RleHQgPSBzdGF0dXNUZXh0O1xuXHRcdFx0XHRcdHRoaXMuZXJyb3JUaHJvd24gPSBlcnJvclRocm93bjsgLy8gZnJlcXVlbnRseSB1bmRlZmluZWRcblx0XHRcdFx0XHR0aGlzLmVycm9yVGV4dCA9XG5cdFx0XHRcdFx0XHRzdGF0dXNUZXh0ICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6LCD55SoQVBJ5pe25Y+R55Sf5LqG6ZSZ6K+v4oCcJywgJ+WcqOWRvOWPq0FQSeaZgueZvOeUn+S6humMr+iqpOOAjCcpICtcblx0XHRcdFx0XHRcdGVycm9yLnN0YXR1c1RleHQgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3jgIInLCAn44CN44CCJyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMucmV0dXJuRXJyb3IoKTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9LFxuXHRcdHJldHVybkVycm9yKGNhbGxlckFqYXhQYXJhbWV0ZXJzKSB7XG5cdFx0XHRpZiAodGhpcy5lcnJvckNvZGUgPT09ICdiYWR0b2tlbicgJiYgIXRoaXMuYmFkdG9rZW5SZXRyeSkge1xuXHRcdFx0XHR0aGlzLnN0YXRlbGVtLndhcm4od2luZG93LndnVUxTKCfml6DmlYjku6TniYzvvIzojrflj5bmlrDnmoTku6TniYzlubbph43or5XigKbigKYnLCAn54Sh5pWI5qyK5p2W77yM5Y+W5b6X5paw55qE5qyK5p2W5Lim6YeN6Kmm4oCm4oCmJykpO1xuXHRcdFx0XHR0aGlzLmJhZHRva2VuUmV0cnkgPSB0cnVlO1xuXHRcdFx0XHQvLyBHZXQgYSBuZXcgQ1NSRiB0b2tlbiBhbmQgcmV0cnkuIElmIHRoZSBvcmlnaW5hbCBhY3Rpb24gbmVlZHMgYSBkaWZmZXJlbnRcblx0XHRcdFx0Ly8gdHlwZSBvZiBhY3Rpb24gdGhhbiBDU1JGLCB3ZSBkbyBvbmUgcG9pbnRsZXNzIHJldHJ5IGJlZm9yZSBiYWlsaW5nIG91dFxuXHRcdFx0XHRyZXR1cm4gTW9yZWJpdHMud2lraS5hcGkuZ2V0VG9rZW4oKS50aGVuKCh0b2tlbikgPT4ge1xuXHRcdFx0XHRcdHRoaXMucXVlcnkudG9rZW4gPSB0b2tlbjtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5wb3N0KGNhbGxlckFqYXhQYXJhbWV0ZXJzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnN0YXRlbGVtLmVycm9yKGAke3RoaXMuZXJyb3JUZXh0fe+8iCR7dGhpcy5lcnJvckNvZGV977yJYCk7XG5cdFx0XHQvLyBpbnZva2UgZmFpbHVyZSBjYWxsYmFjayBpZiBvbmUgd2FzIHN1cHBsaWVkXG5cdFx0XHRpZiAodGhpcy5vbkVycm9yKSB7XG5cdFx0XHRcdC8vIHNldCB0aGUgY2FsbGJhY2sgY29udGV4dCB0byB0aGlzLnBhcmVudCBmb3IgbmV3IGNvZGUgYW5kIHN1cHBseSB0aGUgQVBJIG9iamVjdFxuXHRcdFx0XHQvLyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNhbGxiYWNrIGZvciBsZWdhY3kgY29kZVxuXHRcdFx0XHR0aGlzLm9uRXJyb3IuY2FsbCh0aGlzLnBhcmVudCwgdGhpcyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBkb24ndCBjb21wbGV0ZSB0aGUgYWN0aW9uIHNvIHRoYXQgdGhlIGVycm9yIHJlbWFpbnMgZGlzcGxheWVkXG5cdFx0XHRyZXR1cm4gJC5EZWZlcnJlZCgpLnJlamVjdFdpdGgodGhpcy5wYXJlbnQsIFt0aGlzXSk7XG5cdFx0fSxcblx0XHRnZXRTdGF0dXNFbGVtZW50KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuc3RhdGVsZW07XG5cdFx0fSxcblx0XHRnZXRFcnJvckNvZGUoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lcnJvckNvZGU7XG5cdFx0fSxcblx0XHRnZXRFcnJvclRleHQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lcnJvclRleHQ7XG5cdFx0fSxcblx0XHRnZXRYTUwoKSB7XG5cdFx0XHQvLyByZXRhaW5lZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHVzZSBnZXRSZXNwb25zZSgpIGluc3RlYWRcblx0XHRcdHJldHVybiB0aGlzLnJlc3BvbnNlWE1MO1xuXHRcdH0sXG5cdFx0Z2V0UmVzcG9uc2UoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5yZXNwb25zZTtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogUmV0cmlldmVzIHdpa2l0ZXh0IGZyb20gYSBwYWdlLiBDYWNoaW5nIGVuYWJsZWQsIGR1cmF0aW9uIDEgZGF5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGVcblx0ICovXG5cdE1vcmViaXRzLndpa2kuZ2V0Q2FjaGVkSnNvbiA9ICh0aXRsZSkgPT4ge1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0cHJvcDogJ3JldmlzaW9ucycsXG5cdFx0XHR0aXRsZXM6IHRpdGxlLFxuXHRcdFx0cnZzbG90czogJ21haW4nLFxuXHRcdFx0cnZwcm9wOiAnY29udGVudCcsXG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdHNtYXhhZ2U6ICczNjAwJyxcblx0XHRcdG1heGFnZTogJzM2MDAnLFxuXHRcdH07XG5cblx0XHRyZXR1cm4gbmV3IE1vcmViaXRzLndpa2kuYXBpKCcnLCBxdWVyeSkucG9zdCgpLnRoZW4oKGFwaW9iaikgPT4ge1xuXHRcdFx0YXBpb2JqLmdldFN0YXR1c0VsZW1lbnQoKS51bmxpbmsoKTtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRjb25zdCB3aWtpdGV4dCA9IHJlc3BvbnNlLnF1ZXJ5LnBhZ2VzWzBdLnJldmlzaW9uc1swXS5zbG90cy5tYWluLmNvbnRlbnQ7XG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZSh3aWtpdGV4dCk7XG5cdFx0fSk7XG5cdH07XG5cdGxldCBtb3JlYml0c1dpa2lBcGlVc2VyQWdlbnQgPSAnUWl1d2VuLzEuMSAobW9yZWJpdHMuanMpJztcblx0LyoqXG5cdCAqIFNldCB0aGUgY3VzdG9tIHVzZXIgYWdlbnQgaGVhZGVyLCB3aGljaCBpcyB1c2VkIGZvciBzZXJ2ZXItc2lkZSBsb2dnaW5nLlxuXHQgKiBOb3RlIHRoYXQgZG9pbmcgc28gd2lsbCBzZXQgdGhlIHVzZXJhZ2VudCBmb3IgZXZlcnkgYE1vcmViaXRzLndpa2kuYXBpYFxuXHQgKiBwcm9jZXNzIHBlcmZvcm1lZCB0aGVyZWFmdGVyLlxuXHQgKlxuXHQgKiBAc2VlIHtAbGluayBodHRwczovL2xpc3RzLndpa2ltZWRpYS5vcmcvcGlwZXJtYWlsL21lZGlhd2lraS1hcGktYW5ub3VuY2UvMjAxNC1Ob3ZlbWJlci8wMDAwNzUuaHRtbH1cblx0ICogZm9yIG9yaWdpbmFsIGFubm91bmNlbWVudC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kuYXBpXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbdWE9UWl1d2VuLzEuMSAobW9yZWJpdHMuanMpXSAtIFVzZXIgYWdlbnQuICBUaGUgZGVmYXVsdFxuXHQgKiB2YWx1ZSBvZiBgbW9yZWJpdHMuanNgIHdpbGwgYmUgYXBwZW5kZWQgdG8gYW55IHByb3ZpZGVkXG5cdCAqIHZhbHVlLlxuXHQgKi9cblx0TW9yZWJpdHMud2lraS5hcGkuc2V0QXBpVXNlckFnZW50ID0gKHVhKSA9PiB7XG5cdFx0bW9yZWJpdHNXaWtpQXBpVXNlckFnZW50ID0gYFFpdXdlbi8xLjEgKG1vcmViaXRzLmpzJHt1YSA/IGA7ICR7dWF9YCA6ICcnfSlgO1xuXHR9O1xuXHQvKipcblx0ICogQ2hhbmdlL3JldmlzaW9uIHRhZyBhcHBsaWVkIHRvIE1vcmViaXRzIGFjdGlvbnMgd2hlbiBubyBvdGhlciB0YWdzIGFyZSBzcGVjaWZpZWQuXG5cdCAqIFVudXNlZCBieSBkZWZhdWx0LlxuXHQgKlxuXHQgKiBAY29uc3RhbnRcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kuYXBpXG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqL1xuXHRjb25zdCBtb3JlYml0c1dpa2lDaGFuZ2VUYWcgPSAnJztcblx0LyoqXG5cdCAqIEdldCBhIG5ldyBDU1JGIHRva2VuIG9uIGVuY291bnRlcmluZyB0b2tlbiBlcnJvcnMuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpLmFwaVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBNZWRpYVdpa2kgQ1NSRiB0b2tlbi5cblx0ICovXG5cdE1vcmViaXRzLndpa2kuYXBpLmdldFRva2VuID0gKCkgPT4ge1xuXHRcdGNvbnN0IHRva2VuQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn6I635Y+W5Luk54mMJywgJ+WPluW+l+asiuadlicpLCB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdHR5cGU6ICdjc3JmJyxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdH0pO1xuXHRcdHJldHVybiB0b2tlbkFwaS5wb3N0KCkudGhlbigoYXBpb2JqKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpb2JqLnJlc3BvbnNlLnF1ZXJ5LnRva2Vucy5jc3JmdG9rZW47XG5cdFx0fSk7XG5cdH07XG5cdC8qICoqKioqKioqKioqKioqKiogTW9yZWJpdHMud2lraS5wYWdlICoqKioqKioqKioqKioqKiogKi9cblx0LyoqXG5cdCAqIFVzZSB0aGUgTWVkaWFXaWtpIEFQSSB0byBsb2FkIGEgcGFnZSBhbmQgb3B0aW9uYWxseSBlZGl0IGl0LCBtb3ZlIGl0LCBldGMuXG5cdCAqXG5cdCAqIENhbGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgdG8gZGlyZWN0bHkgYWNjZXNzIHRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgY2xhc3MhXG5cdCAqIEFsbCBwcm9wZXJ0eSBhY2Nlc3MgaXMgdGhyb3VnaCB0aGUgYXBwcm9wcmlhdGUgZ2V0X19fKCkgb3Igc2V0X19fKCkgbWV0aG9kLlxuXHQgKlxuXHQgKiBDYWxsZXJzIHNob3VsZCBzZXQge0BsaW5rIE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZX0gYW5kIHtAbGluayBNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdH1cblx0ICogYmVmb3JlIHRoZSBmaXJzdCBjYWxsIHRvIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2UubG9hZCgpfS5cblx0ICpcblx0ICogRWFjaCBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHRha2VzIG9uZSBwYXJhbWV0ZXIsIHdoaWNoIGlzIGFcblx0ICogcmVmZXJlbmNlIHRvIHRoZSBNb3JlYml0cy53aWtpLnBhZ2Ugb2JqZWN0IHRoYXQgcmVnaXN0ZXJlZCB0aGUgY2FsbGJhY2suXG5cdCAqIENhbGxiYWNrIGZ1bmN0aW9ucyBtYXkgaW52b2tlIGFueSBNb3JlYml0cy53aWtpLnBhZ2UgcHJvdG90eXBlIG1ldGhvZCB1c2luZyB0aGlzIHJlZmVyZW5jZS5cblx0ICpcblx0ICpcblx0ICogQ2FsbCBzZXF1ZW5jZSBmb3IgY29tbW9uIG9wZXJhdGlvbnMgKG9wdGlvbmFsIGZpbmFsIHVzZXIgY2FsbGJhY2tzIG5vdCBzaG93bik6XG5cdCAqXG5cdCAqIC0gRWRpdCBjdXJyZW50IGNvbnRlbnRzIG9mIGEgcGFnZSAobm8gZWRpdCBjb25mbGljdCk6XG5cdCAqIGAubG9hZCh1c2VyVGV4dEVkaXRDYWxsYmFjaykgLT4gY3R4LmxvYWRBcGkucG9zdCgpIC0+XG5cdCAqIGN0eC5sb2FkQXBpLnBvc3Quc3VjY2VzcygpIC0+IGN0eC5mbkxvYWRTdWNjZXNzKCkgLT4gdXNlclRleHRFZGl0Q2FsbGJhY2soKSAtPlxuXHQgKiAuc2F2ZSgpIC0+IGN0eC5zYXZlQXBpLnBvc3QoKSAtPiBjdHgubG9hZEFwaS5wb3N0LnN1Y2Nlc3MoKSAtPiBjdHguZm5TYXZlU3VjY2VzcygpYFxuXHQgKlxuXHQgKiAtIEVkaXQgY3VycmVudCBjb250ZW50cyBvZiBhIHBhZ2UgKHdpdGggZWRpdCBjb25mbGljdCk6XG5cdCAqIGAubG9hZCh1c2VyVGV4dEVkaXRDYWxsYmFjaykgLT4gY3R4LmxvYWRBcGkucG9zdCgpIC0+XG5cdCAqIGN0eC5sb2FkQXBpLnBvc3Quc3VjY2VzcygpIC0+IGN0eC5mbkxvYWRTdWNjZXNzKCkgLT4gdXNlclRleHRFZGl0Q2FsbGJhY2soKSAtPlxuXHQgKiAuc2F2ZSgpIC0+IGN0eC5zYXZlQXBpLnBvc3QoKSAtPiBjdHgubG9hZEFwaS5wb3N0LnN1Y2Nlc3MoKSAtPlxuXHQgKiBjdHguZm5TYXZlRXJyb3IoKSAtPiBjdHgubG9hZEFwaS5wb3N0KCkgLT4gY3R4LmxvYWRBcGkucG9zdC5zdWNjZXNzKCkgLT5cblx0ICogY3R4LmZuTG9hZFN1Y2Nlc3MoKSAtPiB1c2VyVGV4dEVkaXRDYWxsYmFjaygpIC0+IC5zYXZlKCkgLT5cblx0ICogY3R4LnNhdmVBcGkucG9zdCgpIC0+IGN0eC5sb2FkQXBpLnBvc3Quc3VjY2VzcygpIC0+IGN0eC5mblNhdmVTdWNjZXNzKClgXG5cdCAqXG5cdCAqIC0gQXBwZW5kIHRvIGEgcGFnZSAoc2ltaWxhciBmb3IgcHJlcGVuZCBhbmQgbmV3U2VjdGlvbik6XG5cdCAqIGAuYXBwZW5kKCkgLT4gY3R4LmxvYWRBcGkucG9zdCgpIC0+IGN0eC5sb2FkQXBpLnBvc3Quc3VjY2VzcygpIC0+XG5cdCAqIGN0eC5mbkxvYWRTdWNjZXNzKCkgLT4gY3R4LmZuQXV0b1NhdmUoKSAtPiAuc2F2ZSgpIC0+IGN0eC5zYXZlQXBpLnBvc3QoKSAtPlxuXHQgKiBjdHgubG9hZEFwaS5wb3N0LnN1Y2Nlc3MoKSAtPiBjdHguZm5TYXZlU3VjY2VzcygpYFxuXHQgKlxuXHQgKiBOb3Rlczpcblx0ICogMS4gQWxsIGZ1bmN0aW9ucyBmb2xsb3dpbmcgTW9yZWJpdHMud2lraS5hcGkucG9zdCgpIGFyZSBpbnZva2VkIGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGpRdWVyeSBBSkFYIGxpYnJhcnkuXG5cdCAqIDIuIFRoZSBzZXF1ZW5jZSBmb3IgYXBwZW5kL3ByZXBlbmQvbmV3U2VjdGlvbiBjb3VsZCBiZSBzbGlnaHRseSBzaG9ydGVuZWQsXG5cdCAqIGJ1dCBpdCB3b3VsZCByZXF1aXJlIHNpZ25pZmljYW50IGR1cGxpY2F0aW9uIG9mIGNvZGUgZm9yIGxpdHRsZSBiZW5lZml0LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraVxuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHBhZ2UsIHByZWZpeGVkIGJ5IHRoZSBuYW1lc3BhY2UgKGlmIGFueSkuXG5cdCAqIEZvciB0aGUgY3VycmVudCBwYWdlLCB1c2UgYG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKWAuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfE1vcmViaXRzLnN0YXR1c30gW3N0YXR1c10gLSBBIHN0cmluZyBkZXNjcmliaW5nIHRoZSBhY3Rpb24gYWJvdXQgdG8gYmUgdW5kZXJ0YWtlbixcblx0ICogb3IgYSBNb3JlYml0cy5zdGF0dXMgb2JqZWN0XG5cdCAqL1xuXHRNb3JlYml0cy53aWtpLnBhZ2UgPSBmdW5jdGlvbiAocGFnZU5hbWUsIHN0YXR1cykge1xuXHRcdHN0YXR1cyB8fD0gd2luZG93LndnVUxTKCfmiZPlvIDpobXpnaLigJwnLCAn5omT6ZaL6aCB6Z2i44CMJykgKyBwYWdlTmFtZSArIHdpbmRvdy53Z1VMUygn4oCdJywgJ+OAjScpO1xuXHRcdC8qKlxuXHRcdCAqIFByaXZhdGUgY29udGV4dCB2YXJpYWJsZXMuXG5cdFx0ICpcblx0XHQgKiBUaGlzIGNvbnRleHQgaXMgbm90IHZpc2libGUgdG8gdGhlIG91dHNpZGUsIHRodXMgYWxsIHRoZSBkYXRhIGhlcmVcblx0XHQgKiBtdXN0IGJlIGFjY2Vzc2VkIHZpYSBnZXR0ZXIgYW5kIHNldHRlciBmdW5jdGlvbnMuXG5cdFx0ICpcblx0XHQgKiBAcHJpdmF0ZVxuXHRcdCAqL1xuXHRcdGNvbnN0IGN0eCA9IHtcblx0XHRcdC8vIGJhY2tpbmcgZmllbGRzIGZvciBwdWJsaWMgcHJvcGVydGllc1xuXHRcdFx0cGFnZU5hbWUsXG5cdFx0XHRwYWdlRXhpc3RzOiBmYWxzZSxcblx0XHRcdGVkaXRTdW1tYXJ5OiBudWxsLFxuXHRcdFx0Y2hhbmdlVGFnczogbnVsbCxcblx0XHRcdHRlc3RBY3Rpb25zOiBudWxsLFxuXHRcdFx0Ly8gYXJyYXkgaWYgYW55IHZhbGlkIGFjdGlvbnNcblx0XHRcdGNhbGxiYWNrUGFyYW1ldGVyczogbnVsbCxcblx0XHRcdHN0YXR1c0VsZW1lbnQ6IHN0YXR1cyBpbnN0YW5jZW9mIE1vcmViaXRzLnN0YXR1cyA/IHN0YXR1cyA6IG5ldyBNb3JlYml0cy5zdGF0dXMoc3RhdHVzKSxcblx0XHRcdC8vIC0gZWRpdFxuXHRcdFx0cGFnZVRleHQ6IG51bGwsXG5cdFx0XHRlZGl0TW9kZTogJ2FsbCcsXG5cdFx0XHQvLyBzYXZlKCkgcmVwbGFjZXMgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBwYWdlIGJ5IGRlZmF1bHRcblx0XHRcdGFwcGVuZFRleHQ6IG51bGwsXG5cdFx0XHQvLyBjYW4ndCByZXVzZSBwYWdlVGV4dCBmb3IgdGhpcyBiZWNhdXNlIHBhZ2VUZXh0IGlzIG5lZWRlZCB0byBmb2xsb3cgYSByZWRpcmVjdFxuXHRcdFx0cHJlcGVuZFRleHQ6IG51bGwsXG5cdFx0XHQvLyBjYW4ndCByZXVzZSBwYWdlVGV4dCBmb3IgdGhpcyBiZWNhdXNlIHBhZ2VUZXh0IGlzIG5lZWRlZCB0byBmb2xsb3cgYSByZWRpcmVjdFxuXHRcdFx0bmV3U2VjdGlvblRleHQ6IG51bGwsXG5cdFx0XHRuZXdTZWN0aW9uVGl0bGU6IG51bGwsXG5cdFx0XHRjcmVhdGVPcHRpb246IG51bGwsXG5cdFx0XHRtaW5vckVkaXQ6IGZhbHNlLFxuXHRcdFx0Ym90RWRpdDogZmFsc2UsXG5cdFx0XHRwYWdlU2VjdGlvbjogbnVsbCxcblx0XHRcdG1heENvbmZsaWN0UmV0cmllczogMixcblx0XHRcdG1heFJldHJpZXM6IDIsXG5cdFx0XHRmb2xsb3dSZWRpcmVjdDogZmFsc2UsXG5cdFx0XHRmb2xsb3dDcm9zc05zUmVkaXJlY3Q6IHRydWUsXG5cdFx0XHR3YXRjaGxpc3RPcHRpb246ICdub2NoYW5nZScsXG5cdFx0XHR3YXRjaGxpc3RFeHBpcnk6IG51bGwsXG5cdFx0XHRjcmVhdG9yOiBudWxsLFxuXHRcdFx0dGltZXN0YW1wOiBudWxsLFxuXHRcdFx0Ly8gLSByZXZlcnRcblx0XHRcdHJldmVydE9sZElEOiBudWxsLFxuXHRcdFx0Ly8gLSBtb3ZlXG5cdFx0XHRtb3ZlRGVzdGluYXRpb246IG51bGwsXG5cdFx0XHRtb3ZlVGFsa1BhZ2U6IGZhbHNlLFxuXHRcdFx0bW92ZVN1YnBhZ2VzOiBmYWxzZSxcblx0XHRcdG1vdmVTdXBwcmVzc1JlZGlyZWN0OiBmYWxzZSxcblx0XHRcdC8vIC0gcHJvdGVjdFxuXHRcdFx0cHJvdGVjdEVkaXQ6IG51bGwsXG5cdFx0XHRwcm90ZWN0TW92ZTogbnVsbCxcblx0XHRcdHByb3RlY3RDcmVhdGU6IG51bGwsXG5cdFx0XHRwcm90ZWN0Q2FzY2FkZTogbnVsbCxcblx0XHRcdC8vIC0gY3JlYXRpb24gbG9va3VwXG5cdFx0XHRsb29rdXBOb25SZWRpcmVjdENyZWF0b3I6IGZhbHNlLFxuXHRcdFx0Ly8gaW50ZXJuYWwgc3RhdHVzXG5cdFx0XHRwYWdlTG9hZGVkOiBmYWxzZSxcblx0XHRcdGNzcmZUb2tlbjogbnVsbCxcblx0XHRcdGxvYWRUaW1lOiBudWxsLFxuXHRcdFx0bGFzdEVkaXRUaW1lOiBudWxsLFxuXHRcdFx0cGFnZUlEOiBudWxsLFxuXHRcdFx0Y29udGVudE1vZGVsOiBudWxsLFxuXHRcdFx0cmV2ZXJ0Q3VySUQ6IG51bGwsXG5cdFx0XHRyZXZlcnRVc2VyOiBudWxsLFxuXHRcdFx0d2F0Y2hlZDogZmFsc2UsXG5cdFx0XHRmdWxseVByb3RlY3RlZDogZmFsc2UsXG5cdFx0XHRzdXBwcmVzc1Byb3RlY3RXYXJuaW5nOiBmYWxzZSxcblx0XHRcdGNvbmZsaWN0UmV0cmllczogMCxcblx0XHRcdHJldHJpZXM6IDAsXG5cdFx0XHQvLyBjYWxsYmFja3Ncblx0XHRcdG9uTG9hZFN1Y2Nlc3M6IG51bGwsXG5cdFx0XHRvbkxvYWRGYWlsdXJlOiBudWxsLFxuXHRcdFx0b25TYXZlU3VjY2VzczogbnVsbCxcblx0XHRcdG9uU2F2ZUZhaWx1cmU6IG51bGwsXG5cdFx0XHRvbkxvb2t1cENyZWF0aW9uU3VjY2VzczogbnVsbCxcblx0XHRcdG9uTG9va3VwQ3JlYXRpb25GYWlsdXJlOiBudWxsLFxuXHRcdFx0b25Nb3ZlU3VjY2VzczogbnVsbCxcblx0XHRcdG9uTW92ZUZhaWx1cmU6IG51bGwsXG5cdFx0XHRvbkRlbGV0ZVN1Y2Nlc3M6IG51bGwsXG5cdFx0XHRvbkRlbGV0ZUZhaWx1cmU6IG51bGwsXG5cdFx0XHRvblVuZGVsZXRlU3VjY2VzczogbnVsbCxcblx0XHRcdG9uVW5kZWxldGVGYWlsdXJlOiBudWxsLFxuXHRcdFx0b25Qcm90ZWN0U3VjY2VzczogbnVsbCxcblx0XHRcdG9uUHJvdGVjdEZhaWx1cmU6IG51bGwsXG5cdFx0XHQvLyBpbnRlcm5hbCBvYmplY3RzXG5cdFx0XHRsb2FkUXVlcnk6IG51bGwsXG5cdFx0XHRsb2FkQXBpOiBudWxsLFxuXHRcdFx0c2F2ZUFwaTogbnVsbCxcblx0XHRcdGxvb2t1cENyZWF0aW9uQXBpOiBudWxsLFxuXHRcdFx0bW92ZUFwaTogbnVsbCxcblx0XHRcdG1vdmVQcm9jZXNzQXBpOiBudWxsLFxuXHRcdFx0cGF0cm9sQXBpOiBudWxsLFxuXHRcdFx0cGF0cm9sUHJvY2Vzc0FwaTogbnVsbCxcblx0XHRcdGRlbGV0ZUFwaTogbnVsbCxcblx0XHRcdGRlbGV0ZVByb2Nlc3NBcGk6IG51bGwsXG5cdFx0XHR1bmRlbGV0ZUFwaTogbnVsbCxcblx0XHRcdHVuZGVsZXRlUHJvY2Vzc0FwaTogbnVsbCxcblx0XHRcdHByb3RlY3RBcGk6IG51bGwsXG5cdFx0XHRwcm90ZWN0UHJvY2Vzc0FwaTogbnVsbCxcblx0XHR9O1xuXHRcdGNvbnN0IGVtcHR5RnVuY3Rpb24gPSAoKSA9PiB7fTtcblx0XHQvKipcblx0XHQgKiBMb2FkcyB0aGUgdGV4dCBmb3IgdGhlIHBhZ2UuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvblN1Y2Nlc3MgLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbG9hZCBoYXMgc3VjY2VlZGVkLlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvbkZhaWx1cmVdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlIGxvYWQgZmFpbHMuXG5cdFx0ICovXG5cdFx0dGhpcy5sb2FkID0gZnVuY3Rpb24gKG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cdFx0XHRjdHgub25Mb2FkU3VjY2VzcyA9IG9uU3VjY2Vzcztcblx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlID0gb25GYWlsdXJlIHx8IGVtcHR5RnVuY3Rpb247XG5cdFx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIGFmdGVyIHRoZSBwYWdlIGxvYWRzXG5cdFx0XHRpZiAoIW9uU3VjY2Vzcykge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcignSW50ZXJuYWwgZXJyb3I6IG5vIG9uU3VjY2VzcyBjYWxsYmFjayBwcm92aWRlZCB0byBsb2FkKCkhJyk7XG5cdFx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjdHgubG9hZFF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdHByb3A6ICdpbmZvfHJldmlzaW9ucycsXG5cdFx0XHRcdGlucHJvcDogJ3dhdGNoZWQnLFxuXHRcdFx0XHRpbnRlc3RhY3Rpb25zOiAnZWRpdCcsXG5cdFx0XHRcdC8vIGNhbiBiZSBleHBhbmRlZFxuXHRcdFx0XHRjdXJ0aW1lc3RhbXA6ICcnLFxuXHRcdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdFx0dHlwZTogJ2NzcmYnLFxuXHRcdFx0XHR0aXRsZXM6IGN0eC5wYWdlTmFtZSxcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdC8vIGRvbid0IG5lZWQgcnZsaW1pdD0xIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCBydnN0YXJ0aWQgaGVyZSBhbmQgb25seSBvbmUgYWN0dWFsIHJldiBpcyByZXR1cm5lZCBieSBkZWZhdWx0XG5cdFx0XHR9O1xuXG5cdFx0XHRpZiAoY3R4LmVkaXRNb2RlID09PSAnYWxsJykge1xuXHRcdFx0XHRjdHgubG9hZFF1ZXJ5LnJ2cHJvcCA9ICdjb250ZW50fHRpbWVzdGFtcCc7IC8vIGdldCB0aGUgcGFnZSBjb250ZW50IGF0IHRoZSBzYW1lIHRpbWUsIGlmIG5lZWRlZFxuXHRcdFx0fSBlbHNlIGlmIChjdHguZWRpdE1vZGUgPT09ICdyZXZlcnQnKSB7XG5cdFx0XHRcdGN0eC5sb2FkUXVlcnkucnZwcm9wID0gJ3RpbWVzdGFtcCc7XG5cdFx0XHRcdGN0eC5sb2FkUXVlcnkucnZsaW1pdCA9IDE7XG5cdFx0XHRcdGN0eC5sb2FkUXVlcnkucnZzdGFydGlkID0gY3R4LnJldmVydE9sZElEO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN0eC5mb2xsb3dSZWRpcmVjdCkge1xuXHRcdFx0XHRjdHgubG9hZFF1ZXJ5LnJlZGlyZWN0cyA9ICcnOyAvLyBmb2xsb3cgYWxsIHJlZGlyZWN0c1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodHlwZW9mIGN0eC5wYWdlU2VjdGlvbiA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y3R4LmxvYWRRdWVyeS5ydnNlY3Rpb24gPSBjdHgucGFnZVNlY3Rpb247XG5cdFx0XHR9XG5cdFx0XHRpZiAoTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0Y3R4LmxvYWRRdWVyeS5pbnByb3AgKz0gJ3xwcm90ZWN0aW9uJztcblx0XHRcdH1cblx0XHRcdGN0eC5sb2FkQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aKk+WPlumhtemdouKApuKApicsICfmipPlj5bpoIHpnaLigKbigKYnKSxcblx0XHRcdFx0Y3R4LmxvYWRRdWVyeSxcblx0XHRcdFx0Zm5Mb2FkU3VjY2Vzcyxcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlXG5cdFx0XHQpO1xuXHRcdFx0Y3R4LmxvYWRBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4LmxvYWRBcGkucG9zdCgpO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogU2F2ZXMgdGhlIHRleHQgZm9yIHRoZSBwYWdlIHRvIFdpa2lwZWRpYS5cblx0XHQgKiBNdXN0IGJlIHByZWNlZGVkIGJ5IHN1Y2Nlc3NmdWxseSBjYWxsaW5nIGBsb2FkKClgLlxuXHRcdCAqXG5cdFx0ICogV2FybmluZzogQ2FsbGluZyBgc2F2ZSgpYCBjYW4gcmVzdWx0IGluIGFkZGl0aW9uYWwgY2FsbHMgdG8gdGhlXG5cdFx0ICogcHJldmlvdXMgYGxvYWQoKWAgY2FsbGJhY2tzIHRvIHJlY292ZXIgZnJvbSBlZGl0IGNvbmZsaWN0cyEgSW4gdGhpc1xuXHRcdCAqIGNhc2UsIGNhbGxlcnMgbXVzdCBtYWtlIHRoZSBzYW1lIGVkaXQgdG8gdGhlIG5ldyBwYWdlVGV4dCBhbmRcblx0XHQgKiByZS1pbnZva2UgYHNhdmUoKWAuICBUaGlzIGJlaGF2aW9yIGNhbiBiZSBkaXNhYmxlZCB3aXRoXG5cdFx0ICogYHNldE1heENvbmZsaWN0UmV0cmllcygwKWAuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25TdWNjZXNzXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBzYXZlIGhhcyBzdWNjZWVkZWQuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgc2F2ZSBmYWlscy5cblx0XHQgKi9cblx0XHR0aGlzLnNhdmUgPSBmdW5jdGlvbiAob25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcblx0XHRcdGN0eC5vblNhdmVTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0Y3R4Lm9uU2F2ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdC8vIGFyZSB3ZSBnZXR0aW5nIG91ciBlZGl0aW5nIHRva2VuIGZyb20gbXcudXNlci50b2tlbnM/XG5cdFx0XHRjb25zdCBjYW5Vc2VNd1VzZXJUb2tlbiA9IGZuQ2FuVXNlTXdVc2VyVG9rZW4oJ2VkaXQnKTtcblx0XHRcdGlmICghY3R4LnBhZ2VMb2FkZWQgJiYgIWNhblVzZU13VXNlclRva2VuKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKCdJbnRlcm5hbCBlcnJvcjogYXR0ZW1wdCB0byBzYXZlIGEgcGFnZSB0aGF0IGhhcyBub3QgYmVlbiBsb2FkZWQhJyk7XG5cdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN0eC5lZGl0U3VtbWFyeSkge1xuXHRcdFx0XHQvLyBuZXcgc2VjdGlvbiBtb2RlIGFsbG93cyAobmF5LCBlbmNvdXJhZ2VzKSB1c2luZyB0aGVcblx0XHRcdFx0Ly8gdGl0bGUgYXMgdGhlIGVkaXQgc3VtbWFyeSwgYnV0IHRoZSBxdWVyeSBuZWVkc1xuXHRcdFx0XHQvLyBlZGl0U3VtbWFyeSB0byBiZSB1bmRlZmluZWQgb3IgJycsIG5vdCBudWxsXG5cdFx0XHRcdGlmIChjdHguZWRpdE1vZGUgPT09ICduZXcnICYmIGN0eC5uZXdTZWN0aW9uVGl0bGUpIHtcblx0XHRcdFx0XHRjdHguZWRpdFN1bW1hcnkgPSAnJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcignSW50ZXJuYWwgZXJyb3I6IGVkaXQgc3VtbWFyeSBub3Qgc2V0IGJlZm9yZSBzYXZlIScpO1xuXHRcdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gc2hvdWxkbid0IGhhcHBlbiBpZiBjYW5Vc2VNd1VzZXJUb2tlbiA9PT0gdHJ1ZVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjdHguZnVsbHlQcm90ZWN0ZWQgJiZcblx0XHRcdFx0IWN0eC5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nICYmXG5cdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdGN0eC5mdWxseVByb3RlY3RlZCA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aCqOWNs+Wwhue8lui+keWFqOS/neaKpOmhtemdouKAnCcsICfmgqjljbPlsIfnt6jovK/lhajkv53orbfpoIHpnaLjgIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0Y3R4LnBhZ2VOYW1lICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn4oCd77yI5peg6ZmQ5pyf77yJ44CCXFxuXFxu5Y2V5Ye756Gu5a6a5Lul56Gu5a6a77yM5oiW5Y2V5Ye75Y+W5raI5Lul5Y+W5raI5pON5L2c44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfjgI3vvIjnhKHpmZDmnJ/vvInjgIJcXG5cXG7pu57mk4rnorrlrprku6XnorrlrprvvIzmiJbpu57mk4rlj5bmtojku6Xlj5bmtojmk43kvZzjgIInXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0OiBgJHtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOWNs+Wwhue8lui+keWFqOS/neaKpOmhtemdouKAnCcsICfmgqjljbPlsIfnt6jovK/lhajkv53orbfpoIHpnaLjgIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0Y3R4LnBhZ2VOYW1lICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+KAne+8iOWIsOacn++8micsICfjgI3vvIjliLDmnJ/vvJonKSArXG5cdFx0XHRcdFx0XHRcdFx0bmV3IE1vcmViaXRzLmRhdGUoY3R4LmZ1bGx5UHJvdGVjdGVkKS5jYWxlbmRhcigndXRjJylcblx0XHRcdFx0XHRcdFx0fSAoVVRDKe+8ieOAglxcblxcbiR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfljZXlh7vnoa7lrprku6Xnoa7lrprvvIzmiJbljZXlh7vlj5bmtojku6Xlj5bmtojmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfpu57mk4rnorrlrprku6XnorrlrprvvIzmiJbpu57mk4rlj5bmtojku6Xlj5bmtojmk43kvZzjgIInXG5cdFx0XHRcdFx0XHRcdCl9YFxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCflt7Llj5bmtojlr7nlhajkv53miqTpobXpnaLnmoTnvJbovpHjgIInLCAn5bey5Y+W5raI5bCN5YWo5L+d6K236aCB6Z2i55qE57eo6Lyv44CCJykpO1xuXHRcdFx0XHRjdHgub25TYXZlRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y3R4LnJldHJpZXMgPSAwO1xuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdFx0XHR0aXRsZTogY3R4LnBhZ2VOYW1lLFxuXHRcdFx0XHRzdW1tYXJ5OiBjdHguZWRpdFN1bW1hcnksXG5cdFx0XHRcdHRva2VuOiBjYW5Vc2VNd1VzZXJUb2tlbiA/IG13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJykgOiBjdHguY3NyZlRva2VuLFxuXHRcdFx0XHR3YXRjaGxpc3Q6IGN0eC53YXRjaGxpc3RPcHRpb24sXG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdGlmIChjdHguY2hhbmdlVGFncykge1xuXHRcdFx0XHRxdWVyeS50YWdzID0gY3R4LmNoYW5nZVRhZ3M7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZm5BcHBseVdhdGNobGlzdEV4cGlyeSgpKSB7XG5cdFx0XHRcdHF1ZXJ5LndhdGNobGlzdGV4cGlyeSA9IGN0eC53YXRjaGxpc3RFeHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIGN0eC5wYWdlU2VjdGlvbiA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0cXVlcnkuc2VjdGlvbiA9IGN0eC5wYWdlU2VjdGlvbjtcblx0XHRcdH1cblx0XHRcdC8vIFNldCBtaW5vciBlZGl0IGF0dHJpYnV0ZS4gSWYgdGhlc2UgcGFyYW1ldGVycyBhcmUgcHJlc2VudCB3aXRoIGFueSB2YWx1ZSwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgdHJ1ZVxuXHRcdFx0aWYgKGN0eC5taW5vckVkaXQpIHtcblx0XHRcdFx0cXVlcnkubWlub3IgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cXVlcnkubm90bWlub3IgPSB0cnVlOyAvLyBmb3JjZSBUd2lua2xlIGNvbmZpZyB0byBvdmVycmlkZSB1c2VyIHByZWZlcmVuY2Ugc2V0dGluZyBmb3IgXCJhbGwgZWRpdHMgYXJlIG1pbm9yXCJcblx0XHRcdH1cblx0XHRcdC8vIFNldCBib3QgZWRpdCBhdHRyaWJ1dGUuIElmIHRoaXMgcGFyYW1ldGVyIGlzIHByZXNlbnQgd2l0aCBhbnkgdmFsdWUsIGl0IGlzIGludGVycHJldGVkIGFzIHRydWVcblx0XHRcdGlmIChjdHguYm90RWRpdCkge1xuXHRcdFx0XHRxdWVyeS5ib3QgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoIChjdHguZWRpdE1vZGUpIHtcblx0XHRcdFx0Y2FzZSAnYXBwZW5kJzpcblx0XHRcdFx0XHRpZiAoY3R4LmFwcGVuZFRleHQgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKCdJbnRlcm5hbCBlcnJvcjogYXBwZW5kIHRleHQgbm90IHNldCBiZWZvcmUgc2F2ZSEnKTtcblx0XHRcdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRxdWVyeS5hcHBlbmR0ZXh0ID0gY3R4LmFwcGVuZFRleHQ7IC8vIHVzZSBtb2RlIHRvIGFwcGVuZCB0byBjdXJyZW50IHBhZ2UgY29udGVudHNcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncHJlcGVuZCc6XG5cdFx0XHRcdFx0aWYgKGN0eC5wcmVwZW5kVGV4dCA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoJ0ludGVybmFsIGVycm9yOiBwcmVwZW5kIHRleHQgbm90IHNldCBiZWZvcmUgc2F2ZSEnKTtcblx0XHRcdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRxdWVyeS5wcmVwZW5kdGV4dCA9IGN0eC5wcmVwZW5kVGV4dDsgLy8gdXNlIG1vZGUgdG8gcHJlcGVuZCB0byBjdXJyZW50IHBhZ2UgY29udGVudHNcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbmV3Jzpcblx0XHRcdFx0XHRpZiAoIWN0eC5uZXdTZWN0aW9uVGV4dCkge1xuXHRcdFx0XHRcdFx0Ly8gQVBJIGRvZXNuJ3QgYWxsb3cgZW1wdHkgbmV3IHNlY3Rpb24gdGV4dFxuXHRcdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoJ0ludGVybmFsIGVycm9yOiBuZXcgc2VjdGlvbiB0ZXh0IG5vdCBzZXQgYmVmb3JlIHNhdmUhJyk7XG5cdFx0XHRcdFx0XHRjdHgub25TYXZlRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cXVlcnkuc2VjdGlvbiA9ICduZXcnO1xuXHRcdFx0XHRcdHF1ZXJ5LnRleHQgPSBjdHgubmV3U2VjdGlvblRleHQ7IC8vIGFkZCBhIG5ldyBzZWN0aW9uIHRvIGN1cnJlbnQgcGFnZVxuXHRcdFx0XHRcdHF1ZXJ5LnNlY3Rpb250aXRsZSA9IGN0eC5uZXdTZWN0aW9uVGl0bGUgfHwgY3R4LmVkaXRTdW1tYXJ5OyAvLyBkb25lIGJ5IHRoZSBBUEksIGJ1dCBub24tJycgdmFsdWVzIHdvdWxkIGdldCB0cmVhdGVkIGFzIHRleHRcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmV2ZXJ0Jzpcblx0XHRcdFx0XHRxdWVyeS51bmRvID0gY3R4LnJldmVydEN1cklEO1xuXHRcdFx0XHRcdHF1ZXJ5LnVuZG9hZnRlciA9IGN0eC5yZXZlcnRPbGRJRDtcblx0XHRcdFx0XHRpZiAoY3R4Lmxhc3RFZGl0VGltZSkge1xuXHRcdFx0XHRcdFx0cXVlcnkuYmFzZXRpbWVzdGFtcCA9IGN0eC5sYXN0RWRpdFRpbWU7IC8vIGNoZWNrIHRoYXQgcGFnZSBoYXNuJ3QgYmVlbiBlZGl0ZWQgc2luY2UgaXQgd2FzIGxvYWRlZFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHF1ZXJ5LnN0YXJ0dGltZXN0YW1wID0gY3R4LmxvYWRUaW1lOyAvLyBjaGVjayB0aGF0IHBhZ2UgaGFzbid0IGJlZW4gZGVsZXRlZCBzaW5jZSBpdCB3YXMgbG9hZGVkIChkb24ndCByZWNyZWF0ZSBiYWQgc3R1ZmYpXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0Ly8gJ2FsbCdcblx0XHRcdFx0XHRxdWVyeS50ZXh0ID0gY3R4LnBhZ2VUZXh0OyAvLyByZXBsYWNlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgcGFnZVxuXHRcdFx0XHRcdGlmIChjdHgubGFzdEVkaXRUaW1lKSB7XG5cdFx0XHRcdFx0XHRxdWVyeS5iYXNldGltZXN0YW1wID0gY3R4Lmxhc3RFZGl0VGltZTsgLy8gY2hlY2sgdGhhdCBwYWdlIGhhc24ndCBiZWVuIGVkaXRlZCBzaW5jZSBpdCB3YXMgbG9hZGVkXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cXVlcnkuc3RhcnR0aW1lc3RhbXAgPSBjdHgubG9hZFRpbWU7IC8vIGNoZWNrIHRoYXQgcGFnZSBoYXNuJ3QgYmVlbiBkZWxldGVkIHNpbmNlIGl0IHdhcyBsb2FkZWQgKGRvbid0IHJlY3JlYXRlIGJhZCBzdHVmZilcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmIChbJ3JlY3JlYXRlJywgJ2NyZWF0ZW9ubHknLCAnbm9jcmVhdGUnXS5pbmNsdWRlcyhjdHguY3JlYXRlT3B0aW9uKSkge1xuXHRcdFx0XHRxdWVyeVtjdHguY3JlYXRlT3B0aW9uXSA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNhblVzZU13VXNlclRva2VuICYmIGN0eC5mb2xsb3dSZWRpcmVjdCkge1xuXHRcdFx0XHRxdWVyeS5yZWRpcmVjdCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRjdHguc2F2ZUFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv53lrZjpobXpnaLigKbigKYnLCAn5YSy5a2Y6aCB6Z2i4oCm4oCmJyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRmblNhdmVTdWNjZXNzLFxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0Zm5TYXZlRXJyb3Jcblx0XHRcdCk7XG5cdFx0XHRjdHguc2F2ZUFwaS5zZXRQYXJlbnQodGhpcyk7XG5cdFx0XHRjdHguc2F2ZUFwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBBZGRzIHRoZSB0ZXh0IHByb3ZpZGVkIHZpYSBgc2V0QXBwZW5kVGV4dCgpYCB0byB0aGUgZW5kIG9mIHRoZVxuXHRcdCAqIHBhZ2UuICBEb2VzIG5vdCByZXF1aXJlIGNhbGxpbmcgYGxvYWQoKWAgZmlyc3QsIHVubGVzcyBhIHdhdGNobGlzdFxuXHRcdCAqIGV4cGlyeSBpcyB1c2VkLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uU3VjY2Vzc10gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0aG9kIGhhcyBzdWNjZWVkZWQuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0aG9kIGZhaWxzLlxuXHRcdCAqL1xuXHRcdHRoaXMuYXBwZW5kID0gZnVuY3Rpb24gKG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAnYXBwZW5kJztcblx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdlZGl0JykpIHtcblx0XHRcdFx0dGhpcy5zYXZlKG9uU3VjY2Vzcywgb25GYWlsdXJlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN0eC5vblNhdmVTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0XHRjdHgub25TYXZlRmFpbHVyZSA9IG9uRmFpbHVyZSB8fCBlbXB0eUZ1bmN0aW9uO1xuXHRcdFx0XHR0aGlzLmxvYWQoZm5BdXRvU2F2ZSwgY3R4Lm9uU2F2ZUZhaWx1cmUpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQWRkcyB0aGUgdGV4dCBwcm92aWRlZCB2aWEgYHNldFByZXBlbmRUZXh0KClgIHRvIHRoZSBzdGFydCBvZiB0aGVcblx0XHQgKiBwYWdlLiAgRG9lcyBub3QgcmVxdWlyZSBjYWxsaW5nIGBsb2FkKClgIGZpcnN0LCB1bmxlc3MgYSB3YXRjaGxpc3Rcblx0XHQgKiBleHBpcnkgaXMgdXNlZC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259ICBbb25TdWNjZXNzXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBtZXRob2QgaGFzIHN1Y2NlZWRlZC5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSAgW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0aG9kIGZhaWxzLlxuXHRcdCAqL1xuXHRcdHRoaXMucHJlcGVuZCA9IGZ1bmN0aW9uIChvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuXHRcdFx0Y3R4LmVkaXRNb2RlID0gJ3ByZXBlbmQnO1xuXHRcdFx0aWYgKGZuQ2FuVXNlTXdVc2VyVG9rZW4oJ2VkaXQnKSkge1xuXHRcdFx0XHR0aGlzLnNhdmUob25TdWNjZXNzLCBvbkZhaWx1cmUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4Lm9uU2F2ZVN1Y2Nlc3MgPSBvblN1Y2Nlc3M7XG5cdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlID0gb25GYWlsdXJlIHx8IGVtcHR5RnVuY3Rpb247XG5cdFx0XHRcdHRoaXMubG9hZChmbkF1dG9TYXZlLCBjdHgub25TYXZlRmFpbHVyZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBDcmVhdGVzIGEgbmV3IHNlY3Rpb24gd2l0aCB0aGUgdGV4dCBwcm92aWRlZCBieSBgc2V0TmV3U2VjdGlvblRleHQoKWBcblx0XHQgKiBhbmQgc2VjdGlvbiB0aXRsZSBmcm9tIGBzZXROZXdTZWN0aW9uVGl0bGUoKWAuXG5cdFx0ICogSWYgYGVkaXRTdW1tYXJ5YCBpcyBwcm92aWRlZCwgdGhhdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGVcblx0XHQgKiBhdXRvZ2VuZXJhdGVkIFwiLT5UaXRsZSAobmV3IHNlY3Rpb25cIiBlZGl0IHN1bW1hcnkuXG5cdFx0ICogRG9lcyBub3QgcmVxdWlyZSBjYWxsaW5nIGBsb2FkKClgIGZpcnN0LCB1bmxlc3MgYSB3YXRjaGxpc3QgZXhwaXJ5XG5cdFx0ICogaXMgdXNlZC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259ICBbb25TdWNjZXNzXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBtZXRob2QgaGFzIHN1Y2NlZWRlZC5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSAgW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0aG9kIGZhaWxzLlxuXHRcdCAqL1xuXHRcdHRoaXMubmV3U2VjdGlvbiA9IGZ1bmN0aW9uIChvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuXHRcdFx0Y3R4LmVkaXRNb2RlID0gJ25ldyc7XG5cdFx0XHRpZiAoZm5DYW5Vc2VNd1VzZXJUb2tlbignZWRpdCcpKSB7XG5cdFx0XHRcdHRoaXMuc2F2ZShvblN1Y2Nlc3MsIG9uRmFpbHVyZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdHgub25TYXZlU3VjY2VzcyA9IG9uU3VjY2Vzcztcblx0XHRcdFx0Y3R4Lm9uU2F2ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdFx0dGhpcy5sb2FkKGZuQXV0b1NhdmUsIGN0eC5vblNhdmVGYWlsdXJlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgbG9hZGVkIHBhZ2UsIGluY2x1ZGluZyB0aGUgbmFtZXNwYWNlICovXG5cdFx0dGhpcy5nZXRQYWdlTmFtZSA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHgucGFnZU5hbWU7XG5cdFx0fTtcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gVGhlIHRleHQgb2YgdGhlIHBhZ2UgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvYWQoKSAqL1xuXHRcdHRoaXMuZ2V0UGFnZVRleHQgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnBhZ2VUZXh0O1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7c3RyaW5nfSBwYWdlVGV4dCAtIFVwZGF0ZWQgcGFnZSB0ZXh0IHRoYXQgd2lsbCBiZSBzYXZlZCB3aGVuIGBzYXZlKClgIGlzIGNhbGxlZCAqL1xuXHRcdHRoaXMuc2V0UGFnZVRleHQgPSAocGFnZVRleHQpID0+IHtcblx0XHRcdGN0eC5lZGl0TW9kZSA9ICdhbGwnO1xuXHRcdFx0Y3R4LnBhZ2VUZXh0ID0gcGFnZVRleHQ7XG5cdFx0fTtcblx0XHQvKiogQHBhcmFtIHtzdHJpbmd9IGFwcGVuZFRleHQgLSBUZXh0IHRoYXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgcGFnZSB3aGVuIGBhcHBlbmQoKWAgaXMgY2FsbGVkICovXG5cdFx0dGhpcy5zZXRBcHBlbmRUZXh0ID0gKGFwcGVuZFRleHQpID0+IHtcblx0XHRcdGN0eC5lZGl0TW9kZSA9ICdhcHBlbmQnO1xuXHRcdFx0Y3R4LmFwcGVuZFRleHQgPSBhcHBlbmRUZXh0O1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7c3RyaW5nfSBwcmVwZW5kVGV4dCAtIFRleHQgdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgcGFnZSB3aGVuIGBwcmVwZW5kKClgIGlzIGNhbGxlZCAqL1xuXHRcdHRoaXMuc2V0UHJlcGVuZFRleHQgPSAocHJlcGVuZFRleHQpID0+IHtcblx0XHRcdGN0eC5lZGl0TW9kZSA9ICdwcmVwZW5kJztcblx0XHRcdGN0eC5wcmVwZW5kVGV4dCA9IHByZXBlbmRUZXh0O1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7c3RyaW5nfSBuZXdTZWN0aW9uVGV4dCAtIFRleHQgdGhhdCB3aWxsIGJlIGFkZGVkIGluIGEgbmV3IHNlY3Rpb24gb24gdGhlIHBhZ2Ugd2hlbiBgbmV3U2VjdGlvbigpYCBpcyBjYWxsZWQgKi9cblx0XHR0aGlzLnNldE5ld1NlY3Rpb25UZXh0ID0gKG5ld1NlY3Rpb25UZXh0KSA9PiB7XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAnbmV3Jztcblx0XHRcdGN0eC5uZXdTZWN0aW9uVGV4dCA9IG5ld1NlY3Rpb25UZXh0O1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IG5ld1NlY3Rpb25UaXRsZSAtIFRpdGxlIGZvciB0aGUgbmV3IHNlY3Rpb24gY3JlYXRlZCB3aGVuIGBuZXdTZWN0aW9uKClgIGlzIGNhbGxlZFxuXHRcdCAqIElmIG1pc3NpbmcsIGBjdHguZWRpdFN1bW1hcnlgIHdpbGwgYmUgdXNlZC4gSXNzdWVzIG1heSBvY2N1ciBpZiBhIHN1YnN0aXR1dGVkIHRlbXBsYXRlIGlzIHVzZWQuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXROZXdTZWN0aW9uVGl0bGUgPSAobmV3U2VjdGlvblRpdGxlKSA9PiB7XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAnbmV3Jztcblx0XHRcdGN0eC5uZXdTZWN0aW9uVGl0bGUgPSBuZXdTZWN0aW9uVGl0bGU7XG5cdFx0fTtcblx0XHQvLyBFZGl0LXJlbGF0ZWQgc2V0dGVyIG1ldGhvZHM6XG5cdFx0LyoqXG5cdFx0ICogU2V0IHRoZSBlZGl0IHN1bW1hcnkgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBgc2F2ZSgpYCBpcyBjYWxsZWQuXG5cdFx0ICogVW5uZWNlc3NhcnkgaWYgZWRpdE1vZGUgaXMgJ25ldycgYW5kIG5ld1NlY3Rpb25UaXRsZSBpcyBwcm92aWRlZC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdW1tYXJ5XG5cdFx0ICovXG5cdFx0dGhpcy5zZXRFZGl0U3VtbWFyeSA9IChzdW1tYXJ5KSA9PiB7XG5cdFx0XHRjdHguZWRpdFN1bW1hcnkgPSBzdW1tYXJ5O1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogU2V0IGFueSBjdXN0b20gdGFnKHMpIHRvIGJlIGFwcGxpZWQgdG8gdGhlIEFQSSBhY3Rpb24uXG5cdFx0ICogQSBudW1iZXIgb2YgYWN0aW9ucyBkb24ndCBzdXBwb3J0IGl0LCBtb3N0IG5vdGFibHkgd2F0Y2guXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gdGFncyAtIFN0cmluZyBvciBhcnJheSBvZiB0YWcocykuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXRDaGFuZ2VUYWdzID0gKHRhZ3MpID0+IHtcblx0XHRcdGN0eC5jaGFuZ2VUYWdzID0gdGFncztcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbY3JlYXRlT3B0aW9uPW51bGxdIC0gQ2FuIHRha2UgdGhlIGZvbGxvd2luZyBmb3VyIHZhbHVlczpcblx0XHQgKiAtIHJlY3JlYXRlOiBjcmVhdGUgdGhlIHBhZ2UgaWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGVkaXQgaXQgaWYgaXQgZXhpc3RzLlxuXHRcdCAqIC0gY3JlYXRlb25seTogY3JlYXRlIHRoZSBwYWdlIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBidXQgcmV0dXJuIGFuXG5cdFx0ICogZXJyb3IgaWYgaXQgYWxyZWFkeSBleGlzdHMuXG5cdFx0ICogLSBub2NyZWF0ZTogZG9uJ3QgY3JlYXRlIHRoZSBwYWdlLCBvbmx5IGVkaXQgaXQgaWYgaXQgYWxyZWFkeSBleGlzdHMuXG5cdFx0ICogLSBgbnVsbGA6IGNyZWF0ZSB0aGUgcGFnZSBpZiBpdCBkb2VzIG5vdCBleGlzdCwgdW5sZXNzIGl0IHdhcyBkZWxldGVkXG5cdFx0ICogaW4gdGhlIG1vbWVudCBiZXR3ZWVuIGxvYWRpbmcgdGhlIHBhZ2UgYW5kIHNhdmluZyB0aGUgZWRpdCAoZGVmYXVsdCkuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXRDcmVhdGVPcHRpb24gPSAoY3JlYXRlT3B0aW9uKSA9PiB7XG5cdFx0XHRjdHguY3JlYXRlT3B0aW9uID0gY3JlYXRlT3B0aW9uO1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7Ym9vbGVhbn0gbWlub3JFZGl0IC0gU2V0IHRydWUgdG8gbWFyayB0aGUgZWRpdCBhcyBhIG1pbm9yIGVkaXQuICovXG5cdFx0dGhpcy5zZXRNaW5vckVkaXQgPSAobWlub3JFZGl0KSA9PiB7XG5cdFx0XHRjdHgubWlub3JFZGl0ID0gbWlub3JFZGl0O1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7Ym9vbGVhbn0gYm90RWRpdCAtIFNldCB0cnVlIHRvIG1hcmsgdGhlIGVkaXQgYXMgYSBib3QgZWRpdCAqL1xuXHRcdHRoaXMuc2V0Qm90RWRpdCA9IChib3RFZGl0KSA9PiB7XG5cdFx0XHRjdHguYm90RWRpdCA9IGJvdEVkaXQ7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNlY3Rpb24gLSBJbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIHNlY3Rpb24gbnVtYmVyIHRvIGxvYWQgb3Igc2F2ZS5cblx0XHQgKiBJZiBzcGVjaWZpZWQgYXMgYG51bGxgLCB0aGUgZW50aXJlIHBhZ2Ugd2lsbCBiZSByZXRyaWV2ZWQuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXRQYWdlU2VjdGlvbiA9IChwYWdlU2VjdGlvbikgPT4ge1xuXHRcdFx0Y3R4LnBhZ2VTZWN0aW9uID0gcGFnZVNlY3Rpb247XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gbWF4Q29uZmxpY3RSZXRyaWVzIC0gTnVtYmVyIG9mIHJldHJpZXMgZm9yIHNhdmUgZXJyb3JzIGludm9sdmluZyBhbiBlZGl0IGNvbmZsaWN0IG9yXG5cdFx0ICogbG9zcyBvZiB0b2tlbi4gRGVmYXVsdDogMi5cblx0XHQgKi9cblx0XHR0aGlzLnNldE1heENvbmZsaWN0UmV0cmllcyA9IChtYXhDb25mbGljdFJldHJpZXMpID0+IHtcblx0XHRcdGN0eC5tYXhDb25mbGljdFJldHJpZXMgPSBtYXhDb25mbGljdFJldHJpZXM7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gbWF4UmV0cmllcyAtIE51bWJlciBvZiByZXRyaWVzIGZvciBzYXZlIGVycm9ycyBub3QgaW52b2x2aW5nIGFuIGVkaXQgY29uZmxpY3Qgb3Jcblx0XHQgKiBsb3NzIG9mIHRva2VuLiBEZWZhdWx0OiAyLlxuXHRcdCAqL1xuXHRcdHRoaXMuc2V0TWF4UmV0cmllcyA9IChtYXhSZXRyaWVzKSA9PiB7XG5cdFx0XHRjdHgubWF4UmV0cmllcyA9IG1heFJldHJpZXM7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBTZXQgd2hldGhlciBhbmQgaG93IHRvIHdhdGNoIHRoZSBwYWdlLCBpbmNsdWRpbmcgc2V0dGluZyBhbiBleHBpcnkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW58c3RyaW5nfE1vcmViaXRzLmRhdGV8RGF0ZX0gW3dhdGNobGlzdE9wdGlvbj1mYWxzZV0gLVxuXHRcdCAqIEJhc2ljYWxseSBhIG1peCBvZiBNVyBBUEkgYW5kIFR3aW5rbGV5IG9wdGlvbnMgYXZhaWxhYmxlIHByZS1leHBpcnk6XG5cdFx0ICogLSBgdHJ1ZWB8YCd5ZXMnYHxgJ3dhdGNoJ2A6IHBhZ2Ugd2lsbCBiZSBhZGRlZCB0byB0aGUgdXNlcidzXG5cdFx0ICogd2F0Y2hsaXN0IHdoZW4gdGhlIGFjdGlvbiBpcyBjYWxsZWQuIERlZmF1bHRzIHRvIGFuIGluZGVmaW5pdGVcblx0XHQgKiB3YXRjaCB1bmxlc3MgYHdhdGNobGlzdEV4cGlyeWAgaXMgcHJvdmlkZWQuXG5cdFx0ICogLSBgZmFsc2VgfGAnbm8nYHxgJ25vY2hhbmdlJ2A6IHdhdGNobGlzdCBzdGF0dXMgb2YgdGhlIHBhZ2UgKGluY2x1ZGluZyBleHBpcnkpIHdpbGwgbm90IGJlIGNoYW5nZWQuXG5cdFx0ICogLSBgJ2RlZmF1bHQnYHxgJ3ByZWZlcmVuY2VzJ2A6IHdhdGNobGlzdCBzdGF0dXMgb2YgdGhlIHBhZ2Ugd2lsbCBiZVxuXHRcdCAqIHNldCBiYXNlZCBvbiB0aGUgdXNlcidzIHByZWZlcmVuY2Ugc2V0dGluZ3Mgd2hlbiB0aGUgYWN0aW9uIGlzXG5cdFx0ICogY2FsbGVkLiBEZWZhdWx0cyB0byBhbiBpbmRlZmluaXRlIHdhdGNoIHVubGVzcyBgd2F0Y2hsaXN0RXhwaXJ5YCBpc1xuXHRcdCAqIHByb3ZpZGVkLlxuXHRcdCAqIC0gYCd1bndhdGNoJ2A6IGV4cGxpY2l0bHkgdW53YXRjaCB0aGUgcGFnZS5cblx0XHQgKiAtIEFueSBvdGhlciBgc3RyaW5nYCBvciBgbnVtYmVyYCwgb3IgYSBgTW9yZWJpdHMuZGF0ZWAgb3IgYERhdGVgXG5cdFx0ICogb2JqZWN0OiB3YXRjaCBwYWdlIHVudGlsIHRoZSBzcGVjaWZpZWQgdGltZSwgZGVmZXJyaW5nIHRvXG5cdFx0ICogYHdhdGNobGlzdEV4cGlyeWAgaWYgcHJvdmlkZWQuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfE1vcmViaXRzLmRhdGV8RGF0ZX0gW3dhdGNobGlzdEV4cGlyeT1pbmZpbml0eV0gLVxuXHRcdCAqIEEgZGF0ZS1saWtlIHN0cmluZyBvciBudW1iZXIsIG9yIGEgZGF0ZSBvYmplY3QuICBJZiBhIHN0cmluZyBvciBudW1iZXIsXG5cdFx0ICogY2FuIGJlIHJlbGF0aXZlICgyIHdlZWtzKSBvciBvdGhlciBzaW1pbGFybHkgZGF0ZS1saWtlIChpLmUuIE5PVCBcInBvdGF0b1wiKTpcblx0XHQgKiBJU08gODYwMTogMjAzOC0wMS0wOVQwMzoxNDowN1pcblx0XHQgKiBNZWRpYVdpa2k6IDIwMzgwMTA5MDMxNDA3XG5cdFx0ICogVU5JWDogMjE0NzQ4MzY0N1xuXHRcdCAqIFNRTDogMjAzOC0wMS0wOSAwMzoxNDowN1xuXHRcdCAqIENhbiBhbHNvIGJlIGBpbmZpbml0eWAgb3IgaW5maW5pdHktbGlrZSAoYGluZmluaXRlYCwgYGluZGVmaW5pdGVgLCBhbmQgYG5ldmVyYCkuXG5cdFx0ICogU2VlIHtAbGluayBodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvc291cmNlL21lZGlhd2lraS1saWJzLVRpbWVzdGFtcC9icm93c2UvbWFzdGVyL3NyYy9Db252ZXJ0aWJsZVRpbWVzdGFtcC5waHA7NGU1M2I4NTlhOTU4MGM1NTk1ODA3OGY0NmRkNGYzYTQ0ZDBmY2FhMCQ1Ny0xMDk/YXM9c291cmNlJmJsYW1lPW9mZn1cblx0XHQgKi9cblx0XHR0aGlzLnNldFdhdGNobGlzdCA9ICh3YXRjaGxpc3RPcHRpb24sIHdhdGNobGlzdEV4cGlyeSkgPT4ge1xuXHRcdFx0aWYgKHdhdGNobGlzdE9wdGlvbiBpbnN0YW5jZW9mIE1vcmViaXRzLmRhdGUgfHwgd2F0Y2hsaXN0T3B0aW9uIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHR3YXRjaGxpc3RPcHRpb24gPSB3YXRjaGxpc3RPcHRpb24udG9JU09TdHJpbmcoKTtcblx0XHRcdH1cblx0XHRcdGlmICh3YXRjaGxpc3RFeHBpcnkgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR3YXRjaGxpc3RFeHBpcnkgPSAnaW5maW5pdHknO1xuXHRcdFx0fSBlbHNlIGlmICh3YXRjaGxpc3RFeHBpcnkgaW5zdGFuY2VvZiBNb3JlYml0cy5kYXRlIHx8IHdhdGNobGlzdEV4cGlyeSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0d2F0Y2hsaXN0RXhwaXJ5ID0gd2F0Y2hsaXN0RXhwaXJ5LnRvSVNPU3RyaW5nKCk7XG5cdFx0XHR9XG5cdFx0XHRzd2l0Y2ggKHdhdGNobGlzdE9wdGlvbikge1xuXHRcdFx0XHRjYXNlICdub2NoYW5nZSc6XG5cdFx0XHRcdGNhc2UgJ25vJzpcblx0XHRcdFx0Y2FzZSBmYWxzZTpcblx0XHRcdFx0Y2FzZSB1bmRlZmluZWQ6XG5cdFx0XHRcdFx0Y3R4LndhdGNobGlzdE9wdGlvbiA9ICdub2NoYW5nZSc7XG5cdFx0XHRcdFx0Ly8gVGhlIE1XIEFQSSBhbGxvd3MgZm9yIGNoYW5naW5nIGV4cGlyeSB3aXRoIG5vY2hhbmdlIChhcyBcIm5vY2hhbmdlXCIgcmVmZXJzIHRvIHRoZSBiaW5hcnkgc3RhdHVzKSxcblx0XHRcdFx0XHQvLyBidXQgYnkga2VlcGluZyB0aGlzIG51bGwgaXQgd2lsbCBkZWZhdWx0IHRvIGFueSBleGlzdGluZyBleHBpcnksIGVuc3VyZSB0aGVyZSBpcyBhY3R1YWxseSBcIm5vIGNoYW5nZS5cIlxuXHRcdFx0XHRcdGN0eC53YXRjaGxpc3RFeHBpcnkgPSBudWxsO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICd1bndhdGNoJzpcblx0XHRcdFx0XHQvLyBleHBpcnkgdW5pbXBvcnRhbnRcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0T3B0aW9uID0gJ3Vud2F0Y2gnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdwcmVmZXJlbmNlcyc6XG5cdFx0XHRcdGNhc2UgJ2RlZmF1bHQnOlxuXHRcdFx0XHRcdGN0eC53YXRjaGxpc3RPcHRpb24gPSAncHJlZmVyZW5jZXMnO1xuXHRcdFx0XHRcdC8vIFRoZSBBUEkgYWxsb3dzIGFuIGV4cGlyeSBoZXJlLCBidXQgdGhlcmUgaXMgYXMgb2YgeWV0IChUMjY1NzE2KVxuXHRcdFx0XHRcdC8vIG5vIGV4cGlyeSBwcmVmZXJlbmNlIG9wdGlvbiwgc28gaXQncyBhIGJpdCBkZXZvaWQgb2YgY29udGV4dC5cblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0RXhwaXJ5ID0gd2F0Y2hsaXN0RXhwaXJ5O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICd3YXRjaCc6XG5cdFx0XHRcdGNhc2UgJ3llcyc6XG5cdFx0XHRcdGNhc2UgdHJ1ZTpcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0T3B0aW9uID0gJ3dhdGNoJztcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0RXhwaXJ5ID0gd2F0Y2hsaXN0RXhwaXJ5O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdC8vIE5vdCByZWFsbHkgYSBcImRlZmF1bHRcIiBwZXIgc2UgYnV0IGNhdGNoZXMgXCJhbnkgb3RoZXIgc3RyaW5nXCJcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0T3B0aW9uID0gJ3dhdGNoJztcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0RXhwaXJ5ID0gd2F0Y2hsaXN0T3B0aW9uO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogU2V0IGEgd2F0Y2hsaXN0IGV4cGlyeS4gc2V0V2F0Y2hsaXN0IGNhbiBtb3N0bHkgaGFuZGxlIHRoaXMgYnlcblx0XHQgKiBpdHNlbGYsIHNvIHRoaXMgaXMgaGVyZSBsYXJnZWx5IGZvciBjb21wbGV0ZW5lc3MgYW5kIGNvbXBhdGliaWxpdHlcblx0XHQgKiB3aXRoIHRoZSBmdWxsIHN1aXRlIG9mIG9wdGlvbnMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8TW9yZWJpdHMuZGF0ZXxEYXRlfSBbd2F0Y2hsaXN0RXhwaXJ5PWluZmluaXR5XSAtXG5cdFx0ICogQSBkYXRlLWxpa2Ugc3RyaW5nIG9yIG51bWJlciwgb3IgYSBkYXRlIG9iamVjdC4gIElmIGEgc3RyaW5nIG9yIG51bWJlcixcblx0XHQgKiBjYW4gYmUgcmVsYXRpdmUgKDIgd2Vla3MpIG9yIG90aGVyIHNpbWlsYXJseSBkYXRlLWxpa2UgKGkuZS4gTk9UIFwicG90YXRvXCIpOlxuXHRcdCAqIElTTyA4NjAxOiAyMDM4LTAxLTA5VDAzOjE0OjA3WlxuXHRcdCAqIE1lZGlhV2lraTogMjAzODAxMDkwMzE0MDdcblx0XHQgKiBVTklYOiAyMTQ3NDgzNjQ3XG5cdFx0ICogU1FMOiAyMDM4LTAxLTA5IDAzOjE0OjA3XG5cdFx0ICogQ2FuIGFsc28gYmUgYGluZmluaXR5YCBvciBpbmZpbml0eS1saWtlIChgaW5maW5pdGVgLCBgaW5kZWZpbml0ZWAsIGFuZCBgbmV2ZXJgKS5cblx0XHQgKiBTZWUge0BsaW5rIGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9zb3VyY2UvbWVkaWF3aWtpLWxpYnMtVGltZXN0YW1wL2Jyb3dzZS9tYXN0ZXIvc3JjL0NvbnZlcnRpYmxlVGltZXN0YW1wLnBocDs0ZTUzYjg1OWE5NTgwYzU1OTU4MDc4ZjQ2ZGQ0ZjNhNDRkMGZjYWEwJDU3LTEwOT9hcz1zb3VyY2UmYmxhbWU9b2ZmfVxuXHRcdCAqL1xuXHRcdHRoaXMuc2V0V2F0Y2hsaXN0RXhwaXJ5ID0gKHdhdGNobGlzdEV4cGlyeSkgPT4ge1xuXHRcdFx0aWYgKHdhdGNobGlzdEV4cGlyeSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHdhdGNobGlzdEV4cGlyeSA9ICdpbmZpbml0eSc7XG5cdFx0XHR9IGVsc2UgaWYgKHdhdGNobGlzdEV4cGlyeSBpbnN0YW5jZW9mIE1vcmViaXRzLmRhdGUgfHwgd2F0Y2hsaXN0RXhwaXJ5IGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHR3YXRjaGxpc3RFeHBpcnkgPSB3YXRjaGxpc3RFeHBpcnkudG9JU09TdHJpbmcoKTtcblx0XHRcdH1cblx0XHRcdGN0eC53YXRjaGxpc3RFeHBpcnkgPSB3YXRjaGxpc3RFeHBpcnk7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAZGVwcmVjYXRlZCBBcyBvZiBEZWNlbWJlciAyMDIwLCB1c2Ugc2V0V2F0Y2hsaXN0LlxuXHRcdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW3dhdGNobGlzdE9wdGlvbj1mYWxzZV0gLVxuXHRcdCAqIC0gYFRydWVgOiBwYWdlIHdhdGNobGlzdCBzdGF0dXMgd2lsbCBiZSBzZXQgYmFzZWQgb24gdGhlIHVzZXInc1xuXHRcdCAqIHByZWZlcmVuY2Ugc2V0dGluZ3Mgd2hlbiBgc2F2ZSgpYCBpcyBjYWxsZWQuXG5cdFx0ICogLSBgRmFsc2VgOiB3YXRjaGxpc3Qgc3RhdHVzIG9mIHRoZSBwYWdlIHdpbGwgbm90IGJlIGNoYW5nZWQuXG5cdFx0ICpcblx0XHQgKiBXYXRjaGxpc3Qgbm90ZXM6XG5cdFx0ICogMS4gVGhlIE1lZGlhV2lraSBBUEkgdmFsdWUgb2YgJ3Vud2F0Y2gnLCB3aGljaCBleHBsaWNpdGx5IHJlbW92ZXNcblx0XHQgKiB0aGUgcGFnZSBmcm9tIHRoZSB1c2VyJ3Mgd2F0Y2hsaXN0LCBpcyBub3QgdXNlZC5cblx0XHQgKiAyLiBJZiBib3RoIGBzZXRXYXRjaGxpc3QoKWAgYW5kIGBzZXRXYXRjaGxpc3RGcm9tUHJlZmVyZW5jZXMoKWAgYXJlXG5cdFx0ICogY2FsbGVkLCB0aGUgbGFzdCBjYWxsIHRha2VzIHByaW9yaXR5LlxuXHRcdCAqIDMuIFR3aW5rbGUgbW9kdWxlcyBzaG91bGQgdXNlIHRoZSBhcHByb3ByaWF0ZSBwcmVmZXJlbmNlIHRvIHNldCB0aGUgd2F0Y2hsaXN0IG9wdGlvbnMuXG5cdFx0ICogNC4gTW9zdCBUd2lua2xlIG1vZHVsZXMgdXNlIGBzZXRXYXRjaGxpc3QoKWAuIGBzZXRXYXRjaGxpc3RGcm9tUHJlZmVyZW5jZXMoKWBcblx0XHQgKiBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIGZldyBUd2lua2xlIHdhdGNobGlzdCBwcmVmZXJlbmNlcyB0aGF0XG5cdFx0ICogYWNjZXB0IGEgc3RyaW5nIHZhbHVlIG9mIGBkZWZhdWx0YC5cblx0XHQgKi9cblx0XHR0aGlzLnNldFdhdGNobGlzdEZyb21QcmVmZXJlbmNlcyA9ICh3YXRjaGxpc3RPcHRpb24pID0+IHtcblx0XHRcdGNvbnNvbGUud2Fybihcblx0XHRcdFx0J1tNb3JlYml0c10gTk9URTogTW9yZWJpdHMud2lraS5wYWdlLnNldFdhdGNobGlzdEZyb21QcmVmZXJlbmNlcyB3YXMgZGVwcmVjYXRlZCBEZWNlbWJlciAyMDIwLCBwbGVhc2UgdXNlIHNldFdhdGNobGlzdCdcblx0XHRcdCk7XG5cdFx0XHRpZiAod2F0Y2hsaXN0T3B0aW9uKSB7XG5cdFx0XHRcdGN0eC53YXRjaGxpc3RPcHRpb24gPSAncHJlZmVyZW5jZXMnO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4LndhdGNobGlzdE9wdGlvbiA9ICdub2NoYW5nZSc7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFtmb2xsb3dSZWRpcmVjdD1mYWxzZV0gLVxuXHRcdCAqIC0gYHRydWVgOiBhIG1heGltdW0gb2Ygb25lIHJlZGlyZWN0IHdpbGwgYmUgZm9sbG93ZWQuIEluIHRoZSBldmVudFxuXHRcdCAqIG9mIGEgcmVkaXJlY3QsIGEgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgYW5kIHRoZSByZWRpcmVjdFxuXHRcdCAqIHRhcmdldCBjYW4gYmUgcmV0cmlldmVkIHdpdGggZ2V0UGFnZU5hbWUoKS5cblx0XHQgKiAtIGBmYWxzZWA6IChkZWZhdWx0KSB0aGUgcmVxdWVzdGVkIHBhZ2VOYW1lIHdpbGwgYmUgdXNlZCB3aXRob3V0IHJlZ2FyZCB0byBhbnkgcmVkaXJlY3QuXG5cdFx0ICogQHBhcmFtIHtib29sZWFufSBbZm9sbG93Q3Jvc3NOc1JlZGlyZWN0PXRydWVdIC0gTm90IGFwcGxpY2FibGUgaWYgYGZvbGxvd1JlZGlyZWN0YCBpcyBub3Qgc2V0IHRydWUuXG5cdFx0ICogLSBgdHJ1ZWA6IChkZWZhdWx0KSBmb2xsb3cgcmVkaXJlY3QgZXZlbiBpZiBpdCBpcyBhIGNyb3NzLW5hbWVzcGFjZSByZWRpcmVjdFxuXHRcdCAqIC0gYGZhbHNlYDogZG9uJ3QgZm9sbG93IHJlZGlyZWN0IGlmIGl0IGlzIGNyb3NzLW5hbWVzcGFjZSwgZWRpdCB0aGUgcmVkaXJlY3QgaXRzZWxmLlxuXHRcdCAqL1xuXHRcdHRoaXMuc2V0Rm9sbG93UmVkaXJlY3QgPSAoZm9sbG93UmVkaXJlY3QsIGZvbGxvd0Nyb3NzTnNSZWRpcmVjdCkgPT4ge1xuXHRcdFx0aWYgKGN0eC5wYWdlTG9hZGVkKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdCdJbnRlcm5hbCBlcnJvcjogY2Fubm90IGNoYW5nZSByZWRpcmVjdCBzZXR0aW5nIGFmdGVyIHRoZSBwYWdlIGhhcyBiZWVuIGxvYWRlZCEnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGN0eC5mb2xsb3dSZWRpcmVjdCA9IGZvbGxvd1JlZGlyZWN0O1xuXHRcdFx0Y3R4LmZvbGxvd0Nyb3NzTnNSZWRpcmVjdCA9XG5cdFx0XHRcdGZvbGxvd0Nyb3NzTnNSZWRpcmVjdCA9PT0gdW5kZWZpbmVkID8gY3R4LmZvbGxvd0Nyb3NzTnNSZWRpcmVjdCA6IGZvbGxvd0Nyb3NzTnNSZWRpcmVjdDtcblx0XHR9O1xuXHRcdC8vIGxvb2t1cC1jcmVhdGlvbiBzZXR0ZXIgZnVuY3Rpb25cblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IGZsYWcgLSBJZiBzZXQgdHJ1ZSwgdGhlIGF1dGhvciBhbmQgdGltZXN0YW1wIG9mXG5cdFx0ICogdGhlIGZpcnN0IG5vbi1yZWRpcmVjdCB2ZXJzaW9uIG9mIHRoZSBwYWdlIGlzIHJldHJpZXZlZC5cblx0XHQgKlxuXHRcdCAqIFdhcm5pbmc6XG5cdFx0ICogMS4gSWYgdGhlcmUgYXJlIG5vIHJldmlzaW9ucyBhbW9uZyB0aGUgZmlyc3QgNTAgdGhhdCBhcmVcblx0XHQgKiBub24tcmVkaXJlY3RzLCBvciBpZiB0aGVyZSBhcmUgbGVzcyA1MCByZXZpc2lvbnMgYW5kIGFsbCBhcmVcblx0XHQgKiByZWRpcmVjdHMsIHRoZSBvcmlnaW5hbCBjcmVhdGlvbiBpcyByZXRyaWV2ZWQuXG5cdFx0ICogMi4gUmV2aXNpb25zIHRoYXQgdGhlIHVzZXIgaXMgbm90IHByaXZpbGVnZWQgdG8gYWNjZXNzXG5cdFx0ICogKHJldmRlbGVkL3N1cHByZXNzZWQpIHdpbGwgYmUgdHJlYXRlZCBhcyBub24tcmVkaXJlY3RzLlxuXHRcdCAqIDMuIE11c3Qgbm90IGJlIHVzZWQgd2hlbiB0aGUgcGFnZSBoYXMgYSBub24td2lraXRleHQgY29udGVudG1vZGVsXG5cdFx0ICogc3VjaCBhcyBNb2R1bGVzcGFjZSBMdWEgb3IgdXNlciBKYXZhU2NyaXB0L0NTUy5cblx0XHQgKi9cblx0XHR0aGlzLnNldExvb2t1cE5vblJlZGlyZWN0Q3JlYXRvciA9IChmbGFnKSA9PiB7XG5cdFx0XHRjdHgubG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yID0gZmxhZztcblx0XHR9O1xuXHRcdC8vIE1vdmUtcmVsYXRlZCBzZXR0ZXIgZnVuY3Rpb25zXG5cdFx0LyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvbiAqL1xuXHRcdHRoaXMuc2V0TW92ZURlc3RpbmF0aW9uID0gKGRlc3RpbmF0aW9uKSA9PiB7XG5cdFx0XHRjdHgubW92ZURlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG5cdFx0fTtcblx0XHQvKiogQHBhcmFtIHtib29sZWFufSBmbGFnICovXG5cdFx0dGhpcy5zZXRNb3ZlVGFsa1BhZ2UgPSAoZmxhZykgPT4ge1xuXHRcdFx0Y3R4Lm1vdmVUYWxrUGFnZSA9ICEhZmxhZztcblx0XHR9O1xuXHRcdC8qKiBAcGFyYW0ge2Jvb2xlYW59IGZsYWcgKi9cblx0XHR0aGlzLnNldE1vdmVTdWJwYWdlcyA9IChmbGFnKSA9PiB7XG5cdFx0XHRjdHgubW92ZVN1YnBhZ2VzID0gISFmbGFnO1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7Ym9vbGVhbn0gZmxhZyAqL1xuXHRcdHRoaXMuc2V0TW92ZVN1cHByZXNzUmVkaXJlY3QgPSAoZmxhZykgPT4ge1xuXHRcdFx0Y3R4Lm1vdmVTdXBwcmVzc1JlZGlyZWN0ID0gISFmbGFnO1xuXHRcdH07XG5cdFx0Ly8gUHJvdGVjdC1yZWxhdGVkIHNldHRlciBmdW5jdGlvbnNcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gbGV2ZWwgLSBUaGUgcmlnaHQgcmVxdWlyZWQgZm9yIHRoZSBzcGVjaWZpYyBhY3Rpb25cblx0XHQgKiBlLmcuIHN5c29wLCB0ZW1wbGF0ZWVkaXRvciwgYXV0b2NvbmZpcm1lZFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwaXJ5PWluZmluaXR5XVxuXHRcdCAqL1xuXHRcdHRoaXMuc2V0RWRpdFByb3RlY3Rpb24gPSAobGV2ZWwsIGV4cGlyeSkgPT4ge1xuXHRcdFx0Y3R4LnByb3RlY3RFZGl0ID0ge1xuXHRcdFx0XHRsZXZlbCxcblx0XHRcdFx0ZXhwaXJ5OiBleHBpcnkgfHwgJ2luZmluaXR5Jyxcblx0XHRcdH07XG5cdFx0fTtcblx0XHR0aGlzLnNldE1vdmVQcm90ZWN0aW9uID0gKGxldmVsLCBleHBpcnkpID0+IHtcblx0XHRcdGN0eC5wcm90ZWN0TW92ZSA9IHtcblx0XHRcdFx0bGV2ZWwsXG5cdFx0XHRcdGV4cGlyeTogZXhwaXJ5IHx8ICdpbmZpbml0eScsXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0dGhpcy5zZXRDcmVhdGVQcm90ZWN0aW9uID0gKGxldmVsLCBleHBpcnkpID0+IHtcblx0XHRcdGN0eC5wcm90ZWN0Q3JlYXRlID0ge1xuXHRcdFx0XHRsZXZlbCxcblx0XHRcdFx0ZXhwaXJ5OiBleHBpcnkgfHwgJ2luZmluaXR5Jyxcblx0XHRcdH07XG5cdFx0fTtcblx0XHR0aGlzLnNldENhc2NhZGluZ1Byb3RlY3Rpb24gPSAoZmxhZykgPT4ge1xuXHRcdFx0Y3R4LnByb3RlY3RDYXNjYWRlID0gISFmbGFnO1xuXHRcdH07XG5cdFx0dGhpcy5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nID0gKCkgPT4ge1xuXHRcdFx0Y3R4LnN1cHByZXNzUHJvdGVjdFdhcm5pbmcgPSB0cnVlO1xuXHRcdH07XG5cdFx0Ly8gUmV2ZXJ0LXJlbGF0ZWQgZ2V0dGVycy9zZXR0ZXJzOlxuXHRcdHRoaXMuc2V0T2xkSUQgPSAob2xkSUQpID0+IHtcblx0XHRcdGN0eC5yZXZlcnRPbGRJRCA9IG9sZElEO1xuXHRcdH07XG5cdFx0LyoqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjdXJyZW50IHJldmlzaW9uIElEIG9mIHRoZSBwYWdlICovXG5cdFx0dGhpcy5nZXRDdXJyZW50SUQgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnJldmVydEN1cklEO1xuXHRcdH07XG5cdFx0LyoqIEByZXR1cm5zIHtzdHJpbmd9IExhc3QgZWRpdG9yIG9mIHRoZSBwYWdlICovXG5cdFx0dGhpcy5nZXRSZXZpc2lvblVzZXIgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnJldmVydFVzZXI7XG5cdFx0fTtcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gSVNPIDg2MDEgdGltZXN0YW1wIGF0IHdoaWNoIHRoZSBwYWdlIHdhcyBsYXN0IGVkaXRlZC4gKi9cblx0XHR0aGlzLmdldExhc3RFZGl0VGltZSA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHgubGFzdEVkaXRUaW1lO1xuXHRcdH07XG5cdFx0Ly8gTWlzY2VsbGFuZW91cyBnZXR0ZXJzL3NldHRlcnM6XG5cdFx0LyoqXG5cdFx0ICogRGVmaW5lIGFuIG9iamVjdCBmb3IgdXNlIGluIGEgY2FsbGJhY2sgZnVuY3Rpb24uXG5cdFx0ICpcblx0XHQgKiBgY2FsbGJhY2tQYXJhbWV0ZXJzYCBpcyBmb3IgdXNlIGJ5IHRoZSBjYWxsZXIgb25seS4gVGhlIHBhcmFtZXRlcnNcblx0XHQgKiBhbGxvdyBhIGNhbGxlciB0byBwYXNzIHRoZSBwcm9wZXIgY29udGV4dCBpbnRvIGl0cyBjYWxsYmFja1xuXHRcdCAqIGZ1bmN0aW9uLiAgQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IGFueSBjaGFuZ2VzIHRvIHRoZVxuXHRcdCAqIGNhbGxiYWNrUGFyYW1ldGVycyBvYmplY3Qgd2l0aGluIGEgYGxvYWQoKWAgY2FsbGJhY2sgc3RpbGwgcGVybWl0IGFcblx0XHQgKiBwcm9wZXIgcmUtZW50cnkgaW50byB0aGUgYGxvYWQoKWAgY2FsbGJhY2sgaWYgYW4gZWRpdCBjb25mbGljdCBpc1xuXHRcdCAqIGRldGVjdGVkIHVwb24gY2FsbGluZyBgc2F2ZSgpYC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBjYWxsYmFja1BhcmFtZXRlcnNcblx0XHQgKi9cblx0XHR0aGlzLnNldENhbGxiYWNrUGFyYW1ldGVycyA9IChjYWxsYmFja1BhcmFtZXRlcnMpID0+IHtcblx0XHRcdGN0eC5jYWxsYmFja1BhcmFtZXRlcnMgPSBjYWxsYmFja1BhcmFtZXRlcnM7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcmV0dXJucyB7T2JqZWN0fSAtIFRoZSBvYmplY3QgcHJldmlvdXNseSBzZXQgYnkgYHNldENhbGxiYWNrUGFyYW1ldGVycygpYC5cblx0XHQgKi9cblx0XHR0aGlzLmdldENhbGxiYWNrUGFyYW1ldGVycyA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHguY2FsbGJhY2tQYXJhbWV0ZXJzO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHBhcmFtIHtNb3JlYml0cy5zdGF0dXN9IHN0YXR1c0VsZW1lbnRcblx0XHQgKi9cblx0XHR0aGlzLnNldFN0YXR1c0VsZW1lbnQgPSAoc3RhdHVzRWxlbWVudCkgPT4ge1xuXHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQgPSBzdGF0dXNFbGVtZW50O1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnN0YXR1c30gU3RhdHVzIGVsZW1lbnQgY3JlYXRlZCBieSB0aGUgY29uc3RydWN0b3IuXG5cdFx0ICovXG5cdFx0dGhpcy5nZXRTdGF0dXNFbGVtZW50ID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuIGN0eC5zdGF0dXNFbGVtZW50O1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBhZ2UgZXhpc3RlZCBvbiB0aGUgd2lraSB3aGVuIGl0IHdhcyBsYXN0IGxvYWRlZC5cblx0XHQgKi9cblx0XHR0aGlzLmV4aXN0cyA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHgucGFnZUV4aXN0cztcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9IFBhZ2UgSUQgb2YgdGhlIHBhZ2UgbG9hZGVkLiAwIGlmIHRoZSBwYWdlIGRvZXNuJ3Rcblx0XHQgKiBleGlzdC5cblx0XHQgKi9cblx0XHR0aGlzLmdldFBhZ2VJRCA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHgucGFnZUlEO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge3N0cmluZ30gLSBDb250ZW50IG1vZGVsIG9mIHRoZSBwYWdlLiAgUG9zc2libGUgdmFsdWVzXG5cdFx0ICogaW5jbHVkZSAoYnV0IG1heSBub3QgYmUgbGltaXRlZCB0byk6IGB3aWtpdGV4dGAsIGBqYXZhc2NyaXB0YCxcblx0XHQgKiBgY3NzYCwgYGpzb25gLCBgU2NyaWJ1bnRvYCwgYHNhbml0aXplZC1jc3NgLCBgTWFzc01lc3NhZ2VMaXN0Q29udGVudGAuXG5cdFx0ICogQWxzbyBnZXR0YWJsZSB2aWEgYG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpYC5cblx0XHQgKi9cblx0XHR0aGlzLmdldENvbnRlbnRNb2RlbCA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHguY29udGVudE1vZGVsO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW58c3RyaW5nfSAtIFdhdGNoZWQgc3RhdHVzIG9mIHRoZSBwYWdlLiBCb29sZWFuXG5cdFx0ICogdW5sZXNzIGl0J3MgYmVpbmcgd2F0Y2hlZCB0ZW1wb3JhcmlseSwgaW4gd2hpY2ggY2FzZSByZXR1cm5zIHRoZVxuXHRcdCAqIGV4cGlyeSBzdHJpbmcuXG5cdFx0ICovXG5cdFx0dGhpcy5nZXRXYXRjaGVkID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuIGN0eC53YXRjaGVkO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge3N0cmluZ30gSVNPIDg2MDEgdGltZXN0YW1wIGF0IHdoaWNoIHRoZSBwYWdlIHdhcyBsYXN0IGxvYWRlZC5cblx0XHQgKi9cblx0XHR0aGlzLmdldExvYWRUaW1lID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuIGN0eC5sb2FkVGltZTtcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB1c2VyIHdobyBjcmVhdGVkIHRoZSBwYWdlIGZvbGxvd2luZyBgbG9va3VwQ3JlYXRpb24oKWAuXG5cdFx0ICovXG5cdFx0dGhpcy5nZXRDcmVhdG9yID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuIGN0eC5jcmVhdG9yO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIElTT1N0cmluZyB0aW1lc3RhbXAgb2YgcGFnZSBjcmVhdGlvbiBmb2xsb3dpbmcgYGxvb2t1cENyZWF0aW9uKClgLlxuXHRcdCAqL1xuXHRcdHRoaXMuZ2V0Q3JlYXRpb25UaW1lc3RhbXAgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnRpbWVzdGFtcDtcblx0XHR9O1xuXHRcdC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gd2hldGhlciBvciBub3QgeW91IGNhbiBlZGl0IHRoZSBwYWdlICovXG5cdFx0dGhpcy5jYW5FZGl0ID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuICEhY3R4LnRlc3RBY3Rpb25zICYmIGN0eC50ZXN0QWN0aW9ucy5pbmNsdWRlcygnZWRpdCcpO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogUmV0cmlldmVzIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlciB3aG8gY3JlYXRlZCB0aGUgcGFnZSBhcyB3ZWxsIGFzXG5cdFx0ICogdGhlIHRpbWVzdGFtcCBvZiBjcmVhdGlvbi4gIFRoZSB1c2VybmFtZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZVxuXHRcdCAqIGBnZXRDcmVhdG9yKClgIGZ1bmN0aW9uOyB0aGUgdGltZXN0YW1wIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlXG5cdFx0ICogYGdldENyZWF0aW9uVGltZXN0YW1wKClgIGZ1bmN0aW9uLlxuXHRcdCAqIFByaW9yIHRvIEp1bmUgMjAxOSBrbm93biBhcyBgbG9va3VwQ3JlYXRvcigpYC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IG9uU3VjY2VzcyAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuXG5cdFx0ICogdGhlIHVzZXJuYW1lIGFuZCB0aW1lc3RhbXAgYXJlIGZvdW5kIHdpdGhpbiB0aGUgY2FsbGJhY2suXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlblxuXHRcdCAqIHRoZSBsb29rdXAgZmFpbHNcblx0XHQgKi9cblx0XHR0aGlzLmxvb2t1cENyZWF0aW9uID0gZnVuY3Rpb24gKG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvblN1Y2Nlc3MgPSBvblN1Y2Nlc3M7XG5cdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvbkZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghb25TdWNjZXNzKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKCdJbnRlcm5hbCBlcnJvcjogbm8gb25TdWNjZXNzIGNhbGxiYWNrIHByb3ZpZGVkIHRvIGxvb2t1cENyZWF0aW9uKCkhJyk7XG5cdFx0XHRcdGN0eC5vbkxvb2t1cENyZWF0aW9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0cHJvcDogJ3JldmlzaW9ucycsXG5cdFx0XHRcdHRpdGxlczogY3R4LnBhZ2VOYW1lLFxuXHRcdFx0XHRydmxpbWl0OiAxLFxuXHRcdFx0XHRydnByb3A6ICd1c2VyfHRpbWVzdGFtcCcsXG5cdFx0XHRcdHJ2ZGlyOiAnbmV3ZXInLFxuXHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdH07XG5cdFx0XHQvLyBPbmx5IHRoZSB3aWtpdGV4dCBjb250ZW50IG1vZGVsIGNhbiByZWxpYWJseSBoYW5kbGVcblx0XHRcdC8vIHJ2c2VjdGlvbiwgb3RoZXJzIHJldHVybiBhbiBlcnJvciB3aGVuIHBhaXJlZCB3aXRoIHRoZVxuXHRcdFx0Ly8gY29udGVudCBydnByb3AuIFJlbGF0ZWRseSwgbm9uLXdpa2l0ZXh0IG1vZGVscyBkb24ndFxuXHRcdFx0Ly8gdW5kZXJzdGFuZCB0aGUgI1JFRElSRUNUIGNvbmNlcHQsIHNvIHdlIHNob3VsZG4ndCBhdHRlbXB0XG5cdFx0XHQvLyB0aGUgcmVkaXJlY3QgcmVzb2x1dGlvbiBpbiBmbkxvb2t1cENyZWF0aW9uU3VjY2Vzc1xuXHRcdFx0aWYgKGN0eC5sb29rdXBOb25SZWRpcmVjdENyZWF0b3IpIHtcblx0XHRcdFx0cXVlcnkucnZzZWN0aW9uID0gMDtcblx0XHRcdFx0cXVlcnkucnZwcm9wICs9ICd8Y29udGVudCc7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3R4LmZvbGxvd1JlZGlyZWN0KSB7XG5cdFx0XHRcdHF1ZXJ5LnJlZGlyZWN0cyA9ICcnOyAvLyBmb2xsb3cgYWxsIHJlZGlyZWN0c1xuXHRcdFx0fVxuXG5cdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oqT5Y+W6aG16Z2i5Yib5bu66ICF5L+h5oGvJywgJ+aKk+WPlumggemdouW7uueri+iAheizh+ioiicpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0Zm5Mb29rdXBDcmVhdGlvblN1Y2Nlc3MsXG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LFxuXHRcdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvbkZhaWx1cmVcblx0XHRcdCk7XG5cdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4Lmxvb2t1cENyZWF0aW9uQXBpLnBvc3QoKTtcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIFJldmVydHMgYSBwYWdlIHRvIGByZXZlcnRPbGRJRGAgc2V0IGJ5IGBzZXRPbGRJRGAuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25TdWNjZXNzXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biBvbiBzdWNjZXNzLlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvbkZhaWx1cmVdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuIG9uIGZhaWx1cmUuXG5cdFx0ICovXG5cdFx0dGhpcy5yZXZlcnQgPSBmdW5jdGlvbiAob25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcblx0XHRcdGN0eC5vblNhdmVTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0Y3R4Lm9uU2F2ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghY3R4LnJldmVydE9sZElEKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKCdJbnRlcm5hbCBlcnJvcjogcmV2aXNpb24gSUQgdG8gcmV2ZXJ0IHRvIHdhcyBub3Qgc2V0IGJlZm9yZSByZXZlcnQhJyk7XG5cdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAncmV2ZXJ0Jztcblx0XHRcdHRoaXMubG9hZChmbkF1dG9TYXZlLCBjdHgub25TYXZlRmFpbHVyZSk7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBNb3ZlcyBhIHBhZ2UgdG8gYW5vdGhlciB0aXRsZS5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvblN1Y2Nlc3NdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuIG9uIHN1Y2Nlc3MuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gb24gZmFpbHVyZS5cblx0XHQgKi9cblx0XHR0aGlzLm1vdmUgPSBmdW5jdGlvbiAob25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcblx0XHRcdGN0eC5vbk1vdmVTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0Y3R4Lm9uTW92ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghZm5QcmVmbGlnaHRDaGVja3MuY2FsbCh0aGlzLCAnbW92ZScsIGN0eC5vbk1vdmVGYWlsdXJlKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIGFib3J0XG5cdFx0XHR9XG5cblx0XHRcdGlmICghY3R4Lm1vdmVEZXN0aW5hdGlvbikge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcignSW50ZXJuYWwgZXJyb3I6IGRlc3RpbmF0aW9uIHBhZ2UgbmFtZSB3YXMgbm90IHNldCBiZWZvcmUgbW92ZSEnKTtcblx0XHRcdFx0Y3R4Lm9uTW92ZUZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdtb3ZlJykpIHtcblx0XHRcdFx0Zm5Qcm9jZXNzTW92ZS5jYWxsKHRoaXMsIHRoaXMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgcXVlcnkgPSBmbk5lZWRUb2tlbkluZm9RdWVyeSgnbW92ZScpO1xuXHRcdFx0XHRjdHgubW92ZUFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPluS7pOeJjOKApuKApicsICflj5blvpfmrIrmnZbigKbigKYnKSxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRmblByb2Nlc3NNb3ZlLFxuXHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LFxuXHRcdFx0XHRcdGN0eC5vbk1vdmVGYWlsdXJlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGN0eC5tb3ZlQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdFx0Y3R4Lm1vdmVBcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogTWFya3MgdGhlIHBhZ2UgYXMgcGF0cm9sbGVkLCB1c2luZyBgcmNpZGAgKGlmIGF2YWlsYWJsZSkgb3IgYHJldmlkYC5cblx0XHQgKlxuXHRcdCAqIFBhdHJvbGxpbmcgYXMgc3VjaCBkb2Vzbid0IG5lZWQgdG8gcmVseSBvbiBsb2FkaW5nIHRoZSBwYWdlIGluXG5cdFx0ICogcXVlc3Rpb247IHNpbXBseSBwYXNzaW5nIGEgcmV2aWQgdG8gdGhlIEFQSSBpcyBzdWZmaWNpZW50LCBzbyBpblxuXHRcdCAqIHRob3NlIGNhc2VzIGp1c3QgdXNpbmcge0BsaW5rIE1vcmViaXRzLndpa2kuYXBpfSBpcyBwcm9iYWJseSBwcmVmZXJhYmxlLlxuXHRcdCAqXG5cdFx0ICogTm8gZXJyb3IgaGFuZGxpbmcgc2luY2Ugd2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgZXJyb3JzLlxuXHRcdCAqL1xuXHRcdHRoaXMucGF0cm9sID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0aWYgKCFNb3JlYml0cy51c2VySXNTeXNvcCAmJiAhTW9yZWJpdHMudXNlcklzSW5Hcm91cCgncGF0cm9sbGVyJykpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdFx0XHQvLyBJZiBhIGxpbmsgaXMgcHJlc2VudCwgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiBpdCdzIHBhdHJvbGxlZFxuXHRcdFx0aWYgKCRib2R5LmZpbmQoJy5wYXRyb2xsaW5rJykubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IHBhdHJvbGhyZWYgPSAkYm9keS5maW5kKCcucGF0cm9sbGluayBhJykuYXR0cignaHJlZicpO1xuXHRcdFx0XHRjdHgucmNpZCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncmNpZCcsIHBhdHJvbGhyZWYpO1xuXHRcdFx0XHRmblByb2Nlc3NQYXRyb2wodGhpcywgdGhpcyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBwYXRyb2xRdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0XHRcdG1ldGE6ICd0b2tlbnMnLFxuXHRcdFx0XHRcdHR5cGU6ICdwYXRyb2wnLFxuXHRcdFx0XHRcdC8vIGFzIGxvbmcgYXMgd2UncmUgcXVlcnlpbmcsIG1pZ2h0IGFzIHdlbGwgZ2V0IGEgdG9rZW5cblx0XHRcdFx0XHRsaXN0OiAncmVjZW50Y2hhbmdlcycsXG5cdFx0XHRcdFx0Ly8gY2hlY2sgaWYgdGhlIHBhZ2UgaXMgdW5wYXRyb2xsZWRcblx0XHRcdFx0XHR0aXRsZXM6IGN0eC5wYWdlTmFtZSxcblx0XHRcdFx0XHRyY3Byb3A6ICdwYXRyb2xsZWQnLFxuXHRcdFx0XHRcdHJjdGl0bGU6IGN0eC5wYWdlTmFtZSxcblx0XHRcdFx0XHRyY2xpbWl0OiAxLFxuXHRcdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjdHgucGF0cm9sQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5Luk54mM4oCm4oCmJywgJ+WPluW+l+asiuadluKApuKApicpLFxuXHRcdFx0XHRcdHBhdHJvbFF1ZXJ5LFxuXHRcdFx0XHRcdGZuUHJvY2Vzc1BhdHJvbFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjdHgucGF0cm9sQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdFx0Y3R4LnBhdHJvbEFwaS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvLyB8ZGVsZXRlfCBpcyBhIHJlc2VydmVkIHdvcmQgaW4gc29tZSBmbGF2b3VycyBvZiBKU1xuXHRcdC8qKlxuXHRcdCAqIERlbGV0ZXMgYSBwYWdlIChmb3IgYWRtaW5zIG9ubHkpLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uU3VjY2Vzc10gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gb24gc3VjY2Vzcy5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25GYWlsdXJlXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biBvbiBmYWlsdXJlLlxuXHRcdCAqL1xuXHRcdHRoaXMuZGVsZXRlUGFnZSA9IGZ1bmN0aW9uIChvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuXHRcdFx0Y3R4Lm9uRGVsZXRlU3VjY2VzcyA9IG9uU3VjY2Vzcztcblx0XHRcdGN0eC5vbkRlbGV0ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghZm5QcmVmbGlnaHRDaGVja3MuY2FsbCh0aGlzLCAnZGVsZXRlJywgY3R4Lm9uRGVsZXRlRmFpbHVyZSkpIHtcblx0XHRcdFx0cmV0dXJuOyAvLyBhYm9ydFxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZm5DYW5Vc2VNd1VzZXJUb2tlbignZGVsZXRlJykpIHtcblx0XHRcdFx0Zm5Qcm9jZXNzRGVsZXRlLmNhbGwodGhpcywgdGhpcyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBxdWVyeSA9IGZuTmVlZFRva2VuSW5mb1F1ZXJ5KCdkZWxldGUnKTtcblx0XHRcdFx0Y3R4LmRlbGV0ZUFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPluS7pOeJjOKApuKApicsICflj5blvpfmrIrmnZbigKbigKYnKSxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRmblByb2Nlc3NEZWxldGUsXG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdFx0Y3R4Lm9uRGVsZXRlRmFpbHVyZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjdHguZGVsZXRlQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdFx0Y3R4LmRlbGV0ZUFwaS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBVbmRlbGV0ZXMgYSBwYWdlIChmb3IgYWRtaW5zIG9ubHkpLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uU3VjY2Vzc10gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gb24gc3VjY2Vzcy5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25GYWlsdXJlXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biBvbiBmYWlsdXJlLlxuXHRcdCAqL1xuXHRcdHRoaXMudW5kZWxldGVQYWdlID0gZnVuY3Rpb24gKG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cdFx0XHRjdHgub25VbmRlbGV0ZVN1Y2Nlc3MgPSBvblN1Y2Nlc3M7XG5cdFx0XHRjdHgub25VbmRlbGV0ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghZm5QcmVmbGlnaHRDaGVja3MuY2FsbCh0aGlzLCAndW5kZWxldGUnLCBjdHgub25VbmRlbGV0ZUZhaWx1cmUpKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gYWJvcnRcblx0XHRcdH1cblxuXHRcdFx0aWYgKGZuQ2FuVXNlTXdVc2VyVG9rZW4oJ3VuZGVsZXRlJykpIHtcblx0XHRcdFx0Zm5Qcm9jZXNzVW5kZWxldGUuY2FsbCh0aGlzLCB0aGlzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHF1ZXJ5ID0gZm5OZWVkVG9rZW5JbmZvUXVlcnkoJ3VuZGVsZXRlJyk7XG5cdFx0XHRcdGN0eC51bmRlbGV0ZUFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPluS7pOeJjOKApuKApicsICflj5blvpfmrIrmnZbigKbigKYnKSxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRmblByb2Nlc3NVbmRlbGV0ZSxcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0XHRjdHgub25VbmRlbGV0ZUZhaWx1cmVcblx0XHRcdFx0KTtcblx0XHRcdFx0Y3R4LnVuZGVsZXRlQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdFx0Y3R4LnVuZGVsZXRlQXBpLnBvc3QoKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIFByb3RlY3RzIGEgcGFnZSAoZm9yIGFkbWlucyBvbmx5KS5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvblN1Y2Nlc3NdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuIG9uIHN1Y2Nlc3MuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gb24gZmFpbHVyZS5cblx0XHQgKi9cblx0XHR0aGlzLnByb3RlY3QgPSBmdW5jdGlvbiAob25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcblx0XHRcdGN0eC5vblByb3RlY3RTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0Y3R4Lm9uUHJvdGVjdEZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghZm5QcmVmbGlnaHRDaGVja3MuY2FsbCh0aGlzLCAncHJvdGVjdCcsIGN0eC5vblByb3RlY3RGYWlsdXJlKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIGFib3J0XG5cdFx0XHR9XG5cblx0XHRcdGlmICghY3R4LnByb3RlY3RFZGl0ICYmICFjdHgucHJvdGVjdE1vdmUgJiYgIWN0eC5wcm90ZWN0Q3JlYXRlKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdCdJbnRlcm5hbCBlcnJvcjogeW91IG11c3Qgc2V0IGVkaXQgYW5kL29yIG1vdmUgYW5kL29yIGNyZWF0ZSBwcm90ZWN0aW9uIGJlZm9yZSBjYWxsaW5nIHByb3RlY3QoKSEnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGN0eC5vblByb3RlY3RGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBiZWNhdXNlIG9mIHRoZSB3YXkgTVcgQVBJIGludGVycHJldHMgcHJvdGVjdGlvbiBsZXZlbHNcblx0XHRcdC8vIChhYnNvbHV0ZSwgbm90IGRpZmZlcmVudGlhbCksIHdlIGFsd2F5cyBuZWVkIHRvIHJlcXVlc3Rcblx0XHRcdC8vIHByb3RlY3Rpb24gbGV2ZWxzIGZyb20gdGhlIHNlcnZlclxuXHRcdFx0Y29uc3QgcXVlcnkgPSBmbk5lZWRUb2tlbkluZm9RdWVyeSgncHJvdGVjdCcpO1xuXHRcdFx0Y3R4LnByb3RlY3RBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5Luk54mM4oCm4oCmJywgJ+WPluW+l+asiuadluKApuKApicpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0Zm5Qcm9jZXNzUHJvdGVjdCxcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdGN0eC5vblByb3RlY3RGYWlsdXJlXG5cdFx0XHQpO1xuXHRcdFx0Y3R4LnByb3RlY3RBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4LnByb3RlY3RBcGkucG9zdCgpO1xuXHRcdH07XG5cdFx0Lypcblx0XHQgKiBQcml2YXRlIG1lbWJlciBmdW5jdGlvbnNcblx0XHQgKiBUaGVzZSBhcmUgbm90IGV4cG9zZWQgb3V0c2lkZVxuXHRcdCAqL1xuXHRcdC8qKlxuXHRcdCAqIERldGVybWluZXMgd2hldGhlciB3ZSBjYW4gc2F2ZSBhbiBBUEkgY2FsbCBieSB1c2luZyB0aGUgY3NyZiB0b2tlblxuXHRcdCAqIHNlbnQgd2l0aCB0aGUgcGFnZSBIVE1MLCBvciB3aGV0aGVyIHdlIG5lZWQgdG8gYXNrIHRoZSBzZXJ2ZXIgZm9yXG5cdFx0ICogbW9yZSBpbmZvIChlLmcuIHByb3RlY3Rpb24gb3Igd2F0Y2hsaXN0IGV4cGlyeSkuXG5cdFx0ICpcblx0XHQgKiBDdXJyZW50bHkgdXNlZCBmb3IgYGFwcGVuZGAsIGBwcmVwZW5kYCwgYG5ld1NlY3Rpb25gLCBgbW92ZWAsXG5cdFx0ICogYGRlbGV0ZVBhZ2VgLCBhbmQgYHVuZGVsZXRlUGFnZWAuIE5vdCB1c2VkIGZvciBgcHJvdGVjdGBcblx0XHQgKiBzaW5jZSBpdCBhbHdheXMgbmVlZHMgdG8gcmVxdWVzdCBwcm90ZWN0aW9uIHN0YXR1cy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbYWN0aW9uPWVkaXRdIC0gVGhlIGFjdGlvbiBiZWluZyB1bmRlcnRha2VuLCBlLmcuXG5cdFx0ICogXCJlZGl0XCIgb3IgXCJkZWxldGVcIi4gSW4gcHJhY3RpY2UsIG9ubHkgXCJlZGl0XCIgb3IgXCJub3RlZGl0XCIgbWF0dGVycy5cblx0XHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0XHQgKi9cblx0XHRjb25zdCBmbkNhblVzZU13VXNlclRva2VuID0gKGFjdGlvbikgPT4ge1xuXHRcdFx0YWN0aW9uIHx8PSAnZWRpdCc7XG5cdFx0XHQvLyBJZiBhIHdhdGNobGlzdCBleHBpcnkgaXMgc2V0LCB3ZSBtdXN0IGFsd2F5cyBsb2FkIHRoZSBwYWdlXG5cdFx0XHQvLyB0byBhdm9pZCBvdmVyd3JpdGluZyBpbmRlZmluaXRlIHByb3RlY3Rpb24uICBPZiBjb3Vyc2UsIG5vdFxuXHRcdFx0Ly8gbmVlZGVkIGlmIHNldHRpbmcgaW5kZWZpbml0ZSB3YXRjaGluZyFcblx0XHRcdGlmIChjdHgud2F0Y2hsaXN0RXhwaXJ5ICYmICFNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShjdHgud2F0Y2hsaXN0RXhwaXJ5KSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHQvLyBBUEktYmFzZWQgcmVkaXJlY3QgcmVzb2x1dGlvbiBvbmx5IHdvcmtzIGZvciBhY3Rpb249cXVlcnkgYW5kXG5cdFx0XHQvLyBhY3Rpb249ZWRpdCBpbiBhcHBlbmQvcHJlcGVuZC9uZXcgbW9kZXNcblx0XHRcdGlmIChjdHguZm9sbG93UmVkaXJlY3QpIHtcblx0XHRcdFx0aWYgKCFjdHguZm9sbG93Q3Jvc3NOc1JlZGlyZWN0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBtdXN0IGxvYWQgdGhlIHBhZ2UgdG8gY2hlY2sgZm9yIGNyb3NzIG5hbWVzcGFjZSByZWRpcmVjdHNcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChhY3Rpb24gIT09ICdlZGl0JyB8fCBjdHguZWRpdE1vZGUgPT09ICdhbGwnIHx8IGN0eC5lZGl0TW9kZSA9PT0gJ3JldmVydCcpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIGRvIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGVkaXQgcHJvdGVjdGlvbiBleHBpcnk/XG5cdFx0XHRpZiAoTW9yZWJpdHMudXNlcklzU3lzb3AgJiYgIWN0eC5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRuZXcgbXcuVGl0bGUoTW9yZWJpdHMucGFnZU5hbWVOb3JtKS5nZXRQcmVmaXhlZFRleHQoKSAhPT1cblx0XHRcdFx0XHRuZXcgbXcuVGl0bGUoY3R4LnBhZ2VOYW1lKS5nZXRQcmVmaXhlZFRleHQoKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gd2dSZXN0cmljdGlvbkVkaXQgaXMgbnVsbCBvbiBub24tZXhpc3RlbnQgcGFnZXMsXG5cdFx0XHRcdC8vIHNvIHRoaXMgbmVhdGx5IGhhbmRsZXMgbm9uZXhpc3RlbnQgcGFnZXNcblx0XHRcdFx0Y29uc3QgZWRpdFJlc3RyaWN0aW9uID0gbXcuY29uZmlnLmdldCgnd2dSZXN0cmljdGlvbkVkaXQnKTtcblx0XHRcdFx0aWYgKCFlZGl0UmVzdHJpY3Rpb24gfHwgZWRpdFJlc3RyaWN0aW9uLmluY2x1ZGVzKCdzeXNvcCcpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gISFtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogV2hlbiBmdW5jdGlvbnMgY2FuJ3QgdXNlXG5cdFx0ICoge0BsaW5rIE1vcmViaXRzLndpa2kucGFnZX5mbkNhblVzZU13VXNlclRva2VufGZuQ2FuVXNlTXdVc2VyVG9rZW59XG5cdFx0ICogb3IgcmVxdWlyZSBjaGVja2luZyBwcm90ZWN0aW9uIG9yIHdhdGNoZWQgc3RhdHVzLCBtYWludGFpbiB0aGUgcXVlcnlcblx0XHQgKiBpbiBvbmUgcGxhY2UuIFVzZWQgZm9yIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2UjZGVsZXRlUGFnZXxkZWxldGV9LFxuXHRcdCAqIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2UjdW5kZWxldGVQYWdlfHVuZGVsZXRlfSxcblx0XHQgKiB7QGxpbmsqIE1vcmViaXRzLndpa2kucGFnZSNwcm90ZWN0fHByb3RlY3R9LFxuXHRcdCAqIGFuZCB7QGxpbmsgTW9yZWJpdHMud2lraS5wYWdlI21vdmV8bW92ZX1cblx0XHQgKiAoYmFzaWNhbGx5LCBqdXN0IG5vdCB7QGxpbmsgTW9yZWJpdHMud2lraS5wYWdlI2xvYWR8bG9hZH0pLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbiAtIFRoZSBhY3Rpb24gYmVpbmcgdW5kZXJ0YWtlbiwgZS5nLiBcImVkaXRcIiBvclxuXHRcdCAqIFwiZGVsZXRlXCIuXG5cdFx0ICogQHJldHVybnMge09iamVjdH0gQXBwcm9wcmlhdGUgcXVlcnkuXG5cdFx0ICovXG5cdFx0Y29uc3QgZm5OZWVkVG9rZW5JbmZvUXVlcnkgPSAoYWN0aW9uKSA9PiB7XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdFx0dHlwZTogJ2NzcmYnLFxuXHRcdFx0XHR0aXRsZXM6IGN0eC5wYWdlTmFtZSxcblx0XHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0XHRpbnByb3A6ICd3YXRjaGVkJyxcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHR9O1xuXHRcdFx0Ly8gUHJvdGVjdGlvbiBub3QgY2hlY2tlZCBmb3Igbm9uLXN5c29wIG1vdmVzXG5cdFx0XHRpZiAoYWN0aW9uICE9PSAnbW92ZScgfHwgTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0cXVlcnkuaW5wcm9wICs9ICd8cHJvdGVjdGlvbic7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3R4LmZvbGxvd1JlZGlyZWN0ICYmIGFjdGlvbiAhPT0gJ3VuZGVsZXRlJykge1xuXHRcdFx0XHRxdWVyeS5yZWRpcmVjdHMgPSAnJzsgLy8gZm9sbG93IGFsbCByZWRpcmVjdHNcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHF1ZXJ5O1xuXHRcdH07XG5cdFx0Ly8gY2FsbGJhY2sgZnJvbSBsb2FkU3VjY2VzcygpIGZvciBhcHBlbmQoKSwgcHJlcGVuZCgpLCBhbmQgbmV3U2VjdGlvbigpIHRocmVhZHNcblx0XHRjb25zdCBmbkF1dG9TYXZlID0gKHBhZ2VvYmopID0+IHtcblx0XHRcdHBhZ2VvYmouc2F2ZShjdHgub25TYXZlU3VjY2VzcywgY3R4Lm9uU2F2ZUZhaWx1cmUpO1xuXHRcdH07XG5cdFx0Ly8gY2FsbGJhY2sgZnJvbSBsb2FkQXBpLnBvc3QoKVxuXHRcdGNvbnN0IGZuTG9hZFN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGN0eC5sb2FkQXBpLmdldFJlc3BvbnNlKCkucXVlcnk7XG5cdFx0XHRpZiAoIWZuQ2hlY2tQYWdlTmFtZShyZXNwb25zZSwgY3R4Lm9uTG9hZEZhaWx1cmUpKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gYWJvcnRcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgW3BhZ2VdID0gcmVzcG9uc2UucGFnZXM7XG5cdFx0XHRsZXQgcmV2O1xuXHRcdFx0Y3R4LnBhZ2VFeGlzdHMgPSAhcGFnZS5taXNzaW5nO1xuXHRcdFx0aWYgKGN0eC5wYWdlRXhpc3RzKSB7XG5cdFx0XHRcdFtyZXZdID0gcGFnZS5yZXZpc2lvbnM7XG5cdFx0XHRcdGN0eC5sYXN0RWRpdFRpbWUgPSByZXYudGltZXN0YW1wO1xuXHRcdFx0XHRjdHgucGFnZVRleHQgPSByZXYuY29udGVudDtcblx0XHRcdFx0Y3R4LnBhZ2VJRCA9IHBhZ2UucGFnZWlkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4LnBhZ2VUZXh0ID0gJyc7IC8vIGFsbG93IGZvciBjb25jYXRlbmF0aW9uLCBldGMuXG5cdFx0XHRcdGN0eC5wYWdlSUQgPSAwOyAvLyBub25leGlzdGVudCBpbiByZXNwb25zZSwgbWF0Y2hlcyB3Z0FydGljbGVJZFxuXHRcdFx0fVxuXG5cdFx0XHRjdHguY3NyZlRva2VuID0gcmVzcG9uc2UudG9rZW5zLmNzcmZ0b2tlbjtcblx0XHRcdGlmICghY3R4LmNzcmZUb2tlbikge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+acquiDveiOt+WPlue8lui+keS7pOeJjOOAgicsICfmnKrog73lj5blvpfnt6jovK/mrIrmnZbjgIInKSk7XG5cdFx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjdHgubG9hZFRpbWUgPSBjdHgubG9hZEFwaS5nZXRSZXNwb25zZSgpLmN1cnRpbWVzdGFtcDtcblx0XHRcdGlmICghY3R4LmxvYWRUaW1lKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5pyq6IO96I635Y+W5b2T5YmN5pe26Ze05oiz44CCJywgJ+acquiDveWPluW+l+eVtuWJjeaZgumWk+aIs+OAgicpKTtcblx0XHRcdFx0Y3R4Lm9uTG9hZEZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGN0eC5jb250ZW50TW9kZWwgPSBwYWdlLmNvbnRlbnRtb2RlbDtcblx0XHRcdGN0eC53YXRjaGVkID0gcGFnZS53YXRjaGxpc3RleHBpcnkgfHwgcGFnZS53YXRjaGVkO1xuXHRcdFx0Ly8gZXh0cmFjdCBwcm90ZWN0aW9uIGluZm8sIHRvIGFsZXJ0IGFkbWlucyB3aGVuIHRoZXkgYXJlIGFib3V0IHRvIGVkaXQgYSBwcm90ZWN0ZWQgcGFnZVxuXHRcdFx0Ly8gSW5jbHVkZXMgY2FzY2FkaW5nIHByb3RlY3Rpb25cblx0XHRcdGlmIChNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0XHRjb25zdCBlZGl0UHJvdCA9IHBhZ2UucHJvdGVjdGlvblxuXHRcdFx0XHRcdC5maWx0ZXIoKHByKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcHIudHlwZSA9PT0gJ2VkaXQnICYmIHByLmxldmVsID09PSAnc3lzb3AnO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LnBvcCgpO1xuXHRcdFx0XHRpZiAoZWRpdFByb3QpIHtcblx0XHRcdFx0XHRjdHguZnVsbHlQcm90ZWN0ZWQgPSBlZGl0UHJvdC5leHBpcnk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3R4LmZ1bGx5UHJvdGVjdGVkID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGN0eC5yZXZlcnRDdXJJRCA9IHBhZ2UubGFzdHJldmlkO1xuXHRcdFx0Y29uc3QgdGVzdGFjdGlvbnMgPSBwYWdlLmFjdGlvbnM7XG5cdFx0XHRjdHgudGVzdEFjdGlvbnMgPSBbXTsgLy8gd2FzIG51bGxcblx0XHRcdGZvciAoY29uc3QgYWN0aW9uIG9mIE9iamVjdC5rZXlzKHRlc3RhY3Rpb25zKSkge1xuXHRcdFx0XHRpZiAodGVzdGFjdGlvbnNbYWN0aW9uXSkge1xuXHRcdFx0XHRcdGN0eC50ZXN0QWN0aW9uc1tjdHgudGVzdEFjdGlvbnMubGVuZ3RoXSA9IGFjdGlvbjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGN0eC5lZGl0TW9kZSA9PT0gJ3JldmVydCcpIHtcblx0XHRcdFx0Y3R4LnJldmVydEN1cklEID0gcmV2ICYmIHJldi5yZXZpZDtcblx0XHRcdFx0aWYgKCFjdHgucmV2ZXJ0Q3VySUQpIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+acquiDveiOt+WPluW9k+WJjeS/ruiuoueJiOacrElE44CCJywgJ+acquiDveWPluW+l+ebruWJjeS/ruiogueJiOacrElE44CCJykpO1xuXHRcdFx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdHgucmV2ZXJ0VXNlciA9IHJldiAmJiByZXYudXNlcjtcblx0XHRcdFx0aWYgKCFjdHgucmV2ZXJ0VXNlcikge1xuXHRcdFx0XHRcdGlmIChyZXYgJiYgcmV2LnVzZXJoaWRkZW4pIHtcblx0XHRcdFx0XHRcdC8vIHVzZXJuYW1lIHdhcyBSZXZEZWwnZCBvciBvdmVyc2lnaHRlZFxuXHRcdFx0XHRcdFx0Y3R4LnJldmVydFVzZXIgPSB3aW5kb3cud2dVTFMoJzznlKjmiLflkI3lt7LpmpDol48+JywgJzzkvb/nlKjogIXlkI3nqLHlt7LpmrHol48+Jyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+acquiDveiOt+WPluatpOS/ruiuoueJiOacrOeahOe8lui+keiAheOAgicsICfmnKrog73lj5blvpfmraTkv67oqILniYjmnKznmoTnt6jovK/ogIXjgIInKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBzZXQgcmV2ZXJ0IGVkaXQgc3VtbWFyeVxuXHRcdFx0XHRjdHguZWRpdFN1bW1hcnkgPSBgW1tRVzpVTkRPfOaSpOmUgF1d55SxICR7Y3R4LnJldmVydFVzZXJ9IOaJgOWBmuWHuueahCR7d2luZG93LndnVUxTKCfkv67orqIgJywgJ+S/ruiogiAnKX0ke1xuXHRcdFx0XHRcdGN0eC5yZXZlcnRPbGRJRFxuXHRcdFx0XHR977yaJHtjdHguZWRpdFN1bW1hcnl9YDtcblx0XHRcdH1cblx0XHRcdGN0eC5wYWdlTG9hZGVkID0gdHJ1ZTtcblx0XHRcdC8vIG13Lm5vdGlmeShcIkdlbmVyYXRlIGVkaXQgY29uZmxpY3Qgbm93XCIsIHt0eXBlOiAnd2FybicsIHRhZzogJ21vcmViaXRzJ30pOyAgLy8gZm9yIHRlc3RpbmcgZWRpdCBjb25mbGljdCByZWNvdmVyeSBsb2dpY1xuXHRcdFx0Y3R4Lm9uTG9hZFN1Y2Nlc3ModGhpcyk7IC8vIGludm9rZSBjYWxsYmFja1xuXHRcdH07XG5cdFx0Ly8gaGVscGVyIGZ1bmN0aW9uIHRvIHBhcnNlIHRoZSBwYWdlIG5hbWUgcmV0dXJuZWQgZnJvbSB0aGUgQVBJXG5cdFx0Y29uc3QgZm5DaGVja1BhZ2VOYW1lID0gZnVuY3Rpb24gKHJlc3BvbnNlLCBvbkZhaWx1cmUpIHtcblx0XHRcdG9uRmFpbHVyZSB8fD0gZW1wdHlGdW5jdGlvbjtcblx0XHRcdGNvbnN0IHBhZ2UgPSByZXNwb25zZS5wYWdlcyAmJiByZXNwb25zZS5wYWdlc1swXTtcblx0XHRcdGlmIChwYWdlKSB7XG5cdFx0XHRcdC8vIGNoZWNrIGZvciBpbnZhbGlkIHRpdGxlc1xuXHRcdFx0XHRpZiAocGFnZS5pbnZhbGlkKSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCfmoIfpopjkuI3lkIjms5XvvJonLCBg5qiZ6aGM5LiN5ZCI5rOV77yaJHtjdHgucGFnZU5hbWV9YCkpO1xuXHRcdFx0XHRcdG9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7IC8vIGFib3J0XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gcmV0cmlldmUgYWN0dWFsIHRpdGxlIG9mIHRoZSBwYWdlIGFmdGVyIG5vcm1hbGl6YXRpb24gYW5kIHJlZGlyZWN0c1xuXHRcdFx0XHRjb25zdCByZXNvbHZlZE5hbWUgPSBwYWdlLnRpdGxlO1xuXHRcdFx0XHRpZiAocmVzcG9uc2UucmVkaXJlY3RzKSB7XG5cdFx0XHRcdFx0Ly8gY2hlY2sgZm9yIGNyb3NzLW5hbWVzcGFjZSByZWRpcmVjdDpcblx0XHRcdFx0XHRjb25zdCBvcmlnTnMgPSBuZXcgbXcuVGl0bGUoY3R4LnBhZ2VOYW1lKS5uYW1lc3BhY2U7XG5cdFx0XHRcdFx0Y29uc3QgbmV3TnMgPSBuZXcgbXcuVGl0bGUocmVzb2x2ZWROYW1lKS5uYW1lc3BhY2U7XG5cdFx0XHRcdFx0aWYgKG9yaWdOcyAhPT0gbmV3TnMgJiYgIWN0eC5mb2xsb3dDcm9zc05zUmVkaXJlY3QpIHtcblx0XHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdFx0XHRjdHgucGFnZU5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5piv6Leo5ZG95ZCN56m66Ze06YeN5a6a5ZCR5YiwJywgJ+aYr+i3qOWRveWQjeepuumWk+mHjeaWsOWwjuWQkeWIsCcpICtcblx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlZE5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn77yM55Wl6L+HJywgJ++8jOeVpemBjicpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0b25GYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBvbmx5IG5vdGlmeSB1c2VyIGZvciByZWRpcmVjdHMsIG5vdCBub3JtYWxpemF0aW9uXG5cdFx0XHRcdFx0bmV3IE1vcmViaXRzLnN0YXR1cyhcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5L+h5oGvJywgJ+izh+ioiicpLFxuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfku44gJywgJ+W+niAnKSArXG5cdFx0XHRcdFx0XHRcdGN0eC5wYWdlTmFtZSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygnIOmHjeWumuWQkeWIsCAnLCAnIOmHjeaWsOWwjuWQkeWIsCAnKSArXG5cdFx0XHRcdFx0XHRcdHJlc29sdmVkTmFtZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3R4LnBhZ2VOYW1lID0gcmVzb2x2ZWROYW1lOyAvLyB1cGRhdGUgdG8gcmVkaXJlY3QgdGFyZ2V0IG9yIG5vcm1hbGl6ZWQgbmFtZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gY291bGQgYmUgYSBjaXJjdWxhciByZWRpcmVjdCBvciBvdGhlciBwcm9ibGVtXG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5LiN6IO96Kej5p6Q6aG16Z2i55qE6YeN5a6a5ZCR77yaJywgJ+S4jeiDveino+aekOmggemdoueahOmHjeaWsOWwjuWQke+8micpICsgY3R4LnBhZ2VOYW1lXG5cdFx0XHRcdCk7XG5cdFx0XHRcdG9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0Ly8gZm9yY2UgZXJyb3IgdG8gc3RheSBvbiB0aGUgc2NyZWVuXG5cdFx0XHRcdCsrTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0O1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7IC8vIGFib3J0XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0cnVlOyAvLyBhbGwgT0tcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIERldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBwcm92aWRlIGEgd2F0Y2hsaXN0IGV4cGlyeS4gIFdpbGwgbm90XG5cdFx0ICogZG8gc28gaWYgdGhlIHBhZ2UgaXMgY3VycmVudGx5IHBlcm1hbmVudGx5IHdhdGNoZWQsIG9yIHRoZSBjdXJyZW50XG5cdFx0ICogZXhwaXJ5IGlzICphZnRlciogdGhlIG5ldywgcHJvdmlkZWQgZXhwaXJ5LiAgT25seSBoYW5kbGVzIHN0cmluZ3Ncblx0XHQgKiByZWNvZ25pemVkIGJ5IHtAbGluayBNb3JlYml0cy5kYXRlfSBvciByZWxhdGl2ZSB0aW1lZnJhbWVzIHdpdGhcblx0XHQgKiB1bml0IGl0IGNhbiBwcm9jZXNzLiAgUmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgZm5DYW5Vc2VNd1VzZXJUb2tlblxuXHRcdCAqIHJlcXVpcmVzIHBhZ2UgbG9hZGluZyBpZiBhIHdhdGNobGlzdGV4cGlyeSBpcyBwcm92aWRlZCwgc28gd2UgYXJlXG5cdFx0ICogZW5zdXJlZCBvZiBrbm93aW5nIHRoZSB3YXRjaCBzdGF0dXMgYnkgdGhlIHVzZSBvZiB0aGlzLlxuXHRcdCAqXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdFx0ICovXG5cdFx0Y29uc3QgZm5BcHBseVdhdGNobGlzdEV4cGlyeSA9ICgpID0+IHtcblx0XHRcdGlmIChjdHgud2F0Y2hsaXN0RXhwaXJ5KSB7XG5cdFx0XHRcdGlmICghY3R4LndhdGNoZWQgfHwgTW9yZWJpdHMuc3RyaW5nLmlzSW5maW5pdHkoY3R4LndhdGNobGlzdEV4cGlyeSkpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgY3R4LndhdGNoZWQgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0bGV0IG5ld0V4cGlyeTtcblx0XHRcdFx0XHQvLyBBdHRlbXB0IHRvIGRldGVybWluZSBpZiB0aGUgbmV3IGV4cGlyeSBpcyBhXG5cdFx0XHRcdFx0Ly8gcmVsYXRpdmUgKGUuZy4gYDEgbW9udGhgKSBvciBhYnNvbHV0ZSBkYXRldGltZVxuXHRcdFx0XHRcdGNvbnN0IHJlbCA9IGN0eC53YXRjaGxpc3RFeHBpcnkuc3BsaXQoJyAnKTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0bmV3RXhwaXJ5ID0gbmV3IE1vcmViaXRzLmRhdGUoKS5hZGQocmVsWzBdLCByZWxbMV0pO1xuXHRcdFx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRcdFx0bmV3RXhwaXJ5ID0gbmV3IE1vcmViaXRzLmRhdGUoY3R4LndhdGNobGlzdEV4cGlyeSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIElmIHRoZSBkYXRlIGlzIHZhbGlkLCBvbmx5IHVzZSBpdCBpZiBpdCBleHRlbmRzIHRoZSBjdXJyZW50IGV4cGlyeVxuXHRcdFx0XHRcdGlmIChuZXdFeHBpcnkuaXNWYWxpZCgpKSB7XG5cdFx0XHRcdFx0XHRpZiAobmV3RXhwaXJ5LmlzQWZ0ZXIobmV3IE1vcmViaXRzLmRhdGUoY3R4LndhdGNoZWQpKSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gSWYgaXQncyBzdGlsbCBub3QgdmFsaWQsIGhvcGUgaXQncyBhIHZhbGlkIE1XIGV4cGlyeSBmb3JtYXQgdGhhdFxuXHRcdFx0XHRcdFx0Ly8gTW9yZWJpdHMuZGF0ZSBkb2Vzbid0IHJlY29nbml6ZSwgc28ganVzdCBkZWZhdWx0IHRvIHVzaW5nIGl0LlxuXHRcdFx0XHRcdFx0Ly8gVGhpcyB3aWxsIGFsc28gaW5jbHVkZSBtaW5vciB0eXBvcy5cblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cdFx0Ly8gY2FsbGJhY2sgZnJvbSBzYXZlQXBpLnBvc3QoKVxuXHRcdGNvbnN0IGZuU2F2ZVN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAnYWxsJzsgLy8gY2FuY2VsIGFwcGVuZC9wcmVwZW5kL25ld1NlY3Rpb24vcmV2ZXJ0IG1vZGVzXG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGN0eC5zYXZlQXBpLmdldFJlc3BvbnNlKCk7XG5cdFx0XHQvLyBzZWUgaWYgdGhlIEFQSSB0aGlua3Mgd2Ugd2VyZSBzdWNjZXNzZnVsXG5cdFx0XHRpZiAocmVzcG9uc2UuZWRpdC5yZXN1bHQgPT09ICdTdWNjZXNzJykge1xuXHRcdFx0XHQvLyByZWFsIHN1Y2Nlc3Ncblx0XHRcdFx0Ly8gZGVmYXVsdCBvbiBzdWNjZXNzIGFjdGlvbiAtIGRpc3BsYXkgbGluayBmb3IgZWRpdGVkIHBhZ2Vcblx0XHRcdFx0Y29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBtdy51dGlsLmdldFVybChjdHgucGFnZU5hbWUpKTtcblx0XHRcdFx0bGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjdHgucGFnZU5hbWUpKTtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyhbJ+WujOaIkO+8iCcsIGxpbmssICfvvIknXSk7XG5cdFx0XHRcdGlmIChjdHgub25TYXZlU3VjY2Vzcykge1xuXHRcdFx0XHRcdGN0eC5vblNhdmVTdWNjZXNzKHRoaXMpOyAvLyBpbnZva2UgY2FsbGJhY2tcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIGVycm9ycyBoZXJlIGFyZSBvbmx5IGdlbmVyYXRlZCBieSBleHRlbnNpb25zIHdoaWNoIGhvb2sgQVBJRWRpdEJlZm9yZVNhdmUgd2l0aGluIE1lZGlhV2lraSxcblx0XHRcdC8vIHdoaWNoIGFzIG9mIDEuMzQuMC13bWYuMjMgKFNlcHQgMjAxOSkgc2hvdWxkIG9ubHkgZW5jb21wYXNzIGNhcHRjaGEgbWVzc2FnZXNcblx0XHRcdGlmIChyZXNwb25zZS5lZGl0LmNhcHRjaGEpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuI3og73kv53lrZjpobXpnaLvvIzlm6DmnI3liqHlmajopoHmsYLmgqjovpPlhaXpqozor4HnoIHjgIInLCAn5LiN6IO95YSy5a2Y6aCB6Z2i77yM5Zug5Ly65pyN5Zmo6KaB5rGC5oKo6Ly45YWl6amX6K2J56K844CCJylcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5L+d5a2Y6aG16Z2i5pe255SxQVBJ5b6X5Yiw5pyq55+l6ZSZ6K+vJywgJ+WEsuWtmOmggemdouaZgueUsUFQSeW+l+WIsOacquefpemMr+iqpCcpKTtcblx0XHRcdH1cblx0XHRcdC8vIGZvcmNlIGVycm9yIHRvIHN0YXkgb24gdGhlIHNjcmVlblxuXHRcdFx0KytNb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQ7XG5cdFx0XHRjdHgub25TYXZlRmFpbHVyZSh0aGlzKTtcblx0XHR9O1xuXHRcdC8vIGNhbGxiYWNrIGZyb20gc2F2ZUFwaS5wb3N0KClcblx0XHRjb25zdCBmblNhdmVFcnJvciA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IGVycm9yQ29kZSA9IGN0eC5zYXZlQXBpLmdldEVycm9yQ29kZSgpO1xuXHRcdFx0Ly8gY2hlY2sgZm9yIGVkaXQgY29uZmxpY3Rcblx0XHRcdGlmIChlcnJvckNvZGUgPT09ICdlZGl0Y29uZmxpY3QnICYmIGN0eC5jb25mbGljdFJldHJpZXMrKyA8IGN0eC5tYXhDb25mbGljdFJldHJpZXMpIHtcblx0XHRcdFx0Ly8gZWRpdCBjb25mbGljdHMgY2FuIG9jY3VyIHdoZW4gdGhlIHBhZ2UgbmVlZHMgdG8gYmUgcHVyZ2VkIGZyb20gdGhlIHNlcnZlciBjYWNoZVxuXHRcdFx0XHRjb25zdCBwdXJnZVF1ZXJ5ID0ge1xuXHRcdFx0XHRcdGFjdGlvbjogJ3B1cmdlJyxcblx0XHRcdFx0XHR0aXRsZXM6IGN0eC5wYWdlTmFtZSwgLy8gcmVkaXJlY3RzIGFyZSBhbHJlYWR5IHJlc29sdmVkXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Y29uc3QgcHVyZ2VBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfmo4DmtYvliLDnvJbovpHlhrLnqoHvvIzmraPlnKjmm7TmlrDmnI3liqHlmajnvJPlrZgnLCAn5qqi5ris5Yiw57eo6Lyv6KGd56qB77yM5q2j5Zyo5pu05paw5Ly65pyN5Zmo5b+r5Y+WJyksXG5cdFx0XHRcdFx0cHVyZ2VRdWVyeSxcblx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHQtLU1vcmViaXRzLndpa2kubnVtYmVyT2ZBY3Rpb25zTGVmdDsgLy8gYWxsb3cgZm9yIG5vcm1hbCBjb21wbGV0aW9uIGlmIHJldHJ5IHN1Y2NlZWRzXG5cdFx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5pbmZvKHdpbmRvdy53Z1VMUygn5qOA5rWL5Yiw57yW6L6R5Yay56qB77yM6YeN6K+V5L+u5pS5JywgJ+aqoua4rOWIsOe3qOi8r+ihneeqge+8jOmHjeippuS/ruaUuScpKTtcblx0XHRcdFx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdlZGl0JykpIHtcblx0XHRcdFx0XHRcdFx0Y3R4LnNhdmVBcGkucG9zdCgpOyAvLyBuZWNlc3NhcmlseSBhcHBlbmQsIHByZXBlbmQsIG9yIG5ld1NlY3Rpb24sIHNvIHRoaXMgc2hvdWxkIHdvcmsgYXMgZGVzaXJlZFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y3R4LmxvYWRBcGkucG9zdCgpOyAvLyByZWxvYWQgdGhlIHBhZ2UgYW5kIHJlYXBwbHkgdGhlIGVkaXRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50XG5cdFx0XHRcdCk7XG5cdFx0XHRcdHB1cmdlQXBpLnBvc3QoKTtcblx0XHRcdFx0Ly8gY2hlY2sgZm9yIG5ldHdvcmsgb3Igc2VydmVyIGVycm9yXG5cdFx0XHR9IGVsc2UgaWYgKChlcnJvckNvZGUgPT09IG51bGwgfHwgZXJyb3JDb2RlID09PSB1bmRlZmluZWQpICYmIGN0eC5yZXRyaWVzKysgPCBjdHgubWF4UmV0cmllcykge1xuXHRcdFx0XHQvLyB0aGUgZXJyb3IgbWlnaHQgYmUgdHJhbnNpZW50LCBzbyB0cnkgYWdhaW5cblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+S/neWtmOWksei0pe+8jOWcqDLnp5LlkI7ph43or5XigKbigKYnLCAn5YSy5a2Y5aSx5pWX77yM5ZyoMuenkuW+jOmHjeippuKApuKApicpKTtcblx0XHRcdFx0LS1Nb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQ7IC8vIGFsbG93IGZvciBub3JtYWwgY29tcGxldGlvbiBpZiByZXRyeSBzdWNjZWVkc1xuXHRcdFx0XHQvLyB3YWl0IGZvciBzb21ldGltZSBmb3IgY2xpZW50IHRvIHJlZ2FpbiBjb25uZWN0aXZpdHlcblx0XHRcdFx0c2xlZXAoMjAwMCkudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0Y3R4LnNhdmVBcGkucG9zdCgpOyAvLyBnaXZlIGl0IGFub3RoZXIgZ28hXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyBoYXJkIGVycm9yLCBnaXZlIHVwXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGN0eC5zYXZlQXBpLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRcdGNvbnN0IGVycm9yRGF0YSA9XG5cdFx0XHRcdFx0cmVzcG9uc2UuZXJyb3IgfHxcblx0XHRcdFx0XHQvLyBiYyBlcnJvciBmb3JtYXRcblx0XHRcdFx0XHRyZXNwb25zZS5lcnJvcnNbMF0uZGF0YTsgLy8gaHRtbC93aWtpdGV4dC9wbGFpbnRleHQgZXJyb3IgZm9ybWF0XG5cdFx0XHRcdHN3aXRjaCAoZXJyb3JDb2RlKSB7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdGVkcGFnZSc6XG5cdFx0XHRcdFx0XHQvLyBub24tYWRtaW4gYXR0ZW1wdGluZyB0byBlZGl0IGEgcHJvdGVjdGVkIHBhZ2UgLSB0aGlzIGdpdmVzIGEgZnJpZW5kbGllciBtZXNzYWdlIHRoYW4gdGhlIGRlZmF1bHRcblx0XHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5LiN6IO95L+d5a2Y5L+u5pS577ya6aG16Z2i6KKr5L+d5oqkJywgJ+S4jeiDveWEsuWtmOS/ruaUue+8mumggemdouiiq+S/neittycpKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FidXNlZmlsdGVyLWRpc2FsbG93ZWQnOlxuXHRcdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn57yW6L6R6KKr6Ziy5rul55So6L+H5ruk5Zmo6KeE5YiZ4oCcJywgJ+e3qOi8r+iiq+mYsua/q+eUqOmBjua/vuWZqOimj+WJh+OAjCcpICtcblx0XHRcdFx0XHRcdFx0XHRlcnJvckRhdGEuYWJ1c2VmaWx0ZXIuZGVzY3JpcHRpb24gK1xuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHRcdCfigJ3pmLvmraLjgILoi6XmgqjorqTkuLrmgqjnmoTor6XmrKHnvJbovpHmmK/mnInmhI/kuYnnmoTvvIzor7foh7MgUWl1d2VuX3RhbGs6566h55CG5ZGY5ZGK56S65p2/IOaPkOaKpeOAgicsXG5cdFx0XHRcdFx0XHRcdFx0XHQn44CN6Zi75q2i44CC6Iul5oKo6KqN54K65oKo55qE6Kmy5qyh57eo6Lyv5piv5pyJ5oSP576p55qE77yM6KuL6IezIFFpdXdlbl90YWxrOueuoeeQhuWToeWRiuekuuadvyDmj5DloLHjgIInXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FidXNlZmlsdGVyLXdhcm5pbmcnOlxuXHRcdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoW1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+e8lui+keiiq+mYsua7peeUqOi/h+a7pOWZqOinhOWImeKAnCcsICfnt6jovK/ooqvpmLLmv6vnlKjpgY7mv77lmajopo/liYfjgIwnKSxcblx0XHRcdFx0XHRcdFx0ZXJyb3JEYXRhLmFidXNlZmlsdGVyLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J+KAneitpuWRiu+8jOiLpeaCqOS7jeW4jOacm+WBmuWHuuivpee8lui+ke+8jOivt+WwneivlemHjeaWsOaPkOS6pO+8jOagueaNrui/h+a7pOWZqOeahOiuvue9ruaCqOWPr+iDveWPr+S7peS9nOWHuuatpOe8lui+keOAgicsXG5cdFx0XHRcdFx0XHRcdFx0J+OAjeitpuWRiu+8jOiLpeaCqOS7jeW4jOacm+WBmuWHuuipsue3qOi8r++8jOiri+WYl+ippumHjeaWsOaPkOS6pO+8jOagueaTmumBjua/vuWZqOeahOioreWumuaCqOWPr+iDveWPr+S7peS9nOWHuuatpOe3qOi8r+OAgidcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0Ly8gV2Ugc2hvdWxkIHByb3ZpZGUgdGhlIHVzZXIgd2l0aCBhIHdheSB0byBhdXRvbWF0aWNhbGx5IHJldHJ5IHRoZSBhY3Rpb24gaWYgdGhleSBzbyBjaG9vc2UgLVxuXHRcdFx0XHRcdFx0Ly8gSSBjYW4ndCBzZWUgaG93IHRvIGRvIHRoaXMgd2l0aG91dCBjcmVhdGluZyBhIFVJIGRlcGVuZGVuY3kgb24gTW9yZWJpdHMud2lraS5wYWdlIHRob3VnaCAtLSBUVE9cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NwYW1ibGFja2xpc3QnOiB7XG5cdFx0XHRcdFx0XHQvLyBJZiBtdWx0aXBsZSBpdGVtcyBhcmUgYmxhY2tsaXN0ZWQsIHdlIG9ubHkgcmV0dXJuIHRoZSBmaXJzdFxuXHRcdFx0XHRcdFx0Y29uc3QgW3NwYW1dID0gZXJyb3JEYXRhLnNwYW1ibGFja2xpc3QubWF0Y2hlcztcblx0XHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S4jeiDveS/neWtmOmhtemdou+8jOWboFVSTCAnLCAn5LiN6IO95YSy5a2Y6aCB6Z2i77yM5ZugVVJMICcpICtcblx0XHRcdFx0XHRcdFx0XHRzcGFtICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDlnKjlnoPlnL7pk77mjqXpu5HlkI3ljZXkuK3jgIInLCAnIOWcqOWeg+WcvumAo+e1kOm7keWQjeWWruS4reOAgicpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcihcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuI3og73kv53lrZjkv67mlLnvvJonLCAn5LiN6IO95YSy5a2Y5L+u5pS577yaJykgKyBjdHguc2F2ZUFwaS5nZXRFcnJvclRleHQoKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdHguZWRpdE1vZGUgPSAnYWxsJzsgLy8gY2FuY2VsIGFwcGVuZC9wcmVwZW5kL25ld1NlY3Rpb24vcmV2ZXJ0IG1vZGVzXG5cdFx0XHRcdGlmIChjdHgub25TYXZlRmFpbHVyZSkge1xuXHRcdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpOyAvLyBpbnZva2UgY2FsbGJhY2tcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRjb25zdCBpc1RleHRSZWRpcmVjdCA9ICh0ZXh0KSA9PiB7XG5cdFx0XHRpZiAoIXRleHQpIHtcblx0XHRcdFx0Ly8gbm8gdGV4dCAtIGNvbnRlbnQgZW1wdHkgb3IgaW5hY2Nlc3NpYmxlIChyZXZkZWxsZWQgb3Igc3VwcHJlc3NlZClcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE1vcmViaXRzLmwxMG4ucmVkaXJlY3RUYWdBbGlhc2VzLnNvbWUoKHRhZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFJlZ0V4cChgXlxcXFxzKiR7dGFnfVxcXFxXYCwgJ2knKS50ZXN0KHRleHQpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRjb25zdCBmbkxvb2t1cENyZWF0aW9uU3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4Lmxvb2t1cENyZWF0aW9uQXBpLmdldFJlc3BvbnNlKCkucXVlcnk7XG5cdFx0XHRpZiAoIWZuQ2hlY2tQYWdlTmFtZShyZXNwb25zZSwgY3R4Lm9uTG9va3VwQ3JlYXRpb25GYWlsdXJlKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIGFib3J0XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHJldiA9IHJlc3BvbnNlLnBhZ2VzWzBdLnJldmlzaW9ucyAmJiByZXNwb25zZS5wYWdlc1swXS5yZXZpc2lvbnNbMF07XG5cdFx0XHRpZiAoIXJldikge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aXoOazleaJvuWIsCcsICfnhKHms5Xmib7liLAnKSArXG5cdFx0XHRcdFx0XHRjdHgucGFnZU5hbWUgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnmoTku7vkvZXkv67orqLniYjmnKwnLCAn55qE5Lu75L2V5L+u6KiC54mI5pysJylcblx0XHRcdFx0KTtcblx0XHRcdFx0Y3R4Lm9uTG9va3VwQ3JlYXRpb25GYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN0eC5sb29rdXBOb25SZWRpcmVjdENyZWF0b3IgfHwgIWlzVGV4dFJlZGlyZWN0KHJldi5jb250ZW50KSkge1xuXHRcdFx0XHRjdHguY3JlYXRvciA9IHJldi51c2VyO1xuXHRcdFx0XHRpZiAoIWN0eC5jcmVhdG9yKSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCfml6Dms5Xojrflj5bpobXpnaLliJvlu7rogIXnmoTlkI3lrZcnLCAn54Sh5rOV5Y+W5b6X6aCB6Z2i5bu656uL6ICF55qE5ZCN5a2XJykpO1xuXHRcdFx0XHRcdGN0eC5vbkxvb2t1cENyZWF0aW9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3R4LnRpbWVzdGFtcCA9IHJldi50aW1lc3RhbXA7XG5cdFx0XHRcdGlmICghY3R4LnRpbWVzdGFtcCkge1xuXHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5peg5rOV6I635Y+W6aG16Z2i5Yib5bu65pe26Ze0JywgJ+eEoeazleWPluW+l+mggemdouW7uueri+aZgumWkycpKTtcblx0XHRcdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmluZm8od2luZG93LndnVUxTKCflt7Lojrflj5bpobXpnaLliJvlu7rkv6Hmga8nLCAn5bey5Y+W5b6X6aCB6Z2i5bu656uL6LOH6KiKJykpO1xuXHRcdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvblN1Y2Nlc3ModGhpcyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkucXVlcnkucnZsaW1pdCA9IDUwOyAvLyBtb2RpZnkgcHJldmlvdXMgcXVlcnkgdG8gZmV0Y2ggbW9yZSByZXZpc2lvbnNcblx0XHRcdFx0Y3R4Lmxvb2t1cENyZWF0aW9uQXBpLnF1ZXJ5LnRpdGxlcyA9IGN0eC5wYWdlTmFtZTsgLy8gdXBkYXRlIHBhZ2VOYW1lIGlmIHJlZGlyZWN0IHJlc29sdXRpb24gdG9vayBwbGFjZSBpbiBlYXJsaWVyIHF1ZXJ5XG5cdFx0XHRcdGN0eC5sb29rdXBDcmVhdGlvbkFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPlumhtemdouWIm+W7uuS/oeaBrycsICflj5blvpfpoIHpnaLlu7rnq4vos4foqIonKSxcblx0XHRcdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkucXVlcnksXG5cdFx0XHRcdFx0Zm5Mb29rdXBOb25SZWRpcmVjdENyZWF0b3IsXG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdFx0Y3R4Lm9uTG9va3VwQ3JlYXRpb25GYWlsdXJlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGN0eC5sb29rdXBDcmVhdGlvbkFwaS5zZXRQYXJlbnQodGhpcyk7XG5cdFx0XHRcdGN0eC5sb29rdXBDcmVhdGlvbkFwaS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRjb25zdCBmbkxvb2t1cE5vblJlZGlyZWN0Q3JlYXRvciA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4Lmxvb2t1cENyZWF0aW9uQXBpLmdldFJlc3BvbnNlKCkucXVlcnk7XG5cdFx0XHRjb25zdCByZXZzID0gcmVzcG9uc2UucGFnZXNbMF0ucmV2aXNpb25zO1xuXHRcdFx0Zm9yIChjb25zdCByZXYgb2YgcmV2cykge1xuXHRcdFx0XHRpZiAoIWlzVGV4dFJlZGlyZWN0KHJldi5jb250ZW50KSkge1xuXHRcdFx0XHRcdGN0eC5jcmVhdG9yID0gcmV2LnVzZXI7XG5cdFx0XHRcdFx0Y3R4LnRpbWVzdGFtcCA9IHJldi50aW1lc3RhbXA7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghY3R4LmNyZWF0b3IpIHtcblx0XHRcdFx0Ly8gZmFsbGJhY2sgdG8gZ2l2ZSBmaXJzdCByZXZpc2lvbiBhdXRob3IgaWYgbm8gbm9uLXJlZGlyZWN0IHZlcnNpb24gaW4gdGhlIGZpcnN0IDUwXG5cdFx0XHRcdGN0eC5jcmVhdG9yID0gcmV2c1swXS51c2VyO1xuXHRcdFx0XHRjdHgudGltZXN0YW1wID0gcmV2c1swXS50aW1lc3RhbXA7XG5cdFx0XHRcdGlmICghY3R4LmNyZWF0b3IpIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+aXoOazleiOt+WPlumhtemdouWIm+W7uuiAheeahOWQjeWtlycsICfnhKHms5Xlj5blvpfpoIHpnaLlu7rnq4vogIXnmoTlkI3lrZcnKSk7XG5cdFx0XHRcdFx0Y3R4Lm9uTG9va3VwQ3JlYXRpb25GYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFjdHgudGltZXN0YW1wKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5peg5rOV6I635Y+W6aG16Z2i5Yib5bu65pe26Ze0JywgJ+eEoeazleWPluW+l+mggemdouW7uueri+aZgumWkycpKTtcblx0XHRcdFx0Y3R4Lm9uTG9va3VwQ3JlYXRpb25GYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjdHguc3RhdHVzRWxlbWVudC5pbmZvKHdpbmRvdy53Z1VMUygn5bey6I635Y+W6aG16Z2i5Yib5bu65L+h5oGvJywgJ+W3suWPluW+l+mggemdouW7uueri+izh+ioiicpKTtcblx0XHRcdGN0eC5vbkxvb2t1cENyZWF0aW9uU3VjY2Vzcyh0aGlzKTtcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIENvbW1vbiBjaGVja3MgZm9yIGFjdGlvbiBtZXRob2RzLiBVc2VkIGZvciBtb3ZlLCB1bmRlbGV0ZSwgZGVsZXRlLFxuXHRcdCAqIHByb3RlY3QuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uIC0gVGhlIGFjdGlvbiBiZWluZyBjaGVja2VkLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBvbkZhaWx1cmUgLSBGYWlsdXJlIGNhbGxiYWNrLlxuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHRcdCAqL1xuXHRcdGNvbnN0IGZuUHJlZmxpZ2h0Q2hlY2tzID0gZnVuY3Rpb24gKGFjdGlvbiwgb25GYWlsdXJlKSB7XG5cdFx0XHQvLyBpZiBhIG5vbi1hZG1pbiB0cmllcyB0byBkbyB0aGlzLCBkb24ndCBib3RoZXJcblx0XHRcdGlmICghTW9yZWJpdHMudXNlcklzU3lzb3AgJiYgYWN0aW9uICE9PSAnbW92ZScpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfml6Dms5Xlr7npobXpnaLov5vooYzigJwnLCAn54Sh5rOV5bCN6aCB6Z2i6YCy6KGM44CMJykgK1xuXHRcdFx0XHRcdFx0YWN0aW9uICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCd5pON5L2c77ya5Y+q5pyJ566h55CG5ZGY5Y+v5Lul6L+b6KGM5q2k5pON5L2cJywgJ+OAjeaTjeS9nO+8muWPquacieeuoeeQhuWToeWPr+S7pemAsuihjOatpOaTjeS9nCcpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdG9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjdHguZWRpdFN1bW1hcnkpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoYEludGVybmFsIGVycm9yOiAke2FjdGlvbn0gcmVhc29uIG5vdCBzZXQgKHVzZSBzZXRFZGl0U3VtbWFyeSBmdW5jdGlvbikhYCk7XG5cdFx0XHRcdG9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7IC8vIGFsbCBPS1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQ29tbW9uIGNoZWNrcyBmb3IgZm5Qcm9jZXNzIGZ1bmN0aW9ucyAoYGZuUHJvY2Vzc0RlbGV0ZWAsIGBmblByb2Nlc3NNb3ZlYCwgZXRjLlxuXHRcdCAqIFVzZWQgZm9yIG1vdmUsIHVuZGVsZXRlLCBkZWxldGUsIHByb3RlY3QuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uIC0gVGhlIGFjdGlvbiBiZWluZyBjaGVja2VkLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBvbkZhaWx1cmUgLSBGYWlsdXJlIGNhbGxiYWNrLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBkb2N1bWVudCBmcm9tIHRoZSBBUEkgY2FsbC5cblx0XHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0XHQgKi9cblx0XHRjb25zdCBmblByb2Nlc3NDaGVja3MgPSBmdW5jdGlvbiAoYWN0aW9uLCBvbkZhaWx1cmUsIHJlc3BvbnNlKSB7XG5cdFx0XHRjb25zdCBbe21pc3Npbmd9XSA9IHJlc3BvbnNlLnBhZ2VzO1xuXHRcdFx0Ly8gTm8gdW5kZWxldGUgYXMgYW4gZXhpc3RpbmcgcGFnZSBjb3VsZCBoYXZlIGRlbGV0ZWQgcmV2aXNpb25zXG5cdFx0XHRjb25zdCBhY3Rpb25NaXNzaW5nID0gbWlzc2luZyAmJiBbJ2RlbGV0ZScsICdtb3ZlJ10uaW5jbHVkZXMoYWN0aW9uKTtcblx0XHRcdGNvbnN0IHByb3RlY3RNaXNzaW5nID0gYWN0aW9uID09PSAncHJvdGVjdCcgJiYgbWlzc2luZyAmJiAoY3R4LnByb3RlY3RFZGl0IHx8IGN0eC5wcm90ZWN0TW92ZSk7XG5cdFx0XHRjb25zdCBzYWx0TWlzc2luZyA9IGFjdGlvbiA9PT0gJ3Byb3RlY3QnICYmICFtaXNzaW5nICYmIGN0eC5wcm90ZWN0Q3JlYXRlO1xuXHRcdFx0aWYgKGFjdGlvbk1pc3NpbmcgfHwgcHJvdGVjdE1pc3NpbmcgfHwgc2FsdE1pc3NpbmcpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0YCR7XG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aXoOazleWvuemhtemdoui/m+ihjOKAnCcsICfnhKHms5XlsI3poIHpnaLpgLLooYzjgIwnKSArXG5cdFx0XHRcdFx0XHRhY3Rpb24gK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3mk43kvZzvvIzlm6DkuLrpobXpnaInLCAn44CN5pON5L2c77yM5Zug54K66aCB6Z2iJykgK1xuXHRcdFx0XHRcdFx0KG1pc3NpbmcgPyAn5bey5LiNJyA6IHdpbmRvdy53Z1VMUygn5bey57uPJywgJ+W3sue2kycpKVxuXHRcdFx0XHRcdH3lrZjlnKhgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdG9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0Ly8gRGVsZXRlLCB1bmRlbGV0ZSwgbW92ZVxuXHRcdFx0Ly8gZXh0cmFjdCBwcm90ZWN0aW9uIGluZm9cblx0XHRcdGxldCBlZGl0cHJvdDtcblx0XHRcdGlmIChhY3Rpb24gPT09ICd1bmRlbGV0ZScpIHtcblx0XHRcdFx0ZWRpdHByb3QgPSByZXNwb25zZS5wYWdlc1swXS5wcm90ZWN0aW9uXG5cdFx0XHRcdFx0LmZpbHRlcigocHIpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBwci50eXBlID09PSAnY3JlYXRlJyAmJiBwci5sZXZlbCA9PT0gJ3N5c29wJztcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5wb3AoKTtcblx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uID09PSAnZGVsZXRlJyB8fCBhY3Rpb24gPT09ICdtb3ZlJykge1xuXHRcdFx0XHRlZGl0cHJvdCA9IHJlc3BvbnNlLnBhZ2VzWzBdLnByb3RlY3Rpb25cblx0XHRcdFx0XHQuZmlsdGVyKChwcikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHByLnR5cGUgPT09ICdlZGl0JyAmJiBwci5sZXZlbCA9PT0gJ3N5c29wJztcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5wb3AoKTtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0ZWRpdHByb3QgJiZcblx0XHRcdFx0IWN0eC5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nICYmXG5cdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5Y2z5bCG5a+55YWo5L+d5oqk6aG16Z2i4oCcJywgJ+aCqOWNs+Wwh+WwjeWFqOS/neitt+mggemdouOAjCcpICtcblx0XHRcdFx0XHRcdGN0eC5wYWdlTmFtZSArXG5cdFx0XHRcdFx0XHQoZWRpdHByb3QuZXhwaXJ5ID09PSAnaW5maW5pdHknXG5cdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfigJ3vvIjmsLjkuYXvvIknLCAn44CN77yI5rC45LmF77yJJylcblx0XHRcdFx0XHRcdFx0OiBgJHtcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCd77yI5Yiw5pyf77yaJywgJ+OAje+8iOWIsOacn++8micpICtcblx0XHRcdFx0XHRcdFx0XHRcdG5ldyBNb3JlYml0cy5kYXRlKGVkaXRwcm90LmV4cGlyeSkuY2FsZW5kYXIoJ3V0YycpXG5cdFx0XHRcdFx0XHRcdFx0fSAoVVRDKe+8iWApICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCd6L+b6KGM4oCcJywgJ+OAjemAsuihjOOAjCcpICtcblx0XHRcdFx0XHRcdGFjdGlvbiArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+KAneaTjeS9nCcsICfjgI3mk43kvZwnKSArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfjgIJcXG5cXG7ljZXlh7vnoa7lrprku6Xnu6fnu63mk43kvZzvvIzmiJbljZXlh7vlj5bmtojku6Xlj5bmtojmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHQn44CCXFxuXFxu6bue5pOK56K65a6a5Lul57m857qM5pON5L2c77yM5oiW6bue5pOK5Y+W5raI5Lul5Y+W5raI5pON5L2c44CCJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCflt7Llj5bmtojlr7nlhajkv53miqTpobXpnaLnmoTmk43kvZzjgIInLCAn5bey5Y+W5raI5bCN5YWo5L+d6K236aCB6Z2i55qE5pON5L2c44CCJykpO1xuXHRcdFx0XHRvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmICghcmVzcG9uc2UudG9rZW5zLmNzcmZ0b2tlbikge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+aXoOazleiOt+WPluS7pOeJjOOAgicsICfnhKHms5Xlj5blvpfmrIrmnZbjgIInKSk7XG5cdFx0XHRcdG9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7IC8vIGFsbCBPS1xuXHRcdH07XG5cblx0XHRjb25zdCBmblByb2Nlc3NNb3ZlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0bGV0IHBhZ2VUaXRsZTtcblx0XHRcdGxldCB0b2tlbjtcblx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdtb3ZlJykpIHtcblx0XHRcdFx0dG9rZW4gPSBtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpO1xuXHRcdFx0XHRwYWdlVGl0bGUgPSBjdHgucGFnZU5hbWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGN0eC5tb3ZlQXBpLmdldFJlc3BvbnNlKCkucXVlcnk7XG5cdFx0XHRcdGlmICghZm5Qcm9jZXNzQ2hlY2tzKCdtb3ZlJywgY3R4Lm9uTW92ZUZhaWx1cmUsIHJlc3BvbnNlKSkge1xuXHRcdFx0XHRcdHJldHVybjsgLy8gYWJvcnRcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRva2VuID0gcmVzcG9uc2UudG9rZW5zLmNzcmZ0b2tlbjtcblx0XHRcdFx0Y29uc3QgW3BhZ2VdID0gcmVzcG9uc2UucGFnZXM7XG5cdFx0XHRcdHBhZ2VUaXRsZSA9IHBhZ2UudGl0bGU7XG5cdFx0XHRcdGN0eC53YXRjaGVkID0gcGFnZS53YXRjaGxpc3RleHBpcnkgfHwgcGFnZS53YXRjaGVkO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ21vdmUnLFxuXHRcdFx0XHRmcm9tOiBwYWdlVGl0bGUsXG5cdFx0XHRcdHRvOiBjdHgubW92ZURlc3RpbmF0aW9uLFxuXHRcdFx0XHR0b2tlbixcblx0XHRcdFx0cmVhc29uOiBjdHguZWRpdFN1bW1hcnksXG5cdFx0XHRcdHdhdGNobGlzdDogY3R4LndhdGNobGlzdE9wdGlvbixcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGN0eC5jaGFuZ2VUYWdzKSB7XG5cdFx0XHRcdHF1ZXJ5LnRhZ3MgPSBjdHguY2hhbmdlVGFncztcblx0XHRcdH1cblx0XHRcdGlmIChmbkFwcGx5V2F0Y2hsaXN0RXhwaXJ5KCkpIHtcblx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gY3R4LndhdGNobGlzdEV4cGlyeTtcblx0XHRcdH1cblx0XHRcdGlmIChjdHgubW92ZVRhbGtQYWdlKSB7XG5cdFx0XHRcdHF1ZXJ5Lm1vdmV0YWxrID0gJ3RydWUnO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN0eC5tb3ZlU3VicGFnZXMpIHtcblx0XHRcdFx0cXVlcnkubW92ZXN1YnBhZ2VzID0gJ3RydWUnO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN0eC5tb3ZlU3VwcHJlc3NSZWRpcmVjdCkge1xuXHRcdFx0XHRxdWVyeS5ub3JlZGlyZWN0ID0gJ3RydWUnO1xuXHRcdFx0fVxuXHRcdFx0Y3R4Lm1vdmVQcm9jZXNzQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+enu+WKqOmhtemdouKApuKApicsICfnp7vli5XpoIHpnaLigKbigKYnKSxcblx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdGN0eC5vbk1vdmVTdWNjZXNzLFxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0Y3R4Lm9uTW92ZUZhaWx1cmVcblx0XHRcdCk7XG5cdFx0XHRjdHgubW92ZVByb2Nlc3NBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4Lm1vdmVQcm9jZXNzQXBpLnBvc3QoKTtcblx0XHR9O1xuXHRcdGNvbnN0IGZuUHJvY2Vzc1BhdHJvbCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdwYXRyb2wnLFxuXHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdH07XG5cdFx0XHQvLyBEaWRuJ3QgbmVlZCB0byBsb2FkIHRoZSBwYWdlXG5cdFx0XHRpZiAoY3R4LnJjaWQpIHtcblx0XHRcdFx0cXVlcnkucmNpZCA9IGN0eC5yY2lkO1xuXHRcdFx0XHRxdWVyeS50b2tlbiA9IG13LnVzZXIudG9rZW5zLmdldCgncGF0cm9sVG9rZW4nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4LnBhdHJvbEFwaS5nZXRSZXNwb25zZSgpLnF1ZXJ5O1xuXHRcdFx0XHQvLyBEb24ndCBwYXRyb2wgaWYgbm90IHVucGF0cm9sbGVkXG5cdFx0XHRcdGlmICghcmVzcG9uc2UucmVjZW50Y2hhbmdlc1swXS51bnBhdHJvbGxlZCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBbe2xhc3RyZXZpZH1dID0gcmVzcG9uc2UucGFnZXM7XG5cdFx0XHRcdGlmICghbGFzdHJldmlkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHF1ZXJ5LnJldmlkID0gbGFzdHJldmlkO1xuXHRcdFx0XHRjb25zdCB0b2tlbiA9IHJlc3BvbnNlLnRva2Vucy5jc3JmdG9rZW47XG5cdFx0XHRcdGlmICghdG9rZW4pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0cXVlcnkudG9rZW4gPSB0b2tlbjtcblx0XHRcdH1cblx0XHRcdGlmIChjdHguY2hhbmdlVGFncykge1xuXHRcdFx0XHRxdWVyeS50YWdzID0gY3R4LmNoYW5nZVRhZ3M7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBwYXRyb2xTdGF0ID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdouS4uuW3suW3oeafpScsICfmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6UnKSk7XG5cdFx0XHRjdHgucGF0cm9sUHJvY2Vzc0FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCflt6Hmn6XpobXpnaLigKbigKYnLCAn5beh5p+l6aCB6Z2i4oCm4oCmJyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRwYXRyb2xTdGF0XG5cdFx0XHQpO1xuXHRcdFx0Y3R4LnBhdHJvbFByb2Nlc3NBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4LnBhdHJvbFByb2Nlc3NBcGkucG9zdCgpO1xuXHRcdH07XG5cdFx0Y29uc3QgZm5Qcm9jZXNzRGVsZXRlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0bGV0IHBhZ2VUaXRsZTtcblx0XHRcdGxldCB0b2tlbjtcblx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdkZWxldGUnKSkge1xuXHRcdFx0XHR0b2tlbiA9IG13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJyk7XG5cdFx0XHRcdHBhZ2VUaXRsZSA9IGN0eC5wYWdlTmFtZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4LmRlbGV0ZUFwaS5nZXRSZXNwb25zZSgpLnF1ZXJ5O1xuXHRcdFx0XHRpZiAoIWZuUHJvY2Vzc0NoZWNrcygnZGVsZXRlJywgY3R4Lm9uRGVsZXRlRmFpbHVyZSwgcmVzcG9uc2UpKSB7XG5cdFx0XHRcdFx0cmV0dXJuOyAvLyBhYm9ydFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dG9rZW4gPSByZXNwb25zZS50b2tlbnMuY3NyZnRva2VuO1xuXHRcdFx0XHRjb25zdCBbcGFnZV0gPSByZXNwb25zZS5wYWdlcztcblx0XHRcdFx0cGFnZVRpdGxlID0gcGFnZS50aXRsZTtcblx0XHRcdFx0Y3R4LndhdGNoZWQgPSBwYWdlLndhdGNobGlzdGV4cGlyeSB8fCBwYWdlLndhdGNoZWQ7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAnZGVsZXRlJyxcblx0XHRcdFx0dGl0bGU6IHBhZ2VUaXRsZSxcblx0XHRcdFx0dG9rZW4sXG5cdFx0XHRcdHJlYXNvbjogY3R4LmVkaXRTdW1tYXJ5LFxuXHRcdFx0XHR3YXRjaGxpc3Q6IGN0eC53YXRjaGxpc3RPcHRpb24sXG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdGlmIChjdHguY2hhbmdlVGFncykge1xuXHRcdFx0XHRxdWVyeS50YWdzID0gY3R4LmNoYW5nZVRhZ3M7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZm5BcHBseVdhdGNobGlzdEV4cGlyeSgpKSB7XG5cdFx0XHRcdHF1ZXJ5LndhdGNobGlzdGV4cGlyeSA9IGN0eC53YXRjaGxpc3RFeHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRjdHguZGVsZXRlUHJvY2Vzc0FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfliKDpmaTpobXpnaLigKbigKYnLCAn5Yiq6Zmk6aCB6Z2i4oCm4oCmJyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRjdHgub25EZWxldGVTdWNjZXNzLFxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0Zm5Qcm9jZXNzRGVsZXRlRXJyb3Jcblx0XHRcdCk7XG5cdFx0XHRjdHguZGVsZXRlUHJvY2Vzc0FwaS5zZXRQYXJlbnQodGhpcyk7XG5cdFx0XHRjdHguZGVsZXRlUHJvY2Vzc0FwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHQvLyBjYWxsYmFjayBmcm9tIGRlbGV0ZVByb2Nlc3NBcGkucG9zdCgpXG5cdFx0Y29uc3QgZm5Qcm9jZXNzRGVsZXRlRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCBlcnJvckNvZGUgPSBjdHguZGVsZXRlUHJvY2Vzc0FwaS5nZXRFcnJvckNvZGUoKTtcblx0XHRcdC8vIGNoZWNrIGZvciBcIkRhdGFiYXNlIHF1ZXJ5IGVycm9yXCJcblx0XHRcdGlmIChlcnJvckNvZGUgPT09ICdpbnRlcm5hbF9hcGlfZXJyb3JfREJRdWVyeUVycm9yJyAmJiBjdHgucmV0cmllcysrIDwgY3R4Lm1heFJldHJpZXMpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+aVsOaNruW6k+afpeivoumUmeivr++8jOmHjeivlScsICfos4fmlpnluqvmn6XoqaLpjK/oqqTvvIzph43oqaYnKSk7XG5cdFx0XHRcdC0tTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0OyAvLyBhbGxvdyBmb3Igbm9ybWFsIGNvbXBsZXRpb24gaWYgcmV0cnkgc3VjY2VlZHNcblx0XHRcdFx0Y3R4LmRlbGV0ZVByb2Nlc3NBcGkucG9zdCgpOyAvLyBnaXZlIGl0IGFub3RoZXIgZ28hXG5cdFx0XHR9IGVsc2UgaWYgKGVycm9yQ29kZSA9PT0gJ21pc3Npbmd0aXRsZScpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCfkuI3og73liKDpmaTpobXpnaLvvIzlm6Dlhbblt7LkuI3lrZjlnKgnLCAn5LiN6IO95Yiq6Zmk6aCB6Z2i77yM5Zug5YW25bey5LiN5a2Y5ZyoJykpO1xuXHRcdFx0XHRpZiAoY3R4Lm9uRGVsZXRlRmFpbHVyZSkge1xuXHRcdFx0XHRcdGN0eC5vbkRlbGV0ZUZhaWx1cmUuY2FsbCh0aGlzLCBjdHguZGVsZXRlUHJvY2Vzc0FwaSk7IC8vIGludm9rZSBjYWxsYmFja1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGhhcmQgZXJyb3IsIGdpdmUgdXBcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5peg5rOV5Yig6Zmk6aG16Z2i77yaJywgJ+eEoeazleWIqumZpOmggemdou+8micpICsgY3R4LmRlbGV0ZVByb2Nlc3NBcGkuZ2V0RXJyb3JUZXh0KClcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKGN0eC5vbkRlbGV0ZUZhaWx1cmUpIHtcblx0XHRcdFx0XHRjdHgub25EZWxldGVGYWlsdXJlLmNhbGwodGhpcywgY3R4LmRlbGV0ZVByb2Nlc3NBcGkpOyAvLyBpbnZva2UgY2FsbGJhY2tcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRjb25zdCBmblByb2Nlc3NVbmRlbGV0ZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGxldCBwYWdlVGl0bGU7XG5cdFx0XHRsZXQgdG9rZW47XG5cdFx0XHRpZiAoZm5DYW5Vc2VNd1VzZXJUb2tlbigndW5kZWxldGUnKSkge1xuXHRcdFx0XHR0b2tlbiA9IG13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJyk7XG5cdFx0XHRcdHBhZ2VUaXRsZSA9IGN0eC5wYWdlTmFtZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4LnVuZGVsZXRlQXBpLmdldFJlc3BvbnNlKCkucXVlcnk7XG5cdFx0XHRcdGlmICghZm5Qcm9jZXNzQ2hlY2tzKCd1bmRlbGV0ZScsIGN0eC5vblVuZGVsZXRlRmFpbHVyZSwgcmVzcG9uc2UpKSB7XG5cdFx0XHRcdFx0cmV0dXJuOyAvLyBhYm9ydFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dG9rZW4gPSByZXNwb25zZS50b2tlbnMuY3NyZnRva2VuO1xuXHRcdFx0XHRjb25zdCBbcGFnZV0gPSByZXNwb25zZS5wYWdlcztcblx0XHRcdFx0cGFnZVRpdGxlID0gcGFnZS50aXRsZTtcblx0XHRcdFx0Y3R4LndhdGNoZWQgPSBwYWdlLndhdGNobGlzdGV4cGlyeSB8fCBwYWdlLndhdGNoZWQ7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAndW5kZWxldGUnLFxuXHRcdFx0XHR0aXRsZTogcGFnZVRpdGxlLFxuXHRcdFx0XHR0b2tlbixcblx0XHRcdFx0cmVhc29uOiBjdHguZWRpdFN1bW1hcnksXG5cdFx0XHRcdHdhdGNobGlzdDogY3R4LndhdGNobGlzdE9wdGlvbixcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGN0eC5jaGFuZ2VUYWdzKSB7XG5cdFx0XHRcdHF1ZXJ5LnRhZ3MgPSBjdHguY2hhbmdlVGFncztcblx0XHRcdH1cblx0XHRcdGlmIChmbkFwcGx5V2F0Y2hsaXN0RXhwaXJ5KCkpIHtcblx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gY3R4LndhdGNobGlzdEV4cGlyeTtcblx0XHRcdH1cblx0XHRcdGN0eC51bmRlbGV0ZVByb2Nlc3NBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+Y5Y6f6aG16Z2i4oCm4oCmJywgJ+mChOWOn+mggemdouKApuKApicpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0Y3R4Lm9uVW5kZWxldGVTdWNjZXNzLFxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0Zm5Qcm9jZXNzVW5kZWxldGVFcnJvclxuXHRcdFx0KTtcblx0XHRcdGN0eC51bmRlbGV0ZVByb2Nlc3NBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4LnVuZGVsZXRlUHJvY2Vzc0FwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHQvLyBjYWxsYmFjayBmcm9tIHVuZGVsZXRlUHJvY2Vzc0FwaS5wb3N0KClcblx0XHRjb25zdCBmblByb2Nlc3NVbmRlbGV0ZUVycm9yID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0Y29uc3QgZXJyb3JDb2RlID0gY3R4LnVuZGVsZXRlUHJvY2Vzc0FwaS5nZXRFcnJvckNvZGUoKTtcblx0XHRcdC8vIGNoZWNrIGZvciBcIkRhdGFiYXNlIHF1ZXJ5IGVycm9yXCJcblx0XHRcdGlmIChlcnJvckNvZGUgPT09ICdpbnRlcm5hbF9hcGlfZXJyb3JfREJRdWVyeUVycm9yJykge1xuXHRcdFx0XHRpZiAoY3R4LnJldHJpZXMrKyA8IGN0eC5tYXhSZXRyaWVzKSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+aVsOaNruW6k+afpeivoumUmeivr++8jOmHjeivlScsICfos4fmlpnluqvmn6XoqaLpjK/oqqTvvIzph43oqaYnKSk7XG5cdFx0XHRcdFx0LS1Nb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQ7IC8vIGFsbG93IGZvciBub3JtYWwgY29tcGxldGlvbiBpZiByZXRyeSBzdWNjZWVkc1xuXHRcdFx0XHRcdGN0eC51bmRlbGV0ZVByb2Nlc3NBcGkucG9zdCgpOyAvLyBnaXZlIGl0IGFub3RoZXIgZ28hXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfmjIHnu63nmoTmlbDmja7lupPmn6Xor6LplJnor6/vvIzph43mlrDliqDovb3pobXpnaLlubbph43or5UnLFxuXHRcdFx0XHRcdFx0XHQn5oyB57qM55qE6LOH5paZ5bqr5p+l6Kmi6Yyv6Kqk77yM6YeN5paw6LyJ5YWl6aCB6Z2i5Lim6YeN6KmmJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKGN0eC5vblVuZGVsZXRlRmFpbHVyZSkge1xuXHRcdFx0XHRcdFx0Y3R4Lm9uVW5kZWxldGVGYWlsdXJlLmNhbGwodGhpcywgY3R4LnVuZGVsZXRlUHJvY2Vzc0FwaSk7IC8vIGludm9rZSBjYWxsYmFja1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChlcnJvckNvZGUgPT09ICdjYW50dW5kZWxldGUnKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfml6Dms5Xov5jljp/liKDpmaTpobXpnaLvvIzlm6DmsqHmnInniYjmnKzkvpvov5jljp/miJblt7Looqvov5jljp8nLFxuXHRcdFx0XHRcdFx0J+eEoeazlemChOWOn+WIqumZpOmggemdou+8jOWboOaykuacieeJiOacrOS+m+mChOWOn+aIluW3suiiq+mChOWOnydcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChjdHgub25VbmRlbGV0ZUZhaWx1cmUpIHtcblx0XHRcdFx0XHRjdHgub25VbmRlbGV0ZUZhaWx1cmUuY2FsbCh0aGlzLCBjdHgudW5kZWxldGVQcm9jZXNzQXBpKTsgLy8gaW52b2tlIGNhbGxiYWNrXG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gaGFyZCBlcnJvciwgZ2l2ZSB1cFxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfml6Dms5Xov5jljp/pobXpnaLvvJonLCAn54Sh5rOV6YKE5Y6f6aCB6Z2i77yaJykgKyBjdHgudW5kZWxldGVQcm9jZXNzQXBpLmdldEVycm9yVGV4dCgpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChjdHgub25VbmRlbGV0ZUZhaWx1cmUpIHtcblx0XHRcdFx0XHRjdHgub25VbmRlbGV0ZUZhaWx1cmUuY2FsbCh0aGlzLCBjdHgudW5kZWxldGVQcm9jZXNzQXBpKTsgLy8gaW52b2tlIGNhbGxiYWNrXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Y29uc3QgZm5Qcm9jZXNzUHJvdGVjdCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4LnByb3RlY3RBcGkuZ2V0UmVzcG9uc2UoKS5xdWVyeTtcblx0XHRcdGlmICghZm5Qcm9jZXNzQ2hlY2tzKCdwcm90ZWN0JywgY3R4Lm9uUHJvdGVjdEZhaWx1cmUsIHJlc3BvbnNlKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIGFib3J0XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHRva2VuID0gcmVzcG9uc2UudG9rZW5zLmNzcmZ0b2tlbjtcblx0XHRcdGNvbnN0IFtwYWdlXSA9IHJlc3BvbnNlLnBhZ2VzO1xuXHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gcGFnZS50aXRsZTtcblx0XHRcdGN0eC53YXRjaGVkID0gcGFnZS53YXRjaGxpc3RleHBpcnkgfHwgcGFnZS53YXRjaGVkO1xuXHRcdFx0Ly8gRmV0Y2ggZXhpc3RpbmcgcHJvdGVjdGlvbiBsZXZlbHNcblx0XHRcdGNvbnN0IHBycyA9IHJlc3BvbnNlLnBhZ2VzWzBdLnByb3RlY3Rpb247XG5cdFx0XHRsZXQgZWRpdHByb3Q7XG5cdFx0XHRsZXQgbW92ZXByb3Q7XG5cdFx0XHRsZXQgY3JlYXRlcHJvdDtcblx0XHRcdGZvciAoY29uc3QgcHIgb2YgcHJzKSB7XG5cdFx0XHRcdC8vIEZpbHRlciBvdXQgcHJvdGVjdGlvbiBmcm9tIGNhc2NhZGluZ1xuXHRcdFx0XHRpZiAocHIudHlwZSA9PT0gJ2VkaXQnICYmICFwci5zb3VyY2UpIHtcblx0XHRcdFx0XHRlZGl0cHJvdCA9IHByO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHByLnR5cGUgPT09ICdtb3ZlJykge1xuXHRcdFx0XHRcdG1vdmVwcm90ID0gcHI7XG5cdFx0XHRcdH0gZWxzZSBpZiAocHIudHlwZSA9PT0gJ2NyZWF0ZScpIHtcblx0XHRcdFx0XHRjcmVhdGVwcm90ID0gcHI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIEZhbGwgYmFjayB0byBjdXJyZW50IGxldmVscyBpZiBub3QgZXhwbGljaXRseSBzZXRcblx0XHRcdGlmICghY3R4LnByb3RlY3RFZGl0ICYmIGVkaXRwcm90KSB7XG5cdFx0XHRcdGN0eC5wcm90ZWN0RWRpdCA9IHtcblx0XHRcdFx0XHRsZXZlbDogZWRpdHByb3QubGV2ZWwsXG5cdFx0XHRcdFx0ZXhwaXJ5OiBlZGl0cHJvdC5leHBpcnksXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN0eC5wcm90ZWN0TW92ZSAmJiBtb3ZlcHJvdCkge1xuXHRcdFx0XHRjdHgucHJvdGVjdE1vdmUgPSB7XG5cdFx0XHRcdFx0bGV2ZWw6IG1vdmVwcm90LmxldmVsLFxuXHRcdFx0XHRcdGV4cGlyeTogbW92ZXByb3QuZXhwaXJ5LFxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjdHgucHJvdGVjdENyZWF0ZSAmJiBjcmVhdGVwcm90KSB7XG5cdFx0XHRcdGN0eC5wcm90ZWN0Q3JlYXRlID0ge1xuXHRcdFx0XHRcdGxldmVsOiBjcmVhdGVwcm90LmxldmVsLFxuXHRcdFx0XHRcdGV4cGlyeTogY3JlYXRlcHJvdC5leHBpcnksXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHQvLyBEZWZhdWx0IHRvIHByZS1leGlzdGluZyBjYXNjYWRpbmcgcHJvdGVjdGlvbiBpZiB1bmNoYW5nZWQgKHNpbWlsYXIgdG8gYWJvdmUpXG5cdFx0XHRpZiAoY3R4LnByb3RlY3RDYXNjYWRlID09PSBudWxsKSB7XG5cdFx0XHRcdGN0eC5wcm90ZWN0Q2FzY2FkZSA9ICEhcHJzLmZpbHRlcigocHIpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcHIuY2FzY2FkZTtcblx0XHRcdFx0fSkubGVuZ3RoO1xuXHRcdFx0fVxuXHRcdFx0Ly8gV2FybiBpZiBjYXNjYWRpbmcgcHJvdGVjdGlvbiBiZWluZyBhcHBsaWVkIHdpdGggYW4gaW52YWxpZCBwcm90ZWN0aW9uIGxldmVsLFxuXHRcdFx0Ly8gd2hpY2ggZm9yIGVkaXQgcHJvdGVjdGlvbiB3aWxsIGNhdXNlIGNhc2NhZGluZyB0byBiZSBzaWxlbnRseSBzdHJpcHBlZFxuXHRcdFx0aWYgKGN0eC5wcm90ZWN0Q2FzY2FkZSkge1xuXHRcdFx0XHQvLyBPbiBtb3ZlIHByb3RlY3Rpb24sIHRoaXMgaXMgdGVjaG5pY2FsbHkgc3RyaWN0ZXIgdGhhbiB0aGUgTVcgQVBJLFxuXHRcdFx0XHQvLyBidXQgc2VlbXMgcmVhc29uYWJsZSB0byBhdm9pZCBkdW1iIHZhbHVlcyBhbmQgbWlzbGVhZGluZyBsb2cgZW50cmllcyAoVDI2NTYyNilcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCghY3R4LnByb3RlY3RFZGl0IHx8XG5cdFx0XHRcdFx0XHRjdHgucHJvdGVjdEVkaXQubGV2ZWwgIT09ICdzeXNvcCcgfHxcblx0XHRcdFx0XHRcdCFjdHgucHJvdGVjdE1vdmUgfHxcblx0XHRcdFx0XHRcdGN0eC5wcm90ZWN0TW92ZS5sZXZlbCAhPT0gJ3N5c29wJykgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5bey5a+54oCcJywgJ+aCqOW3suWwjeOAjCcpICtcblx0XHRcdFx0XHRcdFx0Y3R4LnBhZ2VOYW1lICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3lkK/nlKjkuobov57plIHkv53miqQnLCAn44CN5ZWf55So5LqG6YCj6Y6W5L+d6K23JykgK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J++8jOS9huayoeacieiuvue9ruS7heeuoeeQhuWRmOeahOS/neaKpOe6p+WIq+OAglxcblxcbicsXG5cdFx0XHRcdFx0XHRcdFx0J++8jOS9huaykuacieioreWumuWDheeuoeeQhuWToeeahOS/neitt+e0muWIpeOAglxcblxcbidcblx0XHRcdFx0XHRcdFx0KSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y2V5Ye756Gu6K6k5Lul6Ieq5Yqo6LCD5pW05bm257un57ut6L+e6ZSB5YWo5L+d5oqk77yM5Y2V5Ye75Y+W5raI5Lul6Lez6L+H5q2k5pON5L2cJyxcblx0XHRcdFx0XHRcdFx0XHQn6bue5pOK56K66KqN5Lul6Ieq5YuV6Kq/5pW05Lim57m857qM6YCj6Y6W5YWo5L+d6K2377yM6bue5pOK5Y+W5raI5Lul6Lez6YGO5q2k5pON5L2cJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+i/numUgeS/neaKpOW3suWPlua2iOOAgicsICfpgKPpjpbkv53orbflt7Llj5bmtojjgIInKSk7XG5cdFx0XHRcdFx0Y3R4Lm9uUHJvdGVjdEZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN0eC5wcm90ZWN0RWRpdC5sZXZlbCA9ICdzeXNvcCc7XG5cdFx0XHRcdGN0eC5wcm90ZWN0TW92ZS5sZXZlbCA9ICdzeXNvcCc7XG5cdFx0XHR9XG5cdFx0XHQvLyBCdWlsZCBwcm90ZWN0aW9uIGxldmVscyBhbmQgZXhwaXJ5cyAoZXhwaXJpZXM/KSBmb3IgcXVlcnlcblx0XHRcdGNvbnN0IHByb3RlY3Rpb25zID0gW107XG5cdFx0XHRjb25zdCBleHBpcnlzID0gW107XG5cdFx0XHRpZiAoY3R4LnByb3RlY3RFZGl0KSB7XG5cdFx0XHRcdHByb3RlY3Rpb25zW3Byb3RlY3Rpb25zLmxlbmd0aF0gPSBgZWRpdD0ke2N0eC5wcm90ZWN0RWRpdC5sZXZlbH1gO1xuXHRcdFx0XHRleHBpcnlzW2V4cGlyeXMubGVuZ3RoXSA9IGN0eC5wcm90ZWN0RWRpdC5leHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3R4LnByb3RlY3RNb3ZlKSB7XG5cdFx0XHRcdHByb3RlY3Rpb25zW3Byb3RlY3Rpb25zLmxlbmd0aF0gPSBgbW92ZT0ke2N0eC5wcm90ZWN0TW92ZS5sZXZlbH1gO1xuXHRcdFx0XHRleHBpcnlzW2V4cGlyeXMubGVuZ3RoXSA9IGN0eC5wcm90ZWN0TW92ZS5leHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3R4LnByb3RlY3RDcmVhdGUpIHtcblx0XHRcdFx0cHJvdGVjdGlvbnNbcHJvdGVjdGlvbnMubGVuZ3RoXSA9IGBjcmVhdGU9JHtjdHgucHJvdGVjdENyZWF0ZS5sZXZlbH1gO1xuXHRcdFx0XHRleHBpcnlzW2V4cGlyeXMubGVuZ3RoXSA9IGN0eC5wcm90ZWN0Q3JlYXRlLmV4cGlyeTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdwcm90ZWN0Jyxcblx0XHRcdFx0dGl0bGU6IHBhZ2VUaXRsZSxcblx0XHRcdFx0dG9rZW4sXG5cdFx0XHRcdHByb3RlY3Rpb25zOiBwcm90ZWN0aW9ucy5qb2luKCd8JyksXG5cdFx0XHRcdGV4cGlyeTogZXhwaXJ5cy5qb2luKCd8JyksXG5cdFx0XHRcdHJlYXNvbjogY3R4LmVkaXRTdW1tYXJ5LFxuXHRcdFx0XHR3YXRjaGxpc3Q6IGN0eC53YXRjaGxpc3RPcHRpb24sXG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdC8vIE9ubHkgc2hvd3MgdXAgaW4gbG9ncywgbm90IHBhZ2UgaGlzdG9yeVxuXHRcdFx0aWYgKGN0eC5jaGFuZ2VUYWdzKSB7XG5cdFx0XHRcdHF1ZXJ5LnRhZ3MgPSBjdHguY2hhbmdlVGFncztcblx0XHRcdH1cblx0XHRcdGlmIChmbkFwcGx5V2F0Y2hsaXN0RXhwaXJ5KCkpIHtcblx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gY3R4LndhdGNobGlzdEV4cGlyeTtcblx0XHRcdH1cblx0XHRcdGlmIChjdHgucHJvdGVjdENhc2NhZGUpIHtcblx0XHRcdFx0cXVlcnkuY2FzY2FkZSA9ICd0cnVlJztcblx0XHRcdH1cblx0XHRcdGN0eC5wcm90ZWN0UHJvY2Vzc0FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv53miqTpobXpnaLigKbigKYnLCAn5L+d6K236aCB6Z2i4oCm4oCmJyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRjdHgub25Qcm90ZWN0U3VjY2Vzcyxcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdGN0eC5vblByb3RlY3RGYWlsdXJlXG5cdFx0XHQpO1xuXHRcdFx0Y3R4LnByb3RlY3RQcm9jZXNzQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdGN0eC5wcm90ZWN0UHJvY2Vzc0FwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHRjb25zdCBzbGVlcCA9IChtaWxsaXNlY29uZHMpID0+IHtcblx0XHRcdGNvbnN0IGRlZmVycmVkID0gJC5EZWZlcnJlZCgpO1xuXHRcdFx0c2V0VGltZW91dChkZWZlcnJlZC5yZXNvbHZlLCBtaWxsaXNlY29uZHMpO1xuXHRcdFx0cmV0dXJuIGRlZmVycmVkO1xuXHRcdH07XG5cdH07IC8vIGVuZCBNb3JlYml0cy53aWtpLnBhZ2Vcblx0LyogKioqKioqKioqKioqKioqKiBNb3JlYml0cy53aWtpLnByZXZpZXcgKioqKioqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogVXNlIHRoZSBBUEkgdG8gcGFyc2UgYSBmcmFnbWVudCBvZiB3aWtpdGV4dCBhbmQgcmVuZGVyIGl0IGFzIEhUTUwuXG5cdCAqXG5cdCAqIFRoZSBzdWdnZXN0ZWQgaW1wbGVtZW50YXRpb24gcGF0dGVybiAoaW4ge0BsaW5rIE1vcmViaXRzLnNpbXBsZVdpbmRvd30gYW5kXG5cdCAqIHtAbGluayBNb3JlYml0cy5xdWlja0Zvcm19IHNpdHVhdGlvbnMpIGlzIHRvIGNvbnN0cnVjdCBhXG5cdCAqIGBNb3JlYml0cy53aWtpLnByZXZpZXdgIG9iamVjdCBhZnRlciByZW5kZXJpbmcgYSBgTW9yZWJpdHMucXVpY2tGb3JtYCwgYW5kXG5cdCAqIGJpbmQgdGhlIG9iamVjdCB0byBhbiBhcmJpdHJhcnkgcHJvcGVydHkgb2YgdGhlIGZvcm0gKGUuZy4gfHByZXZpZXdlcnwpLlxuXHQgKiBGb3IgYW4gZXhhbXBsZSwgc2VlIHR3aW5rbGV3YXJuLmpzLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraVxuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcHJldmlld2JveCAtIFRoZSBlbGVtZW50IHRoYXQgd2lsbCBjb250YWluIHRoZSByZW5kZXJlZCBIVE1MLFxuXHQgKiB1c3VhbGx5IGEgPGRpdj4gZWxlbWVudC5cblx0ICovXG5cdE1vcmViaXRzLndpa2kucHJldmlldyA9IGZ1bmN0aW9uIChwcmV2aWV3Ym94KSB7XG5cdFx0dGhpcy5wcmV2aWV3Ym94ID0gcHJldmlld2JveDtcblx0XHQkKHByZXZpZXdib3gpLmFkZENsYXNzKCdtb3JlYml0cy1wcmV2aWV3Ym94JykuaGlkZSgpO1xuXHRcdC8qKlxuXHRcdCAqIERpc3BsYXlzIHRoZSBwcmV2aWV3IGJveCwgYW5kIGJlZ2lucyBhbiBhc3luY2hyb25vdXMgYXR0ZW1wdFxuXHRcdCAqIHRvIHJlbmRlciB0aGUgc3BlY2lmaWVkIHdpa2l0ZXh0LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHdpa2l0ZXh0IC0gV2lraXRleHQgdG8gcmVuZGVyOyBtb3N0IHRoaW5ncyBzaG91bGQgd29yaywgaW5jbHVkaW5nIGBzdWJzdDpgIGFuZCBgfn5+fmAuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IFtwYWdlVGl0bGVdIC0gT3B0aW9uYWwgcGFyYW1ldGVyIGZvciB0aGUgcGFnZSB0aGlzIHNob3VsZCBiZSByZW5kZXJlZCBhcyBiZWluZyBvbiwgaWYgb21pdHRlZCBpdCBpcyB0YWtlbiBhcyB0aGUgY3VycmVudCBwYWdlLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbc2VjdGlvblRpdGxlXSAtIElmIHByb3ZpZGVkLCByZW5kZXIgdGhlIHRleHQgYXMgYSBuZXcgc2VjdGlvbiB1c2luZyB0aGlzIGFzIHRoZSB0aXRsZS5cblx0XHQgKiBAcmV0dXJucyB7alF1ZXJ5LnByb21pc2V9XG5cdFx0ICovXG5cdFx0dGhpcy5iZWdpblJlbmRlciA9ICh3aWtpdGV4dCwgcGFnZVRpdGxlLCBzZWN0aW9uVGl0bGUpID0+IHtcblx0XHRcdCQocHJldmlld2JveCkuc2hvdygpO1xuXHRcdFx0Y29uc3Qgc3RhdHVzc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHByZXZpZXdib3guYXBwZW5kQ2hpbGQoc3RhdHVzc3Bhbik7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChzdGF0dXNzcGFuKTtcblx0XHRcdC8vIOiLpemhtemdouS4jeaYr3dpa2l0ZXh077yI5L6L5aaCSlPjgIFDU1PnrYnvvInvvIzpgqPkuYjmib7kuIDkuKp3aWtpdGV4dOmhtemdouadpemihOiniOOAglxuXHRcdFx0bGV0IHBhZ2VOYW1lID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpICE9PSAnd2lraXRleHQnKSB7XG5cdFx0XHRcdHBhZ2VOYW1lID0gYERyYWZ0OiR7cGFnZU5hbWV9YDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdwYXJzZScsXG5cdFx0XHRcdHByb3A6IFsndGV4dCcsICdtb2R1bGVzJ10sXG5cdFx0XHRcdHBzdDogdHJ1ZSxcblx0XHRcdFx0Ly8gUFNUID0gcHJlLXNhdmUgdHJhbnNmb3JtOyB0aGlzIG1ha2VzIHN1YnN0aXR1dGlvbiB3b3JrIHByb3Blcmx5XG5cdFx0XHRcdHByZXZpZXc6IHRydWUsXG5cdFx0XHRcdHRleHQ6IHdpa2l0ZXh0LFxuXHRcdFx0XHR0aXRsZTogcGFnZVRpdGxlIHx8IHBhZ2VOYW1lLFxuXHRcdFx0XHRkaXNhYmxlbGltaXRyZXBvcnQ6IHRydWUsXG5cdFx0XHRcdGRpc2FibGVlZGl0c2VjdGlvbjogdHJ1ZSxcblx0XHRcdFx0dXNlbGFuZzogbXcuY29uZmlnLmdldCgnd2dVc2VyTGFuZ3VhZ2UnKSxcblx0XHRcdFx0Ly8gVXNlIHdnVXNlckxhbmd1YWdlIGZvciBwcmV2aWV3XG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdGlmIChzZWN0aW9uVGl0bGUpIHtcblx0XHRcdFx0cXVlcnkuc2VjdGlvbiA9ICduZXcnO1xuXHRcdFx0XHRxdWVyeS5zZWN0aW9udGl0bGUgPSBzZWN0aW9uVGl0bGU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZW5kZXJBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCm4oCmJywgJ+i8ieWFpeS4reKApuKApicpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0Zm5SZW5kZXJTdWNjZXNzLFxuXHRcdFx0XHRuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn6aKE6KeIJywgJ+mgkOimvScpKVxuXHRcdFx0KTtcblx0XHRcdHJlbmRlckFwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHRjb25zdCBmblJlbmRlclN1Y2Nlc3MgPSAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGFwaW9iai5nZXRSZXNwb25zZSgpO1xuXHRcdFx0Y29uc3QgaHRtbCA9IHJlc3BvbnNlLnBhcnNlLnRleHQ7XG5cdFx0XHRpZiAoIWh0bWwpIHtcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn5Yqg6L296aKE6KeI5aSx6LSl77yM5oiW5qih5p2/5Li656m6JywgJ+i8ieWFpemgkOimveWkseaVl++8jOaIluaooeadv+eCuuepuicpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cHJldmlld2JveC5pbm5lckhUTUwgPSBodG1sO1xuXHRcdFx0bXcubG9hZGVyLmxvYWQocmVzcG9uc2UucGFyc2UubW9kdWxlc3R5bGVzKTtcblx0XHRcdG13LmxvYWRlci5sb2FkKHJlc3BvbnNlLnBhcnNlLm1vZHVsZXMpO1xuXHRcdFx0Ly8gdGhpcyBtYWtlcyBsaW5rcyBvcGVuIGluIG5ldyB0YWJcblx0XHRcdCQocHJldmlld2JveCkuZmluZCgnYScpLmF0dHIoJ3RhcmdldCcsICdfYmxhbmsnKS5hdHRyKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdH07XG5cdFx0LyoqIEhpZGVzIHRoZSBwcmV2aWV3IGJveCBhbmQgY2xlYXJzIGl0LiAqL1xuXHRcdHRoaXMuY2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuXHRcdFx0JChwcmV2aWV3Ym94KS5lbXB0eSgpLmhpZGUoKTtcblx0XHR9O1xuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLndpa2l0ZXh0ICoqKioqKioqKioqKioqKiogKi9cblx0LyoqXG5cdCAqIFdpa2l0ZXh0IG1hbmlwdWxhdGlvbi5cblx0ICpcblx0ICogQG5hbWVzcGFjZSBNb3JlYml0cy53aWtpdGV4dFxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICovXG5cdE1vcmViaXRzLndpa2l0ZXh0ID0ge307XG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZhbHVlIG9mIGV2ZXJ5IHBhcmFtZXRlciBmb3VuZCBpbiB0aGUgd2lraXRleHQgb2YgYSBnaXZlbiB0ZW1wbGF0ZS5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLndpa2l0ZXh0XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gV2lraXRleHQgY29udGFpbmluZyBhIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIC0gSW5kZXggbm90aW5nIHdoZXJlIGluIHRoZSB0ZXh0IHRoZSB0ZW1wbGF0ZSBiZWdpbnMuXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9IGB7bmFtZTogdGVtcGxhdGVOYW1lLCBwYXJhbWV0ZXJzOiB7a2V5OiB2YWx1ZX19YC5cblx0ICovXG5cdE1vcmViaXRzLndpa2l0ZXh0LnBhcnNlVGVtcGxhdGUgPSAodGV4dCwgc3RhcnQpID0+IHtcblx0XHRzdGFydCB8fD0gMDtcblx0XHRjb25zdCBsZXZlbCA9IFtdOyAvLyBUcmFjayBvZiBob3cgZGVlcCB3ZSBhcmUgKHt7LCB7e3ssIG9yIFtbKVxuXHRcdGxldCBjb3VudCA9IC0xOyAvLyBOdW1iZXIgb2YgcGFyYW1ldGVycyBmb3VuZFxuXHRcdGxldCB1bm5hbWVkID0gMDsgLy8gS2VlcCB0cmFjayBvZiB3aGF0IG51bWJlciBhbiB1bm5hbWVkIHBhcmFtZXRlciBzaG91bGQgcmVjZWl2ZVxuXHRcdGxldCBlcXVhbHMgPSAtMTsgLy8gQWZ0ZXIgZmluZGluZyBcIj1cIiBiZWZvcmUgYSBwYXJhbWV0ZXIsIHRoZSBpbmRleDsgb3RoZXJ3aXNlLCAtMVxuXHRcdGxldCBjdXJyZW50ID0gJyc7XG5cdFx0Y29uc3QgcmVzdWx0ID0ge1xuXHRcdFx0bmFtZTogJycsXG5cdFx0XHRwYXJhbWV0ZXJzOiB7fSxcblx0XHR9O1xuXHRcdGxldCBrZXk7XG5cdFx0bGV0IHZhbHVlO1xuXHRcdC8qKlxuXHRcdCAqIEZ1bmN0aW9uIHRvIGhhbmRsZSBmaW5kaW5nIHBhcmFtZXRlciB2YWx1ZXMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFtmaW5hbD1mYWxzZV0gLSBXaGV0aGVyIHRoaXMgaXMgdGhlIGZpbmFsXG5cdFx0ICogcGFyYW1ldGVyIGFuZCB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgdHJhaWxpbmcgYH19YC5cblx0XHQgKi9cblx0XHRjb25zdCBmaW5kUGFyYW0gPSAoZmluYWwpID0+IHtcblx0XHRcdC8vIE5vdGhpbmcgZm91bmQgeWV0LCB0aGlzIG11c3QgYmUgdGhlIHRlbXBsYXRlIG5hbWVcblx0XHRcdGlmIChjb3VudCA9PT0gLTEpIHtcblx0XHRcdFx0cmVzdWx0Lm5hbWUgPSBjdXJyZW50LnNsaWNlKDIpLnRyaW0oKTtcblx0XHRcdFx0Kytjb3VudDtcblx0XHRcdH0gZWxzZSBpZiAoZXF1YWxzID09PSAtMSkge1xuXHRcdFx0XHQvLyBJbiBhIHBhcmFtZXRlclxuXHRcdFx0XHQvLyBObyBlcXVhbHMsIHNvIGl0IG11c3QgYmUgdW5uYW1lZDsgbm8gdHJpbSBzaW5jZSB3aGl0ZXNwYWNlIGFsbG93ZWRcblx0XHRcdFx0Y29uc3QgcGFyYW0gPSBmaW5hbCA/IGN1cnJlbnQuc2xpY2UoZXF1YWxzICsgMSwgLTIpIDogY3VycmVudDtcblx0XHRcdFx0aWYgKHBhcmFtKSB7XG5cdFx0XHRcdFx0cmVzdWx0LnBhcmFtZXRlcnNbKyt1bm5hbWVkXSA9IHBhcmFtO1xuXHRcdFx0XHRcdCsrY291bnQ7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFdlIGZvdW5kIGFuIGVxdWFscywgc28gc2F2ZSB0aGUgcGFyYW1ldGVyIGFzIGtleTogdmFsdWVcblx0XHRcdFx0a2V5ID0gY3VycmVudC5zbGljZSgwLCBNYXRoLm1heCgwLCBlcXVhbHMpKS50cmltKCk7XG5cdFx0XHRcdHZhbHVlID0gZmluYWwgPyBjdXJyZW50LnNsaWNlKGVxdWFscyArIDEsIC0yKS50cmltKCkgOiBjdXJyZW50LnNsaWNlKE1hdGgubWF4KDAsIGVxdWFscyArIDEpKS50cmltKCk7XG5cdFx0XHRcdHJlc3VsdC5wYXJhbWV0ZXJzW2tleV0gPSB2YWx1ZTtcblx0XHRcdFx0ZXF1YWxzID0gLTE7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCB0ZXh0Lmxlbmd0aDsgKytpKSB7XG5cdFx0XHRjb25zdCB0ZXN0MyA9IHRleHQuc2xpY2UoaSwgaSArIDMpO1xuXHRcdFx0aWYgKHRlc3QzID09PSAne3t7JyB8fCAodGVzdDMgPT09ICd9fX0nICYmIGxldmVsLmF0KC0xKSA9PT0gMykpIHtcblx0XHRcdFx0Y3VycmVudCArPSB0ZXN0Mztcblx0XHRcdFx0aSArPSAyO1xuXHRcdFx0XHRpZiAodGVzdDMgPT09ICd7e3snKSB7XG5cdFx0XHRcdFx0bGV2ZWxbbGV2ZWwubGVuZ3RoXSA9IDM7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGV2ZWwucG9wKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB0ZXN0MiA9IHRleHQuc2xpY2UoaSwgaSArIDIpO1xuXHRcdFx0Ly8gRW50ZXJpbmcgYSB0ZW1wbGF0ZSAob3IgbGluaylcblx0XHRcdGlmICh0ZXN0MiA9PT0gJ3t7JyB8fCB0ZXN0MiA9PT0gJ1tbJykge1xuXHRcdFx0XHRjdXJyZW50ICs9IHRlc3QyO1xuXHRcdFx0XHQrK2k7XG5cdFx0XHRcdGlmICh0ZXN0MiA9PT0gJ3t7Jykge1xuXHRcdFx0XHRcdGxldmVsW2xldmVsLmxlbmd0aF0gPSAyO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxldmVsW2xldmVsLmxlbmd0aF0gPSAnd2wnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Ly8gRWl0aGVyIGxlYXZpbmcgYSBsaW5rIG9yIHRlbXBsYXRlL3BhcnNlciBmdW5jdGlvblxuXHRcdFx0aWYgKCh0ZXN0MiA9PT0gJ319JyAmJiBsZXZlbC5hdCgtMSkgPT09IDIpIHx8ICh0ZXN0MiA9PT0gJ11dJyAmJiBsZXZlbC5hdCgtMSkgPT09ICd3bCcpKSB7XG5cdFx0XHRcdGN1cnJlbnQgKz0gdGVzdDI7XG5cdFx0XHRcdCsraTtcblx0XHRcdFx0bGV2ZWwucG9wKCk7XG5cdFx0XHRcdC8vIEZpbmQgdGhlIGZpbmFsIHBhcmFtZXRlciBpZiB0aGlzIHJlYWxseSBpcyB0aGUgZW5kXG5cdFx0XHRcdGlmICh0ZXN0MiA9PT0gJ319JyAmJiBsZXZlbC5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRmaW5kUGFyYW0odHJ1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGV4dC5jaGFyQXQoaSkgPT09ICd8JyAmJiBsZXZlbC5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0Ly8gQW5vdGhlciBwaXBlIGZvdW5kLCB0b3BsZXZlbCwgc28gcGFyYW1ldGVyIGNvbWluZyB1cCFcblx0XHRcdFx0ZmluZFBhcmFtKCk7XG5cdFx0XHRcdGN1cnJlbnQgPSAnJztcblx0XHRcdH0gZWxzZSBpZiAoZXF1YWxzID09PSAtMSAmJiB0ZXh0LmNoYXJBdChpKSA9PT0gJz0nICYmIGxldmVsLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHQvLyBFcXVhbHMgZm91bmQsIHRvcGxldmVsXG5cdFx0XHRcdGVxdWFscyA9IGN1cnJlbnQubGVuZ3RoO1xuXHRcdFx0XHRjdXJyZW50ICs9IHRleHQuY2hhckF0KGkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSnVzdCBhZHZhbmNlIHRoZSBwb3NpdGlvblxuXHRcdFx0XHRjdXJyZW50ICs9IHRleHQuY2hhckF0KGkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9O1xuXHQvKipcblx0ICogQWRqdXN0IGFuZCBtYW5pcHVsYXRlIHRoZSB3aWtpdGV4dCBvZiBhIHBhZ2UuXG5cdCAqXG5cdCAqIEBjbGFzc1xuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraXRleHRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBXaWtpdGV4dCB0byBiZSBtYW5pcHVsYXRlZC5cblx0ICovXG5cdE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UgPSBmdW5jdGlvbiAodGV4dCkge1xuXHRcdHRoaXMudGV4dCA9IHRleHQ7XG5cdH07XG5cdE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UucHJvdG90eXBlID0ge1xuXHRcdHRleHQ6ICcnLFxuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZXMgbGlua3MgdG8gYGxpbmtfdGFyZ2V0YCBmcm9tIHRoZSBwYWdlIHRleHQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gbGlua1RhcmdldFxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy53aWtpdGV4dC5wYWdlfVxuXHRcdCAqL1xuXHRcdHJlbW92ZUxpbmsobGlua1RhcmdldCkge1xuXHRcdFx0Y29uc3QgbXdUaXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KGxpbmtUYXJnZXQpO1xuXHRcdFx0Y29uc3QgbmFtZXNwYWNlSUQgPSBtd1RpdGxlLmdldE5hbWVzcGFjZUlkKCk7XG5cdFx0XHRjb25zdCB0aXRsZSA9IG13VGl0bGUuZ2V0TWFpblRleHQoKTtcblx0XHRcdGxldCBsaW5rUmVnZXhTdHJpbmcgPSAnJztcblx0XHRcdGlmIChuYW1lc3BhY2VJRCAhPT0gMCkge1xuXHRcdFx0XHRsaW5rUmVnZXhTdHJpbmcgPSBgJHtNb3JlYml0cy5uYW1lc3BhY2VSZWdleChuYW1lc3BhY2VJRCl9OmA7XG5cdFx0XHR9XG5cdFx0XHRsaW5rUmVnZXhTdHJpbmcgKz0gTW9yZWJpdHMucGFnZU5hbWVSZWdleCh0aXRsZSk7XG5cdFx0XHQvLyBGb3IgbW9zdCBuYW1lc3BhY2VzLCB1bmxpbmsgYm90aCBbW1VzZXI6VGVzdF1dIGFuZCBbWzpVc2VyOlRlc3RdXVxuXHRcdFx0Ly8gRm9yIGZpbGVzIGFuZCBjYXRlZ29yaWVzLCBvbmx5IHVubGluayBbWzpDYXRlZ29yeTpUZXN0XV0uIERvIG5vdCB1bmxpbmsgW1tDYXRlZ29yeTpUZXN0XV1cblx0XHRcdGNvbnN0IGlzRmlsZU9yQ2F0ZWdvcnkgPSBbNiwgMTRdLmluY2x1ZGVzKG5hbWVzcGFjZUlEKTtcblx0XHRcdGNvbnN0IGNvbG9uID0gaXNGaWxlT3JDYXRlZ29yeSA/ICc6JyA6ICc6Pyc7XG5cdFx0XHRjb25zdCBzaW1wbGVMaW5rUmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcW1xcXFxbJHtjb2xvbn0oJHtsaW5rUmVnZXhTdHJpbmd9KVxcXFxdXFxcXF1gLCAnZycpO1xuXHRcdFx0Y29uc3QgcGlwZWRMaW5rUmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcW1xcXFxbJHtjb2xvbn0ke2xpbmtSZWdleFN0cmluZ31cXFxcfCguKz8pXFxcXF1cXFxcXWAsICdnJyk7XG5cdFx0XHR0aGlzLnRleHQgPSB0aGlzLnRleHQucmVwbGFjZShzaW1wbGVMaW5rUmVnZXgsICckMScpLnJlcGxhY2UocGlwZWRMaW5rUmVnZXgsICckMScpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBDb21tZW50cyBvdXQgaW1hZ2VzIGZyb20gcGFnZSB0ZXh0OyBpZiB1c2VkIGluIGEgZ2FsbGVyeSwgZGVsZXRlcyB0aGUgd2hvbGUgbGluZS5cblx0XHQgKiBJZiB1c2VkIGFzIGEgdGVtcGxhdGUgYXJndW1lbnQgKG5vdCBuZWNlc3NhcmlseSB3aXRoIGBGaWxlOmAgcHJlZml4KSwgdGhlIHRlbXBsYXRlIHBhcmFtZXRlciBpcyBjb21tZW50ZWQgb3V0LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGltYWdlIC0gSW1hZ2UgbmFtZSB3aXRob3V0IGBGaWxlOmAgcHJlZml4LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIFJlYXNvbiB0byBiZSBpbmNsdWRlZCBpbiBjb21tZW50LCBhbG9uZ3NpZGUgdGhlIGNvbW1lbnRlZC1vdXQgaW1hZ2UuXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLndpa2l0ZXh0LnBhZ2V9XG5cdFx0ICovXG5cdFx0Y29tbWVudE91dEltYWdlKGltYWdlLCByZWFzb24pIHtcblx0XHRcdGNvbnN0IHVuYmluZGVyID0gbmV3IE1vcmViaXRzLnVuYmluZGVyKHRoaXMudGV4dCk7XG5cdFx0XHR1bmJpbmRlci51bmJpbmQoJzwhLS0nLCAnLS0+Jyk7XG5cdFx0XHRyZWFzb24gPSByZWFzb24gPyBgJHtyZWFzb259OiBgIDogJyc7XG5cdFx0XHRjb25zdCBpbWFnZVJlZ2V4U3RyaW5nID0gTW9yZWJpdHMucGFnZU5hbWVSZWdleChpbWFnZSk7XG5cdFx0XHQvLyBDaGVjayBmb3Igbm9ybWFsIGltYWdlIGxpbmtzLCBpLmUuIFtbRmlsZTpGb29iYXIucG5nfC4uLl1dXG5cdFx0XHQvLyBXaWxsIGVhdCB0aGUgd2hvbGUgbGlua1xuXHRcdFx0Y29uc3QgbGlua3NSZWdleCA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdGBcXFxcW1xcXFxbJHtNb3JlYml0cy5uYW1lc3BhY2VSZWdleCg2KX06XFxcXHMqJHtpbWFnZVJlZ2V4U3RyaW5nfVxcXFxzKltcXFxcfCg/OlxcXFxdXFxcXF0pXWBcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBhbGxMaW5rcyA9IE1vcmViaXRzLnN0cmluZy5zcGxpdFdlaWdodGVkQnlLZXlzKHVuYmluZGVyLmNvbnRlbnQsICdbWycsICddXScpO1xuXHRcdFx0Zm9yIChjb25zdCBhbGxMaW5rIG9mIGFsbExpbmtzKSB7XG5cdFx0XHRcdGlmIChsaW5rc1JlZ2V4LnRlc3QoYWxsTGluaykpIHtcblx0XHRcdFx0XHRjb25zdCByZXBsYWNlbWVudCA9IGA8IS0tICR7cmVhc29ufSR7YWxsTGlua30gLS0+YDtcblx0XHRcdFx0XHR1bmJpbmRlci5jb250ZW50ID0gdW5iaW5kZXIuY29udGVudC5yZXBsYWNlKGFsbExpbmssIHJlcGxhY2VtZW50KTtcblx0XHRcdFx0XHQvLyB1bmJpbmQgdGhlIG5ld2x5IGNyZWF0ZWQgY29tbWVudHNcblx0XHRcdFx0XHR1bmJpbmRlci51bmJpbmQoJzwhLS0nLCAnLS0+Jyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIENoZWNrIGZvciBnYWxsZXJ5IGltYWdlcywgaS5lLiBpbnN0YW5jZXMgdGhhdCBtdXN0IHN0YXJ0IG9uIGEgbmV3IGxpbmUsXG5cdFx0XHQvLyBldmVudHVhbGx5IHByZWNlZGVkIHdpdGggc29tZSBzcGFjZSwgYW5kIG11c3QgaW5jbHVkZSBGaWxlOiBwcmVmaXhcblx0XHRcdC8vIFdpbGwgZWF0IHRoZSB3aG9sZSBsaW5lLlxuXHRcdFx0Y29uc3QgZ2FsbGVyeUltYWdlUmVnZXggPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgKF5cXFxccyoke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDYpfTpcXFxccyoke2ltYWdlUmVnZXhTdHJpbmd9XFxcXHMqKD86XFxcXHwuKj8kfCQpKWAsXG5cdFx0XHRcdCdtZydcblx0XHRcdCk7XG5cdFx0XHR1bmJpbmRlci5jb250ZW50ID0gdW5iaW5kZXIuY29udGVudC5yZXBsYWNlKGdhbGxlcnlJbWFnZVJlZ2V4LCBgPCEtLSAke3JlYXNvbn0kMSAtLT5gKTtcblx0XHRcdC8vIHVuYmluZCB0aGUgbmV3bHkgY3JlYXRlZCBjb21tZW50c1xuXHRcdFx0dW5iaW5kZXIudW5iaW5kKCc8IS0tJywgJy0tPicpO1xuXHRcdFx0Ly8gQ2hlY2sgZnJlZSBpbWFnZSB1c2FnZXMsIGZvciBleGFtcGxlIGFzIHRlbXBsYXRlIGFyZ3VtZW50cywgbWlnaHQgaGF2ZSB0aGUgRmlsZTogcHJlZml4IGV4Y2x1ZGVkLCBidXQgbXVzdCBiZSBwcmVjZWRlZCBieSBhbiB8XG5cdFx0XHQvLyBXaWxsIG9ubHkgZWF0IHRoZSBpbWFnZSBuYW1lIGFuZCB0aGUgcHJlY2VkaW5nIGJhciBhbmQgYW4gZXZlbnR1YWwgbmFtZWQgcGFyYW1ldGVyXG5cdFx0XHRjb25zdCBmcmVlSW1hZ2VSZWdleCA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdGAoXFxcXHxcXFxccyooPzpbXFxcXHdcXFxcc10rXFxcXD0pP1xcXFxzKig/OiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoNil9OlxcXFxzKik/JHtpbWFnZVJlZ2V4U3RyaW5nfSlgLFxuXHRcdFx0XHQnbWcnXG5cdFx0XHQpO1xuXHRcdFx0dW5iaW5kZXIuY29udGVudCA9IHVuYmluZGVyLmNvbnRlbnQucmVwbGFjZShmcmVlSW1hZ2VSZWdleCwgYDwhLS0gJHtyZWFzb259JDEgLS0+YCk7XG5cdFx0XHQvLyBSZWJpbmQgdGhlIGNvbnRlbnQgbm93LCB3ZSBhcmUgZG9uZSFcblx0XHRcdHRoaXMudGV4dCA9IHVuYmluZGVyLnJlYmluZCgpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBDb252ZXJ0cyB1c2VzIG9mIFtbRmlsZTpgaW1hZ2VgXV0gdG8gW1tGaWxlOmBpbWFnZWB8YGRhdGFgXV0uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2UgLSBJbWFnZSBuYW1lIHdpdGhvdXQgRmlsZTogcHJlZml4LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIGRpc3BsYXkgb3B0aW9ucy5cblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMud2lraXRleHQucGFnZX1cblx0XHQgKi9cblx0XHRhZGRUb0ltYWdlQ29tbWVudChpbWFnZSwgZGF0YSkge1xuXHRcdFx0Y29uc3QgaW1hZ2VSZWdleFN0cmluZyA9IE1vcmViaXRzLnBhZ2VOYW1lUmVnZXgoaW1hZ2UpO1xuXHRcdFx0Y29uc3QgbGlua3NSZWdleCA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdGBcXFxcW1xcXFxbJHtNb3JlYml0cy5uYW1lc3BhY2VSZWdleCg2KX06XFxcXHMqJHtpbWFnZVJlZ2V4U3RyaW5nfVxcXFxzKltcXFxcfCg/OlxcXFxdXFxcXF0pXWBcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBhbGxMaW5rcyA9IE1vcmViaXRzLnN0cmluZy5zcGxpdFdlaWdodGVkQnlLZXlzKHRoaXMudGV4dCwgJ1tbJywgJ11dJyk7XG5cdFx0XHRmb3IgKGxldCByZXBsYWNlbWVudCBvZiBhbGxMaW5rcykge1xuXHRcdFx0XHRpZiAobGlua3NSZWdleC50ZXN0KHJlcGxhY2VtZW50KSkge1xuXHRcdFx0XHRcdC8vIGp1c3QgcHV0IGl0IGF0IHRoZSBlbmQ/XG5cdFx0XHRcdFx0cmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudC5yZXBsYWNlKC9cXF1cXF0kLywgYHwke2RhdGF9XV1gKTtcblx0XHRcdFx0XHR0aGlzLnRleHQgPSB0aGlzLnRleHQucmVwbGFjZShyZXBsYWNlbWVudCwgcmVwbGFjZW1lbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBnYWxsZXJ5UmVnZXggPSBuZXcgUmVnRXhwKGBeKFxcXFxzKiR7aW1hZ2VSZWdleFN0cmluZ30uKj8pXFxcXHw/KC4qPykkYCwgJ21nJyk7XG5cdFx0XHRjb25zdCBuZXd0ZXh0ID0gYCQxfCQyICR7ZGF0YX1gO1xuXHRcdFx0dGhpcy50ZXh0ID0gdGhpcy50ZXh0LnJlcGxhY2UoZ2FsbGVyeVJlZ2V4LCBuZXd0ZXh0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlIGFsbCB0cmFuc2NsdXNpb25zIG9mIGEgdGVtcGxhdGUgZnJvbSBwYWdlIHRleHQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdGVtcGxhdGUgLSBQYWdlIG5hbWUgd2hvc2UgdHJhbnNjbHVzaW9ucyBhcmUgdG8gYmUgcmVtb3ZlZCxcblx0XHQgKiBpbmNsdWRlIG5hbWVzcGFjZSBwcmVmaXggb25seSBpZiBub3QgaW4gdGVtcGxhdGUgbmFtZXNwYWNlLlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy53aWtpdGV4dC5wYWdlfVxuXHRcdCAqL1xuXHRcdHJlbW92ZVRlbXBsYXRlKHRlbXBsYXRlKSB7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZVJlZ2V4U3RyaW5nID0gTW9yZWJpdHMucGFnZU5hbWVSZWdleCh0ZW1wbGF0ZSk7XG5cdFx0XHRjb25zdCBsaW5rc1JlZ2V4ID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0YFxcXFx7XFxcXHsoPzoke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDEwKX06KT9cXFxccyoke3RlbXBsYXRlUmVnZXhTdHJpbmd9XFxcXHMqW1xcXFx8KD86XFxcXH1cXFxcfSldYFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGFsbFRlbXBsYXRlcyA9IE1vcmViaXRzLnN0cmluZy5zcGxpdFdlaWdodGVkQnlLZXlzKHRoaXMudGV4dCwgJ3t7JywgJ319JywgWyd7e3snLCAnfX19J10pO1xuXHRcdFx0Zm9yIChjb25zdCBhbGxUZW1wbGF0ZSBvZiBhbGxUZW1wbGF0ZXMpIHtcblx0XHRcdFx0aWYgKGxpbmtzUmVnZXgudGVzdChhbGxUZW1wbGF0ZSkpIHtcblx0XHRcdFx0XHR0aGlzLnRleHQgPSB0aGlzLnRleHQucmVwbGFjZShhbGxUZW1wbGF0ZSwgJycpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFNtYXJ0bHkgaW5zZXJ0IGEgdGFnIGF0b3AgcGFnZSB0ZXh0IGJ1dCBhZnRlciBzcGVjaWZpZWQgdGVtcGxhdGVzLFxuXHRcdCAqIHN1Y2ggYXMgaGF0bm90ZXMsIHNob3J0IGRlc2NyaXB0aW9uLCBvciBkZWxldGlvbiBhbmQgcHJvdGVjdGlvbiB0ZW1wbGF0ZXMuXG5cdFx0ICogTm90YWJseSwgZG9lcyAqbm90KiBpbnNlcnQgYSBuZXdsaW5lIGFmdGVyIHRoZSB0YWcuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZyB0byBiZSBpbnNlcnRlZC5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gcmVnZXggLSBUZW1wbGF0ZXMgYWZ0ZXIgd2hpY2ggdG8gaW5zZXJ0IHRhZyxcblx0XHQgKiBnaXZlbiBhcyBlaXRoZXIgYXMgYSAocmVnZXgtdmFsaWQpIHN0cmluZyBvciBhbiBhcnJheSB0byBiZSBqb2luZWQgYnkgcGlwZXMuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IFtmbGFncz1pXSAtIFJlZ2V4IGZsYWdzIHRvIGFwcGx5LiAgYCcnYCB0byBwcm92aWRlIG5vIGZsYWdzO1xuXHRcdCAqIG90aGVyIGZhbHNleSB2YWx1ZXMgd2lsbCBkZWZhdWx0IHRvIGBpYC5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3ByZVJlZ2V4XSAtIE9wdGlvbmFsIHJlZ2V4IHN0cmluZyBvciBhcnJheSB0byBtYXRjaFxuXHRcdCAqIGJlZm9yZSBhbnkgdGVtcGxhdGUgbWF0Y2hlcyAoaS5lLiBiZWZvcmUgYHt7YCksIHN1Y2ggYXMgaHRtbCBjb21tZW50cy5cblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMud2lraXRleHQucGFnZX1cblx0XHQgKi9cblx0XHRpbnNlcnRBZnRlclRlbXBsYXRlcyh0YWcsIHJlZ2V4LCBmbGFncywgcHJlUmVnZXgpIHtcblx0XHRcdGlmICh0YWcgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdObyB0YWcgcHJvdmlkZWQnKTtcblx0XHRcdH1cblx0XHRcdC8vIC5sZW5ndGggaXMgb25seSBhIHByb3BlcnR5IG9mIHN0cmluZ3MgYW5kIGFycmF5cyBzbyB3ZVxuXHRcdFx0Ly8gc2hvdWxkbid0IG5lZWQgdG8gY2hlY2sgdHlwZVxuXHRcdFx0aWYgKHJlZ2V4ID09PSB1bmRlZmluZWQgfHwgIXJlZ2V4Lmxlbmd0aCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIHJlZ2V4IHByb3ZpZGVkJyk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVnZXgpKSB7XG5cdFx0XHRcdHJlZ2V4ID0gcmVnZXguam9pbignfCcpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiBmbGFncyAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0ZmxhZ3MgPSAnaSc7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXByZVJlZ2V4IHx8ICFwcmVSZWdleC5sZW5ndGgpIHtcblx0XHRcdFx0cHJlUmVnZXggPSAnJztcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwcmVSZWdleCkpIHtcblx0XHRcdFx0cHJlUmVnZXggPSBwcmVSZWdleC5qb2luKCd8Jyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBSZWdleCBpcyBleHRyYSBjb21wbGljYXRlZCB0byBhbGxvdyBmb3IgdGVtcGxhdGVzIHdpdGhcblx0XHRcdC8vIHBhcmFtZXRlcnMgYW5kIHRvIGhhbmRsZSB3aGl0ZXNwYWNlIHByb3Blcmx5XG5cdFx0XHR0aGlzLnRleHQgPSB0aGlzLnRleHQucmVwbGFjZShcblx0XHRcdFx0bmV3IFJlZ0V4cChcblx0XHRcdFx0XHQvLyBsZWFkaW5nIHdoaXRlc3BhY2Vcblx0XHRcdFx0XHQvLyBjYXB0dXJlIHRlbXBsYXRlKHMpXG5cdFx0XHRcdFx0Ly8gUHJlLXRlbXBsYXRlIHJlZ2V4LCBzdWNoIGFzIGxlYWRpbmcgaHRtbCBjb21tZW50c1xuXHRcdFx0XHRcdC8vIGJlZ2luIHRlbXBsYXRlIGZvcm1hdFxuXHRcdFx0XHRcdC8vIFRlbXBsYXRlIHJlZ2V4XG5cdFx0XHRcdFx0Ly8gZW5kIG1haW4gdGVtcGxhdGUgbmFtZSwgb3B0aW9uYWxseSB3aXRoIGEgbnVtYmVyXG5cdFx0XHRcdFx0Ly8gUHJvYmFibHkgcmVtb3ZlIHRoZSAoPzopIHRob3VnaFxuXHRcdFx0XHRcdC8vIHRlbXBsYXRlIHBhcmFtZXRlcnNcblx0XHRcdFx0XHQvLyBlbmQgdGVtcGxhdGUgZm9ybWF0XG5cdFx0XHRcdFx0Ly8gZW5kIGNhcHR1cmVcblx0XHRcdFx0XHQvLyB0cmFpbGluZyB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0YF5cXFxccyooPzooKD86XFxcXHMqJHtcblx0XHRcdFx0XHRcdC8vIFByZS10ZW1wbGF0ZSByZWdleCwgc3VjaCBhcyBsZWFkaW5nIGh0bWwgY29tbWVudHNcblx0XHRcdFx0XHRcdHByZVJlZ2V4XG5cdFx0XHRcdFx0fXxcXFxce1xcXFx7XFxcXHMqKD86JHtcblx0XHRcdFx0XHRcdC8vIFRlbXBsYXRlIHJlZ2V4XG5cdFx0XHRcdFx0XHRyZWdleFxuXHRcdFx0XHRcdH0pXFxcXGQqXFxcXHMqKFxcXFx8KD86XFxcXHtcXFxce1tee31dKlxcXFx9XFxcXH18W157fV0pKik/XFxcXH1cXFxcfSkrKD86XFxcXHMqXFxcXG4pPylcXFxccyopP2AsXG5cdFx0XHRcdFx0ZmxhZ3Ncblx0XHRcdFx0KSxcblx0XHRcdFx0YCQxJHt0YWd9YFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogR2V0IHRoZSBtYW5pcHVsYXRlZCB3aWtpdGV4dC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Z2V0VGV4dCgpIHtcblx0XHRcdHJldHVybiB0aGlzLnRleHQ7XG5cdFx0fSxcblx0fTtcblx0LyogKioqKioqKioqKiogTW9yZWJpdHMudXNlcnNwYWNlTG9nZ2VyICoqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogSGFuZGxlcyBsb2dnaW5nIGFjdGlvbnMgdG8gYSB1c2Vyc3BhY2UgbG9nLlxuXHQgKiBVc2VkIGluIENTRCwgUFJPRCwgYW5kIFhGRC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzXG5cdCAqIEBjbGFzc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gbG9nUGFnZU5hbWUgLSBUaXRsZSBvZiB0aGUgc3VicGFnZSBvZiB0aGUgY3VycmVudCB1c2VyJ3MgbG9nLlxuXHQgKi9cblx0TW9yZWJpdHMudXNlcnNwYWNlTG9nZ2VyID0gZnVuY3Rpb24gKGxvZ1BhZ2VOYW1lKSB7XG5cdFx0aWYgKCFsb2dQYWdlTmFtZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdubyBsb2cgcGFnZSBuYW1lIHNwZWNpZmllZCcpO1xuXHRcdH1cblx0XHQvKipcblx0XHQgKiBUaGUgdGV4dCB0byBwcmVmaXggdGhlIGxvZyB3aXRoIHVwb24gY3JlYXRpb24sIGRlZmF1bHRzIHRvIGVtcHR5LlxuXHRcdCAqXG5cdFx0ICogQHR5cGUge3N0cmluZ31cblx0XHQgKi9cblx0XHR0aGlzLmluaXRpYWxUZXh0ID0gJyc7XG5cdFx0LyoqXG5cdFx0ICogVGhlIGhlYWRlciBsZXZlbCB0byB1c2UgZm9yIG1vbnRocywgZGVmYXVsdHMgdG8gMyAoYD09PWApLlxuXHRcdCAqXG5cdFx0ICogQHR5cGUge251bWJlcn1cblx0XHQgKi9cblx0XHR0aGlzLmhlYWRlckxldmVsID0gMztcblx0XHR0aGlzLmNoYW5nZVRhZ3MgPSAnJztcblx0XHQvKipcblx0XHQgKiBMb2cgdGhlIGVudHJ5LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGxvZ1RleHQgLSBEb2Vzbid0IGluY2x1ZGUgbGVhZGluZyBgI2Agb3IgYCpgLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdW1tYXJ5VGV4dCAtIEVkaXQgc3VtbWFyeS5cblx0XHQgKiBAcmV0dXJucyB7SlF1ZXJ5LlByb21pc2V9XG5cdFx0ICovXG5cdFx0dGhpcy5sb2cgPSBmdW5jdGlvbiAobG9nVGV4dCwgc3VtbWFyeVRleHQpIHtcblx0XHRcdGNvbnN0IGRlZiA9ICQuRGVmZXJyZWQoKTtcblx0XHRcdGlmICghbG9nVGV4dCkge1xuXHRcdFx0XHRyZXR1cm4gZGVmLnJlamVjdCgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdGBVc2VyOiR7bXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpfS8ke2xvZ1BhZ2VOYW1lfWAsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG6aG555uu5Yqg5YWl5Yiw55So5oi356m66Ze05pel5b+XJywgJ+Wwh+mgheebruWKoOWFpeWIsOS9v+eUqOiAheepuumWk+aXpeiqjCcpXG5cdFx0XHQpOyAvLyBtYWtlIHRoaXMgJy4uLiB0byAnICsgbG9nUGFnZU5hbWUgP1xuXHRcdFx0cGFnZS5sb2FkKChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdC8vIGFkZCBibHVyYiBpZiBsb2cgcGFnZSBkb2Vzbid0IGV4aXN0IG9yIGlzIGJsYW5rXG5cdFx0XHRcdGxldCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpIHx8IHRoaXMuaW5pdGlhbFRleHQ7XG5cdFx0XHRcdC8vIGNyZWF0ZSBtb250aGx5IGhlYWRlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFscmVhZHlcblx0XHRcdFx0Y29uc3QgZGF0ZSA9IG5ldyBNb3JlYml0cy5kYXRlKHBhZ2VvYmouZ2V0TG9hZFRpbWUoKSk7XG5cdFx0XHRcdGlmICghZGF0ZS5tb250aEhlYWRlclJlZ2V4KCkuZXhlYyh0ZXh0KSkge1xuXHRcdFx0XHRcdHRleHQgKz0gYFxcblxcbiR7ZGF0ZS5tb250aEhlYWRlcih0aGlzLmhlYWRlckxldmVsKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQoYCR7dGV4dH1cXG4ke2xvZ1RleHR9YCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeVRleHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3ModGhpcy5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHBhZ2VvYmouc2F2ZShkZWYucmVzb2x2ZSwgZGVmLnJlamVjdCk7XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBkZWY7XG5cdFx0fTtcblx0fTtcblx0LyogKioqKioqKioqKioqKioqKiBNb3JlYml0cy5zdGF0dXMgKioqKioqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogQ3JlYXRlIGFuZCBzaG93IHN0YXR1cyBtZXNzYWdlcyBvZiB2YXJ5aW5nIHVyZ2VuY3kuXG5cdCAqIHtAbGluayBNb3JlYml0cy5zdGF0dXMuaW5pdHxNb3JlYml0cy5zdGF0dXMuaW5pdCgpfSBtdXN0IGJlIGNhbGxlZCBiZWZvcmVcblx0ICogYW55IHN0YXR1cyBvYmplY3QgaXMgY3JlYXRlZCwgb3RoZXJ3aXNlIHRob3NlIHN0YXR1c2VzIHdvbid0IGJlIHZpc2libGUuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUZXh0IGJlZm9yZSB0aGUgdGhlIGNvbG9uIGA6YC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0YXQgLSBUZXh0IGFmdGVyIHRoZSBjb2xvbiBgOmAuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZT1zdGF0dXNdIC0gRGV0ZXJtaW5lIHRoZSBmb250IGNvbG9yIG9mIHRoZSBzdGF0dXNcblx0ICogbGluZSwgYWxsb3dhYmxlIHZhbHVlcyBhcmU6IGBzdGF0dXNgIChibHVlKSwgYGluZm9gIChncmVlbiksIGB3YXJuYCAocmVkKSxcblx0ICogb3IgYGVycm9yYCAoYm9sZCByZWQpLlxuXHQgKi9cblx0TW9yZWJpdHMuc3RhdHVzID0gZnVuY3Rpb24gKHRleHQsIHN0YXQsIHR5cGUpIHtcblx0XHR0aGlzLnRleHRSYXcgPSB0ZXh0O1xuXHRcdHRoaXMudGV4dCA9IE1vcmViaXRzLmNyZWF0ZUh0bWwodGV4dCk7XG5cdFx0dGhpcy50eXBlID0gdHlwZSB8fCAnc3RhdHVzJztcblx0XHR0aGlzLmdlbmVyYXRlKCk7XG5cdFx0aWYgKHN0YXQpIHtcblx0XHRcdHRoaXMudXBkYXRlKHN0YXQsIHR5cGUpO1xuXHRcdH1cblx0fTtcblx0LyoqXG5cdCAqIFNwZWNpZnkgYW4gYXJlYSBmb3Igc3RhdHVzIG1lc3NhZ2UgZWxlbWVudHMgdG8gYmUgYWRkZWQgdG8uXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcm9vdCAtIFVzdWFsbHkgYSBkaXYgZWxlbWVudC5cblx0ICogQHRocm93cyBJZiBgcm9vdGAgaXMgbm90IGFuIGBIVE1MRWxlbWVudGAuXG5cdCAqL1xuXHRNb3JlYml0cy5zdGF0dXMuaW5pdCA9IChyb290KSA9PiB7XG5cdFx0aWYgKCEocm9vdCBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdvYmplY3Qgbm90IGFuIGluc3RhbmNlIG9mIEVsZW1lbnQnKTtcblx0XHR9XG5cdFx0d2hpbGUgKHJvb3QuaGFzQ2hpbGROb2RlcygpKSB7XG5cdFx0XHRyb290LnJlbW92ZUNoaWxkKHJvb3QuZmlyc3RDaGlsZCk7XG5cdFx0fVxuXHRcdE1vcmViaXRzLnN0YXR1cy5yb290ID0gcm9vdDtcblx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3JFdmVudCA9IG51bGw7XG5cdH07XG5cdE1vcmViaXRzLnN0YXR1cy5yb290ID0gbnVsbDtcblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZXJyb3IuXG5cdCAqIEB0aHJvd3MgV2hlbiBgaGFuZGxlcmAgaXMgbm90IGEgZnVuY3Rpb24uXG5cdCAqL1xuXHRNb3JlYml0cy5zdGF0dXMub25FcnJvciA9IChoYW5kbGVyKSA9PiB7XG5cdFx0aWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3JFdmVudCA9IGhhbmRsZXI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ01vcmViaXRzLnN0YXR1cy5vbkVycm9yOiBoYW5kbGVyIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXHR9O1xuXHRNb3JlYml0cy5zdGF0dXMucHJvdG90eXBlID0ge1xuXHRcdHN0YXQ6IG51bGwsXG5cdFx0c3RhdFJhdzogbnVsbCxcblx0XHR0ZXh0OiBudWxsLFxuXHRcdHRleHRSYXc6IG51bGwsXG5cdFx0dHlwZTogJ3N0YXR1cycsXG5cdFx0dGFyZ2V0OiBudWxsLFxuXHRcdG5vZGU6IG51bGwsXG5cdFx0bGlua2VkOiBmYWxzZSxcblx0XHQvKiogQWRkIHRoZSBzdGF0dXMgZWxlbWVudCBub2RlIHRvIHRoZSBET00uICovXG5cdFx0bGluaygpIHtcblx0XHRcdGlmICghdGhpcy5saW5rZWQgJiYgTW9yZWJpdHMuc3RhdHVzLnJvb3QpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKTtcblx0XHRcdFx0dGhpcy5saW5rZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0LyoqIFJlbW92ZSB0aGUgc3RhdHVzIGVsZW1lbnQgbm9kZSBmcm9tIHRoZSBET00uICovXG5cdFx0dW5saW5rKCkge1xuXHRcdFx0aWYgKHRoaXMubGlua2VkKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5yb290LnJlbW92ZUNoaWxkKHRoaXMubm9kZSk7XG5cdFx0XHRcdHRoaXMubGlua2VkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBVcGRhdGUgdGhlIHN0YXR1cy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXMgLSBQYXJ0IG9mIHN0YXR1cyBtZXNzYWdlIGFmdGVyIGNvbG9uLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIC0gJ3N0YXR1cycgKGJsdWUpLCAnaW5mbycgKGdyZWVuKSwgJ3dhcm4nXG5cdFx0ICogKHJlZCksIG9yICdlcnJvcicgKGJvbGQgcmVkKS5cblx0XHQgKi9cblx0XHR1cGRhdGUoc3RhdHVzLCB0eXBlKSB7XG5cdFx0XHR0aGlzLnN0YXRSYXcgPSBzdGF0dXM7XG5cdFx0XHR0aGlzLnN0YXQgPSBNb3JlYml0cy5jcmVhdGVIdG1sKHN0YXR1cyk7XG5cdFx0XHRpZiAodHlwZSkge1xuXHRcdFx0XHR0aGlzLnR5cGUgPSB0eXBlO1xuXHRcdFx0XHRpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuXHRcdFx0XHRcdC8vIGhhY2sgdG8gZm9yY2UgdGhlIHBhZ2Ugbm90IHRvIHJlbG9hZCB3aGVuIGFuIGVycm9yIGlzIG91dHB1dCAtIHNlZSBhbHNvIE1vcmViaXRzLnN0YXR1cygpIGFib3ZlXG5cdFx0XHRcdFx0TW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0ID0gMTAwMDtcblx0XHRcdFx0XHQvLyBjYWxsIGVycm9yIGNhbGxiYWNrXG5cdFx0XHRcdFx0aWYgKE1vcmViaXRzLnN0YXR1cy5lcnJvckV2ZW50KSB7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3JFdmVudCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBhbHNvIGxvZyBlcnJvciBtZXNzYWdlcyBpbiB0aGUgYnJvd3NlciBjb25zb2xlXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihgW01vcmViaXRzXSAke3RoaXMudGV4dFJhd306ICR7dGhpcy5zdGF0UmF3fWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnJlbmRlcigpO1xuXHRcdH0sXG5cdFx0LyoqIFByb2R1Y2UgdGhlIGh0bWwgZm9yIGZpcnN0IHBhcnQgb2YgdGhlIHN0YXR1cyBtZXNzYWdlLiAqL1xuXHRcdGdlbmVyYXRlKCkge1xuXHRcdFx0dGhpcy5ub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHR0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKS5hcHBlbmRDaGlsZCh0aGlzLnRleHQpO1xuXHRcdFx0dGhpcy5ub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJzogJykpO1xuXHRcdFx0dGhpcy50YXJnZXQgPSB0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtcblx0XHRcdHRoaXMudGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSk7IC8vIGR1bW15IG5vZGVcblx0XHR9LFxuXG5cdFx0LyoqIENvbXBsZXRlIHRoZSBodG1sLCBmb3IgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBzdGF0dXMgbWVzc2FnZS4gKi9cblx0XHRyZW5kZXIoKSB7XG5cdFx0XHR0aGlzLm5vZGUuY2xhc3NOYW1lID0gYG1vcmViaXRzX3N0YXR1c18ke3RoaXMudHlwZX1gO1xuXHRcdFx0d2hpbGUgKHRoaXMudGFyZ2V0Lmhhc0NoaWxkTm9kZXMoKSkge1xuXHRcdFx0XHR0aGlzLnRhcmdldC5yZW1vdmVDaGlsZCh0aGlzLnRhcmdldC5maXJzdENoaWxkKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudGFyZ2V0LmFwcGVuZENoaWxkKHRoaXMuc3RhdCk7XG5cdFx0XHR0aGlzLmxpbmsoKTtcblx0XHR9LFxuXHRcdHN0YXR1cyhzdGF0dXMpIHtcblx0XHRcdHRoaXMudXBkYXRlKHN0YXR1cywgJ3N0YXR1cycpO1xuXHRcdH0sXG5cdFx0aW5mbyhzdGF0dXMpIHtcblx0XHRcdHRoaXMudXBkYXRlKHN0YXR1cywgJ2luZm8nKTtcblx0XHR9LFxuXHRcdHdhcm4oc3RhdHVzKSB7XG5cdFx0XHR0aGlzLnVwZGF0ZShzdGF0dXMsICd3YXJuJyk7XG5cdFx0fSxcblx0XHRlcnJvcihzdGF0dXMpIHtcblx0XHRcdHRoaXMudXBkYXRlKHN0YXR1cywgJ2Vycm9yJyk7XG5cdFx0fSxcblx0fTtcblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBCZWZvcmUgY29sb25cblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0YXR1cyAtIEFmdGVyIGNvbG9uXG5cdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zdGF0dXN9IC0gYHN0YXR1c2AtdHlwZSAoYmx1ZSlcblx0ICovXG5cdE1vcmViaXRzLnN0YXR1cy5zdGF0dXMgPSAodGV4dCwgc3RhdHVzKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb3JlYml0cy5zdGF0dXModGV4dCwgc3RhdHVzKTtcblx0fTtcblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBCZWZvcmUgY29sb25cblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0YXR1cyAtIEFmdGVyIGNvbG9uXG5cdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zdGF0dXN9IC0gYGluZm9gLXR5cGUgKGdyZWVuKVxuXHQgKi9cblx0TW9yZWJpdHMuc3RhdHVzLmluZm8gPSAodGV4dCwgc3RhdHVzKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb3JlYml0cy5zdGF0dXModGV4dCwgc3RhdHVzLCAnaW5mbycpO1xuXHR9O1xuXHQvKipcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnN0YXR1c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIEJlZm9yZSBjb2xvblxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gQWZ0ZXIgY29sb25cblx0ICogQHJldHVybnMge01vcmViaXRzLnN0YXR1c30gLSBgd2FybmAtdHlwZSAocmVkKVxuXHQgKi9cblx0TW9yZWJpdHMuc3RhdHVzLndhcm4gPSAodGV4dCwgc3RhdHVzKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb3JlYml0cy5zdGF0dXModGV4dCwgc3RhdHVzLCAnd2FybicpO1xuXHR9O1xuXHQvKipcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnN0YXR1c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIEJlZm9yZSBjb2xvblxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gQWZ0ZXIgY29sb25cblx0ICogQHJldHVybnMge01vcmViaXRzLnN0YXR1c30gLSBgZXJyb3JgLXR5cGUgKGJvbGQgcmVkKVxuXHQgKi9cblx0TW9yZWJpdHMuc3RhdHVzLmVycm9yID0gKHRleHQsIHN0YXR1cykgPT4ge1xuXHRcdHJldHVybiBuZXcgTW9yZWJpdHMuc3RhdHVzKHRleHQsIHN0YXR1cywgJ2Vycm9yJyk7XG5cdH07XG5cdC8qKlxuXHQgKiBGb3IgdGhlIGFjdGlvbiBjb21wbGV0ZSBtZXNzYWdlIGF0IHRoZSBlbmQsIGNyZWF0ZSBhIHN0YXR1cyBsaW5lIHdpdGhvdXRcblx0ICogYSBjb2xvbiBzZXBhcmF0b3IuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRcblx0ICovXG5cdE1vcmViaXRzLnN0YXR1cy5hY3Rpb25Db21wbGV0ZWQgPSAodGV4dCkgPT4ge1xuXHRcdGNvbnN0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKSkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuXHRcdG5vZGUuY2xhc3NOYW1lID0gJ21vcmViaXRzX3N0YXR1c19pbmZvIG1vcmViaXRzX2FjdGlvbl9jb21wbGV0ZSc7XG5cdFx0aWYgKE1vcmViaXRzLnN0YXR1cy5yb290KSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMucm9vdC5hcHBlbmRDaGlsZChub2RlKTtcblx0XHR9XG5cdH07XG5cdC8qKlxuXHQgKiBEaXNwbGF5IHRoZSB1c2VyJ3MgcmF0aW9uYWxlLCBjb21tZW50cywgZXRjLiBCYWNrIHRvIHRoZW0gYWZ0ZXIgYSBmYWlsdXJlLFxuXHQgKiBzbyB0aGF0IHRoZXkgbWF5IHJlLXVzZSBpdC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnN0YXR1c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gY29tbWVudHNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2Vcblx0ICovXG5cdE1vcmViaXRzLnN0YXR1cy5wcmludFVzZXJUZXh0ID0gKGNvbW1lbnRzLCBtZXNzYWdlKSA9PiB7XG5cdFx0Y29uc3QgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcblx0XHRwLmlubmVySFRNTCA9IG1lc3NhZ2U7XG5cdFx0Y29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0ZGl2LmNsYXNzTmFtZSA9ICdtb3JlYml0cy11c2VydGV4dCc7XG5cdFx0ZGl2LnN0eWxlLm1hcmdpblRvcCA9ICcwJztcblx0XHRkaXYuc3R5bGUud2hpdGVTcGFjZSA9ICdwcmUtd3JhcCc7XG5cdFx0ZGl2LnRleHRDb250ZW50ID0gY29tbWVudHM7XG5cdFx0cC5hcHBlbmRDaGlsZChkaXYpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5yb290LmFwcGVuZENoaWxkKHApO1xuXHR9O1xuXHQvKipcblx0ICogU2ltcGxlIGhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBzaW1wbGUgbm9kZS5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBUeXBlIG9mIEhUTUwgZWxlbWVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgLSBUZXh0IGNvbnRlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbY29sb3JdIC0gRm9udCBjb2xvci5cblx0ICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMuaHRtbE5vZGUgPSAodHlwZSwgY29udGVudCwgY29sb3IpID0+IHtcblx0XHRjb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0eXBlKTtcblx0XHRpZiAoY29sb3IpIHtcblx0XHRcdG5vZGUuc3R5bGUuY29sb3IgPSBjb2xvcjtcblx0XHR9XG5cdFx0bm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7XG5cdFx0cmV0dXJuIG5vZGU7XG5cdH07XG5cdC8qKlxuXHQgKiBBZGQgc2hpZnQtY2xpY2sgc3VwcG9ydCBmb3IgY2hlY2tib3hlcy4gVGhlIHdpa2liaXRzIHZlcnNpb25cblx0ICogKGB3aW5kb3cuYWRkQ2hlY2tib3hDbGlja0hhbmRsZXJzYCkgaGFzIHNvbWUgcmVzdHJpY3Rpb25zLCBhbmQgZG9lc24ndCB3b3JrXG5cdCAqIHdpdGggY2hlY2tib3hlcyBpbnNpZGUgYSBzb3J0YWJsZSB0YWJsZSwgc28gbGV0J3MgYnVpbGQgb3VyIG93bi5cblx0ICpcblx0ICogQHBhcmFtIGpRdWVyeVNlbGVjdG9yXG5cdCAqIEBwYXJhbSBqUXVlcnlDb250ZXh0XG5cdCAqL1xuXHRNb3JlYml0cy5jaGVja2JveFNoaWZ0Q2xpY2tTdXBwb3J0ID0gKGpRdWVyeVNlbGVjdG9yLCBqUXVlcnlDb250ZXh0KSA9PiB7XG5cdFx0bGV0IGxhc3RDaGVja2JveCA9IG51bGw7XG5cdFx0Y29uc3QgY2xpY2tIYW5kbGVyID0gZnVuY3Rpb24gY2xpY2tIYW5kbGVyKGV2ZW50KSB7XG5cdFx0XHRjb25zdCB0aGlzQ2IgPSB0aGlzO1xuXHRcdFx0aWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGxhc3RDaGVja2JveCAhPT0gbnVsbCkge1xuXHRcdFx0XHRjb25zdCBjYnMgPSAkKGpRdWVyeVNlbGVjdG9yLCBqUXVlcnlDb250ZXh0KTsgLy8gY2FuJ3QgY2FjaGUgdGhlbSwgb2J2aW91c2x5LCBpZiB3ZSB3YW50IHRvIHN1cHBvcnQgcmVzb3J0aW5nXG5cdFx0XHRcdGxldCBpbmRleCA9IC0xO1xuXHRcdFx0XHRsZXQgbGFzdEluZGV4ID0gLTE7XG5cdFx0XHRcdGxldCBpO1xuXHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgY2JzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKGNic1tpXSA9PT0gdGhpc0NiKSB7XG5cdFx0XHRcdFx0XHRpbmRleCA9IGk7XG5cdFx0XHRcdFx0XHRpZiAobGFzdEluZGV4ID4gLTEpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChjYnNbaV0gPT09IGxhc3RDaGVja2JveCkge1xuXHRcdFx0XHRcdFx0bGFzdEluZGV4ID0gaTtcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+IC0xKSB7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaW5kZXggPiAtMSAmJiBsYXN0SW5kZXggPiAtMSkge1xuXHRcdFx0XHRcdC8vIGluc3BpcmVkIGJ5IHdpa2liaXRzXG5cdFx0XHRcdFx0Y29uc3QgZW5kU3RhdGUgPSB0aGlzQ2IuY2hlY2tlZDtcblx0XHRcdFx0XHRsZXQgc3RhcnQ7XG5cdFx0XHRcdFx0bGV0IGZpbmlzaDtcblx0XHRcdFx0XHRpZiAoaW5kZXggPCBsYXN0SW5kZXgpIHtcblx0XHRcdFx0XHRcdHN0YXJ0ID0gaW5kZXggKyAxO1xuXHRcdFx0XHRcdFx0ZmluaXNoID0gbGFzdEluZGV4O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdGFydCA9IGxhc3RJbmRleDtcblx0XHRcdFx0XHRcdGZpbmlzaCA9IGluZGV4IC0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yIChpID0gc3RhcnQ7IGkgPD0gZmluaXNoOyBpKyspIHtcblx0XHRcdFx0XHRcdGlmIChjYnNbaV0uY2hlY2tlZCAhPT0gZW5kU3RhdGUpIHtcblx0XHRcdFx0XHRcdFx0Y2JzW2ldLmNsaWNrKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRsYXN0Q2hlY2tib3ggPSB0aGlzQ2I7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9O1xuXHRcdCQoalF1ZXJ5U2VsZWN0b3IsIGpRdWVyeUNvbnRleHQpLm9uKCdjbGljaycsIGNsaWNrSGFuZGxlcik7XG5cdH07XG5cdC8qICoqKioqKioqKioqKioqKiogTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24gKioqKioqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogSXRlcmF0ZXMgb3ZlciBhIGdyb3VwIG9mIHBhZ2VzIChvciBhcmJpdHJhcnkgb2JqZWN0cykgYW5kIGV4ZWN1dGVzIGEgd29ya2VyIGZ1bmN0aW9uXG5cdCAqIGZvciBlYWNoLlxuXHQgKlxuXHQgKiBgc2V0UGFnZUxpc3QocGFnZUxpc3QpYDogU2V0cyB0aGUgbGlzdCBvZiBwYWdlcyB0byB3b3JrIG9uLiBJdCBzaG91bGQgYmUgYW5cblx0ICogYXJyYXkgb2YgcGFnZSBuYW1lcyBzdHJpbmdzLlxuXHQgKlxuXHQgKiBgc2V0T3B0aW9uKG9wdGlvbk5hbWUsIG9wdGlvblZhbHVlKWA6IFNldHMgYSBrbm93biBvcHRpb246XG5cdCAqIC0gYGNodW5rU2l6ZWAgKGludGVnZXIpOiBUaGUgc2l6ZSBvZiBjaHVua3MgdG8gYnJlYWsgdGhlIGFycmF5IGludG8gKGRlZmF1bHRcblx0ICogNTApLiBTZXR0aW5nIHRoaXMgdG8gYSBzbWFsbCB2YWx1ZSAoPDUpIGNhbiBjYXVzZSBwcm9ibGVtcy5cblx0ICogLSBgcHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXNgIChib29sZWFuKTogS2VlcCBlYWNoIHBhZ2UncyBzdGF0dXMgZWxlbWVudFxuXHQgKiB2aXNpYmxlIHdoZW4gd29ya2VyIGlzIGNvbXBsZXRlPyBTZWUgbm90ZSBiZWxvdy5cblx0ICpcblx0ICogYHJ1bih3b3JrZXIsIHBvc3RGaW5pc2gpYDogUnVucyB0aGUgY2FsbGJhY2sgYHdvcmtlcmAgZm9yIGVhY2ggcGFnZSBpbiB0aGVcblx0ICogbGlzdC4gIFRoZSBjYWxsYmFjayBtdXN0IGNhbGwgYHdvcmtlclN1Y2Nlc3NgIHdoZW4gc3VjY2VlZGluZywgb3Jcblx0ICogYHdvcmtlckZhaWx1cmVgIHdoZW4gZmFpbGluZy4gIElmIHVzaW5nIHtAbGluayBNb3JlYml0cy53aWtpLmFwaX0gb3Jcblx0ICoge0BsaW5rIE1vcmViaXRzLndpa2kucGFnZX0sIHRoaXMgaXMgZWFzaWx5IGRvbmUgYnkgcGFzc2luZyB0aGVzZSB0d29cblx0ICogZnVuY3Rpb25zIGFzIHBhcmFtZXRlcnMgdG8gdGhlIG1ldGhvZHMgb24gdGhvc2Ugb2JqZWN0czogZm9yIGluc3RhbmNlLFxuXHQgKiBgcGFnZS5zYXZlKGJhdGNoT3Aud29ya2VyU3VjY2VzcywgYmF0Y2hPcC53b3JrZXJGYWlsdXJlKWAuICBNYWtlIHN1cmUgdGhlXG5cdCAqIG1ldGhvZHMgYXJlIGNhbGxlZCBkaXJlY3RseSBpZiBzcGVjaWFsIHN1Y2Nlc3MvZmFpbHVyZSBjYXNlcyBhcmlzZS4gIElmIHlvdVxuXHQgKiBvbWl0IHRvIGNhbGwgdGhlc2UgbWV0aG9kcywgdGhlIGJhdGNoIG9wZXJhdGlvbiB3aWxsIHN0YWxsIGFmdGVyIHRoZSBmaXJzdFxuXHQgKiBjaHVuayEgIEFsc28gZW5zdXJlIHRoYXQgZWl0aGVyIHdvcmtlclN1Y2Nlc3Mgb3Igd29ya2VyRmFpbHVyZSBpcyBjYWxsZWQgbm9cblx0ICogbW9yZSB0aGFuIG9uY2UuICBUaGUgc2Vjb25kIGNhbGxiYWNrIGBwb3N0RmluaXNoYCBpcyBleGVjdXRlZCB3aGVuIHRoZVxuXHQgKiBlbnRpcmUgYmF0Y2ggaGFzIGJlZW4gcHJvY2Vzc2VkLlxuXHQgKlxuXHQgKiBJZiB1c2luZyBgcHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXNgLCB5b3Ugc2hvdWxkIHRyeSB0byBlbnN1cmUgdGhhdCB0aGVcblx0ICogYHdvcmtlclN1Y2Nlc3NgIGNhbGxiYWNrIGhhcyBhY2Nlc3MgdG8gdGhlIHBhZ2UgdGl0bGUuICBUaGlzIGlzIG5vIHByb2JsZW0gZm9yXG5cdCAqIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2V9IG9iamVjdHMuICBCdXQgd2hlbiB1c2luZyB0aGUgQVBJLCBwbGVhc2Ugc2V0IHRoZVxuXHQgKiB8cGFnZU5hbWV8IHByb3BlcnR5IG9uIHRoZSB7QGxpbmsgTW9yZWJpdHMud2lraS5hcGl9IG9iamVjdC5cblx0ICpcblx0ICogVGhlcmUgYXJlIHNhbXBsZSBiYXRjaE9wZXJhdGlvbiBpbXBsZW1lbnRhdGlvbnMgdXNpbmcgTW9yZWJpdHMud2lraS5wYWdlIGluXG5cdCAqIHR3aW5rbGViYXRjaGRlbGV0ZS5qcywgdHdpbmtsZWJhdGNodW5kZWxldGUuanMsIGFuZCB0d2lua2xlYmF0Y2hwcm90ZWN0LmpzLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICogQGNsYXNzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbY3VycmVudEFjdGlvbl1cblx0ICovXG5cdE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uID0gZnVuY3Rpb24gKGN1cnJlbnRBY3Rpb24pIHtcblx0XHRjb25zdCBjdHggPSB7XG5cdFx0XHQvLyBiYWNraW5nIGZpZWxkcyBmb3IgcHVibGljIHByb3BlcnRpZXNcblx0XHRcdHBhZ2VMaXN0OiBudWxsLFxuXHRcdFx0b3B0aW9uczoge1xuXHRcdFx0XHRjaHVua1NpemU6IDUwLFxuXHRcdFx0XHRwcmVzZXJ2ZUluZGl2aWR1YWxTdGF0dXNMaW5lczogZmFsc2UsXG5cdFx0XHR9LFxuXHRcdFx0Ly8gaW50ZXJuYWwgY291bnRlcnMsIGV0Yy5cblx0XHRcdHN0YXR1c0VsZW1lbnQ6IG5ldyBNb3JlYml0cy5zdGF0dXMoY3VycmVudEFjdGlvbiB8fCB3aW5kb3cud2dVTFMoJ+aJp+ihjOaJuemHj+aTjeS9nCcsICfln7fooYzmibnmrKHmk43kvZwnKSksXG5cdFx0XHR3b3JrZXI6IG51bGwsXG5cdFx0XHQvLyBmdW5jdGlvbiB0aGF0IGV4ZWN1dGVzIGZvciBlYWNoIGl0ZW0gaW4gcGFnZUxpc3Rcblx0XHRcdHBvc3RGaW5pc2g6IG51bGwsXG5cdFx0XHQvLyBmdW5jdGlvbiB0aGF0IGV4ZWN1dGVzIHdoZW4gdGhlIHdob2xlIGJhdGNoIGhhcyBiZWVuIHByb2Nlc3NlZFxuXHRcdFx0Y291bnRTdGFydGVkOiAwLFxuXHRcdFx0Y291bnRGaW5pc2hlZDogMCxcblx0XHRcdGNvdW50RmluaXNoZWRTdWNjZXNzOiAwLFxuXHRcdFx0Y3VycmVudENodW5rSW5kZXg6IC0xLFxuXHRcdFx0cGFnZUNodW5rczogW10sXG5cdFx0XHRydW5uaW5nOiBmYWxzZSxcblx0XHR9O1xuXHRcdC8vIHNob3VsZG4ndCBiZSBuZWVkZWQgYnkgZXh0ZXJuYWwgdXNlcnMsIGJ1dCBwcm92aWRlZCBhbnl3YXkgZm9yIG1heGltdW0gZmxleGliaWxpdHlcblx0XHR0aGlzLmdldFN0YXR1c0VsZW1lbnQgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnN0YXR1c0VsZW1lbnQ7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBTZXRzIHRoZSBsaXN0IG9mIHBhZ2VzIHRvIHdvcmsgb24uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0FycmF5fSBwYWdlTGlzdCAtIEFycmF5IG9mIG9iamVjdHMgb3ZlciB3aGljaCB5b3Ugd2lzaCB0byBleGVjdXRlIHRoZSB3b3JrZXIgZnVuY3Rpb25cblx0XHQgKiBUaGlzIGlzIHVzdWFsbHkgdGhlIGxpc3Qgb2YgcGFnZSBuYW1lcyAoc3RyaW5ncykuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXRQYWdlTGlzdCA9IChwYWdlTGlzdCkgPT4ge1xuXHRcdFx0Y3R4LnBhZ2VMaXN0ID0gcGFnZUxpc3Q7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBTZXRzIGEga25vd24gb3B0aW9uLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbk5hbWUgLSBOYW1lIG9mIHRoZSBvcHRpb246XG5cdFx0ICogLSBjaHVua1NpemUgKGludGVnZXIpOiBUaGUgc2l6ZSBvZiBjaHVua3MgdG8gYnJlYWsgdGhlIGFycmF5IGludG9cblx0XHQgKiAoZGVmYXVsdCA1MCkuIFNldHRpbmcgdGhpcyB0byBhIHNtYWxsIHZhbHVlICg8NSkgY2FuIGNhdXNlIHByb2JsZW1zLlxuXHRcdCAqIC0gcHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMgKGJvb2xlYW4pOiBLZWVwIGVhY2ggcGFnZSdzIHN0YXR1c1xuXHRcdCAqIGVsZW1lbnQgdmlzaWJsZSB3aGVuIHdvcmtlciBpcyBjb21wbGV0ZT9cblx0XHQgKiBAcGFyYW0ge251bWJlcnxib29sZWFufSBvcHRpb25WYWx1ZSAtIFZhbHVlIHRvIHdoaWNoIHRoZSBvcHRpb24gaXNcblx0XHQgKiB0byBiZSBzZXQuIFNob3VsZCBiZSBhbiBpbnRlZ2VyIGZvciBjaHVua1NpemUgYW5kIGEgYm9vbGVhbiBmb3Jcblx0XHQgKiBwcmVzZXJ2ZUluZGl2aWR1YWxTdGF0dXNMaW5lcy5cblx0XHQgKi9cblx0XHR0aGlzLnNldE9wdGlvbiA9IChvcHRpb25OYW1lLCBvcHRpb25WYWx1ZSkgPT4ge1xuXHRcdFx0Y3R4Lm9wdGlvbnNbb3B0aW9uTmFtZV0gPSBvcHRpb25WYWx1ZTtcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIFJ1bnMgdGhlIGZpcnN0IGNhbGxiYWNrIGZvciBlYWNoIHBhZ2UgaW4gdGhlIGxpc3QuXG5cdFx0ICogVGhlIGNhbGxiYWNrIG11c3QgY2FsbCB3b3JrZXJTdWNjZXNzIHdoZW4gc3VjY2VlZGluZywgb3Igd29ya2VyRmFpbHVyZSB3aGVuIGZhaWxpbmcuXG5cdFx0ICogUnVucyB0aGUgb3B0aW9uYWwgc2Vjb25kIGNhbGxiYWNrIHdoZW4gdGhlIHdob2xlIGJhdGNoIGhhcyBiZWVuIHByb2Nlc3NlZC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IHdvcmtlclxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtwb3N0RmluaXNoXVxuXHRcdCAqL1xuXHRcdHRoaXMucnVuID0gKHdvcmtlciwgcG9zdEZpbmlzaCkgPT4ge1xuXHRcdFx0aWYgKGN0eC5ydW5uaW5nKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5om56YeP5pON5L2c5bey5Zyo6L+Q6KGMJywgJ+aJueasoeaTjeS9nOW3suWcqOWft+ihjCcpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y3R4LnJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0Y3R4LndvcmtlciA9IHdvcmtlcjtcblx0XHRcdGN0eC5wb3N0RmluaXNoID0gcG9zdEZpbmlzaDtcblx0XHRcdGN0eC5jb3VudFN0YXJ0ZWQgPSAwO1xuXHRcdFx0Y3R4LmNvdW50RmluaXNoZWQgPSAwO1xuXHRcdFx0Y3R4LmNvdW50RmluaXNoZWRTdWNjZXNzID0gMDtcblx0XHRcdGN0eC5jdXJyZW50Q2h1bmtJbmRleCA9IC0xO1xuXHRcdFx0Y3R4LnBhZ2VDaHVua3MgPSBbXTtcblx0XHRcdGNvbnN0IHRvdGFsID0gY3R4LnBhZ2VMaXN0Lmxlbmd0aDtcblx0XHRcdGlmICghdG90YWwpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+ayoeacieaMh+WumumhtemdoicsICfmspLmnInmjIflrprpoIHpnaInKSk7XG5cdFx0XHRcdGN0eC5ydW5uaW5nID0gZmFsc2U7XG5cdFx0XHRcdGlmIChjdHgucG9zdEZpbmlzaCkge1xuXHRcdFx0XHRcdGN0eC5wb3N0RmluaXNoKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gY2h1bmsgcGFnZSBsaXN0IGludG8gbW9yZSBtYW5hZ2VhYmxlIHVuaXRzXG5cdFx0XHRjdHgucGFnZUNodW5rcyA9IE1vcmViaXRzLmFycmF5LmNodW5rKGN0eC5wYWdlTGlzdCwgY3R4Lm9wdGlvbnMuY2h1bmtTaXplKTtcblx0XHRcdC8vIHN0YXJ0IHRoZSBwcm9jZXNzXG5cdFx0XHRNb3JlYml0cy53aWtpLmFkZENoZWNrcG9pbnQoKTtcblx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LnN0YXR1cygnMCUnKTtcblx0XHRcdGZuU3RhcnROZXdDaHVuaygpO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogVG8gYmUgY2FsbGVkIGJ5IHdvcmtlciBiZWZvcmUgaXQgdGVybWluYXRlcyBzdWNjZXNzZnVsbHkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0geyhNb3JlYml0cy53aWtpLnBhZ2V8TW9yZWJpdHMud2lraS5hcGl8c3RyaW5nKX0gYXJnIC1cblx0XHQgKiBUaGlzIHNob3VsZCBiZSB0aGUgYE1vcmViaXRzLndpa2kucGFnZWAgb3IgYE1vcmViaXRzLndpa2kuYXBpYCBvYmplY3QgdXNlZCBieSB3b3JrZXJcblx0XHQgKiAoZm9yIHRoZSBhZGp1c3RtZW50IG9mIHN0YXR1cyBsaW5lcyBlbWl0dGVkIGJ5IHRoZW0pLlxuXHRcdCAqIElmIG5vIE1vcmViaXRzLndpa2kuKiBvYmplY3QgaXMgdXNlZCAoZS5nLiB5b3UncmUgdXNpbmcgYG13LkFwaSgpYCBvciBzb21ldGhpbmcgZWxzZSksIGFuZFxuXHRcdCAqIGBwcmVzZXJ2ZUluZGl2aWR1YWxTdGF0dXNMaW5lc2Agb3B0aW9uIGlzIG9uLCBnaXZlIHRoZSBwYWdlIG5hbWUgKHN0cmluZykgYXMgYXJndW1lbnQuXG5cdFx0ICovXG5cdFx0dGhpcy53b3JrZXJTdWNjZXNzID0gKGFyZykgPT4ge1xuXHRcdFx0aWYgKGFyZyBpbnN0YW5jZW9mIE1vcmViaXRzLndpa2kuYXBpIHx8IGFyZyBpbnN0YW5jZW9mIE1vcmViaXRzLndpa2kucGFnZSkge1xuXHRcdFx0XHQvLyB1cGRhdGUgb3IgcmVtb3ZlIHN0YXR1cyBsaW5lXG5cdFx0XHRcdGNvbnN0IHN0YXRlbGVtID0gYXJnLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0aWYgKGN0eC5vcHRpb25zLnByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzKSB7XG5cdFx0XHRcdFx0aWYgKGFyZy5nZXRQYWdlTmFtZSB8fCBhcmcucGFnZU5hbWUgfHwgKGFyZy5xdWVyeSAmJiBhcmcucXVlcnkudGl0bGUpKSB7XG5cdFx0XHRcdFx0XHQvLyB3ZSBrbm93IHRoZSBwYWdlIHRpdGxlIC0gZGlzcGxheSBhIHJlbGV2YW50IG1lc3NhZ2Vcblx0XHRcdFx0XHRcdGNvbnN0IHBhZ2VOYW1lID0gYXJnLmdldFBhZ2VOYW1lID8gYXJnLmdldFBhZ2VOYW1lKCkgOiBhcmcucGFnZU5hbWUgfHwgYXJnLnF1ZXJ5LnRpdGxlO1xuXHRcdFx0XHRcdFx0c3RhdGVsZW0uaW5mbyhg5a6M5oiQ77yIW1ske3BhZ2VOYW1lfV1d77yJYCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIHdlIGRvbid0IGtub3cgdGhlIHBhZ2UgdGl0bGUgLSBqdXN0IGRpc3BsYXkgYSBnZW5lcmljIG1lc3NhZ2Vcblx0XHRcdFx0XHRcdHN0YXRlbGVtLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyByZW1vdmUgdGhlIHN0YXR1cyBsaW5lIGF1dG9tYXRpY2FsbHkgcHJvZHVjZWQgYnkgTW9yZWJpdHMud2lraS4qXG5cdFx0XHRcdFx0c3RhdGVsZW0udW5saW5rKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgJiYgY3R4Lm9wdGlvbnMucHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMpIHtcblx0XHRcdFx0bmV3IE1vcmViaXRzLnN0YXR1cyhhcmcsIGDlrozmiJDvvIhbWyR7YXJnfV1d77yJYCk7XG5cdFx0XHR9XG5cdFx0XHRjdHguY291bnRGaW5pc2hlZFN1Y2Nlc3MrKztcblx0XHRcdGZuRG9uZU9uZSgpO1xuXHRcdH07XG5cdFx0dGhpcy53b3JrZXJGYWlsdXJlID0gKCkgPT4ge1xuXHRcdFx0Zm5Eb25lT25lKCk7XG5cdFx0fTtcblx0XHQvLyBwcml2YXRlIGZ1bmN0aW9uc1xuXHRcdGNvbnN0IHRoaXNQcm94eSA9IHRoaXM7XG5cdFx0Y29uc3QgZm5TdGFydE5ld0NodW5rID0gKCkgPT4ge1xuXHRcdFx0Y29uc3QgY2h1bmsgPSBjdHgucGFnZUNodW5rc1srK2N0eC5jdXJyZW50Q2h1bmtJbmRleF07XG5cdFx0XHRpZiAoIWNodW5rKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gZG9uZSEgeWF5XG5cdFx0XHR9XG5cdFx0XHQvLyBzdGFydCB3b3JrZXJzIGZvciB0aGUgY3VycmVudCBjaHVua1xuXHRcdFx0Y3R4LmNvdW50U3RhcnRlZCArPSBjaHVuay5sZW5ndGg7XG5cdFx0XHRmb3IgKGNvbnN0IHBhZ2Ugb2YgY2h1bmspIHtcblx0XHRcdFx0Y3R4LndvcmtlcihwYWdlLCB0aGlzUHJveHkpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3QgZm5Eb25lT25lID0gKCkgPT4ge1xuXHRcdFx0Y3R4LmNvdW50RmluaXNoZWQrKztcblx0XHRcdC8vIHVwZGF0ZSBvdmVyYWxsIHN0YXR1cyBsaW5lXG5cdFx0XHRjb25zdCB0b3RhbCA9IGN0eC5wYWdlTGlzdC5sZW5ndGg7XG5cdFx0XHRpZiAoY3R4LmNvdW50RmluaXNoZWQgPCB0b3RhbCkge1xuXHRcdFx0XHRjb25zdCBwcm9ncmVzcyA9IE1hdGgucm91bmQoKDEwMCAqIGN0eC5jb3VudEZpbmlzaGVkKSAvIHRvdGFsKTtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuc3RhdHVzKGAke3Byb2dyZXNzfSVgKTtcblx0XHRcdFx0Ly8gc3RhcnQgYSBuZXcgY2h1bmsgaWYgd2UncmUgY2xvc2UgZW5vdWdoIHRvIHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGNodW5rLCBhbmRcblx0XHRcdFx0Ly8gd2UgaGF2ZW4ndCBhbHJlYWR5IHN0YXJ0ZWQgdGhlIG5leHQgb25lXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRjdHguY291bnRGaW5pc2hlZCA+PSBjdHguY291bnRTdGFydGVkIC0gTWF0aC5tYXgoY3R4Lm9wdGlvbnMuY2h1bmtTaXplIC8gMTAsIDIpICYmXG5cdFx0XHRcdFx0TWF0aC5mbG9vcihjdHguY291bnRGaW5pc2hlZCAvIGN0eC5vcHRpb25zLmNodW5rU2l6ZSkgPiBjdHguY3VycmVudENodW5rSW5kZXhcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Zm5TdGFydE5ld0NodW5rKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoY3R4LmNvdW50RmluaXNoZWQgPT09IHRvdGFsKSB7XG5cdFx0XHRcdGNvbnN0IHN0YXR1c1N0cmluZyA9IGDlrozmiJDvvIgke2N0eC5jb3VudEZpbmlzaGVkU3VjY2Vzc30vJHtjdHguY291bnRGaW5pc2hlZH3mk43kvZzmiJDlip/lrozmiJDvvIlgO1xuXHRcdFx0XHRpZiAoY3R4LmNvdW50RmluaXNoZWRTdWNjZXNzIDwgY3R4LmNvdW50RmluaXNoZWQpIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC53YXJuKHN0YXR1c1N0cmluZyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyhzdGF0dXNTdHJpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjdHgucG9zdEZpbmlzaCkge1xuXHRcdFx0XHRcdGN0eC5wb3N0RmluaXNoKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0TW9yZWJpdHMud2lraS5yZW1vdmVDaGVja3BvaW50KCk7XG5cdFx0XHRcdGN0eC5ydW5uaW5nID0gZmFsc2U7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBjdHguY291bnRGaW5pc2hlZCA+IHRvdGFsXG5cdFx0XHRcdC8vIGp1c3QgZm9yIGdpZ2dsZXMhICh3ZWxsLCBzZXJpb3VzIGRlYnVnZ2luZywgYWN0dWFsbHkpXG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50Lndhcm4oXG5cdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCflrozmiJDvvIjlpJrmiafooYzkuoYnLCAn5a6M5oiQ77yI5aSa5Z+36KGM5LqGJykgKyAoY3R4LmNvdW50RmluaXNoZWQgLSB0b3RhbCl95qyh77yJYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHRcdFx0Y3R4LnJ1bm5pbmcgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9O1xuXHR9O1xuXHQvKipcblx0ICogQSBzaW1wbGUgZHJhZ2dhYmxlIHdpbmRvdywgbm93IGEgd3JhcHBlciBmb3IgalF1ZXJ5IFVJJ3MgZGlhbG9nIGZlYXR1cmUuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKiBAY2xhc3Ncblx0ICogQHJlcXVpcmVzIGpxdWVyeS51aS5kaWFsb2dcblx0ICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgLSBUaGUgbWF4aW11bSBhbGxvd2FibGUgaGVpZ2h0IGZvciB0aGUgY29udGVudCBhcmVhLlxuXHQgKi9cblx0TW9yZWJpdHMuc2ltcGxlV2luZG93ID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcblx0XHRjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0dGhpcy5jb250ZW50ID0gY29udGVudDtcblx0XHRjb250ZW50LmNsYXNzTmFtZSA9ICdtb3JlYml0cy1kaWFsb2ctY29udGVudCc7XG5cdFx0Y29udGVudC5pZCA9IGBtb3JlYml0cy1kaWFsb2ctY29udGVudC0ke01hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDFlMTUpfWA7XG5cdFx0dGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG5cdFx0JCh0aGlzLmNvbnRlbnQpLmRpYWxvZyh7XG5cdFx0XHRhdXRvT3BlbjogZmFsc2UsXG5cdFx0XHRidXR0b25zOiB7XG5cdFx0XHRcdCdQbGFjZWhvbGRlciBidXR0b24nOiAoKSA9PiB7fSxcblx0XHRcdH0sXG5cdFx0XHRkaWFsb2dDbGFzczogJ21vcmViaXRzLWRpYWxvZycsXG5cdFx0XHR3aWR0aDogTWF0aC5taW4oTnVtYmVyLnBhcnNlSW50KHdpbmRvdy5pbm5lcldpZHRoLCAxMCksIE51bWJlci5wYXJzZUludCh3aWR0aCB8fCA4MDAsIDEwKSksXG5cdFx0XHQvLyBnaXZlIGpRdWVyeSB0aGUgZ2l2ZW4gaGVpZ2h0IHZhbHVlICh3aGljaCByZXByZXNlbnRzIHRoZSBhbnRpY2lwYXRlZCBoZWlnaHQgb2YgdGhlIGRpYWxvZykgaGVyZSwgc29cblx0XHRcdC8vIGl0IGNhbiBwb3NpdGlvbiB0aGUgZGlhbG9nIGFwcHJvcHJpYXRlbHlcblx0XHRcdC8vIHRoZSAyMCBwaXhlbHMgcmVwcmVzZW50cyBhZGp1c3RtZW50IGZvciB0aGUgZXh0cmEgaGVpZ2h0IG9mIHRoZSBqUXVlcnkgZGlhbG9nIFwiY2hyb21lXCIsIGNvbXBhcmVkXG5cdFx0XHQvLyB0byB0aGF0IG9mIHRoZSBvbGQgU2ltcGxlV2luZG93XG5cdFx0XHRoZWlnaHQ6IGhlaWdodCArIDIwLFxuXHRcdFx0Y2xvc2U6IChldmVudCkgPT4ge1xuXHRcdFx0XHQvLyBkaWFsb2dzIGFuZCB0aGVpciBjb250ZW50IGNhbiBiZSBkZXN0cm95ZWQgb25jZSBjbG9zZWRcblx0XHRcdFx0JChldmVudC50YXJnZXQpLmRpYWxvZygnZGVzdHJveScpLnJlbW92ZSgpO1xuXHRcdFx0fSxcblx0XHRcdHJlc2l6ZVN0YXJ0KCkge1xuXHRcdFx0XHRbdGhpcy5zY3JvbGxib3hdID0gJCh0aGlzKS5maW5kKCcubW9yZWJpdHMtc2Nyb2xsYm94Jyk7XG5cdFx0XHRcdGlmICh0aGlzLnNjcm9sbGJveCkge1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsYm94LnN0eWxlLm1heEhlaWdodCA9ICdub25lJztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJlc2l6ZVN0b3AoKSB7XG5cdFx0XHRcdHRoaXMuc2Nyb2xsYm94ID0gbnVsbDtcblx0XHRcdH0sXG5cdFx0XHRyZXNpemUoKSB7XG5cdFx0XHRcdHRoaXMuc3R5bGUubWF4SGVpZ2h0ID0gJyc7XG5cdFx0XHRcdGlmICh0aGlzLnNjcm9sbGJveCkge1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsYm94LnN0eWxlLndpZHRoID0gJyc7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fSk7XG5cdFx0Y29uc3QgJHdpZGdldCA9ICQodGhpcy5jb250ZW50KS5kaWFsb2coJ3dpZGdldCcpO1xuXHRcdC8vIGRlbGV0ZSB0aGUgcGxhY2Vob2xkZXIgYnV0dG9uIChpdCdzIG9ubHkgdGhlcmUgc28gdGhlIGJ1dHRvbnBhbmUgZ2V0cyBjcmVhdGVkKVxuXHRcdCR3aWRnZXQuZmluZCgnYnV0dG9uJykuZWFjaCgoa2V5LCB2YWx1ZSkgPT4ge1xuXHRcdFx0dmFsdWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh2YWx1ZSk7XG5cdFx0fSk7XG5cdFx0Ly8gYWRkIGNvbnRhaW5lciBmb3IgdGhlIGJ1dHRvbnMgd2UgYWRkLCBhbmQgdGhlIGZvb3RlciBsaW5rcyAoaWYgYW55KVxuXHRcdGNvbnN0IGJ1dHRvbnNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0YnV0dG9uc3Bhbi5jbGFzc05hbWUgPSAnbW9yZWJpdHMtZGlhbG9nLWJ1dHRvbnMnO1xuXHRcdGNvbnN0IGxpbmtzc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRsaW5rc3NwYW4uY2xhc3NOYW1lID0gJ21vcmViaXRzLWRpYWxvZy1mb290ZXJsaW5rcyc7XG5cdFx0JHdpZGdldC5maW5kKCcudWktZGlhbG9nLWJ1dHRvbnBhbmUnKS5hcHBlbmQoYnV0dG9uc3BhbiwgbGlua3NzcGFuKTtcblx0XHQvLyByZXNpemUgdGhlIHNjcm9sbGJveCB3aXRoIHRoZSBkaWFsb2csIGlmIG9uZSBpcyBwcmVzZW50XG5cdFx0JHdpZGdldC5yZXNpemFibGUoJ29wdGlvbicsICdhbHNvUmVzaXplJywgYCMke3RoaXMuY29udGVudC5pZH0gLm1vcmViaXRzLXNjcm9sbGJveCwgIyR7dGhpcy5jb250ZW50LmlkfWApO1xuXHR9O1xuXHRNb3JlYml0cy5zaW1wbGVXaW5kb3cucHJvdG90eXBlID0ge1xuXHRcdGJ1dHRvbnM6IFtdLFxuXHRcdGhlaWdodDogNjAwLFxuXHRcdGhhc0Zvb3RlckxpbmtzOiBmYWxzZSxcblx0XHRzY3JpcHROYW1lOiBudWxsLFxuXHRcdC8qKlxuXHRcdCAqIEZvY3VzZXMgdGhlIGRpYWxvZy4gVGhpcyBtaWdodCB3b3JrLCBvciBvbiB0aGUgY29udHJhcnksIGl0IG1pZ2h0IG5vdC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zaW1wbGVXaW5kb3d9XG5cdFx0ICovXG5cdFx0Zm9jdXMoKSB7XG5cdFx0XHQkKHRoaXMuY29udGVudCkuZGlhbG9nKCdtb3ZlVG9Ub3AnKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogQ2xvc2VzIHRoZSBkaWFsb2cuIElmIHRoaXMgaXMgc2V0IGFzIGFuIGV2ZW50IGhhbmRsZXIsIGl0IHdpbGwgc3RvcCB0aGUgZXZlbnRcblx0XHQgKiBmcm9tIGRvaW5nIGFueXRoaW5nIG1vcmUuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2V2ZW50fSBbZXZlbnRdXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRjbG9zZShldmVudCkge1xuXHRcdFx0aWYgKGV2ZW50KSB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR9XG5cdFx0XHQkKHRoaXMuY29udGVudCkuZGlhbG9nKCdjbG9zZScpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTaG93cyB0aGUgZGlhbG9nLiBDYWxsaW5nIGRpc3BsYXkoKSBvbiBhIGRpYWxvZyB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gY2xvc2VkXG5cdFx0ICogbWlnaHQgd29yaywgYnV0IGl0IGlzIG5vdCBndWFyYW50ZWVkLlxuXHRcdCAqXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRkaXNwbGF5KCkge1xuXHRcdFx0aWYgKHRoaXMuc2NyaXB0TmFtZSkge1xuXHRcdFx0XHRjb25zdCAkd2lkZ2V0ID0gJCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnd2lkZ2V0Jyk7XG5cdFx0XHRcdCR3aWRnZXQuZmluZCgnLm1vcmViaXRzLWRpYWxvZy1zY3JpcHRuYW1lJykucmVtb3ZlKCk7XG5cdFx0XHRcdGNvbnN0IHNjcmlwdG5hbWVzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0XHRzY3JpcHRuYW1lc3Bhbi5jbGFzc05hbWUgPSAnbW9yZWJpdHMtZGlhbG9nLXNjcmlwdG5hbWUnO1xuXHRcdFx0XHRzY3JpcHRuYW1lc3Bhbi50ZXh0Q29udGVudCA9IGAke3RoaXMuc2NyaXB0TmFtZX0gXFx1MDBCNyBgOyAvLyBVKzAwQjcgTUlERExFIERPVCA9ICZtaWRkb3Q7XG5cdFx0XHRcdCR3aWRnZXQuZmluZCgnLnVpLWRpYWxvZy10aXRsZScpLnByZXBlbmQoc2NyaXB0bmFtZXNwYW4pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZGlhbG9nID0gJCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnb3BlbicpO1xuXHRcdFx0aWYgKHdpbmRvdy5zZXR1cFRvb2x0aXBzICYmIHdpbmRvdy5wZyAmJiB3aW5kb3cucGcucmUgJiYgd2luZG93LnBnLnJlLmRpZmYpIHtcblx0XHRcdFx0Ly8gdGllIGluIHdpdGggTkFWUE9QXG5cdFx0XHRcdGRpYWxvZy5wYXJlbnQoKVswXS5yYW5TZXR1cFRvb2x0aXBzQWxyZWFkeSA9IGZhbHNlO1xuXHRcdFx0XHR3aW5kb3cuc2V0dXBUb29sdGlwcyhkaWFsb2cucGFyZW50KClbMF0pO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zZXRIZWlnaHQodGhpcy5oZWlnaHQpOyAvLyBpbml0IGhlaWdodCBhbGdvcml0aG1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU2V0cyB0aGUgZGlhbG9nIHRpdGxlLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRzZXRUaXRsZSh0aXRsZSkge1xuXHRcdFx0JCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnb3B0aW9uJywgJ3RpdGxlJywgdGl0bGUpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTZXRzIHRoZSBzY3JpcHQgbmFtZSwgYXBwZWFyaW5nIGFzIGEgcHJlZml4IHRvIHRoZSB0aXRsZSB0byBoZWxwIHVzZXJzIGRldGVybWluZSB3aGljaFxuXHRcdCAqIHVzZXIgc2NyaXB0IGlzIHByb2R1Y2luZyB3aGljaCBkaWFsb2cuIEZvciBpbnN0YW5jZSwgVHdpbmtsZSBtb2R1bGVzIHNldCB0aGlzIHRvIFwiVHdpbmtsZVwiLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMuc2ltcGxlV2luZG93fVxuXHRcdCAqL1xuXHRcdHNldFNjcmlwdE5hbWUobmFtZSkge1xuXHRcdFx0dGhpcy5zY3JpcHROYW1lID0gbmFtZTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU2V0cyB0aGUgZGlhbG9nIHdpZHRoLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRzZXRXaWR0aCh3aWR0aCkge1xuXHRcdFx0JCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnb3B0aW9uJywgJ3dpZHRoJywgd2lkdGgpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTZXRzIHRoZSBkaWFsb2cncyBtYXhpbXVtIGhlaWdodC4gVGhlIGRpYWxvZyB3aWxsIGF1dG8tc2l6ZSB0byBmaXQgaXRzIGNvbnRlbnRzLFxuXHRcdCAqIGJ1dCB0aGUgY29udGVudCBhcmVhIHdpbGwgZ3JvdyBubyBsYXJnZXIgdGhhbiB0aGUgaGVpZ2h0IGdpdmVuIGhlcmUuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRzZXRIZWlnaHQoaGVpZ2h0KSB7XG5cdFx0XHR0aGlzLmhlaWdodCA9IGhlaWdodDtcblx0XHRcdC8vIGZyb20gZGlzcGxheSB0aW1lIG9ud2FyZHMsIGxldCB0aGUgYnJvd3NlciBkZXRlcm1pbmUgdGhlIG9wdGltdW0gaGVpZ2h0LFxuXHRcdFx0Ly8gYW5kIGluc3RlYWQgbGltaXQgdGhlIGhlaWdodCBhdCB0aGUgZ2l2ZW4gdmFsdWVcblx0XHRcdC8vIG5vdGUgdGhhdCB0aGUgZ2l2ZW4gaGVpZ2h0IHdpbGwgZXhjbHVkZSB0aGUgYXBwcm94LiAyMHB4IHRoYXQgdGhlIGpRdWVyeSBVSVxuXHRcdFx0Ly8gY2hyb21lIGhhcyBpbiBoZWlnaHQgaW4gYWRkaXRpb24gdG8gdGhlIGhlaWdodCBvZiBhbiBlcXVpdmFsZW50IFwiY2xhc3NpY1wiXG5cdFx0XHQvLyBNb3JlYml0cy5zaW1wbGVXaW5kb3dcblx0XHRcdGlmIChcblx0XHRcdFx0TnVtYmVyLnBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoJCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnd2lkZ2V0JylbMF0sIG51bGwpLmhlaWdodCwgMTApID5cblx0XHRcdFx0d2luZG93LmlubmVySGVpZ2h0XG5cdFx0XHQpIHtcblx0XHRcdFx0JCh0aGlzLmNvbnRlbnQpXG5cdFx0XHRcdFx0LmRpYWxvZygnb3B0aW9uJywgJ2hlaWdodCcsIHdpbmRvdy5pbm5lckhlaWdodCAtIDIpXG5cdFx0XHRcdFx0LmRpYWxvZygnb3B0aW9uJywgJ3Bvc2l0aW9uJywgJ3RvcCcpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnb3B0aW9uJywgJ2hlaWdodCcsICdhdXRvJyk7XG5cdFx0XHR9XG5cdFx0XHQkKHRoaXMuY29udGVudCkuZGlhbG9nKCd3aWRnZXQnKS5maW5kKCcubW9yZWJpdHMtZGlhbG9nLWNvbnRlbnQnKVswXS5zdHlsZS5tYXhIZWlnaHQgPSBgJHtOdW1iZXIucGFyc2VJbnQoXG5cdFx0XHRcdHRoaXMuaGVpZ2h0IC0gMzAsXG5cdFx0XHRcdDEwXG5cdFx0XHQpfXB4YDtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU2V0cyB0aGUgY29udGVudCBvZiB0aGUgZGlhbG9nIHRvIHRoZSBnaXZlbiBlbGVtZW50IG5vZGUsIHVzdWFsbHkgZnJvbSByZW5kZXJpbmdcblx0XHQgKiBhIHtAbGluayBNb3JlYml0cy5xdWlja0Zvcm19LlxuXHRcdCAqIFJlLWVudW1lcmF0ZXMgdGhlIGZvb3RlciBidXR0b25zLCBidXQgbGVhdmVzIHRoZSBmb290ZXIgbGlua3MgYXMgdGhleSBhcmUuXG5cdFx0ICogQmUgc3VyZSB0byBjYWxsIHRoaXMgYXQgbGVhc3Qgb25jZSBiZWZvcmUgdGhlIGRpYWxvZyBpcyBkaXNwbGF5ZWQuLi5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRlbnRcblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMuc2ltcGxlV2luZG93fVxuXHRcdCAqL1xuXHRcdHNldENvbnRlbnQoY29udGVudCkge1xuXHRcdFx0dGhpcy5wdXJnZUNvbnRlbnQoKTtcblx0XHRcdHRoaXMuYWRkQ29udGVudChjb250ZW50KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogQWRkcyB0aGUgZ2l2ZW4gZWxlbWVudCBub2RlIHRvIHRoZSBkaWFsb2cgY29udGVudC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRlbnRcblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMuc2ltcGxlV2luZG93fVxuXHRcdCAqL1xuXHRcdGFkZENvbnRlbnQoY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuXHRcdFx0Ly8gbG9vayBmb3Igc3VibWl0IGJ1dHRvbnMgaW4gdGhlIGNvbnRlbnQsIGhpZGUgdGhlbSwgYW5kIGFkZCBhIHByb3h5IGJ1dHRvbiB0byB0aGUgYnV0dG9uIHBhbmVcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRcdFx0JCh0aGlzLmNvbnRlbnQpXG5cdFx0XHRcdC5maW5kKCdpbnB1dFt0eXBlPVwic3VibWl0XCJdLCBidXR0b25bdHlwZT1cInN1Ym1pdFwiXScpXG5cdFx0XHRcdC5lYWNoKChrZXksIHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dmFsdWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblx0XHRcdFx0XHRjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRcdFx0XHRpZiAodmFsdWUuaGFzQXR0cmlidXRlKCd2YWx1ZScpKSB7XG5cdFx0XHRcdFx0XHRidXR0b24udGV4dENvbnRlbnQgPSB2YWx1ZS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh2YWx1ZS50ZXh0Q29udGVudCkge1xuXHRcdFx0XHRcdFx0YnV0dG9uLnRleHRDb250ZW50ID0gdmFsdWUudGV4dENvbnRlbnQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9ICfmj5DkuqQnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRidXR0b24uY2xhc3NOYW1lID0gdmFsdWUuY2xhc3NOYW1lIHx8ICdzdWJtaXRCdXR0b25Qcm94eSc7XG5cdFx0XHRcdFx0Ly8gaGVyZSBpcyBhbiBpbnN0YW5jZSBvZiBjaGVhcCBjb2RpbmcsIHByb2JhYmx5IGEgbWVtb3J5LXVzYWdlIGhpdCBpbiB1c2luZyBhIGNsb3N1cmUgaGVyZVxuXHRcdFx0XHRcdGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0XHRcdFx0J2NsaWNrJyxcblx0XHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFx0dmFsdWUuY2xpY2soKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmYWxzZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c2VsZi5idXR0b25zW3NlbGYuYnV0dG9ucy5sZW5ndGhdID0gYnV0dG9uO1xuXHRcdFx0XHR9KTtcblx0XHRcdC8vIHJlbW92ZSBhbGwgYnV0dG9ucyBmcm9tIHRoZSBidXR0b24gcGFuZSBhbmQgcmUtYWRkIHRoZW1cblx0XHRcdGlmICh0aGlzLmJ1dHRvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQkKHRoaXMuY29udGVudClcblx0XHRcdFx0XHQuZGlhbG9nKCd3aWRnZXQnKVxuXHRcdFx0XHRcdC5maW5kKCcubW9yZWJpdHMtZGlhbG9nLWJ1dHRvbnMnKVxuXHRcdFx0XHRcdC5lbXB0eSgpXG5cdFx0XHRcdFx0LmFwcGVuZCh0aGlzLmJ1dHRvbnMpWzBdXG5cdFx0XHRcdFx0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1lbXB0eScpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JCh0aGlzLmNvbnRlbnQpXG5cdFx0XHRcdFx0LmRpYWxvZygnd2lkZ2V0Jylcblx0XHRcdFx0XHQuZmluZCgnLm1vcmViaXRzLWRpYWxvZy1idXR0b25zJylbMF1cblx0XHRcdFx0XHQuc2V0QXR0cmlidXRlKCdkYXRhLWVtcHR5JywgJ2RhdGEtZW1wdHknKTsgLy8gdXNlZCBieSBDU1Ncblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBSZW1vdmVzIGFsbCBjb250ZW50cyBmcm9tIHRoZSBkaWFsb2csIGJhcnJpbmcgYW55IGZvb3RlciBsaW5rcy5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zaW1wbGVXaW5kb3d9XG5cdFx0ICovXG5cdFx0cHVyZ2VDb250ZW50KCkge1xuXHRcdFx0dGhpcy5idXR0b25zID0gW107XG5cdFx0XHQvLyBkZWxldGUgYWxsIGJ1dHRvbnMgaW4gdGhlIGJ1dHRvbnBhbmVcblx0XHRcdCQodGhpcy5jb250ZW50KS5kaWFsb2coJ3dpZGdldCcpLmZpbmQoJy5tb3JlYml0cy1kaWFsb2ctYnV0dG9ucycpLmVtcHR5KCk7XG5cdFx0XHR3aGlsZSAodGhpcy5jb250ZW50Lmhhc0NoaWxkTm9kZXMoKSkge1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQucmVtb3ZlQ2hpbGQodGhpcy5jb250ZW50LmZpcnN0Q2hpbGQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBBZGRzIGEgbGluayBpbiB0aGUgYm90dG9tLXJpZ2h0IGNvcm5lciBvZiB0aGUgZGlhbG9nLlxuXHRcdCAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBoZWxwIG9yIHBvbGljeSBsaW5rcy5cblx0XHQgKiBGb3IgZXhhbXBsZSwgVHdpbmtsZSdzIENTRCBtb2R1bGUgYWRkcyBhIGxpbmsgdG8gdGhlIENTRCBwb2xpY3kgcGFnZSxcblx0XHQgKiBhcyB3ZWxsIGFzIGEgbGluayB0byBUd2lua2xlJ3MgZG9jdW1lbnRhdGlvbi5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gRGlzcGxheSB0ZXh0LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB3aWtpUGFnZSAtIExpbmsgdGFyZ2V0LlxuXHRcdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZXA9ZmFsc2VdIC0gU2V0IHRydWUgdG8gcHJlcGVuZCByYXRoZXIgdGhhbiBhcHBlbmQuXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRhZGRGb290ZXJMaW5rKHRleHQsIHdpa2lQYWdlLCBwcmVwKSB7XG5cdFx0XHRjb25zdCAkZm9vdGVybGlua3MgPSAkKHRoaXMuY29udGVudCkuZGlhbG9nKCd3aWRnZXQnKS5maW5kKCcubW9yZWJpdHMtZGlhbG9nLWZvb3RlcmxpbmtzJyk7XG5cdFx0XHRpZiAodGhpcy5oYXNGb290ZXJMaW5rcykge1xuXHRcdFx0XHRjb25zdCBidWxsZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHRcdGJ1bGxldC50ZXh0Q29udGVudCA9ICcgXFx1MjAyMiAnOyAvLyBVKzIwMjIgQlVMTEVUXG5cdFx0XHRcdGlmIChwcmVwKSB7XG5cdFx0XHRcdFx0JGZvb3RlcmxpbmtzLnByZXBlbmQoYnVsbGV0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkZm9vdGVybGlua3MuYXBwZW5kKGJ1bGxldCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKHdpa2lQYWdlKSk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGl0bGUnLCB3aWtpUGFnZSk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0XHRsaW5rLnRleHRDb250ZW50ID0gdGV4dDtcblx0XHRcdGlmIChwcmVwKSB7XG5cdFx0XHRcdCRmb290ZXJsaW5rcy5wcmVwZW5kKGxpbmspO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JGZvb3RlcmxpbmtzLmFwcGVuZChsaW5rKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuaGFzRm9vdGVyTGlua3MgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTZXRzIHdoZXRoZXIgdGhlIHdpbmRvdyBzaG91bGQgYmUgbW9kYWwgb3Igbm90LiBNb2RhbCBkaWFsb2dzIGNyZWF0ZVxuXHRcdCAqIGFuIG92ZXJsYXkgYmVsb3cgdGhlIGRpYWxvZyBidXQgYWJvdmUgb3RoZXIgcGFnZSBlbGVtZW50cy4gVGhpc1xuXHRcdCAqIG11c3QgYmUgdXNlZCAoaWYgbmVjZXNzYXJ5KSBiZWZvcmUgY2FsbGluZyBkaXNwbGF5KCkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFttb2RhbD1mYWxzZV0gLSBJZiBzZXQgdG8gdHJ1ZSwgb3RoZXIgaXRlbXMgb24gdGhlXG5cdFx0ICogcGFnZSB3aWxsIGJlIGRpc2FibGVkLCBpLmUuLCBjYW5ub3QgYmUgaW50ZXJhY3RlZCB3aXRoLlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zaW1wbGVXaW5kb3d9XG5cdFx0ICovXG5cdFx0c2V0TW9kYWxpdHkobW9kYWwpIHtcblx0XHRcdCQodGhpcy5jb250ZW50KS5kaWFsb2coJ29wdGlvbicsICdtb2RhbCcsIG1vZGFsKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdH07XG5cdC8qKlxuXHQgKiBFbmFibGVzIG9yIGRpc2FibGVzIGFsbCBmb290ZXIgYnV0dG9ucyBvbiBhbGwge0BsaW5rIE1vcmViaXRzLnNpbXBsZVdpbmRvd31zIGluIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIGBmYWxzZWAgd2hlbiB0aGUgYnV0dG9uKHMpIGJlY29tZSBpcnJlbGV2YW50IChlLmcuIGp1c3QgYmVmb3JlXG5cdCAqIHtAbGluayBNb3JlYml0cy5zdGF0dXMuaW5pdH0gaXMgY2FsbGVkKS5cblx0ICogVGhpcyBpcyBub3QgYW4gaW5zdGFuY2UgbWV0aG9kIHNvIHRoYXQgY29uc3VtZXJzIGRvbid0IGhhdmUgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVcblx0ICogb3JpZ2luYWwgYE1vcmViaXRzLnNpbXBsZVdpbmRvd2Agb2JqZWN0IHNpdHRpbmcgYXJvdW5kIHNvbWV3aGVyZS4gQW55d2F5LCBtb3N0IG9mIHRoZSB0aW1lXG5cdCAqIHRoZXJlIHdpbGwgb25seSBiZSBvbmUgYE1vcmViaXRzLnNpbXBsZVdpbmRvd2Agb3Blbiwgc28gdGhpcyBzaG91bGRuJ3QgbWF0dGVyLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMuc2ltcGxlV2luZG93XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZFxuXHQgKi9cblx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkID0gKGVuYWJsZWQpID0+IHtcblx0XHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0XHQkYm9keS5maW5kKCcubW9yZWJpdHMtZGlhbG9nLWJ1dHRvbnMgYnV0dG9uJykucHJvcCgnZGlzYWJsZWQnLCAhZW5hYmxlZCk7XG5cdH07XG59KShqUXVlcnkpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LFFBQVFrRyxJQUFJO01BQzFCLE9BQU87QUFDTm1PLHFCQUFhaDNCLE9BQU82b0IsSUFBSTtNQUN6QjtBQUNBLFdBQUs2TSxpQkFBaUI7QUFDdEIsYUFBTztJQUNSOzs7Ozs7Ozs7O0lBVUF3QixZQUFZQyxPQUFPO0FBQ2xCejlCLFFBQUUsS0FBS3dFLE9BQU8sRUFBRXUyQixPQUFPLFVBQVUsU0FBUzBDLEtBQUs7QUFDL0MsYUFBTztJQUNSO0VBQ0Q7QUFZQXg5QixXQUFTMjZCLGFBQWE4QyxvQkFBcUJDLGFBQVk7QUFDdEQsVUFBTWxSLFFBQVF6c0IsRUFBRSxNQUFNO0FBQ3RCeXNCLFVBQU1wZixLQUFLLGlDQUFpQyxFQUFFMFQsS0FBSyxZQUFZLENBQUM0YyxPQUFPO0VBQ3hFO0FBQ0QsR0FBR0MsTUFBTTsiLAogICJuYW1lcyI6IFsiaW1wb3J0X2V4dF9nYWRnZXQiLCAicmVxdWlyZSIsICJtb3JlYml0cyIsICIkIiwgIk1vcmViaXRzIiwgIndpbmRvdyIsICJsMTBuIiwgInJlZGlyZWN0VGFnQWxpYXNlcyIsICJzaWduYXR1cmVUaW1lc3RhbXBGb3JtYXQiLCAic3RyIiwgInJneFVUQyIsICJyZ3hDU1QiLCAibWF0Y2giLCAiZXhlYyIsICJtYXRjaENTVCIsICJtb250aCIsICJkYXRlIiwgImxvY2FsZURhdGEiLCAibW9udGhzIiwgImluZGV4T2YiLCAidXNlcklzSW5Hcm91cCIsICJncm91cCIsICJtdyIsICJjb25maWciLCAiZ2V0IiwgImluY2x1ZGVzIiwgInVzZXJJc1N5c29wIiwgInNhbml0aXplSVB2NiIsICJhZGRyZXNzIiwgImNvbnNvbGUiLCAid2FybiIsICJpcCIsICJpc1BhZ2VSZWRpcmVjdCIsICJkb2N1bWVudCIsICJxdWVyeVNlbGVjdG9yIiwgInBhZ2VOYW1lTm9ybSIsICJyZXBsYWNlIiwgInBhZ2VOYW1lUmVnZXgiLCAicGFnZU5hbWUiLCAiZmlyc3RDaGFyIiwgInJlbWFpbmRlciIsICJzdHJpbmciLCAiZXNjYXBlUmVnRXhwIiwgInNsaWNlIiwgIlRpdGxlIiwgInBocENoYXJUb1VwcGVyIiwgInRvTG93ZXJDYXNlIiwgImNvbmNhdCIsICJjcmVhdGVIdG1sIiwgImlucHV0IiwgImZyYWdtZW50IiwgImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCAiZ2VuZXJhdGVBcnJheSIsICJfaXRlcmF0b3IiLCAiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCAiX3N0ZXAiLCAicyIsICJuIiwgImRvbmUiLCAiZWxlbWVudCIsICJ2YWx1ZSIsICJOb2RlIiwgImFwcGVuZENoaWxkIiwgIl9pdGVyYXRvcjIiLCAicGFyc2VIVE1MIiwgInJlbmRlcldpa2lsaW5rcyIsICJfc3RlcDIiLCAibm9kZSIsICJlcnIiLCAiZSIsICJmIiwgInRleHQiLCAidWIiLCAidW5iaW5kZXIiLCAidW5iaW5kIiwgImNvbnRlbnQiLCAiXyIsICJ0YXJnZXQiLCAidGV4dF8iLCAidXRpbCIsICJnZXRVcmwiLCAicmViaW5kIiwgIm5hbWVzcGFjZVJlZ2V4IiwgIm5hbWVzcGFjZXMiLCAiYWxpYXNlcyIsICJyZWdleCIsICJfaSIsICJfT2JqZWN0JGVudHJpZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAibGVuZ3RoIiwgIm5hbWUiLCAibnVtYmVyIiwgIm1hcCIsICJjaGFyIiwgImpvaW4iLCAicXVpY2tGb3JtIiwgImV2ZW50IiwgImV2ZW50VHlwZSIsICJyb290IiwgInR5cGUiLCAicHJvdG90eXBlIiwgInJlbmRlciIsICJyZXQiLCAibmFtZXMiLCAiYXBwZW5kIiwgImRhdGEiLCAiY2hpbGRzIiwgImlkIiwgImNoaWxkIiwgImludGVybmFsU3ViZ3JvdXBJZCIsICJjdXJyZW50Tm9kZSIsICJjb21wdXRlIiwgIl9pdGVyYXRvcjMiLCAiX3N0ZXAzIiwgImluSWQiLCAiY2hpbGRDb250YWluZXIiLCAibGFiZWwiLCAiYWRtaW5vbmx5IiwgImkiLCAiY3VycmVudCIsICJzdWJub2RlIiwgImNyZWF0ZUVsZW1lbnQiLCAiY2xhc3NOYW1lIiwgInNldEF0dHJpYnV0ZSIsICJhZGRFdmVudExpc3RlbmVyIiwgInNlbGVjdCIsICJtdWx0aXBsZSIsICJzaXplIiwgImRpc2FibGVkIiwgImxpc3QiLCAidmFsdWVzIiwgInNlbGVjdGVkIiwgImhpZGRlbiIsICJjcmVhdGVUZXh0Tm9kZSIsICJjdXJJZCIsICJjdXJEaXYiLCAidG9vbHRpcCIsICJnZW5lcmF0ZVRvb2x0aXAiLCAiY2hlY2tlZCIsICJzdHlsZSIsICJzdWJncm91cCIsICJ0bXBncm91cCIsICJzdWJncm91cFJhdyIsICJfaXRlcmF0b3I0IiwgIl9zdGVwNCIsICJlbCIsICJuZXdFbCIsICJzaG93biIsICJwYXJlbnROb2RlIiwgImZvcm0iLCAicmVtb3ZlQ2hpbGQiLCAic2hpZnRDbGlja1N1cHBvcnQiLCAiY2hlY2tib3hTaGlmdENsaWNrU3VwcG9ydCIsICJnZXRFbGVtZW50cyIsICJwbGFjZWhvbGRlciIsICJfaTIiLCAiX2FyciIsICJhdHQiLCAiX2kzIiwgIl9hcnIyIiwgIl9pNCIsICJfYXJyMyIsICJtaW4iLCAibWF4IiwgIk51bWJlciIsICJQT1NJVElWRV9JTkZJTklUWSIsICJsaXN0Tm9kZSIsICJtb3JlIiwgIm5ld05vZGUiLCAic3VibGlzdCIsICJhcmVhIiwgImNvdW50ZXIiLCAic3RvcFByb3BhZ2F0aW9uIiwgIm1vcmVCdXR0b24iLCAic3VibGFiZWwiLCAicmVtb3ZlIiwgIm1heGxlbmd0aCIsICJlbGVtIiwgIm1vcmVidXR0b24iLCAibGlzdG5vZGUiLCAibm9kZV8iLCAiaW5wdXRub2RlIiwgInJlbW92ZUF0dHJpYnV0ZSIsICJyZW1vdmVCdXR0b24iLCAicmVzdWx0IiwgImxhYmVsRWxlbWVudCIsICJjb2xzIiwgInJvd3MiLCAicmVxdWlyZWQiLCAicmVhZG9ubHkiLCAiRXJyb3IiLCAidG9TdHJpbmciLCAiZXh0cmEiLCAiJGRhdGEiLCAidG9vbHRpcEJ1dHRvbiIsICJ0aXRsZSIsICJwb3NpdGlvbiIsICJteSIsICJhdCIsICJjb2xsaXNpb24iLCAidG9vbHRpcENsYXNzIiwgImdldElucHV0RGF0YSIsICJfaXRlcmF0b3I1IiwgImVsZW1lbnRzIiwgIl9zdGVwNSIsICJmaWVsZCIsICJmaWVsZE5hbWVOb3JtIiwgImRhdGFzZXQiLCAic2luZ2xlIiwgInZhbCIsICJ0cmltIiwgImZpZWxkTmFtZSIsICIkZm9ybSIsICJlc2NhcGVTZWxlY3RvciIsICIkZWxlbWVudHMiLCAiZmluZCIsICJ0b0FycmF5IiwgImdldENoZWNrYm94T3JSYWRpbyIsICJlbGVtZW50QXJyYXkiLCAiZm91bmQiLCAiZmlsdGVyIiwgImdldEVsZW1lbnRDb250YWluZXIiLCAiSFRNTEZpZWxkU2V0RWxlbWVudCIsICJIVE1MRGl2RWxlbWVudCIsICJIVE1MSGVhZGluZ0VsZW1lbnQiLCAiZ2V0RWxlbWVudExhYmVsT2JqZWN0IiwgIkhUTUxUZXh0QXJlYUVsZW1lbnQiLCAiZ2V0RWxlbWVudExhYmVsIiwgImZpcnN0Q2hpbGQiLCAidGV4dENvbnRlbnQiLCAic2V0RWxlbWVudExhYmVsIiwgImxhYmVsVGV4dCIsICJvdmVycmlkZUVsZW1lbnRMYWJlbCIsICJ0ZW1wb3JhcnlMYWJlbFRleHQiLCAiaGFzQXR0cmlidXRlIiwgInJlc2V0RWxlbWVudExhYmVsIiwgImdldEF0dHJpYnV0ZSIsICJzZXRFbGVtZW50VmlzaWJpbGl0eSIsICJ2aXNpYmlsaXR5IiwgInRvZ2dsZSIsICJzZXRFbGVtZW50VG9vbHRpcFZpc2liaWxpdHkiLCAiSFRNTEZvcm1FbGVtZW50IiwgImdldENoZWNrZWQiLCAicmV0dXJuQXJyYXkiLCAiSFRNTFNlbGVjdEVsZW1lbnQiLCAib3B0aW9ucyIsICJIVE1MSW5wdXRFbGVtZW50IiwgImdldFVuY2hlY2tlZCIsICJpc0lQdjZBZGRyZXNzIiwgInRvVXBwZXJDYXNlIiwgImFiYnJldlBvcyIsICJDSURSU3RhcnQiLCAiYWRkcmVzc0VuZCIsICJyZXBlYXQiLCAicGFkIiwgInJlcGxhY2VtZW50IiwgInNwbGl0IiwgImlzUmFuZ2UiLCAiaXNJUEFkZHJlc3MiLCAidmFsaWRDSURSIiwgInN1Ym5ldCIsICJwYXJzZUludCIsICJnZXQ2NCIsICJpcHY2IiwgInN1Ym5ldE1hdGNoIiwgImlwUmVnZXgiLCAidG9VcHBlckNhc2VGaXJzdENoYXIiLCAidG9Mb3dlckNhc2VGaXJzdENoYXIiLCAic3BsaXRXZWlnaHRlZEJ5S2V5cyIsICJzdGFydCIsICJlbmQiLCAic2tpcGxpc3QiLCAibGV2ZWwiLCAiaW5pdGlhbCIsICJBcnJheSIsICJpc0FycmF5IiwgIlR5cGVFcnJvciIsICJfaXRlcmF0b3I2IiwgIl9zdGVwNiIsICJmb3JtYXRSZWFzb25UZXh0IiwgImFkZFNpZyIsICJyZWFzb24iLCAic2lnIiwgInNpZ0luZGV4IiwgImxhc3RJbmRleE9mIiwgImZvcm1hdFJlYXNvbkZvckxvZyIsICJzYWZlUmVwbGFjZSIsICJwYXR0ZXJuIiwgImlzSW5maW5pdHkiLCAiZXhwaXJ5IiwgImZvcm1hdFRpbWUiLCAidGltZSIsICJtIiwgIndnVUxTIiwgImFwcGVuZFB1bmN0dWF0aW9uIiwgInB1bmN0dWF0aW9uIiwgInNlYXJjaCIsICJhcnJheSIsICJ1bmlxIiwgImFyciIsICJpdGVtIiwgImlkeCIsICJkdXBzIiwgImNodW5rIiwgIm51bUNodW5rcyIsICJNYXRoIiwgImNlaWwiLCAiZnJvbSIsICJzZWxlY3QyIiwgIm1hdGNoZXJzIiwgIm9wdGdyb3VwRnVsbCIsICJwYXJhbXMiLCAib3JpZ2luYWxNYXRjaGVyIiwgImZuIiwgImRlZmF1bHRzIiwgIm1hdGNoZXIiLCAidGVybSIsICJjaGlsZHJlbiIsICJ3b3JkQmVnaW5uaW5nIiwgIlJlZ0V4cCIsICJ0ZXN0IiwgImhpZ2hsaWdodFNlYXJjaE1hdGNoZXMiLCAic2VhcmNoVGVybSIsICJzZWxlY3QyU2VhcmNoUXVlcnkiLCAibG9hZGluZyIsICJjc3MiLCAicXVlcnlJbnRlcmNlcHRvciIsICJhdXRvU3RhcnQiLCAiZXYiLCAid2hpY2giLCAiY2xvc2VzdCIsICJwcmV2IiwgImRyb3Bkb3duIiwgIiRzZWFyY2giLCAic2VsZWN0aW9uIiwgImZvY3VzIiwgImhpc3RvcnkiLCAicHJlZml4IiwgInJhbmRvbSIsICJwb3N0Zml4IiwgInJlIiwgImdldENhbGxiYWNrIiwgImhhc093biIsICJzZWxmIiwgImFyZ3MiLCAiX3RoaXMkX2QiLCAicGFyYW0iLCAiZGlnaXRNYXRjaCIsICJfZCIsICJEYXRlIiwgIlJlZmxlY3QiLCAiYXBwbHkiLCAiVVRDIiwgImRhdGVQYXJ0cyIsICJGdW5jdGlvbiIsICJiaW5kIiwgImlzVmFsaWQiLCAibG9nIiwgIm1vbnRoc1Nob3J0IiwgImRheXMiLCAiZGF5c1Nob3J0IiwgInJlbGF0aXZlVGltZXMiLCAidGhpc0RheSIsICJwcmV2RGF5IiwgIm5leHREYXkiLCAidGhpc1dlZWsiLCAicGFzdFdlZWsiLCAib3RoZXIiLCAidW5pdE1hcCIsICJzZWNvbmRzIiwgIm1pbnV0ZXMiLCAiaG91cnMiLCAid2Vla3MiLCAieWVhcnMiLCAiaXNOYU4iLCAiZ2V0VGltZSIsICJpc0JlZm9yZSIsICJpc0FmdGVyIiwgImdldFVUQ01vbnRoTmFtZSIsICJnZXRVVENNb250aCIsICJnZXRVVENNb250aE5hbWVBYmJyZXYiLCAiZ2V0TW9udGhOYW1lIiwgImdldE1vbnRoIiwgImdldE1vbnRoTmFtZUFiYnJldiIsICJnZXRVVENEYXlOYW1lIiwgImdldFVUQ0RheSIsICJnZXRVVENEYXlOYW1lQWJicmV2IiwgImdldERheU5hbWUiLCAiZ2V0RGF5IiwgImdldERheU5hbWVBYmJyZXYiLCAiYWRkIiwgInVuaXQiLCAibnVtIiwgInVuaXROb3JtIiwgImtleXMiLCAic3VidHJhY3QiLCAiZm9ybWF0IiwgImZvcm1hdHN0ciIsICJ6b25lIiwgInVkYXRlIiwgImdldFRpbWV6b25lT2Zmc2V0IiwgInRvSVNPU3RyaW5nIiwgImxlbiIsICJoMjQiLCAiZ2V0SG91cnMiLCAiZ2V0TWludXRlcyIsICJnZXRTZWNvbmRzIiwgIm1zIiwgImdldE1pbGxpc2Vjb25kcyIsICJEIiwgImdldERhdGUiLCAiTSIsICJZIiwgImdldEZ1bGxZZWFyIiwgImgxMiIsICJhbU9yUG0iLCAicmVwbGFjZW1lbnRNYXAiLCAiSEgiLCAiSCIsICJoaCIsICJoIiwgIkEiLCAibW0iLCAic3MiLCAiU1NTIiwgImRkZGQiLCAiZGRkIiwgImQiLCAiREQiLCAiTU1NTSIsICJNTU0iLCAiTU0iLCAiWVlZWSIsICJZWSIsICJTdHJpbmciLCAicmF3IiwgIl90ZW1wbGF0ZU9iamVjdCIsICJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsIiwgIl90ZW1wbGF0ZU9iamVjdDIiLCAiY2FsZW5kYXIiLCAiZGF0ZURpZmYiLCAic2V0SG91cnMiLCAibW9udGhIZWFkZXJSZWdleCIsICJnZXRVVENGdWxsWWVhciIsICJtb250aEhlYWRlciIsICJoZWFkZXIiLCAiX2l0ZXJhdG9yNyIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgIl9zdGVwNyIsICJmdW5jIiwgIndpa2kiLCAibnVtYmVyT2ZBY3Rpb25zTGVmdCIsICJuYnJPZkNoZWNrcG9pbnRzTGVmdCIsICJhY3Rpb25Db21wbGV0ZWQiLCAibm90aWNlIiwgInN0YXR1cyIsICJyZWRpcmVjdCIsICJmb2xsb3dSZWRpcmVjdCIsICJzZXRUaW1lb3V0IiwgImxvY2F0aW9uIiwgInRpbWVPdXQiLCAid3BBY3Rpb25Db21wbGV0ZWRUaW1lT3V0IiwgImFkZENoZWNrcG9pbnQiLCAicmVtb3ZlQ2hlY2twb2ludCIsICJhcGkiLCAiY3VycmVudEFjdGlvbiIsICJxdWVyeSIsICJvblN1Y2Nlc3MiLCAic3RhdHVzRWxlbWVudCIsICJvbkVycm9yIiwgIl90aGlzJHF1ZXJ5IiwgImFzc2VydCIsICJlcnJvcmZvcm1hdCIsICJ1c2VsYW5nIiwgImVycm9ybGFuZyIsICJlcnJvcnN1c2Vsb2NhbCIsICJzZXRTdGF0dXNFbGVtZW50IiwgInN0YXRlbGVtIiwgImZvcm1hdHZlcnNpb24iLCAiZXJyb3IiLCAiYWN0aW9uIiwgInRhZ3MiLCAibW9yZWJpdHNXaWtpQ2hhbmdlVGFnIiwgInBhcmVudCIsICJyZXNwb25zZSIsICJyZXNwb25zZVhNTCIsICJzdGF0dXNUZXh0IiwgImVycm9yQ29kZSIsICJlcnJvclRleHQiLCAiYmFkdG9rZW5SZXRyeSIsICJzZXRQYXJlbnQiLCAicG9zdCIsICJjYWxsZXJBamF4UGFyYW1ldGVycyIsICJxdWVyeVN0cmluZ0FyciIsICJfaTUiLCAiX09iamVjdCRlbnRyaWVzMiIsICJlbmNvZGVVUklDb21wb25lbnQiLCAicXVlcnlTdHJpbmciLCAiYWpheHBhcmFtcyIsICJjb250ZXh0IiwgInVybCIsICJ3aWtpU2NyaXB0IiwgImRhdGFUeXBlIiwgImhlYWRlcnMiLCAibW9yZWJpdHNXaWtpQXBpVXNlckFnZW50IiwgImFqYXgiLCAidGhlbiIsICJvbkFQSXN1Y2Nlc3MiLCAiZXJyb3JzIiwgImNvZGUiLCAiaHRtbCIsICJlcSIsICJhdHRyIiwgInJldHVybkVycm9yIiwgImNhbGwiLCAiaW5mbyIsICJEZWZlcnJlZCIsICJyZXNvbHZlV2l0aCIsICJvbkFQSWZhaWx1cmUiLCAiZXJyb3JUaHJvd24iLCAiZ2V0VG9rZW4iLCAidG9rZW4iLCAicmVqZWN0V2l0aCIsICJnZXRTdGF0dXNFbGVtZW50IiwgImdldEVycm9yQ29kZSIsICJnZXRFcnJvclRleHQiLCAiZ2V0WE1MIiwgImdldFJlc3BvbnNlIiwgImdldENhY2hlZEpzb24iLCAicHJvcCIsICJ0aXRsZXMiLCAicnZzbG90cyIsICJydnByb3AiLCAic21heGFnZSIsICJtYXhhZ2UiLCAiYXBpb2JqIiwgInVubGluayIsICJ3aWtpdGV4dCIsICJwYWdlcyIsICJyZXZpc2lvbnMiLCAic2xvdHMiLCAibWFpbiIsICJKU09OIiwgInBhcnNlIiwgInNldEFwaVVzZXJBZ2VudCIsICJ1YSIsICJ0b2tlbkFwaSIsICJtZXRhIiwgInRva2VucyIsICJjc3JmdG9rZW4iLCAicGFnZSIsICJjdHgiLCAicGFnZUV4aXN0cyIsICJlZGl0U3VtbWFyeSIsICJjaGFuZ2VUYWdzIiwgInRlc3RBY3Rpb25zIiwgImNhbGxiYWNrUGFyYW1ldGVycyIsICJwYWdlVGV4dCIsICJlZGl0TW9kZSIsICJhcHBlbmRUZXh0IiwgInByZXBlbmRUZXh0IiwgIm5ld1NlY3Rpb25UZXh0IiwgIm5ld1NlY3Rpb25UaXRsZSIsICJjcmVhdGVPcHRpb24iLCAibWlub3JFZGl0IiwgImJvdEVkaXQiLCAicGFnZVNlY3Rpb24iLCAibWF4Q29uZmxpY3RSZXRyaWVzIiwgIm1heFJldHJpZXMiLCAiZm9sbG93Q3Jvc3NOc1JlZGlyZWN0IiwgIndhdGNobGlzdE9wdGlvbiIsICJ3YXRjaGxpc3RFeHBpcnkiLCAiY3JlYXRvciIsICJ0aW1lc3RhbXAiLCAicmV2ZXJ0T2xkSUQiLCAibW92ZURlc3RpbmF0aW9uIiwgIm1vdmVUYWxrUGFnZSIsICJtb3ZlU3VicGFnZXMiLCAibW92ZVN1cHByZXNzUmVkaXJlY3QiLCAicHJvdGVjdEVkaXQiLCAicHJvdGVjdE1vdmUiLCAicHJvdGVjdENyZWF0ZSIsICJwcm90ZWN0Q2FzY2FkZSIsICJsb29rdXBOb25SZWRpcmVjdENyZWF0b3IiLCAicGFnZUxvYWRlZCIsICJjc3JmVG9rZW4iLCAibG9hZFRpbWUiLCAibGFzdEVkaXRUaW1lIiwgInBhZ2VJRCIsICJjb250ZW50TW9kZWwiLCAicmV2ZXJ0Q3VySUQiLCAicmV2ZXJ0VXNlciIsICJ3YXRjaGVkIiwgImZ1bGx5UHJvdGVjdGVkIiwgInN1cHByZXNzUHJvdGVjdFdhcm5pbmciLCAiY29uZmxpY3RSZXRyaWVzIiwgInJldHJpZXMiLCAib25Mb2FkU3VjY2VzcyIsICJvbkxvYWRGYWlsdXJlIiwgIm9uU2F2ZVN1Y2Nlc3MiLCAib25TYXZlRmFpbHVyZSIsICJvbkxvb2t1cENyZWF0aW9uU3VjY2VzcyIsICJvbkxvb2t1cENyZWF0aW9uRmFpbHVyZSIsICJvbk1vdmVTdWNjZXNzIiwgIm9uTW92ZUZhaWx1cmUiLCAib25EZWxldGVTdWNjZXNzIiwgIm9uRGVsZXRlRmFpbHVyZSIsICJvblVuZGVsZXRlU3VjY2VzcyIsICJvblVuZGVsZXRlRmFpbHVyZSIsICJvblByb3RlY3RTdWNjZXNzIiwgIm9uUHJvdGVjdEZhaWx1cmUiLCAibG9hZFF1ZXJ5IiwgImxvYWRBcGkiLCAic2F2ZUFwaSIsICJsb29rdXBDcmVhdGlvbkFwaSIsICJtb3ZlQXBpIiwgIm1vdmVQcm9jZXNzQXBpIiwgInBhdHJvbEFwaSIsICJwYXRyb2xQcm9jZXNzQXBpIiwgImRlbGV0ZUFwaSIsICJkZWxldGVQcm9jZXNzQXBpIiwgInVuZGVsZXRlQXBpIiwgInVuZGVsZXRlUHJvY2Vzc0FwaSIsICJwcm90ZWN0QXBpIiwgInByb3RlY3RQcm9jZXNzQXBpIiwgImVtcHR5RnVuY3Rpb24iLCAibG9hZCIsICJvbkZhaWx1cmUiLCAiaW5wcm9wIiwgImludGVzdGFjdGlvbnMiLCAiY3VydGltZXN0YW1wIiwgInJ2bGltaXQiLCAicnZzdGFydGlkIiwgInJlZGlyZWN0cyIsICJydnNlY3Rpb24iLCAiZm5Mb2FkU3VjY2VzcyIsICJzYXZlIiwgImNhblVzZU13VXNlclRva2VuIiwgImZuQ2FuVXNlTXdVc2VyVG9rZW4iLCAiY29uZmlybSIsICJzdW1tYXJ5IiwgInVzZXIiLCAid2F0Y2hsaXN0IiwgImZuQXBwbHlXYXRjaGxpc3RFeHBpcnkiLCAid2F0Y2hsaXN0ZXhwaXJ5IiwgInNlY3Rpb24iLCAibWlub3IiLCAibm90bWlub3IiLCAiYm90IiwgImFwcGVuZHRleHQiLCAicHJlcGVuZHRleHQiLCAic2VjdGlvbnRpdGxlIiwgInVuZG8iLCAidW5kb2FmdGVyIiwgImJhc2V0aW1lc3RhbXAiLCAic3RhcnR0aW1lc3RhbXAiLCAiZm5TYXZlU3VjY2VzcyIsICJmblNhdmVFcnJvciIsICJmbkF1dG9TYXZlIiwgInByZXBlbmQiLCAibmV3U2VjdGlvbiIsICJnZXRQYWdlTmFtZSIsICJnZXRQYWdlVGV4dCIsICJzZXRQYWdlVGV4dCIsICJzZXRBcHBlbmRUZXh0IiwgInNldFByZXBlbmRUZXh0IiwgInNldE5ld1NlY3Rpb25UZXh0IiwgInNldE5ld1NlY3Rpb25UaXRsZSIsICJzZXRFZGl0U3VtbWFyeSIsICJzZXRDaGFuZ2VUYWdzIiwgInNldENyZWF0ZU9wdGlvbiIsICJzZXRNaW5vckVkaXQiLCAic2V0Qm90RWRpdCIsICJzZXRQYWdlU2VjdGlvbiIsICJzZXRNYXhDb25mbGljdFJldHJpZXMiLCAic2V0TWF4UmV0cmllcyIsICJzZXRXYXRjaGxpc3QiLCAic2V0V2F0Y2hsaXN0RXhwaXJ5IiwgInNldFdhdGNobGlzdEZyb21QcmVmZXJlbmNlcyIsICJzZXRGb2xsb3dSZWRpcmVjdCIsICJzZXRMb29rdXBOb25SZWRpcmVjdENyZWF0b3IiLCAiZmxhZyIsICJzZXRNb3ZlRGVzdGluYXRpb24iLCAiZGVzdGluYXRpb24iLCAic2V0TW92ZVRhbGtQYWdlIiwgInNldE1vdmVTdWJwYWdlcyIsICJzZXRNb3ZlU3VwcHJlc3NSZWRpcmVjdCIsICJzZXRFZGl0UHJvdGVjdGlvbiIsICJzZXRNb3ZlUHJvdGVjdGlvbiIsICJzZXRDcmVhdGVQcm90ZWN0aW9uIiwgInNldENhc2NhZGluZ1Byb3RlY3Rpb24iLCAic2V0T2xkSUQiLCAib2xkSUQiLCAiZ2V0Q3VycmVudElEIiwgImdldFJldmlzaW9uVXNlciIsICJnZXRMYXN0RWRpdFRpbWUiLCAic2V0Q2FsbGJhY2tQYXJhbWV0ZXJzIiwgImdldENhbGxiYWNrUGFyYW1ldGVycyIsICJleGlzdHMiLCAiZ2V0UGFnZUlEIiwgImdldENvbnRlbnRNb2RlbCIsICJnZXRXYXRjaGVkIiwgImdldExvYWRUaW1lIiwgImdldENyZWF0b3IiLCAiZ2V0Q3JlYXRpb25UaW1lc3RhbXAiLCAiY2FuRWRpdCIsICJsb29rdXBDcmVhdGlvbiIsICJydmRpciIsICJmbkxvb2t1cENyZWF0aW9uU3VjY2VzcyIsICJyZXZlcnQiLCAibW92ZSIsICJmblByZWZsaWdodENoZWNrcyIsICJmblByb2Nlc3NNb3ZlIiwgImZuTmVlZFRva2VuSW5mb1F1ZXJ5IiwgInBhdHJvbCIsICIkYm9keSIsICJwYXRyb2xocmVmIiwgInJjaWQiLCAiZ2V0UGFyYW1WYWx1ZSIsICJmblByb2Nlc3NQYXRyb2wiLCAicGF0cm9sUXVlcnkiLCAicmNwcm9wIiwgInJjdGl0bGUiLCAicmNsaW1pdCIsICJkZWxldGVQYWdlIiwgImZuUHJvY2Vzc0RlbGV0ZSIsICJ1bmRlbGV0ZVBhZ2UiLCAiZm5Qcm9jZXNzVW5kZWxldGUiLCAicHJvdGVjdCIsICJmblByb2Nlc3NQcm90ZWN0IiwgImdldFByZWZpeGVkVGV4dCIsICJlZGl0UmVzdHJpY3Rpb24iLCAicGFnZW9iaiIsICJmbkNoZWNrUGFnZU5hbWUiLCAicmV2IiwgIm1pc3NpbmciLCAicGFnZWlkIiwgImNvbnRlbnRtb2RlbCIsICJlZGl0UHJvdCIsICJwcm90ZWN0aW9uIiwgInByIiwgInBvcCIsICJsYXN0cmV2aWQiLCAidGVzdGFjdGlvbnMiLCAiYWN0aW9ucyIsICJfaTYiLCAiX09iamVjdCRrZXlzIiwgInJldmlkIiwgInVzZXJoaWRkZW4iLCAiaW52YWxpZCIsICJyZXNvbHZlZE5hbWUiLCAib3JpZ05zIiwgIm5hbWVzcGFjZSIsICJuZXdOcyIsICJuZXdFeHBpcnkiLCAicmVsIiwgImVkaXQiLCAibGluayIsICJjYXB0Y2hhIiwgInB1cmdlUXVlcnkiLCAicHVyZ2VBcGkiLCAic2xlZXAiLCAiZXJyb3JEYXRhIiwgImFidXNlZmlsdGVyIiwgImRlc2NyaXB0aW9uIiwgInNwYW0iLCAic3BhbWJsYWNrbGlzdCIsICJtYXRjaGVzIiwgImlzVGV4dFJlZGlyZWN0IiwgInNvbWUiLCAidGFnIiwgImZuTG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yIiwgInJldnMiLCAiX2l0ZXJhdG9yOCIsICJfc3RlcDgiLCAiZm5Qcm9jZXNzQ2hlY2tzIiwgImFjdGlvbk1pc3NpbmciLCAicHJvdGVjdE1pc3NpbmciLCAic2FsdE1pc3NpbmciLCAiZWRpdHByb3QiLCAicGFnZVRpdGxlIiwgInRvIiwgIm1vdmV0YWxrIiwgIm1vdmVzdWJwYWdlcyIsICJub3JlZGlyZWN0IiwgInJlY2VudGNoYW5nZXMiLCAidW5wYXRyb2xsZWQiLCAicGF0cm9sU3RhdCIsICJmblByb2Nlc3NEZWxldGVFcnJvciIsICJmblByb2Nlc3NVbmRlbGV0ZUVycm9yIiwgInBycyIsICJtb3ZlcHJvdCIsICJjcmVhdGVwcm90IiwgIl9pdGVyYXRvcjkiLCAiX3N0ZXA5IiwgInNvdXJjZSIsICJjYXNjYWRlIiwgInByb3RlY3Rpb25zIiwgImV4cGlyeXMiLCAibWlsbGlzZWNvbmRzIiwgImRlZmVycmVkIiwgInJlc29sdmUiLCAicHJldmlldyIsICJwcmV2aWV3Ym94IiwgImFkZENsYXNzIiwgImhpZGUiLCAiYmVnaW5SZW5kZXIiLCAic2VjdGlvblRpdGxlIiwgInNob3ciLCAic3RhdHVzc3BhbiIsICJpbml0IiwgInBzdCIsICJkaXNhYmxlbGltaXRyZXBvcnQiLCAiZGlzYWJsZWVkaXRzZWN0aW9uIiwgInJlbmRlckFwaSIsICJmblJlbmRlclN1Y2Nlc3MiLCAiaW5uZXJIVE1MIiwgImxvYWRlciIsICJtb2R1bGVzdHlsZXMiLCAibW9kdWxlcyIsICJjbG9zZVByZXZpZXciLCAiZW1wdHkiLCAicGFyc2VUZW1wbGF0ZSIsICJjb3VudCIsICJ1bm5hbWVkIiwgImVxdWFscyIsICJwYXJhbWV0ZXJzIiwgImtleSIsICJmaW5kUGFyYW0iLCAiZmluYWwiLCAidGVzdDMiLCAidGVzdDIiLCAiY2hhckF0IiwgInJlbW92ZUxpbmsiLCAibGlua1RhcmdldCIsICJtd1RpdGxlIiwgIm5ld0Zyb21UZXh0IiwgIm5hbWVzcGFjZUlEIiwgImdldE5hbWVzcGFjZUlkIiwgImdldE1haW5UZXh0IiwgImxpbmtSZWdleFN0cmluZyIsICJpc0ZpbGVPckNhdGVnb3J5IiwgImNvbG9uIiwgInNpbXBsZUxpbmtSZWdleCIsICJwaXBlZExpbmtSZWdleCIsICJjb21tZW50T3V0SW1hZ2UiLCAiaW1hZ2UiLCAiaW1hZ2VSZWdleFN0cmluZyIsICJsaW5rc1JlZ2V4IiwgImFsbExpbmtzIiwgIl9pdGVyYXRvcjEwIiwgIl9zdGVwMTAiLCAiYWxsTGluayIsICJnYWxsZXJ5SW1hZ2VSZWdleCIsICJmcmVlSW1hZ2VSZWdleCIsICJhZGRUb0ltYWdlQ29tbWVudCIsICJfaXRlcmF0b3IxMSIsICJfc3RlcDExIiwgImdhbGxlcnlSZWdleCIsICJuZXd0ZXh0IiwgInJlbW92ZVRlbXBsYXRlIiwgInRlbXBsYXRlIiwgInRlbXBsYXRlUmVnZXhTdHJpbmciLCAiYWxsVGVtcGxhdGVzIiwgIl9pdGVyYXRvcjEyIiwgIl9zdGVwMTIiLCAiYWxsVGVtcGxhdGUiLCAiaW5zZXJ0QWZ0ZXJUZW1wbGF0ZXMiLCAiZmxhZ3MiLCAicHJlUmVnZXgiLCAiZ2V0VGV4dCIsICJ1c2Vyc3BhY2VMb2dnZXIiLCAibG9nUGFnZU5hbWUiLCAiaW5pdGlhbFRleHQiLCAiaGVhZGVyTGV2ZWwiLCAibG9nVGV4dCIsICJzdW1tYXJ5VGV4dCIsICJkZWYiLCAicmVqZWN0IiwgInN0YXQiLCAidGV4dFJhdyIsICJnZW5lcmF0ZSIsICJ1cGRhdGUiLCAiRWxlbWVudCIsICJoYXNDaGlsZE5vZGVzIiwgImVycm9yRXZlbnQiLCAiaGFuZGxlciIsICJzdGF0UmF3IiwgImxpbmtlZCIsICJwcmludFVzZXJUZXh0IiwgImNvbW1lbnRzIiwgIm1lc3NhZ2UiLCAicCIsICJkaXYiLCAibWFyZ2luVG9wIiwgIndoaXRlU3BhY2UiLCAiaHRtbE5vZGUiLCAiY29sb3IiLCAialF1ZXJ5U2VsZWN0b3IiLCAialF1ZXJ5Q29udGV4dCIsICJsYXN0Q2hlY2tib3giLCAiY2xpY2tIYW5kbGVyIiwgImNsaWNrSGFuZGxlcjIiLCAidGhpc0NiIiwgInNoaWZ0S2V5IiwgImNicyIsICJpbmRleCIsICJsYXN0SW5kZXgiLCAiZW5kU3RhdGUiLCAiZmluaXNoIiwgImNsaWNrIiwgIm9uIiwgImJhdGNoT3BlcmF0aW9uIiwgInBhZ2VMaXN0IiwgImNodW5rU2l6ZSIsICJwcmVzZXJ2ZUluZGl2aWR1YWxTdGF0dXNMaW5lcyIsICJ3b3JrZXIiLCAicG9zdEZpbmlzaCIsICJjb3VudFN0YXJ0ZWQiLCAiY291bnRGaW5pc2hlZCIsICJjb3VudEZpbmlzaGVkU3VjY2VzcyIsICJjdXJyZW50Q2h1bmtJbmRleCIsICJwYWdlQ2h1bmtzIiwgInJ1bm5pbmciLCAic2V0UGFnZUxpc3QiLCAic2V0T3B0aW9uIiwgIm9wdGlvbk5hbWUiLCAib3B0aW9uVmFsdWUiLCAicnVuIiwgInRvdGFsIiwgImZuU3RhcnROZXdDaHVuayIsICJ3b3JrZXJTdWNjZXNzIiwgImFyZyIsICJmbkRvbmVPbmUiLCAid29ya2VyRmFpbHVyZSIsICJ0aGlzUHJveHkiLCAiX2l0ZXJhdG9yMTMiLCAiX3N0ZXAxMyIsICJwcm9ncmVzcyIsICJyb3VuZCIsICJmbG9vciIsICJzdGF0dXNTdHJpbmciLCAic2ltcGxlV2luZG93IiwgIndpZHRoIiwgImhlaWdodCIsICJkaWFsb2ciLCAiYXV0b09wZW4iLCAiYnV0dG9ucyIsICJQbGFjZWhvbGRlciBidXR0b24iLCAiZGlhbG9nQ2xhc3MiLCAiaW5uZXJXaWR0aCIsICJjbG9zZSIsICJyZXNpemVTdGFydCIsICJzY3JvbGxib3giLCAibWF4SGVpZ2h0IiwgInJlc2l6ZVN0b3AiLCAicmVzaXplIiwgIiR3aWRnZXQiLCAiZWFjaCIsICJidXR0b25zcGFuIiwgImxpbmtzc3BhbiIsICJyZXNpemFibGUiLCAiaGFzRm9vdGVyTGlua3MiLCAic2NyaXB0TmFtZSIsICJwcmV2ZW50RGVmYXVsdCIsICJkaXNwbGF5IiwgInNjcmlwdG5hbWVzcGFuIiwgInNldHVwVG9vbHRpcHMiLCAicGciLCAiZGlmZiIsICJyYW5TZXR1cFRvb2x0aXBzQWxyZWFkeSIsICJzZXRIZWlnaHQiLCAic2V0VGl0bGUiLCAic2V0U2NyaXB0TmFtZSIsICJzZXRXaWR0aCIsICJnZXRDb21wdXRlZFN0eWxlIiwgImlubmVySGVpZ2h0IiwgInNldENvbnRlbnQiLCAicHVyZ2VDb250ZW50IiwgImFkZENvbnRlbnQiLCAiYnV0dG9uIiwgImFkZEZvb3RlckxpbmsiLCAid2lraVBhZ2UiLCAicHJlcCIsICIkZm9vdGVybGlua3MiLCAiYnVsbGV0IiwgInNldE1vZGFsaXR5IiwgIm1vZGFsIiwgInNldEJ1dHRvbnNFbmFibGVkIiwgImVuYWJsZWQiLCAialF1ZXJ5Il0KfQo= +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21vcmViaXRzL21vcmViaXRzLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtbm9jaGVja1xuLyohIFR3aW5rbGUuanMgLSBtb3JlYml0cy5qcyAqL1xuXG4vKipcbiAqIEEgbGlicmFyeSBmdWxsIG9mIGxvdHMgb2YgZ29vZG5lc3MgZm9yIHVzZXIgc2NyaXB0cyBvbiBNZWRpYVdpa2kgd2lraXMuXG4gKlxuICogVGhlIGhpZ2hsaWdodHMgaW5jbHVkZTpcbiAqIC0ge0BsaW5rIE1vcmViaXRzLndpa2kuYXBpfSAtIG1ha2UgY2FsbHMgdG8gdGhlIE1lZGlhV2lraSBBUElcbiAqIC0ge0BsaW5rIE1vcmViaXRzLndpa2kucGFnZX0gLSBtb2RpZnkgcGFnZXMgb24gdGhlIHdpa2kgKGVkaXQsIHJldmVydCwgZGVsZXRlLCBldGMuKVxuICogLSB7QGxpbmsgTW9yZWJpdHMuZGF0ZX0gLSBlbmhhbmNlZCBkYXRlIG9iamVjdCBwcm9jZXNzaW5nLCBzb3J0IG9mIGEgbGlnaHQgbW9tZW50LmpzXG4gKiAtIHtAbGluayBNb3JlYml0cy5xdWlja0Zvcm19IC0gZ2VuZXJhdGUgcXVpY2sgSFRNTCBmb3JtcyBvbiB0aGUgZmx5XG4gKiAtIHtAbGluayBNb3JlYml0cy5zaW1wbGVXaW5kb3d9IC0gYSB3cmFwcGVyIGZvciBqUXVlcnkgVUkgRGlhbG9nIHdpdGggYSBjdXN0b20gbG9vayBhbmQgZXh0cmEgZmVhdHVyZXNcbiAqIC0ge0BsaW5rIE1vcmViaXRzLnN0YXR1c30gLSBhIHJvdWdoLWFuZC1yZWFkeSBzdGF0dXMgbWVzc2FnZSBkaXNwbGF5ZXIsIHVzZWQgYnkgdGhlIE1vcmViaXRzLndpa2kgY2xhc3Nlc1xuICogLSB7QGxpbmsgTW9yZWJpdHMud2lraXRleHR9IC0gdXRpbGl0aWVzIGZvciBkZWFsaW5nIHdpdGggd2lraXRleHRcbiAqIC0ge0BsaW5rIE1vcmViaXRzLnN0cmluZ30gLSB1dGlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyBzdHJpbmdzXG4gKiAtIHtAbGluayBNb3JlYml0cy5hcnJheX0gLSB1dGlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyBhcnJheXNcbiAqIC0ge0BsaW5rIE1vcmViaXRzLmlwfSAtIHV0aWxpdGllcyB0byBoZWxwIHByb2Nlc3MgSVAgYWRkcmVzc2VzXG4gKlxuICogRGVwZW5kZW5jaWVzOlxuICogLSBUaGUgd2hvbGUgdGhpbmcgcmVsaWVzIG9uIGpRdWVyeS4gIEJ1dCBtb3N0IHdpa2lzIHNob3VsZCBwcm92aWRlIHRoaXMgYnkgZGVmYXVsdC5cbiAqIC0ge0BsaW5rIE1vcmViaXRzLnF1aWNrRm9ybX0sIHtAbGluayBNb3JlYml0cy5zaW1wbGVXaW5kb3d9LCBhbmQge0BsaW5rIE1vcmViaXRzLnN0YXR1c30gcmVseSBvbiB0aGUgXCJtb3JlYml0cy5jc3NcIiBmaWxlIGZvciB0aGVpciBzdHlsaW5nLlxuICogLSB7QGxpbmsgTW9yZWJpdHMuc2ltcGxlV2luZG93fSBhbmQge0BsaW5rIE1vcmViaXRzLnF1aWNrRm9ybX0gdG9vbHRpcHMgcmVseSBvbiBqUXVlcnkgVUkgRGlhbG9nIChmcm9tIFJlc291cmNlTG9hZGVyIG1vZHVsZSBuYW1lICdqcXVlcnkudWknKS5cbiAqIC0gVG8gY3JlYXRlIGEgZ2FkZ2V0IGJhc2VkIG9uIG1vcmViaXRzLmpzLCB1c2UgdGhpcyBzeW50YXggaW4gTWVkaWFXaWtpOkdhZGdldHMtZGVmaW5pdGlvbjpcbiAqICAgICAtIGAqR2FkZ2V0TmFtZVtSZXNvdXJjZUxvYWRlcnxkZXBlbmRlbmNpZXM9bWVkaWF3aWtpLnVzZXIsbWVkaWF3aWtpLnV0aWwsbWVkaWF3aWtpLlRpdGxlLGpxdWVyeS51aV18bW9yZWJpdHMuanN8bW9yZWJpdHMuY3NzfEdhZGdldE5hbWUuanNgXG4gKiAtIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29uZmlndXJlIG1vcmViaXRzLmpzIGFzIGEgaGlkZGVuIGdhZGdldCBpbiBNZWRpYVdpa2k6R2FkZ2V0cy1kZWZpbml0aW9uOlxuICogICAgIC0gYCptb3JlYml0c1tSZXNvdXJjZUxvYWRlcnxkZXBlbmRlbmNpZXM9bWVkaWF3aWtpLnVzZXIsbWVkaWF3aWtpLnV0aWwsbWVkaWF3aWtpLlRpdGxlLGpxdWVyeS51aXxoaWRkZW5dfG1vcmViaXRzLmpzfG1vcmViaXRzLmNzc2BcbiAqICAgICBhbmQgdGhlbiBsb2FkIGV4dC5nYWRnZXQubW9yZWJpdHMgYXMgb25lIG9mIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgZ2FkZ2V0LlxuICpcbiAqIEFsbCB0aGUgc3R1ZmYgaGVyZSB3b3JrcyBvbiBhbGwgYnJvd3NlcnMgZm9yIHdoaWNoIE1lZGlhV2lraSBwcm92aWRlcyBKYXZhU2NyaXB0IHN1cHBvcnQuXG4gKlxuICogVGhpcyBsaWJyYXJ5IGlzIG1haW50YWluZWQgYnkgdGhlIG1haW50YWluZXJzIG9mIFR3aW5rbGUuXG4gKiBGb3IgcXVlcmllcywgc3VnZ2VzdGlvbnMsIGhlbHAsIGV0Yy4sIGhlYWQgdG8gW0hlbHA6VHdpbmtsZV0oaHR0cHM6Ly93d3cucWl1d2VuYmFpa2UuY24vd2lraS9IOlRXKS5cbiAqIFRoZSBsYXRlc3QgZGV2ZWxvcG1lbnQgc291cmNlIGlzIGF2YWlsYWJsZSBhdCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3dpa2ltZWRpYS1nYWRnZXRzL3R3aW5rbGUvYmxvYi9tYXN0ZXIvbW9yZWJpdHMuanN8R2l0SHVifS5cbiAqXG4gKiBAcGFyYW0ge0pRdWVyeX0gJFxuICogQG5hbWVzcGFjZSBNb3JlYml0c1xuICovXG5pbXBvcnQgJy4vbW9yZWJpdHMubGVzcyc7XG5pbXBvcnQge2dlbmVyYXRlQXJyYXl9IGZyb20gJ2V4dC5nYWRnZXQuVXRpbCc7XG5cbihmdW5jdGlvbiBtb3JlYml0cygkKSB7XG5cdC8vIFdyYXAgZW50aXJlIGZpbGUgd2l0aCBhbm9ueW1vdXMgZnVuY3Rpb25cblx0LyoqIEBsZW5kcyBNb3JlYml0cyAqL1xuXHRjb25zdCBNb3JlYml0cyA9IHt9O1xuXHR3aW5kb3cuTW9yZWJpdHMgPSBNb3JlYml0czsgLy8gYWxsb3cgZ2xvYmFsIGFjY2Vzc1xuXHQvLyBObyBNb3JlYml0cy5pMThuIGF0IHRoaXMgdGltZVxuXHQvKipcblx0ICogV2lraS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgTW9yZWJpdHNcblx0ICovXG5cdE1vcmViaXRzLmwxMG4gPSB7XG5cdFx0LyoqXG5cdFx0ICogTG9jYWwgYWxpYXNlcyBmb3IgXCJyZWRpcmVjdFwiIG1hZ2ljIHdvcmQuXG5cdFx0ICogQ2hlY2sgdXNpbmcgYXBpLnBocD9hY3Rpb249cXVlcnkmZm9ybWF0PWpzb24mbWV0YT1zaXRlaW5mbyZmb3JtYXR2ZXJzaW9uPTImc2lwcm9wPW1hZ2ljd29yZHNcblx0XHQgKi9cblx0XHRyZWRpcmVjdFRhZ0FsaWFzZXM6IFsnI1JFRElSRUNUJywgJyPph43lrprlkJEnXSxcblx0XHQvKipcblx0XHQgKiBUYWtlcyBhIHN0cmluZyBhcyBhcmd1bWVudCBhbmQgY2hlY2tzIGlmIGl0IGlzIGEgdGltZXN0YW1wIG9yIG5vdFxuXHRcdCAqIElmIG5vdCwgaXQgcmV0dXJucyBudWxsLiBJZiB5ZXMsIGl0IHJldHVybnMgYW4gYXJyYXkgb2YgaW50ZWdlcnNcblx0XHQgKiBpbiB0aGUgZm9ybWF0IFt5ZWFyLCBtb250aCwgZGF0ZSwgaG91ciwgbWludXRlLCBzZWNvbmRdXG5cdFx0ICogd2hpY2ggY2FuIGJlIHBhc3NlZCB0byBEYXRlLlVUQygpXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG5cdFx0ICogQHJldHVybnMge251bWJlcltdIHwgbnVsbH1cblx0XHQgKi9cblx0XHRzaWduYXR1cmVUaW1lc3RhbXBGb3JtYXQ6IChzdHIpID0+IHtcblx0XHRcdGNvbnN0IHJneFVUQyA9IC8oXFxkezR9KeW5tChcXGR7MSwyfSnmnIgoXFxkezEsMn0p5pelIFxcKC5cXCkgKFxcZHsyfSk6KFxcZHsyfSkgXFwoVVRDXFwpLzsgLy8gWVlZWeW5tE1vbnRo5pyIRETml6UgKHcpIEhIOm1tIChVVEMpXG5cdFx0XHRjb25zdCByZ3hDU1QgPSAvKFxcZHs0fSnlubQoXFxkezEsMn0p5pyIKFxcZHsxLDJ9KeaXpSBcXCguXFwpIChcXGR7Mn0pOihcXGR7Mn0pIFxcKENTVFxcKS87IC8vIFlZWVnlubRNb250aOaciERE5pelICh3KSBISDptbSAoQ1NUKVxuXHRcdFx0Y29uc3QgbWF0Y2ggPSByZ3hVVEMuZXhlYyhzdHIpIHx8IHJneENTVC5leGVjKHN0cik7XG5cdFx0XHRjb25zdCBtYXRjaENTVCA9IHJneENTVC5leGVjKHN0cik7XG5cdFx0XHRpZiAoIW1hdGNoKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbW9udGggPSBNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEubW9udGhzLmluZGV4T2YobWF0Y2hbNF0pO1xuXHRcdFx0aWYgKG1vbnRoID09PSAtMSkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHRcdC8vIC4uLi4uIHllYXIgLi4uLiBtb250aCAuLi4gZGF0ZSAuLi4uIGhvdXIgLi4uIG1pbnV0ZVxuXHRcdFx0cmV0dXJuIG1hdGNoQ1NUXG5cdFx0XHRcdD8gW21hdGNoWzFdLCBtYXRjaFsyXSAtIDEsIG1hdGNoWzNdLCBtYXRjaFs0XSAtIDgsIG1hdGNoWzVdXVxuXHRcdFx0XHQ6IFttYXRjaFsxXSwgbWF0Y2hbMl0gLSAxLCBtYXRjaFszXSwgbWF0Y2hbNF0sIG1hdGNoWzVdXTtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogU2ltcGxlIGhlbHBlciBmdW5jdGlvbiB0byBzZWUgd2hhdCBncm91cHMgYSB1c2VyIG1pZ2h0IGJlbG9uZy5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwIC0gZS5nLiBgc3lzb3BgLCBgYXV0b2NvbmZpcm1lZGAsIGV0Yy5cblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRNb3JlYml0cy51c2VySXNJbkdyb3VwID0gKGdyb3VwKSA9PiB7XG5cdFx0cmV0dXJuIG13LmNvbmZpZy5nZXQoJ3dnVXNlckdyb3VwcycpLmluY2x1ZGVzKGdyb3VwKSB8fCBtdy5jb25maWcuZ2V0KCd3Z0dsb2JhbEdyb3VwcycpLmluY2x1ZGVzKGdyb3VwKTtcblx0fTtcblx0LyoqXG5cdCAqIEhhcmRjb2RlcyB3aGV0aGVyIHRoZSB1c2VyIGlzIGEgc3lzb3AsIHVzZWQgYSBsb3QuXG5cdCAqXG5cdCAqIEB0eXBlIHtib29sZWFufVxuXHQgKi9cblx0TW9yZWJpdHMudXNlcklzU3lzb3AgPVxuXHRcdE1vcmViaXRzLnVzZXJJc0luR3JvdXAoJ3N5c29wJykgfHwgTW9yZWJpdHMudXNlcklzSW5Hcm91cCgnc3Rld2FyZCcpIHx8IE1vcmViaXRzLnVzZXJJc0luR3JvdXAoJ3FpdXdlbicpO1xuXHQvKipcblx0ICogRGVwcmVjYXRlZCBhcyBvZiBGZWJydWFyeSAyMDIxLCB1c2Uge0BsaW5rIE1vcmViaXRzLmlwLnNhbml0aXplSVB2Nn0uXG5cdCAqXG5cdCAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgTW9yZWJpdHMuaXAuc2FuaXRpemVJUHY2fS5cblx0ICogQ29udmVydHMgYW4gSVB2NiBhZGRyZXNzIHRvIHRoZSBjYW5vbmljYWwgZm9ybSBzdG9yZWQgYW5kIHVzZWQgYnkgTWVkaWFXaWtpLlxuXHQgKiBKYXZhU2NyaXB0IHRyYW5zbGF0aW9uIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9nZXJyaXQud2lraW1lZGlhLm9yZy9yL3BsdWdpbnMvZ2l0aWxlcy9tZWRpYXdpa2kvY29yZS8rLzhlYjZhYzNlODRlYTMzMTJkMzkxY2E5NmMxMmM0OWUzYWQwNzUzYmIvaW5jbHVkZXMvdXRpbHMvSVAucGhwIzEzMXxgSVA6OnNhbml0aXplSVAoKWB9XG5cdCAqIGZ1bmN0aW9uIGZyb20gdGhlIElQVXRpbHMgbGlicmFyeS4gIEFkZHJlc3NlcyBhcmUgdmVyYm9zZSwgdXBwZXJjYXNlLFxuXHQgKiBub3JtYWxpemVkLCBhbmQgZXhwYW5kZWQgdG8gOCB3b3Jkcy5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgSVB2NiBhZGRyZXNzLCB3aXRoIG9yIHdpdGhvdXQgQ0lEUi5cblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdE1vcmViaXRzLnNhbml0aXplSVB2NiA9IChhZGRyZXNzKSA9PiB7XG5cdFx0Y29uc29sZS53YXJuKFxuXHRcdFx0J1tNb3JlYml0c10gTk9URTogTW9yZWJpdHMuc2FuaXRpemVJUHY2IHdhcyByZW5hbWVkIHRvIE1vcmViaXRzLmlwLnNhbml0aXplSVB2NiBpbiBGZWJydWFyeSAyMDIxLCBwbGVhc2UgdXNlIHRoYXQgaW5zdGVhZCdcblx0XHQpO1xuXHRcdHJldHVybiBNb3JlYml0cy5pcC5zYW5pdGl6ZUlQdjYoYWRkcmVzcyk7XG5cdH07XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgcGFnZSBpcyBhIHJlZGlyZWN0IG9yIHNvZnQgcmVkaXJlY3QuIEZhaWxzXG5cdCAqIHRvIGRldGVjdCBzb2Z0IHJlZGlyZWN0cyBvbiBlZGl0LCBoaXN0b3J5LCBldGMuIHBhZ2VzLiAgV2lsbCBhdHRlbXB0IHRvXG5cdCAqIGRldGVjdCBNb2R1bGU6UmZELCB3aXRoIHRoZSBzYW1lIGZhaWx1cmUgcG9pbnRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdE1vcmViaXRzLmlzUGFnZVJlZGlyZWN0ID0gKCkgPT4ge1xuXHRcdHJldHVybiAhIShcblx0XHRcdG13LmNvbmZpZy5nZXQoJ3dnSXNSZWRpcmVjdCcpIHx8XG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc29mdHJlZGlyZWN0JykgfHxcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ib3gtUmZEJykgfHxcblx0XHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ib3gtUmVkaXJlY3RfY2F0ZWdvcnlfc2hlbGwnKVxuXHRcdCk7XG5cdH07XG5cdC8qKlxuXHQgKiBTdG9yZXMgYSBub3JtYWxpemVkICh1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8gc3BhY2VzKSB2ZXJzaW9uIG9mIHRoZVxuXHQgKiBgd2dQYWdlTmFtZWAgdmFyaWFibGUuXG5cdCAqXG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqL1xuXHRNb3JlYml0cy5wYWdlTmFtZU5vcm0gPSBtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJykucmVwbGFjZSgvXy9nLCAnICcpO1xuXHQvKipcblx0ICogQ3JlYXRlIGEgc3RyaW5nIGZvciB1c2UgaW4gcmVnZXggbWF0Y2hpbmcgYSBwYWdlIG5hbWUuICBBY2NvdW50cyBmb3Jcblx0ICogbGVhZGluZyBjaGFyYWN0ZXIncyBjYXBpdGFsaXphdGlvbiwgdW5kZXJzY29yZXMgYXMgc3BhY2VzLCBhbmQgc3BlY2lhbFxuXHQgKiBjaGFyYWN0ZXJzIGJlaW5nIGVzY2FwZWQuICBTZWUgYWxzbyB7QGxpbmsgTW9yZWJpdHMubmFtZXNwYWNlUmVnZXh9LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGFnZU5hbWUgLSBQYWdlIG5hbWUgd2l0aG91dCBuYW1lc3BhY2UuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRm9yIGEgcGFnZSBuYW1lIGBGb28gYmFyYCwgcmV0dXJucyB0aGUgc3RyaW5nIGBbRmZdb29bXyBdYmFyYC5cblx0ICovXG5cdE1vcmViaXRzLnBhZ2VOYW1lUmVnZXggPSAocGFnZU5hbWUpID0+IHtcblx0XHRpZiAocGFnZU5hbWUgPT09ICcnKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXHRcdGNvbnN0IFtmaXJzdENoYXJdID0gcGFnZU5hbWU7XG5cdFx0Y29uc3QgcmVtYWluZGVyID0gTW9yZWJpdHMuc3RyaW5nLmVzY2FwZVJlZ0V4cChwYWdlTmFtZS5zbGljZSgxKSk7XG5cdFx0aWYgKG13LlRpdGxlLnBocENoYXJUb1VwcGVyKGZpcnN0Q2hhcikgIT09IGZpcnN0Q2hhci50b0xvd2VyQ2FzZSgpKSB7XG5cdFx0XHRyZXR1cm4gYFske213LlRpdGxlLnBocENoYXJUb1VwcGVyKGZpcnN0Q2hhcil9JHtmaXJzdENoYXIudG9Mb3dlckNhc2UoKX1dJHtyZW1haW5kZXJ9YDtcblx0XHR9XG5cdFx0cmV0dXJuIE1vcmViaXRzLnN0cmluZy5lc2NhcGVSZWdFeHAoZmlyc3RDaGFyKSArIHJlbWFpbmRlcjtcblx0fTtcblx0LyoqXG5cdCAqIENvbnZlcnRzIHN0cmluZyBvciBhcnJheSBvZiBET00gbm9kZXMgaW50byBhbiBIVE1MIGZyYWdtZW50LlxuXHQgKiBXaWtpbGluayBzeW50YXggKGBbWy4uLl1dYCkgaXMgdHJhbnNmb3JtZWQgaW50byBIVE1MIGFuY2hvci5cblx0ICogVXNlZCBpbiBNb3JlYml0cy5xdWlja0Zvcm0gYW5kIE1vcmViaXRzLnN0YXR1c1xuXHQgKlxuXHQgKiBAaW50ZXJuYWxcblx0ICogQHBhcmFtIHtzdHJpbmd8Tm9kZXwoc3RyaW5nfE5vZGUpW119IGlucHV0XG5cdCAqIEByZXR1cm5zIHtEb2N1bWVudEZyYWdtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMuY3JlYXRlSHRtbCA9IChpbnB1dCkgPT4ge1xuXHRcdGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXHRcdGlmICghaW5wdXQpIHtcblx0XHRcdHJldHVybiBmcmFnbWVudDtcblx0XHR9XG5cdFx0aW5wdXQgPSBnZW5lcmF0ZUFycmF5KGlucHV0KTtcblx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgaW5wdXQpIHtcblx0XHRcdGlmIChlbGVtZW50IGluc3RhbmNlb2YgTm9kZSkge1xuXHRcdFx0XHRmcmFnbWVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgbm9kZSBvZiAkLnBhcnNlSFRNTChNb3JlYml0cy5jcmVhdGVIdG1sLnJlbmRlcldpa2lsaW5rcyhlbGVtZW50KSkpIHtcblx0XHRcdFx0XHRmcmFnbWVudC5hcHBlbmRDaGlsZChub2RlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZnJhZ21lbnQ7XG5cdH07XG5cdC8qKlxuXHQgKiBDb252ZXJ0cyB3aWtpbGlua3MgdG8gSFRNTCBhbmNob3IgdGFncy5cblx0ICpcblx0ICogQHBhcmFtIHRleHRcblx0ICogQHJldHVybnMgeyp9XG5cdCAqL1xuXHRNb3JlYml0cy5jcmVhdGVIdG1sLnJlbmRlcldpa2lsaW5rcyA9ICh0ZXh0KSA9PiB7XG5cdFx0Y29uc3QgdWIgPSBuZXcgTW9yZWJpdHMudW5iaW5kZXIodGV4dCk7XG5cdFx0Ly8gRG9uJ3QgY29udmVydCB3aWtpbGlua3Mgd2l0aGluIGNvZGUgdGFncyBhcyB0aGV5J3JlIHVzZWQgZm9yIGRpc3BsYXlpbmcgd2lraS1jb2RlXG5cdFx0dWIudW5iaW5kKCc8Y29kZT4nLCAnPC9jb2RlPicpO1xuXHRcdHViLmNvbnRlbnQgPSB1Yi5jb250ZW50LnJlcGxhY2UoL1xcW1xcWzo/KD86KFtefFxcXV0rPylcXHwpPyhbXlxcXXxdKz8pXFxdXFxdL2csIChfLCB0YXJnZXQsIHRleHRfKSA9PiB7XG5cdFx0XHR0YXJnZXQgfHw9IHRleHRfO1xuXHRcdFx0cmV0dXJuIGA8YSByZWw9XCJub29wZW5lclwiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCIke213LnV0aWwuZ2V0VXJsKHRhcmdldCl9XCIgdGl0bGU9XCIke3RhcmdldC5yZXBsYWNlKFxuXHRcdFx0XHQvXCIvZyxcblx0XHRcdFx0JyYjMzQ7J1xuXHRcdFx0KX1cIj4ke3RleHRffTwvYT5gO1xuXHRcdH0pO1xuXHRcdHJldHVybiB1Yi5yZWJpbmQoKTtcblx0fTtcblx0LyoqXG5cdCAqIENyZWF0ZSBhIHN0cmluZyBmb3IgdXNlIGluIHJlZ2V4IG1hdGNoaW5nIGFsbCBuYW1lc3BhY2UgYWxpYXNlcywgcmVnYXJkbGVzc1xuXHQgKiBvZiB0aGUgY2FwaXRhbGl6YXRpb24gYW5kIHVuZGVyc2NvcmVzL3NwYWNlcy4gIERvZXNuJ3QgaW5jbHVkZSB0aGUgb3B0aW9uYWxcblx0ICogbGVhZGluZyBgOmAsIGJ1dCBpZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgaXRlbSwgd3JhcHMgdGhlIGxpc3QgaW4gYVxuXHQgKiBub24tY2FwdHVyaW5nIGdyb3VwLiAgVGhpcyBtZWFucyB5b3UgY2FuIGRvIGBNb3JlYml0cy5uYW1lc3BhY2VSZWdleChbNF0pICtcblx0ICogJzonICsgTW9yZWJpdHMucGFnZU5hbWVSZWdleCgnVHdpbmtsZScpYCB0byBtYXRjaCBhIGZ1bGwgcGFnZS4gIFVzZXNcblx0ICoge0BsaW5rIE1vcmViaXRzLnBhZ2VOYW1lUmVnZXh9LlxuXHQgKlxuXHQgKiBAcGFyYW0ge251bWJlcltdfSBuYW1lc3BhY2VzIC0gQXJyYXkgb2YgbmFtZXNwYWNlIG51bWJlcnMuICBVbnVzZWQvaW52YWxpZFxuXHQgKiBuYW1lc3BhY2UgbnVtYmVycyBhcmUgc2lsZW50bHkgZGlzY2FyZGVkLlxuXHQgKiBAZXhhbXBsZVxuXHQgKiAvLyByZXR1cm5zICcoPzpbRmZdW0lpXVtMbF1bRWVdfFtJaV1bTW1dW0FhXVtHZ11bRWVdKSdcblx0ICogTW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoWzZdKVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJlZ2V4LXN1aXRhYmxlIHN0cmluZyBvZiBhbGwgbmFtZXNwYWNlIGFsaWFzZXMuXG5cdCAqL1xuXHRNb3JlYml0cy5uYW1lc3BhY2VSZWdleCA9IChuYW1lc3BhY2VzKSA9PiB7XG5cdFx0bmFtZXNwYWNlcyA9IGdlbmVyYXRlQXJyYXkobmFtZXNwYWNlcyk7XG5cdFx0Y29uc3QgYWxpYXNlcyA9IFtdO1xuXHRcdGxldCByZWdleDtcblx0XHRmb3IgKGNvbnN0IFtuYW1lLCBudW1iZXJdIG9mIE9iamVjdC5lbnRyaWVzKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlSWRzJykpKSB7XG5cdFx0XHRpZiAobmFtZXNwYWNlcy5pbmNsdWRlcyhudW1iZXIpKSB7XG5cdFx0XHRcdC8vIE5hbWVzcGFjZXMgYXJlIGNvbXBsZXRlbHkgYWdub3N0aWMgYXMgdG8gY2FzZSxcblx0XHRcdFx0Ly8gYW5kIGEgcmVnZXggc3RyaW5nIGlzIG1vcmUgdXNlZnVsL2NvbXBhdGlibGUgdGhhbiBhIFJlZ0V4cCBvYmplY3QsXG5cdFx0XHRcdC8vIHNvIHdlIGFjY2VwdCBhbnkgY2FzaW5nIGZvciBhbnkgbGV0dGVyLlxuXHRcdFx0XHRhbGlhc2VzW2FsaWFzZXMubGVuZ3RoXSA9IFsuLi5uYW1lXVxuXHRcdFx0XHRcdC5tYXAoKGNoYXIpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBNb3JlYml0cy5wYWdlTmFtZVJlZ2V4KGNoYXIpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oJycpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRzd2l0Y2ggKGFsaWFzZXMubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDA6XG5cdFx0XHRcdHJlZ2V4ID0gJyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRbcmVnZXhdID0gYWxpYXNlcztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZWdleCA9IGAoPzoke2FsaWFzZXMuam9pbignfCcpfSlgO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHJlZ2V4O1xuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLnF1aWNrRm9ybSAqKioqKioqKioqKioqKioqICovXG5cdC8qKlxuXHQgKiBDcmVhdGlvbiBvZiBzaW1wbGUgYW5kIHN0YW5kYXJkIGZvcm1zIHdpdGhvdXQgbXVjaCBzcGVjaWZpYyBjb2RpbmcuXG5cdCAqXG5cdCAqIEBuYW1lc3BhY2UgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtldmVudH0gZXZlbnQgLSBGdW5jdGlvbiB0byBleGVjdXRlIHdoZW4gZm9ybSBpcyBzdWJtaXR0ZWQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbZXZlbnRUeXBlPXN1Ym1pdF0gLSBUeXBlIG9mIHRoZSBldmVudC5cblx0ICovXG5cdE1vcmViaXRzLnF1aWNrRm9ybSA9IGZ1bmN0aW9uIChldmVudCwgZXZlbnRUeXBlKSB7XG5cdFx0dGhpcy5yb290ID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0XHRcdHR5cGU6ICdmb3JtJyxcblx0XHRcdGV2ZW50LFxuXHRcdFx0ZXZlbnRUeXBlLFxuXHRcdH0pO1xuXHR9O1xuXHQvKipcblx0ICogUmVuZGVycyB0aGUgSFRNTCBvdXRwdXQgb2YgdGhlIHF1aWNrRm9ybS5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcmV0dXJucyB7SFRNTEVsZW1lbnR9XG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcblx0XHRjb25zdCByZXQgPSB0aGlzLnJvb3QucmVuZGVyKCk7XG5cdFx0cmV0Lm5hbWVzID0ge307XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcblx0LyoqXG5cdCAqIEFwcGVuZCBlbGVtZW50IHRvIHRoZSBmb3JtLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7KG9iamVjdHxNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCl9IGRhdGEgLSBBIHF1aWNrZm9ybSBlbGVtZW50LCBvciB0aGUgb2JqZWN0IHdpdGggd2hpY2hcblx0ICogYSBxdWlja2Zvcm0gZWxlbWVudCBpcyBjb25zdHJ1Y3RlZC5cblx0ICogQHJldHVybnMge01vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50fSAtIFNhbWUgYXMgd2hhdCBpcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuXHRcdHJldHVybiB0aGlzLnJvb3QuYXBwZW5kKGRhdGEpO1xuXHR9O1xuXHQvKipcblx0ICogQ3JlYXRlIGEgbmV3IGVsZW1lbnQgZm9yIHRoZSB0aGUgZm9ybS5cblx0ICpcblx0ICogSW5kZXggdG8gTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQgdHlwZXM6XG5cdCAqIC0gR2xvYmFsIGF0dHJpYnV0ZXM6IGlkLCBjbGFzc05hbWUsIHN0eWxlLCB0b29sdGlwLCBleHRyYSwgJGRhdGEsIGFkbWlub25seVxuXHQgKiAtIGBzZWxlY3RgOiBBIGNvbWJvIGJveCAoYWthIGRyb3AtZG93bikuXG5cdCAqICAgICAtIEF0dHJpYnV0ZXM6IG5hbWUsIGxhYmVsLCBtdWx0aXBsZSwgc2l6ZSwgbGlzdCwgZXZlbnQsIGRpc2FibGVkXG5cdCAqICAtIGBvcHRpb25gOiBBbiBlbGVtZW50IGZvciBhIGNvbWJvIGJveC5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IHZhbHVlLCBsYWJlbCwgc2VsZWN0ZWQsIGRpc2FibGVkXG5cdCAqICAtIGBvcHRncm91cGA6IEEgZ3JvdXAgb2YgXCJvcHRpb25cInMuXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBsYWJlbCwgbGlzdFxuXHQgKiAgLSBgZmllbGRgOiBBIGZpZWxkc2V0IChha2EgZ3JvdXAgYm94KS5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IG5hbWUsIGxhYmVsLCBkaXNhYmxlZFxuXHQgKiAgLSBgY2hlY2tib3hgOiBBIGNoZWNrYm94LiBNdXN0IHVzZSBcImxpc3RcIiBwYXJhbWV0ZXIuXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCBsaXN0LCBldmVudFxuXHQgKiAgICAgIC0gQXR0cmlidXRlcyAod2l0aGluIGxpc3QpOiBuYW1lLCBsYWJlbCwgdmFsdWUsIGNoZWNrZWQsIGRpc2FibGVkLCBldmVudCwgc3ViZ3JvdXBcblx0ICogIC0gYHJhZGlvYDogQSByYWRpbyBidXR0b24uIE11c3QgdXNlIFwibGlzdFwiIHBhcmFtZXRlci5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IG5hbWUsIGxpc3QsIGV2ZW50XG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzICh3aXRoaW4gbGlzdCk6IG5hbWUsIGxhYmVsLCB2YWx1ZSwgY2hlY2tlZCwgZGlzYWJsZWQsIGV2ZW50LCBzdWJncm91cFxuXHQgKiAgLSBgaW5wdXRgOiBBIHRleHQgaW5wdXQgYm94LlxuXHQgKiAgICAgIC0gQXR0cmlidXRlczogbmFtZSwgbGFiZWwsIHZhbHVlLCBzaXplLCBwbGFjZWhvbGRlciwgbWF4bGVuZ3RoLCBkaXNhYmxlZCwgcmVxdWlyZWQsIHJlYWRvbmx5LCBldmVudFxuXHQgKiAgLSBgbnVtYmVyYDogQSBudW1iZXIgaW5wdXQgYm94LlxuXHQgKiAgICAgIC0gQXR0cmlidXRlczogRXZlcnl0aGluZyB0aGUgdGV4dCBgaW5wdXRgIGhhcywgYXMgd2VsbCBhczogbWluLCBtYXgsIHN0ZXAsIGxpc3Rcblx0ICogIC0gYGR5bmlucHV0YDogQSBzZXQgb2YgdGV4dCBib3hlcyB3aXRoIFwiUmVtb3ZlXCIgYnV0dG9ucyBhbmQgYW4gXCJBZGRcIiBidXR0b24uXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCBsYWJlbCwgbWluLCBtYXgsIHN1YmxhYmVsLCB2YWx1ZSwgc2l6ZSwgbWF4bGVuZ3RoLCBldmVudFxuXHQgKiAgLSBgaGlkZGVuYDogQW4gaW52aXNpYmxlIGZvcm0gZmllbGQuXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCB2YWx1ZVxuXHQgKiAgLSBgaGVhZGVyYDogQSBsZXZlbCA1IGhlYWRlci5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IGxhYmVsXG5cdCAqICAtIGBkaXZgOiBBIGdlbmVyaWMgcGxhY2Vob2xkZXIgZWxlbWVudCBvciBsYWJlbC5cblx0ICogICAgICAtIEF0dHJpYnV0ZXM6IG5hbWUsIGxhYmVsXG5cdCAqICAtIGBzdWJtaXRgOiBBIHN1Ym1pdCBidXR0b24uIE1vcmViaXRzLnNpbXBsZVdpbmRvdyBtb3ZlcyB0aGVzZSB0byB0aGUgZm9vdGVyIG9mIHRoZSBkaWFsb2cuXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCBsYWJlbCwgZGlzYWJsZWRcblx0ICogIC0gYGJ1dHRvbmA6IEEgZ2VuZXJpYyBidXR0b24uXG5cdCAqICAgICAgLSBBdHRyaWJ1dGVzOiBuYW1lLCBsYWJlbCwgZGlzYWJsZWQsIGV2ZW50XG5cdCAqICAtIGB0ZXh0YXJlYWA6IEEgYmlnLCBtdWx0aS1saW5lIHRleHQgYm94LlxuXHQgKiAgICAgIC0gQXR0cmlidXRlczogbmFtZSwgbGFiZWwsIHZhbHVlLCBjb2xzLCByb3dzLCBkaXNhYmxlZCwgcmVxdWlyZWQsIHJlYWRvbmx5XG5cdCAqICAtIGBmcmFnbWVudGA6IEEgRG9jdW1lbnRGcmFnbWVudCBvYmplY3QuXG5cdCAqICAgICAgLSBObyBhdHRyaWJ1dGVzLCBhbmQgbm8gZ2xvYmFsIGF0dHJpYnV0ZXMgZXhjZXB0IGFkbWlub25seS5cblx0ICogVGhlcmUgaXMgc29tZSBkaWZmZXJlbmNlIG9uIGhvdyB0eXBlcyBoYW5kbGUgdGhlIGBsYWJlbGAgYXR0cmlidXRlOlxuXHQgKiAtIGBkaXZgLCBgc2VsZWN0YCwgYGZpZWxkYCwgYGNoZWNrYm94YC9gcmFkaW9gLCBgaW5wdXRgLCBgdGV4dGFyZWFgLCBgaGVhZGVyYCwgYW5kIGBkeW5pbnB1dGAgY2FuIGFjY2VwdCBhbiBhcnJheSBvZiBpdGVtcyxcblx0ICogYW5kIHRoZSBsYWJlbCBpdGVtKHMpIGNhbiBiZSBgRWxlbWVudGBzLlxuXHQgKiAtIGBvcHRpb25gLCBgb3B0Z3JvdXBgLCBgX2R5bmlucHV0X2VsZW1lbnRgLCBgc3VibWl0YCwgYW5kIGBidXR0b25gIGFjY2VwdCBvbmx5IGEgc2luZ2xlIHN0cmluZy5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBxdWlja2Zvcm0gZWxlbWVudC4gU2hvdWxkXG5cdCAqIHNwZWNpZnkgb25lIG9mIHRoZSBhdmFpbGFibGUgdHlwZXMgZnJvbSB0aGUgaW5kZXggYWJvdmUsIGFzIHdlbGwgYXMgYW55XG5cdCAqIHJlbGV2YW50IGFuZCBhdmFpbGFibGUgYXR0cmlidXRlcy5cblx0ICogQGV4YW1wbGUgbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHtcblx0ICogICAgIG5hbWU6ICd0YXJnZXQnLFxuXHQgKiAgICAgdHlwZTogJ2lucHV0Jyxcblx0ICogICAgIGxhYmVsOiAnWW91ciB0YXJnZXQ6Jyxcblx0ICogICAgIHRvb2x0aXA6ICdFbnRlciB5b3VyIHRhcmdldC4gUmVxdWlyZWQuJyxcblx0ICogICAgIHJlcXVpcmVkOiB0cnVlXG5cdCAqIH0pO1xuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQgPSBmdW5jdGlvbiAoZGF0YSkge1xuXHRcdHRoaXMuZGF0YSA9IGRhdGE7XG5cdFx0dGhpcy5jaGlsZHMgPSBbXTtcblx0fTtcblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudFxuXHQgKiBAdHlwZSB7bnVtYmVyfVxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQuaWQgPSAwO1xuXHQvKipcblx0ICogQXBwZW5kcyBhbiBlbGVtZW50IHRvIGN1cnJlbnQgZWxlbWVudC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50XG5cdCAqIEBwYXJhbSB7TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnR9IGRhdGEgLSBBIHF1aWNrRm9ybSBlbGVtZW50IG9yIHRoZSBvYmplY3QgcmVxdWlyZWQgdG9cblx0ICogY3JlYXRlIHRoZSBxdWlja0Zvcm0gZWxlbWVudC5cblx0ICogQHJldHVybnMge01vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50fSBUaGUgc2FtZSBlbGVtZW50IHBhc3NlZCBpbi5cblx0ICovXG5cdE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50LnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuXHRcdGxldCBjaGlsZDtcblx0XHRpZiAoZGF0YSBpbnN0YW5jZW9mIE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KSB7XG5cdFx0XHRjaGlsZCA9IGRhdGE7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoaWxkID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KGRhdGEpO1xuXHRcdH1cblx0XHR0aGlzLmNoaWxkc1t0aGlzLmNoaWxkcy5sZW5ndGhdID0gY2hpbGQ7XG5cdFx0cmV0dXJuIGNoaWxkO1xuXHR9O1xuXHQvKipcblx0ICogUmVuZGVycyB0aGUgSFRNTCBvdXRwdXQgZm9yIHRoZSBxdWlja0Zvcm0gZWxlbWVudC4gIFRoaXMgc2hvdWxkIGJlIGNhbGxlZFxuXHQgKiB3aXRob3V0IHBhcmFtZXRlcnM6IGBmb3JtLnJlbmRlcigpYC5cblx0ICpcblx0ICogQHBhcmFtIHtudW1iZXJ9IGludGVybmFsU3ViZ3JvdXBJZFxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnRcblx0ICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChpbnRlcm5hbFN1Ymdyb3VwSWQpIHtcblx0XHRjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMuY29tcHV0ZSh0aGlzLmRhdGEsIGludGVybmFsU3ViZ3JvdXBJZCk7XG5cdFx0Zm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcykge1xuXHRcdFx0Ly8gZG8gbm90IHBhc3MgaW50ZXJuYWxfc3ViZ3JvdXBfaWQgdG8gcmVjdXJzaXZlIGNhbGxzXG5cdFx0XHRjdXJyZW50Tm9kZVsxXS5hcHBlbmRDaGlsZChjaGlsZC5yZW5kZXIoKSk7XG5cdFx0fVxuXHRcdHJldHVybiBjdXJyZW50Tm9kZVswXTtcblx0fTtcblx0LyoqXG5cdCAqIEBwYXJhbSB7Kn0gZGF0YVxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5JZFxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnRcblx0ICovXG5cdE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50LnByb3RvdHlwZS5jb21wdXRlID0gZnVuY3Rpb24gKGRhdGEsIGluSWQpIHtcblx0XHRsZXQgbm9kZTtcblx0XHRsZXQgY2hpbGRDb250YWluZXIgPSBudWxsO1xuXHRcdGxldCBsYWJlbDtcblx0XHRjb25zdCBpZCA9IGAke2luSWQgPyBgJHtpbklkfV9gIDogJyd9bm9kZV8ke01vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50LmlkKyt9YDtcblx0XHRpZiAoZGF0YS5hZG1pbm9ubHkgJiYgIU1vcmViaXRzLnVzZXJJc1N5c29wKSB7XG5cdFx0XHQvLyBoZWxsIGhhY2sgYWxwaGFcblx0XHRcdGRhdGEudHlwZSA9ICdoaWRkZW4nO1xuXHRcdH1cblx0XHRsZXQgaTtcblx0XHRsZXQgY3VycmVudDtcblx0XHRsZXQgc3Vibm9kZTtcblx0XHRzd2l0Y2ggKGRhdGEudHlwZSkge1xuXHRcdFx0Y2FzZSAnZm9ybSc6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7XG5cdFx0XHRcdG5vZGUuY2xhc3NOYW1lID0gJ3F1aWNrZm9ybSc7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zY3JpcHQtdXJsXG5cdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdhY3Rpb24nLCAnamF2YXNjcmlwdDp2b2lkKDApOycpO1xuXHRcdFx0XHRpZiAoZGF0YS5ldmVudCkge1xuXHRcdFx0XHRcdG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihkYXRhLmV2ZW50VHlwZSB8fCAnc3VibWl0JywgZGF0YS5ldmVudCwgZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZnJhZ21lbnQnOlxuXHRcdFx0XHRub2RlID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXHRcdFx0XHQvLyBmcmFnbWVudHMgY2FuJ3QgaGF2ZSBhbnkgYXR0cmlidXRlcywgc28ganVzdCByZXR1cm4gaXQgc3RyYWlnaHQgYXdheVxuXHRcdFx0XHRyZXR1cm4gW25vZGUsIG5vZGVdO1xuXHRcdFx0Y2FzZSAnc2VsZWN0Jzoge1xuXHRcdFx0XHRub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdpZCcsIGBkaXZfJHtpZH1gKTtcblx0XHRcdFx0aWYgKGRhdGEubGFiZWwpIHtcblx0XHRcdFx0XHRsYWJlbCA9IG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKSk7XG5cdFx0XHRcdFx0bGFiZWwuc2V0QXR0cmlidXRlKCdmb3InLCBpZCk7XG5cdFx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoTW9yZWJpdHMuY3JlYXRlSHRtbChkYXRhLmxhYmVsKSk7XG5cdFx0XHRcdFx0Ly8gTm8gbWFyZ2luXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBzZWxlY3QgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpKTtcblx0XHRcdFx0aWYgKGRhdGEuZXZlbnQpIHtcblx0XHRcdFx0XHRzZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZGF0YS5ldmVudCwgZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLm11bHRpcGxlKSB7XG5cdFx0XHRcdFx0c2VsZWN0LnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnbXVsdGlwbGUnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5zaXplKSB7XG5cdFx0XHRcdFx0c2VsZWN0LnNldEF0dHJpYnV0ZSgnc2l6ZScsIGRhdGEuc2l6ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEuZGlzYWJsZWQpIHtcblx0XHRcdFx0XHRzZWxlY3QuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNlbGVjdC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBkYXRhLm5hbWUpO1xuXHRcdFx0XHRpZiAoZGF0YS5saXN0KSB7XG5cdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGRhdGEubGlzdC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudCA9IGRhdGEubGlzdFtpXTtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50Lmxpc3QpIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudC50eXBlID0gJ29wdGdyb3VwJztcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnQudHlwZSA9ICdvcHRpb24nO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0c3Vibm9kZSA9IHRoaXMuY29tcHV0ZShjdXJyZW50KTtcblx0XHRcdFx0XHRcdHNlbGVjdC5hcHBlbmRDaGlsZChzdWJub2RlWzBdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBzZWxlY3Q7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnb3B0aW9uJzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuXHRcdFx0XHRub2RlLnZhbHVlcyA9IGRhdGEudmFsdWU7XG5cdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEudmFsdWUpO1xuXHRcdFx0XHRpZiAoZGF0YS5zZWxlY3RlZCkge1xuXHRcdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLmRpc2FibGVkKSB7XG5cdFx0XHRcdFx0bm9kZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gQWRkIGhpZGRlbiBhdHRyXG5cdFx0XHRcdGlmIChkYXRhLmhpZGRlbikge1xuXHRcdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAnJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bm9kZS5zZXRBdHRyaWJ1dGUoJ2xhYmVsJywgZGF0YS5sYWJlbCk7XG5cdFx0XHRcdG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGF0YS5sYWJlbCkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ29wdGdyb3VwJzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGdyb3VwJyk7XG5cdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCdsYWJlbCcsIGRhdGEubGFiZWwpO1xuXHRcdFx0XHRpZiAoZGF0YS5saXN0KSB7XG5cdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGRhdGEubGlzdC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudCA9IGRhdGEubGlzdFtpXTtcblx0XHRcdFx0XHRcdGN1cnJlbnQudHlwZSA9ICdvcHRpb24nOyAvLyBtdXN0IGJlIG9wdGlvbnMgaGVyZVxuXHRcdFx0XHRcdFx0c3Vibm9kZSA9IHRoaXMuY29tcHV0ZShjdXJyZW50KTtcblx0XHRcdFx0XHRcdG5vZGUuYXBwZW5kQ2hpbGQoc3Vibm9kZVswXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZmllbGQnOlxuXHRcdFx0XHRub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZmllbGRzZXQnKTtcblx0XHRcdFx0bGFiZWwgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xlZ2VuZCcpKTtcblx0XHRcdFx0bGFiZWwuYXBwZW5kQ2hpbGQoTW9yZWJpdHMuY3JlYXRlSHRtbChkYXRhLmxhYmVsKSk7XG5cdFx0XHRcdGlmIChkYXRhLm5hbWUpIHtcblx0XHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgnbmFtZScsIGRhdGEubmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEuZGlzYWJsZWQpIHtcblx0XHRcdFx0XHRub2RlLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2NoZWNrYm94Jzpcblx0XHRcdGNhc2UgJ3JhZGlvJzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0XHRpZiAoZGF0YS5saXN0KSB7XG5cdFx0XHRcdFx0Zm9yIChpID0gMDsgaSA8IGRhdGEubGlzdC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY3VySWQgPSBgJHtpZH1fJHtpfWA7XG5cdFx0XHRcdFx0XHRjdXJyZW50ID0gZGF0YS5saXN0W2ldO1xuXHRcdFx0XHRcdFx0bGV0IGN1ckRpdjtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50LnR5cGUgPT09ICdoZWFkZXInKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGlubGluZSBoYWNrXG5cdFx0XHRcdFx0XHRcdGN1ckRpdiA9IG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDYnKSk7XG5cdFx0XHRcdFx0XHRcdGN1ckRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjdXJyZW50LmxhYmVsKSk7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50LnRvb2x0aXApIHtcblx0XHRcdFx0XHRcdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudC5nZW5lcmF0ZVRvb2x0aXAoY3VyRGl2LCBjdXJyZW50KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGN1ckRpdiA9IG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuXHRcdFx0XHRcdFx0Ly8gQWRkIGhpZGRlbiBhdHRyXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudC5oaWRkZW4pIHtcblx0XHRcdFx0XHRcdFx0Y3VyRGl2LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0c3Vibm9kZSA9IGN1ckRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTtcblx0XHRcdFx0XHRcdHN1Ym5vZGUudmFsdWVzID0gY3VycmVudC52YWx1ZTtcblx0XHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGN1cnJlbnQudmFsdWUpO1xuXHRcdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBkYXRhLnR5cGUpO1xuXHRcdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgY3VySWQpO1xuXHRcdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBjdXJyZW50Lm5hbWUgfHwgZGF0YS5uYW1lKTtcblx0XHRcdFx0XHRcdC8vIElmIG5hbWUgaXMgcHJvdmlkZWQgb24gdGhlIGluZGl2aWR1YWwgY2hlY2tib3gsIGFkZCBhIGRhdGEtc2luZ2xlXG5cdFx0XHRcdFx0XHQvLyBhdHRyaWJ1dGUgd2hpY2ggaW5kaWNhdGVzIGl0IGlzbid0IHBhcnQgb2YgYSBsaXN0IG9mIGNoZWNrYm94ZXMgd2l0aFxuXHRcdFx0XHRcdFx0Ly8gc2FtZSBuYW1lLiBVc2VkIGluIGdldElucHV0RGF0YSgpXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudC5uYW1lKSB7XG5cdFx0XHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXNpbmdsZScsICdkYXRhLXNpbmdsZScpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnQuY2hlY2tlZCkge1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLmNoZWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnQuZGlzYWJsZWQpIHtcblx0XHRcdFx0XHRcdFx0c3Vibm9kZS5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRsYWJlbCA9IGN1ckRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpKTtcblx0XHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKE1vcmViaXRzLmNyZWF0ZUh0bWwoY3VycmVudC5sYWJlbCkpO1xuXHRcdFx0XHRcdFx0bGFiZWwuc2V0QXR0cmlidXRlKCdmb3InLCBjdXJJZCk7XG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudC50b29sdGlwKSB7XG5cdFx0XHRcdFx0XHRcdE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50LmdlbmVyYXRlVG9vbHRpcChsYWJlbCwgY3VycmVudCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBzdHlsZXMgZ28gb24gdGhlIGxhYmVsLCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gc3R5bGUgYSBjaGVja2JveC9yYWRpb1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnQuc3R5bGUpIHtcblx0XHRcdFx0XHRcdFx0bGFiZWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIGN1cnJlbnQuc3R5bGUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bGV0IGV2ZW50O1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnQuc3ViZ3JvdXApIHtcblx0XHRcdFx0XHRcdFx0bGV0IHRtcGdyb3VwID0gY3VycmVudC5zdWJncm91cDtcblx0XHRcdFx0XHRcdFx0dG1wZ3JvdXAgPSBnZW5lcmF0ZUFycmF5KHRtcGdyb3VwKTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3ViZ3JvdXBSYXcgPSBuZXcgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQoe1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdGlkOiBgJHtpZH1fJHtpfV9zdWJncm91cGAsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGVsIG9mIHRtcGdyb3VwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3RWwgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQuLi5lbCxcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdG5ld0VsLnR5cGUgfHw9IGRhdGEudHlwZTtcblx0XHRcdFx0XHRcdFx0XHRuZXdFbC5uYW1lID0gYCR7Y3VycmVudC5uYW1lIHx8IGRhdGEubmFtZX0uJHtuZXdFbC5uYW1lfWA7XG5cdFx0XHRcdFx0XHRcdFx0c3ViZ3JvdXBSYXcuYXBwZW5kKG5ld0VsKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb25zdCBzdWJncm91cCA9IHN1Ymdyb3VwUmF3LnJlbmRlcihjdXJJZCk7XG5cdFx0XHRcdFx0XHRcdHN1Ymdyb3VwLmNsYXNzTmFtZSA9ICdxdWlja2Zvcm1TdWJncm91cCc7XG5cdFx0XHRcdFx0XHRcdHN1Ym5vZGUuc3ViZ3JvdXAgPSBzdWJncm91cDtcblx0XHRcdFx0XHRcdFx0c3Vibm9kZS5zaG93biA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRldmVudCA9IChlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGUudGFyZ2V0LmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGUudGFyZ2V0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZS50YXJnZXQuc3ViZ3JvdXApO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUudGFyZ2V0LnR5cGUgPT09ICdyYWRpbycpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qge25hbWV9ID0gZS50YXJnZXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdLnN1Ymdyb3VwXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdID0gZS50YXJnZXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGUudGFyZ2V0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS50YXJnZXQuc3ViZ3JvdXApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0c3Vibm9kZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBldmVudCwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50LmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRzdWJub2RlLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoc3ViZ3JvdXApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGRhdGEudHlwZSA9PT0gJ3JhZGlvJykge1xuXHRcdFx0XHRcdFx0XHRldmVudCA9IChlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGUudGFyZ2V0LmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHtuYW1lfSA9IGUudGFyZ2V0O1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGUudGFyZ2V0LmZvcm0ubmFtZXNbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRlLnRhcmdldC5mb3JtLm5hbWVzW25hbWVdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS50YXJnZXQuZm9ybS5uYW1lc1tuYW1lXS5zdWJncm91cFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIGUudGFyZ2V0LmZvcm0ubmFtZXNbbmFtZV07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGV2ZW50LCB0cnVlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIGFkZCB1c2VycycgZXZlbnQgbGFzdCwgc28gaXQgY2FuIGludGVyYWN0IHdpdGggdGhlIHN1Ymdyb3VwXG5cdFx0XHRcdFx0XHRpZiAoZGF0YS5ldmVudCkge1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGRhdGEuZXZlbnQsIGZhbHNlKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoY3VycmVudC5ldmVudCkge1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGN1cnJlbnQuZXZlbnQsIHRydWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5zaGlmdENsaWNrU3VwcG9ydCAmJiBkYXRhLnR5cGUgPT09ICdjaGVja2JveCcpIHtcblx0XHRcdFx0XHRNb3JlYml0cy5jaGVja2JveFNoaWZ0Q2xpY2tTdXBwb3J0KE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50cyhub2RlLCBkYXRhLm5hbWUpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIGlucHV0IGlzIGFjdHVhbGx5IGEgdGV4dC10eXBlLCBzbyBudW1iZXIgaGVyZSBpbmhlcml0cyB0aGUgc2FtZSBzdHVmZlxuXHRcdFx0Y2FzZSAnbnVtYmVyJzpcblx0XHRcdGNhc2UgJ2lucHV0Jzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgnaWQnLCBgZGl2XyR7aWR9YCk7XG5cdFx0XHRcdC8vIEFkZCBoaWRkZW4gYXR0clxuXHRcdFx0XHRpZiAoZGF0YS5oaWRkZW4pIHtcblx0XHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLmxhYmVsKSB7XG5cdFx0XHRcdFx0bGFiZWwgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJykpO1xuXHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKE1vcmViaXRzLmNyZWF0ZUh0bWwoZGF0YS5sYWJlbCkpO1xuXHRcdFx0XHRcdGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgZGF0YS5pZCB8fCBpZCk7XG5cdFx0XHRcdFx0Ly8gTm8gbWFyZ2luXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzdWJub2RlID0gbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTtcblx0XHRcdFx0Ly8gQWRkIHZhbHVlIGFuZCBwbGFjZWhvbGRlciBhdHRyc1xuXHRcdFx0XHRpZiAoZGF0YS52YWx1ZSkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEudmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLnBsYWNlaG9sZGVyKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgZGF0YS5wbGFjZWhvbGRlcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBkYXRhLm5hbWUpO1xuXHRcdFx0XHRpZiAoZGF0YS50eXBlID09PSAnaW5wdXQnKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCd0eXBlJywgJ251bWJlcicpO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgYXR0IG9mIFsnbWluJywgJ21heCcsICdzdGVwJywgJ2xpc3QnXSkge1xuXHRcdFx0XHRcdFx0aWYgKGRhdGFbYXR0XSkge1xuXHRcdFx0XHRcdFx0XHRzdWJub2RlLnNldEF0dHJpYnV0ZShhdHQsIGRhdGFbYXR0XSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoY29uc3QgYXR0IG9mIFsndmFsdWUnLCAnc2l6ZScsICdwbGFjZWhvbGRlcicsICdtYXhsZW5ndGgnXSkge1xuXHRcdFx0XHRcdGlmIChkYXRhW2F0dF0pIHtcblx0XHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKGF0dCwgZGF0YVthdHRdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBhdHQgb2YgWydkaXNhYmxlZCcsICdyZXF1aXJlZCcsICdyZWFkb25seSddKSB7XG5cdFx0XHRcdFx0aWYgKGRhdGFbYXR0XSkge1xuXHRcdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoYXR0LCBhdHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5ldmVudCkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBkYXRhLmV2ZW50LCBmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBzdWJub2RlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2R5bmlucHV0Jzoge1xuXHRcdFx0XHRjb25zdCBtaW4gPSBkYXRhLm1pbiB8fCAxO1xuXHRcdFx0XHRjb25zdCBtYXggPSBkYXRhLm1heCB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0bGFiZWwgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2g1JykpO1xuXHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChNb3JlYml0cy5jcmVhdGVIdG1sKGRhdGEubGFiZWwpKTtcblx0XHRcdFx0Y29uc3QgbGlzdE5vZGUgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcblx0XHRcdFx0Y29uc3QgbW9yZSA9IHRoaXMuY29tcHV0ZSh7XG5cdFx0XHRcdFx0dHlwZTogJ2J1dHRvbicsXG5cdFx0XHRcdFx0bGFiZWw6ICfmm7TlpJonLFxuXHRcdFx0XHRcdGRpc2FibGVkOiBtaW4gPj0gbWF4LFxuXHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgbmV3Tm9kZSA9IG5ldyBNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudChlLnRhcmdldC5zdWJsaXN0KTtcblx0XHRcdFx0XHRcdGUudGFyZ2V0LmFyZWEuYXBwZW5kQ2hpbGQobmV3Tm9kZS5yZW5kZXIoKSk7XG5cdFx0XHRcdFx0XHRpZiAoKytlLnRhcmdldC5jb3VudGVyID49IGUudGFyZ2V0Lm1heCkge1xuXHRcdFx0XHRcdFx0XHRlLnRhcmdldC5kaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRub2RlLmFwcGVuZENoaWxkKG1vcmVbMF0pO1xuXHRcdFx0XHRjb25zdCBbLCBtb3JlQnV0dG9uXSA9IG1vcmU7XG5cdFx0XHRcdGNvbnN0IHN1Ymxpc3QgPSB7XG5cdFx0XHRcdFx0dHlwZTogJ19keW5pbnB1dF9lbGVtZW50Jyxcblx0XHRcdFx0XHRsYWJlbDogZGF0YS5zdWJsYWJlbCB8fCBkYXRhLmxhYmVsLFxuXHRcdFx0XHRcdG5hbWU6IGRhdGEubmFtZSxcblx0XHRcdFx0XHR2YWx1ZTogZGF0YS52YWx1ZSxcblx0XHRcdFx0XHRzaXplOiBkYXRhLnNpemUsXG5cdFx0XHRcdFx0cmVtb3ZlOiBmYWxzZSxcblx0XHRcdFx0XHRtYXhsZW5ndGg6IGRhdGEubWF4bGVuZ3RoLFxuXHRcdFx0XHRcdGV2ZW50OiBkYXRhLmV2ZW50LFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgbWluOyArK2kpIHtcblx0XHRcdFx0XHRjb25zdCBlbGVtID0gbmV3IE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KHN1Ymxpc3QpO1xuXHRcdFx0XHRcdGxpc3ROb2RlLmFwcGVuZENoaWxkKGVsZW0ucmVuZGVyKCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1Ymxpc3QucmVtb3ZlID0gdHJ1ZTtcblx0XHRcdFx0c3VibGlzdC5tb3JlYnV0dG9uID0gbW9yZUJ1dHRvbjtcblx0XHRcdFx0c3VibGlzdC5saXN0bm9kZSA9IGxpc3ROb2RlO1xuXHRcdFx0XHRtb3JlQnV0dG9uLnN1Ymxpc3QgPSBzdWJsaXN0O1xuXHRcdFx0XHRtb3JlQnV0dG9uLmFyZWEgPSBsaXN0Tm9kZTtcblx0XHRcdFx0bW9yZUJ1dHRvbi5tYXggPSBtYXggLSBtaW47XG5cdFx0XHRcdG1vcmVCdXR0b24uY291bnRlciA9IDA7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSAnX2R5bmlucHV0X2VsZW1lbnQnOlxuXHRcdFx0XHQvLyBQcml2YXRlLCBzaW1pbGFyIHRvIG5vcm1hbCBpbnB1dFxuXHRcdFx0XHRub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdGlmIChkYXRhLmxhYmVsKSB7XG5cdFx0XHRcdFx0bGFiZWwgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJykpO1xuXHRcdFx0XHRcdGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRhdGEubGFiZWwpKTtcblx0XHRcdFx0XHRsYWJlbC5zZXRBdHRyaWJ1dGUoJ2ZvcicsIGlkKTtcblx0XHRcdFx0XHQvLyBObyBtYXJnaW5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHN1Ym5vZGUgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpO1xuXHRcdFx0XHRpZiAoZGF0YS52YWx1ZSkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEudmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCduYW1lJywgZGF0YS5uYW1lKTtcblx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpO1xuXHRcdFx0XHRpZiAoZGF0YS5zaXplKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3NpemUnLCBkYXRhLnNpemUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLm1heGxlbmd0aCkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCdtYXhsZW5ndGgnLCBkYXRhLm1heGxlbmd0aCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEuZXZlbnQpIHtcblx0XHRcdFx0XHRzdWJub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZGF0YS5ldmVudCwgZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLnJlbW92ZSkge1xuXHRcdFx0XHRcdGNvbnN0IHJlbW92ZSA9IHRoaXMuY29tcHV0ZSh7XG5cdFx0XHRcdFx0XHR0eXBlOiAnYnV0dG9uJyxcblx0XHRcdFx0XHRcdGxhYmVsOiAn56e76ZmkJyxcblx0XHRcdFx0XHRcdGV2ZW50OiAoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBsaXN0ID0gZS50YXJnZXQubGlzdG5vZGU7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5vZGVfID0gZS50YXJnZXQuaW5wdXRub2RlO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBtb3JlID0gZS50YXJnZXQubW9yZWJ1dHRvbjtcblx0XHRcdFx0XHRcdFx0bGlzdC5yZW1vdmVDaGlsZChub2RlXyk7XG5cdFx0XHRcdFx0XHRcdC0tbW9yZS5jb3VudGVyO1xuXHRcdFx0XHRcdFx0XHRtb3JlLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcblx0XHRcdFx0XHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0bm9kZS5hcHBlbmRDaGlsZChyZW1vdmVbMF0pO1xuXHRcdFx0XHRcdGNvbnN0IFssIHJlbW92ZUJ1dHRvbl0gPSByZW1vdmU7XG5cdFx0XHRcdFx0cmVtb3ZlQnV0dG9uLmlucHV0bm9kZSA9IG5vZGU7XG5cdFx0XHRcdFx0cmVtb3ZlQnV0dG9uLmxpc3Rub2RlID0gZGF0YS5saXN0bm9kZTtcblx0XHRcdFx0XHRyZW1vdmVCdXR0b24ubW9yZWJ1dHRvbiA9IGRhdGEubW9yZWJ1dHRvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2hpZGRlbic6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKTtcblx0XHRcdFx0bm9kZS52YWx1ZXMgPSBkYXRhLnZhbHVlO1xuXHRcdFx0XHRub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBkYXRhLnZhbHVlKTtcblx0XHRcdFx0bm9kZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBkYXRhLm5hbWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2hlYWRlcic6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoNScpO1xuXHRcdFx0XHRub2RlLmFwcGVuZENoaWxkKE1vcmViaXRzLmNyZWF0ZUh0bWwoZGF0YS5sYWJlbCkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2Rpdic6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0aWYgKGRhdGEubmFtZSkge1xuXHRcdFx0XHRcdG5vZGUuc2V0QXR0cmlidXRlKCduYW1lJywgZGF0YS5uYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5sYWJlbCkge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdFx0XHRyZXN1bHQuY2xhc3NOYW1lID0gJ3F1aWNrZm9ybURlc2NyaXB0aW9uJztcblx0XHRcdFx0XHRyZXN1bHQuYXBwZW5kQ2hpbGQoTW9yZWJpdHMuY3JlYXRlSHRtbChkYXRhLmxhYmVsKSk7XG5cdFx0XHRcdFx0bm9kZS5hcHBlbmRDaGlsZChyZXN1bHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3VibWl0Jzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpO1xuXHRcdFx0XHRjaGlsZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnc3VibWl0Jyk7XG5cdFx0XHRcdGlmIChkYXRhLmxhYmVsKSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEubGFiZWwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNoaWxkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnbmFtZScsIGRhdGEubmFtZSB8fCAnc3VibWl0Jyk7XG5cdFx0XHRcdGlmIChkYXRhLmRpc2FibGVkKSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnYnV0dG9uJzpcblx0XHRcdFx0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpO1xuXHRcdFx0XHRjaGlsZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7XG5cdFx0XHRcdGlmIChkYXRhLmxhYmVsKSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEubGFiZWwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNoaWxkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnbmFtZScsIGRhdGEubmFtZSk7XG5cdFx0XHRcdGlmIChkYXRhLmRpc2FibGVkKSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLmV2ZW50KSB7XG5cdFx0XHRcdFx0Y2hpbGRDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBkYXRhLmV2ZW50LCBmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd0ZXh0YXJlYSc6XG5cdFx0XHRcdG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0bm9kZS5zZXRBdHRyaWJ1dGUoJ2lkJywgYGRpdl8ke2lkfWApO1xuXHRcdFx0XHQvLyBBZGQgaGlkZGVuIGF0dHJcblx0XHRcdFx0aWYgKGRhdGEuaGlkZGVuKSB7XG5cdFx0XHRcdFx0bm9kZS5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5sYWJlbCkge1xuXHRcdFx0XHRcdGxhYmVsID0gbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoNScpKTtcblx0XHRcdFx0XHRjb25zdCBsYWJlbEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xuXHRcdFx0XHRcdGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChNb3JlYml0cy5jcmVhdGVIdG1sKGRhdGEubGFiZWwpKTtcblx0XHRcdFx0XHRsYWJlbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmb3InLCBkYXRhLmlkIHx8IGlkKTtcblx0XHRcdFx0XHRsYWJlbC5hcHBlbmRDaGlsZChsYWJlbEVsZW1lbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN1Ym5vZGUgPSBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJykpO1xuXHRcdFx0XHRzdWJub2RlLnNldEF0dHJpYnV0ZSgnbmFtZScsIGRhdGEubmFtZSk7XG5cdFx0XHRcdGlmIChkYXRhLmNvbHMpIHtcblx0XHRcdFx0XHRzdWJub2RlLnNldEF0dHJpYnV0ZSgnY29scycsIGRhdGEuY29scyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEucm93cykge1xuXHRcdFx0XHRcdHN1Ym5vZGUuc2V0QXR0cmlidXRlKCdyb3dzJywgZGF0YS5yb3dzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS5kaXNhYmxlZCkge1xuXHRcdFx0XHRcdHN1Ym5vZGUuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhLnJlcXVpcmVkKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5zZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJywgJ3JlcXVpcmVkJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGEucmVhZG9ubHkpIHtcblx0XHRcdFx0XHRzdWJub2RlLnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCAncmVhZG9ubHknKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YS52YWx1ZSkge1xuXHRcdFx0XHRcdHN1Ym5vZGUudmFsdWUgPSBkYXRhLnZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEFkZCBwbGFjZWhvbGRlciBhdHRyXG5cdFx0XHRcdGlmIChkYXRhLnBsYWNlaG9sZGVyKSB7XG5cdFx0XHRcdFx0c3Vibm9kZS5wbGFjZWhvbGRlciA9IGRhdGEucGxhY2Vob2xkZXI7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2hpbGRDb250YWluZXIgPSBzdWJub2RlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTW9yZWJpdHMucXVpY2tGb3JtOiB1bmtub3duIGVsZW1lbnQgdHlwZSAke2RhdGEudHlwZS50b1N0cmluZygpfWApO1xuXHRcdH1cblx0XHRjaGlsZENvbnRhaW5lciB8fD0gbm9kZTtcblx0XHRpZiAoZGF0YS50b29sdGlwKSB7XG5cdFx0XHRNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudC5nZW5lcmF0ZVRvb2x0aXAobGFiZWwgfHwgbm9kZSwgZGF0YSk7XG5cdFx0fVxuXHRcdGlmIChkYXRhLmV4dHJhKSB7XG5cdFx0XHRjaGlsZENvbnRhaW5lci5leHRyYSA9IGRhdGEuZXh0cmE7XG5cdFx0fVxuXHRcdGlmIChkYXRhLiRkYXRhKSB7XG5cdFx0XHQkKGNoaWxkQ29udGFpbmVyKS5kYXRhKGRhdGEuJGRhdGEpO1xuXHRcdH1cblx0XHRpZiAoZGF0YS5zdHlsZSkge1xuXHRcdFx0Y2hpbGRDb250YWluZXIuc2V0QXR0cmlidXRlKCdzdHlsZScsIGRhdGEuc3R5bGUpO1xuXHRcdH1cblx0XHRpZiAoZGF0YS5jbGFzc05hbWUpIHtcblx0XHRcdGNoaWxkQ29udGFpbmVyLmNsYXNzTmFtZSA9IGNoaWxkQ29udGFpbmVyLmNsYXNzTmFtZVxuXHRcdFx0XHQ/IGAke2NoaWxkQ29udGFpbmVyLmNsYXNzTmFtZX0gJHtkYXRhLmNsYXNzTmFtZX1gXG5cdFx0XHRcdDogZGF0YS5jbGFzc05hbWU7XG5cdFx0fVxuXHRcdGNoaWxkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCBkYXRhLmlkIHx8IGlkKTtcblx0XHRyZXR1cm4gW25vZGUsIGNoaWxkQ29udGFpbmVyXTtcblx0fTtcblx0LyoqXG5cdCAqIENyZWF0ZSBhIGpRdWVyeSBVSS1iYXNlZCB0b29sdGlwLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnRcblx0ICogQHJlcXVpcmVzIGpxdWVyeS51aVxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIC0gVGhlIEhUTUwgZWxlbWVudCBiZXNpZGUgd2hpY2ggYSB0b29sdGlwIGlzIHRvIGJlIGdlbmVyYXRlZC5cblx0ICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBUb29sdGlwLXJlbGF0ZWQgY29uZmlndXJhdGlvbiBkYXRhLlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQuZ2VuZXJhdGVUb29sdGlwID0gKG5vZGUsIGRhdGEpID0+IHtcblx0XHRjb25zdCB0b29sdGlwQnV0dG9uID0gbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpO1xuXHRcdHRvb2x0aXBCdXR0b24uY2xhc3NOYW1lID0gJ21vcmViaXRzLXRvb2x0aXBCdXR0b24nO1xuXHRcdHRvb2x0aXBCdXR0b24udGl0bGUgPSBkYXRhLnRvb2x0aXA7IC8vIFByb3ZpZGVzIHRoZSBjb250ZW50IGZvciBqUXVlcnkgVUlcblx0XHR0b29sdGlwQnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCc/JykpO1xuXHRcdCQodG9vbHRpcEJ1dHRvbikudG9vbHRpcCh7XG5cdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRteTogJ2xlZnQgdG9wJyxcblx0XHRcdFx0YXQ6ICdjZW50ZXIgYm90dG9tJyxcblx0XHRcdFx0Y29sbGlzaW9uOiAnZmxpcGZpdCcsXG5cdFx0XHR9LFxuXHRcdFx0Ly8gRGVwcmVjYXRlZCBpbiBVSSAxLjEyLCBidXQgTVcgc3R1Y2sgb24gMS45LjIgaW5kZWZpbml0ZWx5OyBzZWUgIzM5OCBhbmQgVDcxMzg2XG5cdFx0XHR0b29sdGlwQ2xhc3M6ICdtb3JlYml0cy11aS10b29sdGlwJyxcblx0XHR9KTtcblx0fTtcblx0Ly8gU29tZSB1dGlsaXR5IG1ldGhvZHMgZm9yIG1hbmlwdWxhdGluZyBxdWlja0Zvcm1zIGFmdGVyIHRoZWlyIGNyZWF0aW9uOlxuXHQvLyAoTm9uZSBvZiB0aGVzZSB3b3JrIGZvciBcImR5bmlucHV0XCIgdHlwZSBmaWVsZHMgYXQgcHJlc2VudClcblx0LyoqXG5cdCAqIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIGZpbGxlZCBmb3JtIGRhdGEgZW50ZXJlZCBieSB0aGUgdXNlciwgd2l0aCB0aGUgb2JqZWN0XG5cdCAqIGtleXMgYmVpbmcgdGhlIGZvcm0gZWxlbWVudCBuYW1lcy4gRGlzYWJsZWQgZmllbGRzIHdpbGwgYmUgaWdub3JlZCwgYnV0IG5vdCBoaWRkZW4gZmllbGRzLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7SFRNTEZvcm1FbGVtZW50fSBmb3JtXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9IFdpdGggZmllbGQgbmFtZXMgYXMga2V5cywgaW5wdXQgZGF0YSBhcyB2YWx1ZXMuXG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0uZ2V0SW5wdXREYXRhID0gKGZvcm0pID0+IHtcblx0XHRjb25zdCByZXN1bHQgPSB7fTtcblx0XHRmb3IgKGNvbnN0IGZpZWxkIG9mIGZvcm0uZWxlbWVudHMpIHtcblx0XHRcdGlmIChmaWVsZC5kaXNhYmxlZCB8fCAhZmllbGQubmFtZSB8fCAhZmllbGQudHlwZSB8fCBmaWVsZC50eXBlID09PSAnc3VibWl0JyB8fCBmaWVsZC50eXBlID09PSAnYnV0dG9uJykge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdC8vIEZvciBlbGVtZW50cyBpbiBzdWJncm91cHMsIHF1aWNrZm9ybSBwcmVwZW5kcyBlbGVtZW50IG5hbWVzIHdpdGhcblx0XHRcdC8vIG5hbWUgb2YgdGhlIHBhcmVudCBncm91cCBmb2xsb3dlZCBieSBhIHBlcmlvZCwgZ2V0IHJpZCBvZiB0aGF0LlxuXHRcdFx0Y29uc3QgZmllbGROYW1lTm9ybSA9IGZpZWxkLm5hbWUuc2xpY2UoZmllbGQubmFtZS5pbmRleE9mKCcuJykgKyAxKTtcblx0XHRcdHN3aXRjaCAoZmllbGQudHlwZSkge1xuXHRcdFx0XHRjYXNlICdyYWRpbyc6XG5cdFx0XHRcdFx0aWYgKGZpZWxkLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdHJlc3VsdFtmaWVsZE5hbWVOb3JtXSA9IGZpZWxkLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnY2hlY2tib3gnOlxuXHRcdFx0XHRcdGlmIChmaWVsZC5kYXRhc2V0LnNpbmdsZSkge1xuXHRcdFx0XHRcdFx0cmVzdWx0W2ZpZWxkTmFtZU5vcm1dID0gZmllbGQuY2hlY2tlZDsgLy8gYm9vbGVhblxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRbZmllbGROYW1lTm9ybV0gfHw9IFtdO1xuXHRcdFx0XHRcdFx0aWYgKGZpZWxkLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0W2ZpZWxkTmFtZU5vcm1dW3Jlc3VsdFtmaWVsZE5hbWVOb3JtXS5sZW5ndGhdID0gZmllbGQudmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzZWxlY3QtbXVsdGlwbGUnOlxuXHRcdFx0XHRcdHJlc3VsdFtmaWVsZE5hbWVOb3JtXSA9ICQoZmllbGQpLnZhbCgpOyAvLyBmaWVsZC52YWx1ZSBkb2Vzbid0IHdvcmtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAndGV4dCc6IC8vIGZhbGxzIHRocm91Z2hcblx0XHRcdFx0Y2FzZSAndGV4dGFyZWEnOlxuXHRcdFx0XHRcdHJlc3VsdFtmaWVsZE5hbWVOb3JtXSA9IGZpZWxkLnZhbHVlLnRyaW0oKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHQvLyBjb3VsZCBiZSBzZWxlY3Qtb25lLCBkYXRlLCBudW1iZXIsIGVtYWlsLCBldGNcblx0XHRcdFx0XHRpZiAoZmllbGQudmFsdWUpIHtcblx0XHRcdFx0XHRcdHJlc3VsdFtmaWVsZE5hbWVOb3JtXSA9IGZpZWxkLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblx0LyoqXG5cdCAqIFJldHVybnMgYWxsIGZvcm0gZWxlbWVudHMgd2l0aCBhIGdpdmVuIGZpZWxkIG5hbWUgb3IgSUQuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5xdWlja0Zvcm1cblx0ICogQHBhcmFtIHtIVE1MRm9ybUVsZW1lbnR9IGZvcm1cblx0ICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkTmFtZSAtIFRoZSBuYW1lIG9yIGlkIG9mIHRoZSBmaWVsZHMuXG5cdCAqIEByZXR1cm5zIHtIVE1MRWxlbWVudFtdfSAtIEFycmF5IG9mIG1hdGNoaW5nIGZvcm0gZWxlbWVudHMuXG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudHMgPSAoZm9ybSwgZmllbGROYW1lKSA9PiB7XG5cdFx0Y29uc3QgJGZvcm0gPSAkKGZvcm0pO1xuXHRcdGZpZWxkTmFtZSA9ICQuZXNjYXBlU2VsZWN0b3IoZmllbGROYW1lKTsgLy8gc2FuaXRpemUgaW5wdXRcblx0XHRsZXQgJGVsZW1lbnRzID0gJGZvcm0uZmluZChgW25hbWU9XCIke2ZpZWxkTmFtZX1cIl1gKTtcblx0XHRpZiAoJGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiAkZWxlbWVudHMudG9BcnJheSgpO1xuXHRcdH1cblx0XHQkZWxlbWVudHMgPSAkZm9ybS5maW5kKGAjJHtmaWVsZE5hbWV9YCk7XG5cdFx0cmV0dXJuICRlbGVtZW50cy50b0FycmF5KCk7XG5cdH07XG5cdC8qKlxuXHQgKiBTZWFyY2hlcyB0aGUgYXJyYXkgb2YgZWxlbWVudHMgZm9yIGEgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uIHdpdGggYSBjZXJ0YWluXG5cdCAqIGB2YWx1ZWAgYXR0cmlidXRlLCBhbmQgcmV0dXJucyB0aGUgZmlyc3Qgc3VjaCBlbGVtZW50LiBSZXR1cm5zIG51bGwgaWYgbm90IGZvdW5kLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudFtdfSBlbGVtZW50QXJyYXkgLSBBcnJheSBvZiBjaGVja2JveCBvciByYWRpbyBlbGVtZW50cy5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gc2VhcmNoIGZvci5cblx0ICogQHJldHVybnMge0hUTUxJbnB1dEVsZW1lbnR9XG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0uZ2V0Q2hlY2tib3hPclJhZGlvID0gKGVsZW1lbnRBcnJheSwgdmFsdWUpID0+IHtcblx0XHRjb25zdCBmb3VuZCA9IGVsZW1lbnRBcnJheS5maWx0ZXIoKGVsZW1lbnQpID0+IHtcblx0XHRcdHJldHVybiBlbGVtZW50LnZhbHVlID09PSB2YWx1ZTtcblx0XHR9KTtcblx0XHRpZiAoZm91bmQubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIGZvdW5kWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fTtcblx0LyoqXG5cdCAqIFJldHVybnMgdGhlICZsdDtkaXY+IGNvbnRhaW5pbmcgdGhlIGZvcm0gZWxlbWVudCwgb3IgdGhlIGZvcm0gZWxlbWVudCBpdHNlbGZcblx0ICogTWF5IG5vdCB3b3JrIGFzIGV4cGVjdGVkIG9uIGNoZWNrYm94ZXMgb3IgcmFkaW9zLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcblx0ICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRDb250YWluZXIgPSAoZWxlbWVudCkgPT4ge1xuXHRcdC8vIGZvciBkaXZzLCBoZWFkaW5ncyBhbmQgZmllbGRzZXRzLCB0aGUgY29udGFpbmVyIGlzIHRoZSBlbGVtZW50IGl0c2VsZlxuXHRcdGlmIChcblx0XHRcdGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRmllbGRTZXRFbGVtZW50IHx8XG5cdFx0XHRlbGVtZW50IGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQgfHxcblx0XHRcdGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSGVhZGluZ0VsZW1lbnRcblx0XHQpIHtcblx0XHRcdHJldHVybiBlbGVtZW50O1xuXHRcdH1cblx0XHQvLyBmb3Igb3RoZXJzLCBqdXN0IHJldHVybiB0aGUgcGFyZW50IG5vZGVcblx0XHRyZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlO1xuXHR9O1xuXHQvKipcblx0ICogR2V0cyB0aGUgSFRNTCBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIGxhYmVsIG9mIHRoZSBnaXZlbiBmb3JtIGVsZW1lbnRcblx0ICogKG1haW5seSBmb3IgaW50ZXJuYWwgdXNlKS5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcGFyYW0geyhIVE1MRWxlbWVudHxNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCl9IGVsZW1lbnRcblx0ICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLmdldEVsZW1lbnRMYWJlbE9iamVjdCA9IChlbGVtZW50KSA9PiB7XG5cdFx0Ly8gZm9yIGJ1dHRvbnMsIGRpdnMgYW5kIGhlYWRlcnMsIHRoZSBsYWJlbCBpcyBvbiB0aGUgZWxlbWVudCBpdHNlbGZcblx0XHRpZiAoXG5cdFx0XHRlbGVtZW50LnR5cGUgPT09ICdidXR0b24nIHx8XG5cdFx0XHRlbGVtZW50LnR5cGUgPT09ICdzdWJtaXQnIHx8XG5cdFx0XHRlbGVtZW50IGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQgfHxcblx0XHRcdGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSGVhZGluZ0VsZW1lbnRcblx0XHQpIHtcblx0XHRcdHJldHVybiBlbGVtZW50O1xuXHRcdFx0Ly8gZm9yIGZpZWxkc2V0cywgdGhlIGxhYmVsIGlzIHRoZSBjaGlsZCA8bGVnZW5kPiBlbGVtZW50XG5cdFx0fSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTEZpZWxkU2V0RWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvcignbGVnZW5kJyk7XG5cdFx0XHQvLyBmb3IgdGV4dGFyZWFzLCB0aGUgbGFiZWwgaXMgdGhlIHNpYmxpbmcgPGg1PiBlbGVtZW50XG5cdFx0fSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCdoNScpO1xuXHRcdH1cblx0XHQvLyBmb3Igb3RoZXJzLCB0aGUgbGFiZWwgaXMgdGhlIHNpYmxpbmcgPGxhYmVsPiBlbGVtZW50XG5cdFx0cmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCdsYWJlbCcpO1xuXHR9O1xuXHQvKipcblx0ICogR2V0cyB0aGUgbGFiZWwgdGV4dCBvZiB0aGUgZWxlbWVudC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcGFyYW0geyhIVE1MRWxlbWVudHxNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCl9IGVsZW1lbnRcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50TGFiZWwgPSAoZWxlbWVudCkgPT4ge1xuXHRcdGNvbnN0IGxhYmVsRWxlbWVudCA9IE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50TGFiZWxPYmplY3QoZWxlbWVudCk7XG5cdFx0aWYgKCFsYWJlbEVsZW1lbnQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gbGFiZWxFbGVtZW50LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQ7XG5cdH07XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBsYWJlbCBvZiB0aGUgZWxlbWVudCB0byB0aGUgZ2l2ZW4gdGV4dC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcGFyYW0geyhIVE1MRWxlbWVudHxNb3JlYml0cy5xdWlja0Zvcm0uZWxlbWVudCl9IGVsZW1lbnRcblx0ICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsVGV4dFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBzdWNjZWVkZWQsIGZhbHNlIGlmIHRoZSBsYWJlbCBlbGVtZW50IGlzIHVuYXZhaWxhYmxlLlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRMYWJlbCA9IChlbGVtZW50LCBsYWJlbFRleHQpID0+IHtcblx0XHRjb25zdCBsYWJlbEVsZW1lbnQgPSBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudExhYmVsT2JqZWN0KGVsZW1lbnQpO1xuXHRcdGlmICghbGFiZWxFbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGxhYmVsRWxlbWVudC5maXJzdENoaWxkLnRleHRDb250ZW50ID0gbGFiZWxUZXh0O1xuXHRcdHJldHVybiB0cnVlO1xuXHR9O1xuXHQvKipcblx0ICogU3RvcmVzIHRoZSBlbGVtZW50J3MgY3VycmVudCBsYWJlbCwgYW5kIHRlbXBvcmFyaWx5IHNldHMgdGhlIGxhYmVsIHRvIHRoZSBnaXZlbiB0ZXh0LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7KEhUTUxFbGVtZW50fE1vcmViaXRzLnF1aWNrRm9ybS5lbGVtZW50KX0gZWxlbWVudFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGVtcG9yYXJ5TGFiZWxUZXh0XG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgc3VjY2VlZGVkLCBgZmFsc2VgIGlmIHRoZSBsYWJlbCBlbGVtZW50IGlzIHVuYXZhaWxhYmxlLlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLm92ZXJyaWRlRWxlbWVudExhYmVsID0gKGVsZW1lbnQsIHRlbXBvcmFyeUxhYmVsVGV4dCkgPT4ge1xuXHRcdGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtb2xkbGFiZWwnKSkge1xuXHRcdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb2xkbGFiZWwnLCBNb3JlYml0cy5xdWlja0Zvcm0uZ2V0RWxlbWVudExhYmVsKGVsZW1lbnQpKTtcblx0XHR9XG5cdFx0cmV0dXJuIE1vcmViaXRzLnF1aWNrRm9ybS5zZXRFbGVtZW50TGFiZWwoZWxlbWVudCwgdGVtcG9yYXJ5TGFiZWxUZXh0KTtcblx0fTtcblx0LyoqXG5cdCAqIFJlc3RvcmVzIHRoZSBsYWJlbCBzdG9yZWQgYnkgb3ZlcnJpZGVFbGVtZW50TGFiZWwuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5xdWlja0Zvcm1cblx0ICogQHBhcmFtIHsoSFRNTEVsZW1lbnR8TW9yZWJpdHMucXVpY2tGb3JtLmVsZW1lbnQpfSBlbGVtZW50XG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHN1Y2NlZWRlZCwgZmFsc2UgaWYgdGhlIGxhYmVsIGVsZW1lbnQgaXMgdW5hdmFpbGFibGUuXG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0ucmVzZXRFbGVtZW50TGFiZWwgPSAoZWxlbWVudCkgPT4ge1xuXHRcdGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1vbGRsYWJlbCcpKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRMYWJlbChlbGVtZW50LCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1vbGRsYWJlbCcpKTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH07XG5cdC8qKlxuXHQgKiBTaG93cyBvciBoaWRlcyBhIGZvcm0gZWxlbWVudCBwbHVzIGl0cyBsYWJlbCBhbmQgdG9vbHRpcC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnF1aWNrRm9ybVxuXHQgKiBAcGFyYW0geyhIVE1MRWxlbWVudHxqUXVlcnl8c3RyaW5nKX0gZWxlbWVudCAtIEhUTUwvalF1ZXJ5IGVsZW1lbnQsIG9yIGpRdWVyeSBzZWxlY3RvciBzdHJpbmcuXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW3Zpc2liaWxpdHldIC0gU2tpcCB0aGlzIHRvIHRvZ2dsZSB2aXNpYmlsaXR5LlxuXHQgKi9cblx0TW9yZWJpdHMucXVpY2tGb3JtLnNldEVsZW1lbnRWaXNpYmlsaXR5ID0gKGVsZW1lbnQsIHZpc2liaWxpdHkpID0+IHtcblx0XHQkKGVsZW1lbnQpLnRvZ2dsZSh2aXNpYmlsaXR5KTtcblx0fTtcblx0LyoqXG5cdCAqIFNob3dzIG9yIGhpZGVzIHRoZSBxdWVzdGlvbiBtYXJrIGljb24gKHdoaWNoIGRpc3BsYXlzIHRoZSB0b29sdGlwKSBuZXh0IHRvIGEgZm9ybSBlbGVtZW50LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMucXVpY2tGb3JtXG5cdCAqIEBwYXJhbSB7KEhUTUxFbGVtZW50fGpRdWVyeSl9IGVsZW1lbnRcblx0ICogQHBhcmFtIHtib29sZWFufSBbdmlzaWJpbGl0eV0gLSBTa2lwIHRoaXMgdG8gdG9nZ2xlIHZpc2liaWxpdHkuXG5cdCAqL1xuXHRNb3JlYml0cy5xdWlja0Zvcm0uc2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5ID0gKGVsZW1lbnQsIHZpc2liaWxpdHkpID0+IHtcblx0XHQkKE1vcmViaXRzLnF1aWNrRm9ybS5nZXRFbGVtZW50Q29udGFpbmVyKGVsZW1lbnQpKS5maW5kKCcubW9yZWJpdHMtdG9vbHRpcEJ1dHRvbicpLnRvZ2dsZSh2aXNpYmlsaXR5KTtcblx0fTtcblx0LyoqXG5cdCAqIEBleHRlcm5hbCBIVE1MRm9ybUVsZW1lbnRcblx0ICovXG5cdC8qKlxuXHQgKiBHZXQgY2hlY2tlZCBpdGVtcyBpbiB0aGUgZm9ybS5cblx0ICpcblx0ICogQGZ1bmN0aW9uIGV4dGVybmFsOkhUTUxGb3JtRWxlbWVudC5nZXRDaGVja2VkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gRmluZCBjaGVja2VkIHByb3BlcnR5IG9mIGVsZW1lbnRzIChpLmUuIGEgY2hlY2tib3hcblx0ICogb3IgYSByYWRpb2J1dHRvbikgd2l0aCB0aGUgZ2l2ZW4gbmFtZSwgb3Igc2VsZWN0IG9wdGlvbnMgdGhhdCBoYXZlIHNlbGVjdGVkXG5cdCAqIHNldCB0byB0cnVlIChkb24ndCB0cnkgdG8gbWl4IHNlbGVjdHMgd2l0aCByYWRpby9jaGVja2JveGVzKS5cblx0ICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlXSAtIE9wdGlvbmFsbHkgc3BlY2lmeSBlaXRoZXIgcmFkaW8gb3IgY2hlY2tib3ggKGZvclxuXHQgKiB0aGUgZXZlbnQgdGhhdCBib3RoIGNoZWNrYm94ZXMgYW5kIHJhZGlvYnV0dG9ucyBoYXZlIHRoZSBzYW1lIG5hbWUpLlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nW119IC0gQ29udGFpbnMgdGhlIHZhbHVlcyBvZiBlbGVtZW50cyB3aXRoIHRoZSBnaXZlbiBuYW1lXG5cdCAqIGNoZWNrZWQgcHJvcGVydHkgc2V0IHRvIHRydWUuXG5cdCAqL1xuXHRIVE1MRm9ybUVsZW1lbnQucHJvdG90eXBlLmdldENoZWNrZWQgPSBmdW5jdGlvbiAobmFtZSwgdHlwZSkge1xuXHRcdGNvbnN0IGVsZW1lbnRzID0gdGhpcy5lbGVtZW50c1tuYW1lXTtcblx0XHRpZiAoIWVsZW1lbnRzKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGNvbnN0IHJldHVybkFycmF5ID0gW107XG5cdFx0bGV0IGk7XG5cdFx0aWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpIHtcblx0XHRcdGNvbnN0IHtvcHRpb25zfSA9IGVsZW1lbnRzO1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYgKG9wdGlvbnNbaV0uc2VsZWN0ZWQpIHtcblx0XHRcdFx0XHRpZiAob3B0aW9uc1tpXS52YWx1ZXMpIHtcblx0XHRcdFx0XHRcdHJldHVybkFycmF5W3JldHVybkFycmF5Lmxlbmd0aF0gPSBvcHRpb25zW2ldLnZhbHVlcztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IG9wdGlvbnNbaV0udmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChlbGVtZW50cyBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcblx0XHRcdGlmICh0eXBlICYmIGVsZW1lbnRzLnR5cGUgIT09IHR5cGUpIHtcblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fSBlbHNlIGlmIChlbGVtZW50cy5jaGVja2VkKSB7XG5cdFx0XHRcdHJldHVybiBbZWxlbWVudHMudmFsdWVdO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYgKGVsZW1lbnRzW2ldLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRpZiAodHlwZSAmJiBlbGVtZW50c1tpXS50eXBlICE9PSB0eXBlKSB7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnRzW2ldLnZhbHVlcykge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IGVsZW1lbnRzW2ldLnZhbHVlcztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IGVsZW1lbnRzW2ldLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmV0dXJuQXJyYXk7XG5cdH07XG5cdC8qKlxuXHQgKiBEb2VzIHRoZSBzYW1lIGFzIHtAbGluayBIVE1MRm9ybUVsZW1lbnQuZ2V0Q2hlY2tlZHxnZXRDaGVja2VkfSwgYnV0IHdpdGggdW5jaGVja2VkIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb24gZXh0ZXJuYWw6SFRNTEZvcm1FbGVtZW50LmdldFVuY2hlY2tlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEZpbmQgY2hlY2tlZCBwcm9wZXJ0eSBvZiBlbGVtZW50cyAoaS5lLiBhIGNoZWNrYm94XG5cdCAqIG9yIGEgcmFkaW9idXR0b24pIHdpdGggdGhlIGdpdmVuIG5hbWUsIG9yIHNlbGVjdCBvcHRpb25zIHRoYXQgaGF2ZSBzZWxlY3RlZFxuXHQgKiBzZXQgdG8gdHJ1ZSAoZG9uJ3QgdHJ5IHRvIG1peCBzZWxlY3RzIHdpdGggcmFkaW8vY2hlY2tib3hlcykuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZV0gLSBPcHRpb25hbGx5IHNwZWNpZnkgZWl0aGVyIHJhZGlvIG9yIGNoZWNrYm94IChmb3Jcblx0ICogdGhlIGV2ZW50IHRoYXQgYm90aCBjaGVja2JveGVzIGFuZCByYWRpb2J1dHRvbnMgaGF2ZSB0aGUgc2FtZSBuYW1lKS5cblx0ICogQHJldHVybnMge3N0cmluZ1tdfSAtIENvbnRhaW5zIHRoZSB2YWx1ZXMgb2YgZWxlbWVudHMgd2l0aCB0aGUgZ2l2ZW4gbmFtZVxuXHQgKiBjaGVja2VkIHByb3BlcnR5IHNldCB0byB0cnVlLlxuXHQgKi9cblx0SFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5nZXRVbmNoZWNrZWQgPSBmdW5jdGlvbiAobmFtZSwgdHlwZSkge1xuXHRcdGNvbnN0IGVsZW1lbnRzID0gdGhpcy5lbGVtZW50c1tuYW1lXTtcblx0XHRpZiAoIWVsZW1lbnRzKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGNvbnN0IHJldHVybkFycmF5ID0gW107XG5cdFx0bGV0IGk7XG5cdFx0aWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpIHtcblx0XHRcdGNvbnN0IHtvcHRpb25zfSA9IGVsZW1lbnRzO1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYgKCFvcHRpb25zW2ldLnNlbGVjdGVkKSB7XG5cdFx0XHRcdFx0aWYgKG9wdGlvbnNbaV0udmFsdWVzKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm5BcnJheVtyZXR1cm5BcnJheS5sZW5ndGhdID0gb3B0aW9uc1tpXS52YWx1ZXM7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybkFycmF5W3JldHVybkFycmF5Lmxlbmd0aF0gPSBvcHRpb25zW2ldLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZWxlbWVudHMgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG5cdFx0XHRpZiAodHlwZSAmJiBlbGVtZW50cy50eXBlICE9PSB0eXBlKSB7XG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH0gZWxzZSBpZiAoIWVsZW1lbnRzLmNoZWNrZWQpIHtcblx0XHRcdFx0cmV0dXJuIFtlbGVtZW50cy52YWx1ZV07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRpZiAoIWVsZW1lbnRzW2ldLmNoZWNrZWQpIHtcblx0XHRcdFx0XHRpZiAodHlwZSAmJiBlbGVtZW50c1tpXS50eXBlICE9PSB0eXBlKSB7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnRzW2ldLnZhbHVlcykge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IGVsZW1lbnRzW2ldLnZhbHVlcztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuQXJyYXlbcmV0dXJuQXJyYXkubGVuZ3RoXSA9IGVsZW1lbnRzW2ldLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmV0dXJuQXJyYXk7XG5cdH07XG5cdC8qKlxuXHQgKiBVdGlsaXRpZXMgdG8gaGVscCBwcm9jZXNzIElQIGFkZHJlc3Nlcy5cblx0ICpcblx0ICogQG5hbWVzcGFjZSBNb3JlYml0cy5pcFxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICovXG5cdE1vcmViaXRzLmlwID0ge1xuXHRcdC8qKlxuXHRcdCAqIENvbnZlcnRzIGFuIElQdjYgYWRkcmVzcyB0byB0aGUgY2Fub25pY2FsIGZvcm0gc3RvcmVkIGFuZCB1c2VkIGJ5IE1lZGlhV2lraS5cblx0XHQgKiBKYXZhU2NyaXB0IHRyYW5zbGF0aW9uIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9nZXJyaXQud2lraW1lZGlhLm9yZy9yL3BsdWdpbnMvZ2l0aWxlcy9tZWRpYXdpa2kvY29yZS8rLzhlYjZhYzNlODRlYTMzMTJkMzkxY2E5NmMxMmM0OWUzYWQwNzUzYmIvaW5jbHVkZXMvdXRpbHMvSVAucGhwIzEzMXxgSVA6OnNhbml0aXplSVAoKWB9XG5cdFx0ICogZnVuY3Rpb24gZnJvbSB0aGUgSVBVdGlscyBsaWJyYXJ5LiAgQWRkcmVzc2VzIGFyZSB2ZXJib3NlLCB1cHBlcmNhc2UsXG5cdFx0ICogbm9ybWFsaXplZCwgYW5kIGV4cGFuZGVkIHRvIDggd29yZHMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBJUHY2IGFkZHJlc3MsIHdpdGggb3Igd2l0aG91dCBDSURSLlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0c2FuaXRpemVJUHY2OiAoYWRkcmVzcykgPT4ge1xuXHRcdFx0YWRkcmVzcyA9IGFkZHJlc3MudHJpbSgpO1xuXHRcdFx0aWYgKGFkZHJlc3MgPT09ICcnKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFtdy51dGlsLmlzSVB2NkFkZHJlc3MoYWRkcmVzcywgdHJ1ZSkpIHtcblx0XHRcdFx0cmV0dXJuIGFkZHJlc3M7IC8vIG5vdGhpbmcgZWxzZSB0byBkbyBmb3IgSVB2NCBhZGRyZXNzZXMgb3IgaW52YWxpZCBvbmVzXG5cdFx0XHR9XG5cdFx0XHQvLyBSZW1vdmUgYW55IHdoaXRlc3BhY2VzLCBjb252ZXJ0IHRvIHVwcGVyIGNhc2Vcblx0XHRcdGFkZHJlc3MgPSBhZGRyZXNzLnRvVXBwZXJDYXNlKCk7XG5cdFx0XHQvLyBFeHBhbmQgemVybyBhYmJyZXZpYXRpb25zXG5cdFx0XHRjb25zdCBhYmJyZXZQb3MgPSBhZGRyZXNzLmluZGV4T2YoJzo6Jyk7XG5cdFx0XHRpZiAoYWJicmV2UG9zID4gLTEpIHtcblx0XHRcdFx0Ly8gV2Uga25vdyB0aGlzIGlzIHZhbGlkIElQdjYuIEZpbmQgdGhlIGxhc3QgaW5kZXggb2YgdGhlXG5cdFx0XHRcdC8vIGFkZHJlc3MgYmVmb3JlIGFueSBDSURSIG51bWJlciAoZS5nLiBcImE6YjpjOjovMjRcIikuXG5cdFx0XHRcdGNvbnN0IENJRFJTdGFydCA9IGFkZHJlc3MuaW5kZXhPZignLycpO1xuXHRcdFx0XHRjb25zdCBhZGRyZXNzRW5kID0gQ0lEUlN0YXJ0ID09PSAtMSA/IGFkZHJlc3MubGVuZ3RoIC0gMSA6IENJRFJTdGFydCAtIDE7XG5cdFx0XHRcdC8vIElmIHRoZSAnOjonIGlzIGF0IHRoZSBiZWdpbm5pbmcuLi5cblx0XHRcdFx0bGV0IHJlcGVhdDtcblx0XHRcdFx0bGV0IGV4dHJhO1xuXHRcdFx0XHRsZXQgcGFkO1xuXHRcdFx0XHRpZiAoYWJicmV2UG9zID09PSAwKSB7XG5cdFx0XHRcdFx0cmVwZWF0ID0gJzA6Jztcblx0XHRcdFx0XHRleHRyYSA9IGFkZHJlc3MgPT09ICc6OicgPyAnMCcgOiAnJzsgLy8gZm9yIHRoZSBhZGRyZXNzICc6Oidcblx0XHRcdFx0XHRwYWQgPSA5OyAvLyA3KzIgKGR1ZSB0byAnOjonKVxuXHRcdFx0XHRcdC8vIElmIHRoZSAnOjonIGlzIGF0IHRoZSBlbmQuLi5cblx0XHRcdFx0fSBlbHNlIGlmIChhYmJyZXZQb3MgPT09IGFkZHJlc3NFbmQgLSAxKSB7XG5cdFx0XHRcdFx0cmVwZWF0ID0gJzowJztcblx0XHRcdFx0XHRleHRyYSA9ICcnO1xuXHRcdFx0XHRcdHBhZCA9IDk7IC8vIDcrMiAoZHVlIHRvICc6OicpXG5cdFx0XHRcdFx0Ly8gSWYgdGhlICc6OicgaXMgaW4gdGhlIG1pZGRsZS4uLlxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlcGVhdCA9ICc6MCc7XG5cdFx0XHRcdFx0ZXh0cmEgPSAnOic7XG5cdFx0XHRcdFx0cGFkID0gODsgLy8gNisyIChkdWUgdG8gJzo6Jylcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCByZXBsYWNlbWVudCA9IHJlcGVhdDtcblx0XHRcdFx0cGFkIC09IGFkZHJlc3Muc3BsaXQoJzonKS5sZW5ndGggLSAxO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHBhZDsgaSsrKSB7XG5cdFx0XHRcdFx0cmVwbGFjZW1lbnQgKz0gcmVwZWF0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlcGxhY2VtZW50ICs9IGV4dHJhO1xuXHRcdFx0XHRhZGRyZXNzID0gYWRkcmVzcy5yZXBsYWNlKCc6OicsIHJlcGxhY2VtZW50KTtcblx0XHRcdH1cblx0XHRcdC8vIFJlbW92ZSBsZWFkaW5nIHplcm9zIGZyb20gZWFjaCBibG9jIGFzIG5lZWRlZFxuXHRcdFx0cmV0dXJuIGFkZHJlc3MucmVwbGFjZSgvKF58OikwKyhbMC05QS1GYS1mXXsxLDR9KS9nLCAnJDEkMicpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBJUCBhZGRyZXNzIGlzIGEgcmFuZ2UuICBKdXN0IGNvbmpvaW5zXG5cdFx0ICogYG13LnV0aWwuaXNJUEFkZHJlc3NgIHdpdGggYW5kIHdpdGhvdXQgdGhlIGBhbGxvd0Jsb2NrYCBvcHRpb24uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gaXBcblx0XHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIGdpdmVuIGEgdmFsaWQgSVAgYWRkcmVzcyByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHRcdCAqL1xuXHRcdGlzUmFuZ2U6IChpcCkgPT4ge1xuXHRcdFx0cmV0dXJuIG13LnV0aWwuaXNJUEFkZHJlc3MoaXAsIHRydWUpICYmICFtdy51dGlsLmlzSVBBZGRyZXNzKGlwKTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIENoZWNrIHRoYXQgYW4gSVAgcmFuZ2UgaXMgd2l0aGluIHRoZSBDSURSIGxpbWl0cy4gIE1vc3QgbGlrZWx5IHRvIGJlIHVzZWZ1bFxuXHRcdCAqIGluIGNvbmp1bmN0aW9uIHdpdGggYHdnUmVsZXZhbnRVc2VyTmFtZWAuICBDSURSIGxpbWl0cyBhcmUgaGFyZGNvZGVkIGFzIC8xNlxuXHRcdCAqIGZvciBJUHY0IGFuZCAvMzIgZm9yIElQdjYuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gaXBcblx0XHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGZvciB2YWxpZCByYW5nZXMgd2l0aGluIHRoZSBDSURSIGxpbWl0cyxcblx0XHQgKiBvdGhlcndpc2UgZmFsc2UgKHJhbmdlcyBvdXRzaWRlIHRoZSBsaW1pdCwgc2luZ2xlIElQcywgbm9uLUlQcykuXG5cdFx0ICovXG5cdFx0dmFsaWRDSURSOiAoaXApID0+IHtcblx0XHRcdGlmIChNb3JlYml0cy5pcC5pc1JhbmdlKGlwKSkge1xuXHRcdFx0XHRjb25zdCBzdWJuZXQgPSBOdW1iZXIucGFyc2VJbnQoaXAubWF0Y2goL1xcLyhcXGR7MSwzfSkkLylbMV0sIDEwKTtcblx0XHRcdFx0aWYgKHN1Ym5ldCkge1xuXHRcdFx0XHRcdC8vIFNob3VsZCBiZSByZWR1bmRhbnRcblx0XHRcdFx0XHRpZiAobXcudXRpbC5pc0lQdjZBZGRyZXNzKGlwLCB0cnVlKSkge1xuXHRcdFx0XHRcdFx0aWYgKHN1Ym5ldCA+PSAzMikge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2UgaWYgKHN1Ym5ldCA+PSAxNikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBHZXQgdGhlIC82NCBzdWJuZXQgZm9yIGFuIElQdjYgYWRkcmVzcy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBpcHY2IC0gVGhlIElQdjYgYWRkcmVzcywgd2l0aCBvciB3aXRob3V0IGEgc3VibmV0LlxuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufHN0cmluZ30gLSBGYWxzZSBpZiBub3QgSVB2NiBvciBiaWdnZXIgdGhhbiBhIDY0LFxuXHRcdCAqIG90aGVyd2lzZSB0aGUgKHNhbml0aXplZCkgLzY0IGFkZHJlc3MuXG5cdFx0ICovXG5cdFx0Z2V0NjQ6IChpcHY2KSA9PiB7XG5cdFx0XHRpZiAoIWlwdjYgfHwgIW13LnV0aWwuaXNJUHY2QWRkcmVzcyhpcHY2LCB0cnVlKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzdWJuZXRNYXRjaCA9IGlwdjYubWF0Y2goL1xcLyhcXGR7MSwzfSkkLyk7XG5cdFx0XHRpZiAoc3VibmV0TWF0Y2ggJiYgTnVtYmVyLnBhcnNlSW50KHN1Ym5ldE1hdGNoWzFdLCAxMCkgPCA2NCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRpcHY2ID0gTW9yZWJpdHMuaXAuc2FuaXRpemVJUHY2KGlwdjYpO1xuXHRcdFx0Y29uc3QgaXBSZWdleCA9IC9eKCg/OlswLTlBLUZdezEsNH06KXs0fSkoPzpbMC05QS1GXXsxLDR9Oil7M31bMC05QS1GXXsxLDR9KD86XFwvXFxkezEsM30pPyQvO1xuXHRcdFx0cmV0dXJuIGlwdjYucmVwbGFjZShpcFJlZ2V4LCAnJDEnLmNvbmNhdCgnMDowOjA6MC82NCcpKTtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogSGVscGVyIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIHN0cmluZ3MuXG5cdCAqXG5cdCAqIEBuYW1lc3BhY2UgTW9yZWJpdHMuc3RyaW5nXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKi9cblx0TW9yZWJpdHMuc3RyaW5nID0ge1xuXHRcdC8qKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHRvVXBwZXJDYXNlRmlyc3RDaGFyOiAoc3RyKSA9PiB7XG5cdFx0XHRzdHIgPSBzdHIudG9TdHJpbmcoKTtcblx0XHRcdHJldHVybiBzdHIuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHRvTG93ZXJDYXNlRmlyc3RDaGFyOiAoc3RyKSA9PiB7XG5cdFx0XHRzdHIgPSBzdHIudG9TdHJpbmcoKTtcblx0XHRcdHJldHVybiBzdHIuc2xpY2UoMCwgMSkudG9Mb3dlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEdpdmVzIGFuIGFycmF5IG9mIHN1YnN0cmluZ3Mgb2YgYHN0cmAgLSBzdGFydGluZyB3aXRoIGBzdGFydGAgYW5kXG5cdFx0ICogZW5kaW5nIHdpdGggYGVuZGAgLSB3aGljaCBpcyBub3QgaW4gYHNraXBsaXN0YC4gIEludGVuZGVkIGZvciB1c2Vcblx0XHQgKiBvbiB3aWtpdGV4dCB3aXRoIHRlbXBsYXRlcyBvciBsaW5rcy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RhcnRcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gZW5kXG5cdFx0ICogQHBhcmFtIHsoc3RyaW5nW118c3RyaW5nKX0gW3NraXBsaXN0XVxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmdbXX1cblx0XHQgKiBAdGhyb3dzIElmIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBzdHJpbmdzIGFyZW4ndCBvZiB0aGUgc2FtZSBsZW5ndGguXG5cdFx0ICogQHRocm93cyBJZiBgc2tpcGxpc3RgIGlzbid0IGFuIGFycmF5IG9yIHN0cmluZ1xuXHRcdCAqL1xuXHRcdHNwbGl0V2VpZ2h0ZWRCeUtleXM6IChzdHIsIHN0YXJ0LCBlbmQsIHNraXBsaXN0KSA9PiB7XG5cdFx0XHRpZiAoc3RhcnQubGVuZ3RoICE9PSBlbmQubGVuZ3RoKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignc3RhcnQgbWFya2VyIGFuZCBlbmQgbWFya2VyIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoJyk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgbGV2ZWwgPSAwO1xuXHRcdFx0bGV0IGluaXRpYWwgPSBudWxsO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc2tpcGxpc3QpKSB7XG5cdFx0XHRcdGlmIChza2lwbGlzdCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0c2tpcGxpc3QgPSBbXTtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygc2tpcGxpc3QgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0c2tpcGxpc3QgPSBbc2tpcGxpc3RdO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ25vbi1hcHBsaWNhYmxlIHNraXBsaXN0IHBhcmFtZXRlcicpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygc2tpcGxpc3QpIHtcblx0XHRcdFx0XHRpZiAoc3RyLnNsaWNlKGksIGkgKyBlbGVtZW50Lmxlbmd0aCkgPT09IGVsZW1lbnQpIHtcblx0XHRcdFx0XHRcdGkgKz0gZWxlbWVudC5sZW5ndGggLSAxO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzdHIuc2xpY2UoaSwgaSArIHN0YXJ0Lmxlbmd0aCkgPT09IHN0YXJ0KSB7XG5cdFx0XHRcdFx0aWYgKGluaXRpYWwgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdGluaXRpYWwgPSBpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQrK2xldmVsO1xuXHRcdFx0XHRcdGkgKz0gc3RhcnQubGVuZ3RoIC0gMTtcblx0XHRcdFx0fSBlbHNlIGlmIChzdHIuc2xpY2UoaSwgaSArIGVuZC5sZW5ndGgpID09PSBlbmQpIHtcblx0XHRcdFx0XHQtLWxldmVsO1xuXHRcdFx0XHRcdGkgKz0gZW5kLmxlbmd0aCAtIDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFsZXZlbCAmJiBpbml0aWFsICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0cmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gc3RyLnNsaWNlKGluaXRpYWwsIGkgKyAxKTtcblx0XHRcdFx0XHRpbml0aWFsID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEZvcm1hdHMgZnJlZWZvcm0gXCJyZWFzb25cIiAoZnJvbSBhIHRleHRhcmVhKSBmb3IgZGVsZXRpb24vb3RoZXJcblx0XHQgKiB0ZW1wbGF0ZXMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgc3Vic3RpdHV0ZWQsIChlLmcuIFBST0QsIFhGRCwgUlBQKS5cblx0XHQgKiBIYW5kbGVzIGB8YCBvdXRzaWRlIGEgbm93aWtpIHRhZy5cblx0XHQgKiBPcHRpb25hbGx5LCBhbHNvIGFkZHMgYSBzaWduYXR1cmUgaWYgbm90IHByZXNlbnQgYWxyZWFkeS5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFthZGRTaWddXG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRmb3JtYXRSZWFzb25UZXh0OiAoc3RyLCBhZGRTaWcpID0+IHtcblx0XHRcdGxldCByZWFzb24gPSAoc3RyIHx8ICcnKS50b1N0cmluZygpLnRyaW0oKTtcblx0XHRcdGNvbnN0IHVuYmluZGVyID0gbmV3IE1vcmViaXRzLnVuYmluZGVyKHJlYXNvbik7XG5cdFx0XHR1bmJpbmRlci51bmJpbmQoJzxubycuY29uY2F0KCd3aWtpJywgJz4nKSwgJzwvbm8nLmNvbmNhdCgnd2lraScsICc+JykpO1xuXHRcdFx0dW5iaW5kZXIuY29udGVudCA9IHVuYmluZGVyLmNvbnRlbnQucmVwbGFjZSgvXFx8L2csICd7eycuY29uY2F0KCdzdWJzdDonLCAnIX19JykpO1xuXHRcdFx0cmVhc29uID0gdW5iaW5kZXIucmViaW5kKCk7XG5cdFx0XHRpZiAoYWRkU2lnKSB7XG5cdFx0XHRcdGNvbnN0IHNpZyA9ICd+ficuY29uY2F0KCd+ficpO1xuXHRcdFx0XHRjb25zdCBzaWdJbmRleCA9IHJlYXNvbi5sYXN0SW5kZXhPZihzaWcpO1xuXHRcdFx0XHRpZiAoc2lnSW5kZXggPT09IC0xIHx8IHNpZ0luZGV4ICE9PSByZWFzb24ubGVuZ3RoIC0gc2lnLmxlbmd0aCkge1xuXHRcdFx0XHRcdHJlYXNvbiArPSBgICR7c2lnfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiByZWFzb24udHJpbSgpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRm9ybWF0cyBhIFwicmVhc29uXCIgKGZyb20gYSB0ZXh0YXJlYSkgZm9yIGluY2x1c2lvbiBpbiBhIHVzZXJzcGFjZVxuXHRcdCAqIGxvZy4gIFJlcGxhY2VzIG5ld2xpbmVzIHdpdGgge3tQYn19LCBhbmQgYWRkcyBhbiBleHRyYSBgI2AgYmVmb3JlXG5cdFx0ICogbGlzdCBpdGVtcyBmb3IgcHJvcGVyIGZvcm1hdHRpbmcuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRmb3JtYXRSZWFzb25Gb3JMb2c6IChzdHIpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHN0clxuXHRcdFx0XHRcdC8vIGhhbmRsZSBsaW5lIGJyZWFrcywgd2hpY2ggb3RoZXJ3aXNlIGJyZWFrIG51bWJlcmluZ1xuXHRcdFx0XHRcdC5yZXBsYWNlKC9cXG4rL2csICd7e3BifX0nKVxuXHRcdFx0XHRcdC8vIHB1dCBhbiBleHRyYSAjIGluIGZyb250IGJlZm9yZSBidWxsZXRlZCBvciBudW1iZXJlZCBsaXN0IGl0ZW1zXG5cdFx0XHRcdFx0LnJlcGxhY2UoL14oIyspL2dtLCAnIyQxJylcblx0XHRcdFx0XHQucmVwbGFjZSgvXihcXCorKS9nbSwgJyMkMScpXG5cdFx0XHQpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogTGlrZSBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKClgLCBidXQgZXNjYXBlcyBhbnkgZG9sbGFyIHNpZ25zIGluXG5cdFx0ICogdGhlIHJlcGxhY2VtZW50IHN0cmluZy4gIFVzZWZ1bCB3aGVuIHRoZSB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIGlzXG5cdFx0ICogYXJiaXRyYXJ5LCBzdWNoIGFzIGEgdXNlcm5hbWUgb3IgZnJlZWZvcm0gdXNlciBpbnB1dCwgYW5kIGNvdWxkXG5cdFx0ICogY29udGFpbiBkb2xsYXIgc2lnbnMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIC0gVGV4dCBpbiB3aGljaCB0byByZXBsYWNlLlxuXHRcdCAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHApfSBwYXR0ZXJuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50XG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRzYWZlUmVwbGFjZTogKHN0cmluZywgcGF0dGVybiwgcmVwbGFjZW1lbnQpID0+IHtcblx0XHRcdHJldHVybiBzdHJpbmcucmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC5yZXBsYWNlKC9cXCQvZywgJyQkJCQnKSk7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBEZXRlcm1pbmUgaWYgdGhlIHVzZXItcHJvdmlkZWQgZXhwaXJhdGlvbiB3aWxsIGJlIGNvbnNpZGVyZWQgYW5cblx0XHQgKiBpbmZpbml0ZS1sZW5ndGggYnkgTVcuXG5cdFx0ICpcblx0XHQgKiBAc2VlIHtAbGluayBodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDY4NjQ2fVxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGV4cGlyeVxuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHRcdCAqL1xuXHRcdGlzSW5maW5pdHk6IChleHBpcnkpID0+IHtcblx0XHRcdHJldHVybiBbJ2luZGVmaW5pdGUnLCAnaW5maW5pdHknLCAnaW5maW5pdGUnLCAnbmV2ZXInXS5pbmNsdWRlcyhleHBpcnkpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRXNjYXBlcyBhIHN0cmluZyB0byBiZSB1c2VkIGluIGEgUmVnRXhwLCByZXBsYWNpbmcgc3BhY2VzIGFuZFxuXHRcdCAqIHVuZGVyc2NvcmVzIHdpdGggYFtfIF1gIGFzIHRoZXkgYXJlIG9mdGVuIGVxdWl2YWxlbnQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFN0cmluZyB0byBiZSBlc2NhcGVkLlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGVzY2FwZWQgdGV4dC5cblx0XHQgKi9cblx0XHRlc2NhcGVSZWdFeHA6ICh0ZXh0KSA9PiB7XG5cdFx0XHRyZXR1cm4gbXcudXRpbC5lc2NhcGVSZWdFeHAodGV4dCkucmVwbGFjZSgvIHxfL2csICdbXyBdJyk7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBmb3JtYXRUaW1lXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0geyp9IHRpbWUgVGhlIHN0cmluZyB0byBmb3JhbXRcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGZvcm1hdFRpbWU6ICh0aW1lKSA9PiB7XG5cdFx0XHRsZXQgbTtcblx0XHRcdGlmICgobSA9IHRpbWUubWF0Y2goL15cXHMqKFxcZCspXFxzKnNlYyhvbmQpP3M/XFxzKiQvKSkgIT09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuIGAke21bMV1956eSYDtcblx0XHRcdH1cblx0XHRcdGlmICgobSA9IHRpbWUubWF0Y2goL15cXHMqKFxcZCspXFxzKm1pbih1dGUpP3M/XFxzKiQvKSkgIT09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuIGAke21bMV195YiGYDtcblx0XHRcdH1cblx0XHRcdGlmICgobSA9IHRpbWUubWF0Y2goL15cXHMqKFxcZCspXFxzKmhvdXJzP1xccyokLykpICE9PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBtWzFdICsgd2luZG93LndnVUxTKCflsI/ml7YnLCAn5bCP5pmCJyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoKG0gPSB0aW1lLm1hdGNoKC9eXFxzKihcXGQrKVxccypkYXlzP1xccyokLykpICE9PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBgJHttWzFdfeWkqWA7XG5cdFx0XHR9XG5cdFx0XHRpZiAoKG0gPSB0aW1lLm1hdGNoKC9eXFxzKihcXGQrKVxccyp3ZWVrcz9cXHMqJC8pKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gbVsxXSArIHdpbmRvdy53Z1VMUygn5ZGoJywgJ+mAsScpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKChtID0gdGltZS5tYXRjaCgvXlxccyooXFxkKylcXHMqbW9udGhzP1xccyokLykpICE9PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBtWzFdICsgd2luZG93LndnVUxTKCfkuKrmnIgnLCAn5YCL5pyIJyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoKG0gPSB0aW1lLm1hdGNoKC9eXFxzKihcXGQrKVxccyp5ZWFycz9cXHMqJC8pKSAhPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gYCR7bVsxXX3lubRgO1xuXHRcdFx0fVxuXHRcdFx0aWYgKE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KHRpbWUudHJpbSgpKSkge1xuXHRcdFx0XHRyZXR1cm4gd2luZG93LndnVUxTKCfml6DpmZDmnJ8nLCAn54Sh6ZmQ5pyfJyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGltZTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEFwcGVuZCBwdW5jdHVhdGlvbiB0byBhIHN0cmluZyB3aGVuIGl0J3MgbWlzc2luZ1xuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHN0clxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBwdW5jdHVhdGlvblxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0YXBwZW5kUHVuY3R1YXRpb246IChzdHIsIHB1bmN0dWF0aW9uKSA9PiB7XG5cdFx0XHRpZiAocHVuY3R1YXRpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRwdW5jdHVhdGlvbiA9ICfjgIInO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0ci5zZWFyY2goL1suPyE744CC77yf77yB77ybXSQvKSA9PT0gLTEpIHtcblx0XHRcdFx0c3RyICs9IHB1bmN0dWF0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHN0cjtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogSGVscGVyIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIGFycmF5cy5cblx0ICpcblx0ICogQG5hbWVzcGFjZSBNb3JlYml0cy5hcnJheVxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICovXG5cdE1vcmViaXRzLmFycmF5ID0ge1xuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZSBkdXBsaWNhdGVkIGl0ZW1zIGZyb20gYW4gYXJyYXkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0FycmF5fSBhcnJcblx0XHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgY29weSBvZiB0aGUgYXJyYXkgd2l0aCBkdXBsaWNhdGVzIHJlbW92ZWQuXG5cdFx0ICogQHRocm93cyBXaGVuIHByb3ZpZGVkIGEgbm9uLWFycmF5LlxuXHRcdCAqL1xuXHRcdHVuaXE6IChhcnIpID0+IHtcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Egbm9uLWFycmF5IG9iamVjdCBwYXNzZWQgdG8gTW9yZWJpdHMuYXJyYXkudW5pcScpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFyci5maWx0ZXIoKGl0ZW0sIGlkeCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYXJyLmluZGV4T2YoaXRlbSkgPT09IGlkeDtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlIG5vbi1kdXBsaWNhdGVkIGl0ZW1zIGZyb20gYW4gYXJyYXkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0FycmF5fSBhcnJcblx0XHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgY29weSBvZiB0aGUgYXJyYXkgd2l0aCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgZWFjaCB2YWx1ZVxuXHRcdCAqIHJlbW92ZWQ7IHN1YnNlcXVlbnQgaW5zdGFuY2VzIG9mIHRob3NlIHZhbHVlcyAoZHVwbGljYXRlcykgcmVtYWluLlxuXHRcdCAqIEB0aHJvd3MgV2hlbiBwcm92aWRlZCBhIG5vbi1hcnJheS5cblx0XHQgKi9cblx0XHRkdXBzOiAoYXJyKSA9PiB7XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdBIG5vbi1hcnJheSBvYmplY3QgcGFzc2VkIHRvIE1vcmViaXRzLmFycmF5LmR1cHMnKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBhcnIuZmlsdGVyKChpdGVtLCBpZHgpID0+IHtcblx0XHRcdFx0cmV0dXJuIGFyci5pbmRleE9mKGl0ZW0pICE9PSBpZHg7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEJyZWFrIHVwIGFuIGFycmF5IGludG8gc21hbGxlciBhcnJheXMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0FycmF5fSBhcnJcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAtIFNpemUgb2YgZWFjaCBjaHVuayAoZXhjZXB0IHRoZSBsYXN0LCB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQpLlxuXHRcdCAqIEByZXR1cm5zIHtBcnJheVtdfSBBbiBhcnJheSBjb250YWluaW5nIHRoZSBzbWFsbGVyLCBjaHVua2VkIGFycmF5cy5cblx0XHQgKiBAdGhyb3dzIFdoZW4gcHJvdmlkZWQgYSBub24tYXJyYXkuXG5cdFx0ICovXG5cdFx0Y2h1bms6IChhcnIsIHNpemUpID0+IHtcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Egbm9uLWFycmF5IG9iamVjdCBwYXNzZWQgdG8gTW9yZWJpdHMuYXJyYXkuY2h1bmsnKTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicgfHwgc2l6ZSA8PSAwKSB7XG5cdFx0XHRcdC8vIHByZXR0eSBpbXBvc3NpYmxlIHRvIGRvIGFueXRoaW5nIDopXG5cdFx0XHRcdHJldHVybiBbYXJyXTsgLy8gd2UgcmV0dXJuIGFuIGFycmF5IGNvbnNpc3Rpbmcgb2YgdGhpcyBhcnJheS5cblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgbnVtQ2h1bmtzID0gTWF0aC5jZWlsKGFyci5sZW5ndGggLyBzaXplKTtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IEFycmF5LmZyb20oe1xuXHRcdFx0XHRsZW5ndGg6IG51bUNodW5rcyxcblx0XHRcdH0pO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBudW1DaHVua3M7IGkrKykge1xuXHRcdFx0XHRyZXN1bHRbaV0gPSBhcnIuc2xpY2UoaSAqIHNpemUsIChpICsgMSkgKiBzaXplKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fSxcblx0fTtcblx0LyoqXG5cdCAqIFV0aWxpdGllcyB0byBlbmhhbmNlIHNlbGVjdDIgbWVudXMuIFNlZSB0d2lua2xld2FybiwgdHdpbmtsZWJsb2NrXG5cdCAqIGZvciBzYW1wbGUgdXNhZ2VzLlxuXHQgKlxuXHQgKiBAc2VlIHtAbGluayBodHRwczovL3NlbGVjdDIub3JnL31cblx0ICpcblx0ICogQG5hbWVzcGFjZSBNb3JlYml0cy5zZWxlY3QyXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKiBAcmVxdWlyZXMganF1ZXJ5LnNlbGVjdDJcblx0ICovXG5cdE1vcmViaXRzLnNlbGVjdDIgPSB7XG5cdFx0bWF0Y2hlcnM6IHtcblx0XHRcdC8qKlxuXHRcdFx0ICogQ3VzdG9tIG1hdGNoZXIgaW4gd2hpY2ggaWYgdGhlIG9wdGdyb3VwIG5hbWUgbWF0Y2hlcywgYWxsIG9wdGlvbnMgaW4gdGhhdFxuXHRcdFx0ICogZ3JvdXAgYXJlIHNob3duLCBsaWtlIGluIGpxdWVyeS5jaG9zZW4uXG5cdFx0XHQgKlxuXHRcdFx0ICogQHBhcmFtIHsqfSBwYXJhbXNcblx0XHRcdCAqIEBwYXJhbSB7Kn0gZGF0YVxuXHRcdFx0ICovXG5cdFx0XHRvcHRncm91cEZ1bGw6IChwYXJhbXMsIGRhdGEpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3JpZ2luYWxNYXRjaGVyID0gJC5mbi5zZWxlY3QyLmRlZmF1bHRzLmRlZmF1bHRzLm1hdGNoZXI7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsTWF0Y2hlcihwYXJhbXMsIGRhdGEpO1xuXHRcdFx0XHRpZiAocmVzdWx0ICYmIHBhcmFtcy50ZXJtICYmIGRhdGEudGV4dC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHBhcmFtcy50ZXJtLnRvVXBwZXJDYXNlKCkpKSB7XG5cdFx0XHRcdFx0cmVzdWx0LmNoaWxkcmVuID0gZGF0YS5jaGlsZHJlbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogQ3VzdG9tIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB3b3JkcyBvbmx5LlxuXHRcdFx0ICpcblx0XHRcdCAqIEBwYXJhbSB7Kn0gcGFyYW1zXG5cdFx0XHQgKiBAcGFyYW0geyp9IGRhdGFcblx0XHRcdCAqL1xuXHRcdFx0d29yZEJlZ2lubmluZzogKHBhcmFtcywgZGF0YSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvcmlnaW5hbE1hdGNoZXIgPSAkLmZuLnNlbGVjdDIuZGVmYXVsdHMuZGVmYXVsdHMubWF0Y2hlcjtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gb3JpZ2luYWxNYXRjaGVyKHBhcmFtcywgZGF0YSk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQhcGFyYW1zLnRlcm0gfHxcblx0XHRcdFx0XHQocmVzdWx0ICYmIG5ldyBSZWdFeHAoYFxcXFxiJHttdy51dGlsLmVzY2FwZVJlZ0V4cChwYXJhbXMudGVybSl9YCwgJ2knKS50ZXN0KHJlc3VsdC50ZXh0KSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH0sXG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBVbmRlcmxpbmUgbWF0Y2hlZCBwYXJ0IG9mIG9wdGlvbnMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0geyp9IGRhdGFcblx0XHQgKi9cblx0XHRoaWdobGlnaHRTZWFyY2hNYXRjaGVzOiAoZGF0YSkgPT4ge1xuXHRcdFx0Y29uc3Qgc2VhcmNoVGVybSA9IE1vcmViaXRzLnNlbGVjdDJTZWFyY2hRdWVyeTtcblx0XHRcdGlmICghc2VhcmNoVGVybSB8fCBkYXRhLmxvYWRpbmcpIHtcblx0XHRcdFx0cmV0dXJuIGRhdGEudGV4dDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGlkeCA9IGRhdGEudGV4dC50b1VwcGVyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGVybS50b1VwcGVyQ2FzZSgpKTtcblx0XHRcdGlmIChpZHggPCAwKSB7XG5cdFx0XHRcdHJldHVybiBkYXRhLnRleHQ7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gJCgnPHNwYW4+JykuYXBwZW5kKFxuXHRcdFx0XHRkYXRhLnRleHQuc2xpY2UoMCwgaWR4KSxcblx0XHRcdFx0JCgnPHNwYW4+Jylcblx0XHRcdFx0XHQuY3NzKCd0ZXh0LWRlY29yYXRpb24nLCAndW5kZXJsaW5lJylcblx0XHRcdFx0XHQudGV4dChkYXRhLnRleHQuc2xpY2UoaWR4LCBpZHggKyBzZWFyY2hUZXJtLmxlbmd0aCkpLFxuXHRcdFx0XHRkYXRhLnRleHQuc2xpY2UoaWR4ICsgc2VhcmNoVGVybS5sZW5ndGgpXG5cdFx0XHQpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogSW50ZXJjZXB0IHF1ZXJ5IGFzIGl0IGlzIGhhcHBlbmluZywgZm9yIHVzZSBpbiBoaWdobGlnaHRTZWFyY2hNYXRjaGVzLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHsqfSBwYXJhbXNcblx0XHQgKi9cblx0XHRxdWVyeUludGVyY2VwdG9yOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRNb3JlYml0cy5zZWxlY3QyU2VhcmNoUXVlcnkgPSBwYXJhbXMgJiYgcGFyYW1zLnRlcm07XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBPcGVuIGRyb3Bkb3duIGFuZCBiZWdpbiBzZWFyY2ggd2hlbiB0aGUgYC5zZWxlY3QyLXNlbGVjdGlvbmAgaGFzXG5cdFx0ICogZm9jdXMgYW5kIGEga2V5IGlzIHByZXNzZWQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2XG5cdFx0ICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3NlbGVjdDIvc2VsZWN0Mi9pc3N1ZXMvMzI3OSNpc3N1ZWNvbW1lbnQtNDQyNTI0MTQ3fVxuXHRcdCAqL1xuXHRcdGF1dG9TdGFydDogKGV2KSA9PiB7XG5cdFx0XHRpZiAoZXYud2hpY2ggPCA0OCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRsZXQgdGFyZ2V0ID0gJChldi50YXJnZXQpLmNsb3Nlc3QoJy5zZWxlY3QyLWNvbnRhaW5lcicpO1xuXHRcdFx0aWYgKCF0YXJnZXQubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRhcmdldCA9IHRhcmdldC5wcmV2KCk7XG5cdFx0XHR0YXJnZXQuc2VsZWN0Mignb3BlbicpO1xuXHRcdFx0Y29uc3Qgc2VhcmNoID0gdGFyZ2V0LmRhdGEoJ3NlbGVjdDInKS5kcm9wZG93bi4kc2VhcmNoIHx8IHRhcmdldC5kYXRhKCdzZWxlY3QyJykuc2VsZWN0aW9uLiRzZWFyY2g7XG5cdFx0XHQvLyBVc2UgRE9NIC5mb2N1cygpIHRvIHdvcmsgYXJvdW5kIGEgalF1ZXJ5IDMuNi4wIHJlZ3Jlc3Npb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9zZWxlY3QyL3NlbGVjdDIvaXNzdWVzLzU5OTMpXG5cdFx0XHRzZWFyY2hbMF0uZm9jdXMoKTtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogVGVtcG9yYXJpbHkgaGlkZSBhIHBhcnQgb2YgYSBzdHJpbmcgd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVzdCBvZiBpdC5cblx0ICogVXNlZCBieSB7QGxpbmsgTW9yZWJpdHMud2lraXRleHQucGFnZSNjb21tZW50T3V0SW1hZ2V8TW9yZWJpdHMud2lraXRleHQucGFnZS5jb21tZW50T3V0SW1hZ2V9LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICogQGNsYXNzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBUaGUgaW5pdGlhbCB0ZXh0IHRvIHByb2Nlc3MuXG5cdCAqIEBleGFtcGxlIGNvbnN0IHUgPSBuZXcgTW9yZWJpdHMudW5iaW5kZXIoJ0hlbGxvIHdvcmxkIDwhLS0gd29ybGQgLS0+IHdvcmxkJyk7XG5cdCAqIHUudW5iaW5kKCc8IS0tJywgJy0tPicpOyAvLyB0ZXh0IGluc2lkZSBjb21tZW50IHJlbWFpbnMgaW50YWN0XG5cdCAqIHUuY29udGVudCA9IHUuY29udGVudC5yZXBsYWNlKC93b3JsZC9nLCAnZWFydGgnKTtcblx0ICogdS5yZWJpbmQoKTsgLy8gZ2l2ZXMgJ0hlbGxvIGVhcnRoIDwhLS0gd29ybGQgLS0+IGVhcnRoJ1xuXHQgKi9cblx0TW9yZWJpdHMudW5iaW5kZXIgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG5cdFx0aWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBzdHJpbmcnKTtcblx0XHR9XG5cdFx0LyoqIFRoZSB0ZXh0IGJlaW5nIHByb2Nlc3NlZC4gKi9cblx0XHR0aGlzLmNvbnRlbnQgPSBzdHJpbmc7XG5cdFx0dGhpcy5jb3VudGVyID0gMDtcblx0XHR0aGlzLmhpc3RvcnkgPSB7fTtcblx0XHR0aGlzLnByZWZpeCA9IGAlVU5JUTo6JHtNYXRoLnJhbmRvbSgpfTo6YDtcblx0XHR0aGlzLnBvc3RmaXggPSAnOjpVTklRJSc7XG5cdH07XG5cdE1vcmViaXRzLnVuYmluZGVyLnByb3RvdHlwZSA9IHtcblx0XHQvKipcblx0XHQgKiBIaWRlIHRoZSByZWdpb24gZW5jYXBzdWxhdGVkIGJ5IHRoZSBgcHJlZml4YCBhbmQgYHBvc3RmaXhgIGZyb21cblx0XHQgKiBzdHJpbmcgcHJvY2Vzc2luZy4gIGBwcmVmaXhgIGFuZCBgcG9zdGZpeGAgd2lsbCBiZSB1c2VkIGluIGFcblx0XHQgKiBSZWdFeHAsIHNvIGl0ZW1zIHRoYXQgbmVlZCBlc2NhcGluZyBzaG91bGQgYmUgdXNlIGBcXFxcYC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXhcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcG9zdGZpeFxuXHRcdCAqIEB0aHJvd3MgSWYgZWl0aGVyIGBwcmVmaXhgIG9yIGBwb3N0Zml4YCBpcyBtaXNzaW5nLlxuXHRcdCAqL1xuXHRcdHVuYmluZChwcmVmaXgsIHBvc3RmaXgpIHtcblx0XHRcdGlmICghcHJlZml4IHx8ICFwb3N0Zml4KSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignQm90aCBwcmVmaXggYW5kIHBvc3RmaXggbXVzdCBiZSBwcm92aWRlZCcpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcmUgPSBuZXcgUmVnRXhwKGAke3ByZWZpeH0oW1xcXFxzXFxcXFNdKj8pJHtwb3N0Zml4fWAsICdnJyk7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNvbnRlbnQucmVwbGFjZShyZSwgTW9yZWJpdHMudW5iaW5kZXIuZ2V0Q2FsbGJhY2sodGhpcykpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogUmVzdG9yZSB0aGUgaGlkZGVuIHBvcnRpb24gb2YgdGhlIGBjb250ZW50YCBzdHJpbmcuXG5cdFx0ICpcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcHJvY2Vzc2VkIG91dHB1dC5cblx0XHQgKi9cblx0XHRyZWJpbmQoKSB7XG5cdFx0XHRsZXQge2NvbnRlbnR9ID0gdGhpcztcblx0XHRcdGZvciAoY29uc3QgY3VycmVudCBpbiB0aGlzLmhpc3RvcnkpIHtcblx0XHRcdFx0aWYgKCFPYmplY3QuaGFzT3duKHRoaXMuaGlzdG9yeSwgY3VycmVudCkpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250ZW50ID0gY29udGVudC5yZXBsYWNlKGN1cnJlbnQsIHRoaXMuaGlzdG9yeVtjdXJyZW50XSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY29udGVudDtcblx0XHR9LFxuXHRcdHByZWZpeDogbnVsbCxcblx0XHQvLyAlVU5JUTo6MC41OTU1OTgxNjQ0OTM4MzI0Ojpcblx0XHRwb3N0Zml4OiBudWxsLFxuXHRcdC8vIDo6VU5JUSVcblx0XHRjb250ZW50OiBudWxsLFxuXHRcdC8vIHN0cmluZ1xuXHRcdGNvdW50ZXI6IG51bGwsXG5cdFx0Ly8gMCsrXG5cdFx0aGlzdG9yeTogbnVsbCwgLy8ge31cblx0fTtcblx0LyoqXG5cdCAqIEBwYXJhbSB7dHlwZW9mIE1vcmViaXRzfSBzZWxmXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy51bmJpbmRlclxuXHQgKi9cblx0TW9yZWJpdHMudW5iaW5kZXIuZ2V0Q2FsbGJhY2sgPSAoc2VsZikgPT4ge1xuXHRcdHJldHVybiAobWF0Y2gpID0+IHtcblx0XHRcdGNvbnN0IGN1cnJlbnQgPSBzZWxmLnByZWZpeCArIHNlbGYuY291bnRlciArIHNlbGYucG9zdGZpeDtcblx0XHRcdHNlbGYuaGlzdG9yeVtjdXJyZW50XSA9IG1hdGNoO1xuXHRcdFx0KytzZWxmLmNvdW50ZXI7XG5cdFx0XHRyZXR1cm4gY3VycmVudDtcblx0XHR9O1xuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLmRhdGUgKioqKioqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogQ3JlYXRlIGEgZGF0ZSBvYmplY3Qgd2l0aCBlbmhhbmNlZCBwcm9jZXNzaW5nIGNhcGFiaWxpdGllcywgYSBsYVxuXHQgKiB7QGxpbmsgaHR0cHM6Ly9tb21lbnRqcy5jb20vfG1vbWVudC5qc30uIE1lZGlhV2lraSB0aW1lc3RhbXAgZm9ybWF0IGlzIGFsc29cblx0ICogYWNjZXB0YWJsZSwgaW4gYWRkaXRpb24gdG8gZXZlcnl0aGluZyB0aGF0IEpTIERhdGUoKSBhY2NlcHRzLlxuXHQgKlxuXHQgKiBAcGFyYW0gey4uLmFueX0gYXJnc1xuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICogQGNsYXNzXG5cdCAqL1xuXHRNb3JlYml0cy5kYXRlID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHQvLyBDaGVjayBNZWRpYVdpa2kgZm9ybWF0c1xuXHRcdC8vIE11c3QgYmUgZmlyc3Qgc2luY2UgZmlyZWZveCBlcnJvbmVvdXNseSBhY2NlcHRzIHRoZSB0aW1lc3RhbXBcblx0XHQvLyBmb3JtYXQsIHNhbnMgdGltZXpvbmUgKFNlZSBhbHNvOiAjOTIxLCAjOTM2LCAjMTE3NCwgIzExODcpLCBhbmQgdGhlXG5cdFx0Ly8gMTQtZGlnaXQgc3RyaW5nIHdpbGwgYmUgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkuXG5cdFx0aWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCBbcGFyYW1dID0gYXJncztcblx0XHRcdGlmICgvXlxcZHsxNH0kLy50ZXN0KHBhcmFtKSkge1xuXHRcdFx0XHQvLyBZWVlZTU1EREhIbW1zc1xuXHRcdFx0XHRjb25zdCBkaWdpdE1hdGNoID0gLyhcXGR7NH0pKFxcZHsyfSkoXFxkezJ9KShcXGR7Mn0pKFxcZHsyfSkoXFxkezJ9KS8uZXhlYyhwYXJhbSk7XG5cdFx0XHRcdGlmIChkaWdpdE1hdGNoKSB7XG5cdFx0XHRcdFx0Ly8gLi4uLi4geWVhciAuLi4gbW9udGggLi4gZGF0ZSAuLi4gaG91ciAuLi4uIG1pbnV0ZSAuLi4uLiBzZWNvbmRcblx0XHRcdFx0XHR0aGlzLl9kID0gbmV3IERhdGUoXG5cdFx0XHRcdFx0XHRSZWZsZWN0LmFwcGx5KERhdGUuVVRDLCBudWxsLCBbXG5cdFx0XHRcdFx0XHRcdGRpZ2l0TWF0Y2hbMV0sXG5cdFx0XHRcdFx0XHRcdGRpZ2l0TWF0Y2hbMl0gLSAxLFxuXHRcdFx0XHRcdFx0XHRkaWdpdE1hdGNoWzNdLFxuXHRcdFx0XHRcdFx0XHRkaWdpdE1hdGNoWzRdLFxuXHRcdFx0XHRcdFx0XHRkaWdpdE1hdGNoWzVdLFxuXHRcdFx0XHRcdFx0XHRkaWdpdE1hdGNoWzZdLFxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0Ly8gV2lraXRleHQgc2lnbmF0dXJlIHRpbWVzdGFtcFxuXHRcdFx0XHRjb25zdCBkYXRlUGFydHMgPSBNb3JlYml0cy5sMTBuLnNpZ25hdHVyZVRpbWVzdGFtcEZvcm1hdChwYXJhbSk7XG5cdFx0XHRcdGlmIChkYXRlUGFydHMpIHtcblx0XHRcdFx0XHR0aGlzLl9kID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgZGF0ZVBhcnRzKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gVHJ5IHN0YW5kYXJkIGRhdGVcblx0XHR0aGlzLl9kID8/PSBuZXcgKEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KERhdGUsIFtEYXRlLCAuLi5nZW5lcmF0ZUFycmF5KGFyZ3MpXSkpKCk7XG5cdFx0Ly8gU3RpbGwgbm8/XG5cdFx0aWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuXHRcdFx0bXcubG9nLndhcm4oJ0ludmFsaWQgTW9yZWJpdHMuZGF0ZSBpbml0aWFsaXNhdGlvbjonLCBhcmdzKTtcblx0XHR9XG5cdH07XG5cdC8qKlxuXHQgKiBMb2NhbGl6ZWQgc3RyaW5ncyBmb3IgZGF0ZSBwcm9jZXNzaW5nLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMuZGF0ZVxuXHQgKiBAdHlwZSB7b2JqZWN0LjxzdHJpbmcsIHN0cmluZz59XG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IG1vbnRoc1xuXHQgKiBAcHJvcGVydHkge3N0cmluZ1tdfSBtb250aHNTaG9ydFxuXHQgKiBAcHJvcGVydHkge3N0cmluZ1tdfSBkYXlzXG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGRheXNTaG9ydFxuXHQgKiBAcHJvcGVydHkge29iamVjdC48c3RyaW5nLCBzdHJpbmc+fSByZWxhdGl2ZVRpbWVzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEgPSB7XG5cdFx0Ly8gbWVzc2FnZSBuYW1lcyBoZXJlIGNvcnJlc3BvbmQgdG8gTWVkaWFXaWtpIG1lc3NhZ2UgbmFtZXNcblx0XHQvLyBObyBpMThuIGF0IHRoaXMgdGltZVxuXHRcdG1vbnRoczogWycx5pyIJywgJzLmnIgnLCAnM+aciCcsICc05pyIJywgJzXmnIgnLCAnNuaciCcsICc35pyIJywgJzjmnIgnLCAnOeaciCcsICcxMOaciCcsICcxMeaciCcsICcxMuaciCddLFxuXHRcdG1vbnRoc1Nob3J0OiBbJzHmnIgnLCAnMuaciCcsICcz5pyIJywgJzTmnIgnLCAnNeaciCcsICc25pyIJywgJzfmnIgnLCAnOOaciCcsICc55pyIJywgJzEw5pyIJywgJzEx5pyIJywgJzEy5pyIJ10sXG5cdFx0ZGF5czogWyfmmJ/mnJ/ml6UnLCAn5pif5pyf5LiAJywgJ+aYn+acn+S6jCcsICfmmJ/mnJ/kuIknLCAn5pif5pyf5ZubJywgJ+aYn+acn+S6lCcsICfmmJ/mnJ/lha0nXSxcblx0XHRkYXlzU2hvcnQ6IFsn5pelJywgJ+S4gCcsICfkuownLCAn5LiJJywgJ+WbmycsICfkupQnLCAn5YWtJ10sXG5cdFx0cmVsYXRpdmVUaW1lczoge1xuXHRcdFx0dGhpc0RheTogJ1vku4rlpKldQSBoaDptbScsXG5cdFx0XHRwcmV2RGF5OiAnW+aYqOWkqV1BIGhoOm1tJyxcblx0XHRcdG5leHREYXk6ICdb5piO5aSpXUEgaGg6bW0nLFxuXHRcdFx0dGhpc1dlZWs6ICdkZGRkQSBoaDptbScsXG5cdFx0XHRwYXN0V2VlazogJ1vkuIpdZGRkZEEgaGg6bW0nLFxuXHRcdFx0b3RoZXI6ICdZWVlZLU1NLUREJyxcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogTWFwIHVuaXRzIHdpdGggZ2V0dGVyL3NldHRlciBmdW5jdGlvbiBuYW1lcywgZm9yIGBhZGRgIGFuZCBgc3VidHJhY3RgXG5cdCAqIG1ldGhvZHMuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5kYXRlXG5cdCAqIEB0eXBlIHtvYmplY3QuPHN0cmluZywgc3RyaW5nPn1cblx0ICogQHByb3BlcnR5IHtzdHJpbmd9IHNlY29uZHNcblx0ICogQHByb3BlcnR5IHtzdHJpbmd9IG1pbnV0ZXNcblx0ICogQHByb3BlcnR5IHtzdHJpbmd9IGhvdXJzXG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYXlzXG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3ZWVrc1xuXHQgKiBAcHJvcGVydHkge3N0cmluZ30gbW9udGhzXG5cdCAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB5ZWFyc1xuXHQgKi9cblx0TW9yZWJpdHMuZGF0ZS51bml0TWFwID0ge1xuXHRcdHNlY29uZHM6ICdTZWNvbmRzJyxcblx0XHRtaW51dGVzOiAnTWludXRlcycsXG5cdFx0aG91cnM6ICdIb3VycycsXG5cdFx0ZGF5czogJ0RhdGUnLFxuXHRcdHdlZWtzOiAnV2VlaycsXG5cdFx0Ly8gTm90IGEgZnVuY3Rpb24gYnV0IGhhbmRsZWQgaW4gYGFkZGAgdGhyb3VnaCBjdW5uaW5nIHVzZSBvZiBtdWx0aXBsaWNhdGlvblxuXHRcdG1vbnRoczogJ01vbnRoJyxcblx0XHR5ZWFyczogJ0Z1bGxZZWFyJyxcblx0fTtcblx0TW9yZWJpdHMuZGF0ZS5wcm90b3R5cGUgPSB7XG5cdFx0LyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuXHRcdGlzVmFsaWQoKSB7XG5cdFx0XHRyZXR1cm4gIU51bWJlci5pc05hTih0aGlzLmdldFRpbWUoKSk7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBAcGFyYW0geyhEYXRlfE1vcmViaXRzLmRhdGUpfSBkYXRlXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdFx0ICovXG5cdFx0aXNCZWZvcmUoZGF0ZSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0VGltZSgpIDwgZGF0ZS5nZXRUaW1lKCk7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBAcGFyYW0geyhEYXRlfE1vcmViaXRzLmRhdGUpfSBkYXRlXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdFx0ICovXG5cdFx0aXNBZnRlcihkYXRlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRUaW1lKCkgPiBkYXRlLmdldFRpbWUoKTtcblx0XHR9LFxuXHRcdC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuXHRcdGdldFVUQ01vbnRoTmFtZSgpIHtcblx0XHRcdHJldHVybiBNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEubW9udGhzW3RoaXMuZ2V0VVRDTW9udGgoKV07XG5cdFx0fSxcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gKi9cblx0XHRnZXRVVENNb250aE5hbWVBYmJyZXYoKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLm1vbnRoc1Nob3J0W3RoaXMuZ2V0VVRDTW9udGgoKV07XG5cdFx0fSxcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gKi9cblx0XHRnZXRNb250aE5hbWUoKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLm1vbnRoc1t0aGlzLmdldE1vbnRoKCldO1xuXHRcdH0sXG5cdFx0LyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG5cdFx0Z2V0TW9udGhOYW1lQWJicmV2KCkge1xuXHRcdFx0cmV0dXJuIE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5tb250aHNTaG9ydFt0aGlzLmdldE1vbnRoKCldO1xuXHRcdH0sXG5cdFx0LyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG5cdFx0Z2V0VVRDRGF5TmFtZSgpIHtcblx0XHRcdHJldHVybiBNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEuZGF5c1t0aGlzLmdldFVUQ0RheSgpXTtcblx0XHR9LFxuXHRcdC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuXHRcdGdldFVUQ0RheU5hbWVBYmJyZXYoKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLmRheXNTaG9ydFt0aGlzLmdldFVUQ0RheSgpXTtcblx0XHR9LFxuXHRcdC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuXHRcdGdldERheU5hbWUoKSB7XG5cdFx0XHRyZXR1cm4gTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLmRheXNbdGhpcy5nZXREYXkoKV07XG5cdFx0fSxcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gKi9cblx0XHRnZXREYXlOYW1lQWJicmV2KCkge1xuXHRcdFx0cmV0dXJuIE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5kYXlzU2hvcnRbdGhpcy5nZXREYXkoKV07XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBBZGQgYSBnaXZlbiBudW1iZXIgb2YgbWludXRlcywgaG91cnMsIGRheXMsIHdlZWtzLCBtb250aHMsIG9yIHllYXJzIHRvIHRoZSBkYXRlLlxuXHRcdCAqIFRoaXMgaXMgZG9uZSBpbi1wbGFjZS4gVGhlIG1vZGlmaWVkIGRhdGUgb2JqZWN0IGlzIGFsc28gcmV0dXJuZWQsIGFsbG93aW5nIGNoYWluaW5nLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciAtIFNob3VsZCBiZSBhbiBpbnRlZ2VyLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB1bml0XG5cdFx0ICogQHRocm93cyBJZiBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIHVuaXQgaXMgZ2l2ZW4uXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLmRhdGV9XG5cdFx0ICovXG5cdFx0YWRkKG51bWJlciwgdW5pdCkge1xuXHRcdFx0bGV0IG51bSA9IE51bWJlci5wYXJzZUludChudW1iZXIsIDEwKTsgLy8gbm9ybWFsaXplXG5cdFx0XHRpZiAoTnVtYmVyLmlzTmFOKG51bSkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBudW1iZXIgXCIke251bWJlcn1cIiBwcm92aWRlZC5gKTtcblx0XHRcdH1cblx0XHRcdHVuaXQgPSB1bml0LnRvTG93ZXJDYXNlKCk7IC8vIG5vcm1hbGl6ZVxuXHRcdFx0Y29uc3Qge3VuaXRNYXB9ID0gTW9yZWJpdHMuZGF0ZTtcblx0XHRcdGxldCB1bml0Tm9ybSA9IHVuaXRNYXBbdW5pdF0gfHwgdW5pdE1hcFtgJHt1bml0fXNgXTsgLy8gc28gdGhhdCBib3RoIHNpbmd1bGFyIGFuZCAgcGx1cmFsIGZvcm1zIHdvcmtcblx0XHRcdGlmICh1bml0Tm9ybSkge1xuXHRcdFx0XHQvLyBObyBidWlsdC1pbiB3ZWVrIGZ1bmN0aW9ucywgc28gcmF0aGVyIHRoYW4gYnVpbGQgb3V0IElTTydzIGdldFdlZWsvc2V0V2VlaywganVzdCBtdWx0aXBseVxuXHRcdFx0XHQvLyBQcm9iYWJseSBjYW4ndCBiZSB1c2VkIGZvciBKdWxpYW4tPkdyZWdvcmlhbiBjaGFuZ2VvdmVycywgZXRjLlxuXHRcdFx0XHRpZiAodW5pdE5vcm0gPT09ICdXZWVrJykge1xuXHRcdFx0XHRcdHVuaXROb3JtID0gJ0RhdGUnO1xuXHRcdFx0XHRcdG51bSAqPSA3O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXNbYHNldCR7dW5pdE5vcm19YF0odGhpc1tgZ2V0JHt1bml0Tm9ybX1gXSgpICsgbnVtKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdCBcIiR7dW5pdH1cIjogT25seSAke09iamVjdC5rZXlzKHVuaXRNYXApLmpvaW4oJywgJyl9IGFyZSBhbGxvd2VkLmApO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU3VidHJhY3RzIGEgZ2l2ZW4gbnVtYmVyIG9mIG1pbnV0ZXMsIGhvdXJzLCBkYXlzLCB3ZWVrcywgbW9udGhzLCBvciB5ZWFycyB0byB0aGUgZGF0ZS5cblx0XHQgKiBUaGlzIGlzIGRvbmUgaW4tcGxhY2UuIFRoZSBtb2RpZmllZCBkYXRlIG9iamVjdCBpcyBhbHNvIHJldHVybmVkLCBhbGxvd2luZyBjaGFpbmluZy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgLSBTaG91bGQgYmUgYW4gaW50ZWdlci5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdW5pdFxuXHRcdCAqIEB0aHJvd3MgSWYgaW52YWxpZCBvciB1bnN1cHBvcnRlZCB1bml0IGlzIGdpdmVuLlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy5kYXRlfVxuXHRcdCAqL1xuXHRcdHN1YnRyYWN0KG51bWJlciwgdW5pdCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYWRkKC1udW1iZXIsIHVuaXQpO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogRm9ybWF0IHRoZSBkYXRlIGludG8gYSBzdHJpbmcgcGVyIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLlxuXHRcdCAqIFJlcGxhY2VtZW50IHN5bnRheCBpcyBhIHN1YnNldCBvZiB0aGF0IGluIG1vbWVudC5qczpcblx0XHQgKlxuXHRcdCAqIHwgU3ludGF4IHwgT3V0cHV0IHxcblx0XHQgKiB8LS0tLS0tLS18LS0tLS0tLS18XG5cdFx0ICogfCBIIHwgSG91cnMgKDI0LWhvdXIpIHxcblx0XHQgKiB8IEhIIHwgSG91cnMgKDI0LWhvdXIsIHBhZGRlZCB0byAyIGRpZ2l0cykgfFxuXHRcdCAqIHwgaCB8IEhvdXJzICgxMi1ob3VyKSB8XG5cdFx0ICogfCBoaCB8IEhvdXJzICgxMi1ob3VyLCBwYWRkZWQgdG8gMiBkaWdpdHMpIHxcblx0XHQgKiB8IEEgfCBBTSBvciBQTSB8XG5cdFx0ICogfCBtIHwgTWludXRlcyB8XG5cdFx0ICogfCBtbSB8IE1pbnV0ZXMgKHBhZGRlZCB0byAyIGRpZ2l0cykgfFxuXHRcdCAqIHwgcyB8IFNlY29uZHMgfFxuXHRcdCAqIHwgc3MgfCBTZWNvbmRzIChwYWRkZWQgdG8gMiBkaWdpdHMpIHxcblx0XHQgKiB8IFNTUyB8IE1pbGxpc2Vjb25kcyBmcmFnbWVudCwgMyBkaWdpdHMgfFxuXHRcdCAqIHwgZCB8IERheSBudW1iZXIgb2YgdGhlIHdlZWsgKFN1bj0wKSB8XG5cdFx0ICogfCBkZGQgfCBBYmJyZXZpYXRlZCBkYXkgbmFtZSB8XG5cdFx0ICogfCBkZGRkIHwgRnVsbCBkYXkgbmFtZSB8XG5cdFx0ICogfCBEIHwgRGF0ZSB8XG5cdFx0ICogfCBERCB8IERhdGUgKHBhZGRlZCB0byAyIGRpZ2l0cykgfFxuXHRcdCAqIHwgTSB8IE1vbnRoIG51bWJlciAoMS1pbmRleGVkKSB8XG5cdFx0ICogfCBNTSB8IE1vbnRoIG51bWJlciAoMS1pbmRleGVkLCBwYWRkZWQgdG8gMiBkaWdpdHMpIHxcblx0XHQgKiB8IE1NTSB8IEFiYnJldmlhdGVkIG1vbnRoIG5hbWUgfFxuXHRcdCAqIHwgTU1NTSB8IEZ1bGwgbW9udGggbmFtZSB8XG5cdFx0ICogfCBZIHwgWWVhciB8XG5cdFx0ICogfCBZWSB8IEZpbmFsIHR3byBkaWdpdHMgb2YgeWVhciAoMjAgZm9yIDIwMjAsIDQyIGZvciAxOTQyKSB8XG5cdFx0ICogfCBZWVlZIHwgWWVhciAoc2FtZSBhcyBgWWApIHxcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRzdHIgLSBGb3JtYXQgdGhlIGRhdGUgaW50byBhIHN0cmluZywgdXNpbmdcblx0XHQgKiB0aGUgcmVwbGFjZW1lbnQgc3ludGF4LiAgVXNlIGBbYCBhbmQgYF1gIHRvIGVzY2FwZSBpdGVtcy4gIElmIG5vdFxuXHRcdCAqIHByb3ZpZGVkLCB3aWxsIHJldHVybiB0aGUgSVNPLTg2MDEtZm9ybWF0dGVkIHN0cmluZy5cblx0XHQgKiBAcGFyYW0geyhzdHJpbmd8bnVtYmVyKX0gW3pvbmU9c3lzdGVtXSAtIGBzeXN0ZW1gIChmb3IgYnJvd3Nlci1kZWZhdWx0IHRpbWUgem9uZSksXG5cdFx0ICogYHV0Y2AsIG9yIHNwZWNpZnkgYSB0aW1lIHpvbmUgYXMgbnVtYmVyIG9mIG1pbnV0ZXMgcmVsYXRpdmUgdG8gVVRDLlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Zm9ybWF0KGZvcm1hdHN0ciwgem9uZSkge1xuXHRcdFx0aWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuXHRcdFx0XHRyZXR1cm4gJ0ludmFsaWQgZGF0ZSc7IC8vIFB1dCB0aGUgdHJ1dGggb3V0LCBwcmVmZXJhYmxlIHRvIFwiTmFOTmFOTmFuIE5hTjpOYU5cIiBvciB3aGF0ZXZlclxuXHRcdFx0fVxuXG5cdFx0XHRsZXQgdWRhdGUgPSB0aGlzO1xuXHRcdFx0Ly8gY3JlYXRlIGEgbmV3IGRhdGUgb2JqZWN0IHRoYXQgd2lsbCBjb250YWluIHRoZSBkYXRlIHRvIGRpc3BsYXkgYXMgc3lzdGVtIHRpbWVcblx0XHRcdGlmICh6b25lID09PSAndXRjJykge1xuXHRcdFx0XHR1ZGF0ZSA9IG5ldyBNb3JlYml0cy5kYXRlKHRoaXMuZ2V0VGltZSgpKS5hZGQodGhpcy5nZXRUaW1lem9uZU9mZnNldCgpLCAnbWludXRlcycpO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygem9uZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Ly8gY29udmVydCB0byB1dGMsIHRoZW4gYWRkIHRoZSB1dGMgb2Zmc2V0IGdpdmVuXG5cdFx0XHRcdHVkYXRlID0gbmV3IE1vcmViaXRzLmRhdGUodGhpcy5nZXRUaW1lKCkpLmFkZCh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgKyB6b25lLCAnbWludXRlcycpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gZGVmYXVsdCB0byBJU09TdHJpbmdcblx0XHRcdGlmICghZm9ybWF0c3RyKSB7XG5cdFx0XHRcdHJldHVybiB1ZGF0ZS50b0lTT1N0cmluZygpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFkID0gKG51bSwgbGVuKSA9PiB7XG5cdFx0XHRcdGxlbiB8fD0gMjsgLy8gVXAgdG8gbGVuZ3RoIG9mIDAwICsgMVxuXHRcdFx0XHRyZXR1cm4gYDAwJHtudW19YC50b1N0cmluZygpLnNsaWNlKDAgLSBsZW4pO1xuXHRcdFx0fTtcblx0XHRcdGNvbnN0IGgyNCA9IHVkYXRlLmdldEhvdXJzKCk7XG5cdFx0XHRjb25zdCBtID0gdWRhdGUuZ2V0TWludXRlcygpO1xuXHRcdFx0Y29uc3QgcyA9IHVkYXRlLmdldFNlY29uZHMoKTtcblx0XHRcdGNvbnN0IG1zID0gdWRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XG5cdFx0XHRjb25zdCBEID0gdWRhdGUuZ2V0RGF0ZSgpO1xuXHRcdFx0Y29uc3QgTSA9IHVkYXRlLmdldE1vbnRoKCkgKyAxO1xuXHRcdFx0Y29uc3QgWSA9IHVkYXRlLmdldEZ1bGxZZWFyKCk7XG5cdFx0XHRjb25zdCBoMTIgPSBoMjQgJSAxMiB8fCAxMjtcblx0XHRcdGNvbnN0IGFtT3JQbSA9IGgyNCA+PSAxMiA/ICfkuIvljYgnIDogJ+S4iuWNiCc7XG5cdFx0XHRjb25zdCByZXBsYWNlbWVudE1hcCA9IHtcblx0XHRcdFx0SEg6IHBhZChoMjQpLFxuXHRcdFx0XHRIOiBoMjQsXG5cdFx0XHRcdGhoOiBwYWQoaDEyKSxcblx0XHRcdFx0aDogaDEyLFxuXHRcdFx0XHRBOiBhbU9yUG0sXG5cdFx0XHRcdG1tOiBwYWQobSksXG5cdFx0XHRcdG0sXG5cdFx0XHRcdHNzOiBwYWQocyksXG5cdFx0XHRcdHMsXG5cdFx0XHRcdFNTUzogcGFkKG1zLCAzKSxcblx0XHRcdFx0ZGRkZDogdWRhdGUuZ2V0RGF5TmFtZSgpLFxuXHRcdFx0XHRkZGQ6IHVkYXRlLmdldERheU5hbWVBYmJyZXYoKSxcblx0XHRcdFx0ZDogdWRhdGUuZ2V0RGF5KCksXG5cdFx0XHRcdEREOiBwYWQoRCksXG5cdFx0XHRcdEQsXG5cdFx0XHRcdE1NTU06IHVkYXRlLmdldE1vbnRoTmFtZSgpLFxuXHRcdFx0XHRNTU06IHVkYXRlLmdldE1vbnRoTmFtZUFiYnJldigpLFxuXHRcdFx0XHRNTTogcGFkKE0pLFxuXHRcdFx0XHRNLFxuXHRcdFx0XHRZWVlZOiBZLFxuXHRcdFx0XHRZWTogcGFkKFkgJSAxMDApLFxuXHRcdFx0XHRZLFxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IHVuYmluZGVyID0gbmV3IE1vcmViaXRzLnVuYmluZGVyKGZvcm1hdHN0cik7IC8vIGVzY2FwZSBzdHVmZiBiZXR3ZWVuIFsuLi5dXG5cdFx0XHR1bmJpbmRlci51bmJpbmQoU3RyaW5nLnJhd2BcXFtgLCBTdHJpbmcucmF3YFxcXWApO1xuXHRcdFx0dW5iaW5kZXIuY29udGVudCA9IHVuYmluZGVyLmNvbnRlbnQucmVwbGFjZShcblx0XHRcdFx0LyogUmVnZXggbm90ZXM6XG5cdFx0XHRcdCAqIGQoZHsyLDN9KT8gbWF0Y2hlcyBleGFjdGx5IDEsIDMgb3IgNCBvY2N1cnJlbmNlcyBvZiAnZCcgKCdkZCcgaXMgdHJlYXRlZCBhcyBhIGRvdWJsZSBtYXRjaCBvZiAnZCcpXG5cdFx0XHRcdCAqIFl7MSwyfShZezJ9KT8gbWF0Y2hlcyBleGFjdGx5IDEsIDIgb3IgNCBvY2N1cnJlbmNlcyBvZiAnWSdcblx0XHRcdFx0ICovXG5cdFx0XHRcdC9IezEsMn18aHsxLDJ9fG17MSwyfXxzezEsMn18U1NTfGQoZHsyLDN9KT98RHsxLDJ9fE17MSw0fXxZezEsMn0oWXsyfSk/fEEvZyxcblx0XHRcdFx0KG1hdGNoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlcGxhY2VtZW50TWFwW21hdGNoXTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB1bmJpbmRlci5yZWJpbmQoKS5yZXBsYWNlKC9cXFsoLio/KVxcXS9nLCAnJDEnKTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEdpdmVzIGEgcmVhZGFibGUgcmVsYXRpdmUgdGltZSBzdHJpbmcgc3VjaCBhcyBcIlllc3RlcmRheSBhdCA2OjQzIFBNXCIgb3IgXCJMYXN0IFRodXJzZGF5IGF0IDExOjQ1IEFNXCIuXG5cdFx0ICogU2ltaWxhciB0byBgY2FsZW5kYXJgIGluIG1vbWVudC5qcywgYnV0IHdpdGggdGltZSB6b25lIHN1cHBvcnQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0geyhzdHJpbmd8bnVtYmVyKX0gW3pvbmU9c3lzdGVtXSAtICdzeXN0ZW0nIChmb3IgYnJvd3Nlci1kZWZhdWx0IHRpbWUgem9uZSksXG5cdFx0ICogJ3V0YycgKGZvciBVVEMpLCBvciBzcGVjaWZ5IGEgdGltZSB6b25lIGFzIG51bWJlciBvZiBtaW51dGVzIHBhc3QgVVRDLlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Y2FsZW5kYXIoem9uZSkge1xuXHRcdFx0Ly8gWmVybyBvdXQgdGhlIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgLSBrZWVwaW5nIG9ubHkgdGhlIGRhdGU7XG5cdFx0XHQvLyBmaW5kIHRoZSBkaWZmZXJlbmNlLiBOb3RlIHRoYXQgc2V0SG91cnMoKSByZXR1cm5zIHRoZSBzYW1lIHRoaW5nIGFzIGdldFRpbWUoKS5cblx0XHRcdGNvbnN0IGRhdGVEaWZmID0gKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkgLSBuZXcgRGF0ZSh0aGlzKS5zZXRIb3VycygwLCAwLCAwLCAwKSkgLyA4LjY0ZTc7XG5cdFx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRcdFx0Y2FzZSBkYXRlRGlmZiA9PT0gMDpcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5mb3JtYXQoTW9yZWJpdHMuZGF0ZS5sb2NhbGVEYXRhLnJlbGF0aXZlVGltZXMudGhpc0RheSwgem9uZSk7XG5cdFx0XHRcdGNhc2UgZGF0ZURpZmYgPT09IDE6XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0KE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5yZWxhdGl2ZVRpbWVzLnByZXZEYXksIHpvbmUpO1xuXHRcdFx0XHRjYXNlIGRhdGVEaWZmID4gMCAmJiBkYXRlRGlmZiA8IDc6XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0KE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5yZWxhdGl2ZVRpbWVzLnBhc3RXZWVrLCB6b25lKTtcblx0XHRcdFx0Y2FzZSBkYXRlRGlmZiA9PT0gLTE6XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0KE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5yZWxhdGl2ZVRpbWVzLm5leHREYXksIHpvbmUpO1xuXHRcdFx0XHRjYXNlIGRhdGVEaWZmIDwgMCAmJiBkYXRlRGlmZiA+IC03OlxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmZvcm1hdChNb3JlYml0cy5kYXRlLmxvY2FsZURhdGEucmVsYXRpdmVUaW1lcy50aGlzV2Vlaywgem9uZSk7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZm9ybWF0KE1vcmViaXRzLmRhdGUubG9jYWxlRGF0YS5yZWxhdGl2ZVRpbWVzLm90aGVyLCB6b25lKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIEdldCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgd2lraXRleHQgc2VjdGlvbiB0aXRsZXMsIHN1Y2hcblx0XHQgKiBhcyBgPT1EZWNlbWJlciAyMDE5PT1gIG9yIGA9PT0gSmFuIDIwMTggPT09YC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtSZWdFeHB9XG5cdFx0ICovXG5cdFx0bW9udGhIZWFkZXJSZWdleCgpIHtcblx0XHRcdHJldHVybiBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgXig9PSspXFxcXHMqJHt0aGlzLmdldFVUQ0Z1bGxZZWFyKCl95bm0KD86JHt0aGlzLmdldFVUQ01vbnRoTmFtZSgpfXwke3RoaXMuZ2V0VVRDTW9udGhOYW1lQWJicmV2KCl9KVxcXFxzKlxcXFwxYCxcblx0XHRcdFx0J21nJ1xuXHRcdFx0KTtcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIENyZWF0ZXMgYSB3aWtpdGV4dCBzZWN0aW9uIGhlYWRlciB3aXRoIHRoZSBtb250aCBhbmQgeWVhci5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7bnVtYmVyfSBbbGV2ZWw9Ml0gLSBIZWFkZXIgbGV2ZWwuICBQYXNzIDAgZm9yIGp1c3QgdGhlIHRleHRcblx0XHQgKiB3aXRoIG5vIHdpa2l0ZXh0IG1hcmtlcnMgKD09KS5cblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdG1vbnRoSGVhZGVyKGxldmVsKSB7XG5cdFx0XHQvLyBEZWZhdWx0IHRvIDIsIGJ1dCBhbGxvdyBmb3IgMCBvciBzdHJpbmd5IG51bWJlcnNcblx0XHRcdGxldmVsID0gTnVtYmVyLnBhcnNlSW50KGxldmVsLCAxMCk7XG5cdFx0XHRsZXZlbCA9IE51bWJlci5pc05hTihsZXZlbCkgPyAyIDogbGV2ZWw7XG5cdFx0XHRjb25zdCBoZWFkZXIgPSAnPScucmVwZWF0KGxldmVsKTtcblx0XHRcdGNvbnN0IHRleHQgPSBgJHt0aGlzLmdldFVUQ0Z1bGxZZWFyKCl95bm0JHt0aGlzLmdldFVUQ01vbnRoTmFtZSgpfWA7XG5cdFx0XHRpZiAoaGVhZGVyLmxlbmd0aCkge1xuXHRcdFx0XHQvLyB3aWtpdGV4dC1mb3JtYXR0ZWQgaGVhZGVyXG5cdFx0XHRcdHJldHVybiBgJHtoZWFkZXJ9ICR7dGV4dH0gJHtoZWFkZXJ9YDtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0ZXh0OyAvLyBKdXN0IHRoZSBzdHJpbmdcblx0XHR9LFxuXHR9O1xuXHQvLyBBbGxvdyBuYXRpdmUgRGF0ZS5wcm90b3R5cGUgbWV0aG9kcyB0byBiZSB1c2VkIG9uIE1vcmViaXRzLmRhdGUgb2JqZWN0c1xuXHRmb3IgKGNvbnN0IGZ1bmMgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoRGF0ZS5wcm90b3R5cGUpKSB7XG5cdFx0Ly8gRXhjbHVkZSBtZXRob2RzIHRoYXQgY29sbGlkZSB3aXRoIFBhZ2VUcmlhZ2UncyBEYXRlLmpzIGV4dGVybmFsLCB3aGljaCBjbG9iYmVycyBuYXRpdmUgRGF0ZVxuXHRcdGlmICghWydhZGQnLCAnZ2V0RGF5TmFtZScsICdnZXRNb250aE5hbWUnXS5pbmNsdWRlcyhmdW5jKSkge1xuXHRcdFx0TW9yZWJpdHMuZGF0ZS5wcm90b3R5cGVbZnVuY10gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fZFtmdW5jXSguLi5hcmdzKTtcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cdC8qICoqKioqKioqKioqKioqKiogTW9yZWJpdHMud2lraSAqKioqKioqKioqKioqKioqICovXG5cdC8qKlxuXHQgKiBWYXJpb3VzIG9iamVjdHMgZm9yIHdpa2kgZWRpdGluZyBhbmQgQVBJIGFjY2VzcywgaW5jbHVkaW5nXG5cdCAqIHtAbGluayBNb3JlYml0cy53aWtpLmFwaX0gYW5kIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2V9LlxuXHQgKlxuXHQgKiBAbmFtZXNwYWNlIE1vcmViaXRzLndpa2lcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzXG5cdCAqL1xuXHRNb3JlYml0cy53aWtpID0ge307XG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCBhcyBvZiBOb3ZlbWJlciAyMDIwXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0TW9yZWJpdHMud2lraS5pc1BhZ2VSZWRpcmVjdCA9ICgpID0+IHtcblx0XHRjb25zb2xlLndhcm4oXG5cdFx0XHQnW01vcmViaXRzXSBOT1RFOiBNb3JlYml0cy53aWtpLmlzUGFnZVJlZGlyZWN0IGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZSBNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCBpbnN0ZWFkLidcblx0XHQpO1xuXHRcdHJldHVybiBNb3JlYml0cy5pc1BhZ2VSZWRpcmVjdCgpO1xuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkICoqKioqKioqKioqKioqKiogKi9cblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpXG5cdCAqIEB0eXBlIHtudW1iZXJ9XG5cdCAqL1xuXHRNb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQgPSAwO1xuXHQvKipcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLndpa2lcblx0ICogQHR5cGUge251bWJlcn1cblx0ICovXG5cdE1vcmViaXRzLndpa2kubmJyT2ZDaGVja3BvaW50c0xlZnQgPSAwO1xuXHQvKipcblx0ICogRGlzcGxheSBtZXNzYWdlIGFuZC9vciByZWRpcmVjdCB0byBwYWdlIHVwb24gY29tcGxldGlvbiBvZiB0YXNrcy5cblx0ICpcblx0ICogRXZlcnkgY2FsbCB0byBNb3JlYml0cy53aWtpLmFwaS5wb3N0KCkgcmVzdWx0cyBpbiB0aGUgZGlzcGF0Y2ggb2YgYW5cblx0ICogYXN5bmNocm9ub3VzIGNhbGxiYWNrLiBFYWNoIGNhbGxiYWNrIGNhbiBpbiB0dXJuIG1ha2UgYW4gYWRkaXRpb25hbCBjYWxsIHRvXG5cdCAqIE1vcmViaXRzLndpa2kuYXBpLnBvc3QoKSB0byBjb250aW51ZSBhIHByb2Nlc3Npbmcgc2VxdWVuY2UuIEF0IHRoZVxuXHQgKiBjb25jbHVzaW9uIG9mIHRoZSBmaW5hbCBjYWxsYmFjayBvZiBhIHByb2Nlc3Npbmcgc2VxdWVuY2UsIGl0IGlzIG5vdFxuXHQgKiBwb3NzaWJsZSB0byBzaW1wbHkgcmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIgYmVjYXVzZSB0aGVyZSBpcyBubyBjYWxsXG5cdCAqIHN0YWNrIGxlYWRpbmcgYmFjayB0byB0aGUgb3JpZ2luYWwgY29udGV4dC4gSW5zdGVhZCxcblx0ICogTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZXZlbnQoKSBpcyBjYWxsZWQgdG8gZGlzcGxheSB0aGUgcmVzdWx0IHRvXG5cdCAqIHRoZSB1c2VyIGFuZCB0byBwZXJmb3JtIGFuIG9wdGlvbmFsIHBhZ2UgcmVkaXJlY3QuXG5cdCAqXG5cdCAqIFRoZSBkZXRlcm1pbmF0aW9uIG9mIHdoZW4gdG8gY2FsbCBNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ldmVudCgpIGlzXG5cdCAqIG1hbmFnZWQgdGhyb3VnaCB0aGUgZ2xvYmFscyBNb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQgYW5kXG5cdCAqIE1vcmViaXRzLndpa2kubmJyT2ZDaGVja3BvaW50c0xlZnQuIE1vcmViaXRzLndpa2kubnVtYmVyT2ZBY3Rpb25zTGVmdCBpc1xuXHQgKiBpbmNyZW1lbnRlZCBhdCB0aGUgc3RhcnQgb2YgZXZlcnkgTW9yZWJpdHMud2lraS5hcGkgY2FsbCBhbmQgZGVjcmVtZW50ZWRcblx0ICogYWZ0ZXIgdGhlIGNvbXBsZXRpb24gb2YgYSBjYWxsYmFjayBmdW5jdGlvbi4gSWYgYSBjYWxsYmFjayBmdW5jdGlvbiBkb2VzXG5cdCAqIG5vdCBjcmVhdGUgYSBuZXcgTW9yZWJpdHMud2lraS5hcGkgb2JqZWN0IGJlZm9yZSBleGl0aW5nLCBpdCBpcyB0aGUgZmluYWxcblx0ICogc3RlcCBpbiB0aGUgcHJvY2Vzc2luZyBjaGFpbiBhbmQgTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZXZlbnQoKSB3aWxsXG5cdCAqIHRoZW4gYmUgY2FsbGVkLlxuXHQgKlxuXHQgKiBPcHRpb25hbGx5LCBjYWxsZXJzIG1heSB1c2UgTW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50KCkgdG8gaW5kaWNhdGUgdGhhdFxuXHQgKiBwcm9jZXNzaW5nIGlzIG5vdCBjb21wbGV0ZSB1cG9uIHRoZSBjb25jbHVzaW9uIG9mIHRoZSBmaW5hbCBjYWxsYmFja1xuXHQgKiBmdW5jdGlvbi4gIFRoaXMgaXMgdXNlZCBmb3IgYmF0Y2ggb3BlcmF0aW9ucy4gVGhlIGVuZCBvZiBhIGJhdGNoIGlzXG5cdCAqIHNpZ25hbGVkIGJ5IGNhbGxpbmcgTW9yZWJpdHMud2lraS5yZW1vdmVDaGVja3BvaW50KCkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7dHlwZW9mIE1vcmViaXRzfSBzZWxmXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpXG5cdCAqL1xuXHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZCA9IChzZWxmKSA9PiB7XG5cdFx0aWYgKC0tTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0IDw9IDAgJiYgTW9yZWJpdHMud2lraS5uYnJPZkNoZWNrcG9pbnRzTGVmdCA8PSAwKSB7XG5cdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ldmVudChzZWxmKTtcblx0XHR9XG5cdH07XG5cdC8vIENoYW5nZSBwZXIgYWN0aW9uIHdhbnRlZFxuXHQvKiogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kgKi9cblx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZXZlbnQgPSAoKSA9PiB7XG5cdFx0aWYgKE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZSkge1xuXHRcdFx0TW9yZWJpdHMuc3RhdHVzLmFjdGlvbkNvbXBsZXRlZChNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UpO1xuXHRcdH1cblx0XHRpZiAoTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QpIHtcblx0XHRcdC8vIGlmIGl0IGlzbid0IGEgVVJMLCBtYWtlIGl0IG9uZS4gVE9ETzogVGhpcyBicmVha3Mgb24gdGhlIGFydGljbGVzICdodHRwOi8vJywgJ2Z0cDovLycsIGFuZCBzaW1pbGFyIG9uZXMuXG5cdFx0XHRpZiAoIS9eXFx3KzpcXC9cXC8vLnRlc3QoTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QpKSB7XG5cdFx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0ID0gbXcudXRpbC5nZXRVcmwoTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QpO1xuXHRcdFx0XHRpZiAoTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQuZm9sbG93UmVkaXJlY3QgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQucmVkaXJlY3QgKz0gJz9yZWRpcmVjdD1ubyc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRsb2NhdGlvbiA9IE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLnJlZGlyZWN0O1xuXHRcdFx0fSwgTW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQudGltZU91dCk7XG5cdFx0fVxuXHR9O1xuXHQvKiogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kgKi9cblx0TW9yZWJpdHMud2lraS5hY3Rpb25Db21wbGV0ZWQudGltZU91dCA9XG5cdFx0d2luZG93LndwQWN0aW9uQ29tcGxldGVkVGltZU91dCA9PT0gdW5kZWZpbmVkID8gNTAwMCA6IHdpbmRvdy53cEFjdGlvbkNvbXBsZXRlZFRpbWVPdXQ7XG5cdC8qKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraSAqL1xuXHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdCA9IG51bGw7XG5cdC8qKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraSAqL1xuXHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5ub3RpY2UgPSBudWxsO1xuXHQvKiogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kgKi9cblx0TW9yZWJpdHMud2lraS5hZGRDaGVja3BvaW50ID0gKCkgPT4ge1xuXHRcdCsrTW9yZWJpdHMud2lraS5uYnJPZkNoZWNrcG9pbnRzTGVmdDtcblx0fTtcblx0LyoqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpICovXG5cdE1vcmViaXRzLndpa2kucmVtb3ZlQ2hlY2twb2ludCA9ICgpID0+IHtcblx0XHRpZiAoLS1Nb3JlYml0cy53aWtpLm5ick9mQ2hlY2twb2ludHNMZWZ0IDw9IDAgJiYgTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0IDw9IDApIHtcblx0XHRcdE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLmV2ZW50KCk7XG5cdFx0fVxuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLndpa2kuYXBpICoqKioqKioqKioqKioqKiogKi9cblx0LyoqXG5cdCAqIEFuIGVhc3kgd2F5IHRvIHRhbGsgdG8gdGhlIE1lZGlhV2lraSBBUEkuICBBY2NlcHRzIGVpdGhlciBqc29uIG9yIHhtbFxuXHQgKiAoZGVmYXVsdCkgZm9ybWF0czsgaWYganNvbiBpcyBzZWxlY3RlZCwgd2lsbCBkZWZhdWx0IHRvIGBmb3JtYXR2ZXJzaW9uPTJgXG5cdCAqIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLiAgU2ltaWxhcmx5LCBlbmZvcmNlcyBuZXdlciBgZXJyb3Jmb3JtYXRgcyxcblx0ICogZGVmYXVsdGluZyB0byBgaHRtbGAgaWYgdW5zcGVjaWZpZWQuICBgdXNlbGFuZ2AgZW5mb3JjZWQgdG8gdGhlIHdpa2knc1xuXHQgKiBjb250ZW50IGxhbmd1YWdlLlxuXHQgKlxuXHQgKiBJbiBuZXcgY29kZSwgdGhlIHVzZSBvZiB0aGUgbGFzdCAzIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGF2b2lkZWQsIGluc3RlYWRcblx0ICogdXNlIHtAbGluayBNb3JlYml0cy53aWtpLmFwaSNzZXRTdGF0dXNFbGVtZW50fHNldFN0YXR1c0VsZW1lbnQoKX0gdG8gYmluZFxuXHQgKiB0aGUgc3RhdHVzIGVsZW1lbnQgKGlmIG5lZWRlZCkgYW5kIHVzZSBgLnRoZW4oKWAgb3IgYC5jYXRjaCgpYCBvbiB0aGVcblx0ICogcHJvbWlzZSByZXR1cm5lZCBieSBgcG9zdCgpYCwgcmF0aGVyIHRoYW4gc3BlY2lmeSB0aGUgYG9uU3VjY2Vzc2Agb3Jcblx0ICogYG9uRmFpbHVyZWAgY2FsbGJhY2tzLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraVxuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRBY3Rpb24gLSBUaGUgY3VycmVudCBhY3Rpb24gKHJlcXVpcmVkKS5cblx0ICogQHBhcmFtIHtPYmplY3R9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IChyZXF1aXJlZCkuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvblN1Y2Nlc3NdIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiByZXF1ZXN0IGlzIHN1Y2Nlc3NmdWwuXG5cdCAqIEBwYXJhbSB7TW9yZWJpdHMuc3RhdHVzfSBbc3RhdHVzRWxlbWVudF0gLSBBIE1vcmViaXRzLnN0YXR1cyBvYmplY3QgdG8gdXNlIGZvciBzdGF0dXMgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvbkVycm9yXSAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIGlmIGFuIGVycm9yIG9jY3Vycy5cblx0ICovXG5cdE1vcmViaXRzLndpa2kuYXBpID0gZnVuY3Rpb24gKGN1cnJlbnRBY3Rpb24sIHF1ZXJ5LCBvblN1Y2Nlc3MsIHN0YXR1c0VsZW1lbnQsIG9uRXJyb3IpIHtcblx0XHR0aGlzLmN1cnJlbnRBY3Rpb24gPSBjdXJyZW50QWN0aW9uO1xuXHRcdHRoaXMucXVlcnkgPSBxdWVyeTtcblx0XHR0aGlzLnF1ZXJ5LmFzc2VydCA9ICd1c2VyJztcblx0XHQvLyBFbmZvcmNlIG5ld2VyIGVycm9yIGZvcm1hdHMsIHByZWZlcnJpbmcgaHRtbFxuXHRcdGlmICghcXVlcnkuZXJyb3Jmb3JtYXQgfHwgIVsnd2lraXRleHQnLCAncGxhaW50ZXh0J10uaW5jbHVkZXMocXVlcnkuZXJyb3Jmb3JtYXQpKSB7XG5cdFx0XHR0aGlzLnF1ZXJ5LmVycm9yZm9ybWF0ID0gJ2h0bWwnO1xuXHRcdH1cblx0XHQvLyBFeHBsaWNpdGx5IHVzZSB0aGUgd2lraSdzIGNvbnRlbnQgbGFuZ3VhZ2UgdG8gbWluaW1pemUgY29uZnVzaW9uLFxuXHRcdC8vIHNlZSAjMTE3OSBmb3IgZGlzY3Vzc2lvblxuXHRcdHRoaXMucXVlcnkudXNlbGFuZyB8fD0gJ2NvbnRlbnQnOyAvLyBVc2Ugd2dVc2VyTGFuZ3VhZ2UgZm9yIHByZXZpZXdcblx0XHR0aGlzLnF1ZXJ5LmVycm9ybGFuZyA9ICd1c2VsYW5nJztcblx0XHR0aGlzLnF1ZXJ5LmVycm9yc3VzZWxvY2FsID0gMTtcblx0XHR0aGlzLm9uU3VjY2VzcyA9IG9uU3VjY2Vzcztcblx0XHR0aGlzLm9uRXJyb3IgPSBvbkVycm9yO1xuXHRcdGlmIChzdGF0dXNFbGVtZW50KSB7XG5cdFx0XHR0aGlzLnNldFN0YXR1c0VsZW1lbnQoc3RhdHVzRWxlbWVudCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc3RhdGVsZW0gPSBuZXcgTW9yZWJpdHMuc3RhdHVzKGN1cnJlbnRBY3Rpb24pO1xuXHRcdH1cblx0XHQvLyBKU09OIGlzIHVzZWQgdGhyb3VnaG91dCBNb3JlYml0cy9Ud2lua2xlLCBidXQgeG1sIHJlbWFpbnMgdGhlIGRlZmF1bHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0aWYgKCFxdWVyeS5mb3JtYXQpIHtcblx0XHRcdHRoaXMucXVlcnkuZm9ybWF0ID0gJ3htbCc7XG5cdFx0fSBlbHNlIGlmIChxdWVyeS5mb3JtYXQgPT09ICdqc29uJyAmJiAhcXVlcnkuZm9ybWF0dmVyc2lvbikge1xuXHRcdFx0dGhpcy5xdWVyeS5mb3JtYXR2ZXJzaW9uID0gJzInO1xuXHRcdH0gZWxzZSBpZiAoIVsneG1sJywgJ2pzb24nXS5pbmNsdWRlcyhxdWVyeS5mb3JtYXQpKSB7XG5cdFx0XHR0aGlzLnN0YXRlbGVtLmVycm9yKCdJbnZhbGlkIEFQSSBmb3JtYXQ6IG9ubHkgeG1sIGFuZCBqc29uIGFyZSBzdXBwb3J0ZWQuJyk7XG5cdFx0fVxuXHRcdC8vIElnbm9yZSB0YWdzIGZvciBxdWVyaWVzIGFuZCBtb3N0IGNvbW1vbiB1bnN1cHBvcnRlZCBhY3Rpb25zLCBwcm9kdWNlcyB3YXJuaW5nc1xuXHRcdGlmIChxdWVyeS5hY3Rpb24gJiYgWydxdWVyeScsICd3YXRjaCddLmluY2x1ZGVzKHF1ZXJ5LmFjdGlvbikpIHtcblx0XHRcdGRlbGV0ZSBxdWVyeS50YWdzO1xuXHRcdH0gZWxzZSBpZiAoIXF1ZXJ5LnRhZ3MgJiYgbW9yZWJpdHNXaWtpQ2hhbmdlVGFnKSB7XG5cdFx0XHRxdWVyeS50YWdzID0gbW9yZWJpdHNXaWtpQ2hhbmdlVGFnO1xuXHRcdH1cblx0fTtcblx0TW9yZWJpdHMud2lraS5hcGkucHJvdG90eXBlID0ge1xuXHRcdGN1cnJlbnRBY3Rpb246ICcnLFxuXHRcdG9uU3VjY2VzczogbnVsbCxcblx0XHRvbkVycm9yOiBudWxsLFxuXHRcdHBhcmVudDogd2luZG93LFxuXHRcdC8vIHVzZSBnbG9iYWwgY29udGV4dCBpZiB0aGVyZSBpcyBubyBwYXJlbnQgb2JqZWN0XG5cdFx0cXVlcnk6IG51bGwsXG5cdFx0cmVzcG9uc2U6IG51bGwsXG5cdFx0cmVzcG9uc2VYTUw6IG51bGwsXG5cdFx0Ly8gdXNlIGByZXNwb25zZWAgaW5zdGVhZDsgcmV0YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0c3RhdGVsZW06IG51bGwsXG5cdFx0Ly8gdGhpcyBub24tc3RhbmRhcmQgbmFtZSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXHRcdHN0YXR1c1RleHQ6IG51bGwsXG5cdFx0Ly8gcmVzdWx0IHJlY2VpdmVkIGZyb20gdGhlIEFQSSwgbm9ybWFsbHkgXCJzdWNjZXNzXCIgb3IgXCJlcnJvclwiXG5cdFx0ZXJyb3JDb2RlOiBudWxsLFxuXHRcdC8vIHNob3J0IHRleHQgZXJyb3IgY29kZSwgaWYgYW55LCBhcyBkb2N1bWVudGVkIGluIHRoZSBNZWRpYVdpa2kgQVBJXG5cdFx0ZXJyb3JUZXh0OiBudWxsLFxuXHRcdC8vIGZ1bGwgZXJyb3IgZGVzY3JpcHRpb24sIGlmIGFueVxuXHRcdGJhZHRva2VuUmV0cnk6IGZhbHNlLFxuXHRcdC8vIHNldCB0byB0cnVlIGlmIHRoaXMgb24gYSByZXRyeSBhdHRlbXB0ZWQgYWZ0ZXIgYSBiYWR0b2tlbiBlcnJvclxuXHRcdC8qKlxuXHRcdCAqIEtlZXAgdHJhY2sgb2YgcGFyZW50IG9iamVjdCBmb3IgY2FsbGJhY2tzLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHsqfSBwYXJlbnRcblx0XHQgKi9cblx0XHRzZXRQYXJlbnQocGFyZW50KSB7XG5cdFx0XHR0aGlzLnBhcmVudCA9IHBhcmVudDtcblx0XHR9LFxuXHRcdC8qKiBAcGFyYW0ge01vcmViaXRzLnN0YXR1c30gc3RhdHVzRWxlbWVudCAqL1xuXHRcdHNldFN0YXR1c0VsZW1lbnQoc3RhdHVzRWxlbWVudCkge1xuXHRcdFx0dGhpcy5zdGF0ZWxlbSA9IHN0YXR1c0VsZW1lbnQ7XG5cdFx0XHR0aGlzLnN0YXRlbGVtLnN0YXR1cyh0aGlzLmN1cnJlbnRBY3Rpb24pO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogQ2Fycnkgb3V0IHRoZSByZXF1ZXN0LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGNhbGxlckFqYXhQYXJhbWV0ZXJzIC0gRG8gbm90IHNwZWNpZnkgYSBwYXJhbWV0ZXIgdW5sZXNzIHlvdSByZWFsbHlcblx0XHQgKiByZWFsbHkgd2FudCB0byBnaXZlIGpRdWVyeSBzb21lIGV4dHJhIHBhcmFtZXRlcnMuXG5cdFx0ICogQHJldHVybnMge3Byb21pc2V9IC0gQSBqUXVlcnkgcHJvbWlzZSBvYmplY3QgdGhhdCBpcyByZXNvbHZlZCBvciByZWplY3RlZCB3aXRoIHRoZSBhcGkgb2JqZWN0LlxuXHRcdCAqL1xuXHRcdHBvc3QoY2FsbGVyQWpheFBhcmFtZXRlcnMpIHtcblx0XHRcdCsrTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0O1xuXHRcdFx0Y29uc3QgcXVlcnlTdHJpbmdBcnIgPSBbXTtcblx0XHRcdGZvciAoY29uc3QgW2ksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5xdWVyeSkpIHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuXHRcdFx0XHRcdHF1ZXJ5U3RyaW5nQXJyW3F1ZXJ5U3RyaW5nQXJyLmxlbmd0aF0gPVxuXHRcdFx0XHRcdFx0YCR7ZW5jb2RlVVJJQ29tcG9uZW50KGkpfT0ke3ZhbC5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KS5qb2luKCd8Jyl9YDtcblx0XHRcdFx0fSBlbHNlIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHF1ZXJ5U3RyaW5nQXJyW3F1ZXJ5U3RyaW5nQXJyLmxlbmd0aF0gPSBgJHtlbmNvZGVVUklDb21wb25lbnQoaSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbCl9YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZ0Fyci5qb2luKCcmJykucmVwbGFjZSgvXiguKj8pKFxcYnRva2VuPVteJl0qKSYoLiopLywgJyQxJDMmJDInKTtcblx0XHRcdC8vIHRva2VuIHNob3VsZCBhbHdheXMgYmUgdGhlIGxhc3QgaXRlbSBpbiB0aGUgcXVlcnkgc3RyaW5nIChidWcgVFctQi0wMDEzKVxuXHRcdFx0Y29uc3QgYWpheHBhcmFtcyA9IHtcblx0XHRcdFx0Y29udGV4dDogdGhpcyxcblx0XHRcdFx0dHlwZTogdGhpcy5xdWVyeS5hY3Rpb24gPT09ICdxdWVyeScgPyAnR0VUJyA6ICdQT1NUJyxcblx0XHRcdFx0dXJsOiBtdy51dGlsLndpa2lTY3JpcHQoJ2FwaScpLFxuXHRcdFx0XHRkYXRhOiBxdWVyeVN0cmluZyxcblx0XHRcdFx0ZGF0YVR5cGU6IHRoaXMucXVlcnkuZm9ybWF0LFxuXHRcdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFx0J0FwaS1Vc2VyLUFnZW50JzogbW9yZWJpdHNXaWtpQXBpVXNlckFnZW50LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQuLi5jYWxsZXJBamF4UGFyYW1ldGVycyxcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gJC5hamF4KGFqYXhwYXJhbXMpLnRoZW4oXG5cdFx0XHRcdGZ1bmN0aW9uIG9uQVBJc3VjY2VzcyhyZXNwb25zZSwgc3RhdHVzVGV4dCkge1xuXHRcdFx0XHRcdHRoaXMuc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQ7XG5cdFx0XHRcdFx0dGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuXHRcdFx0XHRcdHRoaXMucmVzcG9uc2VYTUwgPSByZXNwb25zZTtcblx0XHRcdFx0XHQvLyBMaW1pdCB0byBmaXJzdCBlcnJvclxuXHRcdFx0XHRcdGlmICh0aGlzLnF1ZXJ5LmZvcm1hdCA9PT0gJ2pzb24nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmVycm9yQ29kZSA9IHJlc3BvbnNlLmVycm9ycyAmJiByZXNwb25zZS5lcnJvcnNbMF0uY29kZTtcblx0XHRcdFx0XHRcdGlmICh0aGlzLnF1ZXJ5LmVycm9yZm9ybWF0ID09PSAnaHRtbCcpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvclRleHQgPSByZXNwb25zZS5lcnJvcnMgJiYgcmVzcG9uc2UuZXJyb3JzWzBdLmh0bWw7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMucXVlcnkuZXJyb3Jmb3JtYXQgPT09ICd3aWtpdGV4dCcgfHwgdGhpcy5xdWVyeS5lcnJvcmZvcm1hdCA9PT0gJ3BsYWludGV4dCcpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvclRleHQgPSByZXNwb25zZS5lcnJvcnMgJiYgcmVzcG9uc2UuZXJyb3JzWzBdLnRleHQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JDb2RlID0gJChyZXNwb25zZSkuZmluZCgnZXJyb3JzIGVycm9yJykuZXEoMCkuYXR0cignY29kZScpO1xuXHRcdFx0XHRcdFx0Ly8gU3VmZmljaWVudCBmb3IgaHRtbCwgd2lraXRleHQsIG9yIHBsYWludGV4dCBlcnJvcmZvcm1hdHNcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JUZXh0ID0gJChyZXNwb25zZSkuZmluZCgnZXJyb3JzIGVycm9yJykuZXEoMCkudGV4dCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodHlwZW9mIHRoaXMuZXJyb3JDb2RlID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0Ly8gdGhlIEFQSSBkaWRuJ3QgbGlrZSB3aGF0IHdlIHRvbGQgaXQsIGUuZy4sIGJhZCBlZGl0IHRva2VuIG9yIGFuIGVycm9yIGNyZWF0aW5nIGEgcGFnZVxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMucmV0dXJuRXJyb3IoY2FsbGVyQWpheFBhcmFtZXRlcnMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBpbnZva2Ugc3VjY2VzcyBjYWxsYmFjayBpZiBvbmUgd2FzIHN1cHBsaWVkXG5cdFx0XHRcdFx0aWYgKHRoaXMub25TdWNjZXNzKSB7XG5cdFx0XHRcdFx0XHQvLyBzZXQgdGhlIGNhbGxiYWNrIGNvbnRleHQgdG8gdGhpcy5wYXJlbnQgZm9yIG5ldyBjb2RlIGFuZCBzdXBwbHkgdGhlIEFQSSBvYmplY3Rcblx0XHRcdFx0XHRcdC8vIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY2FsbGJhY2sgKGZvciBsZWdhY3kgY29kZSlcblx0XHRcdFx0XHRcdHRoaXMub25TdWNjZXNzLmNhbGwodGhpcy5wYXJlbnQsIHRoaXMpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLnN0YXRlbGVtLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZCgpO1xuXHRcdFx0XHRcdHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZVdpdGgodGhpcy5wYXJlbnQsIFt0aGlzXSk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIG9ubHkgbmV0d29yayBhbmQgc2VydmVyIGVycm9ycyByZWFjaCBoZXJlIC0gY29tcGxhaW50cyBmcm9tIHRoZSBBUEkgaXRzZWxmIGFyZSBjYXVnaHQgaW4gc3VjY2VzcygpXG5cdFx0XHRcdGZ1bmN0aW9uIG9uQVBJZmFpbHVyZShlcnJvciwgc3RhdHVzVGV4dCwgZXJyb3JUaHJvd24pIHtcblx0XHRcdFx0XHR0aGlzLnN0YXR1c1RleHQgPSBzdGF0dXNUZXh0O1xuXHRcdFx0XHRcdHRoaXMuZXJyb3JUaHJvd24gPSBlcnJvclRocm93bjsgLy8gZnJlcXVlbnRseSB1bmRlZmluZWRcblx0XHRcdFx0XHR0aGlzLmVycm9yVGV4dCA9XG5cdFx0XHRcdFx0XHRzdGF0dXNUZXh0ICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5Zyo6LCD55SoQVBJ5pe25Y+R55Sf5LqG6ZSZ6K+v4oCcJywgJ+WcqOWRvOWPq0FQSeaZgueZvOeUn+S6humMr+iqpOOAjCcpICtcblx0XHRcdFx0XHRcdGVycm9yLnN0YXR1c1RleHQgK1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3jgIInLCAn44CN44CCJyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMucmV0dXJuRXJyb3IoKTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9LFxuXHRcdHJldHVybkVycm9yKGNhbGxlckFqYXhQYXJhbWV0ZXJzKSB7XG5cdFx0XHRpZiAodGhpcy5lcnJvckNvZGUgPT09ICdiYWR0b2tlbicgJiYgIXRoaXMuYmFkdG9rZW5SZXRyeSkge1xuXHRcdFx0XHR0aGlzLnN0YXRlbGVtLndhcm4od2luZG93LndnVUxTKCfml6DmlYjku6TniYzvvIzojrflj5bmlrDnmoTku6TniYzlubbph43or5XigKbigKYnLCAn54Sh5pWI5qyK5p2W77yM5Y+W5b6X5paw55qE5qyK5p2W5Lim6YeN6Kmm4oCm4oCmJykpO1xuXHRcdFx0XHR0aGlzLmJhZHRva2VuUmV0cnkgPSB0cnVlO1xuXHRcdFx0XHQvLyBHZXQgYSBuZXcgQ1NSRiB0b2tlbiBhbmQgcmV0cnkuIElmIHRoZSBvcmlnaW5hbCBhY3Rpb24gbmVlZHMgYSBkaWZmZXJlbnRcblx0XHRcdFx0Ly8gdHlwZSBvZiBhY3Rpb24gdGhhbiBDU1JGLCB3ZSBkbyBvbmUgcG9pbnRsZXNzIHJldHJ5IGJlZm9yZSBiYWlsaW5nIG91dFxuXHRcdFx0XHRyZXR1cm4gTW9yZWJpdHMud2lraS5hcGkuZ2V0VG9rZW4oKS50aGVuKCh0b2tlbikgPT4ge1xuXHRcdFx0XHRcdHRoaXMucXVlcnkudG9rZW4gPSB0b2tlbjtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5wb3N0KGNhbGxlckFqYXhQYXJhbWV0ZXJzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnN0YXRlbGVtLmVycm9yKGAke3RoaXMuZXJyb3JUZXh0fe+8iCR7dGhpcy5lcnJvckNvZGV977yJYCk7XG5cdFx0XHQvLyBpbnZva2UgZmFpbHVyZSBjYWxsYmFjayBpZiBvbmUgd2FzIHN1cHBsaWVkXG5cdFx0XHRpZiAodGhpcy5vbkVycm9yKSB7XG5cdFx0XHRcdC8vIHNldCB0aGUgY2FsbGJhY2sgY29udGV4dCB0byB0aGlzLnBhcmVudCBmb3IgbmV3IGNvZGUgYW5kIHN1cHBseSB0aGUgQVBJIG9iamVjdFxuXHRcdFx0XHQvLyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNhbGxiYWNrIGZvciBsZWdhY3kgY29kZVxuXHRcdFx0XHR0aGlzLm9uRXJyb3IuY2FsbCh0aGlzLnBhcmVudCwgdGhpcyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBkb24ndCBjb21wbGV0ZSB0aGUgYWN0aW9uIHNvIHRoYXQgdGhlIGVycm9yIHJlbWFpbnMgZGlzcGxheWVkXG5cdFx0XHRyZXR1cm4gJC5EZWZlcnJlZCgpLnJlamVjdFdpdGgodGhpcy5wYXJlbnQsIFt0aGlzXSk7XG5cdFx0fSxcblx0XHRnZXRTdGF0dXNFbGVtZW50KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuc3RhdGVsZW07XG5cdFx0fSxcblx0XHRnZXRFcnJvckNvZGUoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lcnJvckNvZGU7XG5cdFx0fSxcblx0XHRnZXRFcnJvclRleHQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lcnJvclRleHQ7XG5cdFx0fSxcblx0XHRnZXRYTUwoKSB7XG5cdFx0XHQvLyByZXRhaW5lZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHVzZSBnZXRSZXNwb25zZSgpIGluc3RlYWRcblx0XHRcdHJldHVybiB0aGlzLnJlc3BvbnNlWE1MO1xuXHRcdH0sXG5cdFx0Z2V0UmVzcG9uc2UoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5yZXNwb25zZTtcblx0XHR9LFxuXHR9O1xuXHQvKipcblx0ICogUmV0cmlldmVzIHdpa2l0ZXh0IGZyb20gYSBwYWdlLiBDYWNoaW5nIGVuYWJsZWQsIGR1cmF0aW9uIDEgZGF5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGVcblx0ICovXG5cdE1vcmViaXRzLndpa2kuZ2V0Q2FjaGVkSnNvbiA9ICh0aXRsZSkgPT4ge1xuXHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0cHJvcDogJ3JldmlzaW9ucycsXG5cdFx0XHR0aXRsZXM6IHRpdGxlLFxuXHRcdFx0cnZzbG90czogJ21haW4nLFxuXHRcdFx0cnZwcm9wOiAnY29udGVudCcsXG5cdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdHNtYXhhZ2U6ICczNjAwJyxcblx0XHRcdG1heGFnZTogJzM2MDAnLFxuXHRcdH07XG5cblx0XHRyZXR1cm4gbmV3IE1vcmViaXRzLndpa2kuYXBpKCcnLCBxdWVyeSkucG9zdCgpLnRoZW4oKGFwaW9iaikgPT4ge1xuXHRcdFx0YXBpb2JqLmdldFN0YXR1c0VsZW1lbnQoKS51bmxpbmsoKTtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gYXBpb2JqLmdldFJlc3BvbnNlKCk7XG5cdFx0XHRjb25zdCB3aWtpdGV4dCA9IHJlc3BvbnNlLnF1ZXJ5LnBhZ2VzWzBdLnJldmlzaW9uc1swXS5zbG90cy5tYWluLmNvbnRlbnQ7XG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZSh3aWtpdGV4dCk7XG5cdFx0fSk7XG5cdH07XG5cdGxldCBtb3JlYml0c1dpa2lBcGlVc2VyQWdlbnQgPSAnUWl1d2VuLzEuMSAobW9yZWJpdHMuanMpJztcblx0LyoqXG5cdCAqIFNldCB0aGUgY3VzdG9tIHVzZXIgYWdlbnQgaGVhZGVyLCB3aGljaCBpcyB1c2VkIGZvciBzZXJ2ZXItc2lkZSBsb2dnaW5nLlxuXHQgKiBOb3RlIHRoYXQgZG9pbmcgc28gd2lsbCBzZXQgdGhlIHVzZXJhZ2VudCBmb3IgZXZlcnkgYE1vcmViaXRzLndpa2kuYXBpYFxuXHQgKiBwcm9jZXNzIHBlcmZvcm1lZCB0aGVyZWFmdGVyLlxuXHQgKlxuXHQgKiBAc2VlIHtAbGluayBodHRwczovL2xpc3RzLndpa2ltZWRpYS5vcmcvcGlwZXJtYWlsL21lZGlhd2lraS1hcGktYW5ub3VuY2UvMjAxNC1Ob3ZlbWJlci8wMDAwNzUuaHRtbH1cblx0ICogZm9yIG9yaWdpbmFsIGFubm91bmNlbWVudC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kuYXBpXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbdWE9UWl1d2VuLzEuMSAobW9yZWJpdHMuanMpXSAtIFVzZXIgYWdlbnQuICBUaGUgZGVmYXVsdFxuXHQgKiB2YWx1ZSBvZiBgbW9yZWJpdHMuanNgIHdpbGwgYmUgYXBwZW5kZWQgdG8gYW55IHByb3ZpZGVkXG5cdCAqIHZhbHVlLlxuXHQgKi9cblx0TW9yZWJpdHMud2lraS5hcGkuc2V0QXBpVXNlckFnZW50ID0gKHVhKSA9PiB7XG5cdFx0bW9yZWJpdHNXaWtpQXBpVXNlckFnZW50ID0gYFFpdXdlbi8xLjEgKG1vcmViaXRzLmpzJHt1YSA/IGA7ICR7dWF9YCA6ICcnfSlgO1xuXHR9O1xuXHQvKipcblx0ICogQ2hhbmdlL3JldmlzaW9uIHRhZyBhcHBsaWVkIHRvIE1vcmViaXRzIGFjdGlvbnMgd2hlbiBubyBvdGhlciB0YWdzIGFyZSBzcGVjaWZpZWQuXG5cdCAqIFVudXNlZCBieSBkZWZhdWx0LlxuXHQgKlxuXHQgKiBAY29uc3RhbnRcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLndpa2kuYXBpXG5cdCAqIEB0eXBlIHtzdHJpbmd9XG5cdCAqL1xuXHRjb25zdCBtb3JlYml0c1dpa2lDaGFuZ2VUYWcgPSAnJztcblx0LyoqXG5cdCAqIEdldCBhIG5ldyBDU1JGIHRva2VuIG9uIGVuY291bnRlcmluZyB0b2tlbiBlcnJvcnMuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy53aWtpLmFwaVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBNZWRpYVdpa2kgQ1NSRiB0b2tlbi5cblx0ICovXG5cdE1vcmViaXRzLndpa2kuYXBpLmdldFRva2VuID0gKCkgPT4ge1xuXHRcdGNvbnN0IHRva2VuQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKHdpbmRvdy53Z1VMUygn6I635Y+W5Luk54mMJywgJ+WPluW+l+asiuadlicpLCB7XG5cdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdHR5cGU6ICdjc3JmJyxcblx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdH0pO1xuXHRcdHJldHVybiB0b2tlbkFwaS5wb3N0KCkudGhlbigoYXBpb2JqKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXBpb2JqLnJlc3BvbnNlLnF1ZXJ5LnRva2Vucy5jc3JmdG9rZW47XG5cdFx0fSk7XG5cdH07XG5cdC8qICoqKioqKioqKioqKioqKiogTW9yZWJpdHMud2lraS5wYWdlICoqKioqKioqKioqKioqKiogKi9cblx0LyoqXG5cdCAqIFVzZSB0aGUgTWVkaWFXaWtpIEFQSSB0byBsb2FkIGEgcGFnZSBhbmQgb3B0aW9uYWxseSBlZGl0IGl0LCBtb3ZlIGl0LCBldGMuXG5cdCAqXG5cdCAqIENhbGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgdG8gZGlyZWN0bHkgYWNjZXNzIHRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgY2xhc3MhXG5cdCAqIEFsbCBwcm9wZXJ0eSBhY2Nlc3MgaXMgdGhyb3VnaCB0aGUgYXBwcm9wcmlhdGUgZ2V0X19fKCkgb3Igc2V0X19fKCkgbWV0aG9kLlxuXHQgKlxuXHQgKiBDYWxsZXJzIHNob3VsZCBzZXQge0BsaW5rIE1vcmViaXRzLndpa2kuYWN0aW9uQ29tcGxldGVkLm5vdGljZX0gYW5kIHtAbGluayBNb3JlYml0cy53aWtpLmFjdGlvbkNvbXBsZXRlZC5yZWRpcmVjdH1cblx0ICogYmVmb3JlIHRoZSBmaXJzdCBjYWxsIHRvIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2UubG9hZCgpfS5cblx0ICpcblx0ICogRWFjaCBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHRha2VzIG9uZSBwYXJhbWV0ZXIsIHdoaWNoIGlzIGFcblx0ICogcmVmZXJlbmNlIHRvIHRoZSBNb3JlYml0cy53aWtpLnBhZ2Ugb2JqZWN0IHRoYXQgcmVnaXN0ZXJlZCB0aGUgY2FsbGJhY2suXG5cdCAqIENhbGxiYWNrIGZ1bmN0aW9ucyBtYXkgaW52b2tlIGFueSBNb3JlYml0cy53aWtpLnBhZ2UgcHJvdG90eXBlIG1ldGhvZCB1c2luZyB0aGlzIHJlZmVyZW5jZS5cblx0ICpcblx0ICpcblx0ICogQ2FsbCBzZXF1ZW5jZSBmb3IgY29tbW9uIG9wZXJhdGlvbnMgKG9wdGlvbmFsIGZpbmFsIHVzZXIgY2FsbGJhY2tzIG5vdCBzaG93bik6XG5cdCAqXG5cdCAqIC0gRWRpdCBjdXJyZW50IGNvbnRlbnRzIG9mIGEgcGFnZSAobm8gZWRpdCBjb25mbGljdCk6XG5cdCAqIGAubG9hZCh1c2VyVGV4dEVkaXRDYWxsYmFjaykgLT4gY3R4LmxvYWRBcGkucG9zdCgpIC0+XG5cdCAqIGN0eC5sb2FkQXBpLnBvc3Quc3VjY2VzcygpIC0+IGN0eC5mbkxvYWRTdWNjZXNzKCkgLT4gdXNlclRleHRFZGl0Q2FsbGJhY2soKSAtPlxuXHQgKiAuc2F2ZSgpIC0+IGN0eC5zYXZlQXBpLnBvc3QoKSAtPiBjdHgubG9hZEFwaS5wb3N0LnN1Y2Nlc3MoKSAtPiBjdHguZm5TYXZlU3VjY2VzcygpYFxuXHQgKlxuXHQgKiAtIEVkaXQgY3VycmVudCBjb250ZW50cyBvZiBhIHBhZ2UgKHdpdGggZWRpdCBjb25mbGljdCk6XG5cdCAqIGAubG9hZCh1c2VyVGV4dEVkaXRDYWxsYmFjaykgLT4gY3R4LmxvYWRBcGkucG9zdCgpIC0+XG5cdCAqIGN0eC5sb2FkQXBpLnBvc3Quc3VjY2VzcygpIC0+IGN0eC5mbkxvYWRTdWNjZXNzKCkgLT4gdXNlclRleHRFZGl0Q2FsbGJhY2soKSAtPlxuXHQgKiAuc2F2ZSgpIC0+IGN0eC5zYXZlQXBpLnBvc3QoKSAtPiBjdHgubG9hZEFwaS5wb3N0LnN1Y2Nlc3MoKSAtPlxuXHQgKiBjdHguZm5TYXZlRXJyb3IoKSAtPiBjdHgubG9hZEFwaS5wb3N0KCkgLT4gY3R4LmxvYWRBcGkucG9zdC5zdWNjZXNzKCkgLT5cblx0ICogY3R4LmZuTG9hZFN1Y2Nlc3MoKSAtPiB1c2VyVGV4dEVkaXRDYWxsYmFjaygpIC0+IC5zYXZlKCkgLT5cblx0ICogY3R4LnNhdmVBcGkucG9zdCgpIC0+IGN0eC5sb2FkQXBpLnBvc3Quc3VjY2VzcygpIC0+IGN0eC5mblNhdmVTdWNjZXNzKClgXG5cdCAqXG5cdCAqIC0gQXBwZW5kIHRvIGEgcGFnZSAoc2ltaWxhciBmb3IgcHJlcGVuZCBhbmQgbmV3U2VjdGlvbik6XG5cdCAqIGAuYXBwZW5kKCkgLT4gY3R4LmxvYWRBcGkucG9zdCgpIC0+IGN0eC5sb2FkQXBpLnBvc3Quc3VjY2VzcygpIC0+XG5cdCAqIGN0eC5mbkxvYWRTdWNjZXNzKCkgLT4gY3R4LmZuQXV0b1NhdmUoKSAtPiAuc2F2ZSgpIC0+IGN0eC5zYXZlQXBpLnBvc3QoKSAtPlxuXHQgKiBjdHgubG9hZEFwaS5wb3N0LnN1Y2Nlc3MoKSAtPiBjdHguZm5TYXZlU3VjY2VzcygpYFxuXHQgKlxuXHQgKiBOb3Rlczpcblx0ICogMS4gQWxsIGZ1bmN0aW9ucyBmb2xsb3dpbmcgTW9yZWJpdHMud2lraS5hcGkucG9zdCgpIGFyZSBpbnZva2VkIGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGpRdWVyeSBBSkFYIGxpYnJhcnkuXG5cdCAqIDIuIFRoZSBzZXF1ZW5jZSBmb3IgYXBwZW5kL3ByZXBlbmQvbmV3U2VjdGlvbiBjb3VsZCBiZSBzbGlnaHRseSBzaG9ydGVuZWQsXG5cdCAqIGJ1dCBpdCB3b3VsZCByZXF1aXJlIHNpZ25pZmljYW50IGR1cGxpY2F0aW9uIG9mIGNvZGUgZm9yIGxpdHRsZSBiZW5lZml0LlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraVxuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHBhZ2UsIHByZWZpeGVkIGJ5IHRoZSBuYW1lc3BhY2UgKGlmIGFueSkuXG5cdCAqIEZvciB0aGUgY3VycmVudCBwYWdlLCB1c2UgYG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKWAuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfE1vcmViaXRzLnN0YXR1c30gW3N0YXR1c10gLSBBIHN0cmluZyBkZXNjcmliaW5nIHRoZSBhY3Rpb24gYWJvdXQgdG8gYmUgdW5kZXJ0YWtlbixcblx0ICogb3IgYSBNb3JlYml0cy5zdGF0dXMgb2JqZWN0XG5cdCAqL1xuXHRNb3JlYml0cy53aWtpLnBhZ2UgPSBmdW5jdGlvbiAocGFnZU5hbWUsIHN0YXR1cykge1xuXHRcdHN0YXR1cyB8fD0gd2luZG93LndnVUxTKCfmiZPlvIDpobXpnaLigJwnLCAn5omT6ZaL6aCB6Z2i44CMJykgKyBwYWdlTmFtZSArIHdpbmRvdy53Z1VMUygn4oCdJywgJ+OAjScpO1xuXHRcdC8qKlxuXHRcdCAqIFByaXZhdGUgY29udGV4dCB2YXJpYWJsZXMuXG5cdFx0ICpcblx0XHQgKiBUaGlzIGNvbnRleHQgaXMgbm90IHZpc2libGUgdG8gdGhlIG91dHNpZGUsIHRodXMgYWxsIHRoZSBkYXRhIGhlcmVcblx0XHQgKiBtdXN0IGJlIGFjY2Vzc2VkIHZpYSBnZXR0ZXIgYW5kIHNldHRlciBmdW5jdGlvbnMuXG5cdFx0ICpcblx0XHQgKiBAcHJpdmF0ZVxuXHRcdCAqL1xuXHRcdGNvbnN0IGN0eCA9IHtcblx0XHRcdC8vIGJhY2tpbmcgZmllbGRzIGZvciBwdWJsaWMgcHJvcGVydGllc1xuXHRcdFx0cGFnZU5hbWUsXG5cdFx0XHRwYWdlRXhpc3RzOiBmYWxzZSxcblx0XHRcdGVkaXRTdW1tYXJ5OiBudWxsLFxuXHRcdFx0Y2hhbmdlVGFnczogbnVsbCxcblx0XHRcdHRlc3RBY3Rpb25zOiBudWxsLFxuXHRcdFx0Ly8gYXJyYXkgaWYgYW55IHZhbGlkIGFjdGlvbnNcblx0XHRcdGNhbGxiYWNrUGFyYW1ldGVyczogbnVsbCxcblx0XHRcdHN0YXR1c0VsZW1lbnQ6IHN0YXR1cyBpbnN0YW5jZW9mIE1vcmViaXRzLnN0YXR1cyA/IHN0YXR1cyA6IG5ldyBNb3JlYml0cy5zdGF0dXMoc3RhdHVzKSxcblx0XHRcdC8vIC0gZWRpdFxuXHRcdFx0cGFnZVRleHQ6IG51bGwsXG5cdFx0XHRlZGl0TW9kZTogJ2FsbCcsXG5cdFx0XHQvLyBzYXZlKCkgcmVwbGFjZXMgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBwYWdlIGJ5IGRlZmF1bHRcblx0XHRcdGFwcGVuZFRleHQ6IG51bGwsXG5cdFx0XHQvLyBjYW4ndCByZXVzZSBwYWdlVGV4dCBmb3IgdGhpcyBiZWNhdXNlIHBhZ2VUZXh0IGlzIG5lZWRlZCB0byBmb2xsb3cgYSByZWRpcmVjdFxuXHRcdFx0cHJlcGVuZFRleHQ6IG51bGwsXG5cdFx0XHQvLyBjYW4ndCByZXVzZSBwYWdlVGV4dCBmb3IgdGhpcyBiZWNhdXNlIHBhZ2VUZXh0IGlzIG5lZWRlZCB0byBmb2xsb3cgYSByZWRpcmVjdFxuXHRcdFx0bmV3U2VjdGlvblRleHQ6IG51bGwsXG5cdFx0XHRuZXdTZWN0aW9uVGl0bGU6IG51bGwsXG5cdFx0XHRjcmVhdGVPcHRpb246IG51bGwsXG5cdFx0XHRtaW5vckVkaXQ6IGZhbHNlLFxuXHRcdFx0Ym90RWRpdDogZmFsc2UsXG5cdFx0XHRwYWdlU2VjdGlvbjogbnVsbCxcblx0XHRcdG1heENvbmZsaWN0UmV0cmllczogMixcblx0XHRcdG1heFJldHJpZXM6IDIsXG5cdFx0XHRmb2xsb3dSZWRpcmVjdDogZmFsc2UsXG5cdFx0XHRmb2xsb3dDcm9zc05zUmVkaXJlY3Q6IHRydWUsXG5cdFx0XHR3YXRjaGxpc3RPcHRpb246ICdub2NoYW5nZScsXG5cdFx0XHR3YXRjaGxpc3RFeHBpcnk6IG51bGwsXG5cdFx0XHRjcmVhdG9yOiBudWxsLFxuXHRcdFx0dGltZXN0YW1wOiBudWxsLFxuXHRcdFx0Ly8gLSByZXZlcnRcblx0XHRcdHJldmVydE9sZElEOiBudWxsLFxuXHRcdFx0Ly8gLSBtb3ZlXG5cdFx0XHRtb3ZlRGVzdGluYXRpb246IG51bGwsXG5cdFx0XHRtb3ZlVGFsa1BhZ2U6IGZhbHNlLFxuXHRcdFx0bW92ZVN1YnBhZ2VzOiBmYWxzZSxcblx0XHRcdG1vdmVTdXBwcmVzc1JlZGlyZWN0OiBmYWxzZSxcblx0XHRcdC8vIC0gcHJvdGVjdFxuXHRcdFx0cHJvdGVjdEVkaXQ6IG51bGwsXG5cdFx0XHRwcm90ZWN0TW92ZTogbnVsbCxcblx0XHRcdHByb3RlY3RDcmVhdGU6IG51bGwsXG5cdFx0XHRwcm90ZWN0Q2FzY2FkZTogbnVsbCxcblx0XHRcdC8vIC0gY3JlYXRpb24gbG9va3VwXG5cdFx0XHRsb29rdXBOb25SZWRpcmVjdENyZWF0b3I6IGZhbHNlLFxuXHRcdFx0Ly8gaW50ZXJuYWwgc3RhdHVzXG5cdFx0XHRwYWdlTG9hZGVkOiBmYWxzZSxcblx0XHRcdGNzcmZUb2tlbjogbnVsbCxcblx0XHRcdGxvYWRUaW1lOiBudWxsLFxuXHRcdFx0bGFzdEVkaXRUaW1lOiBudWxsLFxuXHRcdFx0cGFnZUlEOiBudWxsLFxuXHRcdFx0Y29udGVudE1vZGVsOiBudWxsLFxuXHRcdFx0cmV2ZXJ0Q3VySUQ6IG51bGwsXG5cdFx0XHRyZXZlcnRVc2VyOiBudWxsLFxuXHRcdFx0d2F0Y2hlZDogZmFsc2UsXG5cdFx0XHRmdWxseVByb3RlY3RlZDogZmFsc2UsXG5cdFx0XHRzdXBwcmVzc1Byb3RlY3RXYXJuaW5nOiBmYWxzZSxcblx0XHRcdGNvbmZsaWN0UmV0cmllczogMCxcblx0XHRcdHJldHJpZXM6IDAsXG5cdFx0XHQvLyBjYWxsYmFja3Ncblx0XHRcdG9uTG9hZFN1Y2Nlc3M6IG51bGwsXG5cdFx0XHRvbkxvYWRGYWlsdXJlOiBudWxsLFxuXHRcdFx0b25TYXZlU3VjY2VzczogbnVsbCxcblx0XHRcdG9uU2F2ZUZhaWx1cmU6IG51bGwsXG5cdFx0XHRvbkxvb2t1cENyZWF0aW9uU3VjY2VzczogbnVsbCxcblx0XHRcdG9uTG9va3VwQ3JlYXRpb25GYWlsdXJlOiBudWxsLFxuXHRcdFx0b25Nb3ZlU3VjY2VzczogbnVsbCxcblx0XHRcdG9uTW92ZUZhaWx1cmU6IG51bGwsXG5cdFx0XHRvbkRlbGV0ZVN1Y2Nlc3M6IG51bGwsXG5cdFx0XHRvbkRlbGV0ZUZhaWx1cmU6IG51bGwsXG5cdFx0XHRvblVuZGVsZXRlU3VjY2VzczogbnVsbCxcblx0XHRcdG9uVW5kZWxldGVGYWlsdXJlOiBudWxsLFxuXHRcdFx0b25Qcm90ZWN0U3VjY2VzczogbnVsbCxcblx0XHRcdG9uUHJvdGVjdEZhaWx1cmU6IG51bGwsXG5cdFx0XHQvLyBpbnRlcm5hbCBvYmplY3RzXG5cdFx0XHRsb2FkUXVlcnk6IG51bGwsXG5cdFx0XHRsb2FkQXBpOiBudWxsLFxuXHRcdFx0c2F2ZUFwaTogbnVsbCxcblx0XHRcdGxvb2t1cENyZWF0aW9uQXBpOiBudWxsLFxuXHRcdFx0bW92ZUFwaTogbnVsbCxcblx0XHRcdG1vdmVQcm9jZXNzQXBpOiBudWxsLFxuXHRcdFx0cGF0cm9sQXBpOiBudWxsLFxuXHRcdFx0cGF0cm9sUHJvY2Vzc0FwaTogbnVsbCxcblx0XHRcdGRlbGV0ZUFwaTogbnVsbCxcblx0XHRcdGRlbGV0ZVByb2Nlc3NBcGk6IG51bGwsXG5cdFx0XHR1bmRlbGV0ZUFwaTogbnVsbCxcblx0XHRcdHVuZGVsZXRlUHJvY2Vzc0FwaTogbnVsbCxcblx0XHRcdHByb3RlY3RBcGk6IG51bGwsXG5cdFx0XHRwcm90ZWN0UHJvY2Vzc0FwaTogbnVsbCxcblx0XHR9O1xuXHRcdGNvbnN0IGVtcHR5RnVuY3Rpb24gPSAoKSA9PiB7fTtcblx0XHQvKipcblx0XHQgKiBMb2FkcyB0aGUgdGV4dCBmb3IgdGhlIHBhZ2UuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvblN1Y2Nlc3MgLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbG9hZCBoYXMgc3VjY2VlZGVkLlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvbkZhaWx1cmVdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlIGxvYWQgZmFpbHMuXG5cdFx0ICovXG5cdFx0dGhpcy5sb2FkID0gZnVuY3Rpb24gKG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cdFx0XHRjdHgub25Mb2FkU3VjY2VzcyA9IG9uU3VjY2Vzcztcblx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlID0gb25GYWlsdXJlIHx8IGVtcHR5RnVuY3Rpb247XG5cdFx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIGFmdGVyIHRoZSBwYWdlIGxvYWRzXG5cdFx0XHRpZiAoIW9uU3VjY2Vzcykge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcignSW50ZXJuYWwgZXJyb3I6IG5vIG9uU3VjY2VzcyBjYWxsYmFjayBwcm92aWRlZCB0byBsb2FkKCkhJyk7XG5cdFx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjdHgubG9hZFF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdHByb3A6ICdpbmZvfHJldmlzaW9ucycsXG5cdFx0XHRcdGlucHJvcDogJ3dhdGNoZWQnLFxuXHRcdFx0XHRpbnRlc3RhY3Rpb25zOiAnZWRpdCcsXG5cdFx0XHRcdC8vIGNhbiBiZSBleHBhbmRlZFxuXHRcdFx0XHRjdXJ0aW1lc3RhbXA6ICcnLFxuXHRcdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdFx0dHlwZTogJ2NzcmYnLFxuXHRcdFx0XHR0aXRsZXM6IGN0eC5wYWdlTmFtZSxcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHRcdC8vIGRvbid0IG5lZWQgcnZsaW1pdD0xIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCBydnN0YXJ0aWQgaGVyZSBhbmQgb25seSBvbmUgYWN0dWFsIHJldiBpcyByZXR1cm5lZCBieSBkZWZhdWx0XG5cdFx0XHR9O1xuXG5cdFx0XHRpZiAoY3R4LmVkaXRNb2RlID09PSAnYWxsJykge1xuXHRcdFx0XHRjdHgubG9hZFF1ZXJ5LnJ2cHJvcCA9ICdjb250ZW50fHRpbWVzdGFtcCc7IC8vIGdldCB0aGUgcGFnZSBjb250ZW50IGF0IHRoZSBzYW1lIHRpbWUsIGlmIG5lZWRlZFxuXHRcdFx0fSBlbHNlIGlmIChjdHguZWRpdE1vZGUgPT09ICdyZXZlcnQnKSB7XG5cdFx0XHRcdGN0eC5sb2FkUXVlcnkucnZwcm9wID0gJ3RpbWVzdGFtcCc7XG5cdFx0XHRcdGN0eC5sb2FkUXVlcnkucnZsaW1pdCA9IDE7XG5cdFx0XHRcdGN0eC5sb2FkUXVlcnkucnZzdGFydGlkID0gY3R4LnJldmVydE9sZElEO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN0eC5mb2xsb3dSZWRpcmVjdCkge1xuXHRcdFx0XHRjdHgubG9hZFF1ZXJ5LnJlZGlyZWN0cyA9ICcnOyAvLyBmb2xsb3cgYWxsIHJlZGlyZWN0c1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodHlwZW9mIGN0eC5wYWdlU2VjdGlvbiA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y3R4LmxvYWRRdWVyeS5ydnNlY3Rpb24gPSBjdHgucGFnZVNlY3Rpb247XG5cdFx0XHR9XG5cdFx0XHRpZiAoTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0Y3R4LmxvYWRRdWVyeS5pbnByb3AgKz0gJ3xwcm90ZWN0aW9uJztcblx0XHRcdH1cblx0XHRcdGN0eC5sb2FkQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aKk+WPlumhtemdouKApuKApicsICfmipPlj5bpoIHpnaLigKbigKYnKSxcblx0XHRcdFx0Y3R4LmxvYWRRdWVyeSxcblx0XHRcdFx0Zm5Mb2FkU3VjY2Vzcyxcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlXG5cdFx0XHQpO1xuXHRcdFx0Y3R4LmxvYWRBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4LmxvYWRBcGkucG9zdCgpO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogU2F2ZXMgdGhlIHRleHQgZm9yIHRoZSBwYWdlIHRvIFdpa2lwZWRpYS5cblx0XHQgKiBNdXN0IGJlIHByZWNlZGVkIGJ5IHN1Y2Nlc3NmdWxseSBjYWxsaW5nIGBsb2FkKClgLlxuXHRcdCAqXG5cdFx0ICogV2FybmluZzogQ2FsbGluZyBgc2F2ZSgpYCBjYW4gcmVzdWx0IGluIGFkZGl0aW9uYWwgY2FsbHMgdG8gdGhlXG5cdFx0ICogcHJldmlvdXMgYGxvYWQoKWAgY2FsbGJhY2tzIHRvIHJlY292ZXIgZnJvbSBlZGl0IGNvbmZsaWN0cyEgSW4gdGhpc1xuXHRcdCAqIGNhc2UsIGNhbGxlcnMgbXVzdCBtYWtlIHRoZSBzYW1lIGVkaXQgdG8gdGhlIG5ldyBwYWdlVGV4dCBhbmRcblx0XHQgKiByZS1pbnZva2UgYHNhdmUoKWAuICBUaGlzIGJlaGF2aW9yIGNhbiBiZSBkaXNhYmxlZCB3aXRoXG5cdFx0ICogYHNldE1heENvbmZsaWN0UmV0cmllcygwKWAuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25TdWNjZXNzXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBzYXZlIGhhcyBzdWNjZWVkZWQuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgc2F2ZSBmYWlscy5cblx0XHQgKi9cblx0XHR0aGlzLnNhdmUgPSBmdW5jdGlvbiAob25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcblx0XHRcdGN0eC5vblNhdmVTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0Y3R4Lm9uU2F2ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdC8vIGFyZSB3ZSBnZXR0aW5nIG91ciBlZGl0aW5nIHRva2VuIGZyb20gbXcudXNlci50b2tlbnM/XG5cdFx0XHRjb25zdCBjYW5Vc2VNd1VzZXJUb2tlbiA9IGZuQ2FuVXNlTXdVc2VyVG9rZW4oJ2VkaXQnKTtcblx0XHRcdGlmICghY3R4LnBhZ2VMb2FkZWQgJiYgIWNhblVzZU13VXNlclRva2VuKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKCdJbnRlcm5hbCBlcnJvcjogYXR0ZW1wdCB0byBzYXZlIGEgcGFnZSB0aGF0IGhhcyBub3QgYmVlbiBsb2FkZWQhJyk7XG5cdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN0eC5lZGl0U3VtbWFyeSkge1xuXHRcdFx0XHQvLyBuZXcgc2VjdGlvbiBtb2RlIGFsbG93cyAobmF5LCBlbmNvdXJhZ2VzKSB1c2luZyB0aGVcblx0XHRcdFx0Ly8gdGl0bGUgYXMgdGhlIGVkaXQgc3VtbWFyeSwgYnV0IHRoZSBxdWVyeSBuZWVkc1xuXHRcdFx0XHQvLyBlZGl0U3VtbWFyeSB0byBiZSB1bmRlZmluZWQgb3IgJycsIG5vdCBudWxsXG5cdFx0XHRcdGlmIChjdHguZWRpdE1vZGUgPT09ICduZXcnICYmIGN0eC5uZXdTZWN0aW9uVGl0bGUpIHtcblx0XHRcdFx0XHRjdHguZWRpdFN1bW1hcnkgPSAnJztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcignSW50ZXJuYWwgZXJyb3I6IGVkaXQgc3VtbWFyeSBub3Qgc2V0IGJlZm9yZSBzYXZlIScpO1xuXHRcdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gc2hvdWxkbid0IGhhcHBlbiBpZiBjYW5Vc2VNd1VzZXJUb2tlbiA9PT0gdHJ1ZVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjdHguZnVsbHlQcm90ZWN0ZWQgJiZcblx0XHRcdFx0IWN0eC5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nICYmXG5cdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdGN0eC5mdWxseVByb3RlY3RlZCA9PT0gJ2luZmluaXR5J1xuXHRcdFx0XHRcdFx0PyB3aW5kb3cud2dVTFMoJ+aCqOWNs+Wwhue8lui+keWFqOS/neaKpOmhtemdouKAnCcsICfmgqjljbPlsIfnt6jovK/lhajkv53orbfpoIHpnaLjgIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0Y3R4LnBhZ2VOYW1lICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn4oCd77yI5peg6ZmQ5pyf77yJ44CCXFxuXFxu5Y2V5Ye756Gu5a6a5Lul56Gu5a6a77yM5oiW5Y2V5Ye75Y+W5raI5Lul5Y+W5raI5pON5L2c44CCJyxcblx0XHRcdFx0XHRcdFx0XHRcdCfjgI3vvIjnhKHpmZDmnJ/vvInjgIJcXG5cXG7pu57mk4rnorrlrprku6XnorrlrprvvIzmiJbpu57mk4rlj5bmtojku6Xlj5bmtojmk43kvZzjgIInXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0OiBgJHtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aCqOWNs+Wwhue8lui+keWFqOS/neaKpOmhtemdouKAnCcsICfmgqjljbPlsIfnt6jovK/lhajkv53orbfpoIHpnaLjgIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0Y3R4LnBhZ2VOYW1lICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+KAne+8iOWIsOacn++8micsICfjgI3vvIjliLDmnJ/vvJonKSArXG5cdFx0XHRcdFx0XHRcdFx0bmV3IE1vcmViaXRzLmRhdGUoY3R4LmZ1bGx5UHJvdGVjdGVkKS5jYWxlbmRhcigndXRjJylcblx0XHRcdFx0XHRcdFx0fSAoVVRDKe+8ieOAglxcblxcbiR7d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfljZXlh7vnoa7lrprku6Xnoa7lrprvvIzmiJbljZXlh7vlj5bmtojku6Xlj5bmtojmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfpu57mk4rnorrlrprku6XnorrlrprvvIzmiJbpu57mk4rlj5bmtojku6Xlj5bmtojmk43kvZzjgIInXG5cdFx0XHRcdFx0XHRcdCl9YFxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCflt7Llj5bmtojlr7nlhajkv53miqTpobXpnaLnmoTnvJbovpHjgIInLCAn5bey5Y+W5raI5bCN5YWo5L+d6K236aCB6Z2i55qE57eo6Lyv44CCJykpO1xuXHRcdFx0XHRjdHgub25TYXZlRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y3R4LnJldHJpZXMgPSAwO1xuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ2VkaXQnLFxuXHRcdFx0XHR0aXRsZTogY3R4LnBhZ2VOYW1lLFxuXHRcdFx0XHRzdW1tYXJ5OiBjdHguZWRpdFN1bW1hcnksXG5cdFx0XHRcdHRva2VuOiBjYW5Vc2VNd1VzZXJUb2tlbiA/IG13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJykgOiBjdHguY3NyZlRva2VuLFxuXHRcdFx0XHR3YXRjaGxpc3Q6IGN0eC53YXRjaGxpc3RPcHRpb24sXG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdGlmIChjdHguY2hhbmdlVGFncykge1xuXHRcdFx0XHRxdWVyeS50YWdzID0gY3R4LmNoYW5nZVRhZ3M7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZm5BcHBseVdhdGNobGlzdEV4cGlyeSgpKSB7XG5cdFx0XHRcdHF1ZXJ5LndhdGNobGlzdGV4cGlyeSA9IGN0eC53YXRjaGxpc3RFeHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIGN0eC5wYWdlU2VjdGlvbiA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0cXVlcnkuc2VjdGlvbiA9IGN0eC5wYWdlU2VjdGlvbjtcblx0XHRcdH1cblx0XHRcdC8vIFNldCBtaW5vciBlZGl0IGF0dHJpYnV0ZS4gSWYgdGhlc2UgcGFyYW1ldGVycyBhcmUgcHJlc2VudCB3aXRoIGFueSB2YWx1ZSwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgdHJ1ZVxuXHRcdFx0aWYgKGN0eC5taW5vckVkaXQpIHtcblx0XHRcdFx0cXVlcnkubWlub3IgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cXVlcnkubm90bWlub3IgPSB0cnVlOyAvLyBmb3JjZSBUd2lua2xlIGNvbmZpZyB0byBvdmVycmlkZSB1c2VyIHByZWZlcmVuY2Ugc2V0dGluZyBmb3IgXCJhbGwgZWRpdHMgYXJlIG1pbm9yXCJcblx0XHRcdH1cblx0XHRcdC8vIFNldCBib3QgZWRpdCBhdHRyaWJ1dGUuIElmIHRoaXMgcGFyYW1ldGVyIGlzIHByZXNlbnQgd2l0aCBhbnkgdmFsdWUsIGl0IGlzIGludGVycHJldGVkIGFzIHRydWVcblx0XHRcdGlmIChjdHguYm90RWRpdCkge1xuXHRcdFx0XHRxdWVyeS5ib3QgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoIChjdHguZWRpdE1vZGUpIHtcblx0XHRcdFx0Y2FzZSAnYXBwZW5kJzpcblx0XHRcdFx0XHRpZiAoY3R4LmFwcGVuZFRleHQgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKCdJbnRlcm5hbCBlcnJvcjogYXBwZW5kIHRleHQgbm90IHNldCBiZWZvcmUgc2F2ZSEnKTtcblx0XHRcdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRxdWVyeS5hcHBlbmR0ZXh0ID0gY3R4LmFwcGVuZFRleHQ7IC8vIHVzZSBtb2RlIHRvIGFwcGVuZCB0byBjdXJyZW50IHBhZ2UgY29udGVudHNcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncHJlcGVuZCc6XG5cdFx0XHRcdFx0aWYgKGN0eC5wcmVwZW5kVGV4dCA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoJ0ludGVybmFsIGVycm9yOiBwcmVwZW5kIHRleHQgbm90IHNldCBiZWZvcmUgc2F2ZSEnKTtcblx0XHRcdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRxdWVyeS5wcmVwZW5kdGV4dCA9IGN0eC5wcmVwZW5kVGV4dDsgLy8gdXNlIG1vZGUgdG8gcHJlcGVuZCB0byBjdXJyZW50IHBhZ2UgY29udGVudHNcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbmV3Jzpcblx0XHRcdFx0XHRpZiAoIWN0eC5uZXdTZWN0aW9uVGV4dCkge1xuXHRcdFx0XHRcdFx0Ly8gQVBJIGRvZXNuJ3QgYWxsb3cgZW1wdHkgbmV3IHNlY3Rpb24gdGV4dFxuXHRcdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoJ0ludGVybmFsIGVycm9yOiBuZXcgc2VjdGlvbiB0ZXh0IG5vdCBzZXQgYmVmb3JlIHNhdmUhJyk7XG5cdFx0XHRcdFx0XHRjdHgub25TYXZlRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cXVlcnkuc2VjdGlvbiA9ICduZXcnO1xuXHRcdFx0XHRcdHF1ZXJ5LnRleHQgPSBjdHgubmV3U2VjdGlvblRleHQ7IC8vIGFkZCBhIG5ldyBzZWN0aW9uIHRvIGN1cnJlbnQgcGFnZVxuXHRcdFx0XHRcdHF1ZXJ5LnNlY3Rpb250aXRsZSA9IGN0eC5uZXdTZWN0aW9uVGl0bGUgfHwgY3R4LmVkaXRTdW1tYXJ5OyAvLyBkb25lIGJ5IHRoZSBBUEksIGJ1dCBub24tJycgdmFsdWVzIHdvdWxkIGdldCB0cmVhdGVkIGFzIHRleHRcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmV2ZXJ0Jzpcblx0XHRcdFx0XHRxdWVyeS51bmRvID0gY3R4LnJldmVydEN1cklEO1xuXHRcdFx0XHRcdHF1ZXJ5LnVuZG9hZnRlciA9IGN0eC5yZXZlcnRPbGRJRDtcblx0XHRcdFx0XHRpZiAoY3R4Lmxhc3RFZGl0VGltZSkge1xuXHRcdFx0XHRcdFx0cXVlcnkuYmFzZXRpbWVzdGFtcCA9IGN0eC5sYXN0RWRpdFRpbWU7IC8vIGNoZWNrIHRoYXQgcGFnZSBoYXNuJ3QgYmVlbiBlZGl0ZWQgc2luY2UgaXQgd2FzIGxvYWRlZFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHF1ZXJ5LnN0YXJ0dGltZXN0YW1wID0gY3R4LmxvYWRUaW1lOyAvLyBjaGVjayB0aGF0IHBhZ2UgaGFzbid0IGJlZW4gZGVsZXRlZCBzaW5jZSBpdCB3YXMgbG9hZGVkIChkb24ndCByZWNyZWF0ZSBiYWQgc3R1ZmYpXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0Ly8gJ2FsbCdcblx0XHRcdFx0XHRxdWVyeS50ZXh0ID0gY3R4LnBhZ2VUZXh0OyAvLyByZXBsYWNlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgcGFnZVxuXHRcdFx0XHRcdGlmIChjdHgubGFzdEVkaXRUaW1lKSB7XG5cdFx0XHRcdFx0XHRxdWVyeS5iYXNldGltZXN0YW1wID0gY3R4Lmxhc3RFZGl0VGltZTsgLy8gY2hlY2sgdGhhdCBwYWdlIGhhc24ndCBiZWVuIGVkaXRlZCBzaW5jZSBpdCB3YXMgbG9hZGVkXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cXVlcnkuc3RhcnR0aW1lc3RhbXAgPSBjdHgubG9hZFRpbWU7IC8vIGNoZWNrIHRoYXQgcGFnZSBoYXNuJ3QgYmVlbiBkZWxldGVkIHNpbmNlIGl0IHdhcyBsb2FkZWQgKGRvbid0IHJlY3JlYXRlIGJhZCBzdHVmZilcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmIChbJ3JlY3JlYXRlJywgJ2NyZWF0ZW9ubHknLCAnbm9jcmVhdGUnXS5pbmNsdWRlcyhjdHguY3JlYXRlT3B0aW9uKSkge1xuXHRcdFx0XHRxdWVyeVtjdHguY3JlYXRlT3B0aW9uXSA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNhblVzZU13VXNlclRva2VuICYmIGN0eC5mb2xsb3dSZWRpcmVjdCkge1xuXHRcdFx0XHRxdWVyeS5yZWRpcmVjdCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRjdHguc2F2ZUFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv53lrZjpobXpnaLigKbigKYnLCAn5YSy5a2Y6aCB6Z2i4oCm4oCmJyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRmblNhdmVTdWNjZXNzLFxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0Zm5TYXZlRXJyb3Jcblx0XHRcdCk7XG5cdFx0XHRjdHguc2F2ZUFwaS5zZXRQYXJlbnQodGhpcyk7XG5cdFx0XHRjdHguc2F2ZUFwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBBZGRzIHRoZSB0ZXh0IHByb3ZpZGVkIHZpYSBgc2V0QXBwZW5kVGV4dCgpYCB0byB0aGUgZW5kIG9mIHRoZVxuXHRcdCAqIHBhZ2UuICBEb2VzIG5vdCByZXF1aXJlIGNhbGxpbmcgYGxvYWQoKWAgZmlyc3QsIHVubGVzcyBhIHdhdGNobGlzdFxuXHRcdCAqIGV4cGlyeSBpcyB1c2VkLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uU3VjY2Vzc10gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0aG9kIGhhcyBzdWNjZWVkZWQuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0aG9kIGZhaWxzLlxuXHRcdCAqL1xuXHRcdHRoaXMuYXBwZW5kID0gZnVuY3Rpb24gKG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAnYXBwZW5kJztcblx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdlZGl0JykpIHtcblx0XHRcdFx0dGhpcy5zYXZlKG9uU3VjY2Vzcywgb25GYWlsdXJlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN0eC5vblNhdmVTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0XHRjdHgub25TYXZlRmFpbHVyZSA9IG9uRmFpbHVyZSB8fCBlbXB0eUZ1bmN0aW9uO1xuXHRcdFx0XHR0aGlzLmxvYWQoZm5BdXRvU2F2ZSwgY3R4Lm9uU2F2ZUZhaWx1cmUpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQWRkcyB0aGUgdGV4dCBwcm92aWRlZCB2aWEgYHNldFByZXBlbmRUZXh0KClgIHRvIHRoZSBzdGFydCBvZiB0aGVcblx0XHQgKiBwYWdlLiAgRG9lcyBub3QgcmVxdWlyZSBjYWxsaW5nIGBsb2FkKClgIGZpcnN0LCB1bmxlc3MgYSB3YXRjaGxpc3Rcblx0XHQgKiBleHBpcnkgaXMgdXNlZC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259ICBbb25TdWNjZXNzXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBtZXRob2QgaGFzIHN1Y2NlZWRlZC5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSAgW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0aG9kIGZhaWxzLlxuXHRcdCAqL1xuXHRcdHRoaXMucHJlcGVuZCA9IGZ1bmN0aW9uIChvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuXHRcdFx0Y3R4LmVkaXRNb2RlID0gJ3ByZXBlbmQnO1xuXHRcdFx0aWYgKGZuQ2FuVXNlTXdVc2VyVG9rZW4oJ2VkaXQnKSkge1xuXHRcdFx0XHR0aGlzLnNhdmUob25TdWNjZXNzLCBvbkZhaWx1cmUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4Lm9uU2F2ZVN1Y2Nlc3MgPSBvblN1Y2Nlc3M7XG5cdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlID0gb25GYWlsdXJlIHx8IGVtcHR5RnVuY3Rpb247XG5cdFx0XHRcdHRoaXMubG9hZChmbkF1dG9TYXZlLCBjdHgub25TYXZlRmFpbHVyZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBDcmVhdGVzIGEgbmV3IHNlY3Rpb24gd2l0aCB0aGUgdGV4dCBwcm92aWRlZCBieSBgc2V0TmV3U2VjdGlvblRleHQoKWBcblx0XHQgKiBhbmQgc2VjdGlvbiB0aXRsZSBmcm9tIGBzZXROZXdTZWN0aW9uVGl0bGUoKWAuXG5cdFx0ICogSWYgYGVkaXRTdW1tYXJ5YCBpcyBwcm92aWRlZCwgdGhhdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGVcblx0XHQgKiBhdXRvZ2VuZXJhdGVkIFwiLT5UaXRsZSAobmV3IHNlY3Rpb25cIiBlZGl0IHN1bW1hcnkuXG5cdFx0ICogRG9lcyBub3QgcmVxdWlyZSBjYWxsaW5nIGBsb2FkKClgIGZpcnN0LCB1bmxlc3MgYSB3YXRjaGxpc3QgZXhwaXJ5XG5cdFx0ICogaXMgdXNlZC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259ICBbb25TdWNjZXNzXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBtZXRob2QgaGFzIHN1Y2NlZWRlZC5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSAgW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbWV0aG9kIGZhaWxzLlxuXHRcdCAqL1xuXHRcdHRoaXMubmV3U2VjdGlvbiA9IGZ1bmN0aW9uIChvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuXHRcdFx0Y3R4LmVkaXRNb2RlID0gJ25ldyc7XG5cdFx0XHRpZiAoZm5DYW5Vc2VNd1VzZXJUb2tlbignZWRpdCcpKSB7XG5cdFx0XHRcdHRoaXMuc2F2ZShvblN1Y2Nlc3MsIG9uRmFpbHVyZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdHgub25TYXZlU3VjY2VzcyA9IG9uU3VjY2Vzcztcblx0XHRcdFx0Y3R4Lm9uU2F2ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdFx0dGhpcy5sb2FkKGZuQXV0b1NhdmUsIGN0eC5vblNhdmVGYWlsdXJlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgbG9hZGVkIHBhZ2UsIGluY2x1ZGluZyB0aGUgbmFtZXNwYWNlICovXG5cdFx0dGhpcy5nZXRQYWdlTmFtZSA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHgucGFnZU5hbWU7XG5cdFx0fTtcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gVGhlIHRleHQgb2YgdGhlIHBhZ2UgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvYWQoKSAqL1xuXHRcdHRoaXMuZ2V0UGFnZVRleHQgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnBhZ2VUZXh0O1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7c3RyaW5nfSBwYWdlVGV4dCAtIFVwZGF0ZWQgcGFnZSB0ZXh0IHRoYXQgd2lsbCBiZSBzYXZlZCB3aGVuIGBzYXZlKClgIGlzIGNhbGxlZCAqL1xuXHRcdHRoaXMuc2V0UGFnZVRleHQgPSAocGFnZVRleHQpID0+IHtcblx0XHRcdGN0eC5lZGl0TW9kZSA9ICdhbGwnO1xuXHRcdFx0Y3R4LnBhZ2VUZXh0ID0gcGFnZVRleHQ7XG5cdFx0fTtcblx0XHQvKiogQHBhcmFtIHtzdHJpbmd9IGFwcGVuZFRleHQgLSBUZXh0IHRoYXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgcGFnZSB3aGVuIGBhcHBlbmQoKWAgaXMgY2FsbGVkICovXG5cdFx0dGhpcy5zZXRBcHBlbmRUZXh0ID0gKGFwcGVuZFRleHQpID0+IHtcblx0XHRcdGN0eC5lZGl0TW9kZSA9ICdhcHBlbmQnO1xuXHRcdFx0Y3R4LmFwcGVuZFRleHQgPSBhcHBlbmRUZXh0O1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7c3RyaW5nfSBwcmVwZW5kVGV4dCAtIFRleHQgdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgcGFnZSB3aGVuIGBwcmVwZW5kKClgIGlzIGNhbGxlZCAqL1xuXHRcdHRoaXMuc2V0UHJlcGVuZFRleHQgPSAocHJlcGVuZFRleHQpID0+IHtcblx0XHRcdGN0eC5lZGl0TW9kZSA9ICdwcmVwZW5kJztcblx0XHRcdGN0eC5wcmVwZW5kVGV4dCA9IHByZXBlbmRUZXh0O1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7c3RyaW5nfSBuZXdTZWN0aW9uVGV4dCAtIFRleHQgdGhhdCB3aWxsIGJlIGFkZGVkIGluIGEgbmV3IHNlY3Rpb24gb24gdGhlIHBhZ2Ugd2hlbiBgbmV3U2VjdGlvbigpYCBpcyBjYWxsZWQgKi9cblx0XHR0aGlzLnNldE5ld1NlY3Rpb25UZXh0ID0gKG5ld1NlY3Rpb25UZXh0KSA9PiB7XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAnbmV3Jztcblx0XHRcdGN0eC5uZXdTZWN0aW9uVGV4dCA9IG5ld1NlY3Rpb25UZXh0O1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IG5ld1NlY3Rpb25UaXRsZSAtIFRpdGxlIGZvciB0aGUgbmV3IHNlY3Rpb24gY3JlYXRlZCB3aGVuIGBuZXdTZWN0aW9uKClgIGlzIGNhbGxlZFxuXHRcdCAqIElmIG1pc3NpbmcsIGBjdHguZWRpdFN1bW1hcnlgIHdpbGwgYmUgdXNlZC4gSXNzdWVzIG1heSBvY2N1ciBpZiBhIHN1YnN0aXR1dGVkIHRlbXBsYXRlIGlzIHVzZWQuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXROZXdTZWN0aW9uVGl0bGUgPSAobmV3U2VjdGlvblRpdGxlKSA9PiB7XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAnbmV3Jztcblx0XHRcdGN0eC5uZXdTZWN0aW9uVGl0bGUgPSBuZXdTZWN0aW9uVGl0bGU7XG5cdFx0fTtcblx0XHQvLyBFZGl0LXJlbGF0ZWQgc2V0dGVyIG1ldGhvZHM6XG5cdFx0LyoqXG5cdFx0ICogU2V0IHRoZSBlZGl0IHN1bW1hcnkgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiBgc2F2ZSgpYCBpcyBjYWxsZWQuXG5cdFx0ICogVW5uZWNlc3NhcnkgaWYgZWRpdE1vZGUgaXMgJ25ldycgYW5kIG5ld1NlY3Rpb25UaXRsZSBpcyBwcm92aWRlZC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdW1tYXJ5XG5cdFx0ICovXG5cdFx0dGhpcy5zZXRFZGl0U3VtbWFyeSA9IChzdW1tYXJ5KSA9PiB7XG5cdFx0XHRjdHguZWRpdFN1bW1hcnkgPSBzdW1tYXJ5O1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogU2V0IGFueSBjdXN0b20gdGFnKHMpIHRvIGJlIGFwcGxpZWQgdG8gdGhlIEFQSSBhY3Rpb24uXG5cdFx0ICogQSBudW1iZXIgb2YgYWN0aW9ucyBkb24ndCBzdXBwb3J0IGl0LCBtb3N0IG5vdGFibHkgd2F0Y2guXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gdGFncyAtIFN0cmluZyBvciBhcnJheSBvZiB0YWcocykuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXRDaGFuZ2VUYWdzID0gKHRhZ3MpID0+IHtcblx0XHRcdGN0eC5jaGFuZ2VUYWdzID0gdGFncztcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbY3JlYXRlT3B0aW9uPW51bGxdIC0gQ2FuIHRha2UgdGhlIGZvbGxvd2luZyBmb3VyIHZhbHVlczpcblx0XHQgKiAtIHJlY3JlYXRlOiBjcmVhdGUgdGhlIHBhZ2UgaWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGVkaXQgaXQgaWYgaXQgZXhpc3RzLlxuXHRcdCAqIC0gY3JlYXRlb25seTogY3JlYXRlIHRoZSBwYWdlIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBidXQgcmV0dXJuIGFuXG5cdFx0ICogZXJyb3IgaWYgaXQgYWxyZWFkeSBleGlzdHMuXG5cdFx0ICogLSBub2NyZWF0ZTogZG9uJ3QgY3JlYXRlIHRoZSBwYWdlLCBvbmx5IGVkaXQgaXQgaWYgaXQgYWxyZWFkeSBleGlzdHMuXG5cdFx0ICogLSBgbnVsbGA6IGNyZWF0ZSB0aGUgcGFnZSBpZiBpdCBkb2VzIG5vdCBleGlzdCwgdW5sZXNzIGl0IHdhcyBkZWxldGVkXG5cdFx0ICogaW4gdGhlIG1vbWVudCBiZXR3ZWVuIGxvYWRpbmcgdGhlIHBhZ2UgYW5kIHNhdmluZyB0aGUgZWRpdCAoZGVmYXVsdCkuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXRDcmVhdGVPcHRpb24gPSAoY3JlYXRlT3B0aW9uKSA9PiB7XG5cdFx0XHRjdHguY3JlYXRlT3B0aW9uID0gY3JlYXRlT3B0aW9uO1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7Ym9vbGVhbn0gbWlub3JFZGl0IC0gU2V0IHRydWUgdG8gbWFyayB0aGUgZWRpdCBhcyBhIG1pbm9yIGVkaXQuICovXG5cdFx0dGhpcy5zZXRNaW5vckVkaXQgPSAobWlub3JFZGl0KSA9PiB7XG5cdFx0XHRjdHgubWlub3JFZGl0ID0gbWlub3JFZGl0O1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7Ym9vbGVhbn0gYm90RWRpdCAtIFNldCB0cnVlIHRvIG1hcmsgdGhlIGVkaXQgYXMgYSBib3QgZWRpdCAqL1xuXHRcdHRoaXMuc2V0Qm90RWRpdCA9IChib3RFZGl0KSA9PiB7XG5cdFx0XHRjdHguYm90RWRpdCA9IGJvdEVkaXQ7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNlY3Rpb24gLSBJbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIHNlY3Rpb24gbnVtYmVyIHRvIGxvYWQgb3Igc2F2ZS5cblx0XHQgKiBJZiBzcGVjaWZpZWQgYXMgYG51bGxgLCB0aGUgZW50aXJlIHBhZ2Ugd2lsbCBiZSByZXRyaWV2ZWQuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXRQYWdlU2VjdGlvbiA9IChwYWdlU2VjdGlvbikgPT4ge1xuXHRcdFx0Y3R4LnBhZ2VTZWN0aW9uID0gcGFnZVNlY3Rpb247XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gbWF4Q29uZmxpY3RSZXRyaWVzIC0gTnVtYmVyIG9mIHJldHJpZXMgZm9yIHNhdmUgZXJyb3JzIGludm9sdmluZyBhbiBlZGl0IGNvbmZsaWN0IG9yXG5cdFx0ICogbG9zcyBvZiB0b2tlbi4gRGVmYXVsdDogMi5cblx0XHQgKi9cblx0XHR0aGlzLnNldE1heENvbmZsaWN0UmV0cmllcyA9IChtYXhDb25mbGljdFJldHJpZXMpID0+IHtcblx0XHRcdGN0eC5tYXhDb25mbGljdFJldHJpZXMgPSBtYXhDb25mbGljdFJldHJpZXM7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gbWF4UmV0cmllcyAtIE51bWJlciBvZiByZXRyaWVzIGZvciBzYXZlIGVycm9ycyBub3QgaW52b2x2aW5nIGFuIGVkaXQgY29uZmxpY3Qgb3Jcblx0XHQgKiBsb3NzIG9mIHRva2VuLiBEZWZhdWx0OiAyLlxuXHRcdCAqL1xuXHRcdHRoaXMuc2V0TWF4UmV0cmllcyA9IChtYXhSZXRyaWVzKSA9PiB7XG5cdFx0XHRjdHgubWF4UmV0cmllcyA9IG1heFJldHJpZXM7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBTZXQgd2hldGhlciBhbmQgaG93IHRvIHdhdGNoIHRoZSBwYWdlLCBpbmNsdWRpbmcgc2V0dGluZyBhbiBleHBpcnkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW58c3RyaW5nfE1vcmViaXRzLmRhdGV8RGF0ZX0gW3dhdGNobGlzdE9wdGlvbj1mYWxzZV0gLVxuXHRcdCAqIEJhc2ljYWxseSBhIG1peCBvZiBNVyBBUEkgYW5kIFR3aW5rbGV5IG9wdGlvbnMgYXZhaWxhYmxlIHByZS1leHBpcnk6XG5cdFx0ICogLSBgdHJ1ZWB8YCd5ZXMnYHxgJ3dhdGNoJ2A6IHBhZ2Ugd2lsbCBiZSBhZGRlZCB0byB0aGUgdXNlcidzXG5cdFx0ICogd2F0Y2hsaXN0IHdoZW4gdGhlIGFjdGlvbiBpcyBjYWxsZWQuIERlZmF1bHRzIHRvIGFuIGluZGVmaW5pdGVcblx0XHQgKiB3YXRjaCB1bmxlc3MgYHdhdGNobGlzdEV4cGlyeWAgaXMgcHJvdmlkZWQuXG5cdFx0ICogLSBgZmFsc2VgfGAnbm8nYHxgJ25vY2hhbmdlJ2A6IHdhdGNobGlzdCBzdGF0dXMgb2YgdGhlIHBhZ2UgKGluY2x1ZGluZyBleHBpcnkpIHdpbGwgbm90IGJlIGNoYW5nZWQuXG5cdFx0ICogLSBgJ2RlZmF1bHQnYHxgJ3ByZWZlcmVuY2VzJ2A6IHdhdGNobGlzdCBzdGF0dXMgb2YgdGhlIHBhZ2Ugd2lsbCBiZVxuXHRcdCAqIHNldCBiYXNlZCBvbiB0aGUgdXNlcidzIHByZWZlcmVuY2Ugc2V0dGluZ3Mgd2hlbiB0aGUgYWN0aW9uIGlzXG5cdFx0ICogY2FsbGVkLiBEZWZhdWx0cyB0byBhbiBpbmRlZmluaXRlIHdhdGNoIHVubGVzcyBgd2F0Y2hsaXN0RXhwaXJ5YCBpc1xuXHRcdCAqIHByb3ZpZGVkLlxuXHRcdCAqIC0gYCd1bndhdGNoJ2A6IGV4cGxpY2l0bHkgdW53YXRjaCB0aGUgcGFnZS5cblx0XHQgKiAtIEFueSBvdGhlciBgc3RyaW5nYCBvciBgbnVtYmVyYCwgb3IgYSBgTW9yZWJpdHMuZGF0ZWAgb3IgYERhdGVgXG5cdFx0ICogb2JqZWN0OiB3YXRjaCBwYWdlIHVudGlsIHRoZSBzcGVjaWZpZWQgdGltZSwgZGVmZXJyaW5nIHRvXG5cdFx0ICogYHdhdGNobGlzdEV4cGlyeWAgaWYgcHJvdmlkZWQuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfE1vcmViaXRzLmRhdGV8RGF0ZX0gW3dhdGNobGlzdEV4cGlyeT1pbmZpbml0eV0gLVxuXHRcdCAqIEEgZGF0ZS1saWtlIHN0cmluZyBvciBudW1iZXIsIG9yIGEgZGF0ZSBvYmplY3QuICBJZiBhIHN0cmluZyBvciBudW1iZXIsXG5cdFx0ICogY2FuIGJlIHJlbGF0aXZlICgyIHdlZWtzKSBvciBvdGhlciBzaW1pbGFybHkgZGF0ZS1saWtlIChpLmUuIE5PVCBcInBvdGF0b1wiKTpcblx0XHQgKiBJU08gODYwMTogMjAzOC0wMS0wOVQwMzoxNDowN1pcblx0XHQgKiBNZWRpYVdpa2k6IDIwMzgwMTA5MDMxNDA3XG5cdFx0ICogVU5JWDogMjE0NzQ4MzY0N1xuXHRcdCAqIFNRTDogMjAzOC0wMS0wOSAwMzoxNDowN1xuXHRcdCAqIENhbiBhbHNvIGJlIGBpbmZpbml0eWAgb3IgaW5maW5pdHktbGlrZSAoYGluZmluaXRlYCwgYGluZGVmaW5pdGVgLCBhbmQgYG5ldmVyYCkuXG5cdFx0ICogU2VlIHtAbGluayBodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvc291cmNlL21lZGlhd2lraS1saWJzLVRpbWVzdGFtcC9icm93c2UvbWFzdGVyL3NyYy9Db252ZXJ0aWJsZVRpbWVzdGFtcC5waHA7NGU1M2I4NTlhOTU4MGM1NTk1ODA3OGY0NmRkNGYzYTQ0ZDBmY2FhMCQ1Ny0xMDk/YXM9c291cmNlJmJsYW1lPW9mZn1cblx0XHQgKi9cblx0XHR0aGlzLnNldFdhdGNobGlzdCA9ICh3YXRjaGxpc3RPcHRpb24sIHdhdGNobGlzdEV4cGlyeSkgPT4ge1xuXHRcdFx0aWYgKHdhdGNobGlzdE9wdGlvbiBpbnN0YW5jZW9mIE1vcmViaXRzLmRhdGUgfHwgd2F0Y2hsaXN0T3B0aW9uIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHR3YXRjaGxpc3RPcHRpb24gPSB3YXRjaGxpc3RPcHRpb24udG9JU09TdHJpbmcoKTtcblx0XHRcdH1cblx0XHRcdGlmICh3YXRjaGxpc3RFeHBpcnkgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR3YXRjaGxpc3RFeHBpcnkgPSAnaW5maW5pdHknO1xuXHRcdFx0fSBlbHNlIGlmICh3YXRjaGxpc3RFeHBpcnkgaW5zdGFuY2VvZiBNb3JlYml0cy5kYXRlIHx8IHdhdGNobGlzdEV4cGlyeSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0d2F0Y2hsaXN0RXhwaXJ5ID0gd2F0Y2hsaXN0RXhwaXJ5LnRvSVNPU3RyaW5nKCk7XG5cdFx0XHR9XG5cdFx0XHRzd2l0Y2ggKHdhdGNobGlzdE9wdGlvbikge1xuXHRcdFx0XHRjYXNlICdub2NoYW5nZSc6XG5cdFx0XHRcdGNhc2UgJ25vJzpcblx0XHRcdFx0Y2FzZSBmYWxzZTpcblx0XHRcdFx0Y2FzZSB1bmRlZmluZWQ6XG5cdFx0XHRcdFx0Y3R4LndhdGNobGlzdE9wdGlvbiA9ICdub2NoYW5nZSc7XG5cdFx0XHRcdFx0Ly8gVGhlIE1XIEFQSSBhbGxvd3MgZm9yIGNoYW5naW5nIGV4cGlyeSB3aXRoIG5vY2hhbmdlIChhcyBcIm5vY2hhbmdlXCIgcmVmZXJzIHRvIHRoZSBiaW5hcnkgc3RhdHVzKSxcblx0XHRcdFx0XHQvLyBidXQgYnkga2VlcGluZyB0aGlzIG51bGwgaXQgd2lsbCBkZWZhdWx0IHRvIGFueSBleGlzdGluZyBleHBpcnksIGVuc3VyZSB0aGVyZSBpcyBhY3R1YWxseSBcIm5vIGNoYW5nZS5cIlxuXHRcdFx0XHRcdGN0eC53YXRjaGxpc3RFeHBpcnkgPSBudWxsO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICd1bndhdGNoJzpcblx0XHRcdFx0XHQvLyBleHBpcnkgdW5pbXBvcnRhbnRcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0T3B0aW9uID0gJ3Vud2F0Y2gnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdwcmVmZXJlbmNlcyc6XG5cdFx0XHRcdGNhc2UgJ2RlZmF1bHQnOlxuXHRcdFx0XHRcdGN0eC53YXRjaGxpc3RPcHRpb24gPSAncHJlZmVyZW5jZXMnO1xuXHRcdFx0XHRcdC8vIFRoZSBBUEkgYWxsb3dzIGFuIGV4cGlyeSBoZXJlLCBidXQgdGhlcmUgaXMgYXMgb2YgeWV0IChUMjY1NzE2KVxuXHRcdFx0XHRcdC8vIG5vIGV4cGlyeSBwcmVmZXJlbmNlIG9wdGlvbiwgc28gaXQncyBhIGJpdCBkZXZvaWQgb2YgY29udGV4dC5cblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0RXhwaXJ5ID0gd2F0Y2hsaXN0RXhwaXJ5O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICd3YXRjaCc6XG5cdFx0XHRcdGNhc2UgJ3llcyc6XG5cdFx0XHRcdGNhc2UgdHJ1ZTpcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0T3B0aW9uID0gJ3dhdGNoJztcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0RXhwaXJ5ID0gd2F0Y2hsaXN0RXhwaXJ5O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdC8vIE5vdCByZWFsbHkgYSBcImRlZmF1bHRcIiBwZXIgc2UgYnV0IGNhdGNoZXMgXCJhbnkgb3RoZXIgc3RyaW5nXCJcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0T3B0aW9uID0gJ3dhdGNoJztcblx0XHRcdFx0XHRjdHgud2F0Y2hsaXN0RXhwaXJ5ID0gd2F0Y2hsaXN0T3B0aW9uO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogU2V0IGEgd2F0Y2hsaXN0IGV4cGlyeS4gc2V0V2F0Y2hsaXN0IGNhbiBtb3N0bHkgaGFuZGxlIHRoaXMgYnlcblx0XHQgKiBpdHNlbGYsIHNvIHRoaXMgaXMgaGVyZSBsYXJnZWx5IGZvciBjb21wbGV0ZW5lc3MgYW5kIGNvbXBhdGliaWxpdHlcblx0XHQgKiB3aXRoIHRoZSBmdWxsIHN1aXRlIG9mIG9wdGlvbnMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8TW9yZWJpdHMuZGF0ZXxEYXRlfSBbd2F0Y2hsaXN0RXhwaXJ5PWluZmluaXR5XSAtXG5cdFx0ICogQSBkYXRlLWxpa2Ugc3RyaW5nIG9yIG51bWJlciwgb3IgYSBkYXRlIG9iamVjdC4gIElmIGEgc3RyaW5nIG9yIG51bWJlcixcblx0XHQgKiBjYW4gYmUgcmVsYXRpdmUgKDIgd2Vla3MpIG9yIG90aGVyIHNpbWlsYXJseSBkYXRlLWxpa2UgKGkuZS4gTk9UIFwicG90YXRvXCIpOlxuXHRcdCAqIElTTyA4NjAxOiAyMDM4LTAxLTA5VDAzOjE0OjA3WlxuXHRcdCAqIE1lZGlhV2lraTogMjAzODAxMDkwMzE0MDdcblx0XHQgKiBVTklYOiAyMTQ3NDgzNjQ3XG5cdFx0ICogU1FMOiAyMDM4LTAxLTA5IDAzOjE0OjA3XG5cdFx0ICogQ2FuIGFsc28gYmUgYGluZmluaXR5YCBvciBpbmZpbml0eS1saWtlIChgaW5maW5pdGVgLCBgaW5kZWZpbml0ZWAsIGFuZCBgbmV2ZXJgKS5cblx0XHQgKiBTZWUge0BsaW5rIGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9zb3VyY2UvbWVkaWF3aWtpLWxpYnMtVGltZXN0YW1wL2Jyb3dzZS9tYXN0ZXIvc3JjL0NvbnZlcnRpYmxlVGltZXN0YW1wLnBocDs0ZTUzYjg1OWE5NTgwYzU1OTU4MDc4ZjQ2ZGQ0ZjNhNDRkMGZjYWEwJDU3LTEwOT9hcz1zb3VyY2UmYmxhbWU9b2ZmfVxuXHRcdCAqL1xuXHRcdHRoaXMuc2V0V2F0Y2hsaXN0RXhwaXJ5ID0gKHdhdGNobGlzdEV4cGlyeSkgPT4ge1xuXHRcdFx0aWYgKHdhdGNobGlzdEV4cGlyeSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHdhdGNobGlzdEV4cGlyeSA9ICdpbmZpbml0eSc7XG5cdFx0XHR9IGVsc2UgaWYgKHdhdGNobGlzdEV4cGlyeSBpbnN0YW5jZW9mIE1vcmViaXRzLmRhdGUgfHwgd2F0Y2hsaXN0RXhwaXJ5IGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHR3YXRjaGxpc3RFeHBpcnkgPSB3YXRjaGxpc3RFeHBpcnkudG9JU09TdHJpbmcoKTtcblx0XHRcdH1cblx0XHRcdGN0eC53YXRjaGxpc3RFeHBpcnkgPSB3YXRjaGxpc3RFeHBpcnk7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAZGVwcmVjYXRlZCBBcyBvZiBEZWNlbWJlciAyMDIwLCB1c2Ugc2V0V2F0Y2hsaXN0LlxuXHRcdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW3dhdGNobGlzdE9wdGlvbj1mYWxzZV0gLVxuXHRcdCAqIC0gYFRydWVgOiBwYWdlIHdhdGNobGlzdCBzdGF0dXMgd2lsbCBiZSBzZXQgYmFzZWQgb24gdGhlIHVzZXInc1xuXHRcdCAqIHByZWZlcmVuY2Ugc2V0dGluZ3Mgd2hlbiBgc2F2ZSgpYCBpcyBjYWxsZWQuXG5cdFx0ICogLSBgRmFsc2VgOiB3YXRjaGxpc3Qgc3RhdHVzIG9mIHRoZSBwYWdlIHdpbGwgbm90IGJlIGNoYW5nZWQuXG5cdFx0ICpcblx0XHQgKiBXYXRjaGxpc3Qgbm90ZXM6XG5cdFx0ICogMS4gVGhlIE1lZGlhV2lraSBBUEkgdmFsdWUgb2YgJ3Vud2F0Y2gnLCB3aGljaCBleHBsaWNpdGx5IHJlbW92ZXNcblx0XHQgKiB0aGUgcGFnZSBmcm9tIHRoZSB1c2VyJ3Mgd2F0Y2hsaXN0LCBpcyBub3QgdXNlZC5cblx0XHQgKiAyLiBJZiBib3RoIGBzZXRXYXRjaGxpc3QoKWAgYW5kIGBzZXRXYXRjaGxpc3RGcm9tUHJlZmVyZW5jZXMoKWAgYXJlXG5cdFx0ICogY2FsbGVkLCB0aGUgbGFzdCBjYWxsIHRha2VzIHByaW9yaXR5LlxuXHRcdCAqIDMuIFR3aW5rbGUgbW9kdWxlcyBzaG91bGQgdXNlIHRoZSBhcHByb3ByaWF0ZSBwcmVmZXJlbmNlIHRvIHNldCB0aGUgd2F0Y2hsaXN0IG9wdGlvbnMuXG5cdFx0ICogNC4gTW9zdCBUd2lua2xlIG1vZHVsZXMgdXNlIGBzZXRXYXRjaGxpc3QoKWAuIGBzZXRXYXRjaGxpc3RGcm9tUHJlZmVyZW5jZXMoKWBcblx0XHQgKiBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIGZldyBUd2lua2xlIHdhdGNobGlzdCBwcmVmZXJlbmNlcyB0aGF0XG5cdFx0ICogYWNjZXB0IGEgc3RyaW5nIHZhbHVlIG9mIGBkZWZhdWx0YC5cblx0XHQgKi9cblx0XHR0aGlzLnNldFdhdGNobGlzdEZyb21QcmVmZXJlbmNlcyA9ICh3YXRjaGxpc3RPcHRpb24pID0+IHtcblx0XHRcdGNvbnNvbGUud2Fybihcblx0XHRcdFx0J1tNb3JlYml0c10gTk9URTogTW9yZWJpdHMud2lraS5wYWdlLnNldFdhdGNobGlzdEZyb21QcmVmZXJlbmNlcyB3YXMgZGVwcmVjYXRlZCBEZWNlbWJlciAyMDIwLCBwbGVhc2UgdXNlIHNldFdhdGNobGlzdCdcblx0XHRcdCk7XG5cdFx0XHRpZiAod2F0Y2hsaXN0T3B0aW9uKSB7XG5cdFx0XHRcdGN0eC53YXRjaGxpc3RPcHRpb24gPSAncHJlZmVyZW5jZXMnO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4LndhdGNobGlzdE9wdGlvbiA9ICdub2NoYW5nZSc7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFtmb2xsb3dSZWRpcmVjdD1mYWxzZV0gLVxuXHRcdCAqIC0gYHRydWVgOiBhIG1heGltdW0gb2Ygb25lIHJlZGlyZWN0IHdpbGwgYmUgZm9sbG93ZWQuIEluIHRoZSBldmVudFxuXHRcdCAqIG9mIGEgcmVkaXJlY3QsIGEgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgYW5kIHRoZSByZWRpcmVjdFxuXHRcdCAqIHRhcmdldCBjYW4gYmUgcmV0cmlldmVkIHdpdGggZ2V0UGFnZU5hbWUoKS5cblx0XHQgKiAtIGBmYWxzZWA6IChkZWZhdWx0KSB0aGUgcmVxdWVzdGVkIHBhZ2VOYW1lIHdpbGwgYmUgdXNlZCB3aXRob3V0IHJlZ2FyZCB0byBhbnkgcmVkaXJlY3QuXG5cdFx0ICogQHBhcmFtIHtib29sZWFufSBbZm9sbG93Q3Jvc3NOc1JlZGlyZWN0PXRydWVdIC0gTm90IGFwcGxpY2FibGUgaWYgYGZvbGxvd1JlZGlyZWN0YCBpcyBub3Qgc2V0IHRydWUuXG5cdFx0ICogLSBgdHJ1ZWA6IChkZWZhdWx0KSBmb2xsb3cgcmVkaXJlY3QgZXZlbiBpZiBpdCBpcyBhIGNyb3NzLW5hbWVzcGFjZSByZWRpcmVjdFxuXHRcdCAqIC0gYGZhbHNlYDogZG9uJ3QgZm9sbG93IHJlZGlyZWN0IGlmIGl0IGlzIGNyb3NzLW5hbWVzcGFjZSwgZWRpdCB0aGUgcmVkaXJlY3QgaXRzZWxmLlxuXHRcdCAqL1xuXHRcdHRoaXMuc2V0Rm9sbG93UmVkaXJlY3QgPSAoZm9sbG93UmVkaXJlY3QsIGZvbGxvd0Nyb3NzTnNSZWRpcmVjdCkgPT4ge1xuXHRcdFx0aWYgKGN0eC5wYWdlTG9hZGVkKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdCdJbnRlcm5hbCBlcnJvcjogY2Fubm90IGNoYW5nZSByZWRpcmVjdCBzZXR0aW5nIGFmdGVyIHRoZSBwYWdlIGhhcyBiZWVuIGxvYWRlZCEnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGN0eC5mb2xsb3dSZWRpcmVjdCA9IGZvbGxvd1JlZGlyZWN0O1xuXHRcdFx0Y3R4LmZvbGxvd0Nyb3NzTnNSZWRpcmVjdCA9XG5cdFx0XHRcdGZvbGxvd0Nyb3NzTnNSZWRpcmVjdCA9PT0gdW5kZWZpbmVkID8gY3R4LmZvbGxvd0Nyb3NzTnNSZWRpcmVjdCA6IGZvbGxvd0Nyb3NzTnNSZWRpcmVjdDtcblx0XHR9O1xuXHRcdC8vIGxvb2t1cC1jcmVhdGlvbiBzZXR0ZXIgZnVuY3Rpb25cblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IGZsYWcgLSBJZiBzZXQgdHJ1ZSwgdGhlIGF1dGhvciBhbmQgdGltZXN0YW1wIG9mXG5cdFx0ICogdGhlIGZpcnN0IG5vbi1yZWRpcmVjdCB2ZXJzaW9uIG9mIHRoZSBwYWdlIGlzIHJldHJpZXZlZC5cblx0XHQgKlxuXHRcdCAqIFdhcm5pbmc6XG5cdFx0ICogMS4gSWYgdGhlcmUgYXJlIG5vIHJldmlzaW9ucyBhbW9uZyB0aGUgZmlyc3QgNTAgdGhhdCBhcmVcblx0XHQgKiBub24tcmVkaXJlY3RzLCBvciBpZiB0aGVyZSBhcmUgbGVzcyA1MCByZXZpc2lvbnMgYW5kIGFsbCBhcmVcblx0XHQgKiByZWRpcmVjdHMsIHRoZSBvcmlnaW5hbCBjcmVhdGlvbiBpcyByZXRyaWV2ZWQuXG5cdFx0ICogMi4gUmV2aXNpb25zIHRoYXQgdGhlIHVzZXIgaXMgbm90IHByaXZpbGVnZWQgdG8gYWNjZXNzXG5cdFx0ICogKHJldmRlbGVkL3N1cHByZXNzZWQpIHdpbGwgYmUgdHJlYXRlZCBhcyBub24tcmVkaXJlY3RzLlxuXHRcdCAqIDMuIE11c3Qgbm90IGJlIHVzZWQgd2hlbiB0aGUgcGFnZSBoYXMgYSBub24td2lraXRleHQgY29udGVudG1vZGVsXG5cdFx0ICogc3VjaCBhcyBNb2R1bGVzcGFjZSBMdWEgb3IgdXNlciBKYXZhU2NyaXB0L0NTUy5cblx0XHQgKi9cblx0XHR0aGlzLnNldExvb2t1cE5vblJlZGlyZWN0Q3JlYXRvciA9IChmbGFnKSA9PiB7XG5cdFx0XHRjdHgubG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yID0gZmxhZztcblx0XHR9O1xuXHRcdC8vIE1vdmUtcmVsYXRlZCBzZXR0ZXIgZnVuY3Rpb25zXG5cdFx0LyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvbiAqL1xuXHRcdHRoaXMuc2V0TW92ZURlc3RpbmF0aW9uID0gKGRlc3RpbmF0aW9uKSA9PiB7XG5cdFx0XHRjdHgubW92ZURlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG5cdFx0fTtcblx0XHQvKiogQHBhcmFtIHtib29sZWFufSBmbGFnICovXG5cdFx0dGhpcy5zZXRNb3ZlVGFsa1BhZ2UgPSAoZmxhZykgPT4ge1xuXHRcdFx0Y3R4Lm1vdmVUYWxrUGFnZSA9ICEhZmxhZztcblx0XHR9O1xuXHRcdC8qKiBAcGFyYW0ge2Jvb2xlYW59IGZsYWcgKi9cblx0XHR0aGlzLnNldE1vdmVTdWJwYWdlcyA9IChmbGFnKSA9PiB7XG5cdFx0XHRjdHgubW92ZVN1YnBhZ2VzID0gISFmbGFnO1xuXHRcdH07XG5cdFx0LyoqIEBwYXJhbSB7Ym9vbGVhbn0gZmxhZyAqL1xuXHRcdHRoaXMuc2V0TW92ZVN1cHByZXNzUmVkaXJlY3QgPSAoZmxhZykgPT4ge1xuXHRcdFx0Y3R4Lm1vdmVTdXBwcmVzc1JlZGlyZWN0ID0gISFmbGFnO1xuXHRcdH07XG5cdFx0Ly8gUHJvdGVjdC1yZWxhdGVkIHNldHRlciBmdW5jdGlvbnNcblx0XHQvKipcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gbGV2ZWwgLSBUaGUgcmlnaHQgcmVxdWlyZWQgZm9yIHRoZSBzcGVjaWZpYyBhY3Rpb25cblx0XHQgKiBlLmcuIHN5c29wLCB0ZW1wbGF0ZWVkaXRvciwgYXV0b2NvbmZpcm1lZFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwaXJ5PWluZmluaXR5XVxuXHRcdCAqL1xuXHRcdHRoaXMuc2V0RWRpdFByb3RlY3Rpb24gPSAobGV2ZWwsIGV4cGlyeSkgPT4ge1xuXHRcdFx0Y3R4LnByb3RlY3RFZGl0ID0ge1xuXHRcdFx0XHRsZXZlbCxcblx0XHRcdFx0ZXhwaXJ5OiBleHBpcnkgfHwgJ2luZmluaXR5Jyxcblx0XHRcdH07XG5cdFx0fTtcblx0XHR0aGlzLnNldE1vdmVQcm90ZWN0aW9uID0gKGxldmVsLCBleHBpcnkpID0+IHtcblx0XHRcdGN0eC5wcm90ZWN0TW92ZSA9IHtcblx0XHRcdFx0bGV2ZWwsXG5cdFx0XHRcdGV4cGlyeTogZXhwaXJ5IHx8ICdpbmZpbml0eScsXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0dGhpcy5zZXRDcmVhdGVQcm90ZWN0aW9uID0gKGxldmVsLCBleHBpcnkpID0+IHtcblx0XHRcdGN0eC5wcm90ZWN0Q3JlYXRlID0ge1xuXHRcdFx0XHRsZXZlbCxcblx0XHRcdFx0ZXhwaXJ5OiBleHBpcnkgfHwgJ2luZmluaXR5Jyxcblx0XHRcdH07XG5cdFx0fTtcblx0XHR0aGlzLnNldENhc2NhZGluZ1Byb3RlY3Rpb24gPSAoZmxhZykgPT4ge1xuXHRcdFx0Y3R4LnByb3RlY3RDYXNjYWRlID0gISFmbGFnO1xuXHRcdH07XG5cdFx0dGhpcy5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nID0gKCkgPT4ge1xuXHRcdFx0Y3R4LnN1cHByZXNzUHJvdGVjdFdhcm5pbmcgPSB0cnVlO1xuXHRcdH07XG5cdFx0Ly8gUmV2ZXJ0LXJlbGF0ZWQgZ2V0dGVycy9zZXR0ZXJzOlxuXHRcdHRoaXMuc2V0T2xkSUQgPSAob2xkSUQpID0+IHtcblx0XHRcdGN0eC5yZXZlcnRPbGRJRCA9IG9sZElEO1xuXHRcdH07XG5cdFx0LyoqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjdXJyZW50IHJldmlzaW9uIElEIG9mIHRoZSBwYWdlICovXG5cdFx0dGhpcy5nZXRDdXJyZW50SUQgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnJldmVydEN1cklEO1xuXHRcdH07XG5cdFx0LyoqIEByZXR1cm5zIHtzdHJpbmd9IExhc3QgZWRpdG9yIG9mIHRoZSBwYWdlICovXG5cdFx0dGhpcy5nZXRSZXZpc2lvblVzZXIgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnJldmVydFVzZXI7XG5cdFx0fTtcblx0XHQvKiogQHJldHVybnMge3N0cmluZ30gSVNPIDg2MDEgdGltZXN0YW1wIGF0IHdoaWNoIHRoZSBwYWdlIHdhcyBsYXN0IGVkaXRlZC4gKi9cblx0XHR0aGlzLmdldExhc3RFZGl0VGltZSA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHgubGFzdEVkaXRUaW1lO1xuXHRcdH07XG5cdFx0Ly8gTWlzY2VsbGFuZW91cyBnZXR0ZXJzL3NldHRlcnM6XG5cdFx0LyoqXG5cdFx0ICogRGVmaW5lIGFuIG9iamVjdCBmb3IgdXNlIGluIGEgY2FsbGJhY2sgZnVuY3Rpb24uXG5cdFx0ICpcblx0XHQgKiBgY2FsbGJhY2tQYXJhbWV0ZXJzYCBpcyBmb3IgdXNlIGJ5IHRoZSBjYWxsZXIgb25seS4gVGhlIHBhcmFtZXRlcnNcblx0XHQgKiBhbGxvdyBhIGNhbGxlciB0byBwYXNzIHRoZSBwcm9wZXIgY29udGV4dCBpbnRvIGl0cyBjYWxsYmFja1xuXHRcdCAqIGZ1bmN0aW9uLiAgQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IGFueSBjaGFuZ2VzIHRvIHRoZVxuXHRcdCAqIGNhbGxiYWNrUGFyYW1ldGVycyBvYmplY3Qgd2l0aGluIGEgYGxvYWQoKWAgY2FsbGJhY2sgc3RpbGwgcGVybWl0IGFcblx0XHQgKiBwcm9wZXIgcmUtZW50cnkgaW50byB0aGUgYGxvYWQoKWAgY2FsbGJhY2sgaWYgYW4gZWRpdCBjb25mbGljdCBpc1xuXHRcdCAqIGRldGVjdGVkIHVwb24gY2FsbGluZyBgc2F2ZSgpYC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBjYWxsYmFja1BhcmFtZXRlcnNcblx0XHQgKi9cblx0XHR0aGlzLnNldENhbGxiYWNrUGFyYW1ldGVycyA9IChjYWxsYmFja1BhcmFtZXRlcnMpID0+IHtcblx0XHRcdGN0eC5jYWxsYmFja1BhcmFtZXRlcnMgPSBjYWxsYmFja1BhcmFtZXRlcnM7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBAcmV0dXJucyB7T2JqZWN0fSAtIFRoZSBvYmplY3QgcHJldmlvdXNseSBzZXQgYnkgYHNldENhbGxiYWNrUGFyYW1ldGVycygpYC5cblx0XHQgKi9cblx0XHR0aGlzLmdldENhbGxiYWNrUGFyYW1ldGVycyA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHguY2FsbGJhY2tQYXJhbWV0ZXJzO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHBhcmFtIHtNb3JlYml0cy5zdGF0dXN9IHN0YXR1c0VsZW1lbnRcblx0XHQgKi9cblx0XHR0aGlzLnNldFN0YXR1c0VsZW1lbnQgPSAoc3RhdHVzRWxlbWVudCkgPT4ge1xuXHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQgPSBzdGF0dXNFbGVtZW50O1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnN0YXR1c30gU3RhdHVzIGVsZW1lbnQgY3JlYXRlZCBieSB0aGUgY29uc3RydWN0b3IuXG5cdFx0ICovXG5cdFx0dGhpcy5nZXRTdGF0dXNFbGVtZW50ID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuIGN0eC5zdGF0dXNFbGVtZW50O1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBhZ2UgZXhpc3RlZCBvbiB0aGUgd2lraSB3aGVuIGl0IHdhcyBsYXN0IGxvYWRlZC5cblx0XHQgKi9cblx0XHR0aGlzLmV4aXN0cyA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHgucGFnZUV4aXN0cztcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9IFBhZ2UgSUQgb2YgdGhlIHBhZ2UgbG9hZGVkLiAwIGlmIHRoZSBwYWdlIGRvZXNuJ3Rcblx0XHQgKiBleGlzdC5cblx0XHQgKi9cblx0XHR0aGlzLmdldFBhZ2VJRCA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHgucGFnZUlEO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge3N0cmluZ30gLSBDb250ZW50IG1vZGVsIG9mIHRoZSBwYWdlLiAgUG9zc2libGUgdmFsdWVzXG5cdFx0ICogaW5jbHVkZSAoYnV0IG1heSBub3QgYmUgbGltaXRlZCB0byk6IGB3aWtpdGV4dGAsIGBqYXZhc2NyaXB0YCxcblx0XHQgKiBgY3NzYCwgYGpzb25gLCBgU2NyaWJ1bnRvYCwgYHNhbml0aXplZC1jc3NgLCBgTWFzc01lc3NhZ2VMaXN0Q29udGVudGAuXG5cdFx0ICogQWxzbyBnZXR0YWJsZSB2aWEgYG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpYC5cblx0XHQgKi9cblx0XHR0aGlzLmdldENvbnRlbnRNb2RlbCA9ICgpID0+IHtcblx0XHRcdHJldHVybiBjdHguY29udGVudE1vZGVsO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW58c3RyaW5nfSAtIFdhdGNoZWQgc3RhdHVzIG9mIHRoZSBwYWdlLiBCb29sZWFuXG5cdFx0ICogdW5sZXNzIGl0J3MgYmVpbmcgd2F0Y2hlZCB0ZW1wb3JhcmlseSwgaW4gd2hpY2ggY2FzZSByZXR1cm5zIHRoZVxuXHRcdCAqIGV4cGlyeSBzdHJpbmcuXG5cdFx0ICovXG5cdFx0dGhpcy5nZXRXYXRjaGVkID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuIGN0eC53YXRjaGVkO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge3N0cmluZ30gSVNPIDg2MDEgdGltZXN0YW1wIGF0IHdoaWNoIHRoZSBwYWdlIHdhcyBsYXN0IGxvYWRlZC5cblx0XHQgKi9cblx0XHR0aGlzLmdldExvYWRUaW1lID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuIGN0eC5sb2FkVGltZTtcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB1c2VyIHdobyBjcmVhdGVkIHRoZSBwYWdlIGZvbGxvd2luZyBgbG9va3VwQ3JlYXRpb24oKWAuXG5cdFx0ICovXG5cdFx0dGhpcy5nZXRDcmVhdG9yID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuIGN0eC5jcmVhdG9yO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIElTT1N0cmluZyB0aW1lc3RhbXAgb2YgcGFnZSBjcmVhdGlvbiBmb2xsb3dpbmcgYGxvb2t1cENyZWF0aW9uKClgLlxuXHRcdCAqL1xuXHRcdHRoaXMuZ2V0Q3JlYXRpb25UaW1lc3RhbXAgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnRpbWVzdGFtcDtcblx0XHR9O1xuXHRcdC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gd2hldGhlciBvciBub3QgeW91IGNhbiBlZGl0IHRoZSBwYWdlICovXG5cdFx0dGhpcy5jYW5FZGl0ID0gKCkgPT4ge1xuXHRcdFx0cmV0dXJuICEhY3R4LnRlc3RBY3Rpb25zICYmIGN0eC50ZXN0QWN0aW9ucy5pbmNsdWRlcygnZWRpdCcpO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogUmV0cmlldmVzIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlciB3aG8gY3JlYXRlZCB0aGUgcGFnZSBhcyB3ZWxsIGFzXG5cdFx0ICogdGhlIHRpbWVzdGFtcCBvZiBjcmVhdGlvbi4gIFRoZSB1c2VybmFtZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZVxuXHRcdCAqIGBnZXRDcmVhdG9yKClgIGZ1bmN0aW9uOyB0aGUgdGltZXN0YW1wIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlXG5cdFx0ICogYGdldENyZWF0aW9uVGltZXN0YW1wKClgIGZ1bmN0aW9uLlxuXHRcdCAqIFByaW9yIHRvIEp1bmUgMjAxOSBrbm93biBhcyBgbG9va3VwQ3JlYXRvcigpYC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IG9uU3VjY2VzcyAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuXG5cdFx0ICogdGhlIHVzZXJuYW1lIGFuZCB0aW1lc3RhbXAgYXJlIGZvdW5kIHdpdGhpbiB0aGUgY2FsbGJhY2suXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlblxuXHRcdCAqIHRoZSBsb29rdXAgZmFpbHNcblx0XHQgKi9cblx0XHR0aGlzLmxvb2t1cENyZWF0aW9uID0gZnVuY3Rpb24gKG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvblN1Y2Nlc3MgPSBvblN1Y2Nlc3M7XG5cdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvbkZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghb25TdWNjZXNzKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKCdJbnRlcm5hbCBlcnJvcjogbm8gb25TdWNjZXNzIGNhbGxiYWNrIHByb3ZpZGVkIHRvIGxvb2t1cENyZWF0aW9uKCkhJyk7XG5cdFx0XHRcdGN0eC5vbkxvb2t1cENyZWF0aW9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRcdFx0cHJvcDogJ3JldmlzaW9ucycsXG5cdFx0XHRcdHRpdGxlczogY3R4LnBhZ2VOYW1lLFxuXHRcdFx0XHRydmxpbWl0OiAxLFxuXHRcdFx0XHRydnByb3A6ICd1c2VyfHRpbWVzdGFtcCcsXG5cdFx0XHRcdHJ2ZGlyOiAnbmV3ZXInLFxuXHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdH07XG5cdFx0XHQvLyBPbmx5IHRoZSB3aWtpdGV4dCBjb250ZW50IG1vZGVsIGNhbiByZWxpYWJseSBoYW5kbGVcblx0XHRcdC8vIHJ2c2VjdGlvbiwgb3RoZXJzIHJldHVybiBhbiBlcnJvciB3aGVuIHBhaXJlZCB3aXRoIHRoZVxuXHRcdFx0Ly8gY29udGVudCBydnByb3AuIFJlbGF0ZWRseSwgbm9uLXdpa2l0ZXh0IG1vZGVscyBkb24ndFxuXHRcdFx0Ly8gdW5kZXJzdGFuZCB0aGUgI1JFRElSRUNUIGNvbmNlcHQsIHNvIHdlIHNob3VsZG4ndCBhdHRlbXB0XG5cdFx0XHQvLyB0aGUgcmVkaXJlY3QgcmVzb2x1dGlvbiBpbiBmbkxvb2t1cENyZWF0aW9uU3VjY2Vzc1xuXHRcdFx0aWYgKGN0eC5sb29rdXBOb25SZWRpcmVjdENyZWF0b3IpIHtcblx0XHRcdFx0cXVlcnkucnZzZWN0aW9uID0gMDtcblx0XHRcdFx0cXVlcnkucnZwcm9wICs9ICd8Y29udGVudCc7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3R4LmZvbGxvd1JlZGlyZWN0KSB7XG5cdFx0XHRcdHF1ZXJ5LnJlZGlyZWN0cyA9ICcnOyAvLyBmb2xsb3cgYWxsIHJlZGlyZWN0c1xuXHRcdFx0fVxuXG5cdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5oqT5Y+W6aG16Z2i5Yib5bu66ICF5L+h5oGvJywgJ+aKk+WPlumggemdouW7uueri+iAheizh+ioiicpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0Zm5Mb29rdXBDcmVhdGlvblN1Y2Nlc3MsXG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LFxuXHRcdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvbkZhaWx1cmVcblx0XHRcdCk7XG5cdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4Lmxvb2t1cENyZWF0aW9uQXBpLnBvc3QoKTtcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIFJldmVydHMgYSBwYWdlIHRvIGByZXZlcnRPbGRJRGAgc2V0IGJ5IGBzZXRPbGRJRGAuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25TdWNjZXNzXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biBvbiBzdWNjZXNzLlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvbkZhaWx1cmVdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuIG9uIGZhaWx1cmUuXG5cdFx0ICovXG5cdFx0dGhpcy5yZXZlcnQgPSBmdW5jdGlvbiAob25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcblx0XHRcdGN0eC5vblNhdmVTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0Y3R4Lm9uU2F2ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghY3R4LnJldmVydE9sZElEKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKCdJbnRlcm5hbCBlcnJvcjogcmV2aXNpb24gSUQgdG8gcmV2ZXJ0IHRvIHdhcyBub3Qgc2V0IGJlZm9yZSByZXZlcnQhJyk7XG5cdFx0XHRcdGN0eC5vblNhdmVGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjdHguZWRpdE1vZGUgPSAncmV2ZXJ0Jztcblx0XHRcdHRoaXMubG9hZChmbkF1dG9TYXZlLCBjdHgub25TYXZlRmFpbHVyZSk7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBNb3ZlcyBhIHBhZ2UgdG8gYW5vdGhlciB0aXRsZS5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvblN1Y2Nlc3NdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuIG9uIHN1Y2Nlc3MuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gb24gZmFpbHVyZS5cblx0XHQgKi9cblx0XHR0aGlzLm1vdmUgPSBmdW5jdGlvbiAob25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcblx0XHRcdGN0eC5vbk1vdmVTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0Y3R4Lm9uTW92ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghZm5QcmVmbGlnaHRDaGVja3MuY2FsbCh0aGlzLCAnbW92ZScsIGN0eC5vbk1vdmVGYWlsdXJlKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIGFib3J0XG5cdFx0XHR9XG5cblx0XHRcdGlmICghY3R4Lm1vdmVEZXN0aW5hdGlvbikge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcignSW50ZXJuYWwgZXJyb3I6IGRlc3RpbmF0aW9uIHBhZ2UgbmFtZSB3YXMgbm90IHNldCBiZWZvcmUgbW92ZSEnKTtcblx0XHRcdFx0Y3R4Lm9uTW92ZUZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdtb3ZlJykpIHtcblx0XHRcdFx0Zm5Qcm9jZXNzTW92ZS5jYWxsKHRoaXMsIHRoaXMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgcXVlcnkgPSBmbk5lZWRUb2tlbkluZm9RdWVyeSgnbW92ZScpO1xuXHRcdFx0XHRjdHgubW92ZUFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPluS7pOeJjOKApuKApicsICflj5blvpfmrIrmnZbigKbigKYnKSxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRmblByb2Nlc3NNb3ZlLFxuXHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LFxuXHRcdFx0XHRcdGN0eC5vbk1vdmVGYWlsdXJlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGN0eC5tb3ZlQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdFx0Y3R4Lm1vdmVBcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogTWFya3MgdGhlIHBhZ2UgYXMgcGF0cm9sbGVkLCB1c2luZyBgcmNpZGAgKGlmIGF2YWlsYWJsZSkgb3IgYHJldmlkYC5cblx0XHQgKlxuXHRcdCAqIFBhdHJvbGxpbmcgYXMgc3VjaCBkb2Vzbid0IG5lZWQgdG8gcmVseSBvbiBsb2FkaW5nIHRoZSBwYWdlIGluXG5cdFx0ICogcXVlc3Rpb247IHNpbXBseSBwYXNzaW5nIGEgcmV2aWQgdG8gdGhlIEFQSSBpcyBzdWZmaWNpZW50LCBzbyBpblxuXHRcdCAqIHRob3NlIGNhc2VzIGp1c3QgdXNpbmcge0BsaW5rIE1vcmViaXRzLndpa2kuYXBpfSBpcyBwcm9iYWJseSBwcmVmZXJhYmxlLlxuXHRcdCAqXG5cdFx0ICogTm8gZXJyb3IgaGFuZGxpbmcgc2luY2Ugd2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSBhYm91dCB0aGUgZXJyb3JzLlxuXHRcdCAqL1xuXHRcdHRoaXMucGF0cm9sID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0aWYgKCFNb3JlYml0cy51c2VySXNTeXNvcCAmJiAhTW9yZWJpdHMudXNlcklzSW5Hcm91cCgncGF0cm9sbGVyJykpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgJGJvZHkgPSAkKCdib2R5Jyk7XG5cdFx0XHQvLyBJZiBhIGxpbmsgaXMgcHJlc2VudCwgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiBpdCdzIHBhdHJvbGxlZFxuXHRcdFx0aWYgKCRib2R5LmZpbmQoJy5wYXRyb2xsaW5rJykubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IHBhdHJvbGhyZWYgPSAkYm9keS5maW5kKCcucGF0cm9sbGluayBhJykuYXR0cignaHJlZicpO1xuXHRcdFx0XHRjdHgucmNpZCA9IG13LnV0aWwuZ2V0UGFyYW1WYWx1ZSgncmNpZCcsIHBhdHJvbGhyZWYpO1xuXHRcdFx0XHRmblByb2Nlc3NQYXRyb2wodGhpcywgdGhpcyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBwYXRyb2xRdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0XHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0XHRcdG1ldGE6ICd0b2tlbnMnLFxuXHRcdFx0XHRcdHR5cGU6ICdwYXRyb2wnLFxuXHRcdFx0XHRcdC8vIGFzIGxvbmcgYXMgd2UncmUgcXVlcnlpbmcsIG1pZ2h0IGFzIHdlbGwgZ2V0IGEgdG9rZW5cblx0XHRcdFx0XHRsaXN0OiAncmVjZW50Y2hhbmdlcycsXG5cdFx0XHRcdFx0Ly8gY2hlY2sgaWYgdGhlIHBhZ2UgaXMgdW5wYXRyb2xsZWRcblx0XHRcdFx0XHR0aXRsZXM6IGN0eC5wYWdlTmFtZSxcblx0XHRcdFx0XHRyY3Byb3A6ICdwYXRyb2xsZWQnLFxuXHRcdFx0XHRcdHJjdGl0bGU6IGN0eC5wYWdlTmFtZSxcblx0XHRcdFx0XHRyY2xpbWl0OiAxLFxuXHRcdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjdHgucGF0cm9sQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5Luk54mM4oCm4oCmJywgJ+WPluW+l+asiuadluKApuKApicpLFxuXHRcdFx0XHRcdHBhdHJvbFF1ZXJ5LFxuXHRcdFx0XHRcdGZuUHJvY2Vzc1BhdHJvbFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjdHgucGF0cm9sQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdFx0Y3R4LnBhdHJvbEFwaS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvLyB8ZGVsZXRlfCBpcyBhIHJlc2VydmVkIHdvcmQgaW4gc29tZSBmbGF2b3VycyBvZiBKU1xuXHRcdC8qKlxuXHRcdCAqIERlbGV0ZXMgYSBwYWdlIChmb3IgYWRtaW5zIG9ubHkpLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uU3VjY2Vzc10gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gb24gc3VjY2Vzcy5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25GYWlsdXJlXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biBvbiBmYWlsdXJlLlxuXHRcdCAqL1xuXHRcdHRoaXMuZGVsZXRlUGFnZSA9IGZ1bmN0aW9uIChvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuXHRcdFx0Y3R4Lm9uRGVsZXRlU3VjY2VzcyA9IG9uU3VjY2Vzcztcblx0XHRcdGN0eC5vbkRlbGV0ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghZm5QcmVmbGlnaHRDaGVja3MuY2FsbCh0aGlzLCAnZGVsZXRlJywgY3R4Lm9uRGVsZXRlRmFpbHVyZSkpIHtcblx0XHRcdFx0cmV0dXJuOyAvLyBhYm9ydFxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZm5DYW5Vc2VNd1VzZXJUb2tlbignZGVsZXRlJykpIHtcblx0XHRcdFx0Zm5Qcm9jZXNzRGVsZXRlLmNhbGwodGhpcywgdGhpcyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBxdWVyeSA9IGZuTmVlZFRva2VuSW5mb1F1ZXJ5KCdkZWxldGUnKTtcblx0XHRcdFx0Y3R4LmRlbGV0ZUFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPluS7pOeJjOKApuKApicsICflj5blvpfmrIrmnZbigKbigKYnKSxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRmblByb2Nlc3NEZWxldGUsXG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdFx0Y3R4Lm9uRGVsZXRlRmFpbHVyZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjdHguZGVsZXRlQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdFx0Y3R4LmRlbGV0ZUFwaS5wb3N0KCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBVbmRlbGV0ZXMgYSBwYWdlIChmb3IgYWRtaW5zIG9ubHkpLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uU3VjY2Vzc10gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gb24gc3VjY2Vzcy5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25GYWlsdXJlXSAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biBvbiBmYWlsdXJlLlxuXHRcdCAqL1xuXHRcdHRoaXMudW5kZWxldGVQYWdlID0gZnVuY3Rpb24gKG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cdFx0XHRjdHgub25VbmRlbGV0ZVN1Y2Nlc3MgPSBvblN1Y2Nlc3M7XG5cdFx0XHRjdHgub25VbmRlbGV0ZUZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghZm5QcmVmbGlnaHRDaGVja3MuY2FsbCh0aGlzLCAndW5kZWxldGUnLCBjdHgub25VbmRlbGV0ZUZhaWx1cmUpKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gYWJvcnRcblx0XHRcdH1cblxuXHRcdFx0aWYgKGZuQ2FuVXNlTXdVc2VyVG9rZW4oJ3VuZGVsZXRlJykpIHtcblx0XHRcdFx0Zm5Qcm9jZXNzVW5kZWxldGUuY2FsbCh0aGlzLCB0aGlzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHF1ZXJ5ID0gZm5OZWVkVG9rZW5JbmZvUXVlcnkoJ3VuZGVsZXRlJyk7XG5cdFx0XHRcdGN0eC51bmRlbGV0ZUFwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+iOt+WPluS7pOeJjOKApuKApicsICflj5blvpfmrIrmnZbigKbigKYnKSxcblx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRmblByb2Nlc3NVbmRlbGV0ZSxcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0XHRjdHgub25VbmRlbGV0ZUZhaWx1cmVcblx0XHRcdFx0KTtcblx0XHRcdFx0Y3R4LnVuZGVsZXRlQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdFx0Y3R4LnVuZGVsZXRlQXBpLnBvc3QoKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIFByb3RlY3RzIGEgcGFnZSAoZm9yIGFkbWlucyBvbmx5KS5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvblN1Y2Nlc3NdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuIG9uIHN1Y2Nlc3MuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29uRmFpbHVyZV0gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gb24gZmFpbHVyZS5cblx0XHQgKi9cblx0XHR0aGlzLnByb3RlY3QgPSBmdW5jdGlvbiAob25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcblx0XHRcdGN0eC5vblByb3RlY3RTdWNjZXNzID0gb25TdWNjZXNzO1xuXHRcdFx0Y3R4Lm9uUHJvdGVjdEZhaWx1cmUgPSBvbkZhaWx1cmUgfHwgZW1wdHlGdW5jdGlvbjtcblx0XHRcdGlmICghZm5QcmVmbGlnaHRDaGVja3MuY2FsbCh0aGlzLCAncHJvdGVjdCcsIGN0eC5vblByb3RlY3RGYWlsdXJlKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIGFib3J0XG5cdFx0XHR9XG5cblx0XHRcdGlmICghY3R4LnByb3RlY3RFZGl0ICYmICFjdHgucHJvdGVjdE1vdmUgJiYgIWN0eC5wcm90ZWN0Q3JlYXRlKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdCdJbnRlcm5hbCBlcnJvcjogeW91IG11c3Qgc2V0IGVkaXQgYW5kL29yIG1vdmUgYW5kL29yIGNyZWF0ZSBwcm90ZWN0aW9uIGJlZm9yZSBjYWxsaW5nIHByb3RlY3QoKSEnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGN0eC5vblByb3RlY3RGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBiZWNhdXNlIG9mIHRoZSB3YXkgTVcgQVBJIGludGVycHJldHMgcHJvdGVjdGlvbiBsZXZlbHNcblx0XHRcdC8vIChhYnNvbHV0ZSwgbm90IGRpZmZlcmVudGlhbCksIHdlIGFsd2F5cyBuZWVkIHRvIHJlcXVlc3Rcblx0XHRcdC8vIHByb3RlY3Rpb24gbGV2ZWxzIGZyb20gdGhlIHNlcnZlclxuXHRcdFx0Y29uc3QgcXVlcnkgPSBmbk5lZWRUb2tlbkluZm9RdWVyeSgncHJvdGVjdCcpO1xuXHRcdFx0Y3R4LnByb3RlY3RBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6I635Y+W5Luk54mM4oCm4oCmJywgJ+WPluW+l+asiuadluKApuKApicpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0Zm5Qcm9jZXNzUHJvdGVjdCxcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdGN0eC5vblByb3RlY3RGYWlsdXJlXG5cdFx0XHQpO1xuXHRcdFx0Y3R4LnByb3RlY3RBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4LnByb3RlY3RBcGkucG9zdCgpO1xuXHRcdH07XG5cdFx0Lypcblx0XHQgKiBQcml2YXRlIG1lbWJlciBmdW5jdGlvbnNcblx0XHQgKiBUaGVzZSBhcmUgbm90IGV4cG9zZWQgb3V0c2lkZVxuXHRcdCAqL1xuXHRcdC8qKlxuXHRcdCAqIERldGVybWluZXMgd2hldGhlciB3ZSBjYW4gc2F2ZSBhbiBBUEkgY2FsbCBieSB1c2luZyB0aGUgY3NyZiB0b2tlblxuXHRcdCAqIHNlbnQgd2l0aCB0aGUgcGFnZSBIVE1MLCBvciB3aGV0aGVyIHdlIG5lZWQgdG8gYXNrIHRoZSBzZXJ2ZXIgZm9yXG5cdFx0ICogbW9yZSBpbmZvIChlLmcuIHByb3RlY3Rpb24gb3Igd2F0Y2hsaXN0IGV4cGlyeSkuXG5cdFx0ICpcblx0XHQgKiBDdXJyZW50bHkgdXNlZCBmb3IgYGFwcGVuZGAsIGBwcmVwZW5kYCwgYG5ld1NlY3Rpb25gLCBgbW92ZWAsXG5cdFx0ICogYGRlbGV0ZVBhZ2VgLCBhbmQgYHVuZGVsZXRlUGFnZWAuIE5vdCB1c2VkIGZvciBgcHJvdGVjdGBcblx0XHQgKiBzaW5jZSBpdCBhbHdheXMgbmVlZHMgdG8gcmVxdWVzdCBwcm90ZWN0aW9uIHN0YXR1cy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbYWN0aW9uPWVkaXRdIC0gVGhlIGFjdGlvbiBiZWluZyB1bmRlcnRha2VuLCBlLmcuXG5cdFx0ICogXCJlZGl0XCIgb3IgXCJkZWxldGVcIi4gSW4gcHJhY3RpY2UsIG9ubHkgXCJlZGl0XCIgb3IgXCJub3RlZGl0XCIgbWF0dGVycy5cblx0XHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0XHQgKi9cblx0XHRjb25zdCBmbkNhblVzZU13VXNlclRva2VuID0gKGFjdGlvbikgPT4ge1xuXHRcdFx0YWN0aW9uIHx8PSAnZWRpdCc7XG5cdFx0XHQvLyBJZiBhIHdhdGNobGlzdCBleHBpcnkgaXMgc2V0LCB3ZSBtdXN0IGFsd2F5cyBsb2FkIHRoZSBwYWdlXG5cdFx0XHQvLyB0byBhdm9pZCBvdmVyd3JpdGluZyBpbmRlZmluaXRlIHByb3RlY3Rpb24uICBPZiBjb3Vyc2UsIG5vdFxuXHRcdFx0Ly8gbmVlZGVkIGlmIHNldHRpbmcgaW5kZWZpbml0ZSB3YXRjaGluZyFcblx0XHRcdGlmIChjdHgud2F0Y2hsaXN0RXhwaXJ5ICYmICFNb3JlYml0cy5zdHJpbmcuaXNJbmZpbml0eShjdHgud2F0Y2hsaXN0RXhwaXJ5KSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHQvLyBBUEktYmFzZWQgcmVkaXJlY3QgcmVzb2x1dGlvbiBvbmx5IHdvcmtzIGZvciBhY3Rpb249cXVlcnkgYW5kXG5cdFx0XHQvLyBhY3Rpb249ZWRpdCBpbiBhcHBlbmQvcHJlcGVuZC9uZXcgbW9kZXNcblx0XHRcdGlmIChjdHguZm9sbG93UmVkaXJlY3QpIHtcblx0XHRcdFx0aWYgKCFjdHguZm9sbG93Q3Jvc3NOc1JlZGlyZWN0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBtdXN0IGxvYWQgdGhlIHBhZ2UgdG8gY2hlY2sgZm9yIGNyb3NzIG5hbWVzcGFjZSByZWRpcmVjdHNcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChhY3Rpb24gIT09ICdlZGl0JyB8fCBjdHguZWRpdE1vZGUgPT09ICdhbGwnIHx8IGN0eC5lZGl0TW9kZSA9PT0gJ3JldmVydCcpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIGRvIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGVkaXQgcHJvdGVjdGlvbiBleHBpcnk/XG5cdFx0XHRpZiAoTW9yZWJpdHMudXNlcklzU3lzb3AgJiYgIWN0eC5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRuZXcgbXcuVGl0bGUoTW9yZWJpdHMucGFnZU5hbWVOb3JtKS5nZXRQcmVmaXhlZFRleHQoKSAhPT1cblx0XHRcdFx0XHRuZXcgbXcuVGl0bGUoY3R4LnBhZ2VOYW1lKS5nZXRQcmVmaXhlZFRleHQoKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gd2dSZXN0cmljdGlvbkVkaXQgaXMgbnVsbCBvbiBub24tZXhpc3RlbnQgcGFnZXMsXG5cdFx0XHRcdC8vIHNvIHRoaXMgbmVhdGx5IGhhbmRsZXMgbm9uZXhpc3RlbnQgcGFnZXNcblx0XHRcdFx0Y29uc3QgZWRpdFJlc3RyaWN0aW9uID0gbXcuY29uZmlnLmdldCgnd2dSZXN0cmljdGlvbkVkaXQnKTtcblx0XHRcdFx0aWYgKCFlZGl0UmVzdHJpY3Rpb24gfHwgZWRpdFJlc3RyaWN0aW9uLmluY2x1ZGVzKCdzeXNvcCcpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gISFtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogV2hlbiBmdW5jdGlvbnMgY2FuJ3QgdXNlXG5cdFx0ICoge0BsaW5rIE1vcmViaXRzLndpa2kucGFnZX5mbkNhblVzZU13VXNlclRva2VufGZuQ2FuVXNlTXdVc2VyVG9rZW59XG5cdFx0ICogb3IgcmVxdWlyZSBjaGVja2luZyBwcm90ZWN0aW9uIG9yIHdhdGNoZWQgc3RhdHVzLCBtYWludGFpbiB0aGUgcXVlcnlcblx0XHQgKiBpbiBvbmUgcGxhY2UuIFVzZWQgZm9yIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2UjZGVsZXRlUGFnZXxkZWxldGV9LFxuXHRcdCAqIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2UjdW5kZWxldGVQYWdlfHVuZGVsZXRlfSxcblx0XHQgKiB7QGxpbmsqIE1vcmViaXRzLndpa2kucGFnZSNwcm90ZWN0fHByb3RlY3R9LFxuXHRcdCAqIGFuZCB7QGxpbmsgTW9yZWJpdHMud2lraS5wYWdlI21vdmV8bW92ZX1cblx0XHQgKiAoYmFzaWNhbGx5LCBqdXN0IG5vdCB7QGxpbmsgTW9yZWJpdHMud2lraS5wYWdlI2xvYWR8bG9hZH0pLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbiAtIFRoZSBhY3Rpb24gYmVpbmcgdW5kZXJ0YWtlbiwgZS5nLiBcImVkaXRcIiBvclxuXHRcdCAqIFwiZGVsZXRlXCIuXG5cdFx0ICogQHJldHVybnMge09iamVjdH0gQXBwcm9wcmlhdGUgcXVlcnkuXG5cdFx0ICovXG5cdFx0Y29uc3QgZm5OZWVkVG9rZW5JbmZvUXVlcnkgPSAoYWN0aW9uKSA9PiB7XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAncXVlcnknLFxuXHRcdFx0XHRtZXRhOiAndG9rZW5zJyxcblx0XHRcdFx0dHlwZTogJ2NzcmYnLFxuXHRcdFx0XHR0aXRsZXM6IGN0eC5wYWdlTmFtZSxcblx0XHRcdFx0cHJvcDogJ2luZm8nLFxuXHRcdFx0XHRpbnByb3A6ICd3YXRjaGVkJyxcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHR9O1xuXHRcdFx0Ly8gUHJvdGVjdGlvbiBub3QgY2hlY2tlZCBmb3Igbm9uLXN5c29wIG1vdmVzXG5cdFx0XHRpZiAoYWN0aW9uICE9PSAnbW92ZScgfHwgTW9yZWJpdHMudXNlcklzU3lzb3ApIHtcblx0XHRcdFx0cXVlcnkuaW5wcm9wICs9ICd8cHJvdGVjdGlvbic7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3R4LmZvbGxvd1JlZGlyZWN0ICYmIGFjdGlvbiAhPT0gJ3VuZGVsZXRlJykge1xuXHRcdFx0XHRxdWVyeS5yZWRpcmVjdHMgPSAnJzsgLy8gZm9sbG93IGFsbCByZWRpcmVjdHNcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHF1ZXJ5O1xuXHRcdH07XG5cdFx0Ly8gY2FsbGJhY2sgZnJvbSBsb2FkU3VjY2VzcygpIGZvciBhcHBlbmQoKSwgcHJlcGVuZCgpLCBhbmQgbmV3U2VjdGlvbigpIHRocmVhZHNcblx0XHRjb25zdCBmbkF1dG9TYXZlID0gKHBhZ2VvYmopID0+IHtcblx0XHRcdHBhZ2VvYmouc2F2ZShjdHgub25TYXZlU3VjY2VzcywgY3R4Lm9uU2F2ZUZhaWx1cmUpO1xuXHRcdH07XG5cdFx0Ly8gY2FsbGJhY2sgZnJvbSBsb2FkQXBpLnBvc3QoKVxuXHRcdGNvbnN0IGZuTG9hZFN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGN0eC5sb2FkQXBpLmdldFJlc3BvbnNlKCkucXVlcnk7XG5cdFx0XHRpZiAoIWZuQ2hlY2tQYWdlTmFtZShyZXNwb25zZSwgY3R4Lm9uTG9hZEZhaWx1cmUpKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gYWJvcnRcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgW3BhZ2VdID0gcmVzcG9uc2UucGFnZXM7XG5cdFx0XHRsZXQgcmV2O1xuXHRcdFx0Y3R4LnBhZ2VFeGlzdHMgPSAhcGFnZS5taXNzaW5nO1xuXHRcdFx0aWYgKGN0eC5wYWdlRXhpc3RzKSB7XG5cdFx0XHRcdFtyZXZdID0gcGFnZS5yZXZpc2lvbnM7XG5cdFx0XHRcdGN0eC5sYXN0RWRpdFRpbWUgPSByZXYudGltZXN0YW1wO1xuXHRcdFx0XHRjdHgucGFnZVRleHQgPSByZXYuY29udGVudDtcblx0XHRcdFx0Y3R4LnBhZ2VJRCA9IHBhZ2UucGFnZWlkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4LnBhZ2VUZXh0ID0gJyc7IC8vIGFsbG93IGZvciBjb25jYXRlbmF0aW9uLCBldGMuXG5cdFx0XHRcdGN0eC5wYWdlSUQgPSAwOyAvLyBub25leGlzdGVudCBpbiByZXNwb25zZSwgbWF0Y2hlcyB3Z0FydGljbGVJZFxuXHRcdFx0fVxuXG5cdFx0XHRjdHguY3NyZlRva2VuID0gcmVzcG9uc2UudG9rZW5zLmNzcmZ0b2tlbjtcblx0XHRcdGlmICghY3R4LmNzcmZUb2tlbikge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+acquiDveiOt+WPlue8lui+keS7pOeJjOOAgicsICfmnKrog73lj5blvpfnt6jovK/mrIrmnZbjgIInKSk7XG5cdFx0XHRcdGN0eC5vbkxvYWRGYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjdHgubG9hZFRpbWUgPSBjdHgubG9hZEFwaS5nZXRSZXNwb25zZSgpLmN1cnRpbWVzdGFtcDtcblx0XHRcdGlmICghY3R4LmxvYWRUaW1lKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5pyq6IO96I635Y+W5b2T5YmN5pe26Ze05oiz44CCJywgJ+acquiDveWPluW+l+eVtuWJjeaZgumWk+aIs+OAgicpKTtcblx0XHRcdFx0Y3R4Lm9uTG9hZEZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGN0eC5jb250ZW50TW9kZWwgPSBwYWdlLmNvbnRlbnRtb2RlbDtcblx0XHRcdGN0eC53YXRjaGVkID0gcGFnZS53YXRjaGxpc3RleHBpcnkgfHwgcGFnZS53YXRjaGVkO1xuXHRcdFx0Ly8gZXh0cmFjdCBwcm90ZWN0aW9uIGluZm8sIHRvIGFsZXJ0IGFkbWlucyB3aGVuIHRoZXkgYXJlIGFib3V0IHRvIGVkaXQgYSBwcm90ZWN0ZWQgcGFnZVxuXHRcdFx0Ly8gSW5jbHVkZXMgY2FzY2FkaW5nIHByb3RlY3Rpb25cblx0XHRcdGlmIChNb3JlYml0cy51c2VySXNTeXNvcCkge1xuXHRcdFx0XHRjb25zdCBlZGl0UHJvdCA9IHBhZ2UucHJvdGVjdGlvbi5maW5kTGFzdCgocHIpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcHIudHlwZSA9PT0gJ2VkaXQnICYmIHByLmxldmVsID09PSAnc3lzb3AnO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKGVkaXRQcm90KSB7XG5cdFx0XHRcdFx0Y3R4LmZ1bGx5UHJvdGVjdGVkID0gZWRpdFByb3QuZXhwaXJ5O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGN0eC5mdWxseVByb3RlY3RlZCA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjdHgucmV2ZXJ0Q3VySUQgPSBwYWdlLmxhc3RyZXZpZDtcblx0XHRcdGNvbnN0IHRlc3RhY3Rpb25zID0gcGFnZS5hY3Rpb25zO1xuXHRcdFx0Y3R4LnRlc3RBY3Rpb25zID0gW107IC8vIHdhcyBudWxsXG5cdFx0XHRmb3IgKGNvbnN0IGFjdGlvbiBvZiBPYmplY3Qua2V5cyh0ZXN0YWN0aW9ucykpIHtcblx0XHRcdFx0aWYgKHRlc3RhY3Rpb25zW2FjdGlvbl0pIHtcblx0XHRcdFx0XHRjdHgudGVzdEFjdGlvbnNbY3R4LnRlc3RBY3Rpb25zLmxlbmd0aF0gPSBhY3Rpb247XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChjdHguZWRpdE1vZGUgPT09ICdyZXZlcnQnKSB7XG5cdFx0XHRcdGN0eC5yZXZlcnRDdXJJRCA9IHJldiAmJiByZXYucmV2aWQ7XG5cdFx0XHRcdGlmICghY3R4LnJldmVydEN1cklEKSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCfmnKrog73ojrflj5blvZPliY3kv67orqLniYjmnKxJROOAgicsICfmnKrog73lj5blvpfnm67liY3kv67oqILniYjmnKxJROOAgicpKTtcblx0XHRcdFx0XHRjdHgub25Mb2FkRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3R4LnJldmVydFVzZXIgPSByZXYgJiYgcmV2LnVzZXI7XG5cdFx0XHRcdGlmICghY3R4LnJldmVydFVzZXIpIHtcblx0XHRcdFx0XHRpZiAocmV2ICYmIHJldi51c2VyaGlkZGVuKSB7XG5cdFx0XHRcdFx0XHQvLyB1c2VybmFtZSB3YXMgUmV2RGVsJ2Qgb3Igb3ZlcnNpZ2h0ZWRcblx0XHRcdFx0XHRcdGN0eC5yZXZlcnRVc2VyID0gd2luZG93LndnVUxTKCc855So5oi35ZCN5bey6ZqQ6JePPicsICc85L2/55So6ICF5ZCN56ix5bey6Zqx6JePPicpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcihcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfmnKrog73ojrflj5bmraTkv67orqLniYjmnKznmoTnvJbovpHogIXjgIInLCAn5pyq6IO95Y+W5b6X5q2k5L+u6KiC54mI5pys55qE57eo6Lyv6ICF44CCJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRjdHgub25Mb2FkRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gc2V0IHJldmVydCBlZGl0IHN1bW1hcnlcblx0XHRcdFx0Y3R4LmVkaXRTdW1tYXJ5ID0gYFtbUVc6VU5ET3zmkqTplIBdXeeUsSAke2N0eC5yZXZlcnRVc2VyfSDmiYDlgZrlh7rnmoQke3dpbmRvdy53Z1VMUygn5L+u6K6iICcsICfkv67oqIIgJyl9JHtcblx0XHRcdFx0XHRjdHgucmV2ZXJ0T2xkSURcblx0XHRcdFx0fe+8miR7Y3R4LmVkaXRTdW1tYXJ5fWA7XG5cdFx0XHR9XG5cdFx0XHRjdHgucGFnZUxvYWRlZCA9IHRydWU7XG5cdFx0XHQvLyBtdy5ub3RpZnkoXCJHZW5lcmF0ZSBlZGl0IGNvbmZsaWN0IG5vd1wiLCB7dHlwZTogJ3dhcm4nLCB0YWc6ICdtb3JlYml0cyd9KTsgIC8vIGZvciB0ZXN0aW5nIGVkaXQgY29uZmxpY3QgcmVjb3ZlcnkgbG9naWNcblx0XHRcdGN0eC5vbkxvYWRTdWNjZXNzKHRoaXMpOyAvLyBpbnZva2UgY2FsbGJhY2tcblx0XHR9O1xuXHRcdC8vIGhlbHBlciBmdW5jdGlvbiB0byBwYXJzZSB0aGUgcGFnZSBuYW1lIHJldHVybmVkIGZyb20gdGhlIEFQSVxuXHRcdGNvbnN0IGZuQ2hlY2tQYWdlTmFtZSA9IGZ1bmN0aW9uIChyZXNwb25zZSwgb25GYWlsdXJlKSB7XG5cdFx0XHRvbkZhaWx1cmUgfHw9IGVtcHR5RnVuY3Rpb247XG5cdFx0XHRjb25zdCBwYWdlID0gcmVzcG9uc2UucGFnZXMgJiYgcmVzcG9uc2UucGFnZXNbMF07XG5cdFx0XHRpZiAocGFnZSkge1xuXHRcdFx0XHQvLyBjaGVjayBmb3IgaW52YWxpZCB0aXRsZXNcblx0XHRcdFx0aWYgKHBhZ2UuaW52YWxpZCkge1xuXHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5qCH6aKY5LiN5ZCI5rOV77yaJywgYOaomemhjOS4jeWQiOazle+8miR7Y3R4LnBhZ2VOYW1lfWApKTtcblx0XHRcdFx0XHRvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBhYm9ydFxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIHJldHJpZXZlIGFjdHVhbCB0aXRsZSBvZiB0aGUgcGFnZSBhZnRlciBub3JtYWxpemF0aW9uIGFuZCByZWRpcmVjdHNcblx0XHRcdFx0Y29uc3QgcmVzb2x2ZWROYW1lID0gcGFnZS50aXRsZTtcblx0XHRcdFx0aWYgKHJlc3BvbnNlLnJlZGlyZWN0cykge1xuXHRcdFx0XHRcdC8vIGNoZWNrIGZvciBjcm9zcy1uYW1lc3BhY2UgcmVkaXJlY3Q6XG5cdFx0XHRcdFx0Y29uc3Qgb3JpZ05zID0gbmV3IG13LlRpdGxlKGN0eC5wYWdlTmFtZSkubmFtZXNwYWNlO1xuXHRcdFx0XHRcdGNvbnN0IG5ld05zID0gbmV3IG13LlRpdGxlKHJlc29sdmVkTmFtZSkubmFtZXNwYWNlO1xuXHRcdFx0XHRcdGlmIChvcmlnTnMgIT09IG5ld05zICYmICFjdHguZm9sbG93Q3Jvc3NOc1JlZGlyZWN0KSB7XG5cdFx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcihcblx0XHRcdFx0XHRcdFx0Y3R4LnBhZ2VOYW1lICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+aYr+i3qOWRveWQjeepuumXtOmHjeWumuWQkeWIsCcsICfmmK/ot6jlkb3lkI3nqbrplpPph43mlrDlsI7lkJHliLAnKSArXG5cdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZWROYW1lICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ++8jOeVpei/hycsICfvvIznlaXpgY4nKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdG9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gb25seSBub3RpZnkgdXNlciBmb3IgcmVkaXJlY3RzLCBub3Qgbm9ybWFsaXphdGlvblxuXHRcdFx0XHRcdG5ldyBNb3JlYml0cy5zdGF0dXMoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S/oeaBrycsICfos4foqIonKSxcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5LuOICcsICflvp4gJykgK1xuXHRcdFx0XHRcdFx0XHRjdHgucGFnZU5hbWUgK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJyDph43lrprlkJHliLAgJywgJyDph43mlrDlsI7lkJHliLAgJykgK1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlZE5hbWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN0eC5wYWdlTmFtZSA9IHJlc29sdmVkTmFtZTsgLy8gdXBkYXRlIHRvIHJlZGlyZWN0IHRhcmdldCBvciBub3JtYWxpemVkIG5hbWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIGNvdWxkIGJlIGEgY2lyY3VsYXIgcmVkaXJlY3Qgb3Igb3RoZXIgcHJvYmxlbVxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcihcblx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+S4jeiDveino+aekOmhtemdoueahOmHjeWumuWQke+8micsICfkuI3og73op6PmnpDpoIHpnaLnmoTph43mlrDlsI7lkJHvvJonKSArIGN0eC5wYWdlTmFtZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdC8vIGZvcmNlIGVycm9yIHRvIHN0YXkgb24gdGhlIHNjcmVlblxuXHRcdFx0XHQrK01vcmViaXRzLndpa2kubnVtYmVyT2ZBY3Rpb25zTGVmdDtcblx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyBhYm9ydFxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHJ1ZTsgLy8gYWxsIE9LXG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBEZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQgcHJvdmlkZSBhIHdhdGNobGlzdCBleHBpcnkuICBXaWxsIG5vdFxuXHRcdCAqIGRvIHNvIGlmIHRoZSBwYWdlIGlzIGN1cnJlbnRseSBwZXJtYW5lbnRseSB3YXRjaGVkLCBvciB0aGUgY3VycmVudFxuXHRcdCAqIGV4cGlyeSBpcyAqYWZ0ZXIqIHRoZSBuZXcsIHByb3ZpZGVkIGV4cGlyeS4gIE9ubHkgaGFuZGxlcyBzdHJpbmdzXG5cdFx0ICogcmVjb2duaXplZCBieSB7QGxpbmsgTW9yZWJpdHMuZGF0ZX0gb3IgcmVsYXRpdmUgdGltZWZyYW1lcyB3aXRoXG5cdFx0ICogdW5pdCBpdCBjYW4gcHJvY2Vzcy4gIFJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IGZuQ2FuVXNlTXdVc2VyVG9rZW5cblx0XHQgKiByZXF1aXJlcyBwYWdlIGxvYWRpbmcgaWYgYSB3YXRjaGxpc3RleHBpcnkgaXMgcHJvdmlkZWQsIHNvIHdlIGFyZVxuXHRcdCAqIGVuc3VyZWQgb2Yga25vd2luZyB0aGUgd2F0Y2ggc3RhdHVzIGJ5IHRoZSB1c2Ugb2YgdGhpcy5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHRcdCAqL1xuXHRcdGNvbnN0IGZuQXBwbHlXYXRjaGxpc3RFeHBpcnkgPSAoKSA9PiB7XG5cdFx0XHRpZiAoY3R4LndhdGNobGlzdEV4cGlyeSkge1xuXHRcdFx0XHRpZiAoIWN0eC53YXRjaGVkIHx8IE1vcmViaXRzLnN0cmluZy5pc0luZmluaXR5KGN0eC53YXRjaGxpc3RFeHBpcnkpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGN0eC53YXRjaGVkID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdGxldCBuZXdFeHBpcnk7XG5cdFx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBkZXRlcm1pbmUgaWYgdGhlIG5ldyBleHBpcnkgaXMgYVxuXHRcdFx0XHRcdC8vIHJlbGF0aXZlIChlLmcuIGAxIG1vbnRoYCkgb3IgYWJzb2x1dGUgZGF0ZXRpbWVcblx0XHRcdFx0XHRjb25zdCByZWwgPSBjdHgud2F0Y2hsaXN0RXhwaXJ5LnNwbGl0KCcgJyk7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdG5ld0V4cGlyeSA9IG5ldyBNb3JlYml0cy5kYXRlKCkuYWRkKHJlbFswXSwgcmVsWzFdKTtcblx0XHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHRcdG5ld0V4cGlyeSA9IG5ldyBNb3JlYml0cy5kYXRlKGN0eC53YXRjaGxpc3RFeHBpcnkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBJZiB0aGUgZGF0ZSBpcyB2YWxpZCwgb25seSB1c2UgaXQgaWYgaXQgZXh0ZW5kcyB0aGUgY3VycmVudCBleHBpcnlcblx0XHRcdFx0XHRpZiAobmV3RXhwaXJ5LmlzVmFsaWQoKSkge1xuXHRcdFx0XHRcdFx0aWYgKG5ld0V4cGlyeS5pc0FmdGVyKG5ldyBNb3JlYml0cy5kYXRlKGN0eC53YXRjaGVkKSkpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIElmIGl0J3Mgc3RpbGwgbm90IHZhbGlkLCBob3BlIGl0J3MgYSB2YWxpZCBNVyBleHBpcnkgZm9ybWF0IHRoYXRcblx0XHRcdFx0XHRcdC8vIE1vcmViaXRzLmRhdGUgZG9lc24ndCByZWNvZ25pemUsIHNvIGp1c3QgZGVmYXVsdCB0byB1c2luZyBpdC5cblx0XHRcdFx0XHRcdC8vIFRoaXMgd2lsbCBhbHNvIGluY2x1ZGUgbWlub3IgdHlwb3MuXG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXHRcdC8vIGNhbGxiYWNrIGZyb20gc2F2ZUFwaS5wb3N0KClcblx0XHRjb25zdCBmblNhdmVTdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0Y3R4LmVkaXRNb2RlID0gJ2FsbCc7IC8vIGNhbmNlbCBhcHBlbmQvcHJlcGVuZC9uZXdTZWN0aW9uL3JldmVydCBtb2Rlc1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBjdHguc2F2ZUFwaS5nZXRSZXNwb25zZSgpO1xuXHRcdFx0Ly8gc2VlIGlmIHRoZSBBUEkgdGhpbmtzIHdlIHdlcmUgc3VjY2Vzc2Z1bFxuXHRcdFx0aWYgKHJlc3BvbnNlLmVkaXQucmVzdWx0ID09PSAnU3VjY2VzcycpIHtcblx0XHRcdFx0Ly8gcmVhbCBzdWNjZXNzXG5cdFx0XHRcdC8vIGRlZmF1bHQgb24gc3VjY2VzcyBhY3Rpb24gLSBkaXNwbGF5IGxpbmsgZm9yIGVkaXRlZCBwYWdlXG5cdFx0XHRcdGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRcdGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgbXcudXRpbC5nZXRVcmwoY3R4LnBhZ2VOYW1lKSk7XG5cdFx0XHRcdGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3R4LnBhZ2VOYW1lKSk7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmluZm8oWyflrozmiJDvvIgnLCBsaW5rLCAn77yJJ10pO1xuXHRcdFx0XHRpZiAoY3R4Lm9uU2F2ZVN1Y2Nlc3MpIHtcblx0XHRcdFx0XHRjdHgub25TYXZlU3VjY2Vzcyh0aGlzKTsgLy8gaW52b2tlIGNhbGxiYWNrXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBlcnJvcnMgaGVyZSBhcmUgb25seSBnZW5lcmF0ZWQgYnkgZXh0ZW5zaW9ucyB3aGljaCBob29rIEFQSUVkaXRCZWZvcmVTYXZlIHdpdGhpbiBNZWRpYVdpa2ksXG5cdFx0XHQvLyB3aGljaCBhcyBvZiAxLjM0LjAtd21mLjIzIChTZXB0IDIwMTkpIHNob3VsZCBvbmx5IGVuY29tcGFzcyBjYXB0Y2hhIG1lc3NhZ2VzXG5cdFx0XHRpZiAocmVzcG9uc2UuZWRpdC5jYXB0Y2hhKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5LiN6IO95L+d5a2Y6aG16Z2i77yM5Zug5pyN5Yqh5Zmo6KaB5rGC5oKo6L6T5YWl6aqM6K+B56CB44CCJywgJ+S4jeiDveWEsuWtmOmggemdou+8jOWboOS8uuacjeWZqOimgeaxguaCqOi8uOWFpempl+itieeivOOAgicpXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+S/neWtmOmhtemdouaXtueUsUFQSeW+l+WIsOacquefpemUmeivrycsICflhLLlrZjpoIHpnaLmmYLnlLFBUEnlvpfliLDmnKrnn6XpjK/oqqQnKSk7XG5cdFx0XHR9XG5cdFx0XHQvLyBmb3JjZSBlcnJvciB0byBzdGF5IG9uIHRoZSBzY3JlZW5cblx0XHRcdCsrTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0O1xuXHRcdFx0Y3R4Lm9uU2F2ZUZhaWx1cmUodGhpcyk7XG5cdFx0fTtcblx0XHQvLyBjYWxsYmFjayBmcm9tIHNhdmVBcGkucG9zdCgpXG5cdFx0Y29uc3QgZm5TYXZlRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCBlcnJvckNvZGUgPSBjdHguc2F2ZUFwaS5nZXRFcnJvckNvZGUoKTtcblx0XHRcdC8vIGNoZWNrIGZvciBlZGl0IGNvbmZsaWN0XG5cdFx0XHRpZiAoZXJyb3JDb2RlID09PSAnZWRpdGNvbmZsaWN0JyAmJiBjdHguY29uZmxpY3RSZXRyaWVzKysgPCBjdHgubWF4Q29uZmxpY3RSZXRyaWVzKSB7XG5cdFx0XHRcdC8vIGVkaXQgY29uZmxpY3RzIGNhbiBvY2N1ciB3aGVuIHRoZSBwYWdlIG5lZWRzIHRvIGJlIHB1cmdlZCBmcm9tIHRoZSBzZXJ2ZXIgY2FjaGVcblx0XHRcdFx0Y29uc3QgcHVyZ2VRdWVyeSA9IHtcblx0XHRcdFx0XHRhY3Rpb246ICdwdXJnZScsXG5cdFx0XHRcdFx0dGl0bGVzOiBjdHgucGFnZU5hbWUsIC8vIHJlZGlyZWN0cyBhcmUgYWxyZWFkeSByZXNvbHZlZFxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdGNvbnN0IHB1cmdlQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5qOA5rWL5Yiw57yW6L6R5Yay56qB77yM5q2j5Zyo5pu05paw5pyN5Yqh5Zmo57yT5a2YJywgJ+aqoua4rOWIsOe3qOi8r+ihneeqge+8jOato+WcqOabtOaWsOS8uuacjeWZqOW/q+WPlicpLFxuXHRcdFx0XHRcdHB1cmdlUXVlcnksXG5cdFx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFx0LS1Nb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQ7IC8vIGFsbG93IGZvciBub3JtYWwgY29tcGxldGlvbiBpZiByZXRyeSBzdWNjZWVkc1xuXHRcdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+ajgOa1i+WIsOe8lui+keWGsueqge+8jOmHjeivleS/ruaUuScsICfmqqLmuKzliLDnt6jovK/ooZ3nqoHvvIzph43oqabkv67mlLknKSk7XG5cdFx0XHRcdFx0XHRpZiAoZm5DYW5Vc2VNd1VzZXJUb2tlbignZWRpdCcpKSB7XG5cdFx0XHRcdFx0XHRcdGN0eC5zYXZlQXBpLnBvc3QoKTsgLy8gbmVjZXNzYXJpbHkgYXBwZW5kLCBwcmVwZW5kLCBvciBuZXdTZWN0aW9uLCBzbyB0aGlzIHNob3VsZCB3b3JrIGFzIGRlc2lyZWRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGN0eC5sb2FkQXBpLnBvc3QoKTsgLy8gcmVsb2FkIHRoZSBwYWdlIGFuZCByZWFwcGx5IHRoZSBlZGl0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRwdXJnZUFwaS5wb3N0KCk7XG5cdFx0XHRcdC8vIGNoZWNrIGZvciBuZXR3b3JrIG9yIHNlcnZlciBlcnJvclxuXHRcdFx0fSBlbHNlIGlmICgoZXJyb3JDb2RlID09PSBudWxsIHx8IGVycm9yQ29kZSA9PT0gdW5kZWZpbmVkKSAmJiBjdHgucmV0cmllcysrIDwgY3R4Lm1heFJldHJpZXMpIHtcblx0XHRcdFx0Ly8gdGhlIGVycm9yIG1pZ2h0IGJlIHRyYW5zaWVudCwgc28gdHJ5IGFnYWluXG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmluZm8od2luZG93LndnVUxTKCfkv53lrZjlpLHotKXvvIzlnKgy56eS5ZCO6YeN6K+V4oCm4oCmJywgJ+WEsuWtmOWkseaVl++8jOWcqDLnp5Llvozph43oqabigKbigKYnKSk7XG5cdFx0XHRcdC0tTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0OyAvLyBhbGxvdyBmb3Igbm9ybWFsIGNvbXBsZXRpb24gaWYgcmV0cnkgc3VjY2VlZHNcblx0XHRcdFx0Ly8gd2FpdCBmb3Igc29tZXRpbWUgZm9yIGNsaWVudCB0byByZWdhaW4gY29ubmVjdGl2aXR5XG5cdFx0XHRcdHNsZWVwKDIwMDApLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGN0eC5zYXZlQXBpLnBvc3QoKTsgLy8gZ2l2ZSBpdCBhbm90aGVyIGdvIVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gaGFyZCBlcnJvciwgZ2l2ZSB1cFxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBjdHguc2F2ZUFwaS5nZXRSZXNwb25zZSgpO1xuXHRcdFx0XHRjb25zdCBlcnJvckRhdGEgPVxuXHRcdFx0XHRcdHJlc3BvbnNlLmVycm9yIHx8XG5cdFx0XHRcdFx0Ly8gYmMgZXJyb3IgZm9ybWF0XG5cdFx0XHRcdFx0cmVzcG9uc2UuZXJyb3JzWzBdLmRhdGE7IC8vIGh0bWwvd2lraXRleHQvcGxhaW50ZXh0IGVycm9yIGZvcm1hdFxuXHRcdFx0XHRzd2l0Y2ggKGVycm9yQ29kZSkge1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3RlZHBhZ2UnOlxuXHRcdFx0XHRcdFx0Ly8gbm9uLWFkbWluIGF0dGVtcHRpbmcgdG8gZWRpdCBhIHByb3RlY3RlZCBwYWdlIC0gdGhpcyBnaXZlcyBhIGZyaWVuZGxpZXIgbWVzc2FnZSB0aGFuIHRoZSBkZWZhdWx0XG5cdFx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+S4jeiDveS/neWtmOS/ruaUue+8mumhtemdouiiq+S/neaKpCcsICfkuI3og73lhLLlrZjkv67mlLnvvJrpoIHpnaLooqvkv53orbcnKSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdhYnVzZWZpbHRlci1kaXNhbGxvd2VkJzpcblx0XHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+e8lui+keiiq+mYsua7peeUqOi/h+a7pOWZqOinhOWImeKAnCcsICfnt6jovK/ooqvpmLLmv6vnlKjpgY7mv77lmajopo/liYfjgIwnKSArXG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3JEYXRhLmFidXNlZmlsdGVyLmRlc2NyaXB0aW9uICtcblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0XHQn4oCd6Zi75q2i44CC6Iul5oKo6K6k5Li65oKo55qE6K+l5qyh57yW6L6R5piv5pyJ5oSP5LmJ55qE77yM6K+36IezIFFpdXdlbl90YWxrOueuoeeQhuWRmOWRiuekuuadvyDmj5DmiqXjgIInLFxuXHRcdFx0XHRcdFx0XHRcdFx0J+OAjemYu+atouOAguiLpeaCqOiqjeeCuuaCqOeahOipsuasoee3qOi8r+aYr+acieaEj+e+qeeahO+8jOiri+iHsyBRaXV3ZW5fdGFsazrnrqHnkIblk6HlkYrnpLrmnb8g5o+Q5aCx44CCJ1xuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdhYnVzZWZpbHRlci13YXJuaW5nJzpcblx0XHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfnvJbovpHooqvpmLLmu6XnlKjov4fmu6Tlmajop4TliJnigJwnLCAn57eo6Lyv6KKr6Ziy5r+r55So6YGO5r++5Zmo6KaP5YmH44CMJyksXG5cdFx0XHRcdFx0XHRcdGVycm9yRGF0YS5hYnVzZWZpbHRlci5kZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKFxuXHRcdFx0XHRcdFx0XHRcdCfigJ3orablkYrvvIzoi6Xmgqjku43luIzmnJvlgZrlh7ror6XnvJbovpHvvIzor7flsJ3or5Xph43mlrDmj5DkuqTvvIzmoLnmja7ov4fmu6TlmajnmoTorr7nva7mgqjlj6/og73lj6/ku6XkvZzlh7rmraTnvJbovpHjgIInLFxuXHRcdFx0XHRcdFx0XHRcdCfjgI3orablkYrvvIzoi6Xmgqjku43luIzmnJvlgZrlh7roqbLnt6jovK/vvIzoq4vlmJfoqabph43mlrDmj5DkuqTvvIzmoLnmk5rpgY7mv77lmajnmoToqK3lrprmgqjlj6/og73lj6/ku6XkvZzlh7rmraTnt6jovK/jgIInXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdC8vIFdlIHNob3VsZCBwcm92aWRlIHRoZSB1c2VyIHdpdGggYSB3YXkgdG8gYXV0b21hdGljYWxseSByZXRyeSB0aGUgYWN0aW9uIGlmIHRoZXkgc28gY2hvb3NlIC1cblx0XHRcdFx0XHRcdC8vIEkgY2FuJ3Qgc2VlIGhvdyB0byBkbyB0aGlzIHdpdGhvdXQgY3JlYXRpbmcgYSBVSSBkZXBlbmRlbmN5IG9uIE1vcmViaXRzLndpa2kucGFnZSB0aG91Z2ggLS0gVFRPXG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdzcGFtYmxhY2tsaXN0Jzoge1xuXHRcdFx0XHRcdFx0Ly8gSWYgbXVsdGlwbGUgaXRlbXMgYXJlIGJsYWNrbGlzdGVkLCB3ZSBvbmx5IHJldHVybiB0aGUgZmlyc3Rcblx0XHRcdFx0XHRcdGNvbnN0IFtzcGFtXSA9IGVycm9yRGF0YS5zcGFtYmxhY2tsaXN0Lm1hdGNoZXM7XG5cdFx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcihcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfkuI3og73kv53lrZjpobXpnaLvvIzlm6BVUkwgJywgJ+S4jeiDveWEsuWtmOmggemdou+8jOWboFVSTCAnKSArXG5cdFx0XHRcdFx0XHRcdFx0c3BhbSArXG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCcg5Zyo5Z6D5Zy+6ZO+5o6l6buR5ZCN5Y2V5Lit44CCJywgJyDlnKjlnoPlnL7pgKPntZDpu5HlkI3llq7kuK3jgIInKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5LiN6IO95L+d5a2Y5L+u5pS577yaJywgJ+S4jeiDveWEsuWtmOS/ruaUue+8micpICsgY3R4LnNhdmVBcGkuZ2V0RXJyb3JUZXh0KClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3R4LmVkaXRNb2RlID0gJ2FsbCc7IC8vIGNhbmNlbCBhcHBlbmQvcHJlcGVuZC9uZXdTZWN0aW9uL3JldmVydCBtb2Rlc1xuXHRcdFx0XHRpZiAoY3R4Lm9uU2F2ZUZhaWx1cmUpIHtcblx0XHRcdFx0XHRjdHgub25TYXZlRmFpbHVyZSh0aGlzKTsgLy8gaW52b2tlIGNhbGxiYWNrXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Y29uc3QgaXNUZXh0UmVkaXJlY3QgPSAodGV4dCkgPT4ge1xuXHRcdFx0aWYgKCF0ZXh0KSB7XG5cdFx0XHRcdC8vIG5vIHRleHQgLSBjb250ZW50IGVtcHR5IG9yIGluYWNjZXNzaWJsZSAocmV2ZGVsbGVkIG9yIHN1cHByZXNzZWQpXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBNb3JlYml0cy5sMTBuLnJlZGlyZWN0VGFnQWxpYXNlcy5zb21lKCh0YWcpID0+IHtcblx0XHRcdFx0cmV0dXJuIG5ldyBSZWdFeHAoYF5cXFxccyoke3RhZ31cXFxcV2AsICdpJykudGVzdCh0ZXh0KTtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0Y29uc3QgZm5Mb29rdXBDcmVhdGlvblN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGN0eC5sb29rdXBDcmVhdGlvbkFwaS5nZXRSZXNwb25zZSgpLnF1ZXJ5O1xuXHRcdFx0aWYgKCFmbkNoZWNrUGFnZU5hbWUocmVzcG9uc2UsIGN0eC5vbkxvb2t1cENyZWF0aW9uRmFpbHVyZSkpIHtcblx0XHRcdFx0cmV0dXJuOyAvLyBhYm9ydFxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCByZXYgPSByZXNwb25zZS5wYWdlc1swXS5yZXZpc2lvbnMgJiYgcmVzcG9uc2UucGFnZXNbMF0ucmV2aXNpb25zWzBdO1xuXHRcdFx0aWYgKCFyZXYpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfml6Dms5Xmib7liLAnLCAn54Sh5rOV5om+5YiwJykgK1xuXHRcdFx0XHRcdFx0Y3R4LnBhZ2VOYW1lICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn55qE5Lu75L2V5L+u6K6i54mI5pysJywgJ+eahOS7u+S9leS/ruiogueJiOacrCcpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGN0eC5vbkxvb2t1cENyZWF0aW9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjdHgubG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yIHx8ICFpc1RleHRSZWRpcmVjdChyZXYuY29udGVudCkpIHtcblx0XHRcdFx0Y3R4LmNyZWF0b3IgPSByZXYudXNlcjtcblx0XHRcdFx0aWYgKCFjdHguY3JlYXRvcikge1xuXHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5peg5rOV6I635Y+W6aG16Z2i5Yib5bu66ICF55qE5ZCN5a2XJywgJ+eEoeazleWPluW+l+mggemdouW7uueri+iAheeahOWQjeWtlycpKTtcblx0XHRcdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN0eC50aW1lc3RhbXAgPSByZXYudGltZXN0YW1wO1xuXHRcdFx0XHRpZiAoIWN0eC50aW1lc3RhbXApIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+aXoOazleiOt+WPlumhtemdouWIm+W7uuaXtumXtCcsICfnhKHms5Xlj5blvpfpoIHpnaLlu7rnq4vmmYLplpMnKSk7XG5cdFx0XHRcdFx0Y3R4Lm9uTG9va3VwQ3JlYXRpb25GYWlsdXJlKHRoaXMpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5pbmZvKHdpbmRvdy53Z1VMUygn5bey6I635Y+W6aG16Z2i5Yib5bu65L+h5oGvJywgJ+W3suWPluW+l+mggemdouW7uueri+izh+ioiicpKTtcblx0XHRcdFx0Y3R4Lm9uTG9va3VwQ3JlYXRpb25TdWNjZXNzKHRoaXMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4Lmxvb2t1cENyZWF0aW9uQXBpLnF1ZXJ5LnJ2bGltaXQgPSA1MDsgLy8gbW9kaWZ5IHByZXZpb3VzIHF1ZXJ5IHRvIGZldGNoIG1vcmUgcmV2aXNpb25zXG5cdFx0XHRcdGN0eC5sb29rdXBDcmVhdGlvbkFwaS5xdWVyeS50aXRsZXMgPSBjdHgucGFnZU5hbWU7IC8vIHVwZGF0ZSBwYWdlTmFtZSBpZiByZWRpcmVjdCByZXNvbHV0aW9uIHRvb2sgcGxhY2UgaW4gZWFybGllciBxdWVyeVxuXHRcdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfojrflj5bpobXpnaLliJvlu7rkv6Hmga8nLCAn5Y+W5b6X6aCB6Z2i5bu656uL6LOH6KiKJyksXG5cdFx0XHRcdFx0Y3R4Lmxvb2t1cENyZWF0aW9uQXBpLnF1ZXJ5LFxuXHRcdFx0XHRcdGZuTG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yLFxuXHRcdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LFxuXHRcdFx0XHRcdGN0eC5vbkxvb2t1cENyZWF0aW9uRmFpbHVyZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0XHRjdHgubG9va3VwQ3JlYXRpb25BcGkucG9zdCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3QgZm5Mb29rdXBOb25SZWRpcmVjdENyZWF0b3IgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGN0eC5sb29rdXBDcmVhdGlvbkFwaS5nZXRSZXNwb25zZSgpLnF1ZXJ5O1xuXHRcdFx0Y29uc3QgcmV2cyA9IHJlc3BvbnNlLnBhZ2VzWzBdLnJldmlzaW9ucztcblx0XHRcdGZvciAoY29uc3QgcmV2IG9mIHJldnMpIHtcblx0XHRcdFx0aWYgKCFpc1RleHRSZWRpcmVjdChyZXYuY29udGVudCkpIHtcblx0XHRcdFx0XHRjdHguY3JlYXRvciA9IHJldi51c2VyO1xuXHRcdFx0XHRcdGN0eC50aW1lc3RhbXAgPSByZXYudGltZXN0YW1wO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN0eC5jcmVhdG9yKSB7XG5cdFx0XHRcdC8vIGZhbGxiYWNrIHRvIGdpdmUgZmlyc3QgcmV2aXNpb24gYXV0aG9yIGlmIG5vIG5vbi1yZWRpcmVjdCB2ZXJzaW9uIGluIHRoZSBmaXJzdCA1MFxuXHRcdFx0XHRjdHguY3JlYXRvciA9IHJldnNbMF0udXNlcjtcblx0XHRcdFx0Y3R4LnRpbWVzdGFtcCA9IHJldnNbMF0udGltZXN0YW1wO1xuXHRcdFx0XHRpZiAoIWN0eC5jcmVhdG9yKSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCfml6Dms5Xojrflj5bpobXpnaLliJvlu7rogIXnmoTlkI3lrZcnLCAn54Sh5rOV5Y+W5b6X6aCB6Z2i5bu656uL6ICF55qE5ZCN5a2XJykpO1xuXHRcdFx0XHRcdGN0eC5vbkxvb2t1cENyZWF0aW9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghY3R4LnRpbWVzdGFtcCkge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+aXoOazleiOt+WPlumhtemdouWIm+W7uuaXtumXtCcsICfnhKHms5Xlj5blvpfpoIHpnaLlu7rnq4vmmYLplpMnKSk7XG5cdFx0XHRcdGN0eC5vbkxvb2t1cENyZWF0aW9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+W3suiOt+WPlumhtemdouWIm+W7uuS/oeaBrycsICflt7Llj5blvpfpoIHpnaLlu7rnq4vos4foqIonKSk7XG5cdFx0XHRjdHgub25Mb29rdXBDcmVhdGlvblN1Y2Nlc3ModGhpcyk7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBDb21tb24gY2hlY2tzIGZvciBhY3Rpb24gbWV0aG9kcy4gVXNlZCBmb3IgbW92ZSwgdW5kZWxldGUsIGRlbGV0ZSxcblx0XHQgKiBwcm90ZWN0LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbiAtIFRoZSBhY3Rpb24gYmVpbmcgY2hlY2tlZC5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gb25GYWlsdXJlIC0gRmFpbHVyZSBjYWxsYmFjay5cblx0XHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0XHQgKi9cblx0XHRjb25zdCBmblByZWZsaWdodENoZWNrcyA9IGZ1bmN0aW9uIChhY3Rpb24sIG9uRmFpbHVyZSkge1xuXHRcdFx0Ly8gaWYgYSBub24tYWRtaW4gdHJpZXMgdG8gZG8gdGhpcywgZG9uJ3QgYm90aGVyXG5cdFx0XHRpZiAoIU1vcmViaXRzLnVzZXJJc1N5c29wICYmIGFjdGlvbiAhPT0gJ21vdmUnKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5peg5rOV5a+56aG16Z2i6L+b6KGM4oCcJywgJ+eEoeazleWwjemggemdoumAsuihjOOAjCcpICtcblx0XHRcdFx0XHRcdGFjdGlvbiArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+KAneaTjeS9nO+8muWPquacieeuoeeQhuWRmOWPr+S7pei/m+ihjOatpOaTjeS9nCcsICfjgI3mk43kvZzvvJrlj6rmnInnrqHnkIblk6Hlj6/ku6XpgLLooYzmraTmk43kvZwnKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmICghY3R4LmVkaXRTdW1tYXJ5KSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKGBJbnRlcm5hbCBlcnJvcjogJHthY3Rpb259IHJlYXNvbiBub3Qgc2V0ICh1c2Ugc2V0RWRpdFN1bW1hcnkgZnVuY3Rpb24pIWApO1xuXHRcdFx0XHRvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlOyAvLyBhbGwgT0tcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIENvbW1vbiBjaGVja3MgZm9yIGZuUHJvY2VzcyBmdW5jdGlvbnMgKGBmblByb2Nlc3NEZWxldGVgLCBgZm5Qcm9jZXNzTW92ZWAsIGV0Yy5cblx0XHQgKiBVc2VkIGZvciBtb3ZlLCB1bmRlbGV0ZSwgZGVsZXRlLCBwcm90ZWN0LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbiAtIFRoZSBhY3Rpb24gYmVpbmcgY2hlY2tlZC5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gb25GYWlsdXJlIC0gRmFpbHVyZSBjYWxsYmFjay5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2UgZG9jdW1lbnQgZnJvbSB0aGUgQVBJIGNhbGwuXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdFx0ICovXG5cdFx0Y29uc3QgZm5Qcm9jZXNzQ2hlY2tzID0gZnVuY3Rpb24gKGFjdGlvbiwgb25GYWlsdXJlLCByZXNwb25zZSkge1xuXHRcdFx0Y29uc3QgW3ttaXNzaW5nfV0gPSByZXNwb25zZS5wYWdlcztcblx0XHRcdC8vIE5vIHVuZGVsZXRlIGFzIGFuIGV4aXN0aW5nIHBhZ2UgY291bGQgaGF2ZSBkZWxldGVkIHJldmlzaW9uc1xuXHRcdFx0Y29uc3QgYWN0aW9uTWlzc2luZyA9IG1pc3NpbmcgJiYgWydkZWxldGUnLCAnbW92ZSddLmluY2x1ZGVzKGFjdGlvbik7XG5cdFx0XHRjb25zdCBwcm90ZWN0TWlzc2luZyA9IGFjdGlvbiA9PT0gJ3Byb3RlY3QnICYmIG1pc3NpbmcgJiYgKGN0eC5wcm90ZWN0RWRpdCB8fCBjdHgucHJvdGVjdE1vdmUpO1xuXHRcdFx0Y29uc3Qgc2FsdE1pc3NpbmcgPSBhY3Rpb24gPT09ICdwcm90ZWN0JyAmJiAhbWlzc2luZyAmJiBjdHgucHJvdGVjdENyZWF0ZTtcblx0XHRcdGlmIChhY3Rpb25NaXNzaW5nIHx8IHByb3RlY3RNaXNzaW5nIHx8IHNhbHRNaXNzaW5nKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdGAke1xuXHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfml6Dms5Xlr7npobXpnaLov5vooYzigJwnLCAn54Sh5rOV5bCN6aCB6Z2i6YCy6KGM44CMJykgK1xuXHRcdFx0XHRcdFx0YWN0aW9uICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCd5pON5L2c77yM5Zug5Li66aG16Z2iJywgJ+OAjeaTjeS9nO+8jOWboOeCuumggemdoicpICtcblx0XHRcdFx0XHRcdChtaXNzaW5nID8gJ+W3suS4jScgOiB3aW5kb3cud2dVTFMoJ+W3sue7jycsICflt7LntpMnKSlcblx0XHRcdFx0XHR95a2Y5ZyoYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdC8vIERlbGV0ZSwgdW5kZWxldGUsIG1vdmVcblx0XHRcdC8vIGV4dHJhY3QgcHJvdGVjdGlvbiBpbmZvXG5cdFx0XHRsZXQgZWRpdHByb3Q7XG5cdFx0XHRpZiAoYWN0aW9uID09PSAndW5kZWxldGUnKSB7XG5cdFx0XHRcdGVkaXRwcm90ID0gcmVzcG9uc2UucGFnZXNbMF0ucHJvdGVjdGlvbi5maW5kTGFzdCgocHIpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcHIudHlwZSA9PT0gJ2NyZWF0ZScgJiYgcHIubGV2ZWwgPT09ICdzeXNvcCc7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChhY3Rpb24gPT09ICdkZWxldGUnIHx8IGFjdGlvbiA9PT0gJ21vdmUnKSB7XG5cdFx0XHRcdGVkaXRwcm90ID0gcmVzcG9uc2UucGFnZXNbMF0ucHJvdGVjdGlvbi5maW5kTGFzdCgocHIpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcHIudHlwZSA9PT0gJ2VkaXQnICYmIHByLmxldmVsID09PSAnc3lzb3AnO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0ZWRpdHByb3QgJiZcblx0XHRcdFx0IWN0eC5zdXBwcmVzc1Byb3RlY3RXYXJuaW5nICYmXG5cdFx0XHRcdCFjb25maXJtKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5Y2z5bCG5a+55YWo5L+d5oqk6aG16Z2i4oCcJywgJ+aCqOWNs+Wwh+WwjeWFqOS/neitt+mggemdouOAjCcpICtcblx0XHRcdFx0XHRcdGN0eC5wYWdlTmFtZSArXG5cdFx0XHRcdFx0XHQoZWRpdHByb3QuZXhwaXJ5ID09PSAnaW5maW5pdHknXG5cdFx0XHRcdFx0XHRcdD8gd2luZG93LndnVUxTKCfigJ3vvIjmsLjkuYXvvIknLCAn44CN77yI5rC45LmF77yJJylcblx0XHRcdFx0XHRcdFx0OiBgJHtcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCd77yI5Yiw5pyf77yaJywgJ+OAje+8iOWIsOacn++8micpICtcblx0XHRcdFx0XHRcdFx0XHRcdG5ldyBNb3JlYml0cy5kYXRlKGVkaXRwcm90LmV4cGlyeSkuY2FsZW5kYXIoJ3V0YycpXG5cdFx0XHRcdFx0XHRcdFx0fSAoVVRDKe+8iWApICtcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn4oCd6L+b6KGM4oCcJywgJ+OAjemAsuihjOOAjCcpICtcblx0XHRcdFx0XHRcdGFjdGlvbiArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoJ+KAneaTjeS9nCcsICfjgI3mk43kvZwnKSArXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfjgIJcXG5cXG7ljZXlh7vnoa7lrprku6Xnu6fnu63mk43kvZzvvIzmiJbljZXlh7vlj5bmtojku6Xlj5bmtojmk43kvZzjgIInLFxuXHRcdFx0XHRcdFx0XHQn44CCXFxuXFxu6bue5pOK56K65a6a5Lul57m857qM5pON5L2c77yM5oiW6bue5pOK5Y+W5raI5Lul5Y+W5raI5pON5L2c44CCJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCflt7Llj5bmtojlr7nlhajkv53miqTpobXpnaLnmoTmk43kvZzjgIInLCAn5bey5Y+W5raI5bCN5YWo5L+d6K236aCB6Z2i55qE5pON5L2c44CCJykpO1xuXHRcdFx0XHRvbkZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmICghcmVzcG9uc2UudG9rZW5zLmNzcmZ0b2tlbikge1xuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+aXoOazleiOt+WPluS7pOeJjOOAgicsICfnhKHms5Xlj5blvpfmrIrmnZbjgIInKSk7XG5cdFx0XHRcdG9uRmFpbHVyZSh0aGlzKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7IC8vIGFsbCBPS1xuXHRcdH07XG5cblx0XHRjb25zdCBmblByb2Nlc3NNb3ZlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0bGV0IHBhZ2VUaXRsZTtcblx0XHRcdGxldCB0b2tlbjtcblx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdtb3ZlJykpIHtcblx0XHRcdFx0dG9rZW4gPSBtdy51c2VyLnRva2Vucy5nZXQoJ2NzcmZUb2tlbicpO1xuXHRcdFx0XHRwYWdlVGl0bGUgPSBjdHgucGFnZU5hbWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IGN0eC5tb3ZlQXBpLmdldFJlc3BvbnNlKCkucXVlcnk7XG5cdFx0XHRcdGlmICghZm5Qcm9jZXNzQ2hlY2tzKCdtb3ZlJywgY3R4Lm9uTW92ZUZhaWx1cmUsIHJlc3BvbnNlKSkge1xuXHRcdFx0XHRcdHJldHVybjsgLy8gYWJvcnRcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRva2VuID0gcmVzcG9uc2UudG9rZW5zLmNzcmZ0b2tlbjtcblx0XHRcdFx0Y29uc3QgW3BhZ2VdID0gcmVzcG9uc2UucGFnZXM7XG5cdFx0XHRcdHBhZ2VUaXRsZSA9IHBhZ2UudGl0bGU7XG5cdFx0XHRcdGN0eC53YXRjaGVkID0gcGFnZS53YXRjaGxpc3RleHBpcnkgfHwgcGFnZS53YXRjaGVkO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcXVlcnkgPSB7XG5cdFx0XHRcdGFjdGlvbjogJ21vdmUnLFxuXHRcdFx0XHRmcm9tOiBwYWdlVGl0bGUsXG5cdFx0XHRcdHRvOiBjdHgubW92ZURlc3RpbmF0aW9uLFxuXHRcdFx0XHR0b2tlbixcblx0XHRcdFx0cmVhc29uOiBjdHguZWRpdFN1bW1hcnksXG5cdFx0XHRcdHdhdGNobGlzdDogY3R4LndhdGNobGlzdE9wdGlvbixcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGN0eC5jaGFuZ2VUYWdzKSB7XG5cdFx0XHRcdHF1ZXJ5LnRhZ3MgPSBjdHguY2hhbmdlVGFncztcblx0XHRcdH1cblx0XHRcdGlmIChmbkFwcGx5V2F0Y2hsaXN0RXhwaXJ5KCkpIHtcblx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gY3R4LndhdGNobGlzdEV4cGlyeTtcblx0XHRcdH1cblx0XHRcdGlmIChjdHgubW92ZVRhbGtQYWdlKSB7XG5cdFx0XHRcdHF1ZXJ5Lm1vdmV0YWxrID0gJ3RydWUnO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN0eC5tb3ZlU3VicGFnZXMpIHtcblx0XHRcdFx0cXVlcnkubW92ZXN1YnBhZ2VzID0gJ3RydWUnO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN0eC5tb3ZlU3VwcHJlc3NSZWRpcmVjdCkge1xuXHRcdFx0XHRxdWVyeS5ub3JlZGlyZWN0ID0gJ3RydWUnO1xuXHRcdFx0fVxuXHRcdFx0Y3R4Lm1vdmVQcm9jZXNzQXBpID0gbmV3IE1vcmViaXRzLndpa2kuYXBpKFxuXHRcdFx0XHR3aW5kb3cud2dVTFMoJ+enu+WKqOmhtemdouKApuKApicsICfnp7vli5XpoIHpnaLigKbigKYnKSxcblx0XHRcdFx0cXVlcnksXG5cdFx0XHRcdGN0eC5vbk1vdmVTdWNjZXNzLFxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0Y3R4Lm9uTW92ZUZhaWx1cmVcblx0XHRcdCk7XG5cdFx0XHRjdHgubW92ZVByb2Nlc3NBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4Lm1vdmVQcm9jZXNzQXBpLnBvc3QoKTtcblx0XHR9O1xuXHRcdGNvbnN0IGZuUHJvY2Vzc1BhdHJvbCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdwYXRyb2wnLFxuXHRcdFx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRcdH07XG5cdFx0XHQvLyBEaWRuJ3QgbmVlZCB0byBsb2FkIHRoZSBwYWdlXG5cdFx0XHRpZiAoY3R4LnJjaWQpIHtcblx0XHRcdFx0cXVlcnkucmNpZCA9IGN0eC5yY2lkO1xuXHRcdFx0XHRxdWVyeS50b2tlbiA9IG13LnVzZXIudG9rZW5zLmdldCgncGF0cm9sVG9rZW4nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4LnBhdHJvbEFwaS5nZXRSZXNwb25zZSgpLnF1ZXJ5O1xuXHRcdFx0XHQvLyBEb24ndCBwYXRyb2wgaWYgbm90IHVucGF0cm9sbGVkXG5cdFx0XHRcdGlmICghcmVzcG9uc2UucmVjZW50Y2hhbmdlc1swXS51bnBhdHJvbGxlZCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBbe2xhc3RyZXZpZH1dID0gcmVzcG9uc2UucGFnZXM7XG5cdFx0XHRcdGlmICghbGFzdHJldmlkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHF1ZXJ5LnJldmlkID0gbGFzdHJldmlkO1xuXHRcdFx0XHRjb25zdCB0b2tlbiA9IHJlc3BvbnNlLnRva2Vucy5jc3JmdG9rZW47XG5cdFx0XHRcdGlmICghdG9rZW4pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0cXVlcnkudG9rZW4gPSB0b2tlbjtcblx0XHRcdH1cblx0XHRcdGlmIChjdHguY2hhbmdlVGFncykge1xuXHRcdFx0XHRxdWVyeS50YWdzID0gY3R4LmNoYW5nZVRhZ3M7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBwYXRyb2xTdGF0ID0gbmV3IE1vcmViaXRzLnN0YXR1cyh3aW5kb3cud2dVTFMoJ+agh+iusOmhtemdouS4uuW3suW3oeafpScsICfmqJnoqJjpoIHpnaLngrrlt7Llt6Hmn6UnKSk7XG5cdFx0XHRjdHgucGF0cm9sUHJvY2Vzc0FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCflt6Hmn6XpobXpnaLigKbigKYnLCAn5beh5p+l6aCB6Z2i4oCm4oCmJyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRwYXRyb2xTdGF0XG5cdFx0XHQpO1xuXHRcdFx0Y3R4LnBhdHJvbFByb2Nlc3NBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4LnBhdHJvbFByb2Nlc3NBcGkucG9zdCgpO1xuXHRcdH07XG5cdFx0Y29uc3QgZm5Qcm9jZXNzRGVsZXRlID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0bGV0IHBhZ2VUaXRsZTtcblx0XHRcdGxldCB0b2tlbjtcblx0XHRcdGlmIChmbkNhblVzZU13VXNlclRva2VuKCdkZWxldGUnKSkge1xuXHRcdFx0XHR0b2tlbiA9IG13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJyk7XG5cdFx0XHRcdHBhZ2VUaXRsZSA9IGN0eC5wYWdlTmFtZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4LmRlbGV0ZUFwaS5nZXRSZXNwb25zZSgpLnF1ZXJ5O1xuXHRcdFx0XHRpZiAoIWZuUHJvY2Vzc0NoZWNrcygnZGVsZXRlJywgY3R4Lm9uRGVsZXRlRmFpbHVyZSwgcmVzcG9uc2UpKSB7XG5cdFx0XHRcdFx0cmV0dXJuOyAvLyBhYm9ydFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dG9rZW4gPSByZXNwb25zZS50b2tlbnMuY3NyZnRva2VuO1xuXHRcdFx0XHRjb25zdCBbcGFnZV0gPSByZXNwb25zZS5wYWdlcztcblx0XHRcdFx0cGFnZVRpdGxlID0gcGFnZS50aXRsZTtcblx0XHRcdFx0Y3R4LndhdGNoZWQgPSBwYWdlLndhdGNobGlzdGV4cGlyeSB8fCBwYWdlLndhdGNoZWQ7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAnZGVsZXRlJyxcblx0XHRcdFx0dGl0bGU6IHBhZ2VUaXRsZSxcblx0XHRcdFx0dG9rZW4sXG5cdFx0XHRcdHJlYXNvbjogY3R4LmVkaXRTdW1tYXJ5LFxuXHRcdFx0XHR3YXRjaGxpc3Q6IGN0eC53YXRjaGxpc3RPcHRpb24sXG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdGlmIChjdHguY2hhbmdlVGFncykge1xuXHRcdFx0XHRxdWVyeS50YWdzID0gY3R4LmNoYW5nZVRhZ3M7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZm5BcHBseVdhdGNobGlzdEV4cGlyeSgpKSB7XG5cdFx0XHRcdHF1ZXJ5LndhdGNobGlzdGV4cGlyeSA9IGN0eC53YXRjaGxpc3RFeHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRjdHguZGVsZXRlUHJvY2Vzc0FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfliKDpmaTpobXpnaLigKbigKYnLCAn5Yiq6Zmk6aCB6Z2i4oCm4oCmJyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRjdHgub25EZWxldGVTdWNjZXNzLFxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0Zm5Qcm9jZXNzRGVsZXRlRXJyb3Jcblx0XHRcdCk7XG5cdFx0XHRjdHguZGVsZXRlUHJvY2Vzc0FwaS5zZXRQYXJlbnQodGhpcyk7XG5cdFx0XHRjdHguZGVsZXRlUHJvY2Vzc0FwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHQvLyBjYWxsYmFjayBmcm9tIGRlbGV0ZVByb2Nlc3NBcGkucG9zdCgpXG5cdFx0Y29uc3QgZm5Qcm9jZXNzRGVsZXRlRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCBlcnJvckNvZGUgPSBjdHguZGVsZXRlUHJvY2Vzc0FwaS5nZXRFcnJvckNvZGUoKTtcblx0XHRcdC8vIGNoZWNrIGZvciBcIkRhdGFiYXNlIHF1ZXJ5IGVycm9yXCJcblx0XHRcdGlmIChlcnJvckNvZGUgPT09ICdpbnRlcm5hbF9hcGlfZXJyb3JfREJRdWVyeUVycm9yJyAmJiBjdHgucmV0cmllcysrIDwgY3R4Lm1heFJldHJpZXMpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+aVsOaNruW6k+afpeivoumUmeivr++8jOmHjeivlScsICfos4fmlpnluqvmn6XoqaLpjK/oqqTvvIzph43oqaYnKSk7XG5cdFx0XHRcdC0tTW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0OyAvLyBhbGxvdyBmb3Igbm9ybWFsIGNvbXBsZXRpb24gaWYgcmV0cnkgc3VjY2VlZHNcblx0XHRcdFx0Y3R4LmRlbGV0ZVByb2Nlc3NBcGkucG9zdCgpOyAvLyBnaXZlIGl0IGFub3RoZXIgZ28hXG5cdFx0XHR9IGVsc2UgaWYgKGVycm9yQ29kZSA9PT0gJ21pc3Npbmd0aXRsZScpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3Iod2luZG93LndnVUxTKCfkuI3og73liKDpmaTpobXpnaLvvIzlm6Dlhbblt7LkuI3lrZjlnKgnLCAn5LiN6IO95Yiq6Zmk6aCB6Z2i77yM5Zug5YW25bey5LiN5a2Y5ZyoJykpO1xuXHRcdFx0XHRpZiAoY3R4Lm9uRGVsZXRlRmFpbHVyZSkge1xuXHRcdFx0XHRcdGN0eC5vbkRlbGV0ZUZhaWx1cmUuY2FsbCh0aGlzLCBjdHguZGVsZXRlUHJvY2Vzc0FwaSk7IC8vIGludm9rZSBjYWxsYmFja1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGhhcmQgZXJyb3IsIGdpdmUgdXBcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5peg5rOV5Yig6Zmk6aG16Z2i77yaJywgJ+eEoeazleWIqumZpOmggemdou+8micpICsgY3R4LmRlbGV0ZVByb2Nlc3NBcGkuZ2V0RXJyb3JUZXh0KClcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKGN0eC5vbkRlbGV0ZUZhaWx1cmUpIHtcblx0XHRcdFx0XHRjdHgub25EZWxldGVGYWlsdXJlLmNhbGwodGhpcywgY3R4LmRlbGV0ZVByb2Nlc3NBcGkpOyAvLyBpbnZva2UgY2FsbGJhY2tcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRjb25zdCBmblByb2Nlc3NVbmRlbGV0ZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGxldCBwYWdlVGl0bGU7XG5cdFx0XHRsZXQgdG9rZW47XG5cdFx0XHRpZiAoZm5DYW5Vc2VNd1VzZXJUb2tlbigndW5kZWxldGUnKSkge1xuXHRcdFx0XHR0b2tlbiA9IG13LnVzZXIudG9rZW5zLmdldCgnY3NyZlRva2VuJyk7XG5cdFx0XHRcdHBhZ2VUaXRsZSA9IGN0eC5wYWdlTmFtZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4LnVuZGVsZXRlQXBpLmdldFJlc3BvbnNlKCkucXVlcnk7XG5cdFx0XHRcdGlmICghZm5Qcm9jZXNzQ2hlY2tzKCd1bmRlbGV0ZScsIGN0eC5vblVuZGVsZXRlRmFpbHVyZSwgcmVzcG9uc2UpKSB7XG5cdFx0XHRcdFx0cmV0dXJuOyAvLyBhYm9ydFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dG9rZW4gPSByZXNwb25zZS50b2tlbnMuY3NyZnRva2VuO1xuXHRcdFx0XHRjb25zdCBbcGFnZV0gPSByZXNwb25zZS5wYWdlcztcblx0XHRcdFx0cGFnZVRpdGxlID0gcGFnZS50aXRsZTtcblx0XHRcdFx0Y3R4LndhdGNoZWQgPSBwYWdlLndhdGNobGlzdGV4cGlyeSB8fCBwYWdlLndhdGNoZWQ7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBxdWVyeSA9IHtcblx0XHRcdFx0YWN0aW9uOiAndW5kZWxldGUnLFxuXHRcdFx0XHR0aXRsZTogcGFnZVRpdGxlLFxuXHRcdFx0XHR0b2tlbixcblx0XHRcdFx0cmVhc29uOiBjdHguZWRpdFN1bW1hcnksXG5cdFx0XHRcdHdhdGNobGlzdDogY3R4LndhdGNobGlzdE9wdGlvbixcblx0XHRcdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0XHR9O1xuXHRcdFx0aWYgKGN0eC5jaGFuZ2VUYWdzKSB7XG5cdFx0XHRcdHF1ZXJ5LnRhZ3MgPSBjdHguY2hhbmdlVGFncztcblx0XHRcdH1cblx0XHRcdGlmIChmbkFwcGx5V2F0Y2hsaXN0RXhwaXJ5KCkpIHtcblx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gY3R4LndhdGNobGlzdEV4cGlyeTtcblx0XHRcdH1cblx0XHRcdGN0eC51bmRlbGV0ZVByb2Nlc3NBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn6L+Y5Y6f6aG16Z2i4oCm4oCmJywgJ+mChOWOn+mggemdouKApuKApicpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0Y3R4Lm9uVW5kZWxldGVTdWNjZXNzLFxuXHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudCxcblx0XHRcdFx0Zm5Qcm9jZXNzVW5kZWxldGVFcnJvclxuXHRcdFx0KTtcblx0XHRcdGN0eC51bmRlbGV0ZVByb2Nlc3NBcGkuc2V0UGFyZW50KHRoaXMpO1xuXHRcdFx0Y3R4LnVuZGVsZXRlUHJvY2Vzc0FwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHQvLyBjYWxsYmFjayBmcm9tIHVuZGVsZXRlUHJvY2Vzc0FwaS5wb3N0KClcblx0XHRjb25zdCBmblByb2Nlc3NVbmRlbGV0ZUVycm9yID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0Y29uc3QgZXJyb3JDb2RlID0gY3R4LnVuZGVsZXRlUHJvY2Vzc0FwaS5nZXRFcnJvckNvZGUoKTtcblx0XHRcdC8vIGNoZWNrIGZvciBcIkRhdGFiYXNlIHF1ZXJ5IGVycm9yXCJcblx0XHRcdGlmIChlcnJvckNvZGUgPT09ICdpbnRlcm5hbF9hcGlfZXJyb3JfREJRdWVyeUVycm9yJykge1xuXHRcdFx0XHRpZiAoY3R4LnJldHJpZXMrKyA8IGN0eC5tYXhSZXRyaWVzKSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+aVsOaNruW6k+afpeivoumUmeivr++8jOmHjeivlScsICfos4fmlpnluqvmn6XoqaLpjK/oqqTvvIzph43oqaYnKSk7XG5cdFx0XHRcdFx0LS1Nb3JlYml0cy53aWtpLm51bWJlck9mQWN0aW9uc0xlZnQ7IC8vIGFsbG93IGZvciBub3JtYWwgY29tcGxldGlvbiBpZiByZXRyeSBzdWNjZWVkc1xuXHRcdFx0XHRcdGN0eC51bmRlbGV0ZVByb2Nlc3NBcGkucG9zdCgpOyAvLyBnaXZlIGl0IGFub3RoZXIgZ28hXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdCfmjIHnu63nmoTmlbDmja7lupPmn6Xor6LplJnor6/vvIzph43mlrDliqDovb3pobXpnaLlubbph43or5UnLFxuXHRcdFx0XHRcdFx0XHQn5oyB57qM55qE6LOH5paZ5bqr5p+l6Kmi6Yyv6Kqk77yM6YeN5paw6LyJ5YWl6aCB6Z2i5Lim6YeN6KmmJ1xuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKGN0eC5vblVuZGVsZXRlRmFpbHVyZSkge1xuXHRcdFx0XHRcdFx0Y3R4Lm9uVW5kZWxldGVGYWlsdXJlLmNhbGwodGhpcywgY3R4LnVuZGVsZXRlUHJvY2Vzc0FwaSk7IC8vIGludm9rZSBjYWxsYmFja1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChlcnJvckNvZGUgPT09ICdjYW50dW5kZWxldGUnKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKFxuXHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdCfml6Dms5Xov5jljp/liKDpmaTpobXpnaLvvIzlm6DmsqHmnInniYjmnKzkvpvov5jljp/miJblt7Looqvov5jljp8nLFxuXHRcdFx0XHRcdFx0J+eEoeazlemChOWOn+WIqumZpOmggemdou+8jOWboOaykuacieeJiOacrOS+m+mChOWOn+aIluW3suiiq+mChOWOnydcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChjdHgub25VbmRlbGV0ZUZhaWx1cmUpIHtcblx0XHRcdFx0XHRjdHgub25VbmRlbGV0ZUZhaWx1cmUuY2FsbCh0aGlzLCBjdHgudW5kZWxldGVQcm9jZXNzQXBpKTsgLy8gaW52b2tlIGNhbGxiYWNrXG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gaGFyZCBlcnJvciwgZ2l2ZSB1cFxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuZXJyb3IoXG5cdFx0XHRcdFx0d2luZG93LndnVUxTKCfml6Dms5Xov5jljp/pobXpnaLvvJonLCAn54Sh5rOV6YKE5Y6f6aCB6Z2i77yaJykgKyBjdHgudW5kZWxldGVQcm9jZXNzQXBpLmdldEVycm9yVGV4dCgpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChjdHgub25VbmRlbGV0ZUZhaWx1cmUpIHtcblx0XHRcdFx0XHRjdHgub25VbmRlbGV0ZUZhaWx1cmUuY2FsbCh0aGlzLCBjdHgudW5kZWxldGVQcm9jZXNzQXBpKTsgLy8gaW52b2tlIGNhbGxiYWNrXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Y29uc3QgZm5Qcm9jZXNzUHJvdGVjdCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IHJlc3BvbnNlID0gY3R4LnByb3RlY3RBcGkuZ2V0UmVzcG9uc2UoKS5xdWVyeTtcblx0XHRcdGlmICghZm5Qcm9jZXNzQ2hlY2tzKCdwcm90ZWN0JywgY3R4Lm9uUHJvdGVjdEZhaWx1cmUsIHJlc3BvbnNlKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIGFib3J0XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHRva2VuID0gcmVzcG9uc2UudG9rZW5zLmNzcmZ0b2tlbjtcblx0XHRcdGNvbnN0IFtwYWdlXSA9IHJlc3BvbnNlLnBhZ2VzO1xuXHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gcGFnZS50aXRsZTtcblx0XHRcdGN0eC53YXRjaGVkID0gcGFnZS53YXRjaGxpc3RleHBpcnkgfHwgcGFnZS53YXRjaGVkO1xuXHRcdFx0Ly8gRmV0Y2ggZXhpc3RpbmcgcHJvdGVjdGlvbiBsZXZlbHNcblx0XHRcdGNvbnN0IHBycyA9IHJlc3BvbnNlLnBhZ2VzWzBdLnByb3RlY3Rpb247XG5cdFx0XHRsZXQgZWRpdHByb3Q7XG5cdFx0XHRsZXQgbW92ZXByb3Q7XG5cdFx0XHRsZXQgY3JlYXRlcHJvdDtcblx0XHRcdGZvciAoY29uc3QgcHIgb2YgcHJzKSB7XG5cdFx0XHRcdC8vIEZpbHRlciBvdXQgcHJvdGVjdGlvbiBmcm9tIGNhc2NhZGluZ1xuXHRcdFx0XHRpZiAocHIudHlwZSA9PT0gJ2VkaXQnICYmICFwci5zb3VyY2UpIHtcblx0XHRcdFx0XHRlZGl0cHJvdCA9IHByO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHByLnR5cGUgPT09ICdtb3ZlJykge1xuXHRcdFx0XHRcdG1vdmVwcm90ID0gcHI7XG5cdFx0XHRcdH0gZWxzZSBpZiAocHIudHlwZSA9PT0gJ2NyZWF0ZScpIHtcblx0XHRcdFx0XHRjcmVhdGVwcm90ID0gcHI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIEZhbGwgYmFjayB0byBjdXJyZW50IGxldmVscyBpZiBub3QgZXhwbGljaXRseSBzZXRcblx0XHRcdGlmICghY3R4LnByb3RlY3RFZGl0ICYmIGVkaXRwcm90KSB7XG5cdFx0XHRcdGN0eC5wcm90ZWN0RWRpdCA9IHtcblx0XHRcdFx0XHRsZXZlbDogZWRpdHByb3QubGV2ZWwsXG5cdFx0XHRcdFx0ZXhwaXJ5OiBlZGl0cHJvdC5leHBpcnksXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN0eC5wcm90ZWN0TW92ZSAmJiBtb3ZlcHJvdCkge1xuXHRcdFx0XHRjdHgucHJvdGVjdE1vdmUgPSB7XG5cdFx0XHRcdFx0bGV2ZWw6IG1vdmVwcm90LmxldmVsLFxuXHRcdFx0XHRcdGV4cGlyeTogbW92ZXByb3QuZXhwaXJ5LFxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjdHgucHJvdGVjdENyZWF0ZSAmJiBjcmVhdGVwcm90KSB7XG5cdFx0XHRcdGN0eC5wcm90ZWN0Q3JlYXRlID0ge1xuXHRcdFx0XHRcdGxldmVsOiBjcmVhdGVwcm90LmxldmVsLFxuXHRcdFx0XHRcdGV4cGlyeTogY3JlYXRlcHJvdC5leHBpcnksXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHQvLyBEZWZhdWx0IHRvIHByZS1leGlzdGluZyBjYXNjYWRpbmcgcHJvdGVjdGlvbiBpZiB1bmNoYW5nZWQgKHNpbWlsYXIgdG8gYWJvdmUpXG5cdFx0XHRpZiAoY3R4LnByb3RlY3RDYXNjYWRlID09PSBudWxsKSB7XG5cdFx0XHRcdGN0eC5wcm90ZWN0Q2FzY2FkZSA9ICEhcHJzLmZpbHRlcigocHIpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcHIuY2FzY2FkZTtcblx0XHRcdFx0fSkubGVuZ3RoO1xuXHRcdFx0fVxuXHRcdFx0Ly8gV2FybiBpZiBjYXNjYWRpbmcgcHJvdGVjdGlvbiBiZWluZyBhcHBsaWVkIHdpdGggYW4gaW52YWxpZCBwcm90ZWN0aW9uIGxldmVsLFxuXHRcdFx0Ly8gd2hpY2ggZm9yIGVkaXQgcHJvdGVjdGlvbiB3aWxsIGNhdXNlIGNhc2NhZGluZyB0byBiZSBzaWxlbnRseSBzdHJpcHBlZFxuXHRcdFx0aWYgKGN0eC5wcm90ZWN0Q2FzY2FkZSkge1xuXHRcdFx0XHQvLyBPbiBtb3ZlIHByb3RlY3Rpb24sIHRoaXMgaXMgdGVjaG5pY2FsbHkgc3RyaWN0ZXIgdGhhbiB0aGUgTVcgQVBJLFxuXHRcdFx0XHQvLyBidXQgc2VlbXMgcmVhc29uYWJsZSB0byBhdm9pZCBkdW1iIHZhbHVlcyBhbmQgbWlzbGVhZGluZyBsb2cgZW50cmllcyAoVDI2NTYyNilcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCghY3R4LnByb3RlY3RFZGl0IHx8XG5cdFx0XHRcdFx0XHRjdHgucHJvdGVjdEVkaXQubGV2ZWwgIT09ICdzeXNvcCcgfHxcblx0XHRcdFx0XHRcdCFjdHgucHJvdGVjdE1vdmUgfHxcblx0XHRcdFx0XHRcdGN0eC5wcm90ZWN0TW92ZS5sZXZlbCAhPT0gJ3N5c29wJykgJiZcblx0XHRcdFx0XHQhY29uZmlybShcblx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUygn5oKo5bey5a+54oCcJywgJ+aCqOW3suWwjeOAjCcpICtcblx0XHRcdFx0XHRcdFx0Y3R4LnBhZ2VOYW1lICtcblx0XHRcdFx0XHRcdFx0d2luZG93LndnVUxTKCfigJ3lkK/nlKjkuobov57plIHkv53miqQnLCAn44CN5ZWf55So5LqG6YCj6Y6W5L+d6K23JykgK1xuXHRcdFx0XHRcdFx0XHR3aW5kb3cud2dVTFMoXG5cdFx0XHRcdFx0XHRcdFx0J++8jOS9huayoeacieiuvue9ruS7heeuoeeQhuWRmOeahOS/neaKpOe6p+WIq+OAglxcblxcbicsXG5cdFx0XHRcdFx0XHRcdFx0J++8jOS9huaykuacieioreWumuWDheeuoeeQhuWToeeahOS/neitt+e0muWIpeOAglxcblxcbidcblx0XHRcdFx0XHRcdFx0KSArXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy53Z1VMUyhcblx0XHRcdFx0XHRcdFx0XHQn5Y2V5Ye756Gu6K6k5Lul6Ieq5Yqo6LCD5pW05bm257un57ut6L+e6ZSB5YWo5L+d5oqk77yM5Y2V5Ye75Y+W5raI5Lul6Lez6L+H5q2k5pON5L2cJyxcblx0XHRcdFx0XHRcdFx0XHQn6bue5pOK56K66KqN5Lul6Ieq5YuV6Kq/5pW05Lim57m857qM6YCj6Y6W5YWo5L+d6K2377yM6bue5pOK5Y+W5raI5Lul6Lez6YGO5q2k5pON5L2cJ1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC5lcnJvcih3aW5kb3cud2dVTFMoJ+i/numUgeS/neaKpOW3suWPlua2iOOAgicsICfpgKPpjpbkv53orbflt7Llj5bmtojjgIInKSk7XG5cdFx0XHRcdFx0Y3R4Lm9uUHJvdGVjdEZhaWx1cmUodGhpcyk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN0eC5wcm90ZWN0RWRpdC5sZXZlbCA9ICdzeXNvcCc7XG5cdFx0XHRcdGN0eC5wcm90ZWN0TW92ZS5sZXZlbCA9ICdzeXNvcCc7XG5cdFx0XHR9XG5cdFx0XHQvLyBCdWlsZCBwcm90ZWN0aW9uIGxldmVscyBhbmQgZXhwaXJ5cyAoZXhwaXJpZXM/KSBmb3IgcXVlcnlcblx0XHRcdGNvbnN0IHByb3RlY3Rpb25zID0gW107XG5cdFx0XHRjb25zdCBleHBpcnlzID0gW107XG5cdFx0XHRpZiAoY3R4LnByb3RlY3RFZGl0KSB7XG5cdFx0XHRcdHByb3RlY3Rpb25zW3Byb3RlY3Rpb25zLmxlbmd0aF0gPSBgZWRpdD0ke2N0eC5wcm90ZWN0RWRpdC5sZXZlbH1gO1xuXHRcdFx0XHRleHBpcnlzW2V4cGlyeXMubGVuZ3RoXSA9IGN0eC5wcm90ZWN0RWRpdC5leHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3R4LnByb3RlY3RNb3ZlKSB7XG5cdFx0XHRcdHByb3RlY3Rpb25zW3Byb3RlY3Rpb25zLmxlbmd0aF0gPSBgbW92ZT0ke2N0eC5wcm90ZWN0TW92ZS5sZXZlbH1gO1xuXHRcdFx0XHRleHBpcnlzW2V4cGlyeXMubGVuZ3RoXSA9IGN0eC5wcm90ZWN0TW92ZS5leHBpcnk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3R4LnByb3RlY3RDcmVhdGUpIHtcblx0XHRcdFx0cHJvdGVjdGlvbnNbcHJvdGVjdGlvbnMubGVuZ3RoXSA9IGBjcmVhdGU9JHtjdHgucHJvdGVjdENyZWF0ZS5sZXZlbH1gO1xuXHRcdFx0XHRleHBpcnlzW2V4cGlyeXMubGVuZ3RoXSA9IGN0eC5wcm90ZWN0Q3JlYXRlLmV4cGlyeTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdwcm90ZWN0Jyxcblx0XHRcdFx0dGl0bGU6IHBhZ2VUaXRsZSxcblx0XHRcdFx0dG9rZW4sXG5cdFx0XHRcdHByb3RlY3Rpb25zOiBwcm90ZWN0aW9ucy5qb2luKCd8JyksXG5cdFx0XHRcdGV4cGlyeTogZXhwaXJ5cy5qb2luKCd8JyksXG5cdFx0XHRcdHJlYXNvbjogY3R4LmVkaXRTdW1tYXJ5LFxuXHRcdFx0XHR3YXRjaGxpc3Q6IGN0eC53YXRjaGxpc3RPcHRpb24sXG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdC8vIE9ubHkgc2hvd3MgdXAgaW4gbG9ncywgbm90IHBhZ2UgaGlzdG9yeVxuXHRcdFx0aWYgKGN0eC5jaGFuZ2VUYWdzKSB7XG5cdFx0XHRcdHF1ZXJ5LnRhZ3MgPSBjdHguY2hhbmdlVGFncztcblx0XHRcdH1cblx0XHRcdGlmIChmbkFwcGx5V2F0Y2hsaXN0RXhwaXJ5KCkpIHtcblx0XHRcdFx0cXVlcnkud2F0Y2hsaXN0ZXhwaXJ5ID0gY3R4LndhdGNobGlzdEV4cGlyeTtcblx0XHRcdH1cblx0XHRcdGlmIChjdHgucHJvdGVjdENhc2NhZGUpIHtcblx0XHRcdFx0cXVlcnkuY2FzY2FkZSA9ICd0cnVlJztcblx0XHRcdH1cblx0XHRcdGN0eC5wcm90ZWN0UHJvY2Vzc0FwaSA9IG5ldyBNb3JlYml0cy53aWtpLmFwaShcblx0XHRcdFx0d2luZG93LndnVUxTKCfkv53miqTpobXpnaLigKbigKYnLCAn5L+d6K236aCB6Z2i4oCm4oCmJyksXG5cdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRjdHgub25Qcm90ZWN0U3VjY2Vzcyxcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQsXG5cdFx0XHRcdGN0eC5vblByb3RlY3RGYWlsdXJlXG5cdFx0XHQpO1xuXHRcdFx0Y3R4LnByb3RlY3RQcm9jZXNzQXBpLnNldFBhcmVudCh0aGlzKTtcblx0XHRcdGN0eC5wcm90ZWN0UHJvY2Vzc0FwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHRjb25zdCBzbGVlcCA9IChtaWxsaXNlY29uZHMpID0+IHtcblx0XHRcdGNvbnN0IGRlZmVycmVkID0gJC5EZWZlcnJlZCgpO1xuXHRcdFx0c2V0VGltZW91dChkZWZlcnJlZC5yZXNvbHZlLCBtaWxsaXNlY29uZHMpO1xuXHRcdFx0cmV0dXJuIGRlZmVycmVkO1xuXHRcdH07XG5cdH07IC8vIGVuZCBNb3JlYml0cy53aWtpLnBhZ2Vcblx0LyogKioqKioqKioqKioqKioqKiBNb3JlYml0cy53aWtpLnByZXZpZXcgKioqKioqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogVXNlIHRoZSBBUEkgdG8gcGFyc2UgYSBmcmFnbWVudCBvZiB3aWtpdGV4dCBhbmQgcmVuZGVyIGl0IGFzIEhUTUwuXG5cdCAqXG5cdCAqIFRoZSBzdWdnZXN0ZWQgaW1wbGVtZW50YXRpb24gcGF0dGVybiAoaW4ge0BsaW5rIE1vcmViaXRzLnNpbXBsZVdpbmRvd30gYW5kXG5cdCAqIHtAbGluayBNb3JlYml0cy5xdWlja0Zvcm19IHNpdHVhdGlvbnMpIGlzIHRvIGNvbnN0cnVjdCBhXG5cdCAqIGBNb3JlYml0cy53aWtpLnByZXZpZXdgIG9iamVjdCBhZnRlciByZW5kZXJpbmcgYSBgTW9yZWJpdHMucXVpY2tGb3JtYCwgYW5kXG5cdCAqIGJpbmQgdGhlIG9iamVjdCB0byBhbiBhcmJpdHJhcnkgcHJvcGVydHkgb2YgdGhlIGZvcm0gKGUuZy4gfHByZXZpZXdlcnwpLlxuXHQgKiBGb3IgYW4gZXhhbXBsZSwgc2VlIHR3aW5rbGV3YXJuLmpzLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraVxuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcHJldmlld2JveCAtIFRoZSBlbGVtZW50IHRoYXQgd2lsbCBjb250YWluIHRoZSByZW5kZXJlZCBIVE1MLFxuXHQgKiB1c3VhbGx5IGEgPGRpdj4gZWxlbWVudC5cblx0ICovXG5cdE1vcmViaXRzLndpa2kucHJldmlldyA9IGZ1bmN0aW9uIChwcmV2aWV3Ym94KSB7XG5cdFx0dGhpcy5wcmV2aWV3Ym94ID0gcHJldmlld2JveDtcblx0XHQkKHByZXZpZXdib3gpLmFkZENsYXNzKCdtb3JlYml0cy1wcmV2aWV3Ym94JykuaGlkZSgpO1xuXHRcdC8qKlxuXHRcdCAqIERpc3BsYXlzIHRoZSBwcmV2aWV3IGJveCwgYW5kIGJlZ2lucyBhbiBhc3luY2hyb25vdXMgYXR0ZW1wdFxuXHRcdCAqIHRvIHJlbmRlciB0aGUgc3BlY2lmaWVkIHdpa2l0ZXh0LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHdpa2l0ZXh0IC0gV2lraXRleHQgdG8gcmVuZGVyOyBtb3N0IHRoaW5ncyBzaG91bGQgd29yaywgaW5jbHVkaW5nIGBzdWJzdDpgIGFuZCBgfn5+fmAuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IFtwYWdlVGl0bGVdIC0gT3B0aW9uYWwgcGFyYW1ldGVyIGZvciB0aGUgcGFnZSB0aGlzIHNob3VsZCBiZSByZW5kZXJlZCBhcyBiZWluZyBvbiwgaWYgb21pdHRlZCBpdCBpcyB0YWtlbiBhcyB0aGUgY3VycmVudCBwYWdlLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbc2VjdGlvblRpdGxlXSAtIElmIHByb3ZpZGVkLCByZW5kZXIgdGhlIHRleHQgYXMgYSBuZXcgc2VjdGlvbiB1c2luZyB0aGlzIGFzIHRoZSB0aXRsZS5cblx0XHQgKiBAcmV0dXJucyB7alF1ZXJ5LnByb21pc2V9XG5cdFx0ICovXG5cdFx0dGhpcy5iZWdpblJlbmRlciA9ICh3aWtpdGV4dCwgcGFnZVRpdGxlLCBzZWN0aW9uVGl0bGUpID0+IHtcblx0XHRcdCQocHJldmlld2JveCkuc2hvdygpO1xuXHRcdFx0Y29uc3Qgc3RhdHVzc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHByZXZpZXdib3guYXBwZW5kQ2hpbGQoc3RhdHVzc3Bhbik7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuaW5pdChzdGF0dXNzcGFuKTtcblx0XHRcdC8vIOiLpemhtemdouS4jeaYr3dpa2l0ZXh077yI5L6L5aaCSlPjgIFDU1PnrYnvvInvvIzpgqPkuYjmib7kuIDkuKp3aWtpdGV4dOmhtemdouadpemihOiniOOAglxuXHRcdFx0bGV0IHBhZ2VOYW1lID0gbXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpO1xuXHRcdFx0aWYgKG13LmNvbmZpZy5nZXQoJ3dnUGFnZUNvbnRlbnRNb2RlbCcpICE9PSAnd2lraXRleHQnKSB7XG5cdFx0XHRcdHBhZ2VOYW1lID0gYERyYWZ0OiR7cGFnZU5hbWV9YDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHF1ZXJ5ID0ge1xuXHRcdFx0XHRhY3Rpb246ICdwYXJzZScsXG5cdFx0XHRcdHByb3A6IFsndGV4dCcsICdtb2R1bGVzJ10sXG5cdFx0XHRcdHBzdDogdHJ1ZSxcblx0XHRcdFx0Ly8gUFNUID0gcHJlLXNhdmUgdHJhbnNmb3JtOyB0aGlzIG1ha2VzIHN1YnN0aXR1dGlvbiB3b3JrIHByb3Blcmx5XG5cdFx0XHRcdHByZXZpZXc6IHRydWUsXG5cdFx0XHRcdHRleHQ6IHdpa2l0ZXh0LFxuXHRcdFx0XHR0aXRsZTogcGFnZVRpdGxlIHx8IHBhZ2VOYW1lLFxuXHRcdFx0XHRkaXNhYmxlbGltaXRyZXBvcnQ6IHRydWUsXG5cdFx0XHRcdGRpc2FibGVlZGl0c2VjdGlvbjogdHJ1ZSxcblx0XHRcdFx0dXNlbGFuZzogbXcuY29uZmlnLmdldCgnd2dVc2VyTGFuZ3VhZ2UnKSxcblx0XHRcdFx0Ly8gVXNlIHdnVXNlckxhbmd1YWdlIGZvciBwcmV2aWV3XG5cdFx0XHRcdGZvcm1hdDogJ2pzb24nLFxuXHRcdFx0fTtcblx0XHRcdGlmIChzZWN0aW9uVGl0bGUpIHtcblx0XHRcdFx0cXVlcnkuc2VjdGlvbiA9ICduZXcnO1xuXHRcdFx0XHRxdWVyeS5zZWN0aW9udGl0bGUgPSBzZWN0aW9uVGl0bGU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCByZW5kZXJBcGkgPSBuZXcgTW9yZWJpdHMud2lraS5hcGkoXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5Yqg6L295Lit4oCm4oCmJywgJ+i8ieWFpeS4reKApuKApicpLFxuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0Zm5SZW5kZXJTdWNjZXNzLFxuXHRcdFx0XHRuZXcgTW9yZWJpdHMuc3RhdHVzKHdpbmRvdy53Z1VMUygn6aKE6KeIJywgJ+mgkOimvScpKVxuXHRcdFx0KTtcblx0XHRcdHJlbmRlckFwaS5wb3N0KCk7XG5cdFx0fTtcblx0XHRjb25zdCBmblJlbmRlclN1Y2Nlc3MgPSAoYXBpb2JqKSA9PiB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGFwaW9iai5nZXRSZXNwb25zZSgpO1xuXHRcdFx0Y29uc3QgaHRtbCA9IHJlc3BvbnNlLnBhcnNlLnRleHQ7XG5cdFx0XHRpZiAoIWh0bWwpIHtcblx0XHRcdFx0YXBpb2JqLnN0YXRlbGVtLmVycm9yKHdpbmRvdy53Z1VMUygn5Yqg6L296aKE6KeI5aSx6LSl77yM5oiW5qih5p2/5Li656m6JywgJ+i8ieWFpemgkOimveWkseaVl++8jOaIluaooeadv+eCuuepuicpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cHJldmlld2JveC5pbm5lckhUTUwgPSBodG1sO1xuXHRcdFx0bXcubG9hZGVyLmxvYWQocmVzcG9uc2UucGFyc2UubW9kdWxlc3R5bGVzKTtcblx0XHRcdG13LmxvYWRlci5sb2FkKHJlc3BvbnNlLnBhcnNlLm1vZHVsZXMpO1xuXHRcdFx0Ly8gdGhpcyBtYWtlcyBsaW5rcyBvcGVuIGluIG5ldyB0YWJcblx0XHRcdCQocHJldmlld2JveCkuZmluZCgnYScpLmF0dHIoJ3RhcmdldCcsICdfYmxhbmsnKS5hdHRyKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpO1xuXHRcdH07XG5cdFx0LyoqIEhpZGVzIHRoZSBwcmV2aWV3IGJveCBhbmQgY2xlYXJzIGl0LiAqL1xuXHRcdHRoaXMuY2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuXHRcdFx0JChwcmV2aWV3Ym94KS5lbXB0eSgpLmhpZGUoKTtcblx0XHR9O1xuXHR9O1xuXHQvKiAqKioqKioqKioqKioqKioqIE1vcmViaXRzLndpa2l0ZXh0ICoqKioqKioqKioqKioqKiogKi9cblx0LyoqXG5cdCAqIFdpa2l0ZXh0IG1hbmlwdWxhdGlvbi5cblx0ICpcblx0ICogQG5hbWVzcGFjZSBNb3JlYml0cy53aWtpdGV4dFxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICovXG5cdE1vcmViaXRzLndpa2l0ZXh0ID0ge307XG5cdC8qKlxuXHQgKiBHZXQgdGhlIHZhbHVlIG9mIGV2ZXJ5IHBhcmFtZXRlciBmb3VuZCBpbiB0aGUgd2lraXRleHQgb2YgYSBnaXZlbiB0ZW1wbGF0ZS5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLndpa2l0ZXh0XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gV2lraXRleHQgY29udGFpbmluZyBhIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIC0gSW5kZXggbm90aW5nIHdoZXJlIGluIHRoZSB0ZXh0IHRoZSB0ZW1wbGF0ZSBiZWdpbnMuXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9IGB7bmFtZTogdGVtcGxhdGVOYW1lLCBwYXJhbWV0ZXJzOiB7a2V5OiB2YWx1ZX19YC5cblx0ICovXG5cdE1vcmViaXRzLndpa2l0ZXh0LnBhcnNlVGVtcGxhdGUgPSAodGV4dCwgc3RhcnQpID0+IHtcblx0XHRzdGFydCB8fD0gMDtcblx0XHRjb25zdCBsZXZlbCA9IFtdOyAvLyBUcmFjayBvZiBob3cgZGVlcCB3ZSBhcmUgKHt7LCB7e3ssIG9yIFtbKVxuXHRcdGxldCBjb3VudCA9IC0xOyAvLyBOdW1iZXIgb2YgcGFyYW1ldGVycyBmb3VuZFxuXHRcdGxldCB1bm5hbWVkID0gMDsgLy8gS2VlcCB0cmFjayBvZiB3aGF0IG51bWJlciBhbiB1bm5hbWVkIHBhcmFtZXRlciBzaG91bGQgcmVjZWl2ZVxuXHRcdGxldCBlcXVhbHMgPSAtMTsgLy8gQWZ0ZXIgZmluZGluZyBcIj1cIiBiZWZvcmUgYSBwYXJhbWV0ZXIsIHRoZSBpbmRleDsgb3RoZXJ3aXNlLCAtMVxuXHRcdGxldCBjdXJyZW50ID0gJyc7XG5cdFx0Y29uc3QgcmVzdWx0ID0ge1xuXHRcdFx0bmFtZTogJycsXG5cdFx0XHRwYXJhbWV0ZXJzOiB7fSxcblx0XHR9O1xuXHRcdGxldCBrZXk7XG5cdFx0bGV0IHZhbHVlO1xuXHRcdC8qKlxuXHRcdCAqIEZ1bmN0aW9uIHRvIGhhbmRsZSBmaW5kaW5nIHBhcmFtZXRlciB2YWx1ZXMuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFtmaW5hbD1mYWxzZV0gLSBXaGV0aGVyIHRoaXMgaXMgdGhlIGZpbmFsXG5cdFx0ICogcGFyYW1ldGVyIGFuZCB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgdHJhaWxpbmcgYH19YC5cblx0XHQgKi9cblx0XHRjb25zdCBmaW5kUGFyYW0gPSAoZmluYWwpID0+IHtcblx0XHRcdC8vIE5vdGhpbmcgZm91bmQgeWV0LCB0aGlzIG11c3QgYmUgdGhlIHRlbXBsYXRlIG5hbWVcblx0XHRcdGlmIChjb3VudCA9PT0gLTEpIHtcblx0XHRcdFx0cmVzdWx0Lm5hbWUgPSBjdXJyZW50LnNsaWNlKDIpLnRyaW0oKTtcblx0XHRcdFx0Kytjb3VudDtcblx0XHRcdH0gZWxzZSBpZiAoZXF1YWxzID09PSAtMSkge1xuXHRcdFx0XHQvLyBJbiBhIHBhcmFtZXRlclxuXHRcdFx0XHQvLyBObyBlcXVhbHMsIHNvIGl0IG11c3QgYmUgdW5uYW1lZDsgbm8gdHJpbSBzaW5jZSB3aGl0ZXNwYWNlIGFsbG93ZWRcblx0XHRcdFx0Y29uc3QgcGFyYW0gPSBmaW5hbCA/IGN1cnJlbnQuc2xpY2UoZXF1YWxzICsgMSwgLTIpIDogY3VycmVudDtcblx0XHRcdFx0aWYgKHBhcmFtKSB7XG5cdFx0XHRcdFx0cmVzdWx0LnBhcmFtZXRlcnNbKyt1bm5hbWVkXSA9IHBhcmFtO1xuXHRcdFx0XHRcdCsrY291bnQ7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFdlIGZvdW5kIGFuIGVxdWFscywgc28gc2F2ZSB0aGUgcGFyYW1ldGVyIGFzIGtleTogdmFsdWVcblx0XHRcdFx0a2V5ID0gY3VycmVudC5zbGljZSgwLCBNYXRoLm1heCgwLCBlcXVhbHMpKS50cmltKCk7XG5cdFx0XHRcdHZhbHVlID0gZmluYWwgPyBjdXJyZW50LnNsaWNlKGVxdWFscyArIDEsIC0yKS50cmltKCkgOiBjdXJyZW50LnNsaWNlKE1hdGgubWF4KDAsIGVxdWFscyArIDEpKS50cmltKCk7XG5cdFx0XHRcdHJlc3VsdC5wYXJhbWV0ZXJzW2tleV0gPSB2YWx1ZTtcblx0XHRcdFx0ZXF1YWxzID0gLTE7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCB0ZXh0Lmxlbmd0aDsgKytpKSB7XG5cdFx0XHRjb25zdCB0ZXN0MyA9IHRleHQuc2xpY2UoaSwgaSArIDMpO1xuXHRcdFx0aWYgKHRlc3QzID09PSAne3t7JyB8fCAodGVzdDMgPT09ICd9fX0nICYmIGxldmVsLmF0KC0xKSA9PT0gMykpIHtcblx0XHRcdFx0Y3VycmVudCArPSB0ZXN0Mztcblx0XHRcdFx0aSArPSAyO1xuXHRcdFx0XHRpZiAodGVzdDMgPT09ICd7e3snKSB7XG5cdFx0XHRcdFx0bGV2ZWxbbGV2ZWwubGVuZ3RoXSA9IDM7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGV2ZWwucG9wKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB0ZXN0MiA9IHRleHQuc2xpY2UoaSwgaSArIDIpO1xuXHRcdFx0Ly8gRW50ZXJpbmcgYSB0ZW1wbGF0ZSAob3IgbGluaylcblx0XHRcdGlmICh0ZXN0MiA9PT0gJ3t7JyB8fCB0ZXN0MiA9PT0gJ1tbJykge1xuXHRcdFx0XHRjdXJyZW50ICs9IHRlc3QyO1xuXHRcdFx0XHQrK2k7XG5cdFx0XHRcdGlmICh0ZXN0MiA9PT0gJ3t7Jykge1xuXHRcdFx0XHRcdGxldmVsW2xldmVsLmxlbmd0aF0gPSAyO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxldmVsW2xldmVsLmxlbmd0aF0gPSAnd2wnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Ly8gRWl0aGVyIGxlYXZpbmcgYSBsaW5rIG9yIHRlbXBsYXRlL3BhcnNlciBmdW5jdGlvblxuXHRcdFx0aWYgKCh0ZXN0MiA9PT0gJ319JyAmJiBsZXZlbC5hdCgtMSkgPT09IDIpIHx8ICh0ZXN0MiA9PT0gJ11dJyAmJiBsZXZlbC5hdCgtMSkgPT09ICd3bCcpKSB7XG5cdFx0XHRcdGN1cnJlbnQgKz0gdGVzdDI7XG5cdFx0XHRcdCsraTtcblx0XHRcdFx0bGV2ZWwucG9wKCk7XG5cdFx0XHRcdC8vIEZpbmQgdGhlIGZpbmFsIHBhcmFtZXRlciBpZiB0aGlzIHJlYWxseSBpcyB0aGUgZW5kXG5cdFx0XHRcdGlmICh0ZXN0MiA9PT0gJ319JyAmJiBsZXZlbC5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRmaW5kUGFyYW0odHJ1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGV4dC5jaGFyQXQoaSkgPT09ICd8JyAmJiBsZXZlbC5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0Ly8gQW5vdGhlciBwaXBlIGZvdW5kLCB0b3BsZXZlbCwgc28gcGFyYW1ldGVyIGNvbWluZyB1cCFcblx0XHRcdFx0ZmluZFBhcmFtKCk7XG5cdFx0XHRcdGN1cnJlbnQgPSAnJztcblx0XHRcdH0gZWxzZSBpZiAoZXF1YWxzID09PSAtMSAmJiB0ZXh0LmNoYXJBdChpKSA9PT0gJz0nICYmIGxldmVsLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHQvLyBFcXVhbHMgZm91bmQsIHRvcGxldmVsXG5cdFx0XHRcdGVxdWFscyA9IGN1cnJlbnQubGVuZ3RoO1xuXHRcdFx0XHRjdXJyZW50ICs9IHRleHQuY2hhckF0KGkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSnVzdCBhZHZhbmNlIHRoZSBwb3NpdGlvblxuXHRcdFx0XHRjdXJyZW50ICs9IHRleHQuY2hhckF0KGkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9O1xuXHQvKipcblx0ICogQWRqdXN0IGFuZCBtYW5pcHVsYXRlIHRoZSB3aWtpdGV4dCBvZiBhIHBhZ2UuXG5cdCAqXG5cdCAqIEBjbGFzc1xuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMud2lraXRleHRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBXaWtpdGV4dCB0byBiZSBtYW5pcHVsYXRlZC5cblx0ICovXG5cdE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UgPSBmdW5jdGlvbiAodGV4dCkge1xuXHRcdHRoaXMudGV4dCA9IHRleHQ7XG5cdH07XG5cdE1vcmViaXRzLndpa2l0ZXh0LnBhZ2UucHJvdG90eXBlID0ge1xuXHRcdHRleHQ6ICcnLFxuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZXMgbGlua3MgdG8gYGxpbmtfdGFyZ2V0YCBmcm9tIHRoZSBwYWdlIHRleHQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gbGlua1RhcmdldFxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy53aWtpdGV4dC5wYWdlfVxuXHRcdCAqL1xuXHRcdHJlbW92ZUxpbmsobGlua1RhcmdldCkge1xuXHRcdFx0Y29uc3QgbXdUaXRsZSA9IG13LlRpdGxlLm5ld0Zyb21UZXh0KGxpbmtUYXJnZXQpO1xuXHRcdFx0Y29uc3QgbmFtZXNwYWNlSUQgPSBtd1RpdGxlLmdldE5hbWVzcGFjZUlkKCk7XG5cdFx0XHRjb25zdCB0aXRsZSA9IG13VGl0bGUuZ2V0TWFpblRleHQoKTtcblx0XHRcdGxldCBsaW5rUmVnZXhTdHJpbmcgPSAnJztcblx0XHRcdGlmIChuYW1lc3BhY2VJRCAhPT0gMCkge1xuXHRcdFx0XHRsaW5rUmVnZXhTdHJpbmcgPSBgJHtNb3JlYml0cy5uYW1lc3BhY2VSZWdleChuYW1lc3BhY2VJRCl9OmA7XG5cdFx0XHR9XG5cdFx0XHRsaW5rUmVnZXhTdHJpbmcgKz0gTW9yZWJpdHMucGFnZU5hbWVSZWdleCh0aXRsZSk7XG5cdFx0XHQvLyBGb3IgbW9zdCBuYW1lc3BhY2VzLCB1bmxpbmsgYm90aCBbW1VzZXI6VGVzdF1dIGFuZCBbWzpVc2VyOlRlc3RdXVxuXHRcdFx0Ly8gRm9yIGZpbGVzIGFuZCBjYXRlZ29yaWVzLCBvbmx5IHVubGluayBbWzpDYXRlZ29yeTpUZXN0XV0uIERvIG5vdCB1bmxpbmsgW1tDYXRlZ29yeTpUZXN0XV1cblx0XHRcdGNvbnN0IGlzRmlsZU9yQ2F0ZWdvcnkgPSBbNiwgMTRdLmluY2x1ZGVzKG5hbWVzcGFjZUlEKTtcblx0XHRcdGNvbnN0IGNvbG9uID0gaXNGaWxlT3JDYXRlZ29yeSA/ICc6JyA6ICc6Pyc7XG5cdFx0XHRjb25zdCBzaW1wbGVMaW5rUmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcW1xcXFxbJHtjb2xvbn0oJHtsaW5rUmVnZXhTdHJpbmd9KVxcXFxdXFxcXF1gLCAnZycpO1xuXHRcdFx0Y29uc3QgcGlwZWRMaW5rUmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcW1xcXFxbJHtjb2xvbn0ke2xpbmtSZWdleFN0cmluZ31cXFxcfCguKz8pXFxcXF1cXFxcXWAsICdnJyk7XG5cdFx0XHR0aGlzLnRleHQgPSB0aGlzLnRleHQucmVwbGFjZShzaW1wbGVMaW5rUmVnZXgsICckMScpLnJlcGxhY2UocGlwZWRMaW5rUmVnZXgsICckMScpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBDb21tZW50cyBvdXQgaW1hZ2VzIGZyb20gcGFnZSB0ZXh0OyBpZiB1c2VkIGluIGEgZ2FsbGVyeSwgZGVsZXRlcyB0aGUgd2hvbGUgbGluZS5cblx0XHQgKiBJZiB1c2VkIGFzIGEgdGVtcGxhdGUgYXJndW1lbnQgKG5vdCBuZWNlc3NhcmlseSB3aXRoIGBGaWxlOmAgcHJlZml4KSwgdGhlIHRlbXBsYXRlIHBhcmFtZXRlciBpcyBjb21tZW50ZWQgb3V0LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGltYWdlIC0gSW1hZ2UgbmFtZSB3aXRob3V0IGBGaWxlOmAgcHJlZml4LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIFJlYXNvbiB0byBiZSBpbmNsdWRlZCBpbiBjb21tZW50LCBhbG9uZ3NpZGUgdGhlIGNvbW1lbnRlZC1vdXQgaW1hZ2UuXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLndpa2l0ZXh0LnBhZ2V9XG5cdFx0ICovXG5cdFx0Y29tbWVudE91dEltYWdlKGltYWdlLCByZWFzb24pIHtcblx0XHRcdGNvbnN0IHVuYmluZGVyID0gbmV3IE1vcmViaXRzLnVuYmluZGVyKHRoaXMudGV4dCk7XG5cdFx0XHR1bmJpbmRlci51bmJpbmQoJzwhLS0nLCAnLS0+Jyk7XG5cdFx0XHRyZWFzb24gPSByZWFzb24gPyBgJHtyZWFzb259OiBgIDogJyc7XG5cdFx0XHRjb25zdCBpbWFnZVJlZ2V4U3RyaW5nID0gTW9yZWJpdHMucGFnZU5hbWVSZWdleChpbWFnZSk7XG5cdFx0XHQvLyBDaGVjayBmb3Igbm9ybWFsIGltYWdlIGxpbmtzLCBpLmUuIFtbRmlsZTpGb29iYXIucG5nfC4uLl1dXG5cdFx0XHQvLyBXaWxsIGVhdCB0aGUgd2hvbGUgbGlua1xuXHRcdFx0Y29uc3QgbGlua3NSZWdleCA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdGBcXFxcW1xcXFxbJHtNb3JlYml0cy5uYW1lc3BhY2VSZWdleCg2KX06XFxcXHMqJHtpbWFnZVJlZ2V4U3RyaW5nfVxcXFxzKltcXFxcfCg/OlxcXFxdXFxcXF0pXWBcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBhbGxMaW5rcyA9IE1vcmViaXRzLnN0cmluZy5zcGxpdFdlaWdodGVkQnlLZXlzKHVuYmluZGVyLmNvbnRlbnQsICdbWycsICddXScpO1xuXHRcdFx0Zm9yIChjb25zdCBhbGxMaW5rIG9mIGFsbExpbmtzKSB7XG5cdFx0XHRcdGlmIChsaW5rc1JlZ2V4LnRlc3QoYWxsTGluaykpIHtcblx0XHRcdFx0XHRjb25zdCByZXBsYWNlbWVudCA9IGA8IS0tICR7cmVhc29ufSR7YWxsTGlua30gLS0+YDtcblx0XHRcdFx0XHR1bmJpbmRlci5jb250ZW50ID0gdW5iaW5kZXIuY29udGVudC5yZXBsYWNlKGFsbExpbmssIHJlcGxhY2VtZW50KTtcblx0XHRcdFx0XHQvLyB1bmJpbmQgdGhlIG5ld2x5IGNyZWF0ZWQgY29tbWVudHNcblx0XHRcdFx0XHR1bmJpbmRlci51bmJpbmQoJzwhLS0nLCAnLS0+Jyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIENoZWNrIGZvciBnYWxsZXJ5IGltYWdlcywgaS5lLiBpbnN0YW5jZXMgdGhhdCBtdXN0IHN0YXJ0IG9uIGEgbmV3IGxpbmUsXG5cdFx0XHQvLyBldmVudHVhbGx5IHByZWNlZGVkIHdpdGggc29tZSBzcGFjZSwgYW5kIG11c3QgaW5jbHVkZSBGaWxlOiBwcmVmaXhcblx0XHRcdC8vIFdpbGwgZWF0IHRoZSB3aG9sZSBsaW5lLlxuXHRcdFx0Y29uc3QgZ2FsbGVyeUltYWdlUmVnZXggPSBuZXcgUmVnRXhwKFxuXHRcdFx0XHRgKF5cXFxccyoke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDYpfTpcXFxccyoke2ltYWdlUmVnZXhTdHJpbmd9XFxcXHMqKD86XFxcXHwuKj8kfCQpKWAsXG5cdFx0XHRcdCdtZydcblx0XHRcdCk7XG5cdFx0XHR1bmJpbmRlci5jb250ZW50ID0gdW5iaW5kZXIuY29udGVudC5yZXBsYWNlKGdhbGxlcnlJbWFnZVJlZ2V4LCBgPCEtLSAke3JlYXNvbn0kMSAtLT5gKTtcblx0XHRcdC8vIHVuYmluZCB0aGUgbmV3bHkgY3JlYXRlZCBjb21tZW50c1xuXHRcdFx0dW5iaW5kZXIudW5iaW5kKCc8IS0tJywgJy0tPicpO1xuXHRcdFx0Ly8gQ2hlY2sgZnJlZSBpbWFnZSB1c2FnZXMsIGZvciBleGFtcGxlIGFzIHRlbXBsYXRlIGFyZ3VtZW50cywgbWlnaHQgaGF2ZSB0aGUgRmlsZTogcHJlZml4IGV4Y2x1ZGVkLCBidXQgbXVzdCBiZSBwcmVjZWRlZCBieSBhbiB8XG5cdFx0XHQvLyBXaWxsIG9ubHkgZWF0IHRoZSBpbWFnZSBuYW1lIGFuZCB0aGUgcHJlY2VkaW5nIGJhciBhbmQgYW4gZXZlbnR1YWwgbmFtZWQgcGFyYW1ldGVyXG5cdFx0XHRjb25zdCBmcmVlSW1hZ2VSZWdleCA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdGAoXFxcXHxcXFxccyooPzpbXFxcXHdcXFxcc10rXFxcXD0pP1xcXFxzKig/OiR7TW9yZWJpdHMubmFtZXNwYWNlUmVnZXgoNil9OlxcXFxzKik/JHtpbWFnZVJlZ2V4U3RyaW5nfSlgLFxuXHRcdFx0XHQnbWcnXG5cdFx0XHQpO1xuXHRcdFx0dW5iaW5kZXIuY29udGVudCA9IHVuYmluZGVyLmNvbnRlbnQucmVwbGFjZShmcmVlSW1hZ2VSZWdleCwgYDwhLS0gJHtyZWFzb259JDEgLS0+YCk7XG5cdFx0XHQvLyBSZWJpbmQgdGhlIGNvbnRlbnQgbm93LCB3ZSBhcmUgZG9uZSFcblx0XHRcdHRoaXMudGV4dCA9IHVuYmluZGVyLnJlYmluZCgpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBDb252ZXJ0cyB1c2VzIG9mIFtbRmlsZTpgaW1hZ2VgXV0gdG8gW1tGaWxlOmBpbWFnZWB8YGRhdGFgXV0uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2UgLSBJbWFnZSBuYW1lIHdpdGhvdXQgRmlsZTogcHJlZml4LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIGRpc3BsYXkgb3B0aW9ucy5cblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMud2lraXRleHQucGFnZX1cblx0XHQgKi9cblx0XHRhZGRUb0ltYWdlQ29tbWVudChpbWFnZSwgZGF0YSkge1xuXHRcdFx0Y29uc3QgaW1hZ2VSZWdleFN0cmluZyA9IE1vcmViaXRzLnBhZ2VOYW1lUmVnZXgoaW1hZ2UpO1xuXHRcdFx0Y29uc3QgbGlua3NSZWdleCA9IG5ldyBSZWdFeHAoXG5cdFx0XHRcdGBcXFxcW1xcXFxbJHtNb3JlYml0cy5uYW1lc3BhY2VSZWdleCg2KX06XFxcXHMqJHtpbWFnZVJlZ2V4U3RyaW5nfVxcXFxzKltcXFxcfCg/OlxcXFxdXFxcXF0pXWBcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBhbGxMaW5rcyA9IE1vcmViaXRzLnN0cmluZy5zcGxpdFdlaWdodGVkQnlLZXlzKHRoaXMudGV4dCwgJ1tbJywgJ11dJyk7XG5cdFx0XHRmb3IgKGxldCByZXBsYWNlbWVudCBvZiBhbGxMaW5rcykge1xuXHRcdFx0XHRpZiAobGlua3NSZWdleC50ZXN0KHJlcGxhY2VtZW50KSkge1xuXHRcdFx0XHRcdC8vIGp1c3QgcHV0IGl0IGF0IHRoZSBlbmQ/XG5cdFx0XHRcdFx0cmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudC5yZXBsYWNlKC9cXF1cXF0kLywgYHwke2RhdGF9XV1gKTtcblx0XHRcdFx0XHR0aGlzLnRleHQgPSB0aGlzLnRleHQucmVwbGFjZShyZXBsYWNlbWVudCwgcmVwbGFjZW1lbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBnYWxsZXJ5UmVnZXggPSBuZXcgUmVnRXhwKGBeKFxcXFxzKiR7aW1hZ2VSZWdleFN0cmluZ30uKj8pXFxcXHw/KC4qPykkYCwgJ21nJyk7XG5cdFx0XHRjb25zdCBuZXd0ZXh0ID0gYCQxfCQyICR7ZGF0YX1gO1xuXHRcdFx0dGhpcy50ZXh0ID0gdGhpcy50ZXh0LnJlcGxhY2UoZ2FsbGVyeVJlZ2V4LCBuZXd0ZXh0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlIGFsbCB0cmFuc2NsdXNpb25zIG9mIGEgdGVtcGxhdGUgZnJvbSBwYWdlIHRleHQuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdGVtcGxhdGUgLSBQYWdlIG5hbWUgd2hvc2UgdHJhbnNjbHVzaW9ucyBhcmUgdG8gYmUgcmVtb3ZlZCxcblx0XHQgKiBpbmNsdWRlIG5hbWVzcGFjZSBwcmVmaXggb25seSBpZiBub3QgaW4gdGVtcGxhdGUgbmFtZXNwYWNlLlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy53aWtpdGV4dC5wYWdlfVxuXHRcdCAqL1xuXHRcdHJlbW92ZVRlbXBsYXRlKHRlbXBsYXRlKSB7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZVJlZ2V4U3RyaW5nID0gTW9yZWJpdHMucGFnZU5hbWVSZWdleCh0ZW1wbGF0ZSk7XG5cdFx0XHRjb25zdCBsaW5rc1JlZ2V4ID0gbmV3IFJlZ0V4cChcblx0XHRcdFx0YFxcXFx7XFxcXHsoPzoke01vcmViaXRzLm5hbWVzcGFjZVJlZ2V4KDEwKX06KT9cXFxccyoke3RlbXBsYXRlUmVnZXhTdHJpbmd9XFxcXHMqW1xcXFx8KD86XFxcXH1cXFxcfSldYFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGFsbFRlbXBsYXRlcyA9IE1vcmViaXRzLnN0cmluZy5zcGxpdFdlaWdodGVkQnlLZXlzKHRoaXMudGV4dCwgJ3t7JywgJ319JywgWyd7e3snLCAnfX19J10pO1xuXHRcdFx0Zm9yIChjb25zdCBhbGxUZW1wbGF0ZSBvZiBhbGxUZW1wbGF0ZXMpIHtcblx0XHRcdFx0aWYgKGxpbmtzUmVnZXgudGVzdChhbGxUZW1wbGF0ZSkpIHtcblx0XHRcdFx0XHR0aGlzLnRleHQgPSB0aGlzLnRleHQucmVwbGFjZShhbGxUZW1wbGF0ZSwgJycpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9LFxuXHRcdC8qKlxuXHRcdCAqIFNtYXJ0bHkgaW5zZXJ0IGEgdGFnIGF0b3AgcGFnZSB0ZXh0IGJ1dCBhZnRlciBzcGVjaWZpZWQgdGVtcGxhdGVzLFxuXHRcdCAqIHN1Y2ggYXMgaGF0bm90ZXMsIHNob3J0IGRlc2NyaXB0aW9uLCBvciBkZWxldGlvbiBhbmQgcHJvdGVjdGlvbiB0ZW1wbGF0ZXMuXG5cdFx0ICogTm90YWJseSwgZG9lcyAqbm90KiBpbnNlcnQgYSBuZXdsaW5lIGFmdGVyIHRoZSB0YWcuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZyB0byBiZSBpbnNlcnRlZC5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gcmVnZXggLSBUZW1wbGF0ZXMgYWZ0ZXIgd2hpY2ggdG8gaW5zZXJ0IHRhZyxcblx0XHQgKiBnaXZlbiBhcyBlaXRoZXIgYXMgYSAocmVnZXgtdmFsaWQpIHN0cmluZyBvciBhbiBhcnJheSB0byBiZSBqb2luZWQgYnkgcGlwZXMuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IFtmbGFncz1pXSAtIFJlZ2V4IGZsYWdzIHRvIGFwcGx5LiAgYCcnYCB0byBwcm92aWRlIG5vIGZsYWdzO1xuXHRcdCAqIG90aGVyIGZhbHNleSB2YWx1ZXMgd2lsbCBkZWZhdWx0IHRvIGBpYC5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3ByZVJlZ2V4XSAtIE9wdGlvbmFsIHJlZ2V4IHN0cmluZyBvciBhcnJheSB0byBtYXRjaFxuXHRcdCAqIGJlZm9yZSBhbnkgdGVtcGxhdGUgbWF0Y2hlcyAoaS5lLiBiZWZvcmUgYHt7YCksIHN1Y2ggYXMgaHRtbCBjb21tZW50cy5cblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMud2lraXRleHQucGFnZX1cblx0XHQgKi9cblx0XHRpbnNlcnRBZnRlclRlbXBsYXRlcyh0YWcsIHJlZ2V4LCBmbGFncywgcHJlUmVnZXgpIHtcblx0XHRcdGlmICh0YWcgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdObyB0YWcgcHJvdmlkZWQnKTtcblx0XHRcdH1cblx0XHRcdC8vIC5sZW5ndGggaXMgb25seSBhIHByb3BlcnR5IG9mIHN0cmluZ3MgYW5kIGFycmF5cyBzbyB3ZVxuXHRcdFx0Ly8gc2hvdWxkbid0IG5lZWQgdG8gY2hlY2sgdHlwZVxuXHRcdFx0aWYgKHJlZ2V4ID09PSB1bmRlZmluZWQgfHwgIXJlZ2V4Lmxlbmd0aCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIHJlZ2V4IHByb3ZpZGVkJyk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVnZXgpKSB7XG5cdFx0XHRcdHJlZ2V4ID0gcmVnZXguam9pbignfCcpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiBmbGFncyAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0ZmxhZ3MgPSAnaSc7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXByZVJlZ2V4IHx8ICFwcmVSZWdleC5sZW5ndGgpIHtcblx0XHRcdFx0cHJlUmVnZXggPSAnJztcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwcmVSZWdleCkpIHtcblx0XHRcdFx0cHJlUmVnZXggPSBwcmVSZWdleC5qb2luKCd8Jyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBSZWdleCBpcyBleHRyYSBjb21wbGljYXRlZCB0byBhbGxvdyBmb3IgdGVtcGxhdGVzIHdpdGhcblx0XHRcdC8vIHBhcmFtZXRlcnMgYW5kIHRvIGhhbmRsZSB3aGl0ZXNwYWNlIHByb3Blcmx5XG5cdFx0XHR0aGlzLnRleHQgPSB0aGlzLnRleHQucmVwbGFjZShcblx0XHRcdFx0bmV3IFJlZ0V4cChcblx0XHRcdFx0XHQvLyBsZWFkaW5nIHdoaXRlc3BhY2Vcblx0XHRcdFx0XHQvLyBjYXB0dXJlIHRlbXBsYXRlKHMpXG5cdFx0XHRcdFx0Ly8gUHJlLXRlbXBsYXRlIHJlZ2V4LCBzdWNoIGFzIGxlYWRpbmcgaHRtbCBjb21tZW50c1xuXHRcdFx0XHRcdC8vIGJlZ2luIHRlbXBsYXRlIGZvcm1hdFxuXHRcdFx0XHRcdC8vIFRlbXBsYXRlIHJlZ2V4XG5cdFx0XHRcdFx0Ly8gZW5kIG1haW4gdGVtcGxhdGUgbmFtZSwgb3B0aW9uYWxseSB3aXRoIGEgbnVtYmVyXG5cdFx0XHRcdFx0Ly8gUHJvYmFibHkgcmVtb3ZlIHRoZSAoPzopIHRob3VnaFxuXHRcdFx0XHRcdC8vIHRlbXBsYXRlIHBhcmFtZXRlcnNcblx0XHRcdFx0XHQvLyBlbmQgdGVtcGxhdGUgZm9ybWF0XG5cdFx0XHRcdFx0Ly8gZW5kIGNhcHR1cmVcblx0XHRcdFx0XHQvLyB0cmFpbGluZyB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0YF5cXFxccyooPzooKD86XFxcXHMqJHtcblx0XHRcdFx0XHRcdC8vIFByZS10ZW1wbGF0ZSByZWdleCwgc3VjaCBhcyBsZWFkaW5nIGh0bWwgY29tbWVudHNcblx0XHRcdFx0XHRcdHByZVJlZ2V4XG5cdFx0XHRcdFx0fXxcXFxce1xcXFx7XFxcXHMqKD86JHtcblx0XHRcdFx0XHRcdC8vIFRlbXBsYXRlIHJlZ2V4XG5cdFx0XHRcdFx0XHRyZWdleFxuXHRcdFx0XHRcdH0pXFxcXGQqXFxcXHMqKFxcXFx8KD86XFxcXHtcXFxce1tee31dKlxcXFx9XFxcXH18W157fV0pKik/XFxcXH1cXFxcfSkrKD86XFxcXHMqXFxcXG4pPylcXFxccyopP2AsXG5cdFx0XHRcdFx0ZmxhZ3Ncblx0XHRcdFx0KSxcblx0XHRcdFx0YCQxJHt0YWd9YFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogR2V0IHRoZSBtYW5pcHVsYXRlZCB3aWtpdGV4dC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdFx0ICovXG5cdFx0Z2V0VGV4dCgpIHtcblx0XHRcdHJldHVybiB0aGlzLnRleHQ7XG5cdFx0fSxcblx0fTtcblx0LyogKioqKioqKioqKiogTW9yZWJpdHMudXNlcnNwYWNlTG9nZ2VyICoqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogSGFuZGxlcyBsb2dnaW5nIGFjdGlvbnMgdG8gYSB1c2Vyc3BhY2UgbG9nLlxuXHQgKiBVc2VkIGluIENTRCwgUFJPRCwgYW5kIFhGRC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzXG5cdCAqIEBjbGFzc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gbG9nUGFnZU5hbWUgLSBUaXRsZSBvZiB0aGUgc3VicGFnZSBvZiB0aGUgY3VycmVudCB1c2VyJ3MgbG9nLlxuXHQgKi9cblx0TW9yZWJpdHMudXNlcnNwYWNlTG9nZ2VyID0gZnVuY3Rpb24gKGxvZ1BhZ2VOYW1lKSB7XG5cdFx0aWYgKCFsb2dQYWdlTmFtZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdubyBsb2cgcGFnZSBuYW1lIHNwZWNpZmllZCcpO1xuXHRcdH1cblx0XHQvKipcblx0XHQgKiBUaGUgdGV4dCB0byBwcmVmaXggdGhlIGxvZyB3aXRoIHVwb24gY3JlYXRpb24sIGRlZmF1bHRzIHRvIGVtcHR5LlxuXHRcdCAqXG5cdFx0ICogQHR5cGUge3N0cmluZ31cblx0XHQgKi9cblx0XHR0aGlzLmluaXRpYWxUZXh0ID0gJyc7XG5cdFx0LyoqXG5cdFx0ICogVGhlIGhlYWRlciBsZXZlbCB0byB1c2UgZm9yIG1vbnRocywgZGVmYXVsdHMgdG8gMyAoYD09PWApLlxuXHRcdCAqXG5cdFx0ICogQHR5cGUge251bWJlcn1cblx0XHQgKi9cblx0XHR0aGlzLmhlYWRlckxldmVsID0gMztcblx0XHR0aGlzLmNoYW5nZVRhZ3MgPSAnJztcblx0XHQvKipcblx0XHQgKiBMb2cgdGhlIGVudHJ5LlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGxvZ1RleHQgLSBEb2Vzbid0IGluY2x1ZGUgbGVhZGluZyBgI2Agb3IgYCpgLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdW1tYXJ5VGV4dCAtIEVkaXQgc3VtbWFyeS5cblx0XHQgKiBAcmV0dXJucyB7SlF1ZXJ5LlByb21pc2V9XG5cdFx0ICovXG5cdFx0dGhpcy5sb2cgPSBmdW5jdGlvbiAobG9nVGV4dCwgc3VtbWFyeVRleHQpIHtcblx0XHRcdGNvbnN0IGRlZiA9ICQuRGVmZXJyZWQoKTtcblx0XHRcdGlmICghbG9nVGV4dCkge1xuXHRcdFx0XHRyZXR1cm4gZGVmLnJlamVjdCgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcGFnZSA9IG5ldyBNb3JlYml0cy53aWtpLnBhZ2UoXG5cdFx0XHRcdGBVc2VyOiR7bXcuY29uZmlnLmdldCgnd2dVc2VyTmFtZScpfS8ke2xvZ1BhZ2VOYW1lfWAsXG5cdFx0XHRcdHdpbmRvdy53Z1VMUygn5bCG6aG555uu5Yqg5YWl5Yiw55So5oi356m66Ze05pel5b+XJywgJ+Wwh+mgheebruWKoOWFpeWIsOS9v+eUqOiAheepuumWk+aXpeiqjCcpXG5cdFx0XHQpOyAvLyBtYWtlIHRoaXMgJy4uLiB0byAnICsgbG9nUGFnZU5hbWUgP1xuXHRcdFx0cGFnZS5sb2FkKChwYWdlb2JqKSA9PiB7XG5cdFx0XHRcdC8vIGFkZCBibHVyYiBpZiBsb2cgcGFnZSBkb2Vzbid0IGV4aXN0IG9yIGlzIGJsYW5rXG5cdFx0XHRcdGxldCB0ZXh0ID0gcGFnZW9iai5nZXRQYWdlVGV4dCgpIHx8IHRoaXMuaW5pdGlhbFRleHQ7XG5cdFx0XHRcdC8vIGNyZWF0ZSBtb250aGx5IGhlYWRlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFscmVhZHlcblx0XHRcdFx0Y29uc3QgZGF0ZSA9IG5ldyBNb3JlYml0cy5kYXRlKHBhZ2VvYmouZ2V0TG9hZFRpbWUoKSk7XG5cdFx0XHRcdGlmICghZGF0ZS5tb250aEhlYWRlclJlZ2V4KCkuZXhlYyh0ZXh0KSkge1xuXHRcdFx0XHRcdHRleHQgKz0gYFxcblxcbiR7ZGF0ZS5tb250aEhlYWRlcih0aGlzLmhlYWRlckxldmVsKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhZ2VvYmouc2V0UGFnZVRleHQoYCR7dGV4dH1cXG4ke2xvZ1RleHR9YCk7XG5cdFx0XHRcdHBhZ2VvYmouc2V0RWRpdFN1bW1hcnkoc3VtbWFyeVRleHQpO1xuXHRcdFx0XHRwYWdlb2JqLnNldENoYW5nZVRhZ3ModGhpcy5jaGFuZ2VUYWdzKTtcblx0XHRcdFx0cGFnZW9iai5zZXRDcmVhdGVPcHRpb24oJ3JlY3JlYXRlJyk7XG5cdFx0XHRcdHBhZ2VvYmouc2F2ZShkZWYucmVzb2x2ZSwgZGVmLnJlamVjdCk7XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBkZWY7XG5cdFx0fTtcblx0fTtcblx0LyogKioqKioqKioqKioqKioqKiBNb3JlYml0cy5zdGF0dXMgKioqKioqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogQ3JlYXRlIGFuZCBzaG93IHN0YXR1cyBtZXNzYWdlcyBvZiB2YXJ5aW5nIHVyZ2VuY3kuXG5cdCAqIHtAbGluayBNb3JlYml0cy5zdGF0dXMuaW5pdHxNb3JlYml0cy5zdGF0dXMuaW5pdCgpfSBtdXN0IGJlIGNhbGxlZCBiZWZvcmVcblx0ICogYW55IHN0YXR1cyBvYmplY3QgaXMgY3JlYXRlZCwgb3RoZXJ3aXNlIHRob3NlIHN0YXR1c2VzIHdvbid0IGJlIHZpc2libGUuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKiBAY2xhc3Ncblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUZXh0IGJlZm9yZSB0aGUgdGhlIGNvbG9uIGA6YC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0YXQgLSBUZXh0IGFmdGVyIHRoZSBjb2xvbiBgOmAuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZT1zdGF0dXNdIC0gRGV0ZXJtaW5lIHRoZSBmb250IGNvbG9yIG9mIHRoZSBzdGF0dXNcblx0ICogbGluZSwgYWxsb3dhYmxlIHZhbHVlcyBhcmU6IGBzdGF0dXNgIChibHVlKSwgYGluZm9gIChncmVlbiksIGB3YXJuYCAocmVkKSxcblx0ICogb3IgYGVycm9yYCAoYm9sZCByZWQpLlxuXHQgKi9cblx0TW9yZWJpdHMuc3RhdHVzID0gZnVuY3Rpb24gKHRleHQsIHN0YXQsIHR5cGUpIHtcblx0XHR0aGlzLnRleHRSYXcgPSB0ZXh0O1xuXHRcdHRoaXMudGV4dCA9IE1vcmViaXRzLmNyZWF0ZUh0bWwodGV4dCk7XG5cdFx0dGhpcy50eXBlID0gdHlwZSB8fCAnc3RhdHVzJztcblx0XHR0aGlzLmdlbmVyYXRlKCk7XG5cdFx0aWYgKHN0YXQpIHtcblx0XHRcdHRoaXMudXBkYXRlKHN0YXQsIHR5cGUpO1xuXHRcdH1cblx0fTtcblx0LyoqXG5cdCAqIFNwZWNpZnkgYW4gYXJlYSBmb3Igc3RhdHVzIG1lc3NhZ2UgZWxlbWVudHMgdG8gYmUgYWRkZWQgdG8uXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcm9vdCAtIFVzdWFsbHkgYSBkaXYgZWxlbWVudC5cblx0ICogQHRocm93cyBJZiBgcm9vdGAgaXMgbm90IGFuIGBIVE1MRWxlbWVudGAuXG5cdCAqL1xuXHRNb3JlYml0cy5zdGF0dXMuaW5pdCA9IChyb290KSA9PiB7XG5cdFx0aWYgKCEocm9vdCBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdvYmplY3Qgbm90IGFuIGluc3RhbmNlIG9mIEVsZW1lbnQnKTtcblx0XHR9XG5cdFx0d2hpbGUgKHJvb3QuaGFzQ2hpbGROb2RlcygpKSB7XG5cdFx0XHRyb290LnJlbW92ZUNoaWxkKHJvb3QuZmlyc3RDaGlsZCk7XG5cdFx0fVxuXHRcdE1vcmViaXRzLnN0YXR1cy5yb290ID0gcm9vdDtcblx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3JFdmVudCA9IG51bGw7XG5cdH07XG5cdE1vcmViaXRzLnN0YXR1cy5yb290ID0gbnVsbDtcblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZXJyb3IuXG5cdCAqIEB0aHJvd3MgV2hlbiBgaGFuZGxlcmAgaXMgbm90IGEgZnVuY3Rpb24uXG5cdCAqL1xuXHRNb3JlYml0cy5zdGF0dXMub25FcnJvciA9IChoYW5kbGVyKSA9PiB7XG5cdFx0aWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3JFdmVudCA9IGhhbmRsZXI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ01vcmViaXRzLnN0YXR1cy5vbkVycm9yOiBoYW5kbGVyIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXHR9O1xuXHRNb3JlYml0cy5zdGF0dXMucHJvdG90eXBlID0ge1xuXHRcdHN0YXQ6IG51bGwsXG5cdFx0c3RhdFJhdzogbnVsbCxcblx0XHR0ZXh0OiBudWxsLFxuXHRcdHRleHRSYXc6IG51bGwsXG5cdFx0dHlwZTogJ3N0YXR1cycsXG5cdFx0dGFyZ2V0OiBudWxsLFxuXHRcdG5vZGU6IG51bGwsXG5cdFx0bGlua2VkOiBmYWxzZSxcblx0XHQvKiogQWRkIHRoZSBzdGF0dXMgZWxlbWVudCBub2RlIHRvIHRoZSBET00uICovXG5cdFx0bGluaygpIHtcblx0XHRcdGlmICghdGhpcy5saW5rZWQgJiYgTW9yZWJpdHMuc3RhdHVzLnJvb3QpIHtcblx0XHRcdFx0TW9yZWJpdHMuc3RhdHVzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKTtcblx0XHRcdFx0dGhpcy5saW5rZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0LyoqIFJlbW92ZSB0aGUgc3RhdHVzIGVsZW1lbnQgbm9kZSBmcm9tIHRoZSBET00uICovXG5cdFx0dW5saW5rKCkge1xuXHRcdFx0aWYgKHRoaXMubGlua2VkKSB7XG5cdFx0XHRcdE1vcmViaXRzLnN0YXR1cy5yb290LnJlbW92ZUNoaWxkKHRoaXMubm9kZSk7XG5cdFx0XHRcdHRoaXMubGlua2VkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBVcGRhdGUgdGhlIHN0YXR1cy5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXMgLSBQYXJ0IG9mIHN0YXR1cyBtZXNzYWdlIGFmdGVyIGNvbG9uLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIC0gJ3N0YXR1cycgKGJsdWUpLCAnaW5mbycgKGdyZWVuKSwgJ3dhcm4nXG5cdFx0ICogKHJlZCksIG9yICdlcnJvcicgKGJvbGQgcmVkKS5cblx0XHQgKi9cblx0XHR1cGRhdGUoc3RhdHVzLCB0eXBlKSB7XG5cdFx0XHR0aGlzLnN0YXRSYXcgPSBzdGF0dXM7XG5cdFx0XHR0aGlzLnN0YXQgPSBNb3JlYml0cy5jcmVhdGVIdG1sKHN0YXR1cyk7XG5cdFx0XHRpZiAodHlwZSkge1xuXHRcdFx0XHR0aGlzLnR5cGUgPSB0eXBlO1xuXHRcdFx0XHRpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuXHRcdFx0XHRcdC8vIGhhY2sgdG8gZm9yY2UgdGhlIHBhZ2Ugbm90IHRvIHJlbG9hZCB3aGVuIGFuIGVycm9yIGlzIG91dHB1dCAtIHNlZSBhbHNvIE1vcmViaXRzLnN0YXR1cygpIGFib3ZlXG5cdFx0XHRcdFx0TW9yZWJpdHMud2lraS5udW1iZXJPZkFjdGlvbnNMZWZ0ID0gMTAwMDtcblx0XHRcdFx0XHQvLyBjYWxsIGVycm9yIGNhbGxiYWNrXG5cdFx0XHRcdFx0aWYgKE1vcmViaXRzLnN0YXR1cy5lcnJvckV2ZW50KSB7XG5cdFx0XHRcdFx0XHRNb3JlYml0cy5zdGF0dXMuZXJyb3JFdmVudCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBhbHNvIGxvZyBlcnJvciBtZXNzYWdlcyBpbiB0aGUgYnJvd3NlciBjb25zb2xlXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihgW01vcmViaXRzXSAke3RoaXMudGV4dFJhd306ICR7dGhpcy5zdGF0UmF3fWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnJlbmRlcigpO1xuXHRcdH0sXG5cdFx0LyoqIFByb2R1Y2UgdGhlIGh0bWwgZm9yIGZpcnN0IHBhcnQgb2YgdGhlIHN0YXR1cyBtZXNzYWdlLiAqL1xuXHRcdGdlbmVyYXRlKCkge1xuXHRcdFx0dGhpcy5ub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHR0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKS5hcHBlbmRDaGlsZCh0aGlzLnRleHQpO1xuXHRcdFx0dGhpcy5ub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJzogJykpO1xuXHRcdFx0dGhpcy50YXJnZXQgPSB0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtcblx0XHRcdHRoaXMudGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSk7IC8vIGR1bW15IG5vZGVcblx0XHR9LFxuXG5cdFx0LyoqIENvbXBsZXRlIHRoZSBodG1sLCBmb3IgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBzdGF0dXMgbWVzc2FnZS4gKi9cblx0XHRyZW5kZXIoKSB7XG5cdFx0XHR0aGlzLm5vZGUuY2xhc3NOYW1lID0gYG1vcmViaXRzX3N0YXR1c18ke3RoaXMudHlwZX1gO1xuXHRcdFx0d2hpbGUgKHRoaXMudGFyZ2V0Lmhhc0NoaWxkTm9kZXMoKSkge1xuXHRcdFx0XHR0aGlzLnRhcmdldC5yZW1vdmVDaGlsZCh0aGlzLnRhcmdldC5maXJzdENoaWxkKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudGFyZ2V0LmFwcGVuZENoaWxkKHRoaXMuc3RhdCk7XG5cdFx0XHR0aGlzLmxpbmsoKTtcblx0XHR9LFxuXHRcdHN0YXR1cyhzdGF0dXMpIHtcblx0XHRcdHRoaXMudXBkYXRlKHN0YXR1cywgJ3N0YXR1cycpO1xuXHRcdH0sXG5cdFx0aW5mbyhzdGF0dXMpIHtcblx0XHRcdHRoaXMudXBkYXRlKHN0YXR1cywgJ2luZm8nKTtcblx0XHR9LFxuXHRcdHdhcm4oc3RhdHVzKSB7XG5cdFx0XHR0aGlzLnVwZGF0ZShzdGF0dXMsICd3YXJuJyk7XG5cdFx0fSxcblx0XHRlcnJvcihzdGF0dXMpIHtcblx0XHRcdHRoaXMudXBkYXRlKHN0YXR1cywgJ2Vycm9yJyk7XG5cdFx0fSxcblx0fTtcblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBCZWZvcmUgY29sb25cblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0YXR1cyAtIEFmdGVyIGNvbG9uXG5cdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zdGF0dXN9IC0gYHN0YXR1c2AtdHlwZSAoYmx1ZSlcblx0ICovXG5cdE1vcmViaXRzLnN0YXR1cy5zdGF0dXMgPSAodGV4dCwgc3RhdHVzKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb3JlYml0cy5zdGF0dXModGV4dCwgc3RhdHVzKTtcblx0fTtcblx0LyoqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBCZWZvcmUgY29sb25cblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0YXR1cyAtIEFmdGVyIGNvbG9uXG5cdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zdGF0dXN9IC0gYGluZm9gLXR5cGUgKGdyZWVuKVxuXHQgKi9cblx0TW9yZWJpdHMuc3RhdHVzLmluZm8gPSAodGV4dCwgc3RhdHVzKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb3JlYml0cy5zdGF0dXModGV4dCwgc3RhdHVzLCAnaW5mbycpO1xuXHR9O1xuXHQvKipcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnN0YXR1c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIEJlZm9yZSBjb2xvblxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gQWZ0ZXIgY29sb25cblx0ICogQHJldHVybnMge01vcmViaXRzLnN0YXR1c30gLSBgd2FybmAtdHlwZSAocmVkKVxuXHQgKi9cblx0TW9yZWJpdHMuc3RhdHVzLndhcm4gPSAodGV4dCwgc3RhdHVzKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb3JlYml0cy5zdGF0dXModGV4dCwgc3RhdHVzLCAnd2FybicpO1xuXHR9O1xuXHQvKipcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnN0YXR1c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIEJlZm9yZSBjb2xvblxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gQWZ0ZXIgY29sb25cblx0ICogQHJldHVybnMge01vcmViaXRzLnN0YXR1c30gLSBgZXJyb3JgLXR5cGUgKGJvbGQgcmVkKVxuXHQgKi9cblx0TW9yZWJpdHMuc3RhdHVzLmVycm9yID0gKHRleHQsIHN0YXR1cykgPT4ge1xuXHRcdHJldHVybiBuZXcgTW9yZWJpdHMuc3RhdHVzKHRleHQsIHN0YXR1cywgJ2Vycm9yJyk7XG5cdH07XG5cdC8qKlxuXHQgKiBGb3IgdGhlIGFjdGlvbiBjb21wbGV0ZSBtZXNzYWdlIGF0IHRoZSBlbmQsIGNyZWF0ZSBhIHN0YXR1cyBsaW5lIHdpdGhvdXRcblx0ICogYSBjb2xvbiBzZXBhcmF0b3IuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0cy5zdGF0dXNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRcblx0ICovXG5cdE1vcmViaXRzLnN0YXR1cy5hY3Rpb25Db21wbGV0ZWQgPSAodGV4dCkgPT4ge1xuXHRcdGNvbnN0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKSkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuXHRcdG5vZGUuY2xhc3NOYW1lID0gJ21vcmViaXRzX3N0YXR1c19pbmZvIG1vcmViaXRzX2FjdGlvbl9jb21wbGV0ZSc7XG5cdFx0aWYgKE1vcmViaXRzLnN0YXR1cy5yb290KSB7XG5cdFx0XHRNb3JlYml0cy5zdGF0dXMucm9vdC5hcHBlbmRDaGlsZChub2RlKTtcblx0XHR9XG5cdH07XG5cdC8qKlxuXHQgKiBEaXNwbGF5IHRoZSB1c2VyJ3MgcmF0aW9uYWxlLCBjb21tZW50cywgZXRjLiBCYWNrIHRvIHRoZW0gYWZ0ZXIgYSBmYWlsdXJlLFxuXHQgKiBzbyB0aGF0IHRoZXkgbWF5IHJlLXVzZSBpdC5cblx0ICpcblx0ICogQG1lbWJlcm9mIE1vcmViaXRzLnN0YXR1c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gY29tbWVudHNcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2Vcblx0ICovXG5cdE1vcmViaXRzLnN0YXR1cy5wcmludFVzZXJUZXh0ID0gKGNvbW1lbnRzLCBtZXNzYWdlKSA9PiB7XG5cdFx0Y29uc3QgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcblx0XHRwLmlubmVySFRNTCA9IG1lc3NhZ2U7XG5cdFx0Y29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0ZGl2LmNsYXNzTmFtZSA9ICdtb3JlYml0cy11c2VydGV4dCc7XG5cdFx0ZGl2LnN0eWxlLm1hcmdpblRvcCA9ICcwJztcblx0XHRkaXYuc3R5bGUud2hpdGVTcGFjZSA9ICdwcmUtd3JhcCc7XG5cdFx0ZGl2LnRleHRDb250ZW50ID0gY29tbWVudHM7XG5cdFx0cC5hcHBlbmRDaGlsZChkaXYpO1xuXHRcdE1vcmViaXRzLnN0YXR1cy5yb290LmFwcGVuZENoaWxkKHApO1xuXHR9O1xuXHQvKipcblx0ICogU2ltcGxlIGhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBzaW1wbGUgbm9kZS5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBUeXBlIG9mIEhUTUwgZWxlbWVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgLSBUZXh0IGNvbnRlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbY29sb3JdIC0gRm9udCBjb2xvci5cblx0ICogQHJldHVybnMge0hUTUxFbGVtZW50fVxuXHQgKi9cblx0TW9yZWJpdHMuaHRtbE5vZGUgPSAodHlwZSwgY29udGVudCwgY29sb3IpID0+IHtcblx0XHRjb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0eXBlKTtcblx0XHRpZiAoY29sb3IpIHtcblx0XHRcdG5vZGUuc3R5bGUuY29sb3IgPSBjb2xvcjtcblx0XHR9XG5cdFx0bm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7XG5cdFx0cmV0dXJuIG5vZGU7XG5cdH07XG5cdC8qKlxuXHQgKiBBZGQgc2hpZnQtY2xpY2sgc3VwcG9ydCBmb3IgY2hlY2tib3hlcy4gVGhlIHdpa2liaXRzIHZlcnNpb25cblx0ICogKGB3aW5kb3cuYWRkQ2hlY2tib3hDbGlja0hhbmRsZXJzYCkgaGFzIHNvbWUgcmVzdHJpY3Rpb25zLCBhbmQgZG9lc24ndCB3b3JrXG5cdCAqIHdpdGggY2hlY2tib3hlcyBpbnNpZGUgYSBzb3J0YWJsZSB0YWJsZSwgc28gbGV0J3MgYnVpbGQgb3VyIG93bi5cblx0ICpcblx0ICogQHBhcmFtIGpRdWVyeVNlbGVjdG9yXG5cdCAqIEBwYXJhbSBqUXVlcnlDb250ZXh0XG5cdCAqL1xuXHRNb3JlYml0cy5jaGVja2JveFNoaWZ0Q2xpY2tTdXBwb3J0ID0gKGpRdWVyeVNlbGVjdG9yLCBqUXVlcnlDb250ZXh0KSA9PiB7XG5cdFx0bGV0IGxhc3RDaGVja2JveCA9IG51bGw7XG5cdFx0Y29uc3QgY2xpY2tIYW5kbGVyID0gZnVuY3Rpb24gY2xpY2tIYW5kbGVyKGV2ZW50KSB7XG5cdFx0XHRjb25zdCB0aGlzQ2IgPSB0aGlzO1xuXHRcdFx0aWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGxhc3RDaGVja2JveCAhPT0gbnVsbCkge1xuXHRcdFx0XHRjb25zdCBjYnMgPSAkKGpRdWVyeVNlbGVjdG9yLCBqUXVlcnlDb250ZXh0KTsgLy8gY2FuJ3QgY2FjaGUgdGhlbSwgb2J2aW91c2x5LCBpZiB3ZSB3YW50IHRvIHN1cHBvcnQgcmVzb3J0aW5nXG5cdFx0XHRcdGxldCBpbmRleCA9IC0xO1xuXHRcdFx0XHRsZXQgbGFzdEluZGV4ID0gLTE7XG5cdFx0XHRcdGxldCBpO1xuXHRcdFx0XHRmb3IgKGkgPSAwOyBpIDwgY2JzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKGNic1tpXSA9PT0gdGhpc0NiKSB7XG5cdFx0XHRcdFx0XHRpbmRleCA9IGk7XG5cdFx0XHRcdFx0XHRpZiAobGFzdEluZGV4ID4gLTEpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChjYnNbaV0gPT09IGxhc3RDaGVja2JveCkge1xuXHRcdFx0XHRcdFx0bGFzdEluZGV4ID0gaTtcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+IC0xKSB7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaW5kZXggPiAtMSAmJiBsYXN0SW5kZXggPiAtMSkge1xuXHRcdFx0XHRcdC8vIGluc3BpcmVkIGJ5IHdpa2liaXRzXG5cdFx0XHRcdFx0Y29uc3QgZW5kU3RhdGUgPSB0aGlzQ2IuY2hlY2tlZDtcblx0XHRcdFx0XHRsZXQgc3RhcnQ7XG5cdFx0XHRcdFx0bGV0IGZpbmlzaDtcblx0XHRcdFx0XHRpZiAoaW5kZXggPCBsYXN0SW5kZXgpIHtcblx0XHRcdFx0XHRcdHN0YXJ0ID0gaW5kZXggKyAxO1xuXHRcdFx0XHRcdFx0ZmluaXNoID0gbGFzdEluZGV4O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdGFydCA9IGxhc3RJbmRleDtcblx0XHRcdFx0XHRcdGZpbmlzaCA9IGluZGV4IC0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yIChpID0gc3RhcnQ7IGkgPD0gZmluaXNoOyBpKyspIHtcblx0XHRcdFx0XHRcdGlmIChjYnNbaV0uY2hlY2tlZCAhPT0gZW5kU3RhdGUpIHtcblx0XHRcdFx0XHRcdFx0Y2JzW2ldLmNsaWNrKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRsYXN0Q2hlY2tib3ggPSB0aGlzQ2I7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9O1xuXHRcdCQoalF1ZXJ5U2VsZWN0b3IsIGpRdWVyeUNvbnRleHQpLm9uKCdjbGljaycsIGNsaWNrSGFuZGxlcik7XG5cdH07XG5cdC8qICoqKioqKioqKioqKioqKiogTW9yZWJpdHMuYmF0Y2hPcGVyYXRpb24gKioqKioqKioqKioqKioqKiAqL1xuXHQvKipcblx0ICogSXRlcmF0ZXMgb3ZlciBhIGdyb3VwIG9mIHBhZ2VzIChvciBhcmJpdHJhcnkgb2JqZWN0cykgYW5kIGV4ZWN1dGVzIGEgd29ya2VyIGZ1bmN0aW9uXG5cdCAqIGZvciBlYWNoLlxuXHQgKlxuXHQgKiBgc2V0UGFnZUxpc3QocGFnZUxpc3QpYDogU2V0cyB0aGUgbGlzdCBvZiBwYWdlcyB0byB3b3JrIG9uLiBJdCBzaG91bGQgYmUgYW5cblx0ICogYXJyYXkgb2YgcGFnZSBuYW1lcyBzdHJpbmdzLlxuXHQgKlxuXHQgKiBgc2V0T3B0aW9uKG9wdGlvbk5hbWUsIG9wdGlvblZhbHVlKWA6IFNldHMgYSBrbm93biBvcHRpb246XG5cdCAqIC0gYGNodW5rU2l6ZWAgKGludGVnZXIpOiBUaGUgc2l6ZSBvZiBjaHVua3MgdG8gYnJlYWsgdGhlIGFycmF5IGludG8gKGRlZmF1bHRcblx0ICogNTApLiBTZXR0aW5nIHRoaXMgdG8gYSBzbWFsbCB2YWx1ZSAoPDUpIGNhbiBjYXVzZSBwcm9ibGVtcy5cblx0ICogLSBgcHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXNgIChib29sZWFuKTogS2VlcCBlYWNoIHBhZ2UncyBzdGF0dXMgZWxlbWVudFxuXHQgKiB2aXNpYmxlIHdoZW4gd29ya2VyIGlzIGNvbXBsZXRlPyBTZWUgbm90ZSBiZWxvdy5cblx0ICpcblx0ICogYHJ1bih3b3JrZXIsIHBvc3RGaW5pc2gpYDogUnVucyB0aGUgY2FsbGJhY2sgYHdvcmtlcmAgZm9yIGVhY2ggcGFnZSBpbiB0aGVcblx0ICogbGlzdC4gIFRoZSBjYWxsYmFjayBtdXN0IGNhbGwgYHdvcmtlclN1Y2Nlc3NgIHdoZW4gc3VjY2VlZGluZywgb3Jcblx0ICogYHdvcmtlckZhaWx1cmVgIHdoZW4gZmFpbGluZy4gIElmIHVzaW5nIHtAbGluayBNb3JlYml0cy53aWtpLmFwaX0gb3Jcblx0ICoge0BsaW5rIE1vcmViaXRzLndpa2kucGFnZX0sIHRoaXMgaXMgZWFzaWx5IGRvbmUgYnkgcGFzc2luZyB0aGVzZSB0d29cblx0ICogZnVuY3Rpb25zIGFzIHBhcmFtZXRlcnMgdG8gdGhlIG1ldGhvZHMgb24gdGhvc2Ugb2JqZWN0czogZm9yIGluc3RhbmNlLFxuXHQgKiBgcGFnZS5zYXZlKGJhdGNoT3Aud29ya2VyU3VjY2VzcywgYmF0Y2hPcC53b3JrZXJGYWlsdXJlKWAuICBNYWtlIHN1cmUgdGhlXG5cdCAqIG1ldGhvZHMgYXJlIGNhbGxlZCBkaXJlY3RseSBpZiBzcGVjaWFsIHN1Y2Nlc3MvZmFpbHVyZSBjYXNlcyBhcmlzZS4gIElmIHlvdVxuXHQgKiBvbWl0IHRvIGNhbGwgdGhlc2UgbWV0aG9kcywgdGhlIGJhdGNoIG9wZXJhdGlvbiB3aWxsIHN0YWxsIGFmdGVyIHRoZSBmaXJzdFxuXHQgKiBjaHVuayEgIEFsc28gZW5zdXJlIHRoYXQgZWl0aGVyIHdvcmtlclN1Y2Nlc3Mgb3Igd29ya2VyRmFpbHVyZSBpcyBjYWxsZWQgbm9cblx0ICogbW9yZSB0aGFuIG9uY2UuICBUaGUgc2Vjb25kIGNhbGxiYWNrIGBwb3N0RmluaXNoYCBpcyBleGVjdXRlZCB3aGVuIHRoZVxuXHQgKiBlbnRpcmUgYmF0Y2ggaGFzIGJlZW4gcHJvY2Vzc2VkLlxuXHQgKlxuXHQgKiBJZiB1c2luZyBgcHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXNgLCB5b3Ugc2hvdWxkIHRyeSB0byBlbnN1cmUgdGhhdCB0aGVcblx0ICogYHdvcmtlclN1Y2Nlc3NgIGNhbGxiYWNrIGhhcyBhY2Nlc3MgdG8gdGhlIHBhZ2UgdGl0bGUuICBUaGlzIGlzIG5vIHByb2JsZW0gZm9yXG5cdCAqIHtAbGluayBNb3JlYml0cy53aWtpLnBhZ2V9IG9iamVjdHMuICBCdXQgd2hlbiB1c2luZyB0aGUgQVBJLCBwbGVhc2Ugc2V0IHRoZVxuXHQgKiB8cGFnZU5hbWV8IHByb3BlcnR5IG9uIHRoZSB7QGxpbmsgTW9yZWJpdHMud2lraS5hcGl9IG9iamVjdC5cblx0ICpcblx0ICogVGhlcmUgYXJlIHNhbXBsZSBiYXRjaE9wZXJhdGlvbiBpbXBsZW1lbnRhdGlvbnMgdXNpbmcgTW9yZWJpdHMud2lraS5wYWdlIGluXG5cdCAqIHR3aW5rbGViYXRjaGRlbGV0ZS5qcywgdHdpbmtsZWJhdGNodW5kZWxldGUuanMsIGFuZCB0d2lua2xlYmF0Y2hwcm90ZWN0LmpzLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHNcblx0ICogQGNsYXNzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbY3VycmVudEFjdGlvbl1cblx0ICovXG5cdE1vcmViaXRzLmJhdGNoT3BlcmF0aW9uID0gZnVuY3Rpb24gKGN1cnJlbnRBY3Rpb24pIHtcblx0XHRjb25zdCBjdHggPSB7XG5cdFx0XHQvLyBiYWNraW5nIGZpZWxkcyBmb3IgcHVibGljIHByb3BlcnRpZXNcblx0XHRcdHBhZ2VMaXN0OiBudWxsLFxuXHRcdFx0b3B0aW9uczoge1xuXHRcdFx0XHRjaHVua1NpemU6IDUwLFxuXHRcdFx0XHRwcmVzZXJ2ZUluZGl2aWR1YWxTdGF0dXNMaW5lczogZmFsc2UsXG5cdFx0XHR9LFxuXHRcdFx0Ly8gaW50ZXJuYWwgY291bnRlcnMsIGV0Yy5cblx0XHRcdHN0YXR1c0VsZW1lbnQ6IG5ldyBNb3JlYml0cy5zdGF0dXMoY3VycmVudEFjdGlvbiB8fCB3aW5kb3cud2dVTFMoJ+aJp+ihjOaJuemHj+aTjeS9nCcsICfln7fooYzmibnmrKHmk43kvZwnKSksXG5cdFx0XHR3b3JrZXI6IG51bGwsXG5cdFx0XHQvLyBmdW5jdGlvbiB0aGF0IGV4ZWN1dGVzIGZvciBlYWNoIGl0ZW0gaW4gcGFnZUxpc3Rcblx0XHRcdHBvc3RGaW5pc2g6IG51bGwsXG5cdFx0XHQvLyBmdW5jdGlvbiB0aGF0IGV4ZWN1dGVzIHdoZW4gdGhlIHdob2xlIGJhdGNoIGhhcyBiZWVuIHByb2Nlc3NlZFxuXHRcdFx0Y291bnRTdGFydGVkOiAwLFxuXHRcdFx0Y291bnRGaW5pc2hlZDogMCxcblx0XHRcdGNvdW50RmluaXNoZWRTdWNjZXNzOiAwLFxuXHRcdFx0Y3VycmVudENodW5rSW5kZXg6IC0xLFxuXHRcdFx0cGFnZUNodW5rczogW10sXG5cdFx0XHRydW5uaW5nOiBmYWxzZSxcblx0XHR9O1xuXHRcdC8vIHNob3VsZG4ndCBiZSBuZWVkZWQgYnkgZXh0ZXJuYWwgdXNlcnMsIGJ1dCBwcm92aWRlZCBhbnl3YXkgZm9yIG1heGltdW0gZmxleGliaWxpdHlcblx0XHR0aGlzLmdldFN0YXR1c0VsZW1lbnQgPSAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gY3R4LnN0YXR1c0VsZW1lbnQ7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBTZXRzIHRoZSBsaXN0IG9mIHBhZ2VzIHRvIHdvcmsgb24uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0FycmF5fSBwYWdlTGlzdCAtIEFycmF5IG9mIG9iamVjdHMgb3ZlciB3aGljaCB5b3Ugd2lzaCB0byBleGVjdXRlIHRoZSB3b3JrZXIgZnVuY3Rpb25cblx0XHQgKiBUaGlzIGlzIHVzdWFsbHkgdGhlIGxpc3Qgb2YgcGFnZSBuYW1lcyAoc3RyaW5ncykuXG5cdFx0ICovXG5cdFx0dGhpcy5zZXRQYWdlTGlzdCA9IChwYWdlTGlzdCkgPT4ge1xuXHRcdFx0Y3R4LnBhZ2VMaXN0ID0gcGFnZUxpc3Q7XG5cdFx0fTtcblx0XHQvKipcblx0XHQgKiBTZXRzIGEga25vd24gb3B0aW9uLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbk5hbWUgLSBOYW1lIG9mIHRoZSBvcHRpb246XG5cdFx0ICogLSBjaHVua1NpemUgKGludGVnZXIpOiBUaGUgc2l6ZSBvZiBjaHVua3MgdG8gYnJlYWsgdGhlIGFycmF5IGludG9cblx0XHQgKiAoZGVmYXVsdCA1MCkuIFNldHRpbmcgdGhpcyB0byBhIHNtYWxsIHZhbHVlICg8NSkgY2FuIGNhdXNlIHByb2JsZW1zLlxuXHRcdCAqIC0gcHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMgKGJvb2xlYW4pOiBLZWVwIGVhY2ggcGFnZSdzIHN0YXR1c1xuXHRcdCAqIGVsZW1lbnQgdmlzaWJsZSB3aGVuIHdvcmtlciBpcyBjb21wbGV0ZT9cblx0XHQgKiBAcGFyYW0ge251bWJlcnxib29sZWFufSBvcHRpb25WYWx1ZSAtIFZhbHVlIHRvIHdoaWNoIHRoZSBvcHRpb24gaXNcblx0XHQgKiB0byBiZSBzZXQuIFNob3VsZCBiZSBhbiBpbnRlZ2VyIGZvciBjaHVua1NpemUgYW5kIGEgYm9vbGVhbiBmb3Jcblx0XHQgKiBwcmVzZXJ2ZUluZGl2aWR1YWxTdGF0dXNMaW5lcy5cblx0XHQgKi9cblx0XHR0aGlzLnNldE9wdGlvbiA9IChvcHRpb25OYW1lLCBvcHRpb25WYWx1ZSkgPT4ge1xuXHRcdFx0Y3R4Lm9wdGlvbnNbb3B0aW9uTmFtZV0gPSBvcHRpb25WYWx1ZTtcblx0XHR9O1xuXHRcdC8qKlxuXHRcdCAqIFJ1bnMgdGhlIGZpcnN0IGNhbGxiYWNrIGZvciBlYWNoIHBhZ2UgaW4gdGhlIGxpc3QuXG5cdFx0ICogVGhlIGNhbGxiYWNrIG11c3QgY2FsbCB3b3JrZXJTdWNjZXNzIHdoZW4gc3VjY2VlZGluZywgb3Igd29ya2VyRmFpbHVyZSB3aGVuIGZhaWxpbmcuXG5cdFx0ICogUnVucyB0aGUgb3B0aW9uYWwgc2Vjb25kIGNhbGxiYWNrIHdoZW4gdGhlIHdob2xlIGJhdGNoIGhhcyBiZWVuIHByb2Nlc3NlZC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IHdvcmtlclxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtwb3N0RmluaXNoXVxuXHRcdCAqL1xuXHRcdHRoaXMucnVuID0gKHdvcmtlciwgcG9zdEZpbmlzaCkgPT4ge1xuXHRcdFx0aWYgKGN0eC5ydW5uaW5nKSB7XG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LmVycm9yKHdpbmRvdy53Z1VMUygn5om56YeP5pON5L2c5bey5Zyo6L+Q6KGMJywgJ+aJueasoeaTjeS9nOW3suWcqOWft+ihjCcpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y3R4LnJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0Y3R4LndvcmtlciA9IHdvcmtlcjtcblx0XHRcdGN0eC5wb3N0RmluaXNoID0gcG9zdEZpbmlzaDtcblx0XHRcdGN0eC5jb3VudFN0YXJ0ZWQgPSAwO1xuXHRcdFx0Y3R4LmNvdW50RmluaXNoZWQgPSAwO1xuXHRcdFx0Y3R4LmNvdW50RmluaXNoZWRTdWNjZXNzID0gMDtcblx0XHRcdGN0eC5jdXJyZW50Q2h1bmtJbmRleCA9IC0xO1xuXHRcdFx0Y3R4LnBhZ2VDaHVua3MgPSBbXTtcblx0XHRcdGNvbnN0IHRvdGFsID0gY3R4LnBhZ2VMaXN0Lmxlbmd0aDtcblx0XHRcdGlmICghdG90YWwpIHtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyh3aW5kb3cud2dVTFMoJ+ayoeacieaMh+WumumhtemdoicsICfmspLmnInmjIflrprpoIHpnaInKSk7XG5cdFx0XHRcdGN0eC5ydW5uaW5nID0gZmFsc2U7XG5cdFx0XHRcdGlmIChjdHgucG9zdEZpbmlzaCkge1xuXHRcdFx0XHRcdGN0eC5wb3N0RmluaXNoKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gY2h1bmsgcGFnZSBsaXN0IGludG8gbW9yZSBtYW5hZ2VhYmxlIHVuaXRzXG5cdFx0XHRjdHgucGFnZUNodW5rcyA9IE1vcmViaXRzLmFycmF5LmNodW5rKGN0eC5wYWdlTGlzdCwgY3R4Lm9wdGlvbnMuY2h1bmtTaXplKTtcblx0XHRcdC8vIHN0YXJ0IHRoZSBwcm9jZXNzXG5cdFx0XHRNb3JlYml0cy53aWtpLmFkZENoZWNrcG9pbnQoKTtcblx0XHRcdGN0eC5zdGF0dXNFbGVtZW50LnN0YXR1cygnMCUnKTtcblx0XHRcdGZuU3RhcnROZXdDaHVuaygpO1xuXHRcdH07XG5cdFx0LyoqXG5cdFx0ICogVG8gYmUgY2FsbGVkIGJ5IHdvcmtlciBiZWZvcmUgaXQgdGVybWluYXRlcyBzdWNjZXNzZnVsbHkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0geyhNb3JlYml0cy53aWtpLnBhZ2V8TW9yZWJpdHMud2lraS5hcGl8c3RyaW5nKX0gYXJnIC1cblx0XHQgKiBUaGlzIHNob3VsZCBiZSB0aGUgYE1vcmViaXRzLndpa2kucGFnZWAgb3IgYE1vcmViaXRzLndpa2kuYXBpYCBvYmplY3QgdXNlZCBieSB3b3JrZXJcblx0XHQgKiAoZm9yIHRoZSBhZGp1c3RtZW50IG9mIHN0YXR1cyBsaW5lcyBlbWl0dGVkIGJ5IHRoZW0pLlxuXHRcdCAqIElmIG5vIE1vcmViaXRzLndpa2kuKiBvYmplY3QgaXMgdXNlZCAoZS5nLiB5b3UncmUgdXNpbmcgYG13LkFwaSgpYCBvciBzb21ldGhpbmcgZWxzZSksIGFuZFxuXHRcdCAqIGBwcmVzZXJ2ZUluZGl2aWR1YWxTdGF0dXNMaW5lc2Agb3B0aW9uIGlzIG9uLCBnaXZlIHRoZSBwYWdlIG5hbWUgKHN0cmluZykgYXMgYXJndW1lbnQuXG5cdFx0ICovXG5cdFx0dGhpcy53b3JrZXJTdWNjZXNzID0gKGFyZykgPT4ge1xuXHRcdFx0aWYgKGFyZyBpbnN0YW5jZW9mIE1vcmViaXRzLndpa2kuYXBpIHx8IGFyZyBpbnN0YW5jZW9mIE1vcmViaXRzLndpa2kucGFnZSkge1xuXHRcdFx0XHQvLyB1cGRhdGUgb3IgcmVtb3ZlIHN0YXR1cyBsaW5lXG5cdFx0XHRcdGNvbnN0IHN0YXRlbGVtID0gYXJnLmdldFN0YXR1c0VsZW1lbnQoKTtcblx0XHRcdFx0aWYgKGN0eC5vcHRpb25zLnByZXNlcnZlSW5kaXZpZHVhbFN0YXR1c0xpbmVzKSB7XG5cdFx0XHRcdFx0aWYgKGFyZy5nZXRQYWdlTmFtZSB8fCBhcmcucGFnZU5hbWUgfHwgKGFyZy5xdWVyeSAmJiBhcmcucXVlcnkudGl0bGUpKSB7XG5cdFx0XHRcdFx0XHQvLyB3ZSBrbm93IHRoZSBwYWdlIHRpdGxlIC0gZGlzcGxheSBhIHJlbGV2YW50IG1lc3NhZ2Vcblx0XHRcdFx0XHRcdGNvbnN0IHBhZ2VOYW1lID0gYXJnLmdldFBhZ2VOYW1lID8gYXJnLmdldFBhZ2VOYW1lKCkgOiBhcmcucGFnZU5hbWUgfHwgYXJnLnF1ZXJ5LnRpdGxlO1xuXHRcdFx0XHRcdFx0c3RhdGVsZW0uaW5mbyhg5a6M5oiQ77yIW1ske3BhZ2VOYW1lfV1d77yJYCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIHdlIGRvbid0IGtub3cgdGhlIHBhZ2UgdGl0bGUgLSBqdXN0IGRpc3BsYXkgYSBnZW5lcmljIG1lc3NhZ2Vcblx0XHRcdFx0XHRcdHN0YXRlbGVtLmluZm8oJ+WujOaIkCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyByZW1vdmUgdGhlIHN0YXR1cyBsaW5lIGF1dG9tYXRpY2FsbHkgcHJvZHVjZWQgYnkgTW9yZWJpdHMud2lraS4qXG5cdFx0XHRcdFx0c3RhdGVsZW0udW5saW5rKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgJiYgY3R4Lm9wdGlvbnMucHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMpIHtcblx0XHRcdFx0bmV3IE1vcmViaXRzLnN0YXR1cyhhcmcsIGDlrozmiJDvvIhbWyR7YXJnfV1d77yJYCk7XG5cdFx0XHR9XG5cdFx0XHRjdHguY291bnRGaW5pc2hlZFN1Y2Nlc3MrKztcblx0XHRcdGZuRG9uZU9uZSgpO1xuXHRcdH07XG5cdFx0dGhpcy53b3JrZXJGYWlsdXJlID0gKCkgPT4ge1xuXHRcdFx0Zm5Eb25lT25lKCk7XG5cdFx0fTtcblx0XHQvLyBwcml2YXRlIGZ1bmN0aW9uc1xuXHRcdGNvbnN0IHRoaXNQcm94eSA9IHRoaXM7XG5cdFx0Y29uc3QgZm5TdGFydE5ld0NodW5rID0gKCkgPT4ge1xuXHRcdFx0Y29uc3QgY2h1bmsgPSBjdHgucGFnZUNodW5rc1srK2N0eC5jdXJyZW50Q2h1bmtJbmRleF07XG5cdFx0XHRpZiAoIWNodW5rKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gZG9uZSEgeWF5XG5cdFx0XHR9XG5cdFx0XHQvLyBzdGFydCB3b3JrZXJzIGZvciB0aGUgY3VycmVudCBjaHVua1xuXHRcdFx0Y3R4LmNvdW50U3RhcnRlZCArPSBjaHVuay5sZW5ndGg7XG5cdFx0XHRmb3IgKGNvbnN0IHBhZ2Ugb2YgY2h1bmspIHtcblx0XHRcdFx0Y3R4LndvcmtlcihwYWdlLCB0aGlzUHJveHkpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3QgZm5Eb25lT25lID0gKCkgPT4ge1xuXHRcdFx0Y3R4LmNvdW50RmluaXNoZWQrKztcblx0XHRcdC8vIHVwZGF0ZSBvdmVyYWxsIHN0YXR1cyBsaW5lXG5cdFx0XHRjb25zdCB0b3RhbCA9IGN0eC5wYWdlTGlzdC5sZW5ndGg7XG5cdFx0XHRpZiAoY3R4LmNvdW50RmluaXNoZWQgPCB0b3RhbCkge1xuXHRcdFx0XHRjb25zdCBwcm9ncmVzcyA9IE1hdGgucm91bmQoKDEwMCAqIGN0eC5jb3VudEZpbmlzaGVkKSAvIHRvdGFsKTtcblx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuc3RhdHVzKGAke3Byb2dyZXNzfSVgKTtcblx0XHRcdFx0Ly8gc3RhcnQgYSBuZXcgY2h1bmsgaWYgd2UncmUgY2xvc2UgZW5vdWdoIHRvIHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGNodW5rLCBhbmRcblx0XHRcdFx0Ly8gd2UgaGF2ZW4ndCBhbHJlYWR5IHN0YXJ0ZWQgdGhlIG5leHQgb25lXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRjdHguY291bnRGaW5pc2hlZCA+PSBjdHguY291bnRTdGFydGVkIC0gTWF0aC5tYXgoY3R4Lm9wdGlvbnMuY2h1bmtTaXplIC8gMTAsIDIpICYmXG5cdFx0XHRcdFx0TWF0aC5mbG9vcihjdHguY291bnRGaW5pc2hlZCAvIGN0eC5vcHRpb25zLmNodW5rU2l6ZSkgPiBjdHguY3VycmVudENodW5rSW5kZXhcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Zm5TdGFydE5ld0NodW5rKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoY3R4LmNvdW50RmluaXNoZWQgPT09IHRvdGFsKSB7XG5cdFx0XHRcdGNvbnN0IHN0YXR1c1N0cmluZyA9IGDlrozmiJDvvIgke2N0eC5jb3VudEZpbmlzaGVkU3VjY2Vzc30vJHtjdHguY291bnRGaW5pc2hlZH3mk43kvZzmiJDlip/lrozmiJDvvIlgO1xuXHRcdFx0XHRpZiAoY3R4LmNvdW50RmluaXNoZWRTdWNjZXNzIDwgY3R4LmNvdW50RmluaXNoZWQpIHtcblx0XHRcdFx0XHRjdHguc3RhdHVzRWxlbWVudC53YXJuKHN0YXR1c1N0cmluZyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3R4LnN0YXR1c0VsZW1lbnQuaW5mbyhzdGF0dXNTdHJpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjdHgucG9zdEZpbmlzaCkge1xuXHRcdFx0XHRcdGN0eC5wb3N0RmluaXNoKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0TW9yZWJpdHMud2lraS5yZW1vdmVDaGVja3BvaW50KCk7XG5cdFx0XHRcdGN0eC5ydW5uaW5nID0gZmFsc2U7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBjdHguY291bnRGaW5pc2hlZCA+IHRvdGFsXG5cdFx0XHRcdC8vIGp1c3QgZm9yIGdpZ2dsZXMhICh3ZWxsLCBzZXJpb3VzIGRlYnVnZ2luZywgYWN0dWFsbHkpXG5cdFx0XHRcdGN0eC5zdGF0dXNFbGVtZW50Lndhcm4oXG5cdFx0XHRcdFx0YCR7d2luZG93LndnVUxTKCflrozmiJDvvIjlpJrmiafooYzkuoYnLCAn5a6M5oiQ77yI5aSa5Z+36KGM5LqGJykgKyAoY3R4LmNvdW50RmluaXNoZWQgLSB0b3RhbCl95qyh77yJYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRNb3JlYml0cy53aWtpLnJlbW92ZUNoZWNrcG9pbnQoKTtcblx0XHRcdFx0Y3R4LnJ1bm5pbmcgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9O1xuXHR9O1xuXHQvKipcblx0ICogQSBzaW1wbGUgZHJhZ2dhYmxlIHdpbmRvdywgbm93IGEgd3JhcHBlciBmb3IgalF1ZXJ5IFVJJ3MgZGlhbG9nIGZlYXR1cmUuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBNb3JlYml0c1xuXHQgKiBAY2xhc3Ncblx0ICogQHJlcXVpcmVzIGpxdWVyeS51aS5kaWFsb2dcblx0ICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgLSBUaGUgbWF4aW11bSBhbGxvd2FibGUgaGVpZ2h0IGZvciB0aGUgY29udGVudCBhcmVhLlxuXHQgKi9cblx0TW9yZWJpdHMuc2ltcGxlV2luZG93ID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcblx0XHRjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0dGhpcy5jb250ZW50ID0gY29udGVudDtcblx0XHRjb250ZW50LmNsYXNzTmFtZSA9ICdtb3JlYml0cy1kaWFsb2ctY29udGVudCc7XG5cdFx0Y29udGVudC5pZCA9IGBtb3JlYml0cy1kaWFsb2ctY29udGVudC0ke01hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDFlMTUpfWA7XG5cdFx0dGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG5cdFx0JCh0aGlzLmNvbnRlbnQpLmRpYWxvZyh7XG5cdFx0XHRhdXRvT3BlbjogZmFsc2UsXG5cdFx0XHRidXR0b25zOiB7XG5cdFx0XHRcdCdQbGFjZWhvbGRlciBidXR0b24nOiAoKSA9PiB7fSxcblx0XHRcdH0sXG5cdFx0XHRkaWFsb2dDbGFzczogJ21vcmViaXRzLWRpYWxvZycsXG5cdFx0XHR3aWR0aDogTWF0aC5taW4oTnVtYmVyLnBhcnNlSW50KHdpbmRvdy5pbm5lcldpZHRoLCAxMCksIE51bWJlci5wYXJzZUludCh3aWR0aCB8fCA4MDAsIDEwKSksXG5cdFx0XHQvLyBnaXZlIGpRdWVyeSB0aGUgZ2l2ZW4gaGVpZ2h0IHZhbHVlICh3aGljaCByZXByZXNlbnRzIHRoZSBhbnRpY2lwYXRlZCBoZWlnaHQgb2YgdGhlIGRpYWxvZykgaGVyZSwgc29cblx0XHRcdC8vIGl0IGNhbiBwb3NpdGlvbiB0aGUgZGlhbG9nIGFwcHJvcHJpYXRlbHlcblx0XHRcdC8vIHRoZSAyMCBwaXhlbHMgcmVwcmVzZW50cyBhZGp1c3RtZW50IGZvciB0aGUgZXh0cmEgaGVpZ2h0IG9mIHRoZSBqUXVlcnkgZGlhbG9nIFwiY2hyb21lXCIsIGNvbXBhcmVkXG5cdFx0XHQvLyB0byB0aGF0IG9mIHRoZSBvbGQgU2ltcGxlV2luZG93XG5cdFx0XHRoZWlnaHQ6IGhlaWdodCArIDIwLFxuXHRcdFx0Y2xvc2U6IChldmVudCkgPT4ge1xuXHRcdFx0XHQvLyBkaWFsb2dzIGFuZCB0aGVpciBjb250ZW50IGNhbiBiZSBkZXN0cm95ZWQgb25jZSBjbG9zZWRcblx0XHRcdFx0JChldmVudC50YXJnZXQpLmRpYWxvZygnZGVzdHJveScpLnJlbW92ZSgpO1xuXHRcdFx0fSxcblx0XHRcdHJlc2l6ZVN0YXJ0KCkge1xuXHRcdFx0XHRbdGhpcy5zY3JvbGxib3hdID0gJCh0aGlzKS5maW5kKCcubW9yZWJpdHMtc2Nyb2xsYm94Jyk7XG5cdFx0XHRcdGlmICh0aGlzLnNjcm9sbGJveCkge1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsYm94LnN0eWxlLm1heEhlaWdodCA9ICdub25lJztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJlc2l6ZVN0b3AoKSB7XG5cdFx0XHRcdHRoaXMuc2Nyb2xsYm94ID0gbnVsbDtcblx0XHRcdH0sXG5cdFx0XHRyZXNpemUoKSB7XG5cdFx0XHRcdHRoaXMuc3R5bGUubWF4SGVpZ2h0ID0gJyc7XG5cdFx0XHRcdGlmICh0aGlzLnNjcm9sbGJveCkge1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsYm94LnN0eWxlLndpZHRoID0gJyc7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fSk7XG5cdFx0Y29uc3QgJHdpZGdldCA9ICQodGhpcy5jb250ZW50KS5kaWFsb2coJ3dpZGdldCcpO1xuXHRcdC8vIGRlbGV0ZSB0aGUgcGxhY2Vob2xkZXIgYnV0dG9uIChpdCdzIG9ubHkgdGhlcmUgc28gdGhlIGJ1dHRvbnBhbmUgZ2V0cyBjcmVhdGVkKVxuXHRcdCR3aWRnZXQuZmluZCgnYnV0dG9uJykuZWFjaCgoa2V5LCB2YWx1ZSkgPT4ge1xuXHRcdFx0dmFsdWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh2YWx1ZSk7XG5cdFx0fSk7XG5cdFx0Ly8gYWRkIGNvbnRhaW5lciBmb3IgdGhlIGJ1dHRvbnMgd2UgYWRkLCBhbmQgdGhlIGZvb3RlciBsaW5rcyAoaWYgYW55KVxuXHRcdGNvbnN0IGJ1dHRvbnNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0YnV0dG9uc3Bhbi5jbGFzc05hbWUgPSAnbW9yZWJpdHMtZGlhbG9nLWJ1dHRvbnMnO1xuXHRcdGNvbnN0IGxpbmtzc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRsaW5rc3NwYW4uY2xhc3NOYW1lID0gJ21vcmViaXRzLWRpYWxvZy1mb290ZXJsaW5rcyc7XG5cdFx0JHdpZGdldC5maW5kKCcudWktZGlhbG9nLWJ1dHRvbnBhbmUnKS5hcHBlbmQoYnV0dG9uc3BhbiwgbGlua3NzcGFuKTtcblx0XHQvLyByZXNpemUgdGhlIHNjcm9sbGJveCB3aXRoIHRoZSBkaWFsb2csIGlmIG9uZSBpcyBwcmVzZW50XG5cdFx0JHdpZGdldC5yZXNpemFibGUoJ29wdGlvbicsICdhbHNvUmVzaXplJywgYCMke3RoaXMuY29udGVudC5pZH0gLm1vcmViaXRzLXNjcm9sbGJveCwgIyR7dGhpcy5jb250ZW50LmlkfWApO1xuXHR9O1xuXHRNb3JlYml0cy5zaW1wbGVXaW5kb3cucHJvdG90eXBlID0ge1xuXHRcdGJ1dHRvbnM6IFtdLFxuXHRcdGhlaWdodDogNjAwLFxuXHRcdGhhc0Zvb3RlckxpbmtzOiBmYWxzZSxcblx0XHRzY3JpcHROYW1lOiBudWxsLFxuXHRcdC8qKlxuXHRcdCAqIEZvY3VzZXMgdGhlIGRpYWxvZy4gVGhpcyBtaWdodCB3b3JrLCBvciBvbiB0aGUgY29udHJhcnksIGl0IG1pZ2h0IG5vdC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zaW1wbGVXaW5kb3d9XG5cdFx0ICovXG5cdFx0Zm9jdXMoKSB7XG5cdFx0XHQkKHRoaXMuY29udGVudCkuZGlhbG9nKCdtb3ZlVG9Ub3AnKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogQ2xvc2VzIHRoZSBkaWFsb2cuIElmIHRoaXMgaXMgc2V0IGFzIGFuIGV2ZW50IGhhbmRsZXIsIGl0IHdpbGwgc3RvcCB0aGUgZXZlbnRcblx0XHQgKiBmcm9tIGRvaW5nIGFueXRoaW5nIG1vcmUuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2V2ZW50fSBbZXZlbnRdXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRjbG9zZShldmVudCkge1xuXHRcdFx0aWYgKGV2ZW50KSB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR9XG5cdFx0XHQkKHRoaXMuY29udGVudCkuZGlhbG9nKCdjbG9zZScpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTaG93cyB0aGUgZGlhbG9nLiBDYWxsaW5nIGRpc3BsYXkoKSBvbiBhIGRpYWxvZyB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gY2xvc2VkXG5cdFx0ICogbWlnaHQgd29yaywgYnV0IGl0IGlzIG5vdCBndWFyYW50ZWVkLlxuXHRcdCAqXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRkaXNwbGF5KCkge1xuXHRcdFx0aWYgKHRoaXMuc2NyaXB0TmFtZSkge1xuXHRcdFx0XHRjb25zdCAkd2lkZ2V0ID0gJCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnd2lkZ2V0Jyk7XG5cdFx0XHRcdCR3aWRnZXQuZmluZCgnLm1vcmViaXRzLWRpYWxvZy1zY3JpcHRuYW1lJykucmVtb3ZlKCk7XG5cdFx0XHRcdGNvbnN0IHNjcmlwdG5hbWVzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdFx0XHRzY3JpcHRuYW1lc3Bhbi5jbGFzc05hbWUgPSAnbW9yZWJpdHMtZGlhbG9nLXNjcmlwdG5hbWUnO1xuXHRcdFx0XHRzY3JpcHRuYW1lc3Bhbi50ZXh0Q29udGVudCA9IGAke3RoaXMuc2NyaXB0TmFtZX0gXFx1MDBCNyBgOyAvLyBVKzAwQjcgTUlERExFIERPVCA9ICZtaWRkb3Q7XG5cdFx0XHRcdCR3aWRnZXQuZmluZCgnLnVpLWRpYWxvZy10aXRsZScpLnByZXBlbmQoc2NyaXB0bmFtZXNwYW4pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZGlhbG9nID0gJCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnb3BlbicpO1xuXHRcdFx0aWYgKHdpbmRvdy5zZXR1cFRvb2x0aXBzICYmIHdpbmRvdy5wZyAmJiB3aW5kb3cucGcucmUgJiYgd2luZG93LnBnLnJlLmRpZmYpIHtcblx0XHRcdFx0Ly8gdGllIGluIHdpdGggTkFWUE9QXG5cdFx0XHRcdGRpYWxvZy5wYXJlbnQoKVswXS5yYW5TZXR1cFRvb2x0aXBzQWxyZWFkeSA9IGZhbHNlO1xuXHRcdFx0XHR3aW5kb3cuc2V0dXBUb29sdGlwcyhkaWFsb2cucGFyZW50KClbMF0pO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zZXRIZWlnaHQodGhpcy5oZWlnaHQpOyAvLyBpbml0IGhlaWdodCBhbGdvcml0aG1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU2V0cyB0aGUgZGlhbG9nIHRpdGxlLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRzZXRUaXRsZSh0aXRsZSkge1xuXHRcdFx0JCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnb3B0aW9uJywgJ3RpdGxlJywgdGl0bGUpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTZXRzIHRoZSBzY3JpcHQgbmFtZSwgYXBwZWFyaW5nIGFzIGEgcHJlZml4IHRvIHRoZSB0aXRsZSB0byBoZWxwIHVzZXJzIGRldGVybWluZSB3aGljaFxuXHRcdCAqIHVzZXIgc2NyaXB0IGlzIHByb2R1Y2luZyB3aGljaCBkaWFsb2cuIEZvciBpbnN0YW5jZSwgVHdpbmtsZSBtb2R1bGVzIHNldCB0aGlzIHRvIFwiVHdpbmtsZVwiLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMuc2ltcGxlV2luZG93fVxuXHRcdCAqL1xuXHRcdHNldFNjcmlwdE5hbWUobmFtZSkge1xuXHRcdFx0dGhpcy5zY3JpcHROYW1lID0gbmFtZTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU2V0cyB0aGUgZGlhbG9nIHdpZHRoLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRzZXRXaWR0aCh3aWR0aCkge1xuXHRcdFx0JCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnb3B0aW9uJywgJ3dpZHRoJywgd2lkdGgpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTZXRzIHRoZSBkaWFsb2cncyBtYXhpbXVtIGhlaWdodC4gVGhlIGRpYWxvZyB3aWxsIGF1dG8tc2l6ZSB0byBmaXQgaXRzIGNvbnRlbnRzLFxuXHRcdCAqIGJ1dCB0aGUgY29udGVudCBhcmVhIHdpbGwgZ3JvdyBubyBsYXJnZXIgdGhhbiB0aGUgaGVpZ2h0IGdpdmVuIGhlcmUuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0XG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRzZXRIZWlnaHQoaGVpZ2h0KSB7XG5cdFx0XHR0aGlzLmhlaWdodCA9IGhlaWdodDtcblx0XHRcdC8vIGZyb20gZGlzcGxheSB0aW1lIG9ud2FyZHMsIGxldCB0aGUgYnJvd3NlciBkZXRlcm1pbmUgdGhlIG9wdGltdW0gaGVpZ2h0LFxuXHRcdFx0Ly8gYW5kIGluc3RlYWQgbGltaXQgdGhlIGhlaWdodCBhdCB0aGUgZ2l2ZW4gdmFsdWVcblx0XHRcdC8vIG5vdGUgdGhhdCB0aGUgZ2l2ZW4gaGVpZ2h0IHdpbGwgZXhjbHVkZSB0aGUgYXBwcm94LiAyMHB4IHRoYXQgdGhlIGpRdWVyeSBVSVxuXHRcdFx0Ly8gY2hyb21lIGhhcyBpbiBoZWlnaHQgaW4gYWRkaXRpb24gdG8gdGhlIGhlaWdodCBvZiBhbiBlcXVpdmFsZW50IFwiY2xhc3NpY1wiXG5cdFx0XHQvLyBNb3JlYml0cy5zaW1wbGVXaW5kb3dcblx0XHRcdGlmIChcblx0XHRcdFx0TnVtYmVyLnBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoJCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnd2lkZ2V0JylbMF0sIG51bGwpLmhlaWdodCwgMTApID5cblx0XHRcdFx0d2luZG93LmlubmVySGVpZ2h0XG5cdFx0XHQpIHtcblx0XHRcdFx0JCh0aGlzLmNvbnRlbnQpXG5cdFx0XHRcdFx0LmRpYWxvZygnb3B0aW9uJywgJ2hlaWdodCcsIHdpbmRvdy5pbm5lckhlaWdodCAtIDIpXG5cdFx0XHRcdFx0LmRpYWxvZygnb3B0aW9uJywgJ3Bvc2l0aW9uJywgJ3RvcCcpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JCh0aGlzLmNvbnRlbnQpLmRpYWxvZygnb3B0aW9uJywgJ2hlaWdodCcsICdhdXRvJyk7XG5cdFx0XHR9XG5cdFx0XHQkKHRoaXMuY29udGVudCkuZGlhbG9nKCd3aWRnZXQnKS5maW5kKCcubW9yZWJpdHMtZGlhbG9nLWNvbnRlbnQnKVswXS5zdHlsZS5tYXhIZWlnaHQgPSBgJHtOdW1iZXIucGFyc2VJbnQoXG5cdFx0XHRcdHRoaXMuaGVpZ2h0IC0gMzAsXG5cdFx0XHRcdDEwXG5cdFx0XHQpfXB4YDtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogU2V0cyB0aGUgY29udGVudCBvZiB0aGUgZGlhbG9nIHRvIHRoZSBnaXZlbiBlbGVtZW50IG5vZGUsIHVzdWFsbHkgZnJvbSByZW5kZXJpbmdcblx0XHQgKiBhIHtAbGluayBNb3JlYml0cy5xdWlja0Zvcm19LlxuXHRcdCAqIFJlLWVudW1lcmF0ZXMgdGhlIGZvb3RlciBidXR0b25zLCBidXQgbGVhdmVzIHRoZSBmb290ZXIgbGlua3MgYXMgdGhleSBhcmUuXG5cdFx0ICogQmUgc3VyZSB0byBjYWxsIHRoaXMgYXQgbGVhc3Qgb25jZSBiZWZvcmUgdGhlIGRpYWxvZyBpcyBkaXNwbGF5ZWQuLi5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRlbnRcblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMuc2ltcGxlV2luZG93fVxuXHRcdCAqL1xuXHRcdHNldENvbnRlbnQoY29udGVudCkge1xuXHRcdFx0dGhpcy5wdXJnZUNvbnRlbnQoKTtcblx0XHRcdHRoaXMuYWRkQ29udGVudChjb250ZW50KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogQWRkcyB0aGUgZ2l2ZW4gZWxlbWVudCBub2RlIHRvIHRoZSBkaWFsb2cgY29udGVudC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRlbnRcblx0XHQgKiBAcmV0dXJucyB7TW9yZWJpdHMuc2ltcGxlV2luZG93fVxuXHRcdCAqL1xuXHRcdGFkZENvbnRlbnQoY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuXHRcdFx0Ly8gbG9vayBmb3Igc3VibWl0IGJ1dHRvbnMgaW4gdGhlIGNvbnRlbnQsIGhpZGUgdGhlbSwgYW5kIGFkZCBhIHByb3h5IGJ1dHRvbiB0byB0aGUgYnV0dG9uIHBhbmVcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRcdFx0JCh0aGlzLmNvbnRlbnQpXG5cdFx0XHRcdC5maW5kKCdpbnB1dFt0eXBlPVwic3VibWl0XCJdLCBidXR0b25bdHlwZT1cInN1Ym1pdFwiXScpXG5cdFx0XHRcdC5lYWNoKChrZXksIHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dmFsdWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblx0XHRcdFx0XHRjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRcdFx0XHRpZiAodmFsdWUuaGFzQXR0cmlidXRlKCd2YWx1ZScpKSB7XG5cdFx0XHRcdFx0XHRidXR0b24udGV4dENvbnRlbnQgPSB2YWx1ZS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh2YWx1ZS50ZXh0Q29udGVudCkge1xuXHRcdFx0XHRcdFx0YnV0dG9uLnRleHRDb250ZW50ID0gdmFsdWUudGV4dENvbnRlbnQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGJ1dHRvbi50ZXh0Q29udGVudCA9ICfmj5DkuqQnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRidXR0b24uY2xhc3NOYW1lID0gdmFsdWUuY2xhc3NOYW1lIHx8ICdzdWJtaXRCdXR0b25Qcm94eSc7XG5cdFx0XHRcdFx0Ly8gaGVyZSBpcyBhbiBpbnN0YW5jZSBvZiBjaGVhcCBjb2RpbmcsIHByb2JhYmx5IGEgbWVtb3J5LXVzYWdlIGhpdCBpbiB1c2luZyBhIGNsb3N1cmUgaGVyZVxuXHRcdFx0XHRcdGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuXHRcdFx0XHRcdFx0J2NsaWNrJyxcblx0XHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFx0dmFsdWUuY2xpY2soKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmYWxzZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c2VsZi5idXR0b25zW3NlbGYuYnV0dG9ucy5sZW5ndGhdID0gYnV0dG9uO1xuXHRcdFx0XHR9KTtcblx0XHRcdC8vIHJlbW92ZSBhbGwgYnV0dG9ucyBmcm9tIHRoZSBidXR0b24gcGFuZSBhbmQgcmUtYWRkIHRoZW1cblx0XHRcdGlmICh0aGlzLmJ1dHRvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQkKHRoaXMuY29udGVudClcblx0XHRcdFx0XHQuZGlhbG9nKCd3aWRnZXQnKVxuXHRcdFx0XHRcdC5maW5kKCcubW9yZWJpdHMtZGlhbG9nLWJ1dHRvbnMnKVxuXHRcdFx0XHRcdC5lbXB0eSgpXG5cdFx0XHRcdFx0LmFwcGVuZCh0aGlzLmJ1dHRvbnMpWzBdXG5cdFx0XHRcdFx0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1lbXB0eScpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JCh0aGlzLmNvbnRlbnQpXG5cdFx0XHRcdFx0LmRpYWxvZygnd2lkZ2V0Jylcblx0XHRcdFx0XHQuZmluZCgnLm1vcmViaXRzLWRpYWxvZy1idXR0b25zJylbMF1cblx0XHRcdFx0XHQuc2V0QXR0cmlidXRlKCdkYXRhLWVtcHR5JywgJ2RhdGEtZW1wdHknKTsgLy8gdXNlZCBieSBDU1Ncblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBSZW1vdmVzIGFsbCBjb250ZW50cyBmcm9tIHRoZSBkaWFsb2csIGJhcnJpbmcgYW55IGZvb3RlciBsaW5rcy5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zaW1wbGVXaW5kb3d9XG5cdFx0ICovXG5cdFx0cHVyZ2VDb250ZW50KCkge1xuXHRcdFx0dGhpcy5idXR0b25zID0gW107XG5cdFx0XHQvLyBkZWxldGUgYWxsIGJ1dHRvbnMgaW4gdGhlIGJ1dHRvbnBhbmVcblx0XHRcdCQodGhpcy5jb250ZW50KS5kaWFsb2coJ3dpZGdldCcpLmZpbmQoJy5tb3JlYml0cy1kaWFsb2ctYnV0dG9ucycpLmVtcHR5KCk7XG5cdFx0XHR3aGlsZSAodGhpcy5jb250ZW50Lmhhc0NoaWxkTm9kZXMoKSkge1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQucmVtb3ZlQ2hpbGQodGhpcy5jb250ZW50LmZpcnN0Q2hpbGQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBBZGRzIGEgbGluayBpbiB0aGUgYm90dG9tLXJpZ2h0IGNvcm5lciBvZiB0aGUgZGlhbG9nLlxuXHRcdCAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBoZWxwIG9yIHBvbGljeSBsaW5rcy5cblx0XHQgKiBGb3IgZXhhbXBsZSwgVHdpbmtsZSdzIENTRCBtb2R1bGUgYWRkcyBhIGxpbmsgdG8gdGhlIENTRCBwb2xpY3kgcGFnZSxcblx0XHQgKiBhcyB3ZWxsIGFzIGEgbGluayB0byBUd2lua2xlJ3MgZG9jdW1lbnRhdGlvbi5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gRGlzcGxheSB0ZXh0LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB3aWtpUGFnZSAtIExpbmsgdGFyZ2V0LlxuXHRcdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZXA9ZmFsc2VdIC0gU2V0IHRydWUgdG8gcHJlcGVuZCByYXRoZXIgdGhhbiBhcHBlbmQuXG5cdFx0ICogQHJldHVybnMge01vcmViaXRzLnNpbXBsZVdpbmRvd31cblx0XHQgKi9cblx0XHRhZGRGb290ZXJMaW5rKHRleHQsIHdpa2lQYWdlLCBwcmVwKSB7XG5cdFx0XHRjb25zdCAkZm9vdGVybGlua3MgPSAkKHRoaXMuY29udGVudCkuZGlhbG9nKCd3aWRnZXQnKS5maW5kKCcubW9yZWJpdHMtZGlhbG9nLWZvb3RlcmxpbmtzJyk7XG5cdFx0XHRpZiAodGhpcy5oYXNGb290ZXJMaW5rcykge1xuXHRcdFx0XHRjb25zdCBidWxsZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0XHRcdGJ1bGxldC50ZXh0Q29udGVudCA9ICcgXFx1MjAyMiAnOyAvLyBVKzIwMjIgQlVMTEVUXG5cdFx0XHRcdGlmIChwcmVwKSB7XG5cdFx0XHRcdFx0JGZvb3RlcmxpbmtzLnByZXBlbmQoYnVsbGV0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkZm9vdGVybGlua3MuYXBwZW5kKGJ1bGxldCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIG13LnV0aWwuZ2V0VXJsKHdpa2lQYWdlKSk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGl0bGUnLCB3aWtpUGFnZSk7XG5cdFx0XHRsaW5rLnNldEF0dHJpYnV0ZSgndGFyZ2V0JywgJ19ibGFuaycpO1xuXHRcdFx0bGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7XG5cdFx0XHRsaW5rLnRleHRDb250ZW50ID0gdGV4dDtcblx0XHRcdGlmIChwcmVwKSB7XG5cdFx0XHRcdCRmb290ZXJsaW5rcy5wcmVwZW5kKGxpbmspO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JGZvb3RlcmxpbmtzLmFwcGVuZChsaW5rKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuaGFzRm9vdGVyTGlua3MgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBTZXRzIHdoZXRoZXIgdGhlIHdpbmRvdyBzaG91bGQgYmUgbW9kYWwgb3Igbm90LiBNb2RhbCBkaWFsb2dzIGNyZWF0ZVxuXHRcdCAqIGFuIG92ZXJsYXkgYmVsb3cgdGhlIGRpYWxvZyBidXQgYWJvdmUgb3RoZXIgcGFnZSBlbGVtZW50cy4gVGhpc1xuXHRcdCAqIG11c3QgYmUgdXNlZCAoaWYgbmVjZXNzYXJ5KSBiZWZvcmUgY2FsbGluZyBkaXNwbGF5KCkuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFttb2RhbD1mYWxzZV0gLSBJZiBzZXQgdG8gdHJ1ZSwgb3RoZXIgaXRlbXMgb24gdGhlXG5cdFx0ICogcGFnZSB3aWxsIGJlIGRpc2FibGVkLCBpLmUuLCBjYW5ub3QgYmUgaW50ZXJhY3RlZCB3aXRoLlxuXHRcdCAqIEByZXR1cm5zIHtNb3JlYml0cy5zaW1wbGVXaW5kb3d9XG5cdFx0ICovXG5cdFx0c2V0TW9kYWxpdHkobW9kYWwpIHtcblx0XHRcdCQodGhpcy5jb250ZW50KS5kaWFsb2coJ29wdGlvbicsICdtb2RhbCcsIG1vZGFsKTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0sXG5cdH07XG5cdC8qKlxuXHQgKiBFbmFibGVzIG9yIGRpc2FibGVzIGFsbCBmb290ZXIgYnV0dG9ucyBvbiBhbGwge0BsaW5rIE1vcmViaXRzLnNpbXBsZVdpbmRvd31zIGluIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIGBmYWxzZWAgd2hlbiB0aGUgYnV0dG9uKHMpIGJlY29tZSBpcnJlbGV2YW50IChlLmcuIGp1c3QgYmVmb3JlXG5cdCAqIHtAbGluayBNb3JlYml0cy5zdGF0dXMuaW5pdH0gaXMgY2FsbGVkKS5cblx0ICogVGhpcyBpcyBub3QgYW4gaW5zdGFuY2UgbWV0aG9kIHNvIHRoYXQgY29uc3VtZXJzIGRvbid0IGhhdmUgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVcblx0ICogb3JpZ2luYWwgYE1vcmViaXRzLnNpbXBsZVdpbmRvd2Agb2JqZWN0IHNpdHRpbmcgYXJvdW5kIHNvbWV3aGVyZS4gQW55d2F5LCBtb3N0IG9mIHRoZSB0aW1lXG5cdCAqIHRoZXJlIHdpbGwgb25seSBiZSBvbmUgYE1vcmViaXRzLnNpbXBsZVdpbmRvd2Agb3Blbiwgc28gdGhpcyBzaG91bGRuJ3QgbWF0dGVyLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTW9yZWJpdHMuc2ltcGxlV2luZG93XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZFxuXHQgKi9cblx0TW9yZWJpdHMuc2ltcGxlV2luZG93LnNldEJ1dHRvbnNFbmFibGVkID0gKGVuYWJsZWQpID0+IHtcblx0XHRjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblx0XHQkYm9keS5maW5kKCcubW9yZWJpdHMtZGlhbG9nLWJ1dHRvbnMgYnV0dG9uJykucHJvcCgnZGlzYWJsZWQnLCAhZW5hYmxlZCk7XG5cdH07XG59KShqUXVlcnkpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUNBLElBQUFBLG9CQUE0QkMsUUFBQSxpQkFBQTtBQXJDNUI7Q0F1Q0MsU0FBU0MsU0FBU0Ms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QUFPLEVBQUV3MkIsT0FBTyxVQUFVLFNBQVMwQyxLQUFLO0FBQy9DLGFBQU87SUFDUjtFQUNEO0FBWUF6OUIsV0FBUzQ2QixhQUFhOEMsb0JBQXFCQyxhQUFZO0FBQ3RELFVBQU1uUixRQUFRenNCLEVBQUUsTUFBTTtBQUN0QnlzQixVQUFNcGYsS0FBSyxpQ0FBaUMsRUFBRTBULEtBQUssWUFBWSxDQUFDNmMsT0FBTztFQUN4RTtBQUNELEdBQUdDLE1BQU07IiwKICAibmFtZXMiOiBbImltcG9ydF9leHRfZ2FkZ2V0IiwgInJlcXVpcmUiLCAibW9yZWJpdHMiLCAiJCIsICJNb3JlYml0cyIsICJ3aW5kb3ciLCAibDEwbiIsICJyZWRpcmVjdFRhZ0FsaWFzZXMiLCAic2lnbmF0dXJlVGltZXN0YW1wRm9ybWF0IiwgInN0ciIsICJyZ3hVVEMiLCAicmd4Q1NUIiwgIm1hdGNoIiwgImV4ZWMiLCAibWF0Y2hDU1QiLCAibW9udGgiLCAiZGF0ZSIsICJsb2NhbGVEYXRhIiwgIm1vbnRocyIsICJpbmRleE9mIiwgInVzZXJJc0luR3JvdXAiLCAiZ3JvdXAiLCAibXciLCAiY29uZmlnIiwgImdldCIsICJpbmNsdWRlcyIsICJ1c2VySXNTeXNvcCIsICJzYW5pdGl6ZUlQdjYiLCAiYWRkcmVzcyIsICJjb25zb2xlIiwgIndhcm4iLCAiaXAiLCAiaXNQYWdlUmVkaXJlY3QiLCAiZG9jdW1lbnQiLCAicXVlcnlTZWxlY3RvciIsICJwYWdlTmFtZU5vcm0iLCAicmVwbGFjZSIsICJwYWdlTmFtZVJlZ2V4IiwgInBhZ2VOYW1lIiwgImZpcnN0Q2hhciIsICJyZW1haW5kZXIiLCAic3RyaW5nIiwgImVzY2FwZVJlZ0V4cCIsICJzbGljZSIsICJUaXRsZSIsICJwaHBDaGFyVG9VcHBlciIsICJ0b0xvd2VyQ2FzZSIsICJjb25jYXQiLCAiY3JlYXRlSHRtbCIsICJpbnB1dCIsICJmcmFnbWVudCIsICJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwgImdlbmVyYXRlQXJyYXkiLCAiX2l0ZXJhdG9yIiwgIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwgIl9zdGVwIiwgInMiLCAibiIsICJkb25lIiwgImVsZW1lbnQiLCAidmFsdWUiLCAiTm9kZSIsICJhcHBlbmRDaGlsZCIsICJfaXRlcmF0b3IyIiwgInBhcnNlSFRNTCIsICJyZW5kZXJXaWtpbGlua3MiLCAiX3N0ZXAyIiwgIm5vZGUiLCAiZXJyIiwgImUiLCAiZiIsICJ0ZXh0IiwgInViIiwgInVuYmluZGVyIiwgInVuYmluZCIsICJjb250ZW50IiwgIl8iLCAidGFyZ2V0IiwgInRleHRfIiwgInV0aWwiLCAiZ2V0VXJsIiwgInJlYmluZCIsICJuYW1lc3BhY2VSZWdleCIsICJuYW1lc3BhY2VzIiwgImFsaWFzZXMiLCAicmVnZXgiLCAiX2kiLCAiX09iamVjdCRlbnRyaWVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgImxlbmd0aCIsICJuYW1lIiwgIm51bWJlciIsICJtYXAiLCAiY2hhciIsICJqb2luIiwgInF1aWNrRm9ybSIsICJldmVudCIsICJldmVudFR5cGUiLCAicm9vdCIsICJ0eXBlIiwgInByb3RvdHlwZSIsICJyZW5kZXIiLCAicmV0IiwgIm5hbWVzIiwgImFwcGVuZCIsICJkYXRhIiwgImNoaWxkcyIsICJpZCIsICJjaGlsZCIsICJpbnRlcm5hbFN1Ymdyb3VwSWQiLCAiY3VycmVudE5vZGUiLCAiY29tcHV0ZSIsICJfaXRlcmF0b3IzIiwgIl9zdGVwMyIsICJpbklkIiwgImNoaWxkQ29udGFpbmVyIiwgImxhYmVsIiwgImFkbWlub25seSIsICJpIiwgImN1cnJlbnQiLCAic3Vibm9kZSIsICJjcmVhdGVFbGVtZW50IiwgImNsYXNzTmFtZSIsICJzZXRBdHRyaWJ1dGUiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJzZWxlY3QiLCAibXVsdGlwbGUiLCAic2l6ZSIsICJkaXNhYmxlZCIsICJsaXN0IiwgInZhbHVlcyIsICJzZWxlY3RlZCIsICJoaWRkZW4iLCAiY3JlYXRlVGV4dE5vZGUiLCAiY3VySWQiLCAiY3VyRGl2IiwgInRvb2x0aXAiLCAiZ2VuZXJhdGVUb29sdGlwIiwgImNoZWNrZWQiLCAic3R5bGUiLCAic3ViZ3JvdXAiLCAidG1wZ3JvdXAiLCAic3ViZ3JvdXBSYXciLCAiX2l0ZXJhdG9yNCIsICJfc3RlcDQiLCAiZWwiLCAibmV3RWwiLCAic2hvd24iLCAicGFyZW50Tm9kZSIsICJmb3JtIiwgInJlbW92ZUNoaWxkIiwgInNoaWZ0Q2xpY2tTdXBwb3J0IiwgImNoZWNrYm94U2hpZnRDbGlja1N1cHBvcnQiLCAiZ2V0RWxlbWVudHMiLCAicGxhY2Vob2xkZXIiLCAiX2kyIiwgIl9hcnIiLCAiYXR0IiwgIl9pMyIsICJfYXJyMiIsICJfaTQiLCAiX2FycjMiLCAibWluIiwgIm1heCIsICJOdW1iZXIiLCAiUE9TSVRJVkVfSU5GSU5JVFkiLCAibGlzdE5vZGUiLCAibW9yZSIsICJuZXdOb2RlIiwgInN1Ymxpc3QiLCAiYXJlYSIsICJjb3VudGVyIiwgInN0b3BQcm9wYWdhdGlvbiIsICJtb3JlQnV0dG9uIiwgInN1YmxhYmVsIiwgInJlbW92ZSIsICJtYXhsZW5ndGgiLCAiZWxlbSIsICJtb3JlYnV0dG9uIiwgImxpc3Rub2RlIiwgIm5vZGVfIiwgImlucHV0bm9kZSIsICJyZW1vdmVBdHRyaWJ1dGUiLCAicmVtb3ZlQnV0dG9uIiwgInJlc3VsdCIsICJsYWJlbEVsZW1lbnQiLCAiY29scyIsICJyb3dzIiwgInJlcXVpcmVkIiwgInJlYWRvbmx5IiwgIkVycm9yIiwgInRvU3RyaW5nIiwgImV4dHJhIiwgIiRkYXRhIiwgInRvb2x0aXBCdXR0b24iLCAidGl0bGUiLCAicG9zaXRpb24iLCAibXkiLCAiYXQiLCAiY29sbGlzaW9uIiwgInRvb2x0aXBDbGFzcyIsICJnZXRJbnB1dERhdGEiLCAiX2l0ZXJhdG9yNSIsICJlbGVtZW50cyIsICJfc3RlcDUiLCAiZmllbGQiLCAiZmllbGROYW1lTm9ybSIsICJkYXRhc2V0IiwgInNpbmdsZSIsICJ2YWwiLCAidHJpbSIsICJmaWVsZE5hbWUiLCAiJGZvcm0iLCAiZXNjYXBlU2VsZWN0b3IiLCAiJGVsZW1lbnRzIiwgImZpbmQiLCAidG9BcnJheSIsICJnZXRDaGVja2JveE9yUmFkaW8iLCAiZWxlbWVudEFycmF5IiwgImZvdW5kIiwgImZpbHRlciIsICJnZXRFbGVtZW50Q29udGFpbmVyIiwgIkhUTUxGaWVsZFNldEVsZW1lbnQiLCAiSFRNTERpdkVsZW1lbnQiLCAiSFRNTEhlYWRpbmdFbGVtZW50IiwgImdldEVsZW1lbnRMYWJlbE9iamVjdCIsICJIVE1MVGV4dEFyZWFFbGVtZW50IiwgImdldEVsZW1lbnRMYWJlbCIsICJmaXJzdENoaWxkIiwgInRleHRDb250ZW50IiwgInNldEVsZW1lbnRMYWJlbCIsICJsYWJlbFRleHQiLCAib3ZlcnJpZGVFbGVtZW50TGFiZWwiLCAidGVtcG9yYXJ5TGFiZWxUZXh0IiwgImhhc0F0dHJpYnV0ZSIsICJyZXNldEVsZW1lbnRMYWJlbCIsICJnZXRBdHRyaWJ1dGUiLCAic2V0RWxlbWVudFZpc2liaWxpdHkiLCAidmlzaWJpbGl0eSIsICJ0b2dnbGUiLCAic2V0RWxlbWVudFRvb2x0aXBWaXNpYmlsaXR5IiwgIkhUTUxGb3JtRWxlbWVudCIsICJnZXRDaGVja2VkIiwgInJldHVybkFycmF5IiwgIkhUTUxTZWxlY3RFbGVtZW50IiwgIm9wdGlvbnMiLCAiSFRNTElucHV0RWxlbWVudCIsICJnZXRVbmNoZWNrZWQiLCAiaXNJUHY2QWRkcmVzcyIsICJ0b1VwcGVyQ2FzZSIsICJhYmJyZXZQb3MiLCAiQ0lEUlN0YXJ0IiwgImFkZHJlc3NFbmQiLCAicmVwZWF0IiwgInBhZCIsICJyZXBsYWNlbWVudCIsICJzcGxpdCIsICJpc1JhbmdlIiwgImlzSVBBZGRyZXNzIiwgInZhbGlkQ0lEUiIsICJzdWJuZXQiLCAicGFyc2VJbnQiLCAiZ2V0NjQiLCAiaXB2NiIsICJzdWJuZXRNYXRjaCIsICJpcFJlZ2V4IiwgInRvVXBwZXJDYXNlRmlyc3RDaGFyIiwgInRvTG93ZXJDYXNlRmlyc3RDaGFyIiwgInNwbGl0V2VpZ2h0ZWRCeUtleXMiLCAic3RhcnQiLCAiZW5kIiwgInNraXBsaXN0IiwgImxldmVsIiwgImluaXRpYWwiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJUeXBlRXJyb3IiLCAiX2l0ZXJhdG9yNiIsICJfc3RlcDYiLCAiZm9ybWF0UmVhc29uVGV4dCIsICJhZGRTaWciLCAicmVhc29uIiwgInNpZyIsICJzaWdJbmRleCIsICJsYXN0SW5kZXhPZiIsICJmb3JtYXRSZWFzb25Gb3JMb2ciLCAic2FmZVJlcGxhY2UiLCAicGF0dGVybiIsICJpc0luZmluaXR5IiwgImV4cGlyeSIsICJmb3JtYXRUaW1lIiwgInRpbWUiLCAibSIsICJ3Z1VMUyIsICJhcHBlbmRQdW5jdHVhdGlvbiIsICJwdW5jdHVhdGlvbiIsICJzZWFyY2giLCAiYXJyYXkiLCAidW5pcSIsICJhcnIiLCAiaXRlbSIsICJpZHgiLCAiZHVwcyIsICJjaHVuayIsICJudW1DaHVua3MiLCAiTWF0aCIsICJjZWlsIiwgImZyb20iLCAic2VsZWN0MiIsICJtYXRjaGVycyIsICJvcHRncm91cEZ1bGwiLCAicGFyYW1zIiwgIm9yaWdpbmFsTWF0Y2hlciIsICJmbiIsICJkZWZhdWx0cyIsICJtYXRjaGVyIiwgInRlcm0iLCAiY2hpbGRyZW4iLCAid29yZEJlZ2lubmluZyIsICJSZWdFeHAiLCAidGVzdCIsICJoaWdobGlnaHRTZWFyY2hNYXRjaGVzIiwgInNlYXJjaFRlcm0iLCAic2VsZWN0MlNlYXJjaFF1ZXJ5IiwgImxvYWRpbmciLCAiY3NzIiwgInF1ZXJ5SW50ZXJjZXB0b3IiLCAiYXV0b1N0YXJ0IiwgImV2IiwgIndoaWNoIiwgImNsb3Nlc3QiLCAicHJldiIsICJkcm9wZG93biIsICIkc2VhcmNoIiwgInNlbGVjdGlvbiIsICJmb2N1cyIsICJoaXN0b3J5IiwgInByZWZpeCIsICJyYW5kb20iLCAicG9zdGZpeCIsICJyZSIsICJnZXRDYWxsYmFjayIsICJoYXNPd24iLCAic2VsZiIsICJhcmdzIiwgIl90aGlzJF9kIiwgInBhcmFtIiwgImRpZ2l0TWF0Y2giLCAiX2QiLCAiRGF0ZSIsICJSZWZsZWN0IiwgImFwcGx5IiwgIlVUQyIsICJkYXRlUGFydHMiLCAiRnVuY3Rpb24iLCAiYmluZCIsICJpc1ZhbGlkIiwgImxvZyIsICJtb250aHNTaG9ydCIsICJkYXlzIiwgImRheXNTaG9ydCIsICJyZWxhdGl2ZVRpbWVzIiwgInRoaXNEYXkiLCAicHJldkRheSIsICJuZXh0RGF5IiwgInRoaXNXZWVrIiwgInBhc3RXZWVrIiwgIm90aGVyIiwgInVuaXRNYXAiLCAic2Vjb25kcyIsICJtaW51dGVzIiwgImhvdXJzIiwgIndlZWtzIiwgInllYXJzIiwgImlzTmFOIiwgImdldFRpbWUiLCAiaXNCZWZvcmUiLCAiaXNBZnRlciIsICJnZXRVVENNb250aE5hbWUiLCAiZ2V0VVRDTW9udGgiLCAiZ2V0VVRDTW9udGhOYW1lQWJicmV2IiwgImdldE1vbnRoTmFtZSIsICJnZXRNb250aCIsICJnZXRNb250aE5hbWVBYmJyZXYiLCAiZ2V0VVRDRGF5TmFtZSIsICJnZXRVVENEYXkiLCAiZ2V0VVRDRGF5TmFtZUFiYnJldiIsICJnZXREYXlOYW1lIiwgImdldERheSIsICJnZXREYXlOYW1lQWJicmV2IiwgImFkZCIsICJ1bml0IiwgIm51bSIsICJ1bml0Tm9ybSIsICJrZXlzIiwgInN1YnRyYWN0IiwgImZvcm1hdCIsICJmb3JtYXRzdHIiLCAiem9uZSIsICJ1ZGF0ZSIsICJnZXRUaW1lem9uZU9mZnNldCIsICJ0b0lTT1N0cmluZyIsICJsZW4iLCAiaDI0IiwgImdldEhvdXJzIiwgImdldE1pbnV0ZXMiLCAiZ2V0U2Vjb25kcyIsICJtcyIsICJnZXRNaWxsaXNlY29uZHMiLCAiRCIsICJnZXREYXRlIiwgIk0iLCAiWSIsICJnZXRGdWxsWWVhciIsICJoMTIiLCAiYW1PclBtIiwgInJlcGxhY2VtZW50TWFwIiwgIkhIIiwgIkgiLCAiaGgiLCAiaCIsICJBIiwgIm1tIiwgInNzIiwgIlNTUyIsICJkZGRkIiwgImRkZCIsICJkIiwgIkREIiwgIk1NTU0iLCAiTU1NIiwgIk1NIiwgIllZWVkiLCAiWVkiLCAiU3RyaW5nIiwgInJhdyIsICJfdGVtcGxhdGVPYmplY3QiLCAiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCIsICJfdGVtcGxhdGVPYmplY3QyIiwgImNhbGVuZGFyIiwgImRhdGVEaWZmIiwgInNldEhvdXJzIiwgIm1vbnRoSGVhZGVyUmVnZXgiLCAiZ2V0VVRDRnVsbFllYXIiLCAibW9udGhIZWFkZXIiLCAiaGVhZGVyIiwgIl9pdGVyYXRvcjciLCAiZ2V0T3duUHJvcGVydHlOYW1lcyIsICJfc3RlcDciLCAiZnVuYyIsICJ3aWtpIiwgIm51bWJlck9mQWN0aW9uc0xlZnQiLCAibmJyT2ZDaGVja3BvaW50c0xlZnQiLCAiYWN0aW9uQ29tcGxldGVkIiwgIm5vdGljZSIsICJzdGF0dXMiLCAicmVkaXJlY3QiLCAiZm9sbG93UmVkaXJlY3QiLCAic2V0VGltZW91dCIsICJsb2NhdGlvbiIsICJ0aW1lT3V0IiwgIndwQWN0aW9uQ29tcGxldGVkVGltZU91dCIsICJhZGRDaGVja3BvaW50IiwgInJlbW92ZUNoZWNrcG9pbnQiLCAiYXBpIiwgImN1cnJlbnRBY3Rpb24iLCAicXVlcnkiLCAib25TdWNjZXNzIiwgInN0YXR1c0VsZW1lbnQiLCAib25FcnJvciIsICJfdGhpcyRxdWVyeSIsICJhc3NlcnQiLCAiZXJyb3Jmb3JtYXQiLCAidXNlbGFuZyIsICJlcnJvcmxhbmciLCAiZXJyb3JzdXNlbG9jYWwiLCAic2V0U3RhdHVzRWxlbWVudCIsICJzdGF0ZWxlbSIsICJmb3JtYXR2ZXJzaW9uIiwgImVycm9yIiwgImFjdGlvbiIsICJ0YWdzIiwgIm1vcmViaXRzV2lraUNoYW5nZVRhZyIsICJwYXJlbnQiLCAicmVzcG9uc2UiLCAicmVzcG9uc2VYTUwiLCAic3RhdHVzVGV4dCIsICJlcnJvckNvZGUiLCAiZXJyb3JUZXh0IiwgImJhZHRva2VuUmV0cnkiLCAic2V0UGFyZW50IiwgInBvc3QiLCAiY2FsbGVyQWpheFBhcmFtZXRlcnMiLCAicXVlcnlTdHJpbmdBcnIiLCAiX2k1IiwgIl9PYmplY3QkZW50cmllczIiLCAiZW5jb2RlVVJJQ29tcG9uZW50IiwgInF1ZXJ5U3RyaW5nIiwgImFqYXhwYXJhbXMiLCAiY29udGV4dCIsICJ1cmwiLCAid2lraVNjcmlwdCIsICJkYXRhVHlwZSIsICJoZWFkZXJzIiwgIm1vcmViaXRzV2lraUFwaVVzZXJBZ2VudCIsICJhamF4IiwgInRoZW4iLCAib25BUElzdWNjZXNzIiwgImVycm9ycyIsICJjb2RlIiwgImh0bWwiLCAiZXEiLCAiYXR0ciIsICJyZXR1cm5FcnJvciIsICJjYWxsIiwgImluZm8iLCAiRGVmZXJyZWQiLCAicmVzb2x2ZVdpdGgiLCAib25BUElmYWlsdXJlIiwgImVycm9yVGhyb3duIiwgImdldFRva2VuIiwgInRva2VuIiwgInJlamVjdFdpdGgiLCAiZ2V0U3RhdHVzRWxlbWVudCIsICJnZXRFcnJvckNvZGUiLCAiZ2V0RXJyb3JUZXh0IiwgImdldFhNTCIsICJnZXRSZXNwb25zZSIsICJnZXRDYWNoZWRKc29uIiwgInByb3AiLCAidGl0bGVzIiwgInJ2c2xvdHMiLCAicnZwcm9wIiwgInNtYXhhZ2UiLCAibWF4YWdlIiwgImFwaW9iaiIsICJ1bmxpbmsiLCAid2lraXRleHQiLCAicGFnZXMiLCAicmV2aXNpb25zIiwgInNsb3RzIiwgIm1haW4iLCAiSlNPTiIsICJwYXJzZSIsICJzZXRBcGlVc2VyQWdlbnQiLCAidWEiLCAidG9rZW5BcGkiLCAibWV0YSIsICJ0b2tlbnMiLCAiY3NyZnRva2VuIiwgInBhZ2UiLCAiY3R4IiwgInBhZ2VFeGlzdHMiLCAiZWRpdFN1bW1hcnkiLCAiY2hhbmdlVGFncyIsICJ0ZXN0QWN0aW9ucyIsICJjYWxsYmFja1BhcmFtZXRlcnMiLCAicGFnZVRleHQiLCAiZWRpdE1vZGUiLCAiYXBwZW5kVGV4dCIsICJwcmVwZW5kVGV4dCIsICJuZXdTZWN0aW9uVGV4dCIsICJuZXdTZWN0aW9uVGl0bGUiLCAiY3JlYXRlT3B0aW9uIiwgIm1pbm9yRWRpdCIsICJib3RFZGl0IiwgInBhZ2VTZWN0aW9uIiwgIm1heENvbmZsaWN0UmV0cmllcyIsICJtYXhSZXRyaWVzIiwgImZvbGxvd0Nyb3NzTnNSZWRpcmVjdCIsICJ3YXRjaGxpc3RPcHRpb24iLCAid2F0Y2hsaXN0RXhwaXJ5IiwgImNyZWF0b3IiLCAidGltZXN0YW1wIiwgInJldmVydE9sZElEIiwgIm1vdmVEZXN0aW5hdGlvbiIsICJtb3ZlVGFsa1BhZ2UiLCAibW92ZVN1YnBhZ2VzIiwgIm1vdmVTdXBwcmVzc1JlZGlyZWN0IiwgInByb3RlY3RFZGl0IiwgInByb3RlY3RNb3ZlIiwgInByb3RlY3RDcmVhdGUiLCAicHJvdGVjdENhc2NhZGUiLCAibG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yIiwgInBhZ2VMb2FkZWQiLCAiY3NyZlRva2VuIiwgImxvYWRUaW1lIiwgImxhc3RFZGl0VGltZSIsICJwYWdlSUQiLCAiY29udGVudE1vZGVsIiwgInJldmVydEN1cklEIiwgInJldmVydFVzZXIiLCAid2F0Y2hlZCIsICJmdWxseVByb3RlY3RlZCIsICJzdXBwcmVzc1Byb3RlY3RXYXJuaW5nIiwgImNvbmZsaWN0UmV0cmllcyIsICJyZXRyaWVzIiwgIm9uTG9hZFN1Y2Nlc3MiLCAib25Mb2FkRmFpbHVyZSIsICJvblNhdmVTdWNjZXNzIiwgIm9uU2F2ZUZhaWx1cmUiLCAib25Mb29rdXBDcmVhdGlvblN1Y2Nlc3MiLCAib25Mb29rdXBDcmVhdGlvbkZhaWx1cmUiLCAib25Nb3ZlU3VjY2VzcyIsICJvbk1vdmVGYWlsdXJlIiwgIm9uRGVsZXRlU3VjY2VzcyIsICJvbkRlbGV0ZUZhaWx1cmUiLCAib25VbmRlbGV0ZVN1Y2Nlc3MiLCAib25VbmRlbGV0ZUZhaWx1cmUiLCAib25Qcm90ZWN0U3VjY2VzcyIsICJvblByb3RlY3RGYWlsdXJlIiwgImxvYWRRdWVyeSIsICJsb2FkQXBpIiwgInNhdmVBcGkiLCAibG9va3VwQ3JlYXRpb25BcGkiLCAibW92ZUFwaSIsICJtb3ZlUHJvY2Vzc0FwaSIsICJwYXRyb2xBcGkiLCAicGF0cm9sUHJvY2Vzc0FwaSIsICJkZWxldGVBcGkiLCAiZGVsZXRlUHJvY2Vzc0FwaSIsICJ1bmRlbGV0ZUFwaSIsICJ1bmRlbGV0ZVByb2Nlc3NBcGkiLCAicHJvdGVjdEFwaSIsICJwcm90ZWN0UHJvY2Vzc0FwaSIsICJlbXB0eUZ1bmN0aW9uIiwgImxvYWQiLCAib25GYWlsdXJlIiwgImlucHJvcCIsICJpbnRlc3RhY3Rpb25zIiwgImN1cnRpbWVzdGFtcCIsICJydmxpbWl0IiwgInJ2c3RhcnRpZCIsICJyZWRpcmVjdHMiLCAicnZzZWN0aW9uIiwgImZuTG9hZFN1Y2Nlc3MiLCAic2F2ZSIsICJjYW5Vc2VNd1VzZXJUb2tlbiIsICJmbkNhblVzZU13VXNlclRva2VuIiwgImNvbmZpcm0iLCAic3VtbWFyeSIsICJ1c2VyIiwgIndhdGNobGlzdCIsICJmbkFwcGx5V2F0Y2hsaXN0RXhwaXJ5IiwgIndhdGNobGlzdGV4cGlyeSIsICJzZWN0aW9uIiwgIm1pbm9yIiwgIm5vdG1pbm9yIiwgImJvdCIsICJhcHBlbmR0ZXh0IiwgInByZXBlbmR0ZXh0IiwgInNlY3Rpb250aXRsZSIsICJ1bmRvIiwgInVuZG9hZnRlciIsICJiYXNldGltZXN0YW1wIiwgInN0YXJ0dGltZXN0YW1wIiwgImZuU2F2ZVN1Y2Nlc3MiLCAiZm5TYXZlRXJyb3IiLCAiZm5BdXRvU2F2ZSIsICJwcmVwZW5kIiwgIm5ld1NlY3Rpb24iLCAiZ2V0UGFnZU5hbWUiLCAiZ2V0UGFnZVRleHQiLCAic2V0UGFnZVRleHQiLCAic2V0QXBwZW5kVGV4dCIsICJzZXRQcmVwZW5kVGV4dCIsICJzZXROZXdTZWN0aW9uVGV4dCIsICJzZXROZXdTZWN0aW9uVGl0bGUiLCAic2V0RWRpdFN1bW1hcnkiLCAic2V0Q2hhbmdlVGFncyIsICJzZXRDcmVhdGVPcHRpb24iLCAic2V0TWlub3JFZGl0IiwgInNldEJvdEVkaXQiLCAic2V0UGFnZVNlY3Rpb24iLCAic2V0TWF4Q29uZmxpY3RSZXRyaWVzIiwgInNldE1heFJldHJpZXMiLCAic2V0V2F0Y2hsaXN0IiwgInNldFdhdGNobGlzdEV4cGlyeSIsICJzZXRXYXRjaGxpc3RGcm9tUHJlZmVyZW5jZXMiLCAic2V0Rm9sbG93UmVkaXJlY3QiLCAic2V0TG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yIiwgImZsYWciLCAic2V0TW92ZURlc3RpbmF0aW9uIiwgImRlc3RpbmF0aW9uIiwgInNldE1vdmVUYWxrUGFnZSIsICJzZXRNb3ZlU3VicGFnZXMiLCAic2V0TW92ZVN1cHByZXNzUmVkaXJlY3QiLCAic2V0RWRpdFByb3RlY3Rpb24iLCAic2V0TW92ZVByb3RlY3Rpb24iLCAic2V0Q3JlYXRlUHJvdGVjdGlvbiIsICJzZXRDYXNjYWRpbmdQcm90ZWN0aW9uIiwgInNldE9sZElEIiwgIm9sZElEIiwgImdldEN1cnJlbnRJRCIsICJnZXRSZXZpc2lvblVzZXIiLCAiZ2V0TGFzdEVkaXRUaW1lIiwgInNldENhbGxiYWNrUGFyYW1ldGVycyIsICJnZXRDYWxsYmFja1BhcmFtZXRlcnMiLCAiZXhpc3RzIiwgImdldFBhZ2VJRCIsICJnZXRDb250ZW50TW9kZWwiLCAiZ2V0V2F0Y2hlZCIsICJnZXRMb2FkVGltZSIsICJnZXRDcmVhdG9yIiwgImdldENyZWF0aW9uVGltZXN0YW1wIiwgImNhbkVkaXQiLCAibG9va3VwQ3JlYXRpb24iLCAicnZkaXIiLCAiZm5Mb29rdXBDcmVhdGlvblN1Y2Nlc3MiLCAicmV2ZXJ0IiwgIm1vdmUiLCAiZm5QcmVmbGlnaHRDaGVja3MiLCAiZm5Qcm9jZXNzTW92ZSIsICJmbk5lZWRUb2tlbkluZm9RdWVyeSIsICJwYXRyb2wiLCAiJGJvZHkiLCAicGF0cm9saHJlZiIsICJyY2lkIiwgImdldFBhcmFtVmFsdWUiLCAiZm5Qcm9jZXNzUGF0cm9sIiwgInBhdHJvbFF1ZXJ5IiwgInJjcHJvcCIsICJyY3RpdGxlIiwgInJjbGltaXQiLCAiZGVsZXRlUGFnZSIsICJmblByb2Nlc3NEZWxldGUiLCAidW5kZWxldGVQYWdlIiwgImZuUHJvY2Vzc1VuZGVsZXRlIiwgInByb3RlY3QiLCAiZm5Qcm9jZXNzUHJvdGVjdCIsICJnZXRQcmVmaXhlZFRleHQiLCAiZWRpdFJlc3RyaWN0aW9uIiwgInBhZ2VvYmoiLCAiZm5DaGVja1BhZ2VOYW1lIiwgInJldiIsICJtaXNzaW5nIiwgInBhZ2VpZCIsICJjb250ZW50bW9kZWwiLCAiZWRpdFByb3QiLCAicHJvdGVjdGlvbiIsICJmaW5kTGFzdCIsICJwciIsICJsYXN0cmV2aWQiLCAidGVzdGFjdGlvbnMiLCAiYWN0aW9ucyIsICJfaTYiLCAiX09iamVjdCRrZXlzIiwgInJldmlkIiwgInVzZXJoaWRkZW4iLCAiaW52YWxpZCIsICJyZXNvbHZlZE5hbWUiLCAib3JpZ05zIiwgIm5hbWVzcGFjZSIsICJuZXdOcyIsICJuZXdFeHBpcnkiLCAicmVsIiwgImVkaXQiLCAibGluayIsICJjYXB0Y2hhIiwgInB1cmdlUXVlcnkiLCAicHVyZ2VBcGkiLCAic2xlZXAiLCAiZXJyb3JEYXRhIiwgImFidXNlZmlsdGVyIiwgImRlc2NyaXB0aW9uIiwgInNwYW0iLCAic3BhbWJsYWNrbGlzdCIsICJtYXRjaGVzIiwgImlzVGV4dFJlZGlyZWN0IiwgInNvbWUiLCAidGFnIiwgImZuTG9va3VwTm9uUmVkaXJlY3RDcmVhdG9yIiwgInJldnMiLCAiX2l0ZXJhdG9yOCIsICJfc3RlcDgiLCAiZm5Qcm9jZXNzQ2hlY2tzIiwgImFjdGlvbk1pc3NpbmciLCAicHJvdGVjdE1pc3NpbmciLCAic2FsdE1pc3NpbmciLCAiZWRpdHByb3QiLCAicGFnZVRpdGxlIiwgInRvIiwgIm1vdmV0YWxrIiwgIm1vdmVzdWJwYWdlcyIsICJub3JlZGlyZWN0IiwgInJlY2VudGNoYW5nZXMiLCAidW5wYXRyb2xsZWQiLCAicGF0cm9sU3RhdCIsICJmblByb2Nlc3NEZWxldGVFcnJvciIsICJmblByb2Nlc3NVbmRlbGV0ZUVycm9yIiwgInBycyIsICJtb3ZlcHJvdCIsICJjcmVhdGVwcm90IiwgIl9pdGVyYXRvcjkiLCAiX3N0ZXA5IiwgInNvdXJjZSIsICJjYXNjYWRlIiwgInByb3RlY3Rpb25zIiwgImV4cGlyeXMiLCAibWlsbGlzZWNvbmRzIiwgImRlZmVycmVkIiwgInJlc29sdmUiLCAicHJldmlldyIsICJwcmV2aWV3Ym94IiwgImFkZENsYXNzIiwgImhpZGUiLCAiYmVnaW5SZW5kZXIiLCAic2VjdGlvblRpdGxlIiwgInNob3ciLCAic3RhdHVzc3BhbiIsICJpbml0IiwgInBzdCIsICJkaXNhYmxlbGltaXRyZXBvcnQiLCAiZGlzYWJsZWVkaXRzZWN0aW9uIiwgInJlbmRlckFwaSIsICJmblJlbmRlclN1Y2Nlc3MiLCAiaW5uZXJIVE1MIiwgImxvYWRlciIsICJtb2R1bGVzdHlsZXMiLCAibW9kdWxlcyIsICJjbG9zZVByZXZpZXciLCAiZW1wdHkiLCAicGFyc2VUZW1wbGF0ZSIsICJjb3VudCIsICJ1bm5hbWVkIiwgImVxdWFscyIsICJwYXJhbWV0ZXJzIiwgImtleSIsICJmaW5kUGFyYW0iLCAiZmluYWwiLCAidGVzdDMiLCAicG9wIiwgInRlc3QyIiwgImNoYXJBdCIsICJyZW1vdmVMaW5rIiwgImxpbmtUYXJnZXQiLCAibXdUaXRsZSIsICJuZXdGcm9tVGV4dCIsICJuYW1lc3BhY2VJRCIsICJnZXROYW1lc3BhY2VJZCIsICJnZXRNYWluVGV4dCIsICJsaW5rUmVnZXhTdHJpbmciLCAiaXNGaWxlT3JDYXRlZ29yeSIsICJjb2xvbiIsICJzaW1wbGVMaW5rUmVnZXgiLCAicGlwZWRMaW5rUmVnZXgiLCAiY29tbWVudE91dEltYWdlIiwgImltYWdlIiwgImltYWdlUmVnZXhTdHJpbmciLCAibGlua3NSZWdleCIsICJhbGxMaW5rcyIsICJfaXRlcmF0b3IxMCIsICJfc3RlcDEwIiwgImFsbExpbmsiLCAiZ2FsbGVyeUltYWdlUmVnZXgiLCAiZnJlZUltYWdlUmVnZXgiLCAiYWRkVG9JbWFnZUNvbW1lbnQiLCAiX2l0ZXJhdG9yMTEiLCAiX3N0ZXAxMSIsICJnYWxsZXJ5UmVnZXgiLCAibmV3dGV4dCIsICJyZW1vdmVUZW1wbGF0ZSIsICJ0ZW1wbGF0ZSIsICJ0ZW1wbGF0ZVJlZ2V4U3RyaW5nIiwgImFsbFRlbXBsYXRlcyIsICJfaXRlcmF0b3IxMiIsICJfc3RlcDEyIiwgImFsbFRlbXBsYXRlIiwgImluc2VydEFmdGVyVGVtcGxhdGVzIiwgImZsYWdzIiwgInByZVJlZ2V4IiwgImdldFRleHQiLCAidXNlcnNwYWNlTG9nZ2VyIiwgImxvZ1BhZ2VOYW1lIiwgImluaXRpYWxUZXh0IiwgImhlYWRlckxldmVsIiwgImxvZ1RleHQiLCAic3VtbWFyeVRleHQiLCAiZGVmIiwgInJlamVjdCIsICJzdGF0IiwgInRleHRSYXciLCAiZ2VuZXJhdGUiLCAidXBkYXRlIiwgIkVsZW1lbnQiLCAiaGFzQ2hpbGROb2RlcyIsICJlcnJvckV2ZW50IiwgImhhbmRsZXIiLCAic3RhdFJhdyIsICJsaW5rZWQiLCAicHJpbnRVc2VyVGV4dCIsICJjb21tZW50cyIsICJtZXNzYWdlIiwgInAiLCAiZGl2IiwgIm1hcmdpblRvcCIsICJ3aGl0ZVNwYWNlIiwgImh0bWxOb2RlIiwgImNvbG9yIiwgImpRdWVyeVNlbGVjdG9yIiwgImpRdWVyeUNvbnRleHQiLCAibGFzdENoZWNrYm94IiwgImNsaWNrSGFuZGxlciIsICJjbGlja0hhbmRsZXIyIiwgInRoaXNDYiIsICJzaGlmdEtleSIsICJjYnMiLCAiaW5kZXgiLCAibGFzdEluZGV4IiwgImVuZFN0YXRlIiwgImZpbmlzaCIsICJjbGljayIsICJvbiIsICJiYXRjaE9wZXJhdGlvbiIsICJwYWdlTGlzdCIsICJjaHVua1NpemUiLCAicHJlc2VydmVJbmRpdmlkdWFsU3RhdHVzTGluZXMiLCAid29ya2VyIiwgInBvc3RGaW5pc2giLCAiY291bnRTdGFydGVkIiwgImNvdW50RmluaXNoZWQiLCAiY291bnRGaW5pc2hlZFN1Y2Nlc3MiLCAiY3VycmVudENodW5rSW5kZXgiLCAicGFnZUNodW5rcyIsICJydW5uaW5nIiwgInNldFBhZ2VMaXN0IiwgInNldE9wdGlvbiIsICJvcHRpb25OYW1lIiwgIm9wdGlvblZhbHVlIiwgInJ1biIsICJ0b3RhbCIsICJmblN0YXJ0TmV3Q2h1bmsiLCAid29ya2VyU3VjY2VzcyIsICJhcmciLCAiZm5Eb25lT25lIiwgIndvcmtlckZhaWx1cmUiLCAidGhpc1Byb3h5IiwgIl9pdGVyYXRvcjEzIiwgIl9zdGVwMTMiLCAicHJvZ3Jlc3MiLCAicm91bmQiLCAiZmxvb3IiLCAic3RhdHVzU3RyaW5nIiwgInNpbXBsZVdpbmRvdyIsICJ3aWR0aCIsICJoZWlnaHQiLCAiZGlhbG9nIiwgImF1dG9PcGVuIiwgImJ1dHRvbnMiLCAiUGxhY2Vob2xkZXIgYnV0dG9uIiwgImRpYWxvZ0NsYXNzIiwgImlubmVyV2lkdGgiLCAiY2xvc2UiLCAicmVzaXplU3RhcnQiLCAic2Nyb2xsYm94IiwgIm1heEhlaWdodCIsICJyZXNpemVTdG9wIiwgInJlc2l6ZSIsICIkd2lkZ2V0IiwgImVhY2giLCAiYnV0dG9uc3BhbiIsICJsaW5rc3NwYW4iLCAicmVzaXphYmxlIiwgImhhc0Zvb3RlckxpbmtzIiwgInNjcmlwdE5hbWUiLCAicHJldmVudERlZmF1bHQiLCAiZGlzcGxheSIsICJzY3JpcHRuYW1lc3BhbiIsICJzZXR1cFRvb2x0aXBzIiwgInBnIiwgImRpZmYiLCAicmFuU2V0dXBUb29sdGlwc0FscmVhZHkiLCAic2V0SGVpZ2h0IiwgInNldFRpdGxlIiwgInNldFNjcmlwdE5hbWUiLCAic2V0V2lkdGgiLCAiZ2V0Q29tcHV0ZWRTdHlsZSIsICJpbm5lckhlaWdodCIsICJzZXRDb250ZW50IiwgInB1cmdlQ29udGVudCIsICJhZGRDb250ZW50IiwgImJ1dHRvbiIsICJhZGRGb290ZXJMaW5rIiwgIndpa2lQYWdlIiwgInByZXAiLCAiJGZvb3RlcmxpbmtzIiwgImJ1bGxldCIsICJzZXRNb2RhbGl0eSIsICJtb2RhbCIsICJzZXRCdXR0b25zRW5hYmxlZCIsICJlbmFibGVkIiwgImpRdWVyeSJdCn0K diff --git a/src/CookieWarning/components/AgreeButton.tsx b/src/CookieWarning/components/AgreeButton.tsx index f6b239eff..2f972be92 100644 --- a/src/CookieWarning/components/AgreeButton.tsx +++ b/src/CookieWarning/components/AgreeButton.tsx @@ -2,7 +2,7 @@ import React from 'ext.gadget.React'; import {getMessage} from '../modules/i18n'; interface Props { - onClick(): void; + onClick: () => void; } const AgreeButton = ({onClick}: Props) => ( diff --git a/src/RRD/components/ReportButton.tsx b/src/RRD/components/ReportButton.tsx index eaa21235e..3dbb585ee 100644 --- a/src/RRD/components/ReportButton.tsx +++ b/src/RRD/components/ReportButton.tsx @@ -4,7 +4,7 @@ import {getMessage} from '../modules/i18n'; import {isSpecialLog} from '../modules/isSpecialLog'; interface Props { - onClick(): void; + onClick: () => void; } const ReportButton = ({onClick}: Props) => ( diff --git a/src/Twinkle/modules/twinklebatchprotect.js b/src/Twinkle/modules/twinklebatchprotect.js index 6d35ee0ac..506d49a23 100644 --- a/src/Twinkle/modules/twinklebatchprotect.js +++ b/src/Twinkle/modules/twinklebatchprotect.js @@ -186,11 +186,9 @@ let editProt; if (missing) { metadata[metadata.length] = '页面不存在'; - editProt = page.protection - .filter((protection) => { - return protection.type === 'create' && protection.level === 'sysop'; - }) - .pop(); + editProt = page.protection.findLast((protection) => { + return protection.type === 'create' && protection.level === 'sysop'; + }); } else { if (page.redirect) { metadata[metadata.length] = '重定向'; @@ -201,11 +199,9 @@ } else { metadata[metadata.length] = `${mw.language.convertNumber(page.revisions[0].size)}字节`; } - editProt = page.protection - .filter((protection) => { - return protection.type === 'edit' && protection.level === 'sysop'; - }) - .pop(); + editProt = page.protection.findLast((protection) => { + return protection.type === 'edit' && protection.level === 'sysop'; + }); } if (editProt) { metadata[metadata.length] = `${missing ? '白纸' : ''}全保护${ diff --git a/src/morebits/morebits.js b/src/morebits/morebits.js index 5e49dbd21..6f3440d24 100644 --- a/src/morebits/morebits.js +++ b/src/morebits/morebits.js @@ -3690,11 +3690,9 @@ import {generateArray} from 'ext.gadget.Util'; // extract protection info, to alert admins when they are about to edit a protected page // Includes cascading protection if (Morebits.userIsSysop) { - const editProt = page.protection - .filter((pr) => { - return pr.type === 'edit' && pr.level === 'sysop'; - }) - .pop(); + const editProt = page.protection.findLast((pr) => { + return pr.type === 'edit' && pr.level === 'sysop'; + }); if (editProt) { ctx.fullyProtected = editProt.expiry; } else { @@ -4089,17 +4087,13 @@ import {generateArray} from 'ext.gadget.Util'; // extract protection info let editprot; if (action === 'undelete') { - editprot = response.pages[0].protection - .filter((pr) => { - return pr.type === 'create' && pr.level === 'sysop'; - }) - .pop(); + editprot = response.pages[0].protection.findLast((pr) => { + return pr.type === 'create' && pr.level === 'sysop'; + }); } else if (action === 'delete' || action === 'move') { - editprot = response.pages[0].protection - .filter((pr) => { - return pr.type === 'edit' && pr.level === 'sysop'; - }) - .pop(); + editprot = response.pages[0].protection.findLast((pr) => { + return pr.type === 'edit' && pr.level === 'sysop'; + }); } if ( editprot &&