diff --git a/kroma-bindings/artifacts.json b/kroma-bindings/artifacts.json index ab8253db0..640bc7f52 100644 --- a/kroma-bindings/artifacts.json +++ b/kroma-bindings/artifacts.json @@ -20,6 +20,7 @@ "L2OutputOracle", "L2StandardBridge", "L2ToL1MessagePasser", + "MintManager", "ProtocolVault", "Proxy", "ProxyAdmin", diff --git a/kroma-bindings/bindings/colosseum_more.go b/kroma-bindings/bindings/colosseum_more.go index c03ff55f2..ae70d24de 100644 --- a/kroma-bindings/bindings/colosseum_more.go +++ b/kroma-bindings/bindings/colosseum_more.go @@ -16,6 +16,7 @@ var ColosseumStorageLayout = new(solc.StorageLayout) var ColosseumDeployedBin = "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c8063887c560f116100ee578063cfb4474d11610097578063e39a219c11610071578063e39a219c1461053f578063e58932b314610552578063e9371a2c14610572578063fc9d84df1461059257600080fd5b8063cfb4474d146104ca578063d2ee3075146104f1578063d5145ebc1461051857600080fd5b8063a41483e3116100c8578063a41483e314610491578063a6ade11f146104a4578063b8b1a27c146104b757600080fd5b8063887c560f146104305780638f3a6c88146104435780639ded39521461046a57600080fd5b8063461569b81161015b5780635865b607116101355780635865b607146103d057806362fc00db146103f75780636fe0e5591461040a57806380ab13131461041d57600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610219610204366004614878565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c6102373660046148a6565b6105a5565b005b6102aa61024c3660046148a6565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101ed565b61021961035b366004614878565b61066f565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6103c36040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ed919061492e565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c610405366004614941565b610764565b61023c610418366004614a65565b610ab2565b61023c61042b366004614b47565b610c2c565b61021961043e3660046148a6565b61159b565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b6101d97f000000000000000000000000000000000000000000000000000000000000000081565b61023c61049f366004614878565b6115d0565b61023c6104b2366004614bf8565b61170d565b61033f6104c5366004614c62565b611b31565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b61023c61054d366004614878565b611bae565b6105656105603660046148a6565b611f70565b6040516101ed9190614c85565b6105856105803660046148a6565b61207d565b6040516101ed9190614d64565b61023c6105a0366004614da5565b6120a8565b60008281526002602090815260408083206001600160a01b03851684529091528120906105d182612a0f565b905060038160058111156105e7576105e7614d35565b1461065f5760405162461bcd60e51b815260206004820152603c60248201527f436f6c6f737365756d3a2063616e206f6e6c792062652063616c6c656420696660448201527f20746865206368616c6c656e67657220697320696e2074696d6f75740000000060648201526084015b60405180910390fd5b6106698484612aec565b50505050565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190614e09565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff1661075b9190614eb0565b10159392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108025760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b816108755760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a2063616e6e6f7420726f6c6c6261636b206f7574707560448201527f7420746f207a65726f20686173680000000000000000000000000000000000006064820152608401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156108f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091a9190614e09565b60200151146109915760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a206f6e6c792063616e20726f6c6c6261636b2069662060448201527f746865206f757470757420686173206265656e2064656c6574656400000000006064820152608401610656565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fe664672300000000000000000000000000000000000000000000000000000000815260048101869052602481018390526001600160a01b0384811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b50505050836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610aa391815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610ad25750600054600160ff909116105b80610aec5750303b158015610aec575060005460ff166001145b610b5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610656565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610bbc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610bc582612ee5565b8015610c2857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810188905287907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd09190614ec8565b15610d695760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000888152600260209081526040808320338452909152812090610d8c82612a0f565b6001830154909150610da9908b906001600160a01b031683613075565b15610db5575050611591565b6005816005811115610dc957610dc9614d35565b1480610de657506004816005811115610de457610de4614d35565b145b610e585760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a20696d706f737369626c6520746f2070726f7665207460448201527f6865206661756c7420696e2063757272656e74207374617475730000000000006064820152608401610656565b6000610e71610e6c368b90038b018b614eea565b613406565b90506000610e8a610e6c368c90038c0160a08d01614eea565b9050610e9d8b8584848e60a081016134db565b610ec68a60a08101610eb3610140830183614f5a565b610ec16101608f018f614f98565b613697565b610ef8610ed76101c08c018c614fcc565b8c61018001358d6101a001358e60a001604001358f60a001602001356137db565b6000610f1560208c0135610f106101408e018e614f5a565b61394b565b60008181526003602052604090205490915060ff1615610fc35760405162461bcd60e51b815260206004820152604c60248201527f436f6c6f737365756d3a207075626c696320696e70757420746861742068617360448201527f20616c7265616479206265656e2076616c6964617465642063616e6e6f74206260648201527f65207573656420616761696e0000000000000000000000000000000000000000608482015260a401610656565b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634292dc3e90611030908d908d908d908d908890600401615083565b602060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190614ec8565b6110bd5760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a20696e76616c69642070726f6f6600000000000000006044820152606401610656565b60405142815233908e907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018e90526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190614e09565b905060006362fc00db60e01b8f338960000160099054906101000a90046001600160a01b03168560200151876040516024016112039594939291909485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263080b91ee926112d592919086906004016150bd565b600060405180830381600087803b1580156112ef57600080fd5b505af1158015611303573d6000803e3d6000fd5b50505050505060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008e81526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a8154906001600160a01b0302191690556001820160006101000a8154906001600160a01b0302191690556002820160006113df91906147fa565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018f905260248201523360448201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e664672390606401600060405180830381600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151091906150f7565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018f90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b15801561157357600080fd5b505af1158015611587573d6000803e3d6000fd5b5050505050505050505b5050505050505050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c6816139fe565b9150505b92915050565b60008181526002602090815260408083203384529091528120906115f382612a0f565b9050600081600581111561160957611609614d35565b0361167c5760405162461bcd60e51b815260206004820152602760248201527f436f6c6f737365756d3a20746865206368616c6c656e676520646f6573206e6f60448201527f74206578697374000000000000000000000000000000000000000000000000006064820152608401610656565b60018201546116969084906001600160a01b031683613075565b6117085760405162461bcd60e51b815260206004820152602860248201527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c65640000000000000000000000000000000000000000000000006064820152608401610656565b505050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa15801561178d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b19190614ec8565b1561184a5760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b60008681526002602090815260408083206001600160a01b038916845290915281209061187682612a0f565b60018301549091506118939089906001600160a01b031683613075565b1561189f575050611b29565b600060018260058111156118b5576118b5614d35565b036118ce575060018201546001600160a01b0316611901565b60028260058111156118e2576118e2614d35565b0361190157508154690100000000000000000090046001600160a01b03165b336001600160a01b038216146119595760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a206e6f7420796f7572207475726e00000000000000006044820152606401610656565b825460009061196c9060ff166001615114565b90506119f781856002018a8154811061198757611987615139565b9060005260206000200154866002018b60016119a39190614eb0565b815481106119b3576119b3615139565b90600052602060002001548a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613a1292505050565b6000611a0285613bb8565b90506000611a10828b615168565b8660040154611a1f9190614eb0565b9050611a62868a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250879150613be49050565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416178655611a9686613c0e565b6040805160ff851681524260208201526001600160a01b038d16918e917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611ae7866139fe565b611b22576040516001600160a01b038c16908d907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b5050505050505b505050505050565b6000600160ff83161015611b875760405162461bcd60e51b815260206004820152601760248201527f436f6c6f737365756d3a20696e76616c6964207475726e0000000000000000006044820152606401610656565b60016000611b9582856151a5565b60ff168152602001908152602001600020549050919050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c4c5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810182905281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf09190614ec8565b15611d895760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2e9190614e09565b6020810151909150611ea85760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a20746865206f75747075742068617320616c7265616460448201527f79206265656e2064656c657465640000000000000000000000000000000000006064820152608401610656565b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063e6646723906064015b600060405180830381600087803b158015611f5357600080fd5b505af1158015611f67573d6000803e3d6000fd5b50505050505050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c081019190915260008381526002602081815260408084206001600160a01b03808816865290835293819020815160e081018352815460ff8116825267ffffffffffffffff6101008204168286015269010000000000000000009004861681840152600182015490951660608601529283018054825181850281018501909352808352608086019383018282801561205857602002820191906000526020600020905b815481526020019060010190808311612044575b5050505050815260200160038201548152602001600482015481525050905092915050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c681612a0f565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214c9190614ec8565b156121e55760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000861161225b5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722067656e6573697360448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b600086815260026020908152604080832033845290915290208054600160ff9091161061234857600061228d82612a0f565b905060038160058111156122a3576122a3614d35565b1461233c5760405162461bcd60e51b815260206004820152604660248201527f436f6c6f737365756d3a20746865206368616c6c656e676520666f722067697660448201527f656e206f757470757420696e64657820697320616c726561647920696e20707260648201527f6f67726573730000000000000000000000000000000000000000000000000000608482015260a401610656565b6123468833612aec565b505b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa1580156123c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ed9190614e09565b9050427f000000000000000000000000000000000000000000000000000000000000000082604001516fffffffffffffffffffffffffffffffff166124329190614eb0565b10156124a65760405162461bcd60e51b815260206004820152603e60248201527f436f6c6f737365756d3a2063616e6e6f74206372656174652061206368616c6c60448201527f656e676520616674657220746865206372656174696f6e20706572696f6400006064820152608401610656565b602081015161251d5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722064656c6574656460448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b80516001600160a01b0316330361259c5760405162461bcd60e51b815260206004820152603860248201527f436f6c6f737365756d3a2074686520617373657274657220616e64206368616c60448201527f6c656e676572206d75737420626520646966666572656e7400000000000000006064820152608401610656565b86158015906125ab5750854015155b1561264d578686401461264d5760405162461bcd60e51b8152602060048201526044602482018190527f436f6c6f737365756d3a20626c6f636b206861736820646f6573206e6f74206d908201527f617463682074686520686173682061742074686520657870656374656420686560648201527f6967687400000000000000000000000000000000000000000000000000000000608482015260a401610656565b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761268960018c6151c8565b6040518263ffffffff1660e01b81526004016126a791815260200190565b608060405180830381865afa1580156126c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e89190614e09565b60208101519091506127565761275160018787600081811061270c5761270c615139565b905060200201358460200151898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613a1292505050565b61279e565b61279e600182602001518460200151898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613a1292505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282091906150f7565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018b90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b5050505061293a838787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050606086015161291491507f0000000000000000000000000000000000000000000000000000000000000000906fffffffffffffffffffffffffffffffff166151c8565b7f0000000000000000000000000000000000000000000000000000000000000000613be4565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556129b283613c0e565b815160405142815233916001600160a01b0316908b907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a4505050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612a2957506000919050565b8154600090612a3a9060ff16613caf565b8354909150610100900467ffffffffffffffff16421115612ac0578015612a645750600392915050565b8254612aa990612aa4907f000000000000000000000000000000000000000000000000000000000000000090610100900467ffffffffffffffff16614eb0565b421190565b15612ab75750600392915050565b50600492915050565b612ac9836139fe565b612ad65750600592915050565b80612ae2576002612ae5565b60015b9392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612b6c908301826147fa565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612bba91815260200190565b60405180910390a36040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c649190614ec8565b15612dea576040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a25ae55790602401608060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e9190614e09565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9291906150f7565b81516040517f36b83469000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03858116602483015291821660448201529116906336b8346990606401611f39565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6c91906150f7565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d90604401600060405180830381600087803b158015612ed157600080fd5b505af1158015611b29573d6000803e3d6000fd5b60028151612ef3919061520e565b15612f665760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d6265720000000000006064820152608401610656565b600160005b8251811015612fdf57828181518110612f8657612f86615139565b602002602001015160016000838152602001908152602001600020819055506001838281518110612fb957612fb9615139565b6020026020010151612fcb91906151c8565b612fd59083615168565b9150600101612f6b565b507f00000000000000000000000000000000000000000000000000000000000000008114610c285760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74687300000000000000000000000000000000000000000000000000000000006064820152608401610656565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401608060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c9190614e09565b6020015190508015613132576000915050612ae5565b336001600160a01b038516146131b05760405162461bcd60e51b815260206004820152602560248201527f436f6c6f737365756d3a2073656e646572206973206e6f742061206368616c6c60448201527f656e6765720000000000000000000000000000000000000000000000000000006064820152608401610656565b60038360058111156131c4576131c4614d35565b03613239576040805162461bcd60e51b81526020600482015260248101919091527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c6564206966206368616c6c656e6765722074696d6564206f75746064820152608401610656565b6000858152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591906132b0908301826147fa565b50600060038201819055600490910155604051428152339086907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613355573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337991906150f7565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101879052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50600198975050505050505050565b80516000906134685781516020808401516040808601516060808801516080808a0151855180890199909952888601969096529187019290925285015260a0808501929092528051808503909201825260c090930190925281519101206115ca565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e000000000000000000000000000000000000000000006064820152608401610656565b919050565b838560020187815481106134f1576134f1615139565b90600052602060002001541461356f5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2074686520736f75726365207365676d656e74206d7560448201527f7374206265206d617463686564000000000000000000000000000000000000006064820152608401610656565b613578856139fe565b61361a57826002860161358c886001614eb0565b8154811061359c5761359c615139565b90600052602060002001540361361a5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a207468652064657374696e6174696f6e207365676d6560448201527f6e74206d757374206e6f74206265206d617463686564000000000000000000006064820152608401610656565b8060600135826080013514611b295760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b82602001358260e00135146137145760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520737461746520726f6f74206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b600061018083013561373f5761373a61372c846152a0565b613735846153fa565b613cc6565b613759565b61375961374b846152a0565b613754846153fa565b613d6a565b9050808560800135146137d45760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a2074686520626c6f636b20686173682066726f6d207060448201527f75626c696320696e707574206d757374206265206d61746368656400000000006064820152608401610656565b5050505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312e64a7290613898907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a40161559b565b602060405180830381865afa1580156138b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d99190614ec8565b611f675760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a20696e76616c6964204c32546f4c314d65737361676560448201527f50617373657220696e636c7573696f6e2070726f6f66000000000000000000006064820152608401610656565b600060607f000000000000000000000000000000000000000000000000000000000000000061397e610120850185614fcc565b905010156139eb576139e87f00000000000000000000000000000000000000000000000000000000000000006139b8610120860186614fcc565b6139e391507f00000000000000000000000000000000000000000000000000000000000000006151c8565b613e7b565b90505b6115c6846139f8856152a0565b83613f07565b60006001613a0b83613bb8565b1192915050565b805180613a1e86611b31565b14613a915760405162461bcd60e51b815260206004820152602260248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74680000000000000000000000000000000000000000000000000000000000006064820152608401610656565b81600081518110613aa457613aa4615139565b60200260200101518414613b205760405162461bcd60e51b815260206004820152602c60248201527f436f6c6f737365756d3a20746865206669727374207365676d656e74206d757360448201527f74206265206d61746368656400000000000000000000000000000000000000006064820152608401610656565b81613b2c6001836151c8565b81518110613b3c57613b3c615139565b602002602001015183036137d45760405162461bcd60e51b815260206004820152602f60248201527f436f6c6f737365756d3a20746865206c617374207365676d656e74206d75737460448201527f206e6f74206265206d61746368656400000000000000000000000000000000006064820152608401610656565b805460009060ff166001613bcb82611b31565b613bd591906151c8565b8360030154612ae59190615676565b8251613bf99060028601906020860190614818565b50600484019190915560039092019190915550565b613c17816139fe565b613c8257613c457f000000000000000000000000000000000000000000000000000000000000000042614eb0565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b613c457f000000000000000000000000000000000000000000000000000000000000000042614eb0565b50565b6000613cbc60028361568a565b60ff161592915050565b6040805160118082526102408201909252600091829190816020015b6060815260200190600190039081613ce2579050509050613d04848483613f79565b613d33846101000151604051602001613d1f91815260200190565b60405160208183030381529060405261422c565b81601081518110613d4657613d46615139565b6020026020010181905250613d5a8161429b565b8051906020012091505092915050565b6040805160148082526102a08201909252600091829190816020015b6060815260200190600190039081613d86579050509050613da8848483613f79565b613dc3846101000151604051602001613d1f91815260200190565b81601081518110613dd657613dd6615139565b6020026020010181905250613df984610140015167ffffffffffffffff166142df565b81601181518110613e0c57613e0c615139565b6020026020010181905250613e2f84610160015167ffffffffffffffff166142df565b81601281518110613e4257613e42615139565b6020026020010181905250613e68846101800151604051602001613d1f91815260200190565b81601381518110613d4657613d46615139565b606060008267ffffffffffffffff811115613e9857613e98614993565b604051908082528060200260200182016040528015613ec1578160200160208202803683370190505b50905060005b83811015613eff5784828281518110613ee257613ee2615139565b602090810291909101015280613ef7816156ac565b915050613ec7565b509392505050565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001613f5a9c9b9a99989796959493929190615717565b6040516020818303038152906040528051906020012090509392505050565b613f938360200151604051602001613d1f91815260200190565b81600081518110613fa657613fa6615139565b6020026020010181905250816000015181600181518110613fc957613fc9615139565b6020026020010181905250816020015181600281518110613fec57613fec615139565b60200260200101819052506140118360e00151604051602001613d1f91815260200190565b8160038151811061402457614024615139565b60200260200101819052506140498360c00151604051602001613d1f91815260200190565b8160048151811061405c5761405c615139565b602002602001018190525081604001518160058151811061407f5761407f615139565b60200260200101819052508160600151816006815181106140a2576140a2615139565b60200260200101819052508160800151816007815181106140c5576140c5615139565b60200260200101819052506140e7836060015167ffffffffffffffff166142df565b816008815181106140fa576140fa615139565b602002602001018190525061411c836080015167ffffffffffffffff166142df565b8160098151811061412f5761412f615139565b60200260200101819052508160a0015181600a8151811061415257614152615139565b6020026020010181905250614174836040015167ffffffffffffffff166142df565b81600b8151811061418757614187615139565b60200260200101819052508160c0015181600c815181106141aa576141aa615139565b60200260200101819052508160e0015181600d815181106141cd576141cd615139565b602002602001018190525081610100015181600e815181106141f1576141f1615139565b60200260200101819052506142098360a001516142df565b81600f8151811061421c5761421c615139565b6020026020010181905250505050565b6060808251600114801561425a575060808360008151811061425057614250615139565b016020015160f81c105b156142665750816115ca565b614272835160806142f2565b836040516020016142849291906157d0565b604051602081830303815290604052905092915050565b606060006142a8836144e8565b90506142b6815160c06142f2565b816040516020016142c89291906157d0565b604051602081830303815290604052915050919050565b60606115ca6142ed83614620565b61422c565b606080603884101561437157604080516001808252818301909252906020820181803683370190505090506143278385615114565b60f81b8160008151811061433d5761433d615139565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612ae5565b600060015b6143808187615676565b156143a6578161438f816156ac565b925061439f905061010082615168565b9050614376565b6143b1826001614eb0565b67ffffffffffffffff8111156143c9576143c9614993565b6040519080825280601f01601f1916602001820160405280156143f3576020820181803683370190505b5092506144008583615114565b61440b906037615114565b60f81b8360008151811061442157614421615139565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116144df5761010061446982846151c8565b6144759061010061591f565b61447f9088615676565b614489919061520e565b60f81b83828151811061449e5761449e615139565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806144d7816156ac565b915050614455565b50509392505050565b6060815160000361450757505060408051600081526020810190915290565b6000805b835181101561454e5783818151811061452657614526615139565b6020026020010151518261453a9190614eb0565b915080614546816156ac565b91505061450b565b60008267ffffffffffffffff81111561456957614569614993565b6040519080825280601f01601f191660200182016040528015614593576020820181803683370190505b50600092509050602081015b85518310156146175760008684815181106145bc576145bc615139565b6020026020010151905060006020820190506145da8382845161477f565b8785815181106145ec576145ec615139565b602002602001015151836146009190614eb0565b92505050828061460f906156ac565b93505061459f565b50949350505050565b606060008260405160200161463791815260200190565b604051602081830303815290604052905060005b60208110156146a65781818151811061466657614666615139565b01602001517fff00000000000000000000000000000000000000000000000000000000000000166000036146a6578061469e816156ac565b91505061464b565b60006146b38260206151c8565b67ffffffffffffffff8111156146cb576146cb614993565b6040519080825280601f01601f1916602001820160405280156146f5576020820181803683370190505b50905060005b815181101561461757838361470f816156ac565b94508151811061472157614721615139565b602001015160f81c60f81b82828151811061473e5761473e615139565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080614777816156ac565b9150506146fb565b8282825b602081106147bb578151835261479a602084614eb0565b92506147a7602083614eb0565b91506147b46020826151c8565b9050614783565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b5080546000825590600052602060002090810190613cac9190614863565b828054828255906000526020600020908101928215614853579160200282015b82811115614853578251825591602001919060010190614838565b5061485f929150614863565b5090565b5b8082111561485f5760008155600101614864565b60006020828403121561488a57600080fd5b5035919050565b6001600160a01b0381168114613cac57600080fd5b600080604083850312156148b957600080fd5b8235915060208301356148cb81614891565b809150509250929050565b60005b838110156148f15781810151838201526020016148d9565b838111156106695750506000910152565b6000815180845261491a8160208601602086016148d6565b601f01601f19169290920160200192915050565b602081526000612ae56020830184614902565b600080600080600060a0868803121561495957600080fd5b85359450602086013561496b81614891565b9350604086013561497b81614891565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff811182821017156149e6576149e6614993565b60405290565b604051610120810167ffffffffffffffff811182821017156149e6576149e6614993565b604051601f8201601f1916810167ffffffffffffffff81118282101715614a3957614a39614993565b604052919050565b600067ffffffffffffffff821115614a5b57614a5b614993565b5060051b60200190565b60006020808385031215614a7857600080fd5b823567ffffffffffffffff811115614a8f57600080fd5b8301601f81018513614aa057600080fd5b8035614ab3614aae82614a41565b614a10565b81815260059190911b82018301908381019087831115614ad257600080fd5b928401925b82841015614af057833582529284019290840190614ad7565b979650505050505050565b60008083601f840112614b0d57600080fd5b50813567ffffffffffffffff811115614b2557600080fd5b6020830191508360208260051b8501011115614b4057600080fd5b9250929050565b600080600080600080600060a0888a031215614b6257600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115614b8857600080fd5b908901906101e0828c031215614b9d57600080fd5b90955060608901359080821115614bb357600080fd5b614bbf8b838c01614afb565b909650945060808a0135915080821115614bd857600080fd5b50614be58a828b01614afb565b989b979a50959850939692959293505050565b600080600080600060808688031215614c1057600080fd5b853594506020860135614c2281614891565b935060408601359250606086013567ffffffffffffffff811115614c4557600080fd5b614c5188828901614afb565b969995985093965092949392505050565b600060208284031215614c7457600080fd5b813560ff81168114612ae557600080fd5b60006020808352610100830160ff8551168285015267ffffffffffffffff8286015116604085015260408501516001600160a01b0380821660608701528060608801511660808701525050608085015160e060a0860152818151808452610120870191508483019350600092505b80831015614d135783518252928401926001929092019190840190614cf3565b5060a087015160c087015260c087015160e08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614d9f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080600060808688031215614dbd57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614c4557600080fd5b80516fffffffffffffffffffffffffffffffff811681146134d657600080fd5b600060808284031215614e1b57600080fd5b6040516080810181811067ffffffffffffffff82111715614e3e57614e3e614993565b6040528251614e4c81614891565b815260208381015190820152614e6460408401614de9565b6040820152614e7560608401614de9565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614ec357614ec3614e81565b500190565b600060208284031215614eda57600080fd5b81518015158114612ae557600080fd5b600060a08284031215614efc57600080fd5b60405160a0810181811067ffffffffffffffff82111715614f1f57614f1f614993565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61833603018112614f8e57600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1833603018112614f8e57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261500157600080fd5b83018035915067ffffffffffffffff82111561501c57600080fd5b6020019150600581901b3603821315614b4057600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561506657600080fd5b8260051b8083602087013760009401602001938452509192915050565b606081526000615097606083018789615034565b82810360208401526150aa818688615034565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff831660208201526060604082015260006150ee6060830184614902565b95945050505050565b60006020828403121561510957600080fd5b8151612ae581614891565b600060ff821660ff84168060ff0382111561513157615131614e81565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156151a0576151a0614e81565b500290565b600060ff821660ff8416808210156151bf576151bf614e81565b90039392505050565b6000828210156151da576151da614e81565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261521d5761521d6151df565b500690565b803567ffffffffffffffff811681146134d657600080fd5b600082601f83011261524b57600080fd5b8135602061525b614aae83614a41565b82815260059290921b8401810191818101908684111561527a57600080fd5b8286015b84811015615295578035835291830191830161527e565b509695505050505050565b60006101a082360312156152b357600080fd5b6152bb6149c2565b82358152602083013560208201526152d560408401615222565b60408201526152e660608401615222565b60608201526152f760808401615222565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff81111561534257600080fd5b61534e3682870161523a565b828401525050610140615362818501615222565b90820152610160615374848201615222565b9082015261018092830135928101929092525090565b600082601f83011261539b57600080fd5b813567ffffffffffffffff8111156153b5576153b5614993565b6153c86020601f19601f84011601614a10565b8181528460208386010111156153dd57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120823603121561540d57600080fd5b6154156149ec565b823567ffffffffffffffff8082111561542d57600080fd5b6154393683870161538a565b8352602085013591508082111561544f57600080fd5b61545b3683870161538a565b6020840152604085013591508082111561547457600080fd5b6154803683870161538a565b6040840152606085013591508082111561549957600080fd5b6154a53683870161538a565b606084015260808501359150808211156154be57600080fd5b6154ca3683870161538a565b608084015260a08501359150808211156154e357600080fd5b6154ef3683870161538a565b60a084015260c085013591508082111561550857600080fd5b6155143683870161538a565b60c084015260e085013591508082111561552d57600080fd5b6155393683870161538a565b60e08401526101009150818501358181111561555457600080fd5b6155603682880161538a565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b858152600060206080818401526155b56080840188614902565b8381036040850152858152818101600587901b820183018860005b8981101561565d57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c360301811261561357600080fd5b8b01868101903567ffffffffffffffff81111561562f57600080fd5b80360382131561563e57600080fd5b615649858284615570565b9588019594505050908501906001016155d0565b5050809450505050508260608301529695505050505050565b600082615685576156856151df565b500490565b600060ff83168061569d5761569d6151df565b8060ff84160691505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036156dd576156dd614e81565b5060010190565b60008151602080840160005b8381101561570c578151875295820195908201906001016156f0565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d88301526157be6157b860da8401866156e4565b846156e4565b9e9d5050505050505050505050505050565b600083516157e28184602088016148d6565b8351908301906157f68183602088016148d6565b01949350505050565b600181815b8085111561585857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561583e5761583e614e81565b8085161561584b57918102915b93841c9390800290615804565b509250929050565b60008261586f575060016115ca565b8161587c575060006115ca565b8160018114615892576002811461589c576158b8565b60019150506115ca565b60ff8411156158ad576158ad614e81565b50506001821b6115ca565b5060208310610133831016604e8410600b84101617156158db575081810a6115ca565b6158e583836157ff565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561591757615917614e81565b029392505050565b6000612ae5838361586056fea164736f6c634300080f000a" + func init() { if err := json.Unmarshal([]byte(ColosseumStorageLayoutJSON), ColosseumStorageLayout); err != nil { panic(err) diff --git a/kroma-bindings/bindings/gaspriceoracle_more.go b/kroma-bindings/bindings/gaspriceoracle_more.go index 44f04c100..ca3b70a8d 100644 --- a/kroma-bindings/bindings/gaspriceoracle_more.go +++ b/kroma-bindings/bindings/gaspriceoracle_more.go @@ -15,6 +15,7 @@ var GasPriceOracleStorageLayout = new(solc.StorageLayout) var GasPriceOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806354fd4d5011610097578063de26c4a111610066578063de26c4a1146101da578063f45e65d8146101ed578063f8206140146101f5578063fe173b97146101cc57600080fd5b806354fd4d501461016657806368d5dca6146101af5780636ef25c3a146101cc578063c5985918146101d257600080fd5b8063313ce567116100d3578063313ce5671461012757806349948e0e1461012e5780634ef6e22414610141578063519b4bd31461015e57600080fd5b80630c18c162146100fa57806322b90ab3146101155780632e0f26251461011f575b600080fd5b6101026101fd565b6040519081526020015b60405180910390f35b61011d61031e565b005b610102600681565b6006610102565b61010261013c366004610b73565b610541565b60005461014e9060ff1681565b604051901515815260200161010c565b610102610565565b6101a26040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b60405161010c9190610c42565b6101b76105c6565b60405163ffffffff909116815260200161010c565b48610102565b6101b761064b565b6101026101e8366004610b73565b6106ac565b610102610760565b610102610853565b6000805460ff1615610296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f47617350726963654f7261636c653a206f76657268656164282920697320646560448201527f707265636174656400000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16638b239f736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103199190610cb5565b905090565b73420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663e591b2826040518163ffffffff1660e01b8152600401602060405180830381865afa15801561037d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a19190610cce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f47617350726963654f7261636c653a206f6e6c7920746865206465706f73697460448201527f6f72206163636f756e742063616e2073657420697345636f746f6e6520666c6160648201527f6700000000000000000000000000000000000000000000000000000000000000608482015260a40161028d565b60005460ff1615610514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f47617350726963654f7261636c653a2045636f746f6e6520616c72656164792060448201527f6163746976650000000000000000000000000000000000000000000000000000606482015260840161028d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000805460ff161561055c57610556826108b4565b92915050565b61055682610958565b600073420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16635cf249696040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f5573d6000803e3d6000fd5b600073420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff166368d5dca66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610627573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103199190610d04565b600073420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663c59859186040518163ffffffff1660e01b8152600401602060405180830381865afa158015610627573d6000803e3d6000fd5b6000806106b883610ab4565b60005490915060ff16156106cc5792915050565b73420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16638b239f736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074f9190610cb5565b6107599082610d59565b9392505050565b6000805460ff16156107f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f47617350726963654f7261636c653a207363616c61722829206973206465707260448201527f6563617465640000000000000000000000000000000000000000000000000000606482015260840161028d565b73420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16639e8c49666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f5573d6000803e3d6000fd5b600073420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff1663f82061406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f5573d6000803e3d6000fd5b6000806108c083610ab4565b905060006108cc610565565b6108d461064b565b6108df906010610d71565b63ffffffff166108ef9190610d9d565b905060006108fb610853565b6109036105c6565b63ffffffff166109139190610d9d565b905060006109218284610d59565b61092b9085610d9d565b90506109396006600a610efa565b610944906010610d9d565b61094e9082610f06565b9695505050505050565b60008061096483610ab4565b9050600073420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16639e8c49666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190610cb5565b6109f3610565565b73420000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff16638b239f736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a769190610cb5565b610a809085610d59565b610a8a9190610d9d565b610a949190610d9d565b9050610aa26006600a610efa565b610aac9082610f06565b949350505050565b80516000908190815b81811015610b3757848181518110610ad757610ad7610f41565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003610b1757610b10600484610d59565b9250610b25565b610b22601084610d59565b92505b80610b2f81610f70565b915050610abd565b50610aac82610440610d59565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610b8557600080fd5b813567ffffffffffffffff80821115610b9d57600080fd5b818401915084601f830112610bb157600080fd5b813581811115610bc357610bc3610b44565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610c0957610c09610b44565b81604052828152876020848701011115610c2257600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b81811015610c6f57858101830151858201604001528201610c53565b81811115610c81576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060208284031215610cc757600080fd5b5051919050565b600060208284031215610ce057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461075957600080fd5b600060208284031215610d1657600080fd5b815163ffffffff8116811461075957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610d6c57610d6c610d2a565b500190565b600063ffffffff80831681851681830481118215151615610d9457610d94610d2a565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610dd557610dd5610d2a565b500290565b600181815b80851115610e3357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e1957610e19610d2a565b80851615610e2657918102915b93841c9390800290610ddf565b509250929050565b600082610e4a57506001610556565b81610e5757506000610556565b8160018114610e6d5760028114610e7757610e93565b6001915050610556565b60ff841115610e8857610e88610d2a565b50506001821b610556565b5060208310610133831016604e8410600b8410161715610eb6575081810a610556565b610ec08383610dda565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610ef257610ef2610d2a565b029392505050565b60006107598383610e3b565b600082610f3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610fa157610fa1610d2a565b506001019056fea164736f6c634300080f000a" + func init() { if err := json.Unmarshal([]byte(GasPriceOracleStorageLayoutJSON), GasPriceOracleStorageLayout); err != nil { panic(err) diff --git a/kroma-bindings/bindings/governancetoken.go b/kroma-bindings/bindings/governancetoken.go index decba9081..e94dd3514 100644 --- a/kroma-bindings/bindings/governancetoken.go +++ b/kroma-bindings/bindings/governancetoken.go @@ -37,8 +37,8 @@ type ERC20VotesCheckpoint struct { // GovernanceTokenMetaData contains all meta data concerning the GovernanceToken contract. var GovernanceTokenMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20Votes.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", - Bin: "0x6101606040523480156200001257600080fd5b50604051806040016040528060058152602001644b726f6d6160d81b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060058152602001644b726f6d6160d81b815250604051806040016040528060038152602001624b524f60e81b815250816003908162000097919062000320565b506004620000a6828262000320565b505050620000c46005836200018a60201b62000e1e1790919060201c565b61012052620000e18160066200018a602090811b62000e1e17901c565b61014052815160208084019190912060e052815190820120610100524660a0526200016f60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506200018433620001da565b62000469565b6000602083511015620001aa57620001a2836200022c565b9050620001d4565b82620001c1836200027860201b62000e4f1760201c565b90620001ce908262000320565b5060ff90505b92915050565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000263578260405163305a27a960e01b81526004016200025a9190620003ec565b60405180910390fd5b8051620002708262000444565b179392505050565b90565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a657607f821691505b602082108103620002c757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031b57600081815260208120601f850160051c81016020861015620002f65750805b601f850160051c820191505b81811015620003175782815560010162000302565b5050505b505050565b81516001600160401b038111156200033c576200033c6200027b565b62000354816200034d845462000291565b84620002cd565b602080601f8311600181146200038c5760008415620003735750858301515b600019600386901b1c1916600185901b17855562000317565b600085815260208120601f198616915b82811015620003bd578886015182559484019460019091019084016200039c565b5085821015620003dc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b818110156200041b57858101830151858201604001528201620003fd565b818111156200042e576000604083870101525b50601f01601f1916929092016040019392505050565b80516020808301519190811015620002c75760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516129f5620004c46000396000610809015260006107de01526000611309015260006112e10152600061123c015260006112660152600061129001526129f56000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf14610445578063dd62ed3e14610458578063f1127ed814610491578063f2fde38b146104e357600080fd5b80639ab24eb0146103f9578063a457c2d71461040c578063a9059cbb1461041f578063c3cda5201461043257600080fd5b80638da5cb5b116100de5780638da5cb5b146103ae5780638e539e8c146103bf57806391ddadf4146103d257806395d89b41146103f157600080fd5b8063715018a61461036557806379cc67901461036d5780637ecebe001461038057806384b0196e1461039357600080fd5b80633a46b1a811610187578063587cde1e11610156578063587cde1e146102bd5780635c19a95c146103015780636fcfff451461031457806370a082311461033c57600080fd5b80633a46b1a81461027a57806340c10f191461028d57806342966c68146102a25780634bf5d7e9146102b557600080fd5b806323b872dd116101c357806323b872dd1461023d578063313ce567146102505780633644e5151461025f578063395093511461026757600080fd5b806306fdde03146101ea578063095ea7b31461020857806318160ddd1461022b575b600080fd5b6101f26104f6565b6040516101ff9190612435565b60405180910390f35b61021b610216366004612464565b610588565b60405190151581526020016101ff565b6002545b6040519081526020016101ff565b61021b61024b36600461248e565b6105a2565b604051601281526020016101ff565b61022f6105c6565b61021b610275366004612464565b6105d5565b61022f610288366004612464565b610614565b6102a061029b366004612464565b6106a2565b005b6102a06102b03660046124ca565b6106b8565b6101f26106c5565b6102e96102cb3660046124e3565b6001600160a01b039081166000908152600960205260409020541690565b6040516001600160a01b0390911681526020016101ff565b6102a061030f3660046124e3565b61075d565b6103276103223660046124e3565b610767565b60405163ffffffff90911681526020016101ff565b61022f61034a3660046124e3565b6001600160a01b031660009081526020819052604090205490565b6102a0610789565b6102a061037b366004612464565b61079d565b61022f61038e3660046124e3565b6107b2565b61039b6107d0565b6040516101ff97969594939291906124fe565b600c546001600160a01b03166102e9565b61022f6103cd3660046124ca565b610875565b6103da6108e0565b60405165ffffffffffff90911681526020016101ff565b6101f26108eb565b61022f6104073660046124e3565b6108fa565b61021b61041a366004612464565b6109a6565b61021b61042d366004612464565b610a50565b6102a06104403660046125c1565b610a5e565b6102a0610453366004612619565b610b94565b61022f610466366004612683565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6104a461049f3660046126b6565b610cf8565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692810192909252016101ff565b6102a06104f13660046124e3565b610d91565b606060038054610505906126f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610531906126f6565b801561057e5780601f106105535761010080835404028352916020019161057e565b820191906000526020600020905b81548152906001019060200180831161056157829003601f168201915b5050505050905090565b600033610596818585610e52565b60019150505b92915050565b6000336105b0858285610faa565b6105bb85858561103c565b506001949350505050565b60006105d061122f565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610596908290869061060f908790612772565b610e52565b600061061e6108e0565b65ffffffffffff1682106106795760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600a6020526040902061069b908361135a565b9392505050565b6106aa61146d565b6106b482826114c7565b5050565b6106c233826114d1565b50565b6060436106d06108e0565b65ffffffffffff16146107255760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152606401610670565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106c233826114db565b6001600160a01b0381166000908152600a602052604081205461059c9061156c565b61079161146d565b61079b60006115ec565b565b6107a8823383610faa565b6106b482826114d1565b6001600160a01b03811660009081526007602052604081205461059c565b6000606080828080836108047f00000000000000000000000000000000000000000000000000000000000000006005611656565b61082f7f00000000000000000000000000000000000000000000000000000000000000006006611656565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600061087f6108e0565b65ffffffffffff1682106108d55760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000006044820152606401610670565b61059c600b8361135a565b60006105d0436116fa565b606060048054610505906126f6565b6001600160a01b0381166000908152600a6020526040812054801561097e576001600160a01b0383166000908152600a6020526040902080546000198301908110610947576109476127b9565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610981565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610a435760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610670565b6105bb8286868403610e52565b60003361059681858561103c565b83421115610aae5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610670565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610b2890610b209060a00160405160208183030381529060405280519060200120611778565b8585856117c0565b9050610b33816117e8565b8614610b815760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610670565b610b8b81886114db565b50505050505050565b83421115610be45760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610670565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c138c6117e8565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610c6e82611778565b90506000610c7e828787876117c0565b9050896001600160a01b0316816001600160a01b031614610ce15760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610670565b610cec8a8a8a610e52565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a60205260409020805463ffffffff8416908110610d3c57610d3c6127b9565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b610d9961146d565b6001600160a01b038116610e155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610670565b6106c2816115ec565b6000602083511015610e3a57610e3383611810565b905061059c565b81610e458482612836565b5060ff905061059c565b90565b6001600160a01b038316610ecd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b038216610f495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461103657818110156110295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610670565b6110368484848403610e52565b50505050565b6001600160a01b0383166110b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b0382166111345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b038316600090815260208190526040902054818110156111c35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361103684848461186c565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561128857507f000000000000000000000000000000000000000000000000000000000000000046145b156112b257507f000000000000000000000000000000000000000000000000000000000000000090565b6105d0604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b8154600090818160058111156113b457600061137584611877565b61137f9085612914565b600088815260209020909150869082015463ffffffff1611156113a4578091506113b2565b6113af816001612772565b92505b505b808210156114015760006113c8838361195f565b600088815260209020909150869082015463ffffffff1611156113ed578091506113fb565b6113f8816001612772565b92505b506113b4565b8015611442576000868152602090208101600019015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611445565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169695505050505050565b600c546001600160a01b0316331461079b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610670565b6106b4828261197a565b6106b48282611a26565b6001600160a01b038281166000818152600960208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611036828483611a3e565b600063ffffffff8211156115e85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610670565b5090565b600c80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff831461166957610e3383611b7b565b818054611675906126f6565b80601f01602080910402602001604051908101604052809291908181526020018280546116a1906126f6565b80156116ee5780601f106116c3576101008083540402835291602001916116ee565b820191906000526020600020905b8154815290600101906020018083116116d157829003601f168201915b5050505050905061059c565b600065ffffffffffff8211156115e85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152608401610670565b600061059c61178561122f565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006117d187878787611bba565b915091506117de81611c9c565b5095945050505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b600080829050601f8151111561185457826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016106709190612435565b805161185f8261292b565b179392505050565b505050565b611867838383611e01565b60008160000361188957506000919050565b6000600161189684611e33565b901c6001901b905060018184816118af576118af61294f565b048201901c905060018184816118c7576118c761294f565b048201901c905060018184816118df576118df61294f565b048201901c905060018184816118f7576118f761294f565b048201901c9050600181848161190f5761190f61294f565b048201901c905060018184816119275761192761294f565b048201901c9050600181848161193f5761193f61294f565b048201901c905061069b818285816119595761195961294f565b04611ec7565b600061196e600284841861297e565b61069b90848416612772565b6119848282611edd565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611a185760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610670565b611036600b611fa483611fb0565b611a308282612179565b611036600b6122e983611fb0565b816001600160a01b0316836001600160a01b031614158015611a605750600081115b15611867576001600160a01b03831615611aee576001600160a01b0383166000908152600a602052604081208190611a9b906122e985611fb0565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611ae3929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611867576001600160a01b0382166000908152600a602052604081208190611b2490611fa485611fb0565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611b6c929190918252602082015260400190565b60405180910390a25050505050565b60606000611b88836122f5565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611bf15750600090506003611c93565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c45573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116611c8c57600060019250925050611c93565b9150600090505b94509492505050565b6000816004811115611cb057611cb06129b9565b03611cb85750565b6001816004811115611ccc57611ccc6129b9565b03611d195760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610670565b6002816004811115611d2d57611d2d6129b9565b03611d7a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610670565b6003816004811115611d8e57611d8e6129b9565b036106c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b0383811660009081526009602052604080822054858416835291205461186792918216911683611a3e565b600080608083901c15611e4857608092831c92015b604083901c15611e5a57604092831c92015b602083901c15611e6c57602092831c92015b601083901c15611e7e57601092831c92015b600883901c15611e9057600892831c92015b600483901c15611ea257600492831c92015b600283901c15611eb457600292831c92015b600183901c1561059c5760010192915050565b6000818310611ed6578161069b565b5090919050565b6001600160a01b038216611f335760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610670565b8060026000828254611f459190612772565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36106b46000838361186c565b600061069b8284612772565b825460009081908181156120125760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020820152612027565b60408051808201909152600080825260208201525b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935061205c84868863ffffffff16565b925060008211801561208657506120716108e0565b65ffffffffffff16816000015163ffffffff16145b156120e05761209483612336565b60008881526020902083016000190180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff90921691909117905561216f565b8660405180604001604052806121046120f76108e0565b65ffffffffffff1661156c565b63ffffffff16815260200161211886612336565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6001600160a01b0382166121f55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b038216600090815260208190526040902054818110156122845760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36118678360008461186c565b600061069b8284612914565b600060ff8216601f81111561059c576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156115e85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610670565b6000815180845260005b818110156123f0576020818501810151868301820152016123d4565b81811115612402576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069b60208301846123ca565b80356001600160a01b038116811461245f57600080fd5b919050565b6000806040838503121561247757600080fd5b61248083612448565b946020939093013593505050565b6000806000606084860312156124a357600080fd5b6124ac84612448565b92506124ba60208501612448565b9150604084013590509250925092565b6000602082840312156124dc57600080fd5b5035919050565b6000602082840312156124f557600080fd5b61069b82612448565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261253a60e084018a6123ca565b838103604085015261254c818a6123ca565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561259e57835183529284019291840191600101612582565b50909c9b505050505050505050505050565b803560ff8116811461245f57600080fd5b60008060008060008060c087890312156125da57600080fd5b6125e387612448565b955060208701359450604087013593506125ff606088016125b0565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561263457600080fd5b61263d88612448565b965061264b60208901612448565b95506040880135945060608801359350612667608089016125b0565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561269657600080fd5b61269f83612448565b91506126ad60208401612448565b90509250929050565b600080604083850312156126c957600080fd5b6126d283612448565b9150602083013563ffffffff811681146126eb57600080fd5b809150509250929050565b600181811c9082168061270a57607f821691505b60208210810361180a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561278557612785612743565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561186757600081815260208120601f850160051c8101602086101561280f5750805b601f850160051c820191505b8181101561282e5782815560010161281b565b505050505050565b815167ffffffffffffffff8111156128505761285061278a565b6128648161285e84546126f6565b846127e8565b602080601f83116001811461289957600084156128815750858301515b600019600386901b1c1916600185901b17855561282e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156128e6578886015182559484019460019091019084016128c7565b50858210156129045787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008282101561292657612926612743565b500390565b8051602080830151919081101561180a5760001960209190910360031b1b16919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826129b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_remoteToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_mintManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BRIDGE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MINT_MANAGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"REMOTE_TOKEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20Votes.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"_interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Burn\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Mint\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", + Bin: "0x6101c06040523480156200001257600080fd5b506040516200311038038062003110833981016040819052620000359162000286565b604051806040016040528060058152602001644b726f6d6160d81b81525080604051806040016040528060018152602001603160f81b8152508585604051806040016040528060058152602001644b726f6d6160d81b815250604051806040016040528060038152602001624b524f60e81b81525081818160039081620000bd919062000375565b506004620000cc828262000375565b505050506001600160a01b03918216608052501660a052620000fc826005620001ca602090811b6200106c17901c565b6101605262000119816006620001ca602090811b6200106c17901c565b61018052815160208084019190912061012052815190820120610140524660e052620001a96101205161014051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60c05250503061010052506001600160a01b03166101a05250620004be9050565b6000602083511015620001ea57620001e2836200021a565b905062000214565b8262000201836200026660201b6200109d1760201c565b906200020e908262000375565b5060ff90505b92915050565b600080829050601f8151111562000251578260405163305a27a960e01b815260040162000248919062000441565b60405180910390fd5b80516200025e8262000499565b179392505050565b90565b80516001600160a01b03811681146200028157600080fd5b919050565b6000806000606084860312156200029c57600080fd5b620002a78462000269565b9250620002b76020850162000269565b9150620002c76040850162000269565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002fb57607f821691505b6020821081036200031c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037057600081815260208120601f850160051c810160208610156200034b5750805b601f850160051c820191505b818110156200036c5782815560010162000357565b5050505b505050565b81516001600160401b03811115620003915762000391620002d0565b620003a981620003a28454620002e6565b8462000322565b602080601f831160018114620003e15760008415620003c85750858301515b600019600386901b1c1916600185901b1785556200036c565b600085815260208120601f198616915b828110156200041257888601518255948401946001909101908401620003f1565b5085821015620004315787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620004705785810183015185820160400152820162000452565b8181111562000483576000604083870101525b50601f01601f1916929092016040019392505050565b805160208083015191908110156200031c5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051612bc16200054f60003960008181610543015261086701526000610a4601526000610a1b015260006115570152600061152f0152600061148a015260006114b4015260006114de01526000818161056a015281816108350152610bee015260006102580152612bc16000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c806370a082311161012a5780639dc29fac116100bd578063d505accf1161008c578063e51080e511610071578063e51080e51461053e578063ee9a31a214610565578063f1127ed81461058c57600080fd5b8063d505accf146104f2578063dd62ed3e1461050557600080fd5b80639dc29fac146104a6578063a457c2d7146104b9578063a9059cbb146104cc578063c3cda520146104df57600080fd5b80638e539e8c116100f95780638e539e8c1461045957806391ddadf41461046c57806395d89b411461048b5780639ab24eb01461049357600080fd5b806370a08231146103ef57806379cc6790146104185780637ecebe001461042b57806384b0196e1461043e57600080fd5b806339509351116101bd5780634bf5d7e91161018c578063587cde1e11610171578063587cde1e146103885780635c19a95c146103b45780636fcfff45146103c757600080fd5b80634bf5d7e91461034457806354fd4d501461034c57600080fd5b806339509351146102f65780633a46b1a81461030957806340c10f191461031c57806342966c681461033157600080fd5b806318160ddd116101f957806318160ddd146102ba57806323b872dd146102cc578063313ce567146102df5780633644e515146102ee57600080fd5b806301ffc9a71461022b578063033964be1461025357806306fdde0314610292578063095ea7b3146102a7575b600080fd5b61023e610239366004612554565b6105de565b60405190151581526020015b60405180910390f35b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024a565b61029a61067e565b60405161024a9190612601565b61023e6102b5366004612630565b610710565b6002545b60405190815260200161024a565b61023e6102da36600461265a565b61072a565b6040516012815260200161024a565b6102be61074e565b61023e610304366004612630565b61075d565b6102be610317366004612630565b61079c565b61032f61032a366004612630565b61082a565b005b61032f61033f366004612696565b610909565b61029a610916565b61029a6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b61027a6103963660046126af565b6001600160a01b039081166000908152600960205260409020541690565b61032f6103c23660046126af565b6109ae565b6103da6103d53660046126af565b6109b8565b60405163ffffffff909116815260200161024a565b6102be6103fd3660046126af565b6001600160a01b031660009081526020819052604090205490565b61032f610426366004612630565b6109da565b6102be6104393660046126af565b6109ef565b610446610a0d565b60405161024a97969594939291906126ca565b6102be610467366004612696565b610ab2565b610474610b1d565b60405165ffffffffffff909116815260200161024a565b61029a610b28565b6102be6104a13660046126af565b610b37565b61032f6104b4366004612630565b610be3565b61023e6104c7366004612630565b610c81565b61023e6104da366004612630565b610d2b565b61032f6104ed36600461278d565b610d39565b61032f6105003660046127e5565b610e6f565b6102be61051336600461284f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b61059f61059a366004612882565b610fd3565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928101929092520161024a565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061067657507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b60606003805461068d906128c2565b80601f01602080910402602001604051908101604052809291908181526020018280546106b9906128c2565b80156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b5050505050905090565b60003361071e8185856110a0565b60019150505b92915050565b6000336107388582856111f8565b61074385858561128a565b506001949350505050565b600061075861147d565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061071e908290869061079790879061293e565b6110a0565b60006107a6610b1d565b65ffffffffffff1682106108015760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600a6020526040902061082390836115a8565b9392505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806108895750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6108fb5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e616e6365546f6b656e3a206f6e6c79206d696e7465722063616e60448201527f206d696e7400000000000000000000000000000000000000000000000000000060648201526084016107f8565b61090582826116bb565b5050565b61091333826116c5565b50565b606043610921610b1d565b65ffffffffffff16146109765760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016107f8565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b61091333826116cf565b6001600160a01b0381166000908152600a602052604081205461072490611760565b6109e58233836111f8565b61090582826116c5565b6001600160a01b038116600090815260076020526040812054610724565b600060608082808083610a417f000000000000000000000000000000000000000000000000000000000000000060056117e0565b610a6c7f000000000000000000000000000000000000000000000000000000000000000060066117e0565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610abc610b1d565b65ffffffffffff168210610b125760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064016107f8565b610724600b836115a8565b600061075843611884565b60606004805461068d906128c2565b6001600160a01b0381166000908152600a60205260408120548015610bbb576001600160a01b0383166000908152600a6020526040902080546000198301908110610b8457610b84612985565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610bbe565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e55760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e00000000000000000000000000000060648201526084016107f8565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610d1e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107f8565b61074382868684036110a0565b60003361071e81858561128a565b83421115610d895760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016107f8565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e0390610dfb9060a00160405160208183030381529060405280519060200120611902565b85858561194a565b9050610e0e81611972565b8614610e5c5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016107f8565b610e6681886116cf565b50505050505050565b83421115610ebf5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016107f8565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610eee8c611972565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f4982611902565b90506000610f598287878761194a565b9050896001600160a01b0316816001600160a01b031614610fbc5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016107f8565b610fc78a8a8a6110a0565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a60205260409020805463ffffffff841690811061101757611017612985565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b6000602083511015611088576110818361199a565b9050610724565b816110938482612a02565b5060ff9050610724565b90565b6001600160a01b03831661111b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166111975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461128457818110156112775760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107f8565b61128484848484036110a0565b50505050565b6001600160a01b0383166113065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166113825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038316600090815260208190526040902054818110156114115760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36112848484846119f6565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156114d657507f000000000000000000000000000000000000000000000000000000000000000046145b1561150057507f000000000000000000000000000000000000000000000000000000000000000090565b610758604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b8154600090818160058111156116025760006115c384611a01565b6115cd9085612ae0565b600088815260209020909150869082015463ffffffff1611156115f257809150611600565b6115fd81600161293e565b92505b505b8082101561164f5760006116168383611ae9565b600088815260209020909150869082015463ffffffff16111561163b57809150611649565b61164681600161293e565b92505b50611602565b8015611690576000868152602090208101600019015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611693565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169695505050505050565b6109058282611b04565b6109058282611bb0565b6001600160a01b038281166000818152600960208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611284828483611bc8565b600063ffffffff8211156117dc5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f322062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b5090565b606060ff83146117f35761108183611d05565b8180546117ff906128c2565b80601f016020809104026020016040519081016040528092919081815260200182805461182b906128c2565b80156118785780601f1061184d57610100808354040283529160200191611878565b820191906000526020600020905b81548152906001019060200180831161185b57829003601f168201915b50505050509050610724565b600065ffffffffffff8211156117dc5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f382062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b600061072461190f61147d565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600061195b87878787611d44565b9150915061196881611e26565b5095945050505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b600080829050601f815111156119de57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016107f89190612601565b80516119e982612af7565b179392505050565b505050565b6119f1838383611f8b565b600081600003611a1357506000919050565b60006001611a2084611fbd565b901c6001901b90506001818481611a3957611a39612b1b565b048201901c90506001818481611a5157611a51612b1b565b048201901c90506001818481611a6957611a69612b1b565b048201901c90506001818481611a8157611a81612b1b565b048201901c90506001818481611a9957611a99612b1b565b048201901c90506001818481611ab157611ab1612b1b565b048201901c90506001818481611ac957611ac9612b1b565b048201901c905061082381828581611ae357611ae3612b1b565b04612051565b6000611af86002848418612b4a565b6108239084841661293e565b611b0e8282612067565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611ba25760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f7465730000000000000000000000000000000060648201526084016107f8565b611284600b61212e8361213a565b611bba8282612303565b611284600b6124738361213a565b816001600160a01b0316836001600160a01b031614158015611bea5750600081115b156119f1576001600160a01b03831615611c78576001600160a01b0383166000908152600a602052604081208190611c25906124738561213a565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611c6d929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156119f1576001600160a01b0382166000908152600a602052604081208190611cae9061212e8561213a565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611cf6929190918252602082015260400190565b60405180910390a25050505050565b60606000611d128361247f565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611d7b5750600090506003611e1d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611dcf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116611e1657600060019250925050611e1d565b9150600090505b94509492505050565b6000816004811115611e3a57611e3a612b85565b03611e425750565b6001816004811115611e5657611e56612b85565b03611ea35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107f8565b6002816004811115611eb757611eb7612b85565b03611f045760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107f8565b6003816004811115611f1857611f18612b85565b036109135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038381166000908152600960205260408082205485841683529120546119f192918216911683611bc8565b600080608083901c15611fd257608092831c92015b604083901c15611fe457604092831c92015b602083901c15611ff657602092831c92015b601083901c1561200857601092831c92015b600883901c1561201a57600892831c92015b600483901c1561202c57600492831c92015b600283901c1561203e57600292831c92015b600183901c156107245760010192915050565b60008183106120605781610823565b5090919050565b6001600160a01b0382166120bd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107f8565b80600260008282546120cf919061293e565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610905600083836119f6565b6000610823828461293e565b8254600090819081811561219c5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208201526121b1565b60408051808201909152600080825260208201525b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1693506121e684868863ffffffff16565b925060008211801561221057506121fb610b1d565b65ffffffffffff16816000015163ffffffff16145b1561226a5761221e836124c0565b60008881526020902083016000190180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9092169190911790556122f9565b86604051806040016040528061228e612281610b1d565b65ffffffffffff16611760565b63ffffffff1681526020016122a2866124c0565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6001600160a01b03821661237f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166000908152602081905260409020548181101561240e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36119f1836000846119f6565b60006108238284612ae0565b600060ff8216601f811115610724576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156117dc5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016107f8565b60006020828403121561256657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461082357600080fd5b6000815180845260005b818110156125bc576020818501810151868301820152016125a0565b818111156125ce576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108236020830184612596565b80356001600160a01b038116811461262b57600080fd5b919050565b6000806040838503121561264357600080fd5b61264c83612614565b946020939093013593505050565b60008060006060848603121561266f57600080fd5b61267884612614565b925061268660208501612614565b9150604084013590509250925092565b6000602082840312156126a857600080fd5b5035919050565b6000602082840312156126c157600080fd5b61082382612614565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261270660e084018a612596565b8381036040850152612718818a612596565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561276a5783518352928401929184019160010161274e565b50909c9b505050505050505050505050565b803560ff8116811461262b57600080fd5b60008060008060008060c087890312156127a657600080fd5b6127af87612614565b955060208701359450604087013593506127cb6060880161277c565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561280057600080fd5b61280988612614565b965061281760208901612614565b955060408801359450606088013593506128336080890161277c565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561286257600080fd5b61286b83612614565b915061287960208401612614565b90509250929050565b6000806040838503121561289557600080fd5b61289e83612614565b9150602083013563ffffffff811681146128b757600080fd5b809150509250929050565b600181811c908216806128d657607f821691505b602082108103611994577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156129515761295161290f565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f8211156119f157600081815260208120601f850160051c810160208610156129db5750805b601f850160051c820191505b818110156129fa578281556001016129e7565b505050505050565b815167ffffffffffffffff811115612a1c57612a1c612956565b612a3081612a2a84546128c2565b846129b4565b602080601f831160018114612a655760008415612a4d5750858301515b600019600386901b1c1916600185901b1785556129fa565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612ab257888601518255948401946001909101908401612a93565b5085821015612ad05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082821015612af257612af261290f565b500390565b805160208083015191908110156119945760001960209190910360031b1b16919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612b80577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", } // GovernanceTokenABI is the input ABI used to generate the binding from. @@ -50,7 +50,7 @@ var GovernanceTokenABI = GovernanceTokenMetaData.ABI var GovernanceTokenBin = GovernanceTokenMetaData.Bin // DeployGovernanceToken deploys a new Ethereum contract, binding an instance of GovernanceToken to it. -func DeployGovernanceToken(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GovernanceToken, error) { +func DeployGovernanceToken(auth *bind.TransactOpts, backend bind.ContractBackend, _bridge common.Address, _remoteToken common.Address, _mintManager common.Address) (common.Address, *types.Transaction, *GovernanceToken, error) { parsed, err := GovernanceTokenMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -59,7 +59,7 @@ func DeployGovernanceToken(auth *bind.TransactOpts, backend bind.ContractBackend return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GovernanceTokenBin), backend) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(GovernanceTokenBin), backend, _bridge, _remoteToken, _mintManager) if err != nil { return common.Address{}, nil, nil, err } @@ -208,6 +208,37 @@ func (_GovernanceToken *GovernanceTokenTransactorRaw) Transact(opts *bind.Transa return _GovernanceToken.Contract.contract.Transact(opts, method, params...) } +// BRIDGE is a free data retrieval call binding the contract method 0xee9a31a2. +// +// Solidity: function BRIDGE() view returns(address) +func (_GovernanceToken *GovernanceTokenCaller) BRIDGE(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GovernanceToken.contract.Call(opts, &out, "BRIDGE") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BRIDGE is a free data retrieval call binding the contract method 0xee9a31a2. +// +// Solidity: function BRIDGE() view returns(address) +func (_GovernanceToken *GovernanceTokenSession) BRIDGE() (common.Address, error) { + return _GovernanceToken.Contract.BRIDGE(&_GovernanceToken.CallOpts) +} + +// BRIDGE is a free data retrieval call binding the contract method 0xee9a31a2. +// +// Solidity: function BRIDGE() view returns(address) +func (_GovernanceToken *GovernanceTokenCallerSession) BRIDGE() (common.Address, error) { + return _GovernanceToken.Contract.BRIDGE(&_GovernanceToken.CallOpts) +} + // CLOCKMODE is a free data retrieval call binding the contract method 0x4bf5d7e9. // // Solidity: function CLOCK_MODE() view returns(string) @@ -270,6 +301,68 @@ func (_GovernanceToken *GovernanceTokenCallerSession) DOMAINSEPARATOR() ([32]byt return _GovernanceToken.Contract.DOMAINSEPARATOR(&_GovernanceToken.CallOpts) } +// MINTMANAGER is a free data retrieval call binding the contract method 0xe51080e5. +// +// Solidity: function MINT_MANAGER() view returns(address) +func (_GovernanceToken *GovernanceTokenCaller) MINTMANAGER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GovernanceToken.contract.Call(opts, &out, "MINT_MANAGER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// MINTMANAGER is a free data retrieval call binding the contract method 0xe51080e5. +// +// Solidity: function MINT_MANAGER() view returns(address) +func (_GovernanceToken *GovernanceTokenSession) MINTMANAGER() (common.Address, error) { + return _GovernanceToken.Contract.MINTMANAGER(&_GovernanceToken.CallOpts) +} + +// MINTMANAGER is a free data retrieval call binding the contract method 0xe51080e5. +// +// Solidity: function MINT_MANAGER() view returns(address) +func (_GovernanceToken *GovernanceTokenCallerSession) MINTMANAGER() (common.Address, error) { + return _GovernanceToken.Contract.MINTMANAGER(&_GovernanceToken.CallOpts) +} + +// REMOTETOKEN is a free data retrieval call binding the contract method 0x033964be. +// +// Solidity: function REMOTE_TOKEN() view returns(address) +func (_GovernanceToken *GovernanceTokenCaller) REMOTETOKEN(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GovernanceToken.contract.Call(opts, &out, "REMOTE_TOKEN") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// REMOTETOKEN is a free data retrieval call binding the contract method 0x033964be. +// +// Solidity: function REMOTE_TOKEN() view returns(address) +func (_GovernanceToken *GovernanceTokenSession) REMOTETOKEN() (common.Address, error) { + return _GovernanceToken.Contract.REMOTETOKEN(&_GovernanceToken.CallOpts) +} + +// REMOTETOKEN is a free data retrieval call binding the contract method 0x033964be. +// +// Solidity: function REMOTE_TOKEN() view returns(address) +func (_GovernanceToken *GovernanceTokenCallerSession) REMOTETOKEN() (common.Address, error) { + return _GovernanceToken.Contract.REMOTETOKEN(&_GovernanceToken.CallOpts) +} + // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address owner, address spender) view returns(uint256) @@ -712,35 +805,35 @@ func (_GovernanceToken *GovernanceTokenCallerSession) NumCheckpoints(account com return _GovernanceToken.Contract.NumCheckpoints(&_GovernanceToken.CallOpts, account) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // -// Solidity: function owner() view returns(address) -func (_GovernanceToken *GovernanceTokenCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function supportsInterface(bytes4 _interfaceId) pure returns(bool) +func (_GovernanceToken *GovernanceTokenCaller) SupportsInterface(opts *bind.CallOpts, _interfaceId [4]byte) (bool, error) { var out []interface{} - err := _GovernanceToken.contract.Call(opts, &out, "owner") + err := _GovernanceToken.contract.Call(opts, &out, "supportsInterface", _interfaceId) if err != nil { - return *new(common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // -// Solidity: function owner() view returns(address) -func (_GovernanceToken *GovernanceTokenSession) Owner() (common.Address, error) { - return _GovernanceToken.Contract.Owner(&_GovernanceToken.CallOpts) +// Solidity: function supportsInterface(bytes4 _interfaceId) pure returns(bool) +func (_GovernanceToken *GovernanceTokenSession) SupportsInterface(_interfaceId [4]byte) (bool, error) { + return _GovernanceToken.Contract.SupportsInterface(&_GovernanceToken.CallOpts, _interfaceId) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // -// Solidity: function owner() view returns(address) -func (_GovernanceToken *GovernanceTokenCallerSession) Owner() (common.Address, error) { - return _GovernanceToken.Contract.Owner(&_GovernanceToken.CallOpts) +// Solidity: function supportsInterface(bytes4 _interfaceId) pure returns(bool) +func (_GovernanceToken *GovernanceTokenCallerSession) SupportsInterface(_interfaceId [4]byte) (bool, error) { + return _GovernanceToken.Contract.SupportsInterface(&_GovernanceToken.CallOpts, _interfaceId) } // Symbol is a free data retrieval call binding the contract method 0x95d89b41. @@ -805,6 +898,37 @@ func (_GovernanceToken *GovernanceTokenCallerSession) TotalSupply() (*big.Int, e return _GovernanceToken.Contract.TotalSupply(&_GovernanceToken.CallOpts) } +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_GovernanceToken *GovernanceTokenCaller) Version(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GovernanceToken.contract.Call(opts, &out, "version") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_GovernanceToken *GovernanceTokenSession) Version() (string, error) { + return _GovernanceToken.Contract.Version(&_GovernanceToken.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_GovernanceToken *GovernanceTokenCallerSession) Version() (string, error) { + return _GovernanceToken.Contract.Version(&_GovernanceToken.CallOpts) +} + // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // // Solidity: function approve(address spender, uint256 amount) returns(bool) @@ -847,6 +971,27 @@ func (_GovernanceToken *GovernanceTokenTransactorSession) Burn(amount *big.Int) return _GovernanceToken.Contract.Burn(&_GovernanceToken.TransactOpts, amount) } +// Burn0 is a paid mutator transaction binding the contract method 0x9dc29fac. +// +// Solidity: function burn(address _from, uint256 _amount) returns() +func (_GovernanceToken *GovernanceTokenTransactor) Burn0(opts *bind.TransactOpts, _from common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GovernanceToken.contract.Transact(opts, "burn0", _from, _amount) +} + +// Burn0 is a paid mutator transaction binding the contract method 0x9dc29fac. +// +// Solidity: function burn(address _from, uint256 _amount) returns() +func (_GovernanceToken *GovernanceTokenSession) Burn0(_from common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GovernanceToken.Contract.Burn0(&_GovernanceToken.TransactOpts, _from, _amount) +} + +// Burn0 is a paid mutator transaction binding the contract method 0x9dc29fac. +// +// Solidity: function burn(address _from, uint256 _amount) returns() +func (_GovernanceToken *GovernanceTokenTransactorSession) Burn0(_from common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GovernanceToken.Contract.Burn0(&_GovernanceToken.TransactOpts, _from, _amount) +} + // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790. // // Solidity: function burnFrom(address account, uint256 amount) returns() @@ -994,27 +1139,6 @@ func (_GovernanceToken *GovernanceTokenTransactorSession) Permit(owner common.Ad return _GovernanceToken.Contract.Permit(&_GovernanceToken.TransactOpts, owner, spender, value, deadline, v, r, s) } -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GovernanceToken *GovernanceTokenTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _GovernanceToken.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GovernanceToken *GovernanceTokenSession) RenounceOwnership() (*types.Transaction, error) { - return _GovernanceToken.Contract.RenounceOwnership(&_GovernanceToken.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_GovernanceToken *GovernanceTokenTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _GovernanceToken.Contract.RenounceOwnership(&_GovernanceToken.TransactOpts) -} - // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address to, uint256 amount) returns(bool) @@ -1057,27 +1181,6 @@ func (_GovernanceToken *GovernanceTokenTransactorSession) TransferFrom(from comm return _GovernanceToken.Contract.TransferFrom(&_GovernanceToken.TransactOpts, from, to, amount) } -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GovernanceToken *GovernanceTokenTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _GovernanceToken.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GovernanceToken *GovernanceTokenSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GovernanceToken.Contract.TransferOwnership(&_GovernanceToken.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_GovernanceToken *GovernanceTokenTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _GovernanceToken.Contract.TransferOwnership(&_GovernanceToken.TransactOpts, newOwner) -} - // GovernanceTokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the GovernanceToken contract. type GovernanceTokenApprovalIterator struct { Event *GovernanceTokenApproval // Event containing the contract specifics and raw log @@ -1232,6 +1335,151 @@ func (_GovernanceToken *GovernanceTokenFilterer) ParseApproval(log types.Log) (* return event, nil } +// GovernanceTokenBurnIterator is returned from FilterBurn and is used to iterate over the raw logs and unpacked data for Burn events raised by the GovernanceToken contract. +type GovernanceTokenBurnIterator struct { + Event *GovernanceTokenBurn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GovernanceTokenBurnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GovernanceTokenBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GovernanceTokenBurn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GovernanceTokenBurnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GovernanceTokenBurnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GovernanceTokenBurn represents a Burn event raised by the GovernanceToken contract. +type GovernanceTokenBurn struct { + Account common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurn is a free log retrieval operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed account, uint256 amount) +func (_GovernanceToken *GovernanceTokenFilterer) FilterBurn(opts *bind.FilterOpts, account []common.Address) (*GovernanceTokenBurnIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _GovernanceToken.contract.FilterLogs(opts, "Burn", accountRule) + if err != nil { + return nil, err + } + return &GovernanceTokenBurnIterator{contract: _GovernanceToken.contract, event: "Burn", logs: logs, sub: sub}, nil +} + +// WatchBurn is a free log subscription operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed account, uint256 amount) +func (_GovernanceToken *GovernanceTokenFilterer) WatchBurn(opts *bind.WatchOpts, sink chan<- *GovernanceTokenBurn, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _GovernanceToken.contract.WatchLogs(opts, "Burn", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GovernanceTokenBurn) + if err := _GovernanceToken.contract.UnpackLog(event, "Burn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurn is a log parse operation binding the contract event 0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5. +// +// Solidity: event Burn(address indexed account, uint256 amount) +func (_GovernanceToken *GovernanceTokenFilterer) ParseBurn(log types.Log) (*GovernanceTokenBurn, error) { + event := new(GovernanceTokenBurn) + if err := _GovernanceToken.contract.UnpackLog(event, "Burn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // GovernanceTokenDelegateChangedIterator is returned from FilterDelegateChanged and is used to iterate over the raw logs and unpacked data for DelegateChanged events raised by the GovernanceToken contract. type GovernanceTokenDelegateChangedIterator struct { Event *GovernanceTokenDelegateChanged // Event containing the contract specifics and raw log @@ -1673,9 +1921,9 @@ func (_GovernanceToken *GovernanceTokenFilterer) ParseEIP712DomainChanged(log ty return event, nil } -// GovernanceTokenOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GovernanceToken contract. -type GovernanceTokenOwnershipTransferredIterator struct { - Event *GovernanceTokenOwnershipTransferred // Event containing the contract specifics and raw log +// GovernanceTokenMintIterator is returned from FilterMint and is used to iterate over the raw logs and unpacked data for Mint events raised by the GovernanceToken contract. +type GovernanceTokenMintIterator struct { + Event *GovernanceTokenMint // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1689,7 +1937,7 @@ type GovernanceTokenOwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *GovernanceTokenOwnershipTransferredIterator) Next() bool { +func (it *GovernanceTokenMintIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1698,7 +1946,7 @@ func (it *GovernanceTokenOwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(GovernanceTokenOwnershipTransferred) + it.Event = new(GovernanceTokenMint) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1713,7 +1961,7 @@ func (it *GovernanceTokenOwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(GovernanceTokenOwnershipTransferred) + it.Event = new(GovernanceTokenMint) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1729,60 +1977,52 @@ func (it *GovernanceTokenOwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *GovernanceTokenOwnershipTransferredIterator) Error() error { +func (it *GovernanceTokenMintIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *GovernanceTokenOwnershipTransferredIterator) Close() error { +func (it *GovernanceTokenMintIterator) Close() error { it.sub.Unsubscribe() return nil } -// GovernanceTokenOwnershipTransferred represents a OwnershipTransferred event raised by the GovernanceToken contract. -type GovernanceTokenOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// GovernanceTokenMint represents a Mint event raised by the GovernanceToken contract. +type GovernanceTokenMint struct { + Account common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterMint is a free log retrieval operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GovernanceToken *GovernanceTokenFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GovernanceTokenOwnershipTransferredIterator, error) { +// Solidity: event Mint(address indexed account, uint256 amount) +func (_GovernanceToken *GovernanceTokenFilterer) FilterMint(opts *bind.FilterOpts, account []common.Address) (*GovernanceTokenMintIterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) } - logs, sub, err := _GovernanceToken.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GovernanceToken.contract.FilterLogs(opts, "Mint", accountRule) if err != nil { return nil, err } - return &GovernanceTokenOwnershipTransferredIterator{contract: _GovernanceToken.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &GovernanceTokenMintIterator{contract: _GovernanceToken.contract, event: "Mint", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchMint is a free log subscription operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GovernanceToken *GovernanceTokenFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GovernanceTokenOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +// Solidity: event Mint(address indexed account, uint256 amount) +func (_GovernanceToken *GovernanceTokenFilterer) WatchMint(opts *bind.WatchOpts, sink chan<- *GovernanceTokenMint, account []common.Address) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) } - logs, sub, err := _GovernanceToken.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _GovernanceToken.contract.WatchLogs(opts, "Mint", accountRule) if err != nil { return nil, err } @@ -1792,8 +2032,8 @@ func (_GovernanceToken *GovernanceTokenFilterer) WatchOwnershipTransferred(opts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(GovernanceTokenOwnershipTransferred) - if err := _GovernanceToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(GovernanceTokenMint) + if err := _GovernanceToken.contract.UnpackLog(event, "Mint", log); err != nil { return err } event.Raw = log @@ -1814,12 +2054,12 @@ func (_GovernanceToken *GovernanceTokenFilterer) WatchOwnershipTransferred(opts }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseMint is a log parse operation binding the contract event 0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_GovernanceToken *GovernanceTokenFilterer) ParseOwnershipTransferred(log types.Log) (*GovernanceTokenOwnershipTransferred, error) { - event := new(GovernanceTokenOwnershipTransferred) - if err := _GovernanceToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event Mint(address indexed account, uint256 amount) +func (_GovernanceToken *GovernanceTokenFilterer) ParseMint(log types.Log) (*GovernanceTokenMint, error) { + event := new(GovernanceTokenMint) + if err := _GovernanceToken.contract.UnpackLog(event, "Mint", log); err != nil { return nil, err } event.Raw = log diff --git a/kroma-bindings/bindings/governancetoken_more.go b/kroma-bindings/bindings/governancetoken_more.go index 2ac2be08a..b0ba9c59f 100644 --- a/kroma-bindings/bindings/governancetoken_more.go +++ b/kroma-bindings/bindings/governancetoken_more.go @@ -9,11 +9,11 @@ import ( "github.com/ethereum-optimism/optimism/op-bindings/solc" ) -const GovernanceTokenStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_balances\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1001,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_allowances\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":1002,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_totalSupply\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":1003,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_name\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_string_storage\"},{\"astId\":1004,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_symbol\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_string_storage\"},{\"astId\":1005,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_nameFallback\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_string_storage\"},{\"astId\":1006,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_versionFallback\",\"offset\":0,\"slot\":\"6\",\"type\":\"t_string_storage\"},{\"astId\":1007,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_nonces\",\"offset\":0,\"slot\":\"7\",\"type\":\"t_mapping(t_address,t_struct(Counter)1014_storage)\"},{\"astId\":1008,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_PERMIT_TYPEHASH_DEPRECATED_SLOT\",\"offset\":0,\"slot\":\"8\",\"type\":\"t_bytes32\"},{\"astId\":1009,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_delegates\",\"offset\":0,\"slot\":\"9\",\"type\":\"t_mapping(t_address,t_address)\"},{\"astId\":1010,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_checkpoints\",\"offset\":0,\"slot\":\"10\",\"type\":\"t_mapping(t_address,t_array(t_struct(Checkpoint)1013_storage)dyn_storage)\"},{\"astId\":1011,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_totalSupplyCheckpoints\",\"offset\":0,\"slot\":\"11\",\"type\":\"t_array(t_struct(Checkpoint)1013_storage)dyn_storage\"},{\"astId\":1012,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"12\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_struct(Checkpoint)1013_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct ERC20Votes.Checkpoint[]\",\"numberOfBytes\":\"32\",\"base\":\"t_struct(Checkpoint)1013_storage\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_address)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e address)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_address\"},\"t_mapping(t_address,t_array(t_struct(Checkpoint)1013_storage)dyn_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct ERC20Votes.Checkpoint[])\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_array(t_struct(Checkpoint)1013_storage)dyn_storage\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_struct(Counter)1014_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct Counters.Counter)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Counter)1014_storage\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_string_storage\":{\"encoding\":\"bytes\",\"label\":\"string\",\"numberOfBytes\":\"32\"},\"t_struct(Checkpoint)1013_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ERC20Votes.Checkpoint\",\"numberOfBytes\":\"32\"},\"t_struct(Counter)1014_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Counters.Counter\",\"numberOfBytes\":\"32\"},\"t_uint224\":{\"encoding\":\"inplace\",\"label\":\"uint224\",\"numberOfBytes\":\"28\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"}}}" +const GovernanceTokenStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_balances\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1001,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_allowances\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":1002,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_totalSupply\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_uint256\"},{\"astId\":1003,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_name\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_string_storage\"},{\"astId\":1004,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_symbol\",\"offset\":0,\"slot\":\"4\",\"type\":\"t_string_storage\"},{\"astId\":1005,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_nameFallback\",\"offset\":0,\"slot\":\"5\",\"type\":\"t_string_storage\"},{\"astId\":1006,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_versionFallback\",\"offset\":0,\"slot\":\"6\",\"type\":\"t_string_storage\"},{\"astId\":1007,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_nonces\",\"offset\":0,\"slot\":\"7\",\"type\":\"t_mapping(t_address,t_struct(Counter)1013_storage)\"},{\"astId\":1008,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_PERMIT_TYPEHASH_DEPRECATED_SLOT\",\"offset\":0,\"slot\":\"8\",\"type\":\"t_bytes32\"},{\"astId\":1009,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_delegates\",\"offset\":0,\"slot\":\"9\",\"type\":\"t_mapping(t_address,t_address)\"},{\"astId\":1010,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_checkpoints\",\"offset\":0,\"slot\":\"10\",\"type\":\"t_mapping(t_address,t_array(t_struct(Checkpoint)1012_storage)dyn_storage)\"},{\"astId\":1011,\"contract\":\"contracts/governance/GovernanceToken.sol:GovernanceToken\",\"label\":\"_totalSupplyCheckpoints\",\"offset\":0,\"slot\":\"11\",\"type\":\"t_array(t_struct(Checkpoint)1012_storage)dyn_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_struct(Checkpoint)1012_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct ERC20Votes.Checkpoint[]\",\"numberOfBytes\":\"32\",\"base\":\"t_struct(Checkpoint)1012_storage\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_address)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e address)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_address\"},\"t_mapping(t_address,t_array(t_struct(Checkpoint)1012_storage)dyn_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct ERC20Votes.Checkpoint[])\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_array(t_struct(Checkpoint)1012_storage)dyn_storage\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_struct(Counter)1013_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct Counters.Counter)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Counter)1013_storage\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_string_storage\":{\"encoding\":\"bytes\",\"label\":\"string\",\"numberOfBytes\":\"32\"},\"t_struct(Checkpoint)1012_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ERC20Votes.Checkpoint\",\"numberOfBytes\":\"32\"},\"t_struct(Counter)1013_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Counters.Counter\",\"numberOfBytes\":\"32\"},\"t_uint224\":{\"encoding\":\"inplace\",\"label\":\"uint224\",\"numberOfBytes\":\"28\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint32\":{\"encoding\":\"inplace\",\"label\":\"uint32\",\"numberOfBytes\":\"4\"}}}" var GovernanceTokenStorageLayout = new(solc.StorageLayout) -var GovernanceTokenDeployedBin = "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf14610445578063dd62ed3e14610458578063f1127ed814610491578063f2fde38b146104e357600080fd5b80639ab24eb0146103f9578063a457c2d71461040c578063a9059cbb1461041f578063c3cda5201461043257600080fd5b80638da5cb5b116100de5780638da5cb5b146103ae5780638e539e8c146103bf57806391ddadf4146103d257806395d89b41146103f157600080fd5b8063715018a61461036557806379cc67901461036d5780637ecebe001461038057806384b0196e1461039357600080fd5b80633a46b1a811610187578063587cde1e11610156578063587cde1e146102bd5780635c19a95c146103015780636fcfff451461031457806370a082311461033c57600080fd5b80633a46b1a81461027a57806340c10f191461028d57806342966c68146102a25780634bf5d7e9146102b557600080fd5b806323b872dd116101c357806323b872dd1461023d578063313ce567146102505780633644e5151461025f578063395093511461026757600080fd5b806306fdde03146101ea578063095ea7b31461020857806318160ddd1461022b575b600080fd5b6101f26104f6565b6040516101ff9190612435565b60405180910390f35b61021b610216366004612464565b610588565b60405190151581526020016101ff565b6002545b6040519081526020016101ff565b61021b61024b36600461248e565b6105a2565b604051601281526020016101ff565b61022f6105c6565b61021b610275366004612464565b6105d5565b61022f610288366004612464565b610614565b6102a061029b366004612464565b6106a2565b005b6102a06102b03660046124ca565b6106b8565b6101f26106c5565b6102e96102cb3660046124e3565b6001600160a01b039081166000908152600960205260409020541690565b6040516001600160a01b0390911681526020016101ff565b6102a061030f3660046124e3565b61075d565b6103276103223660046124e3565b610767565b60405163ffffffff90911681526020016101ff565b61022f61034a3660046124e3565b6001600160a01b031660009081526020819052604090205490565b6102a0610789565b6102a061037b366004612464565b61079d565b61022f61038e3660046124e3565b6107b2565b61039b6107d0565b6040516101ff97969594939291906124fe565b600c546001600160a01b03166102e9565b61022f6103cd3660046124ca565b610875565b6103da6108e0565b60405165ffffffffffff90911681526020016101ff565b6101f26108eb565b61022f6104073660046124e3565b6108fa565b61021b61041a366004612464565b6109a6565b61021b61042d366004612464565b610a50565b6102a06104403660046125c1565b610a5e565b6102a0610453366004612619565b610b94565b61022f610466366004612683565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6104a461049f3660046126b6565b610cf8565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692810192909252016101ff565b6102a06104f13660046124e3565b610d91565b606060038054610505906126f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610531906126f6565b801561057e5780601f106105535761010080835404028352916020019161057e565b820191906000526020600020905b81548152906001019060200180831161056157829003601f168201915b5050505050905090565b600033610596818585610e52565b60019150505b92915050565b6000336105b0858285610faa565b6105bb85858561103c565b506001949350505050565b60006105d061122f565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610596908290869061060f908790612772565b610e52565b600061061e6108e0565b65ffffffffffff1682106106795760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600a6020526040902061069b908361135a565b9392505050565b6106aa61146d565b6106b482826114c7565b5050565b6106c233826114d1565b50565b6060436106d06108e0565b65ffffffffffff16146107255760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152606401610670565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106c233826114db565b6001600160a01b0381166000908152600a602052604081205461059c9061156c565b61079161146d565b61079b60006115ec565b565b6107a8823383610faa565b6106b482826114d1565b6001600160a01b03811660009081526007602052604081205461059c565b6000606080828080836108047f00000000000000000000000000000000000000000000000000000000000000006005611656565b61082f7f00000000000000000000000000000000000000000000000000000000000000006006611656565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600061087f6108e0565b65ffffffffffff1682106108d55760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000006044820152606401610670565b61059c600b8361135a565b60006105d0436116fa565b606060048054610505906126f6565b6001600160a01b0381166000908152600a6020526040812054801561097e576001600160a01b0383166000908152600a6020526040902080546000198301908110610947576109476127b9565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610981565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610a435760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610670565b6105bb8286868403610e52565b60003361059681858561103c565b83421115610aae5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610670565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610b2890610b209060a00160405160208183030381529060405280519060200120611778565b8585856117c0565b9050610b33816117e8565b8614610b815760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610670565b610b8b81886114db565b50505050505050565b83421115610be45760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610670565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c138c6117e8565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610c6e82611778565b90506000610c7e828787876117c0565b9050896001600160a01b0316816001600160a01b031614610ce15760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610670565b610cec8a8a8a610e52565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a60205260409020805463ffffffff8416908110610d3c57610d3c6127b9565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b610d9961146d565b6001600160a01b038116610e155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610670565b6106c2816115ec565b6000602083511015610e3a57610e3383611810565b905061059c565b81610e458482612836565b5060ff905061059c565b90565b6001600160a01b038316610ecd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b038216610f495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461103657818110156110295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610670565b6110368484848403610e52565b50505050565b6001600160a01b0383166110b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b0382166111345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b038316600090815260208190526040902054818110156111c35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361103684848461186c565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561128857507f000000000000000000000000000000000000000000000000000000000000000046145b156112b257507f000000000000000000000000000000000000000000000000000000000000000090565b6105d0604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b8154600090818160058111156113b457600061137584611877565b61137f9085612914565b600088815260209020909150869082015463ffffffff1611156113a4578091506113b2565b6113af816001612772565b92505b505b808210156114015760006113c8838361195f565b600088815260209020909150869082015463ffffffff1611156113ed578091506113fb565b6113f8816001612772565b92505b506113b4565b8015611442576000868152602090208101600019015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611445565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169695505050505050565b600c546001600160a01b0316331461079b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610670565b6106b4828261197a565b6106b48282611a26565b6001600160a01b038281166000818152600960208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611036828483611a3e565b600063ffffffff8211156115e85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610670565b5090565b600c80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff831461166957610e3383611b7b565b818054611675906126f6565b80601f01602080910402602001604051908101604052809291908181526020018280546116a1906126f6565b80156116ee5780601f106116c3576101008083540402835291602001916116ee565b820191906000526020600020905b8154815290600101906020018083116116d157829003601f168201915b5050505050905061059c565b600065ffffffffffff8211156115e85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152608401610670565b600061059c61178561122f565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006117d187878787611bba565b915091506117de81611c9c565b5095945050505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b600080829050601f8151111561185457826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016106709190612435565b805161185f8261292b565b179392505050565b505050565b611867838383611e01565b60008160000361188957506000919050565b6000600161189684611e33565b901c6001901b905060018184816118af576118af61294f565b048201901c905060018184816118c7576118c761294f565b048201901c905060018184816118df576118df61294f565b048201901c905060018184816118f7576118f761294f565b048201901c9050600181848161190f5761190f61294f565b048201901c905060018184816119275761192761294f565b048201901c9050600181848161193f5761193f61294f565b048201901c905061069b818285816119595761195961294f565b04611ec7565b600061196e600284841861297e565b61069b90848416612772565b6119848282611edd565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611a185760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610670565b611036600b611fa483611fb0565b611a308282612179565b611036600b6122e983611fb0565b816001600160a01b0316836001600160a01b031614158015611a605750600081115b15611867576001600160a01b03831615611aee576001600160a01b0383166000908152600a602052604081208190611a9b906122e985611fb0565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611ae3929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611867576001600160a01b0382166000908152600a602052604081208190611b2490611fa485611fb0565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611b6c929190918252602082015260400190565b60405180910390a25050505050565b60606000611b88836122f5565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611bf15750600090506003611c93565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c45573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116611c8c57600060019250925050611c93565b9150600090505b94509492505050565b6000816004811115611cb057611cb06129b9565b03611cb85750565b6001816004811115611ccc57611ccc6129b9565b03611d195760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610670565b6002816004811115611d2d57611d2d6129b9565b03611d7a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610670565b6003816004811115611d8e57611d8e6129b9565b036106c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b0383811660009081526009602052604080822054858416835291205461186792918216911683611a3e565b600080608083901c15611e4857608092831c92015b604083901c15611e5a57604092831c92015b602083901c15611e6c57602092831c92015b601083901c15611e7e57601092831c92015b600883901c15611e9057600892831c92015b600483901c15611ea257600492831c92015b600283901c15611eb457600292831c92015b600183901c1561059c5760010192915050565b6000818310611ed6578161069b565b5090919050565b6001600160a01b038216611f335760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610670565b8060026000828254611f459190612772565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36106b46000838361186c565b600061069b8284612772565b825460009081908181156120125760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020820152612027565b60408051808201909152600080825260208201525b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935061205c84868863ffffffff16565b925060008211801561208657506120716108e0565b65ffffffffffff16816000015163ffffffff16145b156120e05761209483612336565b60008881526020902083016000190180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff90921691909117905561216f565b8660405180604001604052806121046120f76108e0565b65ffffffffffff1661156c565b63ffffffff16815260200161211886612336565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6001600160a01b0382166121f55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b038216600090815260208190526040902054818110156122845760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610670565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36118678360008461186c565b600061069b8284612914565b600060ff8216601f81111561059c576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156115e85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610670565b6000815180845260005b818110156123f0576020818501810151868301820152016123d4565b81811115612402576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069b60208301846123ca565b80356001600160a01b038116811461245f57600080fd5b919050565b6000806040838503121561247757600080fd5b61248083612448565b946020939093013593505050565b6000806000606084860312156124a357600080fd5b6124ac84612448565b92506124ba60208501612448565b9150604084013590509250925092565b6000602082840312156124dc57600080fd5b5035919050565b6000602082840312156124f557600080fd5b61069b82612448565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261253a60e084018a6123ca565b838103604085015261254c818a6123ca565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561259e57835183529284019291840191600101612582565b50909c9b505050505050505050505050565b803560ff8116811461245f57600080fd5b60008060008060008060c087890312156125da57600080fd5b6125e387612448565b955060208701359450604087013593506125ff606088016125b0565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561263457600080fd5b61263d88612448565b965061264b60208901612448565b95506040880135945060608801359350612667608089016125b0565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561269657600080fd5b61269f83612448565b91506126ad60208401612448565b90509250929050565b600080604083850312156126c957600080fd5b6126d283612448565b9150602083013563ffffffff811681146126eb57600080fd5b809150509250929050565b600181811c9082168061270a57607f821691505b60208210810361180a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561278557612785612743565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561186757600081815260208120601f850160051c8101602086101561280f5750805b601f850160051c820191505b8181101561282e5782815560010161281b565b505050505050565b815167ffffffffffffffff8111156128505761285061278a565b6128648161285e84546126f6565b846127e8565b602080601f83116001811461289957600084156128815750858301515b600019600386901b1c1916600185901b17855561282e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156128e6578886015182559484019460019091019084016128c7565b50858210156129045787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008282101561292657612926612743565b500390565b8051602080830151919081101561180a5760001960209190910360031b1b16919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826129b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a" +var GovernanceTokenDeployedBin = "0x608060405234801561001057600080fd5b50600436106102265760003560e01c806370a082311161012a5780639dc29fac116100bd578063d505accf1161008c578063e51080e511610071578063e51080e51461053e578063ee9a31a214610565578063f1127ed81461058c57600080fd5b8063d505accf146104f2578063dd62ed3e1461050557600080fd5b80639dc29fac146104a6578063a457c2d7146104b9578063a9059cbb146104cc578063c3cda520146104df57600080fd5b80638e539e8c116100f95780638e539e8c1461045957806391ddadf41461046c57806395d89b411461048b5780639ab24eb01461049357600080fd5b806370a08231146103ef57806379cc6790146104185780637ecebe001461042b57806384b0196e1461043e57600080fd5b806339509351116101bd5780634bf5d7e91161018c578063587cde1e11610171578063587cde1e146103885780635c19a95c146103b45780636fcfff45146103c757600080fd5b80634bf5d7e91461034457806354fd4d501461034c57600080fd5b806339509351146102f65780633a46b1a81461030957806340c10f191461031c57806342966c681461033157600080fd5b806318160ddd116101f957806318160ddd146102ba57806323b872dd146102cc578063313ce567146102df5780633644e515146102ee57600080fd5b806301ffc9a71461022b578063033964be1461025357806306fdde0314610292578063095ea7b3146102a7575b600080fd5b61023e610239366004612554565b6105de565b60405190151581526020015b60405180910390f35b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024a565b61029a61067e565b60405161024a9190612601565b61023e6102b5366004612630565b610710565b6002545b60405190815260200161024a565b61023e6102da36600461265a565b61072a565b6040516012815260200161024a565b6102be61074e565b61023e610304366004612630565b61075d565b6102be610317366004612630565b61079c565b61032f61032a366004612630565b61082a565b005b61032f61033f366004612696565b610909565b61029a610916565b61029a6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b61027a6103963660046126af565b6001600160a01b039081166000908152600960205260409020541690565b61032f6103c23660046126af565b6109ae565b6103da6103d53660046126af565b6109b8565b60405163ffffffff909116815260200161024a565b6102be6103fd3660046126af565b6001600160a01b031660009081526020819052604090205490565b61032f610426366004612630565b6109da565b6102be6104393660046126af565b6109ef565b610446610a0d565b60405161024a97969594939291906126ca565b6102be610467366004612696565b610ab2565b610474610b1d565b60405165ffffffffffff909116815260200161024a565b61029a610b28565b6102be6104a13660046126af565b610b37565b61032f6104b4366004612630565b610be3565b61023e6104c7366004612630565b610c81565b61023e6104da366004612630565b610d2b565b61032f6104ed36600461278d565b610d39565b61032f6105003660046127e5565b610e6f565b6102be61051336600461284f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b61059f61059a366004612882565b610fd3565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928101929092520161024a565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061067657507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b60606003805461068d906128c2565b80601f01602080910402602001604051908101604052809291908181526020018280546106b9906128c2565b80156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b5050505050905090565b60003361071e8185856110a0565b60019150505b92915050565b6000336107388582856111f8565b61074385858561128a565b506001949350505050565b600061075861147d565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061071e908290869061079790879061293e565b6110a0565b60006107a6610b1d565b65ffffffffffff1682106108015760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600a6020526040902061082390836115a8565b9392505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806108895750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6108fb5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e616e6365546f6b656e3a206f6e6c79206d696e7465722063616e60448201527f206d696e7400000000000000000000000000000000000000000000000000000060648201526084016107f8565b61090582826116bb565b5050565b61091333826116c5565b50565b606043610921610b1d565b65ffffffffffff16146109765760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016107f8565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b61091333826116cf565b6001600160a01b0381166000908152600a602052604081205461072490611760565b6109e58233836111f8565b61090582826116c5565b6001600160a01b038116600090815260076020526040812054610724565b600060608082808083610a417f000000000000000000000000000000000000000000000000000000000000000060056117e0565b610a6c7f000000000000000000000000000000000000000000000000000000000000000060066117e0565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610abc610b1d565b65ffffffffffff168210610b125760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064016107f8565b610724600b836115a8565b600061075843611884565b60606004805461068d906128c2565b6001600160a01b0381166000908152600a60205260408120548015610bbb576001600160a01b0383166000908152600a6020526040902080546000198301908110610b8457610b84612985565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610bbe565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e55760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e00000000000000000000000000000060648201526084016107f8565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610d1e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107f8565b61074382868684036110a0565b60003361071e81858561128a565b83421115610d895760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016107f8565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e0390610dfb9060a00160405160208183030381529060405280519060200120611902565b85858561194a565b9050610e0e81611972565b8614610e5c5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016107f8565b610e6681886116cf565b50505050505050565b83421115610ebf5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016107f8565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610eee8c611972565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f4982611902565b90506000610f598287878761194a565b9050896001600160a01b0316816001600160a01b031614610fbc5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016107f8565b610fc78a8a8a6110a0565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a60205260409020805463ffffffff841690811061101757611017612985565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b6000602083511015611088576110818361199a565b9050610724565b816110938482612a02565b5060ff9050610724565b90565b6001600160a01b03831661111b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166111975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461128457818110156112775760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107f8565b61128484848484036110a0565b50505050565b6001600160a01b0383166113065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166113825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038316600090815260208190526040902054818110156114115760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36112848484846119f6565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156114d657507f000000000000000000000000000000000000000000000000000000000000000046145b1561150057507f000000000000000000000000000000000000000000000000000000000000000090565b610758604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b8154600090818160058111156116025760006115c384611a01565b6115cd9085612ae0565b600088815260209020909150869082015463ffffffff1611156115f257809150611600565b6115fd81600161293e565b92505b505b8082101561164f5760006116168383611ae9565b600088815260209020909150869082015463ffffffff16111561163b57809150611649565b61164681600161293e565b92505b50611602565b8015611690576000868152602090208101600019015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611693565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169695505050505050565b6109058282611b04565b6109058282611bb0565b6001600160a01b038281166000818152600960208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611284828483611bc8565b600063ffffffff8211156117dc5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f322062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b5090565b606060ff83146117f35761108183611d05565b8180546117ff906128c2565b80601f016020809104026020016040519081016040528092919081815260200182805461182b906128c2565b80156118785780601f1061184d57610100808354040283529160200191611878565b820191906000526020600020905b81548152906001019060200180831161185b57829003601f168201915b50505050509050610724565b600065ffffffffffff8211156117dc5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f382062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b600061072461190f61147d565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600061195b87878787611d44565b9150915061196881611e26565b5095945050505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b600080829050601f815111156119de57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016107f89190612601565b80516119e982612af7565b179392505050565b505050565b6119f1838383611f8b565b600081600003611a1357506000919050565b60006001611a2084611fbd565b901c6001901b90506001818481611a3957611a39612b1b565b048201901c90506001818481611a5157611a51612b1b565b048201901c90506001818481611a6957611a69612b1b565b048201901c90506001818481611a8157611a81612b1b565b048201901c90506001818481611a9957611a99612b1b565b048201901c90506001818481611ab157611ab1612b1b565b048201901c90506001818481611ac957611ac9612b1b565b048201901c905061082381828581611ae357611ae3612b1b565b04612051565b6000611af86002848418612b4a565b6108239084841661293e565b611b0e8282612067565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611ba25760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f7465730000000000000000000000000000000060648201526084016107f8565b611284600b61212e8361213a565b611bba8282612303565b611284600b6124738361213a565b816001600160a01b0316836001600160a01b031614158015611bea5750600081115b156119f1576001600160a01b03831615611c78576001600160a01b0383166000908152600a602052604081208190611c25906124738561213a565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611c6d929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156119f1576001600160a01b0382166000908152600a602052604081208190611cae9061212e8561213a565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611cf6929190918252602082015260400190565b60405180910390a25050505050565b60606000611d128361247f565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611d7b5750600090506003611e1d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611dcf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116611e1657600060019250925050611e1d565b9150600090505b94509492505050565b6000816004811115611e3a57611e3a612b85565b03611e425750565b6001816004811115611e5657611e56612b85565b03611ea35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107f8565b6002816004811115611eb757611eb7612b85565b03611f045760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107f8565b6003816004811115611f1857611f18612b85565b036109135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038381166000908152600960205260408082205485841683529120546119f192918216911683611bc8565b600080608083901c15611fd257608092831c92015b604083901c15611fe457604092831c92015b602083901c15611ff657602092831c92015b601083901c1561200857601092831c92015b600883901c1561201a57600892831c92015b600483901c1561202c57600492831c92015b600283901c1561203e57600292831c92015b600183901c156107245760010192915050565b60008183106120605781610823565b5090919050565b6001600160a01b0382166120bd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107f8565b80600260008282546120cf919061293e565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610905600083836119f6565b6000610823828461293e565b8254600090819081811561219c5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208201526121b1565b60408051808201909152600080825260208201525b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1693506121e684868863ffffffff16565b925060008211801561221057506121fb610b1d565b65ffffffffffff16816000015163ffffffff16145b1561226a5761221e836124c0565b60008881526020902083016000190180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9092169190911790556122f9565b86604051806040016040528061228e612281610b1d565b65ffffffffffff16611760565b63ffffffff1681526020016122a2866124c0565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6001600160a01b03821661237f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166000908152602081905260409020548181101561240e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36119f1836000846119f6565b60006108238284612ae0565b600060ff8216601f811115610724576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156117dc5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016107f8565b60006020828403121561256657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461082357600080fd5b6000815180845260005b818110156125bc576020818501810151868301820152016125a0565b818111156125ce576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108236020830184612596565b80356001600160a01b038116811461262b57600080fd5b919050565b6000806040838503121561264357600080fd5b61264c83612614565b946020939093013593505050565b60008060006060848603121561266f57600080fd5b61267884612614565b925061268660208501612614565b9150604084013590509250925092565b6000602082840312156126a857600080fd5b5035919050565b6000602082840312156126c157600080fd5b61082382612614565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261270660e084018a612596565b8381036040850152612718818a612596565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561276a5783518352928401929184019160010161274e565b50909c9b505050505050505050505050565b803560ff8116811461262b57600080fd5b60008060008060008060c087890312156127a657600080fd5b6127af87612614565b955060208701359450604087013593506127cb6060880161277c565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561280057600080fd5b61280988612614565b965061281760208901612614565b955060408801359450606088013593506128336080890161277c565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561286257600080fd5b61286b83612614565b915061287960208401612614565b90509250929050565b6000806040838503121561289557600080fd5b61289e83612614565b9150602083013563ffffffff811681146128b757600080fd5b809150509250929050565b600181811c908216806128d657607f821691505b602082108103611994577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156129515761295161290f565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f8211156119f157600081815260208120601f850160051c810160208610156129db5750805b601f850160051c820191505b818110156129fa578281556001016129e7565b505050505050565b815167ffffffffffffffff811115612a1c57612a1c612956565b612a3081612a2a84546128c2565b846129b4565b602080601f831160018114612a655760008415612a4d5750858301515b600019600386901b1c1916600185901b1785556129fa565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612ab257888601518255948401946001909101908401612a93565b5085821015612ad05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082821015612af257612af261290f565b500390565b805160208083015191908110156119945760001960209190910360031b1b16919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612b80577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a" func init() { @@ -23,5 +23,5 @@ func init() { layouts["GovernanceToken"] = GovernanceTokenStorageLayout deployedBytecodes["GovernanceToken"] = GovernanceTokenDeployedBin - immutableReferences["GovernanceToken"] = false + immutableReferences["GovernanceToken"] = true } diff --git a/kroma-bindings/bindings/l1block.go b/kroma-bindings/bindings/l1block.go index e395307fa..5cac10c66 100644 --- a/kroma-bindings/bindings/l1block.go +++ b/kroma-bindings/bindings/l1block.go @@ -32,7 +32,7 @@ var ( // L1BlockMetaData contains all meta data concerning the L1Block contract. var L1BlockMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"DEPOSITOR_ACCOUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"baseFeeScalar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"basefee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batcherHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blobBaseFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blobBaseFeeScalar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"l1FeeOverhead\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"l1FeeScalar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"number\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sequenceNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setL1BlockValues\",\"inputs\":[{\"name\":\"_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_basefee\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_sequenceNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_batcherHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1FeeOverhead\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_l1FeeScalar\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_validatorRewardScalar\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setL1BlockValuesEcotone\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"timestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorRewardScalar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"}]", - Bin: "0x608060405234801561001057600080fd5b50610624806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e8c496611610097578063e81b2c6d11610066578063e81b2c6d14610281578063ed579ad31461028a578063efc674eb14610293578063f8206140146102a657600080fd5b80639e8c4966146101f8578063b80777ea14610201578063c598591814610221578063e591b2821461024157600080fd5b806364ca23ef116100d357806364ca23ef1461017d57806368d5dca6146101aa5780638381f58a146101db5780638b239f73146101ef57600080fd5b806309bd5a6014610105578063440a5e201461012157806354fd4d501461012b5780635cf2496914610174575b600080fd5b61010e60025481565b6040519081526020015b60405180910390f35b6101296102af565b005b6101676040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b604051610118919061050b565b61010e60015481565b6003546101919067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610118565b6003546101c69068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610118565b6000546101919067ffffffffffffffff1681565b61010e60055481565b61010e60065481565b6000546101919068010000000000000000900467ffffffffffffffff1681565b6003546101c6906c01000000000000000000000000900463ffffffff1681565b61025c73deaddeaddeaddeaddeaddeaddeaddeaddead000181565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610118565b61010e60045481565b61010e60075481565b6101296102a136600461059b565b61030a565b61010e60085481565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146102d857633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560085560643560025560843560045560a435600755565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146103b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c756573000000000060648201526084015b60405180910390fd5b61271081111561046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c31426c6f636b3a20746865206d61782076616c7565206f662076616c69646160448201527f746f7220726577617264207363616c617220686173206265656e20657863656560648201527f6465640000000000000000000000000000000000000000000000000000000000608482015260a4016103a9565b6000805467ffffffffffffffff998a1668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009091169a8a169a909a179990991790985560019590955560029390935560038054929095167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009290921691909117909355600492909255600591909155600655600755565b600060208083528351808285015260005b818110156105385785810183015185820160400152820161051c565b8181111561054a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803567ffffffffffffffff8116811461059657600080fd5b919050565b60008060008060008060008060006101208a8c0312156105ba57600080fd5b6105c38a61057e565b98506105d160208b0161057e565b975060408a0135965060608a013595506105ed60808b0161057e565b989b979a50959894979660a0860135965060c08601359560e081013595506101000135935091505056fea164736f6c634300080f000a", + Bin: "0x608060405234801561001057600080fd5b50610731806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e8c496611610097578063e81b2c6d11610066578063e81b2c6d14610281578063ed579ad31461028a578063efc674eb14610293578063f8206140146102a657600080fd5b80639e8c4966146101f8578063b80777ea14610201578063c598591814610221578063e591b2821461024157600080fd5b806364ca23ef116100d357806364ca23ef1461017d57806368d5dca6146101aa5780638381f58a146101db5780638b239f73146101ef57600080fd5b806309bd5a6014610105578063440a5e201461012157806354fd4d501461012b5780635cf2496914610174575b600080fd5b61010e60025481565b6040519081526020015b60405180910390f35b6101296102af565b005b6101676040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101189190610618565b61010e60015481565b6003546101919067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610118565b6003546101c69068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610118565b6000546101919067ffffffffffffffff1681565b61010e60055481565b61010e60065481565b6000546101919068010000000000000000900467ffffffffffffffff1681565b6003546101c6906c01000000000000000000000000900463ffffffff1681565b61025c73deaddeaddeaddeaddeaddeaddeaddeaddead000181565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610118565b61010e60045481565b61010e60075481565b6101296102a13660046106a8565b610383565b61010e60085481565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146102d857633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560085560643560025560843560045560a4356007556103807342000000000000000000000000000000000000705a6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1249c58b000000000000000000000000000000000000000000000000000000001790526000906105fe565b50565b3373deaddeaddeaddeaddeaddeaddeaddeaddead00011461042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c756573000000000060648201526084015b60405180910390fd5b6127108111156104e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c31426c6f636b3a20746865206d61782076616c7565206f662076616c69646160448201527f746f7220726577617264207363616c617220686173206265656e20657863656560648201527f6465640000000000000000000000000000000000000000000000000000000000608482015260a401610422565b6000805467ffffffffffffffff8b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008b8316021790915560018890556002879055600380547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001691871691909117905560048490556005839055600682905560078190556105f27342000000000000000000000000000000000000705a6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1249c58b000000000000000000000000000000000000000000000000000000001790526000906105fe565b50505050505050505050565b600080600080845160208601878a8af19695505050505050565b600060208083528351808285015260005b8181101561064557858101830151858201604001528201610629565b81811115610657576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803567ffffffffffffffff811681146106a357600080fd5b919050565b60008060008060008060008060006101208a8c0312156106c757600080fd5b6106d08a61068b565b98506106de60208b0161068b565b975060408a0135965060608a013595506106fa60808b0161068b565b989b979a50959894979660a0860135965060c08601359560e081013595506101000135935091505056fea164736f6c634300080f000a", } // L1BlockABI is the input ABI used to generate the binding from. diff --git a/kroma-bindings/bindings/l1block_more.go b/kroma-bindings/bindings/l1block_more.go index 0ed21bb1f..d6804fd34 100644 --- a/kroma-bindings/bindings/l1block_more.go +++ b/kroma-bindings/bindings/l1block_more.go @@ -13,7 +13,8 @@ const L1BlockStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"c var L1BlockStorageLayout = new(solc.StorageLayout) -var L1BlockDeployedBin = "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80639e8c496611610097578063e81b2c6d11610066578063e81b2c6d14610281578063ed579ad31461028a578063efc674eb14610293578063f8206140146102a657600080fd5b80639e8c4966146101f8578063b80777ea14610201578063c598591814610221578063e591b2821461024157600080fd5b806364ca23ef116100d357806364ca23ef1461017d57806368d5dca6146101aa5780638381f58a146101db5780638b239f73146101ef57600080fd5b806309bd5a6014610105578063440a5e201461012157806354fd4d501461012b5780635cf2496914610174575b600080fd5b61010e60025481565b6040519081526020015b60405180910390f35b6101296102af565b005b6101676040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b604051610118919061050b565b61010e60015481565b6003546101919067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610118565b6003546101c69068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610118565b6000546101919067ffffffffffffffff1681565b61010e60055481565b61010e60065481565b6000546101919068010000000000000000900467ffffffffffffffff1681565b6003546101c6906c01000000000000000000000000900463ffffffff1681565b61025c73deaddeaddeaddeaddeaddeaddeaddeaddead000181565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610118565b61010e60045481565b61010e60075481565b6101296102a136600461059b565b61030a565b61010e60085481565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146102d857633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560085560643560025560843560045560a435600755565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146103b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c756573000000000060648201526084015b60405180910390fd5b61271081111561046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c31426c6f636b3a20746865206d61782076616c7565206f662076616c69646160448201527f746f7220726577617264207363616c617220686173206265656e20657863656560648201527f6465640000000000000000000000000000000000000000000000000000000000608482015260a4016103a9565b6000805467ffffffffffffffff998a1668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009091169a8a169a909a179990991790985560019590955560029390935560038054929095167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009290921691909117909355600492909255600591909155600655600755565b600060208083528351808285015260005b818110156105385785810183015185820160400152820161051c565b8181111561054a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803567ffffffffffffffff8116811461059657600080fd5b919050565b60008060008060008060008060006101208a8c0312156105ba57600080fd5b6105c38a61057e565b98506105d160208b0161057e565b975060408a0135965060608a013595506105ed60808b0161057e565b989b979a50959894979660a0860135965060c08601359560e081013595506101000135935091505056fea164736f6c634300080f000a" +var L1BlockDeployedBin = "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80639e8c496611610097578063e81b2c6d11610066578063e81b2c6d14610281578063ed579ad31461028a578063efc674eb14610293578063f8206140146102a657600080fd5b80639e8c4966146101f8578063b80777ea14610201578063c598591814610221578063e591b2821461024157600080fd5b806364ca23ef116100d357806364ca23ef1461017d57806368d5dca6146101aa5780638381f58a146101db5780638b239f73146101ef57600080fd5b806309bd5a6014610105578063440a5e201461012157806354fd4d501461012b5780635cf2496914610174575b600080fd5b61010e60025481565b6040519081526020015b60405180910390f35b6101296102af565b005b6101676040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101189190610618565b61010e60015481565b6003546101919067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610118565b6003546101c69068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610118565b6000546101919067ffffffffffffffff1681565b61010e60055481565b61010e60065481565b6000546101919068010000000000000000900467ffffffffffffffff1681565b6003546101c6906c01000000000000000000000000900463ffffffff1681565b61025c73deaddeaddeaddeaddeaddeaddeaddeaddead000181565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610118565b61010e60045481565b61010e60075481565b6101296102a13660046106a8565b610383565b61010e60085481565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146102d857633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560085560643560025560843560045560a4356007556103807342000000000000000000000000000000000000705a6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1249c58b000000000000000000000000000000000000000000000000000000001790526000906105fe565b50565b3373deaddeaddeaddeaddeaddeaddeaddeaddead00011461042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c756573000000000060648201526084015b60405180910390fd5b6127108111156104e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c31426c6f636b3a20746865206d61782076616c7565206f662076616c69646160448201527f746f7220726577617264207363616c617220686173206265656e20657863656560648201527f6465640000000000000000000000000000000000000000000000000000000000608482015260a401610422565b6000805467ffffffffffffffff8b81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008b8316021790915560018890556002879055600380547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001691871691909117905560048490556005839055600682905560078190556105f27342000000000000000000000000000000000000705a6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1249c58b000000000000000000000000000000000000000000000000000000001790526000906105fe565b50505050505050505050565b600080600080845160208601878a8af19695505050505050565b600060208083528351808285015260005b8181101561064557858101830151858201604001528201610629565b81811115610657576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803567ffffffffffffffff811681146106a357600080fd5b919050565b60008060008060008060008060006101208a8c0312156106c757600080fd5b6106d08a61068b565b98506106de60208b0161068b565b975060408a0135965060608a013595506106fa60808b0161068b565b989b979a50959894979660a0860135965060c08601359560e081013595506101000135935091505056fea164736f6c634300080f000a" + func init() { if err := json.Unmarshal([]byte(L1BlockStorageLayoutJSON), L1BlockStorageLayout); err != nil { diff --git a/kroma-bindings/bindings/mintmanager.go b/kroma-bindings/bindings/mintmanager.go new file mode 100644 index 000000000..3acdf1537 --- /dev/null +++ b/kroma-bindings/bindings/mintmanager.go @@ -0,0 +1,720 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// MintManagerMetaData contains all meta data concerning the MintManager contract. +var MintManagerMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_mintActivatedBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_initMintPerBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_slidingWindowBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_decayingFactor\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DECAYING_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DECAYING_FACTOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FLOOR_UNIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GOVERNANCE_TOKEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractGovernanceToken\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INIT_MINT_PER_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MINT_ACTIVATED_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SHARE_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SLIDING_WINDOW_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_recipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mintAmountPerBlock\",\"inputs\":[{\"name\":\"_blockNumber\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"shareOf\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false}]", + Bin: "0x61012060405234801561001157600080fd5b5060405161102638038061102683398101604081905261003091610060565b60a09390935260c09190915260e052610100527342000000000000000000000000000000000000ff608052610096565b6000806000806080858703121561007657600080fd5b505082516020840151604085015160609095015191969095509092509050565b60805160a05160c05160e05161010051610f0d6101196000396000818161026c015281816102d20152610b9f01526000818161018501528181610a9101528181610ad60152610b65015260008181610201015281816102920152610b2601526000818161024501526103e501526000818161013901526105860152610f0d6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806354fd4d501161008c5780637fbbe46f116100665780637fbbe46f1461022d57806381e9090e14610240578063894bee6114610223578063e2da80901461026757600080fd5b806354fd4d50146101b35780637b6a4cda146101fc5780637eb118451461022357600080fd5b80632efd46d6116100bd5780632efd46d61461013457806349ed1e6914610180578063544a54e3146101a757600080fd5b8063062459e6146100e45780631249c58b1461010a57806321e5e2c414610114575b600080fd5b6100f76100f2366004610c26565b61028e565b6040519081526020015b60405180910390f35b61011261033a565b005b6100f7610122366004610c3f565b60026020526000908152604090205481565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610101565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f76402540be40081565b6101ef6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101019190610c7c565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f7620186a081565b61011261023b366004610d3b565b610604565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60007f0000000000000000000000000000000000000000000000000000000000000000816102bb84610a8b565b50905060015b8181101561033157620186a06102f77f000000000000000000000000000000000000000000000000000000000000000085610dd6565b6103019190610e42565b92506402540be4006103138185610e42565b61031d9190610dd6565b92508061032981610e56565b9150506102c1565b50909392505050565b33734200000000000000000000000000000000000002146103e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4d696e744d616e616765723a206f6e6c7920746865204c31426c6f636b20636160448201527f6e2063616c6c20746869732066756e6374696f6e00000000000000000000000060648201526084015b60405180910390fd5b437f00000000000000000000000000000000000000000000000000000000000000001161060257436003540361049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d696e744d616e616765723a20746f6b656e73206861766520616c726561647960448201527f206265656e206d696e74656420696e207468697320626c6f636b00000000000060648201526084016103d9565b60006003546000036104b6576104af43610b21565b90506104c2565b6104bf4361028e565b90505b80156106005760005b6001548110156105fa576000600182815481106104ea576104ea610e8e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526002909152604082205490925090620186a061052d8387610dd6565b6105379190610e42565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018390529192507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b1580156105cc57600080fd5b505af11580156105e0573d6000803e3d6000fd5b5050505050505080806105f290610e56565b9150506104cb565b50436003555b505b565b600054610100900460ff16158080156106245750600054600160ff909116105b8061063e5750303b15801561063e575060005460ff166001145b6106ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103d9565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561072857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b8382146107b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d696e744d616e616765723a20696e76616c6964206c656e677468206f66206160448201527f727261790000000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000805b858110156109b35760008787838181106107d6576107d6610e8e565b90506020020160208101906107eb9190610c3f565b905073ffffffffffffffffffffffffffffffffffffffff8116610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4d696e744d616e616765723a20726563697069656e742061646472657373206360448201527f616e6e6f7420626520300000000000000000000000000000000000000000000060648201526084016103d9565b60008686848181106108a4576108a4610e8e565b90506020020135905080600003610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d696e744d616e616765723a2073686172652063616e6e6f742062652030000060448201526064016103d9565b6109218185610ebd565b600180548082019091557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff9094167fffffffffffffffffffffffff000000000000000000000000000000000000000090941684179055600092835260026020526040909220559150806109ab81610e56565b9150506107ba565b50620186a08114610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4d696e744d616e616765723a20696e76616c696420736861726573000000000060448201526064016103d9565b508015610a8457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600080807f0000000000000000000000000000000000000000000000000000000000000000610abb600186610ed5565b610ac59190610e42565b610ad0906001610ebd565b905060007f0000000000000000000000000000000000000000000000000000000000000000610b00600187610ed5565b610b0a9190610eec565b610b15906001610ebd565b91959194509092505050565b6000807f00000000000000000000000000000000000000000000000000000000000000008180610b5086610a8b565b909250905060015b82811015610bfe57610b8a7f000000000000000000000000000000000000000000000000000000000000000085610dd6565b610b949086610ebd565b9450620186a0610bc47f000000000000000000000000000000000000000000000000000000000000000086610dd6565b610bce9190610e42565b93506402540be400610be08186610e42565b610bea9190610dd6565b935080610bf681610e56565b915050610b58565b508015610c1c57610c0f8184610dd6565b610c199085610ebd565b93505b5091949350505050565b600060208284031215610c3857600080fd5b5035919050565b600060208284031215610c5157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c7557600080fd5b9392505050565b600060208083528351808285015260005b81811015610ca957858101830151858201604001528201610c8d565b81811115610cbb576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008083601f840112610d0157600080fd5b50813567ffffffffffffffff811115610d1957600080fd5b6020830191508360208260051b8501011115610d3457600080fd5b9250929050565b60008060008060408587031215610d5157600080fd5b843567ffffffffffffffff80821115610d6957600080fd5b610d7588838901610cef565b90965094506020870135915080821115610d8e57600080fd5b50610d9b87828801610cef565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e0e57610e0e610da7565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610e5157610e51610e13565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e8757610e87610da7565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115610ed057610ed0610da7565b500190565b600082821015610ee757610ee7610da7565b500390565b600082610efb57610efb610e13565b50069056fea164736f6c634300080f000a", +} + +// MintManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use MintManagerMetaData.ABI instead. +var MintManagerABI = MintManagerMetaData.ABI + +// MintManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MintManagerMetaData.Bin instead. +var MintManagerBin = MintManagerMetaData.Bin + +// DeployMintManager deploys a new Ethereum contract, binding an instance of MintManager to it. +func DeployMintManager(auth *bind.TransactOpts, backend bind.ContractBackend, _mintActivatedBlock *big.Int, _initMintPerBlock *big.Int, _slidingWindowBlocks *big.Int, _decayingFactor *big.Int) (common.Address, *types.Transaction, *MintManager, error) { + parsed, err := MintManagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MintManagerBin), backend, _mintActivatedBlock, _initMintPerBlock, _slidingWindowBlocks, _decayingFactor) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &MintManager{MintManagerCaller: MintManagerCaller{contract: contract}, MintManagerTransactor: MintManagerTransactor{contract: contract}, MintManagerFilterer: MintManagerFilterer{contract: contract}}, nil +} + +// MintManager is an auto generated Go binding around an Ethereum contract. +type MintManager struct { + MintManagerCaller // Read-only binding to the contract + MintManagerTransactor // Write-only binding to the contract + MintManagerFilterer // Log filterer for contract events +} + +// MintManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type MintManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MintManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type MintManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MintManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MintManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MintManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MintManagerSession struct { + Contract *MintManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MintManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MintManagerCallerSession struct { + Contract *MintManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MintManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MintManagerTransactorSession struct { + Contract *MintManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MintManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type MintManagerRaw struct { + Contract *MintManager // Generic contract binding to access the raw methods on +} + +// MintManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MintManagerCallerRaw struct { + Contract *MintManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// MintManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MintManagerTransactorRaw struct { + Contract *MintManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewMintManager creates a new instance of MintManager, bound to a specific deployed contract. +func NewMintManager(address common.Address, backend bind.ContractBackend) (*MintManager, error) { + contract, err := bindMintManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &MintManager{MintManagerCaller: MintManagerCaller{contract: contract}, MintManagerTransactor: MintManagerTransactor{contract: contract}, MintManagerFilterer: MintManagerFilterer{contract: contract}}, nil +} + +// NewMintManagerCaller creates a new read-only instance of MintManager, bound to a specific deployed contract. +func NewMintManagerCaller(address common.Address, caller bind.ContractCaller) (*MintManagerCaller, error) { + contract, err := bindMintManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MintManagerCaller{contract: contract}, nil +} + +// NewMintManagerTransactor creates a new write-only instance of MintManager, bound to a specific deployed contract. +func NewMintManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*MintManagerTransactor, error) { + contract, err := bindMintManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MintManagerTransactor{contract: contract}, nil +} + +// NewMintManagerFilterer creates a new log filterer instance of MintManager, bound to a specific deployed contract. +func NewMintManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*MintManagerFilterer, error) { + contract, err := bindMintManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MintManagerFilterer{contract: contract}, nil +} + +// bindMintManager binds a generic wrapper to an already deployed contract. +func bindMintManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MintManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MintManager *MintManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MintManager.Contract.MintManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MintManager *MintManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MintManager.Contract.MintManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MintManager *MintManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MintManager.Contract.MintManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MintManager *MintManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MintManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MintManager *MintManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MintManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MintManager *MintManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MintManager.Contract.contract.Transact(opts, method, params...) +} + +// DECAYINGDENOMINATOR is a free data retrieval call binding the contract method 0x894bee61. +// +// Solidity: function DECAYING_DENOMINATOR() view returns(uint256) +func (_MintManager *MintManagerCaller) DECAYINGDENOMINATOR(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "DECAYING_DENOMINATOR") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DECAYINGDENOMINATOR is a free data retrieval call binding the contract method 0x894bee61. +// +// Solidity: function DECAYING_DENOMINATOR() view returns(uint256) +func (_MintManager *MintManagerSession) DECAYINGDENOMINATOR() (*big.Int, error) { + return _MintManager.Contract.DECAYINGDENOMINATOR(&_MintManager.CallOpts) +} + +// DECAYINGDENOMINATOR is a free data retrieval call binding the contract method 0x894bee61. +// +// Solidity: function DECAYING_DENOMINATOR() view returns(uint256) +func (_MintManager *MintManagerCallerSession) DECAYINGDENOMINATOR() (*big.Int, error) { + return _MintManager.Contract.DECAYINGDENOMINATOR(&_MintManager.CallOpts) +} + +// DECAYINGFACTOR is a free data retrieval call binding the contract method 0xe2da8090. +// +// Solidity: function DECAYING_FACTOR() view returns(uint256) +func (_MintManager *MintManagerCaller) DECAYINGFACTOR(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "DECAYING_FACTOR") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DECAYINGFACTOR is a free data retrieval call binding the contract method 0xe2da8090. +// +// Solidity: function DECAYING_FACTOR() view returns(uint256) +func (_MintManager *MintManagerSession) DECAYINGFACTOR() (*big.Int, error) { + return _MintManager.Contract.DECAYINGFACTOR(&_MintManager.CallOpts) +} + +// DECAYINGFACTOR is a free data retrieval call binding the contract method 0xe2da8090. +// +// Solidity: function DECAYING_FACTOR() view returns(uint256) +func (_MintManager *MintManagerCallerSession) DECAYINGFACTOR() (*big.Int, error) { + return _MintManager.Contract.DECAYINGFACTOR(&_MintManager.CallOpts) +} + +// FLOORUNIT is a free data retrieval call binding the contract method 0x544a54e3. +// +// Solidity: function FLOOR_UNIT() view returns(uint256) +func (_MintManager *MintManagerCaller) FLOORUNIT(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "FLOOR_UNIT") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// FLOORUNIT is a free data retrieval call binding the contract method 0x544a54e3. +// +// Solidity: function FLOOR_UNIT() view returns(uint256) +func (_MintManager *MintManagerSession) FLOORUNIT() (*big.Int, error) { + return _MintManager.Contract.FLOORUNIT(&_MintManager.CallOpts) +} + +// FLOORUNIT is a free data retrieval call binding the contract method 0x544a54e3. +// +// Solidity: function FLOOR_UNIT() view returns(uint256) +func (_MintManager *MintManagerCallerSession) FLOORUNIT() (*big.Int, error) { + return _MintManager.Contract.FLOORUNIT(&_MintManager.CallOpts) +} + +// GOVERNANCETOKEN is a free data retrieval call binding the contract method 0x2efd46d6. +// +// Solidity: function GOVERNANCE_TOKEN() view returns(address) +func (_MintManager *MintManagerCaller) GOVERNANCETOKEN(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "GOVERNANCE_TOKEN") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GOVERNANCETOKEN is a free data retrieval call binding the contract method 0x2efd46d6. +// +// Solidity: function GOVERNANCE_TOKEN() view returns(address) +func (_MintManager *MintManagerSession) GOVERNANCETOKEN() (common.Address, error) { + return _MintManager.Contract.GOVERNANCETOKEN(&_MintManager.CallOpts) +} + +// GOVERNANCETOKEN is a free data retrieval call binding the contract method 0x2efd46d6. +// +// Solidity: function GOVERNANCE_TOKEN() view returns(address) +func (_MintManager *MintManagerCallerSession) GOVERNANCETOKEN() (common.Address, error) { + return _MintManager.Contract.GOVERNANCETOKEN(&_MintManager.CallOpts) +} + +// INITMINTPERBLOCK is a free data retrieval call binding the contract method 0x7b6a4cda. +// +// Solidity: function INIT_MINT_PER_BLOCK() view returns(uint256) +func (_MintManager *MintManagerCaller) INITMINTPERBLOCK(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "INIT_MINT_PER_BLOCK") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// INITMINTPERBLOCK is a free data retrieval call binding the contract method 0x7b6a4cda. +// +// Solidity: function INIT_MINT_PER_BLOCK() view returns(uint256) +func (_MintManager *MintManagerSession) INITMINTPERBLOCK() (*big.Int, error) { + return _MintManager.Contract.INITMINTPERBLOCK(&_MintManager.CallOpts) +} + +// INITMINTPERBLOCK is a free data retrieval call binding the contract method 0x7b6a4cda. +// +// Solidity: function INIT_MINT_PER_BLOCK() view returns(uint256) +func (_MintManager *MintManagerCallerSession) INITMINTPERBLOCK() (*big.Int, error) { + return _MintManager.Contract.INITMINTPERBLOCK(&_MintManager.CallOpts) +} + +// MINTACTIVATEDBLOCK is a free data retrieval call binding the contract method 0x81e9090e. +// +// Solidity: function MINT_ACTIVATED_BLOCK() view returns(uint256) +func (_MintManager *MintManagerCaller) MINTACTIVATEDBLOCK(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "MINT_ACTIVATED_BLOCK") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MINTACTIVATEDBLOCK is a free data retrieval call binding the contract method 0x81e9090e. +// +// Solidity: function MINT_ACTIVATED_BLOCK() view returns(uint256) +func (_MintManager *MintManagerSession) MINTACTIVATEDBLOCK() (*big.Int, error) { + return _MintManager.Contract.MINTACTIVATEDBLOCK(&_MintManager.CallOpts) +} + +// MINTACTIVATEDBLOCK is a free data retrieval call binding the contract method 0x81e9090e. +// +// Solidity: function MINT_ACTIVATED_BLOCK() view returns(uint256) +func (_MintManager *MintManagerCallerSession) MINTACTIVATEDBLOCK() (*big.Int, error) { + return _MintManager.Contract.MINTACTIVATEDBLOCK(&_MintManager.CallOpts) +} + +// SHAREDENOMINATOR is a free data retrieval call binding the contract method 0x7eb11845. +// +// Solidity: function SHARE_DENOMINATOR() view returns(uint256) +func (_MintManager *MintManagerCaller) SHAREDENOMINATOR(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "SHARE_DENOMINATOR") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SHAREDENOMINATOR is a free data retrieval call binding the contract method 0x7eb11845. +// +// Solidity: function SHARE_DENOMINATOR() view returns(uint256) +func (_MintManager *MintManagerSession) SHAREDENOMINATOR() (*big.Int, error) { + return _MintManager.Contract.SHAREDENOMINATOR(&_MintManager.CallOpts) +} + +// SHAREDENOMINATOR is a free data retrieval call binding the contract method 0x7eb11845. +// +// Solidity: function SHARE_DENOMINATOR() view returns(uint256) +func (_MintManager *MintManagerCallerSession) SHAREDENOMINATOR() (*big.Int, error) { + return _MintManager.Contract.SHAREDENOMINATOR(&_MintManager.CallOpts) +} + +// SLIDINGWINDOWBLOCKS is a free data retrieval call binding the contract method 0x49ed1e69. +// +// Solidity: function SLIDING_WINDOW_BLOCKS() view returns(uint256) +func (_MintManager *MintManagerCaller) SLIDINGWINDOWBLOCKS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "SLIDING_WINDOW_BLOCKS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SLIDINGWINDOWBLOCKS is a free data retrieval call binding the contract method 0x49ed1e69. +// +// Solidity: function SLIDING_WINDOW_BLOCKS() view returns(uint256) +func (_MintManager *MintManagerSession) SLIDINGWINDOWBLOCKS() (*big.Int, error) { + return _MintManager.Contract.SLIDINGWINDOWBLOCKS(&_MintManager.CallOpts) +} + +// SLIDINGWINDOWBLOCKS is a free data retrieval call binding the contract method 0x49ed1e69. +// +// Solidity: function SLIDING_WINDOW_BLOCKS() view returns(uint256) +func (_MintManager *MintManagerCallerSession) SLIDINGWINDOWBLOCKS() (*big.Int, error) { + return _MintManager.Contract.SLIDINGWINDOWBLOCKS(&_MintManager.CallOpts) +} + +// MintAmountPerBlock is a free data retrieval call binding the contract method 0x062459e6. +// +// Solidity: function mintAmountPerBlock(uint256 _blockNumber) view returns(uint256) +func (_MintManager *MintManagerCaller) MintAmountPerBlock(opts *bind.CallOpts, _blockNumber *big.Int) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "mintAmountPerBlock", _blockNumber) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MintAmountPerBlock is a free data retrieval call binding the contract method 0x062459e6. +// +// Solidity: function mintAmountPerBlock(uint256 _blockNumber) view returns(uint256) +func (_MintManager *MintManagerSession) MintAmountPerBlock(_blockNumber *big.Int) (*big.Int, error) { + return _MintManager.Contract.MintAmountPerBlock(&_MintManager.CallOpts, _blockNumber) +} + +// MintAmountPerBlock is a free data retrieval call binding the contract method 0x062459e6. +// +// Solidity: function mintAmountPerBlock(uint256 _blockNumber) view returns(uint256) +func (_MintManager *MintManagerCallerSession) MintAmountPerBlock(_blockNumber *big.Int) (*big.Int, error) { + return _MintManager.Contract.MintAmountPerBlock(&_MintManager.CallOpts, _blockNumber) +} + +// ShareOf is a free data retrieval call binding the contract method 0x21e5e2c4. +// +// Solidity: function shareOf(address ) view returns(uint256) +func (_MintManager *MintManagerCaller) ShareOf(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "shareOf", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ShareOf is a free data retrieval call binding the contract method 0x21e5e2c4. +// +// Solidity: function shareOf(address ) view returns(uint256) +func (_MintManager *MintManagerSession) ShareOf(arg0 common.Address) (*big.Int, error) { + return _MintManager.Contract.ShareOf(&_MintManager.CallOpts, arg0) +} + +// ShareOf is a free data retrieval call binding the contract method 0x21e5e2c4. +// +// Solidity: function shareOf(address ) view returns(uint256) +func (_MintManager *MintManagerCallerSession) ShareOf(arg0 common.Address) (*big.Int, error) { + return _MintManager.Contract.ShareOf(&_MintManager.CallOpts, arg0) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_MintManager *MintManagerCaller) Version(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _MintManager.contract.Call(opts, &out, "version") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_MintManager *MintManagerSession) Version() (string, error) { + return _MintManager.Contract.Version(&_MintManager.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_MintManager *MintManagerCallerSession) Version() (string, error) { + return _MintManager.Contract.Version(&_MintManager.CallOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x7fbbe46f. +// +// Solidity: function initialize(address[] _recipients, uint256[] _shares) returns() +func (_MintManager *MintManagerTransactor) Initialize(opts *bind.TransactOpts, _recipients []common.Address, _shares []*big.Int) (*types.Transaction, error) { + return _MintManager.contract.Transact(opts, "initialize", _recipients, _shares) +} + +// Initialize is a paid mutator transaction binding the contract method 0x7fbbe46f. +// +// Solidity: function initialize(address[] _recipients, uint256[] _shares) returns() +func (_MintManager *MintManagerSession) Initialize(_recipients []common.Address, _shares []*big.Int) (*types.Transaction, error) { + return _MintManager.Contract.Initialize(&_MintManager.TransactOpts, _recipients, _shares) +} + +// Initialize is a paid mutator transaction binding the contract method 0x7fbbe46f. +// +// Solidity: function initialize(address[] _recipients, uint256[] _shares) returns() +func (_MintManager *MintManagerTransactorSession) Initialize(_recipients []common.Address, _shares []*big.Int) (*types.Transaction, error) { + return _MintManager.Contract.Initialize(&_MintManager.TransactOpts, _recipients, _shares) +} + +// Mint is a paid mutator transaction binding the contract method 0x1249c58b. +// +// Solidity: function mint() returns() +func (_MintManager *MintManagerTransactor) Mint(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MintManager.contract.Transact(opts, "mint") +} + +// Mint is a paid mutator transaction binding the contract method 0x1249c58b. +// +// Solidity: function mint() returns() +func (_MintManager *MintManagerSession) Mint() (*types.Transaction, error) { + return _MintManager.Contract.Mint(&_MintManager.TransactOpts) +} + +// Mint is a paid mutator transaction binding the contract method 0x1249c58b. +// +// Solidity: function mint() returns() +func (_MintManager *MintManagerTransactorSession) Mint() (*types.Transaction, error) { + return _MintManager.Contract.Mint(&_MintManager.TransactOpts) +} + +// MintManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the MintManager contract. +type MintManagerInitializedIterator struct { + Event *MintManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *MintManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(MintManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(MintManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *MintManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *MintManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// MintManagerInitialized represents a Initialized event raised by the MintManager contract. +type MintManagerInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_MintManager *MintManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*MintManagerInitializedIterator, error) { + + logs, sub, err := _MintManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &MintManagerInitializedIterator{contract: _MintManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_MintManager *MintManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *MintManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _MintManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(MintManagerInitialized) + if err := _MintManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_MintManager *MintManagerFilterer) ParseInitialized(log types.Log) (*MintManagerInitialized, error) { + event := new(MintManagerInitialized) + if err := _MintManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/kroma-bindings/bindings/mintmanager_more.go b/kroma-bindings/bindings/mintmanager_more.go new file mode 100644 index 000000000..5c56121e1 --- /dev/null +++ b/kroma-bindings/bindings/mintmanager_more.go @@ -0,0 +1,27 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "encoding/json" + + "github.com/ethereum-optimism/optimism/op-bindings/solc" +) + +const MintManagerStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/governance/MintManager.sol:MintManager\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/governance/MintManager.sol:MintManager\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/governance/MintManager.sol:MintManager\",\"label\":\"recipients\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_address)dyn_storage\"},{\"astId\":1003,\"contract\":\"contracts/governance/MintManager.sol:MintManager\",\"label\":\"shareOf\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1004,\"contract\":\"contracts/governance/MintManager.sol:MintManager\",\"label\":\"lastMintedBlock\",\"offset\":0,\"slot\":\"3\",\"type\":\"t_uint256\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_address)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"address[]\",\"numberOfBytes\":\"32\",\"base\":\"t_address\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" + +var MintManagerStorageLayout = new(solc.StorageLayout) + +var MintManagerDeployedBin = "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806354fd4d501161008c5780637fbbe46f116100665780637fbbe46f1461022d57806381e9090e14610240578063894bee6114610223578063e2da80901461026757600080fd5b806354fd4d50146101b35780637b6a4cda146101fc5780637eb118451461022357600080fd5b80632efd46d6116100bd5780632efd46d61461013457806349ed1e6914610180578063544a54e3146101a757600080fd5b8063062459e6146100e45780631249c58b1461010a57806321e5e2c414610114575b600080fd5b6100f76100f2366004610c26565b61028e565b6040519081526020015b60405180910390f35b61011261033a565b005b6100f7610122366004610c3f565b60026020526000908152604090205481565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610101565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f76402540be40081565b6101ef6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101019190610c7c565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f7620186a081565b61011261023b366004610d3b565b610604565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60007f0000000000000000000000000000000000000000000000000000000000000000816102bb84610a8b565b50905060015b8181101561033157620186a06102f77f000000000000000000000000000000000000000000000000000000000000000085610dd6565b6103019190610e42565b92506402540be4006103138185610e42565b61031d9190610dd6565b92508061032981610e56565b9150506102c1565b50909392505050565b33734200000000000000000000000000000000000002146103e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4d696e744d616e616765723a206f6e6c7920746865204c31426c6f636b20636160448201527f6e2063616c6c20746869732066756e6374696f6e00000000000000000000000060648201526084015b60405180910390fd5b437f00000000000000000000000000000000000000000000000000000000000000001161060257436003540361049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d696e744d616e616765723a20746f6b656e73206861766520616c726561647960448201527f206265656e206d696e74656420696e207468697320626c6f636b00000000000060648201526084016103d9565b60006003546000036104b6576104af43610b21565b90506104c2565b6104bf4361028e565b90505b80156106005760005b6001548110156105fa576000600182815481106104ea576104ea610e8e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526002909152604082205490925090620186a061052d8387610dd6565b6105379190610e42565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018390529192507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b1580156105cc57600080fd5b505af11580156105e0573d6000803e3d6000fd5b5050505050505080806105f290610e56565b9150506104cb565b50436003555b505b565b600054610100900460ff16158080156106245750600054600160ff909116105b8061063e5750303b15801561063e575060005460ff166001145b6106ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103d9565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561072857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b8382146107b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d696e744d616e616765723a20696e76616c6964206c656e677468206f66206160448201527f727261790000000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000805b858110156109b35760008787838181106107d6576107d6610e8e565b90506020020160208101906107eb9190610c3f565b905073ffffffffffffffffffffffffffffffffffffffff8116610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4d696e744d616e616765723a20726563697069656e742061646472657373206360448201527f616e6e6f7420626520300000000000000000000000000000000000000000000060648201526084016103d9565b60008686848181106108a4576108a4610e8e565b90506020020135905080600003610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d696e744d616e616765723a2073686172652063616e6e6f742062652030000060448201526064016103d9565b6109218185610ebd565b600180548082019091557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805473ffffffffffffffffffffffffffffffffffffffff9094167fffffffffffffffffffffffff000000000000000000000000000000000000000090941684179055600092835260026020526040909220559150806109ab81610e56565b9150506107ba565b50620186a08114610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4d696e744d616e616765723a20696e76616c696420736861726573000000000060448201526064016103d9565b508015610a8457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600080807f0000000000000000000000000000000000000000000000000000000000000000610abb600186610ed5565b610ac59190610e42565b610ad0906001610ebd565b905060007f0000000000000000000000000000000000000000000000000000000000000000610b00600187610ed5565b610b0a9190610eec565b610b15906001610ebd565b91959194509092505050565b6000807f00000000000000000000000000000000000000000000000000000000000000008180610b5086610a8b565b909250905060015b82811015610bfe57610b8a7f000000000000000000000000000000000000000000000000000000000000000085610dd6565b610b949086610ebd565b9450620186a0610bc47f000000000000000000000000000000000000000000000000000000000000000086610dd6565b610bce9190610e42565b93506402540be400610be08186610e42565b610bea9190610dd6565b935080610bf681610e56565b915050610b58565b508015610c1c57610c0f8184610dd6565b610c199085610ebd565b93505b5091949350505050565b600060208284031215610c3857600080fd5b5035919050565b600060208284031215610c5157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c7557600080fd5b9392505050565b600060208083528351808285015260005b81811015610ca957858101830151858201604001528201610c8d565b81811115610cbb576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008083601f840112610d0157600080fd5b50813567ffffffffffffffff811115610d1957600080fd5b6020830191508360208260051b8501011115610d3457600080fd5b9250929050565b60008060008060408587031215610d5157600080fd5b843567ffffffffffffffff80821115610d6957600080fd5b610d7588838901610cef565b90965094506020870135915080821115610d8e57600080fd5b50610d9b87828801610cef565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e0e57610e0e610da7565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610e5157610e51610e13565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e8757610e87610da7565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115610ed057610ed0610da7565b500190565b600082821015610ee757610ee7610da7565b500390565b600082610efb57610efb610e13565b50069056fea164736f6c634300080f000a" + + +func init() { + if err := json.Unmarshal([]byte(MintManagerStorageLayoutJSON), MintManagerStorageLayout); err != nil { + panic(err) + } + + layouts["MintManager"] = MintManagerStorageLayout + deployedBytecodes["MintManager"] = MintManagerDeployedBin + immutableReferences["MintManager"] = true +} diff --git a/kroma-bindings/gen/main.go b/kroma-bindings/gen/main.go index 23df19e6a..73b3cc002 100644 --- a/kroma-bindings/gen/main.go +++ b/kroma-bindings/gen/main.go @@ -183,12 +183,6 @@ func main() { hasImmutables := string(immutableRefs) != `""` - // [Kroma: START] - if name == "GovernanceToken" { - hasImmutables = false - } - // [Kroma: END] - d := data{ Name: name, StorageLayout: serStr, diff --git a/kroma-bindings/predeploys/addresses.go b/kroma-bindings/predeploys/addresses.go index 5095701f1..5b6aa74e8 100644 --- a/kroma-bindings/predeploys/addresses.go +++ b/kroma-bindings/predeploys/addresses.go @@ -17,10 +17,11 @@ const ( L1FeeVault = "0x4200000000000000000000000000000000000007" ValidatorRewardVault = "0x4200000000000000000000000000000000000008" L2StandardBridge = "0x4200000000000000000000000000000000000009" - GovernanceToken = "0x4200000000000000000000000000000000000010" L2ERC721Bridge = "0x420000000000000000000000000000000000000A" KromaMintableERC20Factory = "0x420000000000000000000000000000000000000B" KromaMintableERC721Factory = "0x420000000000000000000000000000000000000C" + MintManager = "0x4200000000000000000000000000000000000070" + GovernanceToken = "0x42000000000000000000000000000000000000FF" Create2Deployer = "0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2" MultiCall3 = "0xcA11bde05977b3631167028862bE2a173976CA11" Safe_v130 = "0x69f4D1788e39c87893C980c06EdF4b7f686e2938" @@ -49,6 +50,7 @@ var ( L2ERC721BridgeAddr = common.HexToAddress(L2ERC721Bridge) KromaMintableERC20FactoryAddr = common.HexToAddress(KromaMintableERC20Factory) KromaMintableERC721FactoryAddr = common.HexToAddress(KromaMintableERC721Factory) + MintManagerAddr = common.HexToAddress(MintManager) Create2DeployerAddr = common.HexToAddress(Create2Deployer) MultiCall3Addr = common.HexToAddress(MultiCall3) Safe_v130Addr = common.HexToAddress(Safe_v130) @@ -69,7 +71,9 @@ var ( func IsProxied(predeployAddr common.Address) bool { switch predeployAddr { case WETH9Addr: + /* [Kroma: START] case GovernanceTokenAddr: + [Kroma: END] */ default: return true } @@ -88,8 +92,10 @@ func init() { Predeploys["ValidatorRewardVault"] = &oppredeploys.Predeploy{Address: ValidatorRewardVaultAddr} Predeploys["L2StandardBridge"] = &oppredeploys.Predeploy{Address: L2StandardBridgeAddr} Predeploys["GovernanceToken"] = &oppredeploys.Predeploy{ - Address: GovernanceTokenAddr, + Address: GovernanceTokenAddr, + /* [Kroma: START] ProxyDisabled: true, + */ Enabled: func(config oppredeploys.DeployConfig) bool { return config.GovernanceEnabled() }, @@ -97,6 +103,12 @@ func init() { Predeploys["L2ERC721Bridge"] = &oppredeploys.Predeploy{Address: L2ERC721BridgeAddr} Predeploys["KromaMintableERC20Factory"] = &oppredeploys.Predeploy{Address: KromaMintableERC20FactoryAddr} Predeploys["KromaMintableERC721Factory"] = &oppredeploys.Predeploy{Address: KromaMintableERC721FactoryAddr} + Predeploys["MintManager"] = &oppredeploys.Predeploy{ + Address: MintManagerAddr, + Enabled: func(config oppredeploys.DeployConfig) bool { + return config.GovernanceEnabled() + }, + } Predeploys["Create2Deployer"] = &oppredeploys.Predeploy{ Address: Create2DeployerAddr, ProxyDisabled: true, diff --git a/kroma-chain-ops/README.md b/kroma-chain-ops/README.md new file mode 100644 index 000000000..e033b0d9c --- /dev/null +++ b/kroma-chain-ops/README.md @@ -0,0 +1,25 @@ +# kroma-chain-ops + +This package contains utilities for working with chain state. + +## check-l2 + +The `check-l2` binary is used for verifying that an OP Stack L2 +has been configured correctly. It iterates over all 256 predeployed +proxies to make sure they are configured correctly with the correct +proxy admin address. After that, it checks that all [predeploys](../kroma-bindings/predeploys/addresses.go) +are configured and aliased correctly. Additional contract-specific +checks ensure configuration like ownership, version, and storage +is set correctly for the predeploys. + +#### Usage + +It can be built and run using the [Makefile](./Makefile) `check-l2` target. +Run `make check-l2` to create a binary in [./bin/check-l2](./bin/check-l2) +that can be executed by providing the `--l1-rpc-url` and `--l2-rpc-url` flags. + +```sh +./bin/check-l2 \ + --l2-rpc-url http://localhost:9545 \ + --l1-rpc-url http://localhost:8545 +``` diff --git a/kroma-chain-ops/genesis/config.go b/kroma-chain-ops/genesis/config.go index 8e510dd6e..580bb8445 100644 --- a/kroma-chain-ops/genesis/config.go +++ b/kroma-chain-ops/genesis/config.go @@ -11,6 +11,7 @@ import ( "reflect" "strings" + "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" gstate "github.com/ethereum/go-ethereum/core/state" @@ -283,6 +284,21 @@ type DeployConfig struct { ZKVerifierHashScalar *hexutil.Big `json:"zkVerifierHashScalar"` ZKVerifierM56Px *hexutil.Big `json:"zkVerifierM56Px"` ZKVerifierM56Py *hexutil.Big `json:"zkVerifierM56Py"` + + // L1GovernanceTokenProxy represents the address of the L1GovernanceTokenProxy on L1. + L1GovernanceTokenProxy common.Address `json:"l1GovernanceTokenProxy"` + // MintManagerMintActivatedBlock is the number of the L2 block where the mint function is activated. + MintManagerMintActivatedBlock *hexutil.Big `json:"mintManagerMintActivatedBlock,omitempty"` + // MintManagerInitMintPerBlock is the initial amount of governance tokens minted per block. + MintManagerInitMintPerBlock *hexutil.Big `json:"mintManagerInitMintPerBlock,omitempty"` + // MintManagerSlidingWindowBlocks is the period (in blocks) which the mint amount per block decreases. + MintManagerSlidingWindowBlocks uint64 `json:"mintManagerSlidingWindowBlocks"` + // MintManagerDecayingFactor is the ratio by which the mint amount decreases from the previous epoch. + MintManagerDecayingFactor uint64 `json:"mintManagerDecayingFactor"` + // MintManagerRecipients is an array of recipient addresses to which minted tokens will be distributed. + MintManagerRecipients []common.Address `json:"mintManagerRecipients"` + // MintManagerShares is an array of each recipient's shares of minted tokens. + MintManagerShares []uint64 `json:"mintManagerShares"` // [Kroma: END] } @@ -384,8 +400,25 @@ func (d *DeployConfig) Check() error { if d.GovernanceTokenSymbol == "" { return fmt.Errorf("%w: GovernanceToken.symbol cannot be empty", ErrInvalidDeployConfig) } - if d.GovernanceTokenOwner == (common.Address{}) { - return fmt.Errorf("%w: GovernanceToken owner cannot be address(0)", ErrInvalidDeployConfig) + // [Kroma: START] + // if d.GovernanceTokenOwner == (common.Address{}) { + // return fmt.Errorf("%w: GovernanceToken owner cannot be address(0)", ErrInvalidDeployConfig) + // } + // [Kroma: END] + if d.MintManagerSlidingWindowBlocks == 0 { + return fmt.Errorf("%w: MintManagerSlidingWindowBlocks cannot be 0", ErrInvalidDeployConfig) + } + if d.MintManagerDecayingFactor == 0 { + return fmt.Errorf("%w: MintManagerDecayingFactor cannot be 0", ErrInvalidDeployConfig) + } + if d.MintManagerDecayingFactor > 100000 { + return fmt.Errorf("%w: MintManagerDecayingFactor cannot be greater than 100000", ErrInvalidDeployConfig) + } + if len(d.MintManagerRecipients) == 0 { + return fmt.Errorf("%w: MintManagerRecipients array cannot be empty", ErrInvalidDeployConfig) + } + if len(d.MintManagerRecipients) != len(d.MintManagerShares) { + return fmt.Errorf("%w: MintManagerRecipients and MintManagerShares must be the same length", ErrInvalidDeployConfig) } } // L2 block time must always be smaller than L1 block time @@ -527,6 +560,12 @@ func (d *DeployConfig) CheckAddresses() error { if d.KromaPortalProxy == (common.Address{}) { return fmt.Errorf("%w: KromaPortalProxy cannot be address(0)", ErrInvalidDeployConfig) } + + // [Kroma: START] + if d.L1GovernanceTokenProxy == (common.Address{}) { + return fmt.Errorf("%w: L1GovernanceTokenProxy cannot be address(0)", ErrInvalidDeployConfig) + } + // [Kroma: END] return nil } @@ -540,6 +579,7 @@ func (d *DeployConfig) SetDeployments(deployments *L1Deployments) { // [Kroma: START] d.ValidatorPoolProxy = deployments.ValidatorPoolProxy + d.L1GovernanceTokenProxy = deployments.L1GovernanceTokenProxy // [Kroma: END] } @@ -722,6 +762,8 @@ type L1Deployments struct { // [Kroma: START] Colosseum common.Address `json:"Colosseum"` ColosseumProxy common.Address `json:"ColosseumProxy"` + L1GovernanceToken common.Address `json:"L1GovernanceToken"` + L1GovernanceTokenProxy common.Address `json:"L1GovernanceTokenProxy"` Poseidon2 common.Address `json:"Poseidon2"` SecurityCouncil common.Address `json:"SecurityCouncil"` SecurityCouncilProxy common.Address `json:"SecurityCouncilProxy"` @@ -897,6 +939,21 @@ func NewL2ImmutableConfig(config *DeployConfig, block *types.Block) (*immutables rewardDivider := config.FinalizationPeriodSeconds / (config.L2OutputOracleSubmissionInterval * config.L2BlockTime) + // Set the default value for the initial mint amount per block. + initMintPerBlock := big.NewInt(1e18) + if config.MintManagerInitMintPerBlock != nil { + v := new(big.Int).Set(config.MintManagerInitMintPerBlock.ToInt()) + if v.Uint64() > 0 { + initMintPerBlock = v + } + } + + // Set the default value for the block where the mint function is activated. + mintActivatedBlock := abi.MaxUint256 + if config.MintManagerMintActivatedBlock != nil { + mintActivatedBlock = new(big.Int).Set(config.MintManagerMintActivatedBlock.ToInt()) + } + cfg := immutables.PredeploysImmutableConfig{ L2ToL1MessagePasser: struct{}{}, /* [Kroma: START] @@ -924,14 +981,23 @@ func NewL2ImmutableConfig(config *DeployConfig, block *types.Block) (*immutables WithdrawalNetwork: config.SequencerFeeVaultWithdrawalNetwork.ToUint8(), }, [Kroma: END] */ - L1BlockNumber: struct{}{}, - GasPriceOracle: struct{}{}, - L1Block: struct{}{}, - GovernanceToken: struct{}{}, + L1BlockNumber: struct{}{}, + GasPriceOracle: struct{}{}, + L1Block: struct{}{}, /* [Kroma: START] LegacyMessagePasser: struct{}{}, [Kroma: END] */ // [Kroma: START] + GovernanceToken: struct { + Bridge common.Address + RemoteToken common.Address + MintManager common.Address + }{ + Bridge: predeploys.L2StandardBridgeAddr, + RemoteToken: config.L1GovernanceTokenProxy, + MintManager: predeploys.MintManagerAddr, + }, + // [Kroma: END] L2ERC721Bridge: struct { OtherBridge common.Address Messenger common.Address @@ -951,9 +1017,7 @@ func NewL2ImmutableConfig(config *DeployConfig, block *types.Block) (*immutables }{ Bridge: predeploys.L2StandardBridgeAddr, }, - // [Kroma: END] ProxyAdmin: struct{}{}, - // [Kroma: START] ProtocolVault: struct { Recipient common.Address }{ @@ -982,6 +1046,17 @@ func NewL2ImmutableConfig(config *DeployConfig, block *types.Block) (*immutables ValidatorPoolAddress: config.ValidatorPoolProxy, RewardDivider: new(big.Int).SetUint64(rewardDivider), }, + MintManager: struct { + MintActivatedBlock *big.Int + InitMintPerBlock *big.Int + SlidingWindowBlocks *big.Int + DecayingFactor *big.Int + }{ + MintActivatedBlock: mintActivatedBlock, + InitMintPerBlock: initMintPerBlock, + SlidingWindowBlocks: new(big.Int).SetUint64(config.MintManagerSlidingWindowBlocks), + DecayingFactor: new(big.Int).SetUint64(config.MintManagerDecayingFactor), + }, // [Kroma: END] } @@ -1047,8 +1122,22 @@ func NewL2StorageConfig(config *DeployConfig, block *types.Block) (state.Storage storage["GovernanceToken"] = state.StorageValues{ "_name": config.GovernanceTokenName, "_symbol": config.GovernanceTokenSymbol, - "_owner": config.GovernanceTokenOwner, + // "_owner": config.GovernanceTokenOwner, + } + + // [Kroma: START] + shares := make(map[any]any) + for i, recipient := range config.MintManagerRecipients { + shares[recipient] = config.MintManagerShares[i] } + + storage["MintManager"] = state.StorageValues{ + "_initialized": 1, + "_initializing": false, + "recipients": config.MintManagerRecipients, + "shareOf": shares, + } + // [Kroma: END] } storage["ProxyAdmin"] = state.StorageValues{ "_owner": config.ProxyAdminOwner, diff --git a/kroma-chain-ops/genesis/layer_two_test.go b/kroma-chain-ops/genesis/layer_two_test.go index 1b1043588..ec02e53e0 100644 --- a/kroma-chain-ops/genesis/layer_two_test.go +++ b/kroma-chain-ops/genesis/layer_two_test.go @@ -90,7 +90,7 @@ func TestBuildL2MainnetGenesis(t *testing.T) { config.EnableGovernance = true config.FundDevAccounts = false gen := testBuildL2Genesis(t, config) - require.Equal(t, 536, len(gen.Alloc)) + require.Equal(t, 538, len(gen.Alloc)) } func TestBuildL2MainnetNoGovernanceGenesis(t *testing.T) { diff --git a/kroma-chain-ops/genesis/testdata/allocs-l1.json b/kroma-chain-ops/genesis/testdata/allocs-l1.json index 31a0f2c59..3bd008f12 100644 --- a/kroma-chain-ops/genesis/testdata/allocs-l1.json +++ b/kroma-chain-ops/genesis/testdata/allocs-l1.json @@ -1,8 +1,8 @@ { - "root": "20ef0bc48644f543423ba28d9d856f0ea0ec5a0056965aef53aa470b9572538e", + "root": "a1090211110e8f64943befe3ef572ce029f05ca36b20f060cca9ac8d4ef0f741", "accounts": { "0x0000000000000000000000000000000000000000": { - "balance": "162362351175896875", + "balance": "171804098175896875", "nonce": 0, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -74,38 +74,38 @@ "0x0165878a594ca255338adfa4d48449f69242eb8f": { "balance": "0", "nonce": 1, - "root": "0x5db2da37f5d435a1eed37d016077f6ed704b0322ff3eed4cf62ca3987f9927ec", + "root": "0x4238cbf95f2deec02a4d04a3128fbcbca4ba89d98c9f859bc11c696a96f2a124", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "3aa5ebb10dc797cac828524e59a333d0a371443c", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "c6e7df5e7b4f2a278906862b61205850344d4e7d", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x5df489e29c0253edd77505b9c678fec4c95c2ef043b278ef257f40c6ae972e95" }, - "0x09635f643e140090a9a8dcd712ed6285858cebef": { - "balance": "0", - "nonce": 1, - "root": "0x821e2556a290c86405f8160a2d662042a431ba456b9db265c79bb837c04be5f0", - "codeHash": "0x9df5a7cdcb6bd8923cbea0b29d9f61fc8a290503488353e9c788e98be4277ff2", - "code": "0x6080604052600436106101745760003560e01c80639e45e8f4116100cb578063cf8e5cf01161007f578063e4a3011611610059578063e4a30116146104bb578063e6646723146104db578063f4daa291146104fb57600080fd5b8063cf8e5cf014610466578063d1de856c14610486578063dcec3348146104a657600080fd5b8063a48ea6de116100b0578063a48ea6de146103f2578063b0ea09a814610412578063b98debbf1461043257600080fd5b80639e45e8f41461031a578063a25ae5571461037357600080fd5b80635a045f781161012d57806370872aa51161010757806370872aa5146102ce5780637f006420146102e4578063887862721461030457600080fd5b80635a045f781461028f57806369f16eec146102a45780636abcf563146102b957600080fd5b80634599c7881161015e5780634599c788146101f0578063529933df1461020557806354fd4d501461023957600080fd5b80622134cc1461017957806333727c4d146101c0575b600080fd5b34801561018557600080fd5b506101ad7f000000000000000000000000000000000000000000000000000000000000000281565b6040519081526020015b60405180910390f35b3480156101cc57600080fd5b506101e06101db3660046115f1565b61052f565b60405190151581526020016101b7565b3480156101fc57600080fd5b506101ad61059d565b34801561021157600080fd5b506101ad7f000000000000000000000000000000000000000000000000000000000000000481565b34801561024557600080fd5b506102826040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101b7919061160a565b6102a261029d36600461167d565b610610565b005b3480156102b057600080fd5b506101ad610c17565b3480156102c557600080fd5b506003546101ad565b3480156102da57600080fd5b506101ad60015481565b3480156102f057600080fd5b506101ad6102ff3660046115f1565b610c29565b34801561031057600080fd5b506101ad60025481565b34801561032657600080fd5b5061034e7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b7565b34801561037f57600080fd5b5061039361038e3660046115f1565b610e09565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152828201516fffffffffffffffffffffffffffffffff90811692820192909252606092830151909116918101919091526080016101b7565b3480156103fe57600080fd5b506101ad61040d3660046115f1565b610ec6565b34801561041e57600080fd5b5061034e61042d3660046115f1565b610f32565b34801561043e57600080fd5b5061034e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561047257600080fd5b506103936104813660046115f1565b610f74565b34801561049257600080fd5b506101ad6104a13660046115f1565b610fb3565b3480156104b257600080fd5b506101ad610ffb565b3480156104c757600080fd5b506102a26104d63660046116af565b611041565b3480156104e757600080fd5b506102a26104f63660046116f6565b61125a565b34801561050757600080fd5b506101ad7f000000000000000000000000000000000000000000000000000000000000007881565b6000427f0000000000000000000000000000000000000000000000000000000000000078600384815481106105665761056661172f565b600091825260209091206002600390920201015461059691906fffffffffffffffffffffffffffffffff1661178d565b1092915050565b6003546000901561060757600380546105b8906001906117a5565b815481106105c8576105c861172f565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b60007f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc973ffffffffffffffffffffffffffffffffffffffff16633a5490466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a191906117bc565b905073ffffffffffffffffffffffffffffffffffffffff80821614610776573373ffffffffffffffffffffffffffffffffffffffff8216146107765760405162461bcd60e51b815260206004820152604260248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206e65787420736560448201527f6c65637465642076616c696461746f722063616e207375626d6974206f75747060648201527f7574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b61077e610ffb565b84146108185760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a40161076d565b4261082285610fb3565b106108955760405162461bcd60e51b815260206004820152603560248201527f4c324f75747075744f7261636c653a2063616e6e6f74207375626d6974204c3260448201527f206f757470757420696e20746865206675747572650000000000000000000000606482015260840161076d565b846109085760405162461bcd60e51b815260206004820152603c60248201527f4c324f75747075744f7261636c653a204c3220636865636b706f696e74206f7560448201527f747075742063616e6e6f7420626520746865207a65726f206861736800000000606482015260840161076d565b82158015906109175750814015155b156109b857828240146109b85760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a40161076d565b60006109c360035490565b60408051608081018252338152602081018981526fffffffffffffffffffffffffffffffff428181168486019081528b831660608601908152600380546001810182556000829052965196027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8101805473ffffffffffffffffffffffffffffffffffffffff989098167fffffffffffffffffffffffff00000000000000000000000000000000000000009098169790971790965593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86015551925182167001000000000000000000000000000000000292909116919091177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d9092019190915590519192508691839189917f457b4388026260019ae0b0b4f16c98235d74fe7359be469bdcba16e6d0d4968991610b209190815260200190565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663d38dc7ee82610b8f7f00000000000000000000000000000000000000000000000000000000000000784261178d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610bf757600080fd5b505af1158015610c0b573d6000803e3d6000fd5b50505050505050505050565b60035460009061060b906001906117a5565b6000610c3361059d565b821115610cce5760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f7375626d69747465640000000000000000000000000000000000000000000000608482015260a40161076d565b600354610d695760405162461bcd60e51b815260206004820152604760248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e207375626d697460648201527f7465642079657400000000000000000000000000000000000000000000000000608482015260a40161076d565b6003546000905b80821015610e025760006002610d86838561178d565b610d9091906117e0565b90508460038281548110610da657610da661172f565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff161015610df857610df181600161178d565b9250610dfc565b8091505b50610d70565b5092915050565b60408051608081018252600080825260208201819052918101829052606081019190915260038281548110610e4057610e4061172f565b6000918252602091829020604080516080810182526003909302909101805473ffffffffffffffffffffffffffffffffffffffff1683526001810154938301939093526002909201546fffffffffffffffffffffffffffffffff808216938301939093527001000000000000000000000000000000009004909116606082015292915050565b60007f000000000000000000000000000000000000000000000000000000000000007860038381548110610efc57610efc61172f565b6000918252602090912060026003909202010154610f2c91906fffffffffffffffffffffffffffffffff1661178d565b92915050565b600060038281548110610f4757610f4761172f565b600091825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1692915050565b6040805160808101825260008082526020820181905291810182905260608101919091526003610fa383610c29565b81548110610e4057610e4061172f565b60007f000000000000000000000000000000000000000000000000000000000000000260015483610fe491906117a5565b610fee919061181b565b600254610f2c919061178d565b60035460009015611039577f000000000000000000000000000000000000000000000000000000000000000461102f61059d565b61060b919061178d565b61060b61059d565b600054610100900460ff16158080156110615750600054600160ff909116105b8061107b5750303b15801561107b575060005460ff166001145b6110ed5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161076d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561114b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b428211156111e85760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a40161076d565b60028290556001839055801561125557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788161461132b5760405162461bcd60e51b815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c792074686520636f6c6f73736560448201527f756d20636f6e74726163742063616e207265706c61636520616e206f7574707560648201527f7400000000000000000000000000000000000000000000000000000000000000608482015260a40161076d565b73ffffffffffffffffffffffffffffffffffffffff81166113b45760405162461bcd60e51b815260206004820152603060248201527f4c324f75747075744f7261636c653a207375626d69747465722061646472657360448201527f732063616e6e6f74206265207a65726f00000000000000000000000000000000606482015260840161076d565b60035483106114515760405162461bcd60e51b815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420616674657220746865206c6174657374206f757470757460648201527f20696e6465780000000000000000000000000000000000000000000000000000608482015260a40161076d565b6000600384815481106114665761146661172f565b6000918252602090912060039091020160028101549091507f0000000000000000000000000000000000000000000000000000000000000078906114bc906fffffffffffffffffffffffffffffffff16426117a5565b106115555760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420746861742068617320616c7265616479206265656e206660648201527f696e616c697a6564000000000000000000000000000000000000000000000000608482015260a40161076d565b6001810183905580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617815560405183815284907fa1b831bb8b6b242db6d0988a6d21f869c610de9f703a5e45e1b7d3dc3137b9069060200160405180910390a250505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006020828403121561160357600080fd5b5035919050565b600060208083528351808285015260005b818110156116375785810183015185820160400152820161161b565b81811115611649576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000806000806080858703121561169357600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156116c257600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff811681146116f357600080fd5b50565b60008060006060848603121561170b57600080fd5b83359250602084013591506040840135611724816116d1565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156117a0576117a061175e565b500190565b6000828210156117b7576117b761175e565b500390565b6000602082840312156117ce57600080fd5b81516117d9816116d1565b9392505050565b600082611816577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118535761185361175e565b50029056fea164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01" - }, - "key": "0xaebd2e1514b4e7a57d6aea7d9336de4a0ebf14a8dbe0b3d364f6030b7abedd33" + "0x070e28eaa025a6d86423642776672b8c17f147e4": { + "balance": "115792089237316195423570985008687907853269984665640564039455583849457825464927", + "nonce": 2, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "key": "0x2bf78f96123199ac53031f3e5718689d4ae380d66223be52e1124e296c1fc9e5" }, "0x0b306bf915c4d645ff596e518faf3f9669b97016": { "balance": "0", "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0x354b26999e434f8256d168395315e1f51fc15bf49bf2e6bb58fc549bd597e7da", - "code": "0x7c010000000000000000000000000000000000000000000000000000000060003504806329a5f2f6149063299e566014176200003757fe5b7f109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b6020527f16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e06040527f2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d6060527f2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd7716080527f2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe2360a0527f101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa60c0527f143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a760e0527f176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911610100527f19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0610120527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016024356004356000837f0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e82089050837f00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e86483089150837f08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f58408925083818180828009800909905083828180828009800909915083838180828009800909925062000249600052620025ba565b837f2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d082089050837f2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf283089150837f0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa84089250838181808280098009099050838281808280098009099150838381808280098009099250620002ec600052620025ba565b837f28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d82089050837f2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb7883089150837f234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632840892508381818082800980090990508382818082800980090991508383818082800980090992506200038f600052620025ba565b837f15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d42882089050837f0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f683089150837f1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c8408925083818180828009800909905083828180828009800909915083838180828009800909925062000432600052620025ba565b837f10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de55982089050837f1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f683089150837f1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c870584089250838181808280098009099050620004bd600052620025ba565b837f04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d82089050837f0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be82883089150837f099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b98408925083818180828009800909905062000548600052620025ba565b837f052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa682089050837f0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc83089150837f119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd184089250838181808280098009099050620005d3600052620025ba565b837f03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d0982089050837f2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea56583089150837f005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9840892508381818082800980090990506200065e600052620025ba565b837f233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b582089050837f05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d6028083089150837f0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b84089250838181808280098009099050620006e9600052620025ba565b837f2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec082089050837f1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c46083089150837f12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc08408925083818180828009800909905062000774600052620025ba565b837f0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e82089050837f037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f844883089150837f05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f84089250838181808280098009099050620007ff600052620025ba565b837f29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e82089050837f20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f83089150837f2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887840892508381818082800980090990506200088a600052620025ba565b837f143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c882089050837f0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf183089150837f028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da538408925083818180828009800909905062000915600052620025ba565b837f2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c82089050837f0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e83089150837f2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb3884089250838181808280098009099050620009a0600052620025ba565b837f30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a73520682089050837f1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad83089150837f10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c8408925083818180828009800909905062000a2b600052620025ba565b837f2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef82089050837f1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c9183089150837f07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a08408925083818180828009800909905062000ab6600052620025ba565b837f21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c075082089050837f2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e83089150837f2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e8408925083818180828009800909905062000b41600052620025ba565b837f162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab82089050837f2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a7009239331183089150837f2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a8408925083818180828009800909905062000bcc600052620025ba565b837f1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da982089050837f204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c456552983089150837f0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c5028408925083818180828009800909905062000c57600052620025ba565b837f174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b5482089050837f1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef83089150837f066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a8408925083818180828009800909905062000ce2600052620025ba565b837f2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd80482089050837f13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd64983089150837f1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a8408925083818180828009800909905062000d6d600052620025ba565b837f00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff182089050837f0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d383089150837f29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba898408925083818180828009800909905062000df8600052620025ba565b837f2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be82089050837f1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af183089150837f151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c58408925083818180828009800909905062000e83600052620025ba565b837f04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f10082089050837f13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c296783089150837f01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e48408925083818180828009800909905062000f0e600052620025ba565b837f2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b0282089050837f1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b64683089150837f041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d8408925083818180828009800909905062000f99600052620025ba565b837f154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc682089050837f0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da483089150837f0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e8408925083818180828009800909905062001024600052620025ba565b837f06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea065462682089050837f0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb83089150837f04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e1384089250838181808280098009099050620010af600052620025ba565b837f2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b375882089050837f123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef83089150837f2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9840892508381818082800980090990506200113a600052620025ba565b837f0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d82089050837f12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f283089150837f21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a9003584089250838181808280098009099050620011c5600052620025ba565b837f16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b14782089050837f1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac283089150837f07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a8408925083818180828009800909905062001250600052620025ba565b837f05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc82089050837f20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f83089150837f04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db6984089250838181808280098009099050620012db600052620025ba565b837f27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a82089050837f2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d183089150837f1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b88408925083818180828009800909905062001366600052620025ba565b837f15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a82089050837f1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c78583089150837f25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c7784089250838181808280098009099050620013f1600052620025ba565b837f15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a6782089050837f2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c7172783089150837f002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b840892508381818082800980090990506200147c600052620025ba565b837f2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d282089050837f00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe83089150837f0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c35128408925083818180828009800909905062001507600052620025ba565b837f00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d82089050837f171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda983089150837f170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a8088408925083818180828009800909905062001592600052620025ba565b837f29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae182089050837f1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e6497383089150837f1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09840892508381818082800980090990506200161d600052620025ba565b837f22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af3882089050837f0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd83089150837f11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e828484089250838181808280098009099050620016a8600052620025ba565b837f1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af82089050837f2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee46683089150837f3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad8408925083818180828009800909905062001733600052620025ba565b837f2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c822514508682089050837f119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c383089150837f1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd80084089250838181808280098009099050620017be600052620025ba565b837f28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb682089050837f083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e783089150837f0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b8408925083818180828009800909905062001849600052620025ba565b837f0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b82089050837f2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c9859183089150837f0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f17884089250838181808280098009099050620018d4600052620025ba565b837f0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d4082089050837f1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d483089150837f0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233840892508381818082800980090990506200195f600052620025ba565b837f0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b16887382089050837f1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d83089150837f2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc084089250838181808280098009099050620019ea600052620025ba565b837f1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb82089050837f01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f932647887583089150837f1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e8408925083818180828009800909905062001a75600052620025ba565b837f2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f01982089050837f23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b83089150837f2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d598408925083818180828009800909905062001b00600052620025ba565b837f0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f82089050837f2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a883089150837f15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f889488408925083818180828009800909905062001b8b600052620025ba565b837f193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f82089050837f2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f83089150837f1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d1428408925083818180828009800909905062001c16600052620025ba565b837f04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b82089050837f0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f2383089150837f058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c08408925083818180828009800909905062001ca1600052620025ba565b837f1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a82089050837f03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b583089150837f23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a588408925083818180828009800909905062001d2c600052620025ba565b837f0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f282089050837f06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b83089150837f118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d018408925083818180828009800909905062001db7600052620025ba565b837f13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b182089050837f169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b83089150837f04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d8408925083818180828009800909905062001e42600052620025ba565b837f256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec82089050837f30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb283089150837f10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc7928408925083818180828009800909905062001ecd600052620025ba565b837f193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e3686082089050837f18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d83089150837f29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea61118408925083818180828009800909905062001f58600052620025ba565b837f10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c71182089050837f0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb83089150837f16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa3368408925083818180828009800909905062001fe3600052620025ba565b837f0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a82089050837f1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf186083089150837f0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6840892508381818082800980090990506200206e600052620025ba565b837f161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b82089050837f0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b83089150837f1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f45184089250838181808280098009099050620020f9600052620025ba565b837f2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c55682089050837f1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f7083089150837f2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf778408925083818180828009800909905062002184600052620025ba565b837f23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea82089050837f09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d83089150837f188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630840892508381818082800980090990506200220f600052620025ba565b837f3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f82089050837f15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd7883089150837f1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc840892508381818082800980090990506200229a600052620025ba565b837f2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb82089050837f202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d6083089150837f096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f8408925083818180828009800909905062002325600052620025ba565b837f054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a482089050837f1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f183089150837f21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc84089250838181808280098009099050838281808280098009099150838381808280098009099250620023c8600052620025ba565b837f1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf0882089050837f0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb2410083089150837f1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320840892508381818082800980090990508382818082800980090991508383818082800980090992506200246b600052620025ba565b837f0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad87082089050837f193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba83089150837f102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8840892508381818082800980090990508382818082800980090991508383818082800980090992506200250e600052620025ba565b837f0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab182089050837f216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d2283089150837f1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e422832516184089250838181808280098009099050838281808280098009099150838381808280098009099250620025b1600052620025ba565b60005260206000f35b8360205182098460405184098591088460605185098591088460805183098560a05185098691088560c05186098691088560e0518409866101005186098791088661012051870987910894509250905060005156", + "root": "0x0f2ee44fddf9046798c055026d1b96ed27f580fa54ee11ea497c32a07c0d00fe", + "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", + "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", + "storage": { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "4c5859f0f772848b2d91f1d83e2fe57935348029", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" + }, "key": "0xa3571888cfbca68776ab582afabed39268990974a4835e694b767474e2d63a4d" }, "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82": { "balance": "0", "nonce": 1, - "root": "0x01a0734c0991c1696197736400dcab06ddff3d62f41c2dad4e768b7182adbabf", + "root": "0x5d8430d14e16362ced860f5493e93be7cb07d45aa64d8721f53fab3dcd51eb43", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { @@ -113,7 +113,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000098": "01", "0x15607ed846111477865e6a5ae13858a7efc3144c7bcee5a06d87a3c693f53e7b": "01", "0x223f14562f323bd7948caddd31987c85600c2817f2384e55c0c8839f3290e304": "01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "99bba657f2bbc93c02d617f8ba121cb8fc104acf", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0e801d84fa97b50751dbf25036d067dcf18858bf", "0x7a9063cff4dcff21a2b2f1e67ae95f0c195c18b3b736c251a0911c20a1caaa57": "01", "0x7bfc5f26b3cf6ec97010d4bb5190cf963125bb344dab3b14432f5b456f3be435": "01", "0x7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8c": "5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", @@ -125,52 +125,33 @@ }, "key": "0xc50ebb69c859ca3ea43ae77477b7cd716b304b912fc6cbed4066e2e43e858652" }, - "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8": { + "0x0e801d84fa97b50751dbf25036d067dcf18858bf": { "balance": "0", "nonce": 1, - "root": "0x1f6d4a6bd29feba7ce7b0aeb56e30f5d7718d9230959d0621e846e72f6d850c9", - "codeHash": "0xf088100162a48771cf9ad3b57490a878312e56f8afcf21e4fee9675799e494f2", - "code": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c8063c71973f6116100d8578063ed579ad31161008c578063f68016b711610066578063f68016b71461046d578063fc7ffea714610481578063ffa1ad741461049457600080fd5b8063ed579ad314610448578063f2fde38b14610451578063f45e65d81461046457600080fd5b8063cc731b02116100bd578063cc731b02146102f8578063e81b2c6d1461042c578063ecdd939d1461043557600080fd5b8063c71973f6146102d2578063c9b26f61146102e557600080fd5b806354fd4d501161012f5780638da5cb5b116101145780638da5cb5b1461028e578063935f029e146102ac578063b40a817c146102bf57600080fd5b806354fd4d501461023d578063715018a61461028657600080fd5b80631fd19ee1116101605780631fd19ee1146101ad5780634add321d146101f55780634f16540b1461021657600080fd5b80630c18c1621461017c57806318d1391814610198575b600080fd5b61018560655481565b6040519081526020015b60405180910390f35b6101ab6101a6366004611139565b61049c565b005b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018f565b6101fd610560565b60405167ffffffffffffffff909116815260200161018f565b6101857f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b6102796040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161018f91906111c6565b6101ab61058b565b60335473ffffffffffffffffffffffffffffffffffffffff166101d0565b6101ab6102ba3660046111d9565b61059f565b6101ab6102cd366004611213565b610638565b6101ab6102e036600461133c565b610709565b6101ab6102f3366004611358565b61071d565b6103bc6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b60405161018f9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b61018560675481565b6101ab610443366004611358565b61074d565b610185606a5481565b6101ab61045f366004611139565b61081b565b61018560665481565b6068546101fd9067ffffffffffffffff1681565b6101ab61048f366004611371565b6108b5565b610185600081565b6104a4610b3a565b6104cc817f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161055491906111c6565b60405180910390a35050565b6069546000906105869063ffffffff6a010000000000000000000082048116911661141d565b905090565b610593610b3a565b61059d6000610ba1565b565b6105a7610b3a565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161062b91906111c6565b60405180910390a3505050565b610640610b3a565b610648610560565b67ffffffffffffffff168167ffffffffffffffff1610156106b05760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064015b60405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040805160208082019390935281518082039093018352810190526002610523565b610711610b3a565b61071a81610c18565b50565b610725610b3a565b6067819055604080516020808201849052825180830390910181529082019091526000610523565b610755610b3a565b6127108111156107f35760405162461bcd60e51b815260206004820152604860248201527f53797374656d436f6e6669673a20746865206d61782076616c7565206f66207660448201527f616c696461746f7220726577617264207363616c617220686173206265656e2060648201527f6578636565646564000000000000000000000000000000000000000000000000608482015260a4016106a7565b606a819055604080516020808201849052825180830390910181529082019091526004610523565b610823610b3a565b73ffffffffffffffffffffffffffffffffffffffff81166108ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a7565b61071a81610ba1565b600054610100900460ff16158080156108d55750600054600160ff909116105b806108ef5750303b1580156108ef575060005460ff166001145b6109615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109bf57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109c761100a565b6109d08961081b565b606588905560668790556067869055606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff87161790557f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08849055610a4083610c18565b610a48610560565b67ffffffffffffffff168567ffffffffffffffff161015610aab5760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016106a7565b606a8290558015610b1357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff16331461059d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115610cae5760405162461bcd60e51b815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d61782062617365000000000000000000000060648201526084016106a7565b6001816040015160ff1611610d2b5760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f72206d757374206260448201527f65206c6172676572207468616e2031000000000000000000000000000000000060648201526084016106a7565b6068546080820151825167ffffffffffffffff90921691610d4c9190611449565b63ffffffff161115610da05760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016106a7565b6000816020015160ff1611610e1d5760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201527f6965722063616e6e6f742062652030000000000000000000000000000000000060648201526084016106a7565b8051602082015163ffffffff82169160ff90911690610e3d908290611468565b610e4791906114b2565b63ffffffff1614610ec05760405162461bcd60e51b815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d697400000000000000000060648201526084016106a7565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b600054610100900460ff166110875760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a7565b61059d600054610100900460ff166111075760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a7565b61059d33610ba1565b803573ffffffffffffffffffffffffffffffffffffffff8116811461113457600080fd5b919050565b60006020828403121561114b57600080fd5b61115482611110565b9392505050565b6000815180845260005b8181101561118157602081850181015186830182015201611165565b81811115611193576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611154602083018461115b565b600080604083850312156111ec57600080fd5b50508035926020909101359150565b803567ffffffffffffffff8116811461113457600080fd5b60006020828403121561122557600080fd5b611154826111fb565b803563ffffffff8116811461113457600080fd5b803560ff8116811461113457600080fd5b80356fffffffffffffffffffffffffffffffff8116811461113457600080fd5b600060c0828403121561128557600080fd5b60405160c0810181811067ffffffffffffffff821117156112cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050806112de8361122e565b81526112ec60208401611242565b60208201526112fd60408401611242565b604082015261130e6060840161122e565b606082015261131f6080840161122e565b608082015261133060a08401611253565b60a08201525092915050565b600060c0828403121561134e57600080fd5b6111548383611273565b60006020828403121561136a57600080fd5b5035919050565b6000806000806000806000806101a0898b03121561138e57600080fd5b61139789611110565b97506020890135965060408901359550606089013594506113ba60808a016111fb565b93506113c860a08a01611110565b92506113d78a60c08b01611273565b915061018089013590509295985092959890939650565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516808303821115611440576114406113ee565b01949350505050565b600063ffffffff808316818516808303821115611440576114406113ee565b600063ffffffff808416806114a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600063ffffffff808316818516818304811182151516156114d5576114d56113ee565b0294935050505056fea164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0834", - "0x0000000000000000000000000000000000000000000000000000000000000066": "0f4240", - "0x0000000000000000000000000000000000000000000000000000000000000067": "3c44cdddb6a900fa2b585dd299e03d12fa4293bc", - "0x0000000000000000000000000000000000000000000000000000000000000068": "01c9c380", - "0x0000000000000000000000000000000000000000000000000000000000000069": "ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00", - "0x000000000000000000000000000000000000000000000000000000000000006a": "1388", - "0x65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08": "9965507d1a55bcc2695c58ba16fb37d819b0a4dc" - }, - "key": "0x0ca8700cbcfbb19114f6c493c0f446cb5554349ae166db6cd30363717639c13b" + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0x6392b39a2ab7ae88e9e6bf7712fc0514edd1c6b5e1053e2836765fb0f11c3729", + "code": "0x6080604052600436106101d15760003560e01c80638065657f116100f7578063bc197c8111610095578063d547741f11610064578063d547741f1461068a578063e38335e5146106aa578063f23a6e61146106bd578063f27a0c921461070257600080fd5b8063bc197c81146105d8578063c4c4c7b31461061d578063c4d252f51461063d578063d45c44351461065d57600080fd5b806391d14854116100d157806391d148541461051c578063a217fddf1461056f578063b08e51c014610584578063b1c5f427146105b857600080fd5b80638065657f146104a85780638f2a0bb0146104c85780638f61f4f5146104e857600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe146103f257806354fd4d5014610412578063584b153e1461046857806364d623531461048857600080fd5b8063248a9ca3146103525780632ab0f529146103825780632f2ff15d146103b257806331d50750146103d257600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610276578063134008d3146102aa57806313bc9f20146102bd578063150b7a02146102dd57600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612019565b610717565b005b34801561020b57600080fd5b5061021f61021a36600461208e565b6107ed565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b506102687fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60405190815260200161022b565b34801561028257600080fd5b506102687f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101fd6102b83660046120d0565b610849565b3480156102c957600080fd5b5061021f6102d836600461213c565b610941565b3480156102e957600080fd5b506103216102f8366004612261565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161022b565b34801561035e57600080fd5b5061026861036d36600461213c565b60009081526065602052604090206001015490565b34801561038e57600080fd5b5061021f61039d36600461213c565b60009081526097602052604090205460011490565b3480156103be57600080fd5b506101fd6103cd3660046122c9565b610967565b3480156103de57600080fd5b5061021f6103ed36600461213c565b610991565b3480156103fe57600080fd5b506101fd61040d3660046122c9565b6109aa565b34801561041e57600080fd5b5061045b6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161022b9190612321565b34801561047457600080fd5b5061021f61048336600461213c565b610a48565b34801561049457600080fd5b506101fd6104a336600461213c565b610a5f565b3480156104b457600080fd5b506102686104c33660046120d0565b610b15565b3480156104d457600080fd5b506101fd6104e33660046123b7565b610b54565b3480156104f457600080fd5b506102687fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561052857600080fd5b5061021f6105373660046122c9565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561057b57600080fd5b50610268600081565b34801561059057600080fd5b506102687ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156105c457600080fd5b506102686105d3366004612469565b610d93565b3480156105e457600080fd5b506103216105f33660046125a1565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561062957600080fd5b506101fd6106383660046126ad565b610dd8565b34801561064957600080fd5b506101fd61065836600461213c565b610f58565b34801561066957600080fd5b5061026861067836600461213c565b60009081526097602052604090205490565b34801561069657600080fd5b506101fd6106a53660046122c9565b611039565b6101fd6106b8366004612469565b61105e565b3480156106c957600080fd5b506103216106d836600461272b565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b34801561070e57600080fd5b50609854610268565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610741816112d7565b6000610751898989898989610b15565b905061075d81846112e4565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610799969594939291906127d9565b60405180910390a383156107e257807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516107d991815260200190565b60405180910390a25b505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806108435750610843826113f8565b92915050565b600080527f7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8b6020527fa01e231ca478cf51f663e103939e98de36fa76d3e4e0b1de673dc711acc3a01b547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166108c6576108c6813361148f565b60006108d6888888888888610b15565b90506108e2818561152f565b6108ee88888888611637565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516109269493929190612824565b60405180910390a36109378161171a565b5050505050505050565b6000818152609760205260408120546001811180156109605750428111155b9392505050565b600082815260656020526040902060010154610982816112d7565b61098c83836117a9565b505050565b60008181526097602052604081205481905b1192915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a3a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610a44828261189d565b5050565b6000818152609760205260408120546001906109a3565b333014610ad45760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201527f62652074696d656c6f636b0000000000000000000000000000000000000000006064820152608401610a31565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b6000868686868686604051602001610b32969594939291906127d9565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610b7e816112d7565b888714610bf35760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b888514610c685760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b6000610c7a8b8b8b8b8b8b8b8b610d93565b9050610c8681846112e4565b60005b8a811015610d445780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610cc657610cc6612864565b9050602002016020810190610cdb9190612893565b8d8d86818110610ced57610ced612864565b905060200201358c8c87818110610d0657610d06612864565b9050602002810190610d1891906128ae565b8c8b604051610d2c969594939291906127d9565b60405180910390a3610d3d81612942565b9050610c89565b508315610d8657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610d7d91815260200190565b60405180910390a25b5050505050505050505050565b60008888888888888888604051602001610db4989796959493929190612a2a565b60405160208183030381529060405280519060200120905098975050505050505050565b600054610100900460ff1615808015610df85750600054600160ff909116105b80610e125750303b158015610e12575060005460ff166001145b610e845760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a31565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ee257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610eee85858585611958565b8015610f5157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610f82816112d7565b610f8b82610a48565b610ffd5760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160448201527f6e6e6f742062652063616e63656c6c65640000000000000000000000000000006064820152608401610a31565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154611054816112d7565b61098c838361189d565b600080527f7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8b6020527fa01e231ca478cf51f663e103939e98de36fa76d3e4e0b1de673dc711acc3a01b547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166110db576110db813361148f565b8786146111505760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b8784146111c55760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b60006111d78a8a8a8a8a8a8a8a610d93565b90506111e3818561152f565b60005b898110156112c15760008b8b8381811061120257611202612864565b90506020020160208101906112179190612893565b905060008a8a8481811061122d5761122d612864565b9050602002013590503660008a8a8681811061124b5761124b612864565b905060200281019061125d91906128ae565b9150915061126d84848484611637565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58868686866040516112a49493929190612824565b60405180910390a350505050806112ba90612942565b90506111e6565b506112cb8161171a565b50505050505050505050565b6112e1813361148f565b50565b6112ed82610991565b156113605760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201527f7265616479207363686564756c656400000000000000000000000000000000006064820152608401610a31565b6098548110156113d85760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460448201527f2064656c617900000000000000000000000000000000000000000000000000006064820152608401610a31565b6113e28142612afb565b6000928352609760205260409092209190915550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061084357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610843565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a44576114cf816119e7565b6114da836020611a06565b6040516020016114eb929190612b13565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610a3191600401612321565b61153882610941565b6115aa5760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f74207265616479000000000000000000000000000000000000000000006064820152608401610a31565b8015806115c557506000818152609760205260409020546001145b610a445760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560448201527f6e64656e637900000000000000000000000000000000000000000000000000006064820152608401610a31565b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051611661929190612b94565b60006040518083038185875af1925050503d806000811461169e576040519150601f19603f3d011682016040523d82523d6000602084013e6116a3565b606091505b5050905080610f515760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460448201527f72616e73616374696f6e207265766572746564000000000000000000000000006064820152608401610a31565b61172381610941565b6117955760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f74207265616479000000000000000000000000000000000000000000006064820152608401610a31565b600090815260976020526040902060019055565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561183f3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610a4457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166119d55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a31565b6119e184848484611c2f565b50505050565b606061084373ffffffffffffffffffffffffffffffffffffffff831660145b60606000611a15836002612ba4565b611a20906002612afb565b67ffffffffffffffff811115611a3857611a38612155565b6040519080825280601f01601f191660200182016040528015611a62576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611a9957611a99612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611afc57611afc612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611b38846002612ba4565b611b43906001612afb565b90505b6001811115611be0577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611b8457611b84612864565b1a60f81b828281518110611b9a57611b9a612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611bd981612be1565b9050611b46565b5083156109605760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a31565b600054610100900460ff16611cac5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a31565b611cd67f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca580611f52565b611d207fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc17f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611d6a7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611db47ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7837f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611dde7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca530611f9d565b73ffffffffffffffffffffffffffffffffffffffff811615611e2457611e247f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca582611f9d565b60005b8351811015611eb957611e737fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1858381518110611e6657611e66612864565b6020026020010151611f9d565b611ea97ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783858381518110611e6657611e66612864565b611eb281612942565b9050611e27565b5060005b8251811015611f0c57611efc7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63848381518110611e6657611e66612864565b611f0581612942565b9050611ebd565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150505050565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610a4482826117a9565b803573ffffffffffffffffffffffffffffffffffffffff81168114611fcb57600080fd5b919050565b60008083601f840112611fe257600080fd5b50813567ffffffffffffffff811115611ffa57600080fd5b60208301915083602082850101111561201257600080fd5b9250929050565b600080600080600080600060c0888a03121561203457600080fd5b61203d88611fa7565b965060208801359550604088013567ffffffffffffffff81111561206057600080fd5b61206c8a828b01611fd0565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156120a057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096057600080fd5b60008060008060008060a087890312156120e957600080fd5b6120f287611fa7565b955060208701359450604087013567ffffffffffffffff81111561211557600080fd5b61212189828a01611fd0565b979a9699509760608101359660809091013595509350505050565b60006020828403121561214e57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156121cb576121cb612155565b604052919050565b600082601f8301126121e457600080fd5b813567ffffffffffffffff8111156121fe576121fe612155565b61222f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612184565b81815284602083860101111561224457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561227757600080fd5b61228085611fa7565b935061228e60208601611fa7565b925060408501359150606085013567ffffffffffffffff8111156122b157600080fd5b6122bd878288016121d3565b91505092959194509250565b600080604083850312156122dc57600080fd5b823591506122ec60208401611fa7565b90509250929050565b60005b838110156123105781810151838201526020016122f8565b838111156119e15750506000910152565b60208152600082518060208401526123408160408501602087016122f5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008083601f84011261238457600080fd5b50813567ffffffffffffffff81111561239c57600080fd5b6020830191508360208260051b850101111561201257600080fd5b600080600080600080600080600060c08a8c0312156123d557600080fd5b893567ffffffffffffffff808211156123ed57600080fd5b6123f98d838e01612372565b909b50995060208c013591508082111561241257600080fd5b61241e8d838e01612372565b909950975060408c013591508082111561243757600080fd5b506124448c828d01612372565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561248557600080fd5b883567ffffffffffffffff8082111561249d57600080fd5b6124a98c838d01612372565b909a50985060208b01359150808211156124c257600080fd5b6124ce8c838d01612372565b909850965060408b01359150808211156124e757600080fd5b506124f48b828c01612372565b999c989b509699959896976060870135966080013595509350505050565b600067ffffffffffffffff82111561252c5761252c612155565b5060051b60200190565b600082601f83011261254757600080fd5b8135602061255c61255783612512565b612184565b82815260059290921b8401810191818101908684111561257b57600080fd5b8286015b84811015612596578035835291830191830161257f565b509695505050505050565b600080600080600060a086880312156125b957600080fd5b6125c286611fa7565b94506125d060208701611fa7565b9350604086013567ffffffffffffffff808211156125ed57600080fd5b6125f989838a01612536565b9450606088013591508082111561260f57600080fd5b61261b89838a01612536565b9350608088013591508082111561263157600080fd5b5061263e888289016121d3565b9150509295509295909350565b600082601f83011261265c57600080fd5b8135602061266c61255783612512565b82815260059290921b8401810191818101908684111561268b57600080fd5b8286015b84811015612596576126a081611fa7565b835291830191830161268f565b600080600080608085870312156126c357600080fd5b84359350602085013567ffffffffffffffff808211156126e257600080fd5b6126ee8883890161264b565b9450604087013591508082111561270457600080fd5b506127118782880161264b565b92505061272060608601611fa7565b905092959194509250565b600080600080600060a0868803121561274357600080fd5b61274c86611fa7565b945061275a60208701611fa7565b93506040860135925060608601359150608086013567ffffffffffffffff81111561278457600080fd5b61263e888289016121d3565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a06040820152600061280f60a083018688612790565b60608301949094525060800152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061285a606083018486612790565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156128a557600080fd5b61096082611fa7565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128e357600080fd5b83018035915067ffffffffffffffff8211156128fe57600080fd5b60200191503681900382131561201257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361297357612973612913565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015612a1d57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030181126129d357600080fd5b8701858101903567ffffffffffffffff8111156129ef57600080fd5b8036038213156129fe57600080fd5b612a09868284612790565b9a87019a9550505090840190600101612994565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015612a785773ffffffffffffffffffffffffffffffffffffffff612a6384611fa7565b16825260209283019290910190600101612a3d565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff891115612ab157600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152612ae281888a61297a565b6060850196909652505050608001529695505050505050565b60008219821115612b0e57612b0e612913565b500190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b4b8160178501602088016122f5565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b888160288401602088016122f5565b01602801949350505050565b8183823760009101908152919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bdc57612bdc612913565b500290565b600081612bf057612bf0612913565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c634300080f000a", + "key": "0x02cd05fe91acd2c03ff4b49cc68eb47d53a81fbb0da60bf91d843684f767cb39" }, "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6": { "balance": "0", "nonce": 1, - "root": "0xdcb8bb08e9ca2969a8c8d71d038f8e20921c6648e015d72f82352cf3a97de669", + "root": "0x77d034fab45e9312bf2332676696f240d77bd1b455341d6edaaa041a40043c91", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "322813fd9a801c5507c9de605d63cea4f2ce6c44", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "a85233c63b9ee964add6f2cffe00fd84eb32338f", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x228e1b4e1a077e8fe2073d2aea60505de76d541f0ccda8c233c439c27b0c341e" }, - "0x322813fd9a801c5507c9de605d63cea4f2ce6c44": { + "0x36c02da8a0983159322a80ffe9f24b1acff8b570": { "balance": "0", "nonce": 1, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xe7d30c7952210033e3cfd18ff7d7741d27b94e7cbaa9ddfcab4a59bbcb34746f", - "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80635269aa1b1461004657806354fd4d5014610083578063ee9a31a2146100cc575b600080fd5b61005961005436600461033a565b6100f3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100bf6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161007a9190610434565b6100597f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b600073ffffffffffffffffffffffffffffffffffffffff841661019c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4b726f6d614d696e7461626c654552433230466163746f72793a206d7573742060448201527f70726f766964652072656d6f746520746f6b656e206164647265737300000000606482015260840160405180910390fd5b60007f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f8585856040516101ce90610253565b6101db949392919061044e565b604051809103906000f0801580156101f7573d6000803e3d6000fd5b5060405133815290915073ffffffffffffffffffffffffffffffffffffffff80871691908316907f16f14001f89df9d8ecc68e7cbb61373ece9025038b9df30bea3635fc0e4701a99060200160405180910390a3949350505050565b611441806104a583390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126102a057600080fd5b813567ffffffffffffffff808211156102bb576102bb610260565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561030157610301610260565b8160405283815286602085880101111561031a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561034f57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461037357600080fd5b9250602084013567ffffffffffffffff8082111561039057600080fd5b61039c8783880161028f565b935060408601359150808211156103b257600080fd5b506103bf8682870161028f565b9150509250925092565b6000815180845260005b818110156103ef576020818501810151868301820152016103d3565b81811115610401576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061044760208301846103c9565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152506080604083015261048760808301856103c9565b828103606084015261049981856103c9565b97965050505050505056fe60c06040523480156200001157600080fd5b50604051620014413803806200144183398101604081905262000034916200015a565b8181600362000044838262000279565b50600462000053828262000279565b5050506001600160a01b0392831660805250501660a05262000345565b80516001600160a01b03811681146200008857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000b557600080fd5b81516001600160401b0380821115620000d257620000d26200008d565b604051601f8301601f19908116603f01168101908282118183101715620000fd57620000fd6200008d565b816040528381526020925086838588010111156200011a57600080fd5b600091505b838210156200013e57858201830151818301840152908201906200011f565b83821115620001505760008385830101525b9695505050505050565b600080600080608085870312156200017157600080fd5b6200017c8562000070565b93506200018c6020860162000070565b60408601519093506001600160401b0380821115620001aa57600080fd5b620001b888838901620000a3565b93506060870151915080821115620001cf57600080fd5b50620001de87828801620000a3565b91505092959194509250565b600181811c90821680620001ff57607f821691505b6020821081036200022057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027457600081815260208120601f850160051c810160208610156200024f5750805b601f850160051c820191505b8181101562000270578281556001016200025b565b5050505b505050565b81516001600160401b038111156200029557620002956200008d565b620002ad81620002a68454620001ea565b8462000226565b602080601f831160018114620002e55760008415620002cc5750858301515b600019600386901b1c1916600185901b17855562000270565b600085815260208120601f198616915b828110156200031657888601518255948401946001909101908401620002f5565b5085821015620003355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516110c862000379600039600081816103160152818161050a01526106270152600061014d01526110c86000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806340c10f19116100b25780639dc29fac11610081578063a9059cbb11610066578063a9059cbb146102b8578063dd62ed3e146102cb578063ee9a31a21461031157600080fd5b80639dc29fac14610292578063a457c2d7146102a557600080fd5b806340c10f191461020357806354fd4d501461021857806370a082311461025457806395d89b411461028a57600080fd5b806318160ddd116100ee57806318160ddd146101bc57806323b872dd146101ce578063313ce567146101e157806339509351146101f057600080fd5b806301ffc9a714610120578063033964be1461014857806306fdde0314610194578063095ea7b3146101a9575b600080fd5b61013361012e366004610e90565b610338565b60405190151581526020015b60405180910390f35b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b61019c6103d8565b60405161013f9190610ed9565b6101336101b7366004610f75565b61046a565b6002545b60405190815260200161013f565b6101336101dc366004610f9f565b610482565b6040516012815260200161013f565b6101336101fe366004610f75565b6104a6565b610216610211366004610f75565b6104f2565b005b61019c6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6101c0610262366004610fdb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61019c610600565b6102166102a0366004610f75565b61060f565b6101336102b3366004610f75565b61070c565b6101336102c6366004610f75565b6107c3565b6101c06102d9366004610ff6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084168214806103d057507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380546103e790611029565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611029565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b6000336104788185856107d1565b5060019392505050565b600033610490858285610951565b61049b858585610a0e565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061047890829086906104ed90879061107c565b6107d1565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105a25760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e00000000000000000000000000000060648201526084015b60405180910390fd5b6105ac8282610c2f565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516105f491815260200190565b60405180910390a25050565b6060600480546103e790611029565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ba5760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e0000000000000000000000000000006064820152608401610599565b6106c48282610d08565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516105f491815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610599565b61049b82868684036107d1565b600033610478818585610a0e565b73ffffffffffffffffffffffffffffffffffffffff83166108595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff82166108e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a0857818110156109fb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610599565b610a0884848484036107d1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a975760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff8216610b205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610bbc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a08565b73ffffffffffffffffffffffffffffffffffffffff8216610c925760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610599565b8060026000828254610ca4919061107c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610e2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610944565b600060208284031215610ea257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ed257600080fd5b9392505050565b600060208083528351808285015260005b81811015610f0657858101830151858201604001528201610eea565b81811115610f18576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f7057600080fd5b919050565b60008060408385031215610f8857600080fd5b610f9183610f4c565b946020939093013593505050565b600080600060608486031215610fb457600080fd5b610fbd84610f4c565b9250610fcb60208501610f4c565b9150604084013590509250925092565b600060208284031215610fed57600080fd5b610ed282610f4c565b6000806040838503121561100957600080fd5b61101283610f4c565b915061102060208401610f4c565b90509250929050565b600181811c9082168061103d57607f821691505b602082108103611076577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082198211156110b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea164736f6c634300080f000aa164736f6c634300080f000a", - "key": "0x2534d5cf18dc003706807fe440cab5aca30a915a6b5ccee4fb97946dc7ecd7cd" - }, - "0x3aa5ebb10dc797cac828524e59a333d0a371443c": { - "balance": "0", - "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xdcc518c7fadf757cf1e4e6a15d0ac839b78d9dbaa999e18b0ae05ede6535b58c", - "code": "0x6080604052600436106100b55760003560e01c80637f46ddb2116100695780638f601f661161004e5780638f601f6614610298578063927ede2d146102db578063e11013dd1461030f57600080fd5b80637f46ddb21461021f578063870876231461027857600080fd5b80631635f5fd1161009a5780631635f5fd1461018d578063540abf73146101a057806354fd4d50146101c057600080fd5b80630166a07a1461015a57806309fc88431461017a57600080fd5b3661015557333b156101345760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b61015333333462030d4060405180602001604052806000815250610322565b005b600080fd5b34801561016657600080fd5b50610153610175366004611973565b610547565b610153610188366004611a24565b610943565b61015361019b366004611a77565b610a00565b3480156101ac57600080fd5b506101536101bb366004611aea565b610e7a565b3480156101cc57600080fd5b506102096040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102169190611bd7565b60405180910390f35b34801561022b57600080fd5b506102537f000000000000000000000000420000000000000000000000000000000000000981565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610216565b34801561028457600080fd5b50610153610293366004611bea565b610ec8565b3480156102a457600080fd5b506102cd6102b3366004611c6d565b600060208181529281526040808220909352908152205481565b604051908152602001610216565b3480156102e757600080fd5b506102537f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b61015361031d366004611ca6565b610f82565b8234146103975760405162461bcd60e51b815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c75650000606482015260840161012b565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af585846040516103f6929190611d09565b60405180910390a37f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16633dbb202b847f0000000000000000000000004200000000000000000000000000000000000009631635f5fd60e01b8989898860405160240161047b9493929190611d22565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261050e92918890600401611d6b565b6000604051808303818588803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b50505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614801561066557507f000000000000000000000000420000000000000000000000000000000000000973ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190611db0565b73ffffffffffffffffffffffffffffffffffffffff16145b6106fd5760405162461bcd60e51b815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161012b565b61070687610fcb565b1561083a576107158787610ffd565b6107ad5760405162461bcd60e51b815260206004820152604760248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204b726f6d61204d696e7461626c65204552433230206c6f636160648201527f6c20746f6b656e00000000000000000000000000000000000000000000000000608482015260a40161012b565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505050506108b8565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260208181526040808320938a1683529290522054610876908490611dfc565b73ffffffffffffffffffffffffffffffffffffffff808916600081815260208181526040808320948c16835293905291909120919091556108b89085856110a4565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd878787876040516109329493929190611e5c565b60405180910390a450505050505050565b333b156109b85760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161012b565b6109fb3333348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061032292505050565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570716148015610b1e57507f000000000000000000000000420000000000000000000000000000000000000973ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b069190611db0565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb65760405162461bcd60e51b815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161012b565b823414610c2b5760405162461bcd60e51b815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161012b565b3073ffffffffffffffffffffffffffffffffffffffff851603610cb65760405162461bcd60e51b815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161012b565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d775760405162461bcd60e51b815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161012b565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d858585604051610dd893929190611e92565b60405180910390a36000610dfd855a8660405180602001604052806000815250611178565b905080610e725760405162461bcd60e51b815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161012b565b505050505050565b610ebf87873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119492505050565b50505050505050565b333b15610f3d5760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161012b565b610e7286863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119492505050565b610fc53385348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061032292505050565b50505050565b6000610ff7827f30a0c5a90000000000000000000000000000000000000000000000000000000061152f565b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663033964be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e9190611db0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109fb9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611552565b600080600080845160208601878a8af19150505b949350505050565b61119d87610fcb565b156112d1576111ac8787610ffd565b6112445760405162461bcd60e51b815260206004820152604760248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204b726f6d61204d696e7461626c65204552433230206c6f636160648201527f6c20746f6b656e00000000000000000000000000000000000000000000000000608482015260a40161012b565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50505050611361565b6112f373ffffffffffffffffffffffffffffffffffffffff8816863086611647565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260208181526040808320938a168352929052205461132f908490611eb5565b73ffffffffffffffffffffffffffffffffffffffff808916600090815260208181526040808320938b16835292905220555b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf8787866040516113d993929190611ecd565b60405180910390a47f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16633dbb202b7f0000000000000000000000004200000000000000000000000000000000000009630166a07a60e01b898b8a8a8a8960405160240161146196959493929190611f02565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526114f492918790600401611d6b565b600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b5050505050505050505050565b600061153a836116a5565b801561154b575061154b8383611709565b9392505050565b60006115b4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166117d89092919063ffffffff16565b90508051600014806115d55750808060200190518101906115d59190611f5d565b6109fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161012b565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610fc59085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016110f6565b60006116d1827f01ffc9a700000000000000000000000000000000000000000000000000000000611709565b8015610ff75750611702827fffffffff00000000000000000000000000000000000000000000000000000000611709565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156117c1575060208210155b80156117cd5750600081115b979650505050505050565b606061118c8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161180c9190611f7f565b60006040518083038185875af1925050503d8060008114611849576040519150601f19603f3d011682016040523d82523d6000602084013e61184e565b606091505b50915091506117cd87838387606083156118d65782516000036118cf5773ffffffffffffffffffffffffffffffffffffffff85163b6118cf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161012b565b508161118c565b61118c83838151156118eb5781518083602001fd5b8060405162461bcd60e51b815260040161012b9190611bd7565b73ffffffffffffffffffffffffffffffffffffffff8116811461192757600080fd5b50565b60008083601f84011261193c57600080fd5b50813567ffffffffffffffff81111561195457600080fd5b60208301915083602082850101111561196c57600080fd5b9250929050565b600080600080600080600060c0888a03121561198e57600080fd5b873561199981611905565b965060208801356119a981611905565b955060408801356119b981611905565b945060608801356119c981611905565b93506080880135925060a088013567ffffffffffffffff8111156119ec57600080fd5b6119f88a828b0161192a565b989b979a50959850939692959293505050565b803563ffffffff81168114611a1f57600080fd5b919050565b600080600060408486031215611a3957600080fd5b611a4284611a0b565b9250602084013567ffffffffffffffff811115611a5e57600080fd5b611a6a8682870161192a565b9497909650939450505050565b600080600080600060808688031215611a8f57600080fd5b8535611a9a81611905565b94506020860135611aaa81611905565b935060408601359250606086013567ffffffffffffffff811115611acd57600080fd5b611ad98882890161192a565b969995985093965092949392505050565b600080600080600080600060c0888a031215611b0557600080fd5b8735611b1081611905565b96506020880135611b2081611905565b95506040880135611b3081611905565b945060608801359350611b4560808901611a0b565b925060a088013567ffffffffffffffff8111156119ec57600080fd5b60005b83811015611b7c578181015183820152602001611b64565b83811115610fc55750506000910152565b60008151808452611ba5816020860160208601611b61565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061154b6020830184611b8d565b60008060008060008060a08789031215611c0357600080fd5b8635611c0e81611905565b95506020870135611c1e81611905565b945060408701359350611c3360608801611a0b565b9250608087013567ffffffffffffffff811115611c4f57600080fd5b611c5b89828a0161192a565b979a9699509497509295939492505050565b60008060408385031215611c8057600080fd5b8235611c8b81611905565b91506020830135611c9b81611905565b809150509250929050565b60008060008060608587031215611cbc57600080fd5b8435611cc781611905565b9350611cd560208601611a0b565b9250604085013567ffffffffffffffff811115611cf157600080fd5b611cfd8782880161192a565b95989497509550505050565b82815260406020820152600061118c6040830184611b8d565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611d616080830184611b8d565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000611d9a6060830185611b8d565b905063ffffffff83166040830152949350505050565b600060208284031215611dc257600080fd5b815161154b81611905565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611e0e57611e0e611dcd565b500390565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000611d61606083018486611e13565b838152604060208201526000611eac604083018486611e13565b95945050505050565b60008219821115611ec857611ec8611dcd565b500190565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000611eac6060830184611b8d565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a0830152611f5160c0830184611b8d565b98975050505050505050565b600060208284031215611f6f57600080fd5b8151801515811461154b57600080fd5b60008251611f91818460208701611b61565b919091019291505056fea164736f6c634300080f000a", - "key": "0x7694289e56b3885be351656b2b6cd001557c52e00baa368c33676c4a1431e6dc" + "codeHash": "0x40f28d308c3eca7e77550c82ed8881ebc93f785bad3c75d0864a869f8302b713", + "code": "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c80638b51d13f116100cd578063b77bf60011610081578063c01a8c8411610066578063c01a8c84146103c4578063c6427474146103d7578063ee22610b146103ea57600080fd5b8063b77bf6001461039b578063b9774f7b146103a457600080fd5b80639ab24eb0116100b25780639ab24eb01461033e5780639ace38c2146103515780639e45e8f41461037457600080fd5b80638b51d13f146102ff57806391ddadf41461031f57600080fd5b806349ae963d116101245780636dc0ae22116101095780636dc0ae2214610256578063784547a7146102a25780638a8e784c146102b557600080fd5b806349ae963d146101fa57806354fd4d501461020d57600080fd5b80631703a018116101555780631703a0181461019957806320ea8d86146101b45780632a758595146101c757600080fd5b80630192337114610171578063080b91ee14610186575b600080fd5b61018461017f366004611a5d565b6103fd565b005b610184610194366004611b6c565b61063b565b6101a1610737565b6040519081526020015b60405180910390f35b6101846101c2366004611bbc565b6109ba565b6101ea6101d5366004611bbc565b60396020526000908152604090205460ff1681565b60405190151581526020016101ab565b6101a1610208366004611bf7565b610c9c565b6102496040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ab9190611ca5565b61027d7f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750881565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b6101ea6102b0366004611bbc565b610d85565b6101ea6102c3366004611cbf565b600082815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845260010190915290205460ff1692915050565b6101a161030d366004611bbc565b60009081526034602052604090205490565b610327610da9565b60405165ffffffffffff90911681526020016101ab565b6101a161034c366004611ce4565b610ed5565b61036461035f366004611bbc565b610ffe565b6040516101ab9493929190611d01565b61027d7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b6101a160385481565b6101a16103b2366004611bbc565b60346020526000908152604090205481565b6101846103d2366004611bbc565b6110dc565b6101a16103e5366004611bf7565b61133e565b6101846103f8366004611bbc565b6113d3565b33600061040982610ed5565b116104815760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e6572000000000060648201526084015b60405180910390fd5b60008381526039602052604090205460ff16158061049c5750815b6105355760405162461bcd60e51b8152602060048201526044602482018190527f5365637572697479436f756e63696c3a20746865206f75747075742068617320908201527f616c7265616479206265656e2072657175657374656420746f2062652064656c60648201527f6574656400000000000000000000000000000000000000000000000000000000608482015260a401610478565b6040805160248082018690528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe39a219c0000000000000000000000000000000000000000000000000000000017905260006105c87f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788828461133e565b90506105d3816110dc565b60008581526039602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905551869183917fc63c84660a471a970585c7cab9d0601af8e717ff0822a2ea049a3542fc5aa55a9190a35050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78816146106e65760405162461bcd60e51b815260206004820152603c60248201527f5365637572697479436f756e63696c3a206f6e6c792074686520636f6c6f737360448201527f65756d20636f6e74726163742063616e20626520612073656e646572000000006064820152608401610478565b60006106f433600084611741565b604080518681526020810186905291925082917eef5106e82a682c776fd7748be042f406a9ee0feaaea86ae9029477c2b91f2a910160405180910390a250505050565b6000806001610744610da9565b61074e9190611d77565b65ffffffffffff1690507f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff166397c3d3346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611d9e565b6040517f60c4247f000000000000000000000000000000000000000000000000000000008152600481018390527f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff16906360c4247f90602401602060405180830381865afa158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190611d9e565b7f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190611db7565b73ffffffffffffffffffffffffffffffffffffffff16638e539e8c846040518263ffffffff1660e01b815260040161095f91815260200190565b602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190611d9e565b6109aa9190611dd4565b6109b49190611e11565b91505090565b3360006109c682610ed5565b11610a395760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b600082815260336020526040902054829073ffffffffffffffffffffffffffffffffffffffff16610ad25760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b600083815260336020526040902054839074010000000000000000000000000000000000000000900460ff1615610b715760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d756c746953696757616c6c65743a20616c72656164792065786560448201527f63757465640000000000000000000000000000000000000000000000000000006064820152608401610478565b600084815260346020908152604080832033845260010190915290205460ff16610c035760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d756c746953696757616c6c65743a206e6f7420636f6e6669726d60448201527f65642079657400000000000000000000000000000000000000000000000000006064820152608401610478565b60008481526034602090815260408083203380855260018201909352922080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610c5090610ed5565b816000016000828254610c639190611e4c565b9091555050604051859033907f795394da21278ca39d59bb3ca00efeebdc0679acc420916c7385c2c5d942656f90600090a35050505050565b60008373ffffffffffffffffffffffffffffffffffffffff8116610d285760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4d756c746953696757616c6c65743a20616464726573732069732060448201527f6e6f742076616c696400000000000000000000000000000000000000000000006064820152608401610478565b848484610d33610da9565b604051602001610d469493929190611e63565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b6000610d8f610737565b600092835260346020526040909220549190911015919050565b60007f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a9190611db7565b73ffffffffffffffffffffffffffffffffffffffff166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ebe575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610ebb91810190611eb1565b60015b610ed057610ecb43611968565b905090565b919050565b60007f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f669190611db7565b6040517f9ab24eb000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529190911690639ab24eb090602401602060405180830381865afa158015610fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff89190611d9e565b92915050565b60336020526000908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff8416947401000000000000000000000000000000000000000090940460ff1693919061105990611ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461108590611ed9565b80156110d25780601f106110a7576101008083540402835291602001916110d2565b820191906000526020600020905b8154815290600101906020018083116110b557829003601f168201915b5050505050905084565b3360006110e882610ed5565b1161115b5760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b600082815260336020526040902054829073ffffffffffffffffffffffffffffffffffffffff166111f45760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b6000838152603460209081526040808320338452600181019092529091205460ff16156112895760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d756c746953696757616c6c65743a20616c726561647920636f6e60448201527f6669726d656400000000000000000000000000000000000000000000000000006064820152608401610478565b3360008181526001838101602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556112ce90610ed5565b8160000160008282546112e19190611f2c565b9091555050604051849033907ff8a17c9136a3ae33364fac05eb088a3cbafee10c1889c88593e20ee2d8e4eb8890600090a361131b610737565b6000858152603460205260409020541061133857611338846113d3565b50505050565b600033600061134c82610ed5565b116113bf5760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b6113ca858585611741565b95945050505050565b6113db6119ea565b600081815260336020526040902054819073ffffffffffffffffffffffffffffffffffffffff166114745760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b600082815260336020526040902054829074010000000000000000000000000000000000000000900460ff16156115135760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d756c746953696757616c6c65743a20616c72656164792065786560448201527f63757465640000000000000000000000000000000000000000000000000000006064820152608401610478565b61151c83610d85565b61158e5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d756c746953696757616c6c65743a2071756f72756d206e6f742060448201527f72656163686564000000000000000000000000000000000000000000000000006064820152608401610478565b600083815260336020526040812080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff81167401000000000000000000000000000000000000000017825590919061168f9073ffffffffffffffffffffffffffffffffffffffff165a846001015485600201805461160c90611ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461163890611ed9565b80156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b5050505050611a43565b9050806117045760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e4d756c746953696757616c6c65743a2063616c6c207472616e736160448201527f6374696f6e206661696c656400000000000000000000000000000000000000006064820152608401610478565b604051859033907f4e86ad0da28cbaaaa7e93e36c43b32696e970535225b316f1b84fbf30bdc04e890600090a35050505061173e60018055565b50565b60008373ffffffffffffffffffffffffffffffffffffffff81166117cd5760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4d756c746953696757616c6c65743a20616464726573732069732060448201527f6e6f742076616c696400000000000000000000000000000000000000000000006064820152608401610478565b60006117da868686610c9c565b60008181526033602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16156118755760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20616c72656164792065786973747300000000000000000000000000000000006064820152608401610478565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff8089168252600060208084018281528486018b8152606086018b8152888552603390935295909220845181549351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090941694169390931791909117825592516001820155915190919060028201906119269082611f93565b505060388054600101905550604051819033907f1f50cd00b6a6fe3928bf4a5f2f23829e9a1c9396573b828b5fa14d95aae7e77590600090a395945050505050565b600065ffffffffffff8211156119e65760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152608401610478565b5090565b600260015403611a3c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610478565b6002600155565b600080600080845160208601878a8af19695505050505050565b60008060408385031215611a7057600080fd5b8235915060208301358015158114611a8757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611ad257600080fd5b813567ffffffffffffffff80821115611aed57611aed611a92565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611b3357611b33611a92565b81604052838152866020858801011115611b4c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611b8157600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611ba657600080fd5b611bb286828701611ac1565b9150509250925092565b600060208284031215611bce57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461173e57600080fd5b600080600060608486031215611c0c57600080fd5b8335611c1781611bd5565b925060208401359150604084013567ffffffffffffffff811115611ba657600080fd5b6000815180845260005b81811015611c6057602081850181015186830182015201611c44565b81811115611c72576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611cb86020830184611c3a565b9392505050565b60008060408385031215611cd257600080fd5b823591506020830135611a8781611bd5565b600060208284031215611cf657600080fd5b8135611cb881611bd5565b73ffffffffffffffffffffffffffffffffffffffff851681528315156020820152826040820152608060608201526000611d3e6080830184611c3a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600065ffffffffffff83811690831681811015611d9657611d96611d48565b039392505050565b600060208284031215611db057600080fd5b5051919050565b600060208284031215611dc957600080fd5b8151611cb881611bd5565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e0c57611e0c611d48565b500290565b600082611e47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015611e5e57611e5e611d48565b500390565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201526000611e986080830185611c3a565b905065ffffffffffff8316606083015295945050505050565b600060208284031215611ec357600080fd5b815165ffffffffffff81168114611cb857600080fd5b600181811c90821680611eed57607f821691505b602082108103611f26577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115611f3f57611f3f611d48565b500190565b601f821115611f8e57600081815260208120601f850160051c81016020861015611f6b5750805b601f850160051c820191505b81811015611f8a57828155600101611f77565b5050505b505050565b815167ffffffffffffffff811115611fad57611fad611a92565b611fc181611fbb8454611ed9565b84611f44565b602080601f8311600181146120145760008415611fde5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611f8a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561206157888601518255948401946001909101908401612042565b508582101561209d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea164736f6c634300080f000a", + "key": "0x485bdae81e6998854e4621c39469c7a360ddb5f9a5703fd7bcdfea372f9213e6" }, "0x3fab184622dc19b6109349b94811493bf2a45362": { "balance": "993186300000000000", @@ -179,17 +160,17 @@ "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "key": "0xde33f5554ba92b642b2295d39f4de663601655a65aa90577cfd665fdbe35db04" }, - "0x4a679253410272dd5232b3ff7cf5dbb88f295319": { + "0x4c5859f0f772848b2d91f1d83e2fe57935348029": { "balance": "0", "nonce": 1, - "root": "0xa7abcc6e1e344abdd761f5e3b08dfacd08b68a6533969baeeaf61e80fde624e4", - "codeHash": "0x3d388f39ad810b96662b6c3930aef3f0bddb6652fbdb8d2bfcbdee814a791f59", - "code": "0x6080604052600436106101a05760003560e01c806370a08231116100e1578063ab91f1901161008a578063d38dc7ee11610064578063d38dc7ee1461053d578063d8fe76421461055d578063dd215c5d146105ad578063facd743b146105cd57600080fd5b8063ab91f190146104d1578063b7d636a514610501578063d0e30db01461053557600080fd5b80638f09ade4116100bb5780638f09ade414610468578063946765fd14610488578063a51c9ace146104bc57600080fd5b806370a08231146103e75780638129fc1c1461041d57806382dae3aa1461043257600080fd5b806336b834691161014e57806354fd4d501161012857806354fd4d50146103285780635a5447421461037e5780635df6a6bc1461039e5780636641ea08146103b357600080fd5b806336b83469146102bf5780633a549046146102df5780633ee4d4a3146102f457600080fd5b8063205c28781161017f578063205c2878146102495780632e1a7d4d1461026b578063360864171461028b57600080fd5b80621c2ff6146101a55780630f43a677146101f65780630ff754ea14610215575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020257600080fd5b506036545b6040519081526020016101ed565b34801561022157600080fd5b506101d97f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e081565b34801561025557600080fd5b5061026961026436600461233c565b6105fd565b005b34801561027757600080fd5b50610269610286366004612368565b610730565b34801561029757600080fd5b506101d97f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b3480156102cb57600080fd5b506102696102da366004612381565b6107e1565b3480156102eb57600080fd5b506101d9610a52565b34801561030057600080fd5b506101d97f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c881565b34801561033457600080fd5b506103716040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516101ed919061242e565b34801561038a57600080fd5b50610269610399366004612441565b610c10565b3480156103aa57600080fd5b50610269610eb9565b3480156103bf57600080fd5b506102077f000000000000000000000000000000000000000000000000000000000000000481565b3480156103f357600080fd5b50610207610402366004612471565b6001600160a01b031660009081526033602052604090205490565b34801561042957600080fd5b50610269610f38565b34801561043e57600080fd5b50610447601481565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ed565b34801561047457600080fd5b50610447610483366004612441565b6110af565b34801561049457600080fd5b506102077f000000000000000000000000000000000000000000000000000000000000000a81565b3480156104c857600080fd5b50610447606481565b3480156104dd57600080fd5b506104e8620186a081565b60405167ffffffffffffffff90911681526020016101ed565b34801561050d57600080fd5b506104477f000000000000000000000000000000000000000000000000000000000000000181565b61026961115e565b34801561054957600080fd5b506102696105583660046124ac565b61116a565b34801561056957600080fd5b5061057d610578366004612368565b611443565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101ed565b3480156105b957600080fd5b506102696105c8366004612441565b611562565b3480156105d957600080fd5b506105ed6105e8366004612471565b6118c8565b60405190151581526020016101ed565b61060561194e565b6001600160a01b0382166106865760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61069033826119a7565b60006106ad835a8460405180602001604052806000815250611bf9565b9050806107225760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161067d565b5061072c60018055565b5050565b61073861194e565b61074233826119a7565b600061075f335a8460405180602001604052806000815250611bf9565b9050806107d45760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161067d565b506107de60018055565b50565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086391906124d1565b6001600160a01b0316336001600160a01b0316146108e95760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806109915760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690556109f5826fffffffffffffffffffffffffffffffff8316611c19565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610beb5760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aea91906124ee565b905060006001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663d1de856c610b28846001612536565b6040518263ffffffff1660e01b8152600401610b4691815260200190565b602060405180830381865afa158015610b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8791906124ee565b9050804210610bd8576000610b9c824261254e565b90507f0000000000000000000000000000000000000000000000000000000000000004811115610bd6576001600160a01b03935050505090565b505b50506038546001600160a01b0316919050565b507f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c890565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9291906124d1565b6001600160a01b0316336001600160a01b031614610d185760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dc45760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161067d565b610e00827f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff166119a7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ec3611d4d565b9050806107de5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161067d565b600054610100900460ff1615808015610f585750600054600160ff909116105b80610f725750303b158015610f72575060005460ff166001145b610fe45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161067d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561104257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61104a611f6b565b80156107de57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111575760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b9392505050565b6111683334611c19565b565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146112085760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161067d565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156112b15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161067d565b6112b9611d4d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561133b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135f91906124d1565b905061139d817f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff166119a7565b7f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361143d611fe8565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906114ad5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61151f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161067d565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e491906124d1565b6001600160a01b0316336001600160a01b03161461166a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156117165760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161067d565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806117be5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b600060646117cd601484612565565b6117d791906125cc565b905060006117e582846125fb565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e9091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b60365460009081036118dc57506000919050565b6001600160a01b0382166118f257506000919050565b6001600160a01b03821660008181526037602052604090205460368054919291839081106119225761192261262c565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b6002600154036119a05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161067d565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611a355760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161067d565b611a3f828261254e565b90507f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff1681108015611a865750611a86836118c8565b15611bd957603654600090611a9d9060019061254e565b90508015611b55576001600160a01b0384166000908152603760205260408120546036805491929184908110611ad557611ad561262c565b600091825260209091200154603680546001600160a01b039092169250829184908110611b0457611b0461262c565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611b7f57611b7f61265b565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611c3d908390612536565b90507f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff168110158015611c875750611c85836118c8565b155b15611bd9577f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e6001600160a01b0316836001600160a01b031614611bd957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000a811015611f4857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611e0457506000846fffffffffffffffffffffffffffffffff16115b15611f485760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc919061268a565b9150611ede8260000151856fffffffffffffffffffffffffffffffff16611c19565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a3611f3c826121b6565b60019485019401611d7d565b8015611f5f57505050603591909155506001919050565b60009550505050505090565b600054610100900460ff16611c135760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161067d565b6036548015801590611ffc57506000603554115b1561218b5760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663a25ae5576001603554612041919061254e565b6040518263ffffffff1660e01b815260040161205f91815260200190565b608060405180830381865afa15801561207c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a0919061268a565b905060008282602001514341446001436120ba919061254e565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c61212b919061272d565b9050603681815481106121405761214061262c565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506107de9050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612260926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526122f2939291600401612741565b600060405180830381600087803b15801561230c57600080fd5b505af1158015612320573d6000803e3d6000fd5b5050505050565b6001600160a01b03811681146107de57600080fd5b6000806040838503121561234f57600080fd5b823561235a81612327565b946020939093013593505050565b60006020828403121561237a57600080fd5b5035919050565b60008060006060848603121561239657600080fd5b8335925060208401356123a881612327565b915060408401356123b881612327565b809150509250925092565b6000815180845260005b818110156123e9576020818501810151868301820152016123cd565b818111156123fb576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061115760208301846123c3565b6000806040838503121561245457600080fd5b82359150602083013561246681612327565b809150509250929050565b60006020828403121561248357600080fd5b813561115781612327565b6fffffffffffffffffffffffffffffffff811681146107de57600080fd5b600080604083850312156124bf57600080fd5b8235915060208301356124668161248e565b6000602082840312156124e357600080fd5b815161115781612327565b60006020828403121561250057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561254957612549612507565b500190565b60008282101561256057612560612507565b500390565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561259457612594612507565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806125ef576125ef61259d565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561262457612624612507565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561269c57600080fd5b6040516080810181811067ffffffffffffffff821117156126e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516126f481612327565b815260208381015190820152604083015161270e8161248e565b604082015260608301516127218161248e565b60608201529392505050565b60008261273c5761273c61259d565b500690565b6001600160a01b038416815267ffffffffffffffff8316602082015260606040820152600061277360608301846123c3565b9594505050505056fea164736f6c634300080f000a", + "root": "0x16ab28db97899d288edaf08427fe432671ff4580f662db4e6ef31bf1e174aa7c", + "codeHash": "0x9d0ab1e8517f39d480d730429d68ad869378129819338387fdb223c285d0001a", + "code": "0x608060405234801561001057600080fd5b50600436106102265760003560e01c806370a082311161012a5780639dc29fac116100bd578063d505accf1161008c578063e51080e511610071578063e51080e51461053e578063ee9a31a214610565578063f1127ed81461058c57600080fd5b8063d505accf146104f2578063dd62ed3e1461050557600080fd5b80639dc29fac146104a6578063a457c2d7146104b9578063a9059cbb146104cc578063c3cda520146104df57600080fd5b80638e539e8c116100f95780638e539e8c1461045957806391ddadf41461046c57806395d89b411461048b5780639ab24eb01461049357600080fd5b806370a08231146103ef57806379cc6790146104185780637ecebe001461042b57806384b0196e1461043e57600080fd5b806339509351116101bd5780634bf5d7e91161018c578063587cde1e11610171578063587cde1e146103885780635c19a95c146103b45780636fcfff45146103c757600080fd5b80634bf5d7e91461034457806354fd4d501461034c57600080fd5b806339509351146102f65780633a46b1a81461030957806340c10f191461031c57806342966c681461033157600080fd5b806318160ddd116101f957806318160ddd146102ba57806323b872dd146102cc578063313ce567146102df5780633644e515146102ee57600080fd5b806301ffc9a71461022b578063033964be1461025357806306fdde0314610292578063095ea7b3146102a7575b600080fd5b61023e610239366004612554565b6105de565b60405190151581526020015b60405180910390f35b61027a7f00000000000000000000000042000000000000000000000000000000000000ff81565b6040516001600160a01b03909116815260200161024a565b61029a61067e565b60405161024a9190612601565b61023e6102b5366004612630565b610710565b6002545b60405190815260200161024a565b61023e6102da36600461265a565b61072a565b6040516012815260200161024a565b6102be61074e565b61023e610304366004612630565b61075d565b6102be610317366004612630565b61079c565b61032f61032a366004612630565b61082a565b005b61032f61033f366004612696565b610909565b61029a610916565b61029a6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b61027a6103963660046126af565b6001600160a01b039081166000908152600960205260409020541690565b61032f6103c23660046126af565b6109ae565b6103da6103d53660046126af565b6109b8565b60405163ffffffff909116815260200161024a565b6102be6103fd3660046126af565b6001600160a01b031660009081526020819052604090205490565b61032f610426366004612630565b6109da565b6102be6104393660046126af565b6109ef565b610446610a0d565b60405161024a97969594939291906126ca565b6102be610467366004612696565b610ab2565b610474610b1d565b60405165ffffffffffff909116815260200161024a565b61029a610b28565b6102be6104a13660046126af565b610b37565b61032f6104b4366004612630565b610be3565b61023e6104c7366004612630565b610c81565b61023e6104da366004612630565b610d2b565b61032f6104ed36600461278d565b610d39565b61032f6105003660046127e5565b610e6f565b6102be61051336600461284f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027a7f000000000000000000000000000000000000000000000000000000000000000081565b61027a7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b61059f61059a366004612882565b610fd3565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928101929092520161024a565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061067657507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b60606003805461068d906128c2565b80601f01602080910402602001604051908101604052809291908181526020018280546106b9906128c2565b80156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b5050505050905090565b60003361071e8185856110a0565b60019150505b92915050565b6000336107388582856111f8565b61074385858561128a565b506001949350505050565b600061075861147d565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061071e908290869061079790879061293e565b6110a0565b60006107a6610b1d565b65ffffffffffff1682106108015760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600a6020526040902061082390836115a8565b9392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614806108895750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6108fb5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e616e6365546f6b656e3a206f6e6c79206d696e7465722063616e60448201527f206d696e7400000000000000000000000000000000000000000000000000000060648201526084016107f8565b61090582826116bb565b5050565b61091333826116c5565b50565b606043610921610b1d565b65ffffffffffff16146109765760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016107f8565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b61091333826116cf565b6001600160a01b0381166000908152600a602052604081205461072490611760565b6109e58233836111f8565b61090582826116c5565b6001600160a01b038116600090815260076020526040812054610724565b600060608082808083610a417f4b726f6d6100000000000000000000000000000000000000000000000000000560056117e0565b610a6c7f310000000000000000000000000000000000000000000000000000000000000160066117e0565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610abc610b1d565b65ffffffffffff168210610b125760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064016107f8565b610724600b836115a8565b600061075843611884565b60606004805461068d906128c2565b6001600160a01b0381166000908152600a60205260408120548015610bbb576001600160a01b0383166000908152600a6020526040902080546000198301908110610b8457610b84612985565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610bbe565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146109e55760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e00000000000000000000000000000060648201526084016107f8565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610d1e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107f8565b61074382868684036110a0565b60003361071e81858561128a565b83421115610d895760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016107f8565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e0390610dfb9060a00160405160208183030381529060405280519060200120611902565b85858561194a565b9050610e0e81611972565b8614610e5c5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016107f8565b610e6681886116cf565b50505050505050565b83421115610ebf5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016107f8565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610eee8c611972565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f4982611902565b90506000610f598287878761194a565b9050896001600160a01b0316816001600160a01b031614610fbc5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016107f8565b610fc78a8a8a6110a0565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a60205260409020805463ffffffff841690811061101757611017612985565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b6000602083511015611088576110818361199a565b9050610724565b816110938482612a02565b5060ff9050610724565b90565b6001600160a01b03831661111b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166111975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461128457818110156112775760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107f8565b61128484848484036110a0565b50505050565b6001600160a01b0383166113065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166113825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038316600090815260208190526040902054818110156114115760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36112848484846119f6565b6000306001600160a01b037f0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029161480156114d657507f000000000000000000000000000000000000000000000000000000000000053946145b1561150057507ffc41f94b02e5cb33dbd64c46adc99a9743175acc35f9001acf812bd0cacb2b4f90565b610758604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f7d1780c7a694e1f75550e8e5f55a6c40ba84748efbfbd38087dbf009f30899ba918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b8154600090818160058111156116025760006115c384611a01565b6115cd9085612ae0565b600088815260209020909150869082015463ffffffff1611156115f257809150611600565b6115fd81600161293e565b92505b505b8082101561164f5760006116168383611ae9565b600088815260209020909150869082015463ffffffff16111561163b57809150611649565b61164681600161293e565b92505b50611602565b8015611690576000868152602090208101600019015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611693565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169695505050505050565b6109058282611b04565b6109058282611bb0565b6001600160a01b038281166000818152600960208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611284828483611bc8565b600063ffffffff8211156117dc5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f322062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b5090565b606060ff83146117f35761108183611d05565b8180546117ff906128c2565b80601f016020809104026020016040519081016040528092919081815260200182805461182b906128c2565b80156118785780601f1061184d57610100808354040283529160200191611878565b820191906000526020600020905b81548152906001019060200180831161185b57829003601f168201915b50505050509050610724565b600065ffffffffffff8211156117dc5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f382062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b600061072461190f61147d565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600061195b87878787611d44565b9150915061196881611e26565b5095945050505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b600080829050601f815111156119de57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016107f89190612601565b80516119e982612af7565b179392505050565b505050565b6119f1838383611f8b565b600081600003611a1357506000919050565b60006001611a2084611fbd565b901c6001901b90506001818481611a3957611a39612b1b565b048201901c90506001818481611a5157611a51612b1b565b048201901c90506001818481611a6957611a69612b1b565b048201901c90506001818481611a8157611a81612b1b565b048201901c90506001818481611a9957611a99612b1b565b048201901c90506001818481611ab157611ab1612b1b565b048201901c90506001818481611ac957611ac9612b1b565b048201901c905061082381828581611ae357611ae3612b1b565b04612051565b6000611af86002848418612b4a565b6108239084841661293e565b611b0e8282612067565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611ba25760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f7465730000000000000000000000000000000060648201526084016107f8565b611284600b61212e8361213a565b611bba8282612303565b611284600b6124738361213a565b816001600160a01b0316836001600160a01b031614158015611bea5750600081115b156119f1576001600160a01b03831615611c78576001600160a01b0383166000908152600a602052604081208190611c25906124738561213a565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611c6d929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156119f1576001600160a01b0382166000908152600a602052604081208190611cae9061212e8561213a565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611cf6929190918252602082015260400190565b60405180910390a25050505050565b60606000611d128361247f565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611d7b5750600090506003611e1d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611dcf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116611e1657600060019250925050611e1d565b9150600090505b94509492505050565b6000816004811115611e3a57611e3a612b85565b03611e425750565b6001816004811115611e5657611e56612b85565b03611ea35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107f8565b6002816004811115611eb757611eb7612b85565b03611f045760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107f8565b6003816004811115611f1857611f18612b85565b036109135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038381166000908152600960205260408082205485841683529120546119f192918216911683611bc8565b600080608083901c15611fd257608092831c92015b604083901c15611fe457604092831c92015b602083901c15611ff657602092831c92015b601083901c1561200857601092831c92015b600883901c1561201a57600892831c92015b600483901c1561202c57600492831c92015b600283901c1561203e57600292831c92015b600183901c156107245760010192915050565b60008183106120605781610823565b5090919050565b6001600160a01b0382166120bd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107f8565b80600260008282546120cf919061293e565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610905600083836119f6565b6000610823828461293e565b8254600090819081811561219c5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208201526121b1565b60408051808201909152600080825260208201525b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1693506121e684868863ffffffff16565b925060008211801561221057506121fb610b1d565b65ffffffffffff16816000015163ffffffff16145b1561226a5761221e836124c0565b60008881526020902083016000190180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9092169190911790556122f9565b86604051806040016040528061228e612281610b1d565b65ffffffffffff16611760565b63ffffffff1681526020016122a2866124c0565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6001600160a01b03821661237f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0382166000908152602081905260409020548181101561240e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36119f1836000846119f6565b60006108238284612ae0565b600060ff8216601f811115610724576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156117dc5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016107f8565b60006020828403121561256657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461082357600080fd5b6000815180845260005b818110156125bc576020818501810151868301820152016125a0565b818111156125ce576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108236020830184612596565b80356001600160a01b038116811461262b57600080fd5b919050565b6000806040838503121561264357600080fd5b61264c83612614565b946020939093013593505050565b60008060006060848603121561266f57600080fd5b61267884612614565b925061268660208501612614565b9150604084013590509250925092565b6000602082840312156126a857600080fd5b5035919050565b6000602082840312156126c157600080fd5b61082382612614565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261270660e084018a612596565b8381036040850152612718818a612596565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561276a5783518352928401929184019160010161274e565b50909c9b505050505050505050505050565b803560ff8116811461262b57600080fd5b60008060008060008060c087890312156127a657600080fd5b6127af87612614565b955060208701359450604087013593506127cb6060880161277c565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561280057600080fd5b61280988612614565b965061281760208901612614565b955060408801359450606088013593506128336080890161277c565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561286257600080fd5b61286b83612614565b915061287960208401612614565b90509250929050565b6000806040838503121561289557600080fd5b61289e83612614565b9150602083013563ffffffff811681146128b757600080fd5b809150509250929050565b600181811c908216806128d657607f821691505b602082108103611994577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156129515761295161290f565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f8211156119f157600081815260208120601f850160051c810160208610156129db5750805b601f850160051c820191505b818110156129fa578281556001016129e7565b505050505050565b815167ffffffffffffffff811115612a1c57612a1c612956565b612a3081612a2a84546128c2565b846129b4565b602080601f831160018114612a655760008415612a4d5750858301515b600019600386901b1c1916600185901b1785556129fa565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612ab257888601518255948401946001909101908401612a93565b5085821015612ad05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082821015612af257612af261290f565b500390565b805160208083015191908110156119945760001960209190910360031b1b16919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612b80577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000001": "01" + "0x0000000000000000000000000000000000000000000000000000000000000003": "4b726f6d6100000000000000000000000000000000000000000000000000000a", + "0x0000000000000000000000000000000000000000000000000000000000000004": "4b524f0000000000000000000000000000000000000000000000000000000006" }, - "key": "0xc158f1c4ca002e59c1aa0ce71d03e1a6fcb8722608e7b0e397a3c94dcb96c4cd" + "key": "0x7392cffa2105097e2c40fb48f59b2e37173affe4b8047e54483cc5eb85b2db13" }, "0x4e59b44847b379578588920ca78fbf26c0b4956c": { "balance": "0", @@ -199,21 +180,13 @@ "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3", "key": "0x491ded984cd17b1afee6ccb6ef366c53dd79f50b592816adc12e9302a9f2b36c" }, - "0x59b670e9fa9d0a427751af201d676719a970857b": { + "0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1": { "balance": "0", "nonce": 1, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "0x35557ad22a54e2d0ee2fcd5267d8726f9e014d93448c30d3d0ea003f20103f13", "code": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063761f44931161005b578063761f44931461012d5780637f46ddb214610140578063927ede2d1461018c578063aa557452146101b357600080fd5b80633687011a1461008257806354fd4d50146100975780635d93a3fc146100e9575b600080fd5b610095610090366004610bad565b6101c6565b005b6100d36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100e09190610c9b565b60405180910390f35b61011d6100f7366004610cb5565b603160209081526000938452604080852082529284528284209052825290205460ff1681565b60405190151581526020016100e0565b61009561013b366004610cf6565b610272565b6101677f000000000000000000000000420000000000000000000000000000000000000a81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e0565b6101677f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b6100956101c1366004610d8e565b6106f3565b333b1561025a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732314272696467653a206163636f756e74206973206e6f742065787460448201527f65726e616c6c79206f776e65640000000000000000000000000000000000000060648201526084015b60405180910390fd5b61026a86863333888888886107af565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614801561039057507f000000000000000000000000420000000000000000000000000000000000000a73ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103789190610e05565b73ffffffffffffffffffffffffffffffffffffffff16145b61041c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4552433732314272696467653a2066756e6374696f6e2063616e206f6e6c792060448201527f62652063616c6c65642066726f6d20746865206f7468657220627269646765006064820152608401610251565b3073ffffffffffffffffffffffffffffffffffffffff8816036104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4c314552433732314272696467653a206c6f63616c20746f6b656e2063616e6e60448201527f6f742062652073656c66000000000000000000000000000000000000000000006064820152608401610251565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152603160209081526040808320938a1683529281528282208683529052205460ff161515600114610590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4c314552433732314272696467653a20546f6b656e204944206973206e6f742060448201527f657363726f77656420696e20746865204c3120427269646765000000000000006064820152608401610251565b73ffffffffffffffffffffffffffffffffffffffff87811660008181526031602090815260408083208b8616845282528083208884529091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152918616602483015260448201859052906342842e0e90606401600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f1f39bf6707b5d608453e0ae4c067b562bcc4c85c0f562ef5d2c774d2e7f131ac878787876040516106e29493929190610e6b565b60405180910390a450505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314272696467653a206e667420726563697069656e742063616e6e60448201527f6f742062652061646472657373283029000000000000000000000000000000006064820152608401610251565b6107a687873388888888886107af565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8716610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4c314552433732314272696467653a2072656d6f746520746f6b656e2063616e60448201527f6e6f7420626520616464726573732830290000000000000000000000000000006064820152608401610251565b600063761f449360e01b888a89898988886040516024016108799796959493929190610eab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000959095169490941790935273ffffffffffffffffffffffffffffffffffffffff8c81166000818152603186528381208e8416825286528381208b82529095529382902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517f23b872dd000000000000000000000000000000000000000000000000000000008152908a166004820152306024820152604481018890529092506323b872dd90606401600060405180830381600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b50506040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169250633dbb202b9150610a67907f000000000000000000000000420000000000000000000000000000000000000a9085908990600401610f08565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fb7460e2a880f256ebef3406116ff3eee0cee51ebccdc2a40698f87ebb2e9c1a589898888604051610b139493929190610e6b565b60405180910390a4505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b4857600080fd5b50565b803563ffffffff81168114610b5f57600080fd5b919050565b60008083601f840112610b7657600080fd5b50813567ffffffffffffffff811115610b8e57600080fd5b602083019150836020828501011115610ba657600080fd5b9250929050565b60008060008060008060a08789031215610bc657600080fd5b8635610bd181610b26565b95506020870135610be181610b26565b945060408701359350610bf660608801610b4b565b9250608087013567ffffffffffffffff811115610c1257600080fd5b610c1e89828a01610b64565b979a9699509497509295939492505050565b6000815180845260005b81811015610c5657602081850181015186830182015201610c3a565b81811115610c68576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cae6020830184610c30565b9392505050565b600080600060608486031215610cca57600080fd5b8335610cd581610b26565b92506020840135610ce581610b26565b929592945050506040919091013590565b600080600080600080600060c0888a031215610d1157600080fd5b8735610d1c81610b26565b96506020880135610d2c81610b26565b95506040880135610d3c81610b26565b94506060880135610d4c81610b26565b93506080880135925060a088013567ffffffffffffffff811115610d6f57600080fd5b610d7b8a828b01610b64565b989b979a50959850939692959293505050565b600080600080600080600060c0888a031215610da957600080fd5b8735610db481610b26565b96506020880135610dc481610b26565b95506040880135610dd481610b26565b945060608801359350610de960808901610b4b565b925060a088013567ffffffffffffffff811115610d6f57600080fd5b600060208284031215610e1757600080fd5b8151610cae81610b26565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610ea1606083018486610e22565b9695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a0830152610efb60c083018486610e22565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000610f376060830185610c30565b905063ffffffff8316604083015294935050505056fea164736f6c634300080f000a", - "key": "0x955b9191e283f55b64f3d7bbeacf7afa8b939366f402751f848ad0791681c7df" - }, - "0x5eb3bc0a489c5a8288765d2336659ebca68fcd00": { - "balance": "0", - "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0x40f28d308c3eca7e77550c82ed8881ebc93f785bad3c75d0864a869f8302b713", - "code": "0x608060405234801561001057600080fd5b506004361061016c5760003560e01c80638b51d13f116100cd578063b77bf60011610081578063c01a8c8411610066578063c01a8c84146103c4578063c6427474146103d7578063ee22610b146103ea57600080fd5b8063b77bf6001461039b578063b9774f7b146103a457600080fd5b80639ab24eb0116100b25780639ab24eb01461033e5780639ace38c2146103515780639e45e8f41461037457600080fd5b80638b51d13f146102ff57806391ddadf41461031f57600080fd5b806349ae963d116101245780636dc0ae22116101095780636dc0ae2214610256578063784547a7146102a25780638a8e784c146102b557600080fd5b806349ae963d146101fa57806354fd4d501461020d57600080fd5b80631703a018116101555780631703a0181461019957806320ea8d86146101b45780632a758595146101c757600080fd5b80630192337114610171578063080b91ee14610186575b600080fd5b61018461017f366004611a5d565b6103fd565b005b610184610194366004611b6c565b61063b565b6101a1610737565b6040519081526020015b60405180910390f35b6101846101c2366004611bbc565b6109ba565b6101ea6101d5366004611bbc565b60396020526000908152604090205460ff1681565b60405190151581526020016101ab565b6101a1610208366004611bf7565b610c9c565b6102496040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ab9190611ca5565b61027d7f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750881565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b6101ea6102b0366004611bbc565b610d85565b6101ea6102c3366004611cbf565b600082815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845260010190915290205460ff1692915050565b6101a161030d366004611bbc565b60009081526034602052604090205490565b610327610da9565b60405165ffffffffffff90911681526020016101ab565b6101a161034c366004611ce4565b610ed5565b61036461035f366004611bbc565b610ffe565b6040516101ab9493929190611d01565b61027d7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b6101a160385481565b6101a16103b2366004611bbc565b60346020526000908152604090205481565b6101846103d2366004611bbc565b6110dc565b6101a16103e5366004611bf7565b61133e565b6101846103f8366004611bbc565b6113d3565b33600061040982610ed5565b116104815760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e6572000000000060648201526084015b60405180910390fd5b60008381526039602052604090205460ff16158061049c5750815b6105355760405162461bcd60e51b8152602060048201526044602482018190527f5365637572697479436f756e63696c3a20746865206f75747075742068617320908201527f616c7265616479206265656e2072657175657374656420746f2062652064656c60648201527f6574656400000000000000000000000000000000000000000000000000000000608482015260a401610478565b6040805160248082018690528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe39a219c0000000000000000000000000000000000000000000000000000000017905260006105c87f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788828461133e565b90506105d3816110dc565b60008581526039602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905551869183917fc63c84660a471a970585c7cab9d0601af8e717ff0822a2ea049a3542fc5aa55a9190a35050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78816146106e65760405162461bcd60e51b815260206004820152603c60248201527f5365637572697479436f756e63696c3a206f6e6c792074686520636f6c6f737360448201527f65756d20636f6e74726163742063616e20626520612073656e646572000000006064820152608401610478565b60006106f433600084611741565b604080518681526020810186905291925082917eef5106e82a682c776fd7748be042f406a9ee0feaaea86ae9029477c2b91f2a910160405180910390a250505050565b6000806001610744610da9565b61074e9190611d77565b65ffffffffffff1690507f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff166397c3d3346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611d9e565b6040517f60c4247f000000000000000000000000000000000000000000000000000000008152600481018390527f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff16906360c4247f90602401602060405180830381865afa158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190611d9e565b7f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190611db7565b73ffffffffffffffffffffffffffffffffffffffff16638e539e8c846040518263ffffffff1660e01b815260040161095f91815260200190565b602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a09190611d9e565b6109aa9190611dd4565b6109b49190611e11565b91505090565b3360006109c682610ed5565b11610a395760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b600082815260336020526040902054829073ffffffffffffffffffffffffffffffffffffffff16610ad25760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b600083815260336020526040902054839074010000000000000000000000000000000000000000900460ff1615610b715760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d756c746953696757616c6c65743a20616c72656164792065786560448201527f63757465640000000000000000000000000000000000000000000000000000006064820152608401610478565b600084815260346020908152604080832033845260010190915290205460ff16610c035760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d756c746953696757616c6c65743a206e6f7420636f6e6669726d60448201527f65642079657400000000000000000000000000000000000000000000000000006064820152608401610478565b60008481526034602090815260408083203380855260018201909352922080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610c5090610ed5565b816000016000828254610c639190611e4c565b9091555050604051859033907f795394da21278ca39d59bb3ca00efeebdc0679acc420916c7385c2c5d942656f90600090a35050505050565b60008373ffffffffffffffffffffffffffffffffffffffff8116610d285760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4d756c746953696757616c6c65743a20616464726573732069732060448201527f6e6f742076616c696400000000000000000000000000000000000000000000006064820152608401610478565b848484610d33610da9565b604051602001610d469493929190611e63565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b6000610d8f610737565b600092835260346020526040909220549190911015919050565b60007f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a9190611db7565b73ffffffffffffffffffffffffffffffffffffffff166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ebe575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610ebb91810190611eb1565b60015b610ed057610ecb43611968565b905090565b919050565b60007f0000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750873ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f669190611db7565b6040517f9ab24eb000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529190911690639ab24eb090602401602060405180830381865afa158015610fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff89190611d9e565b92915050565b60336020526000908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff8416947401000000000000000000000000000000000000000090940460ff1693919061105990611ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461108590611ed9565b80156110d25780601f106110a7576101008083540402835291602001916110d2565b820191906000526020600020905b8154815290600101906020018083116110b557829003601f168201915b5050505050905084565b3360006110e882610ed5565b1161115b5760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b600082815260336020526040902054829073ffffffffffffffffffffffffffffffffffffffff166111f45760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b6000838152603460209081526040808320338452600181019092529091205460ff16156112895760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d756c746953696757616c6c65743a20616c726561647920636f6e60448201527f6669726d656400000000000000000000000000000000000000000000000000006064820152608401610478565b3360008181526001838101602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556112ce90610ed5565b8160000160008282546112e19190611f2c565b9091555050604051849033907ff8a17c9136a3ae33364fac05eb088a3cbafee10c1889c88593e20ee2d8e4eb8890600090a361131b610737565b6000858152603460205260409020541061133857611338846113d3565b50505050565b600033600061134c82610ed5565b116113bf5760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d756c746953696757616c6c65743a206f6e6c7920616c6c6f776560448201527f6420746f20676f7665726e616e636520746f6b656e206f776e657200000000006064820152608401610478565b6113ca858585611741565b95945050505050565b6113db6119ea565b600081815260336020526040902054819073ffffffffffffffffffffffffffffffffffffffff166114745760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20646f6573206e6f7420657869737400000000000000000000000000000000006064820152608401610478565b600082815260336020526040902054829074010000000000000000000000000000000000000000900460ff16156115135760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d756c746953696757616c6c65743a20616c72656164792065786560448201527f63757465640000000000000000000000000000000000000000000000000000006064820152608401610478565b61151c83610d85565b61158e5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d756c746953696757616c6c65743a2071756f72756d206e6f742060448201527f72656163686564000000000000000000000000000000000000000000000000006064820152608401610478565b600083815260336020526040812080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff81167401000000000000000000000000000000000000000017825590919061168f9073ffffffffffffffffffffffffffffffffffffffff165a846001015485600201805461160c90611ed9565b80601f016020809104026020016040519081016040528092919081815260200182805461163890611ed9565b80156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b5050505050611a43565b9050806117045760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e4d756c746953696757616c6c65743a2063616c6c207472616e736160448201527f6374696f6e206661696c656400000000000000000000000000000000000000006064820152608401610478565b604051859033907f4e86ad0da28cbaaaa7e93e36c43b32696e970535225b316f1b84fbf30bdc04e890600090a35050505061173e60018055565b50565b60008373ffffffffffffffffffffffffffffffffffffffff81166117cd5760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4d756c746953696757616c6c65743a20616464726573732069732060448201527f6e6f742076616c696400000000000000000000000000000000000000000000006064820152608401610478565b60006117da868686610c9c565b60008181526033602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16156118755760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d756c746953696757616c6c65743a207472616e73616374696f6e60448201527f20616c72656164792065786973747300000000000000000000000000000000006064820152608401610478565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff8089168252600060208084018281528486018b8152606086018b8152888552603390935295909220845181549351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090941694169390931791909117825592516001820155915190919060028201906119269082611f93565b505060388054600101905550604051819033907f1f50cd00b6a6fe3928bf4a5f2f23829e9a1c9396573b828b5fa14d95aae7e77590600090a395945050505050565b600065ffffffffffff8211156119e65760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152608401610478565b5090565b600260015403611a3c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610478565b6002600155565b600080600080845160208601878a8af19695505050505050565b60008060408385031215611a7057600080fd5b8235915060208301358015158114611a8757600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611ad257600080fd5b813567ffffffffffffffff80821115611aed57611aed611a92565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611b3357611b33611a92565b81604052838152866020858801011115611b4c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611b8157600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611ba657600080fd5b611bb286828701611ac1565b9150509250925092565b600060208284031215611bce57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461173e57600080fd5b600080600060608486031215611c0c57600080fd5b8335611c1781611bd5565b925060208401359150604084013567ffffffffffffffff811115611ba657600080fd5b6000815180845260005b81811015611c6057602081850181015186830182015201611c44565b81811115611c72576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611cb86020830184611c3a565b9392505050565b60008060408385031215611cd257600080fd5b823591506020830135611a8781611bd5565b600060208284031215611cf657600080fd5b8135611cb881611bd5565b73ffffffffffffffffffffffffffffffffffffffff851681528315156020820152826040820152608060608201526000611d3e6080830184611c3a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600065ffffffffffff83811690831681811015611d9657611d96611d48565b039392505050565b600060208284031215611db057600080fd5b5051919050565b600060208284031215611dc957600080fd5b8151611cb881611bd5565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e0c57611e0c611d48565b500290565b600082611e47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015611e5e57611e5e611d48565b500390565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201526000611e986080830185611c3a565b905065ffffffffffff8316606083015295945050505050565b600060208284031215611ec357600080fd5b815165ffffffffffff81168114611cb857600080fd5b600181811c90821680611eed57607f821691505b602082108103611f26577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115611f3f57611f3f611d48565b500190565b601f821115611f8e57600081815260208120601f850160051c81016020861015611f6b5750805b601f850160051c820191505b81811015611f8a57828155600101611f77565b5050505b505050565b815167ffffffffffffffff811115611fad57611fad611a92565b611fc181611fbb8454611ed9565b84611f44565b602080601f8311600181146120145760008415611fde5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611f8a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561206157888601518255948401946001909101908401612042565b508582101561209d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea164736f6c634300080f000a", - "key": "0xf5362f8385f6b0d71628d5c3bdf042baa255948d041600fd7dea8d0e13f1b41a" + "key": "0x5de0e21cdf25878b7a77849412f455c97a2362c7162876bf459d8d8e84c55255" }, "0x5fbdb2315678afecb367f032d93f642f64180aa3": { "balance": "0", @@ -229,13 +202,13 @@ "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707": { "balance": "0", "nonce": 1, - "root": "0x5c3db50cf1505aab82dc3c1ee6a630dd323884783a1075e304b6512b041afa30", + "root": "0x95d2119022b82ad0453ac48c21ab9be04087c5d933f4ed65929885216a0e1bbe", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", "0x0000000000000000000000000000000000000000000000000000000000000066": "dead", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "68b1d87f95878fe05b998f19b66f4baba5de1aed", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x0d61055ea920808012c78dfc3fd2714d5ce59f19b79b6147d59d69a3888a84f5" @@ -243,12 +216,12 @@ "0x610178da211fef7d417bc0e6fed39f05609ad788": { "balance": "0", "nonce": 1, - "root": "0xfa5ba203f41fdeb3651d3e3f3132c0abb03e1d587eb9cf694590c10238deb94d", + "root": "0xad971c74e88ef391bdd900b02535c4a73b79393b7f03c7c0cc9d53a55e1f1224", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "c3e53f4d16ae77db1c982e75a937b9f60fe63690", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "84ea74d481ee0a5332c457a4d796187f6ba67feb", "0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "03", "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "02", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", @@ -257,57 +230,99 @@ }, "key": "0xc6ca7521443eb53bb835320d8045532cc699c3564097dc83c2afa5aa02120e72" }, - "0x67d269191c92caf3cd7723f116c85e6e9bf55933": { + "0x68b1d87f95878fe05b998f19b66f4baba5de1aed": { "balance": "0", "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xd536a3ff5e8a1e99a2876997aed4eb865dff23215be0d084ff640e4f18af0d44", - "code": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80634292dc3e1461003b57806354fd4d5014610063575b600080fd5b61004e61004936600461576f565b6100ac565b60405190151581526020015b60405180910390f35b61009f6040518060400160405280600581526020017f302e312e3400000000000000000000000000000000000000000000000000000081525081565b60405161005a91906157e3565b60006100b661560c565b848460008181106100c9576100c9615856565b9050602002013570ffffffffffffffffffffffffffffffffff16816000600681106100f6576100f6615856565b602002015260888585600181811061011057610110615856565b90506020020135600116901b60888686600081811061013157610131615856565b90506020020135901c61014491906158b4565b60208201528484600281811061015c5761015c615856565b9050602002013570ffffffffffffffffffffffffffffffffff168160026006811061018957610189615856565b60200201526088858560038181106101a3576101a3615856565b90506020020135600116901b6088868660028181106101c4576101c4615856565b90506020020135901c6101d791906158b4565b606080830191909152608084811c908301526fffffffffffffffffffffffffffffffff841660a08301526040805160028082529281019091526000918291829182918291816020015b60408051808201909152600080825260208201528152602001906001900390816102205750506040805160028082526060820190925291925060009190602082015b61026a61562a565b81526020019060019003908161026257905050905061028a8d8d896104fb565b85519399509097509095509350869083906000906102aa576102aa615856565b6020026020010151600001818152505083826000815181106102ce576102ce615856565b6020026020010151602001818152505084826001815181106102f2576102f2615856565b60200260200101516000018181525050828260018151811061031657610316615856565b6020026020010151602001818152505061032e614a63565b8160008151811061034157610341615856565b6020026020010181905250610354614b0e565b8160018151811061036757610367615856565b602002602001018190525061037c8282614bb5565b6103905760009750505050505050506104f2565b8a8a60008181106103a3576103a3615856565b90506020020135826000815181106103bd576103bd615856565b6020908102919091010151528a8a60018181106103dc576103dc615856565b90506020020135826000815181106103f6576103f6615856565b602002602001015160200181815250508a8a600281811061041957610419615856565b905060200201358260018151811061043357610433615856565b6020908102919091010151528a8a600381811061045257610452615856565b905060200201358260018151811061046c5761046c615856565b60200260200101516020018181525050610484614a63565b8160008151811061049757610497615856565b60200260200101819052506104aa614b0e565b816001815181106104bd576104bd615856565b60200260200101819052506104d28282614bb5565b6104e65760009750505050505050506104f2565b60019750505050505050505b95945050505050565b60008060008061050961564f565b61051161566e565b6000806105667f2754b04f3f510d0e86a0d0e811f0fc16f92b722514e1729066d2abf90811d6f27f1816b0f9909a5a979bd34c559e57b4096bee5cce7eb668bc0a9805677f40dc858b845b6020020151614e89565b90925090506105c07f174fa57071f8f6e53fcb31a5ecc33274ec76e4e186eeb0b64255d2f314cd50b27f1c399365e85e4de2761ebcf350da85ff4518cc82f7cef64a477a7a5fd11d4a448b60015b60200201518585614eef565b90925090506106127f259a4d5cd83279b6dc9ca2008b669f82e91f23804e2524c5087a2452d52c33bd7f303abddb7ae0f35e3a6bd39314b347c3c3a433f72833dda1998ad2176258baa38b60026105b4565b90925090506106647f252b158900f31a7c0c00b924e7d3c8d61a60c5e9fd2b83251ba73d1dc0b680f57f29c8c2b3f0d74267bc2b0f9f3568838cdb0eee4719391790d93d0015c00ce5af8b60036105b4565b90925090506106b67f0c25f9f3c38b6a128d7d38c5625a3976d389b5f9f33098bb419968e4d18e150e7f21fb777462c7f4af71940423babc7f882f0c97be9620ef84f6f11974ee0edb8e8b60046105b4565b90925090506107087f2280a0fd7dbf95c450830906ffc607a373d5b9b56b9101138e925ad557eb355a7f0697ab7e9a5377e2759ab6d1283301ccae9c72bad14946a9513ee19be1ec825e8b60056105b4565b6020860152845261073b7f1545b1bf82c58ee35648bd877da9c5010193e82b036b16bf382acf31bc2ab576846000614f3b565b8351602085015161074f9190856002614f87565b600091505b600482116107ed576107db8b8b61076c8560026158fb565b6107779060006158b4565b81811061078657610786615856565b905060200201358c8c85600261079c91906158fb565b6107a79060016158b4565b8181106107b6576107b6615856565b90506020020135858560036107cb91906158fb565b6107d69060056158b4565b614f87565b816107e581615938565b925050610754565b6107f8836014614ff7565b6040850152600091505b600d8211610896576108848b8b61081a8560026158fb565b61082590600a6158b4565b81811061083457610834615856565b905060200201358c8c85600261084a91906158fb565b61085590600b6158b4565b81811061086457610864615856565b905060200201358585600361087991906158fb565b6107d69060016158b4565b8161088e81615938565b925050610802565b6108a183602b614ff7565b60608501526108b1836001614ff7565b6080850152600091505b600982116109205761090e8b8b6108d38560026158fb565b6108de9060266158b4565b8181106108ed576108ed615856565b905060200201358c8c85600261090391906158fb565b6108559060276158b4565b8161091881615938565b9250506108bb565b61092b83601f614ff7565b60a0850152600091505b6003821161099a576109888b8b61094d8560026158fb565b61095890603a6158b4565b81811061096757610967615856565b905060200201358c8c85600261097d91906158fb565b61085590603b6158b4565b8161099281615938565b925050610935565b6109a583600d614ff7565b60c0850152600091505b60468211610a1857610a068b8b6109c78560016158fb565b6109d29060426158b4565b8181106109e1576109e1615856565b90506020020135848460026109f691906158fb565b610a019060016158b4565b614f3b565b81610a1081615938565b9250506109af565b610a2383608f614ff7565b60e0850152600091505b60038211610a9257610a808b8b610a458560026158fb565b610a509060896158b4565b818110610a5f57610a5f615856565b905060200201358c8c856002610a7591906158fb565b61085590608a6158b4565b81610a8a81615938565b925050610a2d565b610a9d83600d614ff7565b61010085015260c0840151600080516020615a46833981519152907f1dba8b5bdd64ef6ce29a9039aca3c0e524395c43b9227b96c75090cc6cc7ec97900961012085015260c0840151600080516020615a46833981519152907f24a1fcd63e9f03b27281db85fe631ec8e5c466f8178a4ee94d4942b7ccd90e1c900961014085015260c0840151600080516020615a46833981519152907f20bab6e5f766b4edf82399e9c5ff0e40d4b6875321a3d8020e18521d8f5c7241900961016085015260c0840151610b70906304000000615059565b610180850152600080516020615a46833981519152610b90600182615970565b610180860151086101a08501819052600080516020615a46833981519152907f30644e66c81e03716be83b486d6feabcc7ddd0fe6cbf5e72d585d142f7829b05096101c0850152600080516020615a46833981519152610bf1600182615970565b60c0860151089150610c0b84600e5b6020020151836150c0565b6101c08501526101a0840151600080516020615a46833981519152907f07baaa5b7af9cf52cd226bc56865f0f99ef8fcd4219060f09f43e9a148b5ab68096101e0850152600080516020615a46833981519152610c887f20bab6e5f766b4edf82399e9c5ff0e40d4b6875321a3d8020e18521d8f5c724182615970565b60c0860151089150610c9b84600f610c00565b6101e08501526101a0840151600080516020615a46833981519152907f1c699f652457365bf2fc4fa2c5c63d6c4349b03cb46d633d7a2655c5da4b900a09610200850152600080516020615a46833981519152610d187f19277f31ecb5bfe8604677099c09556812b0b5c50cceb2b584098183a5a6c5c882615970565b60c0860151089150610d2b846010610c00565b6102008501526101a0840151600080516020615a46833981519152907f205cdbaf03903a5c23e60eef0df90673bc65a25762694c501e3281153b4e588a09610220850152600080516020615a46833981519152610da87f082a7bd4c0a7e4352229d332c27a160da18f0d7c651f3047df41b80345532f6e82615970565b60c0860151089150610dbb846011610c00565b6102208501526101a0840151600080516020615a46833981519152907f27db73b1a831278e143aab90091db38afdea3294c4ba05d1c697a392eb09cc7909610240850152600080516020615a46833981519152610e387f26501ebfe559ea5826f023d3e76e4b66f170cd940408eb5590a4075c80b498d682615970565b60c0860151089150610e4b846012610c00565b6102408501526101a0840151600080516020615a46833981519152907f0204822d629ab653697f028f5fa17d23ac2ba08c60c7112d98ebd28f325f0af609610260850152600080516020615a46833981519152610ec87f0d5eb4c216db2c3262de3f6a2ef71a9be95ff21a7a1a50ed069d6131e7d54e5f82615970565b60c0860151089150610edb846013610c00565b6102608501526101a0840151600080516020615a46833981519152907f2622622a60c0d9327ccf066a0f1fce13c48601b976affd1f41c2a72a9f77da6409610280850152600080516020615a46833981519152610f587f24a1fcd63e9f03b27281db85fe631ec8e5c466f8178a4ee94d4942b7ccd90e1c82615970565b60c0860151089150610f6b846014610c00565b6102808501526102008401516101e0850151600080516020615a468339815191529190089150600080516020615a46833981519152846011602002015183089150600080516020615a46833981519152846012602002015183089150600080516020615a46833981519152846013602002015183086101e085015261103c8b8b604a818110610ffc57610ffc615856565b905060200201358c8c604881811061101657611016615856565b905060200201358d8d604981811061103057611030615856565b905060200201356150f0565b915061107b8b8b604b81811061105457611054615856565b905060200201358c8c604381811061106e5761106e615856565b90506020020135846150f0565b91506110ad8b8b604c81811061109357611093615856565b905060200201358c8c604481811061106e5761106e615856565b91506110df8b8b604d8181106110c5576110c5615856565b905060200201358c8c604581811061106e5761106e615856565b91506111118b8b604e8181106110f7576110f7615856565b905060200201358c8c604681811061106e5761106e615856565b91506111438b8b604f81811061112957611129615856565b905060200201358c8c604781811061106e5761106e615856565b610200850152600080516020615a468339815191528b8b604481811061116b5761116b615856565b905060200201358c8c604381811061118557611185615856565b905060200201350991506111ca8b8b60508181106111a5576111a5615856565b9050602002013583866010605481106111c0576111c0615856565b60200201516150f0565b610200850152600080516020615a468339815191528b8b60468181106111f2576111f2615856565b905060200201358c8c604581811061120c5761120c615856565b9050602002013509915061122c8b8b60518181106111a5576111a5615856565b610200850152600080516020615a468339815191528b8b606181811061125457611254615856565b90506020020135600080516020615a468339815191526112749190615970565b6001089150600080516020615a468339815191528285600e602002015109610220850152600080516020615a468339815191528b8b60648181106112ba576112ba615856565b905060200201358c8c60648181106112d4576112d4615856565b90506020020135099150600080516020615a468339815191528b8b606481811061130057611300615856565b90506020020135600080516020615a468339815191526113209190615970565b83089150600080516020615a4683398151915282856014602002015109610240850152600080516020615a468339815191528b8b606381811061136557611365615856565b90506020020135600080516020615a468339815191526113859190615970565b8c8c606481811061139857611398615856565b90506020020135089150600080516020615a4683398151915284600e6020020151830961026085015260c08401516060850151600080516020615a468339815191529190096102a08501526101e0840151610280850151600080516020615a468339815191529190089150600080516020615a4683398151915261142a83600080516020615a46833981519152615970565b6001086101e08501526080840151600080516020615a46833981519152908c8c604381811061145b5761145b615856565b90506020020135086102c08501526114a68b8b605b81811061147f5761147f615856565b905060200201358560036054811061149957611499615856565b60200201518660166111c0565b9150600080516020615a468339815191528b8b60628181106114ca576114ca615856565b9050602002013583096102e08501526102a08401516102c0850151600080516020615a468339815191529190089150600080516020615a468339815191528b8b606181811061151b5761151b615856565b9050602002013583096102c08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526080840151600080516020615a46833981519152908c8c604481811061159057611590615856565b90506020020135086103208501526115db8b8b605c8181106115b4576115b4615856565b90506020020135856003605481106115ce576115ce615856565b60200201518660196111c0565b9150600080516020615a46833981519152846017602002015183096102e0850152610300840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846016602002015183096102c0850152610300840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526080840151600080516020615a46833981519152908c8c60458181106116a1576116a1615856565b90506020020135086103208501526116c58b8b605d8181106115b4576115b4615856565b9150600080516020615a46833981519152846017602002015183096102e0850152610300840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846016602002015183096102c0850152610300840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526102c0840151600080516020615a46833981519152906117839082615970565b6102e0860151089150600080516020615a4683398151915284600f602002015183096102c08501526102a0840151600080516020615a46833981519152907f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5290096102a08501526080840151600080516020615a46833981519152908c8c604681811061181257611812615856565b90506020020135086102e085015261185d8b8b605e81811061183657611836615856565b905060200201358560036054811061185057611850615856565b60200201518660176111c0565b9150600080516020615a468339815191528b8b606581811061188157611881615856565b9050602002013583096103008501526102a08401516102e0850151600080516020615a468339815191529190089150600080516020615a468339815191528b8b60648181106118d2576118d2615856565b9050602002013583096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526080840151600080516020615a46833981519152908c8c604781811061194757611947615856565b905060200201350861032085015261196b8b8b605f8181106115b4576115b4615856565b9150600080516020615a46833981519152846018602002015183096103008501526102a0840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846017602002015183096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526080840151600080516020615a46833981519152908c8c6042818110611a3157611a31615856565b9050602002013508610320850152611a558b8b60608181106115b4576115b4615856565b9150600080516020615a46833981519152846018602002015183096103008501526102a0840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846017602002015183096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526102e0840151600080516020615a4683398151915290611b139082615970565b610300860151089150600080516020615a4683398151915284600f602002015183096102a08501526060840151600080516020615a46833981519152908c8c6068818110611b6357611b63615856565b90506020020135089150600080516020615a46833981519152828c8c6067818110611b9057611b90615856565b90506020020135096102e08501526080840151600080516020615a46833981519152908c8c606a818110611bc657611bc6615856565b90506020020135089150600080516020615a46833981519152828560176020020151096102e0850152600080516020615a468339815191528b8b6052818110611c1157611c11615856565b905060200201358c8c6043818110611c2b57611c2b615856565b90506020020135096103008501526040840151600080516020615a468339815191529060000960408501819052610300850151600080516020615a468339815191529108610300850152600080516020615a468339815191528b8b6053818110611c9757611c97615856565b9050602002013585600260548110611cb157611cb1615856565b602002015108610320850152600080516020615a468339815191528b8b606a818110611cdf57611cdf615856565b90506020020135600080516020615a46833981519152611cff9190615970565b8c8c6068818110611d1257611d12615856565b9050602002013508610340850152600080516020615a468339815191528b8b6066818110611d4257611d42615856565b90506020020135600080516020615a46833981519152611d629190615970565b6001089150600080516020615a468339815191528285600e602002015109610360850152600080516020615a468339815191528b8b6066818110611da857611da8615856565b905060200201358c8c6066818110611dc257611dc2615856565b90506020020135099150600080516020615a468339815191528b8b6066818110611dee57611dee615856565b90506020020135600080516020615a46833981519152611e0e9190615970565b83089150600080516020615a46833981519152828560146020020151096103808501526060840151610300850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c6066818110611e7357611e73615856565b90506020020135096103008501526080840151610320850151600080516020615a468339815191529190086103208501819052610300850151600080516020615a468339815191529190099150600080516020615a46833981519152611ee783600080516020615a46833981519152615970565b6102e0860151089150600080516020615a4683398151915284600f602002015183096102e08501526103408401516101c0850151600080516020615a46833981519152919009610300850152600080516020615a468339815191528b8b6069818110611f5557611f55615856565b90506020020135600080516020615a46833981519152611f759190615970565b8c8c6068818110611f8857611f88615856565b90506020020135089150600080516020615a468339815191528285601a6020020151099150600080516020615a4683398151915284600f602002015183096103408501526060840151600080516020615a46833981519152908c8c606d818110611ff457611ff4615856565b90506020020135089150600080516020615a46833981519152828c8c606c81811061202157612021615856565b90506020020135096103a08501526080840151600080516020615a46833981519152908c8c606f81811061205757612057615856565b90506020020135089150600080516020615a468339815191528285601d6020020151096103a08501526120ca8b8b605281811061209657612096615856565b905060200201358c8c60448181106120b0576120b0615856565b90506020020135866002605481106111c0576111c0615856565b6103c0850152600080516020615a468339815191528b8b606f8181106120f2576120f2615856565b90506020020135600080516020615a468339815191526121129190615970565b8c8c606d81811061212557612125615856565b90506020020135086103e0850152600080516020615a468339815191528b8b606b81811061215557612155615856565b90506020020135600080516020615a468339815191526121759190615970565b6001089150600080516020615a468339815191528285600e602002015109610400850152600080516020615a468339815191528b8b606b8181106121bb576121bb615856565b905060200201358c8c606b8181106121d5576121d5615856565b90506020020135099150600080516020615a468339815191528b8b606b81811061220157612201615856565b90506020020135600080516020615a468339815191526122219190615970565b83089150600080516020615a468339815191528285601460200201510961042085015260608401516103c0850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c606b81811061228657612286615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a468339815191526122d283600080516020615a46833981519152615970565b6103a0860151089150600080516020615a4683398151915284600f602002015183096103a08501526103e08401516101c0850151600080516020615a468339815191529190096103c0850152600080516020615a468339815191528b8b606e81811061234057612340615856565b90506020020135600080516020615a468339815191526123609190615970565b8c8c606d81811061237357612373615856565b90506020020135089150600080516020615a468339815191528285601f6020020151099150600080516020615a4683398151915284600f602002015183096103e08501526060840151600080516020615a46833981519152908c8c60728181106123df576123df615856565b90506020020135089150600080516020615a46833981519152828c8c607181811061240c5761240c615856565b90506020020135096104408501526080840151600080516020615a46833981519152908c8c607481811061244257612442615856565b90506020020135089150600080516020615a468339815191528285602260200201510961044085015261249b8b8b605281811061248157612481615856565b905060200201358c8c60458181106120b0576120b0615856565b610460850152600080516020615a468339815191528b8b60748181106124c3576124c3615856565b90506020020135600080516020615a468339815191526124e39190615970565b8c8c60728181106124f6576124f6615856565b9050602002013508610480850152600080516020615a468339815191528b8b607081811061252657612526615856565b90506020020135600080516020615a468339815191526125469190615970565b6001089150600080516020615a468339815191528285600e6020020151096104a0850152600080516020615a468339815191528b8b607081811061258c5761258c615856565b905060200201358c8c60708181106125a6576125a6615856565b90506020020135099150600080516020615a468339815191528b8b60708181106125d2576125d2615856565b90506020020135600080516020615a468339815191526125f29190615970565b83089150600080516020615a46833981519152828560146020020151096104c08501526060840151610460850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607081811061265757612657615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a468339815191526126a383600080516020615a46833981519152615970565b610440860151089150600080516020615a4683398151915284600f602002015183096104408501526104808401516101c0850151600080516020615a46833981519152919009610460850152600080516020615a468339815191528b8b607381811061271157612711615856565b90506020020135600080516020615a468339815191526127319190615970565b8c8c607281811061274457612744615856565b90506020020135089150600080516020615a46833981519152828560246020020151099150600080516020615a4683398151915284600f602002015183096104808501526060840151600080516020615a46833981519152908c8c60778181106127b0576127b0615856565b90506020020135089150600080516020615a46833981519152828c8c60768181106127dd576127dd615856565b90506020020135096104e08501526080840151600080516020615a46833981519152908c8c607981811061281357612813615856565b90506020020135089150600080516020615a46833981519152828560276020020151096104e085015261286c8b8b605281811061285257612852615856565b905060200201358c8c60468181106120b0576120b0615856565b610500850152600080516020615a468339815191528b8b607981811061289457612894615856565b90506020020135600080516020615a468339815191526128b49190615970565b8c8c60778181106128c7576128c7615856565b9050602002013508610520850152600080516020615a468339815191528b8b60758181106128f7576128f7615856565b90506020020135600080516020615a468339815191526129179190615970565b6001089150600080516020615a468339815191528285600e602002015109610540850152600080516020615a468339815191528b8b607581811061295d5761295d615856565b905060200201358c8c607581811061297757612977615856565b90506020020135099150600080516020615a468339815191528b8b60758181106129a3576129a3615856565b90506020020135600080516020615a468339815191526129c39190615970565b83089150600080516020615a46833981519152828560146020020151096105608501526060840151610500850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c6075818110612a2857612a28615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a46833981519152612a7483600080516020615a46833981519152615970565b6104e0860151089150600080516020615a4683398151915284600f602002015183096103208501526105208401516101c0850151600080516020615a468339815191529190096104e0850152600080516020615a468339815191528b8b6078818110612ae257612ae2615856565b90506020020135600080516020615a46833981519152612b029190615970565b8c8c6077818110612b1557612b15615856565b90506020020135089150600080516020615a46833981519152828560296020020151099150600080516020615a4683398151915284600f602002015183096105008501526060840151600080516020615a46833981519152908c8c607c818110612b8157612b81615856565b90506020020135089150600080516020615a46833981519152828c8c607b818110612bae57612bae615856565b90506020020135096105208501526080840151600080516020615a46833981519152908c8c607e818110612be457612be4615856565b90506020020135089150600080516020615a4683398151915282856029602002015109610520850152612c3d8b8b6054818110612c2357612c23615856565b905060200201358c8c60438181106120b0576120b0615856565b610580850152600080516020615a468339815191528b8b6055818110612c6557612c65615856565b9050602002013585600260548110612c7f57612c7f615856565b6020020151086105a0850152600080516020615a468339815191528b8b607e818110612cad57612cad615856565b90506020020135600080516020615a46833981519152612ccd9190615970565b8c8c607c818110612ce057612ce0615856565b90506020020135086105c0850152600080516020615a468339815191528b8b607a818110612d1057612d10615856565b90506020020135600080516020615a46833981519152612d309190615970565b6001089150600080516020615a468339815191528285600e6020020151096105e0850152600080516020615a468339815191528b8b607a818110612d7657612d76615856565b905060200201358c8c607a818110612d9057612d90615856565b90506020020135099150600080516020615a468339815191528b8b607a818110612dbc57612dbc615856565b90506020020135600080516020615a46833981519152612ddc9190615970565b83089150600080516020615a46833981519152828560146020020151096106008501526060840151610580850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607a818110612e4157612e41615856565b905060200201350961058085015260808401516105a0850151600080516020615a468339815191529190089150600080516020615a468339815191528285602c6020020151099150600080516020615a46833981519152612eb083600080516020615a46833981519152615970565b610520860151089150600080516020615a4683398151915284600f602002015183096105208501526105c08401516101c0850151600080516020615a46833981519152919009610580850152600080516020615a468339815191528b8b607d818110612f1e57612f1e615856565b90506020020135600080516020615a46833981519152612f3e9190615970565b8c8c607c818110612f5157612f51615856565b90506020020135089150600080516020615a468339815191528285602e6020020151099150600080516020615a4683398151915284600f602002015183096105a08501526060840151600080516020615a46833981519152908c8c6081818110612fbd57612fbd615856565b90506020020135089150600080516020615a46833981519152828c8c6080818110612fea57612fea615856565b90506020020135096105c08501526080840151600080516020615a46833981519152908c8c608381811061302057613020615856565b90506020020135089150600080516020615a468339815191528285602e6020020151096105c085015261305f8b8b6056818110612c2357612c23615856565b610620850152600080516020615a468339815191528b8b605781811061308757613087615856565b90506020020135856002605481106130a1576130a1615856565b602002015108610640850152600080516020615a468339815191528b8b60838181106130cf576130cf615856565b90506020020135600080516020615a468339815191526130ef9190615970565b8c8c608181811061310257613102615856565b9050602002013508610660850152600080516020615a468339815191528b8b607f81811061313257613132615856565b90506020020135600080516020615a468339815191526131529190615970565b6001089150600080516020615a468339815191528285600e602002015109610680850152600080516020615a468339815191528b8b607f81811061319857613198615856565b905060200201358c8c607f8181106131b2576131b2615856565b90506020020135099150600080516020615a468339815191528b8b607f8181106131de576131de615856565b90506020020135600080516020615a468339815191526131fe9190615970565b83089150600080516020615a46833981519152828560146020020151096106a08501526060840151610620850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607f81811061326357613263615856565b90506020020135096106208501526080840151610640850151600080516020615a468339815191529190089150600080516020615a46833981519152828560316020020151099150600080516020615a468339815191526132d283600080516020615a46833981519152615970565b6105c0860151089150600080516020615a4683398151915284600f602002015183096105c08501526106608401516101c0850151600080516020615a46833981519152919009610620850152600080516020615a468339815191528b8b608281811061334057613340615856565b90506020020135600080516020615a468339815191526133609190615970565b8c8c608181811061337357613373615856565b90506020020135089150600080516020615a46833981519152828560336020020151099150600080516020615a4683398151915284600f602002015183096106408501526060840151600080516020615a46833981519152908c8c60868181106133df576133df615856565b90506020020135089150600080516020615a46833981519152828c8c608581811061340c5761340c615856565b90506020020135096106608501526080840151600080516020615a46833981519152908c8c608881811061344257613442615856565b90506020020135089150600080516020615a46833981519152828560336020020151096106608501526134818b8b6058818110612c2357612c23615856565b6106c0850152600080516020615a468339815191528b8b60598181106134a9576134a9615856565b90506020020135856002605481106134c3576134c3615856565b6020020151086040850152600080516020615a468339815191528b8b60888181106134f0576134f0615856565b90506020020135600080516020615a468339815191526135109190615970565b8c8c608681811061352357613523615856565b90506020020135086106e0850152600080516020615a468339815191528b8b608481811061355357613553615856565b90506020020135600080516020615a468339815191526135739190615970565b6001089150600080516020615a468339815191528285600e602002015109610700850152600080516020615a468339815191528b8b60848181106135b9576135b9615856565b905060200201358c8c60848181106135d3576135d3615856565b90506020020135099150600080516020615a468339815191528b8b60848181106135ff576135ff615856565b90506020020135600080516020615a4683398151915261361f9190615970565b83089150600080516020615a468339815191528285601460200201510961028085015260608401516106c0850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c608481811061368457613684615856565b9050602002013509606085015260808401516040850151600080516020615a468339815191529190089150600080516020615a46833981519152828560036020020151099150600080516020615a468339815191526136f183600080516020615a46833981519152615970565b610660860151089150600080516020615a4683398151915284600f6020020151830960408501526106e08401516101c0850151600080516020615a468339815191529190096060850152600080516020615a468339815191528b8b608781811061375d5761375d615856565b90506020020135600080516020615a4683398151915261377d9190615970565b8c8c608681811061379057613790615856565b90506020020135089150600080516020615a46833981519152828560376020020151099150600080516020615a4683398151915284600f60200201518309608085015260a08401516137e69060008660106111c0565b915061381b8480600560200201517f35342d2c29302f2827192b2a24232226251f1e1d21201a18171c1b15161312118561511d565b915061383984806005602002015168ff040302143832312e8561511d565b915061384c8285600d60200201516150c0565b6040850152610100840151600080516020615a4683398151915290800960608501819052610100850151600080516020615a46833981519152910960808501526138d68b8b608f8181106138a2576138a2615856565b905060200201358c8c60908181106138bc576138bc615856565b905060200201358660046054811061055c5761055c615856565b90925090506138ef848c8c65ffff088b038d86866151a0565b909250905061393282828d8d608981811061390c5761390c615856565b905060200201358e8e608a81811061392657613926615856565b905060200201356152a8565b6101e08601526101c08501526101608401516080850151600080516020615a4683398151915291900960a085015260e08401516080850151600080516020615a46833981519152919009610160850181905260e0850151600080516020615a4683398151915291096101a0850181905260e0850151600080516020615a468339815191529109610200850181905260e0850151600080516020615a468339815191529109610220850181905260e0850151600080516020615a468339815191529109610240850181905260e0850151600080516020615a468339815191529109610260850152600080516020615a468339815191528b8b6087818110613a3a57613a3a615856565b9050602002013585601360548110613a5457613a54615856565b6020020151099150613a75848c8c6bffff0b6e0d731078117d128286615316565b9150613ab28b8b6069818110613a8d57613a8d615856565b9050602002013585600460548110613aa757613aa7615856565b6020020151846150f0565b6102808501526101408401516060850151600080516020615a46833981519152919009610140850152613b188b8b6063818110613af157613af1615856565b9050602002013585600360548110613b0b57613b0b615856565b60200201518660146111c0565b610280850152610120840151610100850151600080516020615a4683398151915291900961012085015260e0840151610100850151600080516020615a468339815191529190096102a0850152600091505b6008821015613c1957600080516020615a4683398151915284613b8e8460006158fb565b613b999060076158b4565b60548110613ba957613ba9615856565b602002015185613bba8560016158fb565b613bc59060156158b4565b60548110613bd557613bd5615856565b60200201510984613be78460016158fb565b613bf29060166158b4565b60548110613c0257613c02615856565b602002015281613c1181615938565b925050613b6a565b600080516020615a468339815191528b8b6085818110613c3b57613c3b615856565b9050602002013585601d60548110613c5557613c55615856565b6020020151099150613c7e848c8c73ffff0848156216651767186c19711a761b7b1c8086615316565b9150600080516020615a46833981519152828560146020020151086102808501526102a08401516060850151600080516020615a46833981519152919008606085015260e0840151600080516020615a468339815191529080096102a0850181905260e0850151600080516020615a4683398151915291096103c0850152600091505b6032821015613db057600080516020615a4683398151915284613d258460006158fb565b613d309060076158b4565b60548110613d4057613d40615856565b602002015185613d518560016158fb565b613d5c90601e6158b4565b60548110613d6c57613d6c615856565b60200201510984613d7e8460016158fb565b613d8990601f6158b4565b60548110613d9957613d99615856565b602002015281613da881615938565b925050613d01565b600080516020615a468339815191528b8b605a818110613dd257613dd2615856565b9050602002013585605060548110613dec57613dec615856565b602002015109610a208501526101808401516109e0850151600080516020615a46833981519152919009610a408501819052610180850151600080516020615a468339815191529109610a608501819052610180850151600080516020615a4683398151915291096101808501526109e08401516040850151613e7291908660516111c0565b9150613ea1848c8c7f3f50405141524253435444554556465747584859495b4a5c4b5d4c5e4d5f4e6086615316565b9150613ed0848c8c7f2f7a307c317e327f338134833584368637883849394a3a4b3b4c3c4d3d4e3e4f86615316565b9150613eff848c8c7f1f4620472161226423662468256a266b276d286f29702a722b742c752d772e7986615316565b9150613f16848c8c67ffff074315441e4586615316565b9150600080516020615a468339815191528b8b6042818110613f3a57613f3a615856565b9050602002013583089150600080516020615a468339815191528285601460200201510860408501526106c0840151610260850151600080516020615a468339815191529190086102608501526106a08401516103a0850151600080516020615a46833981519152919008610280850152610660840151610240850151600080516020615a46833981519152919008610240850152610640840151610380850151600080516020615a46833981519152919008610380850152610600840151610220850151600080516020615a468339815191529190086102208501526105e0840151610360850151600080516020615a468339815191529190086103608501526105a0840151610200850151600080516020615a46833981519152919008610200850152610580840151610340850151600080516020615a468339815191529190086103408501526105408401516101a0850151600080516020615a468339815191529190086101a0850152610520840151610320850151600080516020615a468339815191529190086103208501526104e0840151610160850151600080516020615a468339815191529190086101608501526104c0840151610300850151600080516020615a468339815191529190086103008501526104808401516080850151600080516020615a4683398151915291900860808501526104608401516102e0850151600080516020615a468339815191529190086102e08501526104408401516102c0850151600080516020615a468339815191529190086102c08501526104208401516060850151600080516020615a468339815191529190086060850152610400840151610100850151600080516020615a4683398151915291900861010085015261420d8b8b608f8181106141d9576141d9615856565b905060200201358c8c60908181106141f3576141f3615856565b905060200201358660056054811061055c5761055c615856565b9092509050614240848c8c7f182c192e1a301b321c341436098b03260a8d040a0b0e0d121016111a121e132286866151a0565b9092509050614267848c8c73ffff4f3a523c533e0c405038068908081628172a86866151a0565b90925090506142b97f0c7334a3b9a24f18780f368cf4e581f3ee206c995efcf2ad1d591075f34800d67f07c9c852e7cdf6ec7b0d7a9c71343fcc823836563a1eafe2964a7db347c644b486604e6105b4565b909250905061430b7f303399d69867569f44829166dbc811aec4050eb4351f07ce94137b2ea62615b77f21affd1d03a9a9e428842d8ef3da673c25888eba270e2de56fc7598de155776f86604d6105b4565b909250905061435d7f0f8286c37689450e1171ff5f25b1fc58521cf3470ae9ea771918ecbee2094d847f1d371d5b9d97c37a0f1b8f3492dda158aa2dad81c52f7f2a512f63e59c705bed86604c6105b4565b90925090506143af7f139f3c97001d2d25928cab388bfe3f941f47bb46ef39095d1b0bc055185fa57f7f24d470b72fd0eecea0f5c65668c33110a005984460d7304582d1fcdd211df76886604b6105b4565b90925090506144017f1f9f5ab677532016ef9475fd5d43659678db3a699ad3d52e85c3f6ef2b3098c17f2cd62bc191e831701421d97bd158995f0f23e8645c14aa050602e958dd503b4786604a6105b4565b90925090506144537f244e8af4f5d8644cfe7df55d0735c26e229afa7c7b92a39020bd02d8c8677b037f15a6dd332a6f0e9a9b643e86173dc6f99f4dc4bc18b215e0ac6a22e941fd99728660496105b4565b90925090506144a57f2bf75d9dd944249cd720ee71585980774cb83905b860feb5af3da42ca043b1157f07b4ff44a8e4250bf3ce16c06e8430b585a7a1e85243febe565a7929db37cc9f8660486105b4565b90925090506144f77f20353da49405dca58c00c961510a2838b2bdeb06a053b8ed5931b8490967135b7f1ba4067d380f1db72eed4990fed1eb78d22addd5044bbea7d480f4e058d2fd088660476105b4565b90925090506145497f25d344a083be7e69cb907b8705b3bab3417d4a23f06d43ca7b287028a88ec5837f2c03f591ec6858cdff27cadaac1a67a1dc9ab7877f898686efe7033e7fd02a168660466105b4565b909250905061459b7f19d9668da068ddb43d2e3d2c31214fefc028b0df0501ff8604575dafda6f1ae77f155edc361fbe4a694d9c6e3124a1c13d3180f39ab1af7521b35b6e2bb653b3da8660456105b4565b90925090506145ed7f2bf75d9dd944249cd720ee71585980774cb83905b860feb5af3da42ca043b1157f07b4ff44a8e4250bf3ce16c06e8430b585a7a1e85243febe565a7929db37cc9f8660446105b4565b909250905061463f7f1936a9539ed59e0f2c4665a13ee2bdf544ee1359b2a47f4f8d3666540d5be89e7f15efeffb7af6c45498a8d4779c0a2ca3a116a96348e8e51392ef924d6ab7dbfd8660436105b4565b90925090506146917f2fd08ae291ca0c95ada3f562b9f9be896737fd57493c4cefa087979abda4d2d67f04a6506069e2d39e944abcc54e70e881ccdd429ed4c1017fbe1099efeb70465f8660426105b4565b90925090506146e37f0141bcf8e5540e9f5aa60645bf265946a71874beb52ddca1a0df8df6bbc0e0fa7f14e8506ee1911816df221897db48964bf861b4abecdb9da24afbcf9b0c4d18b88660416105b4565b90925090506147357f2ea5cb6082a4df4a36091fef8188e8e0f8d4b6e1e37707746707d99f548aef427f1766582f9e1ec20bed2f0d93154ae653f3089c934fca9f7b87192ed78b760c8d8660406105b4565b90925090506147877f136635b335232ad0bb9ec1dd165740fb1f32464fd47c68a84fa6844059faf5217f090e5e51625ce01fec4c2647771bd32f228b8ea580c498822ee58d2a607b892186603f6105b4565b90925090506147d97f143877d82d6f4d6a6e18301f05defdfa526f0d95977cec3c32e231b1aa0a81567f1906928f9c2d199d9062ece64e8dbff97e27ab2d8326b40e7ea77a950b21ddd986603e6105b4565b909250905061482b7f27ebdd749900c0af821c3d7bfee6f6216c2a101d247a8dd93db6590692d1689a7f2da8ee70127f67344aded9134ceff263c69790b3d020786c616f76349b19aef386603d6105b4565b909250905061487d7f148ff3c1217e5849d79a5ad4e55e1f66e553e0c24a335730306b58c35f0be7647f29d393499e332436f2578d1e95f1aa58d1539c3bd0820157a6e9ed12a906301586603c6105b4565b90925090506148cf7f1d0246b7158fd8adee20544a12a9c7037653efa8e5ca0da702f29744a3cc595d7f0d1c5bd48350de3282920c3453c6da531a1fd6fce81bacfd5e5289123458d67586603b6105b4565b90925090506149217f0a690884507cd616b1598e45913a0478135225c4a1ed39eb4d22552feff5f3b07f119e66501b5ff7f5a2d09bce4b7b1fe0e078c6764867222ed23ba35f317f200086603a6105b4565b90925090506149737f18cfb2048fda3eb8a660efd7855014c0500be2531cbcd7e163455fe2b1972ce37f0e835d2d22b6c1e675e76f544bb7aea2e74b04659f91ecf97eccca4024c493268660396105b4565b90925090506149c57f15ae1a8e3b993dd9aadc8f9086d1ea239d4cd5c09cfa445f337e1b60d7b3eb877f2c702ede24f9db8c8c9a439975facd3872a888c5f84f58b3b5f5a5623bac945a8660386105b4565b90925090506149f0848c8c77ffff070015021e041f06250c28102b142e18311c3420372486866151a0565b85516020870151929450909250614a0a91849184916152a8565b60208601528452614a1f60016002868161055c565b85516020870151929450909250614a379184846153b8565b602086018190528186526101c08601516101e090960151959d959c50909a509850929650505050505050565b614a6b61562a565b80517f186282957db913abd99f91db59fe69922e95040603ef44c0bd7aa3adeef8f5ac905280517f17944351223333f260ddc3b4af45191b856689eda9eab5cbcddbbe570ce860d2602091820152810180517f298adc7396bd3865cbf6d6df91bae406694e6d2215baa893bdeadb63052895f49052517f297772d34bc9aa8ae56162486363ffe417b02dc7e8c207fc2cc20203e67a02ad9060015b602002015290565b614b1661562a565b80517f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2905280517f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602091820152810180517f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec9052517f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d906001614b06565b60008083516006614bc691906158fb565b905060008167ffffffffffffffff811115614be357614be36158cc565b604051908082528060200260200182016040528015614c0c578160200160208202803683370190505b509050614c1761568d565b60008551875114614c2757600080fd5b60005b8751811015614e6057878181518110614c4557614c45615856565b60200260200101516000015184826006614c5f91906158fb565b614c6a9060006158b4565b81518110614c7a57614c7a615856565b602002602001018181525050878181518110614c9857614c98615856565b60200260200101516020015184826006614cb291906158fb565b614cbd9060016158b4565b81518110614ccd57614ccd615856565b602002602001018181525050868181518110614ceb57614ceb615856565b6020908102919091010151515184614d048360066158fb565b614d0f9060026158b4565b81518110614d1f57614d1f615856565b602002602001018181525050868181518110614d3d57614d3d615856565b60209081029190910181015151015184614d588360066158fb565b614d639060036158b4565b81518110614d7357614d73615856565b602002602001018181525050868181518110614d9157614d91615856565b602002602001015160200151600060028110614daf57614daf615856565b602002015184614dc08360066158fb565b614dcb9060046158b4565b81518110614ddb57614ddb615856565b602002602001018181525050868181518110614df957614df9615856565b602002602001015160200151600160028110614e1757614e17615856565b602002015184614e288360066158fb565b614e339060056158b4565b81518110614e4357614e43615856565b602090810291909101015280614e5881615938565b915050614c2a565b50602082602086026020860160085afa905080614e7c57600080fd5b5051151595945050505050565b600080614e946156ab565b6000614eb3604051806040016040528060008152602001600081525090565b8783526020830187905260408084018790528160608560075afa915081614ed957600080fd5b8051602090910151909890975095505050505050565b600080614efa6156c9565b87815260208101879052604081018690526060810185905260808101849052614f22816153fd565b6060810151608090910151909890975095505050505050565b60028282614f4881615938565b935060908110614f5a57614f5a615856565b6020020152828282614f6b81615938565b935060908110614f7d57614f7d615856565b6020020152505050565b60018282614f9481615938565b935060908110614fa657614fa6615856565b6020020152838282614fb781615938565b935060908110614fc957614fc9615856565b6020020152828282614fda81615938565b935060908110614fec57614fec615856565b602002015250505050565b600080838363ffffffff166090811061501257615012615856565b60200201818152505060006150448484602061502e9190615987565b6150399060016159b3565b63ffffffff16615438565b5190506150508161546e565b93525090919050565b600061506361560c565b61506b61568d565b6020808352828101819052604083018190526060830186905260808301859052600080516020615a4683398151915260a08401526000908260c08560055afa9050806150b657600080fd5b5051949350505050565b6000816000036150cf57600080fd5b600080516020615a468339815191526150e7836155e2565b84099392505050565b6000600080516020615a4683398151915282600080516020615a4683398151915285870908949350505050565b6000805b60208110156151965760ff80851690811461517d5760089490941c93600080516020615a4683398151915287826054811061515e5761515e615856565b6020020151600080516020615a46833981519152868909089350615183565b50615196565b5061518f6001826158b4565b9050615121565b5090949350505050565b6000806151ab6156c9565b606081018590526080810184905260005b602081101561528d5760ff80881690811461527457601088901c9760081c60ff168a8a838181106151ef576151ef615856565b905060200201358460006005811061520957615209615856565b60200201528a8a61521b8460016158b4565b81811061522a5761522a615856565b905060200201358460016005811061524457615244615856565b60200201528b816054811061525b5761525b615856565b6020020151604085015261526e846153fd565b5061527a565b5061528d565b506152866002826158b4565b90506151bc565b50606081015160809091015190999098509650505050505050565b60008060006152ca604051806040016040528060008152602001600081525090565b6152d26156e7565b888152602081018890526040808201889052606082018790528260808360065afa9250826152ff57600080fd5b508051602090910151909890975095505050505050565b6000805b60208110156153ad5760ff80851690811461539457601085901c9460081c60ff16600080516020615a4683398151915285600080516020615a468339815191528b846054811061536c5761536c615856565b60200201518b8b8781811061538357615383615856565b90506020020135090894505061539a565b506153ad565b506153a66002826158b4565b905061531a565b509095945050505050565b6000806153f08686866153eb877f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47615970565b6152a8565b9150915094509492505050565b600060406020830160608460075afa90508061541857600080fd5b60406060830160806020850160065afa90508061543457600080fd5b5050565b61544061568d565b6000602082848660026107d05a03fa9050808061545957fe5b5080615467576154676159db565b5092915050565b6000816155c18160008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b6040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c179050608081901b608082901c179050919050565b90506155db600080516020615a4683398151915282615a0a565b9392505050565b6000615606826156016002600080516020615a46833981519152615970565b615059565b92915050565b6040518060c001604052806006906020820280368337509192915050565b604051806040016040528061563d615705565b815260200161564a615705565b905290565b60405180610a8001604052806054906020820280368337509192915050565b6040518061120001604052806090906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60008083601f84011261573557600080fd5b50813567ffffffffffffffff81111561574d57600080fd5b6020830191508360208260051b850101111561576857600080fd5b9250929050565b60008060008060006060868803121561578757600080fd5b853567ffffffffffffffff8082111561579f57600080fd5b6157ab89838a01615723565b909750955060208801359150808211156157c457600080fd5b506157d188828901615723565b96999598509660400135949350505050565b600060208083528351808285015260005b81811015615810578581018301518582016040015282016157f4565b81811115615822576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156158c7576158c7615885565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561593357615933615885565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361596957615969615885565b5060010190565b60008282101561598257615982615885565b500390565b600063ffffffff808316818516818304811182151516156159aa576159aa615885565b02949350505050565b600063ffffffff8083168185168083038211156159d2576159d2615885565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082615a40577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300080f000a", - "key": "0x783e0404bdc19206cfb81beed0844473471141076bd03986d5bc87bc38ba4739" + "root": "0xb45fafbc41242521fb222c114d80647c0858e2a27d7574ef837788f7a78cdaaa", + "codeHash": "0x02898aaa7c1add99de89629303000fbd799dcaaec7d7380cb042e86d96a9fd75", + "code": "0x60806040526004361061015f5760003560e01c80636e296e45116100c0578063a4e7f8bd11610074578063b28ade2511610059578063b28ade25146103d2578063d764ad0b146103f2578063ecc704281461040557600080fd5b8063a4e7f8bd14610372578063b1b1b209146103a257600080fd5b806383a74074116100a557806383a74074146103275780638cbeeef2146102575780639fce812c1461033e57600080fd5b80636e296e45146102fd5780638129fc1c1461031257600080fd5b80633f827a5a1161011757806354fd4d50116100fc57806354fd4d501461026d5780635644cfdf146102c35780635c975abb146102d957600080fd5b80633f827a5a1461022f5780634c1d6a691461025757600080fd5b80630ff754ea116101485780630ff754ea146101ac5780632828d7e8146102055780633dbb202b1461021a57600080fd5b8063028f85f7146101645780630c56849814610197575b600080fd5b34801561017057600080fd5b50610179601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101a357600080fd5b50610179603f81565b3480156101b857600080fd5b506101e07f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018e565b34801561021157600080fd5b50610179604081565b61022d610228366004611563565b610443565b005b34801561023b57600080fd5b50610244600081565b60405161ffff909116815260200161018e565b34801561026357600080fd5b50610179619c4081565b34801561027957600080fd5b506102b66040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161018e9190611635565b3480156102cf57600080fd5b5061017961138881565b3480156102e557600080fd5b5060335460ff165b604051901515815260200161018e565b34801561030957600080fd5b506101e0610631565b34801561031e57600080fd5b5061022d61071d565b34801561033357600080fd5b5061017962030d4081565b34801561034a57600080fd5b506101e07f000000000000000000000000420000000000000000000000000000000000000481565b34801561037e57600080fd5b506102ed61038d36600461164f565b60686020526000908152604090205460ff1681565b3480156103ae57600080fd5b506102ed6103bd36600461164f565b60656020526000908152604090205460ff1681565b3480156103de57600080fd5b506101796103ed366004611668565b6108af565b61022d6104003660046116bc565b61091d565b34801561041157600080fd5b506067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660405190815260200161018e565b61055b7f00000000000000000000000042000000000000000000000000000000000000046104728585856108af565b347fd764ad0b000000000000000000000000000000000000000000000000000000006104bd6067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b338a34898c8c6040516024016104d9979695949392919061178b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110d0565b3373ffffffffffffffffffffffffffffffffffffffff85167fdd28cef75ff18fb538e43317144469f339702f973eace2bc808f2acc37db310e3486866105c06067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b876040516105d29594939291906117ea565b60405180910390a35050606780547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60665460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060665473ffffffffffffffffffffffffffffffffffffffff1690565b600054610100900460ff161580801561073d5750600054600160ff909116105b806107575750303b158015610757575060005460ff166001145b6107e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106f7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561084157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610849611185565b80156108ac57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000611388619c4080603f6108cb604063ffffffff8816611851565b6108d59190611881565b6108e0601088611851565b6108ed9062030d406118cf565b6108f791906118cf565b61090191906118cf565b61090b91906118cf565b61091591906118cf565b949350505050565b60f087901c600181106109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206d6573736167657320697320737570706f7274656420617420746860648201527f69732074696d6500000000000000000000000000000000000000000000000000608482015260a4016106f7565b6000610a1e898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061124a92505050565b9050610a2861126d565b15610a6057853414610a3c57610a3c6118fb565b60008181526068602052604090205460ff1615610a5b57610a5b6118fb565b610bb2565b3415610b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a4016106f7565b60008181526068602052604090205460ff16610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016106f7565b610bbb87611391565b15610c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a4016106f7565b60008181526065602052604090205460ff1615610d0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016106f7565b610d2e85610d1f611388619c406118cf565b67ffffffffffffffff16611408565b1580610d54575060665473ffffffffffffffffffffffffffffffffffffffff1661dead14155b15610e6d5760008181526068602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201610e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016106f7565b50506110a6565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a161790556000610efe88619c405a610ec1919061192a565b8988888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142692505050565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905590508015610f955760008281526065602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a26110a2565b60008281526068602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016106f7565b5050505b50505050505050565b905090565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fe9e05c4200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0169063e9e05c4290849061114d908890839089906000908990600401611941565b6000604051808303818588803b15801561116657600080fd5b505af115801561117a573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff1661121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106f7565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b600061125a878787878787611440565b8051906020012090509695505050505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0161480156110af57507f000000000000000000000000420000000000000000000000000000000000000473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e073ffffffffffffffffffffffffffffffffffffffff16639bf62d826040518163ffffffff1660e01b8152600401602060405180830381865afa158015611351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113759190611999565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600073ffffffffffffffffffffffffffffffffffffffff821630148061140257507f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b606086868686868660405160240161145d969594939291906119b6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108ac57600080fd5b60008083601f84011261151357600080fd5b50813567ffffffffffffffff81111561152b57600080fd5b60208301915083602082850101111561154357600080fd5b9250929050565b803563ffffffff8116811461155e57600080fd5b919050565b6000806000806060858703121561157957600080fd5b8435611584816114df565b9350602085013567ffffffffffffffff8111156115a057600080fd5b6115ac87828801611501565b90945092506115bf90506040860161154a565b905092959194509250565b6000815180845260005b818110156115f0576020818501810151868301820152016115d4565b81811115611602576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061164860208301846115ca565b9392505050565b60006020828403121561166157600080fd5b5035919050565b60008060006040848603121561167d57600080fd5b833567ffffffffffffffff81111561169457600080fd5b6116a086828701611501565b90945092506116b390506020850161154a565b90509250925092565b600080600080600080600060c0888a0312156116d757600080fd5b8735965060208801356116e9816114df565b955060408801356116f9816114df565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561172357600080fd5b61172f8a828b01611501565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a08301526117dd60c083018486611742565b9998505050505050505050565b858152608060208201526000611804608083018688611742565b905083604083015263ffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168183048111821515161561187857611878611822565b02949350505050565b600067ffffffffffffffff808416806118c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff8083168185168083038211156118f2576118f2611822565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008282101561193c5761193c611822565b500390565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015267ffffffffffffffff84166040820152821515606082015260a06080820152600061198e60a08301846115ca565b979650505050505050565b6000602082840312156119ab57600080fd5b8151611648816114df565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611a0160c08301846115ca565b9897505050505050505056fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000066": "dead" + }, + "key": "0x82bbeea1b838affd4d92ca0d2b311b02fb5ed4b7666c5e3b7f08aaa3053c9809" + }, + "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f": { + "balance": "0", + "nonce": 1, + "root": "0xa7abcc6e1e344abdd761f5e3b08dfacd08b68a6533969baeeaf61e80fde624e4", + "codeHash": "0x3d388f39ad810b96662b6c3930aef3f0bddb6652fbdb8d2bfcbdee814a791f59", + "code": "0x6080604052600436106101a05760003560e01c806370a08231116100e1578063ab91f1901161008a578063d38dc7ee11610064578063d38dc7ee1461053d578063d8fe76421461055d578063dd215c5d146105ad578063facd743b146105cd57600080fd5b8063ab91f190146104d1578063b7d636a514610501578063d0e30db01461053557600080fd5b80638f09ade4116100bb5780638f09ade414610468578063946765fd14610488578063a51c9ace146104bc57600080fd5b806370a08231146103e75780638129fc1c1461041d57806382dae3aa1461043257600080fd5b806336b834691161014e57806354fd4d501161012857806354fd4d50146103285780635a5447421461037e5780635df6a6bc1461039e5780636641ea08146103b357600080fd5b806336b83469146102bf5780633a549046146102df5780633ee4d4a3146102f457600080fd5b8063205c28781161017f578063205c2878146102495780632e1a7d4d1461026b578063360864171461028b57600080fd5b80621c2ff6146101a55780630f43a677146101f65780630ff754ea14610215575b600080fd5b3480156101b157600080fd5b506101d97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020257600080fd5b506036545b6040519081526020016101ed565b34801561022157600080fd5b506101d97f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e081565b34801561025557600080fd5b5061026961026436600461233c565b6105fd565b005b34801561027757600080fd5b50610269610286366004612368565b610730565b34801561029757600080fd5b506101d97f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b3480156102cb57600080fd5b506102696102da366004612381565b6107e1565b3480156102eb57600080fd5b506101d9610a52565b34801561030057600080fd5b506101d97f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c881565b34801561033457600080fd5b506103716040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516101ed919061242e565b34801561038a57600080fd5b50610269610399366004612441565b610c10565b3480156103aa57600080fd5b50610269610eb9565b3480156103bf57600080fd5b506102077f000000000000000000000000000000000000000000000000000000000000000481565b3480156103f357600080fd5b50610207610402366004612471565b6001600160a01b031660009081526033602052604090205490565b34801561042957600080fd5b50610269610f38565b34801561043e57600080fd5b50610447601481565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ed565b34801561047457600080fd5b50610447610483366004612441565b6110af565b34801561049457600080fd5b506102077f000000000000000000000000000000000000000000000000000000000000000a81565b3480156104c857600080fd5b50610447606481565b3480156104dd57600080fd5b506104e8620186a081565b60405167ffffffffffffffff90911681526020016101ed565b34801561050d57600080fd5b506104477f000000000000000000000000000000000000000000000000000000000000000181565b61026961115e565b34801561054957600080fd5b506102696105583660046124ac565b61116a565b34801561056957600080fd5b5061057d610578366004612368565b611443565b6040805182516fffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101ed565b3480156105b957600080fd5b506102696105c8366004612441565b611562565b3480156105d957600080fd5b506105ed6105e8366004612471565b6118c8565b60405190151581526020016101ed565b61060561194e565b6001600160a01b0382166106865760405162461bcd60e51b815260206004820152603260248201527f56616c696461746f72506f6f6c3a2063616e6e6f74207769746864726177207460448201527f6f20746865207a65726f2061646472657373000000000000000000000000000060648201526084015b60405180910390fd5b61069033826119a7565b60006106ad835a8460405180602001604052806000815250611bf9565b9050806107225760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161067d565b5061072c60018055565b5050565b61073861194e565b61074233826119a7565b600061075f335a8460405180602001604052806000815250611bf9565b9050806107d45760405162461bcd60e51b815260206004820152602260248201527f56616c696461746f72506f6f6c3a20455448207472616e73666572206661696c60448201527f6564000000000000000000000000000000000000000000000000000000000000606482015260840161067d565b506107de60018055565b50565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086391906124d1565b6001600160a01b0316336001600160a01b0316146108e95760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806109915760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b60008481526039602090815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690556109f5826fffffffffffffffffffffffffffffffff8316611c19565b6040516fffffffffffffffffffffffffffffffff821681526001600160a01b03808416919085169086907f8c95336a279406edcc768d685e8eb6667368a77d840a188144b8e3719423198f9060200160405180910390a450505050565b6038546000906001600160a01b031615610beb5760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663dcec33486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aea91906124ee565b905060006001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663d1de856c610b28846001612536565b6040518263ffffffff1660e01b8152600401610b4691815260200190565b602060405180830381865afa158015610b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8791906124ee565b9050804210610bd8576000610b9c824261254e565b90507f0000000000000000000000000000000000000000000000000000000000000004811115610bd6576001600160a01b03935050505090565b505b50506038546001600160a01b0316919050565b507f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c890565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9291906124d1565b6001600160a01b0316336001600160a01b031614610d185760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161015610dc45760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161067d565b610e00827f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff166119a7565b60008381526039602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff16908117909155905190815285917f2904258f32adf74dd8f23ad6f17ff50209896039c8ee3d4728ff55bd05c4cf2a910160405180910390a3505050565b6000610ec3611d4d565b9050806107de5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f72506f6f6c3a206e6f20626f6e6420746861742063616e2060448201527f626520756e626f6e640000000000000000000000000000000000000000000000606482015260840161067d565b600054610100900460ff1615808015610f585750600054600160ff909116105b80610f725750303b158015610f72575060005460ff166001145b610fe45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161067d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561104257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61104a611f6b565b80156107de57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008281526039602090815260408083206001600160a01b03851684529091528120546fffffffffffffffffffffffffffffffff16806111575760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b9392505050565b6111683334611c19565b565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146112085760405162461bcd60e51b815260206004820152602b60248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f74204c324f60448201527f75747075744f7261636c65000000000000000000000000000000000000000000606482015260840161067d565b6000828152603460205260409020805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16156112b15760405162461bcd60e51b815260206004820152603c60248201527f56616c696461746f72506f6f6c3a20626f6e64206f662074686520676976656e60448201527f206f757470757420696e64657820616c72656164792065786973747300000000606482015260840161067d565b6112b9611d4d565b506040517fb0ea09a8000000000000000000000000000000000000000000000000000000008152600481018490526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063b0ea09a890602401602060405180830381865afa15801561133b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135f91906124d1565b905061139d817f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff166119a7565b7f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000009185169182028117845560408051918252602082019290925285916001600160a01b038416917f5ca130257b8f76f72ad2965efcbe166f3918d820e4a49956e70081ea311f97c4910160405180910390a361143d611fe8565b50505050565b6040805180820190915260008082526020820152600082815260346020526040902080546fffffffffffffffffffffffffffffffff16158015906114ad5750805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1615155b61151f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2074686520626f6e6420646f6573206e6f7460448201527f2065786973740000000000000000000000000000000000000000000000000000606482015260840161067d565b6040805180820190915290546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000090910416602082015292915050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639e45e8f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e491906124d1565b6001600160a01b0316336001600160a01b03161461166a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f72506f6f6c3a2073656e646572206973206e6f7420436f6c60448201527f6f737365756d0000000000000000000000000000000000000000000000000000606482015260840161067d565b60008281526034602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1610156117165760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a20746865206f757470757420697320616c7260448201527f656164792066696e616c697a6564000000000000000000000000000000000000606482015260840161067d565b60008381526039602090815260408083206001600160a01b03861684529091529020546fffffffffffffffffffffffffffffffff16806117be5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f72506f6f6c3a207468652070656e64696e6720626f6e642060448201527f646f6573206e6f74206578697374000000000000000000000000000000000000606482015260840161067d565b600060646117cd601484612565565b6117d791906125cc565b905060006117e582846125fb565b60008781526039602090815260408083206001600160a01b038a811680865291845282852080547fffffffffffffffffffffffffffffffff000000000000000000000000000000009081169091558a549081166fffffffffffffffffffffffffffffffff91821688018216178b557f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e9091168552603384529382902080548886160190559051928416835292935088917f383f9b8b5a1fc2ec555726eb895621a312042e18b764135fa12ef1a520ad30db910160405180910390a3505050505050565b60365460009081036118dc57506000919050565b6001600160a01b0382166118f257506000919050565b6001600160a01b03821660008181526037602052604090205460368054919291839081106119225761192261262c565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03163b151590565b6002600154036119a05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161067d565b6002600155565b6001600160a01b03821660009081526033602052604090205481811015611a355760405162461bcd60e51b8152602060048201526024808201527f56616c696461746f72506f6f6c3a20696e73756666696369656e742062616c6160448201527f6e63657300000000000000000000000000000000000000000000000000000000606482015260840161067d565b611a3f828261254e565b90507f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff1681108015611a865750611a86836118c8565b15611bd957603654600090611a9d9060019061254e565b90508015611b55576001600160a01b0384166000908152603760205260408120546036805491929184908110611ad557611ad561262c565b600091825260209091200154603680546001600160a01b039092169250829184908110611b0457611b0461262c565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055929091168152603790915260409020555b6001600160a01b0384166000908152603760205260408120556036805480611b7f57611b7f61265b565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505b6001600160a01b0390921660009081526033602052604090209190915550565b600080600080845160208601878a8af19695505050505050565b60018055565b6001600160a01b038216600090815260336020526040812054611c3d908390612536565b90507f00000000000000000000000000000000000000000000000000000000000000016fffffffffffffffffffffffffffffffff168110158015611c875750611c85836118c8565b155b15611bd9577f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e6001600160a01b0316836001600160a01b031614611bd957603680546001600160a01b03949094166000818152603760209081526040808320889055600188019094557f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890960180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560339094529092209190915550565b60355460408051608081018252600080825260208201819052918101829052606081018290529091908290819060005b7f000000000000000000000000000000000000000000000000000000000000000a811015611f4857600085815260346020526040902080546fffffffffffffffffffffffffffffffff80821696509194507001000000000000000000000000000000009004164210801590611e0457506000846fffffffffffffffffffffffffffffffff16115b15611f485760008581526034602052604080822091909155517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc919061268a565b9150611ede8260000151856fffffffffffffffffffffffffffffffff16611c19565b81516040516fffffffffffffffffffffffffffffffff861681526001600160a01b039091169086907f7047a0fb8bfae78c0ebbd4117437945bb85240453235ac4fd2e55712eb5bf0c39060200160405180910390a3611f3c826121b6565b60019485019401611d7d565b8015611f5f57505050603591909155506001919050565b60009550505050505090565b600054610100900460ff16611c135760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161067d565b6036548015801590611ffc57506000603554115b1561218b5760007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663a25ae5576001603554612041919061254e565b6040518263ffffffff1660e01b815260040161205f91815260200190565b608060405180830381865afa15801561207c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a0919061268a565b905060008282602001514341446001436120ba919061254e565b6040805160208101969096528501939093527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b1691840191909152607483015240609482015260b4016040516020818303038152906040528051906020012060001c61212b919061272d565b9050603681815481106121405761214061262c565b600091825260209091200154603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506107de9050565b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905550565b805160608201516040516001600160a01b037f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0169263c30af3889273420000000000000000000000000000000000000892620186a0927f21670f220000000000000000000000000000000000000000000000000000000092612260926024016001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b90921682526122f2939291600401612741565b600060405180830381600087803b15801561230c57600080fd5b505af1158015612320573d6000803e3d6000fd5b5050505050565b6001600160a01b03811681146107de57600080fd5b6000806040838503121561234f57600080fd5b823561235a81612327565b946020939093013593505050565b60006020828403121561237a57600080fd5b5035919050565b60008060006060848603121561239657600080fd5b8335925060208401356123a881612327565b915060408401356123b881612327565b809150509250925092565b6000815180845260005b818110156123e9576020818501810151868301820152016123cd565b818111156123fb576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061115760208301846123c3565b6000806040838503121561245457600080fd5b82359150602083013561246681612327565b809150509250929050565b60006020828403121561248357600080fd5b813561115781612327565b6fffffffffffffffffffffffffffffffff811681146107de57600080fd5b600080604083850312156124bf57600080fd5b8235915060208301356124668161248e565b6000602082840312156124e357600080fd5b815161115781612327565b60006020828403121561250057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561254957612549612507565b500190565b60008282101561256057612560612507565b500390565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561259457612594612507565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006fffffffffffffffffffffffffffffffff808416806125ef576125ef61259d565b92169190910492915050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561262457612624612507565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006080828403121561269c57600080fd5b6040516080810181811067ffffffffffffffff821117156126e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282516126f481612327565b815260208381015190820152604083015161270e8161248e565b604082015260608301516127218161248e565b60608201529392505050565b60008261273c5761273c61259d565b500690565b6001600160a01b038416815267ffffffffffffffff8316602082015260606040820152600061277360608301846123c3565b9594505050505056fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000001": "01" + }, + "key": "0xcb3987d4474164ab910fb5dff94430b3d4189fdec573b11daa18756dea0b81e9" + }, + "0x84ea74d481ee0a5332c457a4d796187f6ba67feb": { + "balance": "0", + "nonce": 1, + "root": "0xa5123c1d51dd7986375df921b012df36448f6a7bb8122d860ba0700556b38e16", + "codeHash": "0xbc3da66f521ded8b2f657ccebf5c4a51e5a0bb139ef4cf53f9391ae48bc9f56e", + "code": "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c8063887c560f116100ee578063cfb4474d11610097578063e39a219c11610071578063e39a219c1461053f578063e58932b314610552578063e9371a2c14610572578063fc9d84df1461059257600080fd5b8063cfb4474d146104ca578063d2ee3075146104f1578063d5145ebc1461051857600080fd5b8063a41483e3116100c8578063a41483e314610491578063a6ade11f146104a4578063b8b1a27c146104b757600080fd5b8063887c560f146104305780638f3a6c88146104435780639ded39521461046a57600080fd5b8063461569b81161015b5780635865b607116101355780635865b607146103d057806362fc00db146103f75780636fe0e5591461040a57806380ab13131461041d57600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b6102196102043660046147e3565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c610237366004614811565b6105a5565b005b6102aa61024c366004614811565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b61033f7f000000000000000000000000000000000000000000000000000000000000001e81565b6040519081526020016101ed565b61021961035b3660046147e3565b61066f565b61033f7f000000000000000000000000000000000000000000000000000000000000006481565b6103c36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ed9190614899565b6101d97f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae81565b61023c6104053660046148ac565b610764565b61023c6104183660046149d0565b610ab2565b61023c61042b366004614ab2565b610c2c565b61021961043e366004614811565b61159b565b61033f7f000000000000000000000000000000000000000000000000000000000000003c81565b6101d97f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61023c61049f3660046147e3565b6115d0565b61023c6104b2366004614b63565b61170d565b61033f6104c5366004614bcd565b611b31565b61033f7f000000000000000000000000000000000000000000000000000000000000000481565b61033f7f000000000000000000000000000000000000000000000000000000000000001e81565b61033f7fa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f781565b61023c61054d3660046147e3565b611bae565b610565610560366004614811565b611f70565b6040516101ed9190614bf0565b610585610580366004614811565b61207d565b6040516101ed9190614ccf565b61023c6105a0366004614d10565b6120a8565b60008281526002602090815260408083206001600160a01b03851684529091528120906105d182612a0f565b905060038160058111156105e7576105e7614ca0565b1461065f5760405162461bcd60e51b815260206004820152603c60248201527f436f6c6f737365756d3a2063616e206f6e6c792062652063616c6c656420696660448201527f20746865206368616c6c656e67657220697320696e2074696d6f75740000000060648201526084015b60405180910390fd5b6106698484612aec565b50505050565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009081906001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa1580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190614d74565b9050427f000000000000000000000000000000000000000000000000000000000000003c82604001516fffffffffffffffffffffffffffffffff1661075b9190614e1b565b10159392505050565b336001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e16146108025760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b816108755760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a2063616e6e6f7420726f6c6c6261636b206f7574707560448201527f7420746f207a65726f20686173680000000000000000000000000000000000006064820152608401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa1580156108f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091a9190614d74565b60200151146109915760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a206f6e6c792063616e20726f6c6c6261636b2069662060448201527f746865206f757470757420686173206265656e2064656c6574656400000000006064820152608401610656565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fe664672300000000000000000000000000000000000000000000000000000000815260048101869052602481018390526001600160a01b0384811660448301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e664672390606401600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b50505050836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610aa391815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610ad25750600054600160ff909116105b80610aec5750303b158015610aec575060005460ff166001145b610b5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610656565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610bbc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610bc582612ee5565b8015610c2857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810188905287907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd09190614e33565b15610d695760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000888152600260209081526040808320338452909152812090610d8c82612a0f565b6001830154909150610da9908b906001600160a01b031683613075565b15610db5575050611591565b6005816005811115610dc957610dc9614ca0565b1480610de657506004816005811115610de457610de4614ca0565b145b610e585760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a20696d706f737369626c6520746f2070726f7665207460448201527f6865206661756c7420696e2063757272656e74207374617475730000000000006064820152608401610656565b6000610e71610e6c368b90038b018b614e55565b613406565b90506000610e8a610e6c368c90038c0160a08d01614e55565b9050610e9d8b8584848e60a081016134db565b610ec68a60a08101610eb3610140830183614ec5565b610ec16101608f018f614f03565b613697565b610ef8610ed76101c08c018c614f37565b8c61018001358d6101a001358e60a001604001358f60a001602001356137b2565b6000610f1560208c0135610f106101408e018e614ec5565b613922565b60008181526003602052604090205490915060ff1615610fc35760405162461bcd60e51b815260206004820152604c60248201527f436f6c6f737365756d3a207075626c696320696e70757420746861742068617360448201527f20616c7265616479206265656e2076616c6964617465642063616e6e6f74206260648201527f65207573656420616761696e0000000000000000000000000000000000000000608482015260a401610656565b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3181690634292dc3e90611030908d908d908d908d908890600401614fee565b602060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190614e33565b6110bd5760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a20696e76616c69642070726f6f6600000000000000006044820152606401610656565b60405142815233908e907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018e90526000906001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190614d74565b905060006362fc00db60e01b8f338960000160099054906101000a90046001600160a01b03168560200151876040516024016112039594939291909485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e169263080b91ee926112d59291908690600401615028565b600060405180830381600087803b1580156112ef57600080fd5b505af1158015611303573d6000803e3d6000fd5b50505050505060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008e81526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a8154906001600160a01b0302191690556001820160006101000a8154906001600160a01b0302191690556002820160006113df9190614765565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018f905260248201523360448201526001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e664672390606401600060405180830381600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190615062565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018f90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b15801561157357600080fd5b505af1158015611587573d6000803e3d6000fd5b5050505050505050505b5050505050505050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c6816139d5565b9150505b92915050565b60008181526002602090815260408083203384529091528120906115f382612a0f565b9050600081600581111561160957611609614ca0565b0361167c5760405162461bcd60e51b815260206004820152602760248201527f436f6c6f737365756d3a20746865206368616c6c656e676520646f6573206e6f60448201527f74206578697374000000000000000000000000000000000000000000000000006064820152608401610656565b60018201546116969084906001600160a01b031683613075565b6117085760405162461bcd60e51b815260206004820152602860248201527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c65640000000000000000000000000000000000000000000000006064820152608401610656565b505050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa15801561178d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b19190614e33565b1561184a5760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b60008681526002602090815260408083206001600160a01b038916845290915281209061187682612a0f565b60018301549091506118939089906001600160a01b031683613075565b1561189f575050611b29565b600060018260058111156118b5576118b5614ca0565b036118ce575060018201546001600160a01b0316611901565b60028260058111156118e2576118e2614ca0565b0361190157508154690100000000000000000090046001600160a01b03165b336001600160a01b038216146119595760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a206e6f7420796f7572207475726e00000000000000006044820152606401610656565b825460009061196c9060ff16600161507f565b90506119f781856002018a81548110611987576119876150a4565b9060005260206000200154866002018b60016119a39190614e1b565b815481106119b3576119b36150a4565b90600052602060002001548a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b6000611a0285613b8f565b90506000611a10828b6150d3565b8660040154611a1f9190614e1b565b9050611a62868a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250879150613bbb9050565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416178655611a9686613be5565b6040805160ff851681524260208201526001600160a01b038d16918e917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611ae7866139d5565b611b22576040516001600160a01b038c16908d907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b5050505050505b505050505050565b6000600160ff83161015611b875760405162461bcd60e51b815260206004820152601760248201527f436f6c6f737365756d3a20696e76616c6964207475726e0000000000000000006044820152606401610656565b60016000611b958285615110565b60ff168152602001908152602001600020549050919050565b336001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e1614611c4c5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810182905281907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf09190614e33565b15611d895760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2e9190614d74565b6020810151909150611ea85760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a20746865206f75747075742068617320616c7265616460448201527f79206265656e2064656c657465640000000000000000000000000000000000006064820152608401610656565b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e811660448301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e6646723906064015b600060405180830381600087803b158015611f5357600080fd5b505af1158015611f67573d6000803e3d6000fd5b50505050505050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c081019190915260008381526002602081815260408084206001600160a01b03808816865290835293819020815160e081018352815460ff8116825267ffffffffffffffff6101008204168286015269010000000000000000009004861681840152600182015490951660608601529283018054825181850281018501909352808352608086019383018282801561205857602002820191906000526020600020905b815481526020019060010190808311612044575b5050505050815260200160038201548152602001600482015481525050905092915050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c681612a0f565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015612128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214c9190614e33565b156121e55760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000861161225b5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722067656e6573697360448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b600086815260026020908152604080832033845290915290208054600160ff9091161061234857600061228d82612a0f565b905060038160058111156122a3576122a3614ca0565b1461233c5760405162461bcd60e51b815260206004820152604660248201527f436f6c6f737365756d3a20746865206368616c6c656e676520666f722067697660448201527f656e206f757470757420696e64657820697320616c726561647920696e20707260648201527f6f67726573730000000000000000000000000000000000000000000000000000608482015260a401610656565b6123468833612aec565b505b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018890526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa1580156123c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ed9190614d74565b9050427f000000000000000000000000000000000000000000000000000000000000003c82604001516fffffffffffffffffffffffffffffffff166124329190614e1b565b10156124a65760405162461bcd60e51b815260206004820152603e60248201527f436f6c6f737365756d3a2063616e6e6f74206372656174652061206368616c6c60448201527f656e676520616674657220746865206372656174696f6e20706572696f6400006064820152608401610656565b602081015161251d5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722064656c6574656460448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b80516001600160a01b0316330361259c5760405162461bcd60e51b815260206004820152603860248201527f436f6c6f737365756d3a2074686520617373657274657220616e64206368616c60448201527f6c656e676572206d75737420626520646966666572656e7400000000000000006064820152608401610656565b86158015906125ab5750854015155b1561264d578686401461264d5760405162461bcd60e51b8152602060048201526044602482018190527f436f6c6f737365756d3a20626c6f636b206861736820646f6573206e6f74206d908201527f617463682074686520686173682061742074686520657870656374656420686560648201527f6967687400000000000000000000000000000000000000000000000000000000608482015260a401610656565b60006001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663a25ae55761268960018c615133565b6040518263ffffffff1660e01b81526004016126a791815260200190565b608060405180830381865afa1580156126c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e89190614d74565b60208101519091506127565761275160018787600081811061270c5761270c6150a4565b9050602002013584602001518989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b61279e565b61279e6001826020015184602001518989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128209190615062565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018b90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b5050505061293a838787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050606086015161291491507f0000000000000000000000000000000000000000000000000000000000000004906fffffffffffffffffffffffffffffffff16615133565b7f0000000000000000000000000000000000000000000000000000000000000004613bbb565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556129b283613be5565b815160405142815233916001600160a01b0316908b907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a4505050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612a2957506000919050565b8154600090612a3a9060ff16613c86565b8354909150610100900467ffffffffffffffff16421115612ac0578015612a645750600392915050565b8254612aa990612aa4907f000000000000000000000000000000000000000000000000000000000000001e90610100900467ffffffffffffffff16614e1b565b421190565b15612ab75750600392915050565b50600492915050565b612ac9836139d5565b612ad65750600592915050565b80612ae2576002612ae5565b60015b9392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612b6c90830182614765565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612bba91815260200190565b60405180910390a36040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c649190614e33565b15612dea576040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e9190614d74565b90507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d929190615062565b81516040517f36b83469000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03858116602483015291821660448201529116906336b8346990606401611f39565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6c9190615062565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d90604401600060405180830381600087803b158015612ed157600080fd5b505af1158015611b29573d6000803e3d6000fd5b60028151612ef39190615179565b15612f665760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d6265720000000000006064820152608401610656565b600160005b8251811015612fdf57828181518110612f8657612f866150a4565b602002602001015160016000838152602001908152602001600020819055506001838281518110612fb957612fb96150a4565b6020026020010151612fcb9190615133565b612fd590836150d3565b9150600101612f6b565b507f00000000000000000000000000000000000000000000000000000000000000048114610c285760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74687300000000000000000000000000000000000000000000000000000000006064820152608401610656565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081906001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c9190614d74565b6020015190508015613132576000915050612ae5565b336001600160a01b038516146131b05760405162461bcd60e51b815260206004820152602560248201527f436f6c6f737365756d3a2073656e646572206973206e6f742061206368616c6c60448201527f656e6765720000000000000000000000000000000000000000000000000000006064820152608401610656565b60038360058111156131c4576131c4614ca0565b03613239576040805162461bcd60e51b81526020600482015260248101919091527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c6564206966206368616c6c656e6765722074696d6564206f75746064820152608401610656565b6000858152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591906132b090830182614765565b50600060038201819055600490910155604051428152339086907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133799190615062565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101879052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50600198975050505050505050565b80516000906134685781516020808401516040808601516060808801516080808a0151855180890199909952888601969096529187019290925285015260a0808501929092528051808503909201825260c090930190925281519101206115ca565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e000000000000000000000000000000000000000000006064820152608401610656565b919050565b838560020187815481106134f1576134f16150a4565b90600052602060002001541461356f5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2074686520736f75726365207365676d656e74206d7560448201527f7374206265206d617463686564000000000000000000000000000000000000006064820152608401610656565b613578856139d5565b61361a57826002860161358c886001614e1b565b8154811061359c5761359c6150a4565b90600052602060002001540361361a5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a207468652064657374696e6174696f6e207365676d6560448201527f6e74206d757374206e6f74206265206d617463686564000000000000000000006064820152608401610656565b8060600135826080013514611b295760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b82602001358260e00135146137145760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520737461746520726f6f74206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b60006137306137228461520b565b61372b84615365565b613c9d565b9050808560800135146137ab5760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a2074686520626c6f636b20686173682066726f6d207060448201527f75626c696320696e707574206d757374206265206d61746368656400000000006064820152608401610656565b5050505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae6001600160a01b0316906312e64a729061386f907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615506565b602060405180830381865afa15801561388c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b09190614e33565b611f675760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a20696e76616c6964204c32546f4c314d65737361676560448201527f50617373657220696e636c7573696f6e2070726f6f66000000000000000000006064820152608401610656565b600060607f0000000000000000000000000000000000000000000000000000000000000064613955610120850185614f37565b905010156139c2576139bf7fa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f761398f610120860186614f37565b6139ba91507f0000000000000000000000000000000000000000000000000000000000000064615133565b613de6565b90505b6115c6846139cf8561520b565b83613e72565b600060016139e283613b8f565b1192915050565b8051806139f586611b31565b14613a685760405162461bcd60e51b815260206004820152602260248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74680000000000000000000000000000000000000000000000000000000000006064820152608401610656565b81600081518110613a7b57613a7b6150a4565b60200260200101518414613af75760405162461bcd60e51b815260206004820152602c60248201527f436f6c6f737365756d3a20746865206669727374207365676d656e74206d757360448201527f74206265206d61746368656400000000000000000000000000000000000000006064820152608401610656565b81613b03600183615133565b81518110613b1357613b136150a4565b602002602001015183036137ab5760405162461bcd60e51b815260206004820152602f60248201527f436f6c6f737365756d3a20746865206c617374207365676d656e74206d75737460448201527f206e6f74206265206d61746368656400000000000000000000000000000000006064820152608401610656565b805460009060ff166001613ba282611b31565b613bac9190615133565b8360030154612ae591906155e1565b8251613bd09060028601906020860190614783565b50600484019190915560039092019190915550565b613bee816139d5565b613c5957613c1c7f000000000000000000000000000000000000000000000000000000000000001e42614e1b565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b613c1c7f000000000000000000000000000000000000000000000000000000000000001e42614e1b565b50565b6000613c936002836155f5565b60ff161592915050565b6040805160148082526102a08201909252600091829190816020015b6060815260200190600190039081613cb9579050509050613cdb848483613ee4565b613d0a846101000151604051602001613cf691815260200190565b604051602081830303815290604052614197565b81601081518110613d1d57613d1d6150a4565b6020026020010181905250613d4084610140015167ffffffffffffffff16614206565b81601181518110613d5357613d536150a4565b6020026020010181905250613d7684610160015167ffffffffffffffff16614206565b81601281518110613d8957613d896150a4565b6020026020010181905250613daf846101800151604051602001613cf691815260200190565b81601381518110613dc257613dc26150a4565b6020026020010181905250613dd681614219565b8051906020012091505092915050565b606060008267ffffffffffffffff811115613e0357613e036148fe565b604051908082528060200260200182016040528015613e2c578160200160208202803683370190505b50905060005b83811015613e6a5784828281518110613e4d57613e4d6150a4565b602090810291909101015280613e6281615617565b915050613e32565b509392505050565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001613ec59c9b9a99989796959493929190615682565b6040516020818303038152906040528051906020012090509392505050565b613efe8360200151604051602001613cf691815260200190565b81600081518110613f1157613f116150a4565b6020026020010181905250816000015181600181518110613f3457613f346150a4565b6020026020010181905250816020015181600281518110613f5757613f576150a4565b6020026020010181905250613f7c8360e00151604051602001613cf691815260200190565b81600381518110613f8f57613f8f6150a4565b6020026020010181905250613fb48360c00151604051602001613cf691815260200190565b81600481518110613fc757613fc76150a4565b6020026020010181905250816040015181600581518110613fea57613fea6150a4565b602002602001018190525081606001518160068151811061400d5761400d6150a4565b6020026020010181905250816080015181600781518110614030576140306150a4565b6020026020010181905250614052836060015167ffffffffffffffff16614206565b81600881518110614065576140656150a4565b6020026020010181905250614087836080015167ffffffffffffffff16614206565b8160098151811061409a5761409a6150a4565b60200260200101819052508160a0015181600a815181106140bd576140bd6150a4565b60200260200101819052506140df836040015167ffffffffffffffff16614206565b81600b815181106140f2576140f26150a4565b60200260200101819052508160c0015181600c81518110614115576141156150a4565b60200260200101819052508160e0015181600d81518110614138576141386150a4565b602002602001018190525081610100015181600e8151811061415c5761415c6150a4565b60200260200101819052506141748360a00151614206565b81600f81518110614187576141876150a4565b6020026020010181905250505050565b606080825160011480156141c557506080836000815181106141bb576141bb6150a4565b016020015160f81c105b156141d15750816115ca565b6141dd8351608061425d565b836040516020016141ef92919061573b565b604051602081830303815290604052905092915050565b60606115ca61421483614453565b614197565b60606000614226836145bb565b9050614234815160c061425d565b8160405160200161424692919061573b565b604051602081830303815290604052915050919050565b60608060388410156142dc5760408051600180825281830190925290602082018180368337019050509050614292838561507f565b60f81b816000815181106142a8576142a86150a4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612ae5565b600060015b6142eb81876155e1565b1561431157816142fa81615617565b925061430a9050610100826150d3565b90506142e1565b61431c826001614e1b565b67ffffffffffffffff811115614334576143346148fe565b6040519080825280601f01601f19166020018201604052801561435e576020820181803683370190505b50925061436b858361507f565b61437690603761507f565b60f81b8360008151811061438c5761438c6150a4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b81811161444a576101006143d48284615133565b6143e09061010061588a565b6143ea90886155e1565b6143f49190615179565b60f81b838281518110614409576144096150a4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061444281615617565b9150506143c0565b50509392505050565b606060008260405160200161446a91815260200190565b604051602081830303815290604052905060005b60208110156144d957818181518110614499576144996150a4565b01602001517fff00000000000000000000000000000000000000000000000000000000000000166000036144d957806144d181615617565b91505061447e565b60006144e6826020615133565b67ffffffffffffffff8111156144fe576144fe6148fe565b6040519080825280601f01601f191660200182016040528015614528576020820181803683370190505b50905060005b81518110156145b257838361454281615617565b945081518110614554576145546150a4565b602001015160f81c60f81b828281518110614571576145716150a4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806145aa81615617565b91505061452e565b50949350505050565b606081516000036145da57505060408051600081526020810190915290565b6000805b8351811015614621578381815181106145f9576145f96150a4565b6020026020010151518261460d9190614e1b565b91508061461981615617565b9150506145de565b60008267ffffffffffffffff81111561463c5761463c6148fe565b6040519080825280601f01601f191660200182016040528015614666576020820181803683370190505b50600092509050602081015b85518310156145b257600086848151811061468f5761468f6150a4565b6020026020010151905060006020820190506146ad838284516146ea565b8785815181106146bf576146bf6150a4565b602002602001015151836146d39190614e1b565b9250505082806146e290615617565b935050614672565b8282825b602081106147265781518352614705602084614e1b565b9250614712602083614e1b565b915061471f602082615133565b90506146ee565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b5080546000825590600052602060002090810190613c8391906147ce565b8280548282559060005260206000209081019282156147be579160200282015b828111156147be5782518255916020019190600101906147a3565b506147ca9291506147ce565b5090565b5b808211156147ca57600081556001016147cf565b6000602082840312156147f557600080fd5b5035919050565b6001600160a01b0381168114613c8357600080fd5b6000806040838503121561482457600080fd5b823591506020830135614836816147fc565b809150509250929050565b60005b8381101561485c578181015183820152602001614844565b838111156106695750506000910152565b60008151808452614885816020860160208601614841565b601f01601f19169290920160200192915050565b602081526000612ae5602083018461486d565b600080600080600060a086880312156148c457600080fd5b8535945060208601356148d6816147fc565b935060408601356148e6816147fc565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715614951576149516148fe565b60405290565b604051610120810167ffffffffffffffff81118282101715614951576149516148fe565b604051601f8201601f1916810167ffffffffffffffff811182821017156149a4576149a46148fe565b604052919050565b600067ffffffffffffffff8211156149c6576149c66148fe565b5060051b60200190565b600060208083850312156149e357600080fd5b823567ffffffffffffffff8111156149fa57600080fd5b8301601f81018513614a0b57600080fd5b8035614a1e614a19826149ac565b61497b565b81815260059190911b82018301908381019087831115614a3d57600080fd5b928401925b82841015614a5b57833582529284019290840190614a42565b979650505050505050565b60008083601f840112614a7857600080fd5b50813567ffffffffffffffff811115614a9057600080fd5b6020830191508360208260051b8501011115614aab57600080fd5b9250929050565b600080600080600080600060a0888a031215614acd57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115614af357600080fd5b908901906101e0828c031215614b0857600080fd5b90955060608901359080821115614b1e57600080fd5b614b2a8b838c01614a66565b909650945060808a0135915080821115614b4357600080fd5b50614b508a828b01614a66565b989b979a50959850939692959293505050565b600080600080600060808688031215614b7b57600080fd5b853594506020860135614b8d816147fc565b935060408601359250606086013567ffffffffffffffff811115614bb057600080fd5b614bbc88828901614a66565b969995985093965092949392505050565b600060208284031215614bdf57600080fd5b813560ff81168114612ae557600080fd5b60006020808352610100830160ff8551168285015267ffffffffffffffff8286015116604085015260408501516001600160a01b0380821660608701528060608801511660808701525050608085015160e060a0860152818151808452610120870191508483019350600092505b80831015614c7e5783518252928401926001929092019190840190614c5e565b5060a087015160c087015260c087015160e08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614d0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080600060808688031215614d2857600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614bb057600080fd5b80516fffffffffffffffffffffffffffffffff811681146134d657600080fd5b600060808284031215614d8657600080fd5b6040516080810181811067ffffffffffffffff82111715614da957614da96148fe565b6040528251614db7816147fc565b815260208381015190820152614dcf60408401614d54565b6040820152614de060608401614d54565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614e2e57614e2e614dec565b500190565b600060208284031215614e4557600080fd5b81518015158114612ae557600080fd5b600060a08284031215614e6757600080fd5b60405160a0810181811067ffffffffffffffff82111715614e8a57614e8a6148fe565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61833603018112614ef957600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1833603018112614ef957600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614f6c57600080fd5b83018035915067ffffffffffffffff821115614f8757600080fd5b6020019150600581901b3603821315614aab57600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614fd157600080fd5b8260051b8083602087013760009401602001938452509192915050565b606081526000615002606083018789614f9f565b8281036020840152615015818688614f9f565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff83166020820152606060408201526000615059606083018461486d565b95945050505050565b60006020828403121561507457600080fd5b8151612ae5816147fc565b600060ff821660ff84168060ff0382111561509c5761509c614dec565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561510b5761510b614dec565b500290565b600060ff821660ff84168082101561512a5761512a614dec565b90039392505050565b60008282101561514557615145614dec565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826151885761518861514a565b500690565b803567ffffffffffffffff811681146134d657600080fd5b600082601f8301126151b657600080fd5b813560206151c6614a19836149ac565b82815260059290921b840181019181810190868411156151e557600080fd5b8286015b8481101561520057803583529183019183016151e9565b509695505050505050565b60006101a0823603121561521e57600080fd5b61522661492d565b82358152602083013560208201526152406040840161518d565b60408201526152516060840161518d565b60608201526152626080840161518d565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff8111156152ad57600080fd5b6152b9368287016151a5565b8284015250506101406152cd81850161518d565b908201526101606152df84820161518d565b9082015261018092830135928101929092525090565b600082601f83011261530657600080fd5b813567ffffffffffffffff811115615320576153206148fe565b6153336020601f19601f8401160161497b565b81815284602083860101111561534857600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120823603121561537857600080fd5b615380614957565b823567ffffffffffffffff8082111561539857600080fd5b6153a4368387016152f5565b835260208501359150808211156153ba57600080fd5b6153c6368387016152f5565b602084015260408501359150808211156153df57600080fd5b6153eb368387016152f5565b6040840152606085013591508082111561540457600080fd5b615410368387016152f5565b6060840152608085013591508082111561542957600080fd5b615435368387016152f5565b608084015260a085013591508082111561544e57600080fd5b61545a368387016152f5565b60a084015260c085013591508082111561547357600080fd5b61547f368387016152f5565b60c084015260e085013591508082111561549857600080fd5b6154a4368387016152f5565b60e0840152610100915081850135818111156154bf57600080fd5b6154cb368288016152f5565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b85815260006020608081840152615520608084018861486d565b8381036040850152858152818101600587901b820183018860005b898110156155c857601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c360301811261557e57600080fd5b8b01868101903567ffffffffffffffff81111561559a57600080fd5b8036038213156155a957600080fd5b6155b48582846154db565b95880195945050509085019060010161553b565b5050809450505050508260608301529695505050505050565b6000826155f0576155f061514a565b500490565b600060ff8316806156085761560861514a565b8060ff84160691505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361564857615648614dec565b5060010190565b60008151602080840160005b838110156156775781518752958201959082019060010161565b565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d883015261572961572360da84018661564f565b8461564f565b9e9d5050505050505050505050505050565b6000835161574d818460208801614841565b835190830190615761818360208801614841565b01949350505050565b600181815b808511156157c357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156157a9576157a9614dec565b808516156157b657918102915b93841c939080029061576f565b509250929050565b6000826157da575060016115ca565b816157e7575060006115ca565b81600181146157fd576002811461580757615823565b60019150506115ca565b60ff84111561581857615818614dec565b50506001821b6115ca565b5060208310610133831016604e8410600b8410161715615846575081810a6115ca565b615850838361576a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561588257615882614dec565b029392505050565b6000612ae583836157cb56fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "03", + "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "02", + "0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "02", + "0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "03" + }, + "key": "0x6ed8898a487b7360c301d9bb5c9175a94d80e63aa3040e16bf5090e89d33b683" + }, + "0x851356ae760d987e095750cceb3bc6014560891c": { + "balance": "0", + "nonce": 1, + "root": "0x1f6d4a6bd29feba7ce7b0aeb56e30f5d7718d9230959d0621e846e72f6d850c9", + "codeHash": "0xf088100162a48771cf9ad3b57490a878312e56f8afcf21e4fee9675799e494f2", + "code": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c8063c71973f6116100d8578063ed579ad31161008c578063f68016b711610066578063f68016b71461046d578063fc7ffea714610481578063ffa1ad741461049457600080fd5b8063ed579ad314610448578063f2fde38b14610451578063f45e65d81461046457600080fd5b8063cc731b02116100bd578063cc731b02146102f8578063e81b2c6d1461042c578063ecdd939d1461043557600080fd5b8063c71973f6146102d2578063c9b26f61146102e557600080fd5b806354fd4d501161012f5780638da5cb5b116101145780638da5cb5b1461028e578063935f029e146102ac578063b40a817c146102bf57600080fd5b806354fd4d501461023d578063715018a61461028657600080fd5b80631fd19ee1116101605780631fd19ee1146101ad5780634add321d146101f55780634f16540b1461021657600080fd5b80630c18c1621461017c57806318d1391814610198575b600080fd5b61018560655481565b6040519081526020015b60405180910390f35b6101ab6101a6366004611139565b61049c565b005b7f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018f565b6101fd610560565b60405167ffffffffffffffff909116815260200161018f565b6101857f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0881565b6102796040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161018f91906111c6565b6101ab61058b565b60335473ffffffffffffffffffffffffffffffffffffffff166101d0565b6101ab6102ba3660046111d9565b61059f565b6101ab6102cd366004611213565b610638565b6101ab6102e036600461133c565b610709565b6101ab6102f3366004611358565b61071d565b6103bc6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c08101825260695463ffffffff8082168352640100000000820460ff9081166020850152650100000000008304169383019390935266010000000000008104831660608301526a0100000000000000000000810490921660808201526e0100000000000000000000000000009091046fffffffffffffffffffffffffffffffff1660a082015290565b60405161018f9190600060c08201905063ffffffff80845116835260ff602085015116602084015260ff6040850151166040840152806060850151166060840152806080850151166080840152506fffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b61018560675481565b6101ab610443366004611358565b61074d565b610185606a5481565b6101ab61045f366004611139565b61081b565b61018560665481565b6068546101fd9067ffffffffffffffff1681565b6101ab61048f366004611371565b6108b5565b610185600081565b6104a4610b3a565b6104cc817f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c0855565b6040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060035b60007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161055491906111c6565b60405180910390a35050565b6069546000906105869063ffffffff6a010000000000000000000082048116911661141d565b905090565b610593610b3a565b61059d6000610ba1565b565b6105a7610b3a565b606582905560668190556040805160208101849052908101829052600090606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600160007f1d2b0bda21d56b8bd12d4f94ebacffdfb35f5e226f84b461103bb8beab6353be8360405161062b91906111c6565b60405180910390a3505050565b610640610b3a565b610648610560565b67ffffffffffffffff168167ffffffffffffffff1610156106b05760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064015b60405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040805160208082019390935281518082039093018352810190526002610523565b610711610b3a565b61071a81610c18565b50565b610725610b3a565b6067819055604080516020808201849052825180830390910181529082019091526000610523565b610755610b3a565b6127108111156107f35760405162461bcd60e51b815260206004820152604860248201527f53797374656d436f6e6669673a20746865206d61782076616c7565206f66207660448201527f616c696461746f7220726577617264207363616c617220686173206265656e2060648201527f6578636565646564000000000000000000000000000000000000000000000000608482015260a4016106a7565b606a819055604080516020808201849052825180830390910181529082019091526004610523565b610823610b3a565b73ffffffffffffffffffffffffffffffffffffffff81166108ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106a7565b61071a81610ba1565b600054610100900460ff16158080156108d55750600054600160ff909116105b806108ef5750303b1580156108ef575060005460ff166001145b6109615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109bf57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109c761100a565b6109d08961081b565b606588905560668790556067869055606880547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff87161790557f65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08849055610a4083610c18565b610a48610560565b67ffffffffffffffff168567ffffffffffffffff161015610aab5760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016106a7565b606a8290558015610b1357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff16331461059d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8060a001516fffffffffffffffffffffffffffffffff16816060015163ffffffff161115610cae5760405162461bcd60e51b815260206004820152603560248201527f53797374656d436f6e6669673a206d696e206261736520666565206d7573742060448201527f6265206c657373207468616e206d61782062617365000000000000000000000060648201526084016106a7565b6001816040015160ff1611610d2b5760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a2064656e6f6d696e61746f72206d757374206260448201527f65206c6172676572207468616e2031000000000000000000000000000000000060648201526084016106a7565b6068546080820151825167ffffffffffffffff90921691610d4c9190611449565b63ffffffff161115610da05760405162461bcd60e51b815260206004820152601f60248201527f53797374656d436f6e6669673a20676173206c696d697420746f6f206c6f770060448201526064016106a7565b6000816020015160ff1611610e1d5760405162461bcd60e51b815260206004820152602f60248201527f53797374656d436f6e6669673a20656c6173746963697479206d756c7469706c60448201527f6965722063616e6e6f742062652030000000000000000000000000000000000060648201526084016106a7565b8051602082015163ffffffff82169160ff90911690610e3d908290611468565b610e4791906114b2565b63ffffffff1614610ec05760405162461bcd60e51b815260206004820152603760248201527f53797374656d436f6e6669673a20707265636973696f6e206c6f73732077697460448201527f6820746172676574207265736f75726365206c696d697400000000000000000060648201526084016106a7565b805160698054602084015160408501516060860151608087015160a09097015163ffffffff9687167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009095169490941764010000000060ff94851602177fffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff166501000000000093909216929092027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000091851691909102177fffff0000000000000000000000000000000000000000ffffffffffffffffffff166a010000000000000000000093909416929092027fffff00000000000000000000000000000000ffffffffffffffffffffffffffff16929092176e0100000000000000000000000000006fffffffffffffffffffffffffffffffff90921691909102179055565b600054610100900460ff166110875760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a7565b61059d600054610100900460ff166111075760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106a7565b61059d33610ba1565b803573ffffffffffffffffffffffffffffffffffffffff8116811461113457600080fd5b919050565b60006020828403121561114b57600080fd5b61115482611110565b9392505050565b6000815180845260005b8181101561118157602081850181015186830182015201611165565b81811115611193576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611154602083018461115b565b600080604083850312156111ec57600080fd5b50508035926020909101359150565b803567ffffffffffffffff8116811461113457600080fd5b60006020828403121561122557600080fd5b611154826111fb565b803563ffffffff8116811461113457600080fd5b803560ff8116811461113457600080fd5b80356fffffffffffffffffffffffffffffffff8116811461113457600080fd5b600060c0828403121561128557600080fd5b60405160c0810181811067ffffffffffffffff821117156112cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050806112de8361122e565b81526112ec60208401611242565b60208201526112fd60408401611242565b604082015261130e6060840161122e565b606082015261131f6080840161122e565b608082015261133060a08401611253565b60a08201525092915050565b600060c0828403121561134e57600080fd5b6111548383611273565b60006020828403121561136a57600080fd5b5035919050565b6000806000806000806000806101a0898b03121561138e57600080fd5b61139789611110565b97506020890135965060408901359550606089013594506113ba60808a016111fb565b93506113c860a08a01611110565b92506113d78a60c08b01611273565b915061018089013590509295985092959890939650565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516808303821115611440576114406113ee565b01949350505050565b600063ffffffff808316818516808303821115611440576114406113ee565b600063ffffffff808416806114a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600063ffffffff808316818516818304811182151516156114d5576114d56113ee565b0294935050505056fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0834", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0f4240", + "0x0000000000000000000000000000000000000000000000000000000000000067": "3c44cdddb6a900fa2b585dd299e03d12fa4293bc", + "0x0000000000000000000000000000000000000000000000000000000000000068": "01c9c380", + "0x0000000000000000000000000000000000000000000000000000000000000069": "ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00", + "0x000000000000000000000000000000000000000000000000000000000000006a": "1388", + "0x65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08": "9965507d1a55bcc2695c58ba16fb37d819b0a4dc" + }, + "key": "0xf4856772454495d2d8bbdae250e43ed9b0d01009bbc274f43c0d55ff50885027" }, "0x8a791620dd6260079bf849dc5567adc3f2fdc318": { "balance": "0", "nonce": 1, - "root": "0xdb8c5f14d9f9e21db7341b36bd47859d7fe837a377b5ebf8650aa9f3242724f1", + "root": "0x540a283a20e27d52873e1b7b921086f6b97256594ecb34ca9a8d2f4210616f17", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "67d269191c92caf3cd7723f116c85e6e9bf55933", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "e6e340d132b5f46d1e472debcd681b2abc16e57e", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x52f57297d97a84de7bdf53a239d5f1c446e6ff8e4e0d175868a241ddff7729d8" }, - "0x8f86403a4de0bb5791fa46b8e795c547942fe4cf": { + "0x95401dc811bb5740090279ba06cfa8fcf6113778": { "balance": "0", "nonce": 1, "root": "0x01f9e62d19297f681ea2208de1fec6c67ed86a26e55dbf4b27a1b0881060507b", - "codeHash": "0x032951ba4bf0d8d857d02de99c2aa30177d9ab6b78004524a5b3c52de71caf02", - "code": "0x60806040526004361061030c5760003560e01c80637b3c71d31161019a578063c01f9e37116100e1578063ea0217cf1161008a578063f23a6e6111610064578063f23a6e6114610a9e578063f8ce560a14610ae3578063fc0c546a14610b0357600080fd5b8063ea0217cf14610a3e578063eb9019d414610a5e578063ece40cc114610a7e57600080fd5b8063d33219b4116100bb578063d33219b4146109a5578063dd4e2ba5146109c4578063deaaa7cc14610a0a57600080fd5b8063c01f9e3714610938578063c28bc2fa14610972578063c59057e41461098557600080fd5b80639a802a6d11610143578063ab58fb8e1161011d578063ab58fb8e146108be578063b58131b0146108de578063bc197c81146108f357600080fd5b80639a802a6d14610869578063a7713a7014610889578063a890c9101461089e57600080fd5b806386489ba91161017457806386489ba91461080957806391ddadf41461082957806397c3d3341461085557600080fd5b80637b3c71d3146107a15780637d5e81e2146107c157806384b0196e146107e157600080fd5b80633932abb11161025e578063544ffc9c116102075780635f398a14116101e15780635f398a141461074157806360c4247f1461076157806370b0f6601461078157600080fd5b8063544ffc9c1461068557806354fd4d50146106db578063567813881461072157600080fd5b806343859632116102385780634385963214610605578063452115d6146106505780634bf5d7e91461067057600080fd5b80633932abb1146105a35780633bccf4fd146105b85780633e4f49e6146105d857600080fd5b8063143489d0116102c05780632656227d1161029a5780632656227d146105255780632d63f693146105385780632fe3e2611461056f57600080fd5b8063143489d014610436578063150b7a0214610490578063160cbed71461050557600080fd5b806303420181116102f157806303420181146103d457806306f3f9e6146103f457806306fdde031461041457600080fd5b806301ffc9a71461037c57806302a251a3146103b157600080fd5b36610377573061031a610b24565b6001600160a01b0316146103755760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561038857600080fd5b5061039c610397366004614a0c565b610b3e565b60405190151581526020015b60405180910390f35b3480156103bd57600080fd5b506103c6610b4f565b6040519081526020016103a8565b3480156103e057600080fd5b506103c66103ef366004614b8e565b610b5b565b34801561040057600080fd5b5061037561040f366004614c35565b610c53565b34801561042057600080fd5b50610429610d0d565b6040516103a89190614caa565b34801561044257600080fd5b50610478610451366004614c35565b600090815260fe60205260409020546801000000000000000090046001600160a01b031690565b6040516001600160a01b0390911681526020016103a8565b34801561049c57600080fd5b506104d46104ab366004614cd2565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a8565b34801561051157600080fd5b506103c6610520366004614eac565b610d9f565b6103c6610533366004614eac565b611045565b34801561054457600080fd5b506103c6610553366004614c35565b600090815260fe602052604090205467ffffffffffffffff1690565b34801561057b57600080fd5b506103c67fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156105af57600080fd5b506103c66111ab565b3480156105c457600080fd5b506103c66105d3366004614f3c565b6111b7565b3480156105e457600080fd5b506105f86105f3366004614c35565b61122d565b6040516103a89190614fb9565b34801561061157600080fd5b5061039c610620366004614ffa565b6000828152610161602090815260408083206001600160a01b038516845260030190915290205460ff1692915050565b34801561065c57600080fd5b506103c661066b366004614eac565b611238565b34801561067c57600080fd5b50610429611369565b34801561069157600080fd5b506106c06106a0366004614c35565b600090815261016160205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016103a8565b3480156106e757600080fd5b5060408051808201909152600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152610429565b34801561072d57600080fd5b506103c661073c36600461502a565b61142f565b34801561074d57600080fd5b506103c661075c366004615056565b611458565b34801561076d57600080fd5b506103c661077c366004614c35565b6114a2565b34801561078d57600080fd5b5061037561079c366004614c35565b611597565b3480156107ad57600080fd5b506103c66107bc3660046150da565b61164e565b3480156107cd57600080fd5b506103c66107dc366004615134565b611696565b3480156107ed57600080fd5b506107f66116ad565b6040516103a89796959493929190615224565b34801561081557600080fd5b506103756108243660046152a0565b61176f565b34801561083557600080fd5b5061083e611951565b60405165ffffffffffff90911681526020016103a8565b34801561086157600080fd5b5060646103c6565b34801561087557600080fd5b506103c66108843660046152f9565b6119de565b34801561089557600080fd5b506103c66119f5565b3480156108aa57600080fd5b506103756108b9366004615352565b611a37565b3480156108ca57600080fd5b506103c66108d9366004614c35565b611aee565b3480156108ea57600080fd5b506103c6611ba3565b3480156108ff57600080fd5b506104d461090e36600461536f565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561094457600080fd5b506103c6610953366004614c35565b600090815260fe602052604090206001015467ffffffffffffffff1690565b610375610980366004615403565b611baf565b34801561099157600080fd5b506103c66109a0366004614eac565b611ce5565b3480156109b157600080fd5b506101f8546001600160a01b0316610478565b3480156109d057600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e90820152610429565b348015610a1657600080fd5b506103c67f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610a4a57600080fd5b50610375610a59366004614c35565b611d1f565b348015610a6a57600080fd5b506103c6610a79366004615447565b611dd6565b348015610a8a57600080fd5b50610375610a99366004614c35565b611df7565b348015610aaa57600080fd5b506104d4610ab9366004615473565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b348015610aef57600080fd5b506103c6610afe366004614c35565b611eae565b348015610b0f57600080fd5b5061019354610478906001600160a01b031681565b6000610b396101f8546001600160a01b031690565b905090565b6000610b4982611eb9565b92915050565b6000610b396101305490565b600080610bff610bf77fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610b979291906154dc565b60405180910390208b80519060200120604051602001610bdc959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120611f0f565b868686611f57565b9050610c458a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250611f75915050565b9a9950505050505050505050565b610c5b610b24565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30610cc4610b24565b6001600160a01b031614610d015760008036604051610ce49291906154dc565b604051809103902090505b80610cfa60ff6120e5565b03610cef57505b610d0a816121a2565b50565b606060fd8054610d1c906154ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610d48906154ec565b8015610d955780601f10610d6a57610100808354040283529160200191610d95565b820191906000526020600020905b815481529060010190602001808311610d7857829003601f168201915b5050505050905090565b600080610dae86868686611ce5565b90506004610dbb8261122d565b6007811115610dcc57610dcc614f8a565b14610e3f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6101f854604080517ff27a0c9200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec7919061553f565b6101f8546040517fb1c5f4270000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063b1c5f42790610f1b908a908a908a906000908b906004016155e6565b602060405180830381865afa158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c919061553f565b60008381526101f96020526040808220929092556101f85491517f8f2a0bb00000000000000000000000000000000000000000000000000000000081526001600160a01b0390921691638f2a0bb091610fc2918b918b918b91908b908990600401615634565b600060405180830381600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261102291906156bb565b604080519283526020830191909152015b60405180910390a15095945050505050565b60008061105486868686611ce5565b905060006110618261122d565b9050600481600781111561107757611077614f8a565b14806110945750600581600781111561109257611092614f8a565b145b6111065760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b600082815260fe60205260409081902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906111729084815260200190565b60405180910390a16111878288888888612343565b61119482888888886123e5565b6111a182888888886123f2565b5095945050505050565b6000610b3961012f5490565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061120590610bf790608001610bdc565b905061122287828860405180602001604052806000815250612438565b979650505050505050565b6000610b498261245b565b60008061124786868686611ce5565b905060006112548261122d565b600781111561126557611265614f8a565b146112b25760405162461bcd60e51b815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c00000000604482015260640161036c565b600081815260fe60205260409020546801000000000000000090046001600160a01b0316336001600160a01b0316146113535760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e6360448201527f656c000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b61135f868686866125da565b9695505050505050565b61019354604080517f4bf5d7e900000000000000000000000000000000000000000000000000000000815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156113ee57506040513d6000823e601f3d908101601f191682016040526113eb91908101906156d3565b60015b61142a575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061145084828560405180602001604052806000815250612438565b949350505050565b60008033905061122287828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611f75915050565b6101c7546000908082036114bb5750506101c654919050565b60006101c76114cb600184615741565b815481106114db576114db615758565b60009182526020918290206040805180820190915291015463ffffffff81168083526401000000009091047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928201929092529150841061155c57602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b611571611568856125e8565b6101c790612668565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b61159f610b24565b6001600160a01b0316336001600160a01b0316146115ff5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611608610b24565b6001600160a01b03161461164557600080366040516116289291906154dc565b604051809103902090505b8061163e60ff6120e5565b0361163357505b610d0a81612731565b60008033905061135f86828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061243892505050565b60006116a485858585612774565b95945050505050565b6000606080600080600060606065546000801b1480156116cd5750606654155b6117195760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640161036c565b611721612ca9565b611729612cb8565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600054610100900460ff161580801561178f5750600054600160ff909116105b806117a95750303b1580156117a9575060005460ff166001145b61181b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161036c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561187957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6118b76040518060400160405280600f81526020017f55706772616465476f7665726e6f720000000000000000000000000000000000815250612cc7565b6118c2858585612d90565b6118ca612e1d565b6118d387612e9c565b6118dc82612f22565b6118e586612fa8565b801561194857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61019354604080517f91ddadf400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156119d1575060408051601f3d908101601f191682019092526119ce91810190615787565b60015b61142a57610b394361302e565b60006119eb8484846130ac565b90505b9392505050565b6101c75460009015611a2f57611a0c6101c761313c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b506101c65490565b611a3f610b24565b6001600160a01b0316336001600160a01b031614611a9f5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611aa8610b24565b6001600160a01b031614611ae55760008036604051611ac89291906154dc565b604051809103902090505b80611ade60ff6120e5565b03611ad357505b610d0a81613182565b6101f85460008281526101f960205260408082205490517fd45c44350000000000000000000000000000000000000000000000000000000081526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8a919061553f565b905080600114611b9a57806119ee565b60009392505050565b6000610b396101315490565b611bb7610b24565b6001600160a01b0316336001600160a01b031614611c175760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611c20610b24565b6001600160a01b031614611c5d5760008036604051611c409291906154dc565b604051809103902090505b80611c5660ff6120e5565b03611c4b57505b600080856001600160a01b0316858585604051611c7b9291906154dc565b60006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b50915091506119488282604051806060016040528060288152602001615b8460289139613205565b600084848484604051602001611cfe94939291906157af565b60408051601f19818403018152919052805160209091012095945050505050565b611d27610b24565b6001600160a01b0316336001600160a01b031614611d875760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611d90610b24565b6001600160a01b031614611dcd5760008036604051611db09291906154dc565b604051809103902090505b80611dc660ff6120e5565b03611dbb57505b610d0a8161321e565b60006119ee8383611df260408051602081019091526000815290565b6130ac565b611dff610b24565b6001600160a01b0316336001600160a01b031614611e5f5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611e68610b24565b6001600160a01b031614611ea55760008036604051611e889291906154dc565b604051809103902090505b80611e9e60ff6120e5565b03611e9357505b610d0a816132d7565b6000610b498261331a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6e665ced000000000000000000000000000000000000000000000000000000001480610b495750610b49826133c2565b6000610b49611f1c61356c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000611f6887878787613576565b915091506111a18161363a565b600085815260fe602052604081206001611f8e8861122d565b6007811115611f9f57611f9f614f8a565b146120125760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201527f6976650000000000000000000000000000000000000000000000000000000000606482015260840161036c565b805460009061202d90889067ffffffffffffffff16866130ac565b905061203c888888848861379f565b835160000361209157866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48988848960405161208494939291906157fa565b60405180910390a2611222565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516120d2959493929190615822565b60405180910390a2979650505050505050565b600061210d8254600f81810b700100000000000000000000000000000000909204900b131590565b15612144576040517f3db2a12a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583547fffffffffffffffffffffffffffffffff000000000000000000000000000000001692016fffffffffffffffffffffffffffffffff169190911790915590565b606481111561223f5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160648201527f746f720000000000000000000000000000000000000000000000000000000000608482015260a40161036c565b60006122496119f5565b9050801580159061225b57506101c754155b156122d65760408051808201909152600081526101c7906020810161227f84613992565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b6123046122f16122e4611951565b65ffffffffffff166125e8565b6122fa84613992565b6101c79190613a26565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b3061234c610b24565b6001600160a01b0316146123de5760005b84518110156123dc57306001600160a01b031685828151811061238257612382615758565b60200260200101516001600160a01b0316036123cc576123cc8382815181106123ad576123ad615758565b60200260200101518051906020012060ff613a4190919063ffffffff16565b6123d581615868565b905061235d565b505b5050505050565b6123de8585858585613a93565b306123fb610b24565b6001600160a01b0316146123de5760ff54600f81810b700100000000000000000000000000000000909204900b13156123de57600060ff556123de565b60006116a48585858561245660408051602081019091526000815290565b611f75565b60008061246783613b21565b9050600481600781111561247d5761247d614f8a565b146124885792915050565b60008381526101f96020526040902054806124a4575092915050565b6101f8546040517f2ab0f529000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252b91906158a0565b1561253a575060079392505050565b6101f8546040517f584b153e000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa15801561259d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c191906158a0565b156125d0575060059392505050565b5060029392505050565b60006116a485858585613c64565b600063ffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b5090565b8154600090818160058111156126c557600061268384613d33565b61268d9085615741565b60008881526020902090915081015463ffffffff90811690871610156126b5578091506126c3565b6126c08160016156bb565b92505b505b60006126d387878585613e1b565b90508015612724576126f8876126ea600184615741565b600091825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611222565b6000979650505050505050565b61012f5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161012f55565b6000336127818184613e79565b6127cd5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161036c565b60006127d7611951565b65ffffffffffff1690506127e9611ba3565b6127f883610a79600185615741565b101561286c5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f77207060448201527f726f706f73616c207468726573686f6c64000000000000000000000000000000606482015260840161036c565b60006128818888888880519060200120611ce5565b905086518851146128fa5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b85518851146129715760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b60008851116129c25760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161036c565b600081815260fe602052604090205467ffffffffffffffff1615612a4e5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c726561647920657869737460448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6000612a586111ab565b612a6290846156bb565b90506000612a6e610b4f565b612a7890836156bb565b90506040518060e00160405280612a8e84613fc9565b67ffffffffffffffff1681526001600160a01b038716602082015260006040820152606001612abc83613fc9565b67ffffffffffffffff9081168252600060208084018290526040808501839052606094850183905288835260fe8252918290208551815492870151878501519186167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317680100000000000000006001600160a01b039094168402177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000060e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c0909401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115612c4657612c46614aa8565b604051908082528060200260200182016040528015612c7957816020015b6060815260200190600190039081612c645790505b508d88888f604051612c93999897969594939291906158c2565b60405180910390a1509098975050505050505050565b606060678054610d1c906154ec565b606060688054610d1c906154ec565b600054610100900460ff16612d445760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b612d8781612d8260408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b614049565b610d0a816140ee565b600054610100900460ff16612e0d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b612e1883838361417b565b505050565b600054610100900460ff16612e9a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b565b600054610100900460ff16612f195760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a81614213565b600054610100900460ff16612f9f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a816142cb565b600054610100900460ff166130255760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a81614348565b600065ffffffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f3820626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b610193546040517f3a46b1a80000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613118573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb919061553f565b80546000908015611b9a57613156836126ea600184615741565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119ee565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606083156132145750816119ee565b6119ee83836143c5565b600081116132945760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060448201527f746f6f206c6f7700000000000000000000000000000000000000000000000000606482015260840161036c565b6101305460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161013055565b6101315460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161013155565b60006064613327836114a2565b610193546040517f8e539e8c000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa15801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae919061553f565b6133b8919061599a565b610b499190615a06565b60007f51159c06000000000000000000000000000000000000000000000000000000007fc6fba1f8000000000000000000000000000000000000000000000000000000007fbf26d897000000000000000000000000000000000000000000000000000000007f79dd796f000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861682148061349c57507fffffffff00000000000000000000000000000000000000000000000000000000868116908216145b806134cb57507fffffffff00000000000000000000000000000000000000000000000000000000868116908516145b8061351757507fffffffff0000000000000000000000000000000000000000000000000000000086167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061135f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008716149695505050505050565b6000610b396143ef565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156135ad5750600090506003613631565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613601573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661362a57600060019250925050613631565b9150600090505b94509492505050565b600081600481111561364e5761364e614f8a565b036136565750565b600181600481111561366a5761366a614f8a565b036136b75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161036c565b60028160048111156136cb576136cb614f8a565b036137185760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161036c565b600381600481111561372c5761372c614f8a565b03610d0a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6000858152610161602090815260408083206001600160a01b0388168452600381019092529091205460ff161561383e5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c72656160448201527f6479206361737400000000000000000000000000000000000000000000000000606482015260840161036c565b6001600160a01b0385166000908152600382016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ff84166138a8578281600001600082825461389d91906156bb565b909155506123dc9050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8516016138e6578281600101600082825461389d91906156bb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff851601613924578281600201600082825461389d91906156bb565b60405162461bcd60e51b815260206004820152603560248201527f476f7665726e6f72566f74696e6753696d706c653a20696e76616c696420766160448201527f6c756520666f7220656e756d20566f7465547970650000000000000000000000606482015260840161036c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156126645760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f3234206269747300000000000000000000000000000000000000000000000000606482015260840161036c565b600080613a34858585614463565b915091505b935093915050565b815470010000000000000000000000000000000090819004600f0b6000818152600180860160205260409091209390935583546fffffffffffffffffffffffffffffffff908116939091011602179055565b6101f8546040517fe38335e50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063e38335e5903490613ae89088908890889060009089906004016155e6565b6000604051808303818588803b158015613b0157600080fd5b505af1158015613b15573d6000803e3d6000fd5b50505050505050505050565b600081815260fe60205260408120600281015460ff1615613b455750600792915050565b6002810154610100900460ff1615613b605750600292915050565b600083815260fe602052604081205467ffffffffffffffff1690819003613bc95760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161036c565b6000613bd3611951565b65ffffffffffff169050808210613bef57506000949350505050565b600085815260fe602052604090206001015467ffffffffffffffff16818110613c1e5750600195945050505050565b613c278661465a565b8015613c4757506000868152610161602052604090208054600190910154115b15613c585750600495945050505050565b50600395945050505050565b600080613c73868686866146a8565b60008181526101f96020526040902054909150156116a4576101f85460008281526101f96020526040908190205490517fc4d252f50000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163c4d252f591613ce89160040190815260200190565b600060405180830381600087803b158015613d0257600080fd5b505af1158015613d16573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600081600003613d4557506000919050565b60006001613d52846147d1565b901c6001901b90506001818481613d6b57613d6b6159d7565b048201901c90506001818481613d8357613d836159d7565b048201901c90506001818481613d9b57613d9b6159d7565b048201901c90506001818481613db357613db36159d7565b048201901c90506001818481613dcb57613dcb6159d7565b048201901c90506001818481613de357613de36159d7565b048201901c90506001818481613dfb57613dfb6159d7565b048201901c90506119ee81828581613e1557613e156159d7565b04614865565b60005b81831015613e71576000613e32848461487b565b60008781526020902090915063ffffffff86169082015463ffffffff161115613e5d57809250613e6b565b613e688160016156bb565b93505b50613e1e565b509392505050565b80516000906034811015613e91576001915050610b49565b8281017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec01517fffffffffffffffffffffffff000000000000000000000000000000000000000081167f2370726f706f7365723d3078000000000000000000000000000000000000000014613f0b57600192505050610b49565b600080613f19602885615741565b90505b83811015613fa857600080613f68888481518110613f3c57613f3c615758565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016614896565b9150915081613f805760019650505050505050610b49565b8060ff166004856001600160a01b0316901b179350505080613fa190615868565b9050613f1c565b50856001600160a01b0316816001600160a01b031614935050505092915050565b600067ffffffffffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f3420626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b600054610100900460ff166140c65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b60676140d28382615a87565b5060686140df8282615a87565b50506000606581905560665550565b600054610100900460ff1661416b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b60fd6141778282615a87565b5050565b600054610100900460ff166141f85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b61420183612731565b61420a8261321e565b612e18816132d7565b600054610100900460ff166142905760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b61019380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600054610100900460ff16610d015760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b600054610100900460ff16611ae55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b8151156143d55781518083602001fd5b8060405162461bcd60e51b815260040161036c9190614caa565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61441a614982565b6144226149db565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8254600090819080156145eb576000614481876126ea600185615741565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16602084015291925090871610156145185760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161036c565b805163ffffffff8088169116036145765784614539886126ea600186615741565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9092169190911790556145db565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b602001519250839150613a399050565b50506040805180820190915263ffffffff80851682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a815291822095519251909316640100000000029190931617920191909155905081613a39565b6000818152610161602052604081206002810154600182015461467d91906156bb565b600084815260fe602052604090205461469f9067ffffffffffffffff16611eae565b11159392505050565b6000806146b786868686611ce5565b905060006146c48261122d565b905060028160078111156146da576146da614f8a565b141580156146fa575060068160078111156146f7576146f7614f8a565b14155b80156147185750600781600781111561471557614715614f8a565b14155b6147645760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161036c565b600082815260fe60205260409081902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906110339084815260200190565b600080608083901c156147e657608092831c92015b604083901c156147f857604092831c92015b602083901c1561480a57602092831c92015b601083901c1561481c57601092831c92015b600883901c1561482e57600892831c92015b600483901c1561484057600492831c92015b600283901c1561485257600292831c92015b600183901c15610b495760010192915050565b600081831061487457816119ee565b5090919050565b600061488a6002848418615a06565b6119ee908484166156bb565b60008060f883901c602f811180156148b15750603a8160ff16105b156148e4576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09091019350915050565b8060ff1660401080156148fa575060478160ff16105b1561492d576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc99091019350915050565b8060ff166060108015614943575060678160ff16105b15614976576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa99091019350915050565b50600093849350915050565b60008061498d612ca9565b8051909150156149a4578051602090910120919050565b60655480156149b35792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806149e6612cb8565b8051909150156149fd578051602090910120919050565b60665480156149b35792915050565b600060208284031215614a1e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119ee57600080fd5b803560ff8116811461142a57600080fd5b60008083601f840112614a7157600080fd5b50813567ffffffffffffffff811115614a8957600080fd5b602083019150836020828501011115614aa157600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0057614b00614aa8565b604052919050565b600067ffffffffffffffff821115614b2257614b22614aa8565b50601f01601f191660200190565b6000614b43614b3e84614b08565b614ad7565b9050828152838383011115614b5757600080fd5b828260208301376000602084830101529392505050565b600082601f830112614b7f57600080fd5b6119ee83833560208501614b30565b60008060008060008060008060e0898b031215614baa57600080fd5b88359750614bba60208a01614a4e565b9650604089013567ffffffffffffffff80821115614bd757600080fd5b614be38c838d01614a5f565b909850965060608b0135915080821115614bfc57600080fd5b50614c098b828c01614b6e565b945050614c1860808a01614a4e565b925060a0890135915060c089013590509295985092959890939650565b600060208284031215614c4757600080fd5b5035919050565b60005b83811015614c69578181015183820152602001614c51565b83811115614c78576000848401525b50505050565b60008151808452614c96816020860160208601614c4e565b601f01601f19169290920160200192915050565b6020815260006119ee6020830184614c7e565b6001600160a01b0381168114610d0a57600080fd5b60008060008060808587031215614ce857600080fd5b8435614cf381614cbd565b93506020850135614d0381614cbd565b925060408501359150606085013567ffffffffffffffff811115614d2657600080fd5b614d3287828801614b6e565b91505092959194509250565b600067ffffffffffffffff821115614d5857614d58614aa8565b5060051b60200190565b600082601f830112614d7357600080fd5b81356020614d83614b3e83614d3e565b82815260059290921b84018101918181019086841115614da257600080fd5b8286015b84811015614dc6578035614db981614cbd565b8352918301918301614da6565b509695505050505050565b600082601f830112614de257600080fd5b81356020614df2614b3e83614d3e565b82815260059290921b84018101918181019086841115614e1157600080fd5b8286015b84811015614dc65780358352918301918301614e15565b600082601f830112614e3d57600080fd5b81356020614e4d614b3e83614d3e565b82815260059290921b84018101918181019086841115614e6c57600080fd5b8286015b84811015614dc657803567ffffffffffffffff811115614e905760008081fd5b614e9e8986838b0101614b6e565b845250918301918301614e70565b60008060008060808587031215614ec257600080fd5b843567ffffffffffffffff80821115614eda57600080fd5b614ee688838901614d62565b95506020870135915080821115614efc57600080fd5b614f0888838901614dd1565b94506040870135915080821115614f1e57600080fd5b50614f2b87828801614e2c565b949793965093946060013593505050565b600080600080600060a08688031215614f5457600080fd5b85359450614f6460208701614a4e565b9350614f7260408701614a4e565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160088310614ff4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561500d57600080fd5b82359150602083013561501f81614cbd565b809150509250929050565b6000806040838503121561503d57600080fd5b8235915061504d60208401614a4e565b90509250929050565b60008060008060006080868803121561506e57600080fd5b8535945061507e60208701614a4e565b9350604086013567ffffffffffffffff8082111561509b57600080fd5b6150a789838a01614a5f565b909550935060608801359150808211156150c057600080fd5b506150cd88828901614b6e565b9150509295509295909350565b600080600080606085870312156150f057600080fd5b8435935061510060208601614a4e565b9250604085013567ffffffffffffffff81111561511c57600080fd5b61512887828801614a5f565b95989497509550505050565b6000806000806080858703121561514a57600080fd5b843567ffffffffffffffff8082111561516257600080fd5b61516e88838901614d62565b9550602087013591508082111561518457600080fd5b61519088838901614dd1565b945060408701359150808211156151a657600080fd5b6151b288838901614e2c565b935060608701359150808211156151c857600080fd5b508501601f810187136151da57600080fd5b614d3287823560208401614b30565b600081518084526020808501945080840160005b83811015615219578151875295820195908201906001016151fd565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061525f60e0830189614c7e565b82810360408401526152718189614c7e565b90508660608401526001600160a01b03861660808401528460a084015282810360c0840152610c4581856151e9565b60008060008060008060c087890312156152b957600080fd5b86356152c481614cbd565b955060208701356152d481614cbd565b95989597505050506040840135936060810135936080820135935060a0909101359150565b60008060006060848603121561530e57600080fd5b833561531981614cbd565b925060208401359150604084013567ffffffffffffffff81111561533c57600080fd5b61534886828701614b6e565b9150509250925092565b60006020828403121561536457600080fd5b81356119ee81614cbd565b600080600080600060a0868803121561538757600080fd5b853561539281614cbd565b945060208601356153a281614cbd565b9350604086013567ffffffffffffffff808211156153bf57600080fd5b6153cb89838a01614dd1565b945060608801359150808211156153e157600080fd5b6153ed89838a01614dd1565b935060808801359150808211156150c057600080fd5b6000806000806060858703121561541957600080fd5b843561542481614cbd565b935060208501359250604085013567ffffffffffffffff81111561511c57600080fd5b6000806040838503121561545a57600080fd5b823561546581614cbd565b946020939093013593505050565b600080600080600060a0868803121561548b57600080fd5b853561549681614cbd565b945060208601356154a681614cbd565b93506040860135925060608601359150608086013567ffffffffffffffff8111156154d057600080fd5b6150cd88828901614b6e565b8183823760009101908152919050565b600181811c9082168061550057607f821691505b602082108103615539577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561555157600080fd5b5051919050565b600081518084526020808501945080840160005b838110156152195781516001600160a01b03168752958201959082019060010161556c565b600081518084526020808501808196508360051b8101915082860160005b858110156155d95782840389526155c7848351614c7e565b988501989350908401906001016155af565b5091979650505050505050565b60a0815260006155f960a0830188615558565b828103602084015261560b81886151e9565b9050828103604084015261561f8187615591565b60608401959095525050608001529392505050565b60c08152600061564760c0830189615558565b828103602084015261565981896151e9565b9050828103604084015261566d8188615591565b60608401969096525050608081019290925260a0909101529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156156ce576156ce61568c565b500190565b6000602082840312156156e557600080fd5b815167ffffffffffffffff8111156156fc57600080fd5b8201601f8101841361570d57600080fd5b805161571b614b3e82614b08565b81815285602083850101111561573057600080fd5b6116a4826020830160208601614c4e565b6000828210156157535761575361568c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561579957600080fd5b815165ffffffffffff811681146119ee57600080fd5b6080815260006157c26080830187615558565b82810360208401526157d481876151e9565b905082810360408401526157e88186615591565b91505082606083015295945050505050565b84815260ff8416602082015282604082015260806060820152600061135f6080830184614c7e565b85815260ff8516602082015283604082015260a06060820152600061584a60a0830185614c7e565b828103608084015261585c8185614c7e565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036158995761589961568c565b5060010190565b6000602082840312156158b257600080fd5b815180151581146119ee57600080fd5b60006101208b835260206001600160a01b038c16818501528160408501526158ec8285018c615558565b91508382036060850152615900828b6151e9565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561595157601f1987840301855261593f838351614c7e565b94860194925090850190600101615923565b505086810360a0880152615965818c615591565b9450505050508560c08401528460e084015282810361010084015261598a8185614c7e565b9c9b505050505050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156159d2576159d261568c565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615a3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b601f821115612e1857600081815260208120601f850160051c81016020861015615a685750805b601f850160051c820191505b818110156123dc57828155600101615a74565b815167ffffffffffffffff811115615aa157615aa1614aa8565b615ab581615aaf84546154ec565b84615a41565b602080601f831160018114615b085760008415615ad25750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556123dc565b600085815260208120601f198616915b82811015615b3757888601518255948401946001909101908401615b18565b5085821015615b7357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c634300080f000a", + "codeHash": "0xf0fad452b83cbe1ab636d54d05583153583b5d43a1e2e417746f46d42fdf89d3", + "code": "0x608060405234801561001057600080fd5b50600436106102925760003560e01c806370a08231116101605780639ab24eb0116100d8578063c4d66de81161008c578063d204c45e11610071578063d204c45e1461056c578063e985e9c51461057f578063f2fde38b146105bb57600080fd5b8063c4d66de814610546578063c87b56dd1461055957600080fd5b8063b45a3c0e116100bd578063b45a3c0e1461050d578063b88d4fde14610520578063c3cda5201461053357600080fd5b80639ab24eb0146104e7578063a22cb465146104fa57600080fd5b806384b0196e1161012f5780638e539e8c116101145780638e539e8c146104ad57806391ddadf4146104c057806395d89b41146104df57600080fd5b806384b0196e146104805780638da5cb5b1461049b57600080fd5b806370a082311461044a578063715018a61461045d5780637ecebe00146104655780638456cb591461047857600080fd5b80633f4ba83a1161020e57806354fd4d50116101c25780635c19a95c116101a75780635c19a95c146104195780635c975abb1461042c5780636352211e1461043757600080fd5b806354fd4d50146103b0578063587cde1e146103ec57600080fd5b806342966c68116101f357806342966c68146103825780634bf5d7e9146103955780634f6ccce71461039d57600080fd5b80633f4ba83a1461036757806342842e0e1461036f57600080fd5b806318160ddd116102655780632f745c591161024a5780632f745c59146103395780633644e5151461034c5780633a46b1a81461035457600080fd5b806318160ddd1461031457806323b872dd1461032657600080fd5b806301ffc9a71461029757806306fdde03146102bf578063081812fc146102d4578063095ea7b3146102ff575b600080fd5b6102aa6102a5366004613dae565b6105ce565b60405190151581526020015b60405180910390f35b6102c761062a565b6040516102b69190613e41565b6102e76102e2366004613e54565b6106bc565b6040516001600160a01b0390911681526020016102b6565b61031261030d366004613e89565b6106e3565b005b6099545b6040519081526020016102b6565b610312610334366004613eb3565b61072f565b610318610347366004613e89565b61077d565b61031861082a565b610318610362366004613e89565b610839565b6103126108e9565b61031261037d366004613eb3565b6108fb565b610312610390366004613e54565b610944565b6102c7610958565b6103186103ab366004613e54565b6109f0565b6102c76040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6102e76103fa366004613eef565b6001600160a01b03908116600090815261019360205260409020541690565b610312610427366004613eef565b610a94565b60fb5460ff166102aa565b6102e7610445366004613e54565b610a9f565b610318610458366004613eef565b610b04565b610312610b9e565b610318610473366004613eef565b610bb0565b610312610bcf565b610488610bdf565b6040516102b69796959493929190613f0a565b61012d546001600160a01b03166102e7565b6103186104bb366004613e54565b610ca3565b6104c8610d3c565b60405165ffffffffffff90911681526020016102b6565b6102c7610d47565b6103186104f5366004613eef565b610d56565b610312610508366004613fbc565b610d78565b6102aa61051b366004613e54565b610dc0565b61031261052e3660046140bb565b610e1a565b610312610541366004614137565b610e6a565b610312610554366004613eef565b610fa0565b6102c7610567366004613e54565b611168565b61031261057a366004614197565b611173565b6102aa61058d3660046141f9565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6103126105c9366004613eef565b6111b6565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb45a3c0e000000000000000000000000000000000000000000000000000000001480610624575061062482611243565b92915050565b6060606580546106399061422c565b80601f01602080910402602001604051908101604052809291908181526020018280546106659061422c565b80156106b25780601f10610687576101008083540402835291602001916106b2565b820191906000526020600020905b81548152906001019060200180831161069557829003601f168201915b5050505050905090565b60006106c782611299565b506000908152606960205260409020546001600160a01b031690565b6101f85460ff1615610721576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072b82826112fd565b5050565b6101f85460ff161561076d576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610778838383611429565b505050565b600061078883610b04565b82106108015760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b60006108346114b0565b905090565b6000610843610d3c565b65ffffffffffff1682106108995760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b757000000000000000000000000060448201526064016107f8565b6108c46108a5836114ba565b6001600160a01b0385166000908152610194602052604090209061153a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b6108f1611604565b6108f961165f565b565b6101f85460ff1615610939576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107788383836116b1565b61094c611604565b610955816116cc565b50565b606043610963610d3c565b65ffffffffffff16146109b85760405162461bcd60e51b815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f6465000000000000000060448201526064016107f8565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b60006109fb60995490565b8210610a6f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016107f8565b60998281548110610a8257610a82614279565b90600052602060002001549050919050565b3361072b81836116d5565b6000818152606760205260408120546001600160a01b0316806106245760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f8565b60006001600160a01b038216610b825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016107f8565b506001600160a01b031660009081526068602052604090205490565b610ba6611604565b6108f96000611760565b6001600160a01b03811660009081526101966020526040812054610624565b610bd7611604565b6108f96117cb565b60006060806000806000606061015f546000801b148015610c01575061016054155b610c4d5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064016107f8565b610c55611808565b610c5d611818565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610cad610d3c565b65ffffffffffff168210610d035760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b757000000000000000000000000060448201526064016107f8565b610d18610d0f836114ba565b6101959061153a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b600061083443611828565b6060606680546106399061422c565b6001600160a01b038116600090815261019460205260408120610d18906118a6565b6101f85460ff1615610db6576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072b82826118f6565b6000818152606760205260408120546001600160a01b0316610e0e576040517fae9a63f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50506101f85460ff1690565b6101f85460ff1615610e58576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e6484848484611901565b50505050565b83421115610eba5760405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e61747572652065787069726564000000000000000060448201526064016107f8565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610f3490610f2c9060a00160405160208183030381529060405280519060200120611989565b8585856119d1565b9050610f3f816119fb565b8614610f8d5760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e636500000000000000000000000060448201526064016107f8565b610f9781886116d5565b50505050505050565b600054610100900460ff1615808015610fc05750600054600160ff909116105b80610fda5750303b158015610fda575060005460ff166001145b61104c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107f8565b6000805460ff19166001179055801561108c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6111016040518060400160405280601481526020017f4b726f6d615365637572697479436f756e63696c0000000000000000000000008152506040518060400160405280600381526020017f4b5343000000000000000000000000000000000000000000000000000000000081525084611a24565b801561072b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b606061062482611b1d565b61117b611604565b60006111876101f75490565b90506111986101f780546001019055565b6111a28382611c4a565b6111ac8183611c64565b61077883846116d5565b6111be611604565b6001600160a01b03811661123a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107f8565b61095581611760565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f49064906000000000000000000000000000000000000000000000000000000001480610624575061062482611d37565b6000818152606760205260409020546001600160a01b03166109555760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f8565b600061130882610a9f565b9050806001600160a01b0316836001600160a01b0316036113915760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b336001600160a01b03821614806113ad57506113ad813361058d565b61141f5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107f8565b6107788383611d8d565b6114333382611e13565b6114a55760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107f8565b610778838383611e91565b6000610834612105565b600063ffffffff8211156115365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f322062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b5090565b81546000908181600581111561159757600061155584612179565b61155f90856142d7565b60008881526020902090915081015463ffffffff908116908716101561158757809150611595565b6115928160016142ee565b92505b505b60006115a587878585612261565b905080156115f6576115ca876115bc6001846142d7565b600091825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166115f9565b60005b979650505050505050565b61012d546001600160a01b031633146108f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f8565b6116676122bf565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61077883838360405180602001604052806000815250610e1a565b61095581612311565b6001600160a01b038281166000818152610193602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610778818361175b86612351565b61235c565b61012d80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6117d361251e565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116943390565b606061016180546106399061422c565b606061016280546106399061422c565b600065ffffffffffff8211156115365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f382062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b805460009080156118ec576118c0836115bc6001846142d7565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166118ef565b60005b9392505050565b61072b338383612571565b61190b3383611e13565b61197d5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107f8565b610e648484848461263f565b60006106246119966114b0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006119e2878787876126c8565b915091506119ef816127aa565b5090505b949350505050565b6001600160a01b0381166000908152610196602052604090208054600181018255905b50919050565b600054610100900460ff16611aa15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b611aab600161290f565b611ab583836129a0565b611abd612a27565b611ac5612a27565b611acd612aa4565b611b0c836040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612b29565b611b14612a27565b61077881611760565b6060611b2882611299565b600082815260c9602052604081208054611b419061422c565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6d9061422c565b8015611bba5780601f10611b8f57610100808354040283529160200191611bba565b820191906000526020600020905b815481529060010190602001808311611b9d57829003601f168201915b505050505090506000611bfd60408051808201909152601d81527f68747470733a2f2f6e66742e6b726f6d612e6e6574776f726b2f73632f000000602082015290565b90508051600003611c0f575092915050565b815115611c41578082604051602001611c29929190614306565b60405160208183030381529060405292505050919050565b6119f384612bb0565b61072b828260405180602001604052806000815250612c48565b6000828152606760205260409020546001600160a01b0316611cee5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e00000000000000000000000000000000000060648201526084016107f8565b600082815260c960205260409020611d068282614383565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200161115c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610624575061062482612cd1565b600081815260696020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190611dda82610a9f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611e1f83610a9f565b9050806001600160a01b0316846001600160a01b03161480611e6657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806119f35750836001600160a01b0316611e7f846106bc565b6001600160a01b031614949350505050565b826001600160a01b0316611ea482610a9f565b6001600160a01b031614611f205760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038216611f9b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f8565b611fa88383836001612db4565b826001600160a01b0316611fbb82610a9f565b6001600160a01b0316146120375760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f8565b600081815260696020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b038781168086526068855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46107788383836001612dc8565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612130612dd4565b612138612e2e565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008160000361218b57506000919050565b6000600161219884612e60565b901c6001901b905060018184816121b1576121b161449d565b048201901c905060018184816121c9576121c961449d565b048201901c905060018184816121e1576121e161449d565b048201901c905060018184816121f9576121f961449d565b048201901c905060018184816122115761221161449d565b048201901c905060018184816122295761222961449d565b048201901c905060018184816122415761224161449d565b048201901c90506118ef8182858161225b5761225b61449d565b04612ef4565b60005b818310156122b75760006122788484612f0a565b60008781526020902090915063ffffffff86169082015463ffffffff1611156122a3578092506122b1565b6122ae8160016142ee565b93505b50612264565b509392505050565b60fb5460ff166108f95760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107f8565b61231a81612f25565b600081815260c96020526040902080546123339061422c565b15905061095557600081815260c96020526040812061095591613d36565b600061062482610b04565b816001600160a01b0316836001600160a01b03161415801561237e5750600081115b15610778576001600160a01b03831615612451576001600160a01b03831660009081526101946020526040812081906123c2906130086123bd86613014565b6130a8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612446929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610778576001600160a01b038216600090815261019460205260408120819061248b906130f16123bd86613014565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161250f929190918252602082015260400190565b60405180910390a25050505050565b60fb5460ff16156108f95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016107f8565b816001600160a01b0316836001600160a01b0316036125d25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107f8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61264a848484611e91565b612656848484846130fd565b610e645760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126ff57506000905060036127a1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612753573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b03811661279a576000600192509250506127a1565b9150600090505b94509492505050565b60008160048111156127be576127be6144cc565b036127c65750565b60018160048111156127da576127da6144cc565b036128275760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107f8565b600281600481111561283b5761283b6144cc565b036128885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107f8565b600381600481111561289c5761289c6144cc565b036109555760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b600054610100900460ff1661298c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6101f8805460ff1916911515919091179055565b600054610100900460ff16612a1d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b61072b82826132b9565b600054610100900460ff166108f95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b600054610100900460ff16612b215760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6108f961334f565b600054610100900460ff16612ba65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b61072b82826133d8565b6060612bbb82611299565b6000612bf760408051808201909152601d81527f68747470733a2f2f6e66742e6b726f6d612e6e6574776f726b2f73632f000000602082015290565b90506000815111612c1757604051806020016040528060008152506118ef565b80612c2184613481565b604051602001612c32929190614306565b6040516020818303038152906040529392505050565b612c52838361353f565b612c5f60008484846130fd565b6107785760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480612d6457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061062457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610624565b612dbc61251e565b610e64848484846136fa565b610e6484848484613836565b600080612ddf611808565b805190915015612df6578051602090910120919050565b61015f548015612e065792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080612e39611818565b805190915015612e50578051602090910120919050565b610160548015612e065792915050565b600080608083901c15612e7557608092831c92015b604083901c15612e8757604092831c92015b602083901c15612e9957602092831c92015b601083901c15612eab57601092831c92015b600883901c15612ebd57600892831c92015b600483901c15612ecf57600492831c92015b600283901c15612ee157600292831c92015b600183901c156106245760010192915050565b6000818310612f0357816118ef565b5090919050565b6000612f1960028484186144fb565b6118ef908484166142ee565b6000612f3082610a9f565b9050612f40816000846001612db4565b612f4982610a9f565b600083815260696020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b0385168085526068845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461072b816000846001612dc8565b60006118ef8284614536565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156115365760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016107f8565b6000806130e46130c66130b9610d3c565b65ffffffffffff166114ba565b6130dc6130d2886118a6565b868863ffffffff16565b879190613846565b915091505b935093915050565b60006118ef8284614573565b60006001600160a01b0384163b156132b1576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a029061315a9033908990889088906004016145aa565b6020604051808303816000875af19250505080156131b3575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526131b0918101906145e6565b60015b613266573d8080156131e1576040519150601f19603f3d011682016040523d82523d6000602084013e6131e6565b606091505b50805160000361325e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506119f3565b5060016119f3565b600054610100900460ff166133365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b60656133428382614383565b5060666107788282614383565b600054610100900460ff166133cc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b60fb805460ff19169055565b600054610100900460ff166134555760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6101616134628382614383565b506101626134708282614383565b5050600061015f8190556101605550565b6060600061348e83613854565b600101905060008167ffffffffffffffff8111156134ae576134ae613ff8565b6040519080825280601f01601f1916602001820160405280156134d8576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846134e257509392505050565b6001600160a01b0382166135955760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f8565b6000818152606760205260409020546001600160a01b0316156135fa5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b613608600083836001612db4565b6000818152606760205260409020546001600160a01b03161561366d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461072b600083836001612dc8565b60018111156137715760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016107f8565b816001600160a01b0385166137cd576137c881609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6137f0565b836001600160a01b0316856001600160a01b0316146137f0576137f08582613936565b6001600160a01b03841661380c57613807816139d3565b61382f565b846001600160a01b0316846001600160a01b03161461382f5761382f8482613a82565b5050505050565b613841848483613ac6565b610e64565b6000806130e4858585613b3f565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061389d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106138c9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106138e757662386f26fc10000830492506010015b6305f5e10083106138ff576305f5e100830492506008015b612710831061391357612710830492506004015b60648310613925576064830492506002015b600a83106106245760010192915050565b6000600161394384610b04565b61394d91906142d7565b6000838152609860205260409020549091508082146139a0576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906139e5906001906142d7565b6000838152609a602052604081205460998054939450909284908110613a0d57613a0d614279565b906000526020600020015490508060998381548110613a2e57613a2e614279565b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613a6657613a66614603565b6001900381819060005260206000200160009055905550505050565b6000613a8d83610b04565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160a01b038316613ae957613ae66101956130f16123bd84613014565b50505b6001600160a01b038216613b0c57613b096101956130086123bd84613014565b50505b6001600160a01b03838116600090815261019360205260408082205485841683529120546107789291821691168361235c565b825460009081908015613cc7576000613b5d876115bc6001856142d7565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208401529192509087161015613bf45760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016107f8565b805163ffffffff808816911603613c525784613c15886115bc6001866142d7565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff909216919091179055613cb7565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b6020015192508391506130e99050565b50506040805180820190915263ffffffff80851682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a8152918220955192519093166401000000000291909316179201919091559050816130e9565b508054613d429061422c565b6000825580601f10613d52575050565b601f01602090049060005260206000209081019061095591905b808211156115365760008155600101613d6c565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461095557600080fd5b600060208284031215613dc057600080fd5b81356118ef81613d80565b60005b83811015613de6578181015183820152602001613dce565b83811115610e645750506000910152565b60008151808452613e0f816020860160208601613dcb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006118ef6020830184613df7565b600060208284031215613e6657600080fd5b5035919050565b80356001600160a01b0381168114613e8457600080fd5b919050565b60008060408385031215613e9c57600080fd5b613ea583613e6d565b946020939093013593505050565b600080600060608486031215613ec857600080fd5b613ed184613e6d565b9250613edf60208501613e6d565b9150604084013590509250925092565b600060208284031215613f0157600080fd5b6118ef82613e6d565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152613f4660e084018a613df7565b8381036040850152613f58818a613df7565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015613faa57835183529284019291840191600101613f8e565b50909c9b505050505050505050505050565b60008060408385031215613fcf57600080fd5b613fd883613e6d565b915060208301358015158114613fed57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561404257614042613ff8565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561408857614088613ff8565b816040528093508581528686860111156140a157600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156140d157600080fd5b6140da85613e6d565b93506140e860208601613e6d565b925060408501359150606085013567ffffffffffffffff81111561410b57600080fd5b8501601f8101871361411c57600080fd5b61412b87823560208401614027565b91505092959194509250565b60008060008060008060c0878903121561415057600080fd5b61415987613e6d565b95506020870135945060408701359350606087013560ff8116811461417d57600080fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156141aa57600080fd5b6141b383613e6d565b9150602083013567ffffffffffffffff8111156141cf57600080fd5b8301601f810185136141e057600080fd5b6141ef85823560208401614027565b9150509250929050565b6000806040838503121561420c57600080fd5b61421583613e6d565b915061422360208401613e6d565b90509250929050565b600181811c9082168061424057607f821691505b602082108103611a1e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156142e9576142e96142a8565b500390565b60008219821115614301576143016142a8565b500190565b60008351614318818460208801613dcb565b83519083019061432c818360208801613dcb565b01949350505050565b601f82111561077857600081815260208120601f850160051c8101602086101561435c5750805b601f850160051c820191505b8181101561437b57828155600101614368565b505050505050565b815167ffffffffffffffff81111561439d5761439d613ff8565b6143b1816143ab845461422c565b84614335565b602080601f83116001811461440457600084156143ce5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561437b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561445157888601518255948401946001909101908401614432565b508582101561448d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082614531577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381169083168181101561456b5761456b6142a8565b039392505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851680830382111561432c5761432c6142a8565b60006001600160a01b038087168352808616602084015250836040830152608060608301526145dc6080830184613df7565b9695505050505050565b6000602082840312156145f857600080fd5b81516118ef81613d80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "ff" }, - "key": "0x34aa4e0650a1aba101d77c9fada710ca3c47daa0685afb73e974afd9dadfa187" + "key": "0x0f1928bb1bf8b255a1c91f2ecf2c0d3f779efe8132a79cb298c332da9d5daadf" }, "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1": { "balance": "0", "nonce": 1, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0x3bc2430cf882220272199488869834ed1ebb7684fb14afb0fbcfd40f5505edf7", - "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806312e64a7214610046578063c423b1e81461006e578063dc8b50381461008f575b600080fd5b6100596100543660046117b2565b6100db565b60405190151581526020015b60405180910390f35b61008161007c366004611827565b6101a6565b6040516100659291906118f1565b6100b67f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610065565b6040517fc423b1e800000000000000000000000000000000000000000000000000000000815260009081908190309063c423b1e890610122908a908990899060040161190c565b600060405180830381865afa15801561013f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610185919081019061199c565b9150915081801561019b575061019b868261074b565b979650505050505050565b600060606002845110156102275760405162461bcd60e51b815260206004820152602960248201527f5a4b4d65726b6c65547269653a2070726f76696465642070726f6f662069732060448201527f746f6f2073686f7274000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61027e84600186516102399190611a5d565b8151811061024957610249611a74565b602002602001015180516020909101207f950654da67865a81bc70e45f3230f5179f08e29c66184bf746f71050f117b3b81490565b6102f05760405162461bcd60e51b815260206004820152602d60248201527f5a4b4d65726b6c65547269653a20746865206c617374206974656d206973206e60448201527f6f74206d61676963206861736800000000000000000000000000000000000000606482015260840161021e565b60006102fb86610767565b9050600061030886610846565b90506103526040805161010081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e09091015290565b60408051602081019091526000808252835190918291829190829061037990600290611a5d565b90505b86818151811061038e5761038e611a74565b6020026020010151602001519550600060038111156103af576103af611aa3565b865160038111156103c2576103c2611aa3565b036104a05760006103d38983610939565b90508015610433578660200151861461042e5760405162461bcd60e51b815260206004820152601b60248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b6579204c0000000000604482015260640161021e565b610486565b866040015186146104865760405162461bcd60e51b815260206004820152601b60248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b657920520000000000604482015260640161021e565b61049887602001518860400151610996565b9550506106b5565b6001865160038111156104b5576104b5611aa3565b0361061857831580156104c6575082155b6105385760405162461bcd60e51b815260206004820152602660248201527f5a4b4d65726b6c65547269653a206475706c696361746564207465726d696e6160448201527f6c206e6f64650000000000000000000000000000000000000000000000000000606482015260840161021e565b87866060015114935083156107385761056b600160001b87606001516105668960a001518a60800151610a63565b610bff565b6080870151805160208102825260e0890151929750909350839115610611578e8860e00151148061059f5750898860e00151145b6106115760405162461bcd60e51b815260206004820152602260248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b657920707265696d6160448201527f6765000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b50506106b5565b60028651600381111561062d5761062d611aa3565b036106b5578315801561063e575082155b6106b05760405162461bcd60e51b815260206004820152602660248201527f5a4b4d65726b6c65547269653a206475706c696361746564207465726d696e6160448201527f6c206e6f64650000000000000000000000000000000000000000000000000000606482015260840161021e565b600192505b80600003610711578a851461070c5760405162461bcd60e51b815260206004820152601960248201527f5a4b4d65726b65547269653a20696e76616c696420726f6f7400000000000000604482015260640161021e565b610738565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161037c565b50919b919a509098505050505050505050565b6000818051906020012083805190602001201490505b92915050565b600080600061077584610d77565b6040805180820182528381526020810183905290517f299e566000000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016169163299e5660916107fd91600401611ad2565b602060405180830381865afa15801561081a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083e9190611b03565b949350505050565b805160609060008167ffffffffffffffff811115610866576108666115f9565b60405190808252806020026020018201604052801561089f57816020015b61088c61159a565b8152602001906001900390816108845790505b50905060005b6108b0600184611a5d565b8110156109315760006108db8683815181106108ce576108ce611a74565b6020026020010151610d9f565b905060405180604001604052808784815181106108fa576108fa611a74565b602002602001015181526020018281525083838151811061091d5761091d611a74565b6020908102919091010152506001016108a5565b509392505050565b6000610100821061098c5760405162461bcd60e51b815260206004820152601c60248201527f5a4b4d65726b6c65547269653a20746f6f206c6f6e6720646570746800000000604482015260640161021e565b506001901b161590565b6040805180820182528381526020810183905290517f299e566000000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016169163299e566091610a1b91600401611ad2565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190611b03565b9392505050565b6000600182511015610add5760405162461bcd60e51b815260206004820152602b60248201527f5a4b547269654861736865723a20746f6f206665772076616c75657320666f7260448201527f205f76616c756548617368000000000000000000000000000000000000000000606482015260840161021e565b6000825167ffffffffffffffff811115610af957610af96115f9565b604051908082528060200260200182016040528015610b22578160200160208202803683370190505b50905060005b8351811015610bc8576001811b851663ffffffff1615610b8757610b64848281518110610b5757610b57611a74565b6020026020010151610767565b828281518110610b7657610b76611a74565b602002602001018181525050610bc0565b838181518110610b9957610b99611a74565b6020026020010151828281518110610bb357610bb3611a74565b6020026020010181815250505b600101610b28565b50600283511015610bf65780600081518110610be657610be6611a74565b6020026020010151915050610761565b61083e81611122565b6040805180820182528481526020810184905290517f299e56600000000000000000000000000000000000000000000000000000000081526000917f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970169173ffffffffffffffffffffffffffffffffffffffff83169163299e566091610c879190600401611ad2565b602060405180830381865afa158015610ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc89190611b03565b6040805180820182528281526020810186905290517f299e566000000000000000000000000000000000000000000000000000000000815291965073ffffffffffffffffffffffffffffffffffffffff83169163299e566091610d2d91600401611ad2565b602060405180830381865afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e9190611b03565b95945050505050565b60008082608081901b610d8a8260801c90565b610d948260801c90565b935093505050915091565b60408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e081019190915260408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e08101919091526000610e53846040805180820182526060815260006020918201528151808301909252828101825291519181019190915290565b90506000610e608261130c565b60ff16905080610e8b57610e7382611393565b6020840152610e8182611393565b60408401526110de565b6001810361101857610e9c82611393565b6060840152600080610ead84611431565b60ff16915091508163ffffffff166001148015610eca5750806001145b80610ee657508163ffffffff166004148015610ee65750806004145b610f585760405162461bcd60e51b815260206004820152602360248201527f4e6f64655265616465723a20696e76616c696420636f6d70726573736564466c60448201527f6167730000000000000000000000000000000000000000000000000000000000606482015260840161021e565b63ffffffff821660a08601528067ffffffffffffffff811115610f7d57610f7d6115f9565b604051908082528060200260200182016040528015610fa6578160200160208202803683370190505b50608086015260005b81811015610fe957610fc085611393565b86608001518281518110610fd657610fd6611a74565b6020908102919091010152600101610faf565b506000610ff58561130c565b60ff16905080156110105761100a85826114cb565b60e08701525b5050506110de565b600281146110de57600381036110965760405162461bcd60e51b815260206004820152602560248201527f4e6f64655265616465723a20756e657870656374656420726f6f74206e6f646560448201527f2074797065000000000000000000000000000000000000000000000000000000606482015260840161021e565b60405162461bcd60e51b815260206004820152601d60248201527f4e6f64655265616465723a20696e76616c6964206e6f64652074797065000000604482015260640161021e565b8060038111156110f0576110f0611aa3565b8390600381111561110357611103611aa3565b9081600381111561111657611116611aa3565b90525091949350505050565b600060048251101561119c5760405162461bcd60e51b815260206004820152602b60248201527f5a4b547269654861736865723a20746f6f206665772076616c75657320666f7260448201527f205f68617368456c656d73000000000000000000000000000000000000000000606482015260840161021e565b81517f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b970169060009081906001906002905b808310156112e457600094505b808510156112d6578285019350808410156112cd578573ffffffffffffffffffffffffffffffffffffffff1663299e566060405180604001604052808b898151811061122757611227611a74565b602002602001015181526020018b888151811061124657611246611a74565b60200260200101518152506040518263ffffffff1660e01b815260040161126d9190611ad2565b602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611b03565b8886815181106112c0576112c0611a74565b6020026020010181815250505b938101936111d9565b909150600182901b906111cc565b876000815181106112f7576112f7611a74565b60200260200101519650505050505050919050565b60006001826020015110156113635760405162461bcd60e51b815260206004820152601f60248201527f4e6f64655265616465723a20746f6f2073686f727420666f722075696e743800604482015260640161021e565b81518051600180830180865260208601805191949360f81c9291611388908390611a5d565b905250949350505050565b60006020826020015110156114105760405162461bcd60e51b815260206004820152602160248201527f4e6f64655265616465723a20746f6f2073686f727420666f722062797465733360448201527f3200000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b81518051602080830180865281860180519194939291611388908390611a5d565b6000806004836020015110156114895760405162461bcd60e51b815260206004820181905260248201527f4e6f64655265616465723a20746f6f2073686f727420666f722075696e743332604482015260640161021e565b8251805160048083018087526020870180519194939260f084901c9260f885901c92906114b7908390611a5d565b90525060ff90911697909650945050505050565b600081836020015110156115475760405162461bcd60e51b815260206004820152602160248201527f4e6f64655265616465723a20746f6f2073686f727420666f72206e206279746560448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b825160609060008061155a866008611b1c565b61156690610100611a5d565b8351848801808a5260208a01805191975091831c9450919250879161158c908390611a5d565b905250909695505050505050565b6040518060400160405280606081526020016115f46040805161010081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e09091015290565b905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561166f5761166f6115f9565b604052919050565b600067ffffffffffffffff821115611691576116916115f9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126116ce57600080fd5b81356116e16116dc82611677565b611628565b8181528460208386010111156116f657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261172457600080fd5b8135602067ffffffffffffffff80831115611741576117416115f9565b8260051b611750838201611628565b938452858101830193838101908886111561176a57600080fd5b84880192505b858310156117a6578235848111156117885760008081fd5b6117968a87838c01016116bd565b8352509184019190840190611770565b98975050505050505050565b600080600080608085870312156117c857600080fd5b84359350602085013567ffffffffffffffff808211156117e757600080fd5b6117f3888389016116bd565b9450604087013591508082111561180957600080fd5b5061181687828801611713565b949793965093946060013593505050565b60008060006060848603121561183c57600080fd5b83359250602084013567ffffffffffffffff81111561185a57600080fd5b61186686828701611713565b925050604084013590509250925092565b60005b8381101561189257818101518382015260200161187a565b838111156118a1576000848401525b50505050565b600081518084526118bf816020860160208601611877565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b821515815260406020820152600061083e60408301846118a7565b600060608201858352602060608185015281865180845260808601915060808160051b870101935082880160005b82811015611986577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808887030184526119748683516118a7565b9550928401929084019060010161193a565b5050505050604092909201929092529392505050565b600080604083850312156119af57600080fd5b825180151581146119bf57600080fd5b602084015190925067ffffffffffffffff8111156119dc57600080fd5b8301601f810185136119ed57600080fd5b80516119fb6116dc82611677565b818152866020838501011115611a1057600080fd5b611a21826020830160208601611877565b8093505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611a6f57611a6f611a2e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408101818360005b6002811015611afa578151835260209283019290910190600101611adb565b50505092915050565b600060208284031215611b1557600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b5457611b54611a2e565b50029056fea164736f6c634300080f000a", + "codeHash": "0x354b26999e434f8256d168395315e1f51fc15bf49bf2e6bb58fc549bd597e7da", + "code": "0x7c010000000000000000000000000000000000000000000000000000000060003504806329a5f2f6149063299e566014176200003757fe5b7f109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b6020527f16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e06040527f2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d6060527f2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd7716080527f2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe2360a0527f101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa60c0527f143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a760e0527f176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911610100527f19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0610120527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016024356004356000837f0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e82089050837f00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e86483089150837f08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f58408925083818180828009800909905083828180828009800909915083838180828009800909925062000249600052620025ba565b837f2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d082089050837f2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf283089150837f0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa84089250838181808280098009099050838281808280098009099150838381808280098009099250620002ec600052620025ba565b837f28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d82089050837f2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb7883089150837f234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632840892508381818082800980090990508382818082800980090991508383818082800980090992506200038f600052620025ba565b837f15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d42882089050837f0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f683089150837f1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c8408925083818180828009800909905083828180828009800909915083838180828009800909925062000432600052620025ba565b837f10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de55982089050837f1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f683089150837f1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c870584089250838181808280098009099050620004bd600052620025ba565b837f04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d82089050837f0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be82883089150837f099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b98408925083818180828009800909905062000548600052620025ba565b837f052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa682089050837f0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc83089150837f119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd184089250838181808280098009099050620005d3600052620025ba565b837f03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d0982089050837f2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea56583089150837f005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9840892508381818082800980090990506200065e600052620025ba565b837f233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b582089050837f05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d6028083089150837f0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b84089250838181808280098009099050620006e9600052620025ba565b837f2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec082089050837f1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c46083089150837f12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc08408925083818180828009800909905062000774600052620025ba565b837f0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e82089050837f037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f844883089150837f05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f84089250838181808280098009099050620007ff600052620025ba565b837f29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e82089050837f20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f83089150837f2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887840892508381818082800980090990506200088a600052620025ba565b837f143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c882089050837f0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf183089150837f028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da538408925083818180828009800909905062000915600052620025ba565b837f2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c82089050837f0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e83089150837f2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb3884089250838181808280098009099050620009a0600052620025ba565b837f30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a73520682089050837f1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad83089150837f10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c8408925083818180828009800909905062000a2b600052620025ba565b837f2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef82089050837f1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c9183089150837f07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a08408925083818180828009800909905062000ab6600052620025ba565b837f21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c075082089050837f2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e83089150837f2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e8408925083818180828009800909905062000b41600052620025ba565b837f162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab82089050837f2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a7009239331183089150837f2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a8408925083818180828009800909905062000bcc600052620025ba565b837f1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da982089050837f204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c456552983089150837f0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c5028408925083818180828009800909905062000c57600052620025ba565b837f174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b5482089050837f1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef83089150837f066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a8408925083818180828009800909905062000ce2600052620025ba565b837f2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd80482089050837f13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd64983089150837f1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a8408925083818180828009800909905062000d6d600052620025ba565b837f00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff182089050837f0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d383089150837f29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba898408925083818180828009800909905062000df8600052620025ba565b837f2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be82089050837f1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af183089150837f151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c58408925083818180828009800909905062000e83600052620025ba565b837f04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f10082089050837f13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c296783089150837f01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e48408925083818180828009800909905062000f0e600052620025ba565b837f2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b0282089050837f1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b64683089150837f041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d8408925083818180828009800909905062000f99600052620025ba565b837f154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc682089050837f0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da483089150837f0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e8408925083818180828009800909905062001024600052620025ba565b837f06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea065462682089050837f0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb83089150837f04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e1384089250838181808280098009099050620010af600052620025ba565b837f2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b375882089050837f123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef83089150837f2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9840892508381818082800980090990506200113a600052620025ba565b837f0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d82089050837f12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f283089150837f21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a9003584089250838181808280098009099050620011c5600052620025ba565b837f16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b14782089050837f1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac283089150837f07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a8408925083818180828009800909905062001250600052620025ba565b837f05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc82089050837f20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f83089150837f04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db6984089250838181808280098009099050620012db600052620025ba565b837f27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a82089050837f2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d183089150837f1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b88408925083818180828009800909905062001366600052620025ba565b837f15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a82089050837f1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c78583089150837f25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c7784089250838181808280098009099050620013f1600052620025ba565b837f15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a6782089050837f2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c7172783089150837f002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b840892508381818082800980090990506200147c600052620025ba565b837f2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d282089050837f00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe83089150837f0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c35128408925083818180828009800909905062001507600052620025ba565b837f00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d82089050837f171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda983089150837f170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a8088408925083818180828009800909905062001592600052620025ba565b837f29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae182089050837f1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e6497383089150837f1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09840892508381818082800980090990506200161d600052620025ba565b837f22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af3882089050837f0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd83089150837f11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e828484089250838181808280098009099050620016a8600052620025ba565b837f1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af82089050837f2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee46683089150837f3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad8408925083818180828009800909905062001733600052620025ba565b837f2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c822514508682089050837f119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c383089150837f1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd80084089250838181808280098009099050620017be600052620025ba565b837f28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb682089050837f083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e783089150837f0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b8408925083818180828009800909905062001849600052620025ba565b837f0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b82089050837f2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c9859183089150837f0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f17884089250838181808280098009099050620018d4600052620025ba565b837f0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d4082089050837f1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d483089150837f0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233840892508381818082800980090990506200195f600052620025ba565b837f0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b16887382089050837f1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d83089150837f2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc084089250838181808280098009099050620019ea600052620025ba565b837f1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb82089050837f01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f932647887583089150837f1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e8408925083818180828009800909905062001a75600052620025ba565b837f2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f01982089050837f23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b83089150837f2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d598408925083818180828009800909905062001b00600052620025ba565b837f0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f82089050837f2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a883089150837f15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f889488408925083818180828009800909905062001b8b600052620025ba565b837f193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f82089050837f2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f83089150837f1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d1428408925083818180828009800909905062001c16600052620025ba565b837f04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b82089050837f0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f2383089150837f058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c08408925083818180828009800909905062001ca1600052620025ba565b837f1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a82089050837f03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b583089150837f23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a588408925083818180828009800909905062001d2c600052620025ba565b837f0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f282089050837f06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b83089150837f118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d018408925083818180828009800909905062001db7600052620025ba565b837f13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b182089050837f169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b83089150837f04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d8408925083818180828009800909905062001e42600052620025ba565b837f256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec82089050837f30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb283089150837f10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc7928408925083818180828009800909905062001ecd600052620025ba565b837f193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e3686082089050837f18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d83089150837f29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea61118408925083818180828009800909905062001f58600052620025ba565b837f10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c71182089050837f0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb83089150837f16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa3368408925083818180828009800909905062001fe3600052620025ba565b837f0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a82089050837f1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf186083089150837f0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6840892508381818082800980090990506200206e600052620025ba565b837f161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b82089050837f0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b83089150837f1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f45184089250838181808280098009099050620020f9600052620025ba565b837f2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c55682089050837f1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f7083089150837f2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf778408925083818180828009800909905062002184600052620025ba565b837f23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea82089050837f09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d83089150837f188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630840892508381818082800980090990506200220f600052620025ba565b837f3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f82089050837f15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd7883089150837f1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc840892508381818082800980090990506200229a600052620025ba565b837f2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb82089050837f202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d6083089150837f096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f8408925083818180828009800909905062002325600052620025ba565b837f054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a482089050837f1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f183089150837f21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc84089250838181808280098009099050838281808280098009099150838381808280098009099250620023c8600052620025ba565b837f1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf0882089050837f0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb2410083089150837f1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320840892508381818082800980090990508382818082800980090991508383818082800980090992506200246b600052620025ba565b837f0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad87082089050837f193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba83089150837f102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8840892508381818082800980090990508382818082800980090991508383818082800980090992506200250e600052620025ba565b837f0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab182089050837f216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d2283089150837f1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e422832516184089250838181808280098009099050838281808280098009099150838381808280098009099250620025b1600052620025ba565b60005260206000f35b8360205182098460405184098591088460605185098591088460805183098560a05185098691088560c05186098691088560e0518409866101005186098791088661012051870987910894509250905060005156", "key": "0x7cb5c2b5a0b80e4fad4cf89bdd73a61db77d1c6dc957bae688b8b7bba3f76422" }, - "0x99bba657f2bbc93c02d617f8ba121cb8fc104acf": { - "balance": "0", - "nonce": 1, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0x6392b39a2ab7ae88e9e6bf7712fc0514edd1c6b5e1053e2836765fb0f11c3729", - "code": "0x6080604052600436106101d15760003560e01c80638065657f116100f7578063bc197c8111610095578063d547741f11610064578063d547741f1461068a578063e38335e5146106aa578063f23a6e61146106bd578063f27a0c921461070257600080fd5b8063bc197c81146105d8578063c4c4c7b31461061d578063c4d252f51461063d578063d45c44351461065d57600080fd5b806391d14854116100d157806391d148541461051c578063a217fddf1461056f578063b08e51c014610584578063b1c5f427146105b857600080fd5b80638065657f146104a85780638f2a0bb0146104c85780638f61f4f5146104e857600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe146103f257806354fd4d5014610412578063584b153e1461046857806364d623531461048857600080fd5b8063248a9ca3146103525780632ab0f529146103825780632f2ff15d146103b257806331d50750146103d257600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610276578063134008d3146102aa57806313bc9f20146102bd578063150b7a02146102dd57600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612019565b610717565b005b34801561020b57600080fd5b5061021f61021a36600461208e565b6107ed565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b506102687fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60405190815260200161022b565b34801561028257600080fd5b506102687f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101fd6102b83660046120d0565b610849565b3480156102c957600080fd5b5061021f6102d836600461213c565b610941565b3480156102e957600080fd5b506103216102f8366004612261565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161022b565b34801561035e57600080fd5b5061026861036d36600461213c565b60009081526065602052604090206001015490565b34801561038e57600080fd5b5061021f61039d36600461213c565b60009081526097602052604090205460011490565b3480156103be57600080fd5b506101fd6103cd3660046122c9565b610967565b3480156103de57600080fd5b5061021f6103ed36600461213c565b610991565b3480156103fe57600080fd5b506101fd61040d3660046122c9565b6109aa565b34801561041e57600080fd5b5061045b6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161022b9190612321565b34801561047457600080fd5b5061021f61048336600461213c565b610a48565b34801561049457600080fd5b506101fd6104a336600461213c565b610a5f565b3480156104b457600080fd5b506102686104c33660046120d0565b610b15565b3480156104d457600080fd5b506101fd6104e33660046123b7565b610b54565b3480156104f457600080fd5b506102687fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561052857600080fd5b5061021f6105373660046122c9565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561057b57600080fd5b50610268600081565b34801561059057600080fd5b506102687ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156105c457600080fd5b506102686105d3366004612469565b610d93565b3480156105e457600080fd5b506103216105f33660046125a1565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561062957600080fd5b506101fd6106383660046126ad565b610dd8565b34801561064957600080fd5b506101fd61065836600461213c565b610f58565b34801561066957600080fd5b5061026861067836600461213c565b60009081526097602052604090205490565b34801561069657600080fd5b506101fd6106a53660046122c9565b611039565b6101fd6106b8366004612469565b61105e565b3480156106c957600080fd5b506103216106d836600461272b565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b34801561070e57600080fd5b50609854610268565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610741816112d7565b6000610751898989898989610b15565b905061075d81846112e4565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610799969594939291906127d9565b60405180910390a383156107e257807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516107d991815260200190565b60405180910390a25b505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806108435750610843826113f8565b92915050565b600080527f7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8b6020527fa01e231ca478cf51f663e103939e98de36fa76d3e4e0b1de673dc711acc3a01b547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166108c6576108c6813361148f565b60006108d6888888888888610b15565b90506108e2818561152f565b6108ee88888888611637565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516109269493929190612824565b60405180910390a36109378161171a565b5050505050505050565b6000818152609760205260408120546001811180156109605750428111155b9392505050565b600082815260656020526040902060010154610982816112d7565b61098c83836117a9565b505050565b60008181526097602052604081205481905b1192915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a3a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610a44828261189d565b5050565b6000818152609760205260408120546001906109a3565b333014610ad45760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201527f62652074696d656c6f636b0000000000000000000000000000000000000000006064820152608401610a31565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b6000868686868686604051602001610b32969594939291906127d9565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610b7e816112d7565b888714610bf35760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b888514610c685760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b6000610c7a8b8b8b8b8b8b8b8b610d93565b9050610c8681846112e4565b60005b8a811015610d445780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610cc657610cc6612864565b9050602002016020810190610cdb9190612893565b8d8d86818110610ced57610ced612864565b905060200201358c8c87818110610d0657610d06612864565b9050602002810190610d1891906128ae565b8c8b604051610d2c969594939291906127d9565b60405180910390a3610d3d81612942565b9050610c89565b508315610d8657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610d7d91815260200190565b60405180910390a25b5050505050505050505050565b60008888888888888888604051602001610db4989796959493929190612a2a565b60405160208183030381529060405280519060200120905098975050505050505050565b600054610100900460ff1615808015610df85750600054600160ff909116105b80610e125750303b158015610e12575060005460ff166001145b610e845760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a31565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ee257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610eee85858585611958565b8015610f5157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610f82816112d7565b610f8b82610a48565b610ffd5760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160448201527f6e6e6f742062652063616e63656c6c65640000000000000000000000000000006064820152608401610a31565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154611054816112d7565b61098c838361189d565b600080527f7dc9f88e569f94faad6fa0d44dd44858caf3f34f1bd1c985800aedf5793aad8b6020527fa01e231ca478cf51f663e103939e98de36fa76d3e4e0b1de673dc711acc3a01b547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166110db576110db813361148f565b8786146111505760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b8784146111c55760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f74636800000000000000000000000000000000000000000000000000000000006064820152608401610a31565b60006111d78a8a8a8a8a8a8a8a610d93565b90506111e3818561152f565b60005b898110156112c15760008b8b8381811061120257611202612864565b90506020020160208101906112179190612893565b905060008a8a8481811061122d5761122d612864565b9050602002013590503660008a8a8681811061124b5761124b612864565b905060200281019061125d91906128ae565b9150915061126d84848484611637565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58868686866040516112a49493929190612824565b60405180910390a350505050806112ba90612942565b90506111e6565b506112cb8161171a565b50505050505050505050565b6112e1813361148f565b50565b6112ed82610991565b156113605760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201527f7265616479207363686564756c656400000000000000000000000000000000006064820152608401610a31565b6098548110156113d85760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460448201527f2064656c617900000000000000000000000000000000000000000000000000006064820152608401610a31565b6113e28142612afb565b6000928352609760205260409092209190915550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061084357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610843565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a44576114cf816119e7565b6114da836020611a06565b6040516020016114eb929190612b13565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610a3191600401612321565b61153882610941565b6115aa5760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f74207265616479000000000000000000000000000000000000000000006064820152608401610a31565b8015806115c557506000818152609760205260409020546001145b610a445760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560448201527f6e64656e637900000000000000000000000000000000000000000000000000006064820152608401610a31565b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051611661929190612b94565b60006040518083038185875af1925050503d806000811461169e576040519150601f19603f3d011682016040523d82523d6000602084013e6116a3565b606091505b5050905080610f515760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460448201527f72616e73616374696f6e207265766572746564000000000000000000000000006064820152608401610a31565b61172381610941565b6117955760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f74207265616479000000000000000000000000000000000000000000006064820152608401610a31565b600090815260976020526040902060019055565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561183f3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610a4457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166119d55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a31565b6119e184848484611c2f565b50505050565b606061084373ffffffffffffffffffffffffffffffffffffffff831660145b60606000611a15836002612ba4565b611a20906002612afb565b67ffffffffffffffff811115611a3857611a38612155565b6040519080825280601f01601f191660200182016040528015611a62576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611a9957611a99612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611afc57611afc612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611b38846002612ba4565b611b43906001612afb565b90505b6001811115611be0577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611b8457611b84612864565b1a60f81b828281518110611b9a57611b9a612864565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611bd981612be1565b9050611b46565b5083156109605760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a31565b600054610100900460ff16611cac5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a31565b611cd67f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca580611f52565b611d207fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc17f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611d6a7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611db47ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7837f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5611f52565b611dde7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca530611f9d565b73ffffffffffffffffffffffffffffffffffffffff811615611e2457611e247f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca582611f9d565b60005b8351811015611eb957611e737fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1858381518110611e6657611e66612864565b6020026020010151611f9d565b611ea97ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783858381518110611e6657611e66612864565b611eb281612942565b9050611e27565b5060005b8251811015611f0c57611efc7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63848381518110611e6657611e66612864565b611f0581612942565b9050611ebd565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150505050565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610a4482826117a9565b803573ffffffffffffffffffffffffffffffffffffffff81168114611fcb57600080fd5b919050565b60008083601f840112611fe257600080fd5b50813567ffffffffffffffff811115611ffa57600080fd5b60208301915083602082850101111561201257600080fd5b9250929050565b600080600080600080600060c0888a03121561203457600080fd5b61203d88611fa7565b965060208801359550604088013567ffffffffffffffff81111561206057600080fd5b61206c8a828b01611fd0565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156120a057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096057600080fd5b60008060008060008060a087890312156120e957600080fd5b6120f287611fa7565b955060208701359450604087013567ffffffffffffffff81111561211557600080fd5b61212189828a01611fd0565b979a9699509760608101359660809091013595509350505050565b60006020828403121561214e57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156121cb576121cb612155565b604052919050565b600082601f8301126121e457600080fd5b813567ffffffffffffffff8111156121fe576121fe612155565b61222f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612184565b81815284602083860101111561224457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561227757600080fd5b61228085611fa7565b935061228e60208601611fa7565b925060408501359150606085013567ffffffffffffffff8111156122b157600080fd5b6122bd878288016121d3565b91505092959194509250565b600080604083850312156122dc57600080fd5b823591506122ec60208401611fa7565b90509250929050565b60005b838110156123105781810151838201526020016122f8565b838111156119e15750506000910152565b60208152600082518060208401526123408160408501602087016122f5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008083601f84011261238457600080fd5b50813567ffffffffffffffff81111561239c57600080fd5b6020830191508360208260051b850101111561201257600080fd5b600080600080600080600080600060c08a8c0312156123d557600080fd5b893567ffffffffffffffff808211156123ed57600080fd5b6123f98d838e01612372565b909b50995060208c013591508082111561241257600080fd5b61241e8d838e01612372565b909950975060408c013591508082111561243757600080fd5b506124448c828d01612372565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561248557600080fd5b883567ffffffffffffffff8082111561249d57600080fd5b6124a98c838d01612372565b909a50985060208b01359150808211156124c257600080fd5b6124ce8c838d01612372565b909850965060408b01359150808211156124e757600080fd5b506124f48b828c01612372565b999c989b509699959896976060870135966080013595509350505050565b600067ffffffffffffffff82111561252c5761252c612155565b5060051b60200190565b600082601f83011261254757600080fd5b8135602061255c61255783612512565b612184565b82815260059290921b8401810191818101908684111561257b57600080fd5b8286015b84811015612596578035835291830191830161257f565b509695505050505050565b600080600080600060a086880312156125b957600080fd5b6125c286611fa7565b94506125d060208701611fa7565b9350604086013567ffffffffffffffff808211156125ed57600080fd5b6125f989838a01612536565b9450606088013591508082111561260f57600080fd5b61261b89838a01612536565b9350608088013591508082111561263157600080fd5b5061263e888289016121d3565b9150509295509295909350565b600082601f83011261265c57600080fd5b8135602061266c61255783612512565b82815260059290921b8401810191818101908684111561268b57600080fd5b8286015b84811015612596576126a081611fa7565b835291830191830161268f565b600080600080608085870312156126c357600080fd5b84359350602085013567ffffffffffffffff808211156126e257600080fd5b6126ee8883890161264b565b9450604087013591508082111561270457600080fd5b506127118782880161264b565b92505061272060608601611fa7565b905092959194509250565b600080600080600060a0868803121561274357600080fd5b61274c86611fa7565b945061275a60208701611fa7565b93506040860135925060608601359150608086013567ffffffffffffffff81111561278457600080fd5b61263e888289016121d3565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a06040820152600061280f60a083018688612790565b60608301949094525060800152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061285a606083018486612790565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156128a557600080fd5b61096082611fa7565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128e357600080fd5b83018035915067ffffffffffffffff8211156128fe57600080fd5b60200191503681900382131561201257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361297357612973612913565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015612a1d57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030181126129d357600080fd5b8701858101903567ffffffffffffffff8111156129ef57600080fd5b8036038213156129fe57600080fd5b612a09868284612790565b9a87019a9550505090840190600101612994565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015612a785773ffffffffffffffffffffffffffffffffffffffff612a6384611fa7565b16825260209283019290910190600101612a3d565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff891115612ab157600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152612ae281888a61297a565b6060850196909652505050608001529695505050505050565b60008219821115612b0e57612b0e612913565b500190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b4b8160178501602088016122f5565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b888160288401602088016122f5565b01602801949350505050565b8183823760009101908152919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bdc57612bdc612913565b500290565b600081612bf057612bf0612913565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c634300080f000a", - "key": "0x6c6309347ce858a4a9cd95110ae4be03e0018a688c8235b691e0b3391e72b9d6" - }, "0x9a676e781a523b5d0c0e43731313a708cb607508": { "balance": "0", "nonce": 1, - "root": "0x5ae3a6205828fcab1020625833a527d307aef7937bc945432c1e69abb01d3569", + "root": "0xf920763341255140764b26402c985eeda3b348ffd79c046067882f6e371d4015", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { @@ -320,48 +335,42 @@ "0x0000000000000000000000000000000000000000000000000000000000000193": "a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", "0x00000000000000000000000000000000000000000000000000000000000001c7": "01", "0x00000000000000000000000000000000000000000000000000000000000001f8": "0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "8f86403a4de0bb5791fa46b8e795c547942fe4cf", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "9d4454b023096f34b160d6b654540c56a1f81688", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", - "0xff6df30967a6a678f565c59a19e91e5c0dbb20cfe9f9bf26d7da6dea0fffa24c": "3300000031" + "0xff6df30967a6a678f565c59a19e91e5c0dbb20cfe9f9bf26d7da6dea0fffa24c": "3300000032" }, "key": "0x77cfca9fde84ccd54b40d754f2f3d4f4ebb6c53bf6f9bc52d4168b4bc026e898" }, "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae": { "balance": "0", "nonce": 1, - "root": "0xb45fafbc41242521fb222c114d80647c0858e2a27d7574ef837788f7a78cdaaa", - "codeHash": "0x02898aaa7c1add99de89629303000fbd799dcaaec7d7380cb042e86d96a9fd75", - "code": "0x60806040526004361061015f5760003560e01c80636e296e45116100c0578063a4e7f8bd11610074578063b28ade2511610059578063b28ade25146103d2578063d764ad0b146103f2578063ecc704281461040557600080fd5b8063a4e7f8bd14610372578063b1b1b209146103a257600080fd5b806383a74074116100a557806383a74074146103275780638cbeeef2146102575780639fce812c1461033e57600080fd5b80636e296e45146102fd5780638129fc1c1461031257600080fd5b80633f827a5a1161011757806354fd4d50116100fc57806354fd4d501461026d5780635644cfdf146102c35780635c975abb146102d957600080fd5b80633f827a5a1461022f5780634c1d6a691461025757600080fd5b80630ff754ea116101485780630ff754ea146101ac5780632828d7e8146102055780633dbb202b1461021a57600080fd5b8063028f85f7146101645780630c56849814610197575b600080fd5b34801561017057600080fd5b50610179601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101a357600080fd5b50610179603f81565b3480156101b857600080fd5b506101e07f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018e565b34801561021157600080fd5b50610179604081565b61022d610228366004611563565b610443565b005b34801561023b57600080fd5b50610244600081565b60405161ffff909116815260200161018e565b34801561026357600080fd5b50610179619c4081565b34801561027957600080fd5b506102b66040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161018e9190611635565b3480156102cf57600080fd5b5061017961138881565b3480156102e557600080fd5b5060335460ff165b604051901515815260200161018e565b34801561030957600080fd5b506101e0610631565b34801561031e57600080fd5b5061022d61071d565b34801561033357600080fd5b5061017962030d4081565b34801561034a57600080fd5b506101e07f000000000000000000000000420000000000000000000000000000000000000481565b34801561037e57600080fd5b506102ed61038d36600461164f565b60686020526000908152604090205460ff1681565b3480156103ae57600080fd5b506102ed6103bd36600461164f565b60656020526000908152604090205460ff1681565b3480156103de57600080fd5b506101796103ed366004611668565b6108af565b61022d6104003660046116bc565b61091d565b34801561041157600080fd5b506067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660405190815260200161018e565b61055b7f00000000000000000000000042000000000000000000000000000000000000046104728585856108af565b347fd764ad0b000000000000000000000000000000000000000000000000000000006104bd6067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b338a34898c8c6040516024016104d9979695949392919061178b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110d0565b3373ffffffffffffffffffffffffffffffffffffffff85167fdd28cef75ff18fb538e43317144469f339702f973eace2bc808f2acc37db310e3486866105c06067547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b876040516105d29594939291906117ea565b60405180910390a35050606780547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60665460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060665473ffffffffffffffffffffffffffffffffffffffff1690565b600054610100900460ff161580801561073d5750600054600160ff909116105b806107575750303b158015610757575060005460ff166001145b6107e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106f7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561084157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610849611185565b80156108ac57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000611388619c4080603f6108cb604063ffffffff8816611851565b6108d59190611881565b6108e0601088611851565b6108ed9062030d406118cf565b6108f791906118cf565b61090191906118cf565b61090b91906118cf565b61091591906118cf565b949350505050565b60f087901c600181106109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206d6573736167657320697320737570706f7274656420617420746860648201527f69732074696d6500000000000000000000000000000000000000000000000000608482015260a4016106f7565b6000610a1e898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061124a92505050565b9050610a2861126d565b15610a6057853414610a3c57610a3c6118fb565b60008181526068602052604090205460ff1615610a5b57610a5b6118fb565b610bb2565b3415610b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a4016106f7565b60008181526068602052604090205460ff16610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c617965640000000000000000000000000000000060648201526084016106f7565b610bbb87611391565b15610c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a4016106f7565b60008181526065602052604090205460ff1615610d0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c617965640000000000000000000060648201526084016106f7565b610d2e85610d1f611388619c406118cf565b67ffffffffffffffff16611408565b1580610d54575060665473ffffffffffffffffffffffffffffffffffffffff1661dead14155b15610e6d5760008181526068602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201610e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016106f7565b50506110a6565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a161790556000610efe88619c405a610ec1919061192a565b8988888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142692505050565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905590508015610f955760008281526065602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a26110a2565b60008281526068602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d6573736167650000000000000000000000000000000000000060648201526084016106f7565b5050505b50505050505050565b905090565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fe9e05c4200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0169063e9e05c4290849061114d908890839089906000908990600401611941565b6000604051808303818588803b15801561116657600080fd5b505af115801561117a573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff1661121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106f7565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b600061125a878787878787611440565b8051906020012090509695505050505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0161480156110af57507f000000000000000000000000420000000000000000000000000000000000000473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e073ffffffffffffffffffffffffffffffffffffffff16639bf62d826040518163ffffffff1660e01b8152600401602060405180830381865afa158015611351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113759190611999565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600073ffffffffffffffffffffffffffffffffffffffff821630148061140257507f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b606086868686868660405160240161145d969594939291906119b6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108ac57600080fd5b60008083601f84011261151357600080fd5b50813567ffffffffffffffff81111561152b57600080fd5b60208301915083602082850101111561154357600080fd5b9250929050565b803563ffffffff8116811461155e57600080fd5b919050565b6000806000806060858703121561157957600080fd5b8435611584816114df565b9350602085013567ffffffffffffffff8111156115a057600080fd5b6115ac87828801611501565b90945092506115bf90506040860161154a565b905092959194509250565b6000815180845260005b818110156115f0576020818501810151868301820152016115d4565b81811115611602576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061164860208301846115ca565b9392505050565b60006020828403121561166157600080fd5b5035919050565b60008060006040848603121561167d57600080fd5b833567ffffffffffffffff81111561169457600080fd5b6116a086828701611501565b90945092506116b390506020850161154a565b90509250925092565b600080600080600080600060c0888a0312156116d757600080fd5b8735965060208801356116e9816114df565b955060408801356116f9816114df565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561172357600080fd5b61172f8a828b01611501565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a08301526117dd60c083018486611742565b9998505050505050505050565b858152608060208201526000611804608083018688611742565b905083604083015263ffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168183048111821515161561187857611878611822565b02949350505050565b600067ffffffffffffffff808416806118c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff8083168185168083038211156118f2576118f2611822565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008282101561193c5761193c611822565b500390565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015267ffffffffffffffff84166040820152821515606082015260a06080820152600061198e60a08301846115ca565b979650505050505050565b6000602082840312156119ab57600080fd5b8151611648816114df565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611a0160c08301846115ca565b9897505050505050505056fea164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000066": "dead" - }, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0xf54798ae0066be6ba7437ac68dadc944cb939a7015704b8c2e8f30da801209f4", + "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806312e64a7214610046578063c423b1e81461006e578063dc8b50381461008f575b600080fd5b6100596100543660046117b2565b6100db565b60405190151581526020015b60405180910390f35b61008161007c366004611827565b6101a6565b6040516100659291906118f1565b6100b67f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b181565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610065565b6040517fc423b1e800000000000000000000000000000000000000000000000000000000815260009081908190309063c423b1e890610122908a908990899060040161190c565b600060405180830381865afa15801561013f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610185919081019061199c565b9150915081801561019b575061019b868261074b565b979650505050505050565b600060606002845110156102275760405162461bcd60e51b815260206004820152602960248201527f5a4b4d65726b6c65547269653a2070726f76696465642070726f6f662069732060448201527f746f6f2073686f7274000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61027e84600186516102399190611a5d565b8151811061024957610249611a74565b602002602001015180516020909101207f950654da67865a81bc70e45f3230f5179f08e29c66184bf746f71050f117b3b81490565b6102f05760405162461bcd60e51b815260206004820152602d60248201527f5a4b4d65726b6c65547269653a20746865206c617374206974656d206973206e60448201527f6f74206d61676963206861736800000000000000000000000000000000000000606482015260840161021e565b60006102fb86610767565b9050600061030886610846565b90506103526040805161010081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e09091015290565b60408051602081019091526000808252835190918291829190829061037990600290611a5d565b90505b86818151811061038e5761038e611a74565b6020026020010151602001519550600060038111156103af576103af611aa3565b865160038111156103c2576103c2611aa3565b036104a05760006103d38983610939565b90508015610433578660200151861461042e5760405162461bcd60e51b815260206004820152601b60248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b6579204c0000000000604482015260640161021e565b610486565b866040015186146104865760405162461bcd60e51b815260206004820152601b60248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b657920520000000000604482015260640161021e565b61049887602001518860400151610996565b9550506106b5565b6001865160038111156104b5576104b5611aa3565b0361061857831580156104c6575082155b6105385760405162461bcd60e51b815260206004820152602660248201527f5a4b4d65726b6c65547269653a206475706c696361746564207465726d696e6160448201527f6c206e6f64650000000000000000000000000000000000000000000000000000606482015260840161021e565b87866060015114935083156107385761056b600160001b87606001516105668960a001518a60800151610a63565b610bff565b6080870151805160208102825260e0890151929750909350839115610611578e8860e00151148061059f5750898860e00151145b6106115760405162461bcd60e51b815260206004820152602260248201527f5a4b4d65726b6c65547269653a20696e76616c6964206b657920707265696d6160448201527f6765000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b50506106b5565b60028651600381111561062d5761062d611aa3565b036106b5578315801561063e575082155b6106b05760405162461bcd60e51b815260206004820152602660248201527f5a4b4d65726b6c65547269653a206475706c696361746564207465726d696e6160448201527f6c206e6f64650000000000000000000000000000000000000000000000000000606482015260840161021e565b600192505b80600003610711578a851461070c5760405162461bcd60e51b815260206004820152601960248201527f5a4b4d65726b65547269653a20696e76616c696420726f6f7400000000000000604482015260640161021e565b610738565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161037c565b50919b919a509098505050505050505050565b6000818051906020012083805190602001201490505b92915050565b600080600061077584610d77565b6040805180820182528381526020810183905290517f299e566000000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1169163299e5660916107fd91600401611ad2565b602060405180830381865afa15801561081a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083e9190611b03565b949350505050565b805160609060008167ffffffffffffffff811115610866576108666115f9565b60405190808252806020026020018201604052801561089f57816020015b61088c61159a565b8152602001906001900390816108845790505b50905060005b6108b0600184611a5d565b8110156109315760006108db8683815181106108ce576108ce611a74565b6020026020010151610d9f565b905060405180604001604052808784815181106108fa576108fa611a74565b602002602001015181526020018281525083838151811061091d5761091d611a74565b6020908102919091010152506001016108a5565b509392505050565b6000610100821061098c5760405162461bcd60e51b815260206004820152601c60248201527f5a4b4d65726b6c65547269653a20746f6f206c6f6e6720646570746800000000604482015260640161021e565b506001901b161590565b6040805180820182528381526020810183905290517f299e566000000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1169163299e566091610a1b91600401611ad2565b602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190611b03565b9392505050565b6000600182511015610add5760405162461bcd60e51b815260206004820152602b60248201527f5a4b547269654861736865723a20746f6f206665772076616c75657320666f7260448201527f205f76616c756548617368000000000000000000000000000000000000000000606482015260840161021e565b6000825167ffffffffffffffff811115610af957610af96115f9565b604051908082528060200260200182016040528015610b22578160200160208202803683370190505b50905060005b8351811015610bc8576001811b851663ffffffff1615610b8757610b64848281518110610b5757610b57611a74565b6020026020010151610767565b828281518110610b7657610b76611a74565b602002602001018181525050610bc0565b838181518110610b9957610b99611a74565b6020026020010151828281518110610bb357610bb3611a74565b6020026020010181815250505b600101610b28565b50600283511015610bf65780600081518110610be657610be6611a74565b6020026020010151915050610761565b61083e81611122565b6040805180820182528481526020810184905290517f299e56600000000000000000000000000000000000000000000000000000000081526000917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b19173ffffffffffffffffffffffffffffffffffffffff83169163299e566091610c879190600401611ad2565b602060405180830381865afa158015610ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc89190611b03565b6040805180820182528281526020810186905290517f299e566000000000000000000000000000000000000000000000000000000000815291965073ffffffffffffffffffffffffffffffffffffffff83169163299e566091610d2d91600401611ad2565b602060405180830381865afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e9190611b03565b95945050505050565b60008082608081901b610d8a8260801c90565b610d948260801c90565b935093505050915091565b60408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e081019190915260408051610100810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e08101919091526000610e53846040805180820182526060815260006020918201528151808301909252828101825291519181019190915290565b90506000610e608261130c565b60ff16905080610e8b57610e7382611393565b6020840152610e8182611393565b60408401526110de565b6001810361101857610e9c82611393565b6060840152600080610ead84611431565b60ff16915091508163ffffffff166001148015610eca5750806001145b80610ee657508163ffffffff166004148015610ee65750806004145b610f585760405162461bcd60e51b815260206004820152602360248201527f4e6f64655265616465723a20696e76616c696420636f6d70726573736564466c60448201527f6167730000000000000000000000000000000000000000000000000000000000606482015260840161021e565b63ffffffff821660a08601528067ffffffffffffffff811115610f7d57610f7d6115f9565b604051908082528060200260200182016040528015610fa6578160200160208202803683370190505b50608086015260005b81811015610fe957610fc085611393565b86608001518281518110610fd657610fd6611a74565b6020908102919091010152600101610faf565b506000610ff58561130c565b60ff16905080156110105761100a85826114cb565b60e08701525b5050506110de565b600281146110de57600381036110965760405162461bcd60e51b815260206004820152602560248201527f4e6f64655265616465723a20756e657870656374656420726f6f74206e6f646560448201527f2074797065000000000000000000000000000000000000000000000000000000606482015260840161021e565b60405162461bcd60e51b815260206004820152601d60248201527f4e6f64655265616465723a20696e76616c6964206e6f64652074797065000000604482015260640161021e565b8060038111156110f0576110f0611aa3565b8390600381111561110357611103611aa3565b9081600381111561111657611116611aa3565b90525091949350505050565b600060048251101561119c5760405162461bcd60e51b815260206004820152602b60248201527f5a4b547269654861736865723a20746f6f206665772076616c75657320666f7260448201527f205f68617368456c656d73000000000000000000000000000000000000000000606482015260840161021e565b81517f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b19060009081906001906002905b808310156112e457600094505b808510156112d6578285019350808410156112cd578573ffffffffffffffffffffffffffffffffffffffff1663299e566060405180604001604052808b898151811061122757611227611a74565b602002602001015181526020018b888151811061124657611246611a74565b60200260200101518152506040518263ffffffff1660e01b815260040161126d9190611ad2565b602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611b03565b8886815181106112c0576112c0611a74565b6020026020010181815250505b938101936111d9565b909150600182901b906111cc565b876000815181106112f7576112f7611a74565b60200260200101519650505050505050919050565b60006001826020015110156113635760405162461bcd60e51b815260206004820152601f60248201527f4e6f64655265616465723a20746f6f2073686f727420666f722075696e743800604482015260640161021e565b81518051600180830180865260208601805191949360f81c9291611388908390611a5d565b905250949350505050565b60006020826020015110156114105760405162461bcd60e51b815260206004820152602160248201527f4e6f64655265616465723a20746f6f2073686f727420666f722062797465733360448201527f3200000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b81518051602080830180865281860180519194939291611388908390611a5d565b6000806004836020015110156114895760405162461bcd60e51b815260206004820181905260248201527f4e6f64655265616465723a20746f6f2073686f727420666f722075696e743332604482015260640161021e565b8251805160048083018087526020870180519194939260f084901c9260f885901c92906114b7908390611a5d565b90525060ff90911697909650945050505050565b600081836020015110156115475760405162461bcd60e51b815260206004820152602160248201527f4e6f64655265616465723a20746f6f2073686f727420666f72206e206279746560448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161021e565b825160609060008061155a866008611b1c565b61156690610100611a5d565b8351848801808a5260208a01805191975091831c9450919250879161158c908390611a5d565b905250909695505050505050565b6040518060400160405280606081526020016115f46040805161010081019091528060008152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e09091015290565b905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561166f5761166f6115f9565b604052919050565b600067ffffffffffffffff821115611691576116916115f9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126116ce57600080fd5b81356116e16116dc82611677565b611628565b8181528460208386010111156116f657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261172457600080fd5b8135602067ffffffffffffffff80831115611741576117416115f9565b8260051b611750838201611628565b938452858101830193838101908886111561176a57600080fd5b84880192505b858310156117a6578235848111156117885760008081fd5b6117968a87838c01016116bd565b8352509184019190840190611770565b98975050505050505050565b600080600080608085870312156117c857600080fd5b84359350602085013567ffffffffffffffff808211156117e757600080fd5b6117f3888389016116bd565b9450604087013591508082111561180957600080fd5b5061181687828801611713565b949793965093946060013593505050565b60008060006060848603121561183c57600080fd5b83359250602084013567ffffffffffffffff81111561185a57600080fd5b61186686828701611713565b925050604084013590509250925092565b60005b8381101561189257818101518382015260200161187a565b838111156118a1576000848401525b50505050565b600081518084526118bf816020860160208601611877565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b821515815260406020820152600061083e60408301846118a7565b600060608201858352602060608185015281865180845260808601915060808160051b870101935082880160005b82811015611986577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808887030184526119748683516118a7565b9550928401929084019060010161193a565b5050505050604092909201929092529392505050565b600080604083850312156119af57600080fd5b825180151581146119bf57600080fd5b602084015190925067ffffffffffffffff8111156119dc57600080fd5b8301601f810185136119ed57600080fd5b80516119fb6116dc82611677565b818152866020838501011115611a1057600080fd5b611a21826020830160208601611877565b8093505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611a6f57611a6f611a2e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408101818360005b6002811015611afa578151835260209283019290910190600101611adb565b50505092915050565b600060208284031215611b1557600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b5457611b54611a2e565b50029056fea164736f6c634300080f000a", "key": "0x17c85ecbaedd35be311ad177fb8cd266d4d6ca50961076aa5df5287d787e84b3" }, - "0x9e545e3c0baab3e08cdfd552c960a1050f373042": { + "0x9d4454b023096f34b160d6b654540c56a1f81688": { "balance": "0", "nonce": 1, - "root": "0x80d0baaa3a739f917eff6760cb69c0405cb3d6e433e7a9aa8345a0762447f195", - "codeHash": "0x6c94dc5143ce957e15c12e3bc625266eef1ef7848433aadf23351749db24d9a6", - "code": "0x6080604052600436106101475760003560e01c80638c3152e9116100c0578063cff0ab9611610074578063e965084c11610059578063e965084c146104b5578063e9e05c4214610541578063f04987501461055457600080fd5b8063cff0ab96146103f4578063d53a822f1461049557600080fd5b8063a14238e7116100a5578063a14238e714610370578063b98debbf146103a0578063c30af388146103d457600080fd5b80638c3152e9146103235780639bf62d821461034357600080fd5b80635865b607116101175780636dbffb78116100fc5780636dbffb78146102ba578063724c184c146102da5780638456cb591461030e57600080fd5b80635865b6071461025c5780635c975abb1461029057600080fd5b80621c2ff6146101735780630757b244146101d15780633f4ba83a146101f157806354fd4d501461020657600080fd5b3661016e5761016c3334620186a0600060405180602001604052806000815250610588565b005b600080fd5b34801561017f57600080fd5b506101a77f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101dd57600080fd5b5061016c6101ec366004612a08565b61076e565b3480156101fd57600080fd5b5061016c610d72565b34801561021257600080fd5b5061024f6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c89190612b5f565b34801561026857600080fd5b506101a77f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b181565b34801561029c57600080fd5b506035546102aa9060ff1681565b60405190151581526020016101c8565b3480156102c657600080fd5b506102aa6102d5366004612b72565b610e7b565b3480156102e657600080fd5b506101a77f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b34801561031a57600080fd5b5061016c610f52565b34801561032f57600080fd5b5061016c61033e366004612b8b565b611057565b34801561034f57600080fd5b506032546101a79073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037c57600080fd5b506102aa61038b366004612b72565b60336020526000908152604090205460ff1681565b3480156103ac57600080fd5b506101a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b3480156103e057600080fd5b5061016c6103ef366004612bd8565b611825565b34801561040057600080fd5b5060015461045c906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101c8565b3480156104a157600080fd5b5061016c6104b0366004612c46565b611983565b3480156104c157600080fd5b506105136104d0366004612b72565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101c8565b61016c61054f366004612c63565b610588565b34801561056057600080fd5b506101a77f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b8260005a905083156106235773ffffffffffffffffffffffffffffffffffffffff8716156106235760405162461bcd60e51b815260206004820152603d60248201527f4b726f6d61506f7274616c3a206d7573742073656e6420746f2061646472657360448201527f73283029207768656e206372656174696e67206120636f6e747261637400000060648201526084015b60405180910390fd5b6152088567ffffffffffffffff1610156106a55760405162461bcd60e51b815260206004820152603560248201527f4b726f6d61506f7274616c3a20676173206c696d6974206d75737420636f766560448201527f7220696e737472696e7369632067617320636f73740000000000000000000000606482015260840161061a565b333281146106c6575033731111000000000000000000000000000000001111015b600034888888886040516020016106e1959493929190612ce0565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516107519190612b5f565b60405180910390a450506107658282611b72565b50505050505050565b60355460ff16156107c15760405162461bcd60e51b815260206004820152601360248201527f4b726f6d61506f7274616c3a2070617573656400000000000000000000000000604482015260640161061a565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff16036108665760405162461bcd60e51b815260206004820152603c60248201527f4b726f6d61506f7274616c3a20796f752063616e6e6f742073656e64206d657360448201527f736167657320746f2074686520706f7274616c20636f6e747261637400000000606482015260840161061a565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa1580156108f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109189190612d65565b60200151905061093561093036869003860186612ddd565b611e85565b81146109a95760405162461bcd60e51b815260206004820152602660248201527f4b726f6d61506f7274616c3a20696e76616c6964206f757470757420726f6f7460448201527f2070726f6f660000000000000000000000000000000000000000000000000000606482015260840161061a565b60006109b487611f0a565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610ae95750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612d65565b6020015114155b610b5b5760405162461bcd60e51b815260206004820152603460248201527f4b726f6d61506f7274616c3a207769746864726177616c20686173682068617360448201527f20616c7265616479206265656e2070726f76656e000000000000000000000000606482015260840161061a565b60408051602080820185905260008284015282518083038401815260608301808552815191909201207f12e64a7200000000000000000000000000000000000000000000000000000000909152917f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b173ffffffffffffffffffffffffffffffffffffffff16916312e64a7291610bfd9185918b918b918e013590606401612e96565b602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190612f97565b610cb05760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a20696e76616c6964207769746864726177616c2060448201527f696e636c7573696f6e2070726f6f660000000000000000000000000000000000606482015260840161061a565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e1614610e1d5760405162461bcd60e51b815260206004820152602660248201527f4b726f6d61506f7274616c3a206f6e6c7920677561726469616e2063616e207560448201527f6e70617573650000000000000000000000000000000000000000000000000000606482015260840161061a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090610f4c9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa158015610f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f319190612d65565b604001516fffffffffffffffffffffffffffffffff16611f57565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e1614610ffc5760405162461bcd60e51b8152602060048201526024808201527f4b726f6d61506f7274616c3a206f6e6c7920677561726469616e2063616e207060448201527f6175736500000000000000000000000000000000000000000000000000000000606482015260840161061a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610e71565b60355460ff16156110aa5760405162461bcd60e51b815260206004820152601360248201527f4b726f6d61506f7274616c3a2070617573656400000000000000000000000000604482015260640161061a565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146111395760405162461bcd60e51b815260206004820152603c60248201527f4b726f6d61506f7274616c3a2063616e206f6e6c792074726967676572206f6e60448201527f65207769746864726177616c20706572207472616e73616374696f6e00000000606482015260840161061a565b600061114482611f0a565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036112155760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a207769746864726177616c20686173206e6f742060448201527f6265656e2070726f76656e207965740000000000000000000000000000000000606482015260840161061a565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a49190612fb4565b81602001516fffffffffffffffffffffffffffffffff1610156113555760405162461bcd60e51b815260206004820152604860248201527f4b726f6d61506f7274616c3a207769746864726177616c2074696d657374616d60448201527f70206c657373207468616e204c32204f7261636c65207374617274696e67207460648201527f696d657374616d70000000000000000000000000000000000000000000000000608482015260a40161061a565b61137481602001516fffffffffffffffffffffffffffffffff16611f57565b61140c5760405162461bcd60e51b815260206004820152604260248201527f4b726f6d61506f7274616c3a2070726f76656e207769746864726177616c206660448201527f696e616c697a6174696f6e20706572696f6420686173206e6f7420656c61707360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a40161061a565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612d65565b82516020820151919250146115785760405162461bcd60e51b815260206004820152604660248201527f4b726f6d61506f7274616c3a206f757470757420726f6f742070726f76656e2060448201527f6973206e6f74207468652073616d652061732063757272656e74206f7574707560648201527f7420726f6f740000000000000000000000000000000000000000000000000000608482015260a40161061a565b61159781604001516fffffffffffffffffffffffffffffffff16611f57565b61162f5760405162461bcd60e51b815260206004820152604260248201527f4b726f6d61506f7274616c3a20636865636b706f696e74206f7574707574206660448201527f696e616c697a6174696f6e20706572696f6420686173206e6f7420656c61707360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a40161061a565b60008381526033602052604090205460ff16156116b45760405162461bcd60e51b815260206004820152603260248201527f4b726f6d61506f7274616c3a207769746864726177616c2068617320616c726560448201527f616479206265656e2066696e616c697a65640000000000000000000000000000606482015260840161061a565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a088015161175693929190611ffa565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b906117bb90841515815260200190565b60405180910390a2801580156117d15750326001145b1561181e5760405162461bcd60e51b815260206004820152601e60248201527f4b726f6d61506f7274616c3a207769746864726177616c206661696c65640000604482015260640161061a565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146118d05760405162461bcd60e51b815260206004820152603f60248201527f4b726f6d61506f7274616c3a2066756e6374696f6e2063616e206f6e6c79206260448201527f652063616c6c65642066726f6d207468652056616c696461746f72506f6f6c00606482015260840161061a565b6040513373111100000000000000000000000000000000111101906000906119049082908190879082908890602001612ce0565b604051602081830303815290604052905060008573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516119749190612b5f565b60405180910390a45050505050565b600054610100900460ff16158080156119a35750600054600160ff909116105b806119bd5750303b1580156119bd575060005460ff166001145b611a2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161061a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611a8d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611aef612058565b8015611b5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611ba8907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643612ffc565b90506000611bb4612121565b90506000816020015160ff16826000015163ffffffff16611bd59190613042565b90508215611d0c57600154600090611c0c908390700100000000000000000000000000000000900467ffffffffffffffff166130aa565b90506000836040015160ff1683611c23919061311e565b600154611c439084906fffffffffffffffffffffffffffffffff1661311e565b611c4d9190613042565b600154909150600090611c9e90611c779084906fffffffffffffffffffffffffffffffff166131da565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166121e7565b90506001861115611ccd57611cca611c7782876040015160ff1660018a611cc59190612ffc565b612204565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611d3f908490700100000000000000000000000000000000900467ffffffffffffffff1661324e565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611e085760405162461bcd60e51b815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161061a565b600154600090611e34906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661327a565b90506000611e4648633b9aca00612259565b611e5090836132b7565b905060005a611e5f9088612ffc565b905080821115611e7b57611e7b611e768284612ffc565b612271565b5050505050505050565b8051600090611e9757610f4c8261229f565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e00000000000000000000000000000000000000000000606482015260840161061a565b919050565b80516020808301516040808501516060860151608087015160a08801519351600097611f3a9790969591016132cb565b604051602081830303815290604052805190602001209050919050565b60007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe89190612fb4565b611ff29083613322565b421192915050565b600080600061200a8660006122e2565b905080612040576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166120d55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161061a565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051273ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa1580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e2919061335f565b905090565b60006121fc6121f68585612300565b8361230f565b949350505050565b6000670de0b6b3a764000061224561221c8583613042565b61222e90670de0b6b3a76400006130aa565b61224085670de0b6b3a764000061311e565b61231e565b61224f908661311e565b6121fc9190613042565b6000818311612268578161226a565b825b9392505050565b6000805a90505b825a6122849083612ffc565b101561229a57612293826133fe565b9150612278565b505050565b80516020808301516040808501516060808701516080808901518551978801989098529386019490945284015282015260a081019190915260009060c001611f3a565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818313612268578161226a565b6000818312612268578161226a565b600061226a670de0b6b3a7640000836123368661234f565b612340919061311e565b61234a9190613042565b612579565b60008082136123a05760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161061a565b600060606123ad8461279e565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136125aa57506000919050565b680755bf798b4a1bf1e582126126025760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161061a565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60008082116127ef5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161061a565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146128ab57600080fd5b50565b600082601f8301126128bf57600080fd5b813567ffffffffffffffff808211156128da576128da61285a565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156129205761292061285a565b8160405283815286602085880101111561293957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060c0828403121561296b57600080fd5b60405160c0810167ffffffffffffffff828210818311171561298f5761298f61285a565b8160405282935084358352602085013591506129aa82612889565b816020840152604085013591506129c082612889565b816040840152606085013560608401526080850135608084015260a08501359150808211156129ee57600080fd5b506129fb858286016128ae565b60a0830152505092915050565b6000806000806000858703610100811215612a2257600080fd5b863567ffffffffffffffff80821115612a3a57600080fd5b612a468a838b01612959565b97506020890135965060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215612a7f57600080fd5b60408901955060e0890135925080831115612a9957600080fd5b828901925089601f840112612aad57600080fd5b8235915080821115612abe57600080fd5b508860208260051b8401011115612ad457600080fd5b959894975092955050506020019190565b60005b83811015612b00578181015183820152602001612ae8565b83811115612b0f576000848401525b50505050565b60008151808452612b2d816020860160208601612ae5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061226a6020830184612b15565b600060208284031215612b8457600080fd5b5035919050565b600060208284031215612b9d57600080fd5b813567ffffffffffffffff811115612bb457600080fd5b6121fc84828501612959565b803567ffffffffffffffff81168114611f0557600080fd5b600080600060608486031215612bed57600080fd5b8335612bf881612889565b9250612c0660208501612bc0565b9150604084013567ffffffffffffffff811115612c2257600080fd5b612c2e868287016128ae565b9150509250925092565b80151581146128ab57600080fd5b600060208284031215612c5857600080fd5b813561226a81612c38565b600080600080600060a08688031215612c7b57600080fd5b8535612c8681612889565b945060208601359350612c9b60408701612bc0565b92506060860135612cab81612c38565b9150608086013567ffffffffffffffff811115612cc757600080fd5b612cd3888289016128ae565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251612d34816049850160208701612ae5565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff81168114611f0557600080fd5b600060808284031215612d7757600080fd5b6040516080810181811067ffffffffffffffff82111715612d9a57612d9a61285a565b6040528251612da881612889565b815260208381015190820152612dc060408401612d45565b6040820152612dd160608401612d45565b60608201529392505050565b600060a08284031215612def57600080fd5b60405160a0810181811067ffffffffffffffff82111715612e1257612e1261285a565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8481526000602060808184015280608084015260018060a085015260c0840160c060408601528087825260e08601905060e08860051b87010191508860005b89811015612f7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2088850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112612f3657600080fd5b8b01868101903567ffffffffffffffff811115612f5257600080fd5b803603821315612f6157600080fd5b612f6c868284612e4d565b9550505091850191908501908401612ed5565b50505080935050505082606083015295945050505050565b600060208284031215612fa957600080fd5b815161226a81612c38565b600060208284031215612fc657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561300e5761300e612fcd565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261305157613051613013565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156130a5576130a5612fcd565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156130e4576130e4612fcd565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561311857613118612fcd565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561315f5761315f612fcd565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561319a5761319a612fcd565b600087129250878205871284841616156131b6576131b6612fcd565b878505871281841616156131cc576131cc612fcd565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561321457613214612fcd565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561324857613248612fcd565b50500190565b600067ffffffffffffffff80831681851680830382111561327157613271612fcd565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132b2576132b2612fcd565b500290565b6000826132c6576132c6613013565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261331660c0830184612b15565b98975050505050505050565b6000821982111561333557613335612fcd565b500190565b805163ffffffff81168114611f0557600080fd5b805160ff81168114611f0557600080fd5b600060c0828403121561337157600080fd5b60405160c0810181811067ffffffffffffffff821117156133945761339461285a565b6040526133a08361333a565b81526133ae6020840161334e565b60208201526133bf6040840161334e565b60408201526133d06060840161333a565b60608201526133e16080840161333a565b60808201526133f260a08401612d45565b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342f5761342f612fcd565b506001019056fea164736f6c634300080f000a", + "root": "0x01f9e62d19297f681ea2208de1fec6c67ed86a26e55dbf4b27a1b0881060507b", + "codeHash": "0x032951ba4bf0d8d857d02de99c2aa30177d9ab6b78004524a5b3c52de71caf02", + "code": "0x60806040526004361061030c5760003560e01c80637b3c71d31161019a578063c01f9e37116100e1578063ea0217cf1161008a578063f23a6e6111610064578063f23a6e6114610a9e578063f8ce560a14610ae3578063fc0c546a14610b0357600080fd5b8063ea0217cf14610a3e578063eb9019d414610a5e578063ece40cc114610a7e57600080fd5b8063d33219b4116100bb578063d33219b4146109a5578063dd4e2ba5146109c4578063deaaa7cc14610a0a57600080fd5b8063c01f9e3714610938578063c28bc2fa14610972578063c59057e41461098557600080fd5b80639a802a6d11610143578063ab58fb8e1161011d578063ab58fb8e146108be578063b58131b0146108de578063bc197c81146108f357600080fd5b80639a802a6d14610869578063a7713a7014610889578063a890c9101461089e57600080fd5b806386489ba91161017457806386489ba91461080957806391ddadf41461082957806397c3d3341461085557600080fd5b80637b3c71d3146107a15780637d5e81e2146107c157806384b0196e146107e157600080fd5b80633932abb11161025e578063544ffc9c116102075780635f398a14116101e15780635f398a141461074157806360c4247f1461076157806370b0f6601461078157600080fd5b8063544ffc9c1461068557806354fd4d50146106db578063567813881461072157600080fd5b806343859632116102385780634385963214610605578063452115d6146106505780634bf5d7e91461067057600080fd5b80633932abb1146105a35780633bccf4fd146105b85780633e4f49e6146105d857600080fd5b8063143489d0116102c05780632656227d1161029a5780632656227d146105255780632d63f693146105385780632fe3e2611461056f57600080fd5b8063143489d014610436578063150b7a0214610490578063160cbed71461050557600080fd5b806303420181116102f157806303420181146103d457806306f3f9e6146103f457806306fdde031461041457600080fd5b806301ffc9a71461037c57806302a251a3146103b157600080fd5b36610377573061031a610b24565b6001600160a01b0316146103755760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561038857600080fd5b5061039c610397366004614a0c565b610b3e565b60405190151581526020015b60405180910390f35b3480156103bd57600080fd5b506103c6610b4f565b6040519081526020016103a8565b3480156103e057600080fd5b506103c66103ef366004614b8e565b610b5b565b34801561040057600080fd5b5061037561040f366004614c35565b610c53565b34801561042057600080fd5b50610429610d0d565b6040516103a89190614caa565b34801561044257600080fd5b50610478610451366004614c35565b600090815260fe60205260409020546801000000000000000090046001600160a01b031690565b6040516001600160a01b0390911681526020016103a8565b34801561049c57600080fd5b506104d46104ab366004614cd2565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016103a8565b34801561051157600080fd5b506103c6610520366004614eac565b610d9f565b6103c6610533366004614eac565b611045565b34801561054457600080fd5b506103c6610553366004614c35565b600090815260fe602052604090205467ffffffffffffffff1690565b34801561057b57600080fd5b506103c67fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156105af57600080fd5b506103c66111ab565b3480156105c457600080fd5b506103c66105d3366004614f3c565b6111b7565b3480156105e457600080fd5b506105f86105f3366004614c35565b61122d565b6040516103a89190614fb9565b34801561061157600080fd5b5061039c610620366004614ffa565b6000828152610161602090815260408083206001600160a01b038516845260030190915290205460ff1692915050565b34801561065c57600080fd5b506103c661066b366004614eac565b611238565b34801561067c57600080fd5b50610429611369565b34801561069157600080fd5b506106c06106a0366004614c35565b600090815261016160205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016103a8565b3480156106e757600080fd5b5060408051808201909152600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152610429565b34801561072d57600080fd5b506103c661073c36600461502a565b61142f565b34801561074d57600080fd5b506103c661075c366004615056565b611458565b34801561076d57600080fd5b506103c661077c366004614c35565b6114a2565b34801561078d57600080fd5b5061037561079c366004614c35565b611597565b3480156107ad57600080fd5b506103c66107bc3660046150da565b61164e565b3480156107cd57600080fd5b506103c66107dc366004615134565b611696565b3480156107ed57600080fd5b506107f66116ad565b6040516103a89796959493929190615224565b34801561081557600080fd5b506103756108243660046152a0565b61176f565b34801561083557600080fd5b5061083e611951565b60405165ffffffffffff90911681526020016103a8565b34801561086157600080fd5b5060646103c6565b34801561087557600080fd5b506103c66108843660046152f9565b6119de565b34801561089557600080fd5b506103c66119f5565b3480156108aa57600080fd5b506103756108b9366004615352565b611a37565b3480156108ca57600080fd5b506103c66108d9366004614c35565b611aee565b3480156108ea57600080fd5b506103c6611ba3565b3480156108ff57600080fd5b506104d461090e36600461536f565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561094457600080fd5b506103c6610953366004614c35565b600090815260fe602052604090206001015467ffffffffffffffff1690565b610375610980366004615403565b611baf565b34801561099157600080fd5b506103c66109a0366004614eac565b611ce5565b3480156109b157600080fd5b506101f8546001600160a01b0316610478565b3480156109d057600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e90820152610429565b348015610a1657600080fd5b506103c67f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610a4a57600080fd5b50610375610a59366004614c35565b611d1f565b348015610a6a57600080fd5b506103c6610a79366004615447565b611dd6565b348015610a8a57600080fd5b50610375610a99366004614c35565b611df7565b348015610aaa57600080fd5b506104d4610ab9366004615473565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b348015610aef57600080fd5b506103c6610afe366004614c35565b611eae565b348015610b0f57600080fd5b5061019354610478906001600160a01b031681565b6000610b396101f8546001600160a01b031690565b905090565b6000610b4982611eb9565b92915050565b6000610b396101305490565b600080610bff610bf77fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610b979291906154dc565b60405180910390208b80519060200120604051602001610bdc959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120611f0f565b868686611f57565b9050610c458a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250611f75915050565b9a9950505050505050505050565b610c5b610b24565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30610cc4610b24565b6001600160a01b031614610d015760008036604051610ce49291906154dc565b604051809103902090505b80610cfa60ff6120e5565b03610cef57505b610d0a816121a2565b50565b606060fd8054610d1c906154ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610d48906154ec565b8015610d955780601f10610d6a57610100808354040283529160200191610d95565b820191906000526020600020905b815481529060010190602001808311610d7857829003601f168201915b5050505050905090565b600080610dae86868686611ce5565b90506004610dbb8261122d565b6007811115610dcc57610dcc614f8a565b14610e3f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6101f854604080517ff27a0c9200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec7919061553f565b6101f8546040517fb1c5f4270000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063b1c5f42790610f1b908a908a908a906000908b906004016155e6565b602060405180830381865afa158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c919061553f565b60008381526101f96020526040808220929092556101f85491517f8f2a0bb00000000000000000000000000000000000000000000000000000000081526001600160a01b0390921691638f2a0bb091610fc2918b918b918b91908b908990600401615634565b600060405180830381600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261102291906156bb565b604080519283526020830191909152015b60405180910390a15095945050505050565b60008061105486868686611ce5565b905060006110618261122d565b9050600481600781111561107757611077614f8a565b14806110945750600581600781111561109257611092614f8a565b145b6111065760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b600082815260fe60205260409081902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906111729084815260200190565b60405180910390a16111878288888888612343565b61119482888888886123e5565b6111a182888888886123f2565b5095945050505050565b6000610b3961012f5490565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061120590610bf790608001610bdc565b905061122287828860405180602001604052806000815250612438565b979650505050505050565b6000610b498261245b565b60008061124786868686611ce5565b905060006112548261122d565b600781111561126557611265614f8a565b146112b25760405162461bcd60e51b815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c00000000604482015260640161036c565b600081815260fe60205260409020546801000000000000000090046001600160a01b0316336001600160a01b0316146113535760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e6360448201527f656c000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b61135f868686866125da565b9695505050505050565b61019354604080517f4bf5d7e900000000000000000000000000000000000000000000000000000000815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156113ee57506040513d6000823e601f3d908101601f191682016040526113eb91908101906156d3565b60015b61142a575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061145084828560405180602001604052806000815250612438565b949350505050565b60008033905061122287828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611f75915050565b6101c7546000908082036114bb5750506101c654919050565b60006101c76114cb600184615741565b815481106114db576114db615758565b60009182526020918290206040805180820190915291015463ffffffff81168083526401000000009091047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928201929092529150841061155c57602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b611571611568856125e8565b6101c790612668565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b61159f610b24565b6001600160a01b0316336001600160a01b0316146115ff5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611608610b24565b6001600160a01b03161461164557600080366040516116289291906154dc565b604051809103902090505b8061163e60ff6120e5565b0361163357505b610d0a81612731565b60008033905061135f86828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061243892505050565b60006116a485858585612774565b95945050505050565b6000606080600080600060606065546000801b1480156116cd5750606654155b6117195760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640161036c565b611721612ca9565b611729612cb8565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600054610100900460ff161580801561178f5750600054600160ff909116105b806117a95750303b1580156117a9575060005460ff166001145b61181b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161036c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561187957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6118b76040518060400160405280600f81526020017f55706772616465476f7665726e6f720000000000000000000000000000000000815250612cc7565b6118c2858585612d90565b6118ca612e1d565b6118d387612e9c565b6118dc82612f22565b6118e586612fa8565b801561194857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61019354604080517f91ddadf400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156119d1575060408051601f3d908101601f191682019092526119ce91810190615787565b60015b61142a57610b394361302e565b60006119eb8484846130ac565b90505b9392505050565b6101c75460009015611a2f57611a0c6101c761313c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b506101c65490565b611a3f610b24565b6001600160a01b0316336001600160a01b031614611a9f5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611aa8610b24565b6001600160a01b031614611ae55760008036604051611ac89291906154dc565b604051809103902090505b80611ade60ff6120e5565b03611ad357505b610d0a81613182565b6101f85460008281526101f960205260408082205490517fd45c44350000000000000000000000000000000000000000000000000000000081526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8a919061553f565b905080600114611b9a57806119ee565b60009392505050565b6000610b396101315490565b611bb7610b24565b6001600160a01b0316336001600160a01b031614611c175760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611c20610b24565b6001600160a01b031614611c5d5760008036604051611c409291906154dc565b604051809103902090505b80611c5660ff6120e5565b03611c4b57505b600080856001600160a01b0316858585604051611c7b9291906154dc565b60006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b50915091506119488282604051806060016040528060288152602001615b8460289139613205565b600084848484604051602001611cfe94939291906157af565b60408051601f19818403018152919052805160209091012095945050505050565b611d27610b24565b6001600160a01b0316336001600160a01b031614611d875760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611d90610b24565b6001600160a01b031614611dcd5760008036604051611db09291906154dc565b604051809103902090505b80611dc660ff6120e5565b03611dbb57505b610d0a8161321e565b60006119ee8383611df260408051602081019091526000815290565b6130ac565b611dff610b24565b6001600160a01b0316336001600160a01b031614611e5f5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604482015260640161036c565b30611e68610b24565b6001600160a01b031614611ea55760008036604051611e889291906154dc565b604051809103902090505b80611e9e60ff6120e5565b03611e9357505b610d0a816132d7565b6000610b498261331a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6e665ced000000000000000000000000000000000000000000000000000000001480610b495750610b49826133c2565b6000610b49611f1c61356c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000611f6887878787613576565b915091506111a18161363a565b600085815260fe602052604081206001611f8e8861122d565b6007811115611f9f57611f9f614f8a565b146120125760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201527f6976650000000000000000000000000000000000000000000000000000000000606482015260840161036c565b805460009061202d90889067ffffffffffffffff16866130ac565b905061203c888888848861379f565b835160000361209157866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48988848960405161208494939291906157fa565b60405180910390a2611222565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516120d2959493929190615822565b60405180910390a2979650505050505050565b600061210d8254600f81810b700100000000000000000000000000000000909204900b131590565b15612144576040517f3db2a12a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583547fffffffffffffffffffffffffffffffff000000000000000000000000000000001692016fffffffffffffffffffffffffffffffff169190911790915590565b606481111561223f5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160648201527f746f720000000000000000000000000000000000000000000000000000000000608482015260a40161036c565b60006122496119f5565b9050801580159061225b57506101c754155b156122d65760408051808201909152600081526101c7906020810161227f84613992565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b6123046122f16122e4611951565b65ffffffffffff166125e8565b6122fa84613992565b6101c79190613a26565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b3061234c610b24565b6001600160a01b0316146123de5760005b84518110156123dc57306001600160a01b031685828151811061238257612382615758565b60200260200101516001600160a01b0316036123cc576123cc8382815181106123ad576123ad615758565b60200260200101518051906020012060ff613a4190919063ffffffff16565b6123d581615868565b905061235d565b505b5050505050565b6123de8585858585613a93565b306123fb610b24565b6001600160a01b0316146123de5760ff54600f81810b700100000000000000000000000000000000909204900b13156123de57600060ff556123de565b60006116a48585858561245660408051602081019091526000815290565b611f75565b60008061246783613b21565b9050600481600781111561247d5761247d614f8a565b146124885792915050565b60008381526101f96020526040902054806124a4575092915050565b6101f8546040517f2ab0f529000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252b91906158a0565b1561253a575060079392505050565b6101f8546040517f584b153e000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa15801561259d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c191906158a0565b156125d0575060059392505050565b5060029392505050565b60006116a485858585613c64565b600063ffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b5090565b8154600090818160058111156126c557600061268384613d33565b61268d9085615741565b60008881526020902090915081015463ffffffff90811690871610156126b5578091506126c3565b6126c08160016156bb565b92505b505b60006126d387878585613e1b565b90508015612724576126f8876126ea600184615741565b600091825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611222565b6000979650505050505050565b61012f5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161012f55565b6000336127818184613e79565b6127cd5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161036c565b60006127d7611951565b65ffffffffffff1690506127e9611ba3565b6127f883610a79600185615741565b101561286c5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f77207060448201527f726f706f73616c207468726573686f6c64000000000000000000000000000000606482015260840161036c565b60006128818888888880519060200120611ce5565b905086518851146128fa5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b85518851146129715760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b60008851116129c25760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161036c565b600081815260fe602052604090205467ffffffffffffffff1615612a4e5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c726561647920657869737460448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6000612a586111ab565b612a6290846156bb565b90506000612a6e610b4f565b612a7890836156bb565b90506040518060e00160405280612a8e84613fc9565b67ffffffffffffffff1681526001600160a01b038716602082015260006040820152606001612abc83613fc9565b67ffffffffffffffff9081168252600060208084018290526040808501839052606094850183905288835260fe8252918290208551815492870151878501519186167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317680100000000000000006001600160a01b039094168402177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000060e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c0909401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115612c4657612c46614aa8565b604051908082528060200260200182016040528015612c7957816020015b6060815260200190600190039081612c645790505b508d88888f604051612c93999897969594939291906158c2565b60405180910390a1509098975050505050505050565b606060678054610d1c906154ec565b606060688054610d1c906154ec565b600054610100900460ff16612d445760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b612d8781612d8260408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b614049565b610d0a816140ee565b600054610100900460ff16612e0d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b612e1883838361417b565b505050565b600054610100900460ff16612e9a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b565b600054610100900460ff16612f195760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a81614213565b600054610100900460ff16612f9f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a816142cb565b600054610100900460ff166130255760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b610d0a81614348565b600065ffffffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f3820626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b610193546040517f3a46b1a80000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613118573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb919061553f565b80546000908015611b9a57613156836126ea600184615741565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166119ee565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606083156132145750816119ee565b6119ee83836143c5565b600081116132945760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060448201527f746f6f206c6f7700000000000000000000000000000000000000000000000000606482015260840161036c565b6101305460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161013055565b6101315460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161013155565b60006064613327836114a2565b610193546040517f8e539e8c000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa15801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae919061553f565b6133b8919061599a565b610b499190615a06565b60007f51159c06000000000000000000000000000000000000000000000000000000007fc6fba1f8000000000000000000000000000000000000000000000000000000007fbf26d897000000000000000000000000000000000000000000000000000000007f79dd796f000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861682148061349c57507fffffffff00000000000000000000000000000000000000000000000000000000868116908216145b806134cb57507fffffffff00000000000000000000000000000000000000000000000000000000868116908516145b8061351757507fffffffff0000000000000000000000000000000000000000000000000000000086167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061135f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008716149695505050505050565b6000610b396143ef565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156135ad5750600090506003613631565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613601573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661362a57600060019250925050613631565b9150600090505b94509492505050565b600081600481111561364e5761364e614f8a565b036136565750565b600181600481111561366a5761366a614f8a565b036136b75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161036c565b60028160048111156136cb576136cb614f8a565b036137185760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161036c565b600381600481111561372c5761372c614f8a565b03610d0a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161036c565b6000858152610161602090815260408083206001600160a01b0388168452600381019092529091205460ff161561383e5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c72656160448201527f6479206361737400000000000000000000000000000000000000000000000000606482015260840161036c565b6001600160a01b0385166000908152600382016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ff84166138a8578281600001600082825461389d91906156bb565b909155506123dc9050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8516016138e6578281600101600082825461389d91906156bb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff851601613924578281600201600082825461389d91906156bb565b60405162461bcd60e51b815260206004820152603560248201527f476f7665726e6f72566f74696e6753696d706c653a20696e76616c696420766160448201527f6c756520666f7220656e756d20566f7465547970650000000000000000000000606482015260840161036c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156126645760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f3234206269747300000000000000000000000000000000000000000000000000606482015260840161036c565b600080613a34858585614463565b915091505b935093915050565b815470010000000000000000000000000000000090819004600f0b6000818152600180860160205260409091209390935583546fffffffffffffffffffffffffffffffff908116939091011602179055565b6101f8546040517fe38335e50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063e38335e5903490613ae89088908890889060009089906004016155e6565b6000604051808303818588803b158015613b0157600080fd5b505af1158015613b15573d6000803e3d6000fd5b50505050505050505050565b600081815260fe60205260408120600281015460ff1615613b455750600792915050565b6002810154610100900460ff1615613b605750600292915050565b600083815260fe602052604081205467ffffffffffffffff1690819003613bc95760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161036c565b6000613bd3611951565b65ffffffffffff169050808210613bef57506000949350505050565b600085815260fe602052604090206001015467ffffffffffffffff16818110613c1e5750600195945050505050565b613c278661465a565b8015613c4757506000868152610161602052604090208054600190910154115b15613c585750600495945050505050565b50600395945050505050565b600080613c73868686866146a8565b60008181526101f96020526040902054909150156116a4576101f85460008281526101f96020526040908190205490517fc4d252f50000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163c4d252f591613ce89160040190815260200190565b600060405180830381600087803b158015613d0257600080fd5b505af1158015613d16573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600081600003613d4557506000919050565b60006001613d52846147d1565b901c6001901b90506001818481613d6b57613d6b6159d7565b048201901c90506001818481613d8357613d836159d7565b048201901c90506001818481613d9b57613d9b6159d7565b048201901c90506001818481613db357613db36159d7565b048201901c90506001818481613dcb57613dcb6159d7565b048201901c90506001818481613de357613de36159d7565b048201901c90506001818481613dfb57613dfb6159d7565b048201901c90506119ee81828581613e1557613e156159d7565b04614865565b60005b81831015613e71576000613e32848461487b565b60008781526020902090915063ffffffff86169082015463ffffffff161115613e5d57809250613e6b565b613e688160016156bb565b93505b50613e1e565b509392505050565b80516000906034811015613e91576001915050610b49565b8281017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec01517fffffffffffffffffffffffff000000000000000000000000000000000000000081167f2370726f706f7365723d3078000000000000000000000000000000000000000014613f0b57600192505050610b49565b600080613f19602885615741565b90505b83811015613fa857600080613f68888481518110613f3c57613f3c615758565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016614896565b9150915081613f805760019650505050505050610b49565b8060ff166004856001600160a01b0316901b179350505080613fa190615868565b9050613f1c565b50856001600160a01b0316816001600160a01b031614935050505092915050565b600067ffffffffffffffff8211156126645760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f3420626974730000000000000000000000000000000000000000000000000000606482015260840161036c565b600054610100900460ff166140c65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b60676140d28382615a87565b5060686140df8282615a87565b50506000606581905560665550565b600054610100900460ff1661416b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b60fd6141778282615a87565b5050565b600054610100900460ff166141f85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b61420183612731565b61420a8261321e565b612e18816132d7565b600054610100900460ff166142905760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b61019380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600054610100900460ff16610d015760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b600054610100900460ff16611ae55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161036c565b8151156143d55781518083602001fd5b8060405162461bcd60e51b815260040161036c9190614caa565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61441a614982565b6144226149db565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8254600090819080156145eb576000614481876126ea600185615741565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16602084015291925090871610156145185760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161036c565b805163ffffffff8088169116036145765784614539886126ea600186615741565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9092169190911790556145db565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b602001519250839150613a399050565b50506040805180820190915263ffffffff80851682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a815291822095519251909316640100000000029190931617920191909155905081613a39565b6000818152610161602052604081206002810154600182015461467d91906156bb565b600084815260fe602052604090205461469f9067ffffffffffffffff16611eae565b11159392505050565b6000806146b786868686611ce5565b905060006146c48261122d565b905060028160078111156146da576146da614f8a565b141580156146fa575060068160078111156146f7576146f7614f8a565b14155b80156147185750600781600781111561471557614715614f8a565b14155b6147645760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161036c565b600082815260fe60205260409081902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906110339084815260200190565b600080608083901c156147e657608092831c92015b604083901c156147f857604092831c92015b602083901c1561480a57602092831c92015b601083901c1561481c57601092831c92015b600883901c1561482e57600892831c92015b600483901c1561484057600492831c92015b600283901c1561485257600292831c92015b600183901c15610b495760010192915050565b600081831061487457816119ee565b5090919050565b600061488a6002848418615a06565b6119ee908484166156bb565b60008060f883901c602f811180156148b15750603a8160ff16105b156148e4576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09091019350915050565b8060ff1660401080156148fa575060478160ff16105b1561492d576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc99091019350915050565b8060ff166060108015614943575060678160ff16105b15614976576001947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa99091019350915050565b50600093849350915050565b60008061498d612ca9565b8051909150156149a4578051602090910120919050565b60655480156149b35792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806149e6612cb8565b8051909150156149fd578051602090910120919050565b60665480156149b35792915050565b600060208284031215614a1e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119ee57600080fd5b803560ff8116811461142a57600080fd5b60008083601f840112614a7157600080fd5b50813567ffffffffffffffff811115614a8957600080fd5b602083019150836020828501011115614aa157600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0057614b00614aa8565b604052919050565b600067ffffffffffffffff821115614b2257614b22614aa8565b50601f01601f191660200190565b6000614b43614b3e84614b08565b614ad7565b9050828152838383011115614b5757600080fd5b828260208301376000602084830101529392505050565b600082601f830112614b7f57600080fd5b6119ee83833560208501614b30565b60008060008060008060008060e0898b031215614baa57600080fd5b88359750614bba60208a01614a4e565b9650604089013567ffffffffffffffff80821115614bd757600080fd5b614be38c838d01614a5f565b909850965060608b0135915080821115614bfc57600080fd5b50614c098b828c01614b6e565b945050614c1860808a01614a4e565b925060a0890135915060c089013590509295985092959890939650565b600060208284031215614c4757600080fd5b5035919050565b60005b83811015614c69578181015183820152602001614c51565b83811115614c78576000848401525b50505050565b60008151808452614c96816020860160208601614c4e565b601f01601f19169290920160200192915050565b6020815260006119ee6020830184614c7e565b6001600160a01b0381168114610d0a57600080fd5b60008060008060808587031215614ce857600080fd5b8435614cf381614cbd565b93506020850135614d0381614cbd565b925060408501359150606085013567ffffffffffffffff811115614d2657600080fd5b614d3287828801614b6e565b91505092959194509250565b600067ffffffffffffffff821115614d5857614d58614aa8565b5060051b60200190565b600082601f830112614d7357600080fd5b81356020614d83614b3e83614d3e565b82815260059290921b84018101918181019086841115614da257600080fd5b8286015b84811015614dc6578035614db981614cbd565b8352918301918301614da6565b509695505050505050565b600082601f830112614de257600080fd5b81356020614df2614b3e83614d3e565b82815260059290921b84018101918181019086841115614e1157600080fd5b8286015b84811015614dc65780358352918301918301614e15565b600082601f830112614e3d57600080fd5b81356020614e4d614b3e83614d3e565b82815260059290921b84018101918181019086841115614e6c57600080fd5b8286015b84811015614dc657803567ffffffffffffffff811115614e905760008081fd5b614e9e8986838b0101614b6e565b845250918301918301614e70565b60008060008060808587031215614ec257600080fd5b843567ffffffffffffffff80821115614eda57600080fd5b614ee688838901614d62565b95506020870135915080821115614efc57600080fd5b614f0888838901614dd1565b94506040870135915080821115614f1e57600080fd5b50614f2b87828801614e2c565b949793965093946060013593505050565b600080600080600060a08688031215614f5457600080fd5b85359450614f6460208701614a4e565b9350614f7260408701614a4e565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160088310614ff4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561500d57600080fd5b82359150602083013561501f81614cbd565b809150509250929050565b6000806040838503121561503d57600080fd5b8235915061504d60208401614a4e565b90509250929050565b60008060008060006080868803121561506e57600080fd5b8535945061507e60208701614a4e565b9350604086013567ffffffffffffffff8082111561509b57600080fd5b6150a789838a01614a5f565b909550935060608801359150808211156150c057600080fd5b506150cd88828901614b6e565b9150509295509295909350565b600080600080606085870312156150f057600080fd5b8435935061510060208601614a4e565b9250604085013567ffffffffffffffff81111561511c57600080fd5b61512887828801614a5f565b95989497509550505050565b6000806000806080858703121561514a57600080fd5b843567ffffffffffffffff8082111561516257600080fd5b61516e88838901614d62565b9550602087013591508082111561518457600080fd5b61519088838901614dd1565b945060408701359150808211156151a657600080fd5b6151b288838901614e2c565b935060608701359150808211156151c857600080fd5b508501601f810187136151da57600080fd5b614d3287823560208401614b30565b600081518084526020808501945080840160005b83811015615219578151875295820195908201906001016151fd565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061525f60e0830189614c7e565b82810360408401526152718189614c7e565b90508660608401526001600160a01b03861660808401528460a084015282810360c0840152610c4581856151e9565b60008060008060008060c087890312156152b957600080fd5b86356152c481614cbd565b955060208701356152d481614cbd565b95989597505050506040840135936060810135936080820135935060a0909101359150565b60008060006060848603121561530e57600080fd5b833561531981614cbd565b925060208401359150604084013567ffffffffffffffff81111561533c57600080fd5b61534886828701614b6e565b9150509250925092565b60006020828403121561536457600080fd5b81356119ee81614cbd565b600080600080600060a0868803121561538757600080fd5b853561539281614cbd565b945060208601356153a281614cbd565b9350604086013567ffffffffffffffff808211156153bf57600080fd5b6153cb89838a01614dd1565b945060608801359150808211156153e157600080fd5b6153ed89838a01614dd1565b935060808801359150808211156150c057600080fd5b6000806000806060858703121561541957600080fd5b843561542481614cbd565b935060208501359250604085013567ffffffffffffffff81111561511c57600080fd5b6000806040838503121561545a57600080fd5b823561546581614cbd565b946020939093013593505050565b600080600080600060a0868803121561548b57600080fd5b853561549681614cbd565b945060208601356154a681614cbd565b93506040860135925060608601359150608086013567ffffffffffffffff8111156154d057600080fd5b6150cd88828901614b6e565b8183823760009101908152919050565b600181811c9082168061550057607f821691505b602082108103615539577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561555157600080fd5b5051919050565b600081518084526020808501945080840160005b838110156152195781516001600160a01b03168752958201959082019060010161556c565b600081518084526020808501808196508360051b8101915082860160005b858110156155d95782840389526155c7848351614c7e565b988501989350908401906001016155af565b5091979650505050505050565b60a0815260006155f960a0830188615558565b828103602084015261560b81886151e9565b9050828103604084015261561f8187615591565b60608401959095525050608001529392505050565b60c08152600061564760c0830189615558565b828103602084015261565981896151e9565b9050828103604084015261566d8188615591565b60608401969096525050608081019290925260a0909101529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156156ce576156ce61568c565b500190565b6000602082840312156156e557600080fd5b815167ffffffffffffffff8111156156fc57600080fd5b8201601f8101841361570d57600080fd5b805161571b614b3e82614b08565b81815285602083850101111561573057600080fd5b6116a4826020830160208601614c4e565b6000828210156157535761575361568c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561579957600080fd5b815165ffffffffffff811681146119ee57600080fd5b6080815260006157c26080830187615558565b82810360208401526157d481876151e9565b905082810360408401526157e88186615591565b91505082606083015295945050505050565b84815260ff8416602082015282604082015260806060820152600061135f6080830184614c7e565b85815260ff8516602082015283604082015260a06060820152600061584a60a0830185614c7e565b828103608084015261585c8185614c7e565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036158995761589961568c565b5060010190565b6000602082840312156158b257600080fd5b815180151581146119ee57600080fd5b60006101208b835260206001600160a01b038c16818501528160408501526158ec8285018c615558565b91508382036060850152615900828b6151e9565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561595157601f1987840301855261593f838351614c7e565b94860194925090850190600101615923565b505086810360a0880152615965818c615591565b9450505050508560c08401528460e084015282810361010084015261598a8185614c7e565b9c9b505050505050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156159d2576159d261568c565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615a3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b601f821115612e1857600081815260208120601f850160051c81016020861015615a685750805b601f850160051c820191505b818110156123dc57828155600101615a74565b815167ffffffffffffffff811115615aa157615aa1614aa8565b615ab581615aaf84546154ec565b84615a41565b602080601f831160018114615b085760008415615ad25750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556123dc565b600085815260208120601f198616915b82811015615b3757888601518255948401946001909101908401615b18565b5085821015615b7357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000001": "2500000000000000000000000000000000000000003b9aca00", - "0x0000000000000000000000000000000000000000000000000000000000000032": "dead" + "0x0000000000000000000000000000000000000000000000000000000000000000": "ff" }, - "key": "0xed887ba298276e378c422b1a275e365711e6b29aaa834cebdc8465b204127702" + "key": "0x3247e86af51c9646bccbd6593d7598c134338c594bef4622bd0013ac9d2c2a7f" }, "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0": { "balance": "0", "nonce": 1, - "root": "0x310831b1cdcd6cda1d6c87661dc26734a307329aa4deb1d825f8ba5b99970645", + "root": "0x38be4ba5cca5bf3775d7ab4358b62124d2ee67a221870e04eee8b6f9ec582a20", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x0000000000000000000000000000000000000000000000000000000000000001": "2600000000000000000000000000000000000000003b9aca00", + "0x0000000000000000000000000000000000000000000000000000000000000001": "2700000000000000000000000000000000000000003b9aca00", "0x0000000000000000000000000000000000000000000000000000000000000032": "dead", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "9e545e3c0baab3e08cdfd552c960a1050f373042", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x08460e45164e07e0e4df7165de40d5863fb7b8ece896a164bf57a134287c68f5" @@ -369,11 +378,11 @@ "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853": { "balance": "0", "nonce": 1, - "root": "0x581ae04da8e2ffa203420263bc7eb09d342be7035bff8477f5d7e18b5e33c232", + "root": "0x50dcd80ea68a5975c2f00ac2cd3358ddf1417ea4eacd8836275436966314519c", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "59b670e9fa9d0a427751af201d676719a970857b", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x3f005d5c85385294c7a0de617e62ea384bebca06a5b203bd6166371f023de860" @@ -381,7 +390,7 @@ "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0": { "balance": "0", "nonce": 1, - "root": "0x99671105820c3fffd5058012b89ca58dddaa43a16e0a54ab0d5a7723f4c998f2", + "root": "0x931a826cd66929549ae6066e92fa355345065cfb546130e6ca1b4aa1989604a3", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { @@ -398,13 +407,13 @@ "0x0368ef2524a38b6b115d8ebd4b69ba6955d052f73f6a344b60cd0a0506a9d257": "70997970c51812dc3a010c7d01b50e0d17dc79c8", "0x057edaae68d51eec754066df75dd2069eb696ff039b09734aba5812253786c27": "01", "0x1b5420bf53fcfb00d9f99ce9bca9913de940cff08ed8b58c6100c58cdb99dcaf": "02", - "0x2f09a8ecadf9dcffddc0520948687cf84b3134ffe164b9b816be8f223e9e3f0c": "010000002c", + "0x2f09a8ecadf9dcffddc0520948687cf84b3134ffe164b9b816be8f223e9e3f0c": "010000002d", "0x2f7a9cff6166705937132e731d03ca3e5faa143373c7792e6ce15f51d1ab24b7": "01", "0x34a128ff2438bccb68124de780ea45be60aca78c6fb6ce114324ee2dd88c546d": "fabb0ac9d68b0b445fb7357272ff202c5651694a", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "f5059a5d33d5853360d16c683c16e67980206f36", - "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296770": "010000002b", - "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296771": "020000002c", - "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296772": "030000002d", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "95401dc811bb5740090279ba06cfa8fcf6113778", + "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296770": "010000002c", + "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296771": "020000002d", + "0x54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296772": "030000002e", "0x5b542b52981c4f2fa9965514d5bb7f37f1b7bc0902a6a4dc6b04dc05be85586b": "01", "0x6b5af3b1d385c06ee560b099063c98155ccb14d842fd04c7a6955cd2edcd5166": "01", "0x6bee784efeb983674392298ab585b22866bedf00ebb0eea949d1e66f3f50e71d": "71be63f3384f5fb98995898a86b02fb2426c5788", @@ -415,9 +424,9 @@ "0x8cef3c7042a130027243cb2f998ead5342d2a129784eda79676f7704b2ea4f6c": "01", "0x8df7a434b53c9aea5a5338791875bc3a8969cb613c974168f95eefeae5fd01ae": "01", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3", - "0xb6aab34db6ad98c1b7e7142146804ce9fc6992da8076478d289c62788d5fa80f": "010000002b", + "0xb6aab34db6ad98c1b7e7142146804ce9fc6992da8076478d289c62788d5fa80f": "010000002c", "0xb7daf9b15a61fd1e001a01cae8981f19b5cd917dea1a292fe96bf8ed779c8ac9": "71be63f3384f5fb98995898a86b02fb2426c5788", - "0xc4f77ef82cda0901cfdbeef8591c09692efae33b0f3173d67fb6cd42be529d44": "010000002d", + "0xc4f77ef82cda0901cfdbeef8591c09692efae33b0f3173d67fb6cd42be529d44": "010000002e", "0xd4e1ac8b62c3ff1e2c1b7113742533b8310ce5ab8a8767ead9ba8b250c7e3cc9": "70997970c51812dc3a010c7d01b50e0d17dc79c8", "0xd9841eb47aa407700e14e706cabe283f9effe927976c5e8d4e2a2d8069f76af8": "01", "0xe7659034bb7a5559d77c81228f78f1269e2e2532abae1c7e5319fa4c1ffcfff7": "fabb0ac9d68b0b445fb7357272ff202c5651694a", @@ -427,43 +436,68 @@ }, "key": "0x7b52b82e709191be4bae3bb8544d2a6b51d7440a1d15ba1f09e33bcf049e47a5" }, + "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9": { + "balance": "0", + "nonce": 1, + "root": "0xf05636166cad95d73ae816957c4a7e8ba11c37a78010bd04d4261e85ccb7b510", + "codeHash": "0x3283cdb6e4de5541675a974c1aad04ee74fab053a43f4d15a7c28f323f6ddf07", + "code": "0x6080604052600436106101475760003560e01c80638c3152e9116100c0578063cff0ab9611610074578063e965084c11610059578063e965084c146104b5578063e9e05c4214610541578063f04987501461055457600080fd5b8063cff0ab96146103f4578063d53a822f1461049557600080fd5b8063a14238e7116100a5578063a14238e714610370578063b98debbf146103a0578063c30af388146103d457600080fd5b80638c3152e9146103235780639bf62d821461034357600080fd5b80635865b607116101175780636dbffb78116100fc5780636dbffb78146102ba578063724c184c146102da5780638456cb591461030e57600080fd5b80635865b6071461025c5780635c975abb1461029057600080fd5b80621c2ff6146101735780630757b244146101d15780633f4ba83a146101f157806354fd4d501461020657600080fd5b3661016e5761016c3334620186a0600060405180602001604052806000815250610588565b005b600080fd5b34801561017f57600080fd5b506101a77f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101dd57600080fd5b5061016c6101ec366004612a08565b61076e565b3480156101fd57600080fd5b5061016c610d72565b34801561021257600080fd5b5061024f6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101c89190612b5f565b34801561026857600080fd5b506101a77f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae81565b34801561029c57600080fd5b506035546102aa9060ff1681565b60405190151581526020016101c8565b3480156102c657600080fd5b506102aa6102d5366004612b72565b610e7b565b3480156102e657600080fd5b506101a77f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b34801561031a57600080fd5b5061016c610f52565b34801561032f57600080fd5b5061016c61033e366004612b8b565b611057565b34801561034f57600080fd5b506032546101a79073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037c57600080fd5b506102aa61038b366004612b72565b60336020526000908152604090205460ff1681565b3480156103ac57600080fd5b506101a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b3480156103e057600080fd5b5061016c6103ef366004612bd8565b611825565b34801561040057600080fd5b5060015461045c906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101c8565b3480156104a157600080fd5b5061016c6104b0366004612c46565b611983565b3480156104c157600080fd5b506105136104d0366004612b72565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101c8565b61016c61054f366004612c63565b610588565b34801561056057600080fd5b506101a77f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b8260005a905083156106235773ffffffffffffffffffffffffffffffffffffffff8716156106235760405162461bcd60e51b815260206004820152603d60248201527f4b726f6d61506f7274616c3a206d7573742073656e6420746f2061646472657360448201527f73283029207768656e206372656174696e67206120636f6e747261637400000060648201526084015b60405180910390fd5b6152088567ffffffffffffffff1610156106a55760405162461bcd60e51b815260206004820152603560248201527f4b726f6d61506f7274616c3a20676173206c696d6974206d75737420636f766560448201527f7220696e737472696e7369632067617320636f73740000000000000000000000606482015260840161061a565b333281146106c6575033731111000000000000000000000000000000001111015b600034888888886040516020016106e1959493929190612ce0565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516107519190612b5f565b60405180910390a450506107658282611b72565b50505050505050565b60355460ff16156107c15760405162461bcd60e51b815260206004820152601360248201527f4b726f6d61506f7274616c3a2070617573656400000000000000000000000000604482015260640161061a565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff16036108665760405162461bcd60e51b815260206004820152603c60248201527f4b726f6d61506f7274616c3a20796f752063616e6e6f742073656e64206d657360448201527f736167657320746f2074686520706f7274616c20636f6e747261637400000000606482015260840161061a565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa1580156108f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109189190612d65565b60200151905061093561093036869003860186612ddd565b611e85565b81146109a95760405162461bcd60e51b815260206004820152602660248201527f4b726f6d61506f7274616c3a20696e76616c6964206f757470757420726f6f7460448201527f2070726f6f660000000000000000000000000000000000000000000000000000606482015260840161061a565b60006109b487611f0a565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610ae95750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612d65565b6020015114155b610b5b5760405162461bcd60e51b815260206004820152603460248201527f4b726f6d61506f7274616c3a207769746864726177616c20686173682068617360448201527f20616c7265616479206265656e2070726f76656e000000000000000000000000606482015260840161061a565b60408051602080820185905260008284015282518083038401815260608301808552815191909201207f12e64a7200000000000000000000000000000000000000000000000000000000909152917f0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae73ffffffffffffffffffffffffffffffffffffffff16916312e64a7291610bfd9185918b918b918e013590606401612e96565b602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190612f97565b610cb05760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a20696e76616c6964207769746864726177616c2060448201527f696e636c7573696f6e2070726f6f660000000000000000000000000000000000606482015260840161061a565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e1614610e1d5760405162461bcd60e51b815260206004820152602660248201527f4b726f6d61506f7274616c3a206f6e6c7920677561726469616e2063616e207560448201527f6e70617573650000000000000000000000000000000000000000000000000000606482015260840161061a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090610f4c9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa158015610f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f319190612d65565b604001516fffffffffffffffffffffffffffffffff16611f57565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e1614610ffc5760405162461bcd60e51b8152602060048201526024808201527f4b726f6d61506f7274616c3a206f6e6c7920677561726469616e2063616e207060448201527f6175736500000000000000000000000000000000000000000000000000000000606482015260840161061a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610e71565b60355460ff16156110aa5760405162461bcd60e51b815260206004820152601360248201527f4b726f6d61506f7274616c3a2070617573656400000000000000000000000000604482015260640161061a565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146111395760405162461bcd60e51b815260206004820152603c60248201527f4b726f6d61506f7274616c3a2063616e206f6e6c792074726967676572206f6e60448201527f65207769746864726177616c20706572207472616e73616374696f6e00000000606482015260840161061a565b600061114482611f0a565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036112155760405162461bcd60e51b815260206004820152602f60248201527f4b726f6d61506f7274616c3a207769746864726177616c20686173206e6f742060448201527f6265656e2070726f76656e207965740000000000000000000000000000000000606482015260840161061a565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a49190612fb4565b81602001516fffffffffffffffffffffffffffffffff1610156113555760405162461bcd60e51b815260206004820152604860248201527f4b726f6d61506f7274616c3a207769746864726177616c2074696d657374616d60448201527f70206c657373207468616e204c32204f7261636c65207374617274696e67207460648201527f696d657374616d70000000000000000000000000000000000000000000000000608482015260a40161061a565b61137481602001516fffffffffffffffffffffffffffffffff16611f57565b61140c5760405162461bcd60e51b815260206004820152604260248201527f4b726f6d61506f7274616c3a2070726f76656e207769746864726177616c206660448201527f696e616c697a6174696f6e20706572696f6420686173206e6f7420656c61707360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a40161061a565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401608060405180830381865afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190612d65565b82516020820151919250146115785760405162461bcd60e51b815260206004820152604660248201527f4b726f6d61506f7274616c3a206f757470757420726f6f742070726f76656e2060448201527f6973206e6f74207468652073616d652061732063757272656e74206f7574707560648201527f7420726f6f740000000000000000000000000000000000000000000000000000608482015260a40161061a565b61159781604001516fffffffffffffffffffffffffffffffff16611f57565b61162f5760405162461bcd60e51b815260206004820152604260248201527f4b726f6d61506f7274616c3a20636865636b706f696e74206f7574707574206660448201527f696e616c697a6174696f6e20706572696f6420686173206e6f7420656c61707360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a40161061a565b60008381526033602052604090205460ff16156116b45760405162461bcd60e51b815260206004820152603260248201527f4b726f6d61506f7274616c3a207769746864726177616c2068617320616c726560448201527f616479206265656e2066696e616c697a65640000000000000000000000000000606482015260840161061a565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a088015161175693929190611ffa565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b906117bb90841515815260200190565b60405180910390a2801580156117d15750326001145b1561181e5760405162461bcd60e51b815260206004820152601e60248201527f4b726f6d61506f7274616c3a207769746864726177616c206661696c65640000604482015260640161061a565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146118d05760405162461bcd60e51b815260206004820152603f60248201527f4b726f6d61506f7274616c3a2066756e6374696f6e2063616e206f6e6c79206260448201527f652063616c6c65642066726f6d207468652056616c696461746f72506f6f6c00606482015260840161061a565b6040513373111100000000000000000000000000000000111101906000906119049082908190879082908890602001612ce0565b604051602081830303815290604052905060008573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516119749190612b5f565b60405180910390a45050505050565b600054610100900460ff16158080156119a35750600054600160ff909116105b806119bd5750303b1580156119bd575060005460ff166001145b611a2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161061a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611a8d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611aef612058565b8015611b5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611ba8907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643612ffc565b90506000611bb4612121565b90506000816020015160ff16826000015163ffffffff16611bd59190613042565b90508215611d0c57600154600090611c0c908390700100000000000000000000000000000000900467ffffffffffffffff166130aa565b90506000836040015160ff1683611c23919061311e565b600154611c439084906fffffffffffffffffffffffffffffffff1661311e565b611c4d9190613042565b600154909150600090611c9e90611c779084906fffffffffffffffffffffffffffffffff166131da565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166121e7565b90506001861115611ccd57611cca611c7782876040015160ff1660018a611cc59190612ffc565b612204565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611d3f908490700100000000000000000000000000000000900467ffffffffffffffff1661324e565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611e085760405162461bcd60e51b815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161061a565b600154600090611e34906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661327a565b90506000611e4648633b9aca00612259565b611e5090836132b7565b905060005a611e5f9088612ffc565b905080821115611e7b57611e7b611e768284612ffc565b612271565b5050505050505050565b8051600090611e9757610f4c8261229f565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e00000000000000000000000000000000000000000000606482015260840161061a565b919050565b80516020808301516040808501516060860151608087015160a08801519351600097611f3a9790969591016132cb565b604051602081830303815290604052805190602001209050919050565b60007f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c973ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe89190612fb4565b611ff29083613322565b421192915050565b600080600061200a8660006122e2565b905080612040576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166120d55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161061a565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051273ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa1580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e2919061335f565b905090565b60006121fc6121f68585612300565b8361230f565b949350505050565b6000670de0b6b3a764000061224561221c8583613042565b61222e90670de0b6b3a76400006130aa565b61224085670de0b6b3a764000061311e565b61231e565b61224f908661311e565b6121fc9190613042565b6000818311612268578161226a565b825b9392505050565b6000805a90505b825a6122849083612ffc565b101561229a57612293826133fe565b9150612278565b505050565b80516020808301516040808501516060808701516080808901518551978801989098529386019490945284015282015260a081019190915260009060c001611f3a565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818313612268578161226a565b6000818312612268578161226a565b600061226a670de0b6b3a7640000836123368661234f565b612340919061311e565b61234a9190613042565b612579565b60008082136123a05760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161061a565b600060606123ad8461279e565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136125aa57506000919050565b680755bf798b4a1bf1e582126126025760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161061a565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60008082116127ef5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161061a565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146128ab57600080fd5b50565b600082601f8301126128bf57600080fd5b813567ffffffffffffffff808211156128da576128da61285a565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156129205761292061285a565b8160405283815286602085880101111561293957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060c0828403121561296b57600080fd5b60405160c0810167ffffffffffffffff828210818311171561298f5761298f61285a565b8160405282935084358352602085013591506129aa82612889565b816020840152604085013591506129c082612889565b816040840152606085013560608401526080850135608084015260a08501359150808211156129ee57600080fd5b506129fb858286016128ae565b60a0830152505092915050565b6000806000806000858703610100811215612a2257600080fd5b863567ffffffffffffffff80821115612a3a57600080fd5b612a468a838b01612959565b97506020890135965060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215612a7f57600080fd5b60408901955060e0890135925080831115612a9957600080fd5b828901925089601f840112612aad57600080fd5b8235915080821115612abe57600080fd5b508860208260051b8401011115612ad457600080fd5b959894975092955050506020019190565b60005b83811015612b00578181015183820152602001612ae8565b83811115612b0f576000848401525b50505050565b60008151808452612b2d816020860160208601612ae5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061226a6020830184612b15565b600060208284031215612b8457600080fd5b5035919050565b600060208284031215612b9d57600080fd5b813567ffffffffffffffff811115612bb457600080fd5b6121fc84828501612959565b803567ffffffffffffffff81168114611f0557600080fd5b600080600060608486031215612bed57600080fd5b8335612bf881612889565b9250612c0660208501612bc0565b9150604084013567ffffffffffffffff811115612c2257600080fd5b612c2e868287016128ae565b9150509250925092565b80151581146128ab57600080fd5b600060208284031215612c5857600080fd5b813561226a81612c38565b600080600080600060a08688031215612c7b57600080fd5b8535612c8681612889565b945060208601359350612c9b60408701612bc0565b92506060860135612cab81612c38565b9150608086013567ffffffffffffffff811115612cc757600080fd5b612cd3888289016128ae565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251612d34816049850160208701612ae5565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff81168114611f0557600080fd5b600060808284031215612d7757600080fd5b6040516080810181811067ffffffffffffffff82111715612d9a57612d9a61285a565b6040528251612da881612889565b815260208381015190820152612dc060408401612d45565b6040820152612dd160608401612d45565b60608201529392505050565b600060a08284031215612def57600080fd5b60405160a0810181811067ffffffffffffffff82111715612e1257612e1261285a565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8481526000602060808184015280608084015260018060a085015260c0840160c060408601528087825260e08601905060e08860051b87010191508860005b89811015612f7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2088850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3603018112612f3657600080fd5b8b01868101903567ffffffffffffffff811115612f5257600080fd5b803603821315612f6157600080fd5b612f6c868284612e4d565b9550505091850191908501908401612ed5565b50505080935050505082606083015295945050505050565b600060208284031215612fa957600080fd5b815161226a81612c38565b600060208284031215612fc657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561300e5761300e612fcd565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261305157613051613013565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156130a5576130a5612fcd565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156130e4576130e4612fcd565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561311857613118612fcd565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561315f5761315f612fcd565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561319a5761319a612fcd565b600087129250878205871284841616156131b6576131b6612fcd565b878505871281841616156131cc576131cc612fcd565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561321457613214612fcd565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561324857613248612fcd565b50500190565b600067ffffffffffffffff80831681851680830382111561327157613271612fcd565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132b2576132b2612fcd565b500290565b6000826132c6576132c6613013565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261331660c0830184612b15565b98975050505050505050565b6000821982111561333557613335612fcd565b500190565b805163ffffffff81168114611f0557600080fd5b805160ff81168114611f0557600080fd5b600060c0828403121561337157600080fd5b60405160c0810181811067ffffffffffffffff821117156133945761339461285a565b6040526133a08361333a565b81526133ae6020840161334e565b60208201526133bf6040840161334e565b60408201526133d06060840161333a565b60608201526133e16080840161333a565b60808201526133f260a08401612d45565b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342f5761342f612fcd565b506001019056fea164736f6c634300080f000a", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "01", + "0x0000000000000000000000000000000000000000000000000000000000000001": "2600000000000000000000000000000000000000003b9aca00", + "0x0000000000000000000000000000000000000000000000000000000000000032": "dead" + }, + "key": "0x8f9c59785b25c2aaced68d553bb192545553e42593130ee4862efe93a6040df8" + }, + "0xa85233c63b9ee964add6f2cffe00fd84eb32338f": { + "balance": "0", + "nonce": 1, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0xe7d30c7952210033e3cfd18ff7d7741d27b94e7cbaa9ddfcab4a59bbcb34746f", + "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80635269aa1b1461004657806354fd4d5014610083578063ee9a31a2146100cc575b600080fd5b61005961005436600461033a565b6100f3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100bf6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161007a9190610434565b6100597f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b600073ffffffffffffffffffffffffffffffffffffffff841661019c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4b726f6d614d696e7461626c654552433230466163746f72793a206d7573742060448201527f70726f766964652072656d6f746520746f6b656e206164647265737300000000606482015260840160405180910390fd5b60007f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f8585856040516101ce90610253565b6101db949392919061044e565b604051809103906000f0801580156101f7573d6000803e3d6000fd5b5060405133815290915073ffffffffffffffffffffffffffffffffffffffff80871691908316907f16f14001f89df9d8ecc68e7cbb61373ece9025038b9df30bea3635fc0e4701a99060200160405180910390a3949350505050565b611441806104a583390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126102a057600080fd5b813567ffffffffffffffff808211156102bb576102bb610260565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561030157610301610260565b8160405283815286602085880101111561031a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561034f57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461037357600080fd5b9250602084013567ffffffffffffffff8082111561039057600080fd5b61039c8783880161028f565b935060408601359150808211156103b257600080fd5b506103bf8682870161028f565b9150509250925092565b6000815180845260005b818110156103ef576020818501810151868301820152016103d3565b81811115610401576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061044760208301846103c9565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152506080604083015261048760808301856103c9565b828103606084015261049981856103c9565b97965050505050505056fe60c06040523480156200001157600080fd5b50604051620014413803806200144183398101604081905262000034916200015a565b8181600362000044838262000279565b50600462000053828262000279565b5050506001600160a01b0392831660805250501660a05262000345565b80516001600160a01b03811681146200008857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000b557600080fd5b81516001600160401b0380821115620000d257620000d26200008d565b604051601f8301601f19908116603f01168101908282118183101715620000fd57620000fd6200008d565b816040528381526020925086838588010111156200011a57600080fd5b600091505b838210156200013e57858201830151818301840152908201906200011f565b83821115620001505760008385830101525b9695505050505050565b600080600080608085870312156200017157600080fd5b6200017c8562000070565b93506200018c6020860162000070565b60408601519093506001600160401b0380821115620001aa57600080fd5b620001b888838901620000a3565b93506060870151915080821115620001cf57600080fd5b50620001de87828801620000a3565b91505092959194509250565b600181811c90821680620001ff57607f821691505b6020821081036200022057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027457600081815260208120601f850160051c810160208610156200024f5750805b601f850160051c820191505b8181101562000270578281556001016200025b565b5050505b505050565b81516001600160401b038111156200029557620002956200008d565b620002ad81620002a68454620001ea565b8462000226565b602080601f831160018114620002e55760008415620002cc5750858301515b600019600386901b1c1916600185901b17855562000270565b600085815260208120601f198616915b828110156200031657888601518255948401946001909101908401620002f5565b5085821015620003355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516110c862000379600039600081816103160152818161050a01526106270152600061014d01526110c86000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806340c10f19116100b25780639dc29fac11610081578063a9059cbb11610066578063a9059cbb146102b8578063dd62ed3e146102cb578063ee9a31a21461031157600080fd5b80639dc29fac14610292578063a457c2d7146102a557600080fd5b806340c10f191461020357806354fd4d501461021857806370a082311461025457806395d89b411461028a57600080fd5b806318160ddd116100ee57806318160ddd146101bc57806323b872dd146101ce578063313ce567146101e157806339509351146101f057600080fd5b806301ffc9a714610120578063033964be1461014857806306fdde0314610194578063095ea7b3146101a9575b600080fd5b61013361012e366004610e90565b610338565b60405190151581526020015b60405180910390f35b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b61019c6103d8565b60405161013f9190610ed9565b6101336101b7366004610f75565b61046a565b6002545b60405190815260200161013f565b6101336101dc366004610f9f565b610482565b6040516012815260200161013f565b6101336101fe366004610f75565b6104a6565b610216610211366004610f75565b6104f2565b005b61019c6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6101c0610262366004610fdb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61019c610600565b6102166102a0366004610f75565b61060f565b6101336102b3366004610f75565b61070c565b6101336102c6366004610f75565b6107c3565b6101c06102d9366004610ff6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f30a0c5a9000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084168214806103d057507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380546103e790611029565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611029565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b6000336104788185856107d1565b5060019392505050565b600033610490858285610951565b61049b858585610a0e565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061047890829086906104ed90879061107c565b6107d1565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105a25760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e00000000000000000000000000000060648201526084015b60405180910390fd5b6105ac8282610c2f565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516105f491815260200190565b60405180910390a25050565b6060600480546103e790611029565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106ba5760405162461bcd60e51b815260206004820152603160248201527f4b726f6d614d696e7461626c6545524332303a206f6e6c79206272696467652060448201527f63616e206d696e7420616e64206275726e0000000000000000000000000000006064820152608401610599565b6106c48282610d08565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516105f491815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610599565b61049b82868684036107d1565b600033610478818585610a0e565b73ffffffffffffffffffffffffffffffffffffffff83166108595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff82166108e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a0857818110156109fb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610599565b610a0884848484036107d1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a975760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff8216610b205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610bbc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a08565b73ffffffffffffffffffffffffffffffffffffffff8216610c925760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610599565b8060026000828254610ca4919061107c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610e2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610599565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610944565b600060208284031215610ea257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ed257600080fd5b9392505050565b600060208083528351808285015260005b81811015610f0657858101830151858201604001528201610eea565b81811115610f18576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f7057600080fd5b919050565b60008060408385031215610f8857600080fd5b610f9183610f4c565b946020939093013593505050565b600080600060608486031215610fb457600080fd5b610fbd84610f4c565b9250610fcb60208501610f4c565b9150604084013590509250925092565b600060208284031215610fed57600080fd5b610ed282610f4c565b6000806040838503121561100957600080fd5b61101283610f4c565b915061102060208401610f4c565b90509250929050565b600181811c9082168061103d57607f821691505b602082108103611076577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082198211156110b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea164736f6c634300080f000aa164736f6c634300080f000a", + "key": "0xea5bcd16c6bba173a130ee9dbf9a8d7e4a9f75be48c7f605934587f6ccd1eb76" + }, "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e": { "balance": "0", "nonce": 1, - "root": "0xa7588fd3df92b339e91971e38708049df6ac910d11069878145bcec1c1d45126", + "root": "0xb51ec8dbdda1235c05dd16ca28b8e72c9f469ae3a34e5b6de9a8a1c7cb092280", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "5eb3bc0a489c5a8288765d2336659ebca68fcd00", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "36c02da8a0983159322a80ffe9f24b1acff8b570", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0xad6ff7dc4f5626bc6b49eb92a9bbcd72320506ab7bfa9f543c096f7a28980df6" }, - "0xc3e53f4d16ae77db1c982e75a937b9f60fe63690": { + "0xc5a5c42992decbae36851359345fe25997f5c42d": { "balance": "0", "nonce": 1, - "root": "0xa5123c1d51dd7986375df921b012df36448f6a7bb8122d860ba0700556b38e16", - "codeHash": "0x1f9e65060d9ef790ee12e9a7308add23c38358e2bd6d377a4c183be17cbf39a0", - "code": "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c8063887c560f116100ee578063cfb4474d11610097578063e39a219c11610071578063e39a219c1461053f578063e58932b314610552578063e9371a2c14610572578063fc9d84df1461059257600080fd5b8063cfb4474d146104ca578063d2ee3075146104f1578063d5145ebc1461051857600080fd5b8063a41483e3116100c8578063a41483e314610491578063a6ade11f146104a4578063b8b1a27c146104b757600080fd5b8063887c560f146104305780638f3a6c88146104435780639ded39521461046a57600080fd5b8063461569b81161015b5780635865b607116101355780635865b607146103d057806362fc00db146103f75780636fe0e5591461040a57806379c2575a1461041d57600080fd5b8063461569b81461034d5780635375b8911461036057806354fd4d501461038757600080fd5b80632df27fa51161018c5780632df27fa51461023e57806336086417146102f15780634394c5841461031857600080fd5b80621c2ff6146101b25780631be4e27e146101f65780631db1b67214610229575b600080fd5b6101d97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b0390911681526020015b60405180910390f35b61021961020436600461473e565b60036020526000908152604090205460ff1681565b60405190151581526020016101ed565b61023c61023736600461476c565b6105a5565b005b6102aa61024c36600461476c565b6002602090815260009283526040808420909152908252902080546001820154600383015460049093015460ff83169367ffffffffffffffff610100850416936001600160a01b036901000000000000000000909104811693169186565b6040805160ff909716875267ffffffffffffffff90951660208701526001600160a01b039384169486019490945291166060840152608083015260a082015260c0016101ed565b6101d97f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b61033f7f000000000000000000000000000000000000000000000000000000000000001e81565b6040519081526020016101ed565b61021961035b36600461473e565b61066f565b61033f7f000000000000000000000000000000000000000000000000000000000000006481565b6103c36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101ed91906147f4565b6101d97f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b181565b61023c610405366004614807565b610764565b61023c61041836600461492b565b610ab2565b61023c61042b366004614a0d565b610c2c565b61021961043e36600461476c565b61159b565b61033f7f000000000000000000000000000000000000000000000000000000000000003c81565b6101d97f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61023c61049f36600461473e565b6115d0565b61023c6104b2366004614abe565b61170d565b61033f6104c5366004614b28565b611b31565b61033f7f000000000000000000000000000000000000000000000000000000000000000481565b61033f7f000000000000000000000000000000000000000000000000000000000000001e81565b61033f7fa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f781565b61023c61054d36600461473e565b611bae565b61056561056036600461476c565b611f70565b6040516101ed9190614b4b565b61058561058036600461476c565b61207d565b6040516101ed9190614c2a565b61023c6105a0366004614c6b565b6120a8565b60008281526002602090815260408083206001600160a01b03851684529091528120906105d182612a0f565b905060038160058111156105e7576105e7614bfb565b1461065f5760405162461bcd60e51b815260206004820152603c60248201527f436f6c6f737365756d3a2063616e206f6e6c792062652063616c6c656420696660448201527f20746865206368616c6c656e67657220697320696e2074696d6f75740000000060648201526084015b60405180910390fd5b6106698484612aec565b50505050565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009081906001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa1580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107169190614ccf565b9050427f000000000000000000000000000000000000000000000000000000000000003c82604001516fffffffffffffffffffffffffffffffff1661075b9190614d76565b10159392505050565b336001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e16146108025760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b816108755760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a2063616e6e6f7420726f6c6c6261636b206f7574707560448201527f7420746f207a65726f20686173680000000000000000000000000000000000006064820152608401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018690526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa1580156108f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091a9190614ccf565b60200151146109915760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a206f6e6c792063616e20726f6c6c6261636b2069662060448201527f746865206f757470757420686173206265656e2064656c6574656400000000006064820152608401610656565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fe664672300000000000000000000000000000000000000000000000000000000815260048101869052602481018390526001600160a01b0384811660448301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e664672390606401600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b50505050836001600160a01b0316857fdca9fa9b51a5ba03938c6a0cd5489011630370fc481ef2b0cb771ad904a7305342604051610aa391815260200190565b60405180910390a35050505050565b600054610100900460ff1615808015610ad25750600054600160ff909116105b80610aec5750303b158015610aec575060005460ff166001145b610b5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610656565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610bbc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610bc582612ee5565b8015610c2857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810188905287907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd09190614d8e565b15610d695760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000888152600260209081526040808320338452909152812090610d8c82612a0f565b6001830154909150610da9908b906001600160a01b031683613075565b15610db5575050611591565b6005816005811115610dc957610dc9614bfb565b1480610de657506004816005811115610de457610de4614bfb565b145b610e585760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a20696d706f737369626c6520746f2070726f7665207460448201527f6865206661756c7420696e2063757272656e74207374617475730000000000006064820152608401610656565b6000610e71610e6c368b90038b018b614db0565b613406565b90506000610e8a610e6c368c90038c0160a08d01614db0565b9050610e9d8b8584848e60a081016134db565b610ec68a60a08101610eb3610140830183614e20565b610ec16101608f018f614e5e565b613697565b610ef8610ed76101c08c018c614e92565b8c61018001358d6101a001358e60a001604001358f60a001602001356137b2565b6000610f1560208c0135610f106101408e018e614e20565b613922565b60008181526003602052604090205490915060ff1615610fc35760405162461bcd60e51b815260206004820152604c60248201527f436f6c6f737365756d3a207075626c696320696e70757420746861742068617360448201527f20616c7265616479206265656e2076616c6964617465642063616e6e6f74206260648201527f65207573656420616761696e0000000000000000000000000000000000000000608482015260a401610656565b6040517f4292dc3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3181690634292dc3e90611030908d908d908d908d908890600401614f49565b602060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190614d8e565b6110bd5760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a20696e76616c69642070726f6f6600000000000000006044820152606401610656565b60405142815233908e907f0431864ed2609170587bbc7c198abd8caee4c55943dfb16fd42ec6f59c91c5f79060200160405180910390a36040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018e90526000906001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190614ccf565b905060006362fc00db60e01b8f338960000160099054906101000a90046001600160a01b03168560200151876040516024016112039594939291909485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935291840151606085015192517f080b91ee0000000000000000000000000000000000000000000000000000000081529193506001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e169263080b91ee926112d59291908690600401614f83565b600060405180830381600087803b1580156112ef57600080fd5b505af1158015611303573d6000803e3d6000fd5b50505050505060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008e81526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a8154906001600160a01b0302191690556001820160006101000a8154906001600160a01b0302191690556002820160006113df91906146c0565b5060006003820181905560049182018190556040517fe66467230000000000000000000000000000000000000000000000000000000081529182018f905260248201523360448201526001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e664672390606401600060405180830381600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190614fbd565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018f90523360248201526001600160a01b03919091169063dd215c5d90604401600060405180830381600087803b15801561157357600080fd5b505af1158015611587573d6000803e3d6000fd5b5050505050505050505b5050505050505050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c6816139d5565b9150505b92915050565b60008181526002602090815260408083203384529091528120906115f382612a0f565b9050600081600581111561160957611609614bfb565b0361167c5760405162461bcd60e51b815260206004820152602760248201527f436f6c6f737365756d3a20746865206368616c6c656e676520646f6573206e6f60448201527f74206578697374000000000000000000000000000000000000000000000000006064820152608401610656565b60018201546116969084906001600160a01b031683613075565b6117085760405162461bcd60e51b815260206004820152602860248201527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c65640000000000000000000000000000000000000000000000006064820152608401610656565b505050565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa15801561178d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b19190614d8e565b1561184a5760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b60008681526002602090815260408083206001600160a01b038916845290915281209061187682612a0f565b60018301549091506118939089906001600160a01b031683613075565b1561189f575050611b29565b600060018260058111156118b5576118b5614bfb565b036118ce575060018201546001600160a01b0316611901565b60028260058111156118e2576118e2614bfb565b0361190157508154690100000000000000000090046001600160a01b03165b336001600160a01b038216146119595760405162461bcd60e51b815260206004820152601860248201527f436f6c6f737365756d3a206e6f7420796f7572207475726e00000000000000006044820152606401610656565b825460009061196c9060ff166001614fda565b90506119f781856002018a8154811061198757611987614fff565b9060005260206000200154866002018b60016119a39190614d76565b815481106119b3576119b3614fff565b90600052602060002001548a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b6000611a0285613b8f565b90506000611a10828b61502e565b8660040154611a1f9190614d76565b9050611a62868a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250879150613bbb9050565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416178655611a9686613be5565b6040805160ff851681524260208201526001600160a01b038d16918e917fcadef6622777415b0589e491bdbf6baf11242f676f77055fd03bf1658c17a145910160405180910390a3611ae7866139d5565b611b22576040516001600160a01b038c16908d907f5c4528cbb38a169d24837617d3fd3d5c70a47769a4e9af6f384720b359b716c890600090a35b5050505050505b505050505050565b6000600160ff83161015611b875760405162461bcd60e51b815260206004820152601760248201527f436f6c6f737365756d3a20696e76616c6964207475726e0000000000000000006044820152606401610656565b60016000611b95828561506b565b60ff168152602001908152602001600020549050919050565b336001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e1614611c4c5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2073656e646572206973206e6f74207468652073656360448201527f757269747920636f756e63696c000000000000000000000000000000000000006064820152608401610656565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810182905281907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf09190614d8e565b15611d895760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015611e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2e9190614ccf565b6020810151909150611ea85760405162461bcd60e51b815260206004820152602e60248201527f436f6c6f737365756d3a20746865206f75747075742068617320616c7265616460448201527f79206265656e2064656c657465640000000000000000000000000000000000006064820152608401610656565b6040517fe664672300000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e811660448301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063e6646723906064015b600060405180830381600087803b158015611f5357600080fd5b505af1158015611f67573d6000803e3d6000fd5b50505050505050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c081019190915260008381526002602081815260408084206001600160a01b03808816865290835293819020815160e081018352815460ff8116825267ffffffffffffffff6101008204168286015269010000000000000000009004861681840152600182015490951660608601529283018054825181850281018501909352808352608086019383018282801561205857602002820191906000526020600020905b815481526020019060010190808311612044575b5050505050815260200160038201548152602001600482015481525050905092915050565b60008281526002602090815260408083206001600160a01b038516845290915281206115c681612a0f565b6040517f33727c4d0000000000000000000000000000000000000000000000000000000081526004810186905285907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015612128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214c9190614d8e565b156121e55760405162461bcd60e51b815260206004820152604b60248201527f436f6c6f737365756d3a2063616e6e6f742070726f6772657373206368616c6c60448201527f656e67652070726f636573732061626f757420616c72656164792066696e616c60648201527f697a6564206f7574707574000000000000000000000000000000000000000000608482015260a401610656565b6000861161225b5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722067656e6573697360448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b600086815260026020908152604080832033845290915290208054600160ff9091161061234857600061228d82612a0f565b905060038160058111156122a3576122a3614bfb565b1461233c5760405162461bcd60e51b815260206004820152604660248201527f436f6c6f737365756d3a20746865206368616c6c656e676520666f722067697660448201527f656e206f757470757420696e64657820697320616c726561647920696e20707260648201527f6f67726573730000000000000000000000000000000000000000000000000000608482015260a401610656565b6123468833612aec565b505b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018890526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa1580156123c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ed9190614ccf565b9050427f000000000000000000000000000000000000000000000000000000000000003c82604001516fffffffffffffffffffffffffffffffff166124329190614d76565b10156124a65760405162461bcd60e51b815260206004820152603e60248201527f436f6c6f737365756d3a2063616e6e6f74206372656174652061206368616c6c60448201527f656e676520616674657220746865206372656174696f6e20706572696f6400006064820152608401610656565b602081015161251d5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a206368616c6c656e676520666f722064656c6574656460448201527f206f7574707574206973206e6f7420616c6c6f776564000000000000000000006064820152608401610656565b80516001600160a01b0316330361259c5760405162461bcd60e51b815260206004820152603860248201527f436f6c6f737365756d3a2074686520617373657274657220616e64206368616c60448201527f6c656e676572206d75737420626520646966666572656e7400000000000000006064820152608401610656565b86158015906125ab5750854015155b1561264d578686401461264d5760405162461bcd60e51b8152602060048201526044602482018190527f436f6c6f737365756d3a20626c6f636b206861736820646f6573206e6f74206d908201527f617463682074686520686173682061742074686520657870656374656420686560648201527f6967687400000000000000000000000000000000000000000000000000000000608482015260a401610656565b60006001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663a25ae55761268960018c61508e565b6040518263ffffffff1660e01b81526004016126a791815260200190565b608060405180830381865afa1580156126c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e89190614ccf565b60208101519091506127565761275160018787600081811061270c5761270c614fff565b9050602002013584602001518989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b61279e565b61279e6001826020015184602001518989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506139e992505050565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128209190614fbd565b6040517f5a544742000000000000000000000000000000000000000000000000000000008152600481018b90523360248201526001600160a01b039190911690635a54474290604401600060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b5050505061293a838787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050606086015161291491507f0000000000000000000000000000000000000000000000000000000000000004906fffffffffffffffffffffffffffffffff1661508e565b7f0000000000000000000000000000000000000000000000000000000000000004613bbb565b825482516001600160a01b03166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffff009091161760019081178455830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556129b283613be5565b815160405142815233916001600160a01b0316908b907fd2f7931a802085b3d0234d4c320ce7ee0041da96678ce2bf5c93e8d3d7e65f529060200160405180910390a4505050505050505050565b6001600160a01b03163b151590565b8054600090600160ff9091161015612a2957506000919050565b8154600090612a3a9060ff16613c86565b8354909150610100900467ffffffffffffffff16421115612ac0578015612a645750600392915050565b8254612aa990612aa4907f000000000000000000000000000000000000000000000000000000000000001e90610100900467ffffffffffffffff16614d76565b421190565b15612ab75750600392915050565b50600492915050565b612ac9836139d5565b612ad65750600592915050565b80612ae2576002612ae5565b60015b9392505050565b60008281526002602081815260408084206001600160a01b0386168552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559190612b6c908301826146c0565b600382016000905560048201600090555050806001600160a01b0316827fbf4506ef5d06ecb6168f37bc9e69dd473089eb9e3f2675322d01b4d466cff05142604051612bba91815260200190565b60405180910390a36040517f33727c4d000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316906333727c4d90602401602060405180830381865afa158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c649190614d8e565b15612dea576040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03169063a25ae55790602401608060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e9190614ccf565b90507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d929190614fbd565b81516040517f36b83469000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03858116602483015291821660448201529116906336b8346990606401611f39565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6c9190614fbd565b6040517fdd215c5d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152919091169063dd215c5d90604401600060405180830381600087803b158015612ed157600080fd5b505af1158015611b29573d6000803e3d6000fd5b60028151612ef391906150d4565b15612f665760405162461bcd60e51b815260206004820152603a60248201527f436f6c6f737365756d3a206c656e677468206f66207365676d656e7473206c6560448201527f6e677468732063616e6e6f74206265206f6464206e756d6265720000000000006064820152608401610656565b600160005b8251811015612fdf57828181518110612f8657612f86614fff565b602002602001015160016000838152602001908152602001600020819055506001838281518110612fb957612fb9614fff565b6020026020010151612fcb919061508e565b612fd5908361502e565b9150600101612f6b565b507f00000000000000000000000000000000000000000000000000000000000000048114610c285760405162461bcd60e51b815260206004820152602360248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74687300000000000000000000000000000000000000000000000000000000006064820152608401610656565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905260009081906001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063a25ae55790602401608060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c9190614ccf565b6020015190508015613132576000915050612ae5565b336001600160a01b038516146131b05760405162461bcd60e51b815260206004820152602560248201527f436f6c6f737365756d3a2073656e646572206973206e6f742061206368616c6c60448201527f656e6765720000000000000000000000000000000000000000000000000000006064820152608401610656565b60038360058111156131c4576131c4614bfb565b03613239576040805162461bcd60e51b81526020600482015260248101919091527f436f6c6f737365756d3a206368616c6c656e67652063616e6e6f74206265206360448201527f616e63656c6c6564206966206368616c6c656e6765722074696d6564206f75746064820152608401610656565b6000858152600260208181526040808420338552909152822080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905591906132b0908301826146c0565b50600060038201819055600490910155604051428152339086907f6f3468a095154788e69ed719ee418416c1e338ac2348ccb3531bb97a0ed6ed9d9060200160405180910390a37f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663b98debbf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133799190614fbd565b6040517f36b8346900000000000000000000000000000000000000000000000000000000815260048101879052336024820181905260448201526001600160a01b0391909116906336b8346990606401600060405180830381600087803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50600198975050505050505050565b80516000906134685781516020808401516040808601516060808801516080808a0151855180890199909952888601969096529187019290925285015260a0808501929092528051808503909201825260c090930190925281519101206115ca565b60405162461bcd60e51b815260206004820152602a60248201527f48617368696e673a20756e6b6e6f776e206f757470757420726f6f742070726f60448201527f6f662076657273696f6e000000000000000000000000000000000000000000006064820152608401610656565b919050565b838560020187815481106134f1576134f1614fff565b90600052602060002001541461356f5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6f737365756d3a2074686520736f75726365207365676d656e74206d7560448201527f7374206265206d617463686564000000000000000000000000000000000000006064820152608401610656565b613578856139d5565b61361a57826002860161358c886001614d76565b8154811061359c5761359c614fff565b90600052602060002001540361361a5760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a207468652064657374696e6174696f6e207365676d6560448201527f6e74206d757374206e6f74206265206d617463686564000000000000000000006064820152608401610656565b8060600135826080013514611b295760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520626c6f636b2068617368206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b82602001358260e00135146137145760405162461bcd60e51b815260206004820152602960248201527f436f6c6f737365756d3a2074686520737461746520726f6f74206d757374206260448201527f65206d61746368656400000000000000000000000000000000000000000000006064820152608401610656565b600061373061372284615166565b61372b84615292565b613c9d565b9050808560800135146137ab5760405162461bcd60e51b815260206004820152603b60248201527f436f6c6f737365756d3a2074686520626c6f636b20686173682066726f6d207060448201527f75626c696320696e707574206d757374206265206d61746368656400000000006064820152608401610656565b5050505050565b60408051600060208201528082018690526060810185905260808082018590528251808303909101815260a08201928390527f12e64a72000000000000000000000000000000000000000000000000000000009092527f000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b16001600160a01b0316906312e64a729061386f907f42000000000000000000000000000000000000030000000000000000000000009085908c908c90899060a401615433565b602060405180830381865afa15801561388c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b09190614d8e565b611f675760405162461bcd60e51b815260206004820152603660248201527f436f6c6f737365756d3a20696e76616c6964204c32546f4c314d65737361676560448201527f50617373657220696e636c7573696f6e2070726f6f66000000000000000000006064820152608401610656565b600060607f0000000000000000000000000000000000000000000000000000000000000064613955610120850185614e92565b905010156139c2576139bf7fa1235b834d6f1f78f78bc4db856fbc49302cce2c519921347600693021e087f761398f610120860186614e92565b6139ba91507f000000000000000000000000000000000000000000000000000000000000006461508e565b613d41565b90505b6115c6846139cf85615166565b83613dcd565b600060016139e283613b8f565b1192915050565b8051806139f586611b31565b14613a685760405162461bcd60e51b815260206004820152602260248201527f436f6c6f737365756d3a20696e76616c6964207365676d656e7473206c656e6760448201527f74680000000000000000000000000000000000000000000000000000000000006064820152608401610656565b81600081518110613a7b57613a7b614fff565b60200260200101518414613af75760405162461bcd60e51b815260206004820152602c60248201527f436f6c6f737365756d3a20746865206669727374207365676d656e74206d757360448201527f74206265206d61746368656400000000000000000000000000000000000000006064820152608401610656565b81613b0360018361508e565b81518110613b1357613b13614fff565b602002602001015183036137ab5760405162461bcd60e51b815260206004820152602f60248201527f436f6c6f737365756d3a20746865206c617374207365676d656e74206d75737460448201527f206e6f74206265206d61746368656400000000000000000000000000000000006064820152608401610656565b805460009060ff166001613ba282611b31565b613bac919061508e565b8360030154612ae5919061550e565b8251613bd090600286019060208601906146de565b50600484019190915560039092019190915550565b613bee816139d5565b613c5957613c1c7f000000000000000000000000000000000000000000000000000000000000001e42614d76565b815467ffffffffffffffff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff90911617815550565b613c1c7f000000000000000000000000000000000000000000000000000000000000001e42614d76565b50565b6000613c93600283615522565b60ff161592915050565b6040805160118082526102408201909252600091829190816020015b6060815260200190600190039081613cb9579050509050613cdb848483613e3f565b613d0a846101000151604051602001613cf691815260200190565b6040516020818303038152906040526140f2565b81601081518110613d1d57613d1d614fff565b6020026020010181905250613d3181614161565b8051906020012091505092915050565b606060008267ffffffffffffffff811115613d5e57613d5e614859565b604051908082528060200260200182016040528015613d87578160200160208202803683370190505b50905060005b83811015613dc55784828281518110613da857613da8614fff565b602090810291909101015280613dbd81615544565b915050613d8d565b509392505050565b6000838360e001516000801b85600001518660200151876060015188604001518960a001518a608001518b6101200151518c61012001518c604051602001613e209c9b9a999897969594939291906155af565b6040516020818303038152906040528051906020012090509392505050565b613e598360200151604051602001613cf691815260200190565b81600081518110613e6c57613e6c614fff565b6020026020010181905250816000015181600181518110613e8f57613e8f614fff565b6020026020010181905250816020015181600281518110613eb257613eb2614fff565b6020026020010181905250613ed78360e00151604051602001613cf691815260200190565b81600381518110613eea57613eea614fff565b6020026020010181905250613f0f8360c00151604051602001613cf691815260200190565b81600481518110613f2257613f22614fff565b6020026020010181905250816040015181600581518110613f4557613f45614fff565b6020026020010181905250816060015181600681518110613f6857613f68614fff565b6020026020010181905250816080015181600781518110613f8b57613f8b614fff565b6020026020010181905250613fad836060015167ffffffffffffffff166141a5565b81600881518110613fc057613fc0614fff565b6020026020010181905250613fe2836080015167ffffffffffffffff166141a5565b81600981518110613ff557613ff5614fff565b60200260200101819052508160a0015181600a8151811061401857614018614fff565b602002602001018190525061403a836040015167ffffffffffffffff166141a5565b81600b8151811061404d5761404d614fff565b60200260200101819052508160c0015181600c8151811061407057614070614fff565b60200260200101819052508160e0015181600d8151811061409357614093614fff565b602002602001018190525081610100015181600e815181106140b7576140b7614fff565b60200260200101819052506140cf8360a001516141a5565b81600f815181106140e2576140e2614fff565b6020026020010181905250505050565b60608082516001148015614120575060808360008151811061411657614116614fff565b016020015160f81c105b1561412c5750816115ca565b614138835160806141b8565b8360405160200161414a929190615668565b604051602081830303815290604052905092915050565b6060600061416e836143ae565b905061417c815160c06141b8565b8160405160200161418e929190615668565b604051602081830303815290604052915050919050565b60606115ca6141b3836144e6565b6140f2565b606080603884101561423757604080516001808252818301909252906020820181803683370190505090506141ed8385614fda565b60f81b8160008151811061420357614203614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612ae5565b600060015b614246818761550e565b1561426c578161425581615544565b925061426590506101008261502e565b905061423c565b614277826001614d76565b67ffffffffffffffff81111561428f5761428f614859565b6040519080825280601f01601f1916602001820160405280156142b9576020820181803683370190505b5092506142c68583614fda565b6142d1906037614fda565b60f81b836000815181106142e7576142e7614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116143a55761010061432f828461508e565b61433b906101006157b7565b614345908861550e565b61434f91906150d4565b60f81b83828151811061436457614364614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061439d81615544565b91505061431b565b50509392505050565b606081516000036143cd57505060408051600081526020810190915290565b6000805b8351811015614414578381815181106143ec576143ec614fff565b602002602001015151826144009190614d76565b91508061440c81615544565b9150506143d1565b60008267ffffffffffffffff81111561442f5761442f614859565b6040519080825280601f01601f191660200182016040528015614459576020820181803683370190505b50600092509050602081015b85518310156144dd57600086848151811061448257614482614fff565b6020026020010151905060006020820190506144a083828451614645565b8785815181106144b2576144b2614fff565b602002602001015151836144c69190614d76565b9250505082806144d590615544565b935050614465565b50949350505050565b60606000826040516020016144fd91815260200190565b604051602081830303815290604052905060005b602081101561456c5781818151811061452c5761452c614fff565b01602001517fff000000000000000000000000000000000000000000000000000000000000001660000361456c578061456481615544565b915050614511565b600061457982602061508e565b67ffffffffffffffff81111561459157614591614859565b6040519080825280601f01601f1916602001820160405280156145bb576020820181803683370190505b50905060005b81518110156144dd5783836145d581615544565b9450815181106145e7576145e7614fff565b602001015160f81c60f81b82828151811061460457614604614fff565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061463d81615544565b9150506145c1565b8282825b602081106146815781518352614660602084614d76565b925061466d602083614d76565b915061467a60208261508e565b9050614649565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b5080546000825590600052602060002090810190613c839190614729565b828054828255906000526020600020908101928215614719579160200282015b828111156147195782518255916020019190600101906146fe565b50614725929150614729565b5090565b5b80821115614725576000815560010161472a565b60006020828403121561475057600080fd5b5035919050565b6001600160a01b0381168114613c8357600080fd5b6000806040838503121561477f57600080fd5b82359150602083013561479181614757565b809150509250929050565b60005b838110156147b757818101518382015260200161479f565b838111156106695750506000910152565b600081518084526147e081602086016020860161479c565b601f01601f19169290920160200192915050565b602081526000612ae560208301846147c8565b600080600080600060a0868803121561481f57600080fd5b85359450602086013561483181614757565b9350604086013561484181614757565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff811182821017156148ac576148ac614859565b60405290565b604051610120810167ffffffffffffffff811182821017156148ac576148ac614859565b604051601f8201601f1916810167ffffffffffffffff811182821017156148ff576148ff614859565b604052919050565b600067ffffffffffffffff82111561492157614921614859565b5060051b60200190565b6000602080838503121561493e57600080fd5b823567ffffffffffffffff81111561495557600080fd5b8301601f8101851361496657600080fd5b803561497961497482614907565b6148d6565b81815260059190911b8201830190838101908783111561499857600080fd5b928401925b828410156149b65783358252928401929084019061499d565b979650505050505050565b60008083601f8401126149d357600080fd5b50813567ffffffffffffffff8111156149eb57600080fd5b6020830191508360208260051b8501011115614a0657600080fd5b9250929050565b600080600080600080600060a0888a031215614a2857600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115614a4e57600080fd5b908901906101e0828c031215614a6357600080fd5b90955060608901359080821115614a7957600080fd5b614a858b838c016149c1565b909650945060808a0135915080821115614a9e57600080fd5b50614aab8a828b016149c1565b989b979a50959850939692959293505050565b600080600080600060808688031215614ad657600080fd5b853594506020860135614ae881614757565b935060408601359250606086013567ffffffffffffffff811115614b0b57600080fd5b614b17888289016149c1565b969995985093965092949392505050565b600060208284031215614b3a57600080fd5b813560ff81168114612ae557600080fd5b60006020808352610100830160ff8551168285015267ffffffffffffffff8286015116604085015260408501516001600160a01b0380821660608701528060608801511660808701525050608085015160e060a0860152818151808452610120870191508483019350600092505b80831015614bd95783518252928401926001929092019190840190614bb9565b5060a087015160c087015260c087015160e08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310614c65577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600080600080600060808688031215614c8357600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614b0b57600080fd5b80516fffffffffffffffffffffffffffffffff811681146134d657600080fd5b600060808284031215614ce157600080fd5b6040516080810181811067ffffffffffffffff82111715614d0457614d04614859565b6040528251614d1281614757565b815260208381015190820152614d2a60408401614caf565b6040820152614d3b60608401614caf565b60608201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614d8957614d89614d47565b500190565b600060208284031215614da057600080fd5b81518015158114612ae557600080fd5b600060a08284031215614dc257600080fd5b60405160a0810181811067ffffffffffffffff82111715614de557614de5614859565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112614e5457600080fd5b9190910192915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1833603018112614e5457600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614ec757600080fd5b83018035915067ffffffffffffffff821115614ee257600080fd5b6020019150600581901b3603821315614a0657600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614f2c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b606081526000614f5d606083018789614efa565b8281036020840152614f70818688614efa565b9150508260408301529695505050505050565b8381526fffffffffffffffffffffffffffffffff83166020820152606060408201526000614fb460608301846147c8565b95945050505050565b600060208284031215614fcf57600080fd5b8151612ae581614757565b600060ff821660ff84168060ff03821115614ff757614ff7614d47565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561506657615066614d47565b500290565b600060ff821660ff84168082101561508557615085614d47565b90039392505050565b6000828210156150a0576150a0614d47565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826150e3576150e36150a5565b500690565b803567ffffffffffffffff811681146134d657600080fd5b600082601f83011261511157600080fd5b8135602061512161497483614907565b82815260059290921b8401810191818101908684111561514057600080fd5b8286015b8481101561515b5780358352918301918301615144565b509695505050505050565b6000610140823603121561517957600080fd5b615181614888565b823581526020830135602082015261519b604084016150e8565b60408201526151ac606084016150e8565b60608201526151bd608084016150e8565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013567ffffffffffffffff81111561520857600080fd5b61521436828701615100565b918301919091525092915050565b600082601f83011261523357600080fd5b813567ffffffffffffffff81111561524d5761524d614859565b6152606020601f19601f840116016148d6565b81815284602083860101111561527557600080fd5b816020850160208301376000918101602001919091529392505050565b600061012082360312156152a557600080fd5b6152ad6148b2565b823567ffffffffffffffff808211156152c557600080fd5b6152d136838701615222565b835260208501359150808211156152e757600080fd5b6152f336838701615222565b6020840152604085013591508082111561530c57600080fd5b61531836838701615222565b6040840152606085013591508082111561533157600080fd5b61533d36838701615222565b6060840152608085013591508082111561535657600080fd5b61536236838701615222565b608084015260a085013591508082111561537b57600080fd5b61538736838701615222565b60a084015260c08501359150808211156153a057600080fd5b6153ac36838701615222565b60c084015260e08501359150808211156153c557600080fd5b6153d136838701615222565b60e0840152610100915081850135818111156153ec57600080fd5b6153f836828801615222565b8385015250505080915050919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b8581526000602060808184015261544d60808401886147c8565b8381036040850152858152818101600587901b820183018860005b898110156154f557601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18c36030181126154ab57600080fd5b8b01868101903567ffffffffffffffff8111156154c757600080fd5b8036038213156154d657600080fd5b6154e1858284615408565b958801959450505090850190600101615468565b5050809450505050508260608301529695505050505050565b60008261551d5761551d6150a5565b500490565b600060ff831680615535576155356150a5565b8060ff84160691505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361557557615575614d47565b5060010190565b60008151602080840160005b838110156155a457815187529582019590820190600101615588565b509495945050505050565b8c81528b60208201528a604082015289606082015288608082015260007fffffffffffffffff000000000000000000000000000000000000000000000000808a60c01b1660a0840152808960c01b1660a88401528760b0840152808760c01b1660d0840152507fffff0000000000000000000000000000000000000000000000000000000000008560f01b1660d883015261565661565060da84018661557c565b8461557c565b9e9d5050505050505050505050505050565b6000835161567a81846020880161479c565b83519083019061568e81836020880161479c565b01949350505050565b600181815b808511156156f057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d6576156d6614d47565b808516156156e357918102915b93841c939080029061569c565b509250929050565b600082615707575060016115ca565b81615714575060006115ca565b816001811461572a576002811461573457615750565b60019150506115ca565b60ff84111561574557615745614d47565b50506001821b6115ca565b5060208310610133831016604e8410600b8410161715615773575081810a6115ca565b61577d8383615697565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156157af576157af614d47565b029392505050565b6000612ae583836156f856fea164736f6c634300080f000a", + "root": "0x821e2556a290c86405f8160a2d662042a431ba456b9db265c79bb837c04be5f0", + "codeHash": "0x9df5a7cdcb6bd8923cbea0b29d9f61fc8a290503488353e9c788e98be4277ff2", + "code": "0x6080604052600436106101745760003560e01c80639e45e8f4116100cb578063cf8e5cf01161007f578063e4a3011611610059578063e4a30116146104bb578063e6646723146104db578063f4daa291146104fb57600080fd5b8063cf8e5cf014610466578063d1de856c14610486578063dcec3348146104a657600080fd5b8063a48ea6de116100b0578063a48ea6de146103f2578063b0ea09a814610412578063b98debbf1461043257600080fd5b80639e45e8f41461031a578063a25ae5571461037357600080fd5b80635a045f781161012d57806370872aa51161010757806370872aa5146102ce5780637f006420146102e4578063887862721461030457600080fd5b80635a045f781461028f57806369f16eec146102a45780636abcf563146102b957600080fd5b80634599c7881161015e5780634599c788146101f0578063529933df1461020557806354fd4d501461023957600080fd5b80622134cc1461017957806333727c4d146101c0575b600080fd5b34801561018557600080fd5b506101ad7f000000000000000000000000000000000000000000000000000000000000000281565b6040519081526020015b60405180910390f35b3480156101cc57600080fd5b506101e06101db3660046115f1565b61052f565b60405190151581526020016101b7565b3480156101fc57600080fd5b506101ad61059d565b34801561021157600080fd5b506101ad7f000000000000000000000000000000000000000000000000000000000000000481565b34801561024557600080fd5b506102826040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101b7919061160a565b6102a261029d36600461167d565b610610565b005b3480156102b057600080fd5b506101ad610c17565b3480156102c557600080fd5b506003546101ad565b3480156102da57600080fd5b506101ad60015481565b3480156102f057600080fd5b506101ad6102ff3660046115f1565b610c29565b34801561031057600080fd5b506101ad60025481565b34801561032657600080fd5b5061034e7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b7565b34801561037f57600080fd5b5061039361038e3660046115f1565b610e09565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015190820152828201516fffffffffffffffffffffffffffffffff90811692820192909252606092830151909116918101919091526080016101b7565b3480156103fe57600080fd5b506101ad61040d3660046115f1565b610ec6565b34801561041e57600080fd5b5061034e61042d3660046115f1565b610f32565b34801561043e57600080fd5b5061034e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561047257600080fd5b506103936104813660046115f1565b610f74565b34801561049257600080fd5b506101ad6104a13660046115f1565b610fb3565b3480156104b257600080fd5b506101ad610ffb565b3480156104c757600080fd5b506102a26104d63660046116af565b611041565b3480156104e757600080fd5b506102a26104f63660046116f6565b61125a565b34801561050757600080fd5b506101ad7f000000000000000000000000000000000000000000000000000000000000007881565b6000427f0000000000000000000000000000000000000000000000000000000000000078600384815481106105665761056661172f565b600091825260209091206002600390920201015461059691906fffffffffffffffffffffffffffffffff1661178d565b1092915050565b6003546000901561060757600380546105b8906001906117a5565b815481106105c8576105c861172f565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b60007f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc973ffffffffffffffffffffffffffffffffffffffff16633a5490466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a191906117bc565b905073ffffffffffffffffffffffffffffffffffffffff80821614610776573373ffffffffffffffffffffffffffffffffffffffff8216146107765760405162461bcd60e51b815260206004820152604260248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206e65787420736560448201527f6c65637465642076616c696461746f722063616e207375626d6974206f75747060648201527f7574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b61077e610ffb565b84146108185760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a40161076d565b4261082285610fb3565b106108955760405162461bcd60e51b815260206004820152603560248201527f4c324f75747075744f7261636c653a2063616e6e6f74207375626d6974204c3260448201527f206f757470757420696e20746865206675747572650000000000000000000000606482015260840161076d565b846109085760405162461bcd60e51b815260206004820152603c60248201527f4c324f75747075744f7261636c653a204c3220636865636b706f696e74206f7560448201527f747075742063616e6e6f7420626520746865207a65726f206861736800000000606482015260840161076d565b82158015906109175750814015155b156109b857828240146109b85760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a40161076d565b60006109c360035490565b60408051608081018252338152602081018981526fffffffffffffffffffffffffffffffff428181168486019081528b831660608601908152600380546001810182556000829052965196027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8101805473ffffffffffffffffffffffffffffffffffffffff989098167fffffffffffffffffffffffff00000000000000000000000000000000000000009098169790971790965593517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c86015551925182167001000000000000000000000000000000000292909116919091177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d9092019190915590519192508691839189917f457b4388026260019ae0b0b4f16c98235d74fe7359be469bdcba16e6d0d4968991610b209190815260200190565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663d38dc7ee82610b8f7f00000000000000000000000000000000000000000000000000000000000000784261178d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610bf757600080fd5b505af1158015610c0b573d6000803e3d6000fd5b50505050505050505050565b60035460009061060b906001906117a5565b6000610c3361059d565b821115610cce5760405162461bcd60e51b815260206004820152604960248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f7375626d69747465640000000000000000000000000000000000000000000000608482015260a40161076d565b600354610d695760405162461bcd60e51b815260206004820152604760248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e207375626d697460648201527f7465642079657400000000000000000000000000000000000000000000000000608482015260a40161076d565b6003546000905b80821015610e025760006002610d86838561178d565b610d9091906117e0565b90508460038281548110610da657610da661172f565b600091825260209091206003909102016002015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff161015610df857610df181600161178d565b9250610dfc565b8091505b50610d70565b5092915050565b60408051608081018252600080825260208201819052918101829052606081019190915260038281548110610e4057610e4061172f565b6000918252602091829020604080516080810182526003909302909101805473ffffffffffffffffffffffffffffffffffffffff1683526001810154938301939093526002909201546fffffffffffffffffffffffffffffffff808216938301939093527001000000000000000000000000000000009004909116606082015292915050565b60007f000000000000000000000000000000000000000000000000000000000000007860038381548110610efc57610efc61172f565b6000918252602090912060026003909202010154610f2c91906fffffffffffffffffffffffffffffffff1661178d565b92915050565b600060038281548110610f4757610f4761172f565b600091825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1692915050565b6040805160808101825260008082526020820181905291810182905260608101919091526003610fa383610c29565b81548110610e4057610e4061172f565b60007f000000000000000000000000000000000000000000000000000000000000000260015483610fe491906117a5565b610fee919061181b565b600254610f2c919061178d565b60035460009015611039577f000000000000000000000000000000000000000000000000000000000000000461102f61059d565b61060b919061178d565b61060b61059d565b600054610100900460ff16158080156110615750600054600160ff909116105b8061107b5750303b15801561107b575060005460ff166001145b6110ed5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161076d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561114b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b428211156111e85760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a40161076d565b60028290556001839055801561125557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788161461132b5760405162461bcd60e51b815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c792074686520636f6c6f73736560448201527f756d20636f6e74726163742063616e207265706c61636520616e206f7574707560648201527f7400000000000000000000000000000000000000000000000000000000000000608482015260a40161076d565b73ffffffffffffffffffffffffffffffffffffffff81166113b45760405162461bcd60e51b815260206004820152603060248201527f4c324f75747075744f7261636c653a207375626d69747465722061646472657360448201527f732063616e6e6f74206265207a65726f00000000000000000000000000000000606482015260840161076d565b60035483106114515760405162461bcd60e51b815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420616674657220746865206c6174657374206f757470757460648201527f20696e6465780000000000000000000000000000000000000000000000000000608482015260a40161076d565b6000600384815481106114665761146661172f565b6000918252602090912060039091020160028101549091507f0000000000000000000000000000000000000000000000000000000000000078906114bc906fffffffffffffffffffffffffffffffff16426117a5565b106115555760405162461bcd60e51b815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f74207265706c616365206160448201527f6e206f757470757420746861742068617320616c7265616479206265656e206660648201527f696e616c697a6564000000000000000000000000000000000000000000000000608482015260a40161076d565b6001810183905580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617815560405183815284907fa1b831bb8b6b242db6d0988a6d21f869c610de9f703a5e45e1b7d3dc3137b9069060200160405180910390a250505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006020828403121561160357600080fd5b5035919050565b600060208083528351808285015260005b818110156116375785810183015185820160400152820161161b565b81811115611649576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000806000806080858703121561169357600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156116c257600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff811681146116f357600080fd5b50565b60008060006060848603121561170b57600080fd5b83359250602084013591506040840135611724816116d1565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156117a0576117a061175e565b500190565b6000828210156117b7576117b761175e565b500390565b6000602082840312156117ce57600080fd5b81516117d9816116d1565b9392505050565b600082611816577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156118535761185361175e565b50029056fea164736f6c634300080f000a", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "03", - "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "02", - "0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "02", - "0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "03" + "0x0000000000000000000000000000000000000000000000000000000000000000": "01" }, - "key": "0xe645f3e3dba1eb870eb045c6df181f42832b2ef1c0ba7b9eaac56d015a81bc52" + "key": "0xd76a9e3251db48a3dc95c22482b0e33783cfd46d1b333e3b373cdf5adece583b" + }, + "0xc6e7df5e7b4f2a278906862b61205850344d4e7d": { + "balance": "0", + "nonce": 1, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0xdcc518c7fadf757cf1e4e6a15d0ac839b78d9dbaa999e18b0ae05ede6535b58c", + "code": "0x6080604052600436106100b55760003560e01c80637f46ddb2116100695780638f601f661161004e5780638f601f6614610298578063927ede2d146102db578063e11013dd1461030f57600080fd5b80637f46ddb21461021f578063870876231461027857600080fd5b80631635f5fd1161009a5780631635f5fd1461018d578063540abf73146101a057806354fd4d50146101c057600080fd5b80630166a07a1461015a57806309fc88431461017a57600080fd5b3661015557333b156101345760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b61015333333462030d4060405180602001604052806000815250610322565b005b600080fd5b34801561016657600080fd5b50610153610175366004611973565b610547565b610153610188366004611a24565b610943565b61015361019b366004611a77565b610a00565b3480156101ac57600080fd5b506101536101bb366004611aea565b610e7a565b3480156101cc57600080fd5b506102096040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102169190611bd7565b60405180910390f35b34801561022b57600080fd5b506102537f000000000000000000000000420000000000000000000000000000000000000981565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610216565b34801561028457600080fd5b50610153610293366004611bea565b610ec8565b3480156102a457600080fd5b506102cd6102b3366004611c6d565b600060208181529281526040808220909352908152205481565b604051908152602001610216565b3480156102e757600080fd5b506102537f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b61015361031d366004611ca6565b610f82565b8234146103975760405162461bcd60e51b815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c75650000606482015260840161012b565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af585846040516103f6929190611d09565b60405180910390a37f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16633dbb202b847f0000000000000000000000004200000000000000000000000000000000000009631635f5fd60e01b8989898860405160240161047b9493929190611d22565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261050e92918890600401611d6b565b6000604051808303818588803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b50505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614801561066557507f000000000000000000000000420000000000000000000000000000000000000973ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190611db0565b73ffffffffffffffffffffffffffffffffffffffff16145b6106fd5760405162461bcd60e51b815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161012b565b61070687610fcb565b1561083a576107158787610ffd565b6107ad5760405162461bcd60e51b815260206004820152604760248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204b726f6d61204d696e7461626c65204552433230206c6f636160648201527f6c20746f6b656e00000000000000000000000000000000000000000000000000608482015260a40161012b565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505050506108b8565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260208181526040808320938a1683529290522054610876908490611dfc565b73ffffffffffffffffffffffffffffffffffffffff808916600081815260208181526040808320948c16835293905291909120919091556108b89085856110a4565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd878787876040516109329493929190611e5c565b60405180910390a450505050505050565b333b156109b85760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161012b565b6109fb3333348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061032292505050565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570716148015610b1e57507f000000000000000000000000420000000000000000000000000000000000000973ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b069190611db0565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb65760405162461bcd60e51b815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161012b565b823414610c2b5760405162461bcd60e51b815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e74207265717569726564000000000000606482015260840161012b565b3073ffffffffffffffffffffffffffffffffffffffff851603610cb65760405162461bcd60e51b815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161012b565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d775760405162461bcd60e51b815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161012b565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d858585604051610dd893929190611e92565b60405180910390a36000610dfd855a8660405180602001604052806000815250611178565b905080610e725760405162461bcd60e51b815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161012b565b505050505050565b610ebf87873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119492505050565b50505050505050565b333b15610f3d5760405162461bcd60e51b815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161012b565b610e7286863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119492505050565b610fc53385348686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061032292505050565b50505050565b6000610ff7827f30a0c5a90000000000000000000000000000000000000000000000000000000061152f565b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663033964be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e9190611db0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109fb9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611552565b600080600080845160208601878a8af19150505b949350505050565b61119d87610fcb565b156112d1576111ac8787610ffd565b6112445760405162461bcd60e51b815260206004820152604760248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204b726f6d61204d696e7461626c65204552433230206c6f636160648201527f6c20746f6b656e00000000000000000000000000000000000000000000000000608482015260a40161012b565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50505050611361565b6112f373ffffffffffffffffffffffffffffffffffffffff8816863086611647565b73ffffffffffffffffffffffffffffffffffffffff808816600090815260208181526040808320938a168352929052205461132f908490611eb5565b73ffffffffffffffffffffffffffffffffffffffff808916600090815260208181526040808320938b16835292905220555b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf8787866040516113d993929190611ecd565b60405180910390a47f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570773ffffffffffffffffffffffffffffffffffffffff16633dbb202b7f0000000000000000000000004200000000000000000000000000000000000009630166a07a60e01b898b8a8a8a8960405160240161146196959493929190611f02565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526114f492918790600401611d6b565b600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b5050505050505050505050565b600061153a836116a5565b801561154b575061154b8383611709565b9392505050565b60006115b4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166117d89092919063ffffffff16565b90508051600014806115d55750808060200190518101906115d59190611f5d565b6109fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161012b565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610fc59085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016110f6565b60006116d1827f01ffc9a700000000000000000000000000000000000000000000000000000000611709565b8015610ff75750611702827fffffffff00000000000000000000000000000000000000000000000000000000611709565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156117c1575060208210155b80156117cd5750600081115b979650505050505050565b606061118c8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161180c9190611f7f565b60006040518083038185875af1925050503d8060008114611849576040519150601f19603f3d011682016040523d82523d6000602084013e61184e565b606091505b50915091506117cd87838387606083156118d65782516000036118cf5773ffffffffffffffffffffffffffffffffffffffff85163b6118cf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161012b565b508161118c565b61118c83838151156118eb5781518083602001fd5b8060405162461bcd60e51b815260040161012b9190611bd7565b73ffffffffffffffffffffffffffffffffffffffff8116811461192757600080fd5b50565b60008083601f84011261193c57600080fd5b50813567ffffffffffffffff81111561195457600080fd5b60208301915083602082850101111561196c57600080fd5b9250929050565b600080600080600080600060c0888a03121561198e57600080fd5b873561199981611905565b965060208801356119a981611905565b955060408801356119b981611905565b945060608801356119c981611905565b93506080880135925060a088013567ffffffffffffffff8111156119ec57600080fd5b6119f88a828b0161192a565b989b979a50959850939692959293505050565b803563ffffffff81168114611a1f57600080fd5b919050565b600080600060408486031215611a3957600080fd5b611a4284611a0b565b9250602084013567ffffffffffffffff811115611a5e57600080fd5b611a6a8682870161192a565b9497909650939450505050565b600080600080600060808688031215611a8f57600080fd5b8535611a9a81611905565b94506020860135611aaa81611905565b935060408601359250606086013567ffffffffffffffff811115611acd57600080fd5b611ad98882890161192a565b969995985093965092949392505050565b600080600080600080600060c0888a031215611b0557600080fd5b8735611b1081611905565b96506020880135611b2081611905565b95506040880135611b3081611905565b945060608801359350611b4560808901611a0b565b925060a088013567ffffffffffffffff8111156119ec57600080fd5b60005b83811015611b7c578181015183820152602001611b64565b83811115610fc55750506000910152565b60008151808452611ba5816020860160208601611b61565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061154b6020830184611b8d565b60008060008060008060a08789031215611c0357600080fd5b8635611c0e81611905565b95506020870135611c1e81611905565b945060408701359350611c3360608801611a0b565b9250608087013567ffffffffffffffff811115611c4f57600080fd5b611c5b89828a0161192a565b979a9699509497509295939492505050565b60008060408385031215611c8057600080fd5b8235611c8b81611905565b91506020830135611c9b81611905565b809150509250929050565b60008060008060608587031215611cbc57600080fd5b8435611cc781611905565b9350611cd560208601611a0b565b9250604085013567ffffffffffffffff811115611cf157600080fd5b611cfd8782880161192a565b95989497509550505050565b82815260406020820152600061118c6040830184611b8d565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611d616080830184611b8d565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000611d9a6060830185611b8d565b905063ffffffff83166040830152949350505050565b600060208284031215611dc257600080fd5b815161154b81611905565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611e0e57611e0e611dcd565b500390565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000611d61606083018486611e13565b838152604060208201526000611eac604083018486611e13565b95945050505050565b60008219821115611ec857611ec8611dcd565b500190565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000611eac6060830184611b8d565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a0830152611f5160c0830184611b8d565b98975050505050505050565b600060208284031215611f6f57600080fd5b8151801515811461154b57600080fd5b60008251611f91818460208701611b61565b919091019291505056fea164736f6c634300080f000a", + "key": "0x4ea7799478a7af2a47ba555f04aec4ae4ba240bf410d7c859c34c310f0413892" }, "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9": { "balance": "0", "nonce": 1, - "root": "0xff29c40b301f27059233982c149e2af24c6b4d009a58ac450255f06c9501fe91", + "root": "0x32a700132902f5a9b9b36c35a8d4bf02fcc87a44d4a50cb70594888097afa490", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", "0x0000000000000000000000000000000000000000000000000000000000000001": "01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "4a679253410272dd5232b3ff7cf5dbb88f295319", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "7a2088a1bfc9d81c55368ae168c2c02570cb814f", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0xfe007bdba68bf70aaeb167af64e1fe093e2da7911c8fdd2ca2cbd15510556466" @@ -471,20 +505,28 @@ "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9": { "balance": "0", "nonce": 1, - "root": "0x14f5b00a2efa9e8091040883b5d8bce450f2511f18c0b2c263a7375955bc7fa1", + "root": "0xb489c9c7bc087c551a58321da061aacbd3ad5015bd6e71daf04ac9f5eea52d5d", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "01", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "09635f643e140090a9a8dcd712ed6285858cebef", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "c5a5c42992decbae36851359345fe25997f5c42d", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x5955c038e06073af9c7343aebef817ef3c1a62b10ca675a3d129ce4e4269f7ea" }, + "0xe6e340d132b5f46d1e472debcd681b2abc16e57e": { + "balance": "0", + "nonce": 1, + "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "codeHash": "0xd536a3ff5e8a1e99a2876997aed4eb865dff23215be0d084ff640e4f18af0d44", + "code": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80634292dc3e1461003b57806354fd4d5014610063575b600080fd5b61004e61004936600461576f565b6100ac565b60405190151581526020015b60405180910390f35b61009f6040518060400160405280600581526020017f302e312e3400000000000000000000000000000000000000000000000000000081525081565b60405161005a91906157e3565b60006100b661560c565b848460008181106100c9576100c9615856565b9050602002013570ffffffffffffffffffffffffffffffffff16816000600681106100f6576100f6615856565b602002015260888585600181811061011057610110615856565b90506020020135600116901b60888686600081811061013157610131615856565b90506020020135901c61014491906158b4565b60208201528484600281811061015c5761015c615856565b9050602002013570ffffffffffffffffffffffffffffffffff168160026006811061018957610189615856565b60200201526088858560038181106101a3576101a3615856565b90506020020135600116901b6088868660028181106101c4576101c4615856565b90506020020135901c6101d791906158b4565b606080830191909152608084811c908301526fffffffffffffffffffffffffffffffff841660a08301526040805160028082529281019091526000918291829182918291816020015b60408051808201909152600080825260208201528152602001906001900390816102205750506040805160028082526060820190925291925060009190602082015b61026a61562a565b81526020019060019003908161026257905050905061028a8d8d896104fb565b85519399509097509095509350869083906000906102aa576102aa615856565b6020026020010151600001818152505083826000815181106102ce576102ce615856565b6020026020010151602001818152505084826001815181106102f2576102f2615856565b60200260200101516000018181525050828260018151811061031657610316615856565b6020026020010151602001818152505061032e614a63565b8160008151811061034157610341615856565b6020026020010181905250610354614b0e565b8160018151811061036757610367615856565b602002602001018190525061037c8282614bb5565b6103905760009750505050505050506104f2565b8a8a60008181106103a3576103a3615856565b90506020020135826000815181106103bd576103bd615856565b6020908102919091010151528a8a60018181106103dc576103dc615856565b90506020020135826000815181106103f6576103f6615856565b602002602001015160200181815250508a8a600281811061041957610419615856565b905060200201358260018151811061043357610433615856565b6020908102919091010151528a8a600381811061045257610452615856565b905060200201358260018151811061046c5761046c615856565b60200260200101516020018181525050610484614a63565b8160008151811061049757610497615856565b60200260200101819052506104aa614b0e565b816001815181106104bd576104bd615856565b60200260200101819052506104d28282614bb5565b6104e65760009750505050505050506104f2565b60019750505050505050505b95945050505050565b60008060008061050961564f565b61051161566e565b6000806105667f2754b04f3f510d0e86a0d0e811f0fc16f92b722514e1729066d2abf90811d6f27f1816b0f9909a5a979bd34c559e57b4096bee5cce7eb668bc0a9805677f40dc858b845b6020020151614e89565b90925090506105c07f174fa57071f8f6e53fcb31a5ecc33274ec76e4e186eeb0b64255d2f314cd50b27f1c399365e85e4de2761ebcf350da85ff4518cc82f7cef64a477a7a5fd11d4a448b60015b60200201518585614eef565b90925090506106127f259a4d5cd83279b6dc9ca2008b669f82e91f23804e2524c5087a2452d52c33bd7f303abddb7ae0f35e3a6bd39314b347c3c3a433f72833dda1998ad2176258baa38b60026105b4565b90925090506106647f252b158900f31a7c0c00b924e7d3c8d61a60c5e9fd2b83251ba73d1dc0b680f57f29c8c2b3f0d74267bc2b0f9f3568838cdb0eee4719391790d93d0015c00ce5af8b60036105b4565b90925090506106b67f0c25f9f3c38b6a128d7d38c5625a3976d389b5f9f33098bb419968e4d18e150e7f21fb777462c7f4af71940423babc7f882f0c97be9620ef84f6f11974ee0edb8e8b60046105b4565b90925090506107087f2280a0fd7dbf95c450830906ffc607a373d5b9b56b9101138e925ad557eb355a7f0697ab7e9a5377e2759ab6d1283301ccae9c72bad14946a9513ee19be1ec825e8b60056105b4565b6020860152845261073b7f1545b1bf82c58ee35648bd877da9c5010193e82b036b16bf382acf31bc2ab576846000614f3b565b8351602085015161074f9190856002614f87565b600091505b600482116107ed576107db8b8b61076c8560026158fb565b6107779060006158b4565b81811061078657610786615856565b905060200201358c8c85600261079c91906158fb565b6107a79060016158b4565b8181106107b6576107b6615856565b90506020020135858560036107cb91906158fb565b6107d69060056158b4565b614f87565b816107e581615938565b925050610754565b6107f8836014614ff7565b6040850152600091505b600d8211610896576108848b8b61081a8560026158fb565b61082590600a6158b4565b81811061083457610834615856565b905060200201358c8c85600261084a91906158fb565b61085590600b6158b4565b81811061086457610864615856565b905060200201358585600361087991906158fb565b6107d69060016158b4565b8161088e81615938565b925050610802565b6108a183602b614ff7565b60608501526108b1836001614ff7565b6080850152600091505b600982116109205761090e8b8b6108d38560026158fb565b6108de9060266158b4565b8181106108ed576108ed615856565b905060200201358c8c85600261090391906158fb565b6108559060276158b4565b8161091881615938565b9250506108bb565b61092b83601f614ff7565b60a0850152600091505b6003821161099a576109888b8b61094d8560026158fb565b61095890603a6158b4565b81811061096757610967615856565b905060200201358c8c85600261097d91906158fb565b61085590603b6158b4565b8161099281615938565b925050610935565b6109a583600d614ff7565b60c0850152600091505b60468211610a1857610a068b8b6109c78560016158fb565b6109d29060426158b4565b8181106109e1576109e1615856565b90506020020135848460026109f691906158fb565b610a019060016158b4565b614f3b565b81610a1081615938565b9250506109af565b610a2383608f614ff7565b60e0850152600091505b60038211610a9257610a808b8b610a458560026158fb565b610a509060896158b4565b818110610a5f57610a5f615856565b905060200201358c8c856002610a7591906158fb565b61085590608a6158b4565b81610a8a81615938565b925050610a2d565b610a9d83600d614ff7565b61010085015260c0840151600080516020615a46833981519152907f1dba8b5bdd64ef6ce29a9039aca3c0e524395c43b9227b96c75090cc6cc7ec97900961012085015260c0840151600080516020615a46833981519152907f24a1fcd63e9f03b27281db85fe631ec8e5c466f8178a4ee94d4942b7ccd90e1c900961014085015260c0840151600080516020615a46833981519152907f20bab6e5f766b4edf82399e9c5ff0e40d4b6875321a3d8020e18521d8f5c7241900961016085015260c0840151610b70906304000000615059565b610180850152600080516020615a46833981519152610b90600182615970565b610180860151086101a08501819052600080516020615a46833981519152907f30644e66c81e03716be83b486d6feabcc7ddd0fe6cbf5e72d585d142f7829b05096101c0850152600080516020615a46833981519152610bf1600182615970565b60c0860151089150610c0b84600e5b6020020151836150c0565b6101c08501526101a0840151600080516020615a46833981519152907f07baaa5b7af9cf52cd226bc56865f0f99ef8fcd4219060f09f43e9a148b5ab68096101e0850152600080516020615a46833981519152610c887f20bab6e5f766b4edf82399e9c5ff0e40d4b6875321a3d8020e18521d8f5c724182615970565b60c0860151089150610c9b84600f610c00565b6101e08501526101a0840151600080516020615a46833981519152907f1c699f652457365bf2fc4fa2c5c63d6c4349b03cb46d633d7a2655c5da4b900a09610200850152600080516020615a46833981519152610d187f19277f31ecb5bfe8604677099c09556812b0b5c50cceb2b584098183a5a6c5c882615970565b60c0860151089150610d2b846010610c00565b6102008501526101a0840151600080516020615a46833981519152907f205cdbaf03903a5c23e60eef0df90673bc65a25762694c501e3281153b4e588a09610220850152600080516020615a46833981519152610da87f082a7bd4c0a7e4352229d332c27a160da18f0d7c651f3047df41b80345532f6e82615970565b60c0860151089150610dbb846011610c00565b6102208501526101a0840151600080516020615a46833981519152907f27db73b1a831278e143aab90091db38afdea3294c4ba05d1c697a392eb09cc7909610240850152600080516020615a46833981519152610e387f26501ebfe559ea5826f023d3e76e4b66f170cd940408eb5590a4075c80b498d682615970565b60c0860151089150610e4b846012610c00565b6102408501526101a0840151600080516020615a46833981519152907f0204822d629ab653697f028f5fa17d23ac2ba08c60c7112d98ebd28f325f0af609610260850152600080516020615a46833981519152610ec87f0d5eb4c216db2c3262de3f6a2ef71a9be95ff21a7a1a50ed069d6131e7d54e5f82615970565b60c0860151089150610edb846013610c00565b6102608501526101a0840151600080516020615a46833981519152907f2622622a60c0d9327ccf066a0f1fce13c48601b976affd1f41c2a72a9f77da6409610280850152600080516020615a46833981519152610f587f24a1fcd63e9f03b27281db85fe631ec8e5c466f8178a4ee94d4942b7ccd90e1c82615970565b60c0860151089150610f6b846014610c00565b6102808501526102008401516101e0850151600080516020615a468339815191529190089150600080516020615a46833981519152846011602002015183089150600080516020615a46833981519152846012602002015183089150600080516020615a46833981519152846013602002015183086101e085015261103c8b8b604a818110610ffc57610ffc615856565b905060200201358c8c604881811061101657611016615856565b905060200201358d8d604981811061103057611030615856565b905060200201356150f0565b915061107b8b8b604b81811061105457611054615856565b905060200201358c8c604381811061106e5761106e615856565b90506020020135846150f0565b91506110ad8b8b604c81811061109357611093615856565b905060200201358c8c604481811061106e5761106e615856565b91506110df8b8b604d8181106110c5576110c5615856565b905060200201358c8c604581811061106e5761106e615856565b91506111118b8b604e8181106110f7576110f7615856565b905060200201358c8c604681811061106e5761106e615856565b91506111438b8b604f81811061112957611129615856565b905060200201358c8c604781811061106e5761106e615856565b610200850152600080516020615a468339815191528b8b604481811061116b5761116b615856565b905060200201358c8c604381811061118557611185615856565b905060200201350991506111ca8b8b60508181106111a5576111a5615856565b9050602002013583866010605481106111c0576111c0615856565b60200201516150f0565b610200850152600080516020615a468339815191528b8b60468181106111f2576111f2615856565b905060200201358c8c604581811061120c5761120c615856565b9050602002013509915061122c8b8b60518181106111a5576111a5615856565b610200850152600080516020615a468339815191528b8b606181811061125457611254615856565b90506020020135600080516020615a468339815191526112749190615970565b6001089150600080516020615a468339815191528285600e602002015109610220850152600080516020615a468339815191528b8b60648181106112ba576112ba615856565b905060200201358c8c60648181106112d4576112d4615856565b90506020020135099150600080516020615a468339815191528b8b606481811061130057611300615856565b90506020020135600080516020615a468339815191526113209190615970565b83089150600080516020615a4683398151915282856014602002015109610240850152600080516020615a468339815191528b8b606381811061136557611365615856565b90506020020135600080516020615a468339815191526113859190615970565b8c8c606481811061139857611398615856565b90506020020135089150600080516020615a4683398151915284600e6020020151830961026085015260c08401516060850151600080516020615a468339815191529190096102a08501526101e0840151610280850151600080516020615a468339815191529190089150600080516020615a4683398151915261142a83600080516020615a46833981519152615970565b6001086101e08501526080840151600080516020615a46833981519152908c8c604381811061145b5761145b615856565b90506020020135086102c08501526114a68b8b605b81811061147f5761147f615856565b905060200201358560036054811061149957611499615856565b60200201518660166111c0565b9150600080516020615a468339815191528b8b60628181106114ca576114ca615856565b9050602002013583096102e08501526102a08401516102c0850151600080516020615a468339815191529190089150600080516020615a468339815191528b8b606181811061151b5761151b615856565b9050602002013583096102c08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526080840151600080516020615a46833981519152908c8c604481811061159057611590615856565b90506020020135086103208501526115db8b8b605c8181106115b4576115b4615856565b90506020020135856003605481106115ce576115ce615856565b60200201518660196111c0565b9150600080516020615a46833981519152846017602002015183096102e0850152610300840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846016602002015183096102c0850152610300840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526080840151600080516020615a46833981519152908c8c60458181106116a1576116a1615856565b90506020020135086103208501526116c58b8b605d8181106115b4576115b4615856565b9150600080516020615a46833981519152846017602002015183096102e0850152610300840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846016602002015183096102c0850152610300840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096103008501526102c0840151600080516020615a46833981519152906117839082615970565b6102e0860151089150600080516020615a4683398151915284600f602002015183096102c08501526102a0840151600080516020615a46833981519152907f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5290096102a08501526080840151600080516020615a46833981519152908c8c604681811061181257611812615856565b90506020020135086102e085015261185d8b8b605e81811061183657611836615856565b905060200201358560036054811061185057611850615856565b60200201518660176111c0565b9150600080516020615a468339815191528b8b606581811061188157611881615856565b9050602002013583096103008501526102a08401516102e0850151600080516020615a468339815191529190089150600080516020615a468339815191528b8b60648181106118d2576118d2615856565b9050602002013583096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526080840151600080516020615a46833981519152908c8c604781811061194757611947615856565b905060200201350861032085015261196b8b8b605f8181106115b4576115b4615856565b9150600080516020615a46833981519152846018602002015183096103008501526102a0840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846017602002015183096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526080840151600080516020615a46833981519152908c8c6042818110611a3157611a31615856565b9050602002013508610320850152611a558b8b60608181106115b4576115b4615856565b9150600080516020615a46833981519152846018602002015183096103008501526102a0840151610320850151600080516020615a468339815191529190089150600080516020615a46833981519152846017602002015183096102e08501526102a0840151600080516020615a46833981519152907f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096102a08501526102e0840151600080516020615a4683398151915290611b139082615970565b610300860151089150600080516020615a4683398151915284600f602002015183096102a08501526060840151600080516020615a46833981519152908c8c6068818110611b6357611b63615856565b90506020020135089150600080516020615a46833981519152828c8c6067818110611b9057611b90615856565b90506020020135096102e08501526080840151600080516020615a46833981519152908c8c606a818110611bc657611bc6615856565b90506020020135089150600080516020615a46833981519152828560176020020151096102e0850152600080516020615a468339815191528b8b6052818110611c1157611c11615856565b905060200201358c8c6043818110611c2b57611c2b615856565b90506020020135096103008501526040840151600080516020615a468339815191529060000960408501819052610300850151600080516020615a468339815191529108610300850152600080516020615a468339815191528b8b6053818110611c9757611c97615856565b9050602002013585600260548110611cb157611cb1615856565b602002015108610320850152600080516020615a468339815191528b8b606a818110611cdf57611cdf615856565b90506020020135600080516020615a46833981519152611cff9190615970565b8c8c6068818110611d1257611d12615856565b9050602002013508610340850152600080516020615a468339815191528b8b6066818110611d4257611d42615856565b90506020020135600080516020615a46833981519152611d629190615970565b6001089150600080516020615a468339815191528285600e602002015109610360850152600080516020615a468339815191528b8b6066818110611da857611da8615856565b905060200201358c8c6066818110611dc257611dc2615856565b90506020020135099150600080516020615a468339815191528b8b6066818110611dee57611dee615856565b90506020020135600080516020615a46833981519152611e0e9190615970565b83089150600080516020615a46833981519152828560146020020151096103808501526060840151610300850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c6066818110611e7357611e73615856565b90506020020135096103008501526080840151610320850151600080516020615a468339815191529190086103208501819052610300850151600080516020615a468339815191529190099150600080516020615a46833981519152611ee783600080516020615a46833981519152615970565b6102e0860151089150600080516020615a4683398151915284600f602002015183096102e08501526103408401516101c0850151600080516020615a46833981519152919009610300850152600080516020615a468339815191528b8b6069818110611f5557611f55615856565b90506020020135600080516020615a46833981519152611f759190615970565b8c8c6068818110611f8857611f88615856565b90506020020135089150600080516020615a468339815191528285601a6020020151099150600080516020615a4683398151915284600f602002015183096103408501526060840151600080516020615a46833981519152908c8c606d818110611ff457611ff4615856565b90506020020135089150600080516020615a46833981519152828c8c606c81811061202157612021615856565b90506020020135096103a08501526080840151600080516020615a46833981519152908c8c606f81811061205757612057615856565b90506020020135089150600080516020615a468339815191528285601d6020020151096103a08501526120ca8b8b605281811061209657612096615856565b905060200201358c8c60448181106120b0576120b0615856565b90506020020135866002605481106111c0576111c0615856565b6103c0850152600080516020615a468339815191528b8b606f8181106120f2576120f2615856565b90506020020135600080516020615a468339815191526121129190615970565b8c8c606d81811061212557612125615856565b90506020020135086103e0850152600080516020615a468339815191528b8b606b81811061215557612155615856565b90506020020135600080516020615a468339815191526121759190615970565b6001089150600080516020615a468339815191528285600e602002015109610400850152600080516020615a468339815191528b8b606b8181106121bb576121bb615856565b905060200201358c8c606b8181106121d5576121d5615856565b90506020020135099150600080516020615a468339815191528b8b606b81811061220157612201615856565b90506020020135600080516020615a468339815191526122219190615970565b83089150600080516020615a468339815191528285601460200201510961042085015260608401516103c0850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c606b81811061228657612286615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a468339815191526122d283600080516020615a46833981519152615970565b6103a0860151089150600080516020615a4683398151915284600f602002015183096103a08501526103e08401516101c0850151600080516020615a468339815191529190096103c0850152600080516020615a468339815191528b8b606e81811061234057612340615856565b90506020020135600080516020615a468339815191526123609190615970565b8c8c606d81811061237357612373615856565b90506020020135089150600080516020615a468339815191528285601f6020020151099150600080516020615a4683398151915284600f602002015183096103e08501526060840151600080516020615a46833981519152908c8c60728181106123df576123df615856565b90506020020135089150600080516020615a46833981519152828c8c607181811061240c5761240c615856565b90506020020135096104408501526080840151600080516020615a46833981519152908c8c607481811061244257612442615856565b90506020020135089150600080516020615a468339815191528285602260200201510961044085015261249b8b8b605281811061248157612481615856565b905060200201358c8c60458181106120b0576120b0615856565b610460850152600080516020615a468339815191528b8b60748181106124c3576124c3615856565b90506020020135600080516020615a468339815191526124e39190615970565b8c8c60728181106124f6576124f6615856565b9050602002013508610480850152600080516020615a468339815191528b8b607081811061252657612526615856565b90506020020135600080516020615a468339815191526125469190615970565b6001089150600080516020615a468339815191528285600e6020020151096104a0850152600080516020615a468339815191528b8b607081811061258c5761258c615856565b905060200201358c8c60708181106125a6576125a6615856565b90506020020135099150600080516020615a468339815191528b8b60708181106125d2576125d2615856565b90506020020135600080516020615a468339815191526125f29190615970565b83089150600080516020615a46833981519152828560146020020151096104c08501526060840151610460850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607081811061265757612657615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a468339815191526126a383600080516020615a46833981519152615970565b610440860151089150600080516020615a4683398151915284600f602002015183096104408501526104808401516101c0850151600080516020615a46833981519152919009610460850152600080516020615a468339815191528b8b607381811061271157612711615856565b90506020020135600080516020615a468339815191526127319190615970565b8c8c607281811061274457612744615856565b90506020020135089150600080516020615a46833981519152828560246020020151099150600080516020615a4683398151915284600f602002015183096104808501526060840151600080516020615a46833981519152908c8c60778181106127b0576127b0615856565b90506020020135089150600080516020615a46833981519152828c8c60768181106127dd576127dd615856565b90506020020135096104e08501526080840151600080516020615a46833981519152908c8c607981811061281357612813615856565b90506020020135089150600080516020615a46833981519152828560276020020151096104e085015261286c8b8b605281811061285257612852615856565b905060200201358c8c60468181106120b0576120b0615856565b610500850152600080516020615a468339815191528b8b607981811061289457612894615856565b90506020020135600080516020615a468339815191526128b49190615970565b8c8c60778181106128c7576128c7615856565b9050602002013508610520850152600080516020615a468339815191528b8b60758181106128f7576128f7615856565b90506020020135600080516020615a468339815191526129179190615970565b6001089150600080516020615a468339815191528285600e602002015109610540850152600080516020615a468339815191528b8b607581811061295d5761295d615856565b905060200201358c8c607581811061297757612977615856565b90506020020135099150600080516020615a468339815191528b8b60758181106129a3576129a3615856565b90506020020135600080516020615a468339815191526129c39190615970565b83089150600080516020615a46833981519152828560146020020151096105608501526060840151610500850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c6075818110612a2857612a28615856565b90506020020135099150600080516020615a46833981519152846019602002015183099150600080516020615a46833981519152612a7483600080516020615a46833981519152615970565b6104e0860151089150600080516020615a4683398151915284600f602002015183096103208501526105208401516101c0850151600080516020615a468339815191529190096104e0850152600080516020615a468339815191528b8b6078818110612ae257612ae2615856565b90506020020135600080516020615a46833981519152612b029190615970565b8c8c6077818110612b1557612b15615856565b90506020020135089150600080516020615a46833981519152828560296020020151099150600080516020615a4683398151915284600f602002015183096105008501526060840151600080516020615a46833981519152908c8c607c818110612b8157612b81615856565b90506020020135089150600080516020615a46833981519152828c8c607b818110612bae57612bae615856565b90506020020135096105208501526080840151600080516020615a46833981519152908c8c607e818110612be457612be4615856565b90506020020135089150600080516020615a4683398151915282856029602002015109610520850152612c3d8b8b6054818110612c2357612c23615856565b905060200201358c8c60438181106120b0576120b0615856565b610580850152600080516020615a468339815191528b8b6055818110612c6557612c65615856565b9050602002013585600260548110612c7f57612c7f615856565b6020020151086105a0850152600080516020615a468339815191528b8b607e818110612cad57612cad615856565b90506020020135600080516020615a46833981519152612ccd9190615970565b8c8c607c818110612ce057612ce0615856565b90506020020135086105c0850152600080516020615a468339815191528b8b607a818110612d1057612d10615856565b90506020020135600080516020615a46833981519152612d309190615970565b6001089150600080516020615a468339815191528285600e6020020151096105e0850152600080516020615a468339815191528b8b607a818110612d7657612d76615856565b905060200201358c8c607a818110612d9057612d90615856565b90506020020135099150600080516020615a468339815191528b8b607a818110612dbc57612dbc615856565b90506020020135600080516020615a46833981519152612ddc9190615970565b83089150600080516020615a46833981519152828560146020020151096106008501526060840151610580850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607a818110612e4157612e41615856565b905060200201350961058085015260808401516105a0850151600080516020615a468339815191529190089150600080516020615a468339815191528285602c6020020151099150600080516020615a46833981519152612eb083600080516020615a46833981519152615970565b610520860151089150600080516020615a4683398151915284600f602002015183096105208501526105c08401516101c0850151600080516020615a46833981519152919009610580850152600080516020615a468339815191528b8b607d818110612f1e57612f1e615856565b90506020020135600080516020615a46833981519152612f3e9190615970565b8c8c607c818110612f5157612f51615856565b90506020020135089150600080516020615a468339815191528285602e6020020151099150600080516020615a4683398151915284600f602002015183096105a08501526060840151600080516020615a46833981519152908c8c6081818110612fbd57612fbd615856565b90506020020135089150600080516020615a46833981519152828c8c6080818110612fea57612fea615856565b90506020020135096105c08501526080840151600080516020615a46833981519152908c8c608381811061302057613020615856565b90506020020135089150600080516020615a468339815191528285602e6020020151096105c085015261305f8b8b6056818110612c2357612c23615856565b610620850152600080516020615a468339815191528b8b605781811061308757613087615856565b90506020020135856002605481106130a1576130a1615856565b602002015108610640850152600080516020615a468339815191528b8b60838181106130cf576130cf615856565b90506020020135600080516020615a468339815191526130ef9190615970565b8c8c608181811061310257613102615856565b9050602002013508610660850152600080516020615a468339815191528b8b607f81811061313257613132615856565b90506020020135600080516020615a468339815191526131529190615970565b6001089150600080516020615a468339815191528285600e602002015109610680850152600080516020615a468339815191528b8b607f81811061319857613198615856565b905060200201358c8c607f8181106131b2576131b2615856565b90506020020135099150600080516020615a468339815191528b8b607f8181106131de576131de615856565b90506020020135600080516020615a468339815191526131fe9190615970565b83089150600080516020615a46833981519152828560146020020151096106a08501526060840151610620850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c607f81811061326357613263615856565b90506020020135096106208501526080840151610640850151600080516020615a468339815191529190089150600080516020615a46833981519152828560316020020151099150600080516020615a468339815191526132d283600080516020615a46833981519152615970565b6105c0860151089150600080516020615a4683398151915284600f602002015183096105c08501526106608401516101c0850151600080516020615a46833981519152919009610620850152600080516020615a468339815191528b8b608281811061334057613340615856565b90506020020135600080516020615a468339815191526133609190615970565b8c8c608181811061337357613373615856565b90506020020135089150600080516020615a46833981519152828560336020020151099150600080516020615a4683398151915284600f602002015183096106408501526060840151600080516020615a46833981519152908c8c60868181106133df576133df615856565b90506020020135089150600080516020615a46833981519152828c8c608581811061340c5761340c615856565b90506020020135096106608501526080840151600080516020615a46833981519152908c8c608881811061344257613442615856565b90506020020135089150600080516020615a46833981519152828560336020020151096106608501526134818b8b6058818110612c2357612c23615856565b6106c0850152600080516020615a468339815191528b8b60598181106134a9576134a9615856565b90506020020135856002605481106134c3576134c3615856565b6020020151086040850152600080516020615a468339815191528b8b60888181106134f0576134f0615856565b90506020020135600080516020615a468339815191526135109190615970565b8c8c608681811061352357613523615856565b90506020020135086106e0850152600080516020615a468339815191528b8b608481811061355357613553615856565b90506020020135600080516020615a468339815191526135739190615970565b6001089150600080516020615a468339815191528285600e602002015109610700850152600080516020615a468339815191528b8b60848181106135b9576135b9615856565b905060200201358c8c60848181106135d3576135d3615856565b90506020020135099150600080516020615a468339815191528b8b60848181106135ff576135ff615856565b90506020020135600080516020615a4683398151915261361f9190615970565b83089150600080516020615a468339815191528285601460200201510961028085015260608401516106c0850151600080516020615a468339815191529190089150600080516020615a46833981519152828c8c608481811061368457613684615856565b9050602002013509606085015260808401516040850151600080516020615a468339815191529190089150600080516020615a46833981519152828560036020020151099150600080516020615a468339815191526136f183600080516020615a46833981519152615970565b610660860151089150600080516020615a4683398151915284600f6020020151830960408501526106e08401516101c0850151600080516020615a468339815191529190096060850152600080516020615a468339815191528b8b608781811061375d5761375d615856565b90506020020135600080516020615a4683398151915261377d9190615970565b8c8c608681811061379057613790615856565b90506020020135089150600080516020615a46833981519152828560376020020151099150600080516020615a4683398151915284600f60200201518309608085015260a08401516137e69060008660106111c0565b915061381b8480600560200201517f35342d2c29302f2827192b2a24232226251f1e1d21201a18171c1b15161312118561511d565b915061383984806005602002015168ff040302143832312e8561511d565b915061384c8285600d60200201516150c0565b6040850152610100840151600080516020615a4683398151915290800960608501819052610100850151600080516020615a46833981519152910960808501526138d68b8b608f8181106138a2576138a2615856565b905060200201358c8c60908181106138bc576138bc615856565b905060200201358660046054811061055c5761055c615856565b90925090506138ef848c8c65ffff088b038d86866151a0565b909250905061393282828d8d608981811061390c5761390c615856565b905060200201358e8e608a81811061392657613926615856565b905060200201356152a8565b6101e08601526101c08501526101608401516080850151600080516020615a4683398151915291900960a085015260e08401516080850151600080516020615a46833981519152919009610160850181905260e0850151600080516020615a4683398151915291096101a0850181905260e0850151600080516020615a468339815191529109610200850181905260e0850151600080516020615a468339815191529109610220850181905260e0850151600080516020615a468339815191529109610240850181905260e0850151600080516020615a468339815191529109610260850152600080516020615a468339815191528b8b6087818110613a3a57613a3a615856565b9050602002013585601360548110613a5457613a54615856565b6020020151099150613a75848c8c6bffff0b6e0d731078117d128286615316565b9150613ab28b8b6069818110613a8d57613a8d615856565b9050602002013585600460548110613aa757613aa7615856565b6020020151846150f0565b6102808501526101408401516060850151600080516020615a46833981519152919009610140850152613b188b8b6063818110613af157613af1615856565b9050602002013585600360548110613b0b57613b0b615856565b60200201518660146111c0565b610280850152610120840151610100850151600080516020615a4683398151915291900961012085015260e0840151610100850151600080516020615a468339815191529190096102a0850152600091505b6008821015613c1957600080516020615a4683398151915284613b8e8460006158fb565b613b999060076158b4565b60548110613ba957613ba9615856565b602002015185613bba8560016158fb565b613bc59060156158b4565b60548110613bd557613bd5615856565b60200201510984613be78460016158fb565b613bf29060166158b4565b60548110613c0257613c02615856565b602002015281613c1181615938565b925050613b6a565b600080516020615a468339815191528b8b6085818110613c3b57613c3b615856565b9050602002013585601d60548110613c5557613c55615856565b6020020151099150613c7e848c8c73ffff0848156216651767186c19711a761b7b1c8086615316565b9150600080516020615a46833981519152828560146020020151086102808501526102a08401516060850151600080516020615a46833981519152919008606085015260e0840151600080516020615a468339815191529080096102a0850181905260e0850151600080516020615a4683398151915291096103c0850152600091505b6032821015613db057600080516020615a4683398151915284613d258460006158fb565b613d309060076158b4565b60548110613d4057613d40615856565b602002015185613d518560016158fb565b613d5c90601e6158b4565b60548110613d6c57613d6c615856565b60200201510984613d7e8460016158fb565b613d8990601f6158b4565b60548110613d9957613d99615856565b602002015281613da881615938565b925050613d01565b600080516020615a468339815191528b8b605a818110613dd257613dd2615856565b9050602002013585605060548110613dec57613dec615856565b602002015109610a208501526101808401516109e0850151600080516020615a46833981519152919009610a408501819052610180850151600080516020615a468339815191529109610a608501819052610180850151600080516020615a4683398151915291096101808501526109e08401516040850151613e7291908660516111c0565b9150613ea1848c8c7f3f50405141524253435444554556465747584859495b4a5c4b5d4c5e4d5f4e6086615316565b9150613ed0848c8c7f2f7a307c317e327f338134833584368637883849394a3a4b3b4c3c4d3d4e3e4f86615316565b9150613eff848c8c7f1f4620472161226423662468256a266b276d286f29702a722b742c752d772e7986615316565b9150613f16848c8c67ffff074315441e4586615316565b9150600080516020615a468339815191528b8b6042818110613f3a57613f3a615856565b9050602002013583089150600080516020615a468339815191528285601460200201510860408501526106c0840151610260850151600080516020615a468339815191529190086102608501526106a08401516103a0850151600080516020615a46833981519152919008610280850152610660840151610240850151600080516020615a46833981519152919008610240850152610640840151610380850151600080516020615a46833981519152919008610380850152610600840151610220850151600080516020615a468339815191529190086102208501526105e0840151610360850151600080516020615a468339815191529190086103608501526105a0840151610200850151600080516020615a46833981519152919008610200850152610580840151610340850151600080516020615a468339815191529190086103408501526105408401516101a0850151600080516020615a468339815191529190086101a0850152610520840151610320850151600080516020615a468339815191529190086103208501526104e0840151610160850151600080516020615a468339815191529190086101608501526104c0840151610300850151600080516020615a468339815191529190086103008501526104808401516080850151600080516020615a4683398151915291900860808501526104608401516102e0850151600080516020615a468339815191529190086102e08501526104408401516102c0850151600080516020615a468339815191529190086102c08501526104208401516060850151600080516020615a468339815191529190086060850152610400840151610100850151600080516020615a4683398151915291900861010085015261420d8b8b608f8181106141d9576141d9615856565b905060200201358c8c60908181106141f3576141f3615856565b905060200201358660056054811061055c5761055c615856565b9092509050614240848c8c7f182c192e1a301b321c341436098b03260a8d040a0b0e0d121016111a121e132286866151a0565b9092509050614267848c8c73ffff4f3a523c533e0c405038068908081628172a86866151a0565b90925090506142b97f0c7334a3b9a24f18780f368cf4e581f3ee206c995efcf2ad1d591075f34800d67f07c9c852e7cdf6ec7b0d7a9c71343fcc823836563a1eafe2964a7db347c644b486604e6105b4565b909250905061430b7f303399d69867569f44829166dbc811aec4050eb4351f07ce94137b2ea62615b77f21affd1d03a9a9e428842d8ef3da673c25888eba270e2de56fc7598de155776f86604d6105b4565b909250905061435d7f0f8286c37689450e1171ff5f25b1fc58521cf3470ae9ea771918ecbee2094d847f1d371d5b9d97c37a0f1b8f3492dda158aa2dad81c52f7f2a512f63e59c705bed86604c6105b4565b90925090506143af7f139f3c97001d2d25928cab388bfe3f941f47bb46ef39095d1b0bc055185fa57f7f24d470b72fd0eecea0f5c65668c33110a005984460d7304582d1fcdd211df76886604b6105b4565b90925090506144017f1f9f5ab677532016ef9475fd5d43659678db3a699ad3d52e85c3f6ef2b3098c17f2cd62bc191e831701421d97bd158995f0f23e8645c14aa050602e958dd503b4786604a6105b4565b90925090506144537f244e8af4f5d8644cfe7df55d0735c26e229afa7c7b92a39020bd02d8c8677b037f15a6dd332a6f0e9a9b643e86173dc6f99f4dc4bc18b215e0ac6a22e941fd99728660496105b4565b90925090506144a57f2bf75d9dd944249cd720ee71585980774cb83905b860feb5af3da42ca043b1157f07b4ff44a8e4250bf3ce16c06e8430b585a7a1e85243febe565a7929db37cc9f8660486105b4565b90925090506144f77f20353da49405dca58c00c961510a2838b2bdeb06a053b8ed5931b8490967135b7f1ba4067d380f1db72eed4990fed1eb78d22addd5044bbea7d480f4e058d2fd088660476105b4565b90925090506145497f25d344a083be7e69cb907b8705b3bab3417d4a23f06d43ca7b287028a88ec5837f2c03f591ec6858cdff27cadaac1a67a1dc9ab7877f898686efe7033e7fd02a168660466105b4565b909250905061459b7f19d9668da068ddb43d2e3d2c31214fefc028b0df0501ff8604575dafda6f1ae77f155edc361fbe4a694d9c6e3124a1c13d3180f39ab1af7521b35b6e2bb653b3da8660456105b4565b90925090506145ed7f2bf75d9dd944249cd720ee71585980774cb83905b860feb5af3da42ca043b1157f07b4ff44a8e4250bf3ce16c06e8430b585a7a1e85243febe565a7929db37cc9f8660446105b4565b909250905061463f7f1936a9539ed59e0f2c4665a13ee2bdf544ee1359b2a47f4f8d3666540d5be89e7f15efeffb7af6c45498a8d4779c0a2ca3a116a96348e8e51392ef924d6ab7dbfd8660436105b4565b90925090506146917f2fd08ae291ca0c95ada3f562b9f9be896737fd57493c4cefa087979abda4d2d67f04a6506069e2d39e944abcc54e70e881ccdd429ed4c1017fbe1099efeb70465f8660426105b4565b90925090506146e37f0141bcf8e5540e9f5aa60645bf265946a71874beb52ddca1a0df8df6bbc0e0fa7f14e8506ee1911816df221897db48964bf861b4abecdb9da24afbcf9b0c4d18b88660416105b4565b90925090506147357f2ea5cb6082a4df4a36091fef8188e8e0f8d4b6e1e37707746707d99f548aef427f1766582f9e1ec20bed2f0d93154ae653f3089c934fca9f7b87192ed78b760c8d8660406105b4565b90925090506147877f136635b335232ad0bb9ec1dd165740fb1f32464fd47c68a84fa6844059faf5217f090e5e51625ce01fec4c2647771bd32f228b8ea580c498822ee58d2a607b892186603f6105b4565b90925090506147d97f143877d82d6f4d6a6e18301f05defdfa526f0d95977cec3c32e231b1aa0a81567f1906928f9c2d199d9062ece64e8dbff97e27ab2d8326b40e7ea77a950b21ddd986603e6105b4565b909250905061482b7f27ebdd749900c0af821c3d7bfee6f6216c2a101d247a8dd93db6590692d1689a7f2da8ee70127f67344aded9134ceff263c69790b3d020786c616f76349b19aef386603d6105b4565b909250905061487d7f148ff3c1217e5849d79a5ad4e55e1f66e553e0c24a335730306b58c35f0be7647f29d393499e332436f2578d1e95f1aa58d1539c3bd0820157a6e9ed12a906301586603c6105b4565b90925090506148cf7f1d0246b7158fd8adee20544a12a9c7037653efa8e5ca0da702f29744a3cc595d7f0d1c5bd48350de3282920c3453c6da531a1fd6fce81bacfd5e5289123458d67586603b6105b4565b90925090506149217f0a690884507cd616b1598e45913a0478135225c4a1ed39eb4d22552feff5f3b07f119e66501b5ff7f5a2d09bce4b7b1fe0e078c6764867222ed23ba35f317f200086603a6105b4565b90925090506149737f18cfb2048fda3eb8a660efd7855014c0500be2531cbcd7e163455fe2b1972ce37f0e835d2d22b6c1e675e76f544bb7aea2e74b04659f91ecf97eccca4024c493268660396105b4565b90925090506149c57f15ae1a8e3b993dd9aadc8f9086d1ea239d4cd5c09cfa445f337e1b60d7b3eb877f2c702ede24f9db8c8c9a439975facd3872a888c5f84f58b3b5f5a5623bac945a8660386105b4565b90925090506149f0848c8c77ffff070015021e041f06250c28102b142e18311c3420372486866151a0565b85516020870151929450909250614a0a91849184916152a8565b60208601528452614a1f60016002868161055c565b85516020870151929450909250614a379184846153b8565b602086018190528186526101c08601516101e090960151959d959c50909a509850929650505050505050565b614a6b61562a565b80517f186282957db913abd99f91db59fe69922e95040603ef44c0bd7aa3adeef8f5ac905280517f17944351223333f260ddc3b4af45191b856689eda9eab5cbcddbbe570ce860d2602091820152810180517f298adc7396bd3865cbf6d6df91bae406694e6d2215baa893bdeadb63052895f49052517f297772d34bc9aa8ae56162486363ffe417b02dc7e8c207fc2cc20203e67a02ad9060015b602002015290565b614b1661562a565b80517f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2905280517f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602091820152810180517f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec9052517f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d906001614b06565b60008083516006614bc691906158fb565b905060008167ffffffffffffffff811115614be357614be36158cc565b604051908082528060200260200182016040528015614c0c578160200160208202803683370190505b509050614c1761568d565b60008551875114614c2757600080fd5b60005b8751811015614e6057878181518110614c4557614c45615856565b60200260200101516000015184826006614c5f91906158fb565b614c6a9060006158b4565b81518110614c7a57614c7a615856565b602002602001018181525050878181518110614c9857614c98615856565b60200260200101516020015184826006614cb291906158fb565b614cbd9060016158b4565b81518110614ccd57614ccd615856565b602002602001018181525050868181518110614ceb57614ceb615856565b6020908102919091010151515184614d048360066158fb565b614d0f9060026158b4565b81518110614d1f57614d1f615856565b602002602001018181525050868181518110614d3d57614d3d615856565b60209081029190910181015151015184614d588360066158fb565b614d639060036158b4565b81518110614d7357614d73615856565b602002602001018181525050868181518110614d9157614d91615856565b602002602001015160200151600060028110614daf57614daf615856565b602002015184614dc08360066158fb565b614dcb9060046158b4565b81518110614ddb57614ddb615856565b602002602001018181525050868181518110614df957614df9615856565b602002602001015160200151600160028110614e1757614e17615856565b602002015184614e288360066158fb565b614e339060056158b4565b81518110614e4357614e43615856565b602090810291909101015280614e5881615938565b915050614c2a565b50602082602086026020860160085afa905080614e7c57600080fd5b5051151595945050505050565b600080614e946156ab565b6000614eb3604051806040016040528060008152602001600081525090565b8783526020830187905260408084018790528160608560075afa915081614ed957600080fd5b8051602090910151909890975095505050505050565b600080614efa6156c9565b87815260208101879052604081018690526060810185905260808101849052614f22816153fd565b6060810151608090910151909890975095505050505050565b60028282614f4881615938565b935060908110614f5a57614f5a615856565b6020020152828282614f6b81615938565b935060908110614f7d57614f7d615856565b6020020152505050565b60018282614f9481615938565b935060908110614fa657614fa6615856565b6020020152838282614fb781615938565b935060908110614fc957614fc9615856565b6020020152828282614fda81615938565b935060908110614fec57614fec615856565b602002015250505050565b600080838363ffffffff166090811061501257615012615856565b60200201818152505060006150448484602061502e9190615987565b6150399060016159b3565b63ffffffff16615438565b5190506150508161546e565b93525090919050565b600061506361560c565b61506b61568d565b6020808352828101819052604083018190526060830186905260808301859052600080516020615a4683398151915260a08401526000908260c08560055afa9050806150b657600080fd5b5051949350505050565b6000816000036150cf57600080fd5b600080516020615a468339815191526150e7836155e2565b84099392505050565b6000600080516020615a4683398151915282600080516020615a4683398151915285870908949350505050565b6000805b60208110156151965760ff80851690811461517d5760089490941c93600080516020615a4683398151915287826054811061515e5761515e615856565b6020020151600080516020615a46833981519152868909089350615183565b50615196565b5061518f6001826158b4565b9050615121565b5090949350505050565b6000806151ab6156c9565b606081018590526080810184905260005b602081101561528d5760ff80881690811461527457601088901c9760081c60ff168a8a838181106151ef576151ef615856565b905060200201358460006005811061520957615209615856565b60200201528a8a61521b8460016158b4565b81811061522a5761522a615856565b905060200201358460016005811061524457615244615856565b60200201528b816054811061525b5761525b615856565b6020020151604085015261526e846153fd565b5061527a565b5061528d565b506152866002826158b4565b90506151bc565b50606081015160809091015190999098509650505050505050565b60008060006152ca604051806040016040528060008152602001600081525090565b6152d26156e7565b888152602081018890526040808201889052606082018790528260808360065afa9250826152ff57600080fd5b508051602090910151909890975095505050505050565b6000805b60208110156153ad5760ff80851690811461539457601085901c9460081c60ff16600080516020615a4683398151915285600080516020615a468339815191528b846054811061536c5761536c615856565b60200201518b8b8781811061538357615383615856565b90506020020135090894505061539a565b506153ad565b506153a66002826158b4565b905061531a565b509095945050505050565b6000806153f08686866153eb877f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47615970565b6152a8565b9150915094509492505050565b600060406020830160608460075afa90508061541857600080fd5b60406060830160806020850160065afa90508061543457600080fd5b5050565b61544061568d565b6000602082848660026107d05a03fa9050808061545957fe5b5080615467576154676159db565b5092915050565b6000816155c18160008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b6040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c179050608081901b608082901c179050919050565b90506155db600080516020615a4683398151915282615a0a565b9392505050565b6000615606826156016002600080516020615a46833981519152615970565b615059565b92915050565b6040518060c001604052806006906020820280368337509192915050565b604051806040016040528061563d615705565b815260200161564a615705565b905290565b60405180610a8001604052806054906020820280368337509192915050565b6040518061120001604052806090906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60008083601f84011261573557600080fd5b50813567ffffffffffffffff81111561574d57600080fd5b6020830191508360208260051b850101111561576857600080fd5b9250929050565b60008060008060006060868803121561578757600080fd5b853567ffffffffffffffff8082111561579f57600080fd5b6157ab89838a01615723565b909750955060208801359150808211156157c457600080fd5b506157d188828901615723565b96999598509660400135949350505050565b600060208083528351808285015260005b81811015615810578581018301518582016040015282016157f4565b81811115615822576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156158c7576158c7615885565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561593357615933615885565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361596957615969615885565b5060010190565b60008282101561598257615982615885565b500390565b600063ffffffff808316818516818304811182151516156159aa576159aa615885565b02949350505050565b600063ffffffff8083168185168083038211156159d2576159d2615885565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082615a40577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300080f000a", + "key": "0x3dbf99296c1be8e244c0325b4861825343f8b995a643099d43c4d0bb066f6089" + }, "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512": { "balance": "0", "nonce": 1, - "root": "0x275195250374e2e4818498e7cca63294f5a21703a2f0882912b9c8ed2dd35b84", + "root": "0x8b38b254a09fd3281cd9834f3fed870d38e9c60b49ba23e08a4df52eb999080c", "codeHash": "0x1f958654ab06a152993e7a0ae7b6dbb0d4b19265cc9337b8789fe1353bd9dc35", "code": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000a", "storage": { @@ -496,36 +538,18 @@ "0x0000000000000000000000000000000000000000000000000000000000000068": "01c9c380", "0x0000000000000000000000000000000000000000000000000000000000000069": "ffffffffffffffffffffffffffffffff000f42403b9aca00080a01312d00", "0x000000000000000000000000000000000000000000000000000000000000006a": "1388", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "851356ae760d987e095750cceb3bc6014560891c", "0x65a7ed542fb37fe237fdfbdd70b31598523fe5b32879e307bae27a0bd9581c08": "9965507d1a55bcc2695c58ba16fb37d819b0a4dc", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "5fbdb2315678afecb367f032d93f642f64180aa3" }, "key": "0x798c6047767c10f653ca157a7f66a592a1d6ca550cae352912be0b0745336afd" }, - "0xec94b0a318596a838eda7175a4753365f9bd6285": { - "balance": "115792089237316195423570985008687907853269984665640564039455583849457825464927", - "nonce": 2, - "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "key": "0x2ff9edba1529d8775b193aaa59d8c46a2bce68c7d50dbb29821caf0c047aa9de" - }, "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266": { - "balance": "841395056579737743", - "nonce": 48, + "balance": "832015502522206374", + "nonce": 51, "root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "key": "0xe9707d0e6171f728f7473c24cc0432a9b07eaaf1efed6a137a4a8c12c79552d9" - }, - "0xf5059a5d33d5853360d16c683c16e67980206f36": { - "balance": "0", - "nonce": 1, - "root": "0x01f9e62d19297f681ea2208de1fec6c67ed86a26e55dbf4b27a1b0881060507b", - "codeHash": "0xf0fad452b83cbe1ab636d54d05583153583b5d43a1e2e417746f46d42fdf89d3", - "code": "0x608060405234801561001057600080fd5b50600436106102925760003560e01c806370a08231116101605780639ab24eb0116100d8578063c4d66de81161008c578063d204c45e11610071578063d204c45e1461056c578063e985e9c51461057f578063f2fde38b146105bb57600080fd5b8063c4d66de814610546578063c87b56dd1461055957600080fd5b8063b45a3c0e116100bd578063b45a3c0e1461050d578063b88d4fde14610520578063c3cda5201461053357600080fd5b80639ab24eb0146104e7578063a22cb465146104fa57600080fd5b806384b0196e1161012f5780638e539e8c116101145780638e539e8c146104ad57806391ddadf4146104c057806395d89b41146104df57600080fd5b806384b0196e146104805780638da5cb5b1461049b57600080fd5b806370a082311461044a578063715018a61461045d5780637ecebe00146104655780638456cb591461047857600080fd5b80633f4ba83a1161020e57806354fd4d50116101c25780635c19a95c116101a75780635c19a95c146104195780635c975abb1461042c5780636352211e1461043757600080fd5b806354fd4d50146103b0578063587cde1e146103ec57600080fd5b806342966c68116101f357806342966c68146103825780634bf5d7e9146103955780634f6ccce71461039d57600080fd5b80633f4ba83a1461036757806342842e0e1461036f57600080fd5b806318160ddd116102655780632f745c591161024a5780632f745c59146103395780633644e5151461034c5780633a46b1a81461035457600080fd5b806318160ddd1461031457806323b872dd1461032657600080fd5b806301ffc9a71461029757806306fdde03146102bf578063081812fc146102d4578063095ea7b3146102ff575b600080fd5b6102aa6102a5366004613dae565b6105ce565b60405190151581526020015b60405180910390f35b6102c761062a565b6040516102b69190613e41565b6102e76102e2366004613e54565b6106bc565b6040516001600160a01b0390911681526020016102b6565b61031261030d366004613e89565b6106e3565b005b6099545b6040519081526020016102b6565b610312610334366004613eb3565b61072f565b610318610347366004613e89565b61077d565b61031861082a565b610318610362366004613e89565b610839565b6103126108e9565b61031261037d366004613eb3565b6108fb565b610312610390366004613e54565b610944565b6102c7610958565b6103186103ab366004613e54565b6109f0565b6102c76040518060400160405280600581526020017f312e302e3100000000000000000000000000000000000000000000000000000081525081565b6102e76103fa366004613eef565b6001600160a01b03908116600090815261019360205260409020541690565b610312610427366004613eef565b610a94565b60fb5460ff166102aa565b6102e7610445366004613e54565b610a9f565b610318610458366004613eef565b610b04565b610312610b9e565b610318610473366004613eef565b610bb0565b610312610bcf565b610488610bdf565b6040516102b69796959493929190613f0a565b61012d546001600160a01b03166102e7565b6103186104bb366004613e54565b610ca3565b6104c8610d3c565b60405165ffffffffffff90911681526020016102b6565b6102c7610d47565b6103186104f5366004613eef565b610d56565b610312610508366004613fbc565b610d78565b6102aa61051b366004613e54565b610dc0565b61031261052e3660046140bb565b610e1a565b610312610541366004614137565b610e6a565b610312610554366004613eef565b610fa0565b6102c7610567366004613e54565b611168565b61031261057a366004614197565b611173565b6102aa61058d3660046141f9565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6103126105c9366004613eef565b6111b6565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb45a3c0e000000000000000000000000000000000000000000000000000000001480610624575061062482611243565b92915050565b6060606580546106399061422c565b80601f01602080910402602001604051908101604052809291908181526020018280546106659061422c565b80156106b25780601f10610687576101008083540402835291602001916106b2565b820191906000526020600020905b81548152906001019060200180831161069557829003601f168201915b5050505050905090565b60006106c782611299565b506000908152606960205260409020546001600160a01b031690565b6101f85460ff1615610721576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072b82826112fd565b5050565b6101f85460ff161561076d576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610778838383611429565b505050565b600061078883610b04565b82106108015760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b60006108346114b0565b905090565b6000610843610d3c565b65ffffffffffff1682106108995760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b757000000000000000000000000060448201526064016107f8565b6108c46108a5836114ba565b6001600160a01b0385166000908152610194602052604090209061153a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b6108f1611604565b6108f961165f565b565b6101f85460ff1615610939576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107788383836116b1565b61094c611604565b610955816116cc565b50565b606043610963610d3c565b65ffffffffffff16146109b85760405162461bcd60e51b815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f6465000000000000000060448201526064016107f8565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b60006109fb60995490565b8210610a6f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016107f8565b60998281548110610a8257610a82614279565b90600052602060002001549050919050565b3361072b81836116d5565b6000818152606760205260408120546001600160a01b0316806106245760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f8565b60006001600160a01b038216610b825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016107f8565b506001600160a01b031660009081526068602052604090205490565b610ba6611604565b6108f96000611760565b6001600160a01b03811660009081526101966020526040812054610624565b610bd7611604565b6108f96117cb565b60006060806000806000606061015f546000801b148015610c01575061016054155b610c4d5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064016107f8565b610c55611808565b610c5d611818565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610cad610d3c565b65ffffffffffff168210610d035760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b757000000000000000000000000060448201526064016107f8565b610d18610d0f836114ba565b6101959061153a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b600061083443611828565b6060606680546106399061422c565b6001600160a01b038116600090815261019460205260408120610d18906118a6565b6101f85460ff1615610db6576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072b82826118f6565b6000818152606760205260408120546001600160a01b0316610e0e576040517fae9a63f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50506101f85460ff1690565b6101f85460ff1615610e58576040517fbd291a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e6484848484611901565b50505050565b83421115610eba5760405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e61747572652065787069726564000000000000000060448201526064016107f8565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610f3490610f2c9060a00160405160208183030381529060405280519060200120611989565b8585856119d1565b9050610f3f816119fb565b8614610f8d5760405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e636500000000000000000000000060448201526064016107f8565b610f9781886116d5565b50505050505050565b600054610100900460ff1615808015610fc05750600054600160ff909116105b80610fda5750303b158015610fda575060005460ff166001145b61104c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107f8565b6000805460ff19166001179055801561108c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6111016040518060400160405280601481526020017f4b726f6d615365637572697479436f756e63696c0000000000000000000000008152506040518060400160405280600381526020017f4b5343000000000000000000000000000000000000000000000000000000000081525084611a24565b801561072b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b606061062482611b1d565b61117b611604565b60006111876101f75490565b90506111986101f780546001019055565b6111a28382611c4a565b6111ac8183611c64565b61077883846116d5565b6111be611604565b6001600160a01b03811661123a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107f8565b61095581611760565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f49064906000000000000000000000000000000000000000000000000000000001480610624575061062482611d37565b6000818152606760205260409020546001600160a01b03166109555760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f8565b600061130882610a9f565b9050806001600160a01b0316836001600160a01b0316036113915760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b336001600160a01b03821614806113ad57506113ad813361058d565b61141f5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107f8565b6107788383611d8d565b6114333382611e13565b6114a55760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107f8565b610778838383611e91565b6000610834612105565b600063ffffffff8211156115365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f322062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b5090565b81546000908181600581111561159757600061155584612179565b61155f90856142d7565b60008881526020902090915081015463ffffffff908116908716101561158757809150611595565b6115928160016142ee565b92505b505b60006115a587878585612261565b905080156115f6576115ca876115bc6001846142d7565b600091825260209091200190565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166115f9565b60005b979650505050505050565b61012d546001600160a01b031633146108f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f8565b6116676122bf565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61077883838360405180602001604052806000815250610e1a565b61095581612311565b6001600160a01b038281166000818152610193602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610778818361175b86612351565b61235c565b61012d80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6117d361251e565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116943390565b606061016180546106399061422c565b606061016280546106399061422c565b600065ffffffffffff8211156115365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f382062697473000000000000000000000000000000000000000000000000000060648201526084016107f8565b805460009080156118ec576118c0836115bc6001846142d7565b5464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166118ef565b60005b9392505050565b61072b338383612571565b61190b3383611e13565b61197d5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016107f8565b610e648484848461263f565b60006106246119966114b0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006119e2878787876126c8565b915091506119ef816127aa565b5090505b949350505050565b6001600160a01b0381166000908152610196602052604090208054600181018255905b50919050565b600054610100900460ff16611aa15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b611aab600161290f565b611ab583836129a0565b611abd612a27565b611ac5612a27565b611acd612aa4565b611b0c836040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612b29565b611b14612a27565b61077881611760565b6060611b2882611299565b600082815260c9602052604081208054611b419061422c565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6d9061422c565b8015611bba5780601f10611b8f57610100808354040283529160200191611bba565b820191906000526020600020905b815481529060010190602001808311611b9d57829003601f168201915b505050505090506000611bfd60408051808201909152601d81527f68747470733a2f2f6e66742e6b726f6d612e6e6574776f726b2f73632f000000602082015290565b90508051600003611c0f575092915050565b815115611c41578082604051602001611c29929190614306565b60405160208183030381529060405292505050919050565b6119f384612bb0565b61072b828260405180602001604052806000815250612c48565b6000828152606760205260409020546001600160a01b0316611cee5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e00000000000000000000000000000000000060648201526084016107f8565b600082815260c960205260409020611d068282614383565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200161115c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610624575061062482612cd1565b600081815260696020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190611dda82610a9f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611e1f83610a9f565b9050806001600160a01b0316846001600160a01b03161480611e6657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806119f35750836001600160a01b0316611e7f846106bc565b6001600160a01b031614949350505050565b826001600160a01b0316611ea482610a9f565b6001600160a01b031614611f205760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f8565b6001600160a01b038216611f9b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f8565b611fa88383836001612db4565b826001600160a01b0316611fbb82610a9f565b6001600160a01b0316146120375760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f8565b600081815260696020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b038781168086526068855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46107788383836001612dc8565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612130612dd4565b612138612e2e565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008160000361218b57506000919050565b6000600161219884612e60565b901c6001901b905060018184816121b1576121b161449d565b048201901c905060018184816121c9576121c961449d565b048201901c905060018184816121e1576121e161449d565b048201901c905060018184816121f9576121f961449d565b048201901c905060018184816122115761221161449d565b048201901c905060018184816122295761222961449d565b048201901c905060018184816122415761224161449d565b048201901c90506118ef8182858161225b5761225b61449d565b04612ef4565b60005b818310156122b75760006122788484612f0a565b60008781526020902090915063ffffffff86169082015463ffffffff1611156122a3578092506122b1565b6122ae8160016142ee565b93505b50612264565b509392505050565b60fb5460ff166108f95760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107f8565b61231a81612f25565b600081815260c96020526040902080546123339061422c565b15905061095557600081815260c96020526040812061095591613d36565b600061062482610b04565b816001600160a01b0316836001600160a01b03161415801561237e5750600081115b15610778576001600160a01b03831615612451576001600160a01b03831660009081526101946020526040812081906123c2906130086123bd86613014565b6130a8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612446929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610778576001600160a01b038216600090815261019460205260408120819061248b906130f16123bd86613014565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161250f929190918252602082015260400190565b60405180910390a25050505050565b60fb5460ff16156108f95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016107f8565b816001600160a01b0316836001600160a01b0316036125d25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107f8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61264a848484611e91565b612656848484846130fd565b610e645760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126ff57506000905060036127a1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612753573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b03811661279a576000600192509250506127a1565b9150600090505b94509492505050565b60008160048111156127be576127be6144cc565b036127c65750565b60018160048111156127da576127da6144cc565b036128275760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107f8565b600281600481111561283b5761283b6144cc565b036128885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107f8565b600381600481111561289c5761289c6144cc565b036109555760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107f8565b600054610100900460ff1661298c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6101f8805460ff1916911515919091179055565b600054610100900460ff16612a1d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b61072b82826132b9565b600054610100900460ff166108f95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b600054610100900460ff16612b215760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6108f961334f565b600054610100900460ff16612ba65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b61072b82826133d8565b6060612bbb82611299565b6000612bf760408051808201909152601d81527f68747470733a2f2f6e66742e6b726f6d612e6e6574776f726b2f73632f000000602082015290565b90506000815111612c1757604051806020016040528060008152506118ef565b80612c2184613481565b604051602001612c32929190614306565b6040516020818303038152906040529392505050565b612c52838361353f565b612c5f60008484846130fd565b6107785760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480612d6457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061062457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610624565b612dbc61251e565b610e64848484846136fa565b610e6484848484613836565b600080612ddf611808565b805190915015612df6578051602090910120919050565b61015f548015612e065792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080612e39611818565b805190915015612e50578051602090910120919050565b610160548015612e065792915050565b600080608083901c15612e7557608092831c92015b604083901c15612e8757604092831c92015b602083901c15612e9957602092831c92015b601083901c15612eab57601092831c92015b600883901c15612ebd57600892831c92015b600483901c15612ecf57600492831c92015b600283901c15612ee157600292831c92015b600183901c156106245760010192915050565b6000818310612f0357816118ef565b5090919050565b6000612f1960028484186144fb565b6118ef908484166142ee565b6000612f3082610a9f565b9050612f40816000846001612db4565b612f4982610a9f565b600083815260696020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b0385168085526068845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461072b816000846001612dc8565b60006118ef8284614536565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156115365760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016107f8565b6000806130e46130c66130b9610d3c565b65ffffffffffff166114ba565b6130dc6130d2886118a6565b868863ffffffff16565b879190613846565b915091505b935093915050565b60006118ef8284614573565b60006001600160a01b0384163b156132b1576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a029061315a9033908990889088906004016145aa565b6020604051808303816000875af19250505080156131b3575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526131b0918101906145e6565b60015b613266573d8080156131e1576040519150601f19603f3d011682016040523d82523d6000602084013e6131e6565b606091505b50805160000361325e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f8565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506119f3565b5060016119f3565b600054610100900460ff166133365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b60656133428382614383565b5060666107788282614383565b600054610100900460ff166133cc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b60fb805460ff19169055565b600054610100900460ff166134555760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f8565b6101616134628382614383565b506101626134708282614383565b5050600061015f8190556101605550565b6060600061348e83613854565b600101905060008167ffffffffffffffff8111156134ae576134ae613ff8565b6040519080825280601f01601f1916602001820160405280156134d8576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846134e257509392505050565b6001600160a01b0382166135955760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f8565b6000818152606760205260409020546001600160a01b0316156135fa5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b613608600083836001612db4565b6000818152606760205260409020546001600160a01b03161561366d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461072b600083836001612dc8565b60018111156137715760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016107f8565b816001600160a01b0385166137cd576137c881609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6137f0565b836001600160a01b0316856001600160a01b0316146137f0576137f08582613936565b6001600160a01b03841661380c57613807816139d3565b61382f565b846001600160a01b0316846001600160a01b03161461382f5761382f8482613a82565b5050505050565b613841848483613ac6565b610e64565b6000806130e4858585613b3f565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061389d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106138c9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106138e757662386f26fc10000830492506010015b6305f5e10083106138ff576305f5e100830492506008015b612710831061391357612710830492506004015b60648310613925576064830492506002015b600a83106106245760010192915050565b6000600161394384610b04565b61394d91906142d7565b6000838152609860205260409020549091508082146139a0576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906139e5906001906142d7565b6000838152609a602052604081205460998054939450909284908110613a0d57613a0d614279565b906000526020600020015490508060998381548110613a2e57613a2e614279565b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613a6657613a66614603565b6001900381819060005260206000200160009055905550505050565b6000613a8d83610b04565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160a01b038316613ae957613ae66101956130f16123bd84613014565b50505b6001600160a01b038216613b0c57613b096101956130086123bd84613014565b50505b6001600160a01b03838116600090815261019360205260408082205485841683529120546107789291821691168361235c565b825460009081908015613cc7576000613b5d876115bc6001856142d7565b60408051808201909152905463ffffffff8082168084526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660208401529192509087161015613bf45760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016107f8565b805163ffffffff808816911603613c525784613c15886115bc6001866142d7565b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff909216919091179055613cb7565b6040805180820190915263ffffffff80881682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b6020015192508391506130e99050565b50506040805180820190915263ffffffff80851682527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851660208085019182528854600181018a5560008a8152918220955192519093166401000000000291909316179201919091559050816130e9565b508054613d429061422c565b6000825580601f10613d52575050565b601f01602090049060005260206000209081019061095591905b808211156115365760008155600101613d6c565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461095557600080fd5b600060208284031215613dc057600080fd5b81356118ef81613d80565b60005b83811015613de6578181015183820152602001613dce565b83811115610e645750506000910152565b60008151808452613e0f816020860160208601613dcb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006118ef6020830184613df7565b600060208284031215613e6657600080fd5b5035919050565b80356001600160a01b0381168114613e8457600080fd5b919050565b60008060408385031215613e9c57600080fd5b613ea583613e6d565b946020939093013593505050565b600080600060608486031215613ec857600080fd5b613ed184613e6d565b9250613edf60208501613e6d565b9150604084013590509250925092565b600060208284031215613f0157600080fd5b6118ef82613e6d565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152613f4660e084018a613df7565b8381036040850152613f58818a613df7565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015613faa57835183529284019291840191600101613f8e565b50909c9b505050505050505050505050565b60008060408385031215613fcf57600080fd5b613fd883613e6d565b915060208301358015158114613fed57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561404257614042613ff8565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561408857614088613ff8565b816040528093508581528686860111156140a157600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156140d157600080fd5b6140da85613e6d565b93506140e860208601613e6d565b925060408501359150606085013567ffffffffffffffff81111561410b57600080fd5b8501601f8101871361411c57600080fd5b61412b87823560208401614027565b91505092959194509250565b60008060008060008060c0878903121561415057600080fd5b61415987613e6d565b95506020870135945060408701359350606087013560ff8116811461417d57600080fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156141aa57600080fd5b6141b383613e6d565b9150602083013567ffffffffffffffff8111156141cf57600080fd5b8301601f810185136141e057600080fd5b6141ef85823560208401614027565b9150509250929050565b6000806040838503121561420c57600080fd5b61421583613e6d565b915061422360208401613e6d565b90509250929050565b600181811c9082168061424057607f821691505b602082108103611a1e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156142e9576142e96142a8565b500390565b60008219821115614301576143016142a8565b500190565b60008351614318818460208801613dcb565b83519083019061432c818360208801613dcb565b01949350505050565b601f82111561077857600081815260208120601f850160051c8101602086101561435c5750805b601f850160051c820191505b8181101561437b57828155600101614368565b505050505050565b815167ffffffffffffffff81111561439d5761439d613ff8565b6143b1816143ab845461422c565b84614335565b602080601f83116001811461440457600084156143ce5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561437b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561445157888601518255948401946001909101908401614432565b508582101561448d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082614531577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381169083168181101561456b5761456b6142a8565b039392505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851680830382111561432c5761432c6142a8565b60006001600160a01b038087168352808616602084015250836040830152608060608301526145dc6080830184613df7565b9695505050505050565b6000602082840312156145f857600080fd5b81516118ef81613d80565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c634300080f000a", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "ff" - }, - "key": "0x4e64a3fa2e772a9bdbceaca76b8ed475afcab9e7be1b46f004a5be4ed3f6db95" } } -} \ No newline at end of file +} diff --git a/kroma-chain-ops/genesis/testdata/deploy.json b/kroma-chain-ops/genesis/testdata/deploy.json index cb2e89e0d..ece452aed 100644 --- a/kroma-chain-ops/genesis/testdata/deploy.json +++ b/kroma-chain-ops/genesis/testdata/deploy.json @@ -1,33 +1,35 @@ { - "Colosseum": "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", - "ColosseumProxy": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "KromaMintableERC20Factory": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", - "KromaMintableERC20FactoryProxy": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "KromaPortal": "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", - "KromaPortalProxy": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "L1CrossDomainMessenger": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", - "L1CrossDomainMessengerProxy": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "L1ERC721Bridge": "0x59b670e9fA9D0A427751Af201D676719a970857b", - "L1ERC721BridgeProxy": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "L1StandardBridge": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", - "L1StandardBridgeProxy": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "L2OutputOracle": "0x09635F643e140090A9A8Dcd712eD6285858ceBef", - "L2OutputOracleProxy": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "Poseidon2": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "ProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "SecurityCouncil": "0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00", - "SecurityCouncilProxy": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "SecurityCouncilToken": "0xf5059a5D33d5853360D16C683c16e67980206f36", - "SecurityCouncilTokenProxy": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "SystemConfig": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", - "SystemConfigProxy": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "TimeLock": "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf", - "TimeLockProxy": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "UpgradeGovernor": "0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf", - "UpgradeGovernorProxy": "0x9A676e781A523b5d0C0e43731313A708CB607508", - "ValidatorPool": "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", - "ValidatorPoolProxy": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "ZKMerkleTrie": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", - "ZKVerifier": "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", - "ZKVerifierProxy": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" + "Colosseum": "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB", + "ColosseumProxy": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "KromaMintableERC20Factory": "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", + "KromaMintableERC20FactoryProxy": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", + "KromaPortal": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", + "KromaPortalProxy": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "L1CrossDomainMessenger": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "L1CrossDomainMessengerProxy": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "L1ERC721Bridge": "0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1", + "L1ERC721BridgeProxy": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", + "L1GovernanceToken": "0x4c5859f0F772848b2D91F1D83E2Fe57935348029", + "L1GovernanceTokenProxy": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "L1StandardBridge": "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", + "L1StandardBridgeProxy": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "L2OutputOracle": "0xc5a5C42992dECbae36851359345FE25997F5C42d", + "L2OutputOracleProxy": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "Poseidon2": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", + "ProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "SecurityCouncil": "0x36C02dA8a0983159322a80FFE9F24b1acfF8B570", + "SecurityCouncilProxy": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "SecurityCouncilToken": "0x95401dc811bb5740090279Ba06cfA8fcF6113778", + "SecurityCouncilTokenProxy": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "SystemConfig": "0x851356ae760d987E095750cCeb3bC6014560891C", + "SystemConfigProxy": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "TimeLock": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", + "TimeLockProxy": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "UpgradeGovernor": "0x9d4454B023096f34B160D6B654540c56A1F81688", + "UpgradeGovernorProxy": "0x9A676e781A523b5d0C0e43731313A708CB607508", + "ValidatorPool": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F", + "ValidatorPoolProxy": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "ZKMerkleTrie": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "ZKVerifier": "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", + "ZKVerifierProxy": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" } diff --git a/kroma-chain-ops/genesis/testdata/l1-deployments.json b/kroma-chain-ops/genesis/testdata/l1-deployments.json index cb2e89e0d..ece452aed 100644 --- a/kroma-chain-ops/genesis/testdata/l1-deployments.json +++ b/kroma-chain-ops/genesis/testdata/l1-deployments.json @@ -1,33 +1,35 @@ { - "Colosseum": "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", - "ColosseumProxy": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "KromaMintableERC20Factory": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", - "KromaMintableERC20FactoryProxy": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "KromaPortal": "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", - "KromaPortalProxy": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "L1CrossDomainMessenger": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", - "L1CrossDomainMessengerProxy": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "L1ERC721Bridge": "0x59b670e9fA9D0A427751Af201D676719a970857b", - "L1ERC721BridgeProxy": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "L1StandardBridge": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", - "L1StandardBridgeProxy": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "L2OutputOracle": "0x09635F643e140090A9A8Dcd712eD6285858ceBef", - "L2OutputOracleProxy": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "Poseidon2": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "ProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "SecurityCouncil": "0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00", - "SecurityCouncilProxy": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "SecurityCouncilToken": "0xf5059a5D33d5853360D16C683c16e67980206f36", - "SecurityCouncilTokenProxy": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "SystemConfig": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", - "SystemConfigProxy": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "TimeLock": "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf", - "TimeLockProxy": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "UpgradeGovernor": "0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf", - "UpgradeGovernorProxy": "0x9A676e781A523b5d0C0e43731313A708CB607508", - "ValidatorPool": "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", - "ValidatorPoolProxy": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "ZKMerkleTrie": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", - "ZKVerifier": "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", - "ZKVerifierProxy": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" + "Colosseum": "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB", + "ColosseumProxy": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "KromaMintableERC20Factory": "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", + "KromaMintableERC20FactoryProxy": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", + "KromaPortal": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", + "KromaPortalProxy": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "L1CrossDomainMessenger": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "L1CrossDomainMessengerProxy": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "L1ERC721Bridge": "0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1", + "L1ERC721BridgeProxy": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", + "L1GovernanceToken": "0x4c5859f0F772848b2D91F1D83E2Fe57935348029", + "L1GovernanceTokenProxy": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "L1StandardBridge": "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", + "L1StandardBridgeProxy": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "L2OutputOracle": "0xc5a5C42992dECbae36851359345FE25997F5C42d", + "L2OutputOracleProxy": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "Poseidon2": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", + "ProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "SecurityCouncil": "0x36C02dA8a0983159322a80FFE9F24b1acfF8B570", + "SecurityCouncilProxy": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "SecurityCouncilToken": "0x95401dc811bb5740090279Ba06cfA8fcF6113778", + "SecurityCouncilTokenProxy": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "SystemConfig": "0x851356ae760d987E095750cCeb3bC6014560891C", + "SystemConfigProxy": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "TimeLock": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", + "TimeLockProxy": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "UpgradeGovernor": "0x9d4454B023096f34B160D6B654540c56A1F81688", + "UpgradeGovernorProxy": "0x9A676e781A523b5d0C0e43731313A708CB607508", + "ValidatorPool": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F", + "ValidatorPoolProxy": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "ZKMerkleTrie": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "ZKVerifier": "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", + "ZKVerifierProxy": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" } diff --git a/kroma-chain-ops/genesis/testdata/test-deploy-config-devnet-l1.json b/kroma-chain-ops/genesis/testdata/test-deploy-config-devnet-l1.json index 2d1378371..d0644dacd 100644 --- a/kroma-chain-ops/genesis/testdata/test-deploy-config-devnet-l1.json +++ b/kroma-chain-ops/genesis/testdata/test-deploy-config-devnet-l1.json @@ -53,5 +53,19 @@ "colosseumSegmentsLengths": "2,2,3,3", "zkVerifierHashScalar": "0x1545b1bf82c58ee35648bd877da9c5010193e82b036b16bf382acf31bc2ab576", "zkVerifierM56Px": "0x15ae1a8e3b993dd9aadc8f9086d1ea239d4cd5c09cfa445f337e1b60d7b3eb87", - "zkVerifierM56Py": "0x2c702ede24f9db8c8c9a439975facd3872a888c5f84f58b3b5f5a5623bac945a" + "zkVerifierM56Py": "0x2c702ede24f9db8c8c9a439975facd3872a888c5f84f58b3b5f5a5623bac945a", + "mintManagerMintActivatedBlock": "0x0", + "mintManagerInitMintPerBlock": "0xde0b6b3a7640000", + "mintManagerSlidingWindowBlocks": 3888000, + "mintManagerDecayingFactor": 92224, + "mintManagerRecipients": [ + "0x4200000000000000000000000000000000000006", + "0x4200000000000000000000000000000000000007", + "0x4200000000000000000000000000000000000008" + ], + "mintManagerShares": [ + 20000, + 30000, + 50000 + ] } diff --git a/kroma-chain-ops/genesis/testdata/test-deploy-config-full.json b/kroma-chain-ops/genesis/testdata/test-deploy-config-full.json index 6cae44dce..530c773de 100644 --- a/kroma-chain-ops/genesis/testdata/test-deploy-config-full.json +++ b/kroma-chain-ops/genesis/testdata/test-deploy-config-full.json @@ -82,7 +82,22 @@ "colosseumSegmentsLengths": "2,2,3,3", "zkVerifierHashScalar": "0x1545b1bf82c58ee35648bd877da9c5010193e82b036b16bf382acf31bc2ab576", "zkVerifierM56Px": "0x15ae1a8e3b993dd9aadc8f9086d1ea239d4cd5c09cfa445f337e1b60d7b3eb87", - "zkVerifierM56Py": "0x2c702ede24f9db8c8c9a439975facd3872a888c5f84f58b3b5f5a5623bac945a" + "zkVerifierM56Py": "0x2c702ede24f9db8c8c9a439975facd3872a888c5f84f58b3b5f5a5623bac945a", + "l1GovernanceTokenProxy": "0x4200000000000000000000000000000000000064", + "mintManagerMintActivatedBlock": "0x0", + "mintManagerInitMintPerBlock": "0xde0b6b3a7640000", + "mintManagerSlidingWindowBlocks": 3888000, + "mintManagerDecayingFactor": 92224, + "mintManagerRecipients": [ + "0x4200000000000000000000000000000000000006", + "0x4200000000000000000000000000000000000007", + "0x4200000000000000000000000000000000000008" + ], + "mintManagerShares": [ + 20000, + 30000, + 50000 + ] } diff --git a/kroma-chain-ops/immutables/immutables.go b/kroma-chain-ops/immutables/immutables.go index aec4bc510..9faf00942 100644 --- a/kroma-chain-ops/immutables/immutables.go +++ b/kroma-chain-ops/immutables/immutables.go @@ -49,7 +49,13 @@ type PredeploysImmutableConfig struct { L1BlockNumber struct{} GasPriceOracle struct{} L1Block struct{} - GovernanceToken struct{} + GovernanceToken struct { + // [Kroma: START] + Bridge common.Address + RemoteToken common.Address + MintManager common.Address + // [Kroma: END] + } /* [Kroma: START] LegacyMessagePasser struct{} [Kroma: END] */ @@ -93,6 +99,12 @@ type PredeploysImmutableConfig struct { ValidatorPoolAddress common.Address RewardDivider *big.Int } + MintManager struct { + MintActivatedBlock *big.Int + InitMintPerBlock *big.Int + SlidingWindowBlocks *big.Int + DecayingFactor *big.Int + } // [Kroma: END] } @@ -290,6 +302,40 @@ func l2ImmutableDeployer(backend *backends.SimulatedBackend, opts *bind.Transact case "EAS": _, tx, _, err = bindings.DeployEAS(opts, backend) [Kroma: END] */ + // [Kroma: START] + case "GovernanceToken": + bridge, ok := deployment.Args[0].(common.Address) + if !ok { + return nil, fmt.Errorf("invalid type for bridge") + } + remoteToken, ok := deployment.Args[1].(common.Address) + if !ok { + return nil, fmt.Errorf("invalid type for remoteToken") + } + mintManager, ok := deployment.Args[2].(common.Address) + if !ok { + return nil, fmt.Errorf("invalid type for mintManager") + } + _, tx, _, err = bindings.DeployGovernanceToken(opts, backend, bridge, remoteToken, mintManager) + case "MintManager": + mintActivatedBlock, ok := deployment.Args[0].(*big.Int) + if !ok { + return nil, fmt.Errorf("invalid type for mintActivatedBlock") + } + initMintPerBlock, ok := deployment.Args[1].(*big.Int) + if !ok { + return nil, fmt.Errorf("invalid type for initMintPerBlock") + } + slidingWindowBlocks, ok := deployment.Args[2].(*big.Int) + if !ok { + return nil, fmt.Errorf("invalid type for slidingWindowBlocks") + } + decayingFactor, ok := deployment.Args[3].(*big.Int) + if !ok { + return nil, fmt.Errorf("invalid type for decayingFactor") + } + _, tx, _, err = bindings.DeployMintManager(opts, backend, mintActivatedBlock, initMintPerBlock, slidingWindowBlocks, decayingFactor) + // [Kroma: END] default: return tx, fmt.Errorf("unknown contract: %s", deployment.Name) } diff --git a/kroma-chain-ops/immutables/immutables_test.go b/kroma-chain-ops/immutables/immutables_test.go index 3b12193a8..6cef68635 100644 --- a/kroma-chain-ops/immutables/immutables_test.go +++ b/kroma-chain-ops/immutables/immutables_test.go @@ -37,10 +37,18 @@ func TestBuildKroma(t *testing.T) { // MinWithdrawalAmount: big.NewInt(100), // WithdrawalNetwork: 0, // }, - L1BlockNumber: struct{}{}, - GasPriceOracle: struct{}{}, - L1Block: struct{}{}, - GovernanceToken: struct{}{}, + L1BlockNumber: struct{}{}, + GasPriceOracle: struct{}{}, + L1Block: struct{}{}, + GovernanceToken: struct { + Bridge common.Address + RemoteToken common.Address + MintManager common.Address + }{ + Bridge: predeploys.L2StandardBridgeAddr, + RemoteToken: common.HexToAddress("0x1234567890123456789012345678901234567890"), + MintManager: predeploys.MintManagerAddr, + }, // LegacyMessagePasser: struct{}{}, L2ERC721Bridge: struct { OtherBridge common.Address @@ -104,6 +112,17 @@ func TestBuildKroma(t *testing.T) { ValidatorPoolAddress: common.HexToAddress("0x1234567890123456789012345678901234567890"), RewardDivider: new(big.Int).SetUint64(24 * 7), }, + MintManager: struct { + MintActivatedBlock *big.Int + InitMintPerBlock *big.Int + SlidingWindowBlocks *big.Int + DecayingFactor *big.Int + }{ + MintActivatedBlock: big.NewInt(0), + InitMintPerBlock: big.NewInt(1e18), + SlidingWindowBlocks: new(big.Int).SetUint64(3888000), + DecayingFactor: new(big.Int).SetUint64(92224), + }, // [Kroma: END] } diff --git a/op-chain-ops/state/encoding.go b/op-chain-ops/state/encoding.go index 041599bf4..0ee66216c 100644 --- a/op-chain-ops/state/encoding.go +++ b/op-chain-ops/state/encoding.go @@ -69,6 +69,27 @@ func EncodeStorageKeyValue(value any, entry solc.StorageLayoutEntry, storageType } } case "dynamic_array": + switch label { + case "address[]": + values := value.([]common.Address) + val, err := EncodeUintValue(len(values), 0) + if err != nil { + return nil, err + } + encoded = append(encoded, &EncodedStorage{key, val}) + + for i, addr := range value.([]common.Address) { + hash := new(big.Int).SetBytes(crypto.Keccak256(key[:])) + hash.Add(hash, new(big.Int).SetUint64(uint64(i))) + key := common.BytesToHash(hash.Bytes()) + + val, err := EncodeAddressValue(addr, entry.Offset) + if err != nil { + return nil, fmt.Errorf("cannot encode %s: %w", storageType.Encoding, errUnimplemented) + } + encoded = append(encoded, &EncodedStorage{key, val}) + } + } case "bytes": switch label { case "string": diff --git a/op-conductor/flags/flags_test.go b/op-conductor/flags/flags_test.go index 1eb5bf423..812d9afb6 100644 --- a/op-conductor/flags/flags_test.go +++ b/op-conductor/flags/flags_test.go @@ -81,7 +81,7 @@ func TestEnvVarFormat(t *testing.T) { envFlags := envFlagGetter.GetEnvVars() require.True(t, ok, "must be able to cast the flag to an EnvVar interface") require.Equal(t, 1, len(envFlags), "flags should have exactly one env var") - expectedEnvVar := opservice.FlagNameToEnvVarName(flagName, "CONDUCTOR") + expectedEnvVar := opservice.FlagNameToEnvVarName(flagName, "OP_CONDUCTOR") require.Equal(t, expectedEnvVar, envFlags[0]) }) } diff --git a/op-e2e/actions/mint_token_test.go b/op-e2e/actions/mint_token_test.go new file mode 100644 index 000000000..10ce9a90c --- /dev/null +++ b/op-e2e/actions/mint_token_test.go @@ -0,0 +1,315 @@ +package actions + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/ethereum/go-ethereum/log" + "github.com/stretchr/testify/require" + + "github.com/ethereum-optimism/optimism/op-e2e/e2eutils" + "github.com/ethereum-optimism/optimism/op-node/rollup/derive" + "github.com/ethereum-optimism/optimism/op-node/rollup/sync" + "github.com/ethereum-optimism/optimism/op-service/testlog" + "github.com/kroma-network/kroma/kroma-bindings/bindings" + "github.com/kroma-network/kroma/kroma-bindings/predeploys" +) + +var floorUnit = big.NewInt(1e18 / 1e8) + +func TestMintToken(t *testing.T) { + tests := []struct { + name string + f func(gt *testing.T) + }{ + {"BeforeActivation", BeforeActivation}, + {"ActivatedAtGenesis", ActivatedAtGenesis}, + {"ActivatedAfterGenesis", ActivatedAfterGenesis}, + {"UntilExhausted", UntilExhausted}, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.f(t) + }) + } +} + +func setupTestEnv(t StatefulTesting, dp *e2eutils.DeployParams) (*L1Miner, *L2Sequencer, *L2Verifier, *ethclient.Client, *L2Batcher) { + sd := e2eutils.Setup(t, dp, defaultAlloc) + log := testlog.Logger(t, log.LvlDebug) + + miner, seqEngine, seq := setupSequencerTest(t, sd, log) + verifEngine, verifier := setupVerifier(t, sd, log, miner.L1Client(t, sd.RollupCfg), miner.BlobStore(), &sync.Config{}) + rollupSeqCl := seq.RollupClient() + verifCl := verifEngine.EthClient() + + batcher := NewL2Batcher(log, sd.RollupCfg, DefaultBatcherCfg(dp), rollupSeqCl, miner.EthClient(), seqEngine.EthClient(), seqEngine.EngineClient(t, sd.RollupCfg)) + + seq.ActL2PipelineFull(t) + verifier.ActL2PipelineFull(t) + + return miner, seq, verifier, verifCl, batcher +} + +func BeforeActivation(gt *testing.T) { + t := NewDefaultTesting(gt) + + dp := e2eutils.MakeDeployParams(t, defaultRollupTestParams) + dp.DeployConfig.MintManagerMintActivatedBlock = nil + + miner, seq, verifier, verifCl, batcher := setupTestEnv(t, dp) + + miner.ActEmptyBlock(t) + seq.ActL1HeadSignal(t) + seq.ActBuildToL1Head(t) + batcher.ActSubmitAll(t) + + miner.ActL1StartBlock(12)(t) + miner.ActL1IncludeTx(dp.Addresses.Batcher)(t) + miner.ActL1EndBlock(t) + + verifier.ActL2PipelineFull(t) + + infoTx, err := verifCl.TransactionInBlock(t.Ctx(), verifier.L2Safe().Hash, 0) + require.NoError(t, err) + receipt, err := verifCl.TransactionReceipt(t.Ctx(), infoTx.Hash()) + require.NoError(t, err) + mintEvents, err := parseMintEvents(receipt, verifCl) + require.NoError(t, err) + require.Zero(t, len(mintEvents), "mint event exists before activation") +} + +func ActivatedAtGenesis(gt *testing.T) { + t := NewDefaultTesting(gt) + + dp := e2eutils.MakeDeployParams(t, defaultRollupTestParams) + dp.DeployConfig.MintManagerMintActivatedBlock = (*hexutil.Big)(new(big.Int).SetUint64(0)) + + miner, seq, verifier, verifCl, batcher := setupTestEnv(t, dp) + + miner.ActEmptyBlock(t) + seq.ActL1HeadSignal(t) + seq.ActBuildToL1Head(t) + batcher.ActSubmitAll(t) + miner.ActL1StartBlock(12)(t) + miner.ActL1IncludeTx(dp.Addresses.Batcher)(t) + miner.ActL1EndBlock(t) + verifier.ActL2PipelineFull(t) + + infoTx, err := verifCl.TransactionInBlock(t.Ctx(), verifier.L2Safe().Hash, 0) + require.NoError(t, err) + receipt, err := verifCl.TransactionReceipt(t.Ctx(), infoTx.Hash()) + require.NoError(t, err) + mintEvents, err := parseMintEvents(receipt, verifCl) + require.NoError(t, err) + require.Equal(t, len(mintEvents), len(dp.DeployConfig.MintManagerRecipients)) + + epoch, _ := epochAndOffset(dp, receipt.BlockNumber) + mintAmount := mintAmountPerBlock(dp, epoch) + validateMint(t, dp, mintEvents, mintAmount) +} + +func ActivatedAfterGenesis(gt *testing.T) { + t := NewDefaultTesting(gt) + + dp := e2eutils.MakeDeployParams(t, defaultRollupTestParams) + offset := uint64(24) + dp.DeployConfig.MintManagerMintActivatedBlock = (*hexutil.Big)(new(big.Int).SetUint64(offset)) + + miner, seq, verifier, verifCl, batcher := setupTestEnv(t, dp) + + // Build the L1 chain to reach the activation block. + miner.ActEmptyBlock(t) + for i := 0; i < 2; i++ { + seq.ActL1HeadSignal(t) + seq.ActBuildToL1Head(t) + batcher.ActSubmitAll(t) + miner.ActL1StartBlock(12)(t) + miner.ActL1IncludeTx(dp.Addresses.Batcher)(t) + miner.ActL1EndBlock(t) + } + verifier.ActL2PipelineFull(t) + + infoTx, err := verifCl.TransactionInBlock(t.Ctx(), verifier.L2Safe().Hash, 0) + require.NoError(t, err) + receipt, err := verifCl.TransactionReceipt(t.Ctx(), infoTx.Hash()) + require.NoError(t, err) + mintEvents, err := parseMintEvents(receipt, verifCl) + require.NoError(t, err) + require.Equal(t, len(mintEvents), len(dp.DeployConfig.MintManagerRecipients)) + + // Check the initial issuance was minted correctly. + epoch, offset := epochAndOffset(dp, receipt.BlockNumber) + mintPerBlock := new(big.Int).Set(dp.DeployConfig.MintManagerInitMintPerBlock.ToInt()) + mintAmount := new(big.Int).Set(common.Big0) + for i := uint64(1); i < epoch; i++ { + mintPerBlock = mintAmountPerBlock(dp, epoch) + blocks := new(big.Int).SetUint64(dp.DeployConfig.MintManagerSlidingWindowBlocks) + mintAmount.Add(mintAmount, new(big.Int).Mul(mintPerBlock, blocks)) + } + if offset > 0 { + blocks := new(big.Int).SetUint64(offset) + mintAmount.Add(mintAmount, new(big.Int).Mul(mintPerBlock, blocks)) + } + validateMint(t, dp, mintEvents, mintAmount) + + // Build the L1 chain to verify that tokens are minted correctly after the initial issuance and with each block. + miner.ActEmptyBlock(t) + seq.ActL1HeadSignal(t) + seq.ActBuildToL1Head(t) + batcher.ActSubmitAll(t) + miner.ActL1StartBlock(12)(t) + miner.ActL1IncludeTx(dp.Addresses.Batcher)(t) + miner.ActL1EndBlock(t) + verifier.ActL2PipelineFull(t) + + infoTx, err = verifCl.TransactionInBlock(t.Ctx(), verifier.L2Safe().Hash, 0) + require.NoError(t, err) + receipt, err = verifCl.TransactionReceipt(t.Ctx(), infoTx.Hash()) + require.NoError(t, err) + mintEvents, err = parseMintEvents(receipt, verifCl) + require.NoError(t, err) + require.Equal(t, len(mintEvents), len(dp.DeployConfig.MintManagerRecipients)) + + epoch, _ = epochAndOffset(dp, receipt.BlockNumber) + mintAmount = mintAmountPerBlock(dp, epoch) + validateMint(t, dp, mintEvents, mintAmount) +} + +func UntilExhausted(gt *testing.T) { + t := NewDefaultTesting(gt) + + recipients := make([]common.Address, 20) + shares := make([]uint64, len(recipients)) + for i := range recipients { + recipients[i] = common.Address{0: 0xff, 19: byte(i + 1)} + shares[i] = uint64(100000 / len(recipients)) + } + + dp := e2eutils.MakeDeployParams(t, defaultRollupTestParams) + dp.DeployConfig.MintManagerMintActivatedBlock = (*hexutil.Big)(new(big.Int).SetUint64(0)) + dp.DeployConfig.MintManagerSlidingWindowBlocks = 1 + dp.DeployConfig.MintManagerDecayingFactor = 90000 + dp.DeployConfig.MintManagerRecipients = recipients + dp.DeployConfig.MintManagerShares = shares + + miner, seq, verifier, verifCl, batcher := setupTestEnv(t, dp) + + mintManager, err := bindings.NewMintManagerCaller(predeploys.MintManagerAddr, verifCl) + require.NoError(t, err) + + exhaustedAt := uint64(1) + for { + epoch, _ := epochAndOffset(dp, new(big.Int).SetUint64(exhaustedAt)) + mintAmount := mintAmountPerBlock(dp, epoch) + if mintAmount.Uint64() == 0 { + exhaustedAt-- + break + } + exhaustedAt++ + require.Less(gt, exhaustedAt, uint64(500), "exhausting block number is too large to test") + } + + l1BlockNumber := exhaustedAt * dp.DeployConfig.L2BlockTime / dp.DeployConfig.L1BlockTime + for i := uint64(1); i < l1BlockNumber; i++ { + miner.ActEmptyBlock(t) + seq.ActL1HeadSignal(t) + seq.ActBuildToL1Head(t) + batcher.ActSubmitAll(t) + miner.ActL1StartBlock(12)(t) + miner.ActL1IncludeTx(dp.Addresses.Batcher)(t) + miner.ActL1EndBlock(t) + } + + seq.ActL2PipelineFull(t) + verifier.ActL2PipelineFull(t) + + // Ensure that the amount of tokens minted decreases over time, + // and verify that SystemTxGas is not exceeded as gas consumption increases as the epoch increases. + var prevMintAmount *big.Int + for i := uint64(1); i < exhaustedAt; i++ { + mintAmount, err := mintManager.MintAmountPerBlock(&bind.CallOpts{}, new(big.Int).SetUint64(i)) + require.NoError(t, err) + if i > 1 { + require.Equal(t, mintAmount.Cmp(prevMintAmount), -1) + } + prevMintAmount = mintAmount + + infoTx, err := verifCl.TransactionInBlock(t.Ctx(), seq.L2Unsafe().Hash, 0) + require.NoError(t, err) + receipt, err := verifCl.TransactionReceipt(t.Ctx(), infoTx.Hash()) + require.NoError(t, err) + require.Equal(t, receipt.Status, types.ReceiptStatusSuccessful) + require.Less(t, receipt.GasUsed, uint64(derive.RegolithSystemTxGas)) + mintEvents, err := parseMintEvents(receipt, verifCl) + require.NoError(t, err) + validateMint(t, dp, mintEvents, mintAmount) + } + + // Ensure that the token is exhausted. + infoTx, err := verifCl.TransactionInBlock(t.Ctx(), seq.L2Unsafe().Hash, 0) + require.NoError(t, err) + receipt, err := verifCl.TransactionReceipt(t.Ctx(), infoTx.Hash()) + require.NoError(t, err) + require.Equal(t, receipt.Status, types.ReceiptStatusSuccessful) + require.Less(t, receipt.GasUsed, uint64(derive.RegolithSystemTxGas)) + mintEvents, err := parseMintEvents(receipt, verifCl) + require.NoError(t, err) + require.Zero(t, len(mintEvents)) +} + +func parseMintEvents(receipt *types.Receipt, backend bind.ContractBackend) ([]*bindings.GovernanceTokenTransfer, error) { + governanceToken, err := bindings.NewGovernanceToken(predeploys.GovernanceTokenAddr, backend) + if err != nil { + return nil, err + } + + evts := make([]*bindings.GovernanceTokenTransfer, 0) + for _, l := range receipt.Logs { + evt, err := governanceToken.ParseTransfer(*l) + if err != nil || evt.From.Cmp(common.Address{}) != 0 { + continue + } + evts = append(evts, evt) + } + + return evts, nil +} + +func validateMint(t StatefulTesting, dp *e2eutils.DeployParams, events []*bindings.GovernanceTokenTransfer, amount *big.Int) { + for i, evt := range events { + expectedTo := dp.DeployConfig.MintManagerRecipients[i] + require.Equal(t, expectedTo, evt.To) + shares := new(big.Int).SetUint64(dp.DeployConfig.MintManagerShares[i]) + expectedValue := new(big.Int) + expectedValue.Mul(shares, amount) + expectedValue.Div(expectedValue, big.NewInt(1e5)) + require.Equal(t, expectedValue, evt.Value) + } +} + +func epochAndOffset(dp *e2eutils.DeployParams, blockNumber *big.Int) (uint64, uint64) { + epoch := (blockNumber.Uint64()-1)/dp.DeployConfig.MintManagerSlidingWindowBlocks + 1 + offset := (blockNumber.Uint64()-1)%dp.DeployConfig.MintManagerSlidingWindowBlocks + 1 + + return epoch, offset +} + +func mintAmountPerBlock(dp *e2eutils.DeployParams, epoch uint64) *big.Int { + decayingFactor := new(big.Int).SetUint64(dp.DeployConfig.MintManagerDecayingFactor) + decayingDenom := new(big.Int).SetUint64(1e5) + + amount := new(big.Int).Set(dp.DeployConfig.MintManagerInitMintPerBlock.ToInt()) + for i := uint64(1); i < epoch; i++ { + amount.Mul(amount, decayingFactor).Div(amount, decayingDenom) + amount.Div(amount, floorUnit).Mul(amount, floorUnit) + } + + return amount +} diff --git a/op-e2e/bridge_test.go b/op-e2e/bridge_test.go index ca8794377..6904eadda 100644 --- a/op-e2e/bridge_test.go +++ b/op-e2e/bridge_test.go @@ -5,8 +5,11 @@ import ( "math" "math/big" "testing" + "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" @@ -19,6 +22,7 @@ import ( "github.com/ethereum-optimism/optimism/op-service/testlog" "github.com/kroma-network/kroma/kroma-bindings/bindings" "github.com/kroma-network/kroma/kroma-bindings/predeploys" + "github.com/kroma-network/kroma/op-e2e/e2eutils/geth" ) // TestERC20BridgeDeposits tests the the L1StandardBridge bridge ERC20 @@ -110,3 +114,150 @@ func TestERC20BridgeDeposits(t *testing.T) { require.NoError(t, err) require.Equal(t, l2Balance, big.NewInt(100)) } + +// TestBridgeGovernanceToken tests the L1StandardBridge bridge GovernanceToken +// functionality. +func TestBridgeGovernanceToken(t *testing.T) { + InitParallel(t) + + cfg := DefaultSystemConfig(t) + cfg.DeployConfig.MintManagerMintActivatedBlock = (*hexutil.Big)(new(big.Int).SetUint64(0)) + cfg.DeployConfig.MintManagerRecipients = []common.Address{cfg.Secrets.Addresses().Alice} + cfg.DeployConfig.MintManagerShares = []uint64{100000} + + sys, err := cfg.Start(t) + require.Nil(t, err, "Error starting up system") + defer sys.Close() + + log := testlog.Logger(t, log.LvlInfo) + log.Info("genesis", "l2", sys.RollupConfig.Genesis.L2, "l1", sys.RollupConfig.Genesis.L1, "l2_time", sys.RollupConfig.Genesis.L2Time) + + l1Client := sys.Clients["l1"] + l2Client := sys.Clients["sequencer"] + + l1TokenAddr := sys.Cfg.L1Deployments.L1GovernanceTokenProxy + l1BridgeAddr := cfg.L1Deployments.L1StandardBridgeProxy + l2TokenAddr := predeploys.GovernanceTokenAddr + l2BridgeAddr := predeploys.L2StandardBridgeAddr + + l1Opts, err := bind.NewKeyedTransactorWithChainID(sys.Cfg.Secrets.Bob, cfg.L1ChainIDBig()) + require.Nil(t, err) + l2Opts, err := bind.NewKeyedTransactorWithChainID(sys.Cfg.Secrets.Bob, cfg.L2ChainIDBig()) + require.Nil(t, err) + + // Init bridge contracts + l1Bridge, err := bindings.NewL1StandardBridge(l1BridgeAddr, l1Client) + require.NoError(t, err) + l2Bridge, err := bindings.NewL2StandardBridge(l2BridgeAddr, l2Client) + require.NoError(t, err) + + l1Token, err := bindings.NewGovernanceToken(l1TokenAddr, l1Client) + require.NoError(t, err) + l2Token, err := bindings.NewGovernanceToken(l2TokenAddr, l2Client) + require.NoError(t, err) + + // Approve GovernanceToken with the bridge on L1 and L2 + tx, err := l1Token.Approve(l1Opts, l1BridgeAddr, new(big.Int).SetUint64(math.MaxUint64)) + require.NoError(t, err) + _, err = wait.ForReceiptOK(context.Background(), l1Client, tx.Hash()) + require.NoError(t, err) + tx, err = l2Token.Approve(l2Opts, l2BridgeAddr, new(big.Int).SetUint64(math.MaxUint64)) + require.NoError(t, err) + _, err = wait.ForReceiptOK(context.Background(), l2Client, tx.Hash()) + require.NoError(t, err) + + // Wait until Alice have enough tokens on L2 + _, err = geth.WaitForBlock(big.NewInt(10), l2Client, 20*time.Second) + require.NoError(t, err) + aliceL2Opts, err := bind.NewKeyedTransactorWithChainID(cfg.Secrets.Alice, cfg.L2ChainIDBig()) + require.Nil(t, err) + bridgeAmount, err := l2Token.BalanceOf(&bind.CallOpts{}, aliceL2Opts.From) + require.NoError(t, err) + require.NotZero(t, bridgeAmount.Uint64()) + + // Send Alice's tokens to Bob + tx, err = transactions.PadGasEstimate(aliceL2Opts, 1.1, func(opts *bind.TransactOpts) (*types.Transaction, error) { + return l2Token.Transfer(opts, l2Opts.From, bridgeAmount) + }) + require.NoError(t, err) + _, err = wait.ForReceiptOK(context.Background(), l2Client, tx.Hash()) + require.NoError(t, err) + + bobL1Balance, err := l1Token.BalanceOf(&bind.CallOpts{}, l1Opts.From) + require.NoError(t, err) + require.Zero(t, bobL1Balance.Uint64()) + bobL2Balance, err := l2Token.BalanceOf(&bind.CallOpts{}, l2Opts.From) + require.NoError(t, err) + require.Equal(t, bobL2Balance, bridgeAmount) + + l1Supply, err := l1Token.TotalSupply(&bind.CallOpts{}) + require.NoError(t, err) + + // Withdraw GovernanceToken to L1 + tx, err = transactions.PadGasEstimate(l2Opts, 1.1, func(opts *bind.TransactOpts) (*types.Transaction, error) { + return l2Bridge.BridgeERC20(opts, l2TokenAddr, l1TokenAddr, bridgeAmount, 100000, []byte{}) + }) + require.NoError(t, err) + receipt, err := wait.ForReceiptOK(context.Background(), l2Client, tx.Hash()) + require.NoError(t, err) + proveReceipt, finalizeReceipt := ProveAndFinalizeWithdrawal(t, cfg, sys, "verifier", cfg.Secrets.Bob, receipt) + require.Equal(t, types.ReceiptStatusSuccessful, proveReceipt.Status) + require.Equal(t, types.ReceiptStatusSuccessful, finalizeReceipt.Status) + + // Withdrawal complete, Bob's token balance increases on L1. + newBobL1Balance, err := l1Token.BalanceOf(&bind.CallOpts{}, l1Opts.From) + require.NoError(t, err) + require.Equal(t, bobL1Balance.Add(bobL1Balance, bridgeAmount).Cmp(newBobL1Balance), 0) + // Bob's token balance decreases on L2. + newBobL2Balance, err := l2Token.BalanceOf(&bind.CallOpts{}, l2Opts.From) + require.NoError(t, err) + require.Equal(t, bobL2Balance.Sub(bobL2Balance, bridgeAmount).Cmp(newBobL2Balance), 0) + // Total supply increases on L1. + newL1Supply, err := l1Token.TotalSupply(&bind.CallOpts{}) + require.NoError(t, err) + require.Equal(t, l1Supply.Add(l1Supply, bridgeAmount).Cmp(newL1Supply), 0) + // It's difficult to verify the exact decrease in token total supply on L2, + // as the issuance amount increases with each block + + // Deposit GovernanceToken to L2 + tx, err = transactions.PadGasEstimate(l1Opts, 1.1, func(opts *bind.TransactOpts) (*types.Transaction, error) { + return l1Bridge.BridgeERC20(opts, l1TokenAddr, l2TokenAddr, bridgeAmount, 100000, []byte{}) + }) + require.NoError(t, err) + depositReceipt, err := wait.ForReceiptOK(context.Background(), l1Client, tx.Hash()) + require.NoError(t, err) + + t.Log("Deposit through L1StandardBridge", "gas used", depositReceipt.GasUsed) + + // compute the deposit transaction hash + poll for it + portal, err := bindings.NewKromaPortal(cfg.L1Deployments.KromaPortalProxy, l1Client) + require.NoError(t, err) + + depIt, err := portal.FilterTransactionDeposited(&bind.FilterOpts{Start: 0}, nil, nil, nil) + require.NoError(t, err) + var depositEvent *bindings.KromaPortalTransactionDeposited + for depIt.Next() { + depositEvent = depIt.Event + } + require.NotNil(t, depositEvent) + + depositTx, err := derive.UnmarshalDepositLogEvent(&depositEvent.Raw) + require.NoError(t, err) + _, err = wait.ForReceiptOK(context.Background(), l2Client, types.NewTx(depositTx).Hash()) + require.NoError(t, err) + + // Deposit complete, Bob's token balance decreases on L1. + newBobL1Balance, err = l1Token.BalanceOf(&bind.CallOpts{}, l1Opts.From) + require.NoError(t, err) + require.Equal(t, bobL1Balance.Sub(bobL1Balance, bridgeAmount).Cmp(newBobL1Balance), 0) + // Bob's token balance increases on L2. + newBobL2Balance, err = l2Token.BalanceOf(&bind.CallOpts{}, l2Opts.From) + require.NoError(t, err) + require.Equal(t, bobL2Balance.Add(bobL2Balance, bridgeAmount).Cmp(newBobL2Balance), 0) + // Total supply decreases on L1. + newL1Supply, err = l1Token.TotalSupply(&bind.CallOpts{}) + require.NoError(t, err) + require.Equal(t, l1Supply.Sub(l1Supply, bridgeAmount).Cmp(newL1Supply), 0) + // It's difficult to verify the exact increase in token total supply on L2, + // as the issuance amount increases with each block +} diff --git a/op-e2e/setup.go b/op-e2e/setup.go index 987960a8f..f994ecc02 100644 --- a/op-e2e/setup.go +++ b/op-e2e/setup.go @@ -39,6 +39,8 @@ import ( "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" + "github.com/kroma-network/kroma/op-e2e/e2eutils/batcher" + bss "github.com/ethereum-optimism/optimism/op-batcher/batcher" batcherFlags "github.com/ethereum-optimism/optimism/op-batcher/flags" "github.com/ethereum-optimism/optimism/op-e2e/config" @@ -67,7 +69,6 @@ import ( "github.com/kroma-network/kroma/kroma-chain-ops/genesis" validator "github.com/kroma-network/kroma/kroma-validator" validatormetrics "github.com/kroma-network/kroma/kroma-validator/metrics" - "github.com/kroma-network/kroma/op-e2e/e2eutils/batcher" "github.com/kroma-network/kroma/op-e2e/testdata" "github.com/kroma-network/kroma/op-service/client" ) @@ -104,6 +105,7 @@ func DefaultSystemConfig(t *testing.T) SystemConfig { deployConfig.L2GenesisDeltaTimeOffset = nil deployConfig.L2GenesisEcotoneTimeOffset = nil deployConfig.ValidatorPoolRoundDuration = deployConfig.L2OutputOracleSubmissionInterval * deployConfig.L2BlockTime / 2 + deployConfig.MintManagerMintActivatedBlock = nil // [Kroma: END] require.NoError(t, deployConfig.Check(), "Deploy config is invalid, do you need to run make devnet-allocs?") l1Deployments := config.L1Deployments.Copy() diff --git a/op-e2e/system_test.go b/op-e2e/system_test.go index ff72bbe24..2860d93e2 100644 --- a/op-e2e/system_test.go +++ b/op-e2e/system_test.go @@ -32,6 +32,7 @@ import ( gethutils "github.com/ethereum-optimism/optimism/op-e2e/e2eutils/geth" "github.com/ethereum-optimism/optimism/op-e2e/e2eutils/transactions" "github.com/ethereum-optimism/optimism/op-e2e/e2eutils/wait" + "github.com/ethereum-optimism/optimism/op-e2e/testdata" "github.com/ethereum-optimism/optimism/op-node/metrics" rollupNode "github.com/ethereum-optimism/optimism/op-node/node" "github.com/ethereum-optimism/optimism/op-node/p2p" @@ -47,7 +48,6 @@ import ( "github.com/kroma-network/kroma/kroma-bindings/predeploys" val "github.com/kroma-network/kroma/kroma-validator" chal "github.com/kroma-network/kroma/kroma-validator/challenge" - "github.com/kroma-network/kroma/op-e2e/testdata" ) // TestSystemBatchType run each system e2e test case in singular batch mode and span batch mode. @@ -931,6 +931,9 @@ func TestL1InfoContract(t *testing.T) { InitParallel(t) cfg := DefaultSystemConfig(t) + // [Kroma: START] + cfg.DeployConfig.MintManagerMintActivatedBlock = (*hexutil.Big)(big.NewInt(2)) + // [Kroma: END] sys, err := cfg.Start(t) require.Nil(t, err, "Error starting up system") @@ -1032,6 +1035,24 @@ func TestL1InfoContract(t *testing.T) { checkInfoList("On sequencer with state", l1InfosFromSequencerState) checkInfoList("On verifier with tx", l1InfosFromVerifierTransactions) checkInfoList("On verifier with state", l1InfosFromVerifierState) + + // [Kroma: START] + // Ensure that the L1Info contract successfully calls MintManager and the governance token is minted. + for i := uint64(1); i < endVerifBlock.NumberU64(); i++ { + block, err := l2Verif.BlockByNumber(ctx, new(big.Int).SetUint64(i)) + require.NoError(t, err) + require.NotZero(t, len(block.Transactions())) + l1InfoReceipt, err := l2Verif.TransactionReceipt(ctx, block.Transactions()[0].Hash()) + + // L1Info contracts don't emit any events. + // All events that emitted in this transaction are assumed to be `Transfer` events of the governance token. + if i >= cfg.DeployConfig.MintManagerMintActivatedBlock.ToInt().Uint64() { + require.Equal(t, len(l1InfoReceipt.Logs), len(cfg.DeployConfig.MintManagerRecipients)) + } else { + require.Zero(t, len(l1InfoReceipt.Logs)) + } + } + // [Kroma: END] } // calcGasFees determines the actual cost of the transaction given a specific base fee diff --git a/op-node/rollup/derive/ecotone_upgrade_transactions.go b/op-node/rollup/derive/ecotone_upgrade_transactions.go index d54d7143a..582035c65 100644 --- a/op-node/rollup/derive/ecotone_upgrade_transactions.go +++ b/op-node/rollup/derive/ecotone_upgrade_transactions.go @@ -53,10 +53,9 @@ func EcotoneNetworkUpgradeTransactions() ([]hexutil.Bytes, error) { Data: l1BlockDeploymentBytecode, // [Kroma: START] Gas: 500_000, - //IsSystemTransaction: false, + // IsSystemTransaction: false, // [Kroma: END] }).MarshalBinary() - if err != nil { return nil, err } @@ -75,7 +74,6 @@ func EcotoneNetworkUpgradeTransactions() ([]hexutil.Bytes, error) { [Kroma: END] */ Data: gasPriceOracleDeploymentBytecode, }).MarshalBinary() - if err != nil { return nil, err } @@ -94,7 +92,6 @@ func EcotoneNetworkUpgradeTransactions() ([]hexutil.Bytes, error) { [Kroma: END] */ Data: upgradeToCalldata(newL1BlockAddress), }).MarshalBinary() - if err != nil { return nil, err } @@ -113,7 +110,6 @@ func EcotoneNetworkUpgradeTransactions() ([]hexutil.Bytes, error) { [Kroma: END] */ Data: upgradeToCalldata(newGasPriceOracleAddress), }).MarshalBinary() - if err != nil { return nil, err } @@ -149,7 +145,6 @@ func EcotoneNetworkUpgradeTransactions() ([]hexutil.Bytes, error) { [Kroma: END] */ SourceHash: beaconRootsSource.SourceHash(), }).MarshalBinary() - if err != nil { return nil, err } diff --git a/op-node/rollup/derive/ecotone_upgrade_transactions_test.go b/op-node/rollup/derive/ecotone_upgrade_transactions_test.go index 8a33ea586..418058464 100644 --- a/op-node/rollup/derive/ecotone_upgrade_transactions_test.go +++ b/op-node/rollup/derive/ecotone_upgrade_transactions_test.go @@ -9,8 +9,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/types" - - "github.com/kroma-network/kroma/kroma-bindings/bindings" ) func TestSourcesMatchSpec(t *testing.T) { @@ -73,14 +71,14 @@ func TestEcotoneNetworkTransactions(t *testing.T) { require.Equal(t, deployL1BlockSource.SourceHash(), deployL1Block.SourceHash()) require.Nil(t, deployL1Block.To()) require.Equal(t, uint64(500_000), deployL1Block.Gas()) - require.Equal(t, bindings.L1BlockMetaData.Bin, hexutil.Bytes(deployL1Block.Data()).String()) + require.Equal(t, hexutil.Bytes(l1BlockDeploymentBytecode).String(), hexutil.Bytes(deployL1Block.Data()).String()) deployGasPriceOracleSender, deployGasPriceOracle := toDepositTxn(t, upgradeTxns[1]) require.Equal(t, deployGasPriceOracleSender, common.HexToAddress("0x4210000000000000000000000000000000000001")) require.Equal(t, deployGasPriceOracleSource.SourceHash(), deployGasPriceOracle.SourceHash()) require.Nil(t, deployGasPriceOracle.To()) require.Equal(t, uint64(1_000_000), deployGasPriceOracle.Gas()) - require.Equal(t, bindings.GasPriceOracleMetaData.Bin, hexutil.Bytes(deployGasPriceOracle.Data()).String()) + require.Equal(t, hexutil.Bytes(gasPriceOracleDeploymentBytecode).String(), hexutil.Bytes(deployGasPriceOracle.Data()).String()) updateL1BlockProxySender, updateL1BlockProxy := toDepositTxn(t, upgradeTxns[2]) require.Equal(t, updateL1BlockProxySender, common.Address{}) diff --git a/packages/contracts/.storage-layout b/packages/contracts/.storage-layout index bf063325b..22f4a4cf4 100644 --- a/packages/contracts/.storage-layout +++ b/packages/contracts/.storage-layout @@ -339,3 +339,34 @@ | _timelock | contract TimelockControllerUpgradeable | 504 | 0 | 20 | contracts/governance/UpgradeGovernor.sol:UpgradeGovernor | | _timelockIds | mapping(uint256 => bytes32) | 505 | 0 | 32 | contracts/governance/UpgradeGovernor.sol:UpgradeGovernor | | __gap | uint256[48] | 506 | 0 | 1536 | contracts/governance/UpgradeGovernor.sol:UpgradeGovernor | + +======================= +➡ contracts/governance/GovernanceToken.sol:GovernanceToken +======================= + +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------------------------|----------------------------------------------------|------|--------|-------|----------------------------------------------------------| +| _balances | mapping(address => uint256) | 0 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _allowances | mapping(address => mapping(address => uint256)) | 1 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _totalSupply | uint256 | 2 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _name | string | 3 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _symbol | string | 4 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _nameFallback | string | 5 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _versionFallback | string | 6 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _nonces | mapping(address => struct Counters.Counter) | 7 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _PERMIT_TYPEHASH_DEPRECATED_SLOT | bytes32 | 8 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _delegates | mapping(address => address) | 9 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _checkpoints | mapping(address => struct ERC20Votes.Checkpoint[]) | 10 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | +| _totalSupplyCheckpoints | struct ERC20Votes.Checkpoint[] | 11 | 0 | 32 | contracts/governance/GovernanceToken.sol:GovernanceToken | + +======================= +➡ contracts/governance/MintManager.sol:MintManager +======================= + +| Name | Type | Slot | Offset | Bytes | Contract | +|-----------------|-----------------------------|------|--------|-------|--------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/governance/MintManager.sol:MintManager | +| _initializing | bool | 0 | 1 | 1 | contracts/governance/MintManager.sol:MintManager | +| recipients | address[] | 1 | 0 | 32 | contracts/governance/MintManager.sol:MintManager | +| shareOf | mapping(address => uint256) | 2 | 0 | 32 | contracts/governance/MintManager.sol:MintManager | +| lastMintedBlock | uint256 | 3 | 0 | 32 | contracts/governance/MintManager.sol:MintManager | diff --git a/packages/contracts/contracts/L2/L1Block.sol b/packages/contracts/contracts/L2/L1Block.sol index f1befa8ed..eed35cea2 100644 --- a/packages/contracts/contracts/L2/L1Block.sol +++ b/packages/contracts/contracts/L2/L1Block.sol @@ -3,6 +3,8 @@ pragma solidity 0.8.15; import { Constants } from "../libraries/Constants.sol"; import { ISemver } from "../universal/ISemver.sol"; +import { Predeploys } from "../libraries/Predeploys.sol"; +import { SafeCall } from "../libraries/SafeCall.sol"; /// @custom:proxied /// @custom:predeploy 0x4200000000000000000000000000000000000002 @@ -11,6 +13,7 @@ import { ISemver } from "../universal/ISemver.sol"; /// Values within this contract are updated once per epoch (every L1 block) and can only be /// set by the "depositor" account, a special system address. Depositor account transactions /// are created by the protocol whenever we move to a new epoch. +/// This contract calls MintManager to mint governance tokens. contract L1Block is ISemver { /// @notice Address of the special depositor account. address public constant DEPOSITOR_ACCOUNT = 0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001; @@ -60,6 +63,7 @@ contract L1Block is ISemver { /// @custom:legacy /// @notice Updates the L1 block values. + /// After updating, call the mint function of MintManager to mint GovernanceToken. /// @param _number L1 blocknumber. /// @param _timestamp L1 timestamp. /// @param _basefee L1 basefee. @@ -80,7 +84,7 @@ contract L1Block is ISemver { uint256 _l1FeeScalar, uint256 _validatorRewardScalar ) - external + external { require(msg.sender == DEPOSITOR_ACCOUNT, "L1Block: only the depositor account can set L1 block values"); @@ -98,6 +102,10 @@ contract L1Block is ISemver { l1FeeOverhead = _l1FeeOverhead; l1FeeScalar = _l1FeeScalar; validatorRewardScalar = _validatorRewardScalar; + + // Call MintManager to mint governance tokens. Note that SafeCall is used to call the mint function, + // ensuring that the L1 block values are updated even if a revert occurs in the MintManager contract. + SafeCall.call(Predeploys.MINT_MANAGER, gasleft(), 0, abi.encodeWithSignature("mint()")); } /// @notice Updates the L1 block values for an Ecotone upgraded chain. @@ -113,17 +121,18 @@ contract L1Block is ISemver { /// 8. _hash L1 blockhash. /// 9. _batcherHash Versioned hash to authenticate batcher by. /// 10. _validatorRewardScalar Validator reward scalar. + /// After updating, call the mint function of MintManager to mint GovernanceToken. function setL1BlockValuesEcotone() external { assembly { - // Revert if the caller is not the depositor account. + // Revert if the caller is not the depositor account. if xor(caller(), DEPOSITOR_ACCOUNT) { mstore(0x00, 0x3cc50b45) // 0x3cc50b45 is the 4-byte selector of "NotDepositor()" revert(0x1C, 0x04) // returns the stored 4-byte selector from above } let data := calldataload(4) - // sequencenum (uint64), blobBaseFeeScalar (uint32), baseFeeScalar (uint32) + // sequencenum (uint64), blobBaseFeeScalar (uint32), baseFeeScalar (uint32) sstore(sequenceNumber.slot, shr(128, calldataload(4))) - // number (uint64) and timestamp (uint64) + // number (uint64) and timestamp (uint64) sstore(number.slot, shr(128, calldataload(20))) sstore(basefee.slot, calldataload(36)) // uint256 sstore(blobBaseFee.slot, calldataload(68)) // uint256 @@ -131,5 +140,9 @@ contract L1Block is ISemver { sstore(batcherHash.slot, calldataload(132)) // bytes32 sstore(validatorRewardScalar.slot, calldataload(164)) // uint256 } + + // Call MintManager to mint governance tokens. Note that SafeCall is used to call the mint function, + // ensuring that the L1 block values are updated even if a revert occurs in the MintManager contract. + SafeCall.call(Predeploys.MINT_MANAGER, gasleft(), 0, abi.encodeWithSignature("mint()")); } } diff --git a/packages/contracts/contracts/governance/GovernanceToken.sol b/packages/contracts/contracts/governance/GovernanceToken.sol index 13a10096a..1ef287a05 100644 --- a/packages/contracts/contracts/governance/GovernanceToken.sol +++ b/packages/contracts/contracts/governance/GovernanceToken.sol @@ -1,47 +1,100 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.15; -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; - -/// @custom:predeploy 0x4200000000000000000000000000000000000010 -/// @title GovernanceToken -/// @notice The Kroma token used in governance and supporting voting and delegation. Implements -/// EIP 2612 allowing signed approvals. Contract is "owned" by a `MintManager` instance with -/// permission to the `mint` function only, for the purposes of enforcing the token -/// inflation schedule. -contract GovernanceToken is ERC20Burnable, ERC20Votes, Ownable { - /// @notice Constructs the GovernanceToken contract. - constructor() ERC20("Kroma", "KRO") ERC20Permit("Kroma") { } - - /// @notice Allows the owner to mint tokens. - /// @param _account The account receiving minted tokens. - /// @param _amount The amount of tokens to mint. - function mint(address _account, uint256 _amount) public onlyOwner { + +import { KromaMintableERC20 } from "../universal/KromaMintableERC20.sol"; + +/** + * @custom:proxied + * @custom:predeploy 0x42000000000000000000000000000000000000ff + * @title GovernanceToken + * @notice The KRO token used in governance, supporting voting and delegation. Implements + * EIP 2612 allowing signed approvals. It can be bridged to other specified chain. + * This token is minted once every block by the MintManager. + */ +contract GovernanceToken is KromaMintableERC20, ERC20Burnable, ERC20Votes { + /** + * @notice Address of the MintManager contract that will have minter role. + */ + address public immutable MINT_MANAGER; + + /** + * @notice Constructs the GovernanceToken contract. + * + * @param _bridge Address of the StandardBridge on this network. + * @param _remoteToken Address of the corresponding token on the remote chain. + * @param _mintManager Address of the MintManager contract. + */ + constructor( + address _bridge, + address _remoteToken, + address _mintManager + ) KromaMintableERC20(_bridge, _remoteToken, "Kroma", "KRO") ERC20Permit("Kroma") { + MINT_MANAGER = _mintManager; + } + + /** + * @notice Allows the owner to mint tokens. + * + * @param _account The account receiving minted tokens. + * @param _amount The amount of tokens to mint. + */ + function mint(address _account, uint256 _amount) external override { + require( + msg.sender == BRIDGE || msg.sender == MINT_MANAGER, + "GovernanceToken: only minter can mint" + ); + _mint(_account, _amount); } - /// @notice Callback called after a token transfer. - /// @param from The account sending tokens. - /// @param to The account receiving tokens. - /// @param amount The amount of tokens being transfered. - function _afterTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Votes) { - super._afterTokenTransfer(from, to, amount); + /** + * @notice Allows the StandardBridge on this network to burn tokens. + * + * @param _from Address to burn tokens from. + * @param _amount Amount of tokens to burn. + */ + function burn( + address _from, + uint256 _amount + ) external override onlyBridge { + _burn(_from, _amount); + } + + /** + * @notice Callback called after a token transfer. + * + * @param _from The account sending tokens. + * @param _to The account receiving tokens. + * @param _amount The amount of tokens being transferred. + */ + function _afterTokenTransfer( + address _from, + address _to, + uint256 _amount + ) internal override(ERC20, ERC20Votes) { + super._afterTokenTransfer(_from, _to, _amount); } - /// @notice Internal mint function. - /// @param to The account receiving minted tokens. - /// @param amount The amount of tokens to mint. - function _mint(address to, uint256 amount) internal override(ERC20, ERC20Votes) { - super._mint(to, amount); + /** + * @notice Internal mint function. + * + * @param _account The account receiving minted tokens. + * @param _amount The amount of tokens to mint. + */ + function _mint(address _account, uint256 _amount) internal override(ERC20, ERC20Votes) { + super._mint(_account, _amount); } - /// @notice Internal burn function. - /// @param account The account that tokens will be burned from. - /// @param amount The amount of tokens that will be burned. - function _burn(address account, uint256 amount) internal override(ERC20, ERC20Votes) { - super._burn(account, amount); + /** + * @notice Internal burn function. + * + * @param _account The account that tokens will be burned from. + * @param _amount The amount of tokens that will be burned. + */ + function _burn(address _account, uint256 _amount) internal override(ERC20, ERC20Votes) { + super._burn(_account, _amount); } } diff --git a/packages/contracts/contracts/governance/MintManager.sol b/packages/contracts/contracts/governance/MintManager.sol new file mode 100644 index 000000000..98c796d1c --- /dev/null +++ b/packages/contracts/contracts/governance/MintManager.sol @@ -0,0 +1,230 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol"; + +import { Predeploys } from "../libraries/Predeploys.sol"; +import { ISemver } from "../universal/ISemver.sol"; +import { GovernanceToken } from "./GovernanceToken.sol"; + +/** + * @custom:proxied + * @custom:predeploy 0x4200000000000000000000000000000000000070 + * @title MintManager + * @notice MintManager issues a set amount of GovernanceToken for every block generation + * and distributes the token to a specified vaults. + * The amount of tokens minted per block decreases by a predetermined rate each epoch. + * Although the decimal of token is 18, but the mint amount is floored to 8 decimals. + */ +contract MintManager is Initializable, ISemver { + /** + * @notice The denominator of the decaying factor. + */ + uint256 public constant DECAYING_DENOMINATOR = 10 ** 5; + + /** + * @notice The value for truncating decimal point of the minting amount. + */ + uint256 public constant FLOOR_UNIT = 10 ** 10; + + /** + * @notice The denominator of each recipient's share. + */ + uint256 public constant SHARE_DENOMINATOR = 10 ** 5; + + /** + * @notice The GovernanceToken that the MintManager can mint tokens. + */ + GovernanceToken public immutable GOVERNANCE_TOKEN; + + /** + * @notice The number of the L2 block where the mint function is activated. + */ + uint256 public immutable MINT_ACTIVATED_BLOCK; + + /** + * @notice The amount of minting in the first epoch. + */ + uint256 public immutable INIT_MINT_PER_BLOCK; + + /** + * @notice The number of blocks per epoch. Can be updated via upgrade. + */ + uint256 public immutable SLIDING_WINDOW_BLOCKS; + + /** + * @notice The decaying factor that reduces the amount of minting. Can be updated via upgrade. + */ + uint256 public immutable DECAYING_FACTOR; + + /** + * @notice A list of recipient addresses that will receive tokens to be distributed. + */ + address[] internal recipients; + + /** + * @notice A mapping of the recipient's share. + */ + mapping(address => uint256) public shareOf; + + /** + * @notice The number of the last block that minted tokens. + */ + uint256 internal lastMintedBlock; + + /** + * @notice Reverts if the caller is not a L1Block contract. + */ + modifier onlyL1Block() { + require(msg.sender == Predeploys.L1_BLOCK_ATTRIBUTES, "MintManager: only the L1Block can call this function"); + _; + } + + /** + * @notice Semantic version. + * @custom:semver 1.0.0 + */ + string public constant version = "1.0.0"; + + /** + * @notice Constructs the MintManager contract. + * + * @param _mintActivatedBlock The number of L2 block number which the mint function is activated. + * @param _initMintPerBlock The amount of the initial minting per block. + * @param _slidingWindowBlocks The number of blocks per epoch. + * @param _decayingFactor The decaying factor that reduces the amount of minting. + */ + constructor( + uint256 _mintActivatedBlock, + uint256 _initMintPerBlock, + uint256 _slidingWindowBlocks, + uint256 _decayingFactor + ) { + MINT_ACTIVATED_BLOCK = _mintActivatedBlock; + INIT_MINT_PER_BLOCK = _initMintPerBlock; + SLIDING_WINDOW_BLOCKS = _slidingWindowBlocks; + DECAYING_FACTOR = _decayingFactor; + + GOVERNANCE_TOKEN = GovernanceToken(Predeploys.GOVERNANCE_TOKEN); + } + + /** + * @notice Initializer. + * + * @param _recipients List of the recipient. + * @param _shares List of token distribution ratios for each recipient. + */ + function initialize( + address[] calldata _recipients, + uint256[] calldata _shares + ) external initializer { + require(_recipients.length == _shares.length, "MintManager: invalid length of array"); + + uint256 totalShares = 0; + for (uint256 i = 0; i < _recipients.length; i++) { + address recipient = _recipients[i]; + require(recipient != address(0), "MintManager: recipient address cannot be 0"); + uint256 share = _shares[i]; + require(share != 0, "MintManager: share cannot be 0"); + totalShares += share; + + recipients.push(recipient); + shareOf[recipient] = share; + } + require(totalShares == SHARE_DENOMINATOR, "MintManager: invalid shares"); + } + + /** + * @notice Mints and distributes tokens. + * It must be called every block and cannot be called more than once in the same block. + * If it is the first time tokens are being minted, mint the amount of tokens that + * should be minted up to the current block number. + */ + function mint() external onlyL1Block { + if (MINT_ACTIVATED_BLOCK > block.number) { + return; + } + + require( + lastMintedBlock != block.number, + "MintManager: tokens have already been minted in this block" + ); + + uint256 mintAmount; + if (lastMintedBlock == 0) { + mintAmount = _initialMintAmount(block.number); + } else { + mintAmount = mintAmountPerBlock(block.number); + } + + if (mintAmount > 0) { + for (uint256 i = 0; i < recipients.length; i++) { + address recipient = recipients[i]; + uint256 share = shareOf[recipient]; + uint256 amount = (mintAmount * share) / SHARE_DENOMINATOR; + + GOVERNANCE_TOKEN.mint(recipient, amount); + } + + lastMintedBlock = block.number; + } + } + + /** + * @notice Returns the amount of tokens that should be minted at the given block number. + * + * @param _blockNumber The block number at the time of minting. + * + * @return The mint amount at the given block number. + */ + function mintAmountPerBlock(uint256 _blockNumber) public view returns (uint256) { + uint256 amount = INIT_MINT_PER_BLOCK; + + (uint256 epoch, ) = _getEpochAndOffset(_blockNumber); + for (uint256 i = 1; i < epoch; i++) { + amount = (amount * DECAYING_FACTOR) / DECAYING_DENOMINATOR; + amount = (amount / FLOOR_UNIT) * FLOOR_UNIT; + } + + return amount; + } + + /** + * @notice Returns the epoch number and the offset within that epoch for a given block number. + * + * @param _blockNumber The block number. + * + * @return The epoch number and the offset. + */ + function _getEpochAndOffset(uint256 _blockNumber) private view returns (uint256, uint256) { + uint256 epoch = (_blockNumber - 1) / SLIDING_WINDOW_BLOCKS + 1; + uint256 offset = (_blockNumber - 1) % SLIDING_WINDOW_BLOCKS + 1; + return (epoch, offset); + } + + /** + * @notice Returns the initial minting amount. + * It computes and returns the amount that should be minted up to the given block number. + * + * @param _blockNumber The block number at the time of minting. + * + * @return The amount of initial minting. + */ + function _initialMintAmount(uint256 _blockNumber) private view returns (uint256) { + uint256 amount = 0; + uint256 mintPerBlock = INIT_MINT_PER_BLOCK; + + (uint256 epoch, uint256 offset) = _getEpochAndOffset(_blockNumber); + for (uint256 i = 1; i < epoch; i++) { + amount = amount + mintPerBlock * SLIDING_WINDOW_BLOCKS; + mintPerBlock = (mintPerBlock * DECAYING_FACTOR) / DECAYING_DENOMINATOR; + mintPerBlock = (mintPerBlock / FLOOR_UNIT) * FLOOR_UNIT; + } + + if (offset > 0) { + amount = amount + mintPerBlock * offset; + } + + return amount; + } +} diff --git a/packages/contracts/contracts/libraries/Predeploys.sol b/packages/contracts/contracts/libraries/Predeploys.sol index 44b5afe9f..3525ab07e 100644 --- a/packages/contracts/contracts/libraries/Predeploys.sol +++ b/packages/contracts/contracts/libraries/Predeploys.sol @@ -69,4 +69,14 @@ library Predeploys { */ address internal constant KROMA_MINTABLE_ERC721_FACTORY = 0x420000000000000000000000000000000000000c; + + /** + * @notice Address of the MintManager predeploy. + */ + address internal constant MINT_MANAGER = 0x4200000000000000000000000000000000000070; + + /** + * @notice Address of the GovernanceToken predeploy. + */ + address internal constant GOVERNANCE_TOKEN = 0x42000000000000000000000000000000000000fF; } diff --git a/packages/contracts/contracts/test/GovernanceToken.t.sol b/packages/contracts/contracts/test/GovernanceToken.t.sol index b60d68289..e89978b97 100644 --- a/packages/contracts/contracts/test/GovernanceToken.t.sol +++ b/packages/contracts/contracts/test/GovernanceToken.t.sol @@ -11,28 +11,48 @@ contract GovernanceToken_Test is CommonTest { address owner; address rando; GovernanceToken governanceToken; + address bridge; + address remoteToken; + address mintManager; /// @dev Sets up the test suite. function setUp() public virtual override { super.setUp(); - governanceToken = new GovernanceToken(); - owner = governanceToken.owner(); + + owner = makeAddr("owner"); rando = makeAddr("rando"); + bridge = makeAddr("bridge"); + remoteToken = makeAddr("remoteToken"); + mintManager = makeAddr("mintManager"); + governanceToken = new GovernanceToken(bridge, remoteToken, mintManager); } /// @dev Tests that the constructor sets the correct initial state. function test_constructor_succeeds() external { - assertEq(governanceToken.owner(), owner); + assertEq(governanceToken.BRIDGE(), bridge); + assertEq(governanceToken.REMOTE_TOKEN(), remoteToken); + assertEq(governanceToken.MINT_MANAGER(), mintManager); assertEq(governanceToken.name(), "Kroma"); assertEq(governanceToken.symbol(), "KRO"); assertEq(governanceToken.decimals(), 18); assertEq(governanceToken.totalSupply(), 0); } - /// @dev Tests that the owner can successfully call `mint`. - function test_mint_fromOwner_succeeds() external { + /// @dev Tests the bridge contract can successfully call `mint`. + function test_mint_fromBridge_succeeds() external { // Mint 100 tokens. - vm.prank(owner); + vm.prank(bridge); + governanceToken.mint(owner, 100); + + // Balances have updated correctly. + assertEq(governanceToken.balanceOf(owner), 100); + assertEq(governanceToken.totalSupply(), 100); + } + + /// @dev Tests that the MintManager can successfully call `mint`. + function test_mint_fromMintManager_succeeds() external { + // Mint 100 tokens. + vm.prank(mintManager); governanceToken.mint(owner, 100); // Balances have updated correctly. @@ -44,7 +64,7 @@ contract GovernanceToken_Test is CommonTest { function test_mint_fromNotOwner_reverts() external { // Mint 100 tokens as rando. vm.prank(rando); - vm.expectRevert("Ownable: caller is not the owner"); + vm.expectRevert("GovernanceToken: only minter can mint"); governanceToken.mint(owner, 100); // Balance does not update. @@ -55,7 +75,7 @@ contract GovernanceToken_Test is CommonTest { /// @dev Tests that the owner can successfully call `burn`. function test_burn_succeeds() external { // Mint 100 tokens to rando. - vm.prank(owner); + vm.prank(mintManager); governanceToken.mint(rando, 100); // Rando burns their tokens. @@ -67,10 +87,25 @@ contract GovernanceToken_Test is CommonTest { assertEq(governanceToken.totalSupply(), 50); } + /// @dev Tests that the bridge contract can successfully call `burn`. + function test_burn_fromBridge_succeeds() external { + // Mint 100 tokens to rando. + vm.prank(mintManager); + governanceToken.mint(rando, 100); + + // Bridge burns rando's tokens. + vm.prank(bridge); + governanceToken.burn(rando, 100); + + // Balances have updated correctly. + assertEq(governanceToken.balanceOf(rando), 0); + assertEq(governanceToken.totalSupply(), 0); + } + /// @dev Tests that the owner can successfully call `burnFrom`. function test_burnFrom_succeeds() external { // Mint 100 tokens to rando. - vm.prank(owner); + vm.prank(mintManager); governanceToken.mint(rando, 100); // Rando approves owner to burn 50 tokens. @@ -89,7 +124,7 @@ contract GovernanceToken_Test is CommonTest { /// @dev Tests that `transfer` correctly transfers tokens. function test_transfer_succeeds() external { // Mint 100 tokens to rando. - vm.prank(owner); + vm.prank(mintManager); governanceToken.mint(rando, 100); // Rando transfers 50 tokens to owner. @@ -105,7 +140,7 @@ contract GovernanceToken_Test is CommonTest { /// @dev Tests that `approve` correctly sets allowances. function test_approve_succeeds() external { // Mint 100 tokens to rando. - vm.prank(owner); + vm.prank(mintManager); governanceToken.mint(rando, 100); // Rando approves owner to spend 50 tokens. @@ -119,7 +154,7 @@ contract GovernanceToken_Test is CommonTest { /// @dev Tests that `transferFrom` correctly transfers tokens. function test_transferFrom_succeeds() external { // Mint 100 tokens to rando. - vm.prank(owner); + vm.prank(mintManager); governanceToken.mint(rando, 100); // Rando approves owner to spend 50 tokens. @@ -139,7 +174,7 @@ contract GovernanceToken_Test is CommonTest { /// @dev Tests that `increaseAllowance` correctly increases allowances. function test_increaseAllowance_succeeds() external { // Mint 100 tokens to rando. - vm.prank(owner); + vm.prank(mintManager); governanceToken.mint(rando, 100); // Rando approves owner to spend 50 tokens. @@ -157,7 +192,7 @@ contract GovernanceToken_Test is CommonTest { /// @dev Tests that `decreaseAllowance` correctly decreases allowances. function test_decreaseAllowance_succeeds() external { // Mint 100 tokens to rando. - vm.prank(owner); + vm.prank(mintManager); governanceToken.mint(rando, 100); // Rando approves owner to spend 100 tokens. diff --git a/packages/contracts/contracts/test/L1Block.t.sol b/packages/contracts/contracts/test/L1Block.t.sol index 18c09c098..e6d98b35c 100644 --- a/packages/contracts/contracts/test/L1Block.t.sol +++ b/packages/contracts/contracts/test/L1Block.t.sol @@ -9,6 +9,9 @@ import { Encoding } from "../libraries/Encoding.sol"; import { Predeploys } from "../libraries/Predeploys.sol"; // Target contract +import { GovernanceToken } from "../governance/GovernanceToken.sol"; +import { MintManager } from "../governance/MintManager.sol"; +import { Predeploys } from "../libraries/Predeploys.sol"; import { L1Block } from "../L2/L1Block.sol"; contract L1BlockTest is CommonTest { @@ -17,7 +20,7 @@ contract L1BlockTest is CommonTest { bytes32 immutable NON_ZERO_HASH = keccak256(abi.encode(1)); /// @dev Sets up the test suite. - function setUp() public override { + function setUp() public virtual override { super.setUp(); l1Block = new L1Block(); depositor = l1Block.DEPOSITOR_ACCOUNT(); @@ -172,3 +175,90 @@ contract L1BlockEcotone_Test is L1BlockTest { assertEq(data, expReturn); } } + +contract L1BlockTokenMintTest is L1BlockTest { + GovernanceToken governanceToken; + MintManager mintManager; + + function setUp() public override { + super.setUp(); + + // Deploy GovernanceToken + governanceToken = new GovernanceToken(address(1), address(2), Predeploys.MINT_MANAGER); + vm.etch(Predeploys.GOVERNANCE_TOKEN, address(governanceToken).code); + governanceToken = GovernanceToken(Predeploys.GOVERNANCE_TOKEN); + // Deploy MintManager + mintManager = new MintManager(0, 1 ether, 3888000, 92224); + vm.etch(Predeploys.MINT_MANAGER, address(mintManager).code); + mintManager = MintManager(Predeploys.MINT_MANAGER); + // Initialize MintManager + address[] memory recipients = new address[](40); + uint256[] memory shares = new uint256[](recipients.length); + for (uint256 i = 0; i < recipients.length; i++) { + recipients[i] = makeAddr(string(abi.encodePacked("recipient", i))); + shares[i] = 100000 / recipients.length; + } + MintManager(Predeploys.MINT_MANAGER).initialize(recipients, shares); + + vm.etch(Predeploys.L1_BLOCK_ATTRIBUTES, address(new L1Block()).code); + l1Block = L1Block(Predeploys.L1_BLOCK_ATTRIBUTES); + vm.prank(depositor); + l1Block.setL1BlockValues({ + _number: uint64(1), + _timestamp: uint64(2), + _basefee: 3, + _hash: NON_ZERO_HASH, + _sequenceNumber: uint64(4), + _batcherHash: bytes32(0), + _l1FeeOverhead: 2, + _l1FeeScalar: 3, + _validatorRewardScalar: 1 + }); + + // Governance tokens can only be minted once per block, so increase the block number + // after setting the L1block attributes. + vm.roll(block.number + 1); + } + + function test_updateValues_succeeds() external { + uint256 prevSupply = governanceToken.totalSupply(); + uint256 mintPerBlock = mintManager.mintAmountPerBlock(block.number); + + vm.prank(depositor); + l1Block.setL1BlockValues({ + _number: type(uint64).max, + _timestamp: type(uint64).max, + _basefee: type(uint256).max, + _hash: keccak256(abi.encode(1)), + _sequenceNumber: type(uint64).max, + _batcherHash: bytes32(type(uint256).max), + _l1FeeOverhead: type(uint256).max, + _l1FeeScalar: type(uint256).max, + _validatorRewardScalar: 10000 + }); + + assertEq(governanceToken.totalSupply(), prevSupply + mintPerBlock); + } + + function test_updateValues_updateTwice_succeeds() external { + // Rollback to the previous block to test in the same block as before. + vm.roll(block.number - 1); + uint256 prevSupply = governanceToken.totalSupply(); + + vm.prank(depositor); + l1Block.setL1BlockValues({ + _number: type(uint64).max, + _timestamp: type(uint64).max, + _basefee: type(uint256).max, + _hash: keccak256(abi.encode(1)), + _sequenceNumber: type(uint64).max, + _batcherHash: bytes32(type(uint256).max), + _l1FeeOverhead: type(uint256).max, + _l1FeeScalar: type(uint256).max, + _validatorRewardScalar: 10000 + }); + + // Tokens should not be minted even if executed twice in the same block. + assertEq(governanceToken.totalSupply(), prevSupply); + } +} diff --git a/packages/contracts/contracts/test/MintManager.t.sol b/packages/contracts/contracts/test/MintManager.t.sol new file mode 100644 index 000000000..1cea1cda3 --- /dev/null +++ b/packages/contracts/contracts/test/MintManager.t.sol @@ -0,0 +1,234 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +// Testing utilities +import { CommonTest } from "./CommonTest.t.sol"; + +// Target contract +import { GovernanceToken } from "../governance/GovernanceToken.sol"; +import { MintManager } from "../governance/MintManager.sol"; +import { Predeploys } from "../libraries/Predeploys.sol"; + +contract MintManagerTest is CommonTest { + address owner; + address rando; + GovernanceToken governanceToken; + MintManager mintManager; + + uint256 constant SHARE_DENOMINATOR = 10 ** 5; + uint256 constant MINT_ACTIVATED_BLOCK = 0; + uint256 constant INIT_MINT_PER_BLOCK = 1 ether; + uint256 constant SLIDING_WINDOW_BLOCKS = 3_888_000; + uint256 constant DECAYING_FACTOR = 92224; + uint256 constant MINT_EPOCH_1 = 100000000 * 10 ** 10; + uint256 constant MINT_EPOCH_2 = 92224000 * 10 ** 10; + uint256 constant MINT_EPOCH_3 = 85052661 * 10 ** 10; + uint256 constant MINT_EPOCH_4 = 78438966 * 10 ** 10; + + address[] recipients = new address[](10); + uint256[] shares = new uint256[](10); + + function setUp() public virtual override { + super.setUp(); + + owner = makeAddr("owner"); + rando = makeAddr("rando"); + + mintManager = MintManager(Predeploys.MINT_MANAGER); + governanceToken = GovernanceToken(Predeploys.GOVERNANCE_TOKEN); + + MintManager mintManagerImpl = new MintManager( + MINT_ACTIVATED_BLOCK, + INIT_MINT_PER_BLOCK, + SLIDING_WINDOW_BLOCKS, + DECAYING_FACTOR + ); + GovernanceToken govTokenImpl = new GovernanceToken( + address(0), + address(0), + address(mintManager) + ); + + vm.etch(address(mintManager), address(mintManagerImpl).code); + vm.etch(address(governanceToken), address(govTokenImpl).code); + + // Initialize + for (uint256 i = 0; i < recipients.length; i++) { + string memory name = string(abi.encodePacked("recipient", i)); + recipients[i] = makeAddr(name); + shares[i] = SHARE_DENOMINATOR / recipients.length; + } + + mintManager.initialize(recipients, shares); + + for (uint256 i = 0; i < recipients.length; i++) { + assertEq(mintManager.shareOf(recipients[i]), shares[i]); + } + } + + function test_constructor_succeeds() external { + assertEq(address(mintManager.GOVERNANCE_TOKEN()), address(governanceToken)); + assertEq(mintManager.SLIDING_WINDOW_BLOCKS(), SLIDING_WINDOW_BLOCKS); + assertEq(mintManager.DECAYING_FACTOR(), DECAYING_FACTOR); + } + + function test_initializer_invalidShares_reverts() external { + mintManager = new MintManager( + MINT_ACTIVATED_BLOCK, + INIT_MINT_PER_BLOCK, + SLIDING_WINDOW_BLOCKS, + DECAYING_FACTOR + ); + + recipients = new address[](10); + shares = new uint256[](10); + + for (uint256 i = 0; i < recipients.length; i++) { + string memory name = string(abi.encodePacked("recipient", i)); + recipients[i] = makeAddr(name); + shares[i] = 1; + } + + vm.expectRevert("MintManager: invalid shares"); + mintManager.initialize(recipients, shares); + } + + function test_initializer_zeroShares_reverts() external { + mintManager = new MintManager( + MINT_ACTIVATED_BLOCK, + INIT_MINT_PER_BLOCK, + SLIDING_WINDOW_BLOCKS, + DECAYING_FACTOR + ); + + recipients = new address[](1); + shares = new uint256[](1); + + recipients[0] = makeAddr("recipient"); + shares[0] = 0; + + vm.expectRevert("MintManager: share cannot be 0"); + mintManager.initialize(recipients, shares); + } + + function test_initializer_zeroRecipient_reverts() external { + mintManager = new MintManager( + MINT_ACTIVATED_BLOCK, + INIT_MINT_PER_BLOCK, + SLIDING_WINDOW_BLOCKS, + DECAYING_FACTOR + ); + + recipients = new address[](1); + shares = new uint256[](1); + + recipients[0] = address(0); + shares[0] = SHARE_DENOMINATOR; + + vm.expectRevert("MintManager: recipient address cannot be 0"); + mintManager.initialize(recipients, shares); + } + + function test_mint_default_succeeds() external { + uint256 minted; + + minted = mintManager.mintAmountPerBlock(block.number); + vm.prank(Predeploys.L1_BLOCK_ATTRIBUTES); + mintManager.mint(); + + uint256[] memory prevBalances = new uint256[](recipients.length); + for (uint256 i = 0; i < recipients.length; i++) { + uint256 balance = governanceToken.balanceOf(recipients[i]); + prevBalances[i] = balance; + } + + uint256 supply = governanceToken.totalSupply(); + assertEq(supply, minted); + + vm.roll(block.number + 1); + vm.prank(Predeploys.L1_BLOCK_ATTRIBUTES); + mintManager.mint(); + + minted = mintManager.mintAmountPerBlock(block.number); + assertEq(governanceToken.totalSupply(), supply + minted); + + for (uint256 i = 0; i < recipients.length; i++) { + uint256 balance = governanceToken.balanceOf(recipients[i]); + uint256 expected = prevBalances[i] + (minted * shares[i]) / SHARE_DENOMINATOR; + assertEq(balance, expected); + } + } + + function test_mint_initial_succeeds() external { + uint256 blockNumber = 12345678; + + vm.roll(blockNumber); + assertEq(governanceToken.totalSupply(), 0); + + // epoch is 4 = ceil(12345678/3888000) + // remainder is 681678 = 12345678%3888000 + uint256 expected = 0; + // epoch 1 - 1 token per block + expected += MINT_EPOCH_1 * SLIDING_WINDOW_BLOCKS; + // epoch 2 - 0.92224000 token per block + expected += MINT_EPOCH_2 * SLIDING_WINDOW_BLOCKS; + // epoch 3 - 0.85052661 token per block + expected += MINT_EPOCH_3 * SLIDING_WINDOW_BLOCKS; + // epoch 4 - 0.78438966 token per block + expected += MINT_EPOCH_4 * (blockNumber % SLIDING_WINDOW_BLOCKS); + + vm.prank(Predeploys.L1_BLOCK_ATTRIBUTES); + mintManager.mint(); + assertEq(governanceToken.totalSupply(), expected); + } + + function test_mint_notActivated_succeeds() external { + mintManager = new MintManager( + type(uint256).max, + INIT_MINT_PER_BLOCK, + SLIDING_WINDOW_BLOCKS, + DECAYING_FACTOR + ); + + vm.prank(Predeploys.L1_BLOCK_ATTRIBUTES); + mintManager.mint(); + + assertEq(governanceToken.totalSupply(), 0); + } + + function test_mint_notMintCaller_reverts() external { + vm.expectRevert("MintManager: only the L1Block can call this function"); + vm.prank(makeAddr("someone")); + mintManager.mint(); + } + + function test_mintAmountPerBlock_firstEpoch_succeeds() external { + uint256 mintAmount = mintManager.mintAmountPerBlock(block.number); + assertEq(mintAmount, MINT_EPOCH_1); + } + + function test_mintAmountPerBlock_whenEpochIncreased_succeeds() external { + uint256 prevMintAmount = mintManager.mintAmountPerBlock(block.number); + assertEq(prevMintAmount, MINT_EPOCH_1); + + vm.roll(block.number + SLIDING_WINDOW_BLOCKS); + + uint256 mintAmount = mintManager.mintAmountPerBlock(block.number); + assertEq(mintAmount, MINT_EPOCH_2); + assertLt(mintAmount, prevMintAmount); + prevMintAmount = mintAmount; + + vm.roll(block.number + SLIDING_WINDOW_BLOCKS); + + mintAmount = mintManager.mintAmountPerBlock(block.number); + assertEq(mintAmount, MINT_EPOCH_3); + assertLt(mintAmount, prevMintAmount); + prevMintAmount = mintAmount; + + vm.roll(block.number + SLIDING_WINDOW_BLOCKS); + + mintAmount = mintManager.mintAmountPerBlock(block.number); + assertEq(mintAmount, MINT_EPOCH_4); + assertLt(mintAmount, prevMintAmount); + } +} diff --git a/packages/contracts/deploy-config/devnetL1-template.json b/packages/contracts/deploy-config/devnetL1-template.json index 7bb41b3ef..c5b7172c2 100644 --- a/packages/contracts/deploy-config/devnetL1-template.json +++ b/packages/contracts/deploy-config/devnetL1-template.json @@ -63,5 +63,33 @@ "colosseumSegmentsLengths": "2,2,3,3", "zkVerifierHashScalar": "0x1545b1bf82c58ee35648bd877da9c5010193e82b036b16bf382acf31bc2ab576", "zkVerifierM56Px": "0x15ae1a8e3b993dd9aadc8f9086d1ea239d4cd5c09cfa445f337e1b60d7b3eb87", - "zkVerifierM56Py": "0x2c702ede24f9db8c8c9a439975facd3872a888c5f84f58b3b5f5a5623bac945a" + "zkVerifierM56Py": "0x2c702ede24f9db8c8c9a439975facd3872a888c5f84f58b3b5f5a5623bac945a", + "mintManagerMintActivatedBlock": "0x0", + "mintManagerInitMintPerBlock": "0xde0b6b3a7640000", + "mintManagerSlidingWindowBlocks": 3888000, + "mintManagerDecayingFactor": 92224, + "mintManagerRecipients": [ + "0x4200000000000000000000000000000000000008", + "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc", + "0xBcd4042DE499D14e55001CcbB24a551F3b954096", + "0xFABB0ac9d68B0B445fB7357272Ff202C5651694a", + "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720", + "0xbDA5747bFD65F08deb54cb465eB87D40e51B197E", + "0xcd3B766CCDd6AE721141F452C550Ca635964ce71", + "0xdD2FD4581271e230360230F9337D5c0430Bf44C0", + "0xde3829a23df1479438622a08a116e8eb3f620bb5", + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + ], + "mintManagerShares": [ + 3000, + 2000, + 15000, + 15000, + 15000, + 10000, + 7000, + 13000, + 7000, + 13000 + ] } diff --git a/packages/contracts/deploy/L1/001-Proxies.ts b/packages/contracts/deploy/L1/001-Proxies.ts index 419087dcf..f11fe6ffe 100644 --- a/packages/contracts/deploy/L1/001-Proxies.ts +++ b/packages/contracts/deploy/L1/001-Proxies.ts @@ -17,6 +17,7 @@ const PROXY_NAMES = [ 'SecurityCouncilTokenProxy', 'TimeLockProxy', 'UpgradeGovernorProxy', + 'L1GovernanceTokenProxy', ] const deployFn: DeployFunction = async (hre) => { diff --git a/packages/contracts/deploy/L1/017-GovernanceToken.ts b/packages/contracts/deploy/L1/017-GovernanceToken.ts new file mode 100644 index 000000000..fc541c78e --- /dev/null +++ b/packages/contracts/deploy/L1/017-GovernanceToken.ts @@ -0,0 +1,45 @@ +import '@kroma/hardhat-deploy-config' +import { ethers } from 'ethers' +import { DeployFunction } from 'hardhat-deploy/dist/types' + +import { predeploys } from '../../src' +import { + assertContractVariable, + deploy, + getDeploymentAddress, +} from '../../src/deploy-utils' + +const deployFn: DeployFunction = async (hre) => { + const zeroAddress = ethers.constants.AddressZero + const l1StandardBridgeProxyAddress = await getDeploymentAddress( + hre, + 'L1StandardBridgeProxy' + ) + + await deploy(hre, 'L1GovernanceToken', { + contract: 'GovernanceToken', + args: [ + l1StandardBridgeProxyAddress, + predeploys.GovernanceToken, + zeroAddress, + ], + isProxyImpl: true, + postDeployAction: async (contract) => { + await assertContractVariable( + contract, + 'BRIDGE', + l1StandardBridgeProxyAddress + ) + await assertContractVariable( + contract, + 'REMOTE_TOKEN', + predeploys.GovernanceToken + ) + await assertContractVariable(contract, 'MINT_MANAGER', zeroAddress) + }, + }) +} + +deployFn.tags = ['L1GovernanceToken', 'setup', 'l1', 'tge'] + +export default deployFn diff --git a/packages/contracts/deploy/L2/011-GovernanceToken.ts b/packages/contracts/deploy/L2/011-GovernanceToken.ts new file mode 100644 index 000000000..787dc376a --- /dev/null +++ b/packages/contracts/deploy/L2/011-GovernanceToken.ts @@ -0,0 +1,41 @@ +import '@kroma/hardhat-deploy-config' +import { DeployFunction } from 'hardhat-deploy/dist/types' + +import { predeploys } from '../../src' +import { assertContractVariable, deploy, getDeploymentAddress } from '../../src/deploy-utils' + +const deployFn: DeployFunction = async (hre) => { + const Artifact__L1GovernanceTokenProxy = await hre.companionNetworks[ + 'l1' + ].deployments.get('L1GovernanceTokenProxy') + const l2StandardBridgeProxyAddress = await getDeploymentAddress( + hre, + 'L2StandardBridgeProxy' + ) + + await deploy(hre, 'GovernanceToken', { + args: [ + l2StandardBridgeProxyAddress, + Artifact__L1GovernanceTokenProxy.address, + predeploys.MintManager, + ], + isProxyImpl: true, + postDeployAction: async (contract) => { + await assertContractVariable( + contract, + 'BRIDGE', + l2StandardBridgeProxyAddress + ) + await assertContractVariable( + contract, + 'REMOTE_TOKEN', + Artifact__L1GovernanceTokenProxy.address, + ) + await assertContractVariable(contract, 'MINT_MANAGER', predeploys.MintManager) + }, + }) +} + +deployFn.tags = ['GovernanceToken', 'setup', 'l2', 'tge'] + +export default deployFn diff --git a/packages/contracts/scripts/rename-deploy-scripts.ts b/packages/contracts/scripts/rename-deploy-scripts.ts index 7874d1574..22eb56c69 100644 --- a/packages/contracts/scripts/rename-deploy-scripts.ts +++ b/packages/contracts/scripts/rename-deploy-scripts.ts @@ -25,6 +25,7 @@ const L1_ORDERED_NAMES = [ 'SecurityCouncilToken', 'TimeLock', 'UpgradeGovernor', + 'L1GovernanceToken' ] const L2_ORDERED_NAMES = [ 'L1Block', @@ -38,6 +39,8 @@ const L2_ORDERED_NAMES = [ 'L1FeeVault', 'KromaMintableERC20Factory', 'KromaMintableERC721Factory', + 'GovernanceToken', + 'MintManager' ] const main = async () => { diff --git a/packages/contracts/scripts/storage-snapshot.sh b/packages/contracts/scripts/storage-snapshot.sh index 3c6ae73b0..7525070f7 100755 --- a/packages/contracts/scripts/storage-snapshot.sh +++ b/packages/contracts/scripts/storage-snapshot.sh @@ -33,6 +33,8 @@ contracts=( contracts/governance/SecurityCouncilToken.sol:SecurityCouncilToken contracts/governance/TimeLock.sol:TimeLock contracts/governance/UpgradeGovernor.sol:UpgradeGovernor + contracts/governance/GovernanceToken.sol:GovernanceToken + contracts/governance/MintManager.sol:MintManager ) dir=$(dirname "$0") diff --git a/packages/contracts/src/constants.ts b/packages/contracts/src/constants.ts index 30f71ab1c..547aa2c8b 100644 --- a/packages/contracts/src/constants.ts +++ b/packages/contracts/src/constants.ts @@ -18,6 +18,8 @@ export const predeploys = { L2ERC721Bridge: '0x420000000000000000000000000000000000000A', KromaMintableERC20Factory: '0x420000000000000000000000000000000000000B', KromaMintableERC721Factory: '0x420000000000000000000000000000000000000C', + MintManager: '0x4200000000000000000000000000000000000070', + GovernanceToken: '0x42000000000000000000000000000000000000ff', } const uint128Max = ethers.BigNumber.from('0xffffffffffffffffffffffffffffffff') diff --git a/packages/contracts/src/contract-artifacts.ts b/packages/contracts/src/contract-artifacts.ts index e56d188e2..0501bf570 100644 --- a/packages/contracts/src/contract-artifacts.ts +++ b/packages/contracts/src/contract-artifacts.ts @@ -5,402 +5,450 @@ DO NOT EDIT. */ - + let EchidnaFuzzAddressAliasing try { EchidnaFuzzAddressAliasing = require('../artifacts/contracts/echidna/FuzzAddressAliasing.sol/EchidnaFuzzAddressAliasing.json') } catch {} - + let EchidnaFuzzBurnEth try { EchidnaFuzzBurnEth = require('../artifacts/contracts/echidna/FuzzBurn.sol/EchidnaFuzzBurnEth.json') } catch {} - + let EchidnaFuzzBurnGas try { EchidnaFuzzBurnGas = require('../artifacts/contracts/echidna/FuzzBurn.sol/EchidnaFuzzBurnGas.json') } catch {} - + let EchidnaFuzzEncoding try { EchidnaFuzzEncoding = require('../artifacts/contracts/echidna/FuzzEncoding.sol/EchidnaFuzzEncoding.json') } catch {} - + let EchidnaFuzzHashing try { EchidnaFuzzHashing = require('../artifacts/contracts/echidna/FuzzHashing.sol/EchidnaFuzzHashing.json') } catch {} - + let EchidnaFuzzKromaPortal try { EchidnaFuzzKromaPortal = require('../artifacts/contracts/echidna/FuzzKromaPortal.sol/EchidnaFuzzKromaPortal.json') } catch {} - + let EchidnaFuzzResourceMetering try { EchidnaFuzzResourceMetering = require('../artifacts/contracts/echidna/FuzzResourceMetering.sol/EchidnaFuzzResourceMetering.json') } catch {} - + let GovernanceToken try { GovernanceToken = require('../artifacts/contracts/governance/GovernanceToken.sol/GovernanceToken.json') } catch {} - + + + let MintManager + try { + MintManager = require('../artifacts/contracts/governance/MintManager.sol/MintManager.json') + } catch {} + let SecurityCouncilToken try { SecurityCouncilToken = require('../artifacts/contracts/governance/SecurityCouncilToken.sol/SecurityCouncilToken.json') } catch {} - + let TimeLock try { TimeLock = require('../artifacts/contracts/governance/TimeLock.sol/TimeLock.json') } catch {} - + let UpgradeGovernor try { UpgradeGovernor = require('../artifacts/contracts/governance/UpgradeGovernor.sol/UpgradeGovernor.json') } catch {} - + + + let AssetManager + try { + AssetManager = require('../artifacts/contracts/L1/AssetManager.sol/AssetManager.json') + } catch {} + let Colosseum try { Colosseum = require('../artifacts/contracts/L1/Colosseum.sol/Colosseum.json') } catch {} - + + + let IValidatorManager + try { + IValidatorManager = require('../artifacts/contracts/L1/IValidatorManager.sol/IValidatorManager.json') + } catch {} + let IZKMerkleTrie try { IZKMerkleTrie = require('../artifacts/contracts/L1/IZKMerkleTrie.sol/IZKMerkleTrie.json') } catch {} - + let KromaPortal try { KromaPortal = require('../artifacts/contracts/L1/KromaPortal.sol/KromaPortal.json') } catch {} - + let L1CrossDomainMessenger try { L1CrossDomainMessenger = require('../artifacts/contracts/L1/L1CrossDomainMessenger.sol/L1CrossDomainMessenger.json') } catch {} - + let L1ERC721Bridge try { L1ERC721Bridge = require('../artifacts/contracts/L1/L1ERC721Bridge.sol/L1ERC721Bridge.json') } catch {} - + let L1StandardBridge try { L1StandardBridge = require('../artifacts/contracts/L1/L1StandardBridge.sol/L1StandardBridge.json') } catch {} - + let L2OutputOracle try { L2OutputOracle = require('../artifacts/contracts/L1/L2OutputOracle.sol/L2OutputOracle.json') } catch {} - + let ResourceMetering try { ResourceMetering = require('../artifacts/contracts/L1/ResourceMetering.sol/ResourceMetering.json') } catch {} - + let SecurityCouncil try { SecurityCouncil = require('../artifacts/contracts/L1/SecurityCouncil.sol/SecurityCouncil.json') } catch {} - + let SystemConfig try { SystemConfig = require('../artifacts/contracts/L1/SystemConfig.sol/SystemConfig.json') } catch {} - + + + let ValidatorManager + try { + ValidatorManager = require('../artifacts/contracts/L1/ValidatorManager.sol/ValidatorManager.json') + } catch {} + let ValidatorPool try { ValidatorPool = require('../artifacts/contracts/L1/ValidatorPool.sol/ValidatorPool.json') } catch {} - + let ZKMerkleTrie try { ZKMerkleTrie = require('../artifacts/contracts/L1/ZKMerkleTrie.sol/ZKMerkleTrie.json') } catch {} - + let IPoseidon2 try { IPoseidon2 = require('../artifacts/contracts/L1/ZKTrieHasher.sol/IPoseidon2.json') } catch {} - + let ZKTrieHasher try { ZKTrieHasher = require('../artifacts/contracts/L1/ZKTrieHasher.sol/ZKTrieHasher.json') } catch {} - + let ZKVerifier try { ZKVerifier = require('../artifacts/contracts/L1/ZKVerifier.sol/ZKVerifier.json') } catch {} - + let CrossDomainOwnable try { CrossDomainOwnable = require('../artifacts/contracts/L2/CrossDomainOwnable.sol/CrossDomainOwnable.json') } catch {} - + let CrossDomainOwnable2 try { CrossDomainOwnable2 = require('../artifacts/contracts/L2/CrossDomainOwnable2.sol/CrossDomainOwnable2.json') } catch {} - + let CrossDomainOwnable3 try { CrossDomainOwnable3 = require('../artifacts/contracts/L2/CrossDomainOwnable3.sol/CrossDomainOwnable3.json') } catch {} - + let GasPriceOracle try { GasPriceOracle = require('../artifacts/contracts/L2/GasPriceOracle.sol/GasPriceOracle.json') } catch {} - + let L1Block try { L1Block = require('../artifacts/contracts/L2/L1Block.sol/L1Block.json') } catch {} - + let L2CrossDomainMessenger try { L2CrossDomainMessenger = require('../artifacts/contracts/L2/L2CrossDomainMessenger.sol/L2CrossDomainMessenger.json') } catch {} - + let L2ERC721Bridge try { L2ERC721Bridge = require('../artifacts/contracts/L2/L2ERC721Bridge.sol/L2ERC721Bridge.json') } catch {} - + let L2StandardBridge try { L2StandardBridge = require('../artifacts/contracts/L2/L2StandardBridge.sol/L2StandardBridge.json') } catch {} - + let L2ToL1MessagePasser try { L2ToL1MessagePasser = require('../artifacts/contracts/L2/L2ToL1MessagePasser.sol/L2ToL1MessagePasser.json') } catch {} - + let Arithmetic try { Arithmetic = require('../artifacts/contracts/libraries/Arithmetic.sol/Arithmetic.json') } catch {} - + + + let Atan2 + try { + Atan2 = require('../artifacts/contracts/libraries/Atan2.sol/Atan2.json') + } catch {} + + + let BalancedWeightTree + try { + BalancedWeightTree = require('../artifacts/contracts/libraries/BalancedWeightTree.sol/BalancedWeightTree.json') + } catch {} + let Burn try { Burn = require('../artifacts/contracts/libraries/Burn.sol/Burn.json') } catch {} - + let Bytes try { Bytes = require('../artifacts/contracts/libraries/Bytes.sol/Bytes.json') } catch {} - + let Bytes32 try { Bytes32 = require('../artifacts/contracts/libraries/Bytes32.sol/Bytes32.json') } catch {} - + let CodeDeployer try { CodeDeployer = require('../artifacts/contracts/libraries/CodeDeployer.sol/CodeDeployer.json') } catch {} - + let Constants try { Constants = require('../artifacts/contracts/libraries/Constants.sol/Constants.json') } catch {} - + let Encoding try { Encoding = require('../artifacts/contracts/libraries/Encoding.sol/Encoding.json') } catch {} - + let Hashing try { Hashing = require('../artifacts/contracts/libraries/Hashing.sol/Hashing.json') } catch {} - + let NodeReader try { NodeReader = require('../artifacts/contracts/libraries/NodeReader.sol/NodeReader.json') } catch {} - + let Predeploys try { Predeploys = require('../artifacts/contracts/libraries/Predeploys.sol/Predeploys.json') } catch {} - + let RLPWriter try { RLPWriter = require('../artifacts/contracts/libraries/rlp/RLPWriter.sol/RLPWriter.json') } catch {} - + let SafeCall try { SafeCall = require('../artifacts/contracts/libraries/SafeCall.sol/SafeCall.json') } catch {} - + let Types try { Types = require('../artifacts/contracts/libraries/Types.sol/Types.json') } catch {} - + + + let Uint128Math + try { + Uint128Math = require('../artifacts/contracts/libraries/Uint128Math.sol/Uint128Math.json') + } catch {} + let ColosseumTestData try { ColosseumTestData = require('../artifacts/contracts/test/testdata/ColosseumTestData.sol/ColosseumTestData.json') } catch {} - + let CrossDomainMessenger try { CrossDomainMessenger = require('../artifacts/contracts/universal/CrossDomainMessenger.sol/CrossDomainMessenger.json') } catch {} - + let ERC721Bridge try { ERC721Bridge = require('../artifacts/contracts/universal/ERC721Bridge.sol/ERC721Bridge.json') } catch {} - + + + let IKGHManager + try { + IKGHManager = require('../artifacts/contracts/universal/IKGHManager.sol/IKGHManager.json') + } catch {} + let IKromaMintableERC20 try { IKromaMintableERC20 = require('../artifacts/contracts/universal/IKromaMintableERC20.sol/IKromaMintableERC20.json') } catch {} - + let IKromaMintableERC721 try { IKromaMintableERC721 = require('../artifacts/contracts/universal/IKromaMintableERC721.sol/IKromaMintableERC721.json') } catch {} - + let ISemver try { ISemver = require('../artifacts/contracts/universal/ISemver.sol/ISemver.json') } catch {} - + let KromaMintableERC20 try { KromaMintableERC20 = require('../artifacts/contracts/universal/KromaMintableERC20.sol/KromaMintableERC20.json') } catch {} - + let KromaMintableERC20Factory try { KromaMintableERC20Factory = require('../artifacts/contracts/universal/KromaMintableERC20Factory.sol/KromaMintableERC20Factory.json') } catch {} - + let KromaMintableERC721 try { KromaMintableERC721 = require('../artifacts/contracts/universal/KromaMintableERC721.sol/KromaMintableERC721.json') } catch {} - + let KromaMintableERC721Factory try { KromaMintableERC721Factory = require('../artifacts/contracts/universal/KromaMintableERC721Factory.sol/KromaMintableERC721Factory.json') } catch {} - + let IERC5192 try { IERC5192 = require('../artifacts/contracts/universal/KromaSoulBoundERC721.sol/IERC5192.json') } catch {} - + let KromaSoulBoundERC721 try { KromaSoulBoundERC721 = require('../artifacts/contracts/universal/KromaSoulBoundERC721.sol/KromaSoulBoundERC721.json') } catch {} - + let Proxy try { Proxy = require('../artifacts/contracts/universal/Proxy.sol/Proxy.json') } catch {} - + let IStaticERC1967Proxy try { IStaticERC1967Proxy = require('../artifacts/contracts/universal/ProxyAdmin.sol/IStaticERC1967Proxy.json') } catch {} - + let ProxyAdmin try { ProxyAdmin = require('../artifacts/contracts/universal/ProxyAdmin.sol/ProxyAdmin.json') } catch {} - + let StandardBridge try { StandardBridge = require('../artifacts/contracts/universal/StandardBridge.sol/StandardBridge.json') } catch {} - + let AddressAliasHelper try { AddressAliasHelper = require('../artifacts/contracts/vendor/AddressAliasHelper.sol/AddressAliasHelper.json') } catch {} - + let WETH9 try { WETH9 = require('../artifacts/contracts/vendor/WETH9.sol/WETH9.json') } catch {} - + export const getContractArtifact = (name: string): any => { return { @@ -412,10 +460,13 @@ EchidnaFuzzHashing, EchidnaFuzzKromaPortal, EchidnaFuzzResourceMetering, GovernanceToken, +MintManager, SecurityCouncilToken, TimeLock, UpgradeGovernor, +AssetManager, Colosseum, +IValidatorManager, IZKMerkleTrie, KromaPortal, L1CrossDomainMessenger, @@ -425,6 +476,7 @@ L2OutputOracle, ResourceMetering, SecurityCouncil, SystemConfig, +ValidatorManager, ValidatorPool, ZKMerkleTrie, IPoseidon2, @@ -440,6 +492,8 @@ L2ERC721Bridge, L2StandardBridge, L2ToL1MessagePasser, Arithmetic, +Atan2, +BalancedWeightTree, Burn, Bytes, Bytes32, @@ -452,9 +506,11 @@ Predeploys, RLPWriter, SafeCall, Types, +Uint128Math, ColosseumTestData, CrossDomainMessenger, ERC721Bridge, +IKGHManager, IKromaMintableERC20, IKromaMintableERC721, ISemver, @@ -472,4 +528,3 @@ AddressAliasHelper, WETH9 }[name] } - \ No newline at end of file diff --git a/packages/contracts/src/deploy-config.ts b/packages/contracts/src/deploy-config.ts index 0141501f4..2e0bcdd9d 100644 --- a/packages/contracts/src/deploy-config.ts +++ b/packages/contracts/src/deploy-config.ts @@ -246,6 +246,10 @@ interface OptionalL2DeployConfig { gasPriceOracleOverhead: number gasPriceOracleScalar: number validatorRewardScalar: number + mintManagerMintActivatedBlock: string + mintManagerInitMintPerBlock: string + mintManagerSlidingWindowBlocks: number + mintManagerDecayingFactor: number } /** @@ -473,4 +477,16 @@ export const deployConfigSpec: { l2TimeLockMinDelaySeconds: { type: 'number', }, + mintManagerMintActivatedBlock: { + type: 'string', + }, + mintManagerInitMintPerBlock: { + type: 'string', + }, + mintManagerSlidingWindowBlocks: { + type: 'number', + }, + mintManagerDecayingFactor: { + type: 'number', + }, } diff --git a/versions.json b/versions.json index cace6e6c3..23183997b 100644 --- a/versions.json +++ b/versions.json @@ -1,5 +1,5 @@ { - "abigen": "v1.10.25", + "abigen": "v1.13.14", "foundry": "a170021b0e058925047a2c9697ba61f10fc0b2ce", "geth": "v1.13.4", "nvm": "v20.9.0",