NFT Market Smart Contract

Words
1
Reading
1 min
Listen
Play
5y

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"nftmarket","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0ibmZ0bWFya2V0IixNQVhfTlVNX1VOSVRTX09QRVJBQkxFPTUwO2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PnshMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygicGFyYW1zIikmJmF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIixbInN5bWJvbCJdKX07Y29uc3QgaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQ9KHJlc3VsdCxmcm9tLHRvLHN5bWJvbCxxdWFudGl0eSxldmVudFN0cik9PiEodm9pZCAwIT09cmVzdWx0LmVycm9yc3x8IXJlc3VsdC5ldmVudHN8fHZvaWQgMD09PXJlc3VsdC5ldmVudHMuZmluZChlbD0+InRva2VucyI9PT1lbC5jb250cmFjdCYmZWwuZXZlbnQ9PT1ldmVudFN0ciYmZWwuZGF0YS5mcm9tPT09ZnJvbSYmZWwuZGF0YS50bz09PXRvJiZlbC5kYXRhLnF1YW50aXR5PT09cXVhbnRpdHkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSksY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSxpc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGg9YWNjb3VudD0+YWNjb3VudC5sZW5ndGg+PTMmJmFjY291bnQubGVuZ3RoPD0xNixtYWtlTWFwS2V5PShhY2NvdW50LHR5cGUpPT5hY2NvdW50KyItIit0eXBlLG1ha2VHcm91cGluZ0tleT0oZ3JvdXBpbmcsZ3JvdXBCeSk9PntsZXQga2V5PSIiO3JldHVybiBncm91cEJ5LmZvckVhY2gobmFtZT0+e2tleT1rZXkrIjoiK25hbWUrIjoiK2dyb3VwaW5nW25hbWVdfSksa2V5fSxpc1ZhbGlkSWRBcnJheT1hcnI9Pnt0cnl7aWYoIWFwaS5hc3NlcnQoYXJyJiYib2JqZWN0Ij09dHlwZW9mIGFyciYmQXJyYXkuaXNBcnJheShhcnIpLCJpbnZhbGlkIGlkIGxpc3QiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChhcnIubGVuZ3RoPD01MCwiY2Fubm90IGFjdCBvbiBtb3JlIHRoYW4gNTAgSURzIGF0IG9uY2UiKSlyZXR1cm4hMTtmb3IobGV0IGk9MDtpPGFyci5sZW5ndGg7aSs9MSl7Y29uc3QgaWQ9YXJyW2ldO2lmKCFhcGkuYXNzZXJ0KGlkJiYic3RyaW5nIj09dHlwZW9mIGlkJiYhYXBpLkJpZ051bWJlcihpZCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihpZCkuZ3QoMCksImludmFsaWQgaWQgbGlzdCIpKXJldHVybiExfX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH07YWN0aW9ucy5lbmFibGVNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW5mdCwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtjb25zdCBtYXJrZXRUYWJsZU5hbWU9c3ltYm9sKyJzZWxsQm9vayIsbWV0cmljc1RhYmxlTmFtZT1zeW1ib2wrIm9wZW5JbnRlcmVzdCIsaGlzdG9yeVRhYmxlTmFtZT1zeW1ib2wrInRyYWRlc0hpc3RvcnkiLHRhYmxlRXhpc3RzPWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cyhtYXJrZXRUYWJsZU5hbWUpO2FwaS5hc3NlcnQoITE9PT10YWJsZUV4aXN0cywibWFya2V0IGFscmVhZHkgZW5hYmxlZCIpJiYoYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKG1hcmtldFRhYmxlTmFtZSxbIm93bmVkQnkiLCJhY2NvdW50IiwibmZ0SWQiLCJncm91cGluZyIsInByaWNlU3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZShtZXRyaWNzVGFibGVOYW1lLFsic2lkZSIsInByaWNlU3ltYm9sIiwiZ3JvdXBpbmciXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKGhpc3RvcnlUYWJsZU5hbWUsWyJwcmljZVN5bWJvbCIsInRpbWVzdGFtcCJdKSxhcGkuZW1pdCgiZW5hYmxlTWFya2V0Iix7c3ltYm9sOnN5bWJvbH0pKX19fTtjb25zdCB1cGRhdGVPcGVuSW50ZXJlc3Q9YXN5bmMoc2lkZSxzeW1ib2wscHJpY2VTeW1ib2wsZ3JvdXBzLGdyb3VwQnkpPT57Y29uc3QgbWV0cmljc1RhYmxlTmFtZT1zeW1ib2wrIm9wZW5JbnRlcmVzdCIsZ3JvdXBLZXlzPVtdO2Zvcihjb25zdCBpbmZvIG9mIE9iamVjdC52YWx1ZXMoZ3JvdXBzKSlncm91cEtleXMucHVzaChpbmZvLmdyb3VwaW5nKTtpZihncm91cEtleXMubGVuZ3RoPD0wKXJldHVybjtjb25zdCBvcGVuSW50ZXJlc3Q9YXdhaXQgYXBpLmRiLmZpbmQobWV0cmljc1RhYmxlTmFtZSx7c2lkZTpzaWRlLHByaWNlU3ltYm9sOnByaWNlU3ltYm9sLGdyb3VwaW5nOnskaW46Z3JvdXBLZXlzfX0sNTAsMCxbe2luZGV4OiJzaWRlIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6InByaWNlU3ltYm9sIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Imdyb3VwaW5nIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8b3BlbkludGVyZXN0Lmxlbmd0aDtpKz0xKXtjb25zdCBtZXRyaWM9b3BlbkludGVyZXN0W2ldLGtleT1tYWtlR3JvdXBpbmdLZXkobWV0cmljLmdyb3VwaW5nLGdyb3VwQnkpO2tleSBpbiBncm91cHMmJihncm91cHNba2V5XS5pc0luQ29sbGVjdGlvbj0hMCxtZXRyaWMuY291bnQrPWdyb3Vwc1trZXldLmNvdW50LG1ldHJpYy5jb3VudDwwJiYobWV0cmljLmNvdW50PTApLGF3YWl0IGFwaS5kYi51cGRhdGUobWV0cmljc1RhYmxlTmFtZSxtZXRyaWMpKX1mb3IoY29uc3QgaW5mbyBvZiBPYmplY3QudmFsdWVzKGdyb3VwcykpaWYoIWluZm8uaXNJbkNvbGxlY3Rpb24pe2NvbnN0IGZpbmFsQ291bnQ9aW5mby5jb3VudD4wP2luZm8uY291bnQ6MCxuZXdNZXRyaWM9e3NpZGU6c2lkZSxwcmljZVN5bWJvbDpwcmljZVN5bWJvbCxncm91cGluZzppbmZvLmdyb3VwaW5nLGNvdW50OmZpbmFsQ291bnR9O2F3YWl0IGFwaS5kYi5pbnNlcnQobWV0cmljc1RhYmxlTmFtZSxuZXdNZXRyaWMpfX0sdXBkYXRlVHJhZGVzSGlzdG9yeT1hc3luYyh0eXBlLGFjY291bnQsb3duZWRCeSxjb3VudGVycGFydGllcyxzeW1ib2wscHJpY2VTeW1ib2wscHJpY2UsaXNNYXJrZXRGZWVQYWlkLG1hcmtldEFjY291bnQsZmVlLGlzQWdlbnRGZWVQYWlkLGFnZW50QWNjb3VudCxhZ2VudEZlZSx2b2x1bWUpPT57Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIiksdGltZXN0YW1wU2VjPWJsb2NrRGF0ZS5nZXRUaW1lKCkvMWUzLHRpbWVzdGFtcE1pbnVzMjRocnM9YmxvY2tEYXRlLnNldFVUQ0RhdGUoYmxvY2tEYXRlLmdldFVUQ0RhdGUoKS0xKS8xZTMsaGlzdG9yeVRhYmxlTmFtZT1zeW1ib2wrInRyYWRlc0hpc3RvcnkiO2xldCB0cmFkZXNUb0RlbGV0ZT1hd2FpdCBhcGkuZGIuZmluZChoaXN0b3J5VGFibGVOYW1lLHtwcmljZVN5bWJvbDpwcmljZVN5bWJvbCx0aW1lc3RhbXA6eyRsdDp0aW1lc3RhbXBNaW51czI0aHJzfX0sMWUzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLG5iVHJhZGVzVG9EZWxldGU9dHJhZGVzVG9EZWxldGUubGVuZ3RoO2Zvcig7bmJUcmFkZXNUb0RlbGV0ZT4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iVHJhZGVzVG9EZWxldGU7aW5kZXgrPTEpe2NvbnN0IHRyYWRlPXRyYWRlc1RvRGVsZXRlW2luZGV4XTthd2FpdCBhcGkuZGIucmVtb3ZlKGhpc3RvcnlUYWJsZU5hbWUsdHJhZGUpfXRyYWRlc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKGhpc3RvcnlUYWJsZU5hbWUse3ByaWNlU3ltYm9sOnByaWNlU3ltYm9sLHRpbWVzdGFtcDp7JGx0OnRpbWVzdGFtcE1pbnVzMjRocnN9fSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksbmJUcmFkZXNUb0RlbGV0ZT10cmFkZXNUb0RlbGV0ZS5sZW5ndGh9Y29uc3QgbmV3VHJhZGU9e307bmV3VHJhZGUudHlwZT10eXBlLG5ld1RyYWRlLmFjY291bnQ9YWNjb3VudCxuZXdUcmFkZS5vd25lZEJ5PW93bmVkQnksbmV3VHJhZGUuY291bnRlcnBhcnRpZXM9Y291bnRlcnBhcnRpZXMsbmV3VHJhZGUucHJpY2VTeW1ib2w9cHJpY2VTeW1ib2wsbmV3VHJhZGUucHJpY2U9cHJpY2UsaXNNYXJrZXRGZWVQYWlkJiYobmV3VHJhZGUubWFya2V0QWNjb3VudD1tYXJrZXRBY2NvdW50LG5ld1RyYWRlLmZlZT1mZWUpLGlzQWdlbnRGZWVQYWlkJiYobmV3VHJhZGUuYWdlbnRBY2NvdW50PWFnZW50QWNjb3VudCxuZXdUcmFkZS5hZ2VudEZlZT1hZ2VudEZlZSksbmV3VHJhZGUudGltZXN0YW1wPXRpbWVzdGFtcFNlYyxuZXdUcmFkZS52b2x1bWU9dm9sdW1lLGF3YWl0IGFwaS5kYi5pbnNlcnQoaGlzdG9yeVRhYmxlTmFtZSxuZXdUcmFkZSl9O2FjdGlvbnMuc2V0TWFya2V0UGFyYW1zPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLG9mZmljaWFsTWFya2V0Om9mZmljaWFsTWFya2V0LGFnZW50Q3V0OmFnZW50Q3V0LG1pbkZlZTptaW5GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHBhcmFtcyIpKXJldHVybiExO2lmKHZvaWQgMD09PW9mZmljaWFsTWFya2V0JiZ2b2lkIDA9PT1hZ2VudEN1dCYmdm9pZCAwPT09bWluRmVlKXJldHVybiExO2NvbnN0IG1hcmtldFRhYmxlTmFtZT1zeW1ib2wrInNlbGxCb29rIix0YWJsZUV4aXN0cz1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMobWFya2V0VGFibGVOYW1lKTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0YWJsZUV4aXN0cywibWFya2V0IG5vdCBlbmFibGVkIGZvciBzeW1ib2wiKSYmYXBpLmFzc2VydCgodm9pZCAwPT09b2ZmaWNpYWxNYXJrZXR8fG9mZmljaWFsTWFya2V0JiYic3RyaW5nIj09dHlwZW9mIG9mZmljaWFsTWFya2V0JiZpc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgob2ZmaWNpYWxNYXJrZXQudHJpbSgpLnRvTG93ZXJDYXNlKCkpKSYmKHZvaWQgMD09PWFnZW50Q3V0fHwibnVtYmVyIj09dHlwZW9mIGFnZW50Q3V0JiZhZ2VudEN1dD49MCYmYWdlbnRDdXQ8PTFlNCYmTnVtYmVyLmlzSW50ZWdlcihhZ2VudEN1dCkpJiYodm9pZCAwPT09bWluRmVlfHwibnVtYmVyIj09dHlwZW9mIG1pbkZlZSYmbWluRmVlPj0wJiZtaW5GZWU8PTFlNCYmTnVtYmVyLmlzSW50ZWdlcihtaW5GZWUpKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibmZ0IiwibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtsZXQgc2hvdWxkVXBkYXRlPSExLGlzRmlyc3RUaW1lU2V0PSExO2NvbnN0IHVwZGF0ZT17c3ltYm9sOnN5bWJvbH07bGV0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7c3ltYm9sOnN5bWJvbH0pO3BhcmFtc3x8KGlzRmlyc3RUaW1lU2V0PSEwLHBhcmFtcz17c3ltYm9sOnN5bWJvbH0pO2NvbnN0IGZpbmFsT2ZmaWNpYWxNYXJrZXQ9dm9pZCAwIT09b2ZmaWNpYWxNYXJrZXQ/b2ZmaWNpYWxNYXJrZXQudHJpbSgpLnRvTG93ZXJDYXNlKCk6bnVsbDtpZih2b2lkIDA9PT1vZmZpY2lhbE1hcmtldHx8dm9pZCAwIT09cGFyYW1zLm9mZmljaWFsTWFya2V0JiZmaW5hbE9mZmljaWFsTWFya2V0PT09cGFyYW1zLm9mZmljaWFsTWFya2V0fHwodm9pZCAwIT09cGFyYW1zLm9mZmljaWFsTWFya2V0JiYodXBkYXRlLm9sZE9mZmljaWFsTWFya2V0PXBhcmFtcy5vZmZpY2lhbE1hcmtldCkscGFyYW1zLm9mZmljaWFsTWFya2V0PWZpbmFsT2ZmaWNpYWxNYXJrZXQsdXBkYXRlLm9mZmljaWFsTWFya2V0PWZpbmFsT2ZmaWNpYWxNYXJrZXQsc2hvdWxkVXBkYXRlPSEwKSx2b2lkIDA9PT1hZ2VudEN1dHx8dm9pZCAwIT09cGFyYW1zLmFnZW50Q3V0JiZhZ2VudEN1dD09PXBhcmFtcy5hZ2VudEN1dHx8KHZvaWQgMCE9PXBhcmFtcy5hZ2VudEN1dCYmKHVwZGF0ZS5vbGRBZ2VudEN1dD1wYXJhbXMuYWdlbnRDdXQpLHBhcmFtcy5hZ2VudEN1dD1hZ2VudEN1dCx1cGRhdGUuYWdlbnRDdXQ9YWdlbnRDdXQsc2hvdWxkVXBkYXRlPSEwKSx2b2lkIDA9PT1taW5GZWV8fHZvaWQgMCE9PXBhcmFtcy5taW5GZWUmJm1pbkZlZT09PXBhcmFtcy5taW5GZWV8fCh2b2lkIDAhPT1wYXJhbXMubWluRmVlJiYodXBkYXRlLm9sZE1pbkZlZT1wYXJhbXMubWluRmVlKSxwYXJhbXMubWluRmVlPW1pbkZlZSx1cGRhdGUubWluRmVlPW1pbkZlZSxzaG91bGRVcGRhdGU9ITApLHNob3VsZFVwZGF0ZSlyZXR1cm4gaXNGaXJzdFRpbWVTZXQ/YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpOmF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKSxhcGkuZW1pdCgic2V0TWFya2V0UGFyYW1zIix1cGRhdGUpLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy5jaGFuZ2VQcmljZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuZnRzOm5mdHMscHJpY2U6cHJpY2UsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHBhcmFtcyIpKXJldHVybjtjb25zdCBtYXJrZXRUYWJsZU5hbWU9c3ltYm9sKyJzZWxsQm9vayIsdGFibGVFeGlzdHM9YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKG1hcmtldFRhYmxlTmFtZSk7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmlzVmFsaWRJZEFycmF5KG5mdHMpJiZhcGkuYXNzZXJ0KHByaWNlJiYic3RyaW5nIj09dHlwZW9mIHByaWNlJiYhYXBpLkJpZ051bWJlcihwcmljZSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCh0YWJsZUV4aXN0cywibWFya2V0IG5vdCBlbmFibGVkIGZvciBzeW1ib2wiKSl7Y29uc3Qgb3JkZXJzPWF3YWl0IGFwaS5kYi5maW5kKG1hcmtldFRhYmxlTmFtZSx7bmZ0SWQ6eyRpbjpuZnRzfX0sNTAsMCxbe2luZGV4OiJuZnRJZCIsZGVzY2VuZGluZzohMX1dKTtpZihvcmRlcnMubGVuZ3RoPjApe2xldCBwcmljZVN5bWJvbD0iIjtmb3IobGV0IGk9MDtpPG9yZGVycy5sZW5ndGg7aSs9MSl7Y29uc3Qgb3JkZXI9b3JkZXJzW2ldO2lmKCIiPT09cHJpY2VTeW1ib2wmJih7cHJpY2VTeW1ib2w6cHJpY2VTeW1ib2x9PW9yZGVyKSwhYXBpLmFzc2VydChvcmRlci5hY2NvdW50PT09YXBpLnNlbmRlciYmInUiPT09b3JkZXIub3duZWRCeSwiYWxsIG9yZGVycyBtdXN0IGJlIHlvdXIgb3duIil8fCFhcGkuYXNzZXJ0KHByaWNlU3ltYm9sPT09b3JkZXIucHJpY2VTeW1ib2wsImFsbCBvcmRlcnMgbXVzdCBoYXZlIHRoZSBzYW1lIHByaWNlIHN5bWJvbCIpKXJldHVybn1jb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwcmljZVN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4mJmFwaS5CaWdOdW1iZXIocHJpY2UpLmd0KDApJiZjb3VudERlY2ltYWxzKHByaWNlKTw9dG9rZW4ucHJlY2lzaW9uLCJpbnZhbGlkIHByaWNlIikpe2NvbnN0IGZpbmFsUHJpY2U9YXBpLkJpZ051bWJlcihwcmljZSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2ZvcihsZXQgaT0wO2k8b3JkZXJzLmxlbmd0aDtpKz0xKXtjb25zdCBvcmRlcj1vcmRlcnNbaV0sb2xkUHJpY2U9b3JkZXIucHJpY2U7b3JkZXIucHJpY2U9ZmluYWxQcmljZSxvcmRlci5wcmljZURlYz17JG51bWJlckRlY2ltYWw6ZmluYWxQcmljZX0sYXdhaXQgYXBpLmRiLnVwZGF0ZShtYXJrZXRUYWJsZU5hbWUsb3JkZXIpLGFwaS5lbWl0KCJjaGFuZ2VQcmljZSIse3N5bWJvbDpzeW1ib2wsbmZ0SWQ6b3JkZXIubmZ0SWQsb2xkUHJpY2U6b2xkUHJpY2UsbmV3UHJpY2U6b3JkZXIucHJpY2UscHJpY2VTeW1ib2w6b3JkZXIucHJpY2VTeW1ib2wsb3JkZXJJZDpvcmRlci5faWR9KX19fX19LGFjdGlvbnMuY2FuY2VsPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLG5mdHM6bmZ0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgcGFyYW1zIikpcmV0dXJuO2NvbnN0IG1hcmtldFRhYmxlTmFtZT1zeW1ib2wrInNlbGxCb29rIix0YWJsZUV4aXN0cz1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMobWFya2V0VGFibGVOYW1lKTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmaXNWYWxpZElkQXJyYXkobmZ0cykmJmFwaS5hc3NlcnQodGFibGVFeGlzdHMsIm1hcmtldCBub3QgZW5hYmxlZCBmb3Igc3ltYm9sIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQobmZ0JiZuZnQuZ3JvdXBCeSYmbmZ0Lmdyb3VwQnkubGVuZ3RoPjAsIm1hcmtldCBncm91cGluZyBub3Qgc2V0IikpcmV0dXJuO2NvbnN0IG9yZGVycz1hd2FpdCBhcGkuZGIuZmluZChtYXJrZXRUYWJsZU5hbWUse25mdElkOnskaW46bmZ0c319LDUwLDAsW3tpbmRleDoibmZ0SWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYob3JkZXJzLmxlbmd0aD4wKXtjb25zdCBpZHM9W10saWRNYXA9e307bGV0IHByaWNlU3ltYm9sPSIiO2ZvcihsZXQgaT0wO2k8b3JkZXJzLmxlbmd0aDtpKz0xKXtjb25zdCBvcmRlcj1vcmRlcnNbaV07aWYoIiI9PT1wcmljZVN5bWJvbCYmKHtwcmljZVN5bWJvbDpwcmljZVN5bWJvbH09b3JkZXIpLCFhcGkuYXNzZXJ0KG9yZGVyLmFjY291bnQ9PT1hcGkuc2VuZGVyJiYidSI9PT1vcmRlci5vd25lZEJ5LCJhbGwgb3JkZXJzIG11c3QgYmUgeW91ciBvd24iKXx8IWFwaS5hc3NlcnQocHJpY2VTeW1ib2w9PT1vcmRlci5wcmljZVN5bWJvbCwiYWxsIG9yZGVycyBtdXN0IGhhdmUgdGhlIHNhbWUgcHJpY2Ugc3ltYm9sIikpcmV0dXJuO2lkcy5wdXNoKG9yZGVyLm5mdElkKSxpZE1hcFtvcmRlci5uZnRJZF09b3JkZXJ9Y29uc3QgbmZ0QXJyYXk9W10sd3JhcHBlZE5mdHM9e3N5bWJvbDpzeW1ib2wsaWRzOmlkc307bmZ0QXJyYXkucHVzaCh3cmFwcGVkTmZ0cyk7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwidHJhbnNmZXIiLHtmcm9tVHlwZToiY29udHJhY3QiLHRvOmFwaS5zZW5kZXIsdG9UeXBlOiJ1c2VyIixuZnRzOm5mdEFycmF5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZihyZXMuZXZlbnRzKXtjb25zdCBncm91cGluZ01hcD17fTtmb3IobGV0IGo9MDtqPHJlcy5ldmVudHMubGVuZ3RoO2orPTEpe2NvbnN0IGV2PXJlcy5ldmVudHNbal07aWYoZXYuY29udHJhY3QmJmV2LmV2ZW50JiZldi5kYXRhJiYibmZ0Ij09PWV2LmNvbnRyYWN0JiYidHJhbnNmZXIiPT09ZXYuZXZlbnQmJiJuZnRtYXJrZXQiPT09ZXYuZGF0YS5mcm9tJiYiYyI9PT1ldi5kYXRhLmZyb21UeXBlJiZldi5kYXRhLnRvPT09YXBpLnNlbmRlciYmInUiPT09ZXYuZGF0YS50b1R5cGUmJmV2LmRhdGEuc3ltYm9sPT09c3ltYm9sKXtjb25zdCBpbnN0YW5jZUlkPWV2LmRhdGEuaWQ7aWYoaW5zdGFuY2VJZCBpbiBpZE1hcCl7Y29uc3Qgb3JkZXI9aWRNYXBbaW5zdGFuY2VJZF07YXdhaXQgYXBpLmRiLnJlbW92ZShtYXJrZXRUYWJsZU5hbWUsb3JkZXIpLGFwaS5lbWl0KCJjYW5jZWxPcmRlciIse2FjY291bnQ6b3JkZXIuYWNjb3VudCxvd25lZEJ5Om9yZGVyLm93bmVkQnksc3ltYm9sOnN5bWJvbCxuZnRJZDpvcmRlci5uZnRJZCx0aW1lc3RhbXA6b3JkZXIudGltZXN0YW1wLHByaWNlOm9yZGVyLnByaWNlLHByaWNlU3ltYm9sOm9yZGVyLnByaWNlU3ltYm9sLGZlZTpvcmRlci5mZWUsb3JkZXJJZDpvcmRlci5faWR9KTtjb25zdCBrZXk9bWFrZUdyb3VwaW5nS2V5KG9yZGVyLmdyb3VwaW5nLG5mdC5ncm91cEJ5KSxncm91cEluZm89a2V5IGluIGdyb3VwaW5nTWFwP2dyb3VwaW5nTWFwW2tleV06e2dyb3VwaW5nOm9yZGVyLmdyb3VwaW5nLGlzSW5Db2xsZWN0aW9uOiExLGNvdW50OjB9O2dyb3VwSW5mby5jb3VudC09MSxncm91cGluZ01hcFtrZXldPWdyb3VwSW5mb319fWF3YWl0IHVwZGF0ZU9wZW5JbnRlcmVzdCgic2VsbCIsc3ltYm9sLHByaWNlU3ltYm9sLGdyb3VwaW5nTWFwLG5mdC5ncm91cEJ5KX19fX0sYWN0aW9ucy5idXk9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsbmZ0czpuZnRzLG1hcmtldEFjY291bnQ6bWFya2V0QWNjb3VudCxleHBQcmljZTpleHBQcmljZSxleHBQcmljZVN5bWJvbDpleHBQcmljZVN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJm1hcmtldEFjY291bnQmJiJzdHJpbmciPT10eXBlb2YgbWFya2V0QWNjb3VudCYmKHZvaWQgMD09PWV4cFByaWNlfHxleHBQcmljZSYmInN0cmluZyI9PXR5cGVvZiBleHBQcmljZSYmIWFwaS5CaWdOdW1iZXIoZXhwUHJpY2UpLmlzTmFOKCkpJiYodm9pZCAwPT09ZXhwUHJpY2VTeW1ib2x8fGV4cFByaWNlU3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIGV4cFByaWNlU3ltYm9sKSwiaW52YWxpZCBwYXJhbXMiKSlyZXR1cm47Y29uc3QgbWFya2V0VGFibGVOYW1lPXN5bWJvbCsic2VsbEJvb2siLHRhYmxlRXhpc3RzPWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cyhtYXJrZXRUYWJsZU5hbWUpO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZpc1ZhbGlkSWRBcnJheShuZnRzKSYmYXBpLmFzc2VydCh0YWJsZUV4aXN0cywibWFya2V0IG5vdCBlbmFibGVkIGZvciBzeW1ib2wiKSl7Y29uc3QgZmluYWxNYXJrZXRBY2NvdW50PW1hcmtldEFjY291bnQudHJpbSgpLnRvTG93ZXJDYXNlKCk7aWYoYXBpLmFzc2VydChpc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoZmluYWxNYXJrZXRBY2NvdW50KSwiaW52YWxpZCBtYXJrZXQgYWNjb3VudCIpJiZhcGkuYXNzZXJ0KGZpbmFsTWFya2V0QWNjb3VudCE9PWFwaS5zZW5kZXIsIm1hcmtldCBhY2NvdW50IGNhbm5vdCBiZSBzYW1lIGFzIGJ1eWVyIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQobmZ0JiZuZnQuZ3JvdXBCeSYmbmZ0Lmdyb3VwQnkubGVuZ3RoPjAsIm1hcmtldCBncm91cGluZyBub3Qgc2V0IikpcmV0dXJuO2NvbnN0IG9yZGVycz1hd2FpdCBhcGkuZGIuZmluZChtYXJrZXRUYWJsZU5hbWUse25mdElkOnskaW46bmZ0c319LDUwLDAsW3tpbmRleDoibmZ0SWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYob3JkZXJzLmxlbmd0aD4wKXtsZXQgcHJpY2VTeW1ib2w9IiI7Zm9yKGxldCBpPTA7aTxvcmRlcnMubGVuZ3RoO2krPTEpe2NvbnN0IG9yZGVyPW9yZGVyc1tpXTtpZigiIj09PXByaWNlU3ltYm9sJiYoe3ByaWNlU3ltYm9sOnByaWNlU3ltYm9sfT1vcmRlciksIWFwaS5hc3NlcnQoISgidSI9PT1vcmRlci5vd25lZEJ5JiZvcmRlci5hY2NvdW50PT09YXBpLnNlbmRlciksImNhbm5vdCBmaWxsIHlvdXIgb3duIG9yZGVycyIpfHwhYXBpLmFzc2VydChwcmljZVN5bWJvbD09PW9yZGVyLnByaWNlU3ltYm9sLCJhbGwgb3JkZXJzIG11c3QgaGF2ZSB0aGUgc2FtZSBwcmljZSBzeW1ib2wiKSlyZXR1cm59aWYoIWFwaS5hc3NlcnQodm9pZCAwPT09ZXhwUHJpY2VTeW1ib2x8fGV4cFByaWNlU3ltYm9sPT09cHJpY2VTeW1ib2wsInVuZXhwZWN0ZWQgcHJpY2Ugc3ltYm9sICIrcHJpY2VTeW1ib2wpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwcmljZVN5bWJvbH0pO2lmKCF0b2tlbilyZXR1cm47bGV0IGZlZVRvdGFsPWFwaS5CaWdOdW1iZXIoMCksYWdlbnRGZWVUb3RhbD1hcGkuQmlnTnVtYmVyKDApLHBheW1lbnRUb3RhbD1hcGkuQmlnTnVtYmVyKDApLHNvbGROZnRzPVtdO2NvbnN0IHNlbGxlcnM9W10sc2VsbGVyTWFwPXt9O2ZvcihsZXQgaT0wO2k8b3JkZXJzLmxlbmd0aDtpKz0xKXtjb25zdCBvcmRlcj1vcmRlcnNbaV0sZmluYWxQcmljZT1hcGkuQmlnTnVtYmVyKG9yZGVyLnByaWNlKSxmZWVQZXJjZW50PW9yZGVyLmZlZS8xZTQ7bGV0IGZpbmFsRmVlPWZpbmFsUHJpY2UubXVsdGlwbGllZEJ5KGZlZVBlcmNlbnQpLmRlY2ltYWxQbGFjZXModG9rZW4ucHJlY2lzaW9uKTtmaW5hbEZlZS5ndChmaW5hbFByaWNlKSYmKGZpbmFsRmVlPWZpbmFsUHJpY2UpO2xldCBmaW5hbFBheW1lbnQ9ZmluYWxQcmljZS5taW51cyhmaW5hbEZlZSkuZGVjaW1hbFBsYWNlcyh0b2tlbi5wcmVjaXNpb24pO2ZpbmFsUGF5bWVudC5sdCgwKSYmKGZpbmFsUGF5bWVudD1hcGkuQmlnTnVtYmVyKDApKSxwYXltZW50VG90YWw9cGF5bWVudFRvdGFsLnBsdXMoZmluYWxQYXltZW50KSxmZWVUb3RhbD1mZWVUb3RhbC5wbHVzKGZpbmFsRmVlKTtjb25zdCBrZXk9KGFjY291bnQ9b3JkZXIuYWNjb3VudCx0eXBlPW9yZGVyLm93bmVkQnksYWNjb3VudCsiLSIrdHlwZSksc2VsbGVySW5mbz1rZXkgaW4gc2VsbGVyTWFwP3NlbGxlck1hcFtrZXldOnthY2NvdW50Om9yZGVyLmFjY291bnQsb3duZWRCeTpvcmRlci5vd25lZEJ5LG5mdElkczpbXSxwYXltZW50VG90YWw6YXBpLkJpZ051bWJlcigwKX07c2VsbGVySW5mby5wYXltZW50VG90YWw9c2VsbGVySW5mby5wYXltZW50VG90YWwucGx1cyhmaW5hbFBheW1lbnQpLHNlbGxlckluZm8ubmZ0SWRzLnB1c2gob3JkZXIubmZ0SWQpLHNlbGxlck1hcFtrZXldPXNlbGxlckluZm99Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHtzeW1ib2w6c3ltYm9sfSksb2ZmaWNpYWxNYXJrZXRBY2NvdW50PXBhcmFtcyYmcGFyYW1zLm9mZmljaWFsTWFya2V0P3BhcmFtcy5vZmZpY2lhbE1hcmtldDpmaW5hbE1hcmtldEFjY291bnQ7aWYoIWFwaS5hc3NlcnQob2ZmaWNpYWxNYXJrZXRBY2NvdW50IT09YXBpLnNlbmRlciwib2ZmaWNpYWwgbWFya2V0IGFjY291bnQgY2Fubm90IGJlIHNhbWUgYXMgYnV5ZXIiKSlyZXR1cm47aWYocGFyYW1zJiZwYXJhbXMub2ZmaWNpYWxNYXJrZXQmJnZvaWQgMCE9PXBhcmFtcy5hZ2VudEN1dCYmcGFyYW1zLmFnZW50Q3V0PjAmJmZlZVRvdGFsLmd0KDApKXtjb25zdCBhZ2VudEZlZVBlcmNlbnQ9cGFyYW1zLmFnZW50Q3V0LzFlNDthZ2VudEZlZVRvdGFsPWZlZVRvdGFsLm11bHRpcGxpZWRCeShhZ2VudEZlZVBlcmNlbnQpLmRlY2ltYWxQbGFjZXModG9rZW4ucHJlY2lzaW9uKSxhZ2VudEZlZVRvdGFsLmd0KGZlZVRvdGFsKSYmKGFnZW50RmVlVG90YWw9YXBpLkJpZ051bWJlcihmZWVUb3RhbCkpLGZlZVRvdGFsPWZlZVRvdGFsLm1pbnVzKGFnZW50RmVlVG90YWwpLmRlY2ltYWxQbGFjZXModG9rZW4ucHJlY2lzaW9uKSxmZWVUb3RhbC5sdCgwKSYmKGZlZVRvdGFsPWFwaS5CaWdOdW1iZXIoMCkpfWNvbnN0IHJlcXVpcmVkQmFsYW5jZT1wYXltZW50VG90YWwucGx1cyhmZWVUb3RhbCkucGx1cyhhZ2VudEZlZVRvdGFsKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7aWYoIWFwaS5hc3NlcnQodm9pZCAwPT09ZXhwUHJpY2V8fGFwaS5CaWdOdW1iZXIoZXhwUHJpY2UpLmVxKHJlcXVpcmVkQmFsYW5jZSksYHRvdGFsIHJlcXVpcmVkIHBheW1lbnQgJHtyZXF1aXJlZEJhbGFuY2V9ICR7cHJpY2VTeW1ib2x9IGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIGFtb3VudGApKXJldHVybjtjb25zdCBidXllckJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6cHJpY2VTeW1ib2x9KTtpZighYXBpLmFzc2VydChidXllckJhbGFuY2UmJmFwaS5CaWdOdW1iZXIoYnV5ZXJCYWxhbmNlLmJhbGFuY2UpLmd0ZShyZXF1aXJlZEJhbGFuY2UpLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgZm9yIHBheW1lbnQiKSlyZXR1cm47cGF5bWVudFRvdGFsPXBheW1lbnRUb3RhbC50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7bGV0IGlzTWFya2V0RmVlUGFpZD0hMTtpZihmZWVUb3RhbC5ndCgwKSl7aXNNYXJrZXRGZWVQYWlkPSEwLGZlZVRvdGFsPWZlZVRvdGFsLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKTtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOm9mZmljaWFsTWFya2V0QWNjb3VudCxzeW1ib2w6cHJpY2VTeW1ib2wscXVhbnRpdHk6ZmVlVG90YWwsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKCFhcGkuYXNzZXJ0KGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLG9mZmljaWFsTWFya2V0QWNjb3VudCxwcmljZVN5bWJvbCxmZWVUb3RhbCwidHJhbnNmZXIiKSwidW5hYmxlIHRvIHRyYW5zZmVyIG1hcmtldCBmZWVzIikpcmV0dXJufWxldCBpc0FnZW50RmVlUGFpZD0hMTtpZihhZ2VudEZlZVRvdGFsLmd0KDApKXtpc0FnZW50RmVlUGFpZD0hMCxhZ2VudEZlZVRvdGFsPWFnZW50RmVlVG90YWwudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pO2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86ZmluYWxNYXJrZXRBY2NvdW50LHN5bWJvbDpwcmljZVN5bWJvbCxxdWFudGl0eTphZ2VudEZlZVRvdGFsLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighYXBpLmFzc2VydChpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsYXBpLnNlbmRlcixmaW5hbE1hcmtldEFjY291bnQscHJpY2VTeW1ib2wsYWdlbnRGZWVUb3RhbCwidHJhbnNmZXIiKSwidW5hYmxlIHRvIHRyYW5zZmVyIGFnZW50IGZlZXMiKSlyZXR1cm59Zm9yKGNvbnN0IGluZm8gb2YgT2JqZWN0LnZhbHVlcyhzZWxsZXJNYXApKWlmKGluZm8ucGF5bWVudFRvdGFsLmd0KDApKXtjb25zdCBjb250cmFjdEFjdGlvbj0idSI9PT1pbmZvLm93bmVkQnk/InRyYW5zZmVyIjoidHJhbnNmZXJUb0NvbnRyYWN0IjtpbmZvLnBheW1lbnRUb3RhbD1pbmZvLnBheW1lbnRUb3RhbC50b0ZpeGVkKHRva2VuLnByZWNpc2lvbik7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIixjb250cmFjdEFjdGlvbix7dG86aW5mby5hY2NvdW50LHN5bWJvbDpwcmljZVN5bWJvbCxxdWFudGl0eTppbmZvLnBheW1lbnRUb3RhbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7YXBpLmFzc2VydChpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsYXBpLnNlbmRlcixpbmZvLmFjY291bnQscHJpY2VTeW1ib2wsaW5mby5wYXltZW50VG90YWwsY29udHJhY3RBY3Rpb24pLCJ1bmFibGUgdG8gdHJhbnNmZXIgcGF5bWVudCB0byAiK2luZm8uYWNjb3VudCkmJihzb2xkTmZ0cz1zb2xkTmZ0cy5jb25jYXQoaW5mby5uZnRJZHMpLHNlbGxlcnMucHVzaChpbmZvKSl9ZWxzZSBzb2xkTmZ0cz1zb2xkTmZ0cy5jb25jYXQoaW5mby5uZnRJZHMpLHNlbGxlcnMucHVzaChpbmZvKTtjb25zdCBuZnRBcnJheT1bXSx3cmFwcGVkTmZ0cz17c3ltYm9sOnN5bWJvbCxpZHM6c29sZE5mdHN9O25mdEFycmF5LnB1c2god3JhcHBlZE5mdHMpLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwidHJhbnNmZXIiLHtmcm9tVHlwZToiY29udHJhY3QiLHRvOmFwaS5zZW5kZXIsdG9UeXBlOiJ1c2VyIixuZnRzOm5mdEFycmF5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtjb25zdCBncm91cGluZ01hcD17fSxzb2xkU2V0PW5ldyBTZXQoc29sZE5mdHMpO2ZvcihsZXQgaT0wO2k8b3JkZXJzLmxlbmd0aDtpKz0xKXtjb25zdCBvcmRlcj1vcmRlcnNbaV07aWYoc29sZFNldC5oYXMob3JkZXIubmZ0SWQpKXthd2FpdCBhcGkuZGIucmVtb3ZlKG1hcmtldFRhYmxlTmFtZSxvcmRlcik7Y29uc3Qga2V5PW1ha2VHcm91cGluZ0tleShvcmRlci5ncm91cGluZyxuZnQuZ3JvdXBCeSksZ3JvdXBJbmZvPWtleSBpbiBncm91cGluZ01hcD9ncm91cGluZ01hcFtrZXldOntncm91cGluZzpvcmRlci5ncm91cGluZyxpc0luQ29sbGVjdGlvbjohMSxjb3VudDowfTtncm91cEluZm8uY291bnQtPTEsZ3JvdXBpbmdNYXBba2V5XT1ncm91cEluZm99fWF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoImJ1eSIsYXBpLnNlbmRlciwidSIsc2VsbGVycyxzeW1ib2wscHJpY2VTeW1ib2wscmVxdWlyZWRCYWxhbmNlLGlzTWFya2V0RmVlUGFpZCxvZmZpY2lhbE1hcmtldEFjY291bnQsZmVlVG90YWwsaXNBZ2VudEZlZVBhaWQsZmluYWxNYXJrZXRBY2NvdW50LGFnZW50RmVlVG90YWwsc29sZE5mdHMubGVuZ3RoKTtjb25zdCBhY2tQYWNrZXQ9e3N5bWJvbDpzeW1ib2wscHJpY2VTeW1ib2w6cHJpY2VTeW1ib2wsYWNjb3VudDphcGkuc2VuZGVyLG93bmVkQnk6InUiLHNlbGxlcnM6c2VsbGVycyxwYXltZW50VG90YWw6cGF5bWVudFRvdGFsfTtpc01hcmtldEZlZVBhaWQmJihhY2tQYWNrZXQubWFya2V0QWNjb3VudD1vZmZpY2lhbE1hcmtldEFjY291bnQsYWNrUGFja2V0LmZlZVRvdGFsPWZlZVRvdGFsKSxpc0FnZW50RmVlUGFpZCYmKGFja1BhY2tldC5hZ2VudEFjY291bnQ9ZmluYWxNYXJrZXRBY2NvdW50LGFja1BhY2tldC5hZ2VudEZlZVRvdGFsPWFnZW50RmVlVG90YWwpLGFwaS5lbWl0KCJoaXRTZWxsT3JkZXIiLGFja1BhY2tldCksYXdhaXQgdXBkYXRlT3BlbkludGVyZXN0KCJzZWxsIixzeW1ib2wscHJpY2VTeW1ib2wsZ3JvdXBpbmdNYXAsbmZ0Lmdyb3VwQnkpfX19dmFyIGFjY291bnQsdHlwZX0sYWN0aW9ucy5zZWxsPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLG5mdHM6bmZ0cyxwcmljZTpwcmljZSxwcmljZVN5bWJvbDpwcmljZVN5bWJvbCxmZWU6ZmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCwiaW52YWxpZCBwYXJhbXMiKSlyZXR1cm47Y29uc3QgbWFya2V0VGFibGVOYW1lPXN5bWJvbCsic2VsbEJvb2siLGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIix0YWJsZUV4aXN0cz1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMobWFya2V0VGFibGVOYW1lKTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChuZnRzJiYib2JqZWN0Ij09dHlwZW9mIG5mdHMmJkFycmF5LmlzQXJyYXkobmZ0cykmJnByaWNlU3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHByaWNlU3ltYm9sJiZwcmljZSYmInN0cmluZyI9PXR5cGVvZiBwcmljZSYmIWFwaS5CaWdOdW1iZXIocHJpY2UpLmlzTmFOKCkmJiJudW1iZXIiPT10eXBlb2YgZmVlJiZmZWU+PTAmJmZlZTw9MWU0JiZOdW1iZXIuaXNJbnRlZ2VyKGZlZSksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQobmZ0cy5sZW5ndGg8PTUwLCJjYW5ub3Qgc2VsbCBtb3JlIHRoYW4gNTAgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikmJmFwaS5hc3NlcnQodGFibGVFeGlzdHMsIm1hcmtldCBub3QgZW5hYmxlZCBmb3Igc3ltYm9sIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQobmZ0JiZuZnQuZ3JvdXBCeSYmbmZ0Lmdyb3VwQnkubGVuZ3RoPjAsIm1hcmtldCBncm91cGluZyBub3Qgc2V0IikpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7c3ltYm9sOnN5bWJvbH0pO2lmKHBhcmFtcyYmdm9pZCAwIT09cGFyYW1zLm1pbkZlZSYmIWFwaS5hc3NlcnQoZmVlPj1wYXJhbXMubWluRmVlLCJmZWUgbXVzdCBiZSA+PSAiK3BhcmFtcy5taW5GZWUpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwcmljZVN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4mJmFwaS5CaWdOdW1iZXIocHJpY2UpLmd0KDApJiZjb3VudERlY2ltYWxzKHByaWNlKTw9dG9rZW4ucHJlY2lzaW9uLCJpbnZhbGlkIHByaWNlIikpe2NvbnN0IG5mdEFycmF5PVtdLHdyYXBwZWROZnRzPXtzeW1ib2w6c3ltYm9sLGlkczpuZnRzfTtuZnRBcnJheS5wdXNoKHdyYXBwZWROZnRzKTtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJ0cmFuc2ZlciIse2Zyb21UeXBlOiJ1c2VyIix0bzoibmZ0bWFya2V0Iix0b1R5cGU6ImNvbnRyYWN0IixuZnRzOm5mdEFycmF5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZihyZXMuZXZlbnRzKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCksZmluYWxQcmljZT1hcGkuQmlnTnVtYmVyKHByaWNlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksbmZ0SW50ZWdlcklkTGlzdD1bXSxvcmRlckRhdGFNYXA9e307Zm9yKGxldCBpPTA7aTxyZXMuZXZlbnRzLmxlbmd0aDtpKz0xKXtjb25zdCBldj1yZXMuZXZlbnRzW2ldO2lmKGV2LmNvbnRyYWN0JiZldi5ldmVudCYmZXYuZGF0YSYmIm5mdCI9PT1ldi5jb250cmFjdCYmInRyYW5zZmVyIj09PWV2LmV2ZW50JiZldi5kYXRhLmZyb209PT1hcGkuc2VuZGVyJiYidSI9PT1ldi5kYXRhLmZyb21UeXBlJiYibmZ0bWFya2V0Ij09PWV2LmRhdGEudG8mJiJjIj09PWV2LmRhdGEudG9UeXBlJiZldi5kYXRhLnN5bWJvbD09PXN5bWJvbCl7Y29uc3QgaW5zdGFuY2VJZD1ldi5kYXRhLmlkLG9yZGVyRGF0YT17bmZ0SWQ6aW5zdGFuY2VJZCxncm91cGluZzp7fSxncm91cGluZ0tleToiIn0saW50ZWdlcklkPWFwaS5CaWdOdW1iZXIoaW5zdGFuY2VJZCkudG9OdW1iZXIoKTtuZnRJbnRlZ2VySWRMaXN0LnB1c2goaW50ZWdlcklkKSxvcmRlckRhdGFNYXBbaW50ZWdlcklkXT1vcmRlckRhdGF9fWNvbnN0IGluc3RhbmNlcz1hd2FpdCBhcGkuZGIuZmluZEluVGFibGUoIm5mdCIsaW5zdGFuY2VUYWJsZU5hbWUse19pZDp7JGluOm5mdEludGVnZXJJZExpc3R9fSw1MCwwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGo9MDtqPGluc3RhbmNlcy5sZW5ndGg7ais9MSl7Y29uc3QgaW5zdGFuY2U9aW5zdGFuY2VzW2pdLGdyb3VwaW5nPXt9O2xldCBncm91cGluZ0tleT0iIjtuZnQuZ3JvdXBCeS5mb3JFYWNoKG5hbWU9Pnt2b2lkIDAhPT1pbnN0YW5jZS5wcm9wZXJ0aWVzW25hbWVdJiZudWxsIT09aW5zdGFuY2UucHJvcGVydGllc1tuYW1lXT9ncm91cGluZ1tuYW1lXT1pbnN0YW5jZS5wcm9wZXJ0aWVzW25hbWVdLnRvU3RyaW5nKCk6Z3JvdXBpbmdbbmFtZV09IiIsZ3JvdXBpbmdLZXk9Z3JvdXBpbmdLZXkrIjoiK25hbWUrIjoiK2dyb3VwaW5nW25hbWVdfSksb3JkZXJEYXRhTWFwW2luc3RhbmNlLl9pZF0uZ3JvdXBpbmc9Z3JvdXBpbmcsb3JkZXJEYXRhTWFwW2luc3RhbmNlLl9pZF0uZ3JvdXBpbmdLZXk9Z3JvdXBpbmdLZXl9Y29uc3QgZ3JvdXBpbmdNYXA9e307Zm9yKGxldCBrPTA7azxuZnRJbnRlZ2VySWRMaXN0Lmxlbmd0aDtrKz0xKXtjb25zdCBvcmRlckluZm89b3JkZXJEYXRhTWFwW25mdEludGVnZXJJZExpc3Rba11dLG9yZGVyPXthY2NvdW50OmFwaS5zZW5kZXIsb3duZWRCeToidSIsbmZ0SWQ6b3JkZXJJbmZvLm5mdElkLGdyb3VwaW5nOm9yZGVySW5mby5ncm91cGluZyx0aW1lc3RhbXA6dGltZXN0YW1wLHByaWNlOmZpbmFsUHJpY2UscHJpY2VEZWM6eyRudW1iZXJEZWNpbWFsOmZpbmFsUHJpY2V9LHByaWNlU3ltYm9sOnByaWNlU3ltYm9sLGZlZTpmZWV9LHJlc3VsdD1hd2FpdCBhcGkuZGIuaW5zZXJ0KG1hcmtldFRhYmxlTmFtZSxvcmRlcik7YXBpLmVtaXQoInNlbGxPcmRlciIse2FjY291bnQ6b3JkZXIuYWNjb3VudCxvd25lZEJ5Om9yZGVyLm93bmVkQnksc3ltYm9sOnN5bWJvbCxuZnRJZDpvcmRlci5uZnRJZCx0aW1lc3RhbXA6dGltZXN0YW1wLHByaWNlOm9yZGVyLnByaWNlLHByaWNlU3ltYm9sOm9yZGVyLnByaWNlU3ltYm9sLGZlZTpmZWUsb3JkZXJJZDpyZXN1bHQuX2lkfSk7Y29uc3QgZ3JvdXBJbmZvPW9yZGVySW5mby5ncm91cGluZ0tleSBpbiBncm91cGluZ01hcD9ncm91cGluZ01hcFtvcmRlckluZm8uZ3JvdXBpbmdLZXldOntncm91cGluZzpvcmRlckluZm8uZ3JvdXBpbmcsaXNJbkNvbGxlY3Rpb246ITEsY291bnQ6MH07Z3JvdXBJbmZvLmNvdW50Kz0xLGdyb3VwaW5nTWFwW29yZGVySW5mby5ncm91cGluZ0tleV09Z3JvdXBJbmZvfWF3YWl0IHVwZGF0ZU9wZW5JbnRlcmVzdCgic2VsbCIsc3ltYm9sLHByaWNlU3ltYm9sLGdyb3VwaW5nTWFwLG5mdC5ncm91cEJ5KX19fX07"}}}

NFT Market Smart Contract | Ecency