memoscan
← all memos

Memo 0x26252ca2…0bc1d3 on Ethereum

data:text/plain;base64,LyogRGlzY3Vzc2lvbjoKICogaHR0cHM6Ly95a3ouZGZvaHViLmV0aD9lbnNkPXlrei5kZm9odWIuZXRoCiAqLwovKiBEZXNjcmlwdGlvbjoKICogTmV3IFN0YWtpbmcgVHJhbnNmZXIgRnVuY3Rpb25hbGl0eQogKi8KcHJhZ21hIHNvbGlkaXR5IF4wLjcuMzsKCmNvbnRyYWN0IFN0YWtpbmdUcmFuc2ZlckZ1bmN0aW9uYWxpdHkgewoKICAgIHN0cmluZyBwcml2YXRlIF9tZXRhZGF0YUxpbms7CgogICAgY29uc3RydWN0b3Ioc3RyaW5nIG1lbW9yeSBtZXRhZGF0YUxpbmspIHsKICAgICAgICBfbWV0YWRhdGFMaW5rID0gbWV0YWRhdGFMaW5rOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldE1ldGFkYXRhTGluaygpIHB1YmxpYyB2aWV3IHJldHVybnMoc3RyaW5nIG1lbW9yeSkgewogICAgICAgIHJldHVybiBfbWV0YWRhdGFMaW5rOwogICAgfQoKICAgIGZ1bmN0aW9uIG9uU3RhcnQoYWRkcmVzcywgYWRkcmVzcykgcHVibGljIHsKICAgICAgICBJTVZEUHJveHkgcHJveHkgPSBJTVZEUHJveHkobXNnLnNlbmRlcik7CiAgICAgICAgSVN0YXRlSG9sZGVyIHN0YXRlSG9sZGVyID0gSVN0YXRlSG9sZGVyKHByb3h5LmdldFN0YXRlSG9sZGVyQWRkcmVzcygpKTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRCb29sKF90b1N0YXRlSG9sZGVyS2V5KCJzdGFraW5nLnRyYW5zZmVyLmF1dGhvcml6ZWQiLCBfdG9TdHJpbmcoMHgwNUJiNTFDMzFBMDc4MjE5MWE0RTgzRjA1QkJjMTMxQ2I5MDM3MEFBKSksIHRydWUpOwogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoInN0YWtpbmcuMHgwNWJiNTFjMzFhMDc4MjE5MWE0ZTgzZjA1YmJjMTMxY2I5MDM3MGFhLnRpZXJzWzBdLm1pbkNhcCIsIDEwMDAwMDAwMDAwMDAwMDAwMDApOwogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoInN0YWtpbmcuMHgwNWJiNTFjMzFhMDc4MjE5MWE0ZTgzZjA1YmJjMTMxY2I5MDM3MGFhLnRpZXJzWzBdLmhhcmRDYXAiLCAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwKTsKICAgIAoKICAgICAgICBzdGF0ZUhvbGRlci5zZXRVaW50MjU2KCJzdGFraW5nLjB4MDViYjUxYzMxYTA3ODIxOTFhNGU4M2YwNWJiYzEzMWNiOTAzNzBhYS50aWVyc1sxXS5taW5DYXAiLCAyNTAwMDAwMDAwMDAwMDAwMDApOwogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoInN0YWtpbmcuMHgwNWJiNTFjMzFhMDc4MjE5MWE0ZTgzZjA1YmJjMTMxY2I5MDM3MGFhLnRpZXJzWzFdLmhhcmRDYXAiLCAyNTAwMDAwMDAwMDAwMDAwMDAwMDApOwogICAgCgogICAgICAgIHN0YXRlSG9sZGVyLnNldFVpbnQyNTYoInN0YWtpbmcuMHgwNWJiNTFjMzFhMDc4MjE5MWE0ZTgzZjA1YmJjMTMxY2I5MDM3MGFhLnRpZXJzWzJdLm1pbkNhcCIsIDEwMDAwMDAwMDAwMDAwMDAwMCk7CiAgICAgICAgc3RhdGVIb2xkZXIuc2V0VWludDI1Nigic3Rha2luZy4weDA1YmI1MWMzMWEwNzgyMTkxYTRlODNmMDViYmMxMzFjYjkwMzcwYWEudGllcnNbMl0uaGFyZENhcCIsIDEwMDAwMDAwMDAwMDAwMDAwMDAwMCk7CiAgICAgICAgc3RhdGVIb2xkZXIuc2V0VWludDI1Nigic3Rha2luZy4weDA1YmI1MWMzMWEwNzgyMTkxYTRlODNmMDViYmMxMzFjYjkwMzcwYWEudGllcnMubGVuZ3RoIiwgMyk7CiAgICB9CgogICAgZnVuY3Rpb24gb25TdG9wKGFkZHJlc3MpIHB1YmxpYyB7CiAgICB9CgogICAgZnVuY3Rpb24gc3Rha2luZ1RyYW5zZmVyKGFkZHJlc3Mgc2VuZGVyLCB1aW50MjU2LCB1aW50MjU2IHZhbHVlLCBhZGRyZXNzIHJlY2VpdmVyKSBwdWJsaWMgewogICAgICAgIElNVkRQcm94eSBwcm94eSA9IElNVkRQcm94eShtc2cuc2VuZGVyKTsKCiAgICAgICAgcmVxdWlyZShJU3RhdGVIb2xkZXIocHJveHkuZ2V0U3RhdGVIb2xkZXJBZGRyZXNzKCkpLmdldEJvb2woX3RvU3RhdGVIb2xkZXJLZXkoInN0YWtpbmcudHJhbnNmZXIuYXV0aG9yaXplZCIsIF90b1N0cmluZyhzZW5kZXIpKSksICJVbmF1dGhvcml6ZWQgYWN0aW9uISIpOwoKICAgICAgICBwcm94eS50cmFuc2ZlcihyZWNlaXZlciwgdmFsdWUsIHByb3h5LmdldFRva2VuKCkpOwogICAgfQoKICAgIGZ1bmN0aW9uIF90b1N0YXRlSG9sZGVyS2V5KHN0cmluZyBtZW1vcnkgYSwgc3RyaW5nIG1lbW9yeSBiKSBwcml2YXRlIHB1cmUgcmV0dXJucyhzdHJpbmcgbWVtb3J5KSB7CiAgICAgICAgcmV0dXJuIF90b0xvd2VyQ2FzZShzdHJpbmcoYWJpLmVuY29kZVBhY2tlZChhLCAiLiIsIGIpKSk7CiAgICB9CgogICAgZnVuY3Rpb24gX3RvU3RyaW5nKGFkZHJlc3MgX2FkZHIpIHByaXZhdGUgcHVyZSByZXR1cm5zKHN0cmluZyBtZW1vcnkpIHsKICAgICAgICBieXRlczMyIHZhbHVlID0gYnl0ZXMzMih1aW50MjU2KF9hZGRyKSk7CiAgICAgICAgYnl0ZXMgbWVtb3J5IGFscGhhYmV0ID0gIjAxMjM0NTY3ODlhYmNkZWYiOwoKICAgICAgICBieXRlcyBtZW1vcnkgc3RyID0gbmV3IGJ5dGVzKDQyKTsKICAgICAgICBzdHJbMF0gPSAnMCc7CiAgICAgICAgc3RyWzFdID0gJ3gnOwogICAgICAgIGZvciAodWludCBpID0gMDsgaSA8IDIwOyBpKyspIHsKICAgICAgICAgICAgc3RyWzIraSoyXSA9IGFscGhhYmV0W3VpbnQodWludDgodmFsdWVbaSArIDEyXSA+PiA0KSldOwogICAgICAgICAgICBzdHJbMytpKjJdID0gYWxwaGFiZXRbdWludCh1aW50OCh2YWx1ZVtpICsgMTJdICYgMHgwZikpXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHN0cmluZyhzdHIpOwogICAgfQoKICAgIGZ1bmN0aW9uIF90b0xvd2VyQ2FzZShzdHJpbmcgbWVtb3J5IHN0cikgcHJpdmF0ZSBwdXJlIHJldHVybnMoc3RyaW5nIG1lbW9yeSkgewogICAgICAgIGJ5dGVzIG1lbW9yeSBiU3RyID0gYnl0ZXMoc3RyKTsKICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBiU3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGJTdHJbaV0gPSBiU3RyW2ldID49IDB4NDEgJiYgYlN0cltpXSA8PSAweDVBID8gYnl0ZXMxKHVpbnQ4KGJTdHJbaV0pICsgMHgyMCkgOiBiU3RyW2ldOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc3RyaW5nKGJTdHIpOwogICAgfQp9CgppbnRlcmZhY2UgSU1WRFByb3h5IHsKICAgIGZ1bmN0aW9uIGdldFRva2VuKCkgZXh0ZXJuYWwgdmlldyByZXR1cm5zKGFkZHJlc3MpOwogICAgZnVuY3Rpb24gZ2V0U3RhdGVIb2xkZXJBZGRyZXNzKCkgZXh0ZXJuYWwgdmlldyByZXR1cm5zKGFkZHJlc3MpOwogICAgZnVuY3Rpb24gZ2V0TVZERnVuY3Rpb25hbGl0aWVzTWFuYWdlckFkZHJlc3MoKSBleHRlcm5hbCB2aWV3IHJldHVybnMoYWRkcmVzcyk7CiAgICBmdW5jdGlvbiB0cmFuc2ZlcihhZGRyZXNzIHJlY2VpdmVyLCB1aW50MjU2IHZhbHVlLCBhZGRyZXNzIHRva2VuKSBleHRlcm5hbDsKICAgIGZ1bmN0aW9uIGZsdXNoVG9XYWxsZXQoYWRkcmVzcyB0b2tlbkFkZHJlc3MsIGJvb2wgaXM3MjEsIHVpbnQyNTYgdG9rZW5JZCkgZXh0ZXJuYWw7Cn0KCmludGVyZmFjZSBJTVZERnVuY3Rpb25hbGl0aWVzTWFuYWdlciB7CiAgICBmdW5jdGlvbiBpc0F1dGhvcml6ZWRGdW5jdGlvbmFsaXR5KGFkZHJlc3MgZnVuY3Rpb25hbGl0eSkgZXh0ZXJuYWwgdmlldyByZXR1cm5zKGJvb2wpOwp9CgppbnRlcmZhY2UgSVN0YXRlSG9sZGVyIHsKICAgIGZ1bmN0aW9uIGdldEJvb2woc3RyaW5nIGNhbGxkYXRhIHZhck5hbWUpIGV4dGVybmFsIHZpZXcgcmV0dXJucyAoYm9vbCk7CiAgICBmdW5jdGlvbiBzZXRCb29sKHN0cmluZyBjYWxsZGF0YSB2YXJOYW1lLCBib29sIHZhbCkgZXh0ZXJuYWwgcmV0dXJucyhib29sKTsKICAgIGZ1bmN0aW9uIHNldFVpbnQyNTYoc3RyaW5nIGNhbGxkYXRhIHZhck5hbWUsIHVpbnQyNTYgdmFsKSBleHRlcm5hbCByZXR1cm5zKHVpbnQyNTYpOwogICAgZnVuY3Rpb24gY2xlYXIoc3RyaW5nIGNhbGxkYXRhIHZhck5hbWUpIGV4dGVybmFsIHJldHVybnMoc3RyaW5nIG1lbW9yeSBvbGREYXRhVHlwZSwgYnl0ZXMgbWVtb3J5IG9sZFZhbCk7Cn0KCmludGVyZmFjZSBJRVJDMjAgewogICAgZnVuY3Rpb24gbWludCh1aW50MjU2IGFtb3VudCkgZXh0ZXJuYWw7CiAgICBmdW5jdGlvbiBiYWxhbmNlT2YoYWRkcmVzcyBhY2NvdW50KSBleHRlcm5hbCB2aWV3IHJldHVybnMgKHVpbnQyNTYpOwp9