Transaction

9810a3fa7e7e7bce53780e6c7d28b93c0fa58d6867a72ced258bd035a68c35dc
Timestamp (utc)
2025-01-26 20:56:23
Fee Paid
0.00008778 BSV
(
0.05813741 BSV
-
0.05804963 BSV
)
Fee Rate
499.3 sat/KB
Version
1
Confirmations
49,418
Size Stats
17,579 B

2 Outputs

Total Output:
0.05804963 BSV
  • jMÜC{"name":"EncodedFiles","files":[{"name":"ClassCoreGlobals9.html","size":12943,"type":"text/html","content":"Y2xhc3MgQ29yZUdsb2JhbHMgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgLy8gRGVmaW5lIFR3ZW1vamkgaW1wbGVtZW50YXRpb24gZGlyZWN0bHkKICAgICAgICB0aGlzLnR3ZW1vamkgPSB7CiAgICAgICAgICAgIHBhcnNlOiAoY29udGVudCkgPT4gewogICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSgvW1x1ezFGMzAwfS1cdXsxRjlGRn1dfFtcdXsyNjAwfS1cdXsyNkZGfV0vZ3UsIChtYXRjaCkgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVQb2ludCA9IG1hdGNoLmNvZGVQb2ludEF0KDApLnRvU3RyaW5nKDE2KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxpbWcgY2xhc3M9ImVtb2ppIiBkcmFnZ2FibGU9ImZhbHNlIiBhbHQ9IiR7bWF0Y2h9IiBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3R3ZW1vamkvMTQuMC4yL3N2Zy8ke2NvZGVQb2ludH0uc3ZnIj5gOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICAvLyBJTVBPUlRBTlQ6IFN0b3JlIGVtb2ppIGNvZGVzIGluc3RlYWQgb2YgYWN0dWFsIGVtb2ppcyB0byBwcmV2ZW50IGVuY29kaW5nIGlzc3VlcwogICAgICAgIHRoaXMuRU1PSklfQ09ERVMgPSB7CiAgICBJTkJPWDogJ1x1ezFGNEU1fScsICAgICAgLy8g8J+TpQogICAgU0VOVDogJ1x1ezFGNEU0fScsICAgICAgIC8vIPCfk6QKICAgIEpVTks6ICdcdXsxRjVEMX0nLCAgICAgICAvLyDwn5eRCiAgICBGQVZPUklURVM6ICdcdXsyQjUwfScsICAgIC8vIOKtkAogICAgQUREOiAnXHV7Mjc5NX0nLCAgICAgICAgIC8vIOKelQogICAgRk9MREVSOiAnXHV7MUY0QzF9JywgICAgIC8vIPCfk4EKICAgIENPTlRBQ1RTOiAnXHV7MUY0NjV9JyAgICAvLyDwn5GlCn07CgogICAgICAgIHRoaXMuRk9MREVSUyA9IHsKICAgICAgICAgICAgaW5ib3g6IHsKICAgICAgICAgICAgICAgIG5hbWU6ICdJbmJveCcsCiAgICAgICAgICAgICAgICBzdG9yYWdlS2V5OiAnbWVzc2FnZUluYm94JywKICAgICAgICAgICAgICAgIGljb246IHRoaXMuRU1PSklfQ09ERVMuSU5CT1gKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2VudDogewogICAgICAgICAgICAgICAgbmFtZTogJ1NlbnQnLAogICAgICAgICAgICAgICAgc3RvcmFnZUtleTogJ3NlbnRNZXNzYWdlcycsCiAgICAgICAgICAgICAgICBpY29uOiB0aGlzLkVNT0pJX0NPREVTLlNFTlQKICAgICAgICAgICAgfSwKICAgICAgICAgICAganVuazogewogICAgICAgICAgICAgICAgbmFtZTogJ0p1bmsnLAogICAgICAgICAgICAgICAgc3RvcmFnZUtleTogJ2p1bmtUcmFuc2FjdGlvbnMnLAogICAgICAgICAgICAgICAgaWNvbjogdGhpcy5FTU9KSV9DT0RFUy5KVU5LCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZhdm9yaXRlczogewogICAgICAgICAgICAgICAgbmFtZTogJ0Zhdm9yaXRlcycsCiAgICAgICAgICAgICAgICBzdG9yYWdlS2V5OiAnZmF2b3JpdGVNZXNzYWdlcycsCiAgICAgICAgICAgICAgICBpY29uOiB0aGlzLkVNT0pJX0NPREVTLkZBVk9SSVRFUwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgdGhpcy5nbG9iYWxTdGF0ZSA9IHsKICAgICAgICAgICAgY3VycmVudFZpZXc6IG51bGwsCiAgICAgICAgICAgIGN1cnJlbnRGb2xkZXI6IG51bGwsCiAgICAgICAgICAgIHRyYW5zYWN0aW9uTGlzdGVuZXI6IG51bGwKICAgICAgICB9OwoKICAgICAgICAvLyBBZGQgbmVjZXNzYXJ5IHN0eWxlcyBmb3IgZW1vamlzCiAgICAgICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gYAogICAgICAgICAgICBpbWcuZW1vamkgewogICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjJlbTsKICAgICAgICAgICAgICAgIHdpZHRoOiAxLjJlbTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCAuMDVlbSAwIC4xZW07CiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogLTAuMWVtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC5mb2xkZXItaWNvbiBpbWcuZW1vamkgewogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07CiAgICAgICAgICAgIH0KICAgICAgICBgOwogICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOwogICAgfQoKICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBzYWZlbHkgcmVuZGVyIGVtb2ppcwogICAgcmVuZGVyRW1vamkoY29udGVudCkgewogICAgICAgIHJldHVybiB0aGlzLnR3ZW1vamkucGFyc2UoY29udGVudCk7CiAgICB9CgogICAgaW5qZWN0R2xvYmFscygpIHsKICAgICAgICB3aW5kb3cuRk9MREVSUyA9IHRoaXMuRk9MREVSUzsKICAgICAgICB3aW5kb3cuRU1PSklfQ09ERVMgPSB0aGlzLkVNT0pJX0NPREVTOwogICAgICAgIHdpbmRvdy5nbG9iYWxTdGF0ZSA9IHRoaXMuZ2xvYmFsU3RhdGU7CgogICAgICAgIC8vIENvcmUgZ2xvYmFsIGZ1bmN0aW9ucwogICAgICAgIHdpbmRvdy5nZXRGb2xkZXJzID0gKCkgPT4gewogICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9sZGVycycpIHx8IAogICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5GT0xERVJTKSk7CiAgICAgICAgfTsKCiAgICAgICAgd2luZG93LmdldENvbnRhY3ROYW1lID0gKGFkZHJlc3MpID0+IHsKICAgICAgICAgICAgY29uc3QgY29udGFjdHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjb250YWN0cycpIHx8ICd7fScpOwogICAgICAgICAgICByZXR1cm4gY29udGFjdHNbYWRkcmVzc10gfHwgYWRkcmVzczsKICAgICAgICB9OwogICAKICAgIHdpbmRvdy5zaG93SW5ib3ggPSAoKSA9PiB7CiAgICAgICAgd2luZG93Lmdsb2JhbFN0YXRlLmN1cnJlbnRGb2xkZXIgPSAnaW5ib3gnOwogICAgICAgIHdpbmRvdy5zZXR1cEZvbGRlcignaW5ib3gnKTsKICAgIH07CgogICAgICAgIHdpbmRvdy5zYXZlQ29udGFjdCA9IChhZGRyZXNzLCBuYW1lKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IGNvbnRhY3RzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY29udGFjdHMnKSB8fCAne30nKTsKICAgICAgICAgICAgY29udGFjdHNbYWRkcmVzc10gPSBuYW1lOwogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY29udGFjdHMnLCBKU09OLnN0cmluZ2lmeShjb250YWN0cykpOwogICAgICAgIH07CgogICAgICAgIHdpbmRvdy5zYXZlU2VudE1lc3NhZ2UgPSAocmVjaXBpZW50LCB0eGlkKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHNlbnRNZXNzYWdlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NlbnRNZXNzYWdlcycpIHx8ICdbXScpOwogICAgICAgICAgICBzZW50TWVzc2FnZXMucHVzaCh7CiAgICAgICAgICAgICAgICByZWNpcGllbnQsCiAgICAgICAgICAgICAgICB0eGlkLAogICAgICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2VudE1lc3NhZ2VzJywgSlNPTi5zdHJpbmdpZnkoc2VudE1lc3NhZ2VzKSk7CiAgICAgICAgICAgIGlmICh3aW5kb3cuY3VycmVudEZvbGRlciA9PT0gJ3NlbnQnKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuc2V0dXBGb2xkZXIoJ3NlbnQnKTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIHdpbmRvdy5zYXZlVHJhbnNhY3Rpb24gPSAodHgsIGlzSnVuayA9IGZhbHNlKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBpc0p1bmsgPyAnanVua1RyYW5zYWN0aW9ucycgOiAnbWVzc2FnZUluYm94JzsKICAgICAgICAgICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KSB8fCAnW10nKTsKICAgICAgICAgICAgaWYgKCFzdG9yZWQuc29tZSh0ID0+IHQudHhpZCA9PT0gdHgudHhpZCkpIHsKICAgICAgICAgICAgICAgIHN0b3JlZC51bnNoaWZ0KHR4KTsKICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JhZ2VLZXksIEpTT04uc3RyaW5naWZ5KHN0b3JlZCkpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgd2luZG93Lm1vdmVNZXNzYWdlID0gKHR4aWQsIGZyb21Gb2xkZXIsIHRvRm9sZGVyKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHNvdXJjZURhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuRk9MREVSU1tmcm9tRm9sZGVyXS5zdG9yYWdlS2V5KSB8fCAnW10nKTsKICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHNvdXJjZURhdGEuZmluZCh0eCA9PiB0eC50eGlkID09PSB0eGlkKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChtZXNzYWdlKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuc2F2ZVRyYW5zYWN0aW9uKG1lc3NhZ2UsIHRvRm9sZGVyID09PSAnanVuaycpOwogICAgICAgICAgICAgICAgd2luZG93LmRlbGV0ZU1lc3NhZ2UodHhpZCwgZnJvbUZvbGRlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICB3aW5kb3cuZGVsZXRlTWVzc2FnZSA9ICh0eGlkLCBmb2xkZXJLZXkpID0+IHsKICAgICAgICAgICAgY29uc3QgZm9sZGVyID0gdGhpcy5GT0xERVJTW2ZvbGRlcktleSB8fCB3aW5kb3cuY3VycmVudEZvbGRlcl07CiAgICAgICAgICAgIGlmICghZm9sZGVyKSByZXR1cm47CiAgICAgICAgICAgIAogICAgICAgICAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGZvbGRlci5zdG9yYWdlS2V5KSB8fCAnW10nKTsKICAgICAgICAgICAgY29uc3QgdXBkYXRlZCA9IHN0b3JlZC5maWx0ZXIodHggPT4gdHgudHhpZCAhPT0gdHhpZCk7CiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGZvbGRlci5zdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkKSk7CiAgICAgICAgICAgIHdpbmRvdy5zZXR1cEZvbGRlcihmb2xkZXJLZXkgfHwgd2luZG93LmN1cnJlbnRGb2xkZXIpOwogICAgICAgIH07Cgp3aW5kb3cucmVmcmVzaEluYm94ID0gYXN5bmMgKCkgPT4gewogICAgY29uc3QgYWRkcmVzcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3YWxsZXRBZGRyZXNzJyk7CiAgICBpZiAoIWFkZHJlc3MpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdObyB3YWxsZXQgYWRkcmVzcyBmb3VuZCcpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBjb25zdCBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50ID0gJ0ZldGNoaW5nIG1lc3NhZ2UgdHJhbnNhY3Rpb25zLi4uJzsKICAgIGxvYWRpbmdJbmRpY2F0b3Iuc3R5bGUucGFkZGluZyA9ICcxcmVtJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlTGlzdCcpLnByZXBlbmQobG9hZGluZ0luZGljYXRvcik7CgogICAgdHJ5IHsKICAgICAgICBjb25zdCB0cmFuc2FjdGlvbnMgPSBhd2FpdCBmZXRjaEFkZHJlc3NUcmFuc2FjdGlvbnMoYWRkcmVzcyk7CiAgICAgICAgY29uc3QgeyBtZXNzYWdlcywgbmV3Q291bnQgfSA9IGF3YWl0IHByb2Nlc3NUcmFuc2FjdGlvbnModHJhbnNhY3Rpb25zLCBhZGRyZXNzKTsKICAgICAgICAKICAgICAgICBpZiAobmV3Q291bnQgPiAwKSB7CiAgICAgICAgICAgIHdpbmRvdy5tb2RhbE1hbmFnZXI/LnNob3dBbGVydChgRm91bmQgJHtuZXdDb3VudH0gbmV3IG1lc3NhZ2UocylgKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgd2luZG93LnNldHVwRm9sZGVyKCdpbmJveCcpOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdSZWZyZXNoIGZhaWxlZDonLCBlcnJvcik7CiAgICAgICAgd2luZG93Lm1vZGFsTWFuYWdlcj8uc2hvd0FsZXJ0KCdGYWlsZWQgdG8gcmVmcmVzaDogJyArIGVycm9yLm1lc3NhZ2UsICdlcnJvcicpOwogICAgfSBmaW5hbGx5IHsKICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnJlbW92ZSgpOwogICAgfQp9OwoKCndpbmRvdy5zaG93Q29tcG9zZU1vZGFsID0gKCkgPT4gewogICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tcG9zZU1vZGFsJyk7CiAgICBtb2RhbC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgCiAgICAvLyBGb2N1cyBvbiByZWNpcGllbnQgZmllbGQKICAgIGNvbnN0IHJlY2lwaWVudEZpZWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY2lwaWVudCcpOwogICAgaWYgKHJlY2lwaWVudEZpZWxkKSB7CiAgICAgICAgcmVjaXBpZW50RmllbGQuZm9jdXMoKTsKICAgIH0KCiAgICAvLyBTZXQgdXAgYmFzaWMgdGV4dCBhcmVhCiAgICBjb25zdCBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlVGV4dCcpOwogICAgaWYgKG1lc3NhZ2VUZXh0KSB7CiAgICAgICAgbWVzc2FnZVRleHQucGxhY2Vob2xkZXIgPSAnVHlwZSB5b3VyIG1lc3NhZ2UgaGVyZS4uLic7CiAgICB9Cn07Cgp3aW5kb3cuaGlkZUNvbXBvc2VNb2RhbCA9ICgpID0+IHsKICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbXBvc2VNb2RhbCcpOwogICAgaWYgKCFtb2RhbCkgcmV0dXJuOwoKICAgIC8vIENsZWFyIGFsbCBpbnB1dHMKICAgIG1vZGFsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBjb25zdCByZWNpcGllbnRGaWVsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWNpcGllbnQnKTsKICAgIGNvbnN0IG1lc3NhZ2VUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2VUZXh0Jyk7CiAgICAKICAgIGlmIChyZWNpcGllbnRGaWVsZCkgcmVjaXBpZW50RmllbGQudmFsdWUgPSAnJzsKICAgIGlmIChtZXNzYWdlVGV4dCkgbWVzc2FnZVRleHQudmFsdWUgPSAnJzsKfTsKCiAgICAgICAgd2luZG93LnNob3dBZGRDb250YWN0TW9kYWwgPSAoKSA9PiB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRDb250YWN0TW9kYWwnKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgIH07CgogICAgICAgIHdpbmRvdy5oaWRlQWRkQ29udGFjdE1vZGFsID0gKCkgPT4gewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkQ29udGFjdE1vZGFsJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhY3ROYW1lJykudmFsdWUgPSAnJzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhY3RBZGRyZXNzJykudmFsdWUgPSAnJzsKICAgICAgICB9OwoKICAgICAgICAvLyBTZXR1cCBuYXZpZ2F0aW9uIHdpdGggZW1vamkgcGFyc2luZwp3aW5kb3cuc2V0dXBOYXZpZ2F0aW9uID0gKCkgPT4gewogICAgY29uc3QgbmF2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbmF2Jyk7CiAgICBjb25zdCBmb2xkZXJzID0gZ2V0Rm9sZGVycygpOyAvLyBHZXQgYWxsIGZvbGRlcnMgaW5jbHVkaW5nIGN1c3RvbSBvbmVzIGZyb20gbG9jYWxTdG9yYWdlCiAgICAKICAgIC8vIFN5c3RlbSBuYXZpZ2F0aW9uIGl0ZW1zIGZpcnN0CiAgICBjb25zdCBzeXN0ZW1OYXYgPSBgCiAgICAgICAgPGEgY2xhc3M9Im5hdi1pdGVtIiBvbmNsaWNrPSJzaG93SW5ib3goKSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb2xkZXItaWNvbiI+JHt0aGlzLnJlbmRlckVtb2ppKHRoaXMuRU1PSklfQ09ERVMuSU5CT1gpfTwvc3Bhbj4KICAgICAgICAgICAgSW5ib3gKICAgICAgICA8L2E+CiAgICAgICAgPGEgY2xhc3M9Im5hdi1pdGVtIiBvbmNsaWNrPSJzaG93U2VudCgpIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvbGRlci1pY29uIj4ke3RoaXMucmVuZGVyRW1vamkodGhpcy5FTU9KSV9DT0RFUy5TRU5UKX08L3NwYW4+CiAgICAgICAgICAgIFNlbnQKICAgICAgICA8L2E+CiAgICAgICAgPGEgY2xhc3M9Im5hdi1pdGVtIiBvbmNsaWNrPSJzaG93Q29udGFjdHMoKSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb2xkZXItaWNvbiI+JHt0aGlzLnJlbmRlckVtb2ppKHRoaXMuRU1PSklfQ09ERVMuQ09OVEFDVFMpfTwvc3Bhbj4KICAgICAgICAgICAgQ29udGFjdHMKICAgICAgICA8L2E+CiAgICBgOwoKICAgIC8vIFRoZW4gY3VzdG9tIGZvbGRlcnMgZnJvbSBsb2NhbFN0b3JhZ2UKICAgIGNvbnN0IGN1c3RvbUZvbGRlcnMgPSBPYmplY3QuZW50cmllcyhmb2xkZXJzKQogICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhWydpbmJveCcsICdzZW50J10uaW5jbHVkZXMoa2V5KSkKICAgICAgICAubWFwKChba2V5LCBmb2xkZXJdKSA9PiBgCiAgICAgICAgICAgIDxhIGNsYXNzPSJuYXYtaXRlbSIgb25jbGljaz0ic2hvd0ZvbGRlcignJHtrZXl9JykiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvbGRlci1pY29uIj4ke3RoaXMucmVuZGVyRW1vamkoZm9sZGVyLmljb24pfTwvc3Bhbj4KICAgICAgICAgICAgICAgICR7Zm9sZGVyLm5hbWV9CiAgICAgICAgICAgIDwvYT4KICAgICAgICBgKS5qb2luKCcnKTsKCiAgICAvLyBBZGQgRm9sZGVyIGJ1dHRvbgogICAgY29uc3QgYWRkRm9sZGVyQnV0dG9uID0gYAogICAgICAgIDxhIGNsYXNzPSJuYXYtaXRlbSBhZGQtZm9sZGVyIiBvbmNsaWNrPSJzaG93QWRkRm9sZGVyTW9kYWwoKSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb2xkZXItaWNvbiI+JHt0aGlzLnJlbmRlckVtb2ppKHRoaXMuRU1PSklfQ09ERVMuQUREKX08L3NwYW4+CiAgICAgICAgICAgIEFkZCBGb2xkZXIKICAgICAgICA8L2E+YDsKCiAgICBuYXYuaW5uZXJIVE1MID0gc3lzdGVtTmF2ICsgY3VzdG9tRm9sZGVycyArIGFkZEZvbGRlckJ1dHRvbjsKfTsKCiB3aW5kb3cuc2V0dXBGb2xkZXIgPSAoZm9sZGVyS2V5KSA9PiB7CiAgICBjb25zdCBmb2xkZXIgPSB0aGlzLkZPTERFUlNbZm9sZGVyS2V5XTsKICAgIGlmICghZm9sZGVyKSByZXR1cm47CiAgICAKICAgIHdpbmRvdy5nbG9iYWxTdGF0ZS5jdXJyZW50Rm9sZGVyID0gZm9sZGVyS2V5OwogICAgCiAgICBjb25zdCBtZXNzYWdlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oZm9sZGVyLnN0b3JhZ2VLZXkpIHx8ICdbXScpOwogICAgY29uc3QgbWVzc2FnZUxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZUxpc3QnKTsKICAgIAogICAgY29uc3QgZm9sZGVySWNvbkh0bWwgPSB0aGlzLnJlbmRlckVtb2ppKGZvbGRlci5pY29uKTsKCiAgICBtZXNzYWdlTGlzdC5pbm5lckhUTUwgPSBgCiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgyIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuIj4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4Ij4KICAgICAgICAgICAgICAgICAgICAke2ZvbGRlckljb25IdG1sfSAke2ZvbGRlci5uYW1lfSAoJHttZXNzYWdlcy5sZW5ndGh9KQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAke2ZvbGRlcktleSA9PT0gJ2luYm94JyA/IAogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IndpbmRvdy5yZWZyZXNoSW5ib3goKSIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgc3R5bGU9ImJhY2tncm91bmQ6ICMzQjgyRjY7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMC41cmVtIDFyZW07IGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtOyI+UmVmcmVzaDwvYnV0dG9uPicgOiAKICAgICAgICAgICAgICAgICAgICAnJ30KICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgJHttZXNzYWdlcy5sZW5ndGggPT09IDAgPyAKICAgICAgICAgICAgICAgIGA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDJyZW07IGNvbG9yOiAjNmI3MjgwIj5ObyBtZXNzYWdlcyBpbiAke2ZvbGRlci5uYW1lfTwvZGl2PmAgOgogICAgICAgICAgICAgICAgbWVzc2FnZXMubWFwKG1lc3NhZ2UgPT4gYAogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlN2ViOyBwYWRkaW5nOiAxcmVtIDA7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG9uY2xpY2s9IndpbmRvdy5tZXNzYWdlSGFuZGxlci5zaG93TWVzc2FnZSgnJHttZXNzYWdlLnR4aWR9JykiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IGZsZXg6IDE7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiAjMTExODI3Ij4ke21lc3NhZ2UudHhpZH08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImNvbG9yOiAjNmI3MjgwOyBmb250LXNpemU6IDAuODc1cmVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke25ldyBEYXRlKG1lc3NhZ2UudGltZXN0YW1wIHx8IG1lc3NhZ2UudGltZSkudG9Mb2NhbGVTdHJpbmcoKX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB3aW5kb3cuZGVsZXRlTWVzc2FnZSgnJHttZXNzYWdlLnR4aWR9JywgJyR7Zm9sZGVyS2V5fScpIiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJidG4gYnRuLWRhbmdlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJtaW4td2lkdGg6IDYwcHg7IGJhY2tncm91bmQ6ICNFRjQ0NDQ7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07IGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtOyBtYXJnaW4tbGVmdDogMXJlbTsiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZQogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIGApLmpvaW4oJycpCiAgICAgICAgICAgIH0KICAgICAgICA8L2Rpdj4KICAgIGA7Cn07CgogICAgICAgIC8vIE5hdmlnYXRpb24gZnVuY3Rpb25zCiAgICAgICAgd2luZG93LnNob3dGb2xkZXIgPSAoZm9sZGVyS2V5KSA9PiB7CiAgICAgICAgICAgIHdpbmRvdy5jdXJyZW50Rm9sZGVyID0gZm9sZGVyS2V5OwogICAgICAgICAgICB3aW5kb3cuc2V0dXBGb2xkZXIoZm9sZGVyS2V5KTsKICAgICAgICB9OwoKICAgICAgICB3aW5kb3cuc2hvd1NlbnQgPSAoKSA9PiB7CiAgICAgICAgICAgIHdpbmRvdy5zaG93Rm9sZGVyKCdzZW50Jyk7CiAgICAgICAgfTsKCiAgICAgICAgd2luZG93LnNob3dDb250YWN0cyA9ICgpID0+IHsKICAgICAgICAgICAgY29uc3QgY29udGFjdHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjb250YWN0cycpIHx8ICd7fScpOwogICAgICAgICAgICBjb25zdCBtZXNzYWdlTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlTGlzdCcpOwogICAgICAgICAgICAKICAgICAgICAgICAgbWVzc2FnZUxpc3QuaW5uZXJIVE1MID0gYAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdHMtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+Q29udGFjdHM8L2gyPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd0FkZENvbnRhY3RNb2RhbCgpIj5BZGQgQ29udGFjdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0cy1saXN0Ij4KICAgICAgICAgICAgICAgICAgICAke09iamVjdC5lbnRyaWVzKGNvbnRhY3RzKS5tYXAoKFthZGRyZXNzLCBuYW1lXSkgPT4gYAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1uYW1lIj4ke25hbWV9PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWFkZHJlc3MiPiR7YWRkcmVzc308L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgYCkuam9pbignJyl9CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYDsKICAgICAgICB9OwogICAgfQoKICAgIGluaXRpYWxpemUoKSB7CiAgICAgICAgdGhpcy5pbmplY3RHbG9iYWxzKCk7CiAgICAgICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgY29uc29sZS5sb2coJ0NvcmUgZ2xvYmFscyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHknKTsKICAgIH0KCiAgICBzZXR1cEV2ZW50TGlzdGVuZXJzKCkgewogICAgICAgIC8vIEdsb2JhbCBldmVudCBsaXN0ZW5lcnMKICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIChlKSA9PiB7CiAgICAgICAgICAgIC8vIEhhbmRsZSBsb2NhbFN0b3JhZ2UgY2hhbmdlcyBmcm9tIG90aGVyIHRhYnMKICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnbWVzc2FnZUluYm94JyB8fCBlLmtleSA9PT0gJ3NlbnRNZXNzYWdlcycpIHsKICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZ2V0Q3VycmVudEZvbGRlcigpID09PSBlLmtleSkgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXR1cEZvbGRlcih3aW5kb3cuZ2V0Q3VycmVudEZvbGRlcigpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9Cg=="}]}
    https://whatsonchain.com/tx/9810a3fa7e7e7bce53780e6c7d28b93c0fa58d6867a72ced258bd035a68c35dc