Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥🐯聚合🐯@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p+ino+aekFwiLFwicGF0aFwiOlwicFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXCJ1XFxcIikpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGNhbkJhY2s6IHRydWUsXFxuICAgICAgICBibG9ja1J1bGVzOiBbXFxcIi5naWZcXFwiLCBcXFwiL2FkL1xcXCIsIFxcXCIvYWRzL1xcXCIsIFxcXCJnb29nbGVcXFwiLCBcXFwiL3NoL3RvL1xcXCIsIFxcXCIuR0lGXFxcIl1cXG4gICAgfVxcbn0pO1xcbnNldFJlc3VsdChkKTtcXG5cIn0se1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi5pCc57Si5rWL6K+VXCIsXCJwYXRoXCI6XCJzXCIsXCJydWxlXCI6XCJqczpcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXCJ1XFxcIikpO1xcbmxvZyh1cmwpO1xcbmxldCBrZXkgPSBnZXRQYXJhbShcXFwia2V5XFxcIik7XFxubGV0IHNwID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2Uvc3BcXFwiKTtcXG5zZXRSZXN1bHQoc3AodXJsLCBrZXksIFxcXCLmkJzntKLmtYvor5VcXFwiKSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLogZrlkIjmkJzntKJcIixcInBhdGhcIjpcInByb1wiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaQnOe0olxcXCIsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwi6K+36L6T5YWl5YWz6ZSu6K+N77yM5bC96YeP5bCR5a2X5LiN6KaB5aSa5a2XXFxcIixcXG4gICAgICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXCJzb3VcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwic291XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwic291XFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJzb1xcXCIpO1xcbiAgICB9KSk7XFxufVxcblxcbmxldCBzID0gZ2V0TXlWYXIoXFxcInNvdVxcXCIsIFxcXCJcXFwiKTtcXG5sZXQgciA9IFxcXCJcXFwiO1xcbmlmIChzICE9IFxcXCJcXFwiKSB7XFxuICAgIGxldCBwID0gTVlfUEFHRTtcXG4gICAgbGV0IHtcXG4gICAgICAgIGxvYWRcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IHtcXG4gICAgICAgIHdyYXBcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFwiKTtcXG4gICAgbGV0IGRhdGEgPSBsb2FkKHAsIHIgIT0gXFxcIlxcXCIgPyByIDogbnVsbCk7XFxuXFxuICAgIGxldCBwYWdlaWQgPSBNWV9SVUxFLnRpdGxlICsgXFxcIi1wYWdlXFxcIiArIHA7XFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLliqDovb3nrKxcXFwiICsgcCArIFxcXCLpobXkuK3vvIzov5vluqbvvJoxL1xcXCIgKyBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IHBhZ2VpZFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChkKTtcXG4gICAgbG9nKGRhdGEubGVuZ3RoKTtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xcbiAgICAgICAgLy/lpJrnur/nqIvliqDovb0gICAgICAgIFxcbiAgICAgICAgbGV0IHJlYWxQYWdlID0gXFxcIlxcXCIgPT0gciA/IDEgOiBwO1xcbiAgICAgICAgbGV0IHRhc2tzID0gZGF0YS5tYXAoaXQgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIGZ1bmM6IGZ1bmN0aW9uKHJ1bGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlLmZpbmQocywgcmVhbFBhZ2UpO1xcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBwYXJhbTogaXQsXFxuICAgICAgICAgICAgICAgIGlkOiBcXFwicnVsZUBcXFwiICsgaXQubmFtZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgYmF0Y2hFeGVjdXRlKHRhc2tzLCB7XFxuICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocGFyYW0sIGlkLCBlcnJvciwgcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgIC8vbG9nKFxcXCJsaXN0ZW5lcjogXFxcIiArIChyZXN1bHQgfHwgW10pLmxlbmd0aClcXG4gICAgICAgICAgICAgICAgcGFyYW0uaSA9IHBhcmFtLmkgKyAxO1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIHJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5qID0gcGFyYW0uaiArIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1CZWZvcmUocGFnZWlkLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogd3JhcChpdC50aXRsZSwgcyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdC5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdC51cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdC5waWNfdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGl0LnBpY191cmwgPyAnbW92aWVfMV92ZXJ0aWNhbF9waWMnIDogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogaXQuZXh0cmFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChwYXJhbS5pID49IHBhcmFtLmFsbCkge1xcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbShwYWdlaWQpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWKoOi9veesrFxcXCIgKyBNWV9QQUdFICsgXFxcIumhteS4re+8jOi/m+W6pu+8mlxcXCIgKyAocGFyYW0uaSArIDEpICsgXFxcIi9cXFwiICsgcGFyYW0uYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcGFnZWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgcGFyYW06IHtcXG4gICAgICAgICAgICAgICAgYWxsOiBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICAgICAgaTogMCxcXG4gICAgICAgICAgICAgICAgajogLTFcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgbGV0IHtcXG4gICAgICAgIGxvYWRcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IGRhdGEgPSBsb2FkKC0xLCBudWxsKTtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xcbiAgICAgICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbWFuYWdlXFxcIikoZCwgZGF0YS5tYXAoaXQgPT4gaXQubmFtZSkpO1xcbiAgICAgICAgZm9yIChsZXQgaXQgb2YgZGF0YSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdC5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLor7fpgInmi6nmk43kvZxcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sOiAxLFxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xcXCLorr/pl67pppbpobVcXFwiLCBcXFwi5pCc57Si5q2k56uZXFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodXJsKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLorr/pl67pppbpobVcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ZX1VSTCA9IHVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvcD91PVxcXCIgKyBiYXNlNjRFbmNvZGUoZ2V0SG9tZSh1cmwpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL3NpbmdsZXNcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaXQudXJsKVxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIFJVTEU6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdC5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXQudXJsXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi56aB55SoXFxcIiArIGl0Lm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIua4qemmqOaPkOekulxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcXFwi56Gu6K6k5Yig6Zmk56aB55SoXFxcIiArIG5hbWUgKyBcXFwi5ZCX77yfXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKG5hbWUsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVSdWxlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGE/cnVsZT1cXFwiICsgcnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUnVsZShuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9PS1xcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuYW1lLCBNWV9SVUxFLnRpdGxlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0Lm5hbWUpXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLorr/pl67pppbpobVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiBcXFwiJ2hpa2VyOi8vcGFnZS9wP3U9XFxcIiArIGJhc2U2NEVuY29kZShnZXRIb21lKGl0LnVybCkpICtcXFwiJ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaQnOe0ouatpOa6kFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6IFxcXCInaGlrZXI6Ly9wYWdlL3NpbmdsZXMnXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaVsOaNrlwiLFwicGF0aFwiOlwiZGF0YVwiLFwicnVsZVwiOlwiLy/lubblj5Hop4TliJnmlbBcXG5sZXQgc2l6ZTAgPSAxMDtcXG5sZXQgcnVsZXNUZXh0MCA9IGDwn5Cv57u05b+r8J+Qr0BodHRwczovL3Mudmt4aWF6YWkuY29tL3NlYXJjaC8wXyoqXFxu8J+Qr+eBq+eBq/CfkK9AaHR0cDovL3d3dy5obmZjanIuY29tL3NvL20vP2s9KipcXG7wn5Cv5oqA5pyv8J+Qr0BodHRwczovL3d3dy5pdHRlbC5jbi8/cz0qKlxcbvCfkK/mnb7lrZDwn5CvQGh0dHBzOi8vd3d3LjYxa3UuY29tLz9zPSoqXFxu8J+Qr+W/g+a1t/CfkK9AaHR0cHM6Ly9hcHBob3QuY2MvP3M9KipcXG7wn5CvYXBw54Ot8J+Qr0BodHRwczovL2FwcGhvdC5jYy8/cz0qKlxcbvCfkK/nu7/ova/wn5CvQGh0dHBzOi8vd3d3LmduZG93bi5jb20vP3M9KipcXG7wn5CvNjc46L6F8J+Qr0BodHRwczovL3d3dy42Nzhjdi5jb20vaW5kZXgucGhwP2tleXdvcmQ9KipcXG7wn5CvOTY2M/CfkK9AaHR0cDovL3MuOTY2My5jb20vbS8/az0qKlxcbvCfkK/lpJzpm6jwn5CvQGh0dHBzOi8vd3d3LnlleXVsaW5nZmVuZy5jb20vP3M9KipcXG7wn5Cv5YWI55+l8J+Qr0BodHRwczovL3d3dy55eHpoaS5jb20vP3Bvc3RfdHlwZT1wb3N0JnM9KipcXG7wn5Cv5b+155G+8J+Qr0BodHRwczovL215endxLmNvbS8/cz0qKlxcbvCfkK/ova/otoXwn5CvQGh0dHBzOi8vd3d3LnJqY3hiLmNvbS8/cz0qKlxcbvCfkK/lsI/lhbXwn5CvQGh0dHBzOi8vd3d3Ljd4aWF6YWkuY29tLz9zPSoqXFxu8J+Qr+Wwj+mZovCfkK9AaHR0cHM6Ly9ibG9nLjRkei50b3A6MTg0NDMvP2tleXdvcmQ9KipcXG7wn5Cv5ZGx5ZGx8J+Qr0BodHRwczovL3d3dy5ndWFndWFuaXUuY29tLz9zPSoqXFxu8J+Qr+eyvuWTgfCfkK9AaHR0cDovL3d3dy5qOXAuY29tL3NvL20vP2s9KipcXG7wn5Cv55S1546pQGh0dHBzOi8vcy5reGR3LmNvbS93YXAucGhwP3E9KipcXG7wn5CvNDIzRPCfkK9AaHR0cHM6Ly93d3cuNDIzZG93bi5jb20vc2VhcmNoLyoqXFxu8J+Qr1FR8J+Qr0BodHRwOi8vbS5xcXlld3UuY29tL3NlYXJjaC5hc3A/d29yZD0lRDIlRjQlQzAlRDYmbT0yJnNlYXJjaGJ0bjI9KipcXG7wn5Cv5YmN5pa58J+Qr0BodHRwczovL3FpYW5mYW5nenkuY29tLz9zPSoqXFxu8J+Qr+mjjui9r/CfkK9AaHR0cHM6Ly93d3cuaWZlbmdzb2Z0LmNvbS9zZWFyY2gucGhwP3E9KipcXG7wn5Cv6Jek6L2p8J+Qr0BodHRwczovL3d3dy50ZW5neHVhbncuY29tL2luZGV4LnBocD9rZXl3b3JkPSoqJnR5cGVpZD0wXFxu8J+Qr+S8mOexs/CfkK9AaHR0cHM6Ly93d3cuNHNwYWNlcy5vcmcvP3M9KipcXG7wn5Cv5bCP6auY8J+Qr0BodHRwczovL3d3dy54Z3c0LmNvbS8/cz0qKlxcbvCfkK/mnYLotKfwn5CvQGh0dHBzOi8vdG1pb2UuY29tLz9zPSoqXFxu8J+Qr+aeq+mfs/CfkK9AaHR0cHM6Ly93d3cuZnk2Yi5jb20vP3M9KipcXG7wn5Cv5aSn55y88J+Qr0BodHRwOi8vd3d3LmRheWFuemFpLm1lLz9zPSoqXFxu8J+Qr+ekvuWMuvCfkK9AaHR0cHM6Ly93d3cuaTN6aC5jb20vP3M9KipcXG7wn5Cv5LiA6ZSu8J+Qr0BodHRwczovL3d3dy4xamt4LmNvbS8/cz0qKiZ0eXBlPXBvc3RcXG7wn5Cv55m95YWU8J+Qr0BodHRwOi8vd3d3LmRiYWl0dS5jb20vc2VhcmNoLz9rZXl3b3JkPSoqXFxu8J+Qr1B1cmVzeXPwn5CvQGh0dHBzOi8vd3d3LnB1cmVzeXMubmV0Lz9zPSoqXFxu8J+Qr+ilv+mDqPCfkK9AaHR0cHM6Ly93d3cueGlidWx1by5jb20vc28vKipcXG7wn5Cv6IGa5ZCI8J+Qr0BodHRwczovL3d3dy5qdWhlenkubmV0L3Nvc28/cT0qKlxcbvCfkK/njonnsbPwn5CvQGh0dHBzOi8veWltaWxpLm5ldC8/cz0qKlxcbvCfkK/mnKjpo47wn5CvQGh0dHBzOi8vd3d3Lm1mcmp6LmNvbS8/cz0qKlxcbvCfkK83Mjcz8J+Qr0BodHRwOi8vcy43MjczLmNvbS9tLz9rPSoqXFxu8J+Qr+WIneingfCfkK9AaHR0cHM6Ly9ibG9nLmNodWppYW4tbGluLnRvcC8/cz0qKiZ0eXBlPXBvc3RcXG7wn5CvTUVGQ0zwn5CvQGh0dHBzOi8vd3d3Lm1lZmNsLmNvbS8/cz0qKlxcbvCfkK/mjbflvoTwn5CvQGh0dHA6Ly93d3cucWl1cXVhbi5jYy8/cz0qKlxcbvCfkK9NZW1vcnnwn5CvQGh0dHBzOi8vY254aWFvYmFpLmNvbS9zZWFyY2g/a2V5d29yZD0qKlxcbvCfkK/kuqTmtYHwn5CvQGh0dHBzOi8vd3d3LmppYW9saXVkYW8uY29tLz9zPSoqXFxu8J+Qr+ebkuWtkPCfkK9AaHR0cHM6Ly93d3cuaGV6aXBpZS5jb20vP3M9KipcXG7wn5Cv5YiG5Lqr8J+Qr0BodHRwczovL3d3dy5mZW54bS5jb20vc2VhcmNoLnBocD9xPSoqXFxu8J+Qr+WtpuWggvCfkK9AaHR0cHM6Ly9tLnh1ZTUxLmNvbS9zZWFyY2gvKiouaHRtbFxcbvCfkK/lvILmmJ/wn5CvQGh0dHBzOi8vd3d3Lnl4c3NwLmNvbS8/cz0qKlxcbvCfkK/kuI3mrbvwn5CvQGh0dHBzOi8vaXVpLnN1L3NlYXJjaC8qKi9cXG7wn5Cv6JOd6bKo8J+Qr0BodHRwczovL3d3dy5sYW4tc2hhLmNvbS8/cz0qKlxcbvCfkK/kuZDkuZDwn5CvQGh0dHA6Ly93d3cuNmxsLmNvbS9zby9tLz9rPSoqXFxu8J+Qr+S4i+i9vfCfkK9AaHR0cHM6Ly9tLnh6amkuY29tL3NlYXJjaC9hbGwtMC0xLSoqLmh0bWxcXG7wn5Cv5p6B5a6i8J+Qr0BodHRwczovL3d3dy5nZWVrZGxvYWQuY29tLz9zPSoqXFxu8J+Qr+WHoeWwmPCfkK9AaHR0cHM6Ly93d3cuNTBmY3cuY29tL2luZGV4LnBocD9rZXl3b3JkPSoqJnR5cGVpZD0wXFxu8J+Qr+mjmOmBpfCfkK9AaHR0cHM6Ly93d3cubXB5aXQuY29tLz9zPSoqXFxu8J+Qr+S5nei9r/CfkK9AaHR0cHM6Ly93d3cuam9ydWFuLmNvbS8/cz0qKlxcbvCfkK/opb/opb/wn5CvQGh0dHBzOi8vc28uY3IxNzMuY29tL3NvdXN1by9tLz9rPSoqXFxu8J+Qr+aXoOeXlfCfkK9AaHR0cHM6Ly93d3cud2hnNi5jb20vNDY1OC5odG1sXFxu8J+Qr+Wwj+S8l/CfkK9AaHR0cHM6Ly93d3cuYXBwaW5uLmNvbS8/cz0qKlxcbvCfkK/mtbfmtIvwn5CvQGh0dHBzOi8vYmxvZy51cHg4LmNvbS9zZWFyY2gvKipcXG7wn5CvQeWnkPCfkK9AaHR0cHM6Ly93d3cuYWhoaGhmcy5jb20vP2NhdD0mcz0qKlxcbvCfkK/mnpzmoLjwn5CvQGh0dHBzOi8vd3d3LmdoeGkuY29tLz9zPSoqXFxu8J+Qr+iTneeCufCfkK9AaHR0cHM6Ly93d3cubGFuZGlhbm5ld3MuY29tL3NlYXJjaC8qKj9wb3N0X3R5cGU9cG9zdFxcbvCfkK/ls7Dlk6Xwn5CvQGh0dHBzOi8venp6enp6Lm1lLz9rZXl3b3JkPSoqXFxu8J+Qr+W+ruW9k/CfkK9AaHR0cHM6Ly9tLndlaWRvd24uY29tL3NlYXJjaC5odG1sP3E9KipcXG7wn5Cv5oKg5LmF8J+Qr0BodHRwczovL3U5YmFva3UueHl6Lz9zPSoqXFxu8J+Qr+m4oeebkvCfkK9AaHR0cHM6Ly9jYW9uaWFuZy5uZXQvc2VhcmNoLyoqLmh0bWxcXG7wn5Cv5b+F5bqU8J+Qr0BodHRwczovL2NuLmJpbmcuY29tL3NlYXJjaD9xPXNpdGUlM0E1MnBvamllLmNuJTIwKipcXG7wn5Cv55yf5LiL8J+Qr0BodHRwczovL20uc28uY29tL3M/cT0qKiZpZT11dGY4JnNyYz16el93d3cuemhlbnh6LmNvbSZzaXRlPXd3dy56aGVueHouY29tJnJnPTFcXG7wn5CvUVHotYTwn5CvQGh0dHBzOi8vd3d3LnFxenlnLmNuL3NlYXJjaD9rZXl3b3JkPSoqXFxu8J+Qr+WknOays/CfkK9AaHR0cDovL3d3dy55ZWhlcy5jb20vP2NhdD0mcz0qKlxcbvCfkK/ns7vnu5/wn5CvQGh0dHBzOi8vd3d3LnhpdG1pLmNvbS8/cz0qKlxcbvCfkK/ns7vnu5/wn5CvQGh0dHA6Ly9tLnhpdG9uZzg2LmNvbS9zZWFyY2guaHRtbD9rZXl3b3Jkcz0qKiZzdWJtaXQ9JUU2JTkwJTlDJUMyJUEwJUU3JUI0JUEyXFxu8J+QrzVpbHLotYTwn5CvQGh0dHBzOi8vd3d3LjVpbHIuY29tLz9zPSoqJmNhdD0wXFxu8J+Qr+i3r+e+vfCfkK9AaHR0cHM6Ly93d3cuamlzaHVzb25nc2h1LmNvbS8/cz0qKiZwb3N0X3R5cGU9cG9zdFxcbvCfkK/mupDnoIHwn5CvQGh0dHBzOi8vd3d3LnNjb2RlLnNpdGUvc2VhcmNoLz9rZXl3b3JkPSoqXFxu8J+Qr+a1t+ajoPCfkK9AaHR0cHM6Ly93d3cuaGFpdGFuZ3cuY2MvP3M9KipcXG7wn5Cv5YiA5a6i8J+Qr0BodHRwczovL3d3dy5ka2V3bC5jb20vc2VhcmNoL2tleXdvcmQtKipcXG7wn5Cv57qi5bCY8J+Qr0BodHRwczovL3d3dy5oY3czLmNuL3NlYXJjaC8qKi5odG1sXFxu8J+Qr+iaguiagfCfkK9AaHR0cHM6Ly93d3cueG15Ny5jb20vP3M9KipcXG7wn5Cv5bCP5YiA8J+Qr0BodHRwczovL3hkLng2ZC5jb20vZGFvd2FuZ3NvdXN1bz9xPSoqJnR5cGVpZD0wXFxu8J+Qr+S5kOS6q/CfkK9AaHR0cHM6Ly93d3cubHhhcGsuY29tLz9zPSoqJnR5cGU9cG9zdFxcbvCfkK/lhY3otLnwn5CvQGh0dHBzOi8vd3d3LmltZjguY24vc2VhcmNoLyoqLmh0bWxcXG7wn5Cv5Za15pCc8J+Qr0BodHRwczovL3d3dy5hcHBtaXUuY29tLz9zPSoqJnR5cGU9cG9zdFxcbvCfkK9GSOaQnPCfkK9AaHR0cHM6Ly9maWxlaGlwcG8uY29tL3poL3NlYXJjaC8/cT0qKlxcbvCfkK9MSVRFQGh0dHBzOi8vbGl0ZWFwa3MuY29tLz9zPSoqXFxuXFxuXFxuXFxuXFxuXFxuYDtcXG5sZXQgcnVsZXNUZXh0ID0gZ2V0SXRlbShcXFwicnVsZXNcXFwiLCBydWxlc1RleHQwKTtcXG5sZXQgc3AgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9zcFxcXCIpO1xcbnJ1bGVzID0gcnVsZXNUZXh0LnNwbGl0KFxcXCJcXFxcblxcXCIpXFxuICAgIC5maWx0ZXIoaXQgPT4gaXQuaW5jbHVkZXMoXFxcIkBcXFwiKSlcXG4gICAgLm1hcChydWxlID0+IHtcXG4gICAgICAgIGxldCBzID0gcnVsZS5zcGxpdChcXFwiQFxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICBuYW1lOiBzWzBdLFxcbiAgICAgICAgICAgIGZpbmQ6IGZ1bmN0aW9uKGtleSwgcGFnZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gc3Aoc1sxXSwga2V5LCBzWzBdKTtcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHVybDogc1sxXVxcbiAgICAgICAgfTtcXG4gICAgfSk7XFxuXFxuZnVuY3Rpb24gbG9hZChwYWdlLCBydWxlKSB7XFxuICAgIGxldCBzaXplID0gcGFnZSA8PSAwID8gcnVsZXMubGVuZ3RoIDogc2l6ZTA7XFxuICAgIHBhZ2UgPSBwYWdlIDw9IDAgPyAxIDogcGFnZTtcXG4gICAgaWYgKCFwYWdlICYmICFydWxlKSB7XFxuICAgICAgICByZXR1cm4gcnVsZXMubWFwKGl0ID0+IGl0Lm5hbWUpO1xcbiAgICB9XFxuICAgIGlmIChydWxlICE9IG51bGwpIHtcXG4gICAgICAgIGlmIChwYWdlICE9IG51bGwgJiYgcGFnZSA+IDEpIHtcXG4gICAgICAgICAgICByZXR1cm4gcnVsZXMuZmlsdGVyKGkgPT4gaS5uYW1lID09IHJ1bGUgJiYgaS5wYWdlKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBydWxlcy5maWx0ZXIoaSA9PiBpLm5hbWUgPT0gcnVsZSk7XFxuICAgIH1cXG4gICAgbGV0IHN0YXJ0ID0gKHBhZ2UgLSAxKSAqIHNpemU7XFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBzdGFydCArIDEpIHtcXG4gICAgICAgIHJldHVybiBbXTtcXG4gICAgfVxcbiAgICBsZXQgbGVuID0gc2l6ZTtcXG4gICAgaWYgKHJ1bGVzLmxlbmd0aCA8IHBhZ2UgKiBzaXplKSB7XFxuICAgICAgICBsZW4gPSBydWxlcy5sZW5ndGggLSBzdGFydFxcbiAgICB9XFxuICAgIHJldHVybiBydWxlcy5zbGljZShzdGFydCwgc3RhcnQgKyBsZW4pO1xcbn1cXG5cXG5mdW5jdGlvbiBhZGRSdWxlKG5hbWUsIHN1cmwpIHtcXG4gICAgc2V0SXRlbShcXFwicnVsZXNcXFwiLCBydWxlc1RleHQgKyBcXFwiXFxcXG5cXFwiICsgbmFtZSArIFxcXCJAXFxcIiArIHN1cmwpO1xcbn1cXG5cXG5mdW5jdGlvbiBhZGRBbGwoaW5wdXQpIHtcXG4gICAgaWYgKGlucHV0ID09IG51bGwgfHwgaW5wdXQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHJldHVybiAwO1xcbiAgICB9XFxuICAgIGxldCBhcnIgPSBpbnB1dC5zcGxpdChcXFwiXFxcXG5cXFwiKVxcbiAgICAgICAgLmZpbHRlcihpdCA9PiBpdC5pbmNsdWRlcyhcXFwiQFxcXCIpKVxcbiAgICAgICAgLm1hcChydWxlID0+IHtcXG4gICAgICAgICAgICBsZXQgcyA9IHJ1bGUuc3BsaXQoXFxcIkBcXFwiKTtcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICBuYW1lOiBzWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHNbMV1cXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSk7XFxuICAgIGxldCBleGlzdCA9IHJ1bGVzLm1hcChpdCA9PiBpdC51cmwpO1xcbiAgICBsZXQgYyA9IDA7XFxuICAgIGZvciAobGV0IGl0IG9mIGFycikge1xcbiAgICAgICAgaWYgKCFleGlzdC5pbmNsdWRlcyhpdC51cmwpKSB7XFxuICAgICAgICAgICAgcnVsZXNUZXh0ID0gcnVsZXNUZXh0ICsgXFxcIlxcXFxuXFxcIiArIGl0Lm5hbWUgKyBcXFwiQFxcXCIgKyBpdC51cmw7XFxuICAgICAgICAgICAgYysrO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHNldEl0ZW0oXFxcInJ1bGVzXFxcIiwgcnVsZXNUZXh0KTtcXG4gICAgcmV0dXJuIGM7XFxufVxcblxcbmZ1bmN0aW9uIHJlbW92ZVJ1bGUobmFtZSkge1xcbiAgICBsZXQgbmV3VCA9IHJ1bGVzVGV4dC5zcGxpdChcXFwiXFxcXG5cXFwiKVxcbiAgICAgICAgLmZpbHRlcihpdCA9PiBpdC5pbmRleE9mKG5hbWUgKyBcXFwiQFxcXCIpIDwgMClcXG4gICAgICAgIC5qb2luKFxcXCJcXFxcblxcXCIpO1xcbiAgICBzZXRJdGVtKFxcXCJydWxlc1xcXCIsIG5ld1QpO1xcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIGxvYWQ6IGxvYWQsXFxuICAgIGFkZFJ1bGU6IGFkZFJ1bGUsXFxuICAgIHJlbW92ZVJ1bGU6IHJlbW92ZVJ1bGUsXFxuICAgIGFkZEFsbDogYWRkQWxsXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6Kej5p6QXCIsXCJwYXRoXCI6XCJzcFwiLFwicnVsZVwiOlwiZnVuY3Rpb24gc2VhcmNoKHVybCwga2V5LCBydWxlKSB7XFxuICAgIGxldCBkID0gW107XFxuICAgIGxldCBodG1sID0gXFxcIlxcXCI7XFxuICAgIGlmICh1cmwuaW5jbHVkZXMoXFxcIioqXFxcIikpIHtcXG4gICAgICAgIC8vZ2V06K+35rGCXFxuICAgICAgICBsZXQgb2xkID0gdXJsO1xcbiAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoXFxcIioqXFxcIiwga2V5KTtcXG4gICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCk7XFxuICAgICAgICAvL+iHquWKqOi/h+mqjOivgeeggeWSjOmikee5geiuv+mXrumZkOWItlxcbiAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICBjaGVjaywgdGVzdFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3l6bVxcXCIpO1xcbiAgICAgICAgaWYgKGNoZWNrKHVybCwgaHRtbCwgZCkpIHtcXG4gICAgICAgICAgICBsb2coXFxcIumHjeivleS6hlxcXCIpO1xcbiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IHVybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7ICAgICAgICAgICBcXG4gICAgICAgIH0gICAgICAgICBcXG4gICAgICAgIHRlc3QodXJsLCBodG1sLCBkLCBvbGQsIGtleSwgcnVsZSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvL+iHquWKqOivhuWIq3Bvc3Tor7fmsYJcXG4gICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCk7XFxuICAgICAgICBsZXQgZm9ybSA9IHBkZmgoaHRtbCwgXFxcImJvZHkmJmZvcm0mJkh0bWxcXFwiKTtcXG4gICAgICAgIGxldCBhY3Rpb24gPSBwZChodG1sLCBcXFwiZm9ybSYmYWN0aW9uXFxcIiwgdXJsKTtcXG4gICAgICAgIGxldCBpbnB1dHMgPSBwZGZhKGh0bWwsIFxcXCJib2R5JiZmb3JtJiZpbnB1dFxcXCIpO1xcbiAgICAgICAgbGV0IGJvZHkgPSB7fTtcXG4gICAgICAgIGZvciAobGV0IGl0IG9mIGlucHV0cykge1xcbiAgICAgICAgICAgIGxldCBuYW1lID0gcGRmaChpdCwgXFxcImlucHV0JiZuYW1lXFxcIik7XFxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBwZGZoKGl0LCBcXFwiaW5wdXQmJnZhbHVlXFxcIik7XFxuICAgICAgICAgICAgICAgIGJvZHlbbmFtZV0gPSB2YWx1ZSB8fCBrZXk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgaHRtbCA9IHBvc3QoYWN0aW9uLCB7XFxuICAgICAgICAgICAgYm9keTogYm9keVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG4gICAgbGV0IGFsaXN0ID0gcGRmYShodG1sLCBcXFwiYm9keSYmYVxcXCIpO1xcbiAgICBsZXQgYXJyID0gYWxpc3QubWFwKGl0ID0+IHtcXG4gICAgICAgIGxldCB0ID0gcGRmaChpdCwgXFxcImEmJlRleHRcXFwiKTtcXG4gICAgICAgIGxldCB0MiA9IHBkZmgoaXQsIFxcXCJhJiZ0aXRsZVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAvL2h0bWw6IGl0LFxcbiAgICAgICAgICAgIHRleHQ6IHQyICYmIHQyLmluY2x1ZGVzKGtleSkgPyB0MiA6IHQsXFxuICAgICAgICAgICAgaHJlZjogcGQoaXQsIFxcXCJhJiZocmVmXFxcIiwgdXJsKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZnVuY3Rpb24gaXNSZXN1bHQoaXQpIHtcXG4gICAgICAgIGl0ID0gaXQudGV4dCB8fCBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChpdCA9PSBcXFwiXFxcIiB8fCBpdC5tYXRjaCgv5pCc57SifOe7k+aenC8pKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhrZXkpO1xcbiAgICB9XFxuICAgIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgbGV0IHQgPSBpdC50ZXh0O1xcbiAgICAgICAgaWYgKCFpdC5ocmVmIHx8IGl0LmhyZWYgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpc1Jlc3VsdChpdCkpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdCxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3A/dT1cXFwiICsgYmFzZTY0RW5jb2RlKGl0LmhyZWYpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5cXFwiICsgcnVsZSArIFxcXCI8L2ZvbnQ+XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBkO1xcbn1cXG4kLmV4cG9ydHMgPSBzZWFyY2g7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlop7liKBcIixcInBhdGhcIjpcIm1hbmFnZVwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24oZCwgbmFtZXMpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiQUnmioDmnK9cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiY29uZmlybTovL+WfuuS6jkFJ6K+G54mH6Ieq5Yqo5YiG5p6Q5rqQ56CB5oqA5pyv77yM5Luj56CB5a6M5YWo5byA5rqQ77yM5pWw5o2u5p2l5rqQ5LqO5Y6f572R56uZ77yM6L2v5Lu25ZKM6KeE5YiZ5LiN5o+Q5L6b5Lu75L2V5YaF5a65LmpzOicnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCIgKyBcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChycikgPT4ge1xcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhcXFwiYWlhZGRcXFwiKTtcXG4gICAgICAgICAgICBhZGRJdGVtQWZ0ZXIocnIgKyBcXFwiYWlzZGVsXFxcIiwgW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLor7fovpPlhaXnvZHnq5nlkI3np7BcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignbmFtZScsIGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBcXFwiYWlhZGRcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLor7fovpPlhaXnvZHnq5nmkJzntKLlnLDlnYBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignc3VybCcsIGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBcXFwiYWlhZGRcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5o+Q5Lqk5L+d5a2YXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdXJsID0gZ2V0TXlWYXIoXFxcInN1cmxcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBnZXRNeVZhcihcXFwibmFtZVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VybCA9PSBcXFwiXFxcIiB8fCBuYW1lID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXlrozmlbTlhoXlrrlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByID0gZGVjb2RlVVJJQ29tcG9uZW50KHN1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLnJlcGxhY2UobmV3IFJlZ0V4cChcXFwiW1xcXFx1NGUwMC1cXFxcdTlmYTVdK1xcXCIsIFxcXCJnXFxcIiksIFxcXCIqKlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJ1bGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJ1bGUobmFtZSwgcik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5L+d5a2YXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IFxcXCJhaWFkZFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIF0pO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0sIE1ZX1JVTEUudGl0bGUpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCIgLSBcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwic2VsZWN0Oi8vXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBvcHRpb25zOiBuYW1lcyxcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuivt+mAieaLqeimgeWIoOmZpOeahOermeeCuVxcXCIsXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQge1xcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUnVsZVxcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpO1xcbiAgICAgICAgICAgICAgICByZW1vdmVSdWxlKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL09LXFxcIjtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIlxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oaX77iPXFxcIixcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5rip6aao5o+Q56S6XFxcIixcXG4gICAgICAgICAgICAgICAgY29udGVudDogXFxcIuehruWumuWvvOWHuuaJgOacieaVsOaNruWQl++8n++8iOWvvOWHuuWQjuWPr+S7peeCueWHu+aXgei+ueeahOWvvOWFpeaMiemSruaJuemHj+WvvOWFpe+8iVxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkXFxuICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBsb2FkKC0xKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBzID0gZGF0YS5tYXAoaXQgPT4gaXQubmFtZSArIFxcXCJAXFxcIiArIGl0LnVybCkuam9pbihcXFwiXFxcXG5cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBzXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKGmO+4j1xcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXopoHmibnph4/lr7zlhaXnmoTmlbDmja5cXFwiKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICAgICAgYWRkQWxsXFxuICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgICAgICAgICBsZXQgY291bnQgPSBhZGRBbGwoaW5wdXQpO1xcbiAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXCIgKyAoY291bnQgPiAwID8gXFxcIuaIkOWKn+WvvOWFpVxcXCIgKyBjb3VudCArIFxcXCLmnaHmlbDmja5cXFwiIDogXFxcIuS4gOadoeS5n+ayoeWvvOWFpVxcXCIpXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiLFxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogTVlfUlVMRS50aXRsZSArIFxcXCJhaXNkZWxcXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumqjOivgeeggVwiLFwicGF0aFwiOlwieXptXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBjaGVjayh1cmwsIGh0bWwsIGQpIHtcXG4gICAgbGV0IHJlbG9hZCA9IGZhbHNlO1xcbiAgICByZXR1cm4gcmVsb2FkO1xcbn1cXG5cXG5mdW5jdGlvbiB0ZXN0KHVybCwgaHRtbCwgZCwgb2xkLCBrZXksIHJ1bGUpIHtcXG4gICAgaWYgKC8156eSfOmikee5gS8udGVzdChodG1sKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+aQnOe0oumcgOmXtOmalDXnp5LvvIzngrnlh7vph43mlrDliqDovb0nLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG4gICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+XFxcIiArIHJ1bGUgKyBcXFwiPC9mb250PlxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHVybCwgb2xkLCBrZXksIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHNwID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2Uvc3BcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzcChvbGQsIGtleSwgcnVsZSk7XFxuICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICB3cmFwXFxuICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sXFxcIik7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIGQpIHtcXG4gICAgICAgICAgICAgICAgICAgIGl0LnRpdGxlID0gd3JhcChpdC50aXRsZSwga2V5KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIodXJsLCBkKTtcXG4gICAgICAgICAgICAgICAgZGVsZXRlSXRlbSh1cmwpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vT0tcXFwiO1xcbiAgICAgICAgICAgIH0sIHVybCwgb2xkLCBrZXksIHJ1bGUpLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiB1cmxcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIGNoZWNrOiBjaGVjayxcXG4gICAgdGVzdDogdGVzdFxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuW3peWFt1wiLFwicGF0aFwiOlwidG9vbFwiLFwicnVsZVwiOlwiZnVuY3Rpb24gd3JhcCh0ZXh0LCBzKSB7XFxuICAgIHJldHVybiB0ZXh0LmluY2x1ZGVzKFxcXCLigJzigJzigJ3igJ1cXFwiKSA/IHRleHQgOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIHRleHQucmVwbGFjZShuZXcgUmVnRXhwKFxcXCI8ZW0+fDwvZW0+XFxcIiwgXFxcImdcXFwiKSwgXFxcIlxcXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChzLCBcXFwiZ1xcXCIpLCBcXFwiPHN0cm9uZz48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiAjMUU5MEZGXFxcXFxcXCI+XFxcIiArIHMgKyBcXFwiPC9zcGFuPjwvc3Ryb25nPlxcXCIpXFxufVxcbiQuZXhwb3J0cyA9IHtcXG4gICAgd3JhcDogd3JhcFxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWNleaQnFwiLFwicGF0aFwiOlwic2luZ2xlc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuaQnOe0olxcXCIsXFxuICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBwdXRNeVZhcihcXFwic29cXFwiLCBpbnB1dCk7XFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXlhbPplK7or43vvIzlsL3ph4/lsJHlrZfkuI3opoHlpJrlrZdcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXFxcInNvXFxcIiwgXFxcIlxcXCIpXFxuICAgIH1cXG59KTtcXG5sZXQgcyA9IGdldE15VmFyKFxcXCJzb1xcXCIsIFxcXCJcXFwiKTtcXG5sZXQgciA9IFxcXCJcXFwiO1xcbmlmIChzICE9IFxcXCJcXFwiKSB7XFxuICAgIGxldCBwID0gTVlfUEFHRTtcXG4gICAgbGV0IHtcXG4gICAgICAgIGxvYWRcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IHtcXG4gICAgICAgIHdyYXBcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFwiKTtcXG4gICAgbGV0IGRhdGEgPSBsb2FkKHAsIE1ZX1BBUkFNUy5SVUxFLm5hbWUpO1xcbiAgICBsZXQgYXJyID0gZGF0YVswXS5maW5kKHMsIHApO1xcbiAgICBmb3IgKGxldCBpdCBvZiBhcnIpIHtcXG4gICAgICAgIGl0LnRpdGxlID0gd3JhcChpdC50aXRsZSwgcylcXG4gICAgICAgIGQucHVzaChpdCk7XFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6aG16Z2iXCIsXCJwYXRoXCI6XCJzb3VwXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9QQVJBTVMua2V5ICYmIGdldE15VmFyKFxcXCJ1c2VcXFwiLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgcHV0TXlWYXIoXFxcInNvdVxcXCIsIE1ZX1BBUkFNUy5rZXkpO1xcbiAgICBwdXRNeVZhcihcXFwidXNlXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInVzZVxcXCIpO1xcbiAgICB9KSk7XFxufVxcbiQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BybycpXCJ9XSxcInBhcmFtc1wiOlwie1xcXCJSVUxFXFxcIjp7XFxcIm5hbWVcXFwiOlxcXCLwn5Cv6IGa5ZCI8J+Qr1xcXCIsXFxcInVybFxcXCI6XFxcImh0dHBzOi8vd3d3Lmp1aGV6eS5uZXQvc29zbz9xPSoqXFxcIn0sXFxcImxvbmdDbGlja1xcXCI6W3tcXFwianNcXFwiOlxcXCIoXFxcXG4obmFtZSkgPT4ge1xcXFxuICAgIGNvbmZpcm0oe3RpdGxlOiBcXFxcXFxcIlxcXFxcXFxcdTZlMjlcXFxcXFxcXHU5OWE4XFxcXFxcXFx1NjNkMFxcXFxcXFxcdTc5M2FcXFxcXFxcIiwgY29udGVudDogXFxcXFxcXCJcXFxcXFxcXHU3ODZlXFxcXFxcXFx1OGJhNFxcXFxcXFxcdTUyMjBcXFxcXFxcXHU5NjY0XFxcXFxcXFx1Nzk4MVxcXFxcXFxcdTc1MjhcXFxcXFxcIiArIG5hbWUgKyBcXFxcXFxcIlxcXFxcXFxcdTU0MTdcXFxcXFxcXHVmZjFmXFxcXFxcXCIsIGNvbmZpcm06ICQudG9TdHJpbmcoKG5hbWUsIHJ1bGUpID0+IHtcXFxcbiAgICAgICAgbGV0IHtyZW1vdmVSdWxlfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9kYXRhP3J1bGU9XFxcXFxcXCIgKyBydWxlKTtcXFxcbiAgICAgICAgcmVtb3ZlUnVsZShuYW1lKTtcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly9PS1xcXFxcXFwiO1xcXFxuICAgIH1cXFxcbiAgICAsIG5hbWUsIE1ZX1JVTEUudGl0bGUpfSk7XFxcXG4gICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxufVxcXFxuKShcXFxcXFxcIvCfkK/ogZrlkIjwn5CvXFxcXFxcXCIpXFxcIixcXFwidGl0bGVcXFwiOlxcXCLnpoHnlKjwn5Cv6IGa5ZCI8J+Qr1xcXCJ9LHtcXFwianNcXFwiOlxcXCInaGlrZXI6Ly9wYWdlL3A/dT1hSFIwY0hNNkx5OTNkM2N1YW5Wb1pYcDVMbTVsZEE9PSdcXFwiLFxcXCJ0aXRsZVxcXCI6XFxcIuiuv+mXrummlumhtVxcXCJ9LHtcXFwianNcXFwiOlxcXCInaGlrZXI6Ly9wYWdlL3NpbmdsZXMnXFxcIixcXFwidGl0bGVcXFwiOlxcXCLmkJzntKLmraTmupBcXFwifV19XCIsXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIkFJ6L2v5pCcXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9wYWdlL3A/dT1hSFIwY0hNNkx5OTNkM2N1YW5Wb1pYcDVMbTVsZEE9PVwiLFwiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcImZpbmRfcnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXCJ1XFxcIikpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGNhbkJhY2s6IHRydWUsXFxuICAgICAgICBibG9ja1J1bGVzOiBbXFxcIi5naWZcXFwiLCBcXFwiL2FkL1xcXCIsIFxcXCIvYWRzL1xcXCIsIFxcXCJnb29nbGVcXFwiLCBcXFwiL3NoL3RvL1xcXCIsIFxcXCIuR0lGXFxcIl1cXG4gICAgfVxcbn0pO1xcbnNldFJlc3VsdChkKTtcXG5cIixcImdyb3VwXCI6XCLikaJBSVwiLFwidWFcIjpcIm1vYmlsZVwiLFwicHJlUnVsZVwiOlwiXCIsXCJwYWdlc1wiOlwiW3tcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS6jOe6p+ino+aekFxcXCIsXFxcInBhdGhcXFwiOlxcXCJwXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbmxldCB1cmwgPSBiYXNlNjREZWNvZGUoZ2V0UGFyYW0oXFxcXFxcXCJ1XFxcXFxcXCIpKTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgdXJsOiB1cmwsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcImZsb2F0JiYxMDAlXFxcXFxcXCIsXFxcXG4gICAgcGljX3VybDogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBjYW5CYWNrOiB0cnVlLFxcXFxuICAgICAgICBibG9ja1J1bGVzOiBbXFxcXFxcXCIuZ2lmXFxcXFxcXCIsIFxcXFxcXFwiL2FkL1xcXFxcXFwiLCBcXFxcXFxcIi9hZHMvXFxcXFxcXCIsIFxcXFxcXFwiZ29vZ2xlXFxcXFxcXCIsIFxcXFxcXFwiL3NoL3RvL1xcXFxcXFwiLCBcXFxcXFxcIi5HSUZcXFxcXFxcIl1cXFxcbiAgICB9XFxcXG59KTtcXFxcbnNldFJlc3VsdChkKTtcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJ0ZXh0XzFcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pCc57Si5rWL6K+VXFxcIixcXFwicGF0aFxcXCI6XFxcInNcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXFxcXFwidVxcXFxcXFwiKSk7XFxcXG5sb2codXJsKTtcXFxcbmxldCBrZXkgPSBnZXRQYXJhbShcXFxcXFxcImtleVxcXFxcXFwiKTtcXFxcbmxldCBzcCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9zcFxcXFxcXFwiKTtcXFxcbnNldFJlc3VsdChzcCh1cmwsIGtleSwgXFxcXFxcXCLmkJzntKLmtYvor5VcXFxcXFxcIikpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuiBmuWQiOaQnOe0olxcXCIsXFxcInBhdGhcXFwiOlxcXCJwcm9cXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIGQgPSBbXTtcXFxcbmlmIChNWV9QQUdFID09IDEpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLmkJzntKJcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCI7XFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgICAgICBkZXNjOiBcXFxcXFxcIuivt+i+k+WFpeWFs+mUruivje+8jOWwvemHj+WwkeWtl+S4jeimgeWkmuWtl1xcXFxcXFwiLFxcXFxuICAgICAgICBwaWNfdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFxcXFxcInNvdVxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcInNvdVxcXFxcXFwiLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9XFxcXG4gICAgfSk7XFxcXG4gICAgYWRkTGlzdGVuZXIoXFxcXFxcXCJvbkNsb3NlXFxcXFxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICBjbGVhck15VmFyKFxcXFxcXFwic291XFxcXFxcXCIpO1xcXFxuICAgICAgICBjbGVhck15VmFyKFxcXFxcXFwic29cXFxcXFxcIik7XFxcXG4gICAgfSkpO1xcXFxufVxcXFxuXFxcXG5sZXQgcyA9IGdldE15VmFyKFxcXFxcXFwic291XFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxubGV0IHIgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuaWYgKHMgIT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgIGxldCBwID0gTVlfUEFHRTtcXFxcbiAgICBsZXQge1xcXFxuICAgICAgICBsb2FkXFxcXG4gICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcXFxcXCIpO1xcXFxuICAgIGxldCB7XFxcXG4gICAgICAgIHdyYXBcXFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFxcXFxcIik7XFxcXG4gICAgbGV0IGRhdGEgPSBsb2FkKHAsIHIgIT0gXFxcXFxcXCJcXFxcXFxcIiA/IHIgOiBudWxsKTtcXFxcblxcXFxuICAgIGxldCBwYWdlaWQgPSBNWV9SVUxFLnRpdGxlICsgXFxcXFxcXCItcGFnZVxcXFxcXFwiICsgcDtcXFxcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLliqDovb3nrKxcXFxcXFxcIiArIHAgKyBcXFxcXFxcIumhteS4re+8jOi/m+W6pu+8mjEvXFxcXFxcXCIgKyBkYXRhLmxlbmd0aCxcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBwaWNfdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICBpZDogcGFnZWlkXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICBzZXRSZXN1bHQoZCk7XFxcXG4gICAgbG9nKGRhdGEubGVuZ3RoKTtcXFxcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XFxcXG4gICAgICAgIC8v5aSa57q/56iL5Yqg6L29ICAgICAgICBcXFxcbiAgICAgICAgbGV0IHJlYWxQYWdlID0gXFxcXFxcXCJcXFxcXFxcIiA9PSByID8gMSA6IHA7XFxcXG4gICAgICAgIGxldCB0YXNrcyA9IGRhdGEubWFwKGl0ID0+IHtcXFxcbiAgICAgICAgICAgIHJldHVybiB7XFxcXG4gICAgICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocnVsZSkge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5maW5kKHMsIHJlYWxQYWdlKTtcXFxcbiAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgIHBhcmFtOiBpdCxcXFxcbiAgICAgICAgICAgICAgICBpZDogXFxcXFxcXCJydWxlQFxcXFxcXFwiICsgaXQubmFtZVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICBiYXRjaEV4ZWN1dGUodGFza3MsIHtcXFxcbiAgICAgICAgICAgIGZ1bmM6IGZ1bmN0aW9uKHBhcmFtLCBpZCwgZXJyb3IsIHJlc3VsdCkge1xcXFxuICAgICAgICAgICAgICAgIC8vbG9nKFxcXFxcXFwibGlzdGVuZXI6IFxcXFxcXFwiICsgKHJlc3VsdCB8fCBbXSkubGVuZ3RoKVxcXFxuICAgICAgICAgICAgICAgIHBhcmFtLmkgPSBwYXJhbS5pICsgMTtcXFxcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpdCBvZiByZXN1bHQpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5qID0gcGFyYW0uaiArIDE7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXRlbUJlZm9yZShwYWdlaWQsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHdyYXAoaXQudGl0bGUsIHMpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdC5kZXNjLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0LnVybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaXQucGljX3VybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGl0LnBpY191cmwgPyAnbW92aWVfMV92ZXJ0aWNhbF9waWMnIDogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IGl0LmV4dHJhXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXFxcblxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBpZiAocGFyYW0uaSA+PSBwYXJhbS5hbGwpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbShwYWdlaWQpXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLliqDovb3nrKxcXFxcXFxcIiArIE1ZX1BBR0UgKyBcXFxcXFxcIumhteS4re+8jOi/m+W6pu+8mlxcXFxcXFwiICsgKHBhcmFtLmkgKyAxKSArIFxcXFxcXFwiL1xcXFxcXFwiICsgcGFyYW0uYWxsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYWdlaWRcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgcGFyYW06IHtcXFxcbiAgICAgICAgICAgICAgICBhbGw6IGRhdGEubGVuZ3RoLFxcXFxuICAgICAgICAgICAgICAgIGk6IDAsXFxcXG4gICAgICAgICAgICAgICAgajogLTFcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG59IGVsc2Uge1xcXFxuICAgIGxldCB7XFxcXG4gICAgICAgIGxvYWRcXFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFxcXFxcIik7XFxcXG4gICAgbGV0IGRhdGEgPSBsb2FkKC0xLCBudWxsKTtcXFxcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XFxcXG4gICAgICAgICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9tYW5hZ2VcXFxcXFxcIikoZCwgZGF0YS5tYXAoaXQgPT4gaXQubmFtZSkpO1xcXFxuICAgICAgICBmb3IgKGxldCBpdCBvZiBkYXRhKSB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdC5uYW1lLFxcXFxuICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJzZWxlY3Q6Ly9cXFxcXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6K+36YCJ5oup5pON5L2cXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbDogMSxcXFxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xcXFxcXFwi6K6/6Zeu6aaW6aG1XFxcXFxcXCIsIFxcXFxcXFwi5pCc57Si5q2k56uZXFxcXFxcXCJdLFxcXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodXJsKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcXFxcXCLorr/pl67pppbpobVcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ZX1VSTCA9IHVybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2UvcD91PVxcXFxcXFwiICsgYmFzZTY0RW5jb2RlKGdldEhvbWUodXJsKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3NpbmdsZXNcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9LCBpdC51cmwpXFxcXG4gICAgICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiZmxleF9idXR0b25cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgUlVMRToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXQubmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXQudXJsXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuemgeeUqFxcXFxcXFwiICsgaXQubmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIua4qemmqOaPkOekulxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcXFxcXFxcIuehruiupOWIoOmZpOemgeeUqFxcXFxcXFwiICsgbmFtZSArIFxcXFxcXFwi5ZCX77yfXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKG5hbWUsIHJ1bGUpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUnVsZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9kYXRhP3J1bGU9XFxcXFxcXCIgKyBydWxlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJ1bGUobmFtZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly9PS1xcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuYW1lLCBNWV9SVUxFLnRpdGxlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXQubmFtZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6K6/6Zeu6aaW6aG1XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogXFxcXFxcXCInaGlrZXI6Ly9wYWdlL3A/dT1cXFxcXFxcIiArIGJhc2U2NEVuY29kZShnZXRIb21lKGl0LnVybCkpICtcXFxcXFxcIidcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLmkJzntKLmraTmupBcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiBcXFxcXFxcIidoaWtlcjovL3BhZ2Uvc2luZ2xlcydcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pWw5o2uXFxcIixcXFwicGF0aFxcXCI6XFxcImRhdGFcXFwiLFxcXCJydWxlXFxcIjpcXFwiLy/lubblj5Hop4TliJnmlbBcXFxcbmxldCBzaXplMCA9IDEwO1xcXFxubGV0IHJ1bGVzVGV4dDAgPSBg8J+Qr+e7tOW/q/CfkK9AaHR0cHM6Ly9zLnZreGlhemFpLmNvbS9zZWFyY2gvMF8qKlxcXFxu8J+Qr+eBq+eBq/CfkK9AaHR0cDovL3d3dy5obmZjanIuY29tL3NvL20vP2s9KipcXFxcbvCfkK/mioDmnK/wn5CvQGh0dHBzOi8vd3d3Lml0dGVsLmNuLz9zPSoqXFxcXG7wn5Cv5p2+5a2Q8J+Qr0BodHRwczovL3d3dy42MWt1LmNvbS8/cz0qKlxcXFxu8J+Qr+W/g+a1t/CfkK9AaHR0cHM6Ly9hcHBob3QuY2MvP3M9KipcXFxcbvCfkK9hcHDng63wn5CvQGh0dHBzOi8vYXBwaG90LmNjLz9zPSoqXFxcXG7wn5Cv57u/6L2v8J+Qr0BodHRwczovL3d3dy5nbmRvd24uY29tLz9zPSoqXFxcXG7wn5CvNjc46L6F8J+Qr0BodHRwczovL3d3dy42Nzhjdi5jb20vaW5kZXgucGhwP2tleXdvcmQ9KipcXFxcbvCfkK85NjYz8J+Qr0BodHRwOi8vcy45NjYzLmNvbS9tLz9rPSoqXFxcXG7wn5Cv5aSc6Zuo8J+Qr0BodHRwczovL3d3dy55ZXl1bGluZ2ZlbmcuY29tLz9zPSoqXFxcXG7wn5Cv5YWI55+l8J+Qr0BodHRwczovL3d3dy55eHpoaS5jb20vP3Bvc3RfdHlwZT1wb3N0JnM9KipcXFxcbvCfkK/lv7Xnkb7wn5CvQGh0dHBzOi8vbXl6d3EuY29tLz9zPSoqXFxcXG7wn5Cv6L2v6LaF8J+Qr0BodHRwczovL3d3dy5yamN4Yi5jb20vP3M9KipcXFxcbvCfkK/lsI/lhbXwn5CvQGh0dHBzOi8vd3d3Ljd4aWF6YWkuY29tLz9zPSoqXFxcXG7wn5Cv5bCP6Zmi8J+Qr0BodHRwczovL2Jsb2cuNGR6LnRvcDoxODQ0My8/a2V5d29yZD0qKlxcXFxu8J+Qr+WRseWRsfCfkK9AaHR0cHM6Ly93d3cuZ3VhZ3Vhbml1LmNvbS8/cz0qKlxcXFxu8J+Qr+eyvuWTgfCfkK9AaHR0cDovL3d3dy5qOXAuY29tL3NvL20vP2s9KipcXFxcbvCfkK/nlLXnjqlAaHR0cHM6Ly9zLmt4ZHcuY29tL3dhcC5waHA/cT0qKlxcXFxu8J+QrzQyM0Twn5CvQGh0dHBzOi8vd3d3LjQyM2Rvd24uY29tL3NlYXJjaC8qKlxcXFxu8J+Qr1FR8J+Qr0BodHRwOi8vbS5xcXlld3UuY29tL3NlYXJjaC5hc3A/d29yZD0lRDIlRjQlQzAlRDYmbT0yJnNlYXJjaGJ0bjI9KipcXFxcbvCfkK/liY3mlrnwn5CvQGh0dHBzOi8vcWlhbmZhbmd6eS5jb20vP3M9KipcXFxcbvCfkK/po47ova/wn5CvQGh0dHBzOi8vd3d3LmlmZW5nc29mdC5jb20vc2VhcmNoLnBocD9xPSoqXFxcXG7wn5Cv6Jek6L2p8J+Qr0BodHRwczovL3d3dy50ZW5neHVhbncuY29tL2luZGV4LnBocD9rZXl3b3JkPSoqJnR5cGVpZD0wXFxcXG7wn5Cv5LyY57Gz8J+Qr0BodHRwczovL3d3dy40c3BhY2VzLm9yZy8/cz0qKlxcXFxu8J+Qr+Wwj+mrmPCfkK9AaHR0cHM6Ly93d3cueGd3NC5jb20vP3M9KipcXFxcbvCfkK/mnYLotKfwn5CvQGh0dHBzOi8vdG1pb2UuY29tLz9zPSoqXFxcXG7wn5Cv5p6r6Z+z8J+Qr0BodHRwczovL3d3dy5meTZiLmNvbS8/cz0qKlxcXFxu8J+Qr+Wkp+ecvPCfkK9AaHR0cDovL3d3dy5kYXlhbnphaS5tZS8/cz0qKlxcXFxu8J+Qr+ekvuWMuvCfkK9AaHR0cHM6Ly93d3cuaTN6aC5jb20vP3M9KipcXFxcbvCfkK/kuIDplK7wn5CvQGh0dHBzOi8vd3d3LjFqa3guY29tLz9zPSoqJnR5cGU9cG9zdFxcXFxu8J+Qr+eZveWFlPCfkK9AaHR0cDovL3d3dy5kYmFpdHUuY29tL3NlYXJjaC8/a2V5d29yZD0qKlxcXFxu8J+Qr1B1cmVzeXPwn5CvQGh0dHBzOi8vd3d3LnB1cmVzeXMubmV0Lz9zPSoqXFxcXG7wn5Cv6KW/6YOo8J+Qr0BodHRwczovL3d3dy54aWJ1bHVvLmNvbS9zby8qKlxcXFxu8J+Qr+iBmuWQiPCfkK9AaHR0cHM6Ly93d3cuanVoZXp5Lm5ldC9zb3NvP3E9KipcXFxcbvCfkK/njonnsbPwn5CvQGh0dHBzOi8veWltaWxpLm5ldC8/cz0qKlxcXFxu8J+Qr+acqOmjjvCfkK9AaHR0cHM6Ly93d3cubWZyanouY29tLz9zPSoqXFxcXG7wn5CvNzI3M/CfkK9AaHR0cDovL3MuNzI3My5jb20vbS8/az0qKlxcXFxu8J+Qr+WIneingfCfkK9AaHR0cHM6Ly9ibG9nLmNodWppYW4tbGluLnRvcC8/cz0qKiZ0eXBlPXBvc3RcXFxcbvCfkK9NRUZDTPCfkK9AaHR0cHM6Ly93d3cubWVmY2wuY29tLz9zPSoqXFxcXG7wn5Cv5o235b6E8J+Qr0BodHRwOi8vd3d3LnFpdXF1YW4uY2MvP3M9KipcXFxcbvCfkK9NZW1vcnnwn5CvQGh0dHBzOi8vY254aWFvYmFpLmNvbS9zZWFyY2g/a2V5d29yZD0qKlxcXFxu8J+Qr+S6pOa1gfCfkK9AaHR0cHM6Ly93d3cuamlhb2xpdWRhby5jb20vP3M9KipcXFxcbvCfkK/nm5LlrZDwn5CvQGh0dHBzOi8vd3d3LmhlemlwaWUuY29tLz9zPSoqXFxcXG7wn5Cv5YiG5Lqr8J+Qr0BodHRwczovL3d3dy5mZW54bS5jb20vc2VhcmNoLnBocD9xPSoqXFxcXG7wn5Cv5a2m5aCC8J+Qr0BodHRwczovL20ueHVlNTEuY29tL3NlYXJjaC8qKi5odG1sXFxcXG7wn5Cv5byC5pif8J+Qr0BodHRwczovL3d3dy55eHNzcC5jb20vP3M9KipcXFxcbvCfkK/kuI3mrbvwn5CvQGh0dHBzOi8vaXVpLnN1L3NlYXJjaC8qKi9cXFxcbvCfkK/ok53psqjwn5CvQGh0dHBzOi8vd3d3Lmxhbi1zaGEuY29tLz9zPSoqXFxcXG7wn5Cv5LmQ5LmQ8J+Qr0BodHRwOi8vd3d3LjZsbC5jb20vc28vbS8/az0qKlxcXFxu8J+Qr+S4i+i9vfCfkK9AaHR0cHM6Ly9tLnh6amkuY29tL3NlYXJjaC9hbGwtMC0xLSoqLmh0bWxcXFxcbvCfkK/mnoHlrqLwn5CvQGh0dHBzOi8vd3d3LmdlZWtkbG9hZC5jb20vP3M9KipcXFxcbvCfkK/lh6HlsJjwn5CvQGh0dHBzOi8vd3d3LjUwZmN3LmNvbS9pbmRleC5waHA/a2V5d29yZD0qKiZ0eXBlaWQ9MFxcXFxu8J+Qr+mjmOmBpfCfkK9AaHR0cHM6Ly93d3cubXB5aXQuY29tLz9zPSoqXFxcXG7wn5Cv5Lmd6L2v8J+Qr0BodHRwczovL3d3dy5qb3J1YW4uY29tLz9zPSoqXFxcXG7wn5Cv6KW/6KW/8J+Qr0BodHRwczovL3NvLmNyMTczLmNvbS9zb3VzdW8vbS8/az0qKlxcXFxu8J+Qr+aXoOeXlfCfkK9AaHR0cHM6Ly93d3cud2hnNi5jb20vNDY1OC5odG1sXFxcXG7wn5Cv5bCP5LyX8J+Qr0BodHRwczovL3d3dy5hcHBpbm4uY29tLz9zPSoqXFxcXG7wn5Cv5rW35rSL8J+Qr0BodHRwczovL2Jsb2cudXB4OC5jb20vc2VhcmNoLyoqXFxcXG7wn5CvQeWnkPCfkK9AaHR0cHM6Ly93d3cuYWhoaGhmcy5jb20vP2NhdD0mcz0qKlxcXFxu8J+Qr+aenOaguPCfkK9AaHR0cHM6Ly93d3cuZ2h4aS5jb20vP3M9KipcXFxcbvCfkK/ok53ngrnwn5CvQGh0dHBzOi8vd3d3LmxhbmRpYW5uZXdzLmNvbS9zZWFyY2gvKio/cG9zdF90eXBlPXBvc3RcXFxcbvCfkK/ls7Dlk6Xwn5CvQGh0dHBzOi8venp6enp6Lm1lLz9rZXl3b3JkPSoqXFxcXG7wn5Cv5b6u5b2T8J+Qr0BodHRwczovL20ud2VpZG93bi5jb20vc2VhcmNoLmh0bWw/cT0qKlxcXFxu8J+Qr+aCoOS5hfCfkK9AaHR0cHM6Ly91OWJhb2t1Lnh5ei8/cz0qKlxcXFxu8J+Qr+m4oeebkvCfkK9AaHR0cHM6Ly9jYW9uaWFuZy5uZXQvc2VhcmNoLyoqLmh0bWxcXFxcbvCfkK/lv4XlupTwn5CvQGh0dHBzOi8vY24uYmluZy5jb20vc2VhcmNoP3E9c2l0ZSUzQTUycG9qaWUuY24lMjAqKlxcXFxu8J+Qr+ecn+S4i/CfkK9AaHR0cHM6Ly9tLnNvLmNvbS9zP3E9KiomaWU9dXRmOCZzcmM9enpfd3d3LnpoZW54ei5jb20mc2l0ZT13d3cuemhlbnh6LmNvbSZyZz0xXFxcXG7wn5CvUVHotYTwn5CvQGh0dHBzOi8vd3d3LnFxenlnLmNuL3NlYXJjaD9rZXl3b3JkPSoqXFxcXG7wn5Cv5aSc5rKz8J+Qr0BodHRwOi8vd3d3LnllaGVzLmNvbS8/Y2F0PSZzPSoqXFxcXG7wn5Cv57O757uf8J+Qr0BodHRwczovL3d3dy54aXRtaS5jb20vP3M9KipcXFxcbvCfkK/ns7vnu5/wn5CvQGh0dHA6Ly9tLnhpdG9uZzg2LmNvbS9zZWFyY2guaHRtbD9rZXl3b3Jkcz0qKiZzdWJtaXQ9JUU2JTkwJTlDJUMyJUEwJUU3JUI0JUEyXFxcXG7wn5CvNWlscui1hPCfkK9AaHR0cHM6Ly93d3cuNWlsci5jb20vP3M9KiomY2F0PTBcXFxcbvCfkK/ot6/nvr3wn5CvQGh0dHBzOi8vd3d3Lmppc2h1c29uZ3NodS5jb20vP3M9KiomcG9zdF90eXBlPXBvc3RcXFxcbvCfkK/mupDnoIHwn5CvQGh0dHBzOi8vd3d3LnNjb2RlLnNpdGUvc2VhcmNoLz9rZXl3b3JkPSoqXFxcXG7wn5Cv5rW35qOg8J+Qr0BodHRwczovL3d3dy5oYWl0YW5ndy5jYy8/cz0qKlxcXFxu8J+Qr+WIgOWuovCfkK9AaHR0cHM6Ly93d3cuZGtld2wuY29tL3NlYXJjaC9rZXl3b3JkLSoqXFxcXG7wn5Cv57qi5bCY8J+Qr0BodHRwczovL3d3dy5oY3czLmNuL3NlYXJjaC8qKi5odG1sXFxcXG7wn5Cv6JqC6JqB8J+Qr0BodHRwczovL3d3dy54bXk3LmNvbS8/cz0qKlxcXFxu8J+Qr+Wwj+WIgPCfkK9AaHR0cHM6Ly94ZC54NmQuY29tL2Rhb3dhbmdzb3VzdW8/cT0qKiZ0eXBlaWQ9MFxcXFxu8J+Qr+S5kOS6q/CfkK9AaHR0cHM6Ly93d3cubHhhcGsuY29tLz9zPSoqJnR5cGU9cG9zdFxcXFxu8J+Qr+WFjei0ufCfkK9AaHR0cHM6Ly93d3cuaW1mOC5jbi9zZWFyY2gvKiouaHRtbFxcXFxu8J+Qr+WWteaQnPCfkK9AaHR0cHM6Ly93d3cuYXBwbWl1LmNvbS8/cz0qKiZ0eXBlPXBvc3RcXFxcbvCfkK9GSOaQnPCfkK9AaHR0cHM6Ly9maWxlaGlwcG8uY29tL3poL3NlYXJjaC8/cT0qKlxcXFxu8J+Qr0xJVEVAaHR0cHM6Ly9saXRlYXBrcy5jb20vP3M9KipcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5gO1xcXFxubGV0IHJ1bGVzVGV4dCA9IGdldEl0ZW0oXFxcXFxcXCJydWxlc1xcXFxcXFwiLCBydWxlc1RleHQwKTtcXFxcbmxldCBzcCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9zcFxcXFxcXFwiKTtcXFxcbnJ1bGVzID0gcnVsZXNUZXh0LnNwbGl0KFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIpXFxcXG4gICAgLmZpbHRlcihpdCA9PiBpdC5pbmNsdWRlcyhcXFxcXFxcIkBcXFxcXFxcIikpXFxcXG4gICAgLm1hcChydWxlID0+IHtcXFxcbiAgICAgICAgbGV0IHMgPSBydWxlLnNwbGl0KFxcXFxcXFwiQFxcXFxcXFwiKTtcXFxcbiAgICAgICAgcmV0dXJuIHtcXFxcbiAgICAgICAgICAgIG5hbWU6IHNbMF0sXFxcXG4gICAgICAgICAgICBmaW5kOiBmdW5jdGlvbihrZXksIHBhZ2UpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gc3Aoc1sxXSwga2V5LCBzWzBdKTtcXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICB1cmw6IHNbMV1cXFxcbiAgICAgICAgfTtcXFxcbiAgICB9KTtcXFxcblxcXFxuZnVuY3Rpb24gbG9hZChwYWdlLCBydWxlKSB7XFxcXG4gICAgbGV0IHNpemUgPSBwYWdlIDw9IDAgPyBydWxlcy5sZW5ndGggOiBzaXplMDtcXFxcbiAgICBwYWdlID0gcGFnZSA8PSAwID8gMSA6IHBhZ2U7XFxcXG4gICAgaWYgKCFwYWdlICYmICFydWxlKSB7XFxcXG4gICAgICAgIHJldHVybiBydWxlcy5tYXAoaXQgPT4gaXQubmFtZSk7XFxcXG4gICAgfVxcXFxuICAgIGlmIChydWxlICE9IG51bGwpIHtcXFxcbiAgICAgICAgaWYgKHBhZ2UgIT0gbnVsbCAmJiBwYWdlID4gMSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcihpID0+IGkubmFtZSA9PSBydWxlICYmIGkucGFnZSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcihpID0+IGkubmFtZSA9PSBydWxlKTtcXFxcbiAgICB9XFxcXG4gICAgbGV0IHN0YXJ0ID0gKHBhZ2UgLSAxKSAqIHNpemU7XFxcXG4gICAgaWYgKHJ1bGVzLmxlbmd0aCA8IHN0YXJ0ICsgMSkge1xcXFxuICAgICAgICByZXR1cm4gW107XFxcXG4gICAgfVxcXFxuICAgIGxldCBsZW4gPSBzaXplO1xcXFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBwYWdlICogc2l6ZSkge1xcXFxuICAgICAgICBsZW4gPSBydWxlcy5sZW5ndGggLSBzdGFydFxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gcnVsZXMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuKTtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gYWRkUnVsZShuYW1lLCBzdXJsKSB7XFxcXG4gICAgc2V0SXRlbShcXFxcXFxcInJ1bGVzXFxcXFxcXCIsIHJ1bGVzVGV4dCArIFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIgKyBuYW1lICsgXFxcXFxcXCJAXFxcXFxcXCIgKyBzdXJsKTtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gYWRkQWxsKGlucHV0KSB7XFxcXG4gICAgaWYgKGlucHV0ID09IG51bGwgfHwgaW5wdXQgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICByZXR1cm4gMDtcXFxcbiAgICB9XFxcXG4gICAgbGV0IGFyciA9IGlucHV0LnNwbGl0KFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIpXFxcXG4gICAgICAgIC5maWx0ZXIoaXQgPT4gaXQuaW5jbHVkZXMoXFxcXFxcXCJAXFxcXFxcXCIpKVxcXFxuICAgICAgICAubWFwKHJ1bGUgPT4ge1xcXFxuICAgICAgICAgICAgbGV0IHMgPSBydWxlLnNwbGl0KFxcXFxcXFwiQFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHJldHVybiB7XFxcXG4gICAgICAgICAgICAgICAgbmFtZTogc1swXSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHNbMV1cXFxcbiAgICAgICAgICAgIH07XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIGxldCBleGlzdCA9IHJ1bGVzLm1hcChpdCA9PiBpdC51cmwpO1xcXFxuICAgIGxldCBjID0gMDtcXFxcbiAgICBmb3IgKGxldCBpdCBvZiBhcnIpIHtcXFxcbiAgICAgICAgaWYgKCFleGlzdC5pbmNsdWRlcyhpdC51cmwpKSB7XFxcXG4gICAgICAgICAgICBydWxlc1RleHQgPSBydWxlc1RleHQgKyBcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFwiICsgaXQubmFtZSArIFxcXFxcXFwiQFxcXFxcXFwiICsgaXQudXJsO1xcXFxuICAgICAgICAgICAgYysrO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHNldEl0ZW0oXFxcXFxcXCJydWxlc1xcXFxcXFwiLCBydWxlc1RleHQpO1xcXFxuICAgIHJldHVybiBjO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiByZW1vdmVSdWxlKG5hbWUpIHtcXFxcbiAgICBsZXQgbmV3VCA9IHJ1bGVzVGV4dC5zcGxpdChcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFwiKVxcXFxuICAgICAgICAuZmlsdGVyKGl0ID0+IGl0LmluZGV4T2YobmFtZSArIFxcXFxcXFwiQFxcXFxcXFwiKSA8IDApXFxcXG4gICAgICAgIC5qb2luKFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIpO1xcXFxuICAgIHNldEl0ZW0oXFxcXFxcXCJydWxlc1xcXFxcXFwiLCBuZXdUKTtcXFxcbn1cXFxcblxcXFxuJC5leHBvcnRzID0ge1xcXFxuICAgIGxvYWQ6IGxvYWQsXFxcXG4gICAgYWRkUnVsZTogYWRkUnVsZSxcXFxcbiAgICByZW1vdmVSdWxlOiByZW1vdmVSdWxlLFxcXFxuICAgIGFkZEFsbDogYWRkQWxsXFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pCc57Si6Kej5p6QXFxcIixcXFwicGF0aFxcXCI6XFxcInNwXFxcIixcXFwicnVsZVxcXCI6XFxcImZ1bmN0aW9uIHNlYXJjaCh1cmwsIGtleSwgcnVsZSkge1xcXFxuICAgIGxldCBkID0gW107XFxcXG4gICAgbGV0IGh0bWwgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgIGlmICh1cmwuaW5jbHVkZXMoXFxcXFxcXCIqKlxcXFxcXFwiKSkge1xcXFxuICAgICAgICAvL2dldOivt+axglxcXFxuICAgICAgICBsZXQgb2xkID0gdXJsO1xcXFxuICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShcXFxcXFxcIioqXFxcXFxcXCIsIGtleSk7XFxcXG4gICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCk7XFxcXG4gICAgICAgIC8v6Ieq5Yqo6L+H6aqM6K+B56CB5ZKM6aKR57mB6K6/6Zeu6ZmQ5Yi2XFxcXG4gICAgICAgIGxldCB7XFxcXG4gICAgICAgICAgICBjaGVjaywgdGVzdFxcXFxuICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3l6bVxcXFxcXFwiKTtcXFxcbiAgICAgICAgaWYgKGNoZWNrKHVybCwgaHRtbCwgZCkpIHtcXFxcbiAgICAgICAgICAgIGxvZyhcXFxcXFxcIumHjeivleS6hlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCwge1xcXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IHVybFxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pOyAgICAgICAgICAgXFxcXG4gICAgICAgIH0gICAgICAgICBcXFxcbiAgICAgICAgdGVzdCh1cmwsIGh0bWwsIGQsIG9sZCwga2V5LCBydWxlKTtcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICAvL+iHquWKqOivhuWIq3Bvc3Tor7fmsYJcXFxcbiAgICAgICAgaHRtbCA9IHJlcXVlc3QodXJsKTtcXFxcbiAgICAgICAgbGV0IGZvcm0gPSBwZGZoKGh0bWwsIFxcXFxcXFwiYm9keSYmZm9ybSYmSHRtbFxcXFxcXFwiKTtcXFxcbiAgICAgICAgbGV0IGFjdGlvbiA9IHBkKGh0bWwsIFxcXFxcXFwiZm9ybSYmYWN0aW9uXFxcXFxcXCIsIHVybCk7XFxcXG4gICAgICAgIGxldCBpbnB1dHMgPSBwZGZhKGh0bWwsIFxcXFxcXFwiYm9keSYmZm9ybSYmaW5wdXRcXFxcXFxcIik7XFxcXG4gICAgICAgIGxldCBib2R5ID0ge307XFxcXG4gICAgICAgIGZvciAobGV0IGl0IG9mIGlucHV0cykge1xcXFxuICAgICAgICAgICAgbGV0IG5hbWUgPSBwZGZoKGl0LCBcXFxcXFxcImlucHV0JiZuYW1lXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcGRmaChpdCwgXFxcXFxcXCJpbnB1dCYmdmFsdWVcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgYm9keVtuYW1lXSA9IHZhbHVlIHx8IGtleTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBodG1sID0gcG9zdChhY3Rpb24sIHtcXFxcbiAgICAgICAgICAgIGJvZHk6IGJvZHlcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgbGV0IGFsaXN0ID0gcGRmYShodG1sLCBcXFxcXFxcImJvZHkmJmFcXFxcXFxcIik7XFxcXG4gICAgbGV0IGFyciA9IGFsaXN0Lm1hcChpdCA9PiB7XFxcXG4gICAgICAgIGxldCB0ID0gcGRmaChpdCwgXFxcXFxcXCJhJiZUZXh0XFxcXFxcXCIpO1xcXFxuICAgICAgICBsZXQgdDIgPSBwZGZoKGl0LCBcXFxcXFxcImEmJnRpdGxlXFxcXFxcXCIpO1xcXFxuICAgICAgICByZXR1cm4ge1xcXFxuICAgICAgICAgICAgLy9odG1sOiBpdCxcXFxcbiAgICAgICAgICAgIHRleHQ6IHQyICYmIHQyLmluY2x1ZGVzKGtleSkgPyB0MiA6IHQsXFxcXG4gICAgICAgICAgICBocmVmOiBwZChpdCwgXFxcXFxcXCJhJiZocmVmXFxcXFxcXCIsIHVybClcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgZnVuY3Rpb24gaXNSZXN1bHQoaXQpIHtcXFxcbiAgICAgICAgaXQgPSBpdC50ZXh0IHx8IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIGlmIChpdCA9PSBcXFxcXFxcIlxcXFxcXFwiIHx8IGl0Lm1hdGNoKC/mkJzntKJ857uT5p6cLykpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBpdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGtleSk7XFxcXG4gICAgfVxcXFxuICAgIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xcXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgIGxldCBpdCA9IGFycltpXTtcXFxcbiAgICAgICAgbGV0IHQgPSBpdC50ZXh0O1xcXFxuICAgICAgICBpZiAoIWl0LmhyZWYgfHwgaXQuaHJlZiA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAoaXNSZXN1bHQoaXQpKSB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0LFxcXFxuICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvcD91PVxcXFxcXFwiICsgYmFzZTY0RW5jb2RlKGl0LmhyZWYpLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+XFxcXFxcXCIgKyBydWxlICsgXFxcXFxcXCI8L2ZvbnQ+XFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiBkO1xcXFxufVxcXFxuJC5leHBvcnRzID0gc2VhcmNoO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuWinuWIoFxcXCIsXFxcInBhdGhcXFwiOlxcXCJtYW5hZ2VcXFwiLFxcXCJydWxlXFxcIjpcXFwiJC5leHBvcnRzID0gZnVuY3Rpb24oZCwgbmFtZXMpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCJBSeaKgOacr1xcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiY29uZmlybTovL+WfuuS6jkFJ6K+G54mH6Ieq5Yqo5YiG5p6Q5rqQ56CB5oqA5pyv77yM5Luj56CB5a6M5YWo5byA5rqQ77yM5pWw5o2u5p2l5rqQ5LqO5Y6f572R56uZ77yM6L2v5Lu25ZKM6KeE5YiZ5LiN5o+Q5L6b5Lu75L2V5YaF5a65LmpzOicnXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImZsZXhfYnV0dG9uXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCIgKyBcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKHJyKSA9PiB7XFxcXG4gICAgICAgICAgICBkZWxldGVJdGVtQnlDbHMoXFxcXFxcXCJhaWFkZFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIGFkZEl0ZW1BZnRlcihyciArIFxcXFxcXFwiYWlzZGVsXFxcXFxcXCIsIFt7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIuivt+i+k+WFpee9keermeWQjeensFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFxcXFxcInB1dE15VmFyKCduYW1lJywgaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IFxcXFxcXFwiYWlhZGRcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIuivt+i+k+WFpee9keermeaQnOe0ouWcsOWdgFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFxcXFxcInB1dE15VmFyKCdzdXJsJywgaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IFxcXFxcXFwiYWlhZGRcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuaPkOS6pOS/neWtmFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdXJsID0gZ2V0TXlWYXIoXFxcXFxcXCJzdXJsXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBnZXRNeVZhcihcXFxcXFxcIm5hbWVcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VybCA9PSBcXFxcXFxcIlxcXFxcXFwiIHx8IG5hbWUgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6K+36L6T5YWl5a6M5pW05YaF5a65XFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByID0gZGVjb2RlVVJJQ29tcG9uZW50KHN1cmwpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgciA9IHIucmVwbGFjZShuZXcgUmVnRXhwKFxcXFxcXFwiW1xcXFxcXFxcdTRlMDAtXFxcXFxcXFx1OWZhNV0rXFxcXFxcXCIsIFxcXFxcXFwiZ1xcXFxcXFwiKSwgXFxcXFxcXCIqKlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkUnVsZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkUnVsZShuYW1lLCByKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3suS/neWtmFxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogXFxcXFxcXCJhaWFkZFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBdKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICB9LCBNWV9SVUxFLnRpdGxlKSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiZmxleF9idXR0b25cXFxcXFxcIixcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCIgLSBcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcInNlbGVjdDovL1xcXFxcXFwiICsgSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgb3B0aW9uczogbmFtZXMsXFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLor7fpgInmi6nopoHliKDpmaTnmoTnq5nngrlcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBsZXQge1xcXFxuICAgICAgICAgICAgICAgICAgICByZW1vdmVSdWxlXFxcXG4gICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgIHJlbW92ZVJ1bGUoaW5wdXQpO1xcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly9PS1xcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImZsZXhfYnV0dG9uXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLihpfvuI9cXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgY29uZmlybSh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5rip6aao5o+Q56S6XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgY29udGVudDogXFxcXFxcXCLnoa7lrprlr7zlh7rmiYDmnInmlbDmja7lkJfvvJ/vvIjlr7zlh7rlkI7lj6/ku6Xngrnlh7vml4HovrnnmoTlr7zlhaXmjInpkq7mibnph4/lr7zlhaXvvIlcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRcXFxcbiAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGxvYWQoLTEpO1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGRhdGEubWFwKGl0ID0+IGl0Lm5hbWUgKyBcXFxcXFxcIkBcXFxcXFxcIiArIGl0LnVybCkuam9pbihcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiY29weTovL1xcXFxcXFwiICsgc1xcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiZmxleF9idXR0b25cXFxcXFxcIixcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLihpjvuI9cXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwiXFxcXFxcXCIsIFxcXFxcXFwi6K+36L6T5YWl6KaB5om56YeP5a+85YWl55qE5pWw5o2uXFxcXFxcXCIpLmlucHV0KCgpID0+IHtcXFxcbiAgICAgICAgICAgIGxldCB7XFxcXG4gICAgICAgICAgICAgICAgYWRkQWxsXFxcXG4gICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICBsZXQgY291bnQgPSBhZGRBbGwoaW5wdXQpO1xcXFxuICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8vXFxcXFxcXCIgKyAoY291bnQgPiAwID8gXFxcXFxcXCLmiJDlip/lr7zlhaVcXFxcXFxcIiArIGNvdW50ICsgXFxcXFxcXCLmnaHmlbDmja5cXFxcXFxcIiA6IFxcXFxcXFwi5LiA5p2h5Lmf5rKh5a+85YWlXFxcXFxcXCIpXFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJmbGV4X2J1dHRvblxcXFxcXFwiLFxcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImJsYW5rX2Jsb2NrXFxcXFxcXCIsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBpZDogTVlfUlVMRS50aXRsZSArIFxcXFxcXFwiYWlzZGVsXFxcXFxcXCJcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuXFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aqM6K+B56CBXFxcIixcXFwicGF0aFxcXCI6XFxcInl6bVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJmdW5jdGlvbiBjaGVjayh1cmwsIGh0bWwsIGQpIHtcXFxcbiAgICBsZXQgcmVsb2FkID0gZmFsc2U7XFxcXG4gICAgcmV0dXJuIHJlbG9hZDtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gdGVzdCh1cmwsIGh0bWwsIGQsIG9sZCwga2V5LCBydWxlKSB7XFxcXG4gICAgaWYgKC8156eSfOmikee5gS8udGVzdChodG1sKSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfmkJzntKLpnIDpl7TpmpQ156eS77yM54K55Ye76YeN5paw5Yqg6L29JyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgZGVzYzogXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5cXFxcXFxcIiArIHJ1bGUgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCh1cmwsIG9sZCwga2V5LCBydWxlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHNwID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3NwXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgIGxldCBkID0gc3Aob2xkLCBrZXksIHJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgIGxldCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHdyYXBcXFxcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2YgZCkge1xcXFxuICAgICAgICAgICAgICAgICAgICBpdC50aXRsZSA9IHdyYXAoaXQudGl0bGUsIGtleSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcih1cmwsIGQpO1xcXFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0odXJsKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL09LXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9LCB1cmwsIG9sZCwga2V5LCBydWxlKSxcXFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgaWQ6IHVybFxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbiQuZXhwb3J0cyA9IHtcXFxcbiAgICBjaGVjazogY2hlY2ssXFxcXG4gICAgdGVzdDogdGVzdFxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuW3peWFt1xcXCIsXFxcInBhdGhcXFwiOlxcXCJ0b29sXFxcIixcXFwicnVsZVxcXCI6XFxcImZ1bmN0aW9uIHdyYXAodGV4dCwgcykge1xcXFxuICAgIHJldHVybiB0ZXh0LmluY2x1ZGVzKFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIpID8gdGV4dCA6IFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIgKyB0ZXh0LnJlcGxhY2UobmV3IFJlZ0V4cChcXFxcXFxcIjxlbT58PC9lbT5cXFxcXFxcIiwgXFxcXFxcXCJnXFxcXFxcXCIpLCBcXFxcXFxcIlxcXFxcXFwiKS5yZXBsYWNlKG5ldyBSZWdFeHAocywgXFxcXFxcXCJnXFxcXFxcXCIpLCBcXFxcXFxcIjxzdHJvbmc+PHNwYW4gc3R5bGU9XFxcXFxcXFxcXFxcXFxcImNvbG9yOiAjMUU5MEZGXFxcXFxcXFxcXFxcXFxcIj5cXFxcXFxcIiArIHMgKyBcXFxcXFxcIjwvc3Bhbj48L3N0cm9uZz5cXFxcXFxcIilcXFxcbn1cXFxcbiQuZXhwb3J0cyA9IHtcXFxcbiAgICB3cmFwOiB3cmFwXFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Y2V5pCcXFxcIixcXFwicGF0aFxcXCI6XFxcInNpbmdsZXNcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLmkJzntKJcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICBwdXRNeVZhcihcXFxcXFxcInNvXFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl5YWz6ZSu6K+N77yM5bC96YeP5bCR5a2X5LiN6KaB5aSa5a2XXFxcXFxcXCIsXFxcXG4gICAgcGljX3VybDogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXFxcXFwic29cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIilcXFxcbiAgICB9XFxcXG59KTtcXFxcbmxldCBzID0gZ2V0TXlWYXIoXFxcXFxcXCJzb1xcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbmxldCByID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbmlmIChzICE9IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICBsZXQgcCA9IE1ZX1BBR0U7XFxcXG4gICAgbGV0IHtcXFxcbiAgICAgICAgbG9hZFxcXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXFxcXFwiKTtcXFxcbiAgICBsZXQge1xcXFxuICAgICAgICB3cmFwXFxcXG4gICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS90b29sXFxcXFxcXCIpO1xcXFxuICAgIGxldCBkYXRhID0gbG9hZChwLCBNWV9QQVJBTVMuUlVMRS5uYW1lKTtcXFxcbiAgICBsZXQgYXJyID0gZGF0YVswXS5maW5kKHMsIHApO1xcXFxuICAgIGZvciAobGV0IGl0IG9mIGFycikge1xcXFxuICAgICAgICBpdC50aXRsZSA9IHdyYXAoaXQudGl0bGUsIHMpXFxcXG4gICAgICAgIGQucHVzaChpdCk7XFxcXG4gICAgfVxcXFxufVxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaQnOe0oumhtemdolxcXCIsXFxcInBhdGhcXFwiOlxcXCJzb3VwXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbmlmIChNWV9QQVJBTVMua2V5ICYmIGdldE15VmFyKFxcXFxcXFwidXNlXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICBwdXRNeVZhcihcXFxcXFxcInNvdVxcXFxcXFwiLCBNWV9QQVJBTVMua2V5KTtcXFxcbiAgICBwdXRNeVZhcihcXFxcXFxcInVzZVxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgYWRkTGlzdGVuZXIoXFxcXFxcXCJvbkNsb3NlXFxcXFxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICBjbGVhck15VmFyKFxcXFxcXFwidXNlXFxcXFxcXCIpO1xcXFxuICAgIH0pKTtcXFxcbn1cXFxcbiQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BybycpXFxcIn1dXCIsXCJwcm94eVwiOlwiXCJ9IiwidGl0bGUiOiLwn5Cv6IGa5ZCI8J+QryJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement