xiaomianao666

小程序:AI识片

Sep 3rd, 2023
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@AI识片@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiQUnor4bniYciLCJhdXRob3IiOiIiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyMiLCJ2ZXJzaW9uIjo1NSwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ0b29sIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogXCLnu4jmnoHlpKfmi5vvvIzovpPlhaXmkJzntKLlnLDlnYDnlJ/miJDop4TliJlcIixcbiAgICB1cmw6IFwiXCIsXG4gICAgY29sX3R5cGU6IFwidGV4dF9jZW50ZXJfMVwiLFxuICAgIGRlc2M6IFwiXCIsXG4gICAgcGljX3VybDogXCJcIlxufSk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwiXCIsXG4gICAgdXJsOiBcIlwiLFxuICAgIGNvbF90eXBlOiBcImlucHV0XCIsXG4gICAgZGVzYzogXCLor7fovpPlhaXopoHnlJ/miJDnmoTop4TliJnlkIjpm4blkI1cIixcbiAgICBwaWNfdXJsOiBcIlwiLFxuICAgIGV4dHJhOiB7ICAgICAgICBcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgcHV0TXlWYXIoXCJyMVwiLCBpbnB1dCk7XG4gICAgICAgIH0pLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFwicjFcIixcIlwiKVxuICAgIH1cbn0pO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogXCJcIixcbiAgICB1cmw6IFwiXCIsXG4gICAgY29sX3R5cGU6IFwiaW5wdXRcIixcbiAgICBkZXNjOiBcIuekuuS+i++8mlxcbuinhOWImTFAaHR0cDovLzEuY29tP2t3PSVFNCVCRFxcbuinhOWImTJAaHR0cDovLzIuY29tP2t3PSVFNCVCRFwiLFxuICAgIHBpY191cmw6IFwiXCIsXG4gICAgZXh0cmE6IHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0YXJlYVwiLFxuICAgICAgICBoZWlnaHQ6IDMsXG4gICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgcHV0TXlWYXIoXCJydWxlXCIsIGlucHV0KTtcbiAgICAgICAgfSksXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXCJydWxlXCIsIFwiXCIpXG4gICAgfVxufSk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwi55Sf5oiQ6KeE5YiZXCIsXG4gICAgdXJsOiAkKFwiI25vTG9hZGluZyNcIikubGF6eVJ1bGUoKHJ1bGUxKSA9PiB7XG4gICAgICAgIGxldCBydWxlcyA9IGdldE15VmFyKFwicnVsZVwiLCBcIlwiKTtcbiAgICAgICAgbGV0IHIxID0gZ2V0TXlWYXIoXCJyMVwiLCBcIlwiKTtcbiAgICAgICAgcnVsZXMgPSBydWxlcy5zcGxpdChcIlxcblwiKVxuICAgICAgICAuZmlsdGVyKGl0ID0+IGl0LmluY2x1ZGVzKFwiQFwiKSlcbiAgICAgICAgLm1hcChpdD0+e1xuICAgICAgICAgICAgbGV0IGEgPSBpdC5zcGxpdChcIkBcIik7XG4gICAgICAgICAgICBsZXQgciA9IGRlY29kZVVSSUNvbXBvbmVudChhWzFdKTtcbiAgICAgICAgICAgIHIgPSByLnJlcGxhY2UobmV3IFJlZ0V4cChcIltcXHU0ZTAwLVxcdTlmYTVdK1wiLCBcImdcIiksIFwiKipcIik7XG4gICAgICAgICAgICByZXR1cm4gYVswXSArIFwiQFwiICsgcjtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCJcXFxcblwiKTtcbiAgICAgICAgaWYgKHJ1bGVzID09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBcInRvYXN0Oi8v6K+35YWI5Zyo5LiK6Z2i6L6T5YWl572R56uZ5pCc57Si5Zyw5Z2A5ZCI6ZuGXCI7XG4gICAgICAgIH1cbiAgICAgICAgcnVsZSA9IEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL2hvbWVAXCIgKyBydWxlMSkpO1xuICAgICAgICBydWxlLmZpbmRfcnVsZSA9IFwianM6JC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcHJvJylcIjtcbiAgICAgICAgcnVsZS51cmwgPSBcImhpa2VyOi8vZW1wdHkjI2Z5cGFnZVwiO1xuICAgICAgICByZXR1cm4gXCLmtbfpmJTop4bnlYzvv6Vob21lX3J1bGXvv6VcIiArIEpTT04uc3RyaW5naWZ5KHJ1bGUpXG4gICAgICAgICAgICAucmVwbGFjZShcIntSVUxFU31cIiwgcnVsZXMpXG4gICAgICAgICAgICAucmVwbGFjZShydWxlMSwgcjEpO1xuICAgIH0sIE1ZX1JVTEUudGl0bGUpLFxuICAgIGNvbF90eXBlOiBcInRleHRfMlwiLFxuICAgIGRlc2M6IFwiXCIsXG4gICAgcGljX3VybDogXCJcIlxufSk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwi5p2l5Liq56S65L6LXCIsXG4gICAgdXJsOiAkKFwiI25vTG9hZGluZyNcIikubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICBwdXRNeVZhcihcInJ1bGVcIiwgXCJBcHBNb3ZpZUBodHRwczovL3d3dy5hcHBtb3ZpZS5jYy9pbmRleC5waHAvdm9kL3NlYXJjaC5odG1sP3dkPSVFNCVCRCVBMCVFNiU5OCVBRiVFNiU4OCU5MSVFNyU5QSU4NCZzdWJtaXQ9XCIpO1xuICAgICAgICBwdXRNeVZhcihcInIxXCIsIFwiQUnmtYvor5VcIik7XG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XG4gICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIlxuICAgIH0pLFxuICAgIGNvbF90eXBlOiBcInRleHRfMlwiLFxuICAgIGRlc2M6IFwiXCIsXG4gICAgcGljX3VybDogXCJcIlxufSk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwi5Lul5LiL5Li65rWL6K+V5Yy65Z+fXCIsXG4gICAgdXJsOiBcIlwiLFxuICAgIGNvbF90eXBlOiBcInRleHRfY2VudGVyXzFcIixcbiAgICBkZXNjOiBcIlwiLFxuICAgIHBpY191cmw6IFwiXCJcbn0pO1xuXG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwi6LWw5L2gXCIsXG4gICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9wYWdlL3A/dT1cIiArIGJhc2U2NEVuY29kZShpbnB1dClcbiAgICB9KSxcbiAgICBjb2xfdHlwZTogXCJpbnB1dFwiLFxuICAgIGRlc2M6IFwi6K+36L6T5YWl6YCJ6ZuG572R6aG15Zyw5Z2AXCIsXG4gICAgcGljX3VybDogXCJcIlxufSk7XG5cblxuZC5wdXNoKHtcbiAgICB0aXRsZTogXCJcIixcbiAgICB1cmw6IFwiXCIsXG4gICAgY29sX3R5cGU6IFwiaW5wdXRcIixcbiAgICBkZXNjOiBcIuivt+i+k+WFpee9keermeaQnOe0ouWcsOWdgO+8jOimgeW4puaQnOe0ouivjVwiLFxuICAgIHBpY191cmw6IFwiXCIsXG4gICAgZXh0cmE6IHtcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgcHV0TXlWYXIoXCJyXCIsIGlucHV0KTtcbiAgICAgICAgfSksXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXCJyXCIsIFwiXCIpXG4gICAgfVxufSk7XG5cblxuZC5wdXNoKHtcbiAgICB0aXRsZTogXCLmkJzntKLmtYvor5VcIixcbiAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICBsZXQgciA9IGdldE15VmFyKFwiclwiLCBcIlwiKTtcbiAgICAgICAgaWYgKHIgPT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly/or7flhYjlnKjkuIrpnaLovpPlhaXnvZHnq5nmkJzntKLlnLDlnYBcIjtcbiAgICAgICAgfVxuICAgICAgICBwdXRNeVZhcihcInNcIiwgaW5wdXQpO1xuICAgICAgICByID0gZGVjb2RlVVJJQ29tcG9uZW50KHIpO1xuICAgICAgICBsZXQgc3VybCA9IHIucmVwbGFjZShuZXcgUmVnRXhwKFwiW1xcdTRlMDAtXFx1OWZhNV0rXCIsIFwiZ1wiKSwgXCIqKlwiKTtcbiAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9wYWdlL3M/a2V5PVwiICsgaW5wdXQgKyBcIiZ1PVwiICsgYmFzZTY0RW5jb2RlKHN1cmwpO1xuICAgIH0pLFxuICAgIGNvbF90eXBlOiBcImlucHV0XCIsXG4gICAgZGVzYzogXCLor7fovpPlhaXlhbPplK7or43mtYvor5VcIixcbiAgICBwaWNfdXJsOiBcIlwiLFxuICAgIGV4dHJhOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXCJzXCIsIFwiXCIpXG4gICAgfVxufSk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwi5p2l5Liq56S65L6LXCIsXG4gICAgdXJsOiAkKFwiI25vTG9hZGluZyNcIikubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICBwdXRNeVZhcihcInJcIiwgXCJodHRwczovL3d3dy5hcHBtb3ZpZS5jYy9pbmRleC5waHAvdm9kL3NlYXJjaC5odG1sP3dkPSVFNCVCRCVBMCVFNiU5OCVBRiVFNiU4OCU5MSVFNyU5QSU4NCZzdWJtaXQ9XCIpO1xuICAgICAgICBwdXRNeVZhcihcInNcIiwgXCLpvpnkuYvlrrbml49cIik7XG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XG4gICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIlxuICAgIH0pLFxuICAgIGNvbF90eXBlOiBcInRleHRfY2VudGVyXzFcIixcbiAgICBkZXNjOiBcIlwiLFxuICAgIHBpY191cmw6IFwiXCJcbn0pO1xuXG5cblxuc2V0UmVzdWx0KGQpOyIsInNlYXJjaF91cmwiOiJoaWtlcjovL2VtcHR5IyMqKiIsImdyb3VwIjoi4pGiQUkiLCJzZWFyY2hGaW5kIjoianM6XG52YXIgZCA9IFtdO1xubGV0IGtleSA9IE1ZX1VSTC5zcGxpdChcIiMjXCIpWzFdO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogXCLngrnmiJHlvIDlp4vogZrlkIjmkJzntKJcIiArIGtleSxcbiAgICB1cmw6IFwiaGlrZXI6Ly9wYWdlL3NvdXA/cD1meXBhZ2VcIixcbiAgICBleHRyYToge1xuICAgICAgICBwYWdlVGl0bGU6IFwi5pCc57SiXCIgKyBrZXksXG4gICAgICAgIGtleToga2V5XG4gICAgfVxufSk7XG5cbnNldFJlc3VsdChkKTtcbiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqfop6PmnpBcIixcInBhdGhcIjpcInBcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxubGV0IHVybCA9IGJhc2U2NERlY29kZShnZXRQYXJhbShcXFwidVxcXCIpKTtcXG5sZXQgaHRtbCA9IHJlcXVlc3QodXJsKTtcXG5sZXQgYWxpc3QgPSBwZGZhKGh0bWwsIFxcXCJib2R5JiZhXFxcIik7XFxubGV0IGFyciA9IGFsaXN0Lm1hcChpdCA9PiB7XFxuICAgIHJldHVybiB7XFxuICAgICAgICAvL2h0bWw6IGl0LFxcbiAgICAgICAgdGV4dDogcGRmaChpdCwgXFxcImEmJlRleHRcXFwiKSxcXG4gICAgICAgIHRpdGxlOiBwZGZoKGl0LCBcXFwiYSYmdGl0bGVcXFwiKSxcXG4gICAgICAgIGhyZWY6IHBkKGl0LCBcXFwiYSYmaHJlZlxcXCIsIHVybClcXG4gICAgfVxcbn0pO1xcbi8vbG9nKGFycik7XFxubGV0IGRlYnVnID0gZmFsc2U7XFxuXFxuZnVuY3Rpb24gY2xlYXJUZXh0KGl0KSB7XFxuICAgIHJldHVybiBpdC5yZXBsYWNlKC/nrKx86ZuGfOeroC9nLCBcXFwiXFxcIik7XFxufVxcblxcbmZ1bmN0aW9uIGlzTW92aWUoaXQpIHtcXG4gICAgaWYgKGl0ID09IG51bGwgfHwgaXQudGV4dCA9PSBudWxsKSB7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgbGV0IHRpdCA9IGl0LnRpdGxlIHx8IFxcXCJcXFwiO1xcbiAgICBpdCA9IGl0LnRleHQgfHwgXFxcIlxcXCI7XFxuICAgIGlmIChpdCA9PSBcXFwiXFxcIiB8fCBpdC5sZW5ndGggPiA4KSB7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgLy/mjpLpmaRcXG4gICAgbGV0IHJlZyA9IC9cXFxcLnzpq5jmuIXnm7Tmkq185YaZ55yf5o6o6I2QfOW9semZonzlvbHop4Z86JOd5YWJ55S15b2xfOmrmOa4heeUteW9sXznrKzkuIDlraN856ys5LqM5a2jfOesrOS4ieWto3znrKzlm5vlraN856ys5LqU5a2jLztcXG4gICAgaWYgKHRpdCAhPSBcXFwiXFxcIiAmJiAhdGl0LmluY2x1ZGVzKGl0KSB8fCByZWcudGVzdChpdCkpIHtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbiAgICByZXR1cm4gaXQubWF0Y2goL+WOn+eUu3zlpIfnlKh86JOd5YWJfOi2hea4hXzpq5jmuIV85q2j54mHfOmfqeeJiHw0S3w0a3wxMDgwUHw3MjBQfFRDfEhEfEJELylcXG59XFxuXFxuZnVuY3Rpb24gbm90Q2hhcHRlcihpdCkge1xcbiAgICBpZiAoaXQgPT0gbnVsbCB8fCBpdC50ZXh0ID09IG51bGwpIHtcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9XFxuICAgIHJldHVybiBpdC50ZXh0Lm1hdGNoKC9bMC05XVxcXFwuWzAtOV3liIYvKTtcXG59XFxuXFxuZnVuY3Rpb24gaXNDaGFwdGVyKGl0LCBwcmUsIG5leHQpIHtcXG4gICAgaWYgKG5vdENoYXB0ZXIoaXQpKSB7XFxuICAgICAgICAvL+S8mOWFiOaOkumZpFxcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxuICAgIC8v5Yik5pat5piv5LiN5piv55S15b2xXFxuICAgIGlmIChpc01vdmllKGl0KSkge1xcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH1cXG4gICAgcmV0dXJuIGlzQ2hhcHRlcjAoaXQsIHByZSkgfHwgaXNDaGFwdGVyMChpdCwgbmV4dCk7XFxufVxcblxcbmZ1bmN0aW9uIGdldENoYXB0ZXJOdW0oaXQpIHtcXG4gICAgaWYgKGl0ID09IG51bGwgfHwgaXQudGV4dCA9PSBudWxsKSB7XFxuICAgICAgICByZXR1cm4gLTE7XFxuICAgIH1cXG4gICAgaXQgPSBpdC50ZXh0IHx8IFxcXCJcXFwiO1xcbiAgICBpZiAoaXQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHJldHVybiAtMTtcXG4gICAgfVxcbiAgICBpdCA9IGNsZWFyVGV4dChpdCk7XFxuICAgIGxldCByZWcgPSAvXlswLTldKiQvO1xcbiAgICBpZiAoIXJlZy50ZXN0KGl0KSkge1xcbiAgICAgICAgcmV0dXJuIC0xO1xcbiAgICB9XFxuICAgIGl0ID0gcGFyc2VJbnQoaXQpO1xcbiAgICBpZiAoaXNOYU4oaXQpKSB7XFxuICAgICAgICByZXR1cm4gLTE7XFxuICAgIH1cXG4gICAgaWYgKGl0ID4gMTkwMCAmJiBpdCA8IDIxMDApIHtcXG4gICAgICAgIHJldHVybiAtMTtcXG4gICAgfVxcbiAgICByZXR1cm4gaXQ7XFxufVxcblxcbmZ1bmN0aW9uIGlzQ2hhcHRlcjAoaXQsIGJyb3RoZXIpIHtcXG4gICAgLyppZiAoZGVidWcpIHtcXG4gICAgICAgIGxvZyh7XFxuICAgICAgICAgICAgaXQ6IGl0LFxcbiAgICAgICAgICAgIGJyb3RoZXI6IGJyb3RoZXJcXG4gICAgICAgIH0pO1xcbiAgICB9Ki9cXG4gICAgaXQgPSBnZXRDaGFwdGVyTnVtKGl0KTtcXG4gICAgLy9pZiAoZGVidWcpIGxvZyhpdCk7XFxuICAgIGlmIChpdCA8IDApIHtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbiAgICBicm90aGVyID0gZ2V0Q2hhcHRlck51bShicm90aGVyKTtcXG4gICAgLy9pZiAoZGVidWcpIGxvZyhicm90aGVyKTtcXG4gICAgaWYgKGJyb3RoZXIgPCAwKSB7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgcmV0dXJuIGl0IC0gYnJvdGhlciA8IDIgJiYgaXQgLSBicm90aGVyID4gLTI7XFxufVxcblxcbmxldCBfd2ViID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgIGxldCB1cmxzID0gX2dldFVybHMoKTtcXG4gICAgbGV0IHJlZyA9IC9cXFxcLmh0bWx8XFxcXC5jc3N8XFxcXC5qcy87XFxuICAgIGZvciAobGV0IGsgaW4gdXJscykge1xcbiAgICAgICAgaWYgKCFyZWcudGVzdCh1cmxzW2tdKSAmJiB1cmxzW2tdLm1hdGNoKC9cXFxcLm1wNHxcXFxcLm0zdTgvKSkge1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKHVybHNba10pO1xcbiAgICAgICAgICAgIHJldHVybiBmeV9icmlkZ2VfYXBwLmdldEhlYWRlclVybCh1cmxzW2tdLnJlcGxhY2UoLy4qP3VybD0vLCBcXFwiXFxcIikpICsgXFxcIiNpZ25vcmVJbWc9dHJ1ZSNcXFwiO1xcbiAgICAgICAgfVxcbiAgICB9XFxufSk7XFxuXFxubGV0IHdlYiA9IGdldEl0ZW0oJ3dlYicsICcwJykgPT0gXFxcIjFcXFwiO1xcblxcbmZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuICAgIGxldCBpdCA9IGFycltpXTtcXG4gICAgbGV0IHQgPSBpdC50ZXh0O1xcbiAgICBpZiAoIWl0LmhyZWYgfHwgaXQuaHJlZiA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgY29udGludWU7XFxuICAgIH1cXG4gICAgbGV0IHByZSA9IGkgPT0gMCA/IG51bGwgOiBhcnJbaSAtIDFdO1xcbiAgICBsZXQgbmV4dCA9IGkgPT0gKGFyci5sZW5ndGggLSAxKSA/IG51bGwgOiBhcnJbaSArIDFdO1xcbiAgICBpZiAoaXNDaGFwdGVyKGl0LCBwcmUsIG5leHQpKSB7XFxuICAgICAgICBpZiAod2ViKSB7XFxuICAgICAgICAgICAgdmFyIHVybHggPSBcXFwid2ViUnVsZTovL1xcXCIgKyBpdC5ocmVmICsgXFxcIkBcXFwiICsgX3dlYjtcXG4gICAgICAgICAgICB2YXIgZXh0cmF4ID0ge1xcbiAgICAgICAgICAgICAgICBqc0xvYWRpbmdJbmplY3Q6IHRydWUsXFxuICAgICAgICAgICAgICAgIGlkOiBpdC5ocmVmLFxcbiAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbJy5tNGEnLCAnLm1wMycsICcuZmx2JywgJy5hdmknLCAnLjNncCcsICcubXBlZycsICcud212JywgJy5tb3YnLCAnLnJtdmInLCAnLmdpZicsICcuanBlZycsICcucG5nJywgJy5pY28nLCAnLnN2ZyddXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIHVybHggPSBcXFwidmlkZW86Ly9cXFwiICsgaXQuaHJlZjtcXG4gICAgICAgICAgICB2YXIgZXh0cmF4ID0ge1xcbiAgICAgICAgICAgICAgICBpZDogaXQuaHJlZlxcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB0LFxcbiAgICAgICAgICAgIHVybDogdXJseCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfM1xcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IGV4dHJheFxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuaWYgKGQubGVuZ3RoID09IDApIHtcXG4gICAgLy/ljLnphY3lpLHotKVcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGNhbkJhY2s6IHRydWUsXFxuICAgICAgICAgICAgYmxvY2tSdWxlczogW1xcXCIuZ2lmXFxcIiwgXFxcIi9hZC9cXFwiLCBcXFwiL2Fkcy9cXFwiLCBcXFwiZ29vZ2xlXFxcIiwgXFxcIi9zaC90by9cXFwiLCBcXFwiLkdJRlxcXCJdXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICB0b2FzdChcXFwiQUnljLnphY3lpLHotKXvvIzlt7Lkvb/nlKhYNeWKoOi9vVxcXCIpO1xcbiAgICBzZXRSZXN1bHQoZCk7XFxufSBlbHNlIHtcXG4gICAgLy/kuLrnur/ot6/liqDliIblibLnur9cXG4gICAgbGV0IGQyID0gW107XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgZDIucHVzaChkW2ldKTtcXG4gICAgICAgIGlmIChpIDwgZC5sZW5ndGggLSAxKSB7XFxuICAgICAgICAgICAgbGV0IGl0ID0gZFtpXTtcXG4gICAgICAgICAgICBsZXQgdDEgPSBwYXJzZUludChjbGVhclRleHQoaXQudGl0bGUpKTtcXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGRbaSArIDFdO1xcbiAgICAgICAgICAgIGxldCB0MiA9IHBhcnNlSW50KGNsZWFyVGV4dChuZXh0LnRpdGxlKSk7XFxuICAgICAgICAgICAgaWYgKHQyIC0gdDEgPiAxIHx8IHQxIC0gdDIgPiAxKSB7XFxuICAgICAgICAgICAgICAgIGQyLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkMi5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQyLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICBzZXRSZXN1bHQoZDIpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi5pCc57Si5rWL6K+VXCIsXCJwYXRoXCI6XCJzXCIsXCJydWxlXCI6XCJqczpcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXCJ1XFxcIikpO1xcbmxvZyh1cmwpO1xcbmxldCBrZXkgPSBnZXRQYXJhbShcXFwia2V5XFxcIik7XFxubGV0IHNwID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2Uvc3BcXFwiKTtcXG5zZXRSZXN1bHQoc3AodXJsLCBrZXksIFxcXCLmkJzntKLmtYvor5VcXFwiKSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLogZrlkIjmkJzntKJcIixcInBhdGhcIjpcInByb1wiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaQnOe0olxcXCIsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwi6K+36L6T5YWl5YWz6ZSu6K+N77yM5bC96YeP5bCR5a2X5LiN6KaB5aSa5a2XXFxcIixcXG4gICAgICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXCJzb3VcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwic291XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwic291XFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJzb1xcXCIpO1xcbiAgICB9KSk7XFxufVxcblxcbmxldCBzID0gZ2V0TXlWYXIoXFxcInNvdVxcXCIsIFxcXCJcXFwiKTtcXG5sZXQgciA9IFxcXCJcXFwiO1xcbmlmIChzICE9IFxcXCJcXFwiKSB7XFxuICAgIGxldCBwID0gTVlfUEFHRTtcXG4gICAgbGV0IHtcXG4gICAgICAgIGxvYWRcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IHtcXG4gICAgICAgIHdyYXBcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFwiKTtcXG4gICAgbGV0IGRhdGEgPSBsb2FkKHAsIHIgIT0gXFxcIlxcXCIgPyByIDogbnVsbCk7XFxuXFxuICAgIGxldCBwYWdlaWQgPSBNWV9SVUxFLnRpdGxlICsgXFxcIi1wYWdlXFxcIiArIHA7XFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLliqDovb3nrKxcXFwiICsgcCArIFxcXCLpobXkuK3vvIzov5vluqbvvJoxL1xcXCIgKyBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IHBhZ2VpZFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChkKTtcXG4gICAgbG9nKGRhdGEubGVuZ3RoKTtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xcbiAgICAgICAgLy/lpJrnur/nqIvliqDovb0gICAgICAgIFxcbiAgICAgICAgbGV0IHJlYWxQYWdlID0gXFxcIlxcXCIgPT0gciA/IDEgOiBwO1xcbiAgICAgICAgbGV0IHRhc2tzID0gZGF0YS5tYXAoaXQgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIGZ1bmM6IGZ1bmN0aW9uKHJ1bGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlLmZpbmQocywgcmVhbFBhZ2UpO1xcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBwYXJhbTogaXQsXFxuICAgICAgICAgICAgICAgIGlkOiBcXFwicnVsZUBcXFwiICsgaXQubmFtZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgYmF0Y2hFeGVjdXRlKHRhc2tzLCB7XFxuICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocGFyYW0sIGlkLCBlcnJvciwgcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgIC8vbG9nKFxcXCJsaXN0ZW5lcjogXFxcIiArIChyZXN1bHQgfHwgW10pLmxlbmd0aClcXG4gICAgICAgICAgICAgICAgcGFyYW0uaSA9IHBhcmFtLmkgKyAxO1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIHJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5qID0gcGFyYW0uaiArIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1CZWZvcmUocGFnZWlkLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogd3JhcChpdC50aXRsZSwgcyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdC5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdC51cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdC5waWNfdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGl0LnBpY191cmwgPyAnbW92aWVfMV92ZXJ0aWNhbF9waWMnIDogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogaXQuZXh0cmFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChwYXJhbS5pID49IHBhcmFtLmFsbCkge1xcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbShwYWdlaWQpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWKoOi9veesrFxcXCIgKyBNWV9QQUdFICsgXFxcIumhteS4re+8jOi/m+W6pu+8mlxcXCIgKyAocGFyYW0uaSArIDEpICsgXFxcIi9cXFwiICsgcGFyYW0uYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcGFnZWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgcGFyYW06IHtcXG4gICAgICAgICAgICAgICAgYWxsOiBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICAgICAgaTogMCxcXG4gICAgICAgICAgICAgICAgajogLTFcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgbGV0IHtcXG4gICAgICAgIGxvYWRcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IGRhdGEgPSBsb2FkKC0xLCBudWxsKTtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xcbiAgICAgICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbWFuYWdlXFxcIikoZCwgZGF0YS5tYXAoaXQgPT4gaXQubmFtZSkpO1xcbiAgICAgICAgZm9yIChsZXQgaXQgb2YgZGF0YSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdC5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLor7fpgInmi6nmk43kvZxcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sOiAxLFxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xcXCLorr/pl67pppbpobVcXFwiLCBcXFwi5pCc57Si5q2k56uZXFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodXJsKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLorr/pl67pppbpobVcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ZX1VSTCA9IHVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UveDU/dT1cXFwiICsgYmFzZTY0RW5jb2RlKGdldEhvbWUodXJsKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9zaW5nbGVzXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0LnVybClcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBSVUxFOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXQubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0LnVybFxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuemgeeUqFxcXCIgKyBpdC5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmuKnppqjmj5DnpLpcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXFxcIuehruiupOWIoOmZpOemgeeUqFxcXCIgKyBuYW1lICsgXFxcIuWQl++8n1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtOiAkLnRvU3RyaW5nKChuYW1lLCBydWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUnVsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kYXRhP3J1bGU9XFxcIiArIHJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJ1bGUobmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vT0tcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbmFtZSwgTVlfUlVMRS50aXRsZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpdC5uYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6K6/6Zeu6aaW6aG1XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogXFxcIidoaWtlcjovL3BhZ2UveDU/dT1cXFwiICsgYmFzZTY0RW5jb2RlKGdldEhvbWUoaXQudXJsKSkgKyBcXFwiJ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaQnOe0ouatpOa6kFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6IFxcXCInaGlrZXI6Ly9wYWdlL3NpbmdsZXMnXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaVsOaNrlwiLFwicGF0aFwiOlwiZGF0YVwiLFwicnVsZVwiOlwiLy/lubblj5Hop4TliJnmlbBcXG5sZXQgc2l6ZTAgPSAxMDtcXG5sZXQgcnVsZXNUZXh0MCA9IGB7UlVMRVN9YDtcXG5sZXQgcnVsZXNUZXh0ID0gZ2V0SXRlbShcXFwicnVsZXNcXFwiLCBydWxlc1RleHQwKTtcXG5sZXQgc3AgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9zcFxcXCIpO1xcbnJ1bGVzID0gcnVsZXNUZXh0LnNwbGl0KFxcXCJcXFxcblxcXCIpXFxuICAgIC5maWx0ZXIoaXQgPT4gaXQuaW5jbHVkZXMoXFxcIkBcXFwiKSlcXG4gICAgLm1hcChydWxlID0+IHtcXG4gICAgICAgIGxldCBzID0gcnVsZS5zcGxpdChcXFwiQFxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICBuYW1lOiBzWzBdLFxcbiAgICAgICAgICAgIGZpbmQ6IGZ1bmN0aW9uKGtleSwgcGFnZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gc3Aoc1sxXSwga2V5LCBzWzBdKTtcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHVybDogc1sxXVxcbiAgICAgICAgfTtcXG4gICAgfSk7XFxuXFxuZnVuY3Rpb24gbG9hZChwYWdlLCBydWxlKSB7XFxuICAgIGxldCBzaXplID0gcGFnZSA8PSAwID8gcnVsZXMubGVuZ3RoIDogc2l6ZTA7XFxuICAgIHBhZ2UgPSBwYWdlIDw9IDAgPyAxIDogcGFnZTtcXG4gICAgaWYgKCFwYWdlICYmICFydWxlKSB7XFxuICAgICAgICByZXR1cm4gcnVsZXMubWFwKGl0ID0+IGl0Lm5hbWUpO1xcbiAgICB9XFxuICAgIGlmIChydWxlICE9IG51bGwpIHtcXG4gICAgICAgIGlmIChwYWdlICE9IG51bGwgJiYgcGFnZSA+IDEpIHtcXG4gICAgICAgICAgICByZXR1cm4gcnVsZXMuZmlsdGVyKGkgPT4gaS5uYW1lID09IHJ1bGUgJiYgaS5wYWdlKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBydWxlcy5maWx0ZXIoaSA9PiBpLm5hbWUgPT0gcnVsZSk7XFxuICAgIH1cXG4gICAgbGV0IHN0YXJ0ID0gKHBhZ2UgLSAxKSAqIHNpemU7XFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBzdGFydCArIDEpIHtcXG4gICAgICAgIHJldHVybiBbXTtcXG4gICAgfVxcbiAgICBsZXQgbGVuID0gc2l6ZTtcXG4gICAgaWYgKHJ1bGVzLmxlbmd0aCA8IHBhZ2UgKiBzaXplKSB7XFxuICAgICAgICBsZW4gPSBydWxlcy5sZW5ndGggLSBzdGFydFxcbiAgICB9XFxuICAgIHJldHVybiBydWxlcy5zbGljZShzdGFydCwgc3RhcnQgKyBsZW4pO1xcbn1cXG5cXG5mdW5jdGlvbiBhZGRSdWxlKG5hbWUsIHN1cmwpIHtcXG4gICAgc2V0SXRlbShcXFwicnVsZXNcXFwiLCBydWxlc1RleHQgKyBcXFwiXFxcXG5cXFwiICsgbmFtZSArIFxcXCJAXFxcIiArIHN1cmwpO1xcbn1cXG5cXG5mdW5jdGlvbiBhZGRBbGwoaW5wdXQpIHtcXG4gICAgaWYgKGlucHV0ID09IG51bGwgfHwgaW5wdXQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHJldHVybiAwO1xcbiAgICB9XFxuICAgIGxldCBhcnIgPSBpbnB1dC5zcGxpdChcXFwiXFxcXG5cXFwiKVxcbiAgICAgICAgLmZpbHRlcihpdCA9PiBpdC5pbmNsdWRlcyhcXFwiQFxcXCIpKVxcbiAgICAgICAgLm1hcChydWxlID0+IHtcXG4gICAgICAgICAgICBsZXQgcyA9IHJ1bGUuc3BsaXQoXFxcIkBcXFwiKTtcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICBuYW1lOiBzWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHNbMV1cXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSk7XFxuICAgIGxldCBleGlzdCA9IHJ1bGVzLm1hcChpdCA9PiBpdC51cmwpO1xcbiAgICBsZXQgYyA9IDA7XFxuICAgIGZvciAobGV0IGl0IG9mIGFycikge1xcbiAgICAgICAgaWYgKCFleGlzdC5pbmNsdWRlcyhpdC51cmwpKSB7XFxuICAgICAgICAgICAgcnVsZXNUZXh0ID0gcnVsZXNUZXh0ICsgXFxcIlxcXFxuXFxcIiArIGl0Lm5hbWUgKyBcXFwiQFxcXCIgKyBpdC51cmw7XFxuICAgICAgICAgICAgYysrO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHNldEl0ZW0oXFxcInJ1bGVzXFxcIiwgcnVsZXNUZXh0KTtcXG4gICAgcmV0dXJuIGM7XFxufVxcblxcbmZ1bmN0aW9uIHJlbW92ZVJ1bGUobmFtZSkge1xcbiAgICBsZXQgbmV3VCA9IHJ1bGVzVGV4dC5zcGxpdChcXFwiXFxcXG5cXFwiKVxcbiAgICAgICAgLmZpbHRlcihpdCA9PiBpdC5pbmRleE9mKG5hbWUgKyBcXFwiQFxcXCIpIDwgMClcXG4gICAgICAgIC5qb2luKFxcXCJcXFxcblxcXCIpO1xcbiAgICBzZXRJdGVtKFxcXCJydWxlc1xcXCIsIG5ld1QpO1xcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIGxvYWQ6IGxvYWQsXFxuICAgIGFkZFJ1bGU6IGFkZFJ1bGUsXFxuICAgIHJlbW92ZVJ1bGU6IHJlbW92ZVJ1bGUsXFxuICAgIGFkZEFsbDogYWRkQWxsXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6Kej5p6QXCIsXCJwYXRoXCI6XCJzcFwiLFwicnVsZVwiOlwiZnVuY3Rpb24gc2VhcmNoKHVybCwga2V5LCBydWxlKSB7XFxuICAgIGxldCBkID0gW107XFxuICAgIGxldCBodG1sID0gXFxcIlxcXCI7XFxuICAgIGlmICh1cmwuaW5jbHVkZXMoXFxcIioqXFxcIikpIHtcXG4gICAgICAgIC8vZ2V06K+35rGCXFxuICAgICAgICBsZXQgb2xkID0gdXJsO1xcbiAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoXFxcIioqXFxcIiwga2V5KTtcXG4gICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCk7XFxuICAgICAgICAvL+iHquWKqOi/h+mqjOivgeeggeWSjOmikee5geiuv+mXrumZkOWItlxcbiAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICBjaGVjaywgdGVzdFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3l6bVxcXCIpO1xcbiAgICAgICAgaWYgKGNoZWNrKHVybCwgaHRtbCwgZCkpIHtcXG4gICAgICAgICAgICBsb2coXFxcIumHjeivleS6hlxcXCIpO1xcbiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IHVybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7ICAgICAgICAgICBcXG4gICAgICAgIH0gICAgICAgICBcXG4gICAgICAgIHRlc3QodXJsLCBodG1sLCBkLCBvbGQsIGtleSwgcnVsZSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvL+iHquWKqOivhuWIq3Bvc3Tor7fmsYJcXG4gICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCk7XFxuICAgICAgICBsZXQgZm9ybSA9IHBkZmgoaHRtbCwgXFxcImJvZHkmJmZvcm0mJkh0bWxcXFwiKTtcXG4gICAgICAgIGxldCBhY3Rpb24gPSBwZChodG1sLCBcXFwiZm9ybSYmYWN0aW9uXFxcIiwgdXJsKTtcXG4gICAgICAgIGxldCBpbnB1dHMgPSBwZGZhKGh0bWwsIFxcXCJib2R5JiZmb3JtJiZpbnB1dFxcXCIpO1xcbiAgICAgICAgbGV0IGJvZHkgPSB7fTtcXG4gICAgICAgIGZvciAobGV0IGl0IG9mIGlucHV0cykge1xcbiAgICAgICAgICAgIGxldCBuYW1lID0gcGRmaChpdCwgXFxcImlucHV0JiZuYW1lXFxcIik7XFxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBwZGZoKGl0LCBcXFwiaW5wdXQmJnZhbHVlXFxcIik7XFxuICAgICAgICAgICAgICAgIGJvZHlbbmFtZV0gPSB2YWx1ZSB8fCBrZXk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgaHRtbCA9IHBvc3QoYWN0aW9uLCB7XFxuICAgICAgICAgICAgYm9keTogYm9keVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG4gICAgbGV0IGFsaXN0ID0gcGRmYShodG1sLCBcXFwiYm9keSYmYVxcXCIpO1xcbiAgICBsZXQgYXJyID0gYWxpc3QubWFwKGl0ID0+IHtcXG4gICAgICAgIGxldCB0ID0gcGRmaChpdCwgXFxcImEmJlRleHRcXFwiKTtcXG4gICAgICAgIGxldCB0MiA9IHBkZmgoaXQsIFxcXCJhJiZ0aXRsZVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAvL2h0bWw6IGl0LFxcbiAgICAgICAgICAgIHRleHQ6IHQyICYmIHQyLmluY2x1ZGVzKGtleSkgPyB0MiA6IHQsXFxuICAgICAgICAgICAgaHJlZjogcGQoaXQsIFxcXCJhJiZocmVmXFxcIiwgdXJsKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZnVuY3Rpb24gaXNSZXN1bHQoaXQpIHtcXG4gICAgICAgIGl0ID0gaXQudGV4dCB8fCBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChpdCA9PSBcXFwiXFxcIiB8fCBpdC5tYXRjaCgv5pCc57SifOe7k+aenC8pKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gaXQuaW5jbHVkZXMoa2V5KTtcXG4gICAgfVxcblxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgbGV0IHQgPSBpdC50ZXh0O1xcbiAgICAgICAgaWYgKCFpdC5ocmVmIHx8IGl0LmhyZWYgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpc1Jlc3VsdChpdCkpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdCxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3A/dT1cXFwiICsgYmFzZTY0RW5jb2RlKGl0LmhyZWYpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5cXFwiICsgcnVsZSArIFxcXCI8L2ZvbnQ+XFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBkO1xcbn1cXG4kLmV4cG9ydHMgPSBzZWFyY2g7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlop7liKBcIixcInBhdGhcIjpcIm1hbmFnZVwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24oZCwgbmFtZXMpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiQUnmioDmnK9cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiY29uZmlybTovL+WfuuS6jkFJ6K+G54mH6Ieq5Yqo5YiG5p6Q5rqQ56CB5oqA5pyv77yM5Luj56CB5a6M5YWo5byA5rqQ77yM5pWw5o2u5p2l5rqQ5LqO5Y6f572R56uZ77yM6L2v5Lu25ZKM6KeE5YiZ5LiN5o+Q5L6b5Lu75L2V5YaF5a65LmpzOicnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBnZXRJdGVtKCd3ZWInLCAnMCcpID09IFxcXCIwXFxcIiA/IFxcXCLop4bpopHll4XmjqJcXFwiIDogXFxcIldlYumAmuWFjVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmIChnZXRJdGVtKCd3ZWInLCAnMCcpID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCd3ZWInLCAnMScpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnd2ViJywgJzAnKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCJcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIiArIFxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHJyKSA9PiB7XFxuICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKFxcXCJhaWFkZFxcXCIpO1xcbiAgICAgICAgICAgIGFkZEl0ZW1BZnRlcihyciArIFxcXCJhaXNkZWxcXFwiLCBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuivt+i+k+WFpee9keermeWQjeensFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dE15VmFyKCduYW1lJywgaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IFxcXCJhaWFkZFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuivt+i+k+WFpee9keermeaQnOe0ouWcsOWdgFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dE15VmFyKCdzdXJsJywgaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IFxcXCJhaWFkZFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmj5DkuqTkv53lrZhcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1cmwgPSBnZXRNeVZhcihcXFwic3VybFxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGdldE15VmFyKFxcXCJuYW1lXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXJsID09IFxcXCJcXFwiIHx8IG5hbWUgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeWujOaVtOWGheWuuVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSBkZWNvZGVVUklDb21wb25lbnQoc3VybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgciA9IHIucmVwbGFjZShuZXcgUmVnRXhwKFxcXCJbXFxcXHU0ZTAwLVxcXFx1OWZhNV0rXFxcIiwgXFxcImdcXFwiKSwgXFxcIioqXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkUnVsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkUnVsZShuYW1lLCByKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7Lkv53lrZhcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogXFxcImFpYWRkXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgXSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgTVlfUlVMRS50aXRsZSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIiAtIFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIG9wdGlvbnM6IG5hbWVzLFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE56uZ54K5XFxcIixcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICByZW1vdmVSdWxlXFxuICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcIik7XFxuICAgICAgICAgICAgICAgIHJlbW92ZVJ1bGUoaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vT0tcXFwiO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLihpfvuI9cXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmuKnppqjmj5DnpLpcXFwiLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcXFwi56Gu5a6a5a+85Ye65omA5pyJ5pWw5o2u5ZCX77yf77yI5a+85Ye65ZCO5Y+v5Lul54K55Ye75peB6L6555qE5a+85YWl5oyJ6ZKu5om56YeP5a+85YWl77yJXFxcIixcXG4gICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRcXG4gICAgICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGxvYWQoLTEpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBkYXRhLm1hcChpdCA9PiBpdC5uYW1lICsgXFxcIkBcXFwiICsgaXQudXJsKS5qb2luKFxcXCJcXFxcblxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIHNcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiLFxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oaY77iPXFxcIixcXG4gICAgICAgIHVybDogJChcXFwiXFxcIiwgXFxcIuivt+i+k+WFpeimgeaJuemHj+WvvOWFpeeahOaVsOaNrlxcXCIpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICBsZXQge1xcbiAgICAgICAgICAgICAgICBhZGRBbGxcXG4gICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpO1xcbiAgICAgICAgICAgIGxldCBjb3VudCA9IGFkZEFsbChpbnB1dCk7XFxuICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIChjb3VudCA+IDAgPyBcXFwi5oiQ5Yqf5a+85YWlXFxcIiArIGNvdW50ICsgXFxcIuadoeaVsOaNrlxcXCIgOiBcXFwi5LiA5p2h5Lmf5rKh5a+85YWlXFxcIilcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiBNWV9SVUxFLnRpdGxlICsgXFxcImFpc2RlbFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aqM6K+B56CBXCIsXCJwYXRoXCI6XCJ5em1cIixcInJ1bGVcIjpcImZ1bmN0aW9uIGNoZWNrKHVybCwgaHRtbCwgZCkge1xcbiAgICBsZXQgcmVsb2FkID0gZmFsc2U7XFxuICAgIGlmICgv6aqM6K+B56CBfOezu+e7n+WuieWFqOmqjOivgS8udGVzdChodG1sKSkge1xcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBNT0JJTEVfVUEsXFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiB1cmxcXG4gICAgICAgIH07XFxuICAgICAgICBNWV9IT01FID0gZ2V0SG9tZSh1cmwpO1xcbiAgICAgICAgbGV0IHNzeXogPSAnVGxvR25uaWtUaHJmcy81ZkRObGs1Q1NzYmFHdEFIN1cvdU1aanVZb0l1cEI2YkNvbzlDb3RMUUhmUElkR2dia2J5bktxTDJhVUUyWHk1NThYMlF4SFl0VFUwOXZEKzRvYUNESXVTWk83bnhEYkxmUkdmV2o3enFsK3lNYnZGK2FKb0QvbTZQc2Z3L1B5WU9BcC9aVkdkclB6YUNCeWZkMEhMNURGVlN3K1lGMk9DNDBWOFNQOVJ4ZEZLS2RyQnVQeENXZHhVQ0ZySisxbFJ5L1RVM0xDODRDNHh4RUJoZ3VkN1J0QnAwelpBcnFCRTA2K1ozSnREUDBlRkN6L0Q1WDA0MDlxUEhLM2UxeS9MdVVnY2N1eHBIbmpZTEUxR2psUDh3WUEyaFFXZTd5UG5nZ2dRQkh3MzMvZ3ZiM3R1Q2N4RUtUV2dtYWgvUjMyQUg5WkY4akY3V2VtVDI2bFVpelZYZS9zcENkaERnSFIvelVoT0RENFBPNmdsSThKUGhkdStWd2ZQeVJMRzJEN0NVbzFMNlNJRiswZllmMG9UT1dOMTNVUElUbzUrdVpkL1duUVFMVThOWXgvV0ZDVGhFbmtiemxuOVlHdDYwZlJ4c0grOHVNREZnYUJpQyt6MlNwY3hCOWdaNkdYeXBMU1hXYWorcUVVYkdKS0V4K2pLL3Y1Zm5ya0loQ2R3TmJrcDlkUmtzNmRtbFlsQmlmem9XRjhSa3VDM3JxUHRvU2NCa01PTVp1N0dpVnRvSEVkSFVvem1uVUlkclUxTEdJcXE5V25HN1gyYTN5SDhzNjVtakx1TG5kM3EwVTh2K0xNUG5ITDIvR2pRdVRRS1ZoK1JLRVBxSy9KZHJDaEdMTnJqY0h2TEhEYkhFc2hyR1p1UU9kRXBoYngvUGtoa3ZhWXk0SzFNTzg0UjE3Z3VSc0tzL1Y2bmlVUGFMK1hiUTdjM2ZxSlM0VkhKd2x1ZEpURGUwMmV1ZmZHQ20wUEpJUGxBT2dMSG5YMGl6SmhBNnE3MzhSMlV3UWNXQlFqSnQ3OWFGK2t5cVNkeXQxUVBWUVZqYUMzSXBSZjdQZ3NEaEVKN2JpOW5TY2x5SXpnSjlEQ0o0VCs4ZEcxeEhoS3laYXNUN0wveDlMZnIxTWdzOG5CWkVSMlc5YXg3aVRrTksrWDVBQ1UvL3AvWW9QL3VBYW5EdGIzRDBpS1VVdVhGSCtKYmIweDFQMzIyUzJ3NkJKNDZudU5IQk1IVHBWdVd3aFplWnpyaUdoN3FvT3l3TFdpRXhCTUt5eFRHTG5tS2g3cjAzL3lYS1lXSUpucEJOMk1NeWNWSFJaSjdSdW1IVjRDSXNWcnE3aVJQNDg4MjNSSlZ0OU90eVA3dXVjM3dCQlYza2NaVXpiYmFZZFdCeDErQXUrT2QydTdsUjZqb09MODEwbWNKbS9mN0o1VHZHUVA2SEdwaDFZSEhYNEM3NDUzYTd1VkhxT2d5ampoNUVCZDcyME1FQlkyM2MrVEtxL3o5VXBXRERPZzQ4WkZud1NJaEZxaXRXZGlaaXFzYVl1TjAvU1h3aUs4RUc5ZVEyOXUyWERKb0RXNG1sd3RjUk83dmFYNVhjRnNnZjQvbUxVMDdtaSc7XFxuICAgICAgICBldmFsUHJpdmF0ZUpTKHNzeXopO1xcblxcbiAgICAgICAgbGV0IHZjb2RlID0gZ2V0VkNvZGUyKE1ZX0hPTUUgKyAnL2luZGV4LnBocC92ZXJpZnkvaW5kZXguaHRtbD8nLCBKU09OLnN0cmluZ2lmeShoZWFkZXJzKSwgJ251bScpO1xcbiAgICAgICAgZmV0Y2goTVlfSE9NRSArIGh0bWwubWF0Y2goL1xcXFwvaW5kZXgucGhwLio/dmVyaWZ5PS8pWzBdICsgSlNPTi5wYXJzZSh2Y29kZSkucmV0LCB7XFxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICByZWxvYWQgPSB0cnVlO1xcbiAgICB9XFxuICAgIHJldHVybiByZWxvYWQ7XFxufVxcblxcbmZ1bmN0aW9uIHRlc3QodXJsLCBodG1sLCBkLCBvbGQsIGtleSwgcnVsZSkge1xcbiAgICBpZiAoLzXnp5J86aKR57mBLy50ZXN0KGh0bWwpKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5pCc57Si6ZyA6Ze06ZqUNeenku+8jOeCueWHu+mHjeaWsOWKoOi9vScsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5cXFwiICsgcnVsZSArIFxcXCI8L2ZvbnQ+XFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgodXJsLCBvbGQsIGtleSwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgc3AgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9zcFxcXCIpO1xcbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNwKG9sZCwga2V5LCBydWxlKTtcXG4gICAgICAgICAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICAgICAgICAgIHdyYXBcXG4gICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFwiKTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2YgZCkge1xcbiAgICAgICAgICAgICAgICAgICAgaXQudGl0bGUgPSB3cmFwKGl0LnRpdGxlLCBrZXkpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcih1cmwsIGQpO1xcbiAgICAgICAgICAgICAgICBkZWxldGVJdGVtKHVybCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9PS1xcXCI7XFxuICAgICAgICAgICAgfSwgdXJsLCBvbGQsIGtleSwgcnVsZSksXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IHVybFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcblxcbiQuZXhwb3J0cyA9IHtcXG4gICAgY2hlY2s6IGNoZWNrLFxcbiAgICB0ZXN0OiB0ZXN0XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5bel5YW3XCIsXCJwYXRoXCI6XCJ0b29sXCIsXCJydWxlXCI6XCJmdW5jdGlvbiB3cmFwKHRleHQsIHMpIHtcXG4gICAgcmV0dXJuIHRleHQuaW5jbHVkZXMoXFxcIuKAnOKAnOKAneKAnVxcXCIpID8gdGV4dCA6IFxcXCLigJzigJzigJ3igJ1cXFwiICsgdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcIjxlbT58PC9lbT5cXFwiLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIikucmVwbGFjZShuZXcgUmVnRXhwKHMsIFxcXCJnXFxcIiksIFxcXCI8c3Ryb25nPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6ICMxRTkwRkZcXFxcXFxcIj5cXFwiICsgcyArIFxcXCI8L3NwYW4+PC9zdHJvbmc+XFxcIilcXG59XFxuJC5leHBvcnRzID0ge1xcbiAgICB3cmFwOiB3cmFwXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Y2V5pCcXCIsXCJwYXRoXCI6XCJzaW5nbGVzXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5pCc57SiXFxcIixcXG4gICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJzb1xcXCIsIGlucHV0KTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZGVzYzogXFxcIuivt+i+k+WFpeWFs+mUruivje+8jOWwvemHj+WwkeWtl+S4jeimgeWkmuWtl1xcXCIsXFxuICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwic29cXFwiLCBcXFwiXFxcIilcXG4gICAgfVxcbn0pO1xcbmxldCBzID0gZ2V0TXlWYXIoXFxcInNvXFxcIiwgXFxcIlxcXCIpO1xcbmxldCByID0gXFxcIlxcXCI7XFxuaWYgKHMgIT0gXFxcIlxcXCIpIHtcXG4gICAgbGV0IHAgPSBNWV9QQUdFO1xcbiAgICBsZXQge1xcbiAgICAgICAgbG9hZFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpO1xcbiAgICBsZXQge1xcbiAgICAgICAgd3JhcFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdG9vbFxcXCIpO1xcbiAgICBsZXQgZGF0YSA9IGxvYWQocCwgTVlfUEFSQU1TLlJVTEUubmFtZSk7XFxuICAgIGxldCBhcnIgPSBkYXRhWzBdLmZpbmQocywgcCk7XFxuICAgIGZvciAobGV0IGl0IG9mIGFycikge1xcbiAgICAgICAgaXQudGl0bGUgPSB3cmFwKGl0LnRpdGxlLCBzKVxcbiAgICAgICAgZC5wdXNoKGl0KTtcXG4gICAgfVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKLpobXpnaJcIixcInBhdGhcIjpcInNvdXBcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuaWYgKE1ZX1BBUkFNUy5rZXkgJiYgZ2V0TXlWYXIoXFxcInVzZVxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICBwdXRNeVZhcihcXFwic291XFxcIiwgTVlfUEFSQU1TLmtleSk7XFxuICAgIHB1dE15VmFyKFxcXCJ1c2VcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwidXNlXFxcIik7XFxuICAgIH0pKTtcXG59XFxuJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcHJvJylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIlg1XCIsXCJwYXRoXCI6XCJ4NVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXCJ1XFxcIikpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGZsb2F0VmlkZW86IHRydWUsXFxuICAgICAgICBjYW5CYWNrOiB0cnVlLFxcbiAgICAgICAgYmxvY2tSdWxlczogW1xcXCIuZ2lmXFxcIiwgXFxcIi9hZC9cXFwiLCBcXFwiL2Fkcy9cXFwiLCBcXFwiZ29vZ2xlXFxcIiwgXFxcIi9zaC90by9cXFwiLCBcXFwiLkdJRlxcXCJdXFxuICAgIH1cXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9XSIsImljb24iOiIiLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment