WyI8IS0tIEZhY2Vib29rIFBpeGVsIENvZGUgLS0+XG4gICAgPHNjcmlwdD5cbiAgICAgICAgZnVuY3Rpb24gZ2V0RkJDb29raWUoY25hbWUpIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gY25hbWUgKyBcIj1cIjtcbiAgICAgICAgICAgIGxldCBkZWNvZGVkQ29va2llID0gZGVjb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LmNvb2tpZSk7XG4gICAgICAgICAgICBsZXQgY2EgPSBkZWNvZGVkQ29va2llLnNwbGl0KCc7Jyk7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDxjYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBjID0gY2FbaV07XG4gICAgICAgICAgICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09ICcgJykge1xuICAgICAgICAgICAgICAgICAgICBjID0gYy5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjLmluZGV4T2YobmFtZSkgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5zdWJzdHJpbmcobmFtZS5sZW5ndGgsIGMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFVybFBhcmFtZXRlcihwYXJhbSkge1xuICAgICAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICAgICAgICAgIHJldHVybiB1cmxQYXJhbXMuZ2V0KHBhcmFtKTtcbiAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICFmdW5jdGlvbihmLCBiLCBlLCB2LCBuLCB0LCBzKSB7XG4gICAgICAgICAgaWYgKGYuZmJxKSByZXR1cm47XG4gICAgICAgICAgbiA9IGYuZmJxID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBuLmNhbGxNZXRob2QgP1xuICAgICAgICAgICAgICBuLmNhbGxNZXRob2QuYXBwbHkobiwgYXJndW1lbnRzKSA6IG4ucXVldWUucHVzaChhcmd1bWVudHMpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKCFmLl9mYnEpIGYuX2ZicSA9IG47XG4gICAgICAgICAgbi5wdXNoID0gbjtcbiAgICAgICAgICBuLmxvYWRlZCA9ICEwO1xuICAgICAgICAgIG4udmVyc2lvbiA9IFwiMi4wXCI7XG4gICAgICAgICAgbi5xdWV1ZSA9IFtdO1xuICAgICAgICAgIHQgPSBiLmNyZWF0ZUVsZW1lbnQoZSk7XG4gICAgICAgICAgdC5hc3luYyA9ICEwO1xuICAgICAgICAgIHQuc3JjID0gdjtcbiAgICAgICAgICBzID0gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShlKVswXTtcbiAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsIHMpO1xuICAgICAgICB9KHdpbmRvdywgZG9jdW1lbnQsIFwic2NyaXB0XCIsXG4gICAgICAgICAgICBcImh0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZW5fVVMvZmJldmVudHMuanNcIik7XG5cbiAgICAgICAgZmJxKFwiaW5pdFwiLCAnMTI5NTQ4MzU4ODEwNTQ2OCcpO1xuICAgICAgICBsZXQgZXZlbnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgbGV0IGZicCA9IGdldEZCQ29va2llKCdfZmJwJyk7XG4gICAgICAgIGxldCBmYmMgPSBnZXRGQkNvb2tpZSgnX2ZiYycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHhJZCA9IGdldFVybFBhcmFtZXRlcignZm9ybV9zdWJtaXNzaW9uX2lkJykgPz8gZXZlbnRUaW1lO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBldmVudCA9ICdWaWV3Q29udGVudCc7XG4gICAgICAgICAgICBsZXQgZXZlbnRJRCA9IGBwYWdlLiR7ZXZlbnR9LnR4XyR7dHhJZH1gXG4gICAgICAgICAgICBsZXQgcHJvZHVjdCA9ICdEb3dubG9hZCBLb3J0ZSByb25kbGVpZGluZyBMaWdodHJvb20gZS1ib29rJztcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IDE7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgZXZlbnRJRCA9IGBwYWdlLiR7ZXZlbnR9LnR4XyR7dHhJZH1gO1xuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc3QgPSB7XG4gICAgICAgICAgICAgIGRvbWFpbjogJ3Bmby5wZXJmZWN0aWVmZm90b2N1cnN1c29ubGluZS5ubCcsXG4gICAgICAgICAgICAgIGNvbnZlcnNpb25fdHlwZTogJ1ZpZXdDb250ZW50JyxcbiAgICAgICAgICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgICAgICAgICAgZXZlbnRfaWQ6IGV2ZW50SUQsXG4gICAgICAgICAgICAgIGV2ZW50X3RpbWU6IGV2ZW50VGltZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChnZXRVcmxQYXJhbWV0ZXIoXCJwYWdlc2VcIikpIHtcbiAgICAgICAgICAgICAgcG9zdC5lbWFpbCA9IGdldFVybFBhcmFtZXRlcihcInBhZ2VzZVwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGdldFVybFBhcmFtZXRlcihcInBhZ2VzZlwiKSkge1xuICAgICAgICAgICAgICBwb3N0LmZpcnN0X25hbWUgPSBnZXRVcmxQYXJhbWV0ZXIoXCJwYWdlc2ZcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChnZXRVcmxQYXJhbWV0ZXIoXCJwYWdlc2xcIikpIHtcbiAgICAgICAgICAgICAgcG9zdC5sYXN0X25hbWUgPSBnZXRVcmxQYXJhbWV0ZXIoXCJwYWdlc2xcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmYnAgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgcG9zdC5mYnAgPSBmYnA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmYmMgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgcG9zdC5mYmMgPSBmYmM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3Bmby5wZXJmZWN0aWVmZm90b2N1cnN1c29ubGluZS5ubC9jbGllbnQvZmFjZWJvb2stY29udmVyc2lvbi9ldmVudHMnO1xuICAgICAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgeGhyLm9wZW4oXCJQT1NUXCIsIHVybCwgdHJ1ZSk7XG4gICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtdHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIik7XG4gICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIlgtUmVxdWVzdGVkLVdpdGhcIiwgXCJYTUxIdHRwUmVxdWVzdFwiKTtcbiAgICAgICAgICAgIHhoci5zZW5kKEpTT04uc3RyaW5naWZ5KHBvc3QpKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgbGV0IGZiRGF0YSA9IHsgIH07XG5cbiAgICAgICAgICAgIGlmIChmYnAgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICBmYkRhdGEuZmJwID0gZmJwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmJjICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgZmJEYXRhLmZiYyA9IGZiYztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiRGF0YS5jdXJyZW5jeSA9IFwiRVVSXCI7XG4gICAgICAgICAgICAgICAgZmJEYXRhLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZmJEYXRhLmNvbnRlbnRfbmFtZSA9IHByb2R1Y3Q7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGZicShcInRyYWNrXCIsICdWaWV3Q29udGVudCcsIGZiRGF0YSwgeyBldmVudElEOiBldmVudElEIH0pO1xuICAgICAgICB9XG5cbiAgICA8L3NjcmlwdD5cbiAgICA8IS0tIEVuZCBGYWNlYm9vayBQaXhlbCBDb2RlIC0tPlxuIix7Im5hbWUiOiJmYiIsImxvY2F0aW9uIjoiaGVhZCIsImNvbnNlbnRUeXBlIjoic3RhdGlzdGljYWwiLCJjb250ZW50IjoiPCEtLSBGYWNlYm9vayBQaXhlbCBDb2RlIC0tPlxuICAgIDxzY3JpcHQ+XG4gICAgICAgIGZ1bmN0aW9uIGdldEZCQ29va2llKGNuYW1lKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IGNuYW1lICsgXCI9XCI7XG4gICAgICAgICAgICBsZXQgZGVjb2RlZENvb2tpZSA9IGRlY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5jb29raWUpO1xuICAgICAgICAgICAgbGV0IGNhID0gZGVjb2RlZENvb2tpZS5zcGxpdCgnOycpO1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8Y2EubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgYyA9IGNhW2ldO1xuICAgICAgICAgICAgICAgIHdoaWxlIChjLmNoYXJBdCgwKSA9PSAnICcpIHtcbiAgICAgICAgICAgICAgICAgICAgYyA9IGMuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYy5pbmRleE9mKG5hbWUpID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLCBjLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRVcmxQYXJhbWV0ZXIocGFyYW0pIHtcbiAgICAgICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgICAgICAgICByZXR1cm4gdXJsUGFyYW1zLmdldChwYXJhbSk7XG4gICAgICAgIH1cblxuICAgICAgICAgICAgICAgIFxuICAgICAgICAhZnVuY3Rpb24oZiwgYiwgZSwgdiwgbiwgdCwgcykge1xuICAgICAgICAgIGlmIChmLmZicSkgcmV0dXJuO1xuICAgICAgICAgIG4gPSBmLmZicSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbi5jYWxsTWV0aG9kID9cbiAgICAgICAgICAgICAgbi5jYWxsTWV0aG9kLmFwcGx5KG4sIGFyZ3VtZW50cykgOiBuLnF1ZXVlLnB1c2goYXJndW1lbnRzKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICghZi5fZmJxKSBmLl9mYnEgPSBuO1xuICAgICAgICAgIG4ucHVzaCA9IG47XG4gICAgICAgICAgbi5sb2FkZWQgPSAhMDtcbiAgICAgICAgICBuLnZlcnNpb24gPSBcIjIuMFwiO1xuICAgICAgICAgIG4ucXVldWUgPSBbXTtcbiAgICAgICAgICB0ID0gYi5jcmVhdGVFbGVtZW50KGUpO1xuICAgICAgICAgIHQuYXN5bmMgPSAhMDtcbiAgICAgICAgICB0LnNyYyA9IHY7XG4gICAgICAgICAgcyA9IGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSlbMF07XG4gICAgICAgICAgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LCBzKTtcbiAgICAgICAgfSh3aW5kb3csIGRvY3VtZW50LCBcInNjcmlwdFwiLFxuICAgICAgICAgICAgXCJodHRwczovL2Nvbm5lY3QuZmFjZWJvb2submV0L2VuX1VTL2ZiZXZlbnRzLmpzXCIpO1xuXG4gICAgICAgIGZicShcImluaXRcIiwgJzEyOTU0ODM1ODgxMDU0NjgnKTtcbiAgICAgICAgbGV0IGV2ZW50VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGxldCBmYnAgPSBnZXRGQkNvb2tpZSgnX2ZicCcpO1xuICAgICAgICBsZXQgZmJjID0gZ2V0RkJDb29raWUoJ19mYmMnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR4SWQgPSBnZXRVcmxQYXJhbWV0ZXIoJ2Zvcm1fc3VibWlzc2lvbl9pZCcpID8/IGV2ZW50VGltZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSAnVmlld0NvbnRlbnQnO1xuICAgICAgICAgICAgbGV0IGV2ZW50SUQgPSBgcGFnZS4ke2V2ZW50fS50eF8ke3R4SWR9YFxuICAgICAgICAgICAgbGV0IHByb2R1Y3QgPSAnRG93bmxvYWQgS29ydGUgcm9uZGxlaWRpbmcgTGlnaHRyb29tIGUtYm9vayc7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSAxO1xuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgIGV2ZW50SUQgPSBgcGFnZS4ke2V2ZW50fS50eF8ke3R4SWR9YDtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3N0ID0ge1xuICAgICAgICAgICAgICBkb21haW46ICdwZm8ucGVyZmVjdGllZmZvdG9jdXJzdXNvbmxpbmUubmwnLFxuICAgICAgICAgICAgICBjb252ZXJzaW9uX3R5cGU6ICdWaWV3Q29udGVudCcsXG4gICAgICAgICAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgICAgIGV2ZW50X2lkOiBldmVudElELFxuICAgICAgICAgICAgICBldmVudF90aW1lOiBldmVudFRpbWUsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoZ2V0VXJsUGFyYW1ldGVyKFwicGFnZXNlXCIpKSB7XG4gICAgICAgICAgICAgIHBvc3QuZW1haWwgPSBnZXRVcmxQYXJhbWV0ZXIoXCJwYWdlc2VcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChnZXRVcmxQYXJhbWV0ZXIoXCJwYWdlc2ZcIikpIHtcbiAgICAgICAgICAgICAgcG9zdC5maXJzdF9uYW1lID0gZ2V0VXJsUGFyYW1ldGVyKFwicGFnZXNmXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZ2V0VXJsUGFyYW1ldGVyKFwicGFnZXNsXCIpKSB7XG4gICAgICAgICAgICAgIHBvc3QubGFzdF9uYW1lID0gZ2V0VXJsUGFyYW1ldGVyKFwicGFnZXNsXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmJwICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgIHBvc3QuZmJwID0gZmJwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmJjICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgIHBvc3QuZmJjID0gZmJjO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly9wZm8ucGVyZmVjdGllZmZvdG9jdXJzdXNvbmxpbmUubmwvY2xpZW50L2ZhY2Vib29rLWNvbnZlcnNpb24vZXZlbnRzJztcbiAgICAgICAgICAgIGxldCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCB1cmwsIHRydWUpO1xuICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LXR5cGVcIiwgXCJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04XCIpO1xuICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoXCJYLVJlcXVlc3RlZC1XaXRoXCIsIFwiWE1MSHR0cFJlcXVlc3RcIik7XG4gICAgICAgICAgICB4aHIuc2VuZChKU09OLnN0cmluZ2lmeShwb3N0KSk7XG4gICAgICAgIFxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGxldCBmYkRhdGEgPSB7ICB9O1xuXG4gICAgICAgICAgICBpZiAoZmJwICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgZmJEYXRhLmZicCA9IGZicDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZiYyAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgIGZiRGF0YS5mYmMgPSBmYmM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYkRhdGEuY3VycmVuY3kgPSBcIkVVUlwiO1xuICAgICAgICAgICAgICAgIGZiRGF0YS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGZiRGF0YS5jb250ZW50X25hbWUgPSBwcm9kdWN0O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBmYnEoXCJ0cmFja1wiLCAnVmlld0NvbnRlbnQnLCBmYkRhdGEsIHsgZXZlbnRJRDogZXZlbnRJRCB9KTtcbiAgICAgICAgfVxuXG4gICAgPC9zY3JpcHQ+XG4gICAgPCEtLSBFbmQgRmFjZWJvb2sgUGl4ZWwgQ29kZSAtLT5cbiIsImF0dHJpYnV0ZXMiOm51bGx9XQ==
W10=
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,