Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@云盘君@eyJmaXJzdEhlYWRlciI6ImNsYXNzIiwibGFzdF9jaGFwdGVyX3J1bGUiOiIiLCJ0aXRsZSI6IuS6keebmOWQmyIsImF1dGhvciI6IuWwj+ajieiihPCfjJ4iLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyNmeXBhZ2UiLCJ2ZXJzaW9uIjoyOCwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxudmFyIGQgPSBbXTtcbmFkZExpc3RlbmVyKFxuICAgICdvblJlZnJlc2gnLCAkLnRvU3RyaW5nKCgpID0+IHtcbiAgICAgICAgY2xlYXJNeVZhcigncycpXG4gICAgfSlcbilcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9zb3VcIikpLnJ1bGUpO1xubGV0IHMgPSBnZXRNeVZhcigncycsICcnKTtcbmlmIChzID09IFwiXCIpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XG5cbiAgICAgICAgICAgIGhlYWRlciA9IHtcbiAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgNi4wOyBOZXh1cyA1IEJ1aWxkL01SQTU4TikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzk5LjAuNDg0NC41MSBNb2JpbGUgU2FmYXJpLzUzNy4zNicsXG4gICAgICAgICAgICAgICAgJ0hvc3QnOiAndG9wLmJhaWR1LmNvbScsXG4gICAgICAgICAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonLFxuICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnemgtQ04semg7cT0wLjksZW4tVVM7cT0wLjgsZW47cT0wLjcnLFxuICAgICAgICAgICAgICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCwgZGVmbGF0ZSwgYnInLFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vdG9wLmJhaWR1LmNvbS9ib2FyZD90YWI9bm92ZWwnLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vdG9wLmJhaWR1LmNvbS9hcGkvYm9hcmQ/cGxhdGZvcm09d2lzZSZ0YWI9dGVsZXBsYXkmdGFnPSU3QiUyMmNhdGVnb3J5JTIyOiUyMiVFNSU4NSVBOCVFOSU4MyVBOCVFNyVCMSVCQiVFNSU5RSU4QiUyMiwlMjJjb3VudHJ5JTIyOiUyMiVFNiVBQyVBNyVFNyVCRSU4RSUyMiU3RCcsIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBsZXQgbGlzdCA9IEpTT04ucGFyc2UoanNvbikuZGF0YS5jYXJkc1swXS5jb250ZW50O1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGxpc3RbaV0ud29yZCArICcgICAgKCcgKyBsaXN0W2ldLnNob3dbMl0gKyAnKSc7XG4gICAgICAgICAgICAgICAgbGV0IGRlcyA9IGxpc3RbaV0uZGVzYztcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaSA9PSBcIjBcIiA/ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cImNvbG9yOiNmZjMzMDBcIj4nICsgKHBhcnNlSW50KGkpICsgMSkudG9TdHJpbmcoKSArICc8L3NwYW4+JyArIFwiXFx0XFx0XFx0XCIgKyBuYW1lIDogaSA9PSBcIjFcIiA/ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cImNvbG9yOiNmZjY2MDBcIj4nICsgKHBhcnNlSW50KGkpICsgMSkudG9TdHJpbmcoKSArICc8L3NwYW4+JyArIFwiXFx0XFx0XFx0XCIgKyBuYW1lIDogaSA9PSBcIjJcIiA/ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cImNvbG9yOiNmZjk5MDBcIj4nICsgKHBhcnNlSW50KGkpICsgMSkudG9TdHJpbmcoKSArICc8L3NwYW4+JyArIFwiXFx0XFx0XFx0XCIgKyBuYW1lIDogJ+KAnOKAnOKAneKAnTxzcGFuPicgKyAocGFyc2VJbnQoaSkgKyAxKS50b1N0cmluZygpICsgJzwvc3Bhbj4nICsgXCJcXHRcXHRcXHRcIiArIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3BsaXQoJyAgICAoJylbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigncycsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcbiAgICAgICAgICAgICAgICAgICAgfSwgbmFtZSksXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGRlcyxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFwidGV4dF8xXCJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgc2V0UmVzdWx0KGQpO1xufSIsInNlYXJjaF91cmwiOiJoaWtlcjovL2VtcHR5IyMqKiIsImdyb3VwIjoi4pGg5o6o6I2QIiwic2VhcmNoRmluZCI6ImpzOlxudmFyIGQgPSBbXTtcbmxldCBrZXkgPSBNWV9VUkwuc3BsaXQoXCIjI1wiKVsxXTtcbmQucHVzaCh7XG4gICAgdGl0bGU6IFwi54K55oiR5byA5aeL6IGa5ZCI5pCc57SiXCIgKyBrZXksXG4gICAgdXJsOiBcImhpa2VyOi8vcGFnZS9zb3VwP3A9ZnlwYWdlXCIsXG4gICAgZXh0cmE6IHtcbiAgICAgICAgcGFnZVRpdGxlOiBcIuaQnOe0olwiICsga2V5LFxuICAgICAgICBrZXk6IGtleVxuICAgIH1cbn0pO1xuXG5zZXRSZXN1bHQoZCk7IiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuinhOWImeWIl+ihqFwiLFwicGF0aFwiOlwiZGF0YVwiLFwicnVsZVwiOlwidmFyIHdyYXB1ID0gKHUpID0+IHtcXG4gICAgaWYoY29uZmlnLm1vZGUgPT0gXFxcIuacrOWcsOi9rOeggVxcXCIpe1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnXFxuICAgIH1cXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXCLkupHnm5jmsYflvbFcXFwiKSB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJztcXG4gICAgfVxcbiAgICBpZiAoL2FsaXl1bmRyaXZlLy50ZXN0KHUpKSB7XFxuICAgICAgICBjb25zdCBbbGluaywgX3NoYXJlX3B3ZF0gPSB1LnNwbGl0KCc/c2hhcmVfcHdkPScpO1xcbiAgICAgICAgY29uc3QgW19saW5rLCBfZm9sZGVySURdID0gbGluay5zcGxpdCgnL2ZvbGRlci8nKTtcXG4gICAgICAgIGxldCBzaGFyZV9wd2QgPSAoX3NoYXJlX3B3ZCB8fCAnJykuc3BsaXQoJyNuYW1lPScpWzBdIHx8ICcnO1xcbiAgICAgICAgbGV0IHNoYXJlSWQgPSBfbGluay5zcGxpdCgnY29tL3MvJylbMV07XFxuICAgICAgICByZXR1cm4gJ3NtYXJ0ZHJpdmU6Ly9zaGFyZS9icm93c2U/c2hhcmVJZD0nICsgc2hhcmVJZCArICcmc2hhcmVQd2Q9JyArIHNoYXJlX3B3ZDtcXG4gICAgfVxcbiAgICByZXR1cm4gXFxcIndlYjovL1xcXCIgKyB1O1xcbn07XFxubGV0IHJ1bGVzID0gW3tcXG4gICAgbmFtZTogXFxcIuS6keebmOi1hOa6kFxcXCIsXFxuICAgIHBhZ2U6IHRydWUsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIGxldCB1cmwgPSBcXFwiaHR0cHM6Ly9yZXMueXVucGFuLndpbi8/UGFnZUluZGV4PVxcXCIgKyBwYWdlICsgXFxcIiZQYWdlU2l6ZT0xMiZLZXl3b3JkPVxcXCIgKyBzICsgXFxcIiZUeXBlPSZUYWc9XFxcIjtcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vcmVzLnl1bnBhbi53aW4vXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgbGV0IGFyciA9IHBkZmEoaHRtbCwgXFxcIm1haW4mJi5jYXJkXFxcIik7XFxuICAgICAgICAvL2xvZyhhcnIpO1xcbiAgICAgICAgbGV0IGQgPSBbXTtcXG5cXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgICAgIGxldCB1ID0gcGRmaChpdCwgXFxcIi5jYXJkLWxpbmssMSYmb25jbGlja1xcXCIpLm1hdGNoKC9odHRwczpcXFxcL1xcXFwvKHd3d1xcXFwuYWxpeXVuZHJpdmVcXFxcLmNvbVxcXFwvc3xhbHl3cFxcXFwubmV0KVxcXFwvXFxcXHcqL2cpIHx8IFtdO1xcbiAgICAgICAgICAgIHUgPSB1Lmxlbmd0aCA+IDAgPyB1WzBdIDogdXJsO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0LCBcXFwiLmNhcmQtdGl0bGUmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGQoaXQsIFxcXCJpbWcmJnNyY1xcXCIsIHVybCksXFxuICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7kupHnm5jotYTmupA8L2ZvbnQ+Jm5ic3A7XFxcIiArIChwZGZoKGl0LCBcXFwiLmNhcmQtdGV4dCwtMSYmVGV4dFxcXCIpKSxcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkO1xcbiAgICB9XFxufSwge1xcbiAgICBuYW1lOiBcXFwi54yr54u455uY5pCcXFxcIixcXG4gICAgcGFnZTogZmFsc2UsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIGxldCBodG1sID0gcmVxdWVzdChcXFwiaHR0cHM6Ly93d3cuYWxpcGFuc291LmNvbS9zZWFyY2g/az1cXFwiICsgcywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYWxpcGFuc291LmNvbS9zZWFyY2g/az1cXFwiICsgc1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IGFyciA9IHBkZmEoaHRtbCwgXFxcIiNhcHAmJmFcXFwiKTtcXG4gICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBcXFwiPGRpdj5cXFwiICsgYXJyW2ldICsgXFxcIjwvZGl2PlxcXCI7XFxuICAgICAgICAgICAgbGV0IHUgPSBwZGZoKGl0LCBcXFwiYSYmaHJlZlxcXCIpO1xcbiAgICAgICAgICAgIC8vbG9nKHUpO1xcbiAgICAgICAgICAgIGlmICghdS5pbmNsdWRlcyhcXFwiL3MvXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHUgPSBcXFwiaHR0cHM6Ly93d3cuYWxpcGFuc291LmNvbVxcXCIgKyB1LnJlcGxhY2UoXFxcIi9zL1xcXCIsIFxcXCIvY3YvXFxcIik7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsIFxcXCJ0ZW1wbGF0ZSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQodSkubGF6eVJ1bGUoKHdyYXB1KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwibm9fc2hvd19kb25hdGU9MVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogaW5wdXQucmVwbGFjZShcXFwiL2N2L1xcXCIsIFxcXCIvcy9cXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBfbGlua3MgPSBodG1sLm1hdGNoKC9odHRwczpcXFxcL1xcXFwvKHd3d1xcXFwuYWxpeXVuZHJpdmVcXFxcLmNvbVxcXFwvc3xhbHl3cFxcXFwubmV0KVxcXFwvXFxcXHcqL2cpIHx8IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coX2xpbmtzKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChfbGlua3MubGVuZ3RoID4gMSAmJiBfbGlua3NbMV0ucmVwbGFjZShfbGlua3NbMF0sIFxcXCJcXFwiKS5yZXBsYWNlKC9bYS16QS1aMC05XSsvZywgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXB1KF9saW5rc1sxXSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9saW5rcy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXB1KF9saW5rc1swXSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgd3JhcHUpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+54yr54u455uY5pCcPC9mb250PiZuYnNwO1xcXCIgKyBwZGZoKGl0LCBcXFwidGVtcGxhdGUsMSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59LCB7XFxuICAgIG5hbWU6IFxcXCLmmJPmkJxcXFwiLFxcbiAgICBwYWdlOiB0cnVlLFxcbiAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxuICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoXFxcImh0dHBzOi8veWlzby5mdW4vYXBpL3NlYXJjaD9uYW1lPVxcXCIgKyBzICsgXFxcIiZwYWdlTm89XFxcIiArIHBhZ2UsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8veWlzby5mdW4vaW5mbz9zZWFyY2hLZXk9XFxcIiArIHNcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCBhcnIgPSBKU09OLnBhcnNlKGh0bWwpLmRhdGEubGlzdDtcXG4gICAgICAgIGxvZyhhcnIpO1xcbiAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgICAgIGxldCB1ID0gaXQudXJsO1xcbiAgICAgICAgICAgIGlmICh1ID09IG51bGwgfHwgIXUuaW5jbHVkZXMoXFxcImFsaXl1blxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBpdC5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KHUpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5piT5pCcPC9mb250PiZuYnNwO1xcXCIgKyAoaXQuZ210U2hhcmUgfHwgaXQuZ210Q3JlYXRlKSxcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkO1xcbiAgICB9XFxufSwge1xcbiAgICBuYW1lOiBcXFwi5bCP57q45p2hXFxcIixcXG4gICAgcGFnZTogZmFsc2UsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIGZ1bmN0aW9uIGNhdF9jb2RlKGEpIHtcXG4gICAgICAgICAgICB2YXIgZCwgZSwgYiA9IFtcXFwi5Y2O6K+t55S16KeGXFxcIiwgXFxcIuaXpemfqeeUteinhlxcXCIsIFxcXCLmrKfnvo7nlLXop4ZcXFwiLCBcXFwi5YW25LuW55S16KeGXFxcIiwgXFxcIuWNjuivreeUteW9sVxcXCIsIFxcXCLml6Xpn6nnlLXlvbFcXFwiLCBcXFwi5qyn576O55S15b2xXFxcIiwgXFxcIuWFtuS7lueUteW9sVxcXCIsIFxcXCLljY7or63liqjmvKtcXFwiLCBcXFwi5pel6Z+p5Yqo5ryrXFxcIiwgXFxcIuasp+e+juWKqOa8q1xcXCIsIFxcXCLnuqrlvZXniYdcXFwiLCBcXFwi57u86Im654mHXFxcIiwgXFxcIuaVmeiCsuWfueiurVxcXCIsIFxcXCLlhbbku5bop4bpopFcXFwiLCBcXFwi5Y2O6K+t6Z+z5LmQXFxcIiwgXFxcIuaXpemfqemfs+S5kFxcXCIsIFxcXCLmrKfnvo7pn7PkuZBcXFwiLCBcXFwi5YW25LuW6Z+z5LmQXFxcIiwgXFxcIuWoseS5kOi9r+S7tlxcXCIsIFxcXCLns7vnu5/ova/ku7ZcXFwiLCBcXFwi572R57uc6L2v5Lu2XFxcIiwgXFxcIuWKnuWFrOi9r+S7tlxcXCIsIFxcXCLlhbbku5bova/ku7ZcXFwiLCBcXFwi5ryr55S7XFxcIiwgXFxcIuWwj+ivtFxcXCIsIFxcXCLlh7rniYjkuaZcXFwiLCBcXFwi55+l6K+G5Z+56K6tXFxcIiwgXFxcIuWFtuS7luaWh+aho1xcXCIsIFxcXCLlo4HnurhcXFwiLCBcXFwi5Lq654mpXFxcIiwgXFxcIumjjuaZr1xcXCIsIFxcXCLlhbbku5blm77niYdcXFwiLCBcXFwi5YW25LuWXFxcIl0sXFxuICAgICAgICAgICAgICAgIGMgPSBbXFxcImh5ZHNcXFwiLCBcXFwicmhkc1xcXCIsIFxcXCJvbWRzXFxcIiwgXFxcInF0ZHNcXFwiLCBcXFwiaHlkeVxcXCIsIFxcXCJyaGR5XFxcIiwgXFxcIm9tZHlcXFwiLCBcXFwicXRkeVxcXCIsIFxcXCJoeWRtXFxcIiwgXFxcInJoZG1cXFwiLCBcXFwib21kbVxcXCIsIFxcXCJqbHBcXFwiLCBcXFwienlwXFxcIiwgXFxcImp5cHhcXFwiLCBcXFwicXRzcFxcXCIsIFxcXCJoeXl5XFxcIiwgXFxcInJoeXlcXFwiLCBcXFwib215eVxcXCIsIFxcXCJxdHl5XFxcIiwgXFxcImtmcmpcXFwiLCBcXFwieHRyalxcXCIsIFxcXCJ3bHJqXFxcIiwgXFxcImJncmpcXFwiLCBcXFwicXRyalxcXCIsIFxcXCJtaFxcXCIsIFxcXCJ4c1xcXCIsIFxcXCJjYnNcXFwiLCBcXFwienNweFxcXCIsIFxcXCJxdHdkXFxcIiwgXFxcImJ6XFxcIiwgXFxcInJ3XFxcIiwgXFxcImZqXFxcIiwgXFxcInF0dHBcXFwiLCBcXFwicXRcXFwiXTtcXG4gICAgICAgICAgICBmb3IgKGQgPSAwLCBlID0gYy5sZW5ndGg7IGUgPiBkOyBkKyspXFxuICAgICAgICAgICAgICAgIGlmIChjW2RdID09IGEpIHJldHVybiBiW2RdO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgIGxldCBodG1sID0gcG9zdChcXFwiaHR0cHM6Ly9naXRjYWZlLm5ldC90b29sL2FsaXBhcGVyL1xcXCIsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vdS5naXRjYWZlLm5ldC8nXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIGFjdGlvbjogXFxcInNlYXJjaFxcXCIsXFxuICAgICAgICAgICAgICAgIGtleXdvcmQ6IHNcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKGh0bWwpO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IGl0ID0gbGlzdFtpXVxcbiAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0LnRpdGxlO1xcbiAgICAgICAgICAgIGxldCBtdXJsID0gaXQua2V5XFxuICAgICAgICAgICAgaWYgKHRpdGxlLmluY2x1ZGVzKHMpKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5bCP57q45p2hPC9mb250PiZuYnNwO1xcXCIgKyBjYXRfY29kZShpdC5jYXQpLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXM6IGl0LmRlc1xcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogd3JhcHUoJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyBtdXJsKSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGQ7XFxuICAgIH1cXG59LCB7XFxuICAgIG5hbWU6IFxcXCLlv4XlupRcXFwiLFxcbiAgICBwYWdlOiB0cnVlLFxcbiAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxuICAgICAgICBsZXQgdXJsID0gXFxcImh0dHBzOi8vY24uYmluZy5jb20vc2VhcmNoP3E9XFxcIiArIHMgKyBcXFwiK2FsaXl1bmRyaXZlJnFzPWRzJmZvcm09UUJSRVxcXCI7XFxuICAgICAgICBpZiAocGFnZSAhPSAxKSB7XFxuICAgICAgICAgICAgdXJsID0gZ2V0TXlWYXIoXFxcImJpbmdcXFwiLCB1cmwpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly9jbi5iaW5nLmNvbS9cXFwiLFxcbiAgICAgICAgICAgICAgICAvL1xcXCJYLVJlcXVlc3RlZC1XaXRoXFxcIjogXFxcImNvbS5leGFtcGxlLmhpa2Vydmlld1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJBY2NlcHRcXFwiOiBcXFwidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC45XFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IGFyciA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJmFcXFwiKTtcXG4gICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgbGV0IHUgPSBwZChpdCwgXFxcImEmJmhyZWZcXFwiLCB1cmwpO1xcbiAgICAgICAgICAgIGxldCB0ID0gcGRmaChpdCwgXFxcImEmJlRleHRcXFwiKTtcXG4gICAgICAgICAgICBpZiAoaXQuaW5jbHVkZXMoXFxcIk5leHQgcGFnZVxcXCIpIHx8IGl0LmluY2x1ZGVzKFxcXCLkuIvkuIDpobVcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgdTIgPSBwZChpdCwgXFxcImEmJmhyZWZcXFwiLCB1cmwpO1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIm5leHQgcGFnZVxcXCIpO1xcbiAgICAgICAgICAgICAgICBsb2codTIpO1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiYmluZ1xcXCIsIHUyKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHUgPT0gbnVsbCB8fCB0ID09IG51bGwgfHwgIWl0LmluY2x1ZGVzKHMpKSB7XFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoIWl0LmluY2x1ZGVzKFxcXCLnvZHnm5hcXFwiKSAmJiAhaXQuaW5jbHVkZXMoXFxcIuS6keebmFxcXCIpICYmXFxuICAgICAgICAgICAgICAgICFpdC5pbmNsdWRlcyhcXFwiYWxpeXVuZHJpdmVcXFwiKSAmJiAhaXQuaW5jbHVkZXMoXFxcInl1bnBhblxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodS5zdGFydHNXaXRoKFxcXCJodHRwczovL2NuLmJpbmcuY29tL1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBsZXQgZG9tID0gZ2V0SG9tZSh1KS5yZXBsYWNlKFxcXCJodHRwOi8vXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcImh0dHBzOi8vXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIGxldCBfbGlua3MgPSB0Lm1hdGNoKC9odHRwczpcXFxcL1xcXFwvKHd3d1xcXFwuYWxpeXVuZHJpdmVcXFxcLmNvbVxcXFwvc3xhbHl3cFxcXFwubmV0KVxcXFwvXFxcXHcqL2cpIHx8IFtdO1xcbiAgICAgICAgICAgIGxvZyhfbGlua3MpO1xcbiAgICAgICAgICAgIGxldCBjID0gbnVsbDtcXG4gICAgICAgICAgICBpZiAoX2xpbmtzLmxlbmd0aCA+IDEgJiYgX2xpbmtzWzFdLnJlcGxhY2UoX2xpbmtzWzBdLCBcXFwiXFxcIikucmVwbGFjZSgvW2EtekEtWjAtOV0rL2csIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICBjID0gd3JhcHUoX2xpbmtzWzFdKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9saW5rcy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgIGMgPSB3cmFwdShfbGlua3NbMF0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdCxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPuW/heW6lDwvZm9udD4mbmJzcDtcXFwiICsgZG9tLFxcbiAgICAgICAgICAgICAgICB1cmw6IGMgIT0gbnVsbCA/IGMgOiAkKHUpLmxhenlSdWxlKCh3cmFwdSwgbW9kZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBfbGlua3MgPSBodG1sLm1hdGNoKC9odHRwczpcXFxcL1xcXFwvKHd3d1xcXFwuYWxpeXVuZHJpdmVcXFxcLmNvbVxcXFwvc3xhbHl3cFxcXFwubmV0KVxcXFwvXFxcXHcqL2cpIHx8IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKF9saW5rcyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoX2xpbmtzLmxlbmd0aCA+IDEgJiYgX2xpbmtzWzFdLnJlcGxhY2UoX2xpbmtzWzBdLCBcXFwiXFxcIikucmVwbGFjZSgvW2EtekEtWjAtOV0rL2csIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwdShfbGlua3NbMV0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfbGlua3MubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwdShfbGlua3NbMF0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcnVsZSA9IE1ZX1JVTEUudGl0bGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXCIgKyBydWxlICsgXFxcIiZyPVxcXCIgKyBydWxlICsgXFxcIiZtb2RlPVxcXCIgKyBtb2RlICsgXFxcIiMjXFxcIiArIGlucHV0O1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB3cmFwdSwgY29uZmlnLm1vZGUpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZDtcXG4gICAgfVxcbn1dO1xcblxcbmxldCBjY29mID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvY2NvZicpXFxucnVsZXMucHVzaChjY29mKVxcbi8v5bm25Y+R6KeE5YiZ5pWwXFxubGV0IHNpemUgPSAxMDtcXG5cXG4kLmV4cG9ydHMgPSBmdW5jdGlvbihwYWdlLCBydWxlKSB7XFxuICAgIGlmICghcGFnZSAmJiAhcnVsZSkge1xcbiAgICAgICAgcmV0dXJuIHJ1bGVzLm1hcChpdCA9PiBpdC5uYW1lKTtcXG4gICAgfVxcbiAgICBpZiAocnVsZSAhPSBudWxsKSB7XFxuICAgICAgICBpZiAocGFnZSAhPSBudWxsICYmIHBhZ2UgPiAxKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcihpID0+IGkubmFtZSA9PSBydWxlICYmIGkucGFnZSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gcnVsZXMuZmlsdGVyKGkgPT4gaS5uYW1lID09IHJ1bGUpO1xcbiAgICB9XFxuICAgIGxldCBzdGFydCA9IChwYWdlIC0gMSkgKiBzaXplO1xcbiAgICBpZiAocnVsZXMubGVuZ3RoIDwgc3RhcnQgKyAxKSB7XFxuICAgICAgICByZXR1cm4gW107XFxuICAgIH1cXG4gICAgbGV0IGxlbiA9IHNpemU7XFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBwYWdlICogc2l6ZSkge1xcbiAgICAgICAgbGVuID0gcnVsZXMubGVuZ3RoIC0gc3RhcnRcXG4gICAgfVxcbiAgICByZXR1cm4gcnVsZXMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKJcIixcInBhdGhcIjpcInNvdVwiLFwicnVsZVwiOlwibGV0IHIgPSBnZXRJdGVtKFxcXCJyXFxcIiwgXFxcIlxcXCIpO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgbGV0IHIxID0gZmV0Y2goXFxcImhpa2VyOi8vaG9tZUDkupHnm5jmsYflvbFcXFwiKTtcXG4gICAgaWYgKCFyMSB8fCByMS5sZW5ndGggPD0gNSkge1xcbiAgICAgICAgbGV0IHJ1ID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCLmtbfpmJTop4bnlYzop4TliJnliIbkuqvvvIzlvZPliY3liIbkuqvnmoTmmK/vvJrlsI/nqIvluo/vv6Vob21lX3J1bGVfdjLvv6ViYXNlNjQ6Ly9A5LqR55uY5rGH5b2xQGV5SnNZWE4wWDJOb1lYQjBaWEpmY25Wc1pTSTZJaUlzSW5ScGRHeGxJam9pNUxxUjU1dVk1ckdINWIyeElpd2lZWFYwYUc5eUlqb2lUWEpHYkhraUxDSjFjbXdpT2lKb2FXdGxjam92TDJWdGNIUjVKQ1FrWm5sd1lXZGxJaXdpZG1WeWMybHZiaUk2Tml3aVkyOXNYM1I1Y0dVaU9pSjBaWGgwWHpFaUxDSmpiR0Z6YzE5dVlXMWxJam9pSWl3aWRIbHdaU0k2SW1Gc2JDSXNJbU5zWVhOelgzVnliQ0k2SWlJc0ltRnlaV0ZmYm1GdFpTSTZJaUlzSW1GeVpXRmZkWEpzSWpvaUlpd2ljMjl5ZEY5dVlXMWxJam9pSWl3aWVXVmhjbDl1WVcxbElqb2lJaXdpYzI5eWRGOTFjbXdpT2lJaUxDSjVaV0Z5WDNWeWJDSTZJaUlzSW1acGJtUmZjblZzWlNJNkltcHpPbHh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4dVlXeHBMbWh2YldWUVlXZGxLQ2s3SWl3aWMyVmhjbU5vWDNWeWJDSTZJbWhwYTJWeU9pOHZaVzF3ZEhra0pDUXFLaVFrSkdaNWNHRm5aU1FrSkNJc0ltZHliM1Z3SWpvaTRwR2c1NzJSNTV1WUlpd2ljMlZoY21Ob1JtbHVaQ0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExuTmxZWEpqYUZCaFoyVW9kSEoxWlNrN1hHNGlMQ0prWlhSaGFXeGZZMjlzWDNSNWNHVWlPaUp0YjNacFpWOHhJaXdpWkdWMFlXbHNYMlpwYm1SZmNuVnNaU0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExtUmxkR0ZwYkZCaFoyVW9LVHNpTENKelpHVjBZV2xzWDJOdmJGOTBlWEJsSWpvaWJXOTJhV1ZmTVNJc0luTmtaWFJoYVd4ZlptbHVaRjl5ZFd4bElqb2lJaXdpZFdFaU9pSnRiMkpwYkdVaUxDSndjbVZTZFd4bElqb2lkbUZ5SUdGc2FXcHpJRDBnWm1WMFkyaERZV05vWlNnbmFIUjBjSE02THk5bmFYUmxaUzVqYjIwdlpteDVNVE01Tnk5b2FXdGxjaTFwWTNrdmNtRjNMMjFoYzNSbGNpOWhiR2t1YW5NbktUdGNibWxtSUNnaFlXeHBhbk1nZkh3Z0lXRnNhV3B6TG1sdVkyeDFaR1Z6S0NkaGJHa3VKeWtwSUh0Y2JpQWdJQ0JoYkdscWN5QTlJR1psZEdOb1EyRmphR1VvSjJoMGRIQnpPaTh2WTJSdUxtcHpaR1ZzYVhaeUxtNWxkQzluYUM5bWJIa3hNemszTDJocGEyVnlMV2xqZVM5aGJHa3Vhbk1uS1Z4dWZWeHVhV1lnS0NGaGJHbHFjeUI4ZkNBaFlXeHBhbk11YVc1amJIVmtaWE1vSjJGc2FTNG5LU2tnZTF4dUlDQWdJR0ZzYVdweklEMGdabVYwWTJoRFlXTm9aU2duYUhSMGNEb3ZMMnhtYVdONUxtTnZiVG96TURBd01DOXRjbVpzZVM5b2FXdGxjaTFwWTNrdmNtRjNMMjFoYzNSbGNpOWhiR2t1YW5NbktWeHVmVnh1YVdZZ0tHRnNhV3B6S1NCN1hHNGdJQ0FnZDNKcGRHVkdhV3hsS0Z3aWFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpYQ0lzSUdGc2FXcHpLVHRjYmlBZ0lDQmxkbUZzS0dGc2FXcHpLVHRjYmlBZ0lDQmhiR2t1Y0hKbFVuVnNaU2dwTzF4dWZTSXNJbkJoWjJWeklqb2lXM3RjSW1OdmJGOTBlWEJsWENJNlhDSnRiM1pwWlY4elhDSXNYQ0p1WVcxbFhDSTZYQ0xudlpIbm01am9yNmJtZzRWY0lpeGNJbkJoZEdoY0lqcGNJbVJsZEdGcGJGd2lMRndpY25Wc1pWd2lPbHdpYW5NNlhGeHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXhjYm1Gc2FTNXBibWwwUTI5dVptbG5LQ2s3WEZ4dVlXeHBMbUZzYVZKMWJHVW9LVHRjSW4wc2Uxd2lZMjlzWDNSNWNHVmNJanBjSW0xdmRtbGxYekZmYkdWbWRGOXdhV05jSWl4Y0ltNWhiV1ZjSWpwY0l1aTFoT2E2a09lOWtlbWh0ZWl2cHVhRGhWd2lMRndpY0dGMGFGd2lPbHdpYzJsMFpTMWtaWFJoYVd4Y0lpeGNJbkoxYkdWY0lqcGNJbXB6T2x4Y2JtVjJZV3dvWm1WMFkyZ29KMmhwYTJWeU9pOHZabWxzWlhNdmNuVnNaWE12YVdONUwyRnNhUzVxY3ljcEtUdGNYRzVoYkdrdVpHVjBZV2xzVUdGblpTZ3BPMXdpZlN4N1hDSmpiMnhmZEhsd1pWd2lPbHdpYlc5MmFXVmZNMXdpTEZ3aWJtRnRaVndpT2x3aTVMaXE1THE2NTcyUjU1dVk2SyttNW9PRlhDSXNYQ0p3WVhSb1hDSTZYQ0prY21sMlpWd2lMRndpY25Wc1pWd2lPbHdpYW5NNlhGeHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXhjYm1Gc2FTNXBibWwwUTI5dVptbG5LQ2s3WEZ4dVlXeHBMbTE1UVd4cFVuVnNaU2dwTzF3aWZWMGlMQ0pwWTI5dUlqb2lhSFIwY0hNNkx5OW5hWFJsWlM1amIyMHZabXg1TVRNNU55OW9hV3RsY2kxcFkza3ZjbUYzTDIxaGMzUmxjaTloYkdsNWRXNHVjRzVuSWl3aWNISnZlSGtpT2lJaWZRPT1cXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgIHRpdGxlOiBNWV9SVUxFLnRpdGxlICsgJ+aPkOekuicsXFxuICAgICAgICAgICAgY29udGVudDogJ+acrOinhOWImeS+nei1luS6keebmOaxh+W9seinhOWIme+8jOeCueWHu+S4i+mdoueahOehruWumuaMiemSruWvvOWFpe+8jOazqOaEj+WvvOWFpeWQjuS4gOWumuimgeWcqOS6keebmOaxh+W9seeZu+W9lemYv+mHjOS6keebmOi0puWPt++8jOWQpuWImeS4jeiDveeUqCcsXFxuICAgICAgICAgICAgY29uZmlybTogcnUsXFxuICAgICAgICAgICAgY2FuY2VsOiBydVxcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwic1xcXCIpO1xcbiAgICB9KSk7XFxuICAgIGxldCB0aXAgPSBcXFwi5LqR55uY5pCc57Si5ZCbIOajgOe0ouWKn+iDveeUseWvueW6lOe9keermeaPkOS+m++8jOacrOinhOWImeS4jeaPkOS+m+S7u+S9leWGheWuuVxcXCI7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogdGlwLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCh0aXApID0+IHtcXG4gICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLkvb/nlKjor7TmmI5cXFwiLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0aXAgKyBcXFwi77yM5pys6KeE5YiZ5Luj56CB5a6M5YWo5byA5rqQ77yM5LuF5L6b5a2m5Lmg5ZKM56CU56m277yb54K55Ye75LiL5pa556Gu5a6a5oyJ6ZKu6Lez6L2s5LqR55uY5rGH5b2x5bCP56iL5bqPXFxcIixcXG4gICAgICAgICAgICAgICAgY29uZmlybTogXFxcIidoaWtlcjovL2hvbWVA5LqR55uY5rGH5b2xJ1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9LCB0aXApLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uXzJfcm91bmRcXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICBwaWNfdXJsOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbjJcXFwiXFxuICAgIH0pO1xcbiAgICBsZXQgZG1vZGUgPSBnZXRJdGVtKFxcXCJkbW9kZVxcXCIsIFxcXCLkupHnm5jmsYflvbFcXFwiKTtcXG4gICAgaW5pdENvbmZpZyh7XFxuICAgICAgICBtb2RlOiBkbW9kZVxcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5qih5byP77yaXFxcIiArIGRtb2RlLFxcbiAgICAgICAgdXJsOiBcXFwic2VsZWN0Oi8vXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIumAieaLqeaooeW8j1xcXCIsXFxuICAgICAgICAgICAgb3B0aW9uczogW1xcXCLkupHnm5jmsYflvbFcXFwiLCBcXFwi5pys5Zyw6L2s56CBXFxcIiwgXFxcIuWumOaWuUFQUFxcXCJdLFxcbiAgICAgICAgICAgIGNvbDogMSxcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImRtb2RlXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIuWumOaWuUFQUFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip/vvIzor7fnoa7kv53miYvmnLrmnInlronoo4XpmL/ph4zkupHnm5jlrpjmlrlBUFBcXFwiO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/ruaUueaIkOWKn++8jOazqOaEj+imgeWcqOS6keebmOaxh+W9seiuvue9rumHjOmdoueZu+W9lei0puWPt1xcXCJcXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImljb25fMl9yb3VuZFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgIHBpY191cmw6IFxcXCJoaWtlcjovL2ltYWdlcy9pY29uMVxcXCJcXG4gICAgfSk7XFxuXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxuICAgICAgICBkZXNjOiAn6K+36L6T5YWl5YWz6ZSu6K+NJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcigncycsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0pLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCdzJywgJycpXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBsZXQgcnVsZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcIikoKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiXFxcIiA9PSByID8gXFxcIuKAnOKAnOWFqOmDqOKAneKAnVxcXCIgOiBcXFwi5YWo6YOoXFxcIixcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCJyXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgIHBpY191cmw6IFxcXCJcXFwiXFxuICAgIH0pO1xcbiAgICBmb3IgKGxldCBpdCBvZiBydWxlcykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaXQgPT0gciA/IFxcXCLigJzigJxcXFwiICsgaXQgKyBcXFwi4oCd4oCdXFxcIiA6IGl0LFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgocikgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJyXFxcIiwgcik7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBpdCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiAneXBqLWwnXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn1cXG5sZXQgcyA9IGdldE15VmFyKCdzJywgJycpO1xcbmlmIChzICE9IFxcXCJcXFwiKSB7XFxuICAgIGxldCBwID0gTVlfUEFHRTtcXG4gICAgbGV0IGRhdGEgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcIikocCwgciAhPSBcXFwiXFxcIiA/IHIgOiBudWxsKTtcXG5cXG4gICAgbGV0IHBhZ2VpZCA9IFxcXCJ5cGotcGFnZVxcXCIgKyBwO1xcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5Yqg6L2956ysXFxcIiArIHAgKyBcXFwi6aG15Lit77yM6L+b5bqm77yaMS9cXFwiICsgZGF0YS5sZW5ndGgsXFxuICAgICAgICAgICAgdXJsOiBcXFwiXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBwYWdlaWRcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBzZXRSZXN1bHQoZCk7XFxuICAgIGxvZyhkYXRhLmxlbmd0aCk7XFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIC8v5aSa57q/56iL5Yqg6L29ICAgICAgICBcXG4gICAgICAgIGxldCByZWFsUGFnZSA9IFxcXCJcXFwiID09IHIgPyAxIDogcDtcXG4gICAgICAgIGxldCB0YXNrcyA9IGRhdGEubWFwKGl0ID0+IHtcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICBmdW5jOiBmdW5jdGlvbihydWxlKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5maW5kKHMsIHJlYWxQYWdlKTtcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgcGFyYW06IGl0LFxcbiAgICAgICAgICAgICAgICBpZDogXFxcInJ1bGVAXFxcIiArIGl0Lm5hbWVcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGJhdGNoRXhlY3V0ZSh0YXNrcywge1xcbiAgICAgICAgICAgIGZ1bmM6IGZ1bmN0aW9uKHBhcmFtLCBpZCwgZXJyb3IsIHJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICAvL2xvZyhcXFwibGlzdGVuZXI6IFxcXCIgKyAocmVzdWx0IHx8IFtdKS5sZW5ndGgpXFxuICAgICAgICAgICAgICAgIHBhcmFtLmkgPSBwYXJhbS5pICsgMTtcXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpdCBvZiByZXN1bHQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uaiA9IHBhcmFtLmogKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRJdGVtQmVmb3JlKHBhZ2VpZCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0LnRpdGxlLmluY2x1ZGVzKFxcXCLigJzigJzigJ3igJ1cXFwiKSA/IGl0LnRpdGxlIDogXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBpdC50aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcIjxlbT58PC9lbT5cXFwiLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIikucmVwbGFjZShuZXcgUmVnRXhwKHMsIFxcXCJnXFxcIiksIFxcXCI8c3Ryb25nPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6ICMxRTkwRkZcXFxcXFxcIj5cXFwiICsgcyArIFxcXCI8L3NwYW4+PC9zdHJvbmc+XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdC5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdC51cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdC5waWNfdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGl0LnBpY191cmwgPyAnbW92aWVfMV92ZXJ0aWNhbF9waWMnIDogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcXFwiX19hcHBcXFwiICsgTVlfUEFHRSArIFxcXCJAXFxcIiArIHBhcmFtLmosXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtLmkgPj0gcGFyYW0uYWxsKSB7XFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtKHBhZ2VpZClcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5Yqg6L2956ysXFxcIiArIE1ZX1BBR0UgKyBcXFwi6aG15Lit77yM6L+b5bqm77yaXFxcIiArIChwYXJhbS5pICsgMSkgKyBcXFwiL1xcXCIgKyBwYXJhbS5hbGwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYWdlaWRcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBwYXJhbToge1xcbiAgICAgICAgICAgICAgICBhbGw6IGRhdGEubGVuZ3RoLFxcbiAgICAgICAgICAgICAgICBpOiAwLFxcbiAgICAgICAgICAgICAgICBqOiAtMVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKLpobXpnaJcIixcInBhdGhcIjpcInNvdXBcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuaWYgKE1ZX1BBUkFNUy5rZXkpIHtcXG4gICAgcHV0TXlWYXIoXFxcInNcXFwiLCBNWV9QQVJBTVMua2V5KTtcXG59XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc291XFxcIikpLnJ1bGUpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiQ0NPRlwiLFwicGF0aFwiOlwiY2NvZlwiLFwicnVsZVwiOlwidmFyIHdyYXB1ID0gKHUpID0+IHtcXG4gICAgaWYoY29uZmlnLm1vZGUgPT0gXFxcIuacrOWcsOi9rOeggVxcXCIpe1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnXFxuICAgIH1cXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXCLkupHnm5jmsYflvbFcXFwiKSB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJztcXG4gICAgfVxcbiAgICBpZiAoL2FsaXl1bmRyaXZlLy50ZXN0KHUpKSB7XFxuICAgICAgICBjb25zdCBbbGluaywgX3NoYXJlX3B3ZF0gPSB1LnNwbGl0KCc/c2hhcmVfcHdkPScpO1xcbiAgICAgICAgY29uc3QgW19saW5rLCBfZm9sZGVySURdID0gbGluay5zcGxpdCgnL2ZvbGRlci8nKTtcXG4gICAgICAgIGxldCBzaGFyZV9wd2QgPSAoX3NoYXJlX3B3ZCB8fCAnJykuc3BsaXQoJyNuYW1lPScpWzBdIHx8ICcnO1xcbiAgICAgICAgbGV0IHNoYXJlSWQgPSBfbGluay5zcGxpdCgnY29tL3MvJylbMV07XFxuICAgICAgICByZXR1cm4gJ3NtYXJ0ZHJpdmU6Ly9zaGFyZS9icm93c2U/c2hhcmVJZD0nICsgc2hhcmVJZCArICcmc2hhcmVQd2Q9JyArIHNoYXJlX3B3ZDtcXG4gICAgfVxcbiAgICByZXR1cm4gXFxcIndlYjovL1xcXCIgKyB1O1xcbn07XFxuJC5leHBvcnRzID0ge1xcbiAgICBuYW1lOiAnQ0NPRicsXFxuICAgIHBhZ2U6IHRydWUsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIGxldCBkID0gW11cXG4gICAgICAgIGNvbnN0IHtcXG4gICAgICAgICAgICBieXRlc1RvU2l6ZSxcXG4gICAgICAgICAgICBjb2xvclxcbiAgICAgICAgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3Rvb2xzJyk7XFxuICAgICAgICBsZXQgaHRtbCA9IGZldGNoKCdodHRwczovL3Bhbi5jY29mLmNjL2FwaS9zZWFyY2gnLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiY29udGVudC10eXBlXFxcIjogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3Bhbi5jY29mLmNjL3NlYXJjaD9rZXl3b3JkPScgKyBzXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlU2l6ZVxcXCI6IDIwLFxcbiAgICAgICAgICAgICAgICBcXFwicGFnZU51bVxcXCI6IHBhZ2UsXFxuICAgICAgICAgICAgICAgIFxcXCJrZXl3b3JkXFxcIjogcyxcXG4gICAgICAgICAgICAgICAgXFxcImZyb21Nb2JpbGVcXFwiOiB0cnVlXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShodG1sKVxcbiAgICAgICAgICAgIC5kYXRhLnJvd3NcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdCA9IGxpc3RbaV1cXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBpdC5maWxlTmFtZVxcbiAgICAgICAgICAgIGxldCBtdXJsID0gaXQudXJsXFxuICAgICAgICAgICAgbGV0IHR5cGUgPSBpdC50eXBlLnJlcGxhY2UoL2ZvbGRlci8sICfmlofku7blpLknKS5yZXBsYWNlKC9maWxlLywgJ+aWh+S7ticpXFxuICAgICAgICAgICAgaWYgKHRpdGxlLmluY2x1ZGVzKHMpKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+Q0NPRjwvZm9udD4mbmJzcDsnICsgJ+aWh+S7tuexu+Wei++8micgKyB0eXBlICsgJ++8jOaWh+S7tuWkp+Wwj++8micgKyBieXRlc1RvU2l6ZShpdC5zaXplKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogd3JhcHUobXVybClcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZFxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5bel5YW3XCIsXCJwYXRoXCI6XCJ0b29sc1wiLFwicnVsZVwiOlwiZnVuY3Rpb24gYnl0ZXNUb1NpemUoc2l6ZSkge1xcbiAgICBpZiAoc2l6ZSA8IDAuMSAqIDEwMjQpIHtcXG4gICAgICAgIC8v5bCP5LqOMC4xS0LvvIzliJnovazljJbmiJBCXFxuICAgICAgICBzaXplID0gc2l6ZS50b0ZpeGVkKDIpICsgXFxcIkJcXFwiO1xcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAwLjEgKiAxMDI0ICogMTAyNCkge1xcbiAgICAgICAgLy8g5bCP5LqOMC4xTULvvIzliJnovazljJbmiJBLQlxcbiAgICAgICAgc2l6ZSA9IChzaXplIC8gMTAyNCkudG9GaXhlZCgyKSArIFxcXCJLQlxcXCI7XFxuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDAuMSAqIDEwMjQgKiAxMDI0ICogMTAyNCkge1xcbiAgICAgICAgLy8g5bCP5LqOMC4xR0LvvIzliJnovazljJbmiJBNQlxcbiAgICAgICAgc2l6ZSA9IChzaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArIFxcXCJNQlxcXCI7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyDlhbbku5bovazljJbmiJBHQlxcbiAgICAgICAgc2l6ZSA9IChzaXplIC8gKDEwMjQgKiAxMDI0ICogMTAyNCkpLnRvRml4ZWQoMikgKyBcXFwiR0JcXFwiO1xcbiAgICB9XFxuICAgIC8vIOi9rOaIkOWtl+espuS4slxcbiAgICBsZXQgc2l6ZVN0ciA9IHNpemUgKyBcXFwiXFxcIixcXG4gICAgICAgIC8vIOiOt+WPluWwj+aVsOeCueWkhOeahOe0ouW8lVxcbiAgICAgICAgaW5kZXggPSBzaXplU3RyLmluZGV4T2YoXFxcIi5cXFwiKSxcXG4gICAgICAgIC8vIOiOt+WPluWwj+aVsOeCueWQjuS4pOS9jeeahOWAvFxcbiAgICAgICAgZG91ID0gc2l6ZVN0ci5zdWJzdHIoaW5kZXggKyAxLCAyKTtcXG4gICAgLy8g5Yik5pat5ZCO5Lik5L2N5piv5ZCm5Li6MDDvvIzlpoLmnpzmmK/liJnliKDpmaQwMFxcbiAgICBpZiAoZG91ID09PSBcXFwiMDBcXFwiKSByZXR1cm4gc2l6ZVN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpICsgc2l6ZVN0ci5zdWJzdHIoaW5kZXggKyAzLCAyKTtcXG4gICAgcmV0dXJuIHNpemU7XFxufVxcbiQuZXhwb3J0cy5ieXRlc1RvU2l6ZSA9IGJ5dGVzVG9TaXplO1xcbiQuZXhwb3J0cy5jb2xvciA9IGZ1bmN0aW9uKHRleHQsIGNvbG9yKSB7XFxuICAgIHRleHQgKz0gXFxcIlxcXCI7XFxuICAgIGlmICh0ZXh0LmluZGV4T2YoXFxcIuKAnOKAnOKAneKAnVxcXCIpID09PSAwKSB7XFxuICAgICAgICB0ZXh0LnJlcGxhY2UoXFxcIuKAnOKAnOKAneKAnVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgfVxcbiAgICByZXR1cm4gXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSdcXFwiICsgY29sb3IgKyBcXFwiJz5cXFwiICsgdGV4dCArIFxcXCI8L2ZvbnQ+XFxcIjtcXG59XFxuXFxuJC5leHBvcnRzLnNsZWVwID0gZnVuY3Rpb24odGltZW91dCkge1xcbiAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKHRpbWVvdXQpO1xcbn1cXG5cXG5mdW5jdGlvbiBodG1sVGFnKHRhZywgdGV4dCkge1xcbiAgICB0ZXh0ICs9IFxcXCJcXFwiO1xcbiAgICBpZiAodGV4dC5pbmRleE9mKFxcXCLigJzigJzigJ3igJ1cXFwiKSA9PT0gMCkge1xcbiAgICAgICAgdGV4dC5yZXBsYWNlKFxcXCLigJzigJzigJ3igJ1cXFwiLCBcXFwiXFxcIik7XFxuICAgIH1cXG4gICAgcmV0dXJuIFxcXCLigJzigJzigJ3igJ1cXFwiICsgXFxcIjxcXFwiICsgdGFnICsgXFxcIj5cXFwiICsgdGV4dCArIFxcXCI8L1xcXCIgKyB0YWcgKyBcXFwiPlxcXCI7XFxuXFxufVxcbiQuZXhwb3J0cy5odG1sVGFnID0gaHRtbFRhZztcXG4kLmV4cG9ydHMuc21hbGwgPSBmdW5jdGlvbih0ZXh0KSB7XFxuICAgIHJldHVybiBodG1sVGFnKFxcXCJzbWFsbFxcXCIsIHRleHQpO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRUaW1lKGZpbGUsaXNTdGFuZGFyZCkge1xcbiAgICBpc1N0YW5kYXJkID0gaXNTdGFuZGFyZHx8ZmFsc2U7XFxuICAgIGxldCB0VGltZSA9IGZpbGUudXBkYXRlZF9hdCB8fCBmaWxlLnRpbWVfc3RyIHx8IFxcXCJcXFwiO1xcbiAgICB0VGltZSA9IHRUaW1lLnNwbGl0KFxcXCJUXFxcIik7XFxuICAgIGxldCBkYXRlID0gdFRpbWVbMF07XFxuICAgIGlmKGlzU3RhbmRhcmQpe1xcbiAgICAgICAgZGF0ZSA9IGRhdGUucmVwbGFjZSgvLS9nLFxcXCIvXFxcIik7XFxuICAgIH1cXG4gICAgdFRpbWUgPSB0VGltZVsxXS5zcGxpdCgvWnxcXFxcLi8pO1xcbiAgICBkYXRlICs9IFxcXCIgXFxcIiArIHRUaW1lWzBdO1xcbiAgICByZXR1cm4gZGF0ZTtcXG59XFxuZnVuY3Rpb24gZ2V0VGltZUludCh0aW1lU3RyKXtcXG4gICAgcmV0dXJuIChuZXcgRGF0ZSh0aW1lU3RyKSkuZ2V0VGltZSgpXFxufVxcbiQuZXhwb3J0cy5nZXRUaW1lID0gZ2V0VGltZTtcXG5cXG5sZXQgY2huTnVtQ2hhciA9IHtcXG4gICAg6Zu2OiAwLFxcbiAgICDkuIA6IDEsXFxuICAgIOS6jDogMixcXG4gICAg5LiJOiAzLFxcbiAgICDlm5s6IDQsXFxuICAgIOS6lDogNSxcXG4gICAg5YWtOiA2LFxcbiAgICDkuIM6IDcsXFxuICAgIOWFqzogOCxcXG4gICAg5LmdOiA5XFxufTtcXG5cXG5sZXQgY2huTmFtZVZhbHVlID0ge1xcbiAgICDljYE6IHtcXG4gICAgICAgIHZhbHVlOiAxMCxcXG4gICAgICAgIHNlY1VuaXQ6IGZhbHNlXFxuICAgIH0sXFxuICAgIOeZvjoge1xcbiAgICAgICAgdmFsdWU6IDEwMCxcXG4gICAgICAgIHNlY1VuaXQ6IGZhbHNlXFxuICAgIH0sXFxuICAgIOWNgzoge1xcbiAgICAgICAgdmFsdWU6IDEwMDAsXFxuICAgICAgICBzZWNVbml0OiBmYWxzZVxcbiAgICB9LFxcbiAgICDkuIc6IHtcXG4gICAgICAgIHZhbHVlOiAxMDAwMCxcXG4gICAgICAgIHNlY1VuaXQ6IHRydWVcXG4gICAgfSxcXG4gICAg5Lq/OiB7XFxuICAgICAgICB2YWx1ZTogMTAwMDAwMDAwLFxcbiAgICAgICAgc2VjVW5pdDogdHJ1ZVxcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIENoaW5lc2VUb051bWJlcihjaG5TdHIpIHtcXG4gICAgbGV0IHJ0biA9IDA7XFxuICAgIGxldCBzZWN0aW9uID0gMDtcXG4gICAgbGV0IG51bWJlciA9IDA7XFxuICAgIGxldCBzZWNVbml0ID0gZmFsc2U7XFxuICAgIGxldCBzdHIgPSBjaG5TdHIuc3BsaXQoJycpO1xcblxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IG51bSA9IGNobk51bUNoYXJbc3RyW2ldXTtcXG4gICAgICAgIGlmICh0eXBlb2YgbnVtICE9PSAndW5kZWZpbmVkJykge1xcbiAgICAgICAgICAgIG51bWJlciA9IG51bTtcXG4gICAgICAgICAgICBpZiAoaSA9PT0gc3RyLmxlbmd0aCAtIDEpIHtcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiArPSBudW1iZXI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsZXQgdW5pdCA9IGNobk5hbWVWYWx1ZVtzdHJbaV1dLnZhbHVlO1xcbiAgICAgICAgICAgIHNlY1VuaXQgPSBjaG5OYW1lVmFsdWVbc3RyW2ldXS5zZWNVbml0O1xcbiAgICAgICAgICAgIGlmIChzZWNVbml0KSB7XFxuICAgICAgICAgICAgICAgIHNlY3Rpb24gPSAoc2VjdGlvbiArIG51bWJlcikgKiB1bml0O1xcbiAgICAgICAgICAgICAgICBydG4gKz0gc2VjdGlvbjtcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9IDA7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiArPSAobnVtYmVyICogdW5pdCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIG51bWJlciA9IDA7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJ0biArIHNlY3Rpb247XFxufVxcblxcbmZ1bmN0aW9uIG5hbWVDb21wYXJlKGEsIGIpIHtcXG4gICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpXFxuICAgICAgICByZXR1cm4gYSA9PSBudWxsID8gYiA9PSBudWxsID8gMCA6IC0xIDogMTtcXG5cXG4gICAgYSA9IGEucmVwbGFjZSgvKFvpm7bkuIDkuozkuInlm5vkupTlha3kuIPlhavkuZ3ljYHnmb7ljYPkuIfkur9dKS9nLCBmdW5jdGlvbihtYXRjaCwgcDEsIHAyLCBwMywgb2Zmc2V0LCBzdHJpbmcpIHtcXG4gICAgICAgIC8vIHAxIGlzIG5vbmRpZ2l0cywgcDIgZGlnaXRzLCBhbmQgcDMgbm9uLWFscGhhbnVtZXJpY3NcXG4gICAgICAgIHJldHVybiBDaGluZXNlVG9OdW1iZXIocDEpO1xcbiAgICB9KVxcbiAgICBiID0gYi5yZXBsYWNlKC8oW+mbtuS4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5neWNgeeZvuWNg+S4h+S6v10pL2csIGZ1bmN0aW9uKG1hdGNoLCBwMSwgcDIsIHAzLCBvZmZzZXQsIHN0cmluZykge1xcbiAgICAgICAgLy8gcDEgaXMgbm9uZGlnaXRzLCBwMiBkaWdpdHMsIGFuZCBwMyBub24tYWxwaGFudW1lcmljc1xcbiAgICAgICAgcmV0dXJuIENoaW5lc2VUb051bWJlcihwMSk7XFxuICAgIH0pXFxuXFxuICAgIGxldCBOVU1CRVJTID0gamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4uY29tcGlsZShcXFwiKD88PVxcXFxcXFxcRCkoPz1cXFxcXFxcXGQpfCg/PD1cXFxcXFxcXGQpKD89XFxcXFxcXFxEKVxcXCIpXFxuICAgIGxldCBzcGxpdDEgPSBOVU1CRVJTLnNwbGl0KG5ldyBqYXZhLmxhbmcuU3RyaW5nKGEpKTtcXG4gICAgbGV0IHNwbGl0MiA9IE5VTUJFUlMuc3BsaXQobmV3IGphdmEubGFuZy5TdHJpbmcoYikpO1xcblxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKHNwbGl0MS5sZW5ndGgsIHNwbGl0Mi5sZW5ndGgpOyBpKyspIHtcXG4gICAgICAgIGxldCBjMSA9IHNwbGl0MVtpXS5jaGFyQ29kZUF0KDApO1xcbiAgICAgICAgbGV0IGMyID0gc3BsaXQyW2ldLmNoYXJDb2RlQXQoMCk7XFxuICAgICAgICBsZXQgY21wID0gMDtcXG4gICAgICAgIGxldCB6ZXJvQ2hhckNvZGUgPSAnMCcuY2hhckNvZGVBdCgwKTtcXG4gICAgICAgIGxldCBuaW5lQ2hhckNvZGUgPSAnOScuY2hhckNvZGVBdCgwKTtcXG5cXG4gICAgICAgIGlmIChjMSA+PSB6ZXJvQ2hhckNvZGUgJiYgYzEgPD0gbmluZUNoYXJDb2RlICYmIGMyID49IHplcm9DaGFyQ29kZSAmJiBjMiA8PSBuaW5lQ2hhckNvZGUpIHtcXG4gICAgICAgICAgICBjbXAgPSBuZXcgamF2YS5tYXRoLkJpZ0ludGVnZXIoc3BsaXQxW2ldKS5jb21wYXJlVG8obmV3IGphdmEubWF0aC5CaWdJbnRlZ2VyKHNwbGl0MltpXSkpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgaWYgKGNtcCA9PT0gMCkge1xcbiAgICAgICAgICAgIGxldCByZWdleCA9IC9bYS16QS1aMC05XS9cXG4gICAgICAgICAgICBsZXQgczEgPSBTdHJpbmcoc3BsaXQxW2ldKVxcbiAgICAgICAgICAgIGxldCBzMiA9IFN0cmluZyhzcGxpdDJbaV0pXFxuICAgICAgICAgICAgaWYgKHJlZ2V4LnRlc3QoczEpIHx8IHJlZ2V4LnRlc3QoczIpKSB7XFxuICAgICAgICAgICAgICAgIGNtcCA9IG5ldyBqYXZhLmxhbmcuU3RyaW5nKHNwbGl0MVtpXSkuY29tcGFyZVRvKG5ldyBqYXZhLmxhbmcuU3RyaW5nKHNwbGl0MltpXSkpO1xcbiAgICAgICAgICAgICAgICAvLyBjbXAgPSBzMS5sb2NhbGVDb21wYXJlKHMyLCAnZW4nKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGNtcCA9IHMxLmxvY2FsZUNvbXBhcmUoczIsICd6aCcpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgaWYgKGNtcCAhPT0gMCkge1xcbiAgICAgICAgICAgIHJldHVybiBjbXA7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgbGV0IGxlbmd0aENtcCA9IHNwbGl0MS5sZW5ndGggLSBzcGxpdDIubGVuZ3RoO1xcbiAgICAvLyBpZiAobGVuZ3RoQ21wICE9PSAwKSBsZW5ndGhDbXAgPSBsZW5ndGhDbXAgPiAwID8gLTEgOiAxO1xcbiAgICByZXR1cm4gbGVuZ3RoQ21wO1xcbn1cXG5cXG4kLmV4cG9ydHMuc29ydHMgPSBmdW5jdGlvbihsaXN0LCBzb3J0KSB7XFxuICAgIGlmIChzb3J0ID09PSBcXFwi57G75Z6LXFxcIikge1xcbiAgICAgICAgLy8gbG9nKFxcXCLnsbvlnovmjpLluo9cXFwiKTtcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGEudHlwZSAtIGIudHlwZVxcbiAgICAgICAgfSk7XFxuICAgIH0gZWxzZSBpZiAoc29ydCA9PT0gXFxcIuWQjeensFxcXCIpIHtcXG4gICAgICAgIC8vIGxvZyhcXFwi5ZCN56ew5o6S5bqPXFxcIik7XFxuICAgICAgICAvLyBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgLy8gICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUsIFxcXCJ6aFxcXCIpXFxuICAgICAgICAvLyB9KTtcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIG5hbWVDb21wYXJlKGEubmFtZXx8YS50aXRsZSwgYi5uYW1lfHxiLnRpdGxlKTtcXG4gICAgICAgIH0pO1xcbiAgICB9IGVsc2UgaWYgKHNvcnQgPT09IFxcXCLlpKflsI9cXFwiKSB7XFxuICAgICAgICAvLyBsb2coXFxcIuWkp+Wwj+aOkuW6j1xcXCIpO1xcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgICAgICByZXR1cm4gKGEuc2l6ZSB8fCBOdW1iZXIoYS5zaXplX3N0cikgfHwgMCkgLSAoYi5zaXplIHx8IE51bWJlcihiLnNpemVfc3RyKSB8fCAwKTtcXG4gICAgICAgIH0pO1xcbiAgICB9ZWxzZSBpZiAoc29ydCA9PT0gXFxcIuaXtumXtFxcXCIpIHtcXG4gICAgICAgIC8vIGxvZyhcXFwi5pe26Ze05o6S5bqPXFxcIik7XFxuICAgICAgICBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiBnZXRUaW1lSW50KGdldFRpbWUoYSx0cnVlKSkgLSBnZXRUaW1lSW50KGdldFRpbWUoYix0cnVlKSlcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHJldHVybiBsaXN0XFxufVxcblxcbmZ1bmN0aW9uIHNpbWlsYXIocywgdCwgZikgey8v5Yik5pat5Lik5Liq5a2X56ym5Liy5LmL6Ze055qE55u45Ly85bqmXFxuICAgIGlmICghcyB8fCAhdCkge1xcbiAgICAgICAgcmV0dXJuIDBcXG4gICAgfVxcbiAgICBpZihzID09PSB0KXtcXG4gICAgICAgIHJldHVybiAxMDA7XFxuICAgIH1cXG4gICAgdmFyIGwgPSBzLmxlbmd0aCA+IHQubGVuZ3RoID8gcy5sZW5ndGggOiB0Lmxlbmd0aFxcbiAgICB2YXIgbiA9IHMubGVuZ3RoXFxuICAgIHZhciBtID0gdC5sZW5ndGhcXG4gICAgdmFyIGQgPSBbXVxcbiAgICBmID0gZiB8fCAyXFxuICAgIHZhciBtaW4gPSBmdW5jdGlvbiAoYSwgYiwgYykge1xcbiAgICAgICAgcmV0dXJuIGEgPCBiID8gKGEgPCBjID8gYSA6IGMpIDogKGIgPCBjID8gYiA6IGMpXFxuICAgIH1cXG4gICAgdmFyIGksIGosIHNpLCB0aiwgY29zdFxcbiAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1cXG4gICAgaWYgKG0gPT09IDApIHJldHVybiBuXFxuICAgIGZvciAoaSA9IDA7IGkgPD0gbjsgaSsrKSB7XFxuICAgICAgICBkW2ldID0gW11cXG4gICAgICAgIGRbaV1bMF0gPSBpXFxuICAgIH1cXG4gICAgZm9yIChqID0gMDsgaiA8PSBtOyBqKyspIHtcXG4gICAgICAgIGRbMF1bal0gPSBqXFxuICAgIH1cXG4gICAgZm9yIChpID0gMTsgaSA8PSBuOyBpKyspIHtcXG4gICAgICAgIHNpID0gcy5jaGFyQXQoaSAtIDEpXFxuICAgICAgICBmb3IgKGogPSAxOyBqIDw9IG07IGorKykge1xcbiAgICAgICAgICAgIHRqID0gdC5jaGFyQXQoaiAtIDEpXFxuICAgICAgICAgICAgaWYgKHNpID09PSB0aikge1xcbiAgICAgICAgICAgICAgICBjb3N0ID0gMFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGNvc3QgPSAxXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGRbaV1bal0gPSBtaW4oZFtpIC0gMV1bal0gKyAxLCBkW2ldW2ogLSAxXSArIDEsIGRbaSAtIDFdW2ogLSAxXSArIGNvc3QpXFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgbGV0IHJlcyA9ICgxIC0gZFtuXVttXSAvIGwpICoxMDBcXG4gICAgcmV0dXJuIHJlcy50b0ZpeGVkKGYpXFxufVxcblxcbiQuZXhwb3J0cy5zaW1pbGFyID0gc2ltaWxhcjtcXG4kLmV4cG9ydHMucmVtb3ZlRXh0ID0gZnVuY3Rpb24gKGZpbGUpe1xcbiAgICByZXR1cm4gZmlsZS5zcGxpdCgnLicpLnNsaWNlKDAsLTEpLmpvaW4oJy4nKVxcbn07XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ1XCIsXCJwYXRoXCI6XCJ1XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSBmdW5jdGlvbihydWxlLCBvcmlnaW4sIG1vZGUpIHtcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKHJ1bGUsIG9yaWdpbiwgbW9kZSkgPT4ge1xcbiAgICAgICAgbGV0IGhvc3QgPSBvcmlnaW4ucmVwbGFjZShuZXcgUmVnRXhwKFxcXCJodHRwOi8vfGh0dHBzOi8vXFxcIiksIFxcXCJcXFwiKS5zcGxpdChcXFwiL1xcXCIpWzBdO1xcbiAgICAgICAgbGV0IGhvc3RzID0gaG9zdC5zcGxpdChcXFwiLlxcXCIpO1xcbiAgICAgICAgaWYgKGhvc3RzLmxlbmd0aCA+IDIpIHtcXG4gICAgICAgICAgICBob3N0ID0gaG9zdHNbaG9zdHMubGVuZ3RoIC0gMl0gKyBcXFwiLlxcXCIgKyBob3N0c1tob3N0cy5sZW5ndGggLSAxXTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKFxcXCJtYWduZXRcXFwiKSkge1xcbiAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIua4qemmqOaPkOekulxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFxcXCLmo4DmtYvliLDmlrDnmoTno4Hpk77lnLDlnYDvvIzngrnlh7vnoa7lrprmjInpkq7ljbPlj6/mkq3mlL7vvIzngrnlh7vlj5bmtojmjInpkq7lj6/ku6XlpI3liLbpk77mjqVcXFwiLFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWc7XFxuICAgICAgICAgICAgICAgIH0sIGlucHV0KSxcXG4gICAgICAgICAgICAgICAgY2FuY2VsOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBtYWdcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcImFsaXl1bmRyaXZlLmNvbVxcXCIpICYmIG1vZGUgIT0gXFxcIuWumOaWuUFQUFxcXCIpIHtcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6Zi/6YeM5LqR55uYXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPVxcXCIgKyB1cmwgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcXFwuKG1wM3xmbGFjfG00YSkkLy50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgICAgIGxvZyhpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBsYXlWaWRlbyh1cmwpO1xcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcbiAgICAgICAgfSBlbHNlIGlmICghaW5wdXQuaW5jbHVkZXMoaG9zdCkgJiYgaW5wdXQuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlLCBtb2RlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAub3BlbihKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuivpuaDhVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXCIgKyBydWxlICsgXFxcIiZyPVxcXCIgKyBydWxlICsgXFxcIiZtb2RlPVxcXCIgKyBtb2RlICsgXFxcIiMjXFxcIiArIHVybCxcXG4gICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUsIG1vZGUpO1xcbiAgICAgICAgfSBlbHNlIGlmICghaW5wdXQuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICAvL+iDveWUpOi1t0FQUOeahOeZveWQjeWNlVxcbiAgICAgICAgICAgIGxldCB3aGl0ZSA9IFtcXG4gICAgICAgICAgICAgICAgXFxcInFrbGlua1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJiZG5ldGRpc2tcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwieHVubGVpYXBwXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInNtYXJ0ZHJpdmVcXFwiXFxuICAgICAgICAgICAgXTtcXG4gICAgICAgICAgICBsZXQgaW5XaGl0ZSA9IHdoaXRlLmZpbHRlcihpdCA9PiBpbnB1dC5zdGFydHNXaXRoKGl0KSkubGVuZ3RoID4gMDtcXG4gICAgICAgICAgICBpZiAoIWluV2hpdGUpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAub3BlblRoaXJkQXBwICYmIGZ5X2JyaWRnZV9hcHAub3BlblRoaXJkQXBwKHVybCk7XFxuICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUpXFxuICAgICAgICB9IGVsc2Uge1xcblxcbiAgICAgICAgfVxcbiAgICB9LCBydWxlLCBvcmlnaW4sIG1vZGUpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInlzZnhcIixcInBhdGhcIjpcInlzZnhcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxubGV0IHJ1bGUgPSBnZXRQYXJhbShcXFwiclxcXCIpLnNwbGl0KFxcXCIjI1xcXCIpWzBdO1xcbmxldCBtb2RlID0gKGdldFBhcmFtKFxcXCJtb2RlXFxcIikgfHwgXFxcIlxcXCIpLnNwbGl0KFxcXCIjI1xcXCIpWzBdO1xcbmxldCB1cmwgPSBNWV9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV07XFxubGV0IGl0ZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3VcXFwiKShydWxlLCBnZXRIb21lKHVybCksIG1vZGUpO1xcbmxldCBqcyA9ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKGRvY3VtZW50LnRpdGxlICYmIGRvY3VtZW50LnRpdGxlLmxlbmd0aCkge1xcbiAgICAgICAgICAgIGxldCByID0gJCQkKCkubGF6eVJ1bGUoKHQpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHQpO1xcbiAgICAgICAgICAgIH0sIGRvY3VtZW50LnRpdGxlKTtcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLnBhcnNlTGF6eVJ1bGUocik7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKGUudG9TdHJpbmcoKSk7XFxuICAgIH1cXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIHVybDogdXJsLFxcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgZGVzYzogXFxcIjEwMCUmJmZsb2F0XFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB1cmxJbnRlcmNlcHRvcjogaXRlLFxcbiAgICAgICAganM6IGpzLFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXG4gICAgICAgIGpzTG9hZGluZ0luamVjdDogdHJ1ZSxcXG4gICAgICAgIGZsb2F0VmlkZW86IHRydWVcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogdXJsXFxuICAgIH1cXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpmL/ph4xsYXp5XCIsXCJwYXRoXCI6XCJhbGlsYXp5XCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKFxcXCJyTyszN3VHK2IySmJsOTFKWGUxQUxhY0FjUksxeGlrS05TZngzT0pOdjlNQUtwY3dGS0VMcXYyRlFFcTUxOC9abFpDZHpNOXZHbnpjL3BJM0x6Zk95YUJWd016K2RBY1ovc2pnd2RyOSthaE4yenB6SG84ZERPZDZLOXhhUldNZkRDenk3M2dSUHRha0FISkEzbU5SVzJwdVBTclNUQk1CMmtVR3FFR3VVTldrTTFwSEExam91U1dyckFNYmtPRUlVS2IyWVFKM2VJclVTMnNzVDc0V3dlanYwaXJ4Vlo4UlRoVWdwekFTWTU1dVB0N1ZnaVZWaWlFWEZjSi92cDl4ZXdZVzVLRXRnYzN2RXhjVFY4enZQOGN5SDAxcGRGMktQR3NnMEhMd0JFNEk5UTl1MVRnQ09GamFOZlpOa2F4WlFaMlZuUGxaMXJOeXRMY3BhRGNmMk0vanJUZC8rbm1zbVdya2ppdHVxOHhJNmZDVGwwSjZlMEh3SHpmdFE4WEZkVUZlakt4V0RGcGkxMHpqUTRuL3JDUSs0UzdPTlpaVHJZZGlYeVBlNFEzbWd6SjdRWjQ3NVAzTnBLTzZnTGxpSnZwN05Ic1BXL0FIK3BmWEJYQndkUml2QzZoTkc1dVA2Qmc4Z21pTjFHVHNSTVh3N0xob3JGSndXRFpSQTlZTGxYdktSYnY1WVl0cEZNVDVPWkNnOXByRWphZ1laLy91ZEt6eSt4QlNoQTEzM0Q1UmFtK1AzeXFLcWpMa3d0UVVaSnl4WkU4NmI2NjB2WDJDYmhieFNZOEpGRTNnMVhzNHZnVzBXQzU4YURST0xBeWhacDBlaTdubUtrUEZsYVFZOHVqTXd0ZDgrVVpUVjEzWU9paWRvS3NoWHF2SEpWSWZFNXEvMjdmdnlHdTJoS2ZKMm5KYWF0d3BuaVhxUkl1NDljMGZsUlJPdlVNbTFMSFcrVG9KUXMwSzBwWk13eDNKSkZ5K2FKbWw0VE5VYjhNTFQ4V0tnK1paTHE2bTBQQVd3OGdkZ0l0TERhMmFEVC9RcytBd3dTdmsxUStDR3JRRHN6b3hucUdwZEppemJEVlRRa0pjVzUzSWRKK2lTVVFRSENNdU0xVVlmcGRBSndjNEQzK2ozMFNjSHVuSDMvYk5CZll3bjA0L0tIdjd5WlN5RmMwNlIydzhuZ0RNUm5jZklQcmpONmJzekJFQWNLMHBWNEF0Z2hySkFkcENyUFJDdzRNZlVMSmc2NnF4VjRLVjFGa2JPSFk2ZzA2Q3F6ZGk5dEJnZmQzNEx6ZmRLZEgxVm9kdDRLNjdnUG50WG1iVThDVVRzMkhSRmx3ZkNmcUJtUXRGRGlUM0ZxTlBGSFhrM29KRStzT0l0U3J2VWR1K2J0NHBGeWxuZWVHbElTc1g2bUhPSGZrNUJacDlFV09Na2pBNkRtYnBaZnFCb2o0L3JKazFjSGJ2Zk1MSi9uVzdIeGt2ZGJ3amZlSHI5ckxuRXJEOCtPaE1QcjJGQ2x1Q1hLOHM4ZlJMdm5WVlJ1TDgzY2Q1TUpEZVBHWG5oSGZKaWNNOGU4c3J5MGpXVm5QN0NKLzcxa2dCMVBZT29PYTZZY0JuZC9Fb3N0OVNPZXNuZStZa3RuUGFIUHhmdjIvR3diWnM3UUtndHpaL1ZuY3RwODBqUkxCd0NOdERaTkF6dzN2eDF5dkw2eTRQUExlM3NRdzB0YlJ4UHAvL05xMHRWSE5sU2FzRW1QRDNHdysrams1NFZ1UmVieVNIa1lsU0dPNkNxRDRjNmd6dzFiR1JZRERuRStoQ2R1SS9neGxMZnNzU1oyMlZtMkhrVnhndlFHOC9jTnduQUlWWERjRDlwcGFmTStJc3V2Q0RaNFVkU3M3SzJ1eko0YlVpOVBPcTBBUnI2ckVNTkxXMGNUNmYvemF0TFZSelpVbGRHVUErdEF3QlhlQXhKUnp1d1ErUTVSb283c053V2o5U3Q3NklhT3dPWUpLa2FRcDVWeUxkYTBzeHdTbzV3K2R3R2QrY21lOVJURE1iL2VDQldRZnlXbVRjU2svNlVMblB3TlZGblVYTkZrMlBQUEtTUlVmTXlLN3h5VjhtTyt1YWNKTDJQaUpqbDVuekNLYkp6MXdhQ25vK2YyTDRRNVcvMVhLLzhqVTU3V1RrM3JpV2kydU9XUVdZUHBWNXZtRi9ZelR1V1h4TmI2eldxYmI5ajdpOXBWNC95eDhOdC9hT1VGdWRKRmlUdjhtOHFabHNLcldEd0g3SCt6MEVoUjhVeFg1WkNMNU1NelJ1YlI4bERSRVJNUm80UTl3Z0l2bnhZdmRjVTBBd3Y2SGJPbmxjTmxxQUVLa3hFUkxvcVR5bXZhK2pIQjNmS3ljVHJvSVhVblFrSDRocDNJaUVUYXR1MTF6emEvOHpXemxYQ2xsSklUUkk1cEIrL2M4enMrUzJRK2dTamVCUXBqSnB6a28yQkpSN3hwTkxyM0d1Q1ViVzU5Q01EcHRUbVhHdGxNajVPMnNRdmowQTZXZTRHenIyeDRmOXROWm9TZ0V4NnpLUC9IK0hhaVNYM3JzR0N1UHJwdENBT05GYmJ4cEJaWnJ1TW5jRW1LbldtVytPTkIzMVY3aFlpVWFXNUpuVXFZOWh6OENRQVZBZGRQalhQTUlBUFYrQk5DZm5zTkZYV3Y4ZXdhblBJemUzN0FTOTM0aUJnbDRHT1didDRzbi9GRkdITzdJZFhXNGZPV2tuMXU1UUJ1WXMvVTNCNDRIMjdOSWdUdU9jL0tjYUQxNDg3ZnBWdnQ3T2ZzT25Vejl0ME1sc1VkbE1KRjNqaCt3M3BFTGV4WDljU1F6bzJjc3J5MGpXVm5QN0NKLzcxa2dCMVBZRnhmZE50SjkzbkF0UUIyVlZPRVg3Y1BJN1crS0g3ODNYb1dyNG13akEyU3ZOREFmQU01d2oyNFVJTFhJTlIyTVR3Yk9KWnQ3T3p3L0l0WjBzdVZCelk1MExYUjBzOExldTQxTk9MaTIzT1hKbmE1Nk1oSHRqSGhUM1hydTQwd3NrVnhtdXEvbW0vcHFsWFpObld1TXpPK1JUNFA5Tm1TUDVWbU13SmovcUZIVG9RcW10c3JUL2h5ZTlCb3BnK2VmOW9KTVBVdjkrb0c0cUxJcmhDcU91bzFQZlRMazJhU0t5a25Nd2N4c2ZQOTB1WmdBcVMyMS8vUStnSmFUeEdQenZuU0pITXh0dytiYVl2bExKRXRDc3hpN1V0Vm80N0FUd3Q0dEtTbGNSeG1STzcvQTVIYnYxM2FyL1VLalpKSTkyV0NLL3BEL0FoczJlaUNDOVh6eVkwRmhJUE1oYjg5VjVFc3lIRU1NemRMelJMeDdZZHJXSDUzZmVWd0tEWGNaOHNvVWtsckNDais3WWd1cHNYYThPQ0lnOEkraUlkNHNmRDRjQVZZRW1uRjc1dHdWSk1uWVNKamxNazBGM1JyeGw4Z2xVNG5ZU3RkZVFveDhjbU1GcEsvaGlQLzVCQ05qcWdyOWZGR3RRRVAxOWViK1ZMQTZxUDRDT2ozY1pxVjQrci85UTF4SmJnWUFCclIvNXRYaWhwS0xjZHgzdzBzbU1TYmRyRHFXWnJYbXRuVXBqN2EzUUM0WUZDNE9JVVFCeWZwWElWaHp5d0pMNjBaWkxSYXZobHRwL0crcjB2NUQ5NnZSajJEKzNwZHVnYSs0QXZhWFE5ZThkOG5BOTFuSEJKQkhMdVdQMWtwK1FidnJmNURDYlA4Tm9SWGdTNVlqUWJzcXpuMUNDZlNqbVp2c3ZlUGk2QkFFYlFEdEg5YlhmRUdNUWNXR3JkY1RDM1hMb3NpS25SQ0lkZEhkdnBYL21McW15dFpMeUd6Z0dzWHNFU0xRc3Q0cjVzUlZlT2dpRW1aOEJmNWJYYWVSajJ4eW5kREl1M1dlbjFTK2pQL1Jia0IzVWhRWHZNTWhhOU9iRjAvYUJvTjRremQrQW83Z1NxTzh6c2F4MkcyanVwSjZHY2UzU1JKWjhKSUtxejJVYXlyZmQ5dXZzOU43ZEY1c0xjR01KVGI4Y1hWcXQ4bUl0S2RXdUowU09POGxzL3ROVjFDeGZmVlZFRllKV01MOU5sMTJsaktZYU1SbENDMVFOZ1VMcTI3SkVaMlE3SzB1REJ5UjRJUzJYVzhpYWRHUHZwQktxSVpjZlQ5ZTdBUXk1NENRK1RMNDBhOWhQUlFsZ2s2RFpFcUhDcHdLSU5kTmRGVkRZRVU2cUEwWm9QUFVYd1lrNHdJOTdOOC9mUFJSUVEwc0NmSGtWb3kxWFJhUFg3T0h6VVk2Skx6NTJVdUhKajhoalluOVp1ZVMrTFdmVUtYQUFqRm9jZ3ZSNFZNWFkwU2s2U1dlWHdSb2g4dU9aZWM4ZlJJbCtQejYrRWNVbUZyNUg0cTkzTUxhK1JWb0xOeksvQXNOYXpjMlJyZmU4dXoyWm5YSVdhVGxYQ2xsSklUUkk1cEIrL2M4enMrUzI1OU5HTEFqM3QxUU1lRzdac1VTUUd6TG5wUE5EWG1GN2NkYmpQcEV4dHNzcnkwaldWblA3Q0ovNzFrZ0IxUFkzV2JIazh6bExreW9KT3Jrai9jYzU2TmZrdkdJR0lDL2FyMVN1b0hIMmNNc3J5MGpXVm5QN0NKLzcxa2dCMVBaeHJaVEkrVHRyRUw0OUFPbG51QnM2L1hxRUJsbDdiZG5Md3Q5WU9DRHE5dWV5YmowL1BGWFlCMWMwWmNuOStTT1VWc3BqTUQ3TlljK0RXalVMMmIyc3E4UTUyVW96d05zT0FJdDdpTWNmWVorYTBXR2F2eU9EVE0zVDNuVWdKOE4yOGFFcXNzaVBKclhYSUduWXN5M004a28rVUFNekxsb0dOWXUwOGkwT3VKMVR4RGxmZFUxT0ZDOVpXL1FEMGJxSGdxeCt1N2J2LzYxSzMwMm9RUitNbXFFbnJpc09PTk02OW13VlA4aUdwVktuUUhwK2pYditrNUdVQlhaVUNrRHArKytDTU1FUkViTGx1c3N1YUlXR1hzQ3lxUlZuL0F6RHlUb3kyOGFNZU1JQkJ1YkFhVU1RQjg2TEtxMm90RDJrWVdYS21nN3JRNFdJZmZmZWoycHhrOFZDTEl6cVkxYTNwU3A3ZFRKbHU2Y0xFVVpiMVRXNVpPZUtuajU0MFdCWTAveFBqSThzY3d4b0JSYndBK2xXVXowRzVrUFpobS95cDFadWF5RzhhK2xVQnNzOU5vNU9XNk9Gekgvd0tOaWI0c3ZFdUJhSlJXUVNmYXpRUHpYL21DYXpCTmpIalowTWF6T1kzYThFdFloUWhucG1MczlscXNUSGlFNE15WEFHbHIySk91b0M5Y1UwakV4K0h6THk0RnBzWG1BN0kyMllxbnpGNnRrZm94bjc3U2NiK08rRXlzWjI4V3pDYVRNYWh2WjJlVld0UG5vc3ZnRldQRGh2S3pub3R1YXc5d0d1ODd2c252S1dremtySjlsN1dWRTBJV09PclBxb2ZRR0RmU2hIc0Q3TVNIWmEzdVhWNHZLZ0YzK21WY2FtdFhsemZxRVJzY05XdHYxOWViK1ZMQTZxUDRDT2ozY1pxVjRUMnlYd1Zwc0xUSGFEeHo2RmUzbzBzVFRNKy9TQjFDcWg0ZVNEYnhTL0FFN0VRTUdqenBMMjVpbFNGZG1Bdm1NbWxaOERvM00xdGxlWlZpT2N3ZTJnSC9mczQ2dDZnWnRBWldPMk9KbUZlTFFMVC9UbmplanlodlEya0xsNW16M0xLOHRJMWxaeit3aWYrOVpJQWRUMnhDeFVuT2IrbGdCODE5V0ZjWkV3bnBLZ1BhaCtRZjBuNWxLY3Q4TWtUelNQeWNaWktOOGFxYy95YmREdXh5WHlQTzl5NWNnU3VDdlVQOCs2QVdhRTVWbVNLZnRONDkxQzZTRzMvdVcwWlFsNWNDcFpyUlNvcjBqR3ZSMjVka0hWU1FLcTRZOVpCZmZ3OWFDUXc2c0U3Rmp4V002Z25nWFZ6RTN1cUo0QWtVRjVML2ZEQUljK29WNGhGcGhYQXRWUjc4Z3V5Y01sQUI5dS9UMjNxRjloUFpxYm1wMzRwNkNTUVJJNGJ5UkJCNm1HZG9XYy9hV2dBUGV1Y2tRa1UraFVmc2RuTnBmdEFPVnNRYmNJNXpmTXFrOFBvL1Q4QlV6L1JzdlFqVklPMEJLNHNuM29wZEhmckhMS21ZYUtrWE1VNUkva2dZSVRhVXFxd2pQcFlDKzI1THd0UXpyZVN0M0M4a1c1MWtERVY5WUV5WEt5WExJdnFXZjBhRkJnVnYrWUhJQzczVjN3TzRLREZtdGlCb2FZQkpIbjNVY2JRd2Mva2luT2EzU1RsSVRTcEVkQjV4bkdDQlRuLzRMeXJ0YW1ZdkdLKzBxMnJPUGRhRVBndFllTVhzQURIVXNQR0hVVlk4WkNvb0d6WXg1QlkwNDJFd1dWWTI3K09Ic1dGdDRkSlhSTHd1eThHMGNiRFIrYStRaE5FYk5xckNQM25GMjBFWWV4VkV0cFN2MGVCSy9uRGwwUXVxZENpai9ZQlpPWHNNaE9DbnNFVWNSODhHeWxtNWJQNGQ4YjRpYjZ4L2lEQVBjeVRINXg3OGhhTjQ0bG1Pb0Rqa2gvSERhNWR2SUtPOWdQelR5YmJJL3dITnI1b0RLQ2xwNkZvSlZ6ZnpValU3WUJwZFptTTgvWmpMYXRwYVFaR1JlZGx4RzNjdmNVMDBmTVFLS3BOaC9tdEZBcXVqOHFneTE1Mm1SemdOcEd5NzZMVmplcXdxNC92N05SVFZCYlQvVEs5SW80c1AvQ2w2NVRIemR4N1c3TTEzL2VPU05ONkdSMmxsc0N0cWswM0xCMzFnR1RvSEphRVJWUTBBbTRxRExBczd3ckVWRGxYZEpUSWduTmRHZWxabXV6K3pmK1hLbDc3UktpSjVVTzkxK1ZvcVJCNHprZjhuVURpaEdCTUFwcGxVZnFURkNpdmptYnRaTFVBWGFZTTFMaXRrNFAvdGxwRHcrRHJvSHZxYVVmK01Pa2xoQnFZV25NTXZMalVrQmNLQ2VldlR5aTVMaDVtNlk1V2UySmdmVjgycXh6Q05ROU04elI3V1VBQ1lUWmNwNFpTaVhROG1uQjFWMEQvd3ZHYkFITmU1cGhQYTgvMzU4Uk4xZWNlQnI2VVZUcHl2T202eFFpQmFNeWJieFVRd3FLVVJMcGYva0k2emVoVXVubnQvREdTaUZWU2JTalpsenBlQTNpSU1aSHlqM0gybUg3dDNlNEIxT1ljZXNCVTVaY2NaOUJMY0xBelZjNWVWMlpsd2x5S2pTRlE4b0Q2dWpyVVliOWt4TlJxQ0FhbWpKYU5HdThvUW9KOXdkbTljTThzZzNGUlpOclhyS3RjVWE3ZW5yT0owWGdtbkNTOWo0aVk1ZVo4d2lteWM5Y0duMk1oa0psUEtoUVpCNWx6VkdHa205cVp3MVlHY2pYQkdzWVp4a0M1VEFrejN3TjF5M2ZKL004OHFna2JvazNXZnl1R1RKaUJpRnAyN08yUjdEc2FnMkRaMU52bUFLTHVuMUZ0K2JSNFRIbVBPOXk1Y2dTdUN2VVA4KzZBV2FFNVRNRUdmd05RZlgwOXNjZTRwcSszNDdPbERMN0R2enpzT1FuSysvYkNjNG5sNy9TK283VEp5eE9HSnZqLzRreEtTZ1VTcHUwbnBhUUFYUDk2NUJhS21FNEJrUHoyOGJMd0FNd1J5TzZkaVpGeXl2TFNOWldjL3NJbi92V1NBSFU5aVB0bXh1OUMzVE11SmZKK0kvNUY5dWd1WWxHS3ByU08wQ09FaXd4VlZLVHl5dkxTTlpXYy9zSW4vdldTQUhVOW5DK2YzWDNqRldrSW5Vdlp1RitRVFhTV1BVdzJtbytsSHBKYUtkZHU3anVSUHZ6MlExVzd6VmtYQXU1TEdBdE9zc3J5MGpXVm5QN0NKLzcxa2dCMVBhU2FLQk1uOGtpTlJzWTJsSmMzeHc0Rm1xeWZ2Z2NPd3hWSkVpT0ZLMWJRcThTOWMwaEV4ZW4wQ2s2K3Vqdy9JKzZpWURWV0FlRGRKWlBpenMzVXA0amNZMlNQbWQ1R1BqR3psOEIxS3VwdkpFcThaNjFuRWlXeGtGcWh3dTQxNXpMSzh0STFsWnord2lmKzlaSUFkVDJIL1h5SmZlZWRnd1VzdzFNNGlYdm5neFJ0Y3kxMEtQdGVqc0lCVFY4bU56TEs4dEkxbFp6K3dpZis5WklBZFQyRTBxUnVKeHZWeVhNWFJwa2lLQXJsbEFBeHVOVWtza0xlZ2xwdHkrazlMNTUxenl2bGQrT2FvcHpianVTZWRaeHl5dkxTTlpXYy9zSW4vdldTQUhVOXRueVZKNHFWb0JMbnRBc3dUZkZxMmQ1QmErVmlXRWpScExQRGVVMnBVSmhDRC9rV1ZxZVY3OWdzbVRLYUlEMG9OTlZsWjFmem1qUWJRMjY0Z1F4Z09JaS9VdmFpZlV2SllMdzlzd1VjeG9HZ21YZjRadHhlcTkvSFMzT3N4a2haVS9mVDZ4M1VsSWxmL1pOcFNlZi9DUTBoOUtzRnhJMmVIRWpyR2ZZOWNFWEtIMGRpdEloUUdMVnU3RmR2Qm1Na01zcnkwaldWblA3Q0ovNzFrZ0IxUFpVUGRuNURhOFo5YzRHaDhOVStaZXR6cFF5K3c3ODg3RGtKeXZ2MnduT0orSEN5TnRuaUpBVjRwblhSbDI1VjZCL2M3cmlTVXNNRjZnUm42N251NTlKeXl2TFNOWldjL3NJbi92V1NBSFU5cGxiZ3ozaVBhVlR1MUFrb3pOUUV4ZGgrRHJ6UW5KemdoSXBzakdMSVRUbnl5dkxTTlpXYy9zSW4vdldTQUhVOXNIMkk3UXZBaEVrcHlTd29OMVYvK2pDQVFibXdHbERFQWZPaXlxdHFMUTlQT3h6M3ZmOWVHQWdSWThqUjY5MEtGR05PbTh4NHB2c21yOUdQUWQxOWM5eC9teTZZS1poNXR2ZnZzaE13ci9US2JEdUluTEU3QUM2RnpJZXZCQVNVRFN3SE85WklpMC9IYTIrV24zZGlEdHhIeVJWUWZEOVpPMDdJZVAySjluUktJQ2JEOGtJZlpmUVRPTElCKyt1ck9IL0c4YVdOVGpzeVhYUTZRVS9kMnhjYXhiU0RWbG9tb2RaMmFOb0MyT0s1TGg1bTZZNVdlMkpnZlY4MnF4ekNQWGpqM2VDejV3Y2JnWVdkbnJ0U0Z4UEh6Q1drZlArRnVpRXQrUW9mS09URnV4ZDhSUnZycFR4MzE5YnBiVTRNVHJiZWUyc3VKdGhKbHZpZFhpZjZjUExLOHRJMWxaeit3aWYrOVpJQWRUMnM1MXo2b1h2OVB5a01NWm1Mb1hHemxvNGZVTElYM3FyL3dWdVFiNTRZeDRWby9xM3ZNVjI0MHJBejFkVFJBY0dUZWdaeVp0R3pqRWcyOE9kZ0ZaVHc5RHpWVkthN0t4WkkySVZ1N1BBRW1yL0hKVVhMTmlLVlJWYzlvMzBkdkhhTC8ybHJGMDlPWmZXVm9TN2U0UmdMdVpWZ2FjbXZBQzE3WGFkaVg4OWNJdG81V1B3aG9mdllya29GcDhJT3VkS2VCR045RGZhemxLOHlYZUkvZlg2NXo5N1BhaFFzdU15TXByeDUxcnhLVWczR21WSmtERHd3eHprNTYyc00rWE9QeHhPd1ZSSlFjVHltYndMWnZUenhtT3I3OG5lZTlFUC9oYkZNMEE2eTRxczcydDBlYkNVTWh1bVVyeS8ySW96VVg2aGNYRythVzRIUTFpc1luN1piVzN0NW9DOUg2S1NVdjFMWTNHMUJGQUNqOFJ6bFVZR0E2WW9PdFRHS2I3blNaZ0J3a3p0UEdpUVNOUGU1cEg5V2FhZzV3UlgyM3E2V3ZCVUZLTkJjbUI0RVkzME45ck9VcnpKZDRqOTlmcm4zcEZod1ZkMFV6RVByaENJdktHOUR3Q3lxc01FSnE1R0lmVUh3ZEYwWGttNzVYQjgvSkVzYllQc0pTalV2cElnbUNTc1dqbzA4S1dKMVg2cm1oei9lb1RPNlJ5WktBanh0cU5ma1J2VVlpU1pKK3lqSEx5Z21aZnZIK2IvWE1zbEVJbG1BcjRlRURLYWpKSWFRVEdUNDBsUUMwOUg3ZkZKT2szOTZ5L1NzZjJNV1Mrbi9UdXVoTkZzd1laNVNYL3dSaVNqc0xhcmthNWZFakFkQzVBT0ZFS09FSVJGdUcyYmJHcGU0dVVoZjFYL1g4cFpOQWZNYnlqYm94d2dXRHl4elJWd1pmb3ZXVXFsalN3RHdvOFk2VGxYQ2xsSklUUkk1cEIrL2M4enMrUmw3UFZpS2RiUjVTS0FRSjlXZG9lL1dBNTg0QThLd05YWVo0bEd1UkttamM0dWFWVzZ3N25ad3kzODhSc0ZBbThPKyt5Wm1ndTNHUTQ2amhPcUE4a2JaWXVIWjVpRUtLR3ZMbHBCK3VyL29UbFhDbGxKSVRSSTVwQisvYzh6cytUTGFYUEhxelpUdXN0VEF5WENpbk9tKzZmOVVsL0lLVkZDZ0RGcjJDUFY0dWVBWENlaUlwVWt6S3hOQU9sNWJua0h2dFVNMjYxb3gzaHpaQjRrL2lFSTVYRlJKY2U1UlNTc1FHYmhjb2FkRS9GUHp4bG42eGRsR0xiL3dNU2E2UmtWcW1HNWZ3Z1FPUEQ2TEI1RmdKakFtT01COVgvditsN1V3NHJVa0c2cGthTkpiQS9qWjBoWjYxakZKWEdkQVdwRFRQYXNxRFdSdk5BSVRMYzI3OFVqY1RjMEpOZkltRHpqaE9wTGpsUVhJQy9PaVh2TWdySUZKZTA0Znp1ZW14Q29hRFcxZjJkR3daZERKWjhxcWZ3V2dNR0t3RncwTFgwa3JiK2JRbDNJdnM2VU12c08vUE93NUNjcjc5c0p6aWVYVExBNTBTdDQzZHZxc1lhNHFRazM0clB4WGs2QnFiUWFnN3Ayd25XNDRUeXRscmxDZHpPazNYYmNYOEFyZ25LcGp0alRSbkppd2lPRUkydU51QkkveFd0MFZEaVZBRXorMmxMQlljdnJ4L2R3dy9qWU5YMTI1QlJieE94MTMvaGdHR1l4a2FpTlJja2dsS0twUkdxSlNBK21pYmtUcGV5cGdTSDlBVmdwVy8vZmROUjRIZlVxVHBHUEJVRHpDY0xPbERMN0R2enpzT1FuSysvYkNjNG53SGRRQWYxeU1vRlZRNkFVRzVpbzM0R2p5ZUlVYUhmU0c2dGhNNy9MNXNMZWx0ajZwTFRwTFhCcjBKYkJzRmNIeXl2TFNOWldjL3NJbi92V1NBSFU5a29MWjBvUlhNUVJjZkJqZjRBMmI3dlA4TVRyTExHakNtK0JEeWhqclUxVHl5dkxTTlpXYy9zSW4vdldTQUhVOXUzTExkRElFMXRQZ2hNODZ5bmIyUXpMSzh0STFsWnord2lmKzlaSUFkVDJXMkV5V013aWZhQ2FVT3NLdVFSVklCQ3QrSzRoOGFDUjUrcmFucnppMk5yT2xETDdEdnp6c09RbksrL2JDYzRuUWUzM3hoU2lJR2t6aU0veDI5anp2WHNQaWZIODVxbWMvTCtoODR3ZHJHM0xLOHRJMWxaeit3aWYrOVpJQWRUMkd4SWRzeDhwL284Qm94U0NZMHpoVHg3d01mTlZobFlRSWRHeFk4Q09wblRMSzh0STFsWnord2lmKzlaSUFkVDJ1L3dHa2ZXalppMC9Xakhtczd4L1k0TmEwcy9GY1pVZjA4bk1ZdmtuZUQ3TEs4dEkxbFp6K3dpZis5WklBZFQyM3ZlQnl2VFVZRUFvR1JRWTZhdG5DVWdTVW0wQ1RNcGJMNm54cGZZcWNOZzVWd3BaU1NFMFNPYVFmdjNQTTdQa0NCc01YRTIxUStEcjBxMkdzeE9WcEI4dkdlUnZVYlhlMG9rZmc3NkVlTzVCZUhCVUxhbmc2cnkrL2RSVjVOM0V5eXZMU05aV2Mvc0luL3ZXU0FIVTl1a3pZSVZFeDVFOG9XYTZFTi9NUVNaemREWW90Vnl2MW5DZVJ5cFJlLy85SDU4d1BUeHVNNStJTng3L3llL2tFejAyTXdvVDdQU1VkM2RrSldmTlZ6M0wwcU5BTlJUZ2M1Tkdqcy9UQ09ubXlQM3pKOEtYM3d1RTlDbDN1TTVKazBJVlpxeHJ2cTUxem5QOWY1b0RYejNPbERMN0R2enpzT1FuSysvYkNjNG5qRm9jZ3ZSNFZNWFkwU2s2U1dlWHdSb2g4dU9aZWM4ZlJJbCtQejYrRWNYTEs4dEkxbFp6K3dpZis5WklBZFQyeWRaR3NFRTJDTUxjYm1JZHljb3dBTXNyeTBqV1ZuUDdDSi83MWtnQjFQYjJ4NGY5dE5ab1NnRXg2ektQL0grSGFpU1gzcnNHQ3VQcnB0Q0FPTkZiYjVSV3ltTXdQczFoejROYU5Rdlp2YXlyeERuWlNqUEEydzRBaTN1SXh4OWh5eXZMU05aV2Mvc0luL3ZXU0FIVTlzMmowK0QvZ1pmT2hjMzJuS3kxUVdUWmt3Qmg2VDNGWGpJd3ZQVzdxbEpXK1YvcEQzZitCVm5KTytURFkyc1JYS1BwQTBUR01BV2NtUXM1bkMrZm1iR05kTnlLQjVJcThwcU9EYUNxdFN5RWFhUHBkR0NMd3Q5eHFtV0FVeWlTM3NzcnkwaldWblA3Q0ovNzFrZ0IxUGJrVTVPN3hndUFma1JSU01icWhWcHFyQnFJQnphVHF3SzFWOWtQcjFvRTYvVDV0OFhIeUh0Z0dEVFFBeXpweUlvNnBadFQyZUZDTjB4V3Z0citMdzcvNlNaVlVwUlV3MkN2STZyNDYrZ0tuZDQ5YzAzbWdXM2tKOGN6RzhLcEw4NERFUmxuR2xQa01UQ2ppQ1djZmlyb2NtY2todnNwVU5yUkZTK2ltWkZZMU0ybHBUSm5zK0FaYW5DZVBSelpnVHVJTEcrRzF0WGV0U0c1K0s0OU5ONXpDRU1RbERSM3ZwZ0ZsclhPeFNZWDM2b29YN29uN2w2VmRSZTZOUFlCWWZLSzVydXBjMURQYmxQWjFqb3BLZVBnWkNKWGtLc211dXJ2UUQzWmhkNjVTMFQ1MU1KaFdvZmswN3hQS2hpMnZLSThDN3BqZjVhVS9UQ01kMkhRbFpWaUNUY3R0LzkwLzZ1dks1cG5zUFFDSGlhTVhGcWRPaWt0c2EzL0grNVlTbEN6ZWZIL3QyTEJZOVJkV3Y1bGhkdWo1anpzVXlUYlN2c0VVaHVmUnJmZDFqc1hZcmxyaVh6SVBOZ1YzUkk3a0wxMWV2RTdKU0d4ZDhTOHVSZysvYkxkeUQ1TlNPTklsTUJ0WnZiK1BEWTMvQmR6NitEUDRVYVFuQmdOREQ5WDlwRXgvV2s2em1yR3RzcHNnVkN4a0t6UDRmY3hCaUxicU5xTWNkUkoxenRiSG5OakJpcXBxWWFscmQ1c2crdWJZbWNWeE9qYU0wNXE5MkV2NSsycVZwT3o3d2g3VHBhZU5EYVdaTHNFcHRrd09HM0ZjVWduWE9rRWt2MHpodDJwWUJ6aWhvVEpCUmxHNzVVc2RxODVCYVdtdkZXVmhtWTlxNGVNS2dDaTRFQ3VOeDh2aW5KYi9XbVhWNkpSSC9QbkwwS3Q2OU5nMkpCVFRQMGQyMVFycHkvZ2dNTGtjUE9BTXc3UU9rU0ZxZ2dWdkhick0wUHlKanpvQ2tBNVZMdDdzOXBWeGVsbklqSUxkRWJwZDhqaEZNSFROelNTTUtJT3d1QnBiQkdOc1JwVzRlT1FnUFQwSDFyVHZPQ0prK2Y2M3pZWWU3R3ZMU3Z1aW43MHBJWGRsWUVYbWVrL2doVUZPa2pMd1dLSk9oK0hWMlUzck1Balg5UFR0b2p0WGxjdEFDdnp1dWhvQ2tVYlJJQ2ZBazlLMTZieDBIcGlEOWE3TVIzMTM4cGRaajZoLzhzcnkwaldWblA3Q0ovNzFrZ0IxUFpncWp2ekxoUm5VMithaFFaenFYaXN5eXZMU05aV2Mvc0luL3ZXU0FIVTl2UkFjZlJtV2p4aTJUNndhSTcwNHVMaWNJRmE2d1JOUUNpN3JnQS9VSFlJenBReSt3Nzg4N0RrSnl2djJ3bk9KK1pZekJtNkVkbUJHYWRBNW9jTFdBQjBwa0xpZGpNVTRRRHduOVV1bjRpWnRKdXRjeGR2TFVBTGl3MTgxcW1ua01zcnkwaldWblA3Q0ovNzFrZ0IxUGFiRjloSm10ZjNNd25kcWl2d2RIMUJjM1EyS0xWY3I5Wndua2NxVVh2Ly9jb0NaeWhIcFNFZ213bFI5aU1ENkdQTEs4dEkxbFp6K3dpZis5WklBZFQyL0lERUZFK0xQZ2xYcGEvV2lOQ2t2MSswZllmMG9UT1dOMTNVUElUbzUrdkxLOHRJMWxaeit3aWYrOVpJQWRUMkZmZWFEUTZJeXRIS1dFcVJIWnRPUEI3YmcrUW1HaEcwY2l0bjg3bndOQVluUFFGYTI2RVlxUUdpczhhRXFVQldZS29FYURJVTY4eC9jUXUrcFBRTjQ4c3J5MGpXVm5QN0NKLzcxa2dCMVBhT1Z4Uitsd2R5amtzWk9oSnIwOExGeXl2TFNOWldjL3NJbi92V1NBSFU5dkp6TCtkbHJibnNCZVJzdTJkN1U2M1huc3NUZGdrMU93bTdBWmU5bmdqUXl5dkxTTlpXYy9zSW4vdldTQUhVOXJzeFd3NnhvRGlDejNRV2xFbzNEcWZqRWx5L3hnTkEzV1RmRGluRm9XL3N5eXZMU05aV2Mvc0luL3ZXU0FIVTlpMDlKOWE4L041R0NwOTBYYyszVFV0bm1SdkZXUHZScmdBWXFobDRUVFRneXl2TFNOWldjL3NJbi92V1NBSFU5ancwZlFCZlk5UFpXMzJwVFNGZy9EbzJ5UkRMOGVwVEgxWEtobE1tV093N3l5dkxTTlpXYy9zSW4vdldTQUhVOXZUNXQ4WEh5SHRnR0RUUUF5enB5SW9nMVVBMFpzWXdQVmhDV2x5ait2Y0R6cFF5K3c3ODg3RGtKeXZ2MnduT0p4Wk9udDRFMU4xd0pjczIwZEMvRCtLMVNnaHZnN2pBUDdkcDh3K09OWEI2RWZYL2hFemlFcUI1d2o4aDluZnVEOHNyeTBqV1ZuUDdDSi83MWtnQjFQYVlPeC9ZalpHelNXYXliTFNTWVhXS01QU2gyamJpT1RtVlA3MC9yU3BiOE1zcnkwaldWblA3Q0ovNzFrZ0IxUForaVE4WHE3cHJSNkJkSUsyVXNQQnpFNDV4eGg2djEyRGZoYWFMMklmbFhqdWpZcERwczJJSTdUYWszblVaK2c3TEs4dEkxbFp6K3dpZis5WklBZFQyK0VKaUJwZjdNbmxnK0lXNytDZlhURGI3dHoybWJPUlZpYWdTVFNjYXFKdkxLOHRJMWxaeit3aWYrOVpJQWRUMkUvVktTWWpsdGdHWHRFYWNuNWJ0SnNzcnkwaldWblA3Q0ovNzFrZ0IxUGFXTE1WYU9WRzQvZTFWUFRTQXpZOUg4N09DSlhleCtpQU9vVytLQW5yaUIzSm5hNTZNaEh0akhoVDNYcnU0MHd0bStDRVdYdW9ZOFhFSkZkdmNGY0g3Q1Q0YVJldnRrN3FmcklHMFBwdlMzY3NyeTBqV1ZuUDdDSi83MWtnQjFQWjRnb0FSY0JpN1B1YjJLOVRYam1Bd29jZWZEVHJXTWhEdXBhd1BxUVhTRkI0QVQ5NEtzWlJzWFp0V0UzOTd4MU5aSHkyanZKSGk3bUZESzlRSnlCdnhVejBHNWtQWmhtL3lwMVp1YXlHOGF4YmJVNmYxZURhbml3TzJaMFhNaTV0YlZYYnFpS1VWakpjVm42L3NRY1R3NEVSdE5xZ1RCeTlSSXV2dy9aVEpUaUhHbHpCOFpMZXFheHk1czh5Y2U2cTc0ckhWOFNKTVNSVlBQcXpPdFVWMHl5dkxTTlpXYy9zSW4vdldTQUhVOWpjWWVUZTlPcC91ODNQeUFTdzkxd0xtdEpYN2t1SnNNeVFDdTJxdDZlK2s2WDlLdGJBSE4yQld6N0tBejVQcE56WDZBcVBRUC9yaWgvbUdwOFE0UEFTaUV5T1RUOGo1RXAyTFR6ME9DZ3h2eXl2TFNOWldjL3NJbi92V1NBSFU5aVJqYTVIZHdZWjQwU3JHQWQrSjZKWUorM3hpR2VTdFVBVkZ6dkJtaU5vVzdhMWtnbWs1TStPN1RwQ0JRNFFSTlZGWDFMNnJRZnFWK09jRk9kbFcxRDBJYXNtdG1qYTNBdEdaNm5GNzYwMWl2SFkzTGp1d1J4bzNrZHFUc2RXVWVNNlVNdnNPL1BPdzVDY3I3OXNKemlmclpIL3lOdjdTRFV4Qjd2NTRaMXl4MzRlOE1qRjNabnJ2a3RlVjUzRHUxT0svczdCNkRaQ3NtYTJNL1QyMGMvLzZ0bVllUG9TVDdTR2twWUJrUjVPRFhUOC84VTRRbVo2ckhpNFVtUDNjUENmWDFCSEVoMXI1UEg2Y3A4UGdaR0ROb0s2K3RqUm0yTFJFNjRkVm1mYXh3SGVsRDFsb0Vlc0N5RDUwMUg3UlkxTTlCdVpEMlladjhxZFdibXNodkdzSHFzemxtSnk2ekVwZFlxdFVQMDc5eUo3MTFqUGFaQ0w1VHJIZFR5aFNqdlhqajNlQ3o1d2NiZ1lXZG5ydFNGeUVpdGNONWJTdkF6UGpCTmZxT2hzUEF5OTh4c2ZVQ2FVTzdFaDBFZUZNSGNzcnkwaldWblA3Q0ovNzFrZ0IxUGJaeWlPbzVQWk9jejFUbkd0VjJBRnQ4dXMyRCtQbmpXQy8zZ0FMb0RJVjBYTkc2NUhNZHVzUzk4R0RubDU3QWFyTEs4dEkxbFp6K3dpZis5WklBZFQyQWtxeGFQcUhhYkJTZGd1K1JKU0NCZnMrTUZkSFVZTU0xMzh1S293K1c4V1B6bVJER1hMamxtL1RVYnMyS2F2MWMxNTdaTUY1VUhJWTZ4ZGJVcHIyemdIb2ZJSXdYd2RLTDFHV0JDQ2Q5VXowbmx5dHhVRTY4OVFha1NtK0x1aCs0QnpKbDYxSEFiN1prdnpUWWtKM0Evcy8xZVBpUHNLdW05ZU83R1lMNTR2RWYzbnJ2U3Q1MVMzTU0yQnk5QXNUc0lpUVV6MTB1TXlQOFJJbnFjMDBxOHNyeTBqV1ZuUDdDSi83MWtnQjFQYmJmcFpKNGRoYS9XM0RFaW5ITTcxY2l0cjJuclJWQmlVTnhnYXhQK0ROalZYVWQrRzhvVkRyNWVlTVBScXRZaFk4NzNMbHlCSzRLOVEvejdvQlpvVGxtT01COVgvditsN1V3NHJVa0c2cGtiaFB5NFZtT0pETHF2blI0SmI1Smo4Vjl2MUhhZ0Z1TzFLSWJVT0lHQWRQY0JiSUE5MEREbHorL0lrbnNjVHBxZUZGWk5JRXltZ1MrNlJpMXgrSlNIL0xLOHRJMWxaeit3aWYrOVpJQWRUMkp1SDNFUUFTdzdEYXI5ejhNbGVlNk9sM0YwbnVHSFpnNmIxcHgyRU45Rm8wT0R1ODJQVjBKSU04c2pPdzhSYS94QXZQc3RzTFVjNE5oMGdiY3pvdnZtVEdocFZYaVQ1eTZxbmZIcGZwcFhPTElFcWJ2VDZVSWhGZmhVNmExZlR4M3ZpVHVxRWIyUHB0WC9SRzRvVFB3Z0Nhelh0eVl5c2VwTzIrNnlpdlcydkxLOHRJMWxaeit3aWYrOVpJQWRUMnVlRWZRanFxOWN2UDBVTDFnWmRiZm9aN0FWOG54ZVFRVE5HTCt6MnB1cWZMSzh0STFsWnord2lmKzlaSUFkVDI5NHA0NlVzL2craXVXSEEyc2RIdUVKcWJtcDM0cDZDU1FSSTRieVJCQjZuT2xETDdEdnp6c09RbksrL2JDYzRuQlhOUEw2cjhpNmJuYmUrUUpLWU1BMU05QnVaRDJZWnY4cWRXYm1zaHZHdld3TTZwVW1FT0liS3NxcU5wM2JwTUl2VlV2UWliMHdjQWhPMmNvUGI5UjdUV0piRDgvano5LzNxa2pPZkc5bGMxaU9iQXBlcDN1aHN0Q2duUVVydnloNUdKVWhqdWdxZytIT29NOE5XeGthRE8rNjhqZ1lDcFcrQ1NkeXVoUlVlV1Z4Vkt1V3J3MXBQdTB0QXgxTlJSZ1RmbXlVNlBJQUdFS2V2NjBqWDM0OVpPMjMvOGw4M2VRMHBBRUcwNG9yM3hEdWlTL0hpdVY3MC9aTmJNcGpjTncyQXVENGlEN1hCeHNpNjB6TFFCYThzcnkwaldWblA3Q0ovNzFrZ0IxUGJzbmdabjdhQmZ1L1dtalF5dW9kVnRPMUxXTEtSRTgzWk8ybUYvNTlJYUJzc3J5MGpXVm5QN0NKLzcxa2dCMVBhSHAyK2Q1dGVZSW1rZXF1V3ZVdHY0TEdRY0haMGpNbXBtN2VnQU5EOTQ3TlB0TTZQSit6M29BYTc2NHA2STVjSGl3cWRTc25tM2tKZjhJYW1icURQeUJwZ2U4elkyRzlPTVpCOEtsQmt3TjBIZ05sNjA2R3lQeEZDRzJFTXRIUVBWVnRmZzh0QzZXelJ1VTJvZjQ0bDJuQ2Z1TUtVSG4zRmdRcGVaaTVjeVRHL0s4NjNVd1RqS0srcnE2bHI4ZGxUTEs4dEkxbFp6K3dpZis5WklBZFQyaERtWkF4TmdpbVB4MU94ZEhDUmwwczZmQUdwc0N4Y2dYNFdaNkVXdkpReXhSS2s4UlJTNkVqVW14bkdWUk9RSHl5dkxTTlpXYy9zSW4vdldTQUhVOW9BNm5LZmM3ZHUvZ0d4MlVCek84M3ZNeERoVGhqaFFHSStkb0E2a2ZmZWx5eXZMU05aV2Mvc0luL3ZXU0FIVTlwNmlrRVkrU3BIOURDMmUreUNtSjF6YTZXa3VndXM1N1h5bXVuOWxPUlcrUFBUQi9nc3lvdS9wbHp3aFExNlZMTXNyeTBqV1ZuUDdDSi83MWtnQjFQYXdPNXNsRmZvZ05rL09QeTNCRHBKeVpvbkVlQVM1b2FHbHorbStaZjlYSWw1N0NLYWdwWXVlbDdJNXByeWJpU2FOUG1sK0c0d3VtMEJnR29pbjZ0Sk03bU5CWkdiTlRZRHNBbXlwVU1YR0Zzc3J5MGpXVm5QN0NKLzcxa2dCMVBhc0JabFl0dWtQZmJ4ZFdCd2NnSmh4TWY1dFdNeDRxNVB2QUVzbEUzbWVlYTlXMzVOMTBibkFjajVRWWQxOWQ1Yk1QWFZGTFFKWGRUWHdTS0U4SHBmdFRvM1lpdUJBSStybzVSWXcyYkJwSGN4WGRRUkpNVUlXZzVsYUtBRDVycUZyMHltcWZEMEpBUXh4WVl1b05kRGYrVzFmaEZ1WVpYaGFKbjVyVVBIblp6enZjdVhJRXJncjFEL1B1Z0ZtaE9YTEs4dEkxbFp6K3dpZis5WklBZFQyQWNqQktYb1pWSzRJK2puV2hCenlBM2J4b1NxeXlJOG10ZGNnYWRpekxjekxLOHRJMWxaeit3aWYrOVpJQWRUMm13ZVBlNDFIVEk2TWhKbEFWZCtGMWNzcnkwaldWblA3Q0ovNzFrZ0IxUFk0OTltcDhTcy9DM3g4bVdpamNVZWhqRHhzSXhLQWNYVjU3Mk9JS0UwZVpNc3J5MGpXVm5QN0NKLzcxa2dCMVBiUVRhTVZTME4wT2tVdkxqUDFVaXRqeXl2TFNOWldjL3NJbi92V1NBSFU5dnNqMGRHVUJTWTBBb3phbm0rQ1F3RjNBVlV0T1pjSlpiNUFpZ0s2cnE3bUczYTk0M1VxL2xDK0p0TlJSaTNLWUdlZ3hjWjJHNnI3L0RNelgvUS9KcmhUQnVHZGduVlZ1cHJ3Y1E4dlFnbnZvaE1qazAvSStSS2RpMDg5RGdvTWI4c3J5MGpXVm5QN0NKLzcxa2dCMVBhdVV6UVZuSDBQcysyUVVFaGRpSTlCVUwvdG9WWTR0MEwyQUFSNGNOYTY5Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWmFsSC9OOVNHL0NDdGh6aThEWDhpS3huWXdHOVE1d1BrL2Q5VUl5WHYzUWZ5QXhCUlBpejRKVjZXdjFvalFwTDlmdEgySDlLRXpsamRkMUR5RTZPZnJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlyckhFd1N6Ym42d05zWEJnK015S0NvRkpQdHZ5Q3VUWElsMmVkMmhIbHUveXl2TFNOWldjL3NJbi92V1NBSFU5akNycWd0SENpNW9JbHNNMElMM0xBSGtTVmRqakt5VGpkU1d2bkNkOUJ3V1dBeFBQMGEySEJXS2hWR2d5bEc4bk1zcnkwaldWblA3Q0ovNzFrZ0IxUFkvdjdOUlRWQmJUL1RLOUlvNHNQL0MxNlJldFBwM21KTXNrZ0ZRaTN0eU82TGpScUJQNENiOEFWcWFseHJ1YXVUWElqMzFidGFFNDcxT05pem43UmJPQ0dySnJabzJ0d0xSbWVweGUrdE5ZbFdoOFpsVnhyaDdMV29ybm8xUWdGdkxLOHRJMWxaeit3aWYrOVpJQWRUMmZNeWdIbk5HeTErb3hNcTd4SGFpVWN3aHdRWjVVMytNdVFoeW5sMXExNlYyOGFFcXNzaVBKclhYSUduWXN5M00vMW9qdENHMk9rOWNoQXZkYzlidjdyTkVTaVNFKzkxRndralpOZVVjRVJtaUdkbVlhYUpZTHRUaWpTNlNUSThERVJvNDJjaFhDVVAwT21pVzc5QzZSSXczYmVTYWFWdUJLYjRqS2gvcVhVWDNpbmpwU3orRDZLNVljRGF4MGU0UUR1Y25hKzZXSVhGalU3YU45ZVVyRHBiS1JKL0pvUnE0N2Y5Y2lkbHVIMkR6MGR5Sjd6SVdJS1NPazBsQ010RHZuZ0RreFVkQ3NEd3Ntamh4MFhKUk9uTzFHcGxWL0dHMExweko0amhZQmgvOFNGd3dmcFczNTRySXErakRab2h6dG9TbnlkcHlXbXJjS1o0bDZrU0x1UFhOSDVVVVRyMURKdFN4MXZrNkNVTFBPdFU5bXNtRy95M2prbG9ndW9pWE5kZStGR1BFdXAwV3BnYnJTcVRla1EvTC80djlRTWl1OUFxTGtQaUNoY1U4NzNMbHlCSzRLOVEvejdvQlpvVGxoRWFQT1VUeDY3MFRPY1lsQ2d3ZDN2aExlVlhGVDVaQkxSMkFnWFNoMnNrODczTGx5Qks0SzlRL3o3b0Jab1RsUGo0OTFJQ0FFN1p3ZCs1MlhvcklvbEhyQS9BOFdueW1DOXZhOXFCUnpSV1ZyY0MzZ3FNSDBjbUpxY0ZHaWJOeE1JZ0hGSlFNTVNsWFcyR2tneWFoTVZ3bUwwYVM0TjloUFkrY3UwTENLa01MMERuQkxWeUVGYWdUUi9hREdTdDJwOHJhOGIvOXRtamRRa1JyckVBaWJvUjc2QlJNMk81VUVCWVNzOUpBR3dlYzduYjE4UlBOb2FpdHlGdHQwUE5XWVpiRUdaSUdienVOVzZIR2h4Z1lNWnp1ZHZYeEU4MmhxSzNJVzIzUTgxYVJFaGY0Rk1sZzBYN2wxWFZURW91YmhaQnQyWmRoaUh6WlEvczAzdWxKQU02VU12c08vUE93NUNjcjc5c0p6aWU2c2RUVEVOMTY1V2FybjlZTlBXNkVQTzl5NWNnU3VDdlVQOCs2QVdhRTVZYjNsSlpZVTRxOHFmS3VrbFFwUStic1p3YmxDaituUS9Ja0EyRW4rRndwS1ZtYjBwQmFiN1F0U0VNWlhOWkJtekwxRUwwZCtDUzlGUHFhVzhjdTRwaFVWcXIwZDZaRzI5WjZWVm9MM09FQm1oNVFxZHJtbllnREJ5M0tIZ2hHZFNmWDFCSEVoMXI1UEg2Y3A4UGdaR0FGbkVvOXFZSHFLa3pyODJlZzB1VnZLc2dRRWY4ZXBjd29IOEFwRlhPWEZhZktzRVV6ZVJVTHRIT0JqdTFKVUdwd1JFd2F5QkZNUW1EeXRNMDN4SVZZZjVDN1Zld3R6VGxOcmRZSnVlbFZuWEhPcURrVW95d0hmdnQvNHN6MmlZR2lVUFFuYWxBQk0wWG85aHY4ZWdJZzQ3cC9oWnFrNk5nTERKR3ErQloydm0vTmJiVktkTjBQZUZqYjZoS05PaGFQOE14cElYRlZ4bnN5aGFYYWlmd2EwWkRNYTBNQW5uNVBlR0F4eHloenZ6RlZLVGgyeGlLREI2UWJSSmNsa2pvemU4MnNNaG55djlsVDU1WSttOXFCNjdDSG1Va0FiUHQ3WnBMWkNTZFdqZCt2dmVQQ0R3MC9VaXc0SFgzLzZKclRtZ2xEOEErM3NUWm8yVy9UUE5icmVVTFdZSWh1U1ZGcVltcG1wckp4Z1dpb0Q3b3JyTFpyTEVHNkYvRHJiU2lsd1RiSFhyeEEwTTAwdDc2cGVNeG9OcWJOdWlZODZENlNjOFFrU2htMjRXT1kvT2F1Q00wWUkyM2RmNEQ0d1lFcFBzTVZVUzdxYk1acENJSnE2SGREY1FuNW1BK2ZnM1lqdnFZa1UwVEp0aEVhT05uSVZ3bEQ5RHBvbHUvUXVrVGk0ZjBxc1NyL3h6MCtVclh4TzFQelE5MDluZHFPTk96ZzlkSWgxU1VSdHM5WGo4Y2RoeTFoaE9SZTdJY0VqNUw2U1MrQ2lzbHB5M21wbWpNNk1rMk0zR25ESGplS0VtMTRHSThDV21YY041N283UDdpcm9BRFNIQjcrTFpicTdDV0dCamJvSGU2UUxYa09PZFo2YWRpaGp4dWZWT2puN3F6cnUvbDk5MXQrT29saUNWczdkRGJwbWRhbE16OGhUZml3eHNjR3dJRUErQmJVVlVrOUw1RHpGTFhSY0dUcHQ2WXNtSzJtcUQ0anVrWE14RU9YZUNaM2ZvS2xKYmloQWw4MjVCMFZuS0psVzFwaHFpOWE0M2FTaGtwcEhRTHRrZjF2VytySGZhdkxvMlNITEZLeXMvNnkvcDVkcGJSbmg5Wld0ak1CdFVyMmtjcGZWSTNUcTJhQmVYaER6U2RFNWtVVGxYdEFlQzZiakZmZGdJQXVUM2kvLysreWtjb1YreE54L1UxeStDVUhHVjFGczZlSGlielxcXCIpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpmL/ph4zkuIDnuqdcIixcInBhdGhcIjpcInNoYXJpZFwiLFwicnVsZVwiOlwianM6XFxuLy92YXIgaXRlbXMgPSBbXTtcXG5mdW5jdGlvbiBmb3JtYXREYXRlKF9kYXRlLCBfZm10KSB7XFxuICAgIGxldCBmbXQgPSBfZm10IHx8IFxcXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXFxcIjtcXG4gICAgY29uc3QgZGF0ZSA9ICFpc05hTihfZGF0ZSkgPyBuZXcgRGF0ZShfZGF0ZSAqIDEwMDApIDogbmV3IERhdGUoX2RhdGUpO1xcbiAgICBjb25zdCBvID0ge1xcbiAgICAgICAgXFxcIk0rXFxcIjogZGF0ZS5nZXRNb250aCgpICsgMSwgLy/mnIjku70gXFxuICAgICAgICBcXFwiZCtcXFwiOiBkYXRlLmdldERhdGUoKSwgLy/ml6UgXFxuICAgICAgICBcXFwiaCtcXFwiOiBkYXRlLmdldEhvdXJzKCkgJSAxMiA9PSAwID8gMTIgOiBkYXRlLmdldEhvdXJzKCkgJSAxMixcXG4gICAgICAgIFxcXCJIK1xcXCI6IGRhdGUuZ2V0SG91cnMoKSwgLy/lsI/ml7YgXFxuICAgICAgICBcXFwibStcXFwiOiBkYXRlLmdldE1pbnV0ZXMoKSwgLy/liIYgXFxuICAgICAgICBcXFwicytcXFwiOiBkYXRlLmdldFNlY29uZHMoKSwgLy/np5IgXFxuICAgICAgICBcXFwicStcXFwiOiBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgKyAzKSAvIDMpLCAvL+Wto+W6piBcXG4gICAgICAgIFxcXCJTXFxcIjogZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAvL+avq+enkiBcXG4gICAgfTtcXG4gICAgaWYgKC8oeSspLy50ZXN0KGZtdCkpIHtcXG4gICAgICAgIGZtdCA9IGZtdC5yZXBsYWNlKFJlZ0V4cC4kMSwgKGRhdGUuZ2V0RnVsbFllYXIoKSArIFxcXCJcXFwiKS5zdWJzdHIoNCAtIFJlZ0V4cC4kMS5sZW5ndGgpKTtcXG4gICAgfVxcbiAgICBmb3IgKGxldCBrIGluIG8pIHtcXG4gICAgICAgIGlmIChuZXcgUmVnRXhwKFxcXCIoXFxcIiArIGsgKyBcXFwiKVxcXCIpLnRlc3QoZm10KSkge1xcbiAgICAgICAgICAgIGZtdCA9IGZtdC5yZXBsYWNlKFJlZ0V4cC4kMSwgKFJlZ0V4cC4kMS5sZW5ndGggPT0gMSkgPyAob1trXSkgOiAoKFxcXCIwMFxcXCIgKyBvW2tdKS5zdWJzdHIoKFxcXCJcXFwiICsgb1trXSkubGVuZ3RoKSkpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBmbXQ7XFxufTtcXG5cXG5mdW5jdGlvbiBmb3JtYXRTaXplKHNpemUpIHtcXG4gICAgaWYgKCFzaXplKSB7XFxuICAgICAgICByZXR1cm4gJyc7XFxuICAgIH1cXG4gICAgY29uc3QgdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcXG4gICAgbGV0IGkgPSAwO1xcbiAgICB3aGlsZSAoc2l6ZSA+PSAxMDI0KSB7XFxuICAgICAgICBzaXplIC89IDEwMjQ7XFxuICAgICAgICBpKys7XFxuICAgIH1cXG4gICAgc2l6ZSA9IGkgPyBOdW1iZXIoc2l6ZS50b0ZpeGVkKDIpKSA6IHNpemU7XFxuICAgIHJldHVybiBgJHtzaXplfSAke3VuaXRzW2ldfWA7XFxufVxcbi8vbG9nKHJlYWx1cmwpO1xcblxcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG59XFxuaWYgKE1ZX1BBR0UgPiAxICYmIGdldE15VmFyKCduZXh0cGFnZScsICcnKSA9PSAnJykge1xcbiAgICBsb2coJ+ayoeacieS4i+S4gOmhtScpO1xcbn0gZWxzZSB7XFxuICAgIHRyeSB7XFxuICAgICAgICAvL3ZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMveHlxL2FsaXRva2VuLmpzb24nLCB7fSkpLnJlZnJlc2hfdG9rZW47XFxuICAgICAgICB2YXIgcmVmdG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9pY3ktYWxpLXRva2VuLmpzb24nLCB7fSkpWzBdLnJlZnJlc2hfdG9rZW47XFxuICAgICAgICB2YXIgc2hhcmVJZCA9IGRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5zcGxpdCgnY29tL3MvJylbMV0uc3Vic3RyaW5nKDAsIDExKTtcXG4gICAgICAgIGxldCBnZXRzaGFyID0gZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvc2hhcmVfbGluay9nZXRfc2hhcmVfYnlfYW5vbnltb3VzJywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwifScsXFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IHB1c2huYW1lID0gSlNPTi5wYXJzZShnZXRzaGFyKS5maWxlX2luZm9zWzBdLmZpbGVfbmFtZTtcXG4gICAgICAgIC8vdmFyIGxpc3R5cCA9IEpTT04ucGFyc2UoZ2V0c2hhcikuZmlsZV9pbmZvc1swXS50eXBlO1xcbiAgICAgICAgLy92YXIgcGZpbGVpZCA9IEpTT04ucGFyc2UoZ2V0c2hhcikuZmlsZV9pbmZvc1swXS5maWxlX2lkO1xcblxcbiAgICAgICAgdmFyIHNoYXJldG9rZW4gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vdjIvc2hhcmVfbGluay9nZXRfc2hhcmVfdG9rZW4nLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9wd2RcXFwiOlxcXCJcXFwiLFxcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCJ9JyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSkpLnNoYXJlX3Rva2VuO1xcbiAgICAgICAgLy9sb2coc2hhcmV0b2tlbik7XFxuXFxuICAgICAgICBsZXQgbmV4dCA9IGdldE15VmFyKCduZXh0cGFnZScsICcnKSAhPSAnJyA/ICcsXFxcIm1hcmtlclxcXCI6XFxcIicgKyBnZXRNeVZhcignbmV4dHBhZ2UnKSArICdcXFwiJyA6ICcnO1xcbiAgICAgICAgaWYgKCFkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuaW5jbHVkZXMoJy9mb2xkZXIvJykpIHtcXG4gICAgICAgICAgICAvL2lmKCFsaXN0eXAgPT0gJ2ZvbGRlcicpe1xcbiAgICAgICAgICAgIHZhciByZXNjb2QgPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9maWxlL2xpc3QnLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgICAgICAgICAnWC1TaGFyZS1Ub2tlbic6IHNoYXJldG9rZW5cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwiLFxcXCJwYXJlbnRfZmlsZV9pZFxcXCI6XFxcInJvb3RcXFwiLFxcXCJsaW1pdFxcXCI6MTAwLFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXCI6XFxcImltYWdlL3Jlc2l6ZSx3XzE2MC9mb3JtYXQsanBlZ1xcXCIsXFxcImltYWdlX3VybF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTkyMC9mb3JtYXQsanBlZ1xcXCIsXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFwiLFxcXCJvcmRlcl9ieVxcXCI6XFxcIm5hbWVcXFwiLFxcXCJvcmRlcl9kaXJlY3Rpb25cXFwiOlxcXCJBU0NcXFwiJyArIG5leHQgKyAnfScsXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgLy9sb2cocmVzY29kKTtcXG4gICAgICAgICAgICB2YXIgbGlzdHlwID0gSlNPTi5wYXJzZShyZXNjb2QpLml0ZW1zWzBdLnR5cGU7XFxuICAgICAgICAgICAgdmFyIHBmaWxlaWQgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXNbMF0uZmlsZV9pZDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIGxpc3R5cCA9ICdmb2xkZXInO1xcbiAgICAgICAgICAgIHZhciBwZmlsZWlkID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLnNwbGl0KCdmb2xkZXIvJylbMV1cXG5cXG4gICAgICAgIH1cXG4gICAgICAgIC8vbG9nKGh0bWwpO1xcbiAgICAgICAgaWYgKGxpc3R5cCA9PSAnZm9sZGVyJykge1xcbiAgICAgICAgICAgIHZhciByZXNjb2QgPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9maWxlL2xpc3QnLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgICAgICAgICAnWC1TaGFyZS1Ub2tlbic6IHNoYXJldG9rZW5cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgYm9keTogJ3tcXFwic2hhcmVfaWRcXFwiOlxcXCInICsgc2hhcmVJZCArICdcXFwiLFxcXCJwYXJlbnRfZmlsZV9pZFxcXCI6XFxcIicgKyBwZmlsZWlkICsgJ1xcXCIsXFxcImxpbWl0XFxcIjoxMDAsXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcIixcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZVxcXFwvcmVzaXplLHdfMTkyMC9mb3JtYXQsanBlZ1xcXCIsXFxcInZpZGVvX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwidmlkZW8vc25hcHNob3QsdF8xMDAwLGZfanBnLGFyX2F1dG8sd18zMDBcXFwiLFxcXCJvcmRlcl9ieVxcXCI6XFxcIm5hbWVcXFwiLFxcXCJvcmRlcl9kaXJlY3Rpb25cXFwiOlxcXCJBU0NcXFwiJyArIG5leHQgKyAnfScsXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICB9IC8v5Y+W5paH5Lu25aS5XFxuICAgICAgICAvL2xvZyhyZXNjb2QpO1xcblxcbiAgICAgICAgaWYgKEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcikge1xcbiAgICAgICAgICAgIGxldCBtYXJrZXIgPSBKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXI7XFxuICAgICAgICAgICAgaWYgKG1hcmtlci5sZW5ndGggPiAxMCkge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignbmV4dHBhZ2UnLCBtYXJrZXIpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ25leHRwYWdlJyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGNvbnRzID0gSlNPTi5wYXJzZShyZXNjb2QpLml0ZW1zOyAgICAgICAgXFxuICAgICAgICB2YXIgdHVpc29uZyA9IFtdO1xcbiAgICAgICAgZm9yICh2YXIgaSBpbiBjb250cykge1xcbiAgICAgICAgICAgIHZhciBsaXN0eXAgPSBjb250c1tpXS50eXBlO1xcbiAgICAgICAgICAgIGlmIChsaXN0eXAgIT0gJ2ZvbGRlcicpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGNhdGUgPSBjb250c1tpXS5jYXRlZ29yeTtcXG4gICAgICAgICAgICAgICAgdmFyIGZuYW1lID0gY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgaWYgKGNhdGUgPT0gJ3ZpZGVvJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdkb2MnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TlicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/CflrwnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICd6aXAnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gY29udHNbaV0ubmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYWxpbGF6eVxcXCIpKHNoYXJlSWQsIGlucHV0LCBjYXRlKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNhdGUsIGZuYW1lLCByZWZ0b2tlbiksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBmb3JtYXREYXRlKGNvbnRzW2ldLnVwZGF0ZWRfYXQpICsgJyAgJyArIGZvcm1hdFNpemUoY29udHNbaV0uc2l6ZSksXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBjb250c1tpXS5maWxlX2lkXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuXFxuICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+TgicgKyBjb250c1tpXS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGNvbnRzW2ldLmZpbGVfaWQgKyAnPz8/ZnlwYWdlJykucnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgcHVzaG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9ydWxlbG9vcCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjb250c1tpXS5uYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIH0gLy9lbmQgaWZcXG4gICAgICAgIH0gLy9lbmQgZm9yIGlcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfmrKfmrKfvvIzmiqXplJnkuobjgIInLFxcbiAgICAgICAgICAgIHVybDogZGVjb2RlVVJJQ29tcG9uZW50KGdldFJlc0NvZGUoKS5zcGxpdCgnIyMnKVsxXSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuLypcXG5zZXRIb21lUmVzdWx0KHtcXG4gICAgZGF0YTogaXRlbXNcXG59KTtcXG4qL1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Zi/6YeM5bWM5aWXXCIsXCJwYXRoXCI6XCJydWxlbG9vcFwiLFwicnVsZVwiOlwidmFyIGl0ZW1zID0gW107XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShfZGF0ZSwgX2ZtdCkge1xcbiAgICBsZXQgZm10ID0gX2ZtdCB8fCBcXFwieXl5eS1NTS1kZCBISDptbTpzc1xcXCI7XFxuICAgIGNvbnN0IGRhdGUgPSAhaXNOYU4oX2RhdGUpID8gbmV3IERhdGUoX2RhdGUgKiAxMDAwKSA6IG5ldyBEYXRlKF9kYXRlKTtcXG4gICAgY29uc3QgbyA9IHtcXG4gICAgICAgIFxcXCJNK1xcXCI6IGRhdGUuZ2V0TW9udGgoKSArIDEsIC8v5pyI5Lu9IFxcbiAgICAgICAgXFxcImQrXFxcIjogZGF0ZS5nZXREYXRlKCksIC8v5pelIFxcbiAgICAgICAgXFxcImgrXFxcIjogZGF0ZS5nZXRIb3VycygpICUgMTIgPT0gMCA/IDEyIDogZGF0ZS5nZXRIb3VycygpICUgMTIsXFxuICAgICAgICBcXFwiSCtcXFwiOiBkYXRlLmdldEhvdXJzKCksIC8v5bCP5pe2IFxcbiAgICAgICAgXFxcIm0rXFxcIjogZGF0ZS5nZXRNaW51dGVzKCksIC8v5YiGIFxcbiAgICAgICAgXFxcInMrXFxcIjogZGF0ZS5nZXRTZWNvbmRzKCksIC8v56eSIFxcbiAgICAgICAgXFxcInErXFxcIjogTWF0aC5mbG9vcigoZGF0ZS5nZXRNb250aCgpICsgMykgLyAzKSwgLy/lraPluqYgXFxuICAgICAgICBcXFwiU1xcXCI6IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLy/mr6vnp5IgXFxuICAgIH07XFxuICAgIGlmICgvKHkrKS8udGVzdChmbXQpKSB7XFxuICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChkYXRlLmdldEZ1bGxZZWFyKCkgKyBcXFwiXFxcIikuc3Vic3RyKDQgLSBSZWdFeHAuJDEubGVuZ3RoKSk7XFxuICAgIH1cXG4gICAgZm9yIChsZXQgayBpbiBvKSB7XFxuICAgICAgICBpZiAobmV3IFJlZ0V4cChcXFwiKFxcXCIgKyBrICsgXFxcIilcXFwiKS50ZXN0KGZtdCkpIHtcXG4gICAgICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChSZWdFeHAuJDEubGVuZ3RoID09IDEpID8gKG9ba10pIDogKChcXFwiMDBcXFwiICsgb1trXSkuc3Vic3RyKChcXFwiXFxcIiArIG9ba10pLmxlbmd0aCkpKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gZm10O1xcbn07XFxuXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShzaXplKSB7XFxuICAgIGlmICghc2l6ZSkge1xcbiAgICAgICAgcmV0dXJuICcnO1xcbiAgICB9XFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxuICAgIGxldCBpID0gMDtcXG4gICAgd2hpbGUgKHNpemUgPj0gMTAyNCkge1xcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgaSsrO1xcbiAgICB9XFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt1bml0c1tpXX1gO1xcbn1cXG4vL2xldCB0dmlwID0gZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICcnKTtcXG5cXG4vL2xvZyhnZXRSZXNDb2RlKCkpO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG59XFxuaWYgKE1ZX1BBR0UgPiAxICYmIGdldE15VmFyKCduZXh0cGFnZScsICcnKSA9PSAnJykge1xcbiAgICBsb2coJ+ayoeacieS4i+S4gOmhtScpO1xcbn0gZWxzZSB7XFxuICAgIGxldCByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG5cXG4gICAgbGV0IG5leHQgPSBnZXRNeVZhcignbmV4dHBhZ2UnLCAnJykgIT0gJycgPyAnLFxcXCJtYXJrZXJcXFwiOlxcXCInICsgZ2V0TXlWYXIoJ25leHRwYWdlJykgKyAnXFxcIicgOiAnJztcXG5cXG4gICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIixcXFwicGFyZW50X2ZpbGVfaWRcXFwiOlxcXCInICsgZ2V0UmVzQ29kZSgpLnNwbGl0KCc/Pz8nKVswXSArICdcXFwiLFxcXCJsaW1pdFxcXCI6MTAwLFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXCI6XFxcImltYWdlL3Jlc2l6ZSx3XzE2MC9mb3JtYXQsanBlZ1xcXCIsXFxcImltYWdlX3VybF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2VcXFxcL3Jlc2l6ZSx3XzE5MjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJ2aWRlb190aHVtYm5haWxfcHJvY2Vzc1xcXCI6XFxcInZpZGVvL3NuYXBzaG90LHRfMTAwMCxmX2pwZyxhcl9hdXRvLHdfMzAwXFxcIixcXFwib3JkZXJfYnlcXFwiOlxcXCJuYW1lXFxcIixcXFwib3JkZXJfZGlyZWN0aW9uXFxcIjpcXFwiQVNDXFxcIicgKyBuZXh0ICsgJ30nLFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgfSk7XFxuICAgIC8vbG9nKHJlc2NvZCk7XFxuICAgIGlmIChKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXIpIHtcXG4gICAgICAgIGxldCBtYXJrZXIgPSBKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXI7XFxuICAgICAgICBpZiAobWFya2VyLmxlbmd0aCA+IDEwKSB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ25leHRwYWdlJywgbWFya2VyKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICB2YXIgY29udHMgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXM7XFxuICAgIHZhciB0dWlzb25nID0gW107XFxuICAgIGZvciAodmFyIGkgaW4gY29udHMpIHtcXG5cXG4gICAgICAgIHZhciBsaXN0eXAgPSBjb250c1tpXS50eXBlO1xcbiAgICAgICAgaWYgKGxpc3R5cCAhPSAnZm9sZGVyJykge1xcbiAgICAgICAgICAgIHZhciBjYXRlID0gY29udHNbaV0uY2F0ZWdvcnk7XFxuICAgICAgICAgICAgdmFyIGZuYW1lID0gY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICBpZiAoY2F0ZSA9PSAndmlkZW8nKSB7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5O6JyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdkb2MnKSB7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICfwn5OWJyArIGNvbnRzW2ldLm5hbWU7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdpbWFnZScpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/CflrwnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ3ppcCcpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk6YnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBjb250c1tpXS5uYW1lXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogJChjb250c1tpXS5maWxlX2lkKS5sYXp5UnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYWxpbGF6eVxcXCIpKHNoYXJlSWQsIGlucHV0LCBjYXRlKTtcXG4gICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgc2hhcmV0b2tlbiwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogZm9ybWF0RGF0ZShjb250c1tpXS51cGRhdGVkX2F0KSArICcgICcgKyBmb3JtYXRTaXplKGNvbnRzW2ldLnNpemUpLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRzW2ldLmZpbGVfaWRcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ/Cfk4InICsgY29udHNbaV0ubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGNvbnRzW2ldLmZpbGVfaWQgKyAnPz8/ZnlwYWdlJykucnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgcHVzaG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3J1bGVsb29wJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgc2hhcmV0b2tlbiwgY29udHNbaV0ubmFtZSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICB9IC8vZW5kIGlmXFxuXFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGl0ZW1zKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumYv+mHjOaOqOmAgVwiLFwicGF0aFwiOlwicHVzaFwiLFwicnVsZVwiOlwianM6XFxuLy9sb2coTVlfVVJMKTtcXG52YXIgaXRlbXMgPSBbXTtcXG52YXIgcmVhbHVybCA9IE1ZX1VSTC5zcGxpdCgnIyMnKVsxXS5zcGxpdCgnPz8/JylbMF07XFxuaWYgKGRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5pbmNsdWRlcygnd3d3LmFsaXl1bmRyaXZlJykgJiYgIXJlYWx1cmwuaW5jbHVkZXMoJyUzQiU3QicpKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3NoYXJpZCcsIHt9KSkucnVsZSlcXG59XFxuc2V0UmVzdWx0KGl0ZW1zKTtcIn1dIiwiaWNvbiI6IiIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment