NFT Auction Smart Contract

Words
1
Reading
1 min
Listen
Play
5y

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"deploy","contractPayload":{"name":"nftauction","params":"","code":"Y29uc3QgVVRJTElUWV9UT0tFTl9TWU1CT0w9IkJFRSIsTUFYX05VTV9VTklUU19PUEVSQUJMRT01MCxNQVhfQklEX0lOQ1JFTUVOVF9QRVJDRU5UPTFlNCxDT05UUkFDVF9OQU1FPSJuZnRhdWN0aW9uIjthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoImF1Y3Rpb25zIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYXVjdGlvbnMiLFsiYXVjdGlvbklkIiwic3ltYm9sIiwibGFzdFZhbGlkTGVhZCIsImV4cGlyeVRpbWVzdGFtcCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibWFya2V0UGFyYW1zIixbInN5bWJvbCJdKTtjb25zdCBwYXJhbXM9e2NyZWF0aW9uRmVlOiIxIixtaW5CaWRJbmNyZW1lbnRQZXJjZW50OjUwMCxjYW5jZWxMb2NrVGltZU1pbGxpczozZTUsZXhwaXJ5VGltZU1pbGxpczo4NjRlNSxtYXhFeHBpcnlUaW1lTWlsbGlzOjI1OTJlNixhdWN0aW9uc1BlckJsb2NrOjF9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT1hcGkub3duZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0e2NyZWF0aW9uRmVlOmNyZWF0aW9uRmVlLG1pbkJpZEluY3JlbWVudFBlcmNlbnQ6bWluQmlkSW5jcmVtZW50UGVyY2VudCxjYW5jZWxMb2NrVGltZU1pbGxpczpjYW5jZWxMb2NrVGltZU1pbGxpcyxleHBpcnlUaW1lTWlsbGlzOmV4cGlyeVRpbWVNaWxsaXMsbWF4RXhwaXJ5VGltZU1pbGxpczptYXhFeHBpcnlUaW1lTWlsbGlzLGF1Y3Rpb25zUGVyQmxvY2s6YXVjdGlvbnNQZXJCbG9ja309cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKGNyZWF0aW9uRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGNyZWF0aW9uRmVlJiZhcGkuQmlnTnVtYmVyKGNyZWF0aW9uRmVlKS5pc0Zpbml0ZSgpJiZhcGkuQmlnTnVtYmVyKGNyZWF0aW9uRmVlKS5ndGUoMCksImludmFsaWQgY3JlYXRpb25GZWUiKSlyZXR1cm47cGFyYW1zLmNyZWF0aW9uRmVlPWNyZWF0aW9uRmVlfWlmKG1pbkJpZEluY3JlbWVudFBlcmNlbnQpe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobWluQmlkSW5jcmVtZW50UGVyY2VudCkmJm1pbkJpZEluY3JlbWVudFBlcmNlbnQ+MCYmbWluQmlkSW5jcmVtZW50UGVyY2VudDw9MWU0LCJpbnZhbGlkIG1pbkJpZEluY3JlbWVudFBlcmNlbnQiKSlyZXR1cm47cGFyYW1zLm1pbkJpZEluY3JlbWVudFBlcmNlbnQ9bWluQmlkSW5jcmVtZW50UGVyY2VudH1pZihjYW5jZWxMb2NrVGltZU1pbGxpcyl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihjYW5jZWxMb2NrVGltZU1pbGxpcykmJmNhbmNlbExvY2tUaW1lTWlsbGlzPjAsImludmFsaWQgY2FuY2VsTG9ja1RpbWVNaWxsaXMiKSlyZXR1cm47cGFyYW1zLmNhbmNlbExvY2tUaW1lTWlsbGlzPWNhbmNlbExvY2tUaW1lTWlsbGlzfWlmKGV4cGlyeVRpbWVNaWxsaXMpe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoZXhwaXJ5VGltZU1pbGxpcykmJmV4cGlyeVRpbWVNaWxsaXM+MCwiaW52YWxpZCBleHBpcnlUaW1lTWlsbGlzIikpcmV0dXJuO3BhcmFtcy5leHBpcnlUaW1lTWlsbGlzPWV4cGlyeVRpbWVNaWxsaXN9aWYobWF4RXhwaXJ5VGltZU1pbGxpcyl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtYXhFeHBpcnlUaW1lTWlsbGlzKSYmbWF4RXhwaXJ5VGltZU1pbGxpcz4wLCJpbnZhbGlkIG1heEV4cGlyeVRpbWVNaWxsaXMiKSlyZXR1cm47cGFyYW1zLm1heEV4cGlyeVRpbWVNaWxsaXM9bWF4RXhwaXJ5VGltZU1pbGxpc31pZihhdWN0aW9uc1BlckJsb2NrKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGF1Y3Rpb25zUGVyQmxvY2spJiZhdWN0aW9uc1BlckJsb2NrPjAsImludmFsaWQgYXVjdGlvbnNQZXJCbG9jayIpKXJldHVybjtwYXJhbXMuYXVjdGlvbnNQZXJCbG9jaz1hdWN0aW9uc1BlckJsb2NrfWF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX19O2NvbnN0IGNvdW50RGVjaW1hbHM9dmFsdWU9PmFwaS5CaWdOdW1iZXIodmFsdWUpLmRwKCksZ2V0VGltZXN0YW1wPXZhbHVlPT57dHJ5e3JldHVybiBuZXcgRGF0ZSh2YWx1ZSsiLjAwWiIpLmdldFRpbWUoKX1jYXRjaChlKXtyZXR1cm4hMX19LHRyYW5zZmVySXNTdWNjZXNzZnVsPShyZXN1bHQsYWN0aW9uLGZyb20sdG8sc3ltYm9sLHF1YW50aXR5KT0+ISh2b2lkIDAhPT1yZXN1bHQuZXJyb3JzfHwhcmVzdWx0LmV2ZW50c3x8dm9pZCAwPT09cmVzdWx0LmV2ZW50cy5maW5kKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiZlbC5ldmVudD09PWFjdGlvbiYmZWwuZGF0YS5mcm9tPT09ZnJvbSYmZWwuZGF0YS50bz09PXRvJiZhcGkuQmlnTnVtYmVyKGVsLmRhdGEucXVhbnRpdHkpLmVxKHF1YW50aXR5KSYmZWwuZGF0YS5zeW1ib2w9PT1zeW1ib2wpKSxzZW5kTmZ0cz1hc3luYyh0byx3cmFwcGVkTmZ0cyk9Pnthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsInRyYW5zZmVyIix7ZnJvbVR5cGU6ImNvbnRyYWN0Iix0bzp0byx0b1R5cGU6InVzZXIiLG5mdHM6W3dyYXBwZWROZnRzXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ITB9KX0scmV0dXJuQmlkcz1hc3luYyhiaWRzLHByaWNlU3ltYm9sKT0+e2ZvcihsZXQgaT0wO2k8Ymlkcy5sZW5ndGg7aSs9MSl7Y29uc3R7YWNjb3VudDphY2NvdW50LGJpZDpiaWR9PWJpZHNbaV07YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQscHJpY2VTeW1ib2wsYmlkLCJ1c2VyIil9fSxjYW5jZWxBdWN0aW9uPWFzeW5jIGF1Y3Rpb249Pntjb25zdHthdWN0aW9uSWQ6YXVjdGlvbklkLHN5bWJvbDpzeW1ib2wsc2VsbGVyOnNlbGxlcixuZnRJZHM6bmZ0SWRzLHByaWNlU3ltYm9sOnByaWNlU3ltYm9sLGJpZHM6Ymlkc309YXVjdGlvbjthd2FpdCByZXR1cm5CaWRzKGJpZHMscHJpY2VTeW1ib2wpO2NvbnN0IHdyYXBwZWROZnRzPXtzeW1ib2w6c3ltYm9sLGlkczpuZnRJZHN9O2F3YWl0IHNlbmROZnRzKHNlbGxlcix3cmFwcGVkTmZ0cyksYXdhaXQgYXBpLmRiLnJlbW92ZSgiYXVjdGlvbnMiLGF1Y3Rpb24pLGFwaS5lbWl0KCJjYW5jZWxBdWN0aW9uIix7YXVjdGlvbklkOmF1Y3Rpb25JZH0pfSxzZXR0bGVBdWN0aW9uPWFzeW5jKGF1Y3Rpb24saW5kZXg9bnVsbCk9Pntjb25zdHthdWN0aW9uSWQ6YXVjdGlvbklkLHN5bWJvbDpzeW1ib2wsc2VsbGVyOnNlbGxlcixuZnRJZHM6bmZ0SWRzLHByaWNlU3ltYm9sOnByaWNlU3ltYm9sLGJpZHM6YmlkcyxjdXJyZW50TGVhZDpjdXJyZW50TGVhZH09YXVjdGlvbix0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCksd3JhcHBlZE5mdHM9e3N5bWJvbDpzeW1ib2wsaWRzOm5mdElkc307aWYoYmlkcy5sZW5ndGg+MCl7Y29uc3QgYmlkSW5kZXg9bnVsbD09PWluZGV4P2N1cnJlbnRMZWFkOmluZGV4LGxlYWRCaWQ9Ymlkc1tiaWRJbmRleF07Ymlkcy5zcGxpY2UoYmlkSW5kZXgsMSksYXdhaXQgcmV0dXJuQmlkcyhiaWRzLHByaWNlU3ltYm9sKTtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwcmljZVN5bWJvbH0pLHByaWNlPWFwaS5CaWdOdW1iZXIobGVhZEJpZC5iaWQpLGZlZVBlcmNlbnQ9YXVjdGlvbi5mZWVQZXJjZW50LzFlNDtsZXQgZmVlPXByaWNlLm11bHRpcGxpZWRCeShmZWVQZXJjZW50KS5kZWNpbWFsUGxhY2VzKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2NvbnN0IHBheW1lbnQ9cHJpY2UubWludXMoZmVlKS5kZWNpbWFsUGxhY2VzKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLG1hcmtldFBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFya2V0UGFyYW1zIix7c3ltYm9sOnN5bWJvbH0pO2xldCBhZ2VudEZlZT1hcGkuQmlnTnVtYmVyKDApO2lmKG1hcmtldFBhcmFtcyYmbWFya2V0UGFyYW1zLm9mZmljaWFsTWFya2V0JiZ2b2lkIDAhPT1tYXJrZXRQYXJhbXMuYWdlbnRGZWVQZXJjZW50JiZtYXJrZXRQYXJhbXMuYWdlbnRGZWVQZXJjZW50PjAmJmZlZS5ndCgwKSl7Y29uc3QgYWdlbnRGZWVQZXJjZW50PW1hcmtldFBhcmFtcy5hZ2VudEZlZVBlcmNlbnQvMWU0O2FnZW50RmVlPWZlZS5tdWx0aXBsaWVkQnkoYWdlbnRGZWVQZXJjZW50KS5kZWNpbWFsUGxhY2VzKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGZlZT1mZWUubWludXMoYWdlbnRGZWUpLmRlY2ltYWxQbGFjZXModG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9Y29uc3Qgb2ZmaWNpYWxNYXJrZXRBY2NvdW50PW1hcmtldFBhcmFtcyYmbWFya2V0UGFyYW1zLm9mZmljaWFsTWFya2V0P21hcmtldFBhcmFtcy5vZmZpY2lhbE1hcmtldDpsZWFkQmlkLm1hcmtldEFjY291bnQ7bGV0IGlzTWFya2V0RmVlUGFpZD0hMTtmZWUuZ3QoMCkmJihpc01hcmtldEZlZVBhaWQ9ITAsZmVlPWZlZS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhvZmZpY2lhbE1hcmtldEFjY291bnQscHJpY2VTeW1ib2wsZmVlLCJ1c2VyIikpO2xldCBpc0FnZW50RmVlUGFpZD0hMTthZ2VudEZlZS5ndCgwKSYmKGlzQWdlbnRGZWVQYWlkPSEwLGFnZW50RmVlPWFnZW50RmVlLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGxlYWRCaWQubWFya2V0QWNjb3VudCxwcmljZVN5bWJvbCxhZ2VudEZlZSwidXNlciIpKSxwYXltZW50Lmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbGVyLHByaWNlU3ltYm9sLHBheW1lbnQsInVzZXIiKSxhd2FpdCBzZW5kTmZ0cyhsZWFkQmlkLmFjY291bnQsd3JhcHBlZE5mdHMpLGF3YWl0IGFwaS5kYi5yZW1vdmUoImF1Y3Rpb25zIixhdWN0aW9uKTtjb25zdCBhY2tQYWNrZXQ9e2F1Y3Rpb25JZDphdWN0aW9uSWQsc3ltYm9sOnN5bWJvbCxzZWxsZXI6c2VsbGVyLG5mdElkczpuZnRJZHMsYmlkZGVyOmxlYWRCaWQuYWNjb3VudCxwcmljZTpsZWFkQmlkLmJpZCxwcmljZVN5bWJvbDpwcmljZVN5bWJvbCx0aW1lc3RhbXA6dGltZXN0YW1wfTtpc01hcmtldEZlZVBhaWQmJihhY2tQYWNrZXQubWFya2V0QWNjb3VudD1vZmZpY2lhbE1hcmtldEFjY291bnQsYWNrUGFja2V0LmZlZT1mZWUpLGlzQWdlbnRGZWVQYWlkJiYoYWNrUGFja2V0LmFnZW50QWNjb3VudD1sZWFkQmlkLm1hcmtldEFjY291bnQsYWNrUGFja2V0LmFnZW50RmVlPWFnZW50RmVlKSxhcGkuZW1pdCgic2V0dGxlQXVjdGlvbiIsYWNrUGFja2V0KX1lbHNlIGF3YWl0IGFwaS5kYi5yZW1vdmUoImF1Y3Rpb25zIixhdWN0aW9uKSxhd2FpdCBzZW5kTmZ0cyhzZWxsZXIsd3JhcHBlZE5mdHMpLGFwaS5lbWl0KCJleHBpcmVBdWN0aW9uIix7YXVjdGlvbklkOmF1Y3Rpb25JZCxzeW1ib2w6c3ltYm9sLHNlbGxlcjpzZWxsZXIsbmZ0SWRzOm5mdElkcyx0aW1lc3RhbXA6dGltZXN0YW1wfSl9O2FjdGlvbnMuY3JlYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLG5mdHM6bmZ0cyxtaW5CaWQ6bWluQmlkLGZpbmFsUHJpY2U6ZmluYWxQcmljZSxwcmljZVN5bWJvbDpwcmljZVN5bWJvbCxmZWVQZXJjZW50OmZlZVBlcmNlbnQsZXhwaXJ5OmV4cGlyeSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgc3ltYm9sIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG5mdCwiTkZUIHN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG5mdHMmJiJvYmplY3QiPT10eXBlb2YgbmZ0cyYmQXJyYXkuaXNBcnJheShuZnRzKSYmbWluQmlkJiYic3RyaW5nIj09dHlwZW9mIG1pbkJpZCYmYXBpLkJpZ051bWJlcihtaW5CaWQpLmlzRmluaXRlKCkmJmZpbmFsUHJpY2UmJiJzdHJpbmciPT10eXBlb2YgZmluYWxQcmljZSYmYXBpLkJpZ051bWJlcihmaW5hbFByaWNlKS5pc0Zpbml0ZSgpJiZwcmljZVN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBwcmljZVN5bWJvbCYmIm51bWJlciI9PXR5cGVvZiBmZWVQZXJjZW50JiZmZWVQZXJjZW50Pj0wJiZmZWVQZXJjZW50PD0xZTQmJk51bWJlci5pc0ludGVnZXIoZmVlUGVyY2VudCkmJmV4cGlyeSYmInN0cmluZyI9PXR5cGVvZiBleHBpcnksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQobmZ0cy5sZW5ndGg8PTUwLCJjYW5ub3QgcHJvY2VzcyBtb3JlIHRoYW4gNTAgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikpe2NvbnN0IG1hcmtldFBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFya2V0UGFyYW1zIix7c3ltYm9sOnN5bWJvbH0pO2lmKG1hcmtldFBhcmFtcyYmdm9pZCAwIT09bWFya2V0UGFyYW1zLm1pbkZlZVBlcmNlbnQmJiFhcGkuYXNzZXJ0KGZlZVBlcmNlbnQ+PW1hcmtldFBhcmFtcy5taW5GZWVQZXJjZW50LCJmZWVQZXJjZW50IG11c3QgYmUgPj0gIittYXJrZXRQYXJhbXMubWluRmVlUGVyY2VudCkpcmV0dXJuO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnByaWNlU3ltYm9sfSkscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCksZXhwaXJ5VGltZXN0YW1wPWdldFRpbWVzdGFtcChleHBpcnkpLG1heEV4cGlyeVRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKHRpbWVzdGFtcCkucGx1cyhwYXJhbXMubWF4RXhwaXJ5VGltZU1pbGxpcykudG9OdW1iZXIoKTtpZihhcGkuYXNzZXJ0KHRva2VuLCJwcmljZVN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobWluQmlkKS5ndCgwKSYmY291bnREZWNpbWFscyhtaW5CaWQpPD10b2tlbi5wcmVjaXNpb24sImludmFsaWQgbWluQmlkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihmaW5hbFByaWNlKS5ndCgwKSYmY291bnREZWNpbWFscyhmaW5hbFByaWNlKTw9dG9rZW4ucHJlY2lzaW9uLCJpbnZhbGlkIGZpbmFsUHJpY2UiKSYmYXBpLmFzc2VydChleHBpcnlUaW1lc3RhbXAmJmV4cGlyeVRpbWVzdGFtcD50aW1lc3RhbXAsImludmFsaWQgZXhwaXJ5IikmJmFwaS5hc3NlcnQoZXhwaXJ5VGltZXN0YW1wPD1tYXhFeHBpcnlUaW1lc3RhbXAsImV4cGlyeSBleGNlZWRzIGxpbWl0Iikpe2NvbnN0IHV0aWxpdHlUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pO2lmKGFwaS5hc3NlcnQodXRpbGl0eVRva2VuJiZ1dGlsaXR5VG9rZW4uYmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW4uYmFsYW5jZSkuZ3RlKHBhcmFtcy5jcmVhdGlvbkZlZSksInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlIikpe2NvbnN0IHdyYXBwZWROZnRzPXtzeW1ib2w6c3ltYm9sLGlkczpuZnRzfSxuZnRUcmFuc2Zlcj1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsInRyYW5zZmVyIix7ZnJvbVR5cGU6InVzZXIiLHRvOiJuZnRhdWN0aW9uIix0b1R5cGU6ImNvbnRyYWN0IixuZnRzOlt3cmFwcGVkTmZ0c10saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKGFwaS5hc3NlcnQobmZ0VHJhbnNmZXIuZXZlbnRzLCJmYWlsZWQgdG8gdHJhc2ZlciBORlRzIHRvIHRoZSBjb250cmFjdCIpKXtjb25zdCBuZnRJZHM9W107Zm9yKGxldCBpPTA7aTxuZnRUcmFuc2Zlci5ldmVudHMubGVuZ3RoO2krPTEpe2NvbnN0IGV2PW5mdFRyYW5zZmVyLmV2ZW50c1tpXTtpZihldi5jb250cmFjdCYmZXYuZXZlbnQmJmV2LmRhdGEmJiJuZnQiPT09ZXYuY29udHJhY3QmJiJ0cmFuc2ZlciI9PT1ldi5ldmVudCYmZXYuZGF0YS5mcm9tPT09YXBpLnNlbmRlciYmInUiPT09ZXYuZGF0YS5mcm9tVHlwZSYmIm5mdGF1Y3Rpb24iPT09ZXYuZGF0YS50byYmImMiPT09ZXYuZGF0YS50b1R5cGUmJmV2LmRhdGEuc3ltYm9sPT09c3ltYm9sKXtjb25zdCBpbnN0YW5jZUlkPWV2LmRhdGEuaWQ7bmZ0SWRzLnB1c2goaW5zdGFuY2VJZCl9fWlmKG5mdElkcy5sZW5ndGg+MCl7Y29uc3QgZmVlVHJhbnNmZXI9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6cGFyYW1zLmNyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZih0cmFuc2ZlcklzU3VjY2Vzc2Z1bChmZWVUcmFuc2ZlciwidHJhbnNmZXIiLGFwaS5zZW5kZXIsIm51bGwiLCJCRUUiLHBhcmFtcy5jcmVhdGlvbkZlZSkpe2NvbnN0IGF1Y3Rpb249e2F1Y3Rpb25JZDphcGkudHJhbnNhY3Rpb25JZCxzeW1ib2w6c3ltYm9sLHNlbGxlcjphcGkuc2VuZGVyLG5mdElkczpuZnRJZHMscHJpY2VTeW1ib2w6cHJpY2VTeW1ib2wsbWluQmlkOm1pbkJpZCxmaW5hbFByaWNlOmZpbmFsUHJpY2UsZmVlUGVyY2VudDpmZWVQZXJjZW50LGV4cGlyeVRpbWVzdGFtcDpleHBpcnlUaW1lc3RhbXAsYmlkczpbXSxjdXJyZW50TGVhZDpudWxsLGxhc3RMZWFkVXBkYXRlOnRpbWVzdGFtcH0scmVzPWF3YWl0IGFwaS5kYi5pbnNlcnQoImF1Y3Rpb25zIixhdWN0aW9uKTthcGkuZW1pdCgiY3JlYXRlIix7YXVjdGlvbklkOnJlcy5hdWN0aW9uSWR9KX1lbHNlIHdyYXBwZWROZnRzLmlkcz1uZnRJZHMsYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJ0cmFuc2ZlciIse2Zyb21UeXBlOiJjb250cmFjdCIsdG86YXBpLnNlbmRlcix0b1R5cGU6InVzZXIiLG5mdHM6W3dyYXBwZWROZnRzXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSl9fX19fX0sYWN0aW9ucy5zZXR0bGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1Y3Rpb25JZDphdWN0aW9uSWQsYWNjb3VudDphY2NvdW50LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoYXVjdGlvbklkJiYic3RyaW5nIj09dHlwZW9mIGF1Y3Rpb25JZCYmKCFhY2NvdW50fHxhY2NvdW50JiYic3RyaW5nIj09dHlwZW9mIGFjY291bnQmJmFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoYWNjb3VudCkpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhdWN0aW9uPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhdWN0aW9ucyIse2F1Y3Rpb25JZDphdWN0aW9uSWR9KTtpZihhcGkuYXNzZXJ0KGF1Y3Rpb24sImF1Y3Rpb24gZG9lcyBub3QgZXhpc3Qgb3IgaGFzIGJlZW4gZXhwaXJlZCIpJiZhcGkuYXNzZXJ0KGF1Y3Rpb24uc2VsbGVyPT09YXBpLnNlbmRlciwieW91IG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBhdWN0aW9uIikmJmFwaS5hc3NlcnQoYXVjdGlvbi5iaWRzLmxlbmd0aD4wLCJ0aGVyZSBhcmUgbm8gYmlkcyBpbiB0aGUgYXVjdGlvbiIpKXtsZXQgaWQ9YXVjdGlvbi5jdXJyZW50TGVhZDtpZihhY2NvdW50JiYoaWQ9YXVjdGlvbi5iaWRzLmZpbmRJbmRleChlbD0+ZWwuYWNjb3VudD09PWFjY291bnQpLCFhcGkuYXNzZXJ0KGF1Y3Rpb24uYmlkc1tpZF0sIm5vIGJpZCBmcm9tIGFjY291bnQgZm91bmQgaW4gdGhlIGF1Y3Rpb24iKSkpcmV0dXJuO2F3YWl0IHNldHRsZUF1Y3Rpb24oYXVjdGlvbixpZCl9fX0sYWN0aW9ucy5jYW5jZWw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1Y3Rpb25JZDphdWN0aW9uSWQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChhdWN0aW9uSWQmJiJzdHJpbmciPT10eXBlb2YgYXVjdGlvbklkLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhdWN0aW9uPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhdWN0aW9ucyIse2F1Y3Rpb25JZDphdWN0aW9uSWR9KTthcGkuYXNzZXJ0KGF1Y3Rpb24sImF1Y3Rpb24gZG9lcyBub3QgZXhpc3Qgb3IgaGFzIGJlZW4gZXhwaXJlZCIpJiZhcGkuYXNzZXJ0KGF1Y3Rpb24uc2VsbGVyPT09YXBpLnNlbmRlciwieW91IG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBhdWN0aW9uIikmJmF3YWl0IGNhbmNlbEF1Y3Rpb24oYXVjdGlvbil9fSxhY3Rpb25zLmJpZD1hc3luYyBwYXlsb2FkPT57Y29uc3R7YXVjdGlvbklkOmF1Y3Rpb25JZCxiaWQ6YmlkLG1hcmtldEFjY291bnQ6bWFya2V0QWNjb3VudCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGF1Y3Rpb25JZCYmInN0cmluZyI9PXR5cGVvZiBhdWN0aW9uSWQmJmJpZCYmInN0cmluZyI9PXR5cGVvZiBiaWQmJmFwaS5CaWdOdW1iZXIoYmlkKS5pc0Zpbml0ZSgpJiZtYXJrZXRBY2NvdW50JiYic3RyaW5nIj09dHlwZW9mIG1hcmtldEFjY291bnQsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGF1Y3Rpb249YXdhaXQgYXBpLmRiLmZpbmRPbmUoImF1Y3Rpb25zIix7YXVjdGlvbklkOmF1Y3Rpb25JZH0pO2lmKGFwaS5hc3NlcnQoYXVjdGlvbiwiYXVjdGlvbiBkb2VzIG5vdCBleGlzdCBvciBoYXMgYmVlbiBleHBpcmVkIikpe2NvbnN0e3NlbGxlcjpzZWxsZXIscHJpY2VTeW1ib2w6cHJpY2VTeW1ib2wsbWluQmlkOm1pbkJpZCxmaW5hbFByaWNlOmZpbmFsUHJpY2UsY3VycmVudExlYWQ6Y3VycmVudExlYWQsZXhwaXJ5VGltZXN0YW1wOmV4cGlyeVRpbWVzdGFtcH09YXVjdGlvbix0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwcmljZVN5bWJvbH0pLHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtpZihhcGkuYXNzZXJ0KGFwaS5zZW5kZXIhPT1zZWxsZXIsImF1Y3Rpb24gc2VsbGVyIGNhbiBub3QgYmlkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiaWQpLmd0KDApJiZjb3VudERlY2ltYWxzKGJpZCk8PXRva2VuLnByZWNpc2lvbiwiaW52YWxpZCBiaWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJpZCkuZ3RlKG1pbkJpZCksImJpZCBjYW4gbm90IGJlIGxlc3MgdGhhbiAiK21pbkJpZCkmJmFwaS5hc3NlcnQoZXhwaXJ5VGltZXN0YW1wPj10aW1lc3RhbXAsImF1Y3Rpb24gaGFzIGJlZW4gZXhwaXJlZCIpJiZhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUobWFya2V0QWNjb3VudCksImludmFsaWQgbWFya2V0QWNjb3VudCIpKXtsZXQgbmJUb2tlbnNUb0xvY2s9YXBpLkJpZ051bWJlcihiaWQpLmd0KGZpbmFsUHJpY2UpP2ZpbmFsUHJpY2U6YmlkO2NvbnN0IHByZXZpb3VzQmlkSW5kZXg9YXVjdGlvbi5iaWRzLmZpbmRJbmRleChlbD0+ZWwuYWNjb3VudD09PWFwaS5zZW5kZXIpLHByZXZpb3VzQmlkPWF1Y3Rpb24uYmlkc1twcmV2aW91c0JpZEluZGV4XSxuZXdCaWQ9e2FjY291bnQ6YXBpLnNlbmRlcixiaWQ6bmJUb2tlbnNUb0xvY2ssbWFya2V0QWNjb3VudDptYXJrZXRBY2NvdW50LHRpbWVzdGFtcDp0aW1lc3RhbXB9O2lmKHByZXZpb3VzQmlkKXtpZighYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG5iVG9rZW5zVG9Mb2NrKS5ndChwcmV2aW91c0JpZC5iaWQpLCJiaWQgbXVzdCBiZSBncmVhdGVyIHRoYW4geW91ciBwcmV2aW91cyBiaWQiKSlyZXR1cm47YXVjdGlvbi5iaWRzW3ByZXZpb3VzQmlkSW5kZXhdPW5ld0JpZCxuYlRva2Vuc1RvTG9jaz1hcGkuQmlnTnVtYmVyKG5iVG9rZW5zVG9Mb2NrKS5taW51cyhwcmV2aW91c0JpZC5iaWQpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKX1lbHNlIGF1Y3Rpb24uYmlkcy5wdXNoKG5ld0JpZCk7Y29uc3QgcHJpY2VUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpwcmljZVN5bWJvbH0pO2lmKGFwaS5hc3NlcnQocHJpY2VUb2tlbiYmcHJpY2VUb2tlbi5iYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHByaWNlVG9rZW4uYmFsYW5jZSkuZ3RlKG5iVG9rZW5zVG9Mb2NrKSwiaW5zdWZmaWNpZW50IGJhbGFuY2UgZm9yIHRoaXMgYmlkIikpe2NvbnN0IHRva2VuVHJhbnNmZXI9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHt0bzoibmZ0YXVjdGlvbiIsc3ltYm9sOnByaWNlU3ltYm9sLHF1YW50aXR5Om5iVG9rZW5zVG9Mb2NrfSk7aWYodHJhbnNmZXJJc1N1Y2Nlc3NmdWwodG9rZW5UcmFuc2ZlciwidHJhbnNmZXJUb0NvbnRyYWN0IixhcGkuc2VuZGVyLCJuZnRhdWN0aW9uIixwcmljZVN5bWJvbCxuYlRva2Vuc1RvTG9jaykpe2NvbnN0IG5ld0JpZEluZGV4PWF1Y3Rpb24uYmlkcy5maW5kSW5kZXgoZWw9PmVsLmFjY291bnQ9PT1hcGkuc2VuZGVyKTtpZihhcGkuQmlnTnVtYmVyKG5ld0JpZC5iaWQpLmd0ZShmaW5hbFByaWNlKSlyZXR1cm4gYXVjdGlvbi5jdXJyZW50TGVhZD1uZXdCaWRJbmRleCx2b2lkIGF3YWl0IHNldHRsZUF1Y3Rpb24oYXVjdGlvbik7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihudWxsIT09Y3VycmVudExlYWQpe2NvbnN0IGxlYWRCaWQ9YXVjdGlvbi5iaWRzW2N1cnJlbnRMZWFkXSxtaW5CaWRJbmNyZW1lbnRQY3Q9cGFyYW1zLm1pbkJpZEluY3JlbWVudFBlcmNlbnQvMWU0LG1pbkJpZEluY3JlbWVudD1hcGkuQmlnTnVtYmVyKGxlYWRCaWQuYmlkKS5tdWx0aXBsaWVkQnkobWluQmlkSW5jcmVtZW50UGN0KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7YXBpLkJpZ051bWJlcihuZXdCaWQuYmlkKS5taW51cyhsZWFkQmlkLmJpZCkuZ3RlKG1pbkJpZEluY3JlbWVudCkmJihhdWN0aW9uLmN1cnJlbnRMZWFkPW5ld0JpZEluZGV4LGF1Y3Rpb24ubGFzdExlYWRVcGRhdGU9dGltZXN0YW1wKX1lbHNlIGF1Y3Rpb24uY3VycmVudExlYWQ9bmV3QmlkSW5kZXgsYXVjdGlvbi5sYXN0TGVhZFVwZGF0ZT10aW1lc3RhbXA7aWYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYXVjdGlvbnMiLGF1Y3Rpb24pLHByZXZpb3VzQmlkKXtjb25zdCBhY2tQYWNrZXQ9e2F1Y3Rpb25JZDphdWN0aW9uSWQsYWNjb3VudDpuZXdCaWQuYWNjb3VudCxvbGRCaWQ6cHJldmlvdXNCaWQuYmlkLGJpZDpuZXdCaWQuYmlkLG1hcmtldEFjY291bnQ6bmV3QmlkLm1hcmtldEFjY291bnQsb2xkVGltZXN0YW1wOnByZXZpb3VzQmlkLnRpbWVzdGFtcCx0aW1lc3RhbXA6bmV3QmlkLnRpbWVzdGFtcH07cHJldmlvdXNCaWQubWFya2V0QWNjb3VudCE9PW1hcmtldEFjY291bnQmJihhY2tQYWNrZXQub2xkTWFya2V0QWNjb3VudD1wcmV2aW91c0JpZC5tYXJrZXRBY2NvdW50KSxhcGkuZW1pdCgidXBkYXRlQmlkIixhY2tQYWNrZXQpfWVsc2UgYXBpLmVtaXQoImJpZCIse2F1Y3Rpb25JZDphdWN0aW9uSWQsLi4ubmV3QmlkfSl9fX19fX0sYWN0aW9ucy5jYW5jZWxCaWQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1Y3Rpb25JZDphdWN0aW9uSWQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChhdWN0aW9uSWQmJiJzdHJpbmciPT10eXBlb2YgYXVjdGlvbklkLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBhdWN0aW9uPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhdWN0aW9ucyIse2F1Y3Rpb25JZDphdWN0aW9uSWR9KTtpZihhcGkuYXNzZXJ0KGF1Y3Rpb24sImF1Y3Rpb24gZG9lcyBub3QgZXhpc3Qgb3IgaGFzIGJlZW4gZXhwaXJlZCIpKXtjb25zdHtwcmljZVN5bWJvbDpwcmljZVN5bWJvbCxjdXJyZW50TGVhZDpjdXJyZW50TGVhZCxleHBpcnlUaW1lc3RhbXA6ZXhwaXJ5VGltZXN0YW1wLGxhc3RMZWFkVXBkYXRlOmxhc3RMZWFkVXBkYXRlfT1hdWN0aW9uLGJpZEluZGV4PWF1Y3Rpb24uYmlkcy5maW5kSW5kZXgoZWw9PmVsLmFjY291bnQ9PT1hcGkuc2VuZGVyKSxiaWQ9YXVjdGlvbi5iaWRzW2JpZEluZGV4XSx0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCk7aWYoYXBpLmFzc2VydChiaWQsInlvdSBkbyBub3QgaGF2ZSBhIGJpZCBpbiB0aGlzIGF1Y3Rpb24iKSYmYXBpLmFzc2VydChleHBpcnlUaW1lc3RhbXA+PXRpbWVzdGFtcCwiYXVjdGlvbiBoYXMgYmVlbiBleHBpcmVkIikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksdGltZVJlbWFpbmluZz1hcGkuQmlnTnVtYmVyKGxhc3RMZWFkVXBkYXRlKS5wbHVzKHBhcmFtcy5leHBpcnlUaW1lTWlsbGlzKS5taW51cyh0aW1lc3RhbXApLHRpbWVSZW1haW5pbmdFeHBpcmU9YXBpLkJpZ051bWJlcihleHBpcnlUaW1lc3RhbXApLm1pbnVzKHRpbWVzdGFtcCk7aWYoYXBpLmFzc2VydCh0aW1lUmVtYWluaW5nLmd0KHBhcmFtcy5jYW5jZWxMb2NrVGltZU1pbGxpcykmJnRpbWVSZW1haW5pbmdFeHBpcmUuZ3QocGFyYW1zLmNhbmNlbExvY2tUaW1lTWlsbGlzKSwiY2FuIG5vdCBjYW5jZWwgYmlkIHdoZW4gYXVjdGlvbiBpcyBhYm91dCB0byBzZXR0bGUiKSl7aWYoYXVjdGlvbi5iaWRzLnNwbGljZShiaWRJbmRleCwxKSxjdXJyZW50TGVhZD09PWJpZEluZGV4KXtsZXQgbGFyZ2VzdEJpZD0iMCIsbGFyZ2VzdEJpZEluZGV4PW51bGw7Zm9yKGxldCBpPTA7aTxhdWN0aW9uLmJpZHMubGVuZ3RoO2krPTEpe2NvbnN0e2JpZDpxdWFudGl0eX09YXVjdGlvbi5iaWRzW2ldO2FwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KGxhcmdlc3RCaWQpJiYobGFyZ2VzdEJpZD1xdWFudGl0eSxsYXJnZXN0QmlkSW5kZXg9aSl9YXVjdGlvbi5jdXJyZW50TGVhZD1sYXJnZXN0QmlkSW5kZXh9ZWxzZSBjdXJyZW50TGVhZD5iaWRJbmRleCYmKGF1Y3Rpb24uY3VycmVudExlYWQtPTEpO2F3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhcGkuc2VuZGVyLHByaWNlU3ltYm9sLGJpZC5iaWQsInVzZXIiKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJhdWN0aW9ucyIsYXVjdGlvbiksYXBpLmVtaXQoImNhbmNlbEJpZCIse2F1Y3Rpb25JZDphdWN0aW9uSWQsLi4uYmlkfSl9fX19fSxhY3Rpb25zLnVwZGF0ZUF1Y3Rpb25zPWFzeW5jKCk9PntpZighYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXJldHVybjtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSxsYXN0VmFsaWRMZWFkPXRpbWVzdGFtcC1wYXJhbXMuZXhwaXJ5VGltZU1pbGxpcyxhdWN0aW9uc1RvU2V0dGxlPWF3YWl0IGFwaS5kYi5maW5kKCJhdWN0aW9ucyIseyRvcjpbe2xhc3RMZWFkVXBkYXRlOnskbHRlOmxhc3RWYWxpZExlYWR9fSx7ZXhwaXJ5VGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19XX0scGFyYW1zLmF1Y3Rpb25zUGVyQmxvY2ssMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxhdWN0aW9uc1RvU2V0dGxlLmxlbmd0aDtpKz0xKXtjb25zdCBhdWN0aW9uPWF1Y3Rpb25zVG9TZXR0bGVbaV07YXdhaXQgc2V0dGxlQXVjdGlvbihhdWN0aW9uKX19LGFjdGlvbnMuc2V0TWFya2V0UGFyYW1zPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLG9mZmljaWFsTWFya2V0Om9mZmljaWFsTWFya2V0LGFnZW50RmVlUGVyY2VudDphZ2VudEZlZVBlcmNlbnQsbWluRmVlUGVyY2VudDptaW5GZWVQZXJjZW50LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCwiaW52YWxpZCBzeW1ib2wiKSlyZXR1cm4hMTtpZih2b2lkIDA9PT1vZmZpY2lhbE1hcmtldCYmdm9pZCAwPT09YWdlbnRGZWVQZXJjZW50JiZ2b2lkIDA9PT1taW5GZWVQZXJjZW50KXJldHVybiExO2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQobmZ0LCJuZnQgc3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoKHZvaWQgMD09PW9mZmljaWFsTWFya2V0fHxvZmZpY2lhbE1hcmtldCYmInN0cmluZyI9PXR5cGVvZiBvZmZpY2lhbE1hcmtldCYmYXBpLmlzVmFsaWRBY2NvdW50TmFtZShvZmZpY2lhbE1hcmtldCkpJiYodm9pZCAwPT09YWdlbnRGZWVQZXJjZW50fHwibnVtYmVyIj09dHlwZW9mIGFnZW50RmVlUGVyY2VudCYmYWdlbnRGZWVQZXJjZW50Pj0wJiZhZ2VudEZlZVBlcmNlbnQ8PTFlNCYmTnVtYmVyLmlzSW50ZWdlcihhZ2VudEZlZVBlcmNlbnQpKSYmKHZvaWQgMD09PW1pbkZlZVBlcmNlbnR8fCJudW1iZXIiPT10eXBlb2YgbWluRmVlUGVyY2VudCYmbWluRmVlUGVyY2VudD49MCYmbWluRmVlUGVyY2VudDw9MWU0JiZOdW1iZXIuaXNJbnRlZ2VyKG1pbkZlZVBlcmNlbnQpKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2xldCBpc0ZpcnN0VGltZVNldD0hMSxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hcmtldFBhcmFtcyIse3N5bWJvbDpzeW1ib2x9KTtyZXR1cm4gcGFyYW1zfHwoaXNGaXJzdFRpbWVTZXQ9ITAscGFyYW1zPXtzeW1ib2w6c3ltYm9sfSksdm9pZCAwIT09b2ZmaWNpYWxNYXJrZXQmJihwYXJhbXMub2ZmaWNpYWxNYXJrZXQ9b2ZmaWNpYWxNYXJrZXQpLHZvaWQgMCE9PWFnZW50RmVlUGVyY2VudCYmKHBhcmFtcy5hZ2VudEZlZVBlcmNlbnQ9YWdlbnRGZWVQZXJjZW50KSx2b2lkIDAhPT1taW5GZWVQZXJjZW50JiYocGFyYW1zLm1pbkZlZVBlcmNlbnQ9bWluRmVlUGVyY2VudCksaXNGaXJzdFRpbWVTZXQ/YXdhaXQgYXBpLmRiLmluc2VydCgibWFya2V0UGFyYW1zIixwYXJhbXMpOmF3YWl0IGFwaS5kYi51cGRhdGUoIm1hcmtldFBhcmFtcyIscGFyYW1zKSwhMH1yZXR1cm4hMX07"}}}